diff --git a/conductor/tracks.md b/conductor/tracks.md index 050ce51..72b60f5 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -101,6 +101,10 @@ This file tracks all major tracks for the project. Each track has its own detail *Link: [./tracks/external_editor_integration_20260308/](./tracks/external_editor_integration_20260308/)* *Goal: Add support to open files modified by agents in external editors (10xNotepad/VSCode) for native diffing and manual editing during the tool approval flow.* +4. [ ] **Track: Agent Personas: Unified Profiles & Tool Presets** + *Link: [./tracks/agent_personas_20260309/](./tracks/agent_personas_20260309/)* + *Goal: Consolidate model settings, prompts, and tool presets into a unified "Persona" model with granular MMA assignment.* + --- ### Model Providers diff --git a/conductor/tracks/agent_personas_20260309/index.md b/conductor/tracks/agent_personas_20260309/index.md new file mode 100644 index 0000000..76d80a7 --- /dev/null +++ b/conductor/tracks/agent_personas_20260309/index.md @@ -0,0 +1,5 @@ +# Track agent_personas_20260309 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) diff --git a/conductor/tracks/agent_personas_20260309/metadata.json b/conductor/tracks/agent_personas_20260309/metadata.json new file mode 100644 index 0000000..e4b5b0a --- /dev/null +++ b/conductor/tracks/agent_personas_20260309/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "agent_personas_20260309", + "type": "feature", + "status": "new", + "created_at": "2026-03-09T23:55:00Z", + "updated_at": "2026-03-09T23:55:00Z", + "description": "Agent Personas: Unified Profiles & Tool Presets consolidation." +} diff --git a/conductor/tracks/agent_personas_20260309/plan.md b/conductor/tracks/agent_personas_20260309/plan.md new file mode 100644 index 0000000..65a0bae --- /dev/null +++ b/conductor/tracks/agent_personas_20260309/plan.md @@ -0,0 +1,28 @@ +# Implementation Plan: Agent Personas - Unified Profiles + +## Phase 1: Core Model and Migration +- [ ] Task: Audit `src/models.py` and `src/app_controller.py` for all existing AI settings. +- [ ] Task: Write Tests: Verify the `Persona` dataclass can be serialized/deserialized to TOML. +- [ ] Task: Implement: Create the `Persona` model in `src/models.py` and implement the `PersonaManager` in `src/personas.py` (inheriting logic from `PresetManager`). +- [ ] Task: Implement: Create a migration utility to convert existing `active_preset` and system prompts into an "Initial Legacy" Persona. +- [ ] Task: Conductor - User Manual Verification 'Phase 1: Core Model and Migration' (Protocol in workflow.md) + +## Phase 2: Granular MMA Integration +- [ ] Task: Write Tests: Verify that a `Ticket` or `Track` can hold a `persona_id` override. +- [ ] Task: Implement: Update the MMA internal state to support per-epic, per-track, and per-task Persona assignments. +- [ ] Task: Implement: Update the `WorkerContext` and `ConductorEngine` to resolve and apply the correct Persona before spawning an agent. +- [ ] Task: Implement: Add "Persona" metadata to the Tier Stream logs to visually confirm which profile is active. +- [ ] Task: Conductor - User Manual Verification 'Phase 2: Granular MMA Integration' (Protocol in workflow.md) + +## Phase 3: Hybrid Persona UI +- [ ] Task: Write Tests: Verify that changing the Persona Selector updates the associated UI fields using `live_gui`. +- [ ] Task: Implement: Add the Persona Selector dropdown to the "AI Settings" panel. +- [ ] Task: Implement: Refactor the "Manage Presets" modal into a full "Persona Editor" supporting model sets and linked tool presets. +- [ ] Task: Implement: Add "Persona Override" controls to the Ticket editing panel in the MMA Dashboard. +- [ ] Task: Conductor - User Manual Verification 'Phase 3: Hybrid Persona UI' (Protocol in workflow.md) + +## Phase 4: Integration and Advanced Logic +- [ ] Task: Implement: Logic for "Preferred Model Sets" (trying next model in set if provider returns specific errors). +- [ ] Task: Implement: "Linked Tool Preset" resolution (checking for the preset ID and applying its tool list to the agent session). +- [ ] Task: Final UI polish, tooltips, and documentation sync. +- [ ] Task: Conductor - User Manual Verification 'Phase 4: Integration and Advanced Logic' (Protocol in workflow.md) diff --git a/conductor/tracks/agent_personas_20260309/spec.md b/conductor/tracks/agent_personas_20260309/spec.md new file mode 100644 index 0000000..85649f5 --- /dev/null +++ b/conductor/tracks/agent_personas_20260309/spec.md @@ -0,0 +1,33 @@ +# Specification: Agent Personas - Unified Profiles & Tool Presets + +## Overview +Transition the application from fragmented prompt and model settings to a **Unified Persona** model. A Persona consolidates Provider, Model (or a preferred set of models), Parameters (Temp, Top-P, etc.), Prompts (Global, Project, and MMA-specific components), and links to Tool Presets into a single, versionable entity. + +## Functional Requirements +- **Persona Data Model:** + - **Scoped Inheritance:** Supports **Global** and **Project-Specific** personas. Project personas with matching names override global versions. + - **Configuration Sets:** A persona can define a single model/provider or a **Preferred Model Set** (allowing for fallback or quick toggling between compatible models like `gemini-3-flash` and `gemini-3.1-pro`). + - **Linked Tool Presets:** Personas reference external **Tool Presets** (to be implemented in a parallel track) to define agent capabilities. +- **Granular MMA Assignment:** + - **Tier 1 (Strategic):** Assigned at the per-epic level. + - **Tier 2 (Architectural):** Assigned at the per-track level. + - **Tier 3 (Execution):** Assigned at the per-task level, allowing for "Specialized Workers" (e.g., a "Security Specialist" worker for sensitive tasks). + - **Tier 4 (QA):** Selectable by Tier 2 or Tier 3 agents during their workflow. +- **Hybrid UI/UX:** + - **Persona Templates:** The AI Settings panel will retain granular controls (Provider, Model, Prompts) but add a primary **Persona Selector**. + - **Live Binding:** Selecting a persona populates all granular fields as a template. Users can then override specific values (e.g., swapping the model) without permanently modifying the persona. + - **Persona Editor Modal:** A dedicated high-density interface for managing the persona registry. + +## Non-Functional Requirements +- **Extensibility:** The schema must be flexible enough to incorporate future "Agent Bias" and "Memory Tuning" parameters. +- **Backward Compatibility:** Existing `manual_slop.toml` files must be migrated or shimmed to ensure no loss of existing prompt settings. + +## Acceptance Criteria +- [ ] A Persona can be saved, edited, and deleted in both Global and Project scopes. +- [ ] Selecting a Persona correctly updates the UI state for prompts and model parameters. +- [ ] MMA workers can be spawned with a specific Persona ID, verified via Tier Streams. +- [ ] The system handles "Linked Tool Presets" correctly, even if the linked preset is missing (graceful fallback). + +## Out of Scope +- Implementing the "Tool Presets" themselves (this track only handles the *link* and integration). +- Multi-persona "Teams" (handled in future orchestration tracks).