chore(conductor): Add new track 'Saved Tool Presets'
This commit is contained in:
@@ -129,6 +129,10 @@ This file tracks all major tracks for the project. Each track has its own detail
|
||||
*Link: [./tracks/saved_presets_20260308/](./tracks/saved_presets_20260308/)*
|
||||
*Goal: Ability to have saved presets for global and project system prompts. Includes full AI profiles with temperature and top_p settings, managed via a dedicated GUI modal.*
|
||||
|
||||
30. [ ] **Track: Saved Tool Presets**
|
||||
*Link: [./tracks/saved_tool_presets_20260308/](./tracks/saved_tool_presets_20260308/)*
|
||||
*Goal: Make agent tools have presets. Add flags for tools related to their level of approval (auto, ask). Move tools to ai settings. Put tools in dynamic TOML-defined categories (Python, General, etc.). Tool Presets added to mma agent role options.*
|
||||
|
||||
---
|
||||
|
||||
## Completed / Archived
|
||||
|
||||
5
conductor/tracks/saved_tool_presets_20260308/index.md
Normal file
5
conductor/tracks/saved_tool_presets_20260308/index.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Track saved_tool_presets_20260308 Context
|
||||
|
||||
- [Specification](./spec.md)
|
||||
- [Implementation Plan](./plan.md)
|
||||
- [Metadata](./metadata.json)
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"track_id": "saved_tool_presets_20260308",
|
||||
"type": "feature",
|
||||
"status": "new",
|
||||
"created_at": "2026-03-08T12:42:00Z",
|
||||
"updated_at": "2026-03-08T12:42:00Z",
|
||||
"description": "Make agent tools have presets. Add flags for tools related to their level of approval (auto, ask). Move tools to ai settings. Put python related tools in a pythons section, general file tools in thier oww section, etc. Tool Presets added to mma agent role options."
|
||||
}
|
||||
44
conductor/tracks/saved_tool_presets_20260308/plan.md
Normal file
44
conductor/tracks/saved_tool_presets_20260308/plan.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Implementation Plan: Saved Tool Presets
|
||||
|
||||
## Phase 1: Data Model & Storage
|
||||
- [ ] Task: Define the `ToolPreset` data model and storage logic.
|
||||
- [ ] Create `src/tool_presets.py` to handle loading/saving to `tool_presets.toml`.
|
||||
- [ ] Implement `ToolPresetManager` to manage CRUD operations for presets and categorization.
|
||||
- [ ] Task: Write unit tests for `ToolPresetManager`.
|
||||
- [ ] Test loading tool presets from TOML.
|
||||
- [ ] Test saving tool presets to TOML.
|
||||
- [ ] Test dynamic category parsing.
|
||||
- [ ] Test tool approval flag persistence.
|
||||
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Data Model & Storage' (Protocol in workflow.md)
|
||||
|
||||
## Phase 2: UI Integration (AI Settings)
|
||||
- [ ] Task: Relocate tool settings to the AI Settings panel.
|
||||
- [ ] Modify `gui_2.py` to remove the current tool listing from the main panel and move it to the AI Settings panel (global/project).
|
||||
- [ ] Task: Implement dynamic tool categorization UI.
|
||||
- [ ] Modify `gui_2.py` to render tools in sections based on categories defined in `tool_presets.toml`.
|
||||
- [ ] Implement toggleable "auto"/"ask" flags for each tool.
|
||||
- [ ] Task: Implement Tool Preset dropdown for MMA agent roles.
|
||||
- [ ] Add the "Tool Preset" dropdown to the MMA agent role configuration modal in `gui_2.py`.
|
||||
- [ ] Task: Write integration tests for AI Settings UI using `live_gui`.
|
||||
- [ ] Verify tools are categorized correctly in the UI.
|
||||
- [ ] Verify toggling a tool's approval persists correctly.
|
||||
- [ ] Verify the "Tool Preset" dropdown shows all available presets.
|
||||
- [ ] Task: Conductor - User Manual Verification 'Phase 2: UI Integration (AI Settings)' (Protocol in workflow.md)
|
||||
|
||||
## Phase 3: AI Client & Execution Integration
|
||||
- [ ] Task: Integrate tool presets into the AI Client.
|
||||
- [ ] Modify `src/ai_client.py` to load and apply the selected tool preset for a given agent role.
|
||||
- [ ] Implement logic to restrict available tools and enforce "auto"/"ask" behavior based on the preset.
|
||||
- [ ] Task: Update MMA delegation to pass the selected tool preset.
|
||||
- [ ] Modify `scripts/mma_exec.py` and `src/multi_agent_conductor.py` to pass the `tool_preset` to sub-agents.
|
||||
- [ ] Task: Write integration tests for AI execution with tool presets.
|
||||
- [ ] Verify agents only have access to tools in their assigned preset.
|
||||
- [ ] Verify "auto" tools execute without prompting, and "ask" tools require confirmation.
|
||||
- [ ] Task: Conductor - User Manual Verification 'Phase 3: AI Client & Execution Integration' (Protocol in workflow.md)
|
||||
|
||||
## Phase 4: Final Integration & Polish
|
||||
- [ ] Task: Implement Preset Manager Modal.
|
||||
- [ ] Create a modal for creating, editing, and deleting tool presets.
|
||||
- [ ] Task: Final UI polish (spacing, icons, tooltips).
|
||||
- [ ] Task: Run full suite of relevant tests.
|
||||
- [ ] Task: Conductor - User Manual Verification 'Phase 4: Final Integration & Polish' (Protocol in workflow.md)
|
||||
38
conductor/tracks/saved_tool_presets_20260308/spec.md
Normal file
38
conductor/tracks/saved_tool_presets_20260308/spec.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Specification: Saved Tool Presets
|
||||
|
||||
## Overview
|
||||
This feature adds the ability to create, save, and manage "Tool Presets" for agent roles. These presets define which tools are available to an agent and their respective "auto" vs "ask" approval levels. Tools will be organized into dynamic, TOML-defined categories (e.g., Python, General) and integrated into the global and project-specific AI settings.
|
||||
|
||||
## Functional Requirements
|
||||
- **Dedicated Storage:**
|
||||
- Tool presets and categorization data will be stored in a dedicated `tool_presets.toml` file.
|
||||
- **Preset Content:**
|
||||
- `name`: A unique identifier for the tool preset.
|
||||
- `categories`: A dictionary of tool categories (e.g., `[categories.python]`, `[categories.general]`).
|
||||
- `tools`: A list of tool definitions within each category, including:
|
||||
- `name`: The tool's identifier (e.g., `read_file`).
|
||||
- `approval`: A flag set to `auto` (execute immediately) or `ask` (require user confirmation).
|
||||
- **GUI Integration:**
|
||||
- **AI Settings Panel:** Move tool management to the AI Settings panel (global and project).
|
||||
- **Categorized Sections:** Display tools in the UI based on their dynamic categories (Python, General, etc.).
|
||||
- **Approval Toggles:** Provide a visual indicator and toggle for each tool's `auto`/`ask` status.
|
||||
- **MMA Role Mapping:** Add a "Tool Preset" dropdown to the existing MMA agent role configuration (alongside provider and model selections).
|
||||
- **Dynamic Categorization:**
|
||||
- The UI must dynamically render categories and tool lists based on the `tool_presets.toml` structure.
|
||||
|
||||
## Non-Functional Requirements
|
||||
- **Persistence:** Changes to presets or tool approval levels must be persisted to the `tool_presets.toml` file.
|
||||
- **Scalability:** The system should handle an arbitrary number of categories and tools.
|
||||
- **Validation:** Ensure tool names are valid and match existing MCP/native tools.
|
||||
|
||||
## Acceptance Criteria
|
||||
- [ ] Users can create a new tool preset and see it in the dropdown for MMA agent roles.
|
||||
- [ ] Tools are correctly displayed in dynamic categories (Python, General) in the UI.
|
||||
- [ ] Changing a tool's approval flag (auto/ask) is correctly persisted.
|
||||
- [ ] Selecting a tool preset for an MMA role correctly restricts the available tools and sets their default approval levels for that role.
|
||||
- [ ] The AI Settings panel correctly reflects the categorized tool list.
|
||||
|
||||
## Out of Scope
|
||||
- Support for other file formats (e.g., JSON, YAML) for tool presets.
|
||||
- Presets for specific files or folders (scoped only to global or project level).
|
||||
- Cloud syncing of tool presets.
|
||||
Reference in New Issue
Block a user