diff --git a/assets/agents/code-reviewer/config.yaml b/assets/agents/code-reviewer/config.yaml index edc49c1..d5c2e6d 100644 --- a/assets/agents/code-reviewer/config.yaml +++ b/assets/agents/code-reviewer/config.yaml @@ -21,6 +21,7 @@ variables: default: '.' global_tools: + - ast_grep.sh - fs_read.sh - fs_cat.sh - fs_grep.sh @@ -158,6 +159,6 @@ instructions: | - Project: {{project_dir}} - CWD: {{__cwd__}} - Shell: {{__shell__}} - + ## Available Tools: {{__tools__}} diff --git a/assets/agents/coder/graph.yaml b/assets/agents/coder/graph.yaml index 3fb4f60..d3dd5a8 100644 --- a/assets/agents/coder/graph.yaml +++ b/assets/agents/coder/graph.yaml @@ -2,9 +2,9 @@ name: coder description: | Implementation agent. Plans, implements, and runs build + tests in a bounded fix-loop until verified. Designed to be delegated to by sisyphus. -version: "1.0" - +version: '1.0' global_tools: + - ast_grep.sh - fs_cat.sh - fs_ls.sh - fs_write.sh @@ -25,7 +25,7 @@ variables: Absolute path to the project directory. Defaults to "." which is the directory you invoked `coyote` from. Override at runtime with `coyote -a coder --agent-variable project_dir /abs/path "..."`. - default: "." + default: '.' settings: max_loop_iterations: 20 @@ -34,14 +34,14 @@ settings: timeout: 1800 initial_state: - project_dir: "" + project_dir: '' fix_attempts: 0 max_fix_attempts: 3 - fix_instructions: "" - build_output: "" - tests_output: "" - last_node_output: "" - plan_summary: "" + fix_instructions: '' + build_output: '' + tests_output: '' + last_node_output: '' + plan_summary: '' files_to_modify: [] files_to_create: [] risks: [] @@ -49,7 +49,7 @@ initial_state: review_attempts: 0 max_review_attempts: 1 review_clean: true - review_notes: "" + review_notes: '' start: resolve_paths @@ -88,7 +88,7 @@ nodes: etc. Empty list is fine. Project directory: {{project_dir}} - prompt: "{{initial_prompt}}" + prompt: '{{initial_prompt}}' tools: [] output_schema: type: object @@ -98,20 +98,27 @@ nodes: description: 1-3 sentences summarizing what will be done files_to_modify: type: array - items: {type: string} + items: { type: string } files_to_create: type: array - items: {type: string} + items: { type: string } complexity_score: type: integer minimum: 1 maximum: 10 risks: type: array - items: {type: string} - required: [plan_summary, files_to_modify, files_to_create, complexity_score, risks] + items: { type: string } + required: + [ + plan_summary, + files_to_modify, + files_to_create, + complexity_score, + risks, + ] state_updates: - last_node_output: "{{output}}" + last_node_output: '{{output}}' fallback: end_failure next: route_complexity @@ -144,11 +151,11 @@ nodes: Approve this plan? options: - - "yes" - - "no" + - 'yes' + - 'no' routes: - "yes": implement - "no": end_rejected + 'yes': implement + 'no': end_rejected on_other: end_rejected implement: @@ -243,7 +250,7 @@ nodes: - execute_command max_iterations: 30 state_updates: - last_node_output: "{{output}}" + last_node_output: '{{output}}' fallback: end_failure 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. required: [review_clean, review_notes] state_updates: - last_node_output: "{{output}}" + last_node_output: '{{output}}' fallback: end_success next: route_review_result diff --git a/assets/agents/explore/config.yaml b/assets/agents/explore/config.yaml index 266582b..9f00447 100644 --- a/assets/agents/explore/config.yaml +++ b/assets/agents/explore/config.yaml @@ -14,6 +14,7 @@ variables: mcp_servers: - ddg-search global_tools: + - ast_grep.sh - fs_read.sh - fs_cat.sh - fs_grep.sh diff --git a/assets/agents/oracle/config.yaml b/assets/agents/oracle/config.yaml index 1e266a3..ba66901 100644 --- a/assets/agents/oracle/config.yaml +++ b/assets/agents/oracle/config.yaml @@ -18,6 +18,7 @@ variables: mcp_servers: - ddg-search global_tools: + - ast_grep.sh - fs_read.sh - fs_cat.sh - fs_grep.sh diff --git a/assets/agents/sisyphus/config.yaml b/assets/agents/sisyphus/config.yaml index 1592362..89a2a05 100644 --- a/assets/agents/sisyphus/config.yaml +++ b/assets/agents/sisyphus/config.yaml @@ -47,6 +47,7 @@ variables: mcp_servers: - ddg-search global_tools: + - ast_grep.sh - fs_read.sh - fs_grep.sh - fs_glob.sh diff --git a/assets/agents/step-runner/graph.yaml b/assets/agents/step-runner/graph.yaml index 3a6aa14..08365ce 100644 --- a/assets/agents/step-runner/graph.yaml +++ b/assets/agents/step-runner/graph.yaml @@ -5,9 +5,9 @@ description: | implement (coder) -> verify -> edge-case sweep -> optional independent review -> evidence-backed handoff -> user approval gate. Designed to be delegated to by sisyphus. -version: "1.0" - +version: '1.0' global_tools: + - ast_grep.sh - fs_cat.sh - fs_ls.sh - fs_write.sh @@ -28,18 +28,18 @@ variables: coyote was invoked from). The coder sub-agent resolves its own project_dir the same way, so invoke step-runner FROM the project root unless you override this for both. - default: "." + default: '.' - name: plans_dir description: | Path to the plan repo. Relative paths resolve against project_dir. Expected layout: /steps/NN-.md, /handoffs/, /NOTES.md. - default: "plans" + default: 'plans' - name: step description: | Which step to execute: a step number, or "next" to pick the first in-progress (resume) or pending step plan. - default: "next" + default: 'next' settings: max_loop_iterations: 20 @@ -48,45 +48,45 @@ settings: timeout: 7200 initial_state: - project_dir: "" - plans_dir: "" + project_dir: '' + plans_dir: '' step_number: 0 - step_slug: "" - step_title: "" - step_plan_path: "" - step_plan: "" - prev_handoff_path: "(none)" - prev_handoff: "(none - this is the first step)" - notes_path: "" - notes: "(none)" - handoff_path: "" - blocking_reason: "" - plan_summary: "" - implementation_brief: "" - staleness_report: "" + step_slug: '' + step_title: '' + step_plan_path: '' + step_plan: '' + prev_handoff_path: '(none)' + prev_handoff: '(none - this is the first step)' + notes_path: '' + notes: '(none)' + handoff_path: '' + blocking_reason: '' + plan_summary: '' + implementation_brief: '' + staleness_report: '' has_major_deviation: false - deviation_summary: "" - user_feedback: "" - fix_instructions: "" + deviation_summary: '' + user_feedback: '' + fix_instructions: '' fix_attempts: 0 max_fix_attempts: 2 - coder_result: "" - format_output: "" + coder_result: '' + format_output: '' lint_ok: true - lint_output: "" + lint_output: '' build_ok: true - build_output: "" + build_output: '' tests_ok: true - tests_output: "" - edge_case_report: "" - downstream_updates: "" + tests_output: '' + edge_case_report: '' + downstream_updates: '' needs_independent_review: false - review_report: "" + review_report: '' review_attempts: 0 max_review_attempts: 1 handoff_attempts: 0 - handoff_fix: "" - step_summary: "" + handoff_fix: '' + step_summary: '' start: resolve_step @@ -114,11 +114,11 @@ nodes: Proceed anyway? options: - - "yes" - - "no" + - 'yes' + - 'no' routes: - "yes": orient - "no": end_blocked + 'yes': orient + 'no': end_blocked on_other: end_blocked orient: @@ -183,7 +183,14 @@ nodes: deviation_summary: type: string 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 next: route_staleness @@ -211,14 +218,14 @@ nodes: Proceed with the corrected brief? (Answer with anything else to give your own guidance to the implementer.) options: - - "proceed" - - "abort" + - 'proceed' + - 'abort' routes: - "proceed": implement - "abort": end_rejected + 'proceed': implement + 'abort': end_rejected on_other: implement state_updates: - user_feedback: "{{choice}}" + user_feedback: '{{choice}}' implement: id: implement @@ -262,7 +269,7 @@ nodes: {{fix_instructions}} timeout: 3600 state_updates: - coder_result: "{{output}}" + coder_result: '{{output}}' next: route_coder_result route_coder_result: @@ -399,7 +406,7 @@ nodes: Preserve severity tags in your findings. timeout: 1200 state_updates: - review_report: "{{output}}" + review_report: '{{output}}' next: route_review route_review: @@ -517,23 +524,23 @@ nodes: Approve this step? (Answer with anything else to send revision instructions straight to the implementer.) options: - - "approve" - - "revise" + - 'approve' + - 'revise' routes: - "approve": end_success - "revise": get_revision + 'approve': end_success + 'revise': get_revision on_other: revise_from_choice state_updates: - user_feedback: "{{choice}}" + user_feedback: '{{choice}}' get_revision: id: get_revision type: input description: Collect revision instructions, then loop back through implement -> verify -> handoff. - question: "What should change? Your comments go to the implementer verbatim." - validation: "len(input) > 0" + question: 'What should change? Your comments go to the implementer verbatim.' + validation: 'len(input) > 0' state_updates: - fix_instructions: "{{input}}" + fix_instructions: '{{input}}' next: implement revise_from_choice: