Merge branch 'main' of github.com:Dark-Alex-17/coyote

This commit is contained in:
2026-07-22 16:37:34 -06:00
6 changed files with 94 additions and 76 deletions
+1
View File
@@ -21,6 +21,7 @@ variables:
default: '.' default: '.'
global_tools: global_tools:
- ast_grep.sh
- fs_read.sh - fs_read.sh
- fs_cat.sh - fs_cat.sh
- fs_grep.sh - fs_grep.sh
+29 -22
View File
@@ -2,9 +2,9 @@ name: coder
description: | description: |
Implementation agent. Plans, implements, and runs build + tests in a Implementation agent. Plans, implements, and runs build + tests in a
bounded fix-loop until verified. Designed to be delegated to by sisyphus. bounded fix-loop until verified. Designed to be delegated to by sisyphus.
version: "1.0" version: '1.0'
global_tools: global_tools:
- ast_grep.sh
- fs_cat.sh - fs_cat.sh
- fs_ls.sh - fs_ls.sh
- fs_write.sh - fs_write.sh
@@ -25,7 +25,7 @@ variables:
Absolute path to the project directory. Defaults to "." which is the Absolute path to the project directory. Defaults to "." which is the
directory you invoked `coyote` from. Override at runtime with directory you invoked `coyote` from. Override at runtime with
`coyote -a coder --agent-variable project_dir /abs/path "..."`. `coyote -a coder --agent-variable project_dir /abs/path "..."`.
default: "." default: '.'
settings: settings:
max_loop_iterations: 20 max_loop_iterations: 20
@@ -34,14 +34,14 @@ settings:
timeout: 1800 timeout: 1800
initial_state: initial_state:
project_dir: "" project_dir: ''
fix_attempts: 0 fix_attempts: 0
max_fix_attempts: 3 max_fix_attempts: 3
fix_instructions: "" fix_instructions: ''
build_output: "" build_output: ''
tests_output: "" tests_output: ''
last_node_output: "" last_node_output: ''
plan_summary: "" plan_summary: ''
files_to_modify: [] files_to_modify: []
files_to_create: [] files_to_create: []
risks: [] risks: []
@@ -49,7 +49,7 @@ initial_state:
review_attempts: 0 review_attempts: 0
max_review_attempts: 1 max_review_attempts: 1
review_clean: true review_clean: true
review_notes: "" review_notes: ''
start: resolve_paths start: resolve_paths
@@ -88,7 +88,7 @@ nodes:
etc. Empty list is fine. etc. Empty list is fine.
Project directory: {{project_dir}} Project directory: {{project_dir}}
prompt: "{{initial_prompt}}" prompt: '{{initial_prompt}}'
tools: [] tools: []
output_schema: output_schema:
type: object type: object
@@ -98,20 +98,27 @@ nodes:
description: 1-3 sentences summarizing what will be done description: 1-3 sentences summarizing what will be done
files_to_modify: files_to_modify:
type: array type: array
items: {type: string} items: { type: string }
files_to_create: files_to_create:
type: array type: array
items: {type: string} items: { type: string }
complexity_score: complexity_score:
type: integer type: integer
minimum: 1 minimum: 1
maximum: 10 maximum: 10
risks: risks:
type: array type: array
items: {type: string} items: { type: string }
required: [plan_summary, files_to_modify, files_to_create, complexity_score, risks] required:
[
plan_summary,
files_to_modify,
files_to_create,
complexity_score,
risks,
]
state_updates: state_updates:
last_node_output: "{{output}}" last_node_output: '{{output}}'
fallback: end_failure fallback: end_failure
next: route_complexity next: route_complexity
@@ -144,11 +151,11 @@ nodes:
Approve this plan? Approve this plan?
options: options:
- "yes" - 'yes'
- "no" - 'no'
routes: routes:
"yes": implement 'yes': implement
"no": end_rejected 'no': end_rejected
on_other: end_rejected on_other: end_rejected
implement: implement:
@@ -243,7 +250,7 @@ nodes:
- execute_command - execute_command
max_iterations: 30 max_iterations: 30
state_updates: state_updates:
last_node_output: "{{output}}" last_node_output: '{{output}}'
fallback: end_failure fallback: end_failure
next: verify_build next: verify_build
@@ -326,7 +333,7 @@ nodes:
description: Concrete issues found, one per line as file:line - description. Empty when review_clean is true. description: Concrete issues found, one per line as file:line - description. Empty when review_clean is true.
required: [review_clean, review_notes] required: [review_clean, review_notes]
state_updates: state_updates:
last_node_output: "{{output}}" last_node_output: '{{output}}'
fallback: end_success fallback: end_success
next: route_review_result next: route_review_result
+1
View File
@@ -14,6 +14,7 @@ variables:
mcp_servers: mcp_servers:
- ddg-search - ddg-search
global_tools: global_tools:
- ast_grep.sh
- fs_read.sh - fs_read.sh
- fs_cat.sh - fs_cat.sh
- fs_grep.sh - fs_grep.sh
+1
View File
@@ -18,6 +18,7 @@ variables:
mcp_servers: mcp_servers:
- ddg-search - ddg-search
global_tools: global_tools:
- ast_grep.sh
- fs_read.sh - fs_read.sh
- fs_cat.sh - fs_cat.sh
- fs_grep.sh - fs_grep.sh
+1
View File
@@ -47,6 +47,7 @@ variables:
mcp_servers: mcp_servers:
- ddg-search - ddg-search
global_tools: global_tools:
- ast_grep.sh
- fs_read.sh - fs_read.sh
- fs_grep.sh - fs_grep.sh
- fs_glob.sh - fs_glob.sh
+60 -53
View File
@@ -5,9 +5,9 @@ description: |
implement (coder) -> verify -> edge-case sweep -> optional independent implement (coder) -> verify -> edge-case sweep -> optional independent
review -> evidence-backed handoff -> user approval gate. Designed to be review -> evidence-backed handoff -> user approval gate. Designed to be
delegated to by sisyphus. delegated to by sisyphus.
version: "1.0" version: '1.0'
global_tools: global_tools:
- ast_grep.sh
- fs_cat.sh - fs_cat.sh
- fs_ls.sh - fs_ls.sh
- fs_write.sh - fs_write.sh
@@ -28,18 +28,18 @@ variables:
coyote was invoked from). The coder sub-agent resolves its own coyote was invoked from). The coder sub-agent resolves its own
project_dir the same way, so invoke step-runner FROM the project root project_dir the same way, so invoke step-runner FROM the project root
unless you override this for both. unless you override this for both.
default: "." default: '.'
- name: plans_dir - name: plans_dir
description: | description: |
Path to the plan repo. Relative paths resolve against project_dir. Path to the plan repo. Relative paths resolve against project_dir.
Expected layout: <plans_dir>/steps/NN-<slug>.md, Expected layout: <plans_dir>/steps/NN-<slug>.md,
<plans_dir>/handoffs/, <plans_dir>/NOTES.md. <plans_dir>/handoffs/, <plans_dir>/NOTES.md.
default: "plans" default: 'plans'
- name: step - name: step
description: | description: |
Which step to execute: a step number, or "next" to pick the first Which step to execute: a step number, or "next" to pick the first
in-progress (resume) or pending step plan. in-progress (resume) or pending step plan.
default: "next" default: 'next'
settings: settings:
max_loop_iterations: 20 max_loop_iterations: 20
@@ -48,45 +48,45 @@ settings:
timeout: 7200 timeout: 7200
initial_state: initial_state:
project_dir: "" project_dir: ''
plans_dir: "" plans_dir: ''
step_number: 0 step_number: 0
step_slug: "" step_slug: ''
step_title: "" step_title: ''
step_plan_path: "" step_plan_path: ''
step_plan: "" step_plan: ''
prev_handoff_path: "(none)" prev_handoff_path: '(none)'
prev_handoff: "(none - this is the first step)" prev_handoff: '(none - this is the first step)'
notes_path: "" notes_path: ''
notes: "(none)" notes: '(none)'
handoff_path: "" handoff_path: ''
blocking_reason: "" blocking_reason: ''
plan_summary: "" plan_summary: ''
implementation_brief: "" implementation_brief: ''
staleness_report: "" staleness_report: ''
has_major_deviation: false has_major_deviation: false
deviation_summary: "" deviation_summary: ''
user_feedback: "" user_feedback: ''
fix_instructions: "" fix_instructions: ''
fix_attempts: 0 fix_attempts: 0
max_fix_attempts: 2 max_fix_attempts: 2
coder_result: "" coder_result: ''
format_output: "" format_output: ''
lint_ok: true lint_ok: true
lint_output: "" lint_output: ''
build_ok: true build_ok: true
build_output: "" build_output: ''
tests_ok: true tests_ok: true
tests_output: "" tests_output: ''
edge_case_report: "" edge_case_report: ''
downstream_updates: "" downstream_updates: ''
needs_independent_review: false needs_independent_review: false
review_report: "" review_report: ''
review_attempts: 0 review_attempts: 0
max_review_attempts: 1 max_review_attempts: 1
handoff_attempts: 0 handoff_attempts: 0
handoff_fix: "" handoff_fix: ''
step_summary: "" step_summary: ''
start: resolve_step start: resolve_step
@@ -114,11 +114,11 @@ nodes:
Proceed anyway? Proceed anyway?
options: options:
- "yes" - 'yes'
- "no" - 'no'
routes: routes:
"yes": orient 'yes': orient
"no": end_blocked 'no': end_blocked
on_other: end_blocked on_other: end_blocked
orient: orient:
@@ -183,7 +183,14 @@ nodes:
deviation_summary: deviation_summary:
type: string type: string
description: Major deviations only, with the plan claim vs current reality. Empty when none description: Major deviations only, with the plan claim vs current reality. Empty when none
required: [plan_summary, implementation_brief, staleness_report, has_major_deviation, deviation_summary] required:
[
plan_summary,
implementation_brief,
staleness_report,
has_major_deviation,
deviation_summary,
]
fallback: end_failure fallback: end_failure
next: route_staleness next: route_staleness
@@ -211,14 +218,14 @@ nodes:
Proceed with the corrected brief? (Answer with anything else to give Proceed with the corrected brief? (Answer with anything else to give
your own guidance to the implementer.) your own guidance to the implementer.)
options: options:
- "proceed" - 'proceed'
- "abort" - 'abort'
routes: routes:
"proceed": implement 'proceed': implement
"abort": end_rejected 'abort': end_rejected
on_other: implement on_other: implement
state_updates: state_updates:
user_feedback: "{{choice}}" user_feedback: '{{choice}}'
implement: implement:
id: implement id: implement
@@ -262,7 +269,7 @@ nodes:
{{fix_instructions}} {{fix_instructions}}
timeout: 3600 timeout: 3600
state_updates: state_updates:
coder_result: "{{output}}" coder_result: '{{output}}'
next: route_coder_result next: route_coder_result
route_coder_result: route_coder_result:
@@ -399,7 +406,7 @@ nodes:
Preserve severity tags in your findings. Preserve severity tags in your findings.
timeout: 1200 timeout: 1200
state_updates: state_updates:
review_report: "{{output}}" review_report: '{{output}}'
next: route_review next: route_review
route_review: route_review:
@@ -517,23 +524,23 @@ nodes:
Approve this step? (Answer with anything else to send revision Approve this step? (Answer with anything else to send revision
instructions straight to the implementer.) instructions straight to the implementer.)
options: options:
- "approve" - 'approve'
- "revise" - 'revise'
routes: routes:
"approve": end_success 'approve': end_success
"revise": get_revision 'revise': get_revision
on_other: revise_from_choice on_other: revise_from_choice
state_updates: state_updates:
user_feedback: "{{choice}}" user_feedback: '{{choice}}'
get_revision: get_revision:
id: get_revision id: get_revision
type: input type: input
description: Collect revision instructions, then loop back through implement -> verify -> handoff. description: Collect revision instructions, then loop back through implement -> verify -> handoff.
question: "What should change? Your comments go to the implementer verbatim." question: 'What should change? Your comments go to the implementer verbatim.'
validation: "len(input) > 0" validation: 'len(input) > 0'
state_updates: state_updates:
fix_instructions: "{{input}}" fix_instructions: '{{input}}'
next: implement next: implement
revise_from_choice: revise_from_choice: