# Project Context ## High-Level Goal To build a standalone **Agentic AI Code Assistant** application as a single Rust binary that serves a Vite/React web UI and exposes a WebSocket API. The assistant will facilitate a "Story-Driven Spec Workflow" (SDSW) for software development. Unlike a passive chat interface, this assistant acts as an **Agent**, capable of using tools to read the filesystem, execute shell commands, manage git repositories, and modify code directly to implement features. ## Core Features 1. **Chat Interface:** A conversational UI for the user to interact with the AI assistant. 2. **Agentic Tool Bridge:** A robust system mapping LLM "Tool Calls" to native Rust functions. * **Filesystem:** Read/Write access (scoped to the target project). * **Search:** High-performance file searching (ripgrep-style) and content retrieval. * **Shell Integration:** Ability to execute approved commands (e.g., `cargo`, `npm`, `git`) to run tests, linters, and version control. 3. **Workflow Management:** Specialized tools to manage the SDSW lifecycle: * Ingesting stories. * Updating specs. * Implementing code. * Verifying results (running tests). 4. **LLM Integration:** Connection to an LLM backend to drive the intelligence and tool selection. * **Remote:** Support for major APIs (Anthropic Claude, Google Gemini, OpenAI, etc). * **Local:** Support for local inference via Ollama. ## Domain Definition * **User:** A software engineer using the assistant to build a project. * **Target Project:** The local software project the user is working on. * **Agent:** The AI entity that receives prompts and decides which **Tools** to invoke to solve the problem. * **Tool:** A discrete function exposed to the Agent (e.g., `run_shell_command`, `write_file`, `search_project`). * **Story:** A unit of work defining a change (Feature Request). * **Spec:** A persistent documentation artifact defining the current truth of the system. ## Glossary * **SDSW:** Story-Driven Spec Workflow. * **Web Server Binary:** The Rust binary that serves the Vite/React frontend and exposes the WebSocket API. * **Living Spec:** The collection of Markdown files in `.living_spec/` that define the project. * **Tool Call:** A structured request from the LLM to execute a specific native function.