feat: replace $START _ status with new/resume semantics
CI / check (pull_request) Successful in 2m27s

BREAKING: All workflow YAML files must update $START._ to $START.new + $START.resume.
The resume edge prompt replaces the previously hardcoded resume message.

- evaluate.ts: remove START_ROLE/START_STATUS special case, use $status like all nodes
- thread.ts: resolveEvaluateArgs passes 'new', cmdThreadResume passes 'resume'
- validate.ts: reject '_' everywhere (no longer valid)
- validate-semantic.ts: require 'new' and 'resume' edges on $START
- All workflow YAMLs and test fixtures updated

Fixes #101
This commit is contained in:
2026-06-05 09:30:09 +00:00
parent d99a376b60
commit fbfd31a042
34 changed files with 228 additions and 106 deletions
+3 -2
View File
@@ -16,7 +16,8 @@ The graph is a nested map: \`Record<Role | "$START", Record<Status, Target>>\`.
\`\`\`yaml
graph:
$START:
_: { role: planner, prompt: "Analyze the issue." }
new: { role: planner, prompt: "Analyze the issue." }
resume: { role: planner, prompt: "Review the previous run output and continue." }
planner:
ready: { role: developer, prompt: "Implement the plan (CAS hash: {{{plan}}})." }
insufficient_info: { role: $END, prompt: "Not enough info." }
@@ -41,7 +42,7 @@ Edge prompts use triple-brace Mustache syntax (\`{{{field}}}\`) to interpolate v
## Special Nodes
- \`$START\` — entry point; uses status key \`_\` (unconditional) since there is no previous output
- \`$START\` — entry point; uses status keys \`new\` (first start) and \`resume\` (resuming a completed thread)
- \`$END\` — terminal node; thread completes when reached and is moved to history
## Integration with Steps