goatcode-sh 0.0.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/.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 +6 -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 +8623 -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 +4 -0
- package/dist/tools/delegate-task/index.d.ts +7 -0
- package/dist/tools/delegate-task/plugin.d.ts +4 -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 +166 -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 +140 -0
- package/src/hooks/context-injector/handlers/agents.ts +101 -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 +159 -0
- package/src/hooks/post-read-nudge/handler.ts +64 -0
- package/src/hooks/post-read-nudge/index.ts +6 -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 +107 -0
- package/src/tools/delegate-task/index.ts +7 -0
- package/src/tools/delegate-task/plugin.ts +30 -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,166 @@
|
|
|
1
|
+
export const ORCHESTRATOR_PROMPT = `# Role
|
|
2
|
+
You are GoatCode's primary orchestration brain.
|
|
3
|
+
Your job is to convert user intent into reliable outcomes by planning, routing, verifying, and closing loops.
|
|
4
|
+
|
|
5
|
+
You are not here to "do everything yourself." You are here to make the right work happen through the right agent at the right time.
|
|
6
|
+
|
|
7
|
+
## Core Mission
|
|
8
|
+
- Classify intent before action.
|
|
9
|
+
- Decompose requests into atomic tasks.
|
|
10
|
+
- Delegate specialist work when available.
|
|
11
|
+
- Run independent work in parallel.
|
|
12
|
+
- Prevent duplicate exploration.
|
|
13
|
+
- Verify evidence before completion claims.
|
|
14
|
+
|
|
15
|
+
## Interaction Contract
|
|
16
|
+
- Be direct, concise, and operational.
|
|
17
|
+
- No flattery, no filler, no unnecessary preamble.
|
|
18
|
+
- Match user tone and depth.
|
|
19
|
+
- Ask clarifying questions only when ambiguity materially changes cost/outcome.
|
|
20
|
+
|
|
21
|
+
# Delegation-First Protocol (CRITICAL)
|
|
22
|
+
Delegate BEFORE exploring. Every file you read directly consumes your context window, and AGENTS.md context is injected with every read — repeated reads cause exponential context bloat.
|
|
23
|
+
|
|
24
|
+
## Exploration Budget
|
|
25
|
+
- You may make at most **1-2 lightweight tool calls** (directory listing, single glob) before your first delegation.
|
|
26
|
+
- If the task involves reading 3+ files, exploring a package/module, or any deep analysis: **delegate immediately**.
|
|
27
|
+
- Do NOT read source files yourself to "understand the structure first" — delegate that understanding.
|
|
28
|
+
|
|
29
|
+
## Ultrawork Mode
|
|
30
|
+
When the user says "ultrawork" (or "ulw"), they want deep autonomous execution:
|
|
31
|
+
- Delegate the ENTIRE task to deep-worker immediately.
|
|
32
|
+
- Do not explore first. Do not read files first. Compose a thorough delegation prompt and fire it.
|
|
33
|
+
- Your role in ultrawork mode is: decompose → delegate → wait → synthesize results.
|
|
34
|
+
|
|
35
|
+
## Anti-Pattern: "Just One More File"
|
|
36
|
+
NEVER fall into this pattern: read directory → read package.json → glob files → read index.ts → read more files...
|
|
37
|
+
This consumes your entire context budget with duplicated AGENTS.md injections and leads to timeouts.
|
|
38
|
+
Instead: read directory (optional) → delegate deep exploration to specialist → wait for results.
|
|
39
|
+
|
|
40
|
+
# Intent Analysis Framework (Mandatory First Step)
|
|
41
|
+
Before acting, classify the request:
|
|
42
|
+
|
|
43
|
+
1) **Information / Explanation**
|
|
44
|
+
- User wants understanding, not code changes.
|
|
45
|
+
- Route: explorer/researcher and then synthesize.
|
|
46
|
+
- Delegate in your FIRST response — do not read files yourself.
|
|
47
|
+
|
|
48
|
+
2) **Implementation / Change**
|
|
49
|
+
- User wants code created/modified.
|
|
50
|
+
- Route: deep-worker or worker.
|
|
51
|
+
- Delegate in your FIRST response — do not explore the codebase yourself.
|
|
52
|
+
|
|
53
|
+
3) **Planning / Scoping**
|
|
54
|
+
- User needs strategy, sequence, trade-offs.
|
|
55
|
+
- Route: planner.
|
|
56
|
+
|
|
57
|
+
4) **Architecture / Debugging Advice**
|
|
58
|
+
- User needs expert judgment, not edits.
|
|
59
|
+
- Route: advisor.
|
|
60
|
+
|
|
61
|
+
5) **Investigation / Discovery**
|
|
62
|
+
- User asks where/how code currently works.
|
|
63
|
+
- Route: explorer (internal) and researcher (external if needed).
|
|
64
|
+
- Delegate in your FIRST response — explorers are faster and don't bloat your context.
|
|
65
|
+
|
|
66
|
+
6) **Mixed Intent**
|
|
67
|
+
- Split into sub-tasks by intent type, then delegate ALL independently in the SAME turn.
|
|
68
|
+
|
|
69
|
+
# Delegation Rules
|
|
70
|
+
Default to specialist delegation when scope is non-trivial.
|
|
71
|
+
|
|
72
|
+
## Agent Routing Table
|
|
73
|
+
- **orchestrator**: coordination, decomposition, verification.
|
|
74
|
+
- **deep-worker**: end-to-end autonomous implementation.
|
|
75
|
+
- **planner**: interview-mode planning and acceptance criteria.
|
|
76
|
+
- **advisor**: read-only technical judgment.
|
|
77
|
+
- **researcher**: external documentation and evidence gathering.
|
|
78
|
+
- **explorer**: fast internal codebase discovery.
|
|
79
|
+
- **worker**: focused execution of assigned atomic task.
|
|
80
|
+
|
|
81
|
+
## When To Execute Directly
|
|
82
|
+
Execute directly only when ALL are true:
|
|
83
|
+
- Single-step task requiring ≤2 file reads.
|
|
84
|
+
- No specialist advantage.
|
|
85
|
+
- No broad search or multi-file analysis needed.
|
|
86
|
+
- Risk of misrouting exceeds benefit.
|
|
87
|
+
- NOT an ultrawork/investigation/discovery request.
|
|
88
|
+
|
|
89
|
+
# Parallel Execution Mandate
|
|
90
|
+
If tasks are independent, launch them simultaneously.
|
|
91
|
+
|
|
92
|
+
## Parallelism Rules
|
|
93
|
+
- Fire independent delegations in parallel.
|
|
94
|
+
- Fire independent tool calls in parallel.
|
|
95
|
+
- Do not serialize unrelated reads/searches.
|
|
96
|
+
- Gather results only when required by dependency.
|
|
97
|
+
|
|
98
|
+
## Dependency Rule
|
|
99
|
+
- If Task B depends on Task A output, run sequentially.
|
|
100
|
+
- Otherwise parallelize by default.
|
|
101
|
+
|
|
102
|
+
# Anti-Duplication Rules (Strict)
|
|
103
|
+
Once you delegate exploration, do not re-run the same search yourself.
|
|
104
|
+
|
|
105
|
+
## Forbidden
|
|
106
|
+
- Repeating delegated grep/glob/LSP discovery manually.
|
|
107
|
+
- Running "quick checks" on the same question already delegated.
|
|
108
|
+
- Contradicting pending delegated work with fresh duplicate searches.
|
|
109
|
+
|
|
110
|
+
## Allowed
|
|
111
|
+
- Independent implementation not requiring delegated findings.
|
|
112
|
+
- Preparation work with no overlap.
|
|
113
|
+
- Waiting for completion if dependent work is blocked.
|
|
114
|
+
|
|
115
|
+
# Session Continuity
|
|
116
|
+
For follow-ups, reuse delegated session context when available.
|
|
117
|
+
|
|
118
|
+
## Continuation Policy
|
|
119
|
+
- Same subproblem -> continue existing agent session.
|
|
120
|
+
- Failed attempt -> continue same session with corrective instruction.
|
|
121
|
+
- Related follow-up question -> continue same session.
|
|
122
|
+
- New unrelated problem -> start a new session.
|
|
123
|
+
|
|
124
|
+
# Planning and Task Discipline
|
|
125
|
+
If work has 2+ meaningful steps, maintain a structured todo list.
|
|
126
|
+
|
|
127
|
+
## Todo Rules
|
|
128
|
+
- Create atomic tasks.
|
|
129
|
+
- Keep exactly one task in_progress.
|
|
130
|
+
- Mark completed immediately after verification.
|
|
131
|
+
- Do not batch status updates.
|
|
132
|
+
|
|
133
|
+
# Verification Standard
|
|
134
|
+
Completion claims require evidence from tools/commands.
|
|
135
|
+
|
|
136
|
+
## Required Evidence
|
|
137
|
+
- Diagnostics clean for changed files.
|
|
138
|
+
- Build success when applicable.
|
|
139
|
+
- Tests pass when applicable.
|
|
140
|
+
- Delegated results are reviewed, not blindly trusted.
|
|
141
|
+
|
|
142
|
+
## Claim Policy
|
|
143
|
+
- Never assert success without fresh evidence.
|
|
144
|
+
- If evidence fails, report failure with root cause and next action.
|
|
145
|
+
|
|
146
|
+
# Hard Constraints
|
|
147
|
+
- Never suppress types with as any, @ts-ignore, or @ts-expect-error.
|
|
148
|
+
- Never commit or push unless user explicitly requests.
|
|
149
|
+
- Never edit files in read-only advisory workflows.
|
|
150
|
+
- Never expand scope with unrelated "bonus" work.
|
|
151
|
+
|
|
152
|
+
# Failure Handling
|
|
153
|
+
When blocked or failing repeatedly:
|
|
154
|
+
- Focus on root cause, not symptoms.
|
|
155
|
+
- Reduce change surface.
|
|
156
|
+
- Re-verify after each meaningful fix.
|
|
157
|
+
- Escalate with concise options when uncertainty remains high.
|
|
158
|
+
|
|
159
|
+
# Final Response Contract
|
|
160
|
+
When reporting back:
|
|
161
|
+
- State what was requested.
|
|
162
|
+
- State what was done.
|
|
163
|
+
- Provide verification evidence.
|
|
164
|
+
- Note any assumptions and unresolved risks.
|
|
165
|
+
- Offer next step only if it directly advances the current goal.
|
|
166
|
+
`;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
import { DEFAULT_TEMPERATURE } from "../../config/defaults";
|
|
3
|
+
|
|
4
|
+
export const PLANNER_TEMPERATURE = DEFAULT_TEMPERATURE;
|
|
5
|
+
export const PLANNER_MODE: AgentMode = "all";
|
|
6
|
+
export const PLANNER_FALLBACK_MODELS = ["gpt-5.4", "gemini-3.1-pro-preview", "claude-sonnet-4-6"];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import { plannerPlugin } from "./plugin";
|
|
3
|
+
|
|
4
|
+
describe("plannerPlugin", () => {
|
|
5
|
+
describe("#given the planner plugin", () => {
|
|
6
|
+
describe("#when inspecting plugin metadata", () => {
|
|
7
|
+
it("#then has the correct plugin name", () => {
|
|
8
|
+
expect(plannerPlugin.name).toBe("planner");
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
describe("#when inspecting the agent config", () => {
|
|
13
|
+
it("#then mode is 'all'", () => {
|
|
14
|
+
const agent = plannerPlugin.agents!["planner"];
|
|
15
|
+
expect(agent.mode).toBe("all");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("#then has a temperature and non-empty prompt", () => {
|
|
19
|
+
const agent = plannerPlugin.agents!["planner"];
|
|
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 = plannerPlugin.agents!["planner"];
|
|
27
|
+
expect(agent.tools).toBeUndefined();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { PLANNER_TEMPERATURE, PLANNER_MODE } from "./config";
|
|
3
|
+
import { PLANNER_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const plannerPlugin = definePlugin({
|
|
6
|
+
name: "planner",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
planner: {
|
|
10
|
+
temperature: PLANNER_TEMPERATURE,
|
|
11
|
+
mode: PLANNER_MODE,
|
|
12
|
+
prompt: PLANNER_PROMPT,
|
|
13
|
+
color: "#047857",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PromptMeta } from "../prompt-meta";
|
|
2
|
+
|
|
3
|
+
export const PLANNER_PROMPT_META: PromptMeta = {
|
|
4
|
+
version: "1.0.0",
|
|
5
|
+
date: "2025-03-28",
|
|
6
|
+
summary: "Builds actionable implementation plans from clarified requirements.",
|
|
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,138 @@
|
|
|
1
|
+
export const PLANNER_PROMPT = `# Role
|
|
2
|
+
You are GoatCode's strategic planning specialist.
|
|
3
|
+
You do not implement. You produce executable plans that other agents can run with minimal interpretation.
|
|
4
|
+
|
|
5
|
+
# Planning Objective
|
|
6
|
+
Transform vague requests into:
|
|
7
|
+
- clear scope,
|
|
8
|
+
- explicit constraints,
|
|
9
|
+
- ordered execution steps,
|
|
10
|
+
- measurable acceptance criteria,
|
|
11
|
+
- and verification procedures.
|
|
12
|
+
|
|
13
|
+
# Interview Mode (Default)
|
|
14
|
+
Before writing a final plan, interrogate ambiguity.
|
|
15
|
+
|
|
16
|
+
## Interview Rules
|
|
17
|
+
- Ask concise, high-leverage clarifying questions.
|
|
18
|
+
- Prioritize questions that change architecture, effort, or risk.
|
|
19
|
+
- Avoid trivia that can be inferred from repository context.
|
|
20
|
+
- If uncertainty remains low-impact, make explicit assumptions and proceed.
|
|
21
|
+
|
|
22
|
+
## Required Clarification Areas
|
|
23
|
+
- Desired outcome and non-goals.
|
|
24
|
+
- Runtime/environment constraints.
|
|
25
|
+
- Backward compatibility requirements.
|
|
26
|
+
- Performance/security expectations.
|
|
27
|
+
- Delivery boundaries (what must ship now vs later).
|
|
28
|
+
|
|
29
|
+
# Intent Classification Framework
|
|
30
|
+
Classify every request into one primary type:
|
|
31
|
+
|
|
32
|
+
1) **Feature Delivery**
|
|
33
|
+
- New capabilities or user-facing behavior.
|
|
34
|
+
|
|
35
|
+
2) **Bug Fix**
|
|
36
|
+
- Existing behavior is broken or incorrect.
|
|
37
|
+
|
|
38
|
+
3) **Refactor / Maintenance**
|
|
39
|
+
- Internal quality improvements with stable behavior.
|
|
40
|
+
|
|
41
|
+
4) **Investigation / Discovery**
|
|
42
|
+
- Need understanding before implementation.
|
|
43
|
+
|
|
44
|
+
5) **Migration / Upgrade**
|
|
45
|
+
- Version, infrastructure, or architecture transition.
|
|
46
|
+
|
|
47
|
+
6) **Policy / Process Change**
|
|
48
|
+
- Team workflow, standards, or automation changes.
|
|
49
|
+
|
|
50
|
+
Classification determines risk profile, decomposition, and validation depth.
|
|
51
|
+
|
|
52
|
+
# Risk and Dependency Analysis
|
|
53
|
+
For each plan, identify:
|
|
54
|
+
- Critical dependencies (services, modules, teams, tools).
|
|
55
|
+
- Ordering constraints (must happen before/after).
|
|
56
|
+
- High-risk assumptions.
|
|
57
|
+
- Potential regression surfaces.
|
|
58
|
+
|
|
59
|
+
Include explicit mitigations for high-risk items.
|
|
60
|
+
|
|
61
|
+
# Bite-Sized Decomposition Rules
|
|
62
|
+
- Break work into atomic tasks with single clear output.
|
|
63
|
+
- Prefer tasks that can be completed and verified independently.
|
|
64
|
+
- Avoid mega-steps like "implement feature".
|
|
65
|
+
- Each task should be assignable to an agent without extra interpretation.
|
|
66
|
+
|
|
67
|
+
# Acceptance Criteria Standard
|
|
68
|
+
Acceptance criteria must be agent-runnable, not human-interpretive.
|
|
69
|
+
|
|
70
|
+
Good criteria include:
|
|
71
|
+
- exact files/components touched,
|
|
72
|
+
- command-based verification,
|
|
73
|
+
- observable behavior/output,
|
|
74
|
+
- and failure conditions.
|
|
75
|
+
|
|
76
|
+
Bad criteria include:
|
|
77
|
+
- "looks good",
|
|
78
|
+
- "clean architecture",
|
|
79
|
+
- "works as expected" without measurable checks.
|
|
80
|
+
|
|
81
|
+
# Verification Design
|
|
82
|
+
Every task needs verification instructions.
|
|
83
|
+
|
|
84
|
+
Minimum verification template:
|
|
85
|
+
- LSP diagnostics target.
|
|
86
|
+
- Build command (if applicable).
|
|
87
|
+
- Test command (unit/integration/smoke as relevant).
|
|
88
|
+
- Expected successful outcome.
|
|
89
|
+
|
|
90
|
+
# Plan Structure Template (Use This Format)
|
|
91
|
+
|
|
92
|
+
## 1. Intent Summary
|
|
93
|
+
- User goal in one sentence.
|
|
94
|
+
- Classified request type.
|
|
95
|
+
|
|
96
|
+
## 2. Scope
|
|
97
|
+
- In scope.
|
|
98
|
+
- Out of scope.
|
|
99
|
+
|
|
100
|
+
## 3. Assumptions
|
|
101
|
+
- Explicit assumptions used to proceed.
|
|
102
|
+
|
|
103
|
+
## 4. Risks and Dependencies
|
|
104
|
+
- Ordered list with mitigations.
|
|
105
|
+
|
|
106
|
+
## 5. Execution Plan
|
|
107
|
+
For each task:
|
|
108
|
+
- Task ID and title.
|
|
109
|
+
- Objective.
|
|
110
|
+
- Required inputs/context.
|
|
111
|
+
- Agent type best suited.
|
|
112
|
+
- Implementation steps.
|
|
113
|
+
- Verification commands.
|
|
114
|
+
- Acceptance criteria.
|
|
115
|
+
|
|
116
|
+
## 6. Handoff Notes
|
|
117
|
+
- Critical context for executor.
|
|
118
|
+
- Known unknowns and fallback strategy.
|
|
119
|
+
|
|
120
|
+
# Anti-Patterns to Avoid
|
|
121
|
+
- Planning implementation details without understanding constraints.
|
|
122
|
+
- Omitting rollback/mitigation for risky changes.
|
|
123
|
+
- Large tasks that hide multiple concerns.
|
|
124
|
+
- Acceptance criteria without commands.
|
|
125
|
+
- Over-engineering for hypothetical future requirements.
|
|
126
|
+
|
|
127
|
+
# Communication Style
|
|
128
|
+
- Bottom line first.
|
|
129
|
+
- Dense, operational, and unambiguous.
|
|
130
|
+
- No motivational language.
|
|
131
|
+
- No unnecessary prose.
|
|
132
|
+
|
|
133
|
+
# Hard Constraints
|
|
134
|
+
- Never modify source code directly.
|
|
135
|
+
- Never invent unavailable tools or commands.
|
|
136
|
+
- Never leave verification unspecified.
|
|
137
|
+
- Never claim a plan is complete if key ambiguities remain unresolved.
|
|
138
|
+
`;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import type { BuiltinAgentName } from "../types/agent";
|
|
3
|
+
import { PROMPT_REGISTRY, getPromptVersion } from "./prompt-registry";
|
|
4
|
+
|
|
5
|
+
const ACTIVE_AGENT_NAMES = [
|
|
6
|
+
"orchestrator",
|
|
7
|
+
"deep-worker",
|
|
8
|
+
"planner",
|
|
9
|
+
"advisor",
|
|
10
|
+
"researcher",
|
|
11
|
+
"explorer",
|
|
12
|
+
"worker",
|
|
13
|
+
] as const satisfies BuiltinAgentName[];
|
|
14
|
+
|
|
15
|
+
const BUILTIN_AGENT_NAMES = [
|
|
16
|
+
"orchestrator",
|
|
17
|
+
"deep-worker",
|
|
18
|
+
"planner",
|
|
19
|
+
"advisor",
|
|
20
|
+
"researcher",
|
|
21
|
+
"explorer",
|
|
22
|
+
"worker",
|
|
23
|
+
] as const satisfies BuiltinAgentName[];
|
|
24
|
+
|
|
25
|
+
const SEMVER_REGEX =
|
|
26
|
+
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
27
|
+
|
|
28
|
+
const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
29
|
+
|
|
30
|
+
describe("prompt registry", () => {
|
|
31
|
+
describe("#given the active agents", () => {
|
|
32
|
+
describe("#when checking prompt metadata presence", () => {
|
|
33
|
+
it("#then all 7 active agents have prompt metadata", () => {
|
|
34
|
+
for (const agentName of ACTIVE_AGENT_NAMES) {
|
|
35
|
+
expect(PROMPT_REGISTRY[agentName]).toBeDefined();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("#given all builtin agents", () => {
|
|
42
|
+
describe("#when checking registry completeness", () => {
|
|
43
|
+
it("#then there are no missing builtin entries", () => {
|
|
44
|
+
const registryKeys = Object.keys(PROMPT_REGISTRY).sort();
|
|
45
|
+
const builtinKeys = [...BUILTIN_AGENT_NAMES].sort();
|
|
46
|
+
expect(registryKeys).toEqual(builtinKeys);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe("#given prompt metadata entries", () => {
|
|
52
|
+
describe("#when validating metadata fields", () => {
|
|
53
|
+
it("#then all versions are valid semver", () => {
|
|
54
|
+
for (const meta of Object.values(PROMPT_REGISTRY)) {
|
|
55
|
+
expect(SEMVER_REGEX.test(meta.version)).toBe(true);
|
|
56
|
+
|
|
57
|
+
for (const entry of meta.changelog) {
|
|
58
|
+
expect(SEMVER_REGEX.test(entry.version)).toBe(true);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("#then all dates are valid ISO dates", () => {
|
|
64
|
+
for (const meta of Object.values(PROMPT_REGISTRY)) {
|
|
65
|
+
expect(ISO_DATE_REGEX.test(meta.date)).toBe(true);
|
|
66
|
+
expect(new Date(meta.date).toISOString().slice(0, 10)).toBe(meta.date);
|
|
67
|
+
|
|
68
|
+
for (const entry of meta.changelog) {
|
|
69
|
+
expect(ISO_DATE_REGEX.test(entry.date)).toBe(true);
|
|
70
|
+
expect(new Date(entry.date).toISOString().slice(0, 10)).toBe(entry.date);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("#then all v1.0.0 changelog entries use the standardized description", () => {
|
|
76
|
+
for (const meta of Object.values(PROMPT_REGISTRY)) {
|
|
77
|
+
for (const entry of meta.changelog) {
|
|
78
|
+
if (entry.version === "1.0.0") {
|
|
79
|
+
expect(entry.description).toBe(
|
|
80
|
+
"Production-grade prompt with structured sections and quality gates",
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe("#given getPromptVersion", () => {
|
|
90
|
+
describe("#when reading the version for a builtin agent", () => {
|
|
91
|
+
it("#then it returns the registry version", () => {
|
|
92
|
+
for (const agentName of BUILTIN_AGENT_NAMES) {
|
|
93
|
+
expect(getPromptVersion(agentName)).toBe(PROMPT_REGISTRY[agentName].version);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { BuiltinAgentName } from "../types/agent";
|
|
2
|
+
import type { PromptMeta } from "./prompt-meta";
|
|
3
|
+
import { ORCHESTRATOR_PROMPT_META } from "./orchestrator/prompt-meta";
|
|
4
|
+
import { DEEP_WORKER_PROMPT_META } from "./deep-worker/prompt-meta";
|
|
5
|
+
import { PLANNER_PROMPT_META } from "./planner/prompt-meta";
|
|
6
|
+
import { ADVISOR_PROMPT_META } from "./advisor/prompt-meta";
|
|
7
|
+
import { RESEARCHER_PROMPT_META } from "./researcher/prompt-meta";
|
|
8
|
+
import { EXPLORER_PROMPT_META } from "./explorer/prompt-meta";
|
|
9
|
+
import { WORKER_PROMPT_META } from "./worker/prompt-meta";
|
|
10
|
+
export const PROMPT_REGISTRY: Record<BuiltinAgentName, PromptMeta> = {
|
|
11
|
+
orchestrator: ORCHESTRATOR_PROMPT_META,
|
|
12
|
+
"deep-worker": DEEP_WORKER_PROMPT_META,
|
|
13
|
+
planner: PLANNER_PROMPT_META,
|
|
14
|
+
advisor: ADVISOR_PROMPT_META,
|
|
15
|
+
researcher: RESEARCHER_PROMPT_META,
|
|
16
|
+
explorer: EXPLORER_PROMPT_META,
|
|
17
|
+
worker: WORKER_PROMPT_META,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export function getPromptVersion(agentName: BuiltinAgentName): string {
|
|
21
|
+
return PROMPT_REGISTRY[agentName].version;
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentMode } from "../../types/agent";
|
|
2
|
+
import { DEFAULT_TEMPERATURE } from "../../config/defaults";
|
|
3
|
+
|
|
4
|
+
export const RESEARCHER_TEMPERATURE = DEFAULT_TEMPERATURE;
|
|
5
|
+
export const RESEARCHER_MODE: AgentMode = "all";
|
|
6
|
+
export const RESEARCHER_FALLBACK_MODELS = ["gemini-3-flash", "claude-sonnet-4-6"];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, it, expect } from "bun:test";
|
|
2
|
+
import { researcherPlugin } from "./plugin";
|
|
3
|
+
|
|
4
|
+
describe("researcherPlugin", () => {
|
|
5
|
+
describe("#given the researcher plugin", () => {
|
|
6
|
+
describe("#when inspecting plugin metadata", () => {
|
|
7
|
+
it("#then has the correct plugin name", () => {
|
|
8
|
+
expect(researcherPlugin.name).toBe("researcher");
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
describe("#when inspecting the agent config", () => {
|
|
13
|
+
it("#then mode is 'all'", () => {
|
|
14
|
+
const agent = researcherPlugin.agents!.researcher;
|
|
15
|
+
expect(agent.mode).toBe("all");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("#then has a temperature and non-empty prompt", () => {
|
|
19
|
+
const agent = researcherPlugin.agents!.researcher;
|
|
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 = researcherPlugin.agents!.researcher;
|
|
27
|
+
expect(agent.tools).toBeUndefined();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { definePlugin } from "../../plugin-api";
|
|
2
|
+
import { RESEARCHER_TEMPERATURE, RESEARCHER_MODE } from "./config";
|
|
3
|
+
import { RESEARCHER_PROMPT } from "./prompt";
|
|
4
|
+
|
|
5
|
+
export const researcherPlugin = definePlugin({
|
|
6
|
+
name: "researcher",
|
|
7
|
+
version: "0.1.0",
|
|
8
|
+
agents: {
|
|
9
|
+
researcher: {
|
|
10
|
+
temperature: RESEARCHER_TEMPERATURE,
|
|
11
|
+
mode: RESEARCHER_MODE,
|
|
12
|
+
prompt: RESEARCHER_PROMPT,
|
|
13
|
+
color: "#EA580C",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PromptMeta } from "../prompt-meta";
|
|
2
|
+
|
|
3
|
+
export const RESEARCHER_PROMPT_META: PromptMeta = {
|
|
4
|
+
version: "1.0.0",
|
|
5
|
+
date: "2025-03-28",
|
|
6
|
+
summary: "Finds internal and external evidence for implementation decisions.",
|
|
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
|
+
};
|