Core owns the SkillFlow format — discoverWorkflows, loadFlowDefinition, saveFlowDefinition, deleteFlowDefinition, plus the system-prompt block — but the executor lives only in @open-gitagent/voice (server.ts, executeFlow). Nothing in this repo can run a flow.
Bug this causes: workflows.ts:156 appends "SkillFlows can be triggered with @flow_name in chat" to every agent's system prompt (loader.ts:313 → index.ts:596). The CLI has no @flow handler — its commands are /memory, /skills, /tasks, /learned, /plugins, /skill:name, /quit, /exit. The model is told a trigger exists that doesn't, and typing it falls through as ordinary chat.
Repro: run the CLI in any agent dir with a workflows/*.yaml containing steps: — the sentence is in the system prompt.
Also blocked:
Scheduler holds a single prompt string, so a flow named daily-report cannot run daily.
SDK users can't build on flows at all — query() has no flow concept.
Proposal: move the step loop into core with its side effects injected:
executeFlow(flow, input, { runStep, onProgress, requestApproval })
voice passes its WebSocket broadcaster and Telegram/WhatsApp approver, CLI passes console.log and a terminal y/n, scheduler passes a logger and an explicit approval policy. The visual builder stays in voice — only the loop moves.
Core owns the SkillFlow format — discoverWorkflows, loadFlowDefinition, saveFlowDefinition, deleteFlowDefinition, plus the system-prompt block — but the executor lives only in @open-gitagent/voice (server.ts, executeFlow). Nothing in this repo can run a flow.
Bug this causes: workflows.ts:156 appends "SkillFlows can be triggered with @flow_name in chat" to every agent's system prompt (loader.ts:313 → index.ts:596). The CLI has no @flow handler — its commands are /memory, /skills, /tasks, /learned, /plugins, /skill:name, /quit, /exit. The model is told a trigger exists that doesn't, and typing it falls through as ordinary chat.
Repro: run the CLI in any agent dir with a workflows/*.yaml containing steps: — the sentence is in the system prompt.
Also blocked:
Scheduler holds a single prompt string, so a flow named daily-report cannot run daily.
SDK users can't build on flows at all — query() has no flow concept.
Proposal: move the step loop into core with its side effects injected:
executeFlow(flow, input, { runStep, onProgress, requestApproval })
voice passes its WebSocket broadcaster and Telegram/WhatsApp approver, CLI passes console.log and a terminal y/n, scheduler passes a logger and an explicit approval policy. The visual builder stays in voice — only the loop moves.