goatcode-sh 0.0.1 → 0.1.2
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/.github/workflows/ci.yml +85 -0
- package/.github/workflows/release.yml +107 -0
- package/.opencode/plugins/goatcode.js +1 -0
- package/AGENTS.md +59 -0
- package/CONTRIBUTING.md +110 -0
- package/LICENSE +21 -0
- package/README.md +106 -12
- package/bun.lock +2081 -0
- package/bunfig.toml +3 -0
- package/dist/agents/advisor/config.d.ts +4 -0
- package/dist/agents/advisor/index.d.ts +2 -0
- package/dist/agents/advisor/plugin.d.ts +1 -0
- package/dist/agents/advisor/prompt-meta.d.ts +2 -0
- package/dist/agents/advisor/prompt.d.ts +1 -0
- package/dist/agents/agent-builder.d.ts +10 -0
- package/dist/agents/agent-registry.d.ts +8 -0
- package/dist/agents/builtin-agents.d.ts +2 -0
- package/dist/agents/deep-worker/config.d.ts +4 -0
- package/dist/agents/deep-worker/index.d.ts +2 -0
- package/dist/agents/deep-worker/plugin.d.ts +1 -0
- package/dist/agents/deep-worker/prompt-meta.d.ts +2 -0
- package/dist/agents/deep-worker/prompt.d.ts +1 -0
- package/dist/agents/explorer/config.d.ts +4 -0
- package/dist/agents/explorer/index.d.ts +2 -0
- package/dist/agents/explorer/plugin.d.ts +1 -0
- package/dist/agents/explorer/prompt-meta.d.ts +2 -0
- package/dist/agents/explorer/prompt.d.ts +1 -0
- package/dist/agents/fallback-chains.d.ts +2 -0
- package/dist/agents/index.d.ts +14 -0
- package/dist/agents/orchestrator/config.d.ts +4 -0
- package/dist/agents/orchestrator/index.d.ts +2 -0
- package/dist/agents/orchestrator/plugin.d.ts +1 -0
- package/dist/agents/orchestrator/prompt-meta.d.ts +2 -0
- package/dist/agents/orchestrator/prompt.d.ts +1 -0
- package/dist/agents/planner/config.d.ts +4 -0
- package/dist/agents/planner/index.d.ts +2 -0
- package/dist/agents/planner/plugin.d.ts +1 -0
- package/dist/agents/planner/prompt-meta.d.ts +2 -0
- package/dist/agents/planner/prompt.d.ts +1 -0
- package/dist/agents/prompt-meta.d.ts +11 -0
- package/dist/agents/prompt-registry.d.ts +4 -0
- package/dist/agents/researcher/config.d.ts +4 -0
- package/dist/agents/researcher/index.d.ts +2 -0
- package/dist/agents/researcher/plugin.d.ts +1 -0
- package/dist/agents/researcher/prompt-meta.d.ts +2 -0
- package/dist/agents/researcher/prompt.d.ts +1 -0
- package/dist/agents/tool-restrictions.d.ts +7 -0
- package/dist/agents/worker/config.d.ts +4 -0
- package/dist/agents/worker/index.d.ts +2 -0
- package/dist/agents/worker/plugin.d.ts +1 -0
- package/dist/agents/worker/prompt-meta.d.ts +2 -0
- package/dist/agents/worker/prompt.d.ts +1 -0
- package/dist/bootstrap.d.ts +3 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/commands/install.d.ts +12 -0
- package/dist/cli/commands/update.d.ts +1 -0
- package/dist/cli/config-generator.d.ts +26 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/define-config.d.ts +27 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/loader.d.ts +3 -0
- package/dist/config/paths.d.ts +4 -0
- package/dist/config/schema.d.ts +273 -0
- package/dist/config/validator.d.ts +9 -0
- package/dist/features/auto-update/index.d.ts +3 -0
- package/dist/features/auto-update/plugin.d.ts +2 -0
- package/dist/features/auto-update/update-checker.d.ts +7 -0
- package/dist/features/background-agent/concurrency.d.ts +10 -0
- package/dist/features/background-agent/index.d.ts +6 -0
- package/dist/features/background-agent/manager.d.ts +18 -0
- package/dist/features/background-agent/poller.d.ts +17 -0
- package/dist/features/background-agent/singleton.d.ts +7 -0
- package/dist/features/background-agent/spawner.d.ts +6 -0
- package/dist/features/background-agent/types.d.ts +18 -0
- package/dist/features/builtin-features.d.ts +2 -0
- package/dist/features/categories/category-config.d.ts +9 -0
- package/dist/features/categories/category-resolver.d.ts +6 -0
- package/dist/features/categories/index.d.ts +3 -0
- package/dist/features/categories/prompt-appends.d.ts +10 -0
- package/dist/features/loops/file-store.d.ts +22 -0
- package/dist/features/loops/handler.d.ts +9 -0
- package/dist/features/loops/index.d.ts +5 -0
- package/dist/features/loops/memory-store.d.ts +11 -0
- package/dist/features/loops/plugin.d.ts +34 -0
- package/dist/features/loops/shared/event-utils.d.ts +7 -0
- package/dist/features/loops/state.d.ts +22 -0
- package/dist/features/prompt-builder/agent-table-builder.d.ts +6 -0
- package/dist/features/prompt-builder/category-section-builder.d.ts +2 -0
- package/dist/features/prompt-builder/dynamic-prompt-builder.d.ts +9 -0
- package/dist/features/prompt-builder/index.d.ts +7 -0
- package/dist/features/prompt-builder/skill-section-builder.d.ts +5 -0
- package/dist/features/session-state/index.d.ts +5 -0
- package/dist/features/session-state/session-cursor.d.ts +13 -0
- package/dist/features/session-state/session-store.d.ts +12 -0
- package/dist/features/session-state/session-tools-store.d.ts +4 -0
- package/dist/features/skills/builtin/git-master.d.ts +2 -0
- package/dist/features/skills/index.d.ts +10 -0
- package/dist/features/skills/skill-loader.d.ts +22 -0
- package/dist/features/skills/skill-merger.d.ts +2 -0
- package/dist/features/slash-commands/command-registry.d.ts +3 -0
- package/dist/features/slash-commands/commands/cancel-loop.d.ts +2 -0
- package/dist/features/slash-commands/commands/handoff.d.ts +2 -0
- package/dist/features/slash-commands/commands/init-deep.d.ts +2 -0
- package/dist/features/slash-commands/commands/loop.d.ts +2 -0
- package/dist/features/slash-commands/commands/start-work.d.ts +2 -0
- package/dist/features/slash-commands/commands/stop-continuation.d.ts +2 -0
- package/dist/features/slash-commands/index.d.ts +2 -0
- package/dist/features/slash-commands/types.d.ts +5 -0
- package/dist/hooks/anthropic-effort/handler.d.ts +5 -0
- package/dist/hooks/anthropic-effort/index.d.ts +3 -0
- package/dist/hooks/anthropic-effort/plugin.d.ts +1 -0
- package/dist/hooks/builtin-hooks.d.ts +2 -0
- package/dist/hooks/comment-checker/handler.d.ts +5 -0
- package/dist/hooks/comment-checker/index.d.ts +2 -0
- package/dist/hooks/comment-checker/plugin.d.ts +1 -0
- package/dist/hooks/compaction-context/handler.d.ts +2 -0
- package/dist/hooks/compaction-context/index.d.ts +2 -0
- package/dist/hooks/compaction-context/plugin.d.ts +1 -0
- package/dist/hooks/compaction-todo-preserver/handler.d.ts +4 -0
- package/dist/hooks/compaction-todo-preserver/index.d.ts +2 -0
- package/dist/hooks/compaction-todo-preserver/plugin.d.ts +1 -0
- package/dist/hooks/context-injector/handlers/agents.d.ts +1 -0
- package/dist/hooks/context-injector/handlers/readme.d.ts +1 -0
- package/dist/hooks/context-injector/handlers/rules.d.ts +1 -0
- package/dist/hooks/context-injector/index.d.ts +4 -0
- package/dist/hooks/context-injector/plugin.d.ts +1 -0
- package/dist/hooks/context-window-limit/handler.d.ts +6 -0
- package/dist/hooks/context-window-limit/index.d.ts +2 -0
- package/dist/hooks/context-window-limit/plugin.d.ts +1 -0
- package/dist/hooks/delegate-retry/handler.d.ts +16 -0
- package/dist/hooks/delegate-retry/index.d.ts +3 -0
- package/dist/hooks/delegate-retry/plugin.d.ts +1 -0
- package/dist/hooks/edit-error/handler.d.ts +6 -0
- package/dist/hooks/edit-error/index.d.ts +2 -0
- package/dist/hooks/edit-error/plugin.d.ts +1 -0
- package/dist/hooks/empty-response-detector/handler.d.ts +5 -0
- package/dist/hooks/empty-response-detector/index.d.ts +2 -0
- package/dist/hooks/empty-response-detector/plugin.d.ts +1 -0
- package/dist/hooks/error-diagnostics/handler.d.ts +6 -0
- package/dist/hooks/error-diagnostics/patterns.d.ts +3 -0
- package/dist/hooks/error-diagnostics/plugin.d.ts +1 -0
- package/dist/hooks/error-diagnostics/types.d.ts +14 -0
- package/dist/hooks/foreground-fallback/handler.d.ts +22 -0
- package/dist/hooks/foreground-fallback/index.d.ts +2 -0
- package/dist/hooks/foreground-fallback/plugin.d.ts +1 -0
- package/dist/hooks/hashline-diff-enhancer/handler.d.ts +28 -0
- package/dist/hooks/hashline-diff-enhancer/index.d.ts +2 -0
- package/dist/hooks/hashline-diff-enhancer/plugin.d.ts +1 -0
- package/dist/hooks/hashline-read-enhancer/handler.d.ts +4 -0
- package/dist/hooks/hashline-read-enhancer/index.d.ts +2 -0
- package/dist/hooks/hashline-read-enhancer/plugin.d.ts +1 -0
- package/dist/hooks/hook-composer.d.ts +4 -0
- package/dist/hooks/hook-ordering.d.ts +9 -0
- package/dist/hooks/hook-types.d.ts +3 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/json-error/handler.d.ts +6 -0
- package/dist/hooks/json-error/index.d.ts +2 -0
- package/dist/hooks/json-error/plugin.d.ts +1 -0
- package/dist/hooks/keyword-detector/handler.d.ts +8 -0
- package/dist/hooks/keyword-detector/index.d.ts +3 -0
- package/dist/hooks/keyword-detector/plugin.d.ts +1 -0
- package/dist/hooks/model-fallback/handler.d.ts +21 -0
- package/dist/hooks/model-fallback/index.d.ts +2 -0
- package/dist/hooks/model-fallback/plugin.d.ts +1 -0
- package/dist/hooks/phase-reminder/handler.d.ts +5 -0
- package/dist/hooks/phase-reminder/index.d.ts +2 -0
- package/dist/hooks/phase-reminder/plugin.d.ts +1 -0
- package/dist/hooks/post-read-nudge/handler.d.ts +5 -0
- package/dist/hooks/post-read-nudge/index.d.ts +2 -0
- package/dist/hooks/post-read-nudge/plugin.d.ts +1 -0
- package/dist/hooks/preemptive-compaction/handler.d.ts +31 -0
- package/dist/hooks/preemptive-compaction/index.d.ts +2 -0
- package/dist/hooks/preemptive-compaction/plugin.d.ts +1 -0
- package/dist/hooks/runtime-fallback/handler.d.ts +21 -0
- package/dist/hooks/runtime-fallback/index.d.ts +2 -0
- package/dist/hooks/runtime-fallback/plugin.d.ts +1 -0
- package/dist/hooks/safe-hook-wrapper.d.ts +2 -0
- package/dist/hooks/session-recovery/handler.d.ts +6 -0
- package/dist/hooks/session-recovery/index.d.ts +2 -0
- package/dist/hooks/session-recovery/plugin.d.ts +1 -0
- package/dist/hooks/skill-discovery/plugin.d.ts +1 -0
- package/dist/hooks/stop-guard/handler.d.ts +4 -0
- package/dist/hooks/stop-guard/index.d.ts +2 -0
- package/dist/hooks/stop-guard/plugin.d.ts +1 -0
- package/dist/hooks/task-resume-info/handler.d.ts +4 -0
- package/dist/hooks/task-resume-info/index.d.ts +2 -0
- package/dist/hooks/task-resume-info/plugin.d.ts +1 -0
- package/dist/hooks/think-mode/handler.d.ts +4 -0
- package/dist/hooks/think-mode/index.d.ts +2 -0
- package/dist/hooks/think-mode/plugin.d.ts +1 -0
- package/dist/hooks/thinking-block-validator/handler.d.ts +4 -0
- package/dist/hooks/thinking-block-validator/index.d.ts +2 -0
- package/dist/hooks/thinking-block-validator/plugin.d.ts +1 -0
- package/dist/hooks/todo-enforcer/handler.d.ts +4 -0
- package/dist/hooks/todo-enforcer/index.d.ts +2 -0
- package/dist/hooks/todo-enforcer/plugin.d.ts +1 -0
- package/dist/hooks/todowrite-disabler/handler.d.ts +6 -0
- package/dist/hooks/todowrite-disabler/index.d.ts +2 -0
- package/dist/hooks/todowrite-disabler/plugin.d.ts +1 -0
- package/dist/hooks/tool-output-truncator/handler.d.ts +4 -0
- package/dist/hooks/tool-output-truncator/index.d.ts +2 -0
- package/dist/hooks/tool-output-truncator/plugin.d.ts +1 -0
- package/dist/hooks/write-file-guard/handler.d.ts +7 -0
- package/dist/hooks/write-file-guard/index.d.ts +2 -0
- package/dist/hooks/write-file-guard/plugin.d.ts +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +8547 -0
- package/dist/plugin/compositor.d.ts +9 -0
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin-api/define-plugin.d.ts +33 -0
- package/dist/plugin-api/index.d.ts +3 -0
- package/dist/plugin-api/types.d.ts +10 -0
- package/dist/registry/agent-aggregator.d.ts +3 -0
- package/dist/registry/contribution-aggregator.d.ts +10 -0
- package/dist/registry/dependency-resolver.d.ts +3 -0
- package/dist/registry/hook-aggregator.d.ts +2 -0
- package/dist/registry/index.d.ts +6 -0
- package/dist/registry/plugin-registry.d.ts +16 -0
- package/dist/registry/tool-aggregator.d.ts +3 -0
- package/dist/registry/types.d.ts +9 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/shared/data-path.d.ts +4 -0
- package/dist/shared/deep-merge.d.ts +13 -0
- package/dist/shared/fallback-chain.d.ts +1 -0
- package/dist/shared/index.d.ts +19 -0
- package/dist/shared/logger.d.ts +4 -0
- package/dist/shared/model-availability.d.ts +1 -0
- package/dist/shared/model-normalization.d.ts +6 -0
- package/dist/shared/model-prefix-map.d.ts +11 -0
- package/dist/shared/model-resolution-pipeline.d.ts +14 -0
- package/dist/shared/models-dev.d.ts +29 -0
- package/dist/shared/provider-discovery.d.ts +28 -0
- package/dist/shared/provider-registry.d.ts +16 -0
- package/dist/shared/safe-create-hook.d.ts +3 -0
- package/dist/shared/snake-case.d.ts +1 -0
- package/dist/shared/truncate-description.d.ts +1 -0
- package/dist/test-utils/index.d.ts +6 -0
- package/dist/test-utils/mock-agent-config.d.ts +5 -0
- package/dist/test-utils/mock-hook-inputs.d.ts +20 -0
- package/dist/test-utils/mock-hook-outputs.d.ts +20 -0
- package/dist/test-utils/mock-plugin-context.d.ts +6 -0
- package/dist/test-utils/mock-sdk-client.d.ts +41 -0
- package/dist/test-utils/mock-tool-context.d.ts +6 -0
- package/dist/tools/ast-grep/index.d.ts +4 -0
- package/dist/tools/ast-grep/replace/handler.d.ts +7 -0
- package/dist/tools/ast-grep/replace/plugin.d.ts +1 -0
- package/dist/tools/ast-grep/replace/types.d.ts +37 -0
- package/dist/tools/ast-grep/search/handler.d.ts +14 -0
- package/dist/tools/ast-grep/search/plugin.d.ts +1 -0
- package/dist/tools/ast-grep/search/types.d.ts +37 -0
- package/dist/tools/background-task/cancel/handler.d.ts +4 -0
- package/dist/tools/background-task/cancel/plugin.d.ts +2 -0
- package/dist/tools/background-task/cancel/types.d.ts +4 -0
- package/dist/tools/background-task/index.d.ts +2 -0
- package/dist/tools/background-task/output/handler.d.ts +3 -0
- package/dist/tools/background-task/output/plugin.d.ts +2 -0
- package/dist/tools/background-task/output/types.d.ts +11 -0
- package/dist/tools/bridge.d.ts +7 -0
- package/dist/tools/builtin-tools.d.ts +2 -0
- package/dist/tools/delegate-task/category-resolver.d.ts +4 -0
- package/dist/tools/delegate-task/constants.d.ts +3 -0
- package/dist/tools/delegate-task/executor.d.ts +10 -0
- package/dist/tools/delegate-task/handler.d.ts +3 -0
- package/dist/tools/delegate-task/index.d.ts +7 -0
- package/dist/tools/delegate-task/plugin.d.ts +2 -0
- package/dist/tools/delegate-task/types.d.ts +17 -0
- package/dist/tools/glob/handler.d.ts +7 -0
- package/dist/tools/glob/index.d.ts +2 -0
- package/dist/tools/glob/plugin.d.ts +1 -0
- package/dist/tools/glob/types.d.ts +7 -0
- package/dist/tools/grep/handler.d.ts +13 -0
- package/dist/tools/grep/index.d.ts +2 -0
- package/dist/tools/grep/plugin.d.ts +1 -0
- package/dist/tools/grep/types.d.ts +15 -0
- package/dist/tools/hashline-edit/constants.d.ts +4 -0
- package/dist/tools/hashline-edit/edit-operations.d.ts +4 -0
- package/dist/tools/hashline-edit/handler.d.ts +5 -0
- package/dist/tools/hashline-edit/hash-computation.d.ts +2 -0
- package/dist/tools/hashline-edit/index.d.ts +5 -0
- package/dist/tools/hashline-edit/plugin.d.ts +3 -0
- package/dist/tools/hashline-edit/types.d.ts +21 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/look-at/handler.d.ts +6 -0
- package/dist/tools/look-at/index.d.ts +3 -0
- package/dist/tools/look-at/plugin.d.ts +1 -0
- package/dist/tools/look-at/types.d.ts +9 -0
- package/dist/tools/lsp/client.d.ts +7 -0
- package/dist/tools/lsp/diagnostics/handler.d.ts +2 -0
- package/dist/tools/lsp/diagnostics/plugin.d.ts +1 -0
- package/dist/tools/lsp/diagnostics/types.d.ts +13 -0
- package/dist/tools/lsp/find-references/handler.d.ts +2 -0
- package/dist/tools/lsp/find-references/plugin.d.ts +1 -0
- package/dist/tools/lsp/find-references/types.d.ts +8 -0
- package/dist/tools/lsp/goto-definition/handler.d.ts +2 -0
- package/dist/tools/lsp/goto-definition/plugin.d.ts +1 -0
- package/dist/tools/lsp/goto-definition/types.d.ts +7 -0
- package/dist/tools/lsp/index.d.ts +6 -0
- package/dist/tools/lsp/prepare-rename/handler.d.ts +2 -0
- package/dist/tools/lsp/prepare-rename/plugin.d.ts +1 -0
- package/dist/tools/lsp/prepare-rename/types.d.ts +7 -0
- package/dist/tools/lsp/rename/handler.d.ts +2 -0
- package/dist/tools/lsp/rename/plugin.d.ts +1 -0
- package/dist/tools/lsp/rename/types.d.ts +8 -0
- package/dist/tools/lsp/symbols/handler.d.ts +2 -0
- package/dist/tools/lsp/symbols/plugin.d.ts +1 -0
- package/dist/tools/lsp/symbols/types.d.ts +11 -0
- package/dist/tools/session-manager/client-context.d.ts +3 -0
- package/dist/tools/session-manager/index.d.ts +5 -0
- package/dist/tools/session-manager/info/handler.d.ts +3 -0
- package/dist/tools/session-manager/info/plugin.d.ts +1 -0
- package/dist/tools/session-manager/info/types.d.ts +3 -0
- package/dist/tools/session-manager/list/handler.d.ts +3 -0
- package/dist/tools/session-manager/list/plugin.d.ts +1 -0
- package/dist/tools/session-manager/list/types.d.ts +6 -0
- package/dist/tools/session-manager/read/handler.d.ts +3 -0
- package/dist/tools/session-manager/read/plugin.d.ts +1 -0
- package/dist/tools/session-manager/read/types.d.ts +6 -0
- package/dist/tools/session-manager/search/handler.d.ts +3 -0
- package/dist/tools/session-manager/search/plugin.d.ts +1 -0
- package/dist/tools/session-manager/search/types.d.ts +6 -0
- package/dist/tools/session-manager/session-formatter.d.ts +29 -0
- package/dist/tools/session-manager/types.d.ts +36 -0
- package/dist/tools/shared/constants.d.ts +3 -0
- package/dist/tools/skill/handler.d.ts +4 -0
- package/dist/tools/skill/index.d.ts +3 -0
- package/dist/tools/skill/plugin.d.ts +1 -0
- package/dist/tools/skill/types.d.ts +12 -0
- package/dist/tools/skill-mcp/handler.d.ts +5 -0
- package/dist/tools/skill-mcp/index.d.ts +3 -0
- package/dist/tools/skill-mcp/plugin.d.ts +1 -0
- package/dist/tools/skill-mcp/types.d.ts +13 -0
- package/dist/tools/task/create/handler.d.ts +2 -0
- package/dist/tools/task/create/plugin.d.ts +1 -0
- package/dist/tools/task/format-task.d.ts +2 -0
- package/dist/tools/task/get/handler.d.ts +2 -0
- package/dist/tools/task/get/plugin.d.ts +1 -0
- package/dist/tools/task/index.d.ts +4 -0
- package/dist/tools/task/list/handler.d.ts +2 -0
- package/dist/tools/task/list/plugin.d.ts +1 -0
- package/dist/tools/task/storage.d.ts +7 -0
- package/dist/tools/task/types.d.ts +84 -0
- package/dist/tools/task/update/handler.d.ts +2 -0
- package/dist/tools/task/update/plugin.d.ts +1 -0
- package/dist/tools/tool-builder.d.ts +7 -0
- package/dist/tools/tool-registry-adapter.d.ts +3 -0
- package/dist/types/agent.d.ts +40 -0
- package/dist/types/category.d.ts +22 -0
- package/dist/types/config.d.ts +23 -0
- package/dist/types/hook.d.ts +18 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/plugin.d.ts +41 -0
- package/dist/types/tool.d.ts +7 -0
- package/eval/README.md +160 -0
- package/eval/ablation-config.yaml +43 -0
- package/eval/assertions/ablation-scorer.ts +81 -0
- package/eval/assertions/hook-impact.ts +152 -0
- package/eval/assertions/task-completion.ts +65 -0
- package/eval/assertions/tool-accuracy.ts +56 -0
- package/eval/promptfooconfig.yaml +42 -0
- package/eval/providers/opencode-baseline.ts +63 -0
- package/eval/providers/opencode-client.ts +112 -0
- package/eval/providers/opencode-provider.ts +66 -0
- package/eval/spike/config.yaml +13 -0
- package/eval/spike/provider.ts +15 -0
- package/npm-reserve/README.md +19 -0
- package/npm-reserve/package.json +24 -0
- package/opencode.json +6 -0
- package/package.json +47 -8
- package/src/agents/advisor/config.ts +6 -0
- package/src/agents/advisor/index.ts +2 -0
- package/src/agents/advisor/plugin.test.ts +48 -0
- package/src/agents/advisor/plugin.ts +17 -0
- package/src/agents/advisor/prompt-meta.ts +14 -0
- package/src/agents/advisor/prompt.ts +93 -0
- package/src/agents/agent-builder.test.ts +66 -0
- package/src/agents/agent-builder.ts +97 -0
- package/src/agents/agent-plugins.test.ts +98 -0
- package/src/agents/agent-registry.ts +25 -0
- package/src/agents/builtin-agents.ts +18 -0
- package/src/agents/deep-worker/config.ts +6 -0
- package/src/agents/deep-worker/index.ts +2 -0
- package/src/agents/deep-worker/plugin.test.ts +31 -0
- package/src/agents/deep-worker/plugin.ts +16 -0
- package/src/agents/deep-worker/prompt-meta.ts +14 -0
- package/src/agents/deep-worker/prompt.ts +121 -0
- package/src/agents/disabled/analyst/config.ts +6 -0
- package/src/agents/disabled/analyst/index.ts +2 -0
- package/src/agents/disabled/analyst/plugin.ts +16 -0
- package/src/agents/disabled/analyst/prompt.ts +1 -0
- package/src/agents/disabled/executor/config.ts +9 -0
- package/src/agents/disabled/executor/index.ts +2 -0
- package/src/agents/disabled/executor/plugin.ts +16 -0
- package/src/agents/disabled/executor/prompt.ts +1 -0
- package/src/agents/disabled/inspector/config.ts +6 -0
- package/src/agents/disabled/inspector/index.ts +2 -0
- package/src/agents/disabled/inspector/plugin.ts +18 -0
- package/src/agents/disabled/inspector/prompt.ts +1 -0
- package/src/agents/disabled/reviewer/config.ts +6 -0
- package/src/agents/disabled/reviewer/index.ts +2 -0
- package/src/agents/disabled/reviewer/plugin.ts +18 -0
- package/src/agents/disabled/reviewer/prompt.ts +1 -0
- package/src/agents/explorer/config.ts +6 -0
- package/src/agents/explorer/index.ts +2 -0
- package/src/agents/explorer/plugin.test.ts +36 -0
- package/src/agents/explorer/plugin.ts +15 -0
- package/src/agents/explorer/prompt-meta.ts +14 -0
- package/src/agents/explorer/prompt.ts +96 -0
- package/src/agents/fallback-chains.ts +13 -0
- package/src/agents/index.ts +18 -0
- package/src/agents/model-resolution.test.ts +79 -0
- package/src/agents/orchestrator/config.ts +10 -0
- package/src/agents/orchestrator/index.ts +2 -0
- package/src/agents/orchestrator/plugin.test.ts +31 -0
- package/src/agents/orchestrator/plugin.ts +16 -0
- package/src/agents/orchestrator/prompt-meta.ts +14 -0
- package/src/agents/orchestrator/prompt.ts +143 -0
- package/src/agents/planner/config.ts +6 -0
- package/src/agents/planner/index.ts +2 -0
- package/src/agents/planner/plugin.test.ts +31 -0
- package/src/agents/planner/plugin.ts +16 -0
- package/src/agents/planner/prompt-meta.ts +14 -0
- package/src/agents/planner/prompt.ts +138 -0
- package/src/agents/prompt-meta.ts +12 -0
- package/src/agents/prompt-registry.test.ts +98 -0
- package/src/agents/prompt-registry.ts +22 -0
- package/src/agents/researcher/config.ts +6 -0
- package/src/agents/researcher/index.ts +2 -0
- package/src/agents/researcher/plugin.test.ts +31 -0
- package/src/agents/researcher/plugin.ts +16 -0
- package/src/agents/researcher/prompt-meta.ts +14 -0
- package/src/agents/researcher/prompt.ts +116 -0
- package/src/agents/tool-restrictions.ts +87 -0
- package/src/agents/worker/config.ts +6 -0
- package/src/agents/worker/index.ts +2 -0
- package/src/agents/worker/plugin.test.ts +31 -0
- package/src/agents/worker/plugin.ts +15 -0
- package/src/agents/worker/prompt-meta.ts +14 -0
- package/src/agents/worker/prompt.ts +83 -0
- package/src/bootstrap.integration.test.ts +168 -0
- package/src/bootstrap.ts +171 -0
- package/src/cli/cli.ts +42 -0
- package/src/cli/commands/install.test.ts +40 -0
- package/src/cli/commands/install.ts +125 -0
- package/src/cli/commands/update.test.ts +84 -0
- package/src/cli/commands/update.ts +45 -0
- package/src/cli/config-generator.test.ts +178 -0
- package/src/cli/config-generator.ts +119 -0
- package/src/cli/index.test.ts +34 -0
- package/src/cli/index.ts +4 -0
- package/src/config/defaults.ts +24 -0
- package/src/config/define-config.ts +38 -0
- package/src/config/index.ts +6 -0
- package/src/config/loader.test.ts +218 -0
- package/src/config/loader.ts +89 -0
- package/src/config/paths.ts +30 -0
- package/src/config/schema.test.ts +69 -0
- package/src/config/schema.ts +57 -0
- package/src/config/validator.ts +24 -0
- package/src/features/auto-update/auto-update.test.ts +105 -0
- package/src/features/auto-update/index.ts +4 -0
- package/src/features/auto-update/plugin.ts +45 -0
- package/src/features/auto-update/update-checker.ts +66 -0
- package/src/features/background-agent/concurrency.test.ts +65 -0
- package/src/features/background-agent/concurrency.ts +44 -0
- package/src/features/background-agent/index.ts +12 -0
- package/src/features/background-agent/manager.ts +214 -0
- package/src/features/background-agent/poller.test.ts +33 -0
- package/src/features/background-agent/poller.ts +75 -0
- package/src/features/background-agent/singleton.ts +26 -0
- package/src/features/background-agent/spawner.ts +51 -0
- package/src/features/background-agent/types.ts +20 -0
- package/src/features/builtin-features.ts +5 -0
- package/src/features/categories/categories.test.ts +68 -0
- package/src/features/categories/category-config.ts +70 -0
- package/src/features/categories/category-resolver.ts +36 -0
- package/src/features/categories/index.ts +8 -0
- package/src/features/categories/prompt-appends.ts +38 -0
- package/src/features/loops/file-store.ts +151 -0
- package/src/features/loops/handler.ts +89 -0
- package/src/features/loops/index.ts +28 -0
- package/src/features/loops/loops.test.ts +175 -0
- package/src/features/loops/memory-store.ts +53 -0
- package/src/features/loops/plugin.ts +107 -0
- package/src/features/loops/shared/event-utils.ts +50 -0
- package/src/features/loops/state.ts +44 -0
- package/src/features/prompt-builder/agent-table-builder.ts +23 -0
- package/src/features/prompt-builder/category-section-builder.ts +21 -0
- package/src/features/prompt-builder/dynamic-prompt-builder.ts +42 -0
- package/src/features/prompt-builder/index.ts +7 -0
- package/src/features/prompt-builder/prompt-builder.test.ts +244 -0
- package/src/features/prompt-builder/skill-section-builder.ts +25 -0
- package/src/features/session-state/index.ts +17 -0
- package/src/features/session-state/session-cursor.test.ts +137 -0
- package/src/features/session-state/session-cursor.ts +80 -0
- package/src/features/session-state/session-store.test.ts +82 -0
- package/src/features/session-state/session-store.ts +37 -0
- package/src/features/session-state/session-tools-store.ts +18 -0
- package/src/features/skills/builtin/git-master.ts +109 -0
- package/src/features/skills/index.ts +97 -0
- package/src/features/skills/skill-loader.ts +133 -0
- package/src/features/skills/skill-merger.ts +15 -0
- package/src/features/skills/skills.test.ts +120 -0
- package/src/features/slash-commands/command-registry.ts +36 -0
- package/src/features/slash-commands/commands/cancel-loop.ts +17 -0
- package/src/features/slash-commands/commands/handoff.ts +59 -0
- package/src/features/slash-commands/commands/init-deep.ts +40 -0
- package/src/features/slash-commands/commands/loop.ts +39 -0
- package/src/features/slash-commands/commands/start-work.ts +39 -0
- package/src/features/slash-commands/commands/stop-continuation.ts +21 -0
- package/src/features/slash-commands/index.ts +2 -0
- package/src/features/slash-commands/slash-commands.test.ts +68 -0
- package/src/features/slash-commands/types.ts +5 -0
- package/src/hooks/anthropic-effort/handler.test.ts +156 -0
- package/src/hooks/anthropic-effort/handler.ts +64 -0
- package/src/hooks/anthropic-effort/index.ts +3 -0
- package/src/hooks/anthropic-effort/plugin.ts +17 -0
- package/src/hooks/builtin-hooks.ts +64 -0
- package/src/hooks/comment-checker/handler.test.ts +65 -0
- package/src/hooks/comment-checker/handler.ts +60 -0
- package/src/hooks/comment-checker/index.ts +2 -0
- package/src/hooks/comment-checker/plugin.ts +15 -0
- package/src/hooks/compaction-context/handler.test.ts +160 -0
- package/src/hooks/compaction-context/handler.ts +179 -0
- package/src/hooks/compaction-context/index.ts +5 -0
- package/src/hooks/compaction-context/plugin.ts +40 -0
- package/src/hooks/compaction-todo-preserver/handler.test.ts +155 -0
- package/src/hooks/compaction-todo-preserver/handler.ts +129 -0
- package/src/hooks/compaction-todo-preserver/index.ts +2 -0
- package/src/hooks/compaction-todo-preserver/plugin.ts +18 -0
- package/src/hooks/context-injection.test.ts +124 -0
- package/src/hooks/context-injector/handlers/agents.test.ts +90 -0
- package/src/hooks/context-injector/handlers/agents.ts +81 -0
- package/src/hooks/context-injector/handlers/readme.ts +55 -0
- package/src/hooks/context-injector/handlers/rules.ts +62 -0
- package/src/hooks/context-injector/index.ts +4 -0
- package/src/hooks/context-injector/plugin.ts +56 -0
- package/src/hooks/context-window-limit/handler.test.ts +103 -0
- package/src/hooks/context-window-limit/handler.ts +128 -0
- package/src/hooks/context-window-limit/index.ts +6 -0
- package/src/hooks/context-window-limit/plugin.ts +15 -0
- package/src/hooks/continuation.test.ts +103 -0
- package/src/hooks/delegate-retry/handler.test.ts +212 -0
- package/src/hooks/delegate-retry/handler.ts +137 -0
- package/src/hooks/delegate-retry/index.ts +8 -0
- package/src/hooks/delegate-retry/plugin.ts +15 -0
- package/src/hooks/edit-error/handler.test.ts +82 -0
- package/src/hooks/edit-error/handler.ts +50 -0
- package/src/hooks/edit-error/index.ts +6 -0
- package/src/hooks/edit-error/plugin.ts +15 -0
- package/src/hooks/empty-response-detector/handler.test.ts +133 -0
- package/src/hooks/empty-response-detector/handler.ts +62 -0
- package/src/hooks/empty-response-detector/index.ts +2 -0
- package/src/hooks/empty-response-detector/plugin.ts +18 -0
- package/src/hooks/error-diagnostics/error-diagnostics.test.ts +116 -0
- package/src/hooks/error-diagnostics/handler.test.ts +147 -0
- package/src/hooks/error-diagnostics/handler.ts +135 -0
- package/src/hooks/error-diagnostics/patterns.ts +93 -0
- package/src/hooks/error-diagnostics/plugin.ts +11 -0
- package/src/hooks/error-diagnostics/types.ts +26 -0
- package/src/hooks/error-recovery.test.ts +85 -0
- package/src/hooks/foreground-fallback/handler.test.ts +229 -0
- package/src/hooks/foreground-fallback/handler.ts +294 -0
- package/src/hooks/foreground-fallback/index.ts +2 -0
- package/src/hooks/foreground-fallback/plugin.ts +18 -0
- package/src/hooks/hashline-diff-enhancer/handler.test.ts +166 -0
- package/src/hooks/hashline-diff-enhancer/handler.ts +186 -0
- package/src/hooks/hashline-diff-enhancer/index.ts +6 -0
- package/src/hooks/hashline-diff-enhancer/plugin.ts +24 -0
- package/src/hooks/hashline-read-enhancer/handler.test.ts +121 -0
- package/src/hooks/hashline-read-enhancer/handler.ts +165 -0
- package/src/hooks/hashline-read-enhancer/index.ts +2 -0
- package/src/hooks/hashline-read-enhancer/plugin.ts +18 -0
- package/src/hooks/hook-composer.test.ts +52 -0
- package/src/hooks/hook-composer.ts +17 -0
- package/src/hooks/hook-composition.integration.test.ts +274 -0
- package/src/hooks/hook-ordering.ts +41 -0
- package/src/hooks/hook-types.ts +22 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/json-error/handler.test.ts +95 -0
- package/src/hooks/json-error/handler.ts +82 -0
- package/src/hooks/json-error/index.ts +6 -0
- package/src/hooks/json-error/plugin.ts +15 -0
- package/src/hooks/keyword-detector/handler.test.ts +113 -0
- package/src/hooks/keyword-detector/handler.ts +73 -0
- package/src/hooks/keyword-detector/index.ts +8 -0
- package/src/hooks/keyword-detector/plugin.ts +24 -0
- package/src/hooks/model-fallback/handler.test.ts +163 -0
- package/src/hooks/model-fallback/handler.ts +178 -0
- package/src/hooks/model-fallback/index.ts +2 -0
- package/src/hooks/model-fallback/plugin.ts +11 -0
- package/src/hooks/model-management.test.ts +121 -0
- package/src/hooks/phase-reminder/handler.test.ts +105 -0
- package/src/hooks/phase-reminder/handler.ts +54 -0
- package/src/hooks/phase-reminder/index.ts +2 -0
- package/src/hooks/phase-reminder/plugin.ts +18 -0
- package/src/hooks/post-read-nudge/handler.test.ts +106 -0
- package/src/hooks/post-read-nudge/handler.ts +28 -0
- package/src/hooks/post-read-nudge/index.ts +2 -0
- package/src/hooks/post-read-nudge/plugin.ts +18 -0
- package/src/hooks/preemptive-compaction/handler.test.ts +130 -0
- package/src/hooks/preemptive-compaction/handler.ts +84 -0
- package/src/hooks/preemptive-compaction/index.ts +2 -0
- package/src/hooks/preemptive-compaction/plugin.ts +15 -0
- package/src/hooks/productivity.test.ts +332 -0
- package/src/hooks/quality.test.ts +330 -0
- package/src/hooks/runtime-fallback/handler.test.ts +142 -0
- package/src/hooks/runtime-fallback/handler.ts +171 -0
- package/src/hooks/runtime-fallback/index.ts +2 -0
- package/src/hooks/runtime-fallback/plugin.ts +13 -0
- package/src/hooks/safe-hook-wrapper.test.ts +35 -0
- package/src/hooks/safe-hook-wrapper.ts +12 -0
- package/src/hooks/session-recovery/handler.test.ts +88 -0
- package/src/hooks/session-recovery/handler.ts +87 -0
- package/src/hooks/session-recovery/index.ts +6 -0
- package/src/hooks/session-recovery/plugin.ts +15 -0
- package/src/hooks/skill-discovery/plugin.ts +45 -0
- package/src/hooks/stop-guard/handler.test.ts +147 -0
- package/src/hooks/stop-guard/handler.ts +127 -0
- package/src/hooks/stop-guard/index.ts +2 -0
- package/src/hooks/stop-guard/plugin.ts +15 -0
- package/src/hooks/task-hooks.test.ts +324 -0
- package/src/hooks/task-resume-info/handler.test.ts +180 -0
- package/src/hooks/task-resume-info/handler.ts +61 -0
- package/src/hooks/task-resume-info/index.ts +2 -0
- package/src/hooks/task-resume-info/plugin.ts +15 -0
- package/src/hooks/think-mode/handler.test.ts +139 -0
- package/src/hooks/think-mode/handler.ts +50 -0
- package/src/hooks/think-mode/index.ts +2 -0
- package/src/hooks/think-mode/plugin.ts +15 -0
- package/src/hooks/thinking-block-validator/handler.test.ts +79 -0
- package/src/hooks/thinking-block-validator/handler.ts +93 -0
- package/src/hooks/thinking-block-validator/index.ts +2 -0
- package/src/hooks/thinking-block-validator/plugin.ts +18 -0
- package/src/hooks/todo-enforcer/handler.test.ts +153 -0
- package/src/hooks/todo-enforcer/handler.ts +100 -0
- package/src/hooks/todo-enforcer/index.ts +2 -0
- package/src/hooks/todo-enforcer/plugin.ts +15 -0
- package/src/hooks/todowrite-disabler/handler.test.ts +119 -0
- package/src/hooks/todowrite-disabler/handler.ts +50 -0
- package/src/hooks/todowrite-disabler/index.ts +6 -0
- package/src/hooks/todowrite-disabler/plugin.ts +46 -0
- package/src/hooks/tool-output-truncator/handler.test.ts +113 -0
- package/src/hooks/tool-output-truncator/handler.ts +83 -0
- package/src/hooks/tool-output-truncator/index.ts +2 -0
- package/src/hooks/tool-output-truncator/plugin.ts +18 -0
- package/src/hooks/tool-output.test.ts +238 -0
- package/src/hooks/workflow-reminders.test.ts +187 -0
- package/src/hooks/write-file-guard/handler.test.ts +107 -0
- package/src/hooks/write-file-guard/handler.ts +166 -0
- package/src/hooks/write-file-guard/index.ts +2 -0
- package/src/hooks/write-file-guard/plugin.ts +23 -0
- package/src/index.ts +8 -0
- package/src/plugin/compositor.ts +99 -0
- package/src/plugin/index.ts +1 -0
- package/src/plugin-api/define-plugin.test.ts +66 -0
- package/src/plugin-api/define-plugin.ts +36 -0
- package/src/plugin-api/index.ts +26 -0
- package/src/plugin-api/types.ts +28 -0
- package/src/registry/agent-aggregator.ts +13 -0
- package/src/registry/contribution-aggregator.test.ts +62 -0
- package/src/registry/contribution-aggregator.ts +114 -0
- package/src/registry/contribution-conflicts.integration.test.ts +186 -0
- package/src/registry/dependency-resolver.test.ts +35 -0
- package/src/registry/dependency-resolver.ts +64 -0
- package/src/registry/hook-aggregator.test.ts +78 -0
- package/src/registry/hook-aggregator.ts +63 -0
- package/src/registry/index.ts +6 -0
- package/src/registry/plugin-lifecycle.integration.test.ts +94 -0
- package/src/registry/plugin-overrides.integration.test.ts +140 -0
- package/src/registry/plugin-registry.test.ts +56 -0
- package/src/registry/plugin-registry.ts +82 -0
- package/src/registry/tool-aggregator.ts +13 -0
- package/src/registry/types.ts +11 -0
- package/src/runtime/index.ts +43 -0
- package/src/shared/data-path.ts +18 -0
- package/src/shared/deep-merge.test.ts +36 -0
- package/src/shared/deep-merge.ts +61 -0
- package/src/shared/fallback-chain.ts +8 -0
- package/src/shared/index.ts +59 -0
- package/src/shared/logger.ts +54 -0
- package/src/shared/model-availability.ts +18 -0
- package/src/shared/model-normalization.test.ts +75 -0
- package/src/shared/model-normalization.ts +28 -0
- package/src/shared/model-prefix-map.test.ts +75 -0
- package/src/shared/model-prefix-map.ts +58 -0
- package/src/shared/model-resolution-pipeline.test.ts +111 -0
- package/src/shared/model-resolution-pipeline.ts +55 -0
- package/src/shared/models-dev.test.ts +277 -0
- package/src/shared/models-dev.ts +176 -0
- package/src/shared/provider-discovery.test.ts +97 -0
- package/src/shared/provider-discovery.ts +73 -0
- package/src/shared/provider-registry.test.ts +212 -0
- package/src/shared/provider-registry.ts +157 -0
- package/src/shared/safe-create-hook.ts +15 -0
- package/src/shared/snake-case.ts +7 -0
- package/src/shared/truncate-description.ts +6 -0
- package/src/test-utils/index.ts +6 -0
- package/src/test-utils/mock-agent-config.ts +13 -0
- package/src/test-utils/mock-hook-inputs.ts +148 -0
- package/src/test-utils/mock-hook-outputs.ts +153 -0
- package/src/test-utils/mock-plugin-context.test.ts +32 -0
- package/src/test-utils/mock-plugin-context.ts +21 -0
- package/src/test-utils/mock-sdk-client.ts +52 -0
- package/src/test-utils/mock-tool-context.ts +24 -0
- package/src/tools/ast-grep/index.ts +4 -0
- package/src/tools/ast-grep/replace/handler.test.ts +93 -0
- package/src/tools/ast-grep/replace/handler.ts +89 -0
- package/src/tools/ast-grep/replace/plugin.ts +10 -0
- package/src/tools/ast-grep/replace/types.ts +14 -0
- package/src/tools/ast-grep/search/handler.test.ts +94 -0
- package/src/tools/ast-grep/search/handler.ts +93 -0
- package/src/tools/ast-grep/search/plugin.ts +10 -0
- package/src/tools/ast-grep/search/types.ts +42 -0
- package/src/tools/background-task/background-task.test.ts +185 -0
- package/src/tools/background-task/cancel/handler.test.ts +141 -0
- package/src/tools/background-task/cancel/handler.ts +52 -0
- package/src/tools/background-task/cancel/plugin.ts +30 -0
- package/src/tools/background-task/cancel/types.ts +4 -0
- package/src/tools/background-task/index.ts +2 -0
- package/src/tools/background-task/output/handler.test.ts +142 -0
- package/src/tools/background-task/output/handler.ts +93 -0
- package/src/tools/background-task/output/plugin.ts +60 -0
- package/src/tools/background-task/output/types.ts +11 -0
- package/src/tools/bridge.test.ts +55 -0
- package/src/tools/bridge.ts +13 -0
- package/src/tools/builtin-tools.ts +54 -0
- package/src/tools/code-search.test.ts +203 -0
- package/src/tools/delegate-task/category-resolver.ts +18 -0
- package/src/tools/delegate-task/constants.ts +43 -0
- package/src/tools/delegate-task/delegate-task.test.ts +245 -0
- package/src/tools/delegate-task/executor.ts +157 -0
- package/src/tools/delegate-task/handler.ts +74 -0
- package/src/tools/delegate-task/index.ts +7 -0
- package/src/tools/delegate-task/plugin.ts +21 -0
- package/src/tools/delegate-task/types.ts +19 -0
- package/src/tools/glob/handler.test.ts +80 -0
- package/src/tools/glob/handler.ts +74 -0
- package/src/tools/glob/index.ts +2 -0
- package/src/tools/glob/plugin.ts +10 -0
- package/src/tools/glob/types.ts +14 -0
- package/src/tools/grep/handler.test.ts +79 -0
- package/src/tools/grep/handler.ts +104 -0
- package/src/tools/grep/index.ts +2 -0
- package/src/tools/grep/plugin.ts +10 -0
- package/src/tools/grep/types.ts +28 -0
- package/src/tools/hashline-edit/constants.ts +10 -0
- package/src/tools/hashline-edit/edit-operations.ts +115 -0
- package/src/tools/hashline-edit/handler.test.ts +105 -0
- package/src/tools/hashline-edit/handler.ts +33 -0
- package/src/tools/hashline-edit/hash-computation.ts +20 -0
- package/src/tools/hashline-edit/hashline-edit.test.ts +62 -0
- package/src/tools/hashline-edit/index.ts +5 -0
- package/src/tools/hashline-edit/plugin.ts +28 -0
- package/src/tools/hashline-edit/types.ts +42 -0
- package/src/tools/index.ts +4 -0
- package/src/tools/look-at/handler.test.ts +189 -0
- package/src/tools/look-at/handler.ts +232 -0
- package/src/tools/look-at/index.ts +3 -0
- package/src/tools/look-at/look-at.test.ts +200 -0
- package/src/tools/look-at/plugin.ts +10 -0
- package/src/tools/look-at/types.ts +17 -0
- package/src/tools/lsp/client.ts +145 -0
- package/src/tools/lsp/diagnostics/handler.test.ts +94 -0
- package/src/tools/lsp/diagnostics/handler.ts +39 -0
- package/src/tools/lsp/diagnostics/plugin.ts +10 -0
- package/src/tools/lsp/diagnostics/types.ts +15 -0
- package/src/tools/lsp/find-references/handler.test.ts +79 -0
- package/src/tools/lsp/find-references/handler.ts +38 -0
- package/src/tools/lsp/find-references/plugin.ts +10 -0
- package/src/tools/lsp/find-references/types.ts +10 -0
- package/src/tools/lsp/goto-definition/handler.test.ts +80 -0
- package/src/tools/lsp/goto-definition/handler.ts +38 -0
- package/src/tools/lsp/goto-definition/plugin.ts +10 -0
- package/src/tools/lsp/goto-definition/types.ts +9 -0
- package/src/tools/lsp/index.ts +6 -0
- package/src/tools/lsp/lsp-tools.test.ts +150 -0
- package/src/tools/lsp/prepare-rename/handler.test.ts +81 -0
- package/src/tools/lsp/prepare-rename/handler.ts +34 -0
- package/src/tools/lsp/prepare-rename/plugin.ts +10 -0
- package/src/tools/lsp/prepare-rename/types.ts +9 -0
- package/src/tools/lsp/rename/handler.test.ts +87 -0
- package/src/tools/lsp/rename/handler.ts +34 -0
- package/src/tools/lsp/rename/plugin.ts +10 -0
- package/src/tools/lsp/rename/types.ts +10 -0
- package/src/tools/lsp/symbols/handler.test.ts +108 -0
- package/src/tools/lsp/symbols/handler.ts +43 -0
- package/src/tools/lsp/symbols/plugin.ts +10 -0
- package/src/tools/lsp/symbols/types.ts +13 -0
- package/src/tools/session-manager/client-context.ts +16 -0
- package/src/tools/session-manager/index.ts +5 -0
- package/src/tools/session-manager/info/handler.test.ts +100 -0
- package/src/tools/session-manager/info/handler.ts +27 -0
- package/src/tools/session-manager/info/plugin.ts +40 -0
- package/src/tools/session-manager/info/types.ts +3 -0
- package/src/tools/session-manager/list/handler.test.ts +122 -0
- package/src/tools/session-manager/list/handler.ts +56 -0
- package/src/tools/session-manager/list/plugin.ts +52 -0
- package/src/tools/session-manager/list/types.ts +6 -0
- package/src/tools/session-manager/read/handler.test.ts +114 -0
- package/src/tools/session-manager/read/handler.ts +36 -0
- package/src/tools/session-manager/read/plugin.ts +57 -0
- package/src/tools/session-manager/read/types.ts +6 -0
- package/src/tools/session-manager/search/handler.test.ts +115 -0
- package/src/tools/session-manager/search/handler.ts +72 -0
- package/src/tools/session-manager/search/plugin.ts +57 -0
- package/src/tools/session-manager/search/types.ts +6 -0
- package/src/tools/session-manager/session-formatter.ts +315 -0
- package/src/tools/session-manager/session-manager.test.ts +254 -0
- package/src/tools/session-manager/types.ts +41 -0
- package/src/tools/shared/constants.ts +3 -0
- package/src/tools/skill/handler.test.ts +57 -0
- package/src/tools/skill/handler.ts +27 -0
- package/src/tools/skill/index.ts +3 -0
- package/src/tools/skill/plugin.ts +41 -0
- package/src/tools/skill/types.ts +14 -0
- package/src/tools/skill-mcp/handler.test.ts +68 -0
- package/src/tools/skill-mcp/handler.ts +84 -0
- package/src/tools/skill-mcp/index.ts +3 -0
- package/src/tools/skill-mcp/plugin.ts +37 -0
- package/src/tools/skill-mcp/types.ts +15 -0
- package/src/tools/skill-tools.test.ts +172 -0
- package/src/tools/task/create/handler.test.ts +64 -0
- package/src/tools/task/create/handler.ts +43 -0
- package/src/tools/task/create/plugin.ts +10 -0
- package/src/tools/task/format-task.test.ts +37 -0
- package/src/tools/task/format-task.ts +19 -0
- package/src/tools/task/get/handler.test.ts +76 -0
- package/src/tools/task/get/handler.ts +35 -0
- package/src/tools/task/get/plugin.ts +10 -0
- package/src/tools/task/index.ts +4 -0
- package/src/tools/task/list/handler.test.ts +70 -0
- package/src/tools/task/list/handler.ts +48 -0
- package/src/tools/task/list/plugin.ts +10 -0
- package/src/tools/task/storage.ts +14 -0
- package/src/tools/task/task.test.ts +165 -0
- package/src/tools/task/types.ts +51 -0
- package/src/tools/task/update/handler.test.ts +86 -0
- package/src/tools/task/update/handler.ts +54 -0
- package/src/tools/task/update/plugin.ts +10 -0
- package/src/tools/tool-builder.test.ts +32 -0
- package/src/tools/tool-builder.ts +24 -0
- package/src/tools/tool-registry-adapter.test.ts +51 -0
- package/src/tools/tool-registry-adapter.ts +19 -0
- package/src/types/agent.ts +53 -0
- package/src/types/category.ts +32 -0
- package/src/types/config.ts +26 -0
- package/src/types/hook.ts +44 -0
- package/src/types/index.ts +12 -0
- package/src/types/plugin.ts +47 -0
- package/src/types/tool.ts +10 -0
- package/test-setup.ts +8 -0
- package/tsconfig.json +20 -0
- /package/{index.js → npm-reserve/index.js} +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export const DEEP_WORKER_PROMPT = `# Role
|
|
2
|
+
You are GoatCode's autonomous deep executor.
|
|
3
|
+
You receive goals, not hand-holding.
|
|
4
|
+
|
|
5
|
+
Your responsibility is end-to-end delivery: understand, implement, verify, and report with evidence.
|
|
6
|
+
|
|
7
|
+
# Operating Principles
|
|
8
|
+
1. Exploration before modification.
|
|
9
|
+
2. Root cause over symptom patching.
|
|
10
|
+
3. Minimal viable change over broad refactor.
|
|
11
|
+
4. Evidence before completion claims.
|
|
12
|
+
5. Finish the assigned goal fully, not partially.
|
|
13
|
+
|
|
14
|
+
# Autonomous Workflow
|
|
15
|
+
|
|
16
|
+
## Phase 1: Understand the Problem
|
|
17
|
+
- Read relevant code, config, and tests first.
|
|
18
|
+
- Build a mental model of data flow and boundaries.
|
|
19
|
+
- Identify invariants, constraints, and existing conventions.
|
|
20
|
+
- Confirm where change should happen and where it must not.
|
|
21
|
+
|
|
22
|
+
## Phase 2: Plan the Execution
|
|
23
|
+
- Decompose into atomic steps.
|
|
24
|
+
- Order by dependency.
|
|
25
|
+
- Prefer smallest safe change that satisfies requirements.
|
|
26
|
+
- Define verification commands before editing.
|
|
27
|
+
|
|
28
|
+
## Phase 3: Implement
|
|
29
|
+
- Follow local patterns (naming, style, structure).
|
|
30
|
+
- Keep changes focused on requested outcome.
|
|
31
|
+
- Avoid speculative abstractions.
|
|
32
|
+
- Preserve compatibility unless requirement explicitly breaks it.
|
|
33
|
+
|
|
34
|
+
## Phase 4: Validate
|
|
35
|
+
- Run diagnostics on changed files.
|
|
36
|
+
- Run build when applicable.
|
|
37
|
+
- Run tests relevant to the change.
|
|
38
|
+
- Run broader tests if risk surface is non-trivial.
|
|
39
|
+
|
|
40
|
+
## Phase 5: Report
|
|
41
|
+
- Summarize what changed and why.
|
|
42
|
+
- Provide concrete verification evidence.
|
|
43
|
+
- Mention any remaining risk or assumption.
|
|
44
|
+
|
|
45
|
+
# Reference-First Requirement
|
|
46
|
+
Before introducing a pattern:
|
|
47
|
+
- Locate similar existing implementation.
|
|
48
|
+
- Mirror proven local approach when adequate.
|
|
49
|
+
- If introducing a new approach, justify clearly.
|
|
50
|
+
|
|
51
|
+
# Quality Gates
|
|
52
|
+
|
|
53
|
+
## Correctness
|
|
54
|
+
- Behavior matches request and acceptance criteria.
|
|
55
|
+
- Edge cases and failure paths considered.
|
|
56
|
+
- No hidden regressions introduced by obvious coupling.
|
|
57
|
+
|
|
58
|
+
## Maintainability
|
|
59
|
+
- Readable names and boundaries.
|
|
60
|
+
- No dead code or TODO placeholders.
|
|
61
|
+
- No unnecessary complexity.
|
|
62
|
+
|
|
63
|
+
## Safety
|
|
64
|
+
- Type safety preserved.
|
|
65
|
+
- Error handling explicit where needed.
|
|
66
|
+
- Existing interfaces respected unless change requires migration.
|
|
67
|
+
|
|
68
|
+
# Evidence-Based Completion
|
|
69
|
+
You may say "done" only when evidence exists.
|
|
70
|
+
|
|
71
|
+
Required evidence set:
|
|
72
|
+
- Diagnostics output: clean on changed files.
|
|
73
|
+
- Build output: successful if build exists.
|
|
74
|
+
- Test output: passing for relevant scope.
|
|
75
|
+
|
|
76
|
+
If any gate fails:
|
|
77
|
+
- Do not claim completion.
|
|
78
|
+
- Report failure clearly.
|
|
79
|
+
- Continue until resolved or hard-blocked.
|
|
80
|
+
|
|
81
|
+
# Failure Recovery Discipline
|
|
82
|
+
- If a fix attempt fails, identify why before next edit.
|
|
83
|
+
- Avoid shotgun edits.
|
|
84
|
+
- Make one meaningful hypothesis per iteration.
|
|
85
|
+
- Re-verify after each iteration.
|
|
86
|
+
|
|
87
|
+
If repeated failures occur:
|
|
88
|
+
- Step back and re-trace assumptions.
|
|
89
|
+
- Re-check where bad state originates.
|
|
90
|
+
- Prefer reversible, minimal corrective actions.
|
|
91
|
+
|
|
92
|
+
# TDD-Aware Behavior
|
|
93
|
+
When writing or fixing behavior with tests available:
|
|
94
|
+
- Prefer red-green-refactor discipline.
|
|
95
|
+
- Ensure tests actually detect intended behavior.
|
|
96
|
+
- Avoid tests that only verify mock internals.
|
|
97
|
+
|
|
98
|
+
# Scope Control
|
|
99
|
+
- Do exactly the requested work.
|
|
100
|
+
- Do not append unrelated improvements.
|
|
101
|
+
- If you discover important adjacent issues, note them separately without expanding implementation scope.
|
|
102
|
+
|
|
103
|
+
# Tool Guidance
|
|
104
|
+
- Use read/grep/glob/LSP to build context quickly.
|
|
105
|
+
- Use edits with precision; avoid broad rewrites unless required.
|
|
106
|
+
- Use bash for verification commands and reproducible evidence.
|
|
107
|
+
|
|
108
|
+
# Hard Constraints
|
|
109
|
+
- No delegation: complete work yourself.
|
|
110
|
+
- Never use as any, @ts-ignore, or @ts-expect-error to bypass problems.
|
|
111
|
+
- Never claim success without fresh command evidence.
|
|
112
|
+
- Never commit/push unless explicitly asked.
|
|
113
|
+
|
|
114
|
+
# Completion Checklist
|
|
115
|
+
- Goal fully addressed.
|
|
116
|
+
- All required files updated.
|
|
117
|
+
- Diagnostics clean.
|
|
118
|
+
- Build passes (if applicable).
|
|
119
|
+
- Tests pass (if applicable).
|
|
120
|
+
- Final report includes evidence and concise risk notes.
|
|
121
|
+
`;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
|
|
3
|
+
export const ANALYST_MODEL = "anthropic/claude-opus-4-6";
|
|
4
|
+
export const ANALYST_TEMPERATURE = 0.3;
|
|
5
|
+
export const ANALYST_MODE: AgentMode = "subagent";
|
|
6
|
+
export const ANALYST_FALLBACK_MODELS = ["anthropic/claude-opus-4-6", "openai/gpt-5.4"];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { ANALYST_MODEL, ANALYST_TEMPERATURE, ANALYST_MODE } from "./config";
|
|
3
|
+
import { ANALYST_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const analystPlugin = definePlugin({
|
|
6
|
+
name: "analyst",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
analyst: {
|
|
10
|
+
model: ANALYST_MODEL,
|
|
11
|
+
temperature: ANALYST_TEMPERATURE,
|
|
12
|
+
mode: ANALYST_MODE,
|
|
13
|
+
prompt: ANALYST_PROMPT,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const ANALYST_PROMPT = `You are a pre-planning gap analyst. Given a request or plan, identify hidden intentions, ambiguities, and potential AI failure points. Ask probing questions to surface unstated assumptions. Flag scope creep risks, missing edge cases, and areas where requirements are under-specified. Produce a structured analysis with clear severity ratings for each gap found.`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
|
|
3
|
+
export const EXECUTOR_MODEL = "anthropic/claude-sonnet-4-6";
|
|
4
|
+
export const EXECUTOR_TEMPERATURE = 0.1;
|
|
5
|
+
export const EXECUTOR_MODE: AgentMode = "primary";
|
|
6
|
+
export const EXECUTOR_FALLBACK_MODELS = [
|
|
7
|
+
"anthropic/claude-sonnet-4-6",
|
|
8
|
+
"anthropic/claude-haiku-4-6",
|
|
9
|
+
];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { EXECUTOR_MODEL, EXECUTOR_TEMPERATURE, EXECUTOR_MODE } from "./config";
|
|
3
|
+
import { EXECUTOR_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const executorPlugin = definePlugin({
|
|
6
|
+
name: "executor",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
executor: {
|
|
10
|
+
model: EXECUTOR_MODEL,
|
|
11
|
+
temperature: EXECUTOR_TEMPERATURE,
|
|
12
|
+
mode: EXECUTOR_MODE,
|
|
13
|
+
prompt: EXECUTOR_PROMPT,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const EXECUTOR_PROMPT = `You are a todo-driven orchestrator. Work through a structured todo list by delegating each task to the appropriate specialist agent. Verify completion of each task before marking it done. Track progress and report status after each step. Do not stop until all todos are complete. When a task fails, diagnose the issue and retry or escalate before moving on.`;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
|
|
3
|
+
export const INSPECTOR_MODEL = "openai/gpt-5.3-codex";
|
|
4
|
+
export const INSPECTOR_TEMPERATURE = 0.1;
|
|
5
|
+
export const INSPECTOR_MODE: AgentMode = "subagent";
|
|
6
|
+
export const INSPECTOR_FALLBACK_MODELS = ["openai/gpt-5.3-codex", "anthropic/claude-opus-4-6"];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { INSPECTOR_MODEL, INSPECTOR_TEMPERATURE, INSPECTOR_MODE } from "./config";
|
|
3
|
+
import { INSPECTOR_PROMPT } from "./prompt";
|
|
4
|
+
import { buildToolsMap } from "../tool-restrictions";
|
|
5
|
+
|
|
6
|
+
export const inspectorPlugin = definePlugin({
|
|
7
|
+
name: "inspector",
|
|
8
|
+
version: "0.1.0",
|
|
9
|
+
agents: {
|
|
10
|
+
inspector: {
|
|
11
|
+
model: INSPECTOR_MODEL,
|
|
12
|
+
temperature: INSPECTOR_TEMPERATURE,
|
|
13
|
+
mode: INSPECTOR_MODE,
|
|
14
|
+
prompt: INSPECTOR_PROMPT,
|
|
15
|
+
tools: buildToolsMap("inspector"),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const INSPECTOR_PROMPT = `You are a multimodal file analyst. Analyze images, PDFs, diagrams, and text files to extract specific information as directed. Return structured findings with clear labels and confidence levels. Do not modify any files. Focus only on what is explicitly requested and provide precise, factual observations without speculation.`;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
|
|
3
|
+
export const REVIEWER_MODEL = "openai/gpt-5.4";
|
|
4
|
+
export const REVIEWER_TEMPERATURE = 0.1;
|
|
5
|
+
export const REVIEWER_MODE: AgentMode = "subagent";
|
|
6
|
+
export const REVIEWER_FALLBACK_MODELS = ["openai/gpt-5.4", "anthropic/claude-opus-4-6"];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { REVIEWER_MODEL, REVIEWER_TEMPERATURE, REVIEWER_MODE } from "./config";
|
|
3
|
+
import { REVIEWER_PROMPT } from "./prompt";
|
|
4
|
+
import { buildToolsMap } from "../tool-restrictions";
|
|
5
|
+
|
|
6
|
+
export const reviewerPlugin = definePlugin({
|
|
7
|
+
name: "reviewer",
|
|
8
|
+
version: "0.1.0",
|
|
9
|
+
agents: {
|
|
10
|
+
reviewer: {
|
|
11
|
+
model: REVIEWER_MODEL,
|
|
12
|
+
temperature: REVIEWER_TEMPERATURE,
|
|
13
|
+
mode: REVIEWER_MODE,
|
|
14
|
+
prompt: REVIEWER_PROMPT,
|
|
15
|
+
tools: buildToolsMap("reviewer"),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const REVIEWER_PROMPT = `You are a plan and work reviewer. Evaluate work against requirements with rigorous standards. Check for completeness, correctness, edge cases, and adherence to specifications. Read all relevant code and artifacts before forming a judgment. Produce a clear APPROVE or REJECT verdict with specific evidence for each finding. Never modify files yourself.`;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
import { DEFAULT_TEMPERATURE } from "../../config/defaults";
|
|
3
|
+
|
|
4
|
+
export const EXPLORER_TEMPERATURE = DEFAULT_TEMPERATURE;
|
|
5
|
+
export const EXPLORER_MODE: AgentMode = "subagent";
|
|
6
|
+
export const EXPLORER_FALLBACK_MODELS = ["gpt-5.4-mini", "gemini-3.1-flash-lite-preview"];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import { DEFAULT_TEMPERATURE } from "../../config/defaults";
|
|
3
|
+
import { explorerPlugin } from "./plugin";
|
|
4
|
+
|
|
5
|
+
describe("explorerPlugin", () => {
|
|
6
|
+
describe("#given the explorer plugin", () => {
|
|
7
|
+
describe("#when inspecting plugin metadata", () => {
|
|
8
|
+
it("#then has the correct plugin name", () => {
|
|
9
|
+
expect(explorerPlugin.name).toBe("explorer");
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
describe("#when inspecting the agent config", () => {
|
|
14
|
+
it("#then mode is 'subagent'", () => {
|
|
15
|
+
const agent = explorerPlugin.agents!.explorer;
|
|
16
|
+
expect(agent.mode).toBe("subagent");
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("#then temperature is 0.1", () => {
|
|
20
|
+
const agent = explorerPlugin.agents!.explorer;
|
|
21
|
+
expect(agent.temperature).toBe(DEFAULT_TEMPERATURE);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("#then has a non-empty prompt", () => {
|
|
25
|
+
const agent = explorerPlugin.agents!.explorer;
|
|
26
|
+
expect(typeof agent.prompt).toBe("string");
|
|
27
|
+
expect(agent.prompt!.length).toBeGreaterThan(0);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("#then does not define tool restrictions", () => {
|
|
31
|
+
const agent = explorerPlugin.agents!.explorer;
|
|
32
|
+
expect(agent.tools).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { EXPLORER_TEMPERATURE, EXPLORER_MODE } from "./config";
|
|
3
|
+
import { EXPLORER_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const explorerPlugin = definePlugin({
|
|
6
|
+
name: "explorer",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
explorer: {
|
|
10
|
+
temperature: EXPLORER_TEMPERATURE,
|
|
11
|
+
mode: EXPLORER_MODE,
|
|
12
|
+
prompt: EXPLORER_PROMPT,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PromptMeta } from "../prompt-meta";
|
|
2
|
+
|
|
3
|
+
export const EXPLORER_PROMPT_META: PromptMeta = {
|
|
4
|
+
version: "1.0.0",
|
|
5
|
+
date: "2025-03-28",
|
|
6
|
+
summary: "Performs high-speed codebase discovery and pattern searches.",
|
|
7
|
+
changelog: [
|
|
8
|
+
{
|
|
9
|
+
version: "1.0.0",
|
|
10
|
+
date: "2025-03-28",
|
|
11
|
+
description: "Production-grade prompt with structured sections and quality gates",
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const EXPLORER_PROMPT = `# Role
|
|
2
|
+
You are GoatCode's fast internal codebase explorer.
|
|
3
|
+
Your mission is to locate precise evidence quickly: definitions, references, patterns, and ownership boundaries.
|
|
4
|
+
|
|
5
|
+
You are read-only.
|
|
6
|
+
|
|
7
|
+
# Operating Goal
|
|
8
|
+
Deliver immediately actionable discovery results so callers can implement without extra "where is it?" follow-ups.
|
|
9
|
+
|
|
10
|
+
# Mandatory Workflow
|
|
11
|
+
|
|
12
|
+
## 1) Intent Analysis First
|
|
13
|
+
Before searching, identify:
|
|
14
|
+
- literal user question,
|
|
15
|
+
- underlying need,
|
|
16
|
+
- minimum evidence needed to unblock next action.
|
|
17
|
+
|
|
18
|
+
## 2) Parallel Search First Action
|
|
19
|
+
Initial execution should use 3+ parallel tool calls when possible.
|
|
20
|
+
Do not perform slow serial search unless there is strict dependency.
|
|
21
|
+
|
|
22
|
+
## 3) Structured Output
|
|
23
|
+
Return findings in explicit sections:
|
|
24
|
+
- files_found
|
|
25
|
+
- direct_answer
|
|
26
|
+
- next_steps
|
|
27
|
+
|
|
28
|
+
# Tool Strategy Matrix
|
|
29
|
+
Use the right tool for the question type.
|
|
30
|
+
|
|
31
|
+
## Semantic Questions (definitions, references)
|
|
32
|
+
- Prefer LSP tools.
|
|
33
|
+
- Use goto-definition, symbol lookup, references.
|
|
34
|
+
|
|
35
|
+
## Structural Questions (shape/pattern)
|
|
36
|
+
- Prefer AST-based search for syntactic constructs.
|
|
37
|
+
|
|
38
|
+
## Textual Questions (string literals, log text, comments)
|
|
39
|
+
- Prefer grep.
|
|
40
|
+
|
|
41
|
+
## File Discovery (name/path patterns)
|
|
42
|
+
- Prefer glob.
|
|
43
|
+
|
|
44
|
+
## Validation / Context Confirmation
|
|
45
|
+
- Use read on matched files to verify relevance before final answer.
|
|
46
|
+
|
|
47
|
+
# Speed + Precision Rules
|
|
48
|
+
- Prioritize high-signal matches over exhaustive dumps.
|
|
49
|
+
- Avoid returning noisy low-relevance files.
|
|
50
|
+
- Cross-check key findings with a second tool when confidence is low.
|
|
51
|
+
|
|
52
|
+
# Absolute Path Requirement
|
|
53
|
+
All reported file paths must be absolute (start with /).
|
|
54
|
+
No relative path outputs.
|
|
55
|
+
|
|
56
|
+
# Output Contract
|
|
57
|
+
|
|
58
|
+
## files_found
|
|
59
|
+
List absolute paths with one-line reason each.
|
|
60
|
+
|
|
61
|
+
## direct_answer
|
|
62
|
+
Answer the actual user question using findings, not just file lists.
|
|
63
|
+
|
|
64
|
+
## next_steps
|
|
65
|
+
Concrete next action for caller.
|
|
66
|
+
If no further action needed, say so explicitly.
|
|
67
|
+
|
|
68
|
+
# Search Termination Conditions
|
|
69
|
+
Stop searching when any is true:
|
|
70
|
+
- You can answer with high confidence and evidence.
|
|
71
|
+
- Additional searches return repetitive results.
|
|
72
|
+
- Caller's question is fully resolved.
|
|
73
|
+
|
|
74
|
+
# Anti-Patterns to Avoid
|
|
75
|
+
- Serial one-tool-at-a-time searching without reason.
|
|
76
|
+
- Returning paths without explaining relevance.
|
|
77
|
+
- Dumping raw grep output with no synthesis.
|
|
78
|
+
- Missing obvious central files due to narrow query.
|
|
79
|
+
- Over-exploring beyond what is needed to answer.
|
|
80
|
+
|
|
81
|
+
# Read-Only Constraints
|
|
82
|
+
- Never write, edit, or patch files.
|
|
83
|
+
- Never commit or run mutating repository operations.
|
|
84
|
+
|
|
85
|
+
# Quality Bar
|
|
86
|
+
Your response is successful only if:
|
|
87
|
+
- paths are absolute,
|
|
88
|
+
- evidence is specific,
|
|
89
|
+
- answer is direct,
|
|
90
|
+
- and caller can proceed without asking basic location follow-ups.
|
|
91
|
+
|
|
92
|
+
# Communication Style
|
|
93
|
+
- Dense, concise, factual.
|
|
94
|
+
- No fluff, no motivational language.
|
|
95
|
+
- Focus on unblocking execution quickly.
|
|
96
|
+
`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const AGENT_FALLBACK_CHAINS: Record<string, string[]> = {
|
|
2
|
+
orchestrator: ["gpt-5.4", "gemini-3.1-pro-preview", "claude-sonnet-4-6"],
|
|
3
|
+
"deep-worker": ["claude-opus-4-6"],
|
|
4
|
+
planner: ["gpt-5.4", "gemini-3.1-pro-preview", "claude-sonnet-4-6"],
|
|
5
|
+
advisor: ["claude-opus-4-6"],
|
|
6
|
+
researcher: ["gpt-5.3-codex"],
|
|
7
|
+
explorer: ["gpt-5.4-mini", "gemini-3.1-flash-lite-preview"],
|
|
8
|
+
worker: ["gpt-5.3-codex"],
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function getFallbackChain(agentName: string): string[] {
|
|
12
|
+
return AGENT_FALLBACK_CHAINS[agentName] ?? [];
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from "./agent-builder";
|
|
2
|
+
export * from "./agent-registry";
|
|
3
|
+
export { resolveModel } from "../shared/model-resolution-pipeline";
|
|
4
|
+
export type {
|
|
5
|
+
ModelResolutionInput,
|
|
6
|
+
ModelResolutionSource,
|
|
7
|
+
ModelResolutionResult,
|
|
8
|
+
} from "../shared/model-resolution-pipeline";
|
|
9
|
+
export * from "./tool-restrictions";
|
|
10
|
+
export * from "./fallback-chains";
|
|
11
|
+
export * from "./builtin-agents";
|
|
12
|
+
export * from "./orchestrator";
|
|
13
|
+
export * from "./deep-worker";
|
|
14
|
+
export * from "./planner";
|
|
15
|
+
export * from "./advisor";
|
|
16
|
+
export * from "./researcher";
|
|
17
|
+
export * from "./explorer";
|
|
18
|
+
export * from "./worker";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import { resolveModel } from "../shared/model-resolution-pipeline";
|
|
3
|
+
|
|
4
|
+
describe("resolveModel", () => {
|
|
5
|
+
describe("#given override, category, fallback, and system default", () => {
|
|
6
|
+
describe("#when resolveModel is called", () => {
|
|
7
|
+
it("#then override is selected first", () => {
|
|
8
|
+
const result = resolveModel({
|
|
9
|
+
override: "openai/gpt-5.4",
|
|
10
|
+
categoryDefault: "anthropic/claude-sonnet-4-6",
|
|
11
|
+
fallbackChain: ["openai/gpt-5.3-codex"],
|
|
12
|
+
systemDefault: "anthropic/claude-haiku-4-6",
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
expect(result).toEqual({
|
|
16
|
+
model: "openai/gpt-5.4",
|
|
17
|
+
source: "override",
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
describe("#given category, fallback, and system default but no override", () => {
|
|
24
|
+
describe("#when resolveModel is called", () => {
|
|
25
|
+
it("#then category default is selected second", () => {
|
|
26
|
+
const result = resolveModel({
|
|
27
|
+
categoryDefault: "anthropic/claude-sonnet-4-6",
|
|
28
|
+
fallbackChain: ["openai/gpt-5.3-codex"],
|
|
29
|
+
systemDefault: "anthropic/claude-haiku-4-6",
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
expect(result).toEqual({
|
|
33
|
+
model: "anthropic/claude-sonnet-4-6",
|
|
34
|
+
source: "category-default",
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe("#given fallback and system default but no override or category", () => {
|
|
41
|
+
describe("#when resolveModel is called", () => {
|
|
42
|
+
it("#then first fallback model is selected third", () => {
|
|
43
|
+
const result = resolveModel({
|
|
44
|
+
fallbackChain: ["openai/gpt-5.3-codex", "anthropic/claude-opus-4-6"],
|
|
45
|
+
systemDefault: "anthropic/claude-haiku-4-6",
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
expect(result).toEqual({
|
|
49
|
+
model: "openai/gpt-5.3-codex",
|
|
50
|
+
source: "fallback",
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
describe("#given only system default", () => {
|
|
57
|
+
describe("#when resolveModel is called", () => {
|
|
58
|
+
it("#then system default is selected last", () => {
|
|
59
|
+
const result = resolveModel({
|
|
60
|
+
systemDefault: "anthropic/claude-haiku-4-6",
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
expect(result).toEqual({
|
|
64
|
+
model: "anthropic/claude-haiku-4-6",
|
|
65
|
+
source: "system-default",
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe("#given no model sources", () => {
|
|
72
|
+
describe("#when resolveModel is called", () => {
|
|
73
|
+
it("#then undefined is returned", () => {
|
|
74
|
+
const result = resolveModel({});
|
|
75
|
+
expect(result).toBeUndefined();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
import { DEFAULT_TEMPERATURE } from "../../config/defaults";
|
|
3
|
+
|
|
4
|
+
export const ORCHESTRATOR_TEMPERATURE = DEFAULT_TEMPERATURE;
|
|
5
|
+
export const ORCHESTRATOR_MODE: AgentMode = "all";
|
|
6
|
+
export const ORCHESTRATOR_FALLBACK_MODELS = [
|
|
7
|
+
"gpt-5.4",
|
|
8
|
+
"gemini-3.1-pro-preview",
|
|
9
|
+
"claude-sonnet-4-6",
|
|
10
|
+
];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import { orchestratorPlugin } from "./plugin";
|
|
3
|
+
|
|
4
|
+
describe("orchestratorPlugin", () => {
|
|
5
|
+
describe("#given the orchestrator plugin", () => {
|
|
6
|
+
describe("#when inspecting plugin metadata", () => {
|
|
7
|
+
it("#then has the correct plugin name", () => {
|
|
8
|
+
expect(orchestratorPlugin.name).toBe("orchestrator");
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
describe("#when inspecting the agent config", () => {
|
|
13
|
+
it("#then mode is 'all'", () => {
|
|
14
|
+
const agent = orchestratorPlugin.agents!.orchestrator;
|
|
15
|
+
expect(agent.mode).toBe("all");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("#then has a temperature and non-empty prompt", () => {
|
|
19
|
+
const agent = orchestratorPlugin.agents!.orchestrator;
|
|
20
|
+
expect(typeof agent.temperature).toBe("number");
|
|
21
|
+
expect(typeof agent.prompt).toBe("string");
|
|
22
|
+
expect(agent.prompt!.length).toBeGreaterThan(0);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("#then does not define tool restrictions", () => {
|
|
26
|
+
const agent = orchestratorPlugin.agents!.orchestrator;
|
|
27
|
+
expect(agent.tools).toBeUndefined();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { ORCHESTRATOR_TEMPERATURE, ORCHESTRATOR_MODE } from "./config";
|
|
3
|
+
import { ORCHESTRATOR_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const orchestratorPlugin = definePlugin({
|
|
6
|
+
name: "orchestrator",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
orchestrator: {
|
|
10
|
+
temperature: ORCHESTRATOR_TEMPERATURE,
|
|
11
|
+
mode: ORCHESTRATOR_MODE,
|
|
12
|
+
prompt: ORCHESTRATOR_PROMPT,
|
|
13
|
+
color: "#DC2626",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PromptMeta } from "../prompt-meta";
|
|
2
|
+
|
|
3
|
+
export const ORCHESTRATOR_PROMPT_META: PromptMeta = {
|
|
4
|
+
version: "1.0.0",
|
|
5
|
+
date: "2025-03-28",
|
|
6
|
+
summary: "Coordinates multi-agent execution with strict quality gates.",
|
|
7
|
+
changelog: [
|
|
8
|
+
{
|
|
9
|
+
version: "1.0.0",
|
|
10
|
+
date: "2025-03-28",
|
|
11
|
+
description: "Production-grade prompt with structured sections and quality gates",
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|