conductor(plan): Mark Phase 1 of DeepSeek track as verified

This commit is contained in:
2026-02-25 22:36:57 -05:00
parent 1b3ff232c4
commit 75bf912f60
3 changed files with 33 additions and 10 deletions

View File

@@ -1,10 +1,10 @@
# 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)
- [x] Task: Initialize MMA Environment `activate_skill mma-orchestrator` 1b3ff23
- [x] Task: Update `credentials.toml` schema and configuration logic in `project_manager.py` to support `deepseek` 1b3ff23
- [x] Task: Define the `DeepSeekProvider` interface in `ai_client.py` and align with existing provider patterns 1b3ff23
- [x] Task: Conductor - User Manual Verification 'Infrastructure & Common Logic' (Protocol in workflow.md) 1b3ff23
## Phase 2: DeepSeek API Client Implementation
- [ ] Task: Write failing tests for `DeepSeekProvider` model selection and basic completion

View File

@@ -120,6 +120,10 @@ def execute_agent(role: str, prompt: str, docs: list[str]) -> str:
# Advanced Context: Dependency skeletons for Tier 3
injected_context = ""
# Whitelist of modules that sub-agents have "unfettered" (full) access to.
# These will be provided in full if imported, instead of just skeletons.
UNFETTERED_MODULES = ['mcp_client', 'project_manager']
if role in ['tier3', 'tier3-worker']:
for doc in docs:
if doc.endswith('.py') and os.path.exists(doc):
@@ -129,15 +133,20 @@ def execute_agent(role: str, prompt: str, docs: list[str]) -> str:
dep_file = f"{dep}.py"
if os.path.exists(dep_file) and dep_file != doc:
try:
if dep in UNFETTERED_MODULES:
with open(dep_file, 'r', encoding='utf-8') as f:
full_content = f.read()
injected_context += f"\n\nFULL MODULE CONTEXT: {dep_file}\n{full_content}\n"
else:
with open(dep_file, 'r', encoding='utf-8') as f:
skeleton = generate_skeleton(f.read())
injected_context += f"\n\nDEPENDENCY SKELETON: {dep_file}\n{skeleton}\n"
except Exception as e:
print(f"Error generating skeleton for {dep_file}: {e}")
print(f"Error gathering context for {dep_file}: {e}")
# Check for token-bloat safety: if injected_context is too large, truncate it
if len(injected_context) > 10000:
injected_context = injected_context[:10000] + "... [TRUNCATED FOR COMMAND LINE LIMITS]"
if len(injected_context) > 15000:
injected_context = injected_context[:15000] + "... [TRUNCATED FOR COMMAND LINE LIMITS]"
# MMA Protocol: Tier 3 and 4 are stateless and tool-less.
system_directive = f"STRICT SYSTEM DIRECTIVE: You are a stateless {role}. " \

View File

@@ -49,3 +49,17 @@ def test_deepseek_model_listing():
models = ai_client.list_models("deepseek")
assert "deepseek-chat" in models
assert "deepseek-reasoner" in models
def test_gui_provider_list_via_hooks(live_gui):
"""
Verify 'deepseek' is present in the GUI provider list using API hooks.
"""
from api_hook_client import ApiHookClient
import time
client = ApiHookClient()
assert client.wait_for_server(timeout=10)
# Attempt to set provider to deepseek to verify it's an allowed value
client.set_value('current_provider', 'deepseek')
time.sleep(0.5)
assert client.get_value('current_provider') == 'deepseek'