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:
@@ -61,31 +61,20 @@ describe('workflow manager', () => {
|
||||
expect(updates).toEqual([status])
|
||||
})
|
||||
|
||||
it('maps workflow node agents to the existing run backends', async () => {
|
||||
it('routes every workflow node through the Hermes bridge', async () => {
|
||||
const { resolveWorkflowNodeRunTarget } = await import('../../packages/server/src/services/workflow-manager')
|
||||
|
||||
expect(resolveWorkflowNodeRunTarget('hermes')).toEqual({
|
||||
const expected = {
|
||||
type: 'workflow',
|
||||
source: 'workflow',
|
||||
agent: 'hermes',
|
||||
})
|
||||
expect(resolveWorkflowNodeRunTarget('claude-code')).toEqual({
|
||||
type: 'workflow',
|
||||
source: 'workflow',
|
||||
agent: 'claude',
|
||||
codingAgentId: 'claude-code',
|
||||
})
|
||||
expect(resolveWorkflowNodeRunTarget('codex')).toEqual({
|
||||
type: 'workflow',
|
||||
source: 'workflow',
|
||||
agent: 'codex',
|
||||
codingAgentId: 'codex',
|
||||
})
|
||||
expect(resolveWorkflowNodeRunTarget('unknown')).toEqual({
|
||||
type: 'workflow',
|
||||
source: 'workflow',
|
||||
agent: 'hermes',
|
||||
})
|
||||
}
|
||||
expect(resolveWorkflowNodeRunTarget('hermes')).toEqual(expected)
|
||||
// Workflow graphs saved before Phase 003 still name the removed coding
|
||||
// agents; they must keep loading and run on the bridge.
|
||||
expect(resolveWorkflowNodeRunTarget('claude-code')).toEqual(expected)
|
||||
expect(resolveWorkflowNodeRunTarget('codex')).toEqual(expected)
|
||||
expect(resolveWorkflowNodeRunTarget('unknown')).toEqual(expected)
|
||||
})
|
||||
|
||||
it('requires workflow node approval only when explicitly enabled', async () => {
|
||||
|
||||
Reference in New Issue
Block a user