diff --git a/conductor/tracks.md b/conductor/tracks.md index df89276..f6962af 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -40,4 +40,9 @@ This file tracks all major tracks for the project. Each track has its own detail --- +- [ ] **Track: Add support for the deepseek api as a provider.** +*Link: [./tracks/deepseek_support_20260225/](./tracks/deepseek_support_20260225/)* + +--- + diff --git a/conductor/tracks/deepseek_support_20260225/index.md b/conductor/tracks/deepseek_support_20260225/index.md new file mode 100644 index 0000000..480c58d --- /dev/null +++ b/conductor/tracks/deepseek_support_20260225/index.md @@ -0,0 +1,5 @@ +# Track deepseek_support_20260225 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) diff --git a/conductor/tracks/deepseek_support_20260225/metadata.json b/conductor/tracks/deepseek_support_20260225/metadata.json new file mode 100644 index 0000000..cc8ba0b --- /dev/null +++ b/conductor/tracks/deepseek_support_20260225/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "deepseek_support_20260225", + "type": "feature", + "status": "new", + "created_at": "2026-02-25T00:00:00Z", + "updated_at": "2026-02-25T00:00:00Z", + "description": "Add support for the deepseek api as a provider." +} \ No newline at end of file diff --git a/conductor/tracks/deepseek_support_20260225/plan.md b/conductor/tracks/deepseek_support_20260225/plan.md new file mode 100644 index 0000000..1381359 --- /dev/null +++ b/conductor/tracks/deepseek_support_20260225/plan.md @@ -0,0 +1,27 @@ +# Implementation Plan: DeepSeek API Provider Support + +## Phase 1: Infrastructure & Common Logic +- [ ] Task: Initialize MMA Environment `activate_skill mma-orchestrator` +- [ ] Task: Update `credentials.toml` schema and configuration logic in `project_manager.py` to support `deepseek` +- [ ] Task: Define the `DeepSeekProvider` interface in `ai_client.py` and align with existing provider patterns +- [ ] Task: Conductor - User Manual Verification 'Infrastructure & Common Logic' (Protocol in workflow.md) + +## Phase 2: DeepSeek API Client Implementation +- [ ] Task: Write failing tests for `DeepSeekProvider` model selection and basic completion +- [ ] Task: Implement `DeepSeekProvider` using the dedicated SDK +- [ ] Task: Write failing tests for streaming and tool calling parity in `DeepSeekProvider` +- [ ] Task: Implement streaming and tool calling logic for DeepSeek models +- [ ] Task: Conductor - User Manual Verification 'DeepSeek API Client Implementation' (Protocol in workflow.md) + +## Phase 3: Reasoning Traces & Advanced Capabilities +- [ ] Task: Write failing tests for reasoning trace capture in `DeepSeekProvider` (DeepSeek-R1) +- [ ] Task: Implement reasoning trace processing and integration with discussion history +- [ ] Task: Write failing tests for token estimation and cost tracking for DeepSeek models +- [ ] Task: Implement token usage tracking according to DeepSeek pricing +- [ ] Task: Conductor - User Manual Verification 'Reasoning Traces & Advanced Capabilities' (Protocol in workflow.md) + +## Phase 4: GUI Integration & Final Verification +- [ ] Task: Update `gui_2.py` and `theme_2.py` (if necessary) to include DeepSeek in the provider selection UI +- [ ] Task: Implement automated regression tests for the full DeepSeek lifecycle (prompt, streaming, tool call, reasoning) +- [ ] Task: Verify overall performance and UI responsiveness with the new provider +- [ ] Task: Conductor - User Manual Verification 'GUI Integration & Final Verification' (Protocol in workflow.md) diff --git a/conductor/tracks/deepseek_support_20260225/spec.md b/conductor/tracks/deepseek_support_20260225/spec.md new file mode 100644 index 0000000..6dc47da --- /dev/null +++ b/conductor/tracks/deepseek_support_20260225/spec.md @@ -0,0 +1,31 @@ +# Specification: DeepSeek API Provider Support + +## Overview +Implement a new AI provider module to support the DeepSeek API within the Manual Slop application. This integration will leverage a dedicated SDK to provide access to high-performance models (DeepSeek-V3 and DeepSeek-R1) with support for streaming, tool calling, and detailed reasoning traces. + +## Functional Requirements +- **Dedicated SDK Integration:** Utilize a DeepSeek-specific Python client for API interactions. +- **Model Support:** Initial support for `deepseek-v3` (general performance) and `deepseek-r1` (reasoning). +- **Core Features:** + - **Streaming:** Support real-time response generation for a better user experience. + - **Tool Calling:** Integrate with Manual Slop's existing tool/function execution framework. + - **Reasoning Traces:** Capture and display reasoning paths if provided by the model (e.g., DeepSeek-R1). +- **Configuration Management:** + - Add `[deepseek]` section to `credentials.toml` for `api_key`. + - Update `config.toml` to allow selecting DeepSeek as the active provider. + +## Non-Functional Requirements +- **Parity:** Maintain consistency with existing Gemini and Anthropic provider implementations in `ai_client.py`. +- **Error Handling:** Robust handling of API rate limits and connection issues specific to DeepSeek. +- **Observability:** Track token usage and costs according to DeepSeek's pricing model. + +## Acceptance Criteria +- [ ] User can select "DeepSeek" as a provider in the GUI. +- [ ] Successful completion of prompts using both DeepSeek-V3 and DeepSeek-R1 models. +- [ ] Tool calling works correctly for standard operations (e.g., `read_file`). +- [ ] Reasoning traces from R1 are captured and visible in the discussion history. +- [ ] Streaming responses function correctly without blocking the GUI. + +## Out of Scope +- Support for OpenAI-compatible proxies for DeepSeek in this initial track. +- Automated fine-tuning or custom model endpoints.