@hiai-gg/hiai-opencode 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +68 -57
- package/AGENTS.md +383 -281
- package/ARCHITECTURE.md +280 -281
- package/LICENSE.md +59 -59
- package/README.md +421 -301
- package/assets/mcp/mempalace.mjs +196 -153
- package/assets/mcp/playwright.mjs +76 -0
- package/assets/mcp/rag.mjs +236 -236
- package/assets/runtime/npm-package-runner.mjs +54 -54
- package/config/hiai-opencode.schema.json +82 -82
- package/config/opencode.json +4 -4
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/platform-schema.d.ts +2 -0
- package/dist/index.js +462 -417
- package/dist/mcp/registry.d.ts +14 -0
- package/dist/mcp/types.d.ts +6 -0
- package/hiai-opencode.json +58 -58
- package/package.json +86 -91
- package/skills/api-and-interface-design/SKILL.md +294 -294
- package/skills/brainstorming/SKILL.md +164 -164
- package/skills/brainstorming/scripts/frame-template.html +214 -214
- package/skills/brainstorming/scripts/helper.js +88 -88
- package/skills/brainstorming/scripts/server.cjs +354 -354
- package/skills/brainstorming/scripts/start-server.sh +148 -148
- package/skills/brainstorming/scripts/stop-server.sh +56 -56
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -49
- package/skills/brainstorming/visual-companion.md +287 -287
- package/skills/browser-testing-with-devtools/SKILL.md +302 -302
- package/skills/ci-cd-and-automation/SKILL.md +390 -390
- package/skills/code-review-and-quality/SKILL.md +347 -347
- package/skills/code-simplification/SKILL.md +331 -331
- package/skills/context-engineering/SKILL.md +289 -289
- package/skills/deprecation-and-migration/SKILL.md +206 -206
- package/skills/dispatching-parallel-agents/SKILL.md +182 -182
- package/skills/documentation-and-adrs/SKILL.md +278 -278
- package/skills/executing-plans/SKILL.md +70 -70
- package/skills/finishing-a-development-branch/SKILL.md +200 -200
- package/skills/frontend-ui-engineering/SKILL.md +322 -322
- package/skills/git-workflow-and-versioning/SKILL.md +300 -300
- package/skills/incremental-implementation/SKILL.md +241 -241
- package/skills/performance-optimization/SKILL.md +350 -350
- package/skills/receiving-code-review/SKILL.md +213 -213
- package/skills/requesting-code-review/SKILL.md +105 -105
- package/skills/requesting-code-review/code-reviewer.md +146 -146
- package/skills/security-and-hardening/SKILL.md +349 -349
- package/skills/shipping-and-launch/SKILL.md +309 -309
- package/skills/source-driven-development/SKILL.md +194 -194
- package/skills/spec-driven-development/SKILL.md +200 -200
- package/skills/subagent-driven-development/SKILL.md +277 -277
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -26
- package/skills/subagent-driven-development/implementer-prompt.md +113 -113
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -61
- package/skills/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/systematic-debugging/SKILL.md +596 -596
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/systematic-debugging/find-polluter.sh +63 -63
- package/skills/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/systematic-debugging/test-academic.md +14 -14
- package/skills/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/test-driven-development/SKILL.md +379 -379
- package/skills/using-agent-skills/SKILL.md +174 -174
- package/skills/using-git-worktrees/SKILL.md +218 -218
- package/skills/using-superpowers/SKILL.md +117 -117
- package/skills/using-superpowers/references/codex-tools.md +100 -100
- package/skills/using-superpowers/references/copilot-tools.md +52 -52
- package/skills/using-superpowers/references/gemini-tools.md +33 -33
- package/skills/verification-before-completion/SKILL.md +139 -139
- package/skills/writing-plans/SKILL.md +152 -152
- package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -49
- package/skills/writing-skills/SKILL.md +655 -655
- package/skills/writing-skills/anthropic-best-practices.md +1150 -1150
- package/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
- package/skills/writing-skills/graphviz-conventions.dot +171 -171
- package/skills/writing-skills/persuasion-principles.md +187 -187
- package/skills/writing-skills/render-graphs.js +168 -168
- package/skills/writing-skills/testing-skills-with-subagents.md +384 -384
- package/src/AGENTS.md +41 -41
- package/src/agents/AGENTS.md +74 -74
- package/src/agents/agent-builder.ts +50 -50
- package/src/agents/bob/AGENTS.md +29 -29
- package/src/agents/bob/default.ts +128 -128
- package/src/agents/bob/gemini.ts +237 -237
- package/src/agents/bob/gpt-pro.ts +430 -430
- package/src/agents/bob/index.ts +19 -19
- package/src/agents/bob.ts +528 -528
- package/src/agents/builtin-agents/agent-overrides.ts +75 -75
- package/src/agents/builtin-agents/available-skills.ts +35 -35
- package/src/agents/builtin-agents/bob-agent.ts +96 -96
- package/src/agents/builtin-agents/coder-agent.ts +98 -98
- package/src/agents/builtin-agents/environment-context.ts +16 -16
- package/src/agents/builtin-agents/general-agents.ts +122 -122
- package/src/agents/builtin-agents/guard-agent.ts +66 -66
- package/src/agents/builtin-agents/model-resolution.ts +31 -31
- package/src/agents/builtin-agents/resolve-file-uri.ts +42 -42
- package/src/agents/builtin-agents.ts +194 -194
- package/src/agents/coder/AGENTS.md +34 -34
- package/src/agents/coder/agent.ts +162 -162
- package/src/agents/coder/gpt-codex.ts +404 -404
- package/src/agents/coder/gpt-pro.ts +319 -319
- package/src/agents/coder/gpt.ts +253 -253
- package/src/agents/coder/index.ts +8 -8
- package/src/agents/critic/agent.ts +105 -105
- package/src/agents/custom-agent-summaries.ts +61 -61
- package/src/agents/dynamic-agent-category-skills-guide.ts +138 -138
- package/src/agents/dynamic-agent-core-sections.ts +237 -237
- package/src/agents/dynamic-agent-policy-sections.ts +182 -182
- package/src/agents/dynamic-agent-prompt-builder.ts +31 -31
- package/src/agents/dynamic-agent-prompt-types.ts +24 -24
- package/src/agents/dynamic-agent-tool-categorization.ts +45 -45
- package/src/agents/env-context.ts +16 -16
- package/src/agents/gpt-apply-patch-guard.ts +7 -7
- package/src/agents/guard/agent.ts +146 -146
- package/src/agents/guard/default-prompt-sections.ts +305 -305
- package/src/agents/guard/default.ts +22 -22
- package/src/agents/guard/gemini-prompt-sections.ts +293 -293
- package/src/agents/guard/gemini.ts +22 -22
- package/src/agents/guard/gpt-prompt-sections.ts +296 -296
- package/src/agents/guard/gpt.ts +22 -22
- package/src/agents/guard/index.ts +2 -2
- package/src/agents/guard/prompt-section-builder.ts +104 -104
- package/src/agents/guard/shared-prompt.ts +172 -172
- package/src/agents/index.ts +5 -5
- package/src/agents/platform-adapter.ts +236 -236
- package/src/agents/platform-manager.ts +57 -57
- package/src/agents/prompt-library/identity.ts +14 -14
- package/src/agents/prompt-library/index.ts +7 -7
- package/src/agents/prompt-library/intent-gate.ts +149 -149
- package/src/agents/prompt-library/orchestration.ts +60 -60
- package/src/agents/prompt-library/platform.ts +36 -36
- package/src/agents/prompt-library/specialized.ts +39 -39
- package/src/agents/prompt-library/strategy.ts +80 -80
- package/src/agents/prompt-library/todo-discipline.ts +22 -22
- package/src/agents/quality-guardian.ts +76 -76
- package/src/agents/researcher.ts +73 -73
- package/src/agents/strategist/AGENTS.md +37 -37
- package/src/agents/strategist/behavioral-summary.ts +79 -79
- package/src/agents/strategist/gemini.ts +333 -333
- package/src/agents/strategist/gpt.ts +460 -460
- package/src/agents/strategist/high-accuracy-mode.ts +78 -78
- package/src/agents/strategist/identity-constraints.ts +336 -336
- package/src/agents/strategist/index.ts +6 -6
- package/src/agents/strategist/interview-mode.ts +335 -335
- package/src/agents/strategist/plan-generation.ts +213 -213
- package/src/agents/strategist/plan-template.ts +325 -325
- package/src/agents/strategist/system-prompt.ts +68 -68
- package/src/agents/sub/agent.ts +141 -141
- package/src/agents/sub/default.ts +52 -52
- package/src/agents/sub/gemini.ts +194 -194
- package/src/agents/sub/gpt-codex.ts +156 -156
- package/src/agents/sub/gpt-pro.ts +161 -161
- package/src/agents/sub/gpt.ts +157 -157
- package/src/agents/sub/index.ts +13 -13
- package/src/agents/types.ts +144 -144
- package/src/agents/ui.ts +58 -58
- package/src/config/data/model-capabilities.json +40690 -40690
- package/src/config/defaults.ts +89 -146
- package/src/config/hiai-opencode.schema.json +12 -12
- package/src/config/index.ts +67 -67
- package/src/config/loader.test.ts +65 -65
- package/src/config/loader.ts +186 -183
- package/src/config/models.ts +32 -32
- package/src/config/platform-schema.ts +193 -192
- package/src/config/schema/agent-definitions.ts +5 -5
- package/src/config/schema/agent-names.ts +66 -66
- package/src/config/schema/agent-overrides.ts +95 -95
- package/src/config/schema/babysitting.ts +7 -7
- package/src/config/schema/background-task.ts +29 -29
- package/src/config/schema/bob-agent.ts +11 -11
- package/src/config/schema/bob.ts +17 -17
- package/src/config/schema/browser-automation.ts +24 -24
- package/src/config/schema/categories.ts +45 -45
- package/src/config/schema/claude-code.ts +13 -13
- package/src/config/schema/commands.ts +14 -14
- package/src/config/schema/comment-checker.ts +8 -8
- package/src/config/schema/dynamic-context-pruning.ts +53 -53
- package/src/config/schema/experimental.ts +27 -27
- package/src/config/schema/fallback-models.ts +31 -31
- package/src/config/schema/fast-apply.ts +14 -14
- package/src/config/schema/git-env-prefix.ts +28 -28
- package/src/config/schema/git-master.ts +14 -14
- package/src/config/schema/hooks.ts +61 -61
- package/src/config/schema/index.ts +52 -52
- package/src/config/schema/internal/permission.ts +20 -20
- package/src/config/schema/model-capabilities.ts +10 -10
- package/src/config/schema/notification.ts +8 -8
- package/src/config/schema/oh-my-opencode-config.ts +90 -90
- package/src/config/schema/openclaw.ts +50 -50
- package/src/config/schema/ralph-loop.ts +11 -11
- package/src/config/schema/runtime-fallback.ts +18 -18
- package/src/config/schema/skills.ts +39 -39
- package/src/config/schema/start-work.ts +7 -7
- package/src/config/schema/tmux.ts +28 -28
- package/src/config/schema/websearch.ts +15 -15
- package/src/config/types.ts +174 -174
- package/src/create-hooks.ts +93 -93
- package/src/create-managers.ts +116 -116
- package/src/create-runtime-tmux-config.ts +18 -18
- package/src/create-tools.ts +53 -53
- package/src/features/background-agent/AGENTS.md +56 -56
- package/src/features/background-agent/abort-with-timeout.ts +35 -35
- package/src/features/background-agent/background-task-notification-template.ts +74 -74
- package/src/features/background-agent/compaction-aware-message-resolver.ts +164 -164
- package/src/features/background-agent/concurrency.ts +137 -137
- package/src/features/background-agent/constants.ts +58 -58
- package/src/features/background-agent/duration-formatter.ts +14 -14
- package/src/features/background-agent/error-classifier.ts +83 -83
- package/src/features/background-agent/fallback-retry-handler.ts +134 -134
- package/src/features/background-agent/index.ts +2 -2
- package/src/features/background-agent/loop-detector.ts +102 -102
- package/src/features/background-agent/manager.ts +2220 -2220
- package/src/features/background-agent/opencode-client.ts +3 -3
- package/src/features/background-agent/process-cleanup.ts +98 -98
- package/src/features/background-agent/remove-task-toast-tracking.ts +8 -8
- package/src/features/background-agent/session-existence.ts +57 -57
- package/src/features/background-agent/session-idle-event-handler.ts +93 -93
- package/src/features/background-agent/session-status-classifier.ts +20 -20
- package/src/features/background-agent/spawner/parent-directory-resolver.ts +24 -24
- package/src/features/background-agent/spawner.ts +327 -327
- package/src/features/background-agent/state.ts +199 -199
- package/src/features/background-agent/subagent-spawn-limits.ts +97 -97
- package/src/features/background-agent/task-history.ts +79 -79
- package/src/features/background-agent/task-poller.ts +225 -225
- package/src/features/background-agent/types.ts +100 -100
- package/src/features/boulder-state/constants.ts +13 -13
- package/src/features/boulder-state/index.ts +4 -4
- package/src/features/boulder-state/storage.ts +336 -336
- package/src/features/boulder-state/top-level-task.ts +78 -78
- package/src/features/boulder-state/types.ts +61 -61
- package/src/features/builtin-commands/commands.ts +143 -143
- package/src/features/builtin-commands/index.ts +2 -2
- package/src/features/builtin-commands/templates/handoff.ts +177 -177
- package/src/features/builtin-commands/templates/init-deep.ts +305 -305
- package/src/features/builtin-commands/templates/ralph-loop.ts +66 -66
- package/src/features/builtin-commands/templates/refactor.ts +619 -619
- package/src/features/builtin-commands/templates/remove-ai-slops.ts +96 -96
- package/src/features/builtin-commands/templates/start-work.ts +128 -128
- package/src/features/builtin-commands/templates/stop-continuation.ts +13 -13
- package/src/features/builtin-commands/types.ts +9 -9
- package/src/features/builtin-skills/index.ts +2 -2
- package/src/features/builtin-skills/materialize.ts +338 -338
- package/src/features/builtin-skills/skills/ai-slop-remover.ts +145 -145
- package/src/features/builtin-skills/skills/dev-browser.ts +221 -221
- package/src/features/builtin-skills/skills/frontend-ui-ux.ts +79 -79
- package/src/features/builtin-skills/skills/git-master-sections/commit-workflow.ts +509 -509
- package/src/features/builtin-skills/skills/git-master-sections/history-search-workflow.ts +229 -229
- package/src/features/builtin-skills/skills/git-master-sections/overview.ts +64 -64
- package/src/features/builtin-skills/skills/git-master-sections/quick-reference.ts +86 -86
- package/src/features/builtin-skills/skills/git-master-sections/rebase-workflow.ts +181 -181
- package/src/features/builtin-skills/skills/git-master-skill-metadata.ts +4 -4
- package/src/features/builtin-skills/skills/git-master.ts +28 -28
- package/src/features/builtin-skills/skills/index.ts +7 -7
- package/src/features/builtin-skills/skills/playwright-cli.ts +268 -268
- package/src/features/builtin-skills/skills/playwright.ts +466 -466
- package/src/features/builtin-skills/skills/review-work.ts +536 -536
- package/src/features/builtin-skills/skills.ts +39 -39
- package/src/features/builtin-skills/types.ts +16 -16
- package/src/features/claude-code-agent-loader/agent-definitions-loader.ts +87 -87
- package/src/features/claude-code-agent-loader/claude-model-mapper.ts +53 -53
- package/src/features/claude-code-agent-loader/index.ts +5 -5
- package/src/features/claude-code-agent-loader/json-agent-loader.ts +53 -53
- package/src/features/claude-code-agent-loader/loader.ts +86 -86
- package/src/features/claude-code-agent-loader/opencode-config-agents-reader.ts +125 -125
- package/src/features/claude-code-agent-loader/types.ts +31 -31
- package/src/features/claude-code-command-loader/index.ts +2 -2
- package/src/features/claude-code-command-loader/loader.ts +169 -169
- package/src/features/claude-code-command-loader/types.ts +46 -46
- package/src/features/claude-code-mcp-loader/configure-allowed-env-vars.ts +48 -48
- package/src/features/claude-code-mcp-loader/env-expander.ts +51 -51
- package/src/features/claude-code-mcp-loader/index.ts +12 -12
- package/src/features/claude-code-mcp-loader/loader.ts +156 -156
- package/src/features/claude-code-mcp-loader/scope-filter.ts +17 -17
- package/src/features/claude-code-mcp-loader/transformer.ts +57 -57
- package/src/features/claude-code-mcp-loader/types.ts +51 -51
- package/src/features/claude-code-plugin-loader/agent-loader.ts +59 -59
- package/src/features/claude-code-plugin-loader/command-loader.ts +53 -53
- package/src/features/claude-code-plugin-loader/discovery.ts +251 -251
- package/src/features/claude-code-plugin-loader/hook-loader.ts +26 -26
- package/src/features/claude-code-plugin-loader/index.ts +10 -10
- package/src/features/claude-code-plugin-loader/loader.ts +134 -134
- package/src/features/claude-code-plugin-loader/mcp-server-loader.ts +59 -59
- package/src/features/claude-code-plugin-loader/plugin-path-resolver.ts +23 -23
- package/src/features/claude-code-plugin-loader/scope-filter.ts +29 -29
- package/src/features/claude-code-plugin-loader/skill-loader.ts +62 -62
- package/src/features/claude-code-plugin-loader/types.ts +255 -255
- package/src/features/claude-code-session-state/index.ts +1 -1
- package/src/features/claude-code-session-state/state.ts +154 -154
- package/src/features/claude-tasks/session-storage.ts +52 -52
- package/src/features/claude-tasks/storage.ts +169 -169
- package/src/features/claude-tasks/types.ts +20 -20
- package/src/features/context-injector/collector.ts +91 -91
- package/src/features/context-injector/index.ts +14 -14
- package/src/features/context-injector/injector.ts +167 -167
- package/src/features/context-injector/types.ts +91 -91
- package/src/features/hook-message-injector/constants.ts +1 -1
- package/src/features/hook-message-injector/index.ts +11 -11
- package/src/features/hook-message-injector/injector.ts +437 -437
- package/src/features/hook-message-injector/types.ts +49 -49
- package/src/features/mcp-oauth/AGENTS.md +54 -54
- package/src/features/mcp-oauth/callback-server.ts +106 -106
- package/src/features/mcp-oauth/dcr.ts +98 -98
- package/src/features/mcp-oauth/discovery.ts +134 -134
- package/src/features/mcp-oauth/oauth-authorization-flow.ts +150 -150
- package/src/features/mcp-oauth/provider.ts +215 -215
- package/src/features/mcp-oauth/refresh-mutex.ts +58 -58
- package/src/features/mcp-oauth/resource-indicator.ts +16 -16
- package/src/features/mcp-oauth/schema.ts +8 -8
- package/src/features/mcp-oauth/step-up.ts +79 -79
- package/src/features/mcp-oauth/storage.ts +155 -155
- package/src/features/opencode-skill-loader/AGENTS.md +59 -59
- package/src/features/opencode-skill-loader/allowed-tools-parser.ts +9 -9
- package/src/features/opencode-skill-loader/async-loader.ts +213 -213
- package/src/features/opencode-skill-loader/blocking.ts +62 -62
- package/src/features/opencode-skill-loader/config-source-discovery.ts +114 -114
- package/src/features/opencode-skill-loader/discover-worker.ts +56 -56
- package/src/features/opencode-skill-loader/git-master-template-injection.ts +150 -150
- package/src/features/opencode-skill-loader/index.ts +17 -17
- package/src/features/opencode-skill-loader/loaded-skill-from-path.ts +73 -73
- package/src/features/opencode-skill-loader/loaded-skill-template-extractor.ts +16 -16
- package/src/features/opencode-skill-loader/loader.ts +172 -172
- package/src/features/opencode-skill-loader/merger/builtin-skill-converter.ts +26 -26
- package/src/features/opencode-skill-loader/merger/config-skill-entry-loader.ts +117 -117
- package/src/features/opencode-skill-loader/merger/scope-priority.ts +10 -10
- package/src/features/opencode-skill-loader/merger/skill-definition-merger.ts +31 -31
- package/src/features/opencode-skill-loader/merger/skills-config-normalizer.ts +19 -19
- package/src/features/opencode-skill-loader/merger.ts +96 -96
- package/src/features/opencode-skill-loader/skill-content.ts +11 -11
- package/src/features/opencode-skill-loader/skill-deduplication.ts +13 -13
- package/src/features/opencode-skill-loader/skill-definition-record.ts +11 -11
- package/src/features/opencode-skill-loader/skill-directory-loader.ts +112 -112
- package/src/features/opencode-skill-loader/skill-discovery.ts +76 -76
- package/src/features/opencode-skill-loader/skill-mcp-config.ts +45 -45
- package/src/features/opencode-skill-loader/skill-resolution-options.ts +9 -9
- package/src/features/opencode-skill-loader/skill-template-resolver.ts +97 -97
- package/src/features/opencode-skill-loader/types.ts +38 -38
- package/src/features/run-continuation-state/constants.ts +1 -1
- package/src/features/run-continuation-state/index.ts +3 -3
- package/src/features/run-continuation-state/storage.ts +80 -80
- package/src/features/run-continuation-state/types.ts +15 -15
- package/src/features/skill-mcp-manager/AGENTS.md +111 -111
- package/src/features/skill-mcp-manager/cleanup.ts +153 -153
- package/src/features/skill-mcp-manager/connection-type.ts +26 -26
- package/src/features/skill-mcp-manager/connection.ts +146 -146
- package/src/features/skill-mcp-manager/env-cleaner.ts +59 -59
- package/src/features/skill-mcp-manager/error-redaction.ts +47 -47
- package/src/features/skill-mcp-manager/http-client.ts +126 -126
- package/src/features/skill-mcp-manager/index.ts +2 -2
- package/src/features/skill-mcp-manager/manager.ts +178 -178
- package/src/features/skill-mcp-manager/oauth-handler.ts +160 -160
- package/src/features/skill-mcp-manager/stdio-client.ts +112 -112
- package/src/features/skill-mcp-manager/types.ts +96 -96
- package/src/features/task-toast-manager/index.ts +2 -2
- package/src/features/task-toast-manager/manager.ts +251 -251
- package/src/features/task-toast-manager/types.ts +29 -29
- package/src/features/tmux-subagent/action-executor-core.ts +82 -82
- package/src/features/tmux-subagent/action-executor.ts +137 -137
- package/src/features/tmux-subagent/cleanup.ts +42 -42
- package/src/features/tmux-subagent/decision-engine.ts +22 -22
- package/src/features/tmux-subagent/event-handlers.ts +6 -6
- package/src/features/tmux-subagent/grid-planning.ts +137 -137
- package/src/features/tmux-subagent/index.ts +16 -16
- package/src/features/tmux-subagent/manager.ts +969 -969
- package/src/features/tmux-subagent/oldest-agent-pane.ts +37 -37
- package/src/features/tmux-subagent/pane-split-availability.ts +77 -77
- package/src/features/tmux-subagent/pane-state-parser.ts +135 -135
- package/src/features/tmux-subagent/pane-state-querier.ts +76 -76
- package/src/features/tmux-subagent/polling-constants.ts +6 -6
- package/src/features/tmux-subagent/polling-manager.ts +167 -167
- package/src/features/tmux-subagent/polling.ts +183 -183
- package/src/features/tmux-subagent/session-created-event.ts +44 -44
- package/src/features/tmux-subagent/session-created-handler.ts +175 -175
- package/src/features/tmux-subagent/session-deleted-handler.ts +50 -50
- package/src/features/tmux-subagent/session-message-count.ts +3 -3
- package/src/features/tmux-subagent/session-ready-waiter.ts +44 -44
- package/src/features/tmux-subagent/session-status-parser.ts +17 -17
- package/src/features/tmux-subagent/spawn-action-decider.ts +147 -147
- package/src/features/tmux-subagent/spawn-target-finder.ts +146 -146
- package/src/features/tmux-subagent/tmux-grid-constants.ts +57 -57
- package/src/features/tmux-subagent/tracked-session-state.ts +29 -29
- package/src/features/tmux-subagent/types.ts +54 -54
- package/src/features/tool-metadata-store/index.ts +7 -7
- package/src/features/tool-metadata-store/store.ts +84 -84
- package/src/hooks/agent-usage-reminder/constants.ts +52 -52
- package/src/hooks/agent-usage-reminder/hook.ts +134 -134
- package/src/hooks/agent-usage-reminder/index.ts +1 -1
- package/src/hooks/agent-usage-reminder/storage.ts +42 -42
- package/src/hooks/agent-usage-reminder/types.ts +6 -6
- package/src/hooks/anthropic-context-window-limit-recovery/AGENTS.md +49 -49
- package/src/hooks/anthropic-context-window-limit-recovery/aggressive-truncation-strategy.ts +87 -87
- package/src/hooks/anthropic-context-window-limit-recovery/client.ts +21 -21
- package/src/hooks/anthropic-context-window-limit-recovery/deduplication-recovery.ts +77 -77
- package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.ts +199 -199
- package/src/hooks/anthropic-context-window-limit-recovery/empty-content-recovery.ts +149 -149
- package/src/hooks/anthropic-context-window-limit-recovery/executor.ts +83 -83
- package/src/hooks/anthropic-context-window-limit-recovery/index.ts +8 -8
- package/src/hooks/anthropic-context-window-limit-recovery/message-builder.ts +190 -190
- package/src/hooks/anthropic-context-window-limit-recovery/message-storage-directory.ts +40 -40
- package/src/hooks/anthropic-context-window-limit-recovery/parser.ts +209 -209
- package/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +189 -189
- package/src/hooks/anthropic-context-window-limit-recovery/pruning-tool-output-truncation.ts +142 -142
- package/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -44
- package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.test-support.ts +119 -119
- package/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts +193 -193
- package/src/hooks/anthropic-context-window-limit-recovery/recovery-strategy.ts +2 -2
- package/src/hooks/anthropic-context-window-limit-recovery/session-timeout-map.ts +20 -20
- package/src/hooks/anthropic-context-window-limit-recovery/state.ts +78 -78
- package/src/hooks/anthropic-context-window-limit-recovery/storage-paths.ts +6 -6
- package/src/hooks/anthropic-context-window-limit-recovery/storage.ts +18 -18
- package/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts +218 -218
- package/src/hooks/anthropic-context-window-limit-recovery/target-token-truncation.ts +196 -196
- package/src/hooks/anthropic-context-window-limit-recovery/tool-part-types.ts +38 -38
- package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage-sdk.ts +123 -123
- package/src/hooks/anthropic-context-window-limit-recovery/tool-result-storage.ts +119 -119
- package/src/hooks/anthropic-context-window-limit-recovery/types.ts +44 -44
- package/src/hooks/anthropic-effort/hook.ts +93 -93
- package/src/hooks/anthropic-effort/index.ts +1 -1
- package/src/hooks/auto-slash-command/constants.ts +12 -12
- package/src/hooks/auto-slash-command/detector.ts +88 -88
- package/src/hooks/auto-slash-command/executor.ts +165 -165
- package/src/hooks/auto-slash-command/hook.ts +238 -238
- package/src/hooks/auto-slash-command/index.ts +7 -7
- package/src/hooks/auto-slash-command/processed-command-store.ts +74 -74
- package/src/hooks/auto-slash-command/types.ts +42 -42
- package/src/hooks/background-notification/hook.ts +54 -54
- package/src/hooks/background-notification/index.ts +2 -2
- package/src/hooks/background-notification/types.ts +5 -5
- package/src/hooks/bash-file-read-guard.ts +44 -44
- package/src/hooks/category-skill-reminder/formatter.ts +37 -37
- package/src/hooks/category-skill-reminder/hook.ts +142 -142
- package/src/hooks/category-skill-reminder/index.ts +1 -1
- package/src/hooks/claude-code-hooks/AGENTS.md +41 -41
- package/src/hooks/claude-code-hooks/claude-code-hooks-hook.ts +28 -28
- package/src/hooks/claude-code-hooks/config-loader.ts +151 -151
- package/src/hooks/claude-code-hooks/config.ts +147 -147
- package/src/hooks/claude-code-hooks/dispatch-hook.ts +27 -27
- package/src/hooks/claude-code-hooks/execute-http-hook.ts +116 -116
- package/src/hooks/claude-code-hooks/handlers/chat-message-handler.ts +140 -140
- package/src/hooks/claude-code-hooks/handlers/pre-compact-handler.ts +41 -41
- package/src/hooks/claude-code-hooks/handlers/session-event-handler.ts +137 -137
- package/src/hooks/claude-code-hooks/handlers/tool-execute-after-handler.ts +160 -160
- package/src/hooks/claude-code-hooks/handlers/tool-execute-before-handler.ts +93 -93
- package/src/hooks/claude-code-hooks/index.ts +1 -1
- package/src/hooks/claude-code-hooks/plugin-config.ts +12 -12
- package/src/hooks/claude-code-hooks/post-tool-use.ts +195 -195
- package/src/hooks/claude-code-hooks/pre-compact.ts +105 -105
- package/src/hooks/claude-code-hooks/pre-tool-use.ts +168 -168
- package/src/hooks/claude-code-hooks/session-hook-state.ts +17 -17
- package/src/hooks/claude-code-hooks/stop.ts +118 -118
- package/src/hooks/claude-code-hooks/todo.ts +76 -76
- package/src/hooks/claude-code-hooks/tool-input-cache.ts +82 -82
- package/src/hooks/claude-code-hooks/transcript.ts +248 -248
- package/src/hooks/claude-code-hooks/types.ts +214 -214
- package/src/hooks/claude-code-hooks/user-prompt-submit.ts +121 -121
- package/src/hooks/comment-checker/cli-runner.ts +127 -127
- package/src/hooks/comment-checker/cli.ts +269 -269
- package/src/hooks/comment-checker/downloader.ts +170 -170
- package/src/hooks/comment-checker/hook.ts +192 -192
- package/src/hooks/comment-checker/index.ts +1 -1
- package/src/hooks/comment-checker/pending-calls.ts +45 -45
- package/src/hooks/comment-checker/types.ts +33 -33
- package/src/hooks/compaction-context-injector/compaction-context-prompt.ts +56 -56
- package/src/hooks/compaction-context-injector/constants.ts +5 -5
- package/src/hooks/compaction-context-injector/hook.ts +164 -164
- package/src/hooks/compaction-context-injector/index.ts +1 -1
- package/src/hooks/compaction-context-injector/recovery-prompt-config.ts +77 -77
- package/src/hooks/compaction-context-injector/recovery.ts +163 -163
- package/src/hooks/compaction-context-injector/session-id.ts +8 -8
- package/src/hooks/compaction-context-injector/session-prompt-config-resolver.ts +120 -120
- package/src/hooks/compaction-context-injector/tail-monitor.ts +52 -52
- package/src/hooks/compaction-context-injector/types.ts +25 -25
- package/src/hooks/compaction-context-injector/validated-model.ts +47 -47
- package/src/hooks/compaction-todo-preserver/hook.ts +127 -127
- package/src/hooks/compaction-todo-preserver/index.ts +2 -2
- package/src/hooks/context-window-monitor.ts +113 -113
- package/src/hooks/delegate-task-retry/guidance.ts +45 -45
- package/src/hooks/delegate-task-retry/hook.ts +22 -22
- package/src/hooks/delegate-task-retry/index.ts +4 -4
- package/src/hooks/delegate-task-retry/patterns.ts +77 -77
- package/src/hooks/directory-agents-injector/constants.ts +7 -7
- package/src/hooks/directory-agents-injector/finder.ts +38 -38
- package/src/hooks/directory-agents-injector/hook.ts +80 -80
- package/src/hooks/directory-agents-injector/index.ts +1 -1
- package/src/hooks/directory-agents-injector/injector.ts +59 -59
- package/src/hooks/directory-agents-injector/storage.ts +8 -8
- package/src/hooks/directory-readme-injector/constants.ts +7 -7
- package/src/hooks/directory-readme-injector/finder.ts +33 -33
- package/src/hooks/directory-readme-injector/hook.ts +80 -80
- package/src/hooks/directory-readme-injector/index.ts +1 -1
- package/src/hooks/directory-readme-injector/injector.ts +59 -59
- package/src/hooks/directory-readme-injector/storage.ts +8 -8
- package/src/hooks/edit-error-recovery/hook.ts +58 -58
- package/src/hooks/edit-error-recovery/index.ts +5 -5
- package/src/hooks/empty-task-response-detector.ts +27 -27
- package/src/hooks/fast-apply/hook.ts +11 -11
- package/src/hooks/fast-apply/index.ts +1 -1
- package/src/hooks/fast-apply/ollama-client.ts +53 -53
- package/src/hooks/fast-apply/tool-execute-before-handler.ts +86 -86
- package/src/hooks/guard/AGENTS.md +64 -64
- package/src/hooks/guard/background-launch-session-tracking.ts +97 -97
- package/src/hooks/guard/bob-path.ts +8 -8
- package/src/hooks/guard/boulder-continuation-injector.ts +109 -109
- package/src/hooks/guard/boulder-session-lineage.ts +44 -44
- package/src/hooks/guard/event-handler.ts +104 -104
- package/src/hooks/guard/final-wave-approval-gate.ts +47 -47
- package/src/hooks/guard/final-wave-plan-state.ts +60 -60
- package/src/hooks/guard/guard-hook.ts +27 -27
- package/src/hooks/guard/hook-name.ts +1 -1
- package/src/hooks/guard/idle-event.ts +341 -341
- package/src/hooks/guard/index.ts +3 -3
- package/src/hooks/guard/is-abort-error.ts +20 -20
- package/src/hooks/guard/recent-model-resolver.ts +89 -89
- package/src/hooks/guard/resolve-active-boulder-session.ts +29 -29
- package/src/hooks/guard/session-last-agent.ts +153 -153
- package/src/hooks/guard/subagent-session-id.ts +54 -54
- package/src/hooks/guard/system-reminder-templates.ts +249 -249
- package/src/hooks/guard/task-context.ts +45 -45
- package/src/hooks/guard/tool-execute-after.ts +209 -209
- package/src/hooks/guard/tool-execute-before.ts +102 -102
- package/src/hooks/guard/tsconfig.json +9 -9
- package/src/hooks/guard/types.ts +45 -45
- package/src/hooks/guard/verification-reminders.ts +197 -197
- package/src/hooks/guard/write-edit-tool-policy.ts +5 -5
- package/src/hooks/hashline-edit-diff-enhancer/hook.ts +106 -106
- package/src/hooks/hashline-read-enhancer/hook.ts +193 -193
- package/src/hooks/hashline-read-enhancer/index.ts +1 -1
- package/src/hooks/index.ts +58 -58
- package/src/hooks/interactive-bash-session/constants.ts +13 -13
- package/src/hooks/interactive-bash-session/hook.ts +125 -125
- package/src/hooks/interactive-bash-session/index.ts +3 -3
- package/src/hooks/interactive-bash-session/interactive-bash-session-tracker.ts +119 -119
- package/src/hooks/interactive-bash-session/parser.ts +118 -118
- package/src/hooks/interactive-bash-session/state-manager.ts +35 -35
- package/src/hooks/interactive-bash-session/storage.ts +59 -59
- package/src/hooks/interactive-bash-session/tmux-command-parser.ts +125 -125
- package/src/hooks/interactive-bash-session/types.ts +11 -11
- package/src/hooks/json-error-recovery/hook.ts +58 -58
- package/src/hooks/json-error-recovery/index.ts +6 -6
- package/src/hooks/keyword-detector/AGENTS.md +57 -57
- package/src/hooks/keyword-detector/analyze/default.ts +28 -28
- package/src/hooks/keyword-detector/analyze/index.ts +1 -1
- package/src/hooks/keyword-detector/constants.ts +45 -45
- package/src/hooks/keyword-detector/detector.ts +53 -53
- package/src/hooks/keyword-detector/hook.ts +143 -143
- package/src/hooks/keyword-detector/index.ts +5 -5
- package/src/hooks/keyword-detector/search/default.ts +20 -20
- package/src/hooks/keyword-detector/search/index.ts +1 -1
- package/src/hooks/keyword-detector/types.ts +4 -4
- package/src/hooks/keyword-detector/ultrawork/default.ts +302 -302
- package/src/hooks/keyword-detector/ultrawork/gemini.ts +290 -290
- package/src/hooks/keyword-detector/ultrawork/gpt.ts +173 -173
- package/src/hooks/keyword-detector/ultrawork/index.ts +56 -56
- package/src/hooks/keyword-detector/ultrawork/planner.ts +140 -140
- package/src/hooks/keyword-detector/ultrawork/source-detector.ts +65 -65
- package/src/hooks/legacy-plugin-toast/auto-migrate-runner.ts +2 -2
- package/src/hooks/legacy-plugin-toast/auto-migrate.ts +64 -64
- package/src/hooks/legacy-plugin-toast/hook.ts +68 -68
- package/src/hooks/legacy-plugin-toast/index.ts +1 -1
- package/src/hooks/legacy-plugin-toast/plugin-entry-migrator.ts +1 -1
- package/src/hooks/model-fallback/chat-message-fallback-handler.ts +74 -74
- package/src/hooks/model-fallback/hook.ts +201 -201
- package/src/hooks/model-fallback/next-fallback.ts +84 -84
- package/src/hooks/no-bob-gpt/hook.ts +56 -56
- package/src/hooks/no-bob-gpt/index.ts +1 -1
- package/src/hooks/no-coder-non-gpt/hook.ts +67 -67
- package/src/hooks/no-coder-non-gpt/index.ts +1 -1
- package/src/hooks/non-interactive-env/constants.ts +70 -70
- package/src/hooks/non-interactive-env/detector.ts +19 -19
- package/src/hooks/non-interactive-env/index.ts +5 -5
- package/src/hooks/non-interactive-env/non-interactive-env-hook.ts +73 -73
- package/src/hooks/non-interactive-env/types.ts +3 -3
- package/src/hooks/preemptive-compaction-degradation-monitor.ts +212 -212
- package/src/hooks/preemptive-compaction-no-text-tail.ts +70 -70
- package/src/hooks/preemptive-compaction.ts +218 -218
- package/src/hooks/question-label-truncator/hook.ts +62 -62
- package/src/hooks/question-label-truncator/index.ts +1 -1
- package/src/hooks/ralph-loop/AGENTS.md +62 -62
- package/src/hooks/ralph-loop/command-arguments.ts +30 -30
- package/src/hooks/ralph-loop/completion-handler.ts +65 -65
- package/src/hooks/ralph-loop/completion-promise-detector-test-input.ts +23 -23
- package/src/hooks/ralph-loop/completion-promise-detector.ts +165 -165
- package/src/hooks/ralph-loop/constants.ts +7 -7
- package/src/hooks/ralph-loop/continuation-prompt-builder.ts +77 -77
- package/src/hooks/ralph-loop/continuation-prompt-injector.ts +91 -91
- package/src/hooks/ralph-loop/index.ts +6 -6
- package/src/hooks/ralph-loop/iteration-continuation.ts +64 -64
- package/src/hooks/ralph-loop/logician-verification-detector.ts +88 -88
- package/src/hooks/ralph-loop/loop-session-recovery.ts +33 -33
- package/src/hooks/ralph-loop/loop-state-controller.ts +178 -178
- package/src/hooks/ralph-loop/message-storage-directory.ts +1 -1
- package/src/hooks/ralph-loop/pending-verification-handler.ts +152 -152
- package/src/hooks/ralph-loop/ralph-loop-event-handler.ts +231 -231
- package/src/hooks/ralph-loop/ralph-loop-hook.ts +90 -90
- package/src/hooks/ralph-loop/session-event-handler.ts +56 -56
- package/src/hooks/ralph-loop/session-reset-strategy.ts +69 -69
- package/src/hooks/ralph-loop/storage.ts +164 -164
- package/src/hooks/ralph-loop/types.ts +25 -25
- package/src/hooks/ralph-loop/verification-failure-handler.ts +103 -103
- package/src/hooks/ralph-loop/with-timeout.ts +20 -20
- package/src/hooks/read-image-resizer/hook.ts +209 -209
- package/src/hooks/read-image-resizer/image-dimensions.ts +191 -191
- package/src/hooks/read-image-resizer/image-resizer.ts +191 -191
- package/src/hooks/read-image-resizer/index.ts +1 -1
- package/src/hooks/read-image-resizer/png-fallback-resizer.ts +359 -359
- package/src/hooks/read-image-resizer/types.ts +16 -16
- package/src/hooks/rules-injector/AGENTS.md +53 -53
- package/src/hooks/rules-injector/cache.ts +27 -27
- package/src/hooks/rules-injector/constants.ts +31 -31
- package/src/hooks/rules-injector/finder.ts +3 -3
- package/src/hooks/rules-injector/hook.ts +94 -94
- package/src/hooks/rules-injector/index.ts +2 -2
- package/src/hooks/rules-injector/injector.ts +189 -189
- package/src/hooks/rules-injector/matcher.ts +63 -63
- package/src/hooks/rules-injector/output-path.ts +22 -22
- package/src/hooks/rules-injector/parser.ts +211 -211
- package/src/hooks/rules-injector/project-root-finder.ts +36 -36
- package/src/hooks/rules-injector/rule-distance.ts +53 -53
- package/src/hooks/rules-injector/rule-file-finder.ts +139 -139
- package/src/hooks/rules-injector/rule-file-scanner.ts +55 -55
- package/src/hooks/rules-injector/storage.ts +59 -59
- package/src/hooks/rules-injector/types.ts +57 -57
- package/src/hooks/runtime-fallback/AGENTS.md +102 -102
- package/src/hooks/runtime-fallback/agent-resolver.ts +50 -50
- package/src/hooks/runtime-fallback/auto-retry-signal.ts +32 -32
- package/src/hooks/runtime-fallback/auto-retry.ts +228 -228
- package/src/hooks/runtime-fallback/chat-message-handler.ts +62 -62
- package/src/hooks/runtime-fallback/constants.ts +47 -47
- package/src/hooks/runtime-fallback/error-classifier.ts +183 -183
- package/src/hooks/runtime-fallback/event-handler.ts +213 -213
- package/src/hooks/runtime-fallback/fallback-bootstrap-model.ts +63 -63
- package/src/hooks/runtime-fallback/fallback-models.ts +86 -86
- package/src/hooks/runtime-fallback/fallback-retry-dispatcher.ts +55 -55
- package/src/hooks/runtime-fallback/fallback-state.ts +74 -74
- package/src/hooks/runtime-fallback/hook.ts +87 -87
- package/src/hooks/runtime-fallback/index.ts +2 -2
- package/src/hooks/runtime-fallback/last-user-retry-parts.ts +20 -20
- package/src/hooks/runtime-fallback/message-update-handler.ts +168 -168
- package/src/hooks/runtime-fallback/retry-model-payload.ts +30 -30
- package/src/hooks/runtime-fallback/session-messages.ts +38 -38
- package/src/hooks/runtime-fallback/session-status-handler.ts +126 -126
- package/src/hooks/runtime-fallback/types.ts +77 -77
- package/src/hooks/runtime-fallback/visible-assistant-response.ts +80 -80
- package/src/hooks/session-notification-content.ts +145 -145
- package/src/hooks/session-notification-formatting.ts +25 -25
- package/src/hooks/session-notification-scheduler.ts +188 -188
- package/src/hooks/session-notification-sender.ts +117 -117
- package/src/hooks/session-notification-utils.ts +80 -80
- package/src/hooks/session-notification.ts +219 -219
- package/src/hooks/session-recovery/AGENTS.md +59 -59
- package/src/hooks/session-recovery/constants.ts +5 -5
- package/src/hooks/session-recovery/detect-error-type.ts +102 -102
- package/src/hooks/session-recovery/hook.ts +166 -166
- package/src/hooks/session-recovery/index.ts +7 -7
- package/src/hooks/session-recovery/recover-empty-content-message-sdk.ts +201 -201
- package/src/hooks/session-recovery/recover-thinking-block-order.ts +137 -137
- package/src/hooks/session-recovery/recover-thinking-disabled-violation.ts +75 -75
- package/src/hooks/session-recovery/recover-tool-result-missing.ts +108 -108
- package/src/hooks/session-recovery/recover-unavailable-tool.ts +108 -108
- package/src/hooks/session-recovery/resume.ts +49 -49
- package/src/hooks/session-recovery/storage/empty-messages.ts +47 -47
- package/src/hooks/session-recovery/storage/empty-text.ts +118 -118
- package/src/hooks/session-recovery/storage/message-dir.ts +1 -1
- package/src/hooks/session-recovery/storage/messages-reader.ts +83 -83
- package/src/hooks/session-recovery/storage/orphan-thinking-search.ts +43 -43
- package/src/hooks/session-recovery/storage/part-content.ts +28 -28
- package/src/hooks/session-recovery/storage/part-id.ts +5 -5
- package/src/hooks/session-recovery/storage/parts-reader.ts +56 -56
- package/src/hooks/session-recovery/storage/text-part-injector.ts +63 -63
- package/src/hooks/session-recovery/storage/thinking-block-search.ts +42 -42
- package/src/hooks/session-recovery/storage/thinking-prepend.ts +223 -223
- package/src/hooks/session-recovery/storage/thinking-strip.ts +67 -67
- package/src/hooks/session-recovery/storage.ts +34 -34
- package/src/hooks/session-recovery/types.ts +101 -101
- package/src/hooks/session-todo-status.ts +20 -20
- package/src/hooks/shared/compaction-model-resolver.ts +34 -34
- package/src/hooks/shared/shared/compaction-model-resolver.ts +34 -34
- package/src/hooks/start-work/context-info-builder.ts +319 -319
- package/src/hooks/start-work/index.ts +4 -4
- package/src/hooks/start-work/parse-user-request.ts +32 -32
- package/src/hooks/start-work/start-work-hook.ts +135 -135
- package/src/hooks/start-work/worktree-block.ts +11 -11
- package/src/hooks/start-work/worktree-detector.ts +77 -77
- package/src/hooks/stop-continuation-guard/hook.ts +122 -122
- package/src/hooks/stop-continuation-guard/index.ts +2 -2
- package/src/hooks/strategist-md-only/agent-matcher.ts +5 -5
- package/src/hooks/strategist-md-only/agent-resolution.ts +70 -70
- package/src/hooks/strategist-md-only/constants.ts +78 -78
- package/src/hooks/strategist-md-only/hook.ts +82 -82
- package/src/hooks/strategist-md-only/index.ts +2 -2
- package/src/hooks/strategist-md-only/path-policy.ts +41 -41
- package/src/hooks/sub-notepad/constants.ts +29 -29
- package/src/hooks/sub-notepad/hook.ts +44 -44
- package/src/hooks/sub-notepad/index.ts +3 -3
- package/src/hooks/task-reminder/hook.ts +59 -59
- package/src/hooks/task-reminder/index.ts +1 -1
- package/src/hooks/task-resume-info/hook.ts +39 -39
- package/src/hooks/task-resume-info/index.ts +1 -1
- package/src/hooks/tasks-todowrite-disabler/constants.ts +30 -30
- package/src/hooks/tasks-todowrite-disabler/hook.ts +34 -34
- package/src/hooks/tasks-todowrite-disabler/index.ts +2 -2
- package/src/hooks/think-mode/detector.ts +59 -59
- package/src/hooks/think-mode/hook.ts +76 -76
- package/src/hooks/think-mode/index.ts +5 -5
- package/src/hooks/think-mode/switcher.ts +100 -100
- package/src/hooks/think-mode/types.ts +16 -16
- package/src/hooks/thinking-block-validator/hook.ts +181 -181
- package/src/hooks/thinking-block-validator/index.ts +1 -1
- package/src/hooks/todo-continuation-enforcer/AGENTS.md +65 -65
- package/src/hooks/todo-continuation-enforcer/abort-detection.ts +17 -17
- package/src/hooks/todo-continuation-enforcer/compaction-guard.ts +39 -39
- package/src/hooks/todo-continuation-enforcer/constants.ts +25 -25
- package/src/hooks/todo-continuation-enforcer/continuation-injection.ts +222 -222
- package/src/hooks/todo-continuation-enforcer/countdown.ts +86 -86
- package/src/hooks/todo-continuation-enforcer/handler.ts +99 -99
- package/src/hooks/todo-continuation-enforcer/idle-event.ts +225 -225
- package/src/hooks/todo-continuation-enforcer/index.ts +59 -59
- package/src/hooks/todo-continuation-enforcer/message-directory.ts +1 -1
- package/src/hooks/todo-continuation-enforcer/non-idle-events.ts +107 -107
- package/src/hooks/todo-continuation-enforcer/pending-question-detection.ts +40 -40
- package/src/hooks/todo-continuation-enforcer/resolve-message-info.ts +48 -48
- package/src/hooks/todo-continuation-enforcer/session-state.ts +283 -283
- package/src/hooks/todo-continuation-enforcer/stagnation-detection.ts +36 -36
- package/src/hooks/todo-continuation-enforcer/todo.ts +11 -11
- package/src/hooks/todo-continuation-enforcer/token-limit-detection.ts +38 -38
- package/src/hooks/todo-continuation-enforcer/types.ts +74 -74
- package/src/hooks/todo-description-override/description.ts +28 -28
- package/src/hooks/todo-description-override/hook.ts +14 -14
- package/src/hooks/todo-description-override/index.ts +1 -1
- package/src/hooks/tool-output-truncator.ts +66 -66
- package/src/hooks/tool-pair-validator/hook.ts +184 -184
- package/src/hooks/tool-pair-validator/index.ts +1 -1
- package/src/hooks/unstable-agent-babysitter/index.ts +9 -9
- package/src/hooks/unstable-agent-babysitter/task-message-analyzer.ts +110 -110
- package/src/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.ts +238 -238
- package/src/hooks/webfetch-redirect-guard/constants.ts +11 -11
- package/src/hooks/webfetch-redirect-guard/hook.ts +123 -123
- package/src/hooks/webfetch-redirect-guard/index.ts +1 -1
- package/src/hooks/webfetch-redirect-guard/redirect-resolution.ts +89 -89
- package/src/hooks/write-existing-file-guard/hook.ts +108 -108
- package/src/hooks/write-existing-file-guard/index.ts +1 -1
- package/src/hooks/write-existing-file-guard/session-read-permissions.ts +36 -36
- package/src/hooks/write-existing-file-guard/tool-execute-before-handler.ts +176 -176
- package/src/index.ts +285 -284
- package/src/internals/plugins/pty/LICENSE +21 -21
- package/src/internals/plugins/pty/constants.ts +7 -7
- package/src/internals/plugins/pty/plugin.ts +28 -28
- package/src/internals/plugins/pty/pty/buffer.ts +75 -75
- package/src/internals/plugins/pty/pty/formatters.ts +22 -22
- package/src/internals/plugins/pty/pty/manager.ts +175 -175
- package/src/internals/plugins/pty/pty/notification-manager.ts +75 -75
- package/src/internals/plugins/pty/pty/output-manager.ts +29 -29
- package/src/internals/plugins/pty/pty/permissions.ts +115 -115
- package/src/internals/plugins/pty/pty/session-lifecycle.ts +161 -161
- package/src/internals/plugins/pty/pty/tools/kill.ts +41 -41
- package/src/internals/plugins/pty/pty/tools/kill.txt +25 -25
- package/src/internals/plugins/pty/pty/tools/list.ts +25 -25
- package/src/internals/plugins/pty/pty/tools/list.txt +22 -22
- package/src/internals/plugins/pty/pty/tools/read.ts +234 -234
- package/src/internals/plugins/pty/pty/tools/read.txt +39 -39
- package/src/internals/plugins/pty/pty/tools/spawn.ts +71 -71
- package/src/internals/plugins/pty/pty/tools/spawn.txt +47 -47
- package/src/internals/plugins/pty/pty/tools/write.ts +96 -96
- package/src/internals/plugins/pty/pty/tools/write.txt +28 -28
- package/src/internals/plugins/pty/pty/types.ts +67 -67
- package/src/internals/plugins/pty/pty/utils.ts +21 -21
- package/src/internals/plugins/pty/pty/wildcard.ts +62 -62
- package/src/internals/plugins/pty/shared/constants.ts +7 -7
- package/src/internals/plugins/pty/types.ts +7 -7
- package/src/internals/plugins/subtask2/LICENSE +128 -128
- package/src/internals/plugins/subtask2/commands/index.ts +7 -7
- package/src/internals/plugins/subtask2/commands/loader.ts +39 -39
- package/src/internals/plugins/subtask2/commands/manifest.ts +64 -64
- package/src/internals/plugins/subtask2/commands/resolver.ts +28 -28
- package/src/internals/plugins/subtask2/core/plugin.ts +52 -52
- package/src/internals/plugins/subtask2/core/state.ts +764 -764
- package/src/internals/plugins/subtask2/features/auto.ts +57 -57
- package/src/internals/plugins/subtask2/features/index.ts +9 -9
- package/src/internals/plugins/subtask2/features/inline-subtasks.ts +205 -205
- package/src/internals/plugins/subtask2/features/parallel.ts +148 -148
- package/src/internals/plugins/subtask2/features/results.ts +48 -48
- package/src/internals/plugins/subtask2/features/returns.ts +273 -273
- package/src/internals/plugins/subtask2/features/turns.ts +190 -190
- package/src/internals/plugins/subtask2/hooks/command-hooks.ts +283 -283
- package/src/internals/plugins/subtask2/hooks/message-hooks.ts +603 -603
- package/src/internals/plugins/subtask2/hooks/session-idle-hook.ts +358 -358
- package/src/internals/plugins/subtask2/hooks/tool-hooks.ts +309 -309
- package/src/internals/plugins/subtask2/loop.ts +122 -122
- package/src/internals/plugins/subtask2/parsing/auto.ts +33 -33
- package/src/internals/plugins/subtask2/parsing/commands.ts +154 -154
- package/src/internals/plugins/subtask2/parsing/frontmatter.ts +20 -20
- package/src/internals/plugins/subtask2/parsing/index.ts +10 -10
- package/src/internals/plugins/subtask2/parsing/overrides.ts +68 -68
- package/src/internals/plugins/subtask2/parsing/parallel.ts +88 -88
- package/src/internals/plugins/subtask2/parsing/turns.ts +78 -78
- package/src/internals/plugins/subtask2/types.ts +41 -41
- package/src/internals/plugins/subtask2/utils/config.ts +100 -100
- package/src/internals/plugins/subtask2/utils/index.ts +7 -7
- package/src/internals/plugins/subtask2/utils/logger.ts +67 -67
- package/src/internals/plugins/subtask2/utils/prompts.ts +117 -117
- package/src/internals/plugins/websearch-cited/LICENSE +214 -214
- package/src/internals/plugins/websearch-cited/codex_prompt.txt +79 -79
- package/src/internals/plugins/websearch-cited/google.ts +749 -749
- package/src/internals/plugins/websearch-cited/index.ts +301 -301
- package/src/internals/plugins/websearch-cited/openai.ts +407 -407
- package/src/internals/plugins/websearch-cited/openrouter.ts +190 -190
- package/src/internals/plugins/websearch-cited/types.ts +7 -7
- package/src/lsp/index.ts +15 -15
- package/src/mcp/context7.ts +9 -9
- package/src/mcp/grep-app.ts +6 -6
- package/src/mcp/index.ts +54 -87
- package/src/mcp/omo-mcp-index.ts +30 -35
- package/src/mcp/registry.ts +132 -0
- package/src/mcp/types.ts +19 -9
- package/src/mcp/websearch.ts +44 -44
- package/src/permissions/index.ts +25 -25
- package/src/plugin/AGENTS.md +54 -54
- package/src/plugin/available-categories.ts +24 -24
- package/src/plugin/chat-headers.ts +141 -141
- package/src/plugin/chat-message.ts +309 -309
- package/src/plugin/chat-params.ts +182 -182
- package/src/plugin/command-execute-before.ts +80 -80
- package/src/plugin/event.ts +639 -639
- package/src/plugin/hooks/create-continuation-hooks.ts +128 -128
- package/src/plugin/hooks/create-core-hooks.ts +47 -47
- package/src/plugin/hooks/create-session-hooks.ts +286 -286
- package/src/plugin/hooks/create-skill-hooks.ts +50 -50
- package/src/plugin/hooks/create-tool-guard-hooks.ts +159 -159
- package/src/plugin/hooks/create-transform-hooks.ts +85 -85
- package/src/plugin/messages-transform.ts +28 -28
- package/src/plugin/normalize-tool-arg-schemas.ts +75 -75
- package/src/plugin/recent-synthetic-idles.ts +20 -20
- package/src/plugin/session-agent-resolver.ts +37 -37
- package/src/plugin/session-status-normalizer.ts +22 -22
- package/src/plugin/skill-context.ts +132 -132
- package/src/plugin/system-transform.ts +6 -6
- package/src/plugin/tool-execute-after.ts +178 -178
- package/src/plugin/tool-execute-before.ts +222 -222
- package/src/plugin/tool-registry.ts +282 -282
- package/src/plugin/types.ts +26 -26
- package/src/plugin/ultrawork-db-model-override.ts +142 -142
- package/src/plugin/ultrawork-model-override.ts +196 -196
- package/src/plugin/ultrawork-variant-availability.ts +51 -51
- package/src/plugin/unstable-agent-babysitter.ts +41 -41
- package/src/plugin-config.ts +314 -314
- package/src/plugin-dispose.ts +51 -51
- package/src/plugin-handlers/AGENTS.md +92 -92
- package/src/plugin-handlers/agent-config-handler.ts +502 -502
- package/src/plugin-handlers/agent-key-remapper.ts +39 -39
- package/src/plugin-handlers/agent-override-protection.ts +38 -38
- package/src/plugin-handlers/agent-priority-order.ts +63 -63
- package/src/plugin-handlers/category-config-resolver.ts +9 -9
- package/src/plugin-handlers/command-config-handler.ts +105 -105
- package/src/plugin-handlers/config-handler.ts +61 -61
- package/src/plugin-handlers/index.ts +10 -10
- package/src/plugin-handlers/mcp-config-handler.ts +205 -205
- package/src/plugin-handlers/plan-model-inheritance.ts +27 -27
- package/src/plugin-handlers/plugin-components-loader.ts +70 -70
- package/src/plugin-handlers/provider-config-handler.ts +73 -73
- package/src/plugin-handlers/strategist-agent-config-builder.ts +128 -128
- package/src/plugin-handlers/tool-config-handler.ts +193 -193
- package/src/plugin-interface.ts +83 -83
- package/src/plugin-state.ts +18 -18
- package/src/shared/AGENTS.md +54 -54
- package/src/shared/agent-display-names.ts +182 -182
- package/src/shared/agent-tool-restrictions.ts +80 -80
- package/src/shared/agent-variant.ts +101 -101
- package/src/shared/agents-config-dir.ts +23 -23
- package/src/shared/archive-entry-validator.ts +83 -83
- package/src/shared/background-output-consumption.ts +69 -69
- package/src/shared/binary-downloader.ts +127 -127
- package/src/shared/claude-config-dir.ts +16 -16
- package/src/shared/closure-protocol.ts +53 -53
- package/src/shared/command-executor/embedded-commands.ts +26 -26
- package/src/shared/command-executor/execute-command.ts +28 -28
- package/src/shared/command-executor/execute-hook-command.ts +129 -129
- package/src/shared/command-executor/home-directory.ts +5 -5
- package/src/shared/command-executor/resolve-commands-in-text.ts +49 -49
- package/src/shared/command-executor/shell-path.ts +27 -27
- package/src/shared/command-executor.ts +5 -5
- package/src/shared/compaction-agent-config-checkpoint.ts +42 -42
- package/src/shared/compaction-marker.ts +61 -61
- package/src/shared/config-errors.ts +18 -18
- package/src/shared/connected-providers-cache.ts +215 -215
- package/src/shared/contains-path.ts +50 -50
- package/src/shared/context-limit-resolver.ts +42 -42
- package/src/shared/data-path.ts +64 -64
- package/src/shared/deep-merge.ts +53 -53
- package/src/shared/disabled-tools.ts +19 -19
- package/src/shared/dynamic-truncator.ts +222 -222
- package/src/shared/external-plugin-detector.ts +139 -139
- package/src/shared/fallback-chain-from-models.ts +124 -124
- package/src/shared/fallback-model-availability.ts +102 -102
- package/src/shared/file-reference-resolver.ts +99 -99
- package/src/shared/file-utils.ts +34 -34
- package/src/shared/first-message-variant.ts +28 -28
- package/src/shared/frontmatter.ts +31 -31
- package/src/shared/git-worktree/collect-git-diff-stats.ts +56 -56
- package/src/shared/git-worktree/format-file-changes.ts +46 -46
- package/src/shared/git-worktree/index.ts +7 -7
- package/src/shared/git-worktree/parse-diff-numstat.ts +27 -27
- package/src/shared/git-worktree/parse-status-porcelain-line.ts +27 -27
- package/src/shared/git-worktree/parse-status-porcelain.ts +15 -15
- package/src/shared/git-worktree/types.ts +8 -8
- package/src/shared/hook-disabled.ts +22 -22
- package/src/shared/index.ts +80 -80
- package/src/shared/internal-initiator-marker.ts +18 -18
- package/src/shared/is-abort-error.ts +20 -20
- package/src/shared/json-file-cache-store.ts +98 -98
- package/src/shared/jsonc-parser.ts +98 -98
- package/src/shared/known-variants.ts +16 -16
- package/src/shared/legacy-plugin-warning.ts +68 -68
- package/src/shared/load-opencode-plugins.ts +60 -60
- package/src/shared/log-legacy-plugin-startup-warning.ts +46 -46
- package/src/shared/logger.ts +48 -48
- package/src/shared/merge-categories.ts +18 -18
- package/src/shared/migrate-legacy-config-file.ts +66 -66
- package/src/shared/migrate-legacy-plugin-entry.ts +75 -75
- package/src/shared/migration/agent-category.ts +60 -60
- package/src/shared/migration/agent-names.ts +100 -100
- package/src/shared/migration/config-migration.ts +210 -210
- package/src/shared/migration/hook-names.ts +40 -40
- package/src/shared/migration/migrations-sidecar.ts +92 -92
- package/src/shared/migration/model-versions.ts +50 -50
- package/src/shared/migration.ts +5 -5
- package/src/shared/model-availability.ts +294 -294
- package/src/shared/model-capabilities/bundled-snapshot.ts +15 -15
- package/src/shared/model-capabilities/get-model-capabilities.ts +140 -140
- package/src/shared/model-capabilities/index.ts +9 -9
- package/src/shared/model-capabilities/runtime-model-readers.ts +190 -190
- package/src/shared/model-capabilities/types.ts +80 -80
- package/src/shared/model-capabilities-cache.ts +213 -213
- package/src/shared/model-capability-aliases.ts +108 -108
- package/src/shared/model-capability-guardrails.ts +149 -149
- package/src/shared/model-capability-heuristics.ts +32 -32
- package/src/shared/model-error-classifier.ts +214 -214
- package/src/shared/model-format-normalizer.ts +20 -20
- package/src/shared/model-normalization.ts +8 -8
- package/src/shared/model-requirements.ts +26 -26
- package/src/shared/model-resolution-pipeline.ts +216 -216
- package/src/shared/model-resolution-types.ts +41 -41
- package/src/shared/model-resolver.ts +106 -106
- package/src/shared/model-sanitizer.ts +12 -12
- package/src/shared/model-settings-compatibility.ts +200 -200
- package/src/shared/model-suggestion-retry.ts +182 -182
- package/src/shared/normalize-sdk-response.ts +36 -36
- package/src/shared/opencode-command-dirs.ts +36 -36
- package/src/shared/opencode-config-dir-types.ts +15 -15
- package/src/shared/opencode-config-dir.ts +135 -135
- package/src/shared/opencode-http-api.ts +139 -139
- package/src/shared/opencode-message-dir.ts +29 -29
- package/src/shared/opencode-server-auth.ts +190 -190
- package/src/shared/opencode-storage-detection.ts +33 -33
- package/src/shared/opencode-storage-paths.ts +6 -6
- package/src/shared/opencode-version.ts +80 -80
- package/src/shared/parse-tools-config.ts +25 -25
- package/src/shared/pattern-matcher.ts +46 -46
- package/src/shared/permission-compat.ts +86 -86
- package/src/shared/plugin-command-discovery.ts +28 -28
- package/src/shared/plugin-entry-migrator.ts +21 -21
- package/src/shared/plugin-identity.ts +8 -8
- package/src/shared/port-utils.ts +48 -48
- package/src/shared/project-discovery-dirs.ts +101 -101
- package/src/shared/prompt-timeout-context.ts +49 -49
- package/src/shared/prompt-tools.ts +35 -35
- package/src/shared/provider-model-id-transform.ts +58 -58
- package/src/shared/question-denied-session-permission.ts +9 -9
- package/src/shared/record-type-guard.ts +3 -3
- package/src/shared/resolve-agent-definition-paths.ts +22 -22
- package/src/shared/retry-status-utils.ts +19 -19
- package/src/shared/runtime-plugin-config.ts +98 -98
- package/src/shared/safe-create-hook.ts +24 -24
- package/src/shared/session-category-registry.ts +27 -27
- package/src/shared/session-cursor.ts +108 -108
- package/src/shared/session-directory-resolver.ts +41 -41
- package/src/shared/session-injected-paths.ts +59 -59
- package/src/shared/session-model-state.ts +15 -15
- package/src/shared/session-prompt-params-helpers.ts +31 -31
- package/src/shared/session-prompt-params-state.ts +37 -37
- package/src/shared/session-tools-store.ts +18 -18
- package/src/shared/session-utils.ts +25 -25
- package/src/shared/shell-env.ts +175 -175
- package/src/shared/skill-path-resolver.ts +26 -26
- package/src/shared/snake-case.ts +44 -44
- package/src/shared/spawn-with-windows-hide.ts +84 -84
- package/src/shared/system-directive.ts +67 -67
- package/src/shared/task-system-enabled.ts +9 -9
- package/src/shared/tmux/constants.ts +12 -12
- package/src/shared/tmux/index.ts +3 -3
- package/src/shared/tmux/tmux-utils/environment.ts +13 -13
- package/src/shared/tmux/tmux-utils/layout.ts +96 -96
- package/src/shared/tmux/tmux-utils/pane-close.ts +48 -48
- package/src/shared/tmux/tmux-utils/pane-dimensions.ts +28 -28
- package/src/shared/tmux/tmux-utils/pane-replace.ts +73 -73
- package/src/shared/tmux/tmux-utils/pane-spawn.ts +94 -94
- package/src/shared/tmux/tmux-utils/server-health.ts +62 -62
- package/src/shared/tmux/tmux-utils/session-spawn.ts +145 -145
- package/src/shared/tmux/tmux-utils/window-spawn.ts +93 -93
- package/src/shared/tmux/tmux-utils.ts +15 -15
- package/src/shared/tmux/types.ts +4 -4
- package/src/shared/tool-name.ts +27 -27
- package/src/shared/truncate-description.ts +11 -11
- package/src/shared/vision-capable-models-cache.ts +17 -17
- package/src/shared/write-file-atomically.ts +31 -31
- package/src/shared/zip-entry-listing/powershell-zip-entry-listing.ts +99 -99
- package/src/shared/zip-entry-listing/python-zip-entry-listing.ts +55 -55
- package/src/shared/zip-entry-listing/read-zip-symlink-target.ts +23 -23
- package/src/shared/zip-entry-listing/tar-zip-entry-listing.ts +93 -93
- package/src/shared/zip-entry-listing/zipinfo-zip-entry-listing.ts +72 -72
- package/src/shared/zip-entry-listing.ts +13 -13
- package/src/shared/zip-extractor.ts +118 -118
- package/src/skills/index.ts +56 -56
- package/src/testing/module-mock-lifecycle.ts +143 -143
- package/src/tools/AGENTS.md +108 -108
- package/src/tools/ast-grep/cli-binary-path-resolution.ts +60 -60
- package/src/tools/ast-grep/cli.ts +177 -177
- package/src/tools/ast-grep/constants.ts +5 -5
- package/src/tools/ast-grep/downloader.ts +119 -119
- package/src/tools/ast-grep/environment-check.ts +89 -89
- package/src/tools/ast-grep/index.ts +5 -5
- package/src/tools/ast-grep/language-support.ts +63 -63
- package/src/tools/ast-grep/process-output-timeout.ts +28 -28
- package/src/tools/ast-grep/result-formatter.ts +102 -102
- package/src/tools/ast-grep/sg-cli-path.ts +102 -102
- package/src/tools/ast-grep/sg-compact-json-output.ts +54 -54
- package/src/tools/ast-grep/tools.ts +117 -117
- package/src/tools/ast-grep/types.ts +61 -61
- package/src/tools/background-task/AGENTS.md +53 -53
- package/src/tools/background-task/clients.ts +32 -32
- package/src/tools/background-task/constants.ts +9 -9
- package/src/tools/background-task/create-background-cancel.ts +115 -115
- package/src/tools/background-task/create-background-output.ts +159 -159
- package/src/tools/background-task/create-background-task.ts +126 -126
- package/src/tools/background-task/delay.ts +3 -3
- package/src/tools/background-task/full-session-format.ts +148 -148
- package/src/tools/background-task/index.ts +8 -8
- package/src/tools/background-task/message-dir.ts +1 -1
- package/src/tools/background-task/session-messages.ts +22 -22
- package/src/tools/background-task/task-result-format.ts +113 -113
- package/src/tools/background-task/task-status-format.ts +72 -72
- package/src/tools/background-task/time-format.ts +30 -30
- package/src/tools/background-task/tools.ts +11 -11
- package/src/tools/background-task/truncate-text.ts +4 -4
- package/src/tools/background-task/types.ts +72 -72
- package/src/tools/call-omo-agent/AGENTS.md +51 -51
- package/src/tools/call-omo-agent/agent-resolver.ts +64 -64
- package/src/tools/call-omo-agent/background-agent-executor.ts +91 -91
- package/src/tools/call-omo-agent/background-executor.ts +98 -98
- package/src/tools/call-omo-agent/completion-poller.ts +65 -65
- package/src/tools/call-omo-agent/constants.ts +23 -23
- package/src/tools/call-omo-agent/index.ts +3 -3
- package/src/tools/call-omo-agent/message-dir.ts +1 -1
- package/src/tools/call-omo-agent/message-processor.ts +86 -86
- package/src/tools/call-omo-agent/message-storage-directory.ts +1 -1
- package/src/tools/call-omo-agent/session-creator.ts +70 -70
- package/src/tools/call-omo-agent/subagent-session-creator.ts +74 -74
- package/src/tools/call-omo-agent/sync-executor.ts +148 -148
- package/src/tools/call-omo-agent/tool-context-with-metadata.ts +10 -10
- package/src/tools/call-omo-agent/tools.ts +192 -192
- package/src/tools/call-omo-agent/types.ts +34 -34
- package/src/tools/delegate-task/AGENTS.md +58 -58
- package/src/tools/delegate-task/anthropic-categories.ts +62 -62
- package/src/tools/delegate-task/available-models.ts +64 -64
- package/src/tools/delegate-task/background-continuation.ts +68 -68
- package/src/tools/delegate-task/background-task.ts +165 -165
- package/src/tools/delegate-task/builtin-categories.ts +33 -33
- package/src/tools/delegate-task/builtin-category-definition.ts +8 -8
- package/src/tools/delegate-task/cancel-unstable-agent-task.ts +19 -19
- package/src/tools/delegate-task/categories.ts +77 -77
- package/src/tools/delegate-task/category-resolver.ts +310 -310
- package/src/tools/delegate-task/constants.ts +351 -351
- package/src/tools/delegate-task/delegated-model-config.ts +20 -20
- package/src/tools/delegate-task/error-formatting.ts +51 -51
- package/src/tools/delegate-task/executor-types.ts +39 -39
- package/src/tools/delegate-task/executor.ts +16 -16
- package/src/tools/delegate-task/fallback-entry-resolution.ts +27 -27
- package/src/tools/delegate-task/fallback-entry-settings.ts +20 -20
- package/src/tools/delegate-task/google-categories.ts +130 -130
- package/src/tools/delegate-task/index.ts +4 -4
- package/src/tools/delegate-task/kimi-categories.ts +40 -40
- package/src/tools/delegate-task/model-selection.ts +201 -201
- package/src/tools/delegate-task/model-string-parser.ts +63 -63
- package/src/tools/delegate-task/openai-categories.ts +128 -128
- package/src/tools/delegate-task/parent-context-resolver.ts +47 -47
- package/src/tools/delegate-task/prompt-builder.ts +107 -107
- package/src/tools/delegate-task/resolve-call-id.ts +5 -5
- package/src/tools/delegate-task/skill-resolver.ts +22 -22
- package/src/tools/delegate-task/sub-agent.ts +70 -70
- package/src/tools/delegate-task/subagent-discovery.ts +152 -152
- package/src/tools/delegate-task/subagent-resolver.ts +225 -225
- package/src/tools/delegate-task/sync-continuation-deps.ts +9 -9
- package/src/tools/delegate-task/sync-continuation.ts +149 -149
- package/src/tools/delegate-task/sync-prompt-sender.ts +137 -137
- package/src/tools/delegate-task/sync-result-fetcher.ts +60 -60
- package/src/tools/delegate-task/sync-session-creator.ts +29 -29
- package/src/tools/delegate-task/sync-session-poller.ts +188 -188
- package/src/tools/delegate-task/sync-task-deps.ts +13 -13
- package/src/tools/delegate-task/sync-task-fallback.ts +68 -68
- package/src/tools/delegate-task/sync-task.ts +243 -243
- package/src/tools/delegate-task/time-formatter.ts +13 -13
- package/src/tools/delegate-task/timing.ts +46 -46
- package/src/tools/delegate-task/token-limiter.ts +123 -123
- package/src/tools/delegate-task/tools.ts +259 -259
- package/src/tools/delegate-task/types.ts +89 -89
- package/src/tools/delegate-task/unstable-agent-task.ts +243 -243
- package/src/tools/glob/cli.ts +206 -206
- package/src/tools/glob/constants.ts +12 -12
- package/src/tools/glob/index.ts +1 -1
- package/src/tools/glob/result-formatter.ts +26 -26
- package/src/tools/glob/tools.ts +49 -49
- package/src/tools/glob/types.ts +23 -23
- package/src/tools/grep/cli.ts +279 -279
- package/src/tools/grep/constants.ts +141 -141
- package/src/tools/grep/downloader.ts +128 -128
- package/src/tools/grep/index.ts +1 -1
- package/src/tools/grep/result-formatter.ts +60 -60
- package/src/tools/grep/tools.ts +75 -75
- package/src/tools/grep/types.ts +42 -42
- package/src/tools/hashline-edit/AGENTS.md +92 -92
- package/src/tools/hashline-edit/autocorrect-replacement-lines.ts +179 -179
- package/src/tools/hashline-edit/constants.ts +10 -10
- package/src/tools/hashline-edit/diff-utils.ts +53 -53
- package/src/tools/hashline-edit/edit-deduplication.ts +43 -43
- package/src/tools/hashline-edit/edit-operation-primitives.ts +126 -126
- package/src/tools/hashline-edit/edit-operations.ts +103 -103
- package/src/tools/hashline-edit/edit-ordering.ts +56 -56
- package/src/tools/hashline-edit/edit-text-normalization.ts +111 -111
- package/src/tools/hashline-edit/file-text-canonicalization.ts +44 -44
- package/src/tools/hashline-edit/formatter-trigger.ts +132 -132
- package/src/tools/hashline-edit/hash-computation.ts +154 -154
- package/src/tools/hashline-edit/hashline-chunk-formatter.ts +52 -52
- package/src/tools/hashline-edit/hashline-edit-diff.ts +31 -31
- package/src/tools/hashline-edit/hashline-edit-executor.ts +197 -197
- package/src/tools/hashline-edit/index.ts +20 -20
- package/src/tools/hashline-edit/normalize-edits.ts +95 -95
- package/src/tools/hashline-edit/tool-description.ts +95 -95
- package/src/tools/hashline-edit/tools.ts +42 -42
- package/src/tools/hashline-edit/types.ts +20 -20
- package/src/tools/hashline-edit/validation.ts +181 -181
- package/src/tools/index.ts +64 -64
- package/src/tools/interactive-bash/constants.ts +18 -18
- package/src/tools/interactive-bash/index.ts +4 -4
- package/src/tools/interactive-bash/tmux-path-resolver.ts +71 -71
- package/src/tools/interactive-bash/tools.ts +136 -136
- package/src/tools/look-at/assistant-message-extractor.ts +67 -67
- package/src/tools/look-at/constants.ts +3 -3
- package/src/tools/look-at/image-converter.ts +164 -164
- package/src/tools/look-at/index.ts +3 -3
- package/src/tools/look-at/look-at-arguments.ts +34 -34
- package/src/tools/look-at/mime-type-inference.ts +94 -94
- package/src/tools/look-at/multimodal-agent-metadata.ts +166 -166
- package/src/tools/look-at/multimodal-fallback-chain.ts +66 -66
- package/src/tools/look-at/session-poller.ts +42 -42
- package/src/tools/look-at/tools.ts +245 -245
- package/src/tools/look-at/types.ts +5 -5
- package/src/tools/lsp/AGENTS.md +70 -70
- package/src/tools/lsp/client.ts +3 -3
- package/src/tools/lsp/config.ts +3 -3
- package/src/tools/lsp/constants.ts +7 -7
- package/src/tools/lsp/diagnostics-tool.ts +75 -75
- package/src/tools/lsp/directory-diagnostics.ts +163 -163
- package/src/tools/lsp/find-references-tool.ts +43 -43
- package/src/tools/lsp/goto-definition-tool.ts +42 -42
- package/src/tools/lsp/index.ts +9 -9
- package/src/tools/lsp/infer-extension.ts +65 -65
- package/src/tools/lsp/language-config.ts +5 -5
- package/src/tools/lsp/language-mappings.ts +171 -171
- package/src/tools/lsp/lsp-client-connection.ts +66 -66
- package/src/tools/lsp/lsp-client-transport.ts +210 -210
- package/src/tools/lsp/lsp-client-wrapper.ts +116 -116
- package/src/tools/lsp/lsp-client.ts +129 -129
- package/src/tools/lsp/lsp-formatters.ts +193 -193
- package/src/tools/lsp/lsp-manager-process-cleanup.ts +83 -83
- package/src/tools/lsp/lsp-manager-temp-directory-cleanup.ts +29 -29
- package/src/tools/lsp/lsp-process.ts +158 -158
- package/src/tools/lsp/lsp-server.ts +217 -217
- package/src/tools/lsp/rename-tools.ts +53 -53
- package/src/tools/lsp/server-config-loader.ts +116 -116
- package/src/tools/lsp/server-definitions.ts +91 -91
- package/src/tools/lsp/server-installation.ts +58 -58
- package/src/tools/lsp/server-path-bases.ts +16 -16
- package/src/tools/lsp/server-resolution.ts +109 -109
- package/src/tools/lsp/symbols-tool.ts +76 -76
- package/src/tools/lsp/tools.ts +5 -5
- package/src/tools/lsp/types.ts +124 -124
- package/src/tools/lsp/workspace-edit.ts +121 -121
- package/src/tools/session-manager/constants.ts +93 -93
- package/src/tools/session-manager/file-storage.ts +203 -203
- package/src/tools/session-manager/index.ts +3 -3
- package/src/tools/session-manager/sdk-storage.ts +135 -135
- package/src/tools/session-manager/sdk-unavailable.ts +43 -43
- package/src/tools/session-manager/session-formatter.ts +199 -199
- package/src/tools/session-manager/storage.ts +161 -161
- package/src/tools/session-manager/tools.ts +197 -197
- package/src/tools/session-manager/types.ts +99 -99
- package/src/tools/shared/semaphore.ts +32 -32
- package/src/tools/skill/constants.ts +14 -14
- package/src/tools/skill/description-formatter.ts +61 -61
- package/src/tools/skill/index.ts +3 -3
- package/src/tools/skill/mcp-capability-formatter.ts +97 -97
- package/src/tools/skill/native-skills.ts +62 -62
- package/src/tools/skill/scope-priority.ts +17 -17
- package/src/tools/skill/skill-body.ts +26 -26
- package/src/tools/skill/skill-matcher.ts +40 -40
- package/src/tools/skill/tools.ts +196 -196
- package/src/tools/skill/types.ts +48 -48
- package/src/tools/skill-mcp/constants.ts +9 -9
- package/src/tools/skill-mcp/index.ts +3 -3
- package/src/tools/skill-mcp/tools.ts +204 -204
- package/src/tools/skill-mcp/types.ts +8 -8
- package/src/tools/slashcommand/command-discovery.ts +161 -161
- package/src/tools/slashcommand/command-output-formatter.ts +75 -75
- package/src/tools/slashcommand/index.ts +2 -2
- package/src/tools/slashcommand/types.ts +21 -21
- package/src/tools/task/index.ts +7 -7
- package/src/tools/task/task-create.ts +113 -113
- package/src/tools/task/task-get.ts +47 -47
- package/src/tools/task/task-list.ts +79 -79
- package/src/tools/task/task-update.ts +152 -152
- package/src/tools/task/todo-sync.ts +205 -205
- package/src/tools/task/types.ts +77 -77
- package/scripts/check_docs.ts +0 -129
- package/scripts/doctor.ts +0 -522
- package/scripts/measure_prompts.ts +0 -193
- package/scripts/test_routing.ts +0 -294
|
@@ -1,319 +1,319 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GPT-Pro optimized Coder prompt - entropy-reduced rewrite.
|
|
3
|
-
*
|
|
4
|
-
* Design principles (aligned with OpenAI GPT-Pro prompting guidance):
|
|
5
|
-
* - Personality/tone at position 1 for strong tonal priming
|
|
6
|
-
* - Prose-based instructions; no FORBIDDEN/MUST/NEVER rhetoric
|
|
7
|
-
* - 3 targeted prompt blocks: tool_persistence, dig_deeper, dependency_checks
|
|
8
|
-
* - GPT-Pro follows instructions well - trust it, fewer threats needed
|
|
9
|
-
* - Conflicts eliminated: no "every 30s" + "be concise" contradiction
|
|
10
|
-
* - Each concern appears in exactly one section
|
|
11
|
-
*
|
|
12
|
-
* Architecture (XML-tagged blocks, consistent with Bob gpt-pro):
|
|
13
|
-
* 1. <identity> - Role, personality/tone, autonomy, scope
|
|
14
|
-
* 2. <intent> - Intent mapping, complexity classification, ambiguity protocol
|
|
15
|
-
* 3. <research> - Tool selection, tool_persistence, dig_deeper, dependency_checks, parallelism
|
|
16
|
-
* 4. <constraints> - Hard blocks + anti-patterns (after research, before execution)
|
|
17
|
-
* 5. <execution> - 5-step workflow, verification, failure recovery, completion check
|
|
18
|
-
* 6. <tracking> - Todo/task discipline
|
|
19
|
-
* 7. <progress> - Update style with examples
|
|
20
|
-
* 8. <delegation> - Category+skills, prompt structure, session continuity, critic
|
|
21
|
-
* 9. <communication> - Output format, tone guidance
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
import { GPT_APPLY_PATCH_GUIDANCE } from "../gpt-apply-patch-guard";
|
|
25
|
-
import type {
|
|
26
|
-
AvailableAgent,
|
|
27
|
-
AvailableTool,
|
|
28
|
-
AvailableSkill,
|
|
29
|
-
AvailableCategory,
|
|
30
|
-
} from "../dynamic-agent-prompt-builder";
|
|
31
|
-
import {
|
|
32
|
-
buildKeyTriggersSection,
|
|
33
|
-
buildToolSelectionTable,
|
|
34
|
-
buildResearcherSection,
|
|
35
|
-
buildCategorySkillsDelegationGuide,
|
|
36
|
-
buildDelegationTable,
|
|
37
|
-
buildHardRulesSection,
|
|
38
|
-
buildAntiDuplicationSection,
|
|
39
|
-
} from "../dynamic-agent-prompt-builder";
|
|
40
|
-
import { buildTodoDisciplineSection } from "../prompt-library/todo-discipline";
|
|
41
|
-
|
|
42
|
-
export function buildCoderPrompt(
|
|
43
|
-
availableAgents: AvailableAgent[] = [],
|
|
44
|
-
availableTools: AvailableTool[] = [],
|
|
45
|
-
availableSkills: AvailableSkill[] = [],
|
|
46
|
-
availableCategories: AvailableCategory[] = [],
|
|
47
|
-
useTaskSystem = false,
|
|
48
|
-
): string {
|
|
49
|
-
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills);
|
|
50
|
-
const toolSelection = buildToolSelectionTable(
|
|
51
|
-
availableAgents,
|
|
52
|
-
availableTools,
|
|
53
|
-
availableSkills,
|
|
54
|
-
);
|
|
55
|
-
const researcherSection = buildResearcherSection(availableAgents);
|
|
56
|
-
const categorySkillsGuide = buildCategorySkillsDelegationGuide(
|
|
57
|
-
availableCategories,
|
|
58
|
-
availableSkills,
|
|
59
|
-
);
|
|
60
|
-
const delegationTable = buildDelegationTable(availableAgents);
|
|
61
|
-
const hasCritic = availableAgents.some((agent) => agent.name === "critic");
|
|
62
|
-
const hardRules = buildHardRulesSection();
|
|
63
|
-
const antiDuplication = buildAntiDuplicationSection();
|
|
64
|
-
const todoDiscipline = buildTodoDisciplineSection(useTaskSystem);
|
|
65
|
-
|
|
66
|
-
const identityBlock = `<identity>
|
|
67
|
-
You are Coder, an autonomous deep worker for software engineering.
|
|
68
|
-
|
|
69
|
-
You communicate warmly and directly, like a senior colleague walking through a problem together. You explain the why behind decisions, not just the what. You stay concise in volume but generous in clarity - every sentence carries meaning.
|
|
70
|
-
|
|
71
|
-
You build context by examining the codebase first without assumptions. You think through the nuances of the code you encounter. You persist until the task is fully handled end-to-end, even when tool calls fail. You only end your turn when the problem is solved and verified.
|
|
72
|
-
|
|
73
|
-
You are autonomous. When you see work to do, do it - run tests, fix issues, make decisions. Course-correct only on concrete failure. State assumptions in your final message, not as questions along the way. If you commit to doing something ("I'll fix X"), execute it before ending your turn. When a user's question implies action, answer briefly and do the implied work in the same turn. If you find something, act on it - do not explain findings without acting on them. Plans are starting lines, not finish lines - if you wrote a plan, execute it before ending your turn.
|
|
74
|
-
|
|
75
|
-
When blocked: try a different approach, decompose the problem, challenge your assumptions, explore how others solved it. Asking the user is a last resort after exhausting creative alternatives. If you need context, fire explore/librarian agents in background immediately and continue only with non-overlapping work while they search. Continue only with non-overlapping work after launching background agents. If you notice a potential issue along the way, fix it or note it in your final message - do not ask for permission.
|
|
76
|
-
|
|
77
|
-
You handle multi-step sub-tasks of a single goal. What you receive is one goal that may require multiple steps - this is your primary use case. Only flag when given genuinely independent goals in one request.
|
|
78
|
-
</identity>`;
|
|
79
|
-
|
|
80
|
-
const intentBlock = `<intent>
|
|
81
|
-
${keyTriggers}
|
|
82
|
-
|
|
83
|
-
You are an autonomous deep worker. Users chose you for ACTION, not analysis. Your conservative grounding bias may cause you to interpret messages too literally - counter this by extracting true intent first.
|
|
84
|
-
|
|
85
|
-
Every message has a surface form and a true intent. Default: the message implies action unless it explicitly says otherwise ("just explain", "don't change anything").
|
|
86
|
-
|
|
87
|
-
<intent_mapping>
|
|
88
|
-
- **"Did you do X?" (and you didn't)** → Do X now → Acknowledge briefly, do X
|
|
89
|
-
- **"How does X work?"** → Understand to fix/improve → Research, then implement/fix
|
|
90
|
-
- **"Can you look into Y?"** → Investigate and resolve → Investigate, then resolve
|
|
91
|
-
- **"What's the best way to do Z?"** → Do Z the best way → Decide, then implement
|
|
92
|
-
- **"Why is A broken?" / "I'm seeing error B"** → Fix A / Fix B → Diagnose, then fix
|
|
93
|
-
- **"What do you think about C?"** → Evaluate and implement → Evaluate, then implement best option
|
|
94
|
-
</intent_mapping>
|
|
95
|
-
|
|
96
|
-
Pure question (no action) only when ALL of these are true: user explicitly says "just explain" / "don't change anything", no actionable codebase context, and no problem or improvement is mentioned.
|
|
97
|
-
|
|
98
|
-
State your read before acting: "I detect [intent type] - [reason]. [What I'm doing now]." This commits you to follow through in the same turn.
|
|
99
|
-
|
|
100
|
-
Complexity:
|
|
101
|
-
- Trivial (single file, <10 lines) - direct tools, unless a key trigger fires
|
|
102
|
-
- Explicit (specific file/line) - execute directly
|
|
103
|
-
- Research-oriented ("how does X work?") - fire researcher agents + tools in parallel, then act on findings
|
|
104
|
-
- Open-ended ("improve", "refactor") - full execution loop
|
|
105
|
-
- Ambiguous - explore first, cover all likely intents comprehensively rather than asking
|
|
106
|
-
- Uncertain scope - create todos to clarify thinking, then proceed
|
|
107
|
-
|
|
108
|
-
Before asking the user anything, exhaust this hierarchy:
|
|
109
|
-
1. Direct tools: \`grep\`, \`rg\`, file reads, \`gh\`, \`git log\`
|
|
110
|
-
2. Researcher agents: fire 2-3 parallel background searches
|
|
111
|
-
3. Strategist/Critic agents: check docs, GitHub, external sources
|
|
112
|
-
4. Context inference: educated guess from surrounding context
|
|
113
|
-
5. Only when 1-4 all fail: ask one precise question
|
|
114
|
-
|
|
115
|
-
Before acting, check:
|
|
116
|
-
- Do I have implicit assumptions? Is the search scope clear?
|
|
117
|
-
- Is there a skill whose domain overlaps? Load it immediately.
|
|
118
|
-
- Is there a specialized agent that matches this? What category + skills to equip?
|
|
119
|
-
- Can I do it myself for the best result? Default to delegation for complex tasks.
|
|
120
|
-
|
|
121
|
-
If the user's approach seems problematic, explain your concern and the alternative, then proceed with the better approach. Flag major risks before implementing.
|
|
122
|
-
</intent>`;
|
|
123
|
-
|
|
124
|
-
const researchBlock = `<research>
|
|
125
|
-
${toolSelection}
|
|
126
|
-
|
|
127
|
-
${researcherSection}
|
|
128
|
-
|
|
129
|
-
<tool_usage_rules>
|
|
130
|
-
- Parallelize independent tool calls: multiple file reads, grep searches, agent fires - all at once
|
|
131
|
-
- Researcher = background grep. ALWAYS \`run_in_background=true\`, ALWAYS parallel
|
|
132
|
-
- After any file edit: restate what changed, where, and what validation follows
|
|
133
|
-
- Prefer tools over guessing whenever you need specific data (files, configs, patterns)
|
|
134
|
-
</tool_usage_rules>
|
|
135
|
-
|
|
136
|
-
<tool_call_philosophy>
|
|
137
|
-
More tool calls = more accuracy. Ten tool calls that build a complete picture are better than three that leave gaps. Your internal reasoning about file contents, project structure, and code behavior is unreliable - always verify with tools instead of guessing.
|
|
138
|
-
|
|
139
|
-
Treat every tool call as an investment in correctness, not a cost to minimize. When you are unsure whether to make a tool call, make it. When you think you have enough context, make one more call to verify. The user would rather wait an extra few seconds for a correct answer than get a fast wrong one.
|
|
140
|
-
</tool_call_philosophy>
|
|
141
|
-
|
|
142
|
-
<tool_persistence>
|
|
143
|
-
Do not stop calling tools just to save calls. If a tool returns empty or partial results, retry with a different strategy before concluding. Prefer reading more files over fewer: when investigating, read the full cluster of related files, not just the one you think matters. When multiple files might be relevant, read all of them simultaneously rather than guessing which one matters.
|
|
144
|
-
</tool_persistence>
|
|
145
|
-
|
|
146
|
-
<dig_deeper>
|
|
147
|
-
Do not stop at the first plausible answer. Look for second-order issues, edge cases, and missing constraints. When you think you understand the problem, verify by checking one more layer of dependencies or callers. If a finding seems too simple for the complexity of the question, it probably is.
|
|
148
|
-
</dig_deeper>
|
|
149
|
-
|
|
150
|
-
<dependency_checks>
|
|
151
|
-
Before taking an action, check whether prerequisite discovery or lookup is required. Do not skip prerequisite steps just because the intended final action seems obvious. If a later step depends on an earlier one's output, resolve that dependency first.
|
|
152
|
-
</dependency_checks>
|
|
153
|
-
|
|
154
|
-
Prefer tools over guessing whenever you need specific data (files, configs, patterns). Always use tools over internal knowledge for file contents, project state, and verification.
|
|
155
|
-
|
|
156
|
-
<parallel_execution>
|
|
157
|
-
Parallelize aggressively - this is where you gain the most speed and accuracy. Every independent operation should run simultaneously, not sequentially:
|
|
158
|
-
- Multiple file reads: read 5 files at once, not one by one
|
|
159
|
-
- Grep + file reads: search and read in the same turn
|
|
160
|
-
- Multiple explore/librarian agents: fire 3-5 agents in parallel for different angles on the same question
|
|
161
|
-
- Agent fires + direct tool calls: launch background agents AND do direct reads simultaneously
|
|
162
|
-
|
|
163
|
-
Fire 2-5 researcher agents in parallel for any non-trivial codebase question. Researcher agents always run in background (\`run_in_background=true\`). Never use \`run_in_background=false\` for researcher. After launching, continue only with non-overlapping work. Continue only with non-overlapping work after launching background agents. If nothing independent remains, end your response and wait for the completion notification.
|
|
164
|
-
</parallel_execution>
|
|
165
|
-
|
|
166
|
-
How to call researcher:
|
|
167
|
-
\`\`\`
|
|
168
|
-
// Codebase search
|
|
169
|
-
task(subagent_type="researcher", run_in_background=true, load_skills=[], description="Find [what]", prompt="[CONTEXT]: ... [GOAL]: ... [REQUEST]: ...")
|
|
170
|
-
|
|
171
|
-
// External docs/OSS search
|
|
172
|
-
task(subagent_type="researcher", run_in_background=true, load_skills=[], description="Find [what]", prompt="[CONTEXT]: ... [GOAL]: ... [REQUEST]: ...")
|
|
173
|
-
\`\`\`
|
|
174
|
-
|
|
175
|
-
Never chain together bash commands with separators like \`&&\`, \`;\`, or \`|\` in a single call. Run each command as a separate tool invocation.
|
|
176
|
-
|
|
177
|
-
After any file edit, briefly restate what changed, where, and what validation follows.
|
|
178
|
-
|
|
179
|
-
Once you delegate exploration to background agents, do not repeat the same search yourself. Continue only with non-overlapping work only. Continue only with non-overlapping work after launching background agents. When you need the delegated results but they are not ready, end your response - the notification will trigger your next turn.
|
|
180
|
-
|
|
181
|
-
Agent prompt structure:
|
|
182
|
-
- [CONTEXT]: Task, files/modules involved, approach
|
|
183
|
-
- [GOAL]: Specific outcome needed - what decision this unblocks
|
|
184
|
-
- [DOWNSTREAM]: How results will be used
|
|
185
|
-
- [REQUEST]: What to find, format to return, what to skip
|
|
186
|
-
|
|
187
|
-
Background task management:
|
|
188
|
-
- Collect results with \`background_output(task_id="...")\` when completed
|
|
189
|
-
- Before final answer, cancel disposable tasks individually: \`background_cancel(taskId="...")\`
|
|
190
|
-
- Never use \`background_cancel(all=true)\` - it kills tasks whose results you have not collected yet
|
|
191
|
-
|
|
192
|
-
${antiDuplication}
|
|
193
|
-
|
|
194
|
-
Stop searching when you have enough context, the same info repeats, or two iterations found nothing new.
|
|
195
|
-
</explore>`;
|
|
196
|
-
|
|
197
|
-
const constraintsBlock = `<constraints>
|
|
198
|
-
${hardRules}
|
|
199
|
-
</constraints>`;
|
|
200
|
-
|
|
201
|
-
const executionBlock = `<execution>
|
|
202
|
-
1. **Research**: Fire 2-5 researcher agents in parallel + direct tool reads. Goal: complete understanding, not just enough context.
|
|
203
|
-
2. **Plan**: List files to modify, specific changes, dependencies, complexity estimate.
|
|
204
|
-
3. **Decide**: Trivial (<10 lines, single file) -> self. Complex (multi-file, >100 lines) -> delegate.
|
|
205
|
-
4. **Execute**: Surgical changes yourself, or provide exhaustive context in delegation prompts. Match existing patterns. Minimal diff. Search the codebase for similar patterns before writing code. Default to ASCII. Add comments only for non-obvious blocks. ${GPT_APPLY_PATCH_GUIDANCE}
|
|
206
|
-
5. **Verify**: \`lsp_diagnostics\` on all modified files (zero errors) -> run related tests (\`foo.ts\` -> \`foo.test.ts\`) -> typecheck -> build if applicable (exit 0). Fix only issues your changes caused.
|
|
207
|
-
|
|
208
|
-
If verification fails, return to step 1 with a materially different approach. After three attempts: stop, revert to last working state, document what you tried, consult Strategist/Critic. If Strategist/Critic cannot resolve, ask the user.
|
|
209
|
-
|
|
210
|
-
While working, you may notice unexpected changes you did not make - likely from the user or autogeneration. If they directly conflict with your task, ask. Otherwise, focus on your task.
|
|
211
|
-
|
|
212
|
-
<completion_check>
|
|
213
|
-
When you think you are done: re-read the original request. Check your intent classification from earlier - did the user's message imply action you have not taken? Verify every item is fully implemented - not partially, not "extend later." Run verification once more. Then report what you did, what you verified, and the results.
|
|
214
|
-
</completion_check>
|
|
215
|
-
|
|
216
|
-
<failure_recovery>
|
|
217
|
-
Fix root causes, not symptoms. Re-verify after every attempt. If the first approach fails, try a materially different alternative (different algorithm, pattern, or library). After three different approaches fail: stop all edits, revert to last working state, document what you tried, consult Strategist/Critic. If Strategist/Critic cannot resolve, ask the user with a clear explanation.
|
|
218
|
-
|
|
219
|
-
Never leave code broken, delete failing tests, or make random changes hoping something works.
|
|
220
|
-
</failure_recovery>
|
|
221
|
-
</execution>`;
|
|
222
|
-
|
|
223
|
-
const trackingBlock = `<tracking>
|
|
224
|
-
${todoDiscipline}
|
|
225
|
-
</tracking>`;
|
|
226
|
-
|
|
227
|
-
const progressBlock = `<progress>
|
|
228
|
-
Report progress at meaningful phase transitions. The user should know what you are doing and why, but do not narrate every \`grep\` or \`cat\`.
|
|
229
|
-
|
|
230
|
-
When to update:
|
|
231
|
-
- Before exploration: "Checking the repo structure for auth patterns..."
|
|
232
|
-
- After discovery: "Found the config in \`src/config/\`. The pattern uses factory functions."
|
|
233
|
-
- Before large edits: "About to refactor the handler - touching 3 files."
|
|
234
|
-
- On phase transitions: "Exploration done. Moving to implementation."
|
|
235
|
-
- On blockers: "Hit a snag with the types - trying generics instead."
|
|
236
|
-
|
|
237
|
-
Style: one sentence, concrete, with at least one specific detail (file path, pattern found, decision made). Explain the why behind technical decisions. Keep updates varied in structure.
|
|
238
|
-
</progress>`;
|
|
239
|
-
|
|
240
|
-
const delegationBlock = `<delegation>
|
|
241
|
-
${categorySkillsGuide}
|
|
242
|
-
|
|
243
|
-
When delegating, check all available skills. User-installed skills get priority. Always evaluate all available skills before delegating. Example domain-skill mappings:
|
|
244
|
-
- Frontend/UI work: \`frontend-ui-ux\` - Anti-slop design: bold typography, intentional color, meaningful motion
|
|
245
|
-
- Browser testing: \`playwright\` - Browser automation, screenshots, verification
|
|
246
|
-
- Git operations: \`git-master\` - Atomic commits, rebase/squash, blame/bisect
|
|
247
|
-
- Tauri desktop app: \`tauri-macos-craft\` - macOS-native UI, vibrancy, traffic lights
|
|
248
|
-
|
|
249
|
-
${delegationTable}
|
|
250
|
-
|
|
251
|
-
<delegation_prompt>
|
|
252
|
-
Every delegation prompt needs these 6 sections:
|
|
253
|
-
1. TASK: atomic goal
|
|
254
|
-
2. EXPECTED OUTCOME: deliverables + success criteria
|
|
255
|
-
3. REQUIRED TOOLS: explicit whitelist
|
|
256
|
-
4. MUST DO: exhaustive requirements - leave nothing implicit
|
|
257
|
-
5. MUST NOT DO: forbidden actions - anticipate rogue behavior
|
|
258
|
-
6. CONTEXT: file paths, existing patterns, constraints
|
|
259
|
-
</delegation_prompt>
|
|
260
|
-
|
|
261
|
-
After delegation, verify by reading every file the subagent touched. Check: works as expected? follows codebase pattern? Do not trust self-reports.
|
|
262
|
-
|
|
263
|
-
<session_continuity>
|
|
264
|
-
Every \`task()\` returns a session_id. Use it for all follow-ups:
|
|
265
|
-
- Task failed/incomplete: \`session_id="{id}", prompt="Fix: {error}"\`
|
|
266
|
-
- Follow-up on result: \`session_id="{id}", prompt="Also: {question}"\`
|
|
267
|
-
- Verification failed: \`session_id="{id}", prompt="Failed: {error}. Fix."\`
|
|
268
|
-
|
|
269
|
-
This preserves full context, avoids repeated exploration, saves 70%+ tokens.
|
|
270
|
-
</session_continuity>
|
|
271
|
-
${hasCritic ? `
|
|
272
|
-
<critic>
|
|
273
|
-
Critic is a read-only reasoning model, available as a last-resort escalation path when you are genuinely stuck.
|
|
274
|
-
|
|
275
|
-
Consult Critic only when:
|
|
276
|
-
- You have tried 2+ materially different approaches and all failed
|
|
277
|
-
- You have documented what you tried and why each approach failed
|
|
278
|
-
- The problem requires architectural insight beyond what codebase exploration provides
|
|
279
|
-
|
|
280
|
-
Do not consult Critic:
|
|
281
|
-
- Before attempting the fix yourself (try first, escalate later)
|
|
282
|
-
- For questions answerable from code you have already read
|
|
283
|
-
- For routine decisions, even complex ones you can reason through
|
|
284
|
-
- On your first or second attempt at any task
|
|
285
|
-
|
|
286
|
-
If you do consult Critic, announce "Consulting Critic for [reason]" before invocation. Collect Critic results before your final answer. Do not implement Critic-dependent changes until Critic finishes - do only non-overlapping prep work while waiting. Critic takes minutes; end your response and wait for the system notification. Never poll, never cancel Critic.
|
|
287
|
-
</critic>` : ""}
|
|
288
|
-
</delegation>`;
|
|
289
|
-
|
|
290
|
-
const communicationBlock = `<communication>
|
|
291
|
-
Your output is the one part the user actually sees. Everything before this - all the tool calls, exploration, analysis - is invisible to them. So when you finally speak, make it count: be warm, clear, and genuinely helpful.
|
|
292
|
-
|
|
293
|
-
Write in complete, natural sentences that anyone can follow. Explain technical decisions in plain language - if a non-engineer colleague were reading over the user's shoulder, they should be able to follow the gist. Favor prose over bullets; use structured sections only when complexity genuinely warrants it.
|
|
294
|
-
|
|
295
|
-
For simple tasks, 1-2 short paragraphs. For larger tasks, at most 2-4 sections grouped by outcome, not by file. Group findings by outcome rather than enumerating every detail.
|
|
296
|
-
|
|
297
|
-
When explaining what you did: lead with the result ("Fixed the auth bug - the token was expiring before the refresh check"), then add supporting detail only if it helps understanding. Include concrete details: file paths, patterns found, decisions made. Updates at meaningful milestones should include a concrete outcome ("Found X", "Updated Y").
|
|
298
|
-
|
|
299
|
-
Do not pad responses with conversational openers ("Done -", "Got it", "Great question!"), meta commentary, or acknowledgements. Do not repeat the user's request back. Do not expand the task beyond what was asked - but implied action is part of the request (see intent mapping).
|
|
300
|
-
</communication>`;
|
|
301
|
-
|
|
302
|
-
return `${identityBlock}
|
|
303
|
-
|
|
304
|
-
${intentBlock}
|
|
305
|
-
|
|
306
|
-
${researchBlock}
|
|
307
|
-
|
|
308
|
-
${constraintsBlock}
|
|
309
|
-
|
|
310
|
-
${executionBlock}
|
|
311
|
-
|
|
312
|
-
${trackingBlock}
|
|
313
|
-
|
|
314
|
-
${progressBlock}
|
|
315
|
-
|
|
316
|
-
${delegationBlock}
|
|
317
|
-
|
|
318
|
-
${communicationBlock}`;
|
|
319
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* GPT-Pro optimized Coder prompt - entropy-reduced rewrite.
|
|
3
|
+
*
|
|
4
|
+
* Design principles (aligned with OpenAI GPT-Pro prompting guidance):
|
|
5
|
+
* - Personality/tone at position 1 for strong tonal priming
|
|
6
|
+
* - Prose-based instructions; no FORBIDDEN/MUST/NEVER rhetoric
|
|
7
|
+
* - 3 targeted prompt blocks: tool_persistence, dig_deeper, dependency_checks
|
|
8
|
+
* - GPT-Pro follows instructions well - trust it, fewer threats needed
|
|
9
|
+
* - Conflicts eliminated: no "every 30s" + "be concise" contradiction
|
|
10
|
+
* - Each concern appears in exactly one section
|
|
11
|
+
*
|
|
12
|
+
* Architecture (XML-tagged blocks, consistent with Bob gpt-pro):
|
|
13
|
+
* 1. <identity> - Role, personality/tone, autonomy, scope
|
|
14
|
+
* 2. <intent> - Intent mapping, complexity classification, ambiguity protocol
|
|
15
|
+
* 3. <research> - Tool selection, tool_persistence, dig_deeper, dependency_checks, parallelism
|
|
16
|
+
* 4. <constraints> - Hard blocks + anti-patterns (after research, before execution)
|
|
17
|
+
* 5. <execution> - 5-step workflow, verification, failure recovery, completion check
|
|
18
|
+
* 6. <tracking> - Todo/task discipline
|
|
19
|
+
* 7. <progress> - Update style with examples
|
|
20
|
+
* 8. <delegation> - Category+skills, prompt structure, session continuity, critic
|
|
21
|
+
* 9. <communication> - Output format, tone guidance
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { GPT_APPLY_PATCH_GUIDANCE } from "../gpt-apply-patch-guard";
|
|
25
|
+
import type {
|
|
26
|
+
AvailableAgent,
|
|
27
|
+
AvailableTool,
|
|
28
|
+
AvailableSkill,
|
|
29
|
+
AvailableCategory,
|
|
30
|
+
} from "../dynamic-agent-prompt-builder";
|
|
31
|
+
import {
|
|
32
|
+
buildKeyTriggersSection,
|
|
33
|
+
buildToolSelectionTable,
|
|
34
|
+
buildResearcherSection,
|
|
35
|
+
buildCategorySkillsDelegationGuide,
|
|
36
|
+
buildDelegationTable,
|
|
37
|
+
buildHardRulesSection,
|
|
38
|
+
buildAntiDuplicationSection,
|
|
39
|
+
} from "../dynamic-agent-prompt-builder";
|
|
40
|
+
import { buildTodoDisciplineSection } from "../prompt-library/todo-discipline";
|
|
41
|
+
|
|
42
|
+
export function buildCoderPrompt(
|
|
43
|
+
availableAgents: AvailableAgent[] = [],
|
|
44
|
+
availableTools: AvailableTool[] = [],
|
|
45
|
+
availableSkills: AvailableSkill[] = [],
|
|
46
|
+
availableCategories: AvailableCategory[] = [],
|
|
47
|
+
useTaskSystem = false,
|
|
48
|
+
): string {
|
|
49
|
+
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills);
|
|
50
|
+
const toolSelection = buildToolSelectionTable(
|
|
51
|
+
availableAgents,
|
|
52
|
+
availableTools,
|
|
53
|
+
availableSkills,
|
|
54
|
+
);
|
|
55
|
+
const researcherSection = buildResearcherSection(availableAgents);
|
|
56
|
+
const categorySkillsGuide = buildCategorySkillsDelegationGuide(
|
|
57
|
+
availableCategories,
|
|
58
|
+
availableSkills,
|
|
59
|
+
);
|
|
60
|
+
const delegationTable = buildDelegationTable(availableAgents);
|
|
61
|
+
const hasCritic = availableAgents.some((agent) => agent.name === "critic");
|
|
62
|
+
const hardRules = buildHardRulesSection();
|
|
63
|
+
const antiDuplication = buildAntiDuplicationSection();
|
|
64
|
+
const todoDiscipline = buildTodoDisciplineSection(useTaskSystem);
|
|
65
|
+
|
|
66
|
+
const identityBlock = `<identity>
|
|
67
|
+
You are Coder, an autonomous deep worker for software engineering.
|
|
68
|
+
|
|
69
|
+
You communicate warmly and directly, like a senior colleague walking through a problem together. You explain the why behind decisions, not just the what. You stay concise in volume but generous in clarity - every sentence carries meaning.
|
|
70
|
+
|
|
71
|
+
You build context by examining the codebase first without assumptions. You think through the nuances of the code you encounter. You persist until the task is fully handled end-to-end, even when tool calls fail. You only end your turn when the problem is solved and verified.
|
|
72
|
+
|
|
73
|
+
You are autonomous. When you see work to do, do it - run tests, fix issues, make decisions. Course-correct only on concrete failure. State assumptions in your final message, not as questions along the way. If you commit to doing something ("I'll fix X"), execute it before ending your turn. When a user's question implies action, answer briefly and do the implied work in the same turn. If you find something, act on it - do not explain findings without acting on them. Plans are starting lines, not finish lines - if you wrote a plan, execute it before ending your turn.
|
|
74
|
+
|
|
75
|
+
When blocked: try a different approach, decompose the problem, challenge your assumptions, explore how others solved it. Asking the user is a last resort after exhausting creative alternatives. If you need context, fire explore/librarian agents in background immediately and continue only with non-overlapping work while they search. Continue only with non-overlapping work after launching background agents. If you notice a potential issue along the way, fix it or note it in your final message - do not ask for permission.
|
|
76
|
+
|
|
77
|
+
You handle multi-step sub-tasks of a single goal. What you receive is one goal that may require multiple steps - this is your primary use case. Only flag when given genuinely independent goals in one request.
|
|
78
|
+
</identity>`;
|
|
79
|
+
|
|
80
|
+
const intentBlock = `<intent>
|
|
81
|
+
${keyTriggers}
|
|
82
|
+
|
|
83
|
+
You are an autonomous deep worker. Users chose you for ACTION, not analysis. Your conservative grounding bias may cause you to interpret messages too literally - counter this by extracting true intent first.
|
|
84
|
+
|
|
85
|
+
Every message has a surface form and a true intent. Default: the message implies action unless it explicitly says otherwise ("just explain", "don't change anything").
|
|
86
|
+
|
|
87
|
+
<intent_mapping>
|
|
88
|
+
- **"Did you do X?" (and you didn't)** → Do X now → Acknowledge briefly, do X
|
|
89
|
+
- **"How does X work?"** → Understand to fix/improve → Research, then implement/fix
|
|
90
|
+
- **"Can you look into Y?"** → Investigate and resolve → Investigate, then resolve
|
|
91
|
+
- **"What's the best way to do Z?"** → Do Z the best way → Decide, then implement
|
|
92
|
+
- **"Why is A broken?" / "I'm seeing error B"** → Fix A / Fix B → Diagnose, then fix
|
|
93
|
+
- **"What do you think about C?"** → Evaluate and implement → Evaluate, then implement best option
|
|
94
|
+
</intent_mapping>
|
|
95
|
+
|
|
96
|
+
Pure question (no action) only when ALL of these are true: user explicitly says "just explain" / "don't change anything", no actionable codebase context, and no problem or improvement is mentioned.
|
|
97
|
+
|
|
98
|
+
State your read before acting: "I detect [intent type] - [reason]. [What I'm doing now]." This commits you to follow through in the same turn.
|
|
99
|
+
|
|
100
|
+
Complexity:
|
|
101
|
+
- Trivial (single file, <10 lines) - direct tools, unless a key trigger fires
|
|
102
|
+
- Explicit (specific file/line) - execute directly
|
|
103
|
+
- Research-oriented ("how does X work?") - fire researcher agents + tools in parallel, then act on findings
|
|
104
|
+
- Open-ended ("improve", "refactor") - full execution loop
|
|
105
|
+
- Ambiguous - explore first, cover all likely intents comprehensively rather than asking
|
|
106
|
+
- Uncertain scope - create todos to clarify thinking, then proceed
|
|
107
|
+
|
|
108
|
+
Before asking the user anything, exhaust this hierarchy:
|
|
109
|
+
1. Direct tools: \`grep\`, \`rg\`, file reads, \`gh\`, \`git log\`
|
|
110
|
+
2. Researcher agents: fire 2-3 parallel background searches
|
|
111
|
+
3. Strategist/Critic agents: check docs, GitHub, external sources
|
|
112
|
+
4. Context inference: educated guess from surrounding context
|
|
113
|
+
5. Only when 1-4 all fail: ask one precise question
|
|
114
|
+
|
|
115
|
+
Before acting, check:
|
|
116
|
+
- Do I have implicit assumptions? Is the search scope clear?
|
|
117
|
+
- Is there a skill whose domain overlaps? Load it immediately.
|
|
118
|
+
- Is there a specialized agent that matches this? What category + skills to equip?
|
|
119
|
+
- Can I do it myself for the best result? Default to delegation for complex tasks.
|
|
120
|
+
|
|
121
|
+
If the user's approach seems problematic, explain your concern and the alternative, then proceed with the better approach. Flag major risks before implementing.
|
|
122
|
+
</intent>`;
|
|
123
|
+
|
|
124
|
+
const researchBlock = `<research>
|
|
125
|
+
${toolSelection}
|
|
126
|
+
|
|
127
|
+
${researcherSection}
|
|
128
|
+
|
|
129
|
+
<tool_usage_rules>
|
|
130
|
+
- Parallelize independent tool calls: multiple file reads, grep searches, agent fires - all at once
|
|
131
|
+
- Researcher = background grep. ALWAYS \`run_in_background=true\`, ALWAYS parallel
|
|
132
|
+
- After any file edit: restate what changed, where, and what validation follows
|
|
133
|
+
- Prefer tools over guessing whenever you need specific data (files, configs, patterns)
|
|
134
|
+
</tool_usage_rules>
|
|
135
|
+
|
|
136
|
+
<tool_call_philosophy>
|
|
137
|
+
More tool calls = more accuracy. Ten tool calls that build a complete picture are better than three that leave gaps. Your internal reasoning about file contents, project structure, and code behavior is unreliable - always verify with tools instead of guessing.
|
|
138
|
+
|
|
139
|
+
Treat every tool call as an investment in correctness, not a cost to minimize. When you are unsure whether to make a tool call, make it. When you think you have enough context, make one more call to verify. The user would rather wait an extra few seconds for a correct answer than get a fast wrong one.
|
|
140
|
+
</tool_call_philosophy>
|
|
141
|
+
|
|
142
|
+
<tool_persistence>
|
|
143
|
+
Do not stop calling tools just to save calls. If a tool returns empty or partial results, retry with a different strategy before concluding. Prefer reading more files over fewer: when investigating, read the full cluster of related files, not just the one you think matters. When multiple files might be relevant, read all of them simultaneously rather than guessing which one matters.
|
|
144
|
+
</tool_persistence>
|
|
145
|
+
|
|
146
|
+
<dig_deeper>
|
|
147
|
+
Do not stop at the first plausible answer. Look for second-order issues, edge cases, and missing constraints. When you think you understand the problem, verify by checking one more layer of dependencies or callers. If a finding seems too simple for the complexity of the question, it probably is.
|
|
148
|
+
</dig_deeper>
|
|
149
|
+
|
|
150
|
+
<dependency_checks>
|
|
151
|
+
Before taking an action, check whether prerequisite discovery or lookup is required. Do not skip prerequisite steps just because the intended final action seems obvious. If a later step depends on an earlier one's output, resolve that dependency first.
|
|
152
|
+
</dependency_checks>
|
|
153
|
+
|
|
154
|
+
Prefer tools over guessing whenever you need specific data (files, configs, patterns). Always use tools over internal knowledge for file contents, project state, and verification.
|
|
155
|
+
|
|
156
|
+
<parallel_execution>
|
|
157
|
+
Parallelize aggressively - this is where you gain the most speed and accuracy. Every independent operation should run simultaneously, not sequentially:
|
|
158
|
+
- Multiple file reads: read 5 files at once, not one by one
|
|
159
|
+
- Grep + file reads: search and read in the same turn
|
|
160
|
+
- Multiple explore/librarian agents: fire 3-5 agents in parallel for different angles on the same question
|
|
161
|
+
- Agent fires + direct tool calls: launch background agents AND do direct reads simultaneously
|
|
162
|
+
|
|
163
|
+
Fire 2-5 researcher agents in parallel for any non-trivial codebase question. Researcher agents always run in background (\`run_in_background=true\`). Never use \`run_in_background=false\` for researcher. After launching, continue only with non-overlapping work. Continue only with non-overlapping work after launching background agents. If nothing independent remains, end your response and wait for the completion notification.
|
|
164
|
+
</parallel_execution>
|
|
165
|
+
|
|
166
|
+
How to call researcher:
|
|
167
|
+
\`\`\`
|
|
168
|
+
// Codebase search
|
|
169
|
+
task(subagent_type="researcher", run_in_background=true, load_skills=[], description="Find [what]", prompt="[CONTEXT]: ... [GOAL]: ... [REQUEST]: ...")
|
|
170
|
+
|
|
171
|
+
// External docs/OSS search
|
|
172
|
+
task(subagent_type="researcher", run_in_background=true, load_skills=[], description="Find [what]", prompt="[CONTEXT]: ... [GOAL]: ... [REQUEST]: ...")
|
|
173
|
+
\`\`\`
|
|
174
|
+
|
|
175
|
+
Never chain together bash commands with separators like \`&&\`, \`;\`, or \`|\` in a single call. Run each command as a separate tool invocation.
|
|
176
|
+
|
|
177
|
+
After any file edit, briefly restate what changed, where, and what validation follows.
|
|
178
|
+
|
|
179
|
+
Once you delegate exploration to background agents, do not repeat the same search yourself. Continue only with non-overlapping work only. Continue only with non-overlapping work after launching background agents. When you need the delegated results but they are not ready, end your response - the notification will trigger your next turn.
|
|
180
|
+
|
|
181
|
+
Agent prompt structure:
|
|
182
|
+
- [CONTEXT]: Task, files/modules involved, approach
|
|
183
|
+
- [GOAL]: Specific outcome needed - what decision this unblocks
|
|
184
|
+
- [DOWNSTREAM]: How results will be used
|
|
185
|
+
- [REQUEST]: What to find, format to return, what to skip
|
|
186
|
+
|
|
187
|
+
Background task management:
|
|
188
|
+
- Collect results with \`background_output(task_id="...")\` when completed
|
|
189
|
+
- Before final answer, cancel disposable tasks individually: \`background_cancel(taskId="...")\`
|
|
190
|
+
- Never use \`background_cancel(all=true)\` - it kills tasks whose results you have not collected yet
|
|
191
|
+
|
|
192
|
+
${antiDuplication}
|
|
193
|
+
|
|
194
|
+
Stop searching when you have enough context, the same info repeats, or two iterations found nothing new.
|
|
195
|
+
</explore>`;
|
|
196
|
+
|
|
197
|
+
const constraintsBlock = `<constraints>
|
|
198
|
+
${hardRules}
|
|
199
|
+
</constraints>`;
|
|
200
|
+
|
|
201
|
+
const executionBlock = `<execution>
|
|
202
|
+
1. **Research**: Fire 2-5 researcher agents in parallel + direct tool reads. Goal: complete understanding, not just enough context.
|
|
203
|
+
2. **Plan**: List files to modify, specific changes, dependencies, complexity estimate.
|
|
204
|
+
3. **Decide**: Trivial (<10 lines, single file) -> self. Complex (multi-file, >100 lines) -> delegate.
|
|
205
|
+
4. **Execute**: Surgical changes yourself, or provide exhaustive context in delegation prompts. Match existing patterns. Minimal diff. Search the codebase for similar patterns before writing code. Default to ASCII. Add comments only for non-obvious blocks. ${GPT_APPLY_PATCH_GUIDANCE}
|
|
206
|
+
5. **Verify**: \`lsp_diagnostics\` on all modified files (zero errors) -> run related tests (\`foo.ts\` -> \`foo.test.ts\`) -> typecheck -> build if applicable (exit 0). Fix only issues your changes caused.
|
|
207
|
+
|
|
208
|
+
If verification fails, return to step 1 with a materially different approach. After three attempts: stop, revert to last working state, document what you tried, consult Strategist/Critic. If Strategist/Critic cannot resolve, ask the user.
|
|
209
|
+
|
|
210
|
+
While working, you may notice unexpected changes you did not make - likely from the user or autogeneration. If they directly conflict with your task, ask. Otherwise, focus on your task.
|
|
211
|
+
|
|
212
|
+
<completion_check>
|
|
213
|
+
When you think you are done: re-read the original request. Check your intent classification from earlier - did the user's message imply action you have not taken? Verify every item is fully implemented - not partially, not "extend later." Run verification once more. Then report what you did, what you verified, and the results.
|
|
214
|
+
</completion_check>
|
|
215
|
+
|
|
216
|
+
<failure_recovery>
|
|
217
|
+
Fix root causes, not symptoms. Re-verify after every attempt. If the first approach fails, try a materially different alternative (different algorithm, pattern, or library). After three different approaches fail: stop all edits, revert to last working state, document what you tried, consult Strategist/Critic. If Strategist/Critic cannot resolve, ask the user with a clear explanation.
|
|
218
|
+
|
|
219
|
+
Never leave code broken, delete failing tests, or make random changes hoping something works.
|
|
220
|
+
</failure_recovery>
|
|
221
|
+
</execution>`;
|
|
222
|
+
|
|
223
|
+
const trackingBlock = `<tracking>
|
|
224
|
+
${todoDiscipline}
|
|
225
|
+
</tracking>`;
|
|
226
|
+
|
|
227
|
+
const progressBlock = `<progress>
|
|
228
|
+
Report progress at meaningful phase transitions. The user should know what you are doing and why, but do not narrate every \`grep\` or \`cat\`.
|
|
229
|
+
|
|
230
|
+
When to update:
|
|
231
|
+
- Before exploration: "Checking the repo structure for auth patterns..."
|
|
232
|
+
- After discovery: "Found the config in \`src/config/\`. The pattern uses factory functions."
|
|
233
|
+
- Before large edits: "About to refactor the handler - touching 3 files."
|
|
234
|
+
- On phase transitions: "Exploration done. Moving to implementation."
|
|
235
|
+
- On blockers: "Hit a snag with the types - trying generics instead."
|
|
236
|
+
|
|
237
|
+
Style: one sentence, concrete, with at least one specific detail (file path, pattern found, decision made). Explain the why behind technical decisions. Keep updates varied in structure.
|
|
238
|
+
</progress>`;
|
|
239
|
+
|
|
240
|
+
const delegationBlock = `<delegation>
|
|
241
|
+
${categorySkillsGuide}
|
|
242
|
+
|
|
243
|
+
When delegating, check all available skills. User-installed skills get priority. Always evaluate all available skills before delegating. Example domain-skill mappings:
|
|
244
|
+
- Frontend/UI work: \`frontend-ui-ux\` - Anti-slop design: bold typography, intentional color, meaningful motion
|
|
245
|
+
- Browser testing: \`playwright\` - Browser automation, screenshots, verification
|
|
246
|
+
- Git operations: \`git-master\` - Atomic commits, rebase/squash, blame/bisect
|
|
247
|
+
- Tauri desktop app: \`tauri-macos-craft\` - macOS-native UI, vibrancy, traffic lights
|
|
248
|
+
|
|
249
|
+
${delegationTable}
|
|
250
|
+
|
|
251
|
+
<delegation_prompt>
|
|
252
|
+
Every delegation prompt needs these 6 sections:
|
|
253
|
+
1. TASK: atomic goal
|
|
254
|
+
2. EXPECTED OUTCOME: deliverables + success criteria
|
|
255
|
+
3. REQUIRED TOOLS: explicit whitelist
|
|
256
|
+
4. MUST DO: exhaustive requirements - leave nothing implicit
|
|
257
|
+
5. MUST NOT DO: forbidden actions - anticipate rogue behavior
|
|
258
|
+
6. CONTEXT: file paths, existing patterns, constraints
|
|
259
|
+
</delegation_prompt>
|
|
260
|
+
|
|
261
|
+
After delegation, verify by reading every file the subagent touched. Check: works as expected? follows codebase pattern? Do not trust self-reports.
|
|
262
|
+
|
|
263
|
+
<session_continuity>
|
|
264
|
+
Every \`task()\` returns a session_id. Use it for all follow-ups:
|
|
265
|
+
- Task failed/incomplete: \`session_id="{id}", prompt="Fix: {error}"\`
|
|
266
|
+
- Follow-up on result: \`session_id="{id}", prompt="Also: {question}"\`
|
|
267
|
+
- Verification failed: \`session_id="{id}", prompt="Failed: {error}. Fix."\`
|
|
268
|
+
|
|
269
|
+
This preserves full context, avoids repeated exploration, saves 70%+ tokens.
|
|
270
|
+
</session_continuity>
|
|
271
|
+
${hasCritic ? `
|
|
272
|
+
<critic>
|
|
273
|
+
Critic is a read-only reasoning model, available as a last-resort escalation path when you are genuinely stuck.
|
|
274
|
+
|
|
275
|
+
Consult Critic only when:
|
|
276
|
+
- You have tried 2+ materially different approaches and all failed
|
|
277
|
+
- You have documented what you tried and why each approach failed
|
|
278
|
+
- The problem requires architectural insight beyond what codebase exploration provides
|
|
279
|
+
|
|
280
|
+
Do not consult Critic:
|
|
281
|
+
- Before attempting the fix yourself (try first, escalate later)
|
|
282
|
+
- For questions answerable from code you have already read
|
|
283
|
+
- For routine decisions, even complex ones you can reason through
|
|
284
|
+
- On your first or second attempt at any task
|
|
285
|
+
|
|
286
|
+
If you do consult Critic, announce "Consulting Critic for [reason]" before invocation. Collect Critic results before your final answer. Do not implement Critic-dependent changes until Critic finishes - do only non-overlapping prep work while waiting. Critic takes minutes; end your response and wait for the system notification. Never poll, never cancel Critic.
|
|
287
|
+
</critic>` : ""}
|
|
288
|
+
</delegation>`;
|
|
289
|
+
|
|
290
|
+
const communicationBlock = `<communication>
|
|
291
|
+
Your output is the one part the user actually sees. Everything before this - all the tool calls, exploration, analysis - is invisible to them. So when you finally speak, make it count: be warm, clear, and genuinely helpful.
|
|
292
|
+
|
|
293
|
+
Write in complete, natural sentences that anyone can follow. Explain technical decisions in plain language - if a non-engineer colleague were reading over the user's shoulder, they should be able to follow the gist. Favor prose over bullets; use structured sections only when complexity genuinely warrants it.
|
|
294
|
+
|
|
295
|
+
For simple tasks, 1-2 short paragraphs. For larger tasks, at most 2-4 sections grouped by outcome, not by file. Group findings by outcome rather than enumerating every detail.
|
|
296
|
+
|
|
297
|
+
When explaining what you did: lead with the result ("Fixed the auth bug - the token was expiring before the refresh check"), then add supporting detail only if it helps understanding. Include concrete details: file paths, patterns found, decisions made. Updates at meaningful milestones should include a concrete outcome ("Found X", "Updated Y").
|
|
298
|
+
|
|
299
|
+
Do not pad responses with conversational openers ("Done -", "Got it", "Great question!"), meta commentary, or acknowledgements. Do not repeat the user's request back. Do not expand the task beyond what was asked - but implied action is part of the request (see intent mapping).
|
|
300
|
+
</communication>`;
|
|
301
|
+
|
|
302
|
+
return `${identityBlock}
|
|
303
|
+
|
|
304
|
+
${intentBlock}
|
|
305
|
+
|
|
306
|
+
${researchBlock}
|
|
307
|
+
|
|
308
|
+
${constraintsBlock}
|
|
309
|
+
|
|
310
|
+
${executionBlock}
|
|
311
|
+
|
|
312
|
+
${trackingBlock}
|
|
313
|
+
|
|
314
|
+
${progressBlock}
|
|
315
|
+
|
|
316
|
+
${delegationBlock}
|
|
317
|
+
|
|
318
|
+
${communicationBlock}`;
|
|
319
|
+
}
|