diff --git a/.dockerignore b/.dockerignore
index fcd4a75..badab52 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1,4 @@
*
!src
+!frontend
**/node_modules
diff --git a/Dockerfile b/Dockerfile
index b428167..afce113 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -317,6 +317,11 @@ ENV SYCL_CACHE_PERSISTENT=1
ENV PATH=/opt/backstory:$PATH
COPY /src/ /opt/backstory/src/
+COPY /frontend/ /opt/backstory/frontend/
+
+WORKDIR /opt/backstory/frontend
+RUN npm install --force
+WORKDIR /opt/backstory
ENTRYPOINT [ "/entrypoint.sh" ]
diff --git a/docs/jobs/plant-conrervation-specialist.md b/docs/jobs/plant-conrervation-specialist.md
deleted file mode 100644
index b3933b2..0000000
--- a/docs/jobs/plant-conrervation-specialist.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Plant Conservation Specialist
-
-**Organization:** Oregon Botanical Gardens
-**Location:** Portland, Oregon
-**Duration:** April 2017 - May 2020
-
-## Position Overview
-As Plant Conservation Specialist at the Oregon Botanical Gardens, I managed the institution's ex-situ conservation program for rare and endangered plant species native to the Pacific Northwest. This position bridged scientific research, hands-on horticulture, and public education.
-
-## Key Responsibilities
-
-### Ex-situ Conservation Program
-- Coordinated conservation collections for 45 rare and endangered plant species
-- Developed and maintained comprehensive database of accession records, phenology data, and propagation histories
-- Established genetic management protocols to ensure maximum diversity in conservation collections
-- Collaborated with Center for Plant Conservation on national rare plant conservation initiatives
-
-### Propagation & Cultivation
-- Designed specialized growing environments for challenging species with specific habitat requirements
-- Experimented with various propagation techniques including tissue culture, specialized seed treatments, and vegetative methods
-- Maintained detailed documentation of successful and unsuccessful propagation attempts
-- Achieved first-ever successful cultivation of three critically endangered Oregon wildflowers
-
-### Reintroduction Planning
-- Collaborated with federal and state agencies on plant reintroduction strategies
-- Conducted site assessments to evaluate habitat suitability for reintroductions
-- Developed monitoring protocols to track survival and reproduction of reintroduced populations
-- Prepared detailed reintroduction plans for 8 endangered species
-
-### Research Projects
-- Designed and implemented germination studies for 15 rare species with unknown propagation requirements
-- Conducted pollination biology investigations for several endangered plant species
-- Collaborated with university researchers on seed viability and longevity studies
-- Maintained comprehensive records of phenological patterns across multiple growing seasons
-
-### Education & Outreach
-- Developed educational materials explaining the importance of plant conservation
-- Led specialized tours focusing on rare plant conservation for visitors and donors
-- Trained volunteers in proper care of sensitive plant collections
-- Created interpretive signage for conservation garden displays
-
-## Notable Projects
-
-1. **Willamette Valley Prairie Species Recovery**
- - Established seed bank of 25 declining prairie species
- - Developed germination protocols that improved propagation success from 30% to 75%
- - Produced over 5,000 plants for restoration projects throughout the region
-
-2. **Alpine Rare Plant Conservation Initiative**
- - Created specialized growing facilities mimicking alpine conditions
- - Successfully propagated 8 high-elevation rare species never before cultivated
- - Documented critical temperature and moisture requirements for germination
-
-3. **Serpentine Soils Conservation Collection**
- - Developed custom soil mixes replicating challenging serpentine conditions
- - Maintained living collection of 12 rare serpentine endemic species
- - Created public display educating visitors about specialized plant adaptations
-
-## Achievements
-- Received "Conservation Innovation Award" from the American Public Gardens Association (2019)
-- Developed propagation protocol for Kincaid's lupine that doubled germination success rates
-- Established Oregon Botanical Gardens' first dedicated conservation nursery facility
-- Created seed banking protocols adopted by three other botanical institutions
\ No newline at end of file
diff --git a/docs/jobs/research-assistant.md b/docs/jobs/research-assistant.md
deleted file mode 100644
index 92d82af..0000000
--- a/docs/jobs/research-assistant.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Research Assistant
-
-**Organization:** Institute for Applied Ecology
-**Location:** Corvallis, Oregon
-**Duration:** January 2015 - March 2017
-
-## Position Overview
-As Research Assistant at the Institute for Applied Ecology, I supported multiple research projects focused on native plant ecology and restoration techniques. This position provided foundational experience in applying scientific methods to practical conservation challenges.
-
-## Key Responsibilities
-
-### Field Surveys
-- Conducted comprehensive botanical surveys in diverse ecosystems throughout western Oregon
-- Documented population sizes, health metrics, and habitat conditions for threatened plant species
-- Established long-term monitoring plots using standardized protocols
-- Collected voucher specimens for herbarium collections following strict ethical guidelines
-- Mapped plant populations using GPS and GIS technologies
-
-### Greenhouse Operations
-- Assisted with propagation of native plants for restoration experiments and projects
-- Maintained detailed records of seed treatments, germination rates, and growth parameters
-- Implemented and monitored experimental growing conditions for research projects
-- Managed irrigation systems and pest control for approximately 10,000 plants
-- Prepared plant materials for outplanting at restoration sites
-
-### Data Collection & Analysis
-- Collected vegetation data using quadrat, transect, and plot-based sampling methods
-- Processed and organized large datasets for long-term monitoring studies
-- Performed statistical analyses using R to assess restoration treatment effectiveness
-- Created data visualization graphics for reports and publications
-- Maintained research databases ensuring data quality and accessibility
-
-### Research Projects
-- **Prairie Restoration Techniques:**
- - Compared effectiveness of different site preparation methods on native plant establishment
- - Monitored post-treatment recovery of native species diversity
- - Documented invasive species response to various control techniques
-
-- **Rare Plant Demography:**
- - Tracked population dynamics of three endangered Willamette Valley plant species
- - Monitored individual plant survival, growth, and reproductive output
- - Assessed impacts of management interventions on population trends
-
-- **Seed Viability Studies:**
- - Tested germination requirements for 30+ native species
- - Evaluated effects of smoke, scarification, and stratification on dormancy
- - Documented optimal storage conditions for maintaining seed viability
-
-### Publication Support
-- Co-authored three peer-reviewed publications on prairie restoration techniques
-- Prepared figures, tables, and data appendices for manuscripts
-- Conducted literature reviews on specialized ecological topics
-- Assisted with manuscript revisions based on peer review feedback
-
-## Key Projects
-
-1. **Willamette Valley Wet Prairie Restoration**
- - Implemented experimental plots testing 4 restoration techniques
- - Collected 3 years of post-treatment vegetation data
- - Documented successful establishment of 15 target native species
-
-2. **Endangered Butterfly Habitat Enhancement**
- - Propagated host and nectar plants for Fender's blue butterfly habitat
- - Monitored plant-insect interactions in restoration sites
- - Assessed habitat quality improvements following restoration treatments
-
-3. **Native Seed Production Research**
- - Tested cultivation methods for improving seed yields of 10 native species
- - Documented pollination requirements for optimal seed production
- - Developed harvest timing recommendations based on seed maturation patterns
-
-## Publications
-- Johnson, T., **Morgan, E.**, et al. (2016). "Comparative effectiveness of site preparation techniques for prairie restoration." *Restoration Ecology*, 24(4), 472-481.
-- Williams, R., **Morgan, E.**, & Smith, B. (2016). "Germination requirements of Willamette Valley wet prairie species." *Native Plants Journal*, 17(2), 99-112.
-- **Morgan, E.**, Johnson, T., & Davis, A. (2017). "Long-term vegetation response to restoration treatments in degraded oak savanna." *Northwest Science*, 91(1), 27-39.
\ No newline at end of file
diff --git a/docs/jobs/restoration-botanist.md b/docs/jobs/restoration-botanist.md
deleted file mode 100644
index 27a3b71..0000000
--- a/docs/jobs/restoration-botanist.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Senior Restoration Botanist
-
-**Organization:** Pacific Northwest Conservation Alliance
-**Location:** Portland, Oregon
-**Duration:** June 2020 - Present
-
-## Position Overview
-As Senior Restoration Botanist at the Pacific Northwest Conservation Alliance, I lead complex restoration projects aimed at preserving endangered plant communities throughout the Cascade Range. This role combines technical botanical expertise with project management and leadership responsibilities.
-
-## Key Responsibilities
-
-### Project Leadership
-- Design and implement comprehensive restoration plans for degraded ecosystems with emphasis on rare plant conservation
-- Lead field operations across multiple concurrent restoration sites covering over 2,000 acres
-- Establish measurable success criteria and monitoring protocols for all restoration projects
-- Conduct regular site assessments to track progress and adapt management strategies
-
-### Native Plant Propagation
-- Oversee native plant nursery operations producing 75,000+ plants annually
-- Develop specialized propagation protocols for difficult-to-grow rare species
-- Maintain detailed records of germination rates, growth metrics, and treatment effects
-- Coordinate seed collection expeditions throughout diverse ecosystems of the Pacific Northwest
-
-### Team Management
-- Supervise a core team of 5 field botanists and up to 12 seasonal restoration technicians
-- Conduct staff training on plant identification, restoration techniques, and field safety
-- Facilitate weekly team meetings and monthly progress reviews
-- Mentor junior staff and provide professional development opportunities
-
-### Funding & Partnerships
-- Secured $750,000 in grant funding for riparian habitat restoration projects
-- Authored major sections of successful proposals to state and federal agencies
-- Manage project budgets ranging from $50,000 to $250,000
-- Cultivate partnerships with government agencies, tribes, and conservation NGOs
-
-### Notable Projects
-1. **Willamette Valley Prairie Restoration Initiative**
- - Restored 350 acres of native prairie habitat
- - Reintroduced 12 threatened plant species with 85% establishment success
- - Developed innovative seeding techniques that increased native diversity by 40%
-
-2. **Mount Hood Meadow Rehabilitation**
- - Led post-wildfire recovery efforts in alpine meadow ecosystems
- - Implemented erosion control measures using native plant materials
- - Achieved 90% reduction in invasive species cover within treatment areas
-
-3. **Columbia River Gorge Rare Plant Recovery**
- - Established new populations of 5 federally listed plant species
- - Developed habitat suitability models to identify optimal reintroduction sites
- - Created monitoring protocols adopted by multiple conservation organizations
-
-## Achievements
-- Received Excellence in Ecological Restoration Award from the Society for Ecological Restoration, Northwest Chapter (2023)
-- Featured in Oregon Public Broadcasting documentary on native plant conservation (2022)
-- Published 2 peer-reviewed articles on restoration techniques developed during project work
\ No newline at end of file
diff --git a/docs/resume/generic.md b/docs/resume/generic.md
index 6bf16aa..49eb6eb 100644
--- a/docs/resume/generic.md
+++ b/docs/resume/generic.md
@@ -1,78 +1,272 @@
-Resume - Eliza Morgan
+# JAMES KETRENOS
+software architect, designer, developer, and team lead
+Beaverton, OR 97003
-Professional Profile
-Dedicated botanist with 8 years of experience in plant conservation and ecological restoration. Specializing in native plant propagation and habitat rehabilitation for endangered flora species.
-Contact Information
+james@ketrenos.com
+(503) 501 8281
-Email: eliza.morgan@botanist.com
-Phone: (555) 782-3941
-Address: 427 Maple Street, Portland, OR 97205
+Seeking an opportunity to contribute to the advancement of energy efficient AI solutions,
+James is a driven problem solver, solution creator, technical leader, and skilled software
+developer focused on rapid, high-quality results, with an eye toward bringing solutions to
+the market.
+
+## SUMMARY
+
+Problem-solving: Trusted resource for executive leadership, able to identify opportunities to
+bridge technical gaps, adopt new technologies, and improve efficiency and quality for internal
+ and external customers.
+
+Proficient: Adept in compiled and interpreted languages, the software frameworks built around them,
+and front- and backend infrastructure. Leveraging deep and varied experience to quickly find
+solutions. Rapidly familiarizes and puts to use new and emerging technologies.
+
+Experienced: 20+ years of experience as an end-to-end Linux software architect, team lead,
+developer, system administrator, and user. Working with teams to bring together technologies
+into existing ecosystems for a myriad of technologies.
+
+Leader: Frequent project lead spanning all areas of development and phases of the product life
+cycle from pre-silicon to post launch support. Capable change agent and mentor, providing
+technical engineering guidance to multiple teams and organizations.
+
+Communicates: Thrives on helping people solve problems, working to educate others to help them
+better understand problems and work toward solutions.
+
+## RECENT HISTORY
+
+2024-2025: Present
+
+* Developed 'backstory'
+ * An Large Language Model (LLM) pipeline allowing interactive queries about James' resume.
+ * Utilizing both Retrieval-Augmented Generation (RAG) and fine-tuned approaches, questions asked about James will use information from his resume and portfolio for answers.
+ * Includes a full-stack React web ui and backend.
+ * While developing Backstory, both Hugging Face and Ollama were used.
+ * While exploring ways to augment the reduced 7B parameter model, various prompts, RAG, and Parameter-Efficient Fine-Tuning (PEFT) via Quantized Low-Rank Adapter (QLORA) were used.
+ * Languages: Python, C/C++, JavaScript, TypeScript, React, HTML5, CSS, NodeJS, Markdown, git
+ * URL: https://github.com/jketreno/backstory
+* Developed 'ze-monitor'
+ * A lightweight C++ Linux application leveraging Level Zero Sysman APIs to provide 'top' like device monitoring of Intel GPUs.
+ * URL: https://github.com/jketreno/ze-monitor
+ * Languages: C++, CMake, DEB, RPM, bash, git
+* Provided a new release of Eikona, targetting the latest Android APIs.
+ * Tracked down the latest versions of various packages, updating to align with deprecated and new APIs.
+ * Languages: React Expo, Android SDK, Java, BitKeeper
+
+2018-2024: Intel® Graphics Software Staff Architect and Lead
+
+* Redefined how Intel approaches graphics enabling on Linux to meet customer and product timelines.
+ * Many internal facing presentations discussing goals, roadmap, and reasoning.
+ * Developed internal tools to help managers better forecast and look into where engineering developers were working in alignment with business objectives.
+ * Languages: DEB, RPM, GitHub Actions (GHA), HTML5, JavaScript, JIRA, SQL, NodeJS, Google Docs APIs
+* Spearheaded internal projects to prove out the developer and customer deployment experience when using Intel graphics products with PyTorch, working to ensure all ingredients are available and consumable for success (from kernel driver integration, runtime, framework integration, up to containerized Python workload solution deployment.)
+ *
+* Focused on improving the customer experience for Intel graphics software for Linux in the data center, high-performance compute clusters, and end users. Worked with several teams and business units to close gaps, improve our software, documentation, and release methodologies.
+* Worked with hardware and firmware teams to scope and define architectural solutions for customer features.
+* Worked with teams to add telemetry data available from Intel GPUs for use in Prometheus, Grafana, and collectd. Developed dashboards and infrastructure to manage node deployments using GitHub Actions, runners, and Docker.
+
+1998-2018: Open Source Software Architect and Lead
+
+* Defined software architecture for handheld devices, tablets, Internet of Things, smart appliances, and emerging technologies. Key resource to executive staff to investigate emerging technologies and drive solutions to close existing gaps
+* James career at Intel has been diverse. His strongest skills are related to quickly ramping on technologies being utilized in the market, identifying gaps in existing solutions, and working with teams to close those gaps. He excels at adopting and fitting new technology trends as they materialize in the industry.
+
+## PROLONGED HISTORY
+
+The following are technical areas James has been an architect, team lead, and/or individual contributor:
+
+* Linux release infrastructure overhaul: Identified bottlenecks in the CI/CD build pipeline, built proof-of-concept, and moved to production for generating releases of Intel graphics software (https://dgpu-docs.intel.com) as well as internal dashboards and infrastructure for tracking build and release pipelines. JavaScript, HTML, Markdown, RTD, bash/python, Linux packaging, Linux repositories, Linux OS release life cycles, sqlite3. Worked with multiple teams across Intel to meet Intel’s requirements for public websites as well as to integrate with existing build and validation methodologies while educating teams on tools and infrastructure available from the ecosystem (vs. roll-your-own).
+* Board Explorer: Web app targeting developer ecosystem to utilize new single board computers, providing quick access to board details, circuits, and programming information. Delivered as a pure front-end service (no backend required) https://board-explorer.github.io/board-explorer/#quark_mcu_dev_kit_d2000. Tight coordination with UX design team. JavaScript, HTML, CSS, XML, hardware specs, programming specs.
+* (internal) Travel Requisition: Internal HTML application and backend enabling internal organizations to request travel approval and a manager front end to track budgetary expenditures in order to determine approval/deny decisions. NodeJS, JavaScript, Polymer, SQL. Tight coordination with internal requirements providers and UX design teams.
+* Developer Journey: Web infrastructure allowing engineers to document DIY processes. Front end for parsing, viewing, and following projects. Back end for managing content submitted (extended markdown) including images, videos, and screencasts. Tight coordination with UX design team.
+* Robotics: Worked with teams aligning on a ROS (Robot OS) roadmap and alignment. Presented at Embedded Linux conference on the state of open source and robotics. LIDAR, Intel RealSense, opencv, python, C. Developed a robotic vision controlled stewart platform that could play the marble game labyrinth.
+* Moblin and MeeGo architect: Focused on overall software architecture as well as moving forward multi-touch and the industry shift to resolution independent applications; all in a time before smart phones as we know them today. Qt, HTML5, EFL.
+* Marblin: An HTML/WebGL graphical application simulating the 2D collision physics of marbles in a 3D rendered canvas.
+* Linux Kernel: Developed and maintained initial Intel Pro Wireless 2100, 2200, and 3945 drivers in the Linux kernel. C, Software Defined Radios, IEEE 802.11, upstream kernel driver, team lead for team that took over the Intel wireless drivers, internal coordination regarding technical and legal issues surrounding the wireless stack.
+* Open source at Intel: Built proof-of-concepts to illustrate to management the potential and opportunities for Intel by embracing open source and Linux.
+* Intel Intercast Technology: Team lead for Intel Intercast software for Windows. Worked with 3rd party companies to integrate the technology into their solutions.
+
+
+# Professional Projects
+
+## 1995 - 1998: Intel Intercast Technology
+* OS: Microsoft Windows Application, WinTV
+* Languages: C++
+* Role: Team lead and software architect
+* Microsoft Media infrastructure
+* Windows kernel driver work
+* Worked with internal teams and external companies to expand compatible hardware and integrate with Windows
+* Integration of Internet Explorer via COM embedding into the Intercast Viewer
+
+## 1999 - 2024: Linux evangelist
+* One of the initial members of Intel's Open Source Technology Center (OTC)
+* Worked across Intel organizational boundaries to educate teams on the benefits and working model of the Linux open source ecosystem
+* Deep understanding of licensing issues, political dynamics, community goals, and business needs
+* Frequent resource for executive management and teams looking to leverage open source software
+
+## 2000 - 2001: COM on Linux Prototype
+* Distributed component object model
+* Languages: C++, STL, Flex, Yacc, Bison
+* Role: Team lead and architect
+* Evaluated key performance differences between Microsoft Component Object Model's (COM) IUnknown (QueryInterface, AddRef, Release) vs. the Component Object Request Broker Architecture (CORBA) for both in-process and distributed cross-process and remote communication.
+* Developed prototype tool-chain and functional code providing a Linux compatible implementation of COM
+
+## 1998 - 2000: Intel Dot Station
+* Languages: Java, C
+* Designed and built a "visual lens" Java plugin for Netscape Navigator
+* Role: Software architect
+
+## 2000 - 2002: Carrier Grade Linux
+* OS distribution work
+* Contributed to the Linux System Base specification
+* Role: Team lead and software architect working with internal and external collaborators
+
+## 2004 - 2006: Intel Wireless Linux Kernel Driver
+* Languages: C
+* Authored original ipw2100, ipw2200, and ipw3945 Linux kernel drivers
+* Built IEEE 802.11 wireless subsystem
+* Hosted Wireless Birds-of-a-Feather talk at the Ottawa Linux Symposium
+* Maintained SourceForge web presence, IRC channel, and community
+
+## 2015 - 2018: Robotics
+* Languages: C, Python, NodeJS
+* "Maker" blogs on developing a Stewart Platform
+*
+* Image recognition and tracking
+* Presented at Embedded Linux Conference
+
+## 2012 - 2017: RT24 - crosswalk
+* Chromium based native web application host
+* Role: Team lead and software architect
+* Worked with WebGL, Web Assembly, Native Client (NaCl)
+* Several internal presentations at various corporate events
+
+## 2007 - 2009: Moblin
+* Tablet targetting OS distribution
+* Role: Team lead and software architect and requirements
+* Technology evaluation: Cairo, EFL, GTK, Clutter
+* Languages: C, C++, OpenGL
+
+## 2012 - Web Sys Info
+* W3C
+* Tizen Working Group
+
+## 2007 - 2017: Marblin
+* An interactive graphical stress test of rendering contexts
+* Ported to each framework being used for OS development
+* Originally written in C and using Clutter, ported to WebGL and EFL
+
+## 2009 - 2011: MeeGo
+* The merging of Linux Foundation's Moblin with Nokia's Maemo
+* Coordinated and worked across business groups at Intel and Nokia
+* Role: Team lead and software architect
+* Focused on:
+ * Resolution independent user interfaces
+ * Multi-touch enabling in X
+* Educated teams on the interface paradigm shift to "mobile first"
+* Presented at MeeGo Conference
+* Languages: C++, QT, HTML5
+
+## Android on Intel
+
+## 2011 - 2013: Tizen
+* Rendering framework: Enlightenment Foundation Library (EFL)
+* Focused on: API specifications
+* Languages: JavaScript, HTML, C
+
+## 2019 - 2024: Intel Graphics Architect
+* Technologies: C, JavaScript, HTML5, React, Markdown, bash, GitHub, GitHub Actions, Docker, Clusters, Data Center, Machine Learning, git
+* Role:
+ * Set strategic direction for working with open source ecosystem
+ * Worked with hardware and software architects to plan, execute, and support features
+ * Set strategic direction for overhauling the customer experience for Intel graphics on Linux
+
+# Personal Projects
+
+1995 - 2023: Photo Management Software
+* Languages: C, JavaScript, PHP, HTML5, CSS, Polymer, React, SQL
+* Role: Personal photo management software, including facial recognition
+* Image classification, clustering, and identity
+
+2020 - 2025: Eikona Android App
+* OS: Android
+* Languages: Java, Expo, React
+* Role: Maintainer for Android port
+
+2019 - 2023: Peddlers of Ketran
+* Languages: JavaScript, React, NodeJS, HTML5, CSS
+* Features: Audio, Video, and Text chat. Full game plus expansions.
+* Role: Self-hosted online multiplayer clone of Settlers of Catan
+
+2025: Ze-Monitor
+* C++ utility leveraging Level Zero API to monitor GPUs
+* https://github.com/jketreno/ze-monitor
+
+Education:
+* Studied computer science at University of California San Diego, Oregon State University, and Portland State University
+* In his senior year of completing a bachelors degree, James left college to work full time for Intel Corporation
+
+JAMES KETRENOS
+software architect, designer, developer, and team lead
+Beaverton, OR 97003
+
+james@ketrenos.com
+(503) 501 8281
+
+Professional Summary
+
+James Ketrenos is an experienced software architect, designer, developer, and team lead with over two decades of expertise in Linux-based systems.
+Leveraging his strong problem-solving skills and deep technical knowledge across various domains including LLMs (Large Language Models),
+RAG (Relevance-Augmented Generation), and AI development, James brings a unique blend of industry experience to the table. His latest
+projects include 'Backstory,' an interactive GPT application that offers potential employers with insights into candidates.
+
+Skills
+
+Languages: C, C++, Python, Assembly, HTML, CSS, JavaScript, Typescript, Java
+Continuous Integration/Continuous Deployment, Build and Release, and Packaging Systems spanning multiple project domains and infrastructures
+SDKs and APIs for Internal and External Products (W3C, Tizen, MeeGo)
+Large Language Model (LLM) evaluation, selection, and deployment
+Retrieval-Augmented Generation (RAG) including data curation, processing, and searching
+Fine-Tuning LLMs
+Extending LLMs with tool capabilities (llama3.2, qwen2.5)
+
+Professional Experience
+
+Backstory | Software Architect | 2025 - Present
+Developed an interactive LLM application that streamlines content generation and information processing for job candidates. Built a full-stack React web UI and backend using RAG (Retrieval-Augmented Generation) techniques.
+Utilized Python, C/C++, JavaScript, TypeScript, React, HTML5, CSS, NodeJS, Markdown, git to create the project.
+Contributed significantly in developing the project using both Retrieval-Augmented Generation (RAG) and fine-tuned approaches.
+
+Intel Graphics Software Staff Architect and Lead | Software Engineer, Intel Corporation | 2018 - 2024
+Redefined how Intel approaches graphics enabling on Linux to meet customer and product timelines. Spearheaded internal projects to prove out the developer and customer deployment experience when using Intel graphics products on Linux.
+Worked closely with hardware and firmware teams to scope and define architectural solutions for features such as firmware deployment and telemetry data collection from Intel GPUs in the data center.
+Deployed internal LLM instances for developer access to those capabilities without exposing content to the cloud
+Architected, prototyped, built, and deployed build and release infrastructure that improved efficiency and developer insight
+Collaborated across various business units and geographies, integrating multiple development and validation methodologies aligned with executive objectives.
+Worked with hardware architects to plan, execute, and support features for Intel graphics software.
+Led multiple internal development projects involving customer-facing features for the Linux data center environment.
+
+
+Open Source Evangelist | Software Architect, Intel Corporation | 2000 - 2018
+* Set strategic direction for working within the open-source ecosystem as part of the Intel Open Source Technology Center (OTC). Educated teams on the benefits and working model of Linux.
+* Contributed to the development of various open-source software projects such as MeeGo and Marblin. Played a key role in defining software architecture for handheld devices, tablets, IoT, smart appliances, and emerging technologies.
+* Worked across Intel organizational boundaries to educate teams on Linux's benefits and working model.
+* Built proof-of-concepts to illustrate potential and opportunities for open source software adoption within the company. Contributed to Linux kernel driver work, including development of initial drivers for wireless hardware.
+* Frequent resource to help businesses understand various open source licensing models and how they can be used
+
+Developer Journey Web Infrastructure Lead | Software Architect, Intel Corporation | 2004 - 2017
+* Designed and built a comprehensive web infrastructure for engineers to document DIY processes, including the use of React and Polymer frameworks. Led a team in managing content submitted via extended markdown formats such as images and videos.
+
+Robotics Engineer | Software Architect, Intel Corporation | 1998 - 2003
+* Developed a robotic vision-controlled Stewart platform capable of playing the marble Labyrinth game. Worked on image recognition and tracking applications using Python and NodeJS.
Education
-University of Washington, Seattle
-Master of Science in Botany - 2015
-Bachelor of Science in Environmental Science - 2013
-Thesis: "Propagation Techniques for Endangered Willamette Valley Prairie Species"
-Professional Experience
-Senior Restoration Botanist
-Pacific Northwest Conservation Alliance — Portland, OR
-June 2020 - Present
+* Attended University of California San Diego, Oregon State University, and Portland State University
+* During senior year in college, James began working full time at Intel and stopped pursuing a degree.
-Lead restoration projects for endangered plant communities in the Cascade Range
-Develop and implement protocols for native seed collection and propagation
-Manage a team of 5 field botanists and 12 seasonal restoration technicians
-Secured $750,000 in grant funding for riparian habitat restoration projects
+Personal Projects
-Plant Conservation Specialist
-Oregon Botanical Gardens — Portland, OR
-April 2017 - May 2020
+Eikona Android App | 2016 - 2024
+* Developed Android port of Eikona application utilizing Java, Expo, and React technologies.
+* Maintains new releases targeting the latest Android APIs.
-Coordinated ex-situ conservation program for 45 rare and endangered plant species
-Maintained detailed documentation of propagation techniques and germination rates
-Collaborated with regional agencies on plant reintroduction strategies
-Developed educational materials for public outreach on native plant conservation
-
-Research Assistant
-Institute for Applied Ecology — Corvallis, OR
-January 2015 - March 2017
-
-Conducted field surveys of threatened plant populations throughout western Oregon
-Assisted with greenhouse propagation of native plants for restoration projects
-Collected and analyzed data for long-term vegetation monitoring studies
-Co-authored three peer-reviewed publications on prairie restoration techniques
-
-Technical Skills
-
-Native plant identification and taxonomy
-Seed collection and propagation methods
-Vegetation monitoring and data analysis
-Habitat assessment and restoration planning
-GIS mapping (ArcGIS, QGIS)
-Floristic surveys and botanical inventories
-
-Professional Certifications
-
-Certified Ecological Restoration Practitioner (CERP) - 2019
-Wetland Delineation Certification - 2016
-Wilderness First Responder - 2018
-
-Professional Affiliations
-
-Society for Ecological Restoration
-Botanical Society of America
-Native Plant Society of Oregon, Board Member
-
-Publications & Presentations
-
-Morgan, E., et al. (2023). "Restoration success of reintroduced Kincaid's lupine populations." Journal of Plant Conservation.
-Morgan, E., & Johnson, T. (2021). "Seed dormancy patterns in Pacific Northwest prairie species." Restoration Ecology.
-"Climate adaptation strategies for rare plant species," Annual Conference of the Society for Ecological Restoration, 2022.
-
-Languages
-
-English (Native)
-Spanish (Intermediate)
-
-References
-Available upon request
+System Administrator | 1995 - present
+* Maintains a small cluster of servers providing email, photo management, game servers, and generative AI deployments.
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index da4703b..15429c6 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -38,6 +38,7 @@
"web-vitals": "^2.1.4"
},
"devDependencies": {
+ "@craco/craco": "^7.1.0",
"@types/plotly.js": "^2.35.5"
}
},
@@ -1974,12 +1975,35 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"peer": true
},
+ "node_modules/@craco/craco": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-7.1.0.tgz",
+ "integrity": "sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==",
+ "dev": true,
+ "dependencies": {
+ "autoprefixer": "^10.4.12",
+ "cosmiconfig": "^7.0.1",
+ "cosmiconfig-typescript-loader": "^1.0.0",
+ "cross-spawn": "^7.0.3",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.7",
+ "webpack-merge": "^5.8.0"
+ },
+ "bin": {
+ "craco": "dist/bin/craco.js"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "react-scripts": "^5.0.0"
+ }
+ },
"node_modules/@cspotcode/source-map-support": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
@@ -1991,8 +2015,7 @@
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -4406,29 +4429,25 @@
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
"integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/@turf/area": {
"version": "7.2.0",
@@ -6799,6 +6818,20 @@
"wrap-ansi": "^7.0.0"
}
},
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -7246,6 +7279,25 @@
"node": ">=10"
}
},
+ "node_modules/cosmiconfig-typescript-loader": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz",
+ "integrity": "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^7",
+ "ts-node": "^10.7.0"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "cosmiconfig": ">=7",
+ "typescript": ">=3"
+ }
+ },
"node_modules/country-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz",
@@ -7256,8 +7308,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/cross-spawn": {
"version": "7.0.6",
@@ -8138,8 +8189,7 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"engines": {
"node": ">=0.3.1"
}
@@ -9886,6 +9936,15 @@
"node": ">=8"
}
},
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true,
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
"node_modules/flat-cache": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
@@ -11907,6 +11966,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -12104,6 +12175,15 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/istanbul-lib-coverage": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
@@ -13527,8 +13607,7 @@
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/makeerror": {
"version": "1.0.12",
@@ -18703,6 +18782,18 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/shallow-copy": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
@@ -20156,8 +20247,7 @@
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -20200,8 +20290,7 @@
"version": "8.3.4",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
"integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"dependencies": {
"acorn": "^8.11.0"
},
@@ -20213,8 +20302,7 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/tsconfig-paths": {
"version": "3.15.0",
@@ -20737,8 +20825,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "optional": true,
- "peer": true
+ "devOptional": true
},
"node_modules/v8-to-istanbul": {
"version": "8.1.1",
@@ -21081,6 +21168,20 @@
"node": ">=10.13.0"
}
},
+ "node_modules/webpack-merge": {
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
+ "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/webpack-sources": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
@@ -21267,6 +21368,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -21718,8 +21825,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "optional": true,
- "peer": true,
+ "devOptional": true,
"engines": {
"node": ">=6"
}
diff --git a/frontend/package.json b/frontend/package.json
index a9f3988..e5e0b41 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -56,7 +56,7 @@
]
},
"devDependencies": {
- "@types/plotly.js": "^2.35.5",
- "@craco/craco": "^0.0.0"
+ "@craco/craco": "^7.1.0",
+ "@types/plotly.js": "^2.35.5"
}
}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 113dbe6..d37ad52 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -255,11 +255,20 @@ const App = () => {
icon:
},
children: (
-
+
{sessionId !== undefined &&
}
-
+
)
}];
}, [about, connectionBase, sessionId, setSnack, isMobile]);
diff --git a/frontend/src/ChatBubble.tsx b/frontend/src/ChatBubble.tsx
index 7f96e19..a5276b4 100644
--- a/frontend/src/ChatBubble.tsx
+++ b/frontend/src/ChatBubble.tsx
@@ -6,8 +6,10 @@ import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import AccordionDetails from '@mui/material/AccordionDetails';
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
+import LocationSearchingIcon from '@mui/icons-material/LocationSearching';
import { MessageRoles } from './Message';
+import { ErrorOutline, InfoOutline, Memory, Psychology, /* Stream, */ } from '@mui/icons-material';
interface ChatBubbleProps {
role: MessageRoles,
@@ -20,7 +22,7 @@ interface ChatBubbleProps {
}
function ChatBubble(props: ChatBubbleProps) {
- const { role, isFullWidth, children, sx, className, title } = props;
+ const { role, isFullWidth, children, sx, className, title }: ChatBubbleProps = props;
const theme = useTheme();
const defaultRadius = '16px';
@@ -116,6 +118,28 @@ function ChatBubble(props: ChatBubbleProps) {
lineHeight: '1.3', // More compact line height
fontFamily: theme.typography.fontFamily, // Consistent font with your theme
},
+ 'thinking': {
+ ...defaultStyle
+ },
+ 'streaming': {
+ ...defaultStyle
+ },
+ 'processing': {
+ ...defaultStyle
+ },
+ };
+ styles["thinking"] = styles["status"]
+ styles["streaming"] = styles["assistant"]
+ styles["processing"] = styles["status"]
+
+ const icons: any = {
+ "searching": ,
+ "thinking": ,
+ // "streaming": ,
+ "tooling": ,
+ "processing": ,
+ "error": ,
+ "info": ,
};
if (role === 'content' && title) {
@@ -138,9 +162,13 @@ function ChatBubble(props: ChatBubbleProps) {
);
}
+ console.log(role);
return (
-
- {children}
+
+ {icons[role] !== undefined && icons[role]}
+
+ {children}
+
);
}
diff --git a/frontend/src/Controls.tsx b/frontend/src/Controls.tsx
index 0695fe6..f922417 100644
--- a/frontend/src/Controls.tsx
+++ b/frontend/src/Controls.tsx
@@ -223,7 +223,7 @@ const Controls = ({ sessionId, setSnack, connectionBase }: ControlsParams) => {
}, [systemInfo, setSystemInfo, connectionBase, setSnack, sessionId])
useEffect(() => {
- setEditSystemPrompt(systemPrompt);
+ setEditSystemPrompt(systemPrompt.trim());
}, [systemPrompt, setEditSystemPrompt]);
const toggleRag = async (tool: Tool) => {
@@ -314,39 +314,36 @@ const Controls = ({ sessionId, setSnack, connectionBase }: ControlsParams) => {
const handleKeyPress = (event: any) => {
if (event.key === 'Enter' && event.ctrlKey) {
- switch (event.target.id) {
- case 'SystemPromptInput':
- setSystemPrompt(editSystemPrompt);
- break;
- }
+ setSystemPrompt(editSystemPrompt);
}
};
return (
You can change the information available to the LLM by adjusting the following settings:
-
}>
System Prompt
-
+ setEditSystemPrompt(e.target.value)}
onKeyDown={handleKeyPress}
placeholder="Enter the new system prompt.."
- id="SystemPromptInput"
/>
-
-
+
+
-
+
diff --git a/frontend/src/Conversation.tsx b/frontend/src/Conversation.tsx
index b29093f..0d5100f 100644
--- a/frontend/src/Conversation.tsx
+++ b/frontend/src/Conversation.tsx
@@ -390,15 +390,6 @@ const Conversation = forwardRef(({
const update = JSON.parse(line);
switch (update.status) {
- case 'searching':
- case 'processing':
- case 'thinking':
- // Force an immediate state update based on the message type
- // Update processing message with immediate re-render
- setProcessingMessage({ role: 'status', content: update.response });
- // Add a small delay to ensure React has time to update the UI
- await new Promise(resolve => setTimeout(resolve, 0));
- break;
case 'done':
console.log('Done processing:', update);
// Replace processing message with final result
@@ -443,6 +434,13 @@ const Conversation = forwardRef(({
// Add a small delay to ensure React has time to update the UI
await new Promise(resolve => setTimeout(resolve, 0));
break;
+ default:
+ // Force an immediate state update based on the message type
+ // Update processing message with immediate re-render
+ setProcessingMessage({ role: update.status, content: update.response });
+ // Add a small delay to ensure React has time to update the UI
+ await new Promise(resolve => setTimeout(resolve, 0));
+ break;
}
}
@@ -516,7 +514,7 @@ const Conversation = forwardRef(({
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
- mb: 1,
+ m: 1,
}}>
{
}
{
- tools !== undefined && tools.length !== 0 &&
+ tools !== undefined && tools.tool_calls && tools.tool_calls.length !== 0 &&
}>
@@ -159,26 +161,24 @@ const MessageMeta = (props: MessageMetaProps) => {
- {tools.map((tool: any, index: number) =>
- {index !== 0 && }
-
-