conductor(setup): Add conductor setup files

This commit is contained in:
2025-12-26 18:10:55 +01:00
parent 5b0774958a
commit fbb6681cd2
11 changed files with 517 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
# Markdown Style Guide
## General
- **Line Wrapping:** Wrap lines at 80-100 characters for readability, unless it breaks a link or code block.
- **Headers:**
- Use ATX-style headers (`#`, `##`, etc.).
- Leave one blank line before and after headers.
- **Lists:**
- Use hyphens (`-`) for unordered lists.
- Use numbers (`1.`, `2.`) for ordered lists.
- Indent nested lists by 2 or 4 spaces.
## Code Blocks
- **Fenced Code Blocks:** Use triple backticks (```) for code blocks.
- **Language Tags:** Always specify the language for syntax highlighting (e.g., ```rust).
## Links & Images
- **Reference Links:** Prefer inline links `[text](url)` for short links.
- **Images:** Provide descriptive alt text for accessibility: `![Alt text](url)`.
## Emphasis
- **Bold:** Use double asterisks (`**text**`).
- **Italic:** Use single asterisks (`*text*`) or underscores (`_text_`).
- **Code:** Use single backticks (`` `text` ``) for inline code.
## Structure
- **Table of Contents:** Include a TOC for long documents.
- **Sections:** Use logical hierarchy for sections and subsections.

View File

@@ -0,0 +1,37 @@
# Rust Style Guide
## General
- **Formatting:** Always use `rustfmt` with default settings.
- **Linting:** Use `clippy` to catch common mistakes and improve code quality. Address all warnings.
- **Edition:** Use the latest stable edition (currently 2024).
## Naming Conventions
- **Crates:** `snake_case` (e.g., `my_crate`)
- **Modules:** `snake_case` (e.g., `my_module`)
- **Types (Structs, Enums, Traits):** `UpperCamelCase` (e.g., `MyStruct`)
- **Functions & Methods:** `snake_case` (e.g., `my_function`)
- **Variables:** `snake_case` (e.g., `my_variable`)
- **Constants:** `SCREAMING_SNAKE_CASE` (e.g., `MAX_SIZE`)
- **Generics:** `UpperCamelCase`, usually single letters (e.g., `T`, `U`) or descriptive names (e.g., `Input`, `Output`).
## Code Structure
- **Imports:** Group imports by crate. Use `std` first, then external crates, then internal modules.
- **Visibility:** Minimizing visibility is preferred. Use `pub(crate)` or `pub(super)` where appropriate.
- **Error Handling:**
- Prefer `Result<T, E>` over `panic!`.
- Use the `?` operator for error propagation.
- Use `anyhow` for application-level error handling and `thiserror` for library-level errors.
## Documentation
- **Public API:** Document all public items using `///` comments.
- **Module Level:** Include module-level documentation using `//!` at the top of the file.
- **Examples:** Include examples in documentation where helpful.
## Testing
- **Unit Tests:** Place unit tests in a `tests` module within the same file, annotated with `#[cfg(test)]`.
- **Integration Tests:** Place integration tests in the `tests/` directory at the crate root.
## Idioms
- **Pattern Matching:** Use pattern matching (`match`, `if let`) extensively.
- **Ownership & Borrowing:** Follow Rust's ownership rules strictly. Avoid `clone()` unless necessary.
- **Iterators:** Prefer iterators and combinators (`map`, `filter`, `fold`) over explicit loops.

View File

@@ -0,0 +1,22 @@
# Product Guidelines
## Prose Style
- **Professional & Direct:** Use a professional tone that is helpful but concise.
- **Clarity over Verbosity:** Explain complex actions briefly without being overly chatty.
- **Technical Accuracy:** Use precise terminology when referring to code or system operations.
## Technical Excellence
- **Idiomatic Rust:** Follow standard Rust conventions (`rustfmt`, `clippy`).
- **Safety First:** Prioritize memory safety and robust error handling. Use `Result` and `Option` effectively.
- **Performance:** Ensure that file operations and LLM interactions are as efficient as possible.
- **Modularity:** Maintain high cohesion and low coupling between crates.
## Security & Privacy
- **Minimal Privilege:** Only request permissions for necessary operations.
- **Secret Handling:** Never log or store API keys or sensitive data in plain text.
- **Transparency:** Clearly inform the user before executing potentially destructive commands.
## UI/UX Design (CLI/TUI)
- **Unix Philosophy:** Support piping and non-interactive modes where applicable.
- **Visual Feedback:** Use progress indicators for long-running tasks.
- **Accessibility:** Ensure the TUI is readable and navigable with standard terminal settings.

21
conductor/product.md Normal file
View File

@@ -0,0 +1,21 @@
# Product Guide
## Initial Concept
A robust, modular, and high-performance AI coding assistant for the terminal, built in Rust. It aims to streamline software development workflows by integrating directly with the codebase and version control systems.
## Target Audience
- **Software Developers:** The primary users who need assistance with coding tasks, refactoring, and understanding complex codebases.
- **DevOps Engineers:** For handling infrastructure-as-code and script automation via natural language.
## Core Value Proposition
- **Performance & Safety:** Leverages Rust's memory safety and speed for a responsive CLI experience.
- **Model Agnostic:** Supports multiple LLM backends (Anthropic, OpenAI, Ollama) giving users flexibility.
- **Deep Integration:** Deeply integrates with the local development environment (filesystem, git, shell).
- **Extensibility:** A plugin architecture to extend functionality with custom commands and agents.
## Key Features
- **Natural Language Interface:** Interact with the agent using plain English to perform complex tasks.
- **Codebase Awareness:** The agent can read and analyze the project structure and file contents to provide context-aware assistance.
- **Multi-LLM Support:** Configurable providers including Anthropic, OpenAI, and local models via Ollama.
- **Rich TUI:** A text-based user interface for a better user experience in the terminal.
- **Tool Ecosystem:** A suite of built-in tools for file manipulation, shell execution, and more.

View File

@@ -0,0 +1 @@
{"last_successful_step": "3.3_initial_track_generated"}

28
conductor/tech-stack.md Normal file
View File

@@ -0,0 +1,28 @@
# Tech Stack
## Core Technologies
- **Language:** Rust (Edition 2024, v1.91+)
- **Architecture:** Modular Workspace with specialized crates for UI, Core Agent, LLM Providers, Platform Services, and Tools.
- **Dependency Management:** Cargo (Rust's package manager).
## Crates & Components
- **Frontends:**
- `crates/app/cli`: Command-line interface.
- `crates/app/ui`: Terminal User Interface (TUI).
- **Core Agent:**
- `crates/core/agent`: The primary orchestration engine for the AI agent.
- **LLM Providers:**
- `crates/llm/anthropic`: Integration with Anthropic's Claude models.
- `crates/llm/openai`: Integration with OpenAI's models.
- `crates/llm/ollama`: Integration with local models via Ollama.
- **Platform Services:**
- `crates/platform/auth`: Authentication logic.
- `crates/platform/config`: Configuration management.
- `crates/platform/credentials`: Secure credential storage and retrieval.
- `crates/platform/hooks`: Plugin hook system.
- `crates/platform/permissions`: Permission and safety system.
- `crates/platform/plugins`: Plugin management.
- **Functional Tools:**
- Specialized tools in `crates/tools/` for `bash` execution, `fs` (filesystem) operations, `web` search/fetch, `notebook` interaction, `plan` management, and more.
- **Integration:**
- `crates/integration/mcp-client`: Client for the Model Context Protocol (MCP).

8
conductor/tracks.md Normal file
View File

@@ -0,0 +1,8 @@
# Project Tracks
This file tracks all major tracks for the project. Each track has its own detailed plan in its respective folder.
---
## [ ] Track: Establish a comprehensive test suite for the core agent logic and ensure basic documentation for all crates.
*Link: [./conductor/tracks/stabilize_core_20251226/](./conductor/tracks/stabilize_core_20251226/)*

View File

@@ -0,0 +1,8 @@
{
"track_id": "stabilize_core_20251226",
"type": "feature",
"status": "new",
"created_at": "2025-12-26T10:00:00Z",
"updated_at": "2025-12-26T10:00:00Z",
"description": "Establish a comprehensive test suite for the core agent logic and ensure basic documentation for all crates."
}

View File

@@ -0,0 +1,17 @@
# Plan: Core Stabilization & Documentation
## Phase 1: Core Agent & Platform Testing
- [ ] Task: Write unit tests for `crates/core/agent/src/lib.rs`
- [ ] Task: Write unit tests for `crates/platform/permissions/src/lib.rs`
- [ ] Task: Write unit tests for `crates/platform/config/src/lib.rs`
- [ ] Task: Conductor - User Manual Verification 'Core Agent & Platform Testing' (Protocol in workflow.md)
## Phase 2: Documentation Audit & Standardization
- [ ] Task: Create/Update README.md for all crates in `crates/app/`
- [ ] Task: Create/Update README.md for all crates in `crates/llm/`
- [ ] Task: Create/Update README.md for all crates in `crates/platform/`
- [ ] Task: Create/Update README.md for all crates in `crates/tools/`
- [ ] Task: Add doc-comments to all public functions in `crates/core/agent/`
- [ ] Task: Conductor - User Manual Verification 'Documentation Audit & Standardization' (Protocol in workflow.md)

View File

@@ -0,0 +1,14 @@
# Specification: Core Stabilization & Documentation
## Goal
To increase the reliability and maintainability of the Owlen codebase by establishing a robust testing foundation and comprehensive documentation for all existing crates.
## Scope
- **Crates Covered:** All crates in the workspace (`app/*`, `core/*`, `llm/*`, `platform/*`, `tools/*`, `integration/*`).
- **Testing:** Unit tests for core logic, focusing on the `core/agent` and `platform/*` crates.
- **Documentation:** `README.md` for each crate and doc-comments for all public APIs.
## Deliverables
- Increased test coverage (targeting >80%) for core crates.
- Comprehensive API documentation.
- Standardized `README.md` files for all crates.

333
conductor/workflow.md Normal file
View File

@@ -0,0 +1,333 @@
# Project Workflow
## Guiding Principles
1. **The Plan is the Source of Truth:** All work must be tracked in `plan.md`
2. **The Tech Stack is Deliberate:** Changes to the tech stack must be documented in `tech-stack.md` *before* implementation
3. **Test-Driven Development:** Write unit tests before implementing functionality
4. **High Code Coverage:** Aim for >80% code coverage for all modules
5. **User Experience First:** Every decision should prioritize user experience
6. **Non-Interactive & CI-Aware:** Prefer non-interactive commands. Use `CI=true` for watch-mode tools (tests, linters) to ensure single execution.
## Task Workflow
All tasks follow a strict lifecycle:
### Standard Task Workflow
1. **Select Task:** Choose the next available task from `plan.md` in sequential order
2. **Mark In Progress:** Before beginning work, edit `plan.md` and change the task from `[ ]` to `[~]`
3. **Write Failing Tests (Red Phase):**
- Create a new test file for the feature or bug fix.
- Write one or more unit tests that clearly define the expected behavior and acceptance criteria for the task.
- **CRITICAL:** Run the tests and confirm that they fail as expected. This is the "Red" phase of TDD. Do not proceed until you have failing tests.
4. **Implement to Pass Tests (Green Phase):**
- Write the minimum amount of application code necessary to make the failing tests pass.
- Run the test suite again and confirm that all tests now pass. This is the "Green" phase.
5. **Refactor (Optional but Recommended):**
- With the safety of passing tests, refactor the implementation code and the test code to improve clarity, remove duplication, and enhance performance without changing the external behavior.
- Rerun tests to ensure they still pass after refactoring.
6. **Verify Coverage:** Run coverage reports using the project's chosen tools. For example, in a Python project, this might look like:
```bash
pytest --cov=app --cov-report=html
```
Target: >80% coverage for new code. The specific tools and commands will vary by language and framework.
7. **Document Deviations:** If implementation differs from tech stack:
- **STOP** implementation
- Update `tech-stack.md` with new design
- Add dated note explaining the change
- Resume implementation
8. **Commit Code Changes:**
- Stage all code changes related to the task.
- Propose a clear, concise commit message e.g, `feat(ui): Create basic HTML structure for calculator`.
- Perform the commit.
9. **Attach Task Summary with Git Notes:**
- **Step 9.1: Get Commit Hash:** Obtain the hash of the *just-completed commit* (`git log -1 --format="%H"`).
- **Step 9.2: Draft Note Content:** Create a detailed summary for the completed task. This should include the task name, a summary of changes, a list of all created/modified files, and the core "why" for the change.
- **Step 9.3: Attach Note:** Use the `git notes` command to attach the summary to the commit.
```bash
# The note content from the previous step is passed via the -m flag.
git notes add -m "<note content>" <commit_hash>
```
10. **Get and Record Task Commit SHA:**
- **Step 10.1: Update Plan:** Read `plan.md`, find the line for the completed task, update its status from `[~]` to `[x]`, and append the first 7 characters of the *just-completed commit's* commit hash.
- **Step 10.2: Write Plan:** Write the updated content back to `plan.md`.
11. **Commit Plan Update:**
- **Action:** Stage the modified `plan.md` file.
- **Action:** Commit this change with a descriptive message (e.g., `conductor(plan): Mark task 'Create user model' as complete`).
### Phase Completion Verification and Checkpointing Protocol
**Trigger:** This protocol is executed immediately after a task is completed that also concludes a phase in `plan.md`.
1. **Announce Protocol Start:** Inform the user that the phase is complete and the verification and checkpointing protocol has begun.
2. **Ensure Test Coverage for Phase Changes:**
- **Step 2.1: Determine Phase Scope:** To identify the files changed in this phase, you must first find the starting point. Read `plan.md` to find the Git commit SHA of the *previous* phase's checkpoint. If no previous checkpoint exists, the scope is all changes since the first commit.
- **Step 2.2: List Changed Files:** Execute `git diff --name-only <previous_checkpoint_sha> HEAD` to get a precise list of all files modified during this phase.
- **Step 2.3: Verify and Create Tests:** For each file in the list:
- **CRITICAL:** First, check its extension. Exclude non-code files (e.g., `.json`, `.md`, `.yaml`).
- For each remaining code file, verify a corresponding test file exists.
- If a test file is missing, you **must** create one. Before writing the test, **first, analyze other test files in the repository to determine the correct naming convention and testing style.** The new tests **must** validate the functionality described in this phase's tasks (`plan.md`).
3. **Execute Automated Tests with Proactive Debugging:**
- Before execution, you **must** announce the exact shell command you will use to run the tests.
- **Example Announcement:** "I will now run the automated test suite to verify the phase. **Command:** `CI=true npm test`"
- Execute the announced command.
- If tests fail, you **must** inform the user and begin debugging. You may attempt to propose a fix a **maximum of two times**. If the tests still fail after your second proposed fix, you **must stop**, report the persistent failure, and ask the user for guidance.
4. **Propose a Detailed, Actionable Manual Verification Plan:**
- **CRITICAL:** To generate the plan, first analyze `product.md`, `product-guidelines.md`, and `plan.md` to determine the user-facing goals of the completed phase.
- You **must** generate a step-by-step plan that walks the user through the verification process, including any necessary commands and specific, expected outcomes.
- The plan you present to the user **must** follow this format:
**For a Frontend Change:**
```
The automated tests have passed. For manual verification, please follow these steps:
**Manual Verification Steps:**
1. **Start the development server with the command:** `npm run dev`
2. **Open your browser to:** `http://localhost:3000`
3. **Confirm that you see:** The new user profile page, with the user's name and email displayed correctly.
```
**For a Backend Change:**
```
The automated tests have passed. For manual verification, please follow these steps:
**Manual Verification Steps:**
1. **Ensure the server is running.**
2. **Execute the following command in your terminal:** `curl -X POST http://localhost:8080/api/v1/users -d '{"name": "test"}'`
3. **Confirm that you receive:** A JSON response with a status of `201 Created`.
```
5. **Await Explicit User Feedback:**
- After presenting the detailed plan, ask the user for confirmation: "**Does this meet your expectations? Please confirm with yes or provide feedback on what needs to be changed.**"
- **PAUSE** and await the user's response. Do not proceed without an explicit yes or confirmation.
6. **Create Checkpoint Commit:**
- Stage all changes. If no changes occurred in this step, proceed with an empty commit.
- Perform the commit with a clear and concise message (e.g., `conductor(checkpoint): Checkpoint end of Phase X`).
7. **Attach Auditable Verification Report using Git Notes:**
- **Step 8.1: Draft Note Content:** Create a detailed verification report including the automated test command, the manual verification steps, and the user's confirmation.
- **Step 8.2: Attach Note:** Use the `git notes` command and the full commit hash from the previous step to attach the full report to the checkpoint commit.
8. **Get and Record Phase Checkpoint SHA:**
- **Step 7.1: Get Commit Hash:** Obtain the hash of the *just-created checkpoint commit* (`git log -1 --format="%H"`).
- **Step 7.2: Update Plan:** Read `plan.md`, find the heading for the completed phase, and append the first 7 characters of the commit hash in the format `[checkpoint: <sha>]`.
- **Step 7.3: Write Plan:** Write the updated content back to `plan.md`.
9. **Commit Plan Update:**
- **Action:** Stage the modified `plan.md` file.
- **Action:** Commit this change with a descriptive message following the format `conductor(plan): Mark phase '<PHASE NAME>' as complete`.
10. **Announce Completion:** Inform the user that the phase is complete and the checkpoint has been created, with the detailed verification report attached as a git note.
### Quality Gates
Before marking any task complete, verify:
- [ ] All tests pass
- [ ] Code coverage meets requirements (>80%)
- [ ] Code follows project's code style guidelines (as defined in `code_styleguides/`)
- [ ] All public functions/methods are documented (e.g., docstrings, JSDoc, GoDoc)
- [ ] Type safety is enforced (e.g., type hints, TypeScript types, Go types)
- [ ] No linting or static analysis errors (using the project's configured tools)
- [ ] Works correctly on mobile (if applicable)
- [ ] Documentation updated if needed
- [ ] No security vulnerabilities introduced
## Development Commands
**AI AGENT INSTRUCTION: This section should be adapted to the project's specific language, framework, and build tools.**
### Setup
```bash
# Example: Commands to set up the development environment (e.g., install dependencies, configure database)
# e.g., for a Node.js project: npm install
# e.g., for a Go project: go mod tidy
```
### Daily Development
```bash
# Example: Commands for common daily tasks (e.g., start dev server, run tests, lint, format)
# e.g., for a Node.js project: npm run dev, npm test, npm run lint
# e.g., for a Go project: go run main.go, go test ./..., go fmt ./...
```
### Before Committing
```bash
# Example: Commands to run all pre-commit checks (e.g., format, lint, type check, run tests)
# e.g., for a Node.js project: npm run check
# e.g., for a Go project: make check (if a Makefile exists)
```
## Testing Requirements
### Unit Testing
- Every module must have corresponding tests.
- Use appropriate test setup/teardown mechanisms (e.g., fixtures, beforeEach/afterEach).
- Mock external dependencies.
- Test both success and failure cases.
### Integration Testing
- Test complete user flows
- Verify database transactions
- Test authentication and authorization
- Check form submissions
### Mobile Testing
- Test on actual iPhone when possible
- Use Safari developer tools
- Test touch interactions
- Verify responsive layouts
- Check performance on 3G/4G
## Code Review Process
### Self-Review Checklist
Before requesting review:
1. **Functionality**
- Feature works as specified
- Edge cases handled
- Error messages are user-friendly
2. **Code Quality**
- Follows style guide
- DRY principle applied
- Clear variable/function names
- Appropriate comments
3. **Testing**
- Unit tests comprehensive
- Integration tests pass
- Coverage adequate (>80%)
4. **Security**
- No hardcoded secrets
- Input validation present
- SQL injection prevented
- XSS protection in place
5. **Performance**
- Database queries optimized
- Images optimized
- Caching implemented where needed
6. **Mobile Experience**
- Touch targets adequate (44x44px)
- Text readable without zooming
- Performance acceptable on mobile
- Interactions feel native
## Commit Guidelines
### Message Format
```
<type>(<scope>): <description>
[optional body]
[optional footer]
```
### Types
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `style`: Formatting, missing semicolons, etc.
- `refactor`: Code change that neither fixes a bug nor adds a feature
- `test`: Adding missing tests
- `chore`: Maintenance tasks
### Examples
```bash
git commit -m "feat(auth): Add remember me functionality"
git commit -m "fix(posts): Correct excerpt generation for short posts"
git commit -m "test(comments): Add tests for emoji reaction limits"
git commit -m "style(mobile): Improve button touch targets"
```
## Definition of Done
A task is complete when:
1. All code implemented to specification
2. Unit tests written and passing
3. Code coverage meets project requirements
4. Documentation complete (if applicable)
5. Code passes all configured linting and static analysis checks
6. Works beautifully on mobile (if applicable)
7. Implementation notes added to `plan.md`
8. Changes committed with proper message
9. Git note with task summary attached to the commit
## Emergency Procedures
### Critical Bug in Production
1. Create hotfix branch from main
2. Write failing test for bug
3. Implement minimal fix
4. Test thoroughly including mobile
5. Deploy immediately
6. Document in plan.md
### Data Loss
1. Stop all write operations
2. Restore from latest backup
3. Verify data integrity
4. Document incident
5. Update backup procedures
### Security Breach
1. Rotate all secrets immediately
2. Review access logs
3. Patch vulnerability
4. Notify affected users (if any)
5. Document and update security procedures
## Deployment Workflow
### Pre-Deployment Checklist
- [ ] All tests passing
- [ ] Coverage >80%
- [ ] No linting errors
- [ ] Mobile testing complete
- [ ] Environment variables configured
- [ ] Database migrations ready
- [ ] Backup created
### Deployment Steps
1. Merge feature branch to main
2. Tag release with version
3. Push to deployment service
4. Run database migrations
5. Verify deployment
6. Test critical paths
7. Monitor for errors
### Post-Deployment
1. Monitor analytics
2. Check error logs
3. Gather user feedback
4. Plan next iteration
## Continuous Improvement
- Review workflow weekly
- Update based on pain points
- Document lessons learned
- Optimize for user happiness
- Keep things simple and maintainable