Phase 003: remove the coding-agent and ekko-agent runtimes

Every chat session now runs through the Hermes bridge, so the three chat
chains become feature-equivalent instead of three partially-maintained
dispatch paths. Keeping the coding-agent and in-house agent runtimes alive
meant every bridge change had to be mirrored into two more runtimes that
had already drifted.

Historical rows are read, not migrated: sessions stored with the retired
source normalize to cli on load, workflow graphs naming the retired agents
keep loading and run on the bridge, and the visible-source check plus
SOURCE_LABELS still recognize the old value so those sessions stay listed.

The public surface follows the code: the OpenAPI generator and the MCP
chat-run tool schema drop the six retired entry fields so external callers
are not told about runtimes that no longer exist.

harness-check gains a RETIRED_RUNTIME scan so the residual check is a
mechanical gate instead of a manual grep, with the two surviving read-side
compat sites recorded with reasons.

Refs: docs/phases/phase_003.md
This commit is contained in:
2026-10-16 13:27:50 +08:00
parent c93e1fe1bd
commit 8c1ddf415f
123 changed files with 567 additions and 23599 deletions
+4 -38
View File
@@ -856,13 +856,13 @@ const tools = [
},
source: {
type: 'string',
enum: ['cli', 'coding_agent', 'global_agent'],
description: 'Optional run backend source.',
enum: ['cli', 'global_agent', 'workflow'],
description: 'Run backend source. Use cli for Hermes bridge runs or global_agent for global-agent sessions.',
},
session_source: {
type: 'string',
enum: ['global_agent'],
description: 'Optional session source marker.',
enum: ['global_agent', 'workflow'],
description: 'Marks the session as launched from the global agent or from a workflow run.',
},
instructions: {
type: 'string',
@@ -876,34 +876,6 @@ const tools = [
type: 'string',
description: 'Optional per-run reasoning effort override.',
},
coding_agent_id: {
type: 'string',
enum: ['claude-code', 'codex'],
description: 'Coding agent id when source is coding_agent.',
},
agent_id: {
type: 'string',
enum: ['claude-code', 'codex'],
description: 'Alias for coding_agent_id.',
},
mode: {
type: 'string',
enum: ['scoped', 'global'],
description: 'Coding-agent launch mode.',
},
baseUrl: {
type: 'string',
description: 'Optional provider base URL for coding-agent runs.',
},
apiKey: {
type: 'string',
description: 'Optional provider API key for coding-agent runs.',
},
apiMode: {
type: 'string',
enum: ['chat_completions', 'codex_responses', 'anthropic_messages'],
description: 'Optional provider wire API mode for coding-agent runs.',
},
timeout_ms: {
type: 'number',
description: 'Maximum time to wait for a terminal run event.',
@@ -1505,12 +1477,6 @@ async function callTool(name, args = {}) {
'instructions',
'workspace',
'reasoning_effort',
'coding_agent_id',
'agent_id',
'mode',
'baseUrl',
'apiKey',
'apiMode',
'timeout_ms',
'include_events',
]),