# dsh-codex-reasoning-router PURPOSE: Composable multi-model Agent Team plugin for DeepSeek Harness, with legacy Luna/Sol router compatibility. VERSION: 0.3.0 LICENSE: Apache-2.0 DEFAULT TEAM: - brain: advisory, openai-codex/gpt-5.6-sol, max, no tools - coordinator: advisory, openai-codex/gpt-5.6-sol, high, no tools - worker: real spawn subagent, openai-codex/gpt-5.6-luna, max, absolute maxDepth 2 TOOLS: - agent_role_catalog: reads live registered providers, models, supported efforts, and defaults - agent_role_run: selects a configured role and runs advisory or subagent execution - sol_consult: legacy preset-bound blocker advisor COMPOSITION: - teamEnabled=true and presetIds=[] means every preset receives team tools. - presetIds limits the team to named presets. - subagent roles inherit the parent's preset composition, workspace, tools, and delegated policy. - role config may override provider, model, reasoningEffort, persona, tools, subagent provider, maxTokens, and maxDepth. - omitted provider/model inherits the caller; omitted reasoningEffort uses the model/provider default. HARD INVARIANTS: - Explicit models must appear in ctx.llm.listModels(provider). - Explicit efforts must appear in resolveModelInfo(provider, model).reasoning.efforts. - Advisory calls receive no tools; returned tool calls are rejected and never executed. - Subagent maxDepth is an absolute tree cap enforced by the DSH provider. - Child effort is installed through agent-scoped installModelSelection. - No silent fallback and no automatic model rewrite. LEGACY MODE: - requiredPresetId='' disables the old Luna route lock (default). - Set requiredPresetId=luna-sol-reasoning-router and copy/select the shipped preset to restore 0.1 behavior. - Legacy Sol is tool-less; Luna remains executor; blocker state is durable; default escalation is medium then high. CODE MAP: - src/team.ts: role route resolution, live catalog, advisory and subagent execution - src/team-tool.ts: agent_role_run and agent_role_catalog - src/index.ts: schema and per-agent/preset lifecycle - src/advisor.ts, router.ts, tool.ts, state.ts, events.ts: legacy Luna/Sol router - cordis.patch.yml: default universal Agent Team configuration - tests/team.spec.ts and tests/router.spec.ts: new and compatibility invariants VERIFY: - pnpm run typecheck - pnpm run test - pnpm run build - pnpm pack --dry-run