Merge branch 'main' of github.com:Dark-Alex-17/coyote
This commit is contained in:
@@ -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
|
||||||
@@ -158,6 +159,6 @@ instructions: |
|
|||||||
- Project: {{project_dir}}
|
- Project: {{project_dir}}
|
||||||
- CWD: {{__cwd__}}
|
- CWD: {{__cwd__}}
|
||||||
- Shell: {{__shell__}}
|
- Shell: {{__shell__}}
|
||||||
|
|
||||||
## Available Tools:
|
## Available Tools:
|
||||||
{{__tools__}}
|
{{__tools__}}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user