@wahack/pi-coding-agent 15.11.0
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/CHANGELOG.md +10031 -0
- package/README.md +36 -0
- package/examples/README.md +21 -0
- package/examples/custom-tools/README.md +104 -0
- package/examples/custom-tools/hello/index.ts +20 -0
- package/examples/extensions/README.md +142 -0
- package/examples/extensions/api-demo.ts +79 -0
- package/examples/extensions/chalk-logger.ts +25 -0
- package/examples/extensions/hello.ts +31 -0
- package/examples/extensions/pirate.ts +43 -0
- package/examples/extensions/plan-mode.ts +549 -0
- package/examples/extensions/reload-runtime.ts +38 -0
- package/examples/extensions/thinking-note.ts +13 -0
- package/examples/extensions/tools.ts +145 -0
- package/examples/extensions/with-deps/index.ts +36 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +17 -0
- package/examples/hooks/README.md +56 -0
- package/examples/hooks/auto-commit-on-exit.ts +48 -0
- package/examples/hooks/confirm-destructive.ts +58 -0
- package/examples/hooks/custom-compaction.ts +115 -0
- package/examples/hooks/dirty-repo-guard.ts +51 -0
- package/examples/hooks/file-trigger.ts +40 -0
- package/examples/hooks/git-checkpoint.ts +52 -0
- package/examples/hooks/handoff.ts +149 -0
- package/examples/hooks/permission-gate.ts +33 -0
- package/examples/hooks/protected-paths.ts +29 -0
- package/examples/hooks/qna.ts +118 -0
- package/examples/hooks/status-line.ts +39 -0
- package/examples/sdk/01-minimal.ts +21 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +46 -0
- package/examples/sdk/04-skills.ts +43 -0
- package/examples/sdk/06-extensions.ts +82 -0
- package/examples/sdk/06-hooks.ts +61 -0
- package/examples/sdk/07-context-files.ts +35 -0
- package/examples/sdk/08-prompt-templates.ts +41 -0
- package/examples/sdk/08-slash-commands.ts +46 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +54 -0
- package/examples/sdk/11-sessions.ts +47 -0
- package/examples/sdk/12-redis-sessions.ts +54 -0
- package/examples/sdk/13-sql-sessions.ts +61 -0
- package/examples/sdk/README.md +172 -0
- package/package.json +554 -0
- package/scripts/build-binary.ts +100 -0
- package/scripts/bundle-dist.ts +90 -0
- package/scripts/format-prompts.ts +68 -0
- package/scripts/generate-docs-index.ts +40 -0
- package/scripts/generate-template.ts +33 -0
- package/scripts/omp +42 -0
- package/scripts/omp.ts +19 -0
- package/src/async/index.ts +1 -0
- package/src/async/job-manager.ts +625 -0
- package/src/auto-thinking/classifier.ts +185 -0
- package/src/autoresearch/command-resume.md +14 -0
- package/src/autoresearch/dashboard.ts +436 -0
- package/src/autoresearch/git.ts +319 -0
- package/src/autoresearch/helpers.ts +218 -0
- package/src/autoresearch/index.ts +536 -0
- package/src/autoresearch/prompt-setup.md +43 -0
- package/src/autoresearch/prompt.md +103 -0
- package/src/autoresearch/resume-message.md +10 -0
- package/src/autoresearch/state.ts +273 -0
- package/src/autoresearch/storage.ts +699 -0
- package/src/autoresearch/tools/init-experiment.ts +272 -0
- package/src/autoresearch/tools/log-experiment.ts +524 -0
- package/src/autoresearch/tools/run-experiment.ts +407 -0
- package/src/autoresearch/tools/update-notes.ts +109 -0
- package/src/autoresearch/types.ts +168 -0
- package/src/bun-imports.d.ts +28 -0
- package/src/capability/context-file.ts +44 -0
- package/src/capability/extension-module.ts +34 -0
- package/src/capability/extension.ts +47 -0
- package/src/capability/fs.ts +117 -0
- package/src/capability/hook.ts +40 -0
- package/src/capability/index.ts +436 -0
- package/src/capability/instruction.ts +37 -0
- package/src/capability/mcp.ts +74 -0
- package/src/capability/prompt.ts +35 -0
- package/src/capability/rule-buckets.ts +66 -0
- package/src/capability/rule.ts +261 -0
- package/src/capability/settings.ts +34 -0
- package/src/capability/skill.ts +63 -0
- package/src/capability/slash-command.ts +40 -0
- package/src/capability/ssh.ts +41 -0
- package/src/capability/system-prompt.ts +34 -0
- package/src/capability/tool.ts +38 -0
- package/src/capability/types.ts +168 -0
- package/src/cli/agents-cli.ts +138 -0
- package/src/cli/args.ts +340 -0
- package/src/cli/auth-broker-cli.ts +895 -0
- package/src/cli/auth-gateway-cli.ts +611 -0
- package/src/cli/classify-install-target.ts +76 -0
- package/src/cli/claude-trace-cli.ts +795 -0
- package/src/cli/commands/init-xdg.ts +27 -0
- package/src/cli/completion-gen.ts +550 -0
- package/src/cli/config-cli.ts +418 -0
- package/src/cli/dry-balance-cli.ts +856 -0
- package/src/cli/extension-flags.ts +48 -0
- package/src/cli/file-processor.ts +133 -0
- package/src/cli/gallery-cli.ts +230 -0
- package/src/cli/gallery-fixtures/agentic.ts +407 -0
- package/src/cli/gallery-fixtures/codeintel.ts +187 -0
- package/src/cli/gallery-fixtures/edit.ts +194 -0
- package/src/cli/gallery-fixtures/fs.ts +220 -0
- package/src/cli/gallery-fixtures/index.ts +40 -0
- package/src/cli/gallery-fixtures/interaction.ts +49 -0
- package/src/cli/gallery-fixtures/memory.ts +81 -0
- package/src/cli/gallery-fixtures/misc.ts +250 -0
- package/src/cli/gallery-fixtures/search.ts +213 -0
- package/src/cli/gallery-fixtures/shell.ts +167 -0
- package/src/cli/gallery-fixtures/types.ts +57 -0
- package/src/cli/gallery-fixtures/web.ts +158 -0
- package/src/cli/gallery-screenshot.ts +279 -0
- package/src/cli/grep-cli.ts +160 -0
- package/src/cli/grievances-cli.ts +256 -0
- package/src/cli/initial-message.ts +58 -0
- package/src/cli/list-models.ts +194 -0
- package/src/cli/plugin-cli.ts +996 -0
- package/src/cli/read-cli.ts +57 -0
- package/src/cli/session-picker.ts +79 -0
- package/src/cli/setup-cli.ts +231 -0
- package/src/cli/shell-cli.ts +176 -0
- package/src/cli/ssh-cli.ts +179 -0
- package/src/cli/startup-cwd.ts +68 -0
- package/src/cli/stats-cli.ts +238 -0
- package/src/cli/tiny-models-cli.ts +127 -0
- package/src/cli/update-cli.ts +611 -0
- package/src/cli/usage-cli.ts +603 -0
- package/src/cli/web-search-cli.ts +132 -0
- package/src/cli/worktree-cli.ts +291 -0
- package/src/cli-commands.ts +79 -0
- package/src/cli.ts +200 -0
- package/src/commands/acp.ts +24 -0
- package/src/commands/agents.ts +57 -0
- package/src/commands/auth-broker.ts +99 -0
- package/src/commands/auth-gateway.ts +69 -0
- package/src/commands/commit.ts +46 -0
- package/src/commands/complete.ts +66 -0
- package/src/commands/completions.ts +60 -0
- package/src/commands/config.ts +51 -0
- package/src/commands/dry-balance.ts +43 -0
- package/src/commands/gallery.ts +52 -0
- package/src/commands/grep.ts +48 -0
- package/src/commands/grievances.ts +51 -0
- package/src/commands/install.ts +107 -0
- package/src/commands/launch.ts +169 -0
- package/src/commands/plugin.ts +78 -0
- package/src/commands/read.ts +38 -0
- package/src/commands/setup.ts +67 -0
- package/src/commands/shell.ts +29 -0
- package/src/commands/ssh.ts +60 -0
- package/src/commands/stats.ts +29 -0
- package/src/commands/tiny-models.ts +36 -0
- package/src/commands/update.ts +21 -0
- package/src/commands/usage.ts +35 -0
- package/src/commands/web-search.ts +42 -0
- package/src/commands/worktree.ts +56 -0
- package/src/commit/agentic/agent.ts +317 -0
- package/src/commit/agentic/fallback.ts +96 -0
- package/src/commit/agentic/index.ts +355 -0
- package/src/commit/agentic/prompts/analyze-file.md +22 -0
- package/src/commit/agentic/prompts/session-user.md +25 -0
- package/src/commit/agentic/prompts/split-confirm.md +1 -0
- package/src/commit/agentic/prompts/system.md +38 -0
- package/src/commit/agentic/state.ts +60 -0
- package/src/commit/agentic/tools/analyze-file.ts +146 -0
- package/src/commit/agentic/tools/git-file-diff.ts +191 -0
- package/src/commit/agentic/tools/git-hunk.ts +50 -0
- package/src/commit/agentic/tools/git-overview.ts +81 -0
- package/src/commit/agentic/tools/index.ts +54 -0
- package/src/commit/agentic/tools/propose-changelog.ts +144 -0
- package/src/commit/agentic/tools/propose-commit.ts +109 -0
- package/src/commit/agentic/tools/recent-commits.ts +81 -0
- package/src/commit/agentic/tools/schemas.ts +23 -0
- package/src/commit/agentic/tools/split-commit.ts +245 -0
- package/src/commit/agentic/topo-sort.ts +44 -0
- package/src/commit/agentic/trivial.ts +51 -0
- package/src/commit/agentic/validation.ts +183 -0
- package/src/commit/analysis/conventional.ts +64 -0
- package/src/commit/analysis/index.ts +4 -0
- package/src/commit/analysis/scope.ts +242 -0
- package/src/commit/analysis/summary.ts +105 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +40 -0
- package/src/commit/changelog/generate.ts +97 -0
- package/src/commit/changelog/index.ts +234 -0
- package/src/commit/changelog/parse.ts +44 -0
- package/src/commit/cli.ts +85 -0
- package/src/commit/git/diff.ts +148 -0
- package/src/commit/index.ts +5 -0
- package/src/commit/map-reduce/index.ts +69 -0
- package/src/commit/map-reduce/map-phase.ts +193 -0
- package/src/commit/map-reduce/reduce-phase.ts +49 -0
- package/src/commit/map-reduce/utils.ts +9 -0
- package/src/commit/message.ts +11 -0
- package/src/commit/model-selection.ts +92 -0
- package/src/commit/pipeline.ts +243 -0
- package/src/commit/prompts/analysis-system.md +148 -0
- package/src/commit/prompts/analysis-user.md +38 -0
- package/src/commit/prompts/changelog-system.md +50 -0
- package/src/commit/prompts/changelog-user.md +18 -0
- package/src/commit/prompts/file-observer-system.md +24 -0
- package/src/commit/prompts/file-observer-user.md +8 -0
- package/src/commit/prompts/reduce-system.md +50 -0
- package/src/commit/prompts/reduce-user.md +17 -0
- package/src/commit/prompts/summary-retry.md +3 -0
- package/src/commit/prompts/summary-system.md +38 -0
- package/src/commit/prompts/summary-user.md +13 -0
- package/src/commit/prompts/types-description.md +2 -0
- package/src/commit/shared-llm.ts +77 -0
- package/src/commit/types.ts +118 -0
- package/src/commit/utils/exclusions.ts +42 -0
- package/src/commit/utils.ts +58 -0
- package/src/config/api-key-resolver.ts +60 -0
- package/src/config/append-only-context-mode.ts +31 -0
- package/src/config/config-file.ts +317 -0
- package/src/config/file-lock.ts +164 -0
- package/src/config/keybindings.ts +628 -0
- package/src/config/mcp-schema.json +230 -0
- package/src/config/model-discovery.ts +554 -0
- package/src/config/model-registry.ts +2090 -0
- package/src/config/model-resolver.ts +1502 -0
- package/src/config/model-roles.ts +74 -0
- package/src/config/models-config-schema.ts +226 -0
- package/src/config/models-config.ts +129 -0
- package/src/config/prompt-templates.ts +185 -0
- package/src/config/resolve-config-value.ts +94 -0
- package/src/config/settings-schema.ts +3530 -0
- package/src/config/settings.ts +1178 -0
- package/src/config.ts +242 -0
- package/src/cursor.ts +340 -0
- package/src/dap/client.ts +760 -0
- package/src/dap/config.ts +189 -0
- package/src/dap/defaults.json +212 -0
- package/src/dap/index.ts +4 -0
- package/src/dap/session.ts +1441 -0
- package/src/dap/types.ts +610 -0
- package/src/debug/index.ts +515 -0
- package/src/debug/log-formatting.ts +58 -0
- package/src/debug/log-viewer.ts +908 -0
- package/src/debug/profiler.ts +162 -0
- package/src/debug/protocol-probe.ts +267 -0
- package/src/debug/raw-sse-buffer.ts +273 -0
- package/src/debug/raw-sse.ts +292 -0
- package/src/debug/report-bundle.ts +374 -0
- package/src/debug/system-info.ts +111 -0
- package/src/debug/terminal-info.ts +124 -0
- package/src/discovery/agents-md.ts +67 -0
- package/src/discovery/agents.ts +230 -0
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-defaults.ts +39 -0
- package/src/discovery/builtin-rules/index.ts +54 -0
- package/src/discovery/builtin-rules/rs-box-leak.md +48 -0
- package/src/discovery/builtin-rules/rs-future-prelude.md +23 -0
- package/src/discovery/builtin-rules/rs-lazylock.md +51 -0
- package/src/discovery/builtin-rules/rs-match-ergonomics.md +67 -0
- package/src/discovery/builtin-rules/rs-parking-lot.md +44 -0
- package/src/discovery/builtin-rules/rs-result-type.md +19 -0
- package/src/discovery/builtin-rules/ts-bare-catch.md +38 -0
- package/src/discovery/builtin-rules/ts-import-type.md +42 -0
- package/src/discovery/builtin-rules/ts-no-any.md +56 -0
- package/src/discovery/builtin-rules/ts-no-deprecated-leftovers.md +44 -0
- package/src/discovery/builtin-rules/ts-no-dynamic-import.md +39 -0
- package/src/discovery/builtin-rules/ts-no-return-type.md +45 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-no-tiny-functions.md +51 -0
- package/src/discovery/builtin-rules/ts-promise-with-resolvers.md +65 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin-rules/ts-set-map.md +28 -0
- package/src/discovery/builtin.ts +906 -0
- package/src/discovery/claude-plugins.ts +386 -0
- package/src/discovery/claude.ts +584 -0
- package/src/discovery/cline.ts +83 -0
- package/src/discovery/codex.ts +522 -0
- package/src/discovery/cursor.ts +220 -0
- package/src/discovery/gemini.ts +383 -0
- package/src/discovery/github.ts +154 -0
- package/src/discovery/helpers.ts +1016 -0
- package/src/discovery/index.ts +81 -0
- package/src/discovery/mcp-json.ts +171 -0
- package/src/discovery/omp-extension-roots.ts +190 -0
- package/src/discovery/omp-plugins.ts +383 -0
- package/src/discovery/opencode.ts +398 -0
- package/src/discovery/plugin-dir-roots.ts +28 -0
- package/src/discovery/ssh.ts +153 -0
- package/src/discovery/substitute-plugin-root.ts +29 -0
- package/src/discovery/vscode.ts +105 -0
- package/src/discovery/windsurf.ts +147 -0
- package/src/edit/apply-patch/index.ts +87 -0
- package/src/edit/apply-patch/parser.ts +174 -0
- package/src/edit/diff.ts +999 -0
- package/src/edit/file-snapshot-store.ts +91 -0
- package/src/edit/hashline/block-resolver.ts +33 -0
- package/src/edit/hashline/diff.ts +290 -0
- package/src/edit/hashline/execute.ts +242 -0
- package/src/edit/hashline/filesystem.ts +130 -0
- package/src/edit/hashline/index.ts +5 -0
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +18 -0
- package/src/edit/index.ts +571 -0
- package/src/edit/modes/apply-patch.lark +19 -0
- package/src/edit/modes/apply-patch.ts +53 -0
- package/src/edit/modes/patch.ts +1891 -0
- package/src/edit/modes/replace.ts +1137 -0
- package/src/edit/normalize.ts +345 -0
- package/src/edit/notebook.ts +242 -0
- package/src/edit/read-file.ts +25 -0
- package/src/edit/renderer.ts +769 -0
- package/src/edit/streaming.ts +517 -0
- package/src/eval/__tests__/agent-bridge.test.ts +708 -0
- package/src/eval/__tests__/bridge-timeout.test.ts +64 -0
- package/src/eval/__tests__/budget-bridge.test.ts +69 -0
- package/src/eval/__tests__/completion-bridge.test.ts +412 -0
- package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
- package/src/eval/__tests__/idle-timeout.test.ts +80 -0
- package/src/eval/__tests__/js-context-manager.test.ts +241 -0
- package/src/eval/__tests__/kernel-spawn.test.ts +103 -0
- package/src/eval/agent-bridge.ts +319 -0
- package/src/eval/backend.ts +71 -0
- package/src/eval/bridge-timeout.ts +44 -0
- package/src/eval/budget-bridge.ts +48 -0
- package/src/eval/completion-bridge.ts +207 -0
- package/src/eval/concurrency-bridge.ts +34 -0
- package/src/eval/idle-timeout.ts +91 -0
- package/src/eval/index.ts +4 -0
- package/src/eval/js/context-manager.ts +502 -0
- package/src/eval/js/executor.ts +173 -0
- package/src/eval/js/index.ts +51 -0
- package/src/eval/js/shared/helpers.ts +283 -0
- package/src/eval/js/shared/indirect-eval.ts +30 -0
- package/src/eval/js/shared/local-module-loader.ts +342 -0
- package/src/eval/js/shared/prelude.ts +2 -0
- package/src/eval/js/shared/prelude.txt +246 -0
- package/src/eval/js/shared/rewrite-imports.ts +532 -0
- package/src/eval/js/shared/runtime.ts +352 -0
- package/src/eval/js/shared/types.ts +18 -0
- package/src/eval/js/tool-bridge.ts +162 -0
- package/src/eval/js/worker-core.ts +132 -0
- package/src/eval/js/worker-entry.ts +30 -0
- package/src/eval/js/worker-protocol.ts +47 -0
- package/src/eval/py/__tests__/prelude.test.ts +19 -0
- package/src/eval/py/display.ts +71 -0
- package/src/eval/py/executor.ts +742 -0
- package/src/eval/py/index.ts +68 -0
- package/src/eval/py/kernel.ts +748 -0
- package/src/eval/py/prelude.py +658 -0
- package/src/eval/py/prelude.ts +3 -0
- package/src/eval/py/runner.py +1133 -0
- package/src/eval/py/runtime.ts +276 -0
- package/src/eval/py/spawn-options.ts +126 -0
- package/src/eval/py/tool-bridge.ts +182 -0
- package/src/eval/session-id.ts +8 -0
- package/src/eval/types.ts +48 -0
- package/src/exa/index.ts +2 -0
- package/src/exa/mcp-client.ts +370 -0
- package/src/exa/types.ts +69 -0
- package/src/exec/bash-executor.ts +419 -0
- package/src/exec/exec.ts +53 -0
- package/src/exec/non-interactive-env.ts +48 -0
- package/src/export/custom-share.ts +65 -0
- package/src/export/html/index.ts +164 -0
- package/src/export/html/template.css +1051 -0
- package/src/export/html/template.generated.ts +2 -0
- package/src/export/html/template.html +46 -0
- package/src/export/html/template.js +2271 -0
- package/src/export/html/template.macro.ts +25 -0
- package/src/export/html/vendor/highlight.min.js +1213 -0
- package/src/export/html/vendor/marked.min.js +6 -0
- package/src/export/ttsr.ts +583 -0
- package/src/extensibility/custom-commands/bundled/ci-green/index.ts +54 -0
- package/src/extensibility/custom-commands/bundled/review/index.ts +489 -0
- package/src/extensibility/custom-commands/index.ts +2 -0
- package/src/extensibility/custom-commands/loader.ts +238 -0
- package/src/extensibility/custom-commands/types.ts +113 -0
- package/src/extensibility/custom-tools/index.ts +7 -0
- package/src/extensibility/custom-tools/loader.ts +269 -0
- package/src/extensibility/custom-tools/types.ts +270 -0
- package/src/extensibility/custom-tools/wrapper.ts +47 -0
- package/src/extensibility/extensions/compact-handler.ts +40 -0
- package/src/extensibility/extensions/get-commands-handler.ts +78 -0
- package/src/extensibility/extensions/index.ts +16 -0
- package/src/extensibility/extensions/loader.ts +572 -0
- package/src/extensibility/extensions/runner.ts +922 -0
- package/src/extensibility/extensions/types.ts +1322 -0
- package/src/extensibility/extensions/wrapper.ts +223 -0
- package/src/extensibility/hooks/index.ts +5 -0
- package/src/extensibility/hooks/loader.ts +257 -0
- package/src/extensibility/hooks/runner.ts +425 -0
- package/src/extensibility/hooks/tool-wrapper.ts +107 -0
- package/src/extensibility/hooks/types.ts +606 -0
- package/src/extensibility/legacy-pi-ai-shim.ts +24 -0
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +15 -0
- package/src/extensibility/plugins/doctor.ts +65 -0
- package/src/extensibility/plugins/git-url.ts +367 -0
- package/src/extensibility/plugins/index.ts +9 -0
- package/src/extensibility/plugins/installer.ts +192 -0
- package/src/extensibility/plugins/legacy-pi-compat.ts +682 -0
- package/src/extensibility/plugins/loader.ts +313 -0
- package/src/extensibility/plugins/manager.ts +827 -0
- package/src/extensibility/plugins/marketplace/cache.ts +136 -0
- package/src/extensibility/plugins/marketplace/fetcher.ts +317 -0
- package/src/extensibility/plugins/marketplace/index.ts +6 -0
- package/src/extensibility/plugins/marketplace/manager.ts +770 -0
- package/src/extensibility/plugins/marketplace/registry.ts +196 -0
- package/src/extensibility/plugins/marketplace/source-resolver.ts +147 -0
- package/src/extensibility/plugins/marketplace/types.ts +191 -0
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/parser.ts +105 -0
- package/src/extensibility/plugins/types.ts +194 -0
- package/src/extensibility/shared-events.ts +343 -0
- package/src/extensibility/skills.ts +312 -0
- package/src/extensibility/slash-commands.ts +227 -0
- package/src/extensibility/tool-proxy.ts +25 -0
- package/src/extensibility/typebox.ts +418 -0
- package/src/extensibility/utils.ts +44 -0
- package/src/goals/index.ts +3 -0
- package/src/goals/runtime.ts +528 -0
- package/src/goals/state.ts +37 -0
- package/src/goals/tools/goal-tool.ts +251 -0
- package/src/hindsight/backend.ts +354 -0
- package/src/hindsight/bank.ts +156 -0
- package/src/hindsight/client.ts +598 -0
- package/src/hindsight/config.ts +175 -0
- package/src/hindsight/content.ts +210 -0
- package/src/hindsight/index.ts +8 -0
- package/src/hindsight/mental-models.ts +429 -0
- package/src/hindsight/seeds.json +32 -0
- package/src/hindsight/state.ts +488 -0
- package/src/hindsight/transcript.ts +71 -0
- package/src/index.ts +59 -0
- package/src/internal-urls/agent-protocol.ts +146 -0
- package/src/internal-urls/artifact-protocol.ts +107 -0
- package/src/internal-urls/docs-index.generated.ts +106 -0
- package/src/internal-urls/history-protocol.ts +113 -0
- package/src/internal-urls/index.ts +25 -0
- package/src/internal-urls/issue-pr-protocol.ts +584 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/local-protocol.ts +287 -0
- package/src/internal-urls/mcp-protocol.ts +151 -0
- package/src/internal-urls/memory-protocol.ts +169 -0
- package/src/internal-urls/omp-protocol.ts +93 -0
- package/src/internal-urls/parse.ts +72 -0
- package/src/internal-urls/registry-helpers.ts +25 -0
- package/src/internal-urls/router.ts +105 -0
- package/src/internal-urls/rule-protocol.ts +45 -0
- package/src/internal-urls/skill-protocol.ts +96 -0
- package/src/internal-urls/types.ts +152 -0
- package/src/internal-urls/vault-protocol.ts +936 -0
- package/src/irc/bus.ts +292 -0
- package/src/lib/xai-http.ts +124 -0
- package/src/lsp/client.ts +1193 -0
- package/src/lsp/clients/biome-client.ts +264 -0
- package/src/lsp/clients/index.ts +50 -0
- package/src/lsp/clients/lsp-linter-client.ts +93 -0
- package/src/lsp/clients/swiftlint-client.ts +120 -0
- package/src/lsp/config.ts +502 -0
- package/src/lsp/defaults.json +493 -0
- package/src/lsp/diagnostics-ledger.ts +51 -0
- package/src/lsp/edits.ts +267 -0
- package/src/lsp/index.ts +2477 -0
- package/src/lsp/lspmux.ts +233 -0
- package/src/lsp/render.ts +694 -0
- package/src/lsp/startup-events.ts +13 -0
- package/src/lsp/types.ts +455 -0
- package/src/lsp/utils.ts +718 -0
- package/src/main.ts +1325 -0
- package/src/mcp/client.ts +484 -0
- package/src/mcp/config-writer.ts +225 -0
- package/src/mcp/config.ts +365 -0
- package/src/mcp/index.ts +29 -0
- package/src/mcp/json-rpc.ts +122 -0
- package/src/mcp/loader.ts +124 -0
- package/src/mcp/manager.ts +1275 -0
- package/src/mcp/oauth-discovery.ts +442 -0
- package/src/mcp/oauth-flow.ts +442 -0
- package/src/mcp/render.ts +132 -0
- package/src/mcp/smithery-auth.ts +104 -0
- package/src/mcp/smithery-connect.ts +145 -0
- package/src/mcp/smithery-registry.ts +477 -0
- package/src/mcp/timeout.ts +59 -0
- package/src/mcp/tool-bridge.ts +426 -0
- package/src/mcp/tool-cache.ts +117 -0
- package/src/mcp/transports/http.ts +519 -0
- package/src/mcp/transports/index.ts +6 -0
- package/src/mcp/transports/stdio.ts +528 -0
- package/src/mcp/types.ts +423 -0
- package/src/memories/index.ts +1150 -0
- package/src/memories/storage.ts +577 -0
- package/src/memory-backend/index.ts +18 -0
- package/src/memory-backend/local-backend.ts +39 -0
- package/src/memory-backend/off-backend.ts +25 -0
- package/src/memory-backend/resolve.ts +25 -0
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +166 -0
- package/src/mnemopi/backend.ts +547 -0
- package/src/mnemopi/config.ts +160 -0
- package/src/mnemopi/index.ts +3 -0
- package/src/mnemopi/state.ts +584 -0
- package/src/modes/acp/acp-agent.ts +2407 -0
- package/src/modes/acp/acp-client-bridge.ts +154 -0
- package/src/modes/acp/acp-event-mapper.ts +929 -0
- package/src/modes/acp/acp-mode.ts +23 -0
- package/src/modes/acp/index.ts +2 -0
- package/src/modes/acp/terminal-auth.ts +37 -0
- package/src/modes/components/agent-dashboard.ts +1206 -0
- package/src/modes/components/agent-hub.ts +1071 -0
- package/src/modes/components/assistant-message.ts +307 -0
- package/src/modes/components/bash-execution.ts +220 -0
- package/src/modes/components/bordered-loader.ts +41 -0
- package/src/modes/components/branch-summary-message.ts +45 -0
- package/src/modes/components/btw-panel.ts +104 -0
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/compaction-summary-message.ts +87 -0
- package/src/modes/components/copy-selector.ts +206 -0
- package/src/modes/components/countdown-timer.ts +75 -0
- package/src/modes/components/custom-editor.ts +398 -0
- package/src/modes/components/custom-message.ts +63 -0
- package/src/modes/components/diff.ts +277 -0
- package/src/modes/components/dynamic-border.ts +34 -0
- package/src/modes/components/error-banner.ts +33 -0
- package/src/modes/components/eval-execution.ts +158 -0
- package/src/modes/components/execution-shared.ts +101 -0
- package/src/modes/components/extensions/extension-dashboard.ts +399 -0
- package/src/modes/components/extensions/extension-list.ts +502 -0
- package/src/modes/components/extensions/index.ts +9 -0
- package/src/modes/components/extensions/inspector-panel.ts +317 -0
- package/src/modes/components/extensions/state-manager.ts +627 -0
- package/src/modes/components/extensions/types.ts +186 -0
- package/src/modes/components/footer.ts +274 -0
- package/src/modes/components/history-search.ts +280 -0
- package/src/modes/components/hook-editor.ts +167 -0
- package/src/modes/components/hook-input.ts +87 -0
- package/src/modes/components/hook-message.ts +66 -0
- package/src/modes/components/hook-selector.ts +660 -0
- package/src/modes/components/index.ts +38 -0
- package/src/modes/components/keybinding-hints.ts +65 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +164 -0
- package/src/modes/components/mcp-add-wizard.ts +1340 -0
- package/src/modes/components/message-frame.ts +88 -0
- package/src/modes/components/model-selector.ts +1271 -0
- package/src/modes/components/oauth-selector.ts +368 -0
- package/src/modes/components/omfg-panel.ts +141 -0
- package/src/modes/components/overlay-box.ts +108 -0
- package/src/modes/components/plan-review-overlay.ts +820 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-selector.ts +95 -0
- package/src/modes/components/plugin-settings.ts +722 -0
- package/src/modes/components/queue-mode-selector.ts +56 -0
- package/src/modes/components/read-tool-group.ts +670 -0
- package/src/modes/components/segment-track.ts +52 -0
- package/src/modes/components/session-selector.ts +625 -0
- package/src/modes/components/settings-defs.ts +189 -0
- package/src/modes/components/settings-selector.ts +651 -0
- package/src/modes/components/show-images-selector.ts +45 -0
- package/src/modes/components/skill-message.ts +89 -0
- package/src/modes/components/status-line/component.ts +869 -0
- package/src/modes/components/status-line/context-thresholds.ts +79 -0
- package/src/modes/components/status-line/git-utils.ts +42 -0
- package/src/modes/components/status-line/index.ts +5 -0
- package/src/modes/components/status-line/presets.ts +106 -0
- package/src/modes/components/status-line/segments.ts +584 -0
- package/src/modes/components/status-line/separators.ts +55 -0
- package/src/modes/components/status-line/token-rate.ts +66 -0
- package/src/modes/components/status-line/types.ts +108 -0
- package/src/modes/components/theme-selector.ts +63 -0
- package/src/modes/components/thinking-selector.ts +52 -0
- package/src/modes/components/tiny-title-download-progress.ts +90 -0
- package/src/modes/components/tips.txt +19 -0
- package/src/modes/components/todo-reminder.ts +38 -0
- package/src/modes/components/tool-execution.ts +1024 -0
- package/src/modes/components/transcript-container.ts +608 -0
- package/src/modes/components/tree-selector.ts +978 -0
- package/src/modes/components/ttsr-notification.ts +122 -0
- package/src/modes/components/user-message-selector.ts +227 -0
- package/src/modes/components/user-message.ts +66 -0
- package/src/modes/components/visual-truncate.ts +63 -0
- package/src/modes/components/welcome.ts +493 -0
- package/src/modes/controllers/btw-controller.ts +105 -0
- package/src/modes/controllers/command-controller-shared.ts +109 -0
- package/src/modes/controllers/command-controller.ts +1566 -0
- package/src/modes/controllers/event-controller.ts +1054 -0
- package/src/modes/controllers/extension-ui-controller.ts +886 -0
- package/src/modes/controllers/input-controller.ts +1073 -0
- package/src/modes/controllers/mcp-command-controller.ts +2017 -0
- package/src/modes/controllers/omfg-controller.ts +283 -0
- package/src/modes/controllers/omfg-rule.ts +647 -0
- package/src/modes/controllers/selector-controller.ts +1108 -0
- package/src/modes/controllers/ssh-command-controller.ts +384 -0
- package/src/modes/controllers/streaming-reveal.ts +279 -0
- package/src/modes/controllers/tan-command-controller.ts +173 -0
- package/src/modes/controllers/todo-command-controller.ts +485 -0
- package/src/modes/data/emojis.json +1 -0
- package/src/modes/emoji-autocomplete.ts +285 -0
- package/src/modes/gradient-highlight.ts +87 -0
- package/src/modes/image-references.ts +117 -0
- package/src/modes/index.ts +17 -0
- package/src/modes/interactive-mode.ts +3370 -0
- package/src/modes/internal-url-autocomplete.ts +143 -0
- package/src/modes/loop-limit.ts +140 -0
- package/src/modes/magic-keywords.ts +20 -0
- package/src/modes/markdown-prose.ts +247 -0
- package/src/modes/oauth-manual-input.ts +69 -0
- package/src/modes/orchestrate.ts +42 -0
- package/src/modes/print-mode.ts +126 -0
- package/src/modes/prompt-action-autocomplete.ts +260 -0
- package/src/modes/rpc/host-tools.ts +186 -0
- package/src/modes/rpc/host-uris.ts +235 -0
- package/src/modes/rpc/rpc-client.ts +963 -0
- package/src/modes/rpc/rpc-mode.ts +947 -0
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +458 -0
- package/src/modes/runtime-init.ts +116 -0
- package/src/modes/session-observer-registry.ts +146 -0
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +99 -0
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +96 -0
- package/src/modes/setup-wizard/scenes/outro.ts +35 -0
- package/src/modes/setup-wizard/scenes/providers.ts +69 -0
- package/src/modes/setup-wizard/scenes/sign-in.ts +205 -0
- package/src/modes/setup-wizard/scenes/splash.ts +201 -0
- package/src/modes/setup-wizard/scenes/theme.ts +299 -0
- package/src/modes/setup-wizard/scenes/types.ts +48 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +129 -0
- package/src/modes/setup-wizard/wizard-overlay.ts +275 -0
- package/src/modes/shared.ts +47 -0
- package/src/modes/theme/dark.json +95 -0
- package/src/modes/theme/defaults/alabaster.json +93 -0
- package/src/modes/theme/defaults/amethyst.json +96 -0
- package/src/modes/theme/defaults/anthracite.json +93 -0
- package/src/modes/theme/defaults/basalt.json +91 -0
- package/src/modes/theme/defaults/birch.json +95 -0
- package/src/modes/theme/defaults/dark-abyss.json +91 -0
- package/src/modes/theme/defaults/dark-arctic.json +104 -0
- package/src/modes/theme/defaults/dark-aurora.json +95 -0
- package/src/modes/theme/defaults/dark-catppuccin.json +107 -0
- package/src/modes/theme/defaults/dark-cavern.json +91 -0
- package/src/modes/theme/defaults/dark-copper.json +95 -0
- package/src/modes/theme/defaults/dark-cosmos.json +90 -0
- package/src/modes/theme/defaults/dark-cyberpunk.json +102 -0
- package/src/modes/theme/defaults/dark-dracula.json +98 -0
- package/src/modes/theme/defaults/dark-eclipse.json +91 -0
- package/src/modes/theme/defaults/dark-ember.json +95 -0
- package/src/modes/theme/defaults/dark-equinox.json +90 -0
- package/src/modes/theme/defaults/dark-forest.json +96 -0
- package/src/modes/theme/defaults/dark-github.json +105 -0
- package/src/modes/theme/defaults/dark-gruvbox.json +112 -0
- package/src/modes/theme/defaults/dark-lavender.json +95 -0
- package/src/modes/theme/defaults/dark-lunar.json +89 -0
- package/src/modes/theme/defaults/dark-midnight.json +95 -0
- package/src/modes/theme/defaults/dark-monochrome.json +94 -0
- package/src/modes/theme/defaults/dark-monokai.json +98 -0
- package/src/modes/theme/defaults/dark-nebula.json +90 -0
- package/src/modes/theme/defaults/dark-nord.json +97 -0
- package/src/modes/theme/defaults/dark-ocean.json +101 -0
- package/src/modes/theme/defaults/dark-one.json +100 -0
- package/src/modes/theme/defaults/dark-poimandres.json +142 -0
- package/src/modes/theme/defaults/dark-rainforest.json +91 -0
- package/src/modes/theme/defaults/dark-reef.json +91 -0
- package/src/modes/theme/defaults/dark-retro.json +92 -0
- package/src/modes/theme/defaults/dark-rose-pine.json +96 -0
- package/src/modes/theme/defaults/dark-sakura.json +95 -0
- package/src/modes/theme/defaults/dark-slate.json +95 -0
- package/src/modes/theme/defaults/dark-solarized.json +97 -0
- package/src/modes/theme/defaults/dark-solstice.json +90 -0
- package/src/modes/theme/defaults/dark-starfall.json +91 -0
- package/src/modes/theme/defaults/dark-sunset.json +99 -0
- package/src/modes/theme/defaults/dark-swamp.json +90 -0
- package/src/modes/theme/defaults/dark-synthwave.json +103 -0
- package/src/modes/theme/defaults/dark-taiga.json +91 -0
- package/src/modes/theme/defaults/dark-terminal.json +95 -0
- package/src/modes/theme/defaults/dark-tokyo-night.json +101 -0
- package/src/modes/theme/defaults/dark-tundra.json +91 -0
- package/src/modes/theme/defaults/dark-twilight.json +91 -0
- package/src/modes/theme/defaults/dark-volcanic.json +91 -0
- package/src/modes/theme/defaults/graphite.json +92 -0
- package/src/modes/theme/defaults/index.ts +199 -0
- package/src/modes/theme/defaults/light-arctic.json +107 -0
- package/src/modes/theme/defaults/light-aurora-day.json +91 -0
- package/src/modes/theme/defaults/light-canyon.json +91 -0
- package/src/modes/theme/defaults/light-catppuccin.json +106 -0
- package/src/modes/theme/defaults/light-cirrus.json +90 -0
- package/src/modes/theme/defaults/light-coral.json +95 -0
- package/src/modes/theme/defaults/light-cyberpunk.json +96 -0
- package/src/modes/theme/defaults/light-dawn.json +90 -0
- package/src/modes/theme/defaults/light-dunes.json +91 -0
- package/src/modes/theme/defaults/light-eucalyptus.json +95 -0
- package/src/modes/theme/defaults/light-forest.json +100 -0
- package/src/modes/theme/defaults/light-frost.json +95 -0
- package/src/modes/theme/defaults/light-github.json +115 -0
- package/src/modes/theme/defaults/light-glacier.json +91 -0
- package/src/modes/theme/defaults/light-gruvbox.json +108 -0
- package/src/modes/theme/defaults/light-haze.json +90 -0
- package/src/modes/theme/defaults/light-honeycomb.json +95 -0
- package/src/modes/theme/defaults/light-lagoon.json +91 -0
- package/src/modes/theme/defaults/light-lavender.json +95 -0
- package/src/modes/theme/defaults/light-meadow.json +91 -0
- package/src/modes/theme/defaults/light-mint.json +95 -0
- package/src/modes/theme/defaults/light-monochrome.json +101 -0
- package/src/modes/theme/defaults/light-ocean.json +99 -0
- package/src/modes/theme/defaults/light-one.json +99 -0
- package/src/modes/theme/defaults/light-opal.json +91 -0
- package/src/modes/theme/defaults/light-orchard.json +91 -0
- package/src/modes/theme/defaults/light-paper.json +95 -0
- package/src/modes/theme/defaults/light-poimandres.json +142 -0
- package/src/modes/theme/defaults/light-prism.json +90 -0
- package/src/modes/theme/defaults/light-retro.json +98 -0
- package/src/modes/theme/defaults/light-sand.json +95 -0
- package/src/modes/theme/defaults/light-savanna.json +91 -0
- package/src/modes/theme/defaults/light-solarized.json +102 -0
- package/src/modes/theme/defaults/light-soleil.json +90 -0
- package/src/modes/theme/defaults/light-sunset.json +99 -0
- package/src/modes/theme/defaults/light-synthwave.json +98 -0
- package/src/modes/theme/defaults/light-tokyo-night.json +111 -0
- package/src/modes/theme/defaults/light-wetland.json +91 -0
- package/src/modes/theme/defaults/light-zenith.json +89 -0
- package/src/modes/theme/defaults/limestone.json +94 -0
- package/src/modes/theme/defaults/mahogany.json +97 -0
- package/src/modes/theme/defaults/marble.json +93 -0
- package/src/modes/theme/defaults/obsidian.json +91 -0
- package/src/modes/theme/defaults/onyx.json +91 -0
- package/src/modes/theme/defaults/pearl.json +93 -0
- package/src/modes/theme/defaults/porcelain.json +91 -0
- package/src/modes/theme/defaults/quartz.json +96 -0
- package/src/modes/theme/defaults/sandstone.json +95 -0
- package/src/modes/theme/defaults/titanium.json +90 -0
- package/src/modes/theme/light.json +93 -0
- package/src/modes/theme/mermaid-cache.ts +29 -0
- package/src/modes/theme/shimmer.ts +235 -0
- package/src/modes/theme/theme-schema.json +459 -0
- package/src/modes/theme/theme.ts +2676 -0
- package/src/modes/turn-budget.ts +31 -0
- package/src/modes/types.ts +359 -0
- package/src/modes/ultrathink.ts +41 -0
- package/src/modes/utils/context-usage.ts +339 -0
- package/src/modes/utils/copy-targets.ts +360 -0
- package/src/modes/utils/hotkeys-markdown.ts +61 -0
- package/src/modes/utils/keybinding-matchers.ts +51 -0
- package/src/modes/utils/tools-markdown.ts +27 -0
- package/src/modes/utils/ui-helpers.ts +801 -0
- package/src/modes/workflow.ts +42 -0
- package/src/plan-mode/approved-plan.ts +186 -0
- package/src/plan-mode/plan-handoff.ts +37 -0
- package/src/plan-mode/plan-protection.ts +31 -0
- package/src/plan-mode/state.ts +6 -0
- package/src/priority.json +41 -0
- package/src/prompts/agents/designer.md +66 -0
- package/src/prompts/agents/explore.md +58 -0
- package/src/prompts/agents/frontmatter.md +11 -0
- package/src/prompts/agents/init.md +33 -0
- package/src/prompts/agents/librarian.md +119 -0
- package/src/prompts/agents/oracle.md +55 -0
- package/src/prompts/agents/plan.md +48 -0
- package/src/prompts/agents/reviewer.md +140 -0
- package/src/prompts/agents/task.md +16 -0
- package/src/prompts/ci-green-request.md +36 -0
- package/src/prompts/dry-balance-bench.md +8 -0
- package/src/prompts/goals/goal-budget-limit.md +16 -0
- package/src/prompts/goals/goal-continuation.md +28 -0
- package/src/prompts/goals/goal-mode-active.md +23 -0
- package/src/prompts/memories/consolidation.md +30 -0
- package/src/prompts/memories/read-path.md +11 -0
- package/src/prompts/memories/stage_one_input.md +6 -0
- package/src/prompts/memories/stage_one_system.md +21 -0
- package/src/prompts/review-custom-request.md +22 -0
- package/src/prompts/review-headless-request.md +16 -0
- package/src/prompts/review-request.md +69 -0
- package/src/prompts/steering/user-interjection.md +10 -0
- package/src/prompts/system/agent-creation-architect.md +50 -0
- package/src/prompts/system/agent-creation-user.md +6 -0
- package/src/prompts/system/auto-continue.md +1 -0
- package/src/prompts/system/auto-thinking-difficulty-local.md +14 -0
- package/src/prompts/system/auto-thinking-difficulty.md +12 -0
- package/src/prompts/system/background-tan-dispatch.md +8 -0
- package/src/prompts/system/btw-user.md +8 -0
- package/src/prompts/system/commit-message-system.md +14 -0
- package/src/prompts/system/custom-system-prompt.md +64 -0
- package/src/prompts/system/eager-todo.md +13 -0
- package/src/prompts/system/empty-stop-retry.md +6 -0
- package/src/prompts/system/irc-incoming.md +7 -0
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/memory-consolidation-system.md +8 -0
- package/src/prompts/system/memory-extraction-system.md +26 -0
- package/src/prompts/system/omfg-user.md +50 -0
- package/src/prompts/system/orchestrate-notice.md +40 -0
- package/src/prompts/system/plan-mode-active.md +109 -0
- package/src/prompts/system/plan-mode-approved.md +25 -0
- package/src/prompts/system/plan-mode-compact-instructions.md +16 -0
- package/src/prompts/system/plan-mode-reference.md +11 -0
- package/src/prompts/system/plan-mode-subagent.md +33 -0
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
- package/src/prompts/system/project-prompt.md +52 -0
- package/src/prompts/system/subagent-system-prompt.md +64 -0
- package/src/prompts/system/subagent-user-prompt.md +3 -0
- package/src/prompts/system/subagent-yield-reminder.md +12 -0
- package/src/prompts/system/system-prompt.md +258 -0
- package/src/prompts/system/tiny-title-system.md +8 -0
- package/src/prompts/system/title-system.md +16 -0
- package/src/prompts/system/ttsr-interrupt.md +7 -0
- package/src/prompts/system/ttsr-tool-reminder.md +5 -0
- package/src/prompts/system/ultrathink-notice.md +3 -0
- package/src/prompts/system/web-search.md +25 -0
- package/src/prompts/system/workflow-notice.md +70 -0
- package/src/prompts/tools/apply-patch.md +65 -0
- package/src/prompts/tools/ask.md +30 -0
- package/src/prompts/tools/ast-edit.md +39 -0
- package/src/prompts/tools/ast-grep.md +42 -0
- package/src/prompts/tools/async-result.md +8 -0
- package/src/prompts/tools/bash.md +46 -0
- package/src/prompts/tools/browser.md +73 -0
- package/src/prompts/tools/checkpoint.md +16 -0
- package/src/prompts/tools/debug.md +34 -0
- package/src/prompts/tools/eval.md +92 -0
- package/src/prompts/tools/find.md +36 -0
- package/src/prompts/tools/github.md +21 -0
- package/src/prompts/tools/goal.md +18 -0
- package/src/prompts/tools/image-gen.md +7 -0
- package/src/prompts/tools/inspect-image-system.md +20 -0
- package/src/prompts/tools/inspect-image.md +32 -0
- package/src/prompts/tools/irc.md +59 -0
- package/src/prompts/tools/job.md +19 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +42 -0
- package/src/prompts/tools/memory-edit.md +8 -0
- package/src/prompts/tools/patch.md +70 -0
- package/src/prompts/tools/read.md +84 -0
- package/src/prompts/tools/recall.md +5 -0
- package/src/prompts/tools/reflect.md +5 -0
- package/src/prompts/tools/render-mermaid.md +9 -0
- package/src/prompts/tools/replace.md +30 -0
- package/src/prompts/tools/resolve.md +9 -0
- package/src/prompts/tools/retain.md +6 -0
- package/src/prompts/tools/rewind.md +13 -0
- package/src/prompts/tools/search-tool-bm25.md +32 -0
- package/src/prompts/tools/search.md +24 -0
- package/src/prompts/tools/ssh.md +31 -0
- package/src/prompts/tools/task-summary.md +17 -0
- package/src/prompts/tools/task.md +88 -0
- package/src/prompts/tools/todo.md +62 -0
- package/src/prompts/tools/web-search.md +10 -0
- package/src/prompts/tools/write.md +14 -0
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +151 -0
- package/src/sdk.ts +2558 -0
- package/src/secrets/index.ts +123 -0
- package/src/secrets/obfuscator.ts +298 -0
- package/src/secrets/regex.ts +21 -0
- package/src/session/agent-session.ts +10121 -0
- package/src/session/agent-storage.ts +455 -0
- package/src/session/artifacts.ts +135 -0
- package/src/session/auth-broker-config.ts +131 -0
- package/src/session/auth-storage.ts +29 -0
- package/src/session/blob-store.ts +255 -0
- package/src/session/client-bridge.ts +85 -0
- package/src/session/history-storage.ts +348 -0
- package/src/session/indexed-session-storage.ts +430 -0
- package/src/session/messages.ts +541 -0
- package/src/session/redis-session-storage.ts +170 -0
- package/src/session/session-dump-format.ts +209 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-manager.ts +3676 -0
- package/src/session/session-storage.ts +529 -0
- package/src/session/shake-types.ts +43 -0
- package/src/session/sql-session-storage.ts +314 -0
- package/src/session/streaming-output.ts +1330 -0
- package/src/session/tool-choice-queue.ts +213 -0
- package/src/session/yield-queue.ts +173 -0
- package/src/slash-commands/acp-builtins.ts +70 -0
- package/src/slash-commands/builtin-registry.ts +1798 -0
- package/src/slash-commands/helpers/context-report.ts +39 -0
- package/src/slash-commands/helpers/format.ts +46 -0
- package/src/slash-commands/helpers/marketplace-manager.ts +25 -0
- package/src/slash-commands/helpers/mcp.ts +532 -0
- package/src/slash-commands/helpers/parse.ts +85 -0
- package/src/slash-commands/helpers/ssh.ts +195 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/todo.ts +279 -0
- package/src/slash-commands/helpers/usage-report.ts +95 -0
- package/src/slash-commands/marketplace-install-parser.ts +99 -0
- package/src/slash-commands/types.ts +135 -0
- package/src/ssh/config-writer.ts +183 -0
- package/src/ssh/connection-manager.ts +509 -0
- package/src/ssh/ssh-executor.ts +189 -0
- package/src/ssh/sshfs-mount.ts +140 -0
- package/src/ssh/utils.ts +8 -0
- package/src/stt/downloader.ts +71 -0
- package/src/stt/index.ts +3 -0
- package/src/stt/recorder.ts +351 -0
- package/src/stt/setup.ts +52 -0
- package/src/stt/stt-controller.ts +160 -0
- package/src/stt/transcribe.py +70 -0
- package/src/stt/transcriber.ts +91 -0
- package/src/stubs/natives/index.ts +814 -0
- package/src/stubs/natives/package.json +7 -0
- package/src/stubs/tui/index.ts +282 -0
- package/src/stubs/tui/package.json +7 -0
- package/src/system-prompt.ts +611 -0
- package/src/task/agents.ts +167 -0
- package/src/task/commands.ts +132 -0
- package/src/task/discovery.ts +122 -0
- package/src/task/executor.ts +2133 -0
- package/src/task/index.ts +1419 -0
- package/src/task/name-generator.ts +1577 -0
- package/src/task/omp-command.ts +26 -0
- package/src/task/output-manager.ts +88 -0
- package/src/task/parallel.ts +116 -0
- package/src/task/render.ts +1381 -0
- package/src/task/repair-args.ts +129 -0
- package/src/task/subprocess-tool-registry.ts +88 -0
- package/src/task/types.ts +336 -0
- package/src/task/worktree.ts +514 -0
- package/src/telemetry-export.ts +144 -0
- package/src/thinking.ts +167 -0
- package/src/tiny/compiled-runtime.ts +179 -0
- package/src/tiny/device.ts +111 -0
- package/src/tiny/dtype.ts +101 -0
- package/src/tiny/models.ts +242 -0
- package/src/tiny/text.ts +165 -0
- package/src/tiny/title-client.ts +543 -0
- package/src/tiny/title-protocol.ts +56 -0
- package/src/tiny/worker.ts +568 -0
- package/src/tool-discovery/mode.ts +24 -0
- package/src/tool-discovery/tool-index.ts +256 -0
- package/src/tools/approval.ts +189 -0
- package/src/tools/archive-reader.ts +721 -0
- package/src/tools/ask.ts +928 -0
- package/src/tools/ast-edit.ts +642 -0
- package/src/tools/ast-grep.ts +452 -0
- package/src/tools/auto-generated-guard.ts +322 -0
- package/src/tools/bash-command-fixup.ts +37 -0
- package/src/tools/bash-interactive.ts +408 -0
- package/src/tools/bash-interceptor.ts +67 -0
- package/src/tools/bash-pty-selection.ts +14 -0
- package/src/tools/bash-skill-urls.ts +248 -0
- package/src/tools/bash.ts +1386 -0
- package/src/tools/browser/attach.ts +175 -0
- package/src/tools/browser/launch.ts +660 -0
- package/src/tools/browser/readable.ts +112 -0
- package/src/tools/browser/registry.ts +197 -0
- package/src/tools/browser/render.ts +216 -0
- package/src/tools/browser/tab-protocol.ts +105 -0
- package/src/tools/browser/tab-supervisor.ts +628 -0
- package/src/tools/browser/tab-worker-entry.ts +21 -0
- package/src/tools/browser/tab-worker.ts +1226 -0
- package/src/tools/browser.ts +343 -0
- package/src/tools/checkpoint.ts +136 -0
- package/src/tools/conflict-detect.ts +718 -0
- package/src/tools/context.ts +39 -0
- package/src/tools/debug.ts +1067 -0
- package/src/tools/eval-backends.ts +27 -0
- package/src/tools/eval-render.ts +752 -0
- package/src/tools/eval.ts +577 -0
- package/src/tools/fetch.ts +1926 -0
- package/src/tools/file-recorder.ts +35 -0
- package/src/tools/find.ts +609 -0
- package/src/tools/fs-cache-invalidation.ts +28 -0
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-format.ts +12 -0
- package/src/tools/gh-renderer.ts +481 -0
- package/src/tools/gh.ts +3720 -0
- package/src/tools/github-cache.ts +637 -0
- package/src/tools/grouped-file-output.ts +210 -0
- package/src/tools/image-gen.ts +1517 -0
- package/src/tools/index.ts +599 -0
- package/src/tools/inspect-image-renderer.ts +132 -0
- package/src/tools/inspect-image.ts +174 -0
- package/src/tools/irc.ts +723 -0
- package/src/tools/job.ts +557 -0
- package/src/tools/json-tree.ts +243 -0
- package/src/tools/jtd-to-json-schema.ts +219 -0
- package/src/tools/jtd-to-typescript.ts +136 -0
- package/src/tools/jtd-utils.ts +102 -0
- package/src/tools/list-limit.ts +40 -0
- package/src/tools/match-line-format.ts +20 -0
- package/src/tools/memory-edit.ts +59 -0
- package/src/tools/memory-recall.ts +100 -0
- package/src/tools/memory-reflect.ts +88 -0
- package/src/tools/memory-render.ts +202 -0
- package/src/tools/memory-retain.ts +91 -0
- package/src/tools/output-meta.ts +754 -0
- package/src/tools/output-schema-validator.ts +132 -0
- package/src/tools/path-utils.ts +1054 -0
- package/src/tools/plan-mode-guard.ts +108 -0
- package/src/tools/puppeteer/00_stealth_tampering.txt +63 -0
- package/src/tools/puppeteer/01_stealth_activity.txt +20 -0
- package/src/tools/puppeteer/02_stealth_hairline.txt +11 -0
- package/src/tools/puppeteer/03_stealth_botd.txt +384 -0
- package/src/tools/puppeteer/04_stealth_iframe.txt +81 -0
- package/src/tools/puppeteer/05_stealth_webgl.txt +75 -0
- package/src/tools/puppeteer/06_stealth_screen.txt +72 -0
- package/src/tools/puppeteer/07_stealth_fonts.txt +97 -0
- package/src/tools/puppeteer/08_stealth_audio.txt +51 -0
- package/src/tools/puppeteer/09_stealth_locale.txt +46 -0
- package/src/tools/puppeteer/10_stealth_plugins.txt +206 -0
- package/src/tools/puppeteer/11_stealth_hardware.txt +8 -0
- package/src/tools/puppeteer/12_stealth_codecs.txt +40 -0
- package/src/tools/puppeteer/13_stealth_worker.txt +74 -0
- package/src/tools/read.ts +2929 -0
- package/src/tools/render-mermaid.ts +69 -0
- package/src/tools/render-utils.ts +838 -0
- package/src/tools/renderers.ts +77 -0
- package/src/tools/report-tool-issue.ts +534 -0
- package/src/tools/resolve.ts +276 -0
- package/src/tools/review.ts +253 -0
- package/src/tools/search-tool-bm25.ts +351 -0
- package/src/tools/search.ts +1580 -0
- package/src/tools/sqlite-reader.ts +828 -0
- package/src/tools/ssh.ts +349 -0
- package/src/tools/todo.ts +982 -0
- package/src/tools/tool-errors.ts +62 -0
- package/src/tools/tool-result.ts +94 -0
- package/src/tools/tool-timeouts.ts +30 -0
- package/src/tools/tts.ts +133 -0
- package/src/tools/write.ts +1217 -0
- package/src/tools/yield.ts +269 -0
- package/src/tui/code-cell.ts +216 -0
- package/src/tui/file-list.ts +55 -0
- package/src/tui/hyperlink.ts +175 -0
- package/src/tui/index.ts +12 -0
- package/src/tui/output-block.ts +240 -0
- package/src/tui/status-line.ts +54 -0
- package/src/tui/tree-list.ts +84 -0
- package/src/tui/types.ts +15 -0
- package/src/tui/utils.ts +103 -0
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +132 -0
- package/src/utils/clipboard.ts +193 -0
- package/src/utils/command-args.ts +76 -0
- package/src/utils/commit-message-generator.ts +151 -0
- package/src/utils/edit-mode.ts +41 -0
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/event-bus.ts +33 -0
- package/src/utils/external-editor.ts +65 -0
- package/src/utils/file-display-mode.ts +45 -0
- package/src/utils/file-mentions.ts +281 -0
- package/src/utils/git.ts +1833 -0
- package/src/utils/image-loading.ts +132 -0
- package/src/utils/image-resize.ts +309 -0
- package/src/utils/jj.ts +248 -0
- package/src/utils/lang-from-path.ts +239 -0
- package/src/utils/markit.ts +89 -0
- package/src/utils/open.ts +55 -0
- package/src/utils/session-color.ts +68 -0
- package/src/utils/shell-snapshot.ts +187 -0
- package/src/utils/sixel.ts +69 -0
- package/src/utils/title-generator.ts +373 -0
- package/src/utils/tool-choice.ts +33 -0
- package/src/utils/tools-manager.ts +363 -0
- package/src/web/kagi.ts +305 -0
- package/src/web/parallel.ts +353 -0
- package/src/web/scrapers/artifacthub.ts +207 -0
- package/src/web/scrapers/arxiv.ts +83 -0
- package/src/web/scrapers/aur.ts +162 -0
- package/src/web/scrapers/biorxiv.ts +133 -0
- package/src/web/scrapers/bluesky.ts +262 -0
- package/src/web/scrapers/brew.ts +172 -0
- package/src/web/scrapers/cheatsh.ts +68 -0
- package/src/web/scrapers/chocolatey.ts +196 -0
- package/src/web/scrapers/choosealicense.ts +95 -0
- package/src/web/scrapers/cisa-kev.ts +87 -0
- package/src/web/scrapers/clojars.ts +154 -0
- package/src/web/scrapers/coingecko.ts +177 -0
- package/src/web/scrapers/crates-io.ts +97 -0
- package/src/web/scrapers/crossref.ts +136 -0
- package/src/web/scrapers/devto.ts +147 -0
- package/src/web/scrapers/discogs.ts +306 -0
- package/src/web/scrapers/discourse.ts +197 -0
- package/src/web/scrapers/dockerhub.ts +138 -0
- package/src/web/scrapers/docs-rs.ts +653 -0
- package/src/web/scrapers/fdroid.ts +134 -0
- package/src/web/scrapers/firefox-addons.ts +191 -0
- package/src/web/scrapers/flathub.ts +223 -0
- package/src/web/scrapers/github-gist.ts +58 -0
- package/src/web/scrapers/github.ts +704 -0
- package/src/web/scrapers/gitlab.ts +401 -0
- package/src/web/scrapers/go-pkg.ts +266 -0
- package/src/web/scrapers/hackage.ts +140 -0
- package/src/web/scrapers/hackernews.ts +189 -0
- package/src/web/scrapers/hex.ts +105 -0
- package/src/web/scrapers/huggingface.ts +321 -0
- package/src/web/scrapers/iacr.ts +89 -0
- package/src/web/scrapers/index.ts +252 -0
- package/src/web/scrapers/jetbrains-marketplace.ts +159 -0
- package/src/web/scrapers/lemmy.ts +203 -0
- package/src/web/scrapers/lobsters.ts +175 -0
- package/src/web/scrapers/mastodon.ts +292 -0
- package/src/web/scrapers/maven.ts +138 -0
- package/src/web/scrapers/mdn.ts +173 -0
- package/src/web/scrapers/metacpan.ts +222 -0
- package/src/web/scrapers/musicbrainz.ts +250 -0
- package/src/web/scrapers/npm.ts +98 -0
- package/src/web/scrapers/nuget.ts +183 -0
- package/src/web/scrapers/nvd.ts +222 -0
- package/src/web/scrapers/ollama.ts +239 -0
- package/src/web/scrapers/open-vsx.ts +106 -0
- package/src/web/scrapers/opencorporates.ts +292 -0
- package/src/web/scrapers/openlibrary.ts +336 -0
- package/src/web/scrapers/orcid.ts +286 -0
- package/src/web/scrapers/osv.ts +176 -0
- package/src/web/scrapers/packagist.ts +160 -0
- package/src/web/scrapers/pub-dev.ts +143 -0
- package/src/web/scrapers/pubmed.ts +211 -0
- package/src/web/scrapers/pypi.ts +112 -0
- package/src/web/scrapers/rawg.ts +110 -0
- package/src/web/scrapers/readthedocs.ts +120 -0
- package/src/web/scrapers/reddit.ts +95 -0
- package/src/web/scrapers/repology.ts +251 -0
- package/src/web/scrapers/rfc.ts +201 -0
- package/src/web/scrapers/rubygems.ts +103 -0
- package/src/web/scrapers/searchcode.ts +189 -0
- package/src/web/scrapers/sec-edgar.ts +261 -0
- package/src/web/scrapers/semantic-scholar.ts +171 -0
- package/src/web/scrapers/snapcraft.ts +187 -0
- package/src/web/scrapers/sourcegraph.ts +336 -0
- package/src/web/scrapers/spdx.ts +108 -0
- package/src/web/scrapers/spotify.ts +198 -0
- package/src/web/scrapers/stackoverflow.ts +120 -0
- package/src/web/scrapers/terraform.ts +277 -0
- package/src/web/scrapers/tldr.ts +47 -0
- package/src/web/scrapers/twitter.ts +94 -0
- package/src/web/scrapers/types.ts +397 -0
- package/src/web/scrapers/utils.ts +109 -0
- package/src/web/scrapers/vimeo.ts +133 -0
- package/src/web/scrapers/vscode-marketplace.ts +187 -0
- package/src/web/scrapers/w3c.ts +156 -0
- package/src/web/scrapers/wikidata.ts +344 -0
- package/src/web/scrapers/wikipedia.ts +84 -0
- package/src/web/scrapers/youtube.ts +325 -0
- package/src/web/search/index.ts +292 -0
- package/src/web/search/provider.ts +157 -0
- package/src/web/search/providers/anthropic.ts +318 -0
- package/src/web/search/providers/base.ts +89 -0
- package/src/web/search/providers/brave.ts +152 -0
- package/src/web/search/providers/codex.ts +591 -0
- package/src/web/search/providers/exa.ts +400 -0
- package/src/web/search/providers/gemini.ts +460 -0
- package/src/web/search/providers/jina.ts +111 -0
- package/src/web/search/providers/kagi.ts +86 -0
- package/src/web/search/providers/kimi.ts +196 -0
- package/src/web/search/providers/parallel.ts +225 -0
- package/src/web/search/providers/perplexity.ts +730 -0
- package/src/web/search/providers/searxng.ts +313 -0
- package/src/web/search/providers/synthetic.ts +114 -0
- package/src/web/search/providers/tavily.ts +176 -0
- package/src/web/search/providers/utils.ts +128 -0
- package/src/web/search/providers/zai.ts +333 -0
- package/src/web/search/render.ts +262 -0
- package/src/web/search/types.ts +482 -0
- package/src/web/search/utils.ts +17 -0
- package/src/workspace-tree.ts +286 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import workflowNotice from "../prompts/system/workflow-notice.md" with { type: "text" };
|
|
2
|
+
import { createGradientHighlighter, type KeywordHighlighter } from "./gradient-highlight";
|
|
3
|
+
import { keywordInProse } from "./markdown-prose";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* "workflowz" keyword support.
|
|
7
|
+
*
|
|
8
|
+
* Typing the standalone word in the input editor paints it with a warm
|
|
9
|
+
* amber→green gradient ({@link highlightWorkflow}); submitting a message that
|
|
10
|
+
* mentions it appends a hidden {@link WORKFLOW_NOTICE} that steers the model to
|
|
11
|
+
* author a deterministic multi-subagent workflow in eval cells (agent/parallel/
|
|
12
|
+
* pipeline). Matching is whitespace-delimited and case-sensitive (lowercase
|
|
13
|
+
* only) — "workflowz" triggers, but "workflowzed", "Workflowz", and
|
|
14
|
+
* "workflowz.ts" never do.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// Detection: lowercase keyword flanked by whitespace or a string edge. Non-global so `.test` stays stateless.
|
|
18
|
+
const WORKFLOW_WORD = /(?<!\S)workflowz(?!\S)/;
|
|
19
|
+
|
|
20
|
+
/** Hidden system notice appended after a user message that mentions "workflowz". */
|
|
21
|
+
export const WORKFLOW_NOTICE: string = workflowNotice.trim();
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Whether `text` contains the standalone keyword "workflowz"
|
|
25
|
+
* (lowercase, whitespace-delimited) in prose — never inside a code block, inline
|
|
26
|
+
* code span, or XML/HTML section.
|
|
27
|
+
*/
|
|
28
|
+
export function containsWorkflow(text: string): boolean {
|
|
29
|
+
return keywordInProse(text, WORKFLOW_WORD);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Highlight every standalone "workflowz" in `text` for editor display
|
|
34
|
+
* with a warm amber→green gradient (hue 30..150), visually distinct from
|
|
35
|
+
* ultrathink's rainbow and orchestrate's teal→violet.
|
|
36
|
+
*/
|
|
37
|
+
export const highlightWorkflow: KeywordHighlighter = createGradientHighlighter({
|
|
38
|
+
probe: /workflowz/,
|
|
39
|
+
highlight: /(?<!\S)workflowz(?!\S)/g,
|
|
40
|
+
stops: 14,
|
|
41
|
+
hue: t => 30 + t * 120,
|
|
42
|
+
});
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { ToolError } from "../tools/tool-errors";
|
|
2
|
+
|
|
3
|
+
/** Shape forwarded from the plan-mode resolve handler to InteractiveMode's
|
|
4
|
+
* approval popup. Populated by the standing handler that the resolve tool
|
|
5
|
+
* dispatches to when the agent submits `resolve { action: "apply" }`.
|
|
6
|
+
* `planFilePath` is the agent-chosen `local://<slug>-plan.md` artifact — it is
|
|
7
|
+
* never renamed on approval, so links to it stay valid for the session. */
|
|
8
|
+
export interface PlanApprovalDetails {
|
|
9
|
+
planFilePath: string;
|
|
10
|
+
title: string;
|
|
11
|
+
planExists: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Validate and normalize the agent-supplied plan title into a safe filename stem.
|
|
15
|
+
* Spaces and other URL-safe punctuation are replaced with hyphens so models that
|
|
16
|
+
* produce natural-language titles (e.g. "My feature plan") still succeed.
|
|
17
|
+
* Characters that cannot be safely represented after replacement are dropped.
|
|
18
|
+
* The result is restricted to letters, numbers, underscores, and hyphens so it
|
|
19
|
+
* is safe to splice into a `local://` URL without escaping. */
|
|
20
|
+
export function normalizePlanTitle(title: string): { title: string; fileName: string } {
|
|
21
|
+
const trimmed = title.trim();
|
|
22
|
+
if (!trimmed) {
|
|
23
|
+
throw new ToolError("Plan title is required and must not be empty.");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (trimmed.includes("/") || trimmed.includes("\\") || trimmed.includes("..")) {
|
|
27
|
+
throw new ToolError("Plan title must not contain path separators or '..'.");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Strip a trailing `.md` if the model included it, then sanitize:
|
|
31
|
+
// spaces → hyphens, any remaining invalid char → dropped.
|
|
32
|
+
const withoutExt = trimmed.replace(/\.md$/i, "");
|
|
33
|
+
const sanitized = withoutExt
|
|
34
|
+
.replace(/\s+/g, "-")
|
|
35
|
+
.replace(/[^A-Za-z0-9_-]/g, "")
|
|
36
|
+
.replace(/-{2,}/g, "-")
|
|
37
|
+
.replace(/^-+|-+$/g, "");
|
|
38
|
+
|
|
39
|
+
if (!sanitized) {
|
|
40
|
+
throw new ToolError(
|
|
41
|
+
"Plan title must contain at least one letter, number, underscore, or hyphen after sanitization.",
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const fileName = `${sanitized}.md`;
|
|
46
|
+
return { title: sanitized, fileName };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Best-effort derivation of a plan title from inputs the agent already produced.
|
|
50
|
+
* Returns the first non-empty candidate that survives `normalizePlanTitle`:
|
|
51
|
+
* 1. an explicit `suppliedTitle` (e.g. `extra.title` from the resolve call),
|
|
52
|
+
* 2. the first level-1 markdown heading inside `planContent`,
|
|
53
|
+
* 3. the filename stem of `planFilePath` (e.g. `PLAN` from `local://PLAN.md`),
|
|
54
|
+
* 4. the literal `"plan"` so callers never have to handle `null`.
|
|
55
|
+
* The fallback exists because some grammar-constrained models cannot emit a
|
|
56
|
+
* string into the open `extra` schema and instead drop in `{}` (issue #1179);
|
|
57
|
+
* plan-mode would otherwise loop forever on an unreachable validation. */
|
|
58
|
+
export function resolvePlanTitle(input: { suppliedTitle?: unknown; planContent: string; planFilePath: string }): {
|
|
59
|
+
title: string;
|
|
60
|
+
fileName: string;
|
|
61
|
+
source: "supplied" | "heading" | "filename" | "default";
|
|
62
|
+
} {
|
|
63
|
+
const candidates: Array<{ value: string; source: "supplied" | "heading" | "filename" | "default" }> = [];
|
|
64
|
+
if (typeof input.suppliedTitle === "string") {
|
|
65
|
+
const trimmed = input.suppliedTitle.trim();
|
|
66
|
+
if (trimmed) candidates.push({ value: trimmed, source: "supplied" });
|
|
67
|
+
}
|
|
68
|
+
const heading = firstLevelOneHeading(input.planContent);
|
|
69
|
+
if (heading) candidates.push({ value: heading, source: "heading" });
|
|
70
|
+
const stem = planFilenameStem(input.planFilePath);
|
|
71
|
+
if (stem) candidates.push({ value: stem, source: "filename" });
|
|
72
|
+
candidates.push({ value: "plan", source: "default" });
|
|
73
|
+
|
|
74
|
+
for (const candidate of candidates) {
|
|
75
|
+
try {
|
|
76
|
+
const normalized = normalizePlanTitle(candidate.value);
|
|
77
|
+
return { ...normalized, source: candidate.source };
|
|
78
|
+
} catch {
|
|
79
|
+
// Fall through to the next candidate.
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Last-ditch literal so the type-system contract holds even if `normalizePlanTitle("plan")` ever throws.
|
|
83
|
+
return { title: "plan", fileName: "plan.md", source: "default" };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** First `# Heading` text on its own line, trimmed. Returns the empty string if
|
|
87
|
+
* none is found so callers can chain it through truthiness checks. */
|
|
88
|
+
function firstLevelOneHeading(planContent: string): string {
|
|
89
|
+
const match = planContent.match(/^[ \t]*#[ \t]+(.+?)[ \t]*$/m);
|
|
90
|
+
return match?.[1]?.trim() ?? "";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Stem of a `local://name.md` (or bare `name.md`) URL — the filename without
|
|
94
|
+
* scheme or extension. Returns the empty string for inputs that have no stem. */
|
|
95
|
+
function planFilenameStem(planFilePath: string): string {
|
|
96
|
+
const withoutScheme = planFilePath.replace(/^local:\/+/, "");
|
|
97
|
+
const lastSegment = withoutScheme.split(/[\\/]/).pop() ?? "";
|
|
98
|
+
return lastSegment.replace(/\.md$/i, "");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Humanize a normalized plan title for use as a session display name.
|
|
102
|
+
* Replaces `-`/`_` separators with spaces and capitalizes the first letter.
|
|
103
|
+
* Returns an empty string when the input collapses to whitespace. */
|
|
104
|
+
export function humanizePlanTitle(title: string): string {
|
|
105
|
+
const spaced = title.replace(/[-_]+/g, " ").trim();
|
|
106
|
+
if (!spaced) return "";
|
|
107
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** The `local://` URL a plan slug maps to. The agent writes the plan here and
|
|
111
|
+
* passes the slug to `resolve`; the file is never renamed, so this URL — and
|
|
112
|
+
* any hyperlink to it — stays valid for the life of the session. */
|
|
113
|
+
export function planFileUrlForSlug(slug: string): string {
|
|
114
|
+
return `local://${slug}-plan.md`;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Derive a `<slug>` from an agent-supplied `extra.title`, or `undefined` when
|
|
118
|
+
* the title is missing/non-string/unsanitizable. A trailing `-plan` is stripped
|
|
119
|
+
* so a supplied "auth-plan" maps to `auth-plan.md`, not `auth-plan-plan.md`. */
|
|
120
|
+
function planSlugFromSupplied(suppliedTitle: unknown): string | undefined {
|
|
121
|
+
if (typeof suppliedTitle !== "string" || !suppliedTitle.trim()) return undefined;
|
|
122
|
+
try {
|
|
123
|
+
const { title } = normalizePlanTitle(suppliedTitle);
|
|
124
|
+
const slug = title.replace(/-plan$/i, "");
|
|
125
|
+
return slug || title;
|
|
126
|
+
} catch {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface ResolveApprovedPlanInput {
|
|
132
|
+
/** The agent's `extra.title` from the `resolve` call, if any. */
|
|
133
|
+
suppliedTitle?: unknown;
|
|
134
|
+
/** The plan path recorded in plan-mode state (the entry default or a prior plan). */
|
|
135
|
+
statePlanFilePath: string;
|
|
136
|
+
/** Read a plan `local://` URL, returning null when the file does not exist. */
|
|
137
|
+
readPlan: (planUrl: string) => Promise<string | null>;
|
|
138
|
+
/** Optional fallback: list candidate plan `local://` URLs (newest first) so a
|
|
139
|
+
* plan whose name can't be reconstructed (e.g. a dropped `extra.title`) is
|
|
140
|
+
* still found. */
|
|
141
|
+
listPlanFiles?: () => Promise<string[]>;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface ResolvedApprovedPlan {
|
|
145
|
+
planFilePath: string;
|
|
146
|
+
planContent: string;
|
|
147
|
+
title: string;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/** Locate the plan file the agent wrote and finalize its title — without
|
|
151
|
+
* renaming anything. Tries, in order: the slug derived from `extra.title`
|
|
152
|
+
* (`local://<slug>-plan.md`), the plan path from plan-mode state, then a scan
|
|
153
|
+
* of recent plan files. Throws a `ToolError` guiding the agent when none exist. */
|
|
154
|
+
export async function resolveApprovedPlan(input: ResolveApprovedPlanInput): Promise<ResolvedApprovedPlan> {
|
|
155
|
+
const ordered: string[] = [];
|
|
156
|
+
const consider = (url: string | undefined): void => {
|
|
157
|
+
if (url && !ordered.includes(url)) ordered.push(url);
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const slug = planSlugFromSupplied(input.suppliedTitle);
|
|
161
|
+
consider(slug ? planFileUrlForSlug(slug) : undefined);
|
|
162
|
+
consider(input.statePlanFilePath);
|
|
163
|
+
|
|
164
|
+
for (const url of ordered) {
|
|
165
|
+
const content = await input.readPlan(url);
|
|
166
|
+
if (content !== null) return finalizeApprovedPlan(url, content, input.suppliedTitle);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (input.listPlanFiles) {
|
|
170
|
+
for (const url of await input.listPlanFiles()) {
|
|
171
|
+
if (ordered.includes(url)) continue;
|
|
172
|
+
const content = await input.readPlan(url);
|
|
173
|
+
if (content !== null) return finalizeApprovedPlan(url, content, input.suppliedTitle);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const target = ordered[0] ?? input.statePlanFilePath;
|
|
178
|
+
throw new ToolError(
|
|
179
|
+
`Plan file not found at ${target}. Write the finalized plan to ${target} before requesting approval.`,
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function finalizeApprovedPlan(planFilePath: string, planContent: string, suppliedTitle: unknown): ResolvedApprovedPlan {
|
|
184
|
+
const { title } = resolvePlanTitle({ suppliedTitle, planContent, planFilePath });
|
|
185
|
+
return { planFilePath, planContent, title };
|
|
186
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isEnoent } from "@oh-my-pi/pi-utils";
|
|
2
|
+
import { type LocalProtocolOptions, resolveLocalUrlToPath } from "../internal-urls";
|
|
3
|
+
|
|
4
|
+
/** The session's active plan, resolved for handoff into a subagent's context. */
|
|
5
|
+
export interface OverallPlanReference {
|
|
6
|
+
/** The `local://` reference path (e.g. `local://my-feature.md`), kept for display. */
|
|
7
|
+
path: string;
|
|
8
|
+
/** The full plan markdown, as written to disk. */
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Load the session's active overall plan for subagent handoff.
|
|
14
|
+
*
|
|
15
|
+
* Returns the plan referenced by `planReferencePath` when it exists on disk with
|
|
16
|
+
* non-empty content, or `undefined` when there is no plan (the file is absent or
|
|
17
|
+
* empty). This mirrors `AgentSession.#buildPlanReferenceMessage`'s gating so a
|
|
18
|
+
* subagent sees exactly the plan the main agent treats as its active reference.
|
|
19
|
+
*
|
|
20
|
+
* Callers MUST skip this during plan mode itself — read-only plan exploration
|
|
21
|
+
* uses a different prompt and a draft plan should not be handed off as approved.
|
|
22
|
+
*/
|
|
23
|
+
export async function loadOverallPlanReference(
|
|
24
|
+
planReferencePath: string,
|
|
25
|
+
localProtocolOptions: LocalProtocolOptions,
|
|
26
|
+
): Promise<OverallPlanReference | undefined> {
|
|
27
|
+
const resolved = resolveLocalUrlToPath(planReferencePath, localProtocolOptions);
|
|
28
|
+
let content: string;
|
|
29
|
+
try {
|
|
30
|
+
content = await Bun.file(resolved).text();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
if (isEnoent(error)) return undefined;
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
if (!content.trim()) return undefined;
|
|
36
|
+
return { path: planReferencePath, content };
|
|
37
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getReadToolPath, type ProtectedToolContext } from "@oh-my-pi/pi-agent-core/compaction/tool-protection";
|
|
2
|
+
import { normalizeLocalScheme } from "../tools/path-utils";
|
|
3
|
+
|
|
4
|
+
/** Canonical plan alias every session's `local://` root resolves. */
|
|
5
|
+
const LOCAL_PLAN_ALIAS = "local://PLAN.md";
|
|
6
|
+
|
|
7
|
+
/** True when `readPath` targets `planTarget`, ignoring `local:/` vs `local://`
|
|
8
|
+
* scheme spelling and any trailing read selector (`:1-50`, `:raw`, …). */
|
|
9
|
+
function readTargetsPlan(readPath: string, planTarget: string): boolean {
|
|
10
|
+
const read = normalizeLocalScheme(readPath);
|
|
11
|
+
const target = normalizeLocalScheme(planTarget);
|
|
12
|
+
return read === target || read.startsWith(`${target}:`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Build a compaction protection matcher that keeps `read` results for the active
|
|
17
|
+
* plan file intact through prune/shake — the plan analog of skill-read
|
|
18
|
+
* protection. Matches both the canonical `local://PLAN.md` alias and the
|
|
19
|
+
* session's current plan reference path (the agent-chosen `local://<slug>-plan.md`),
|
|
20
|
+
* so the plan survives compaction whether the agent reads it by alias or by name.
|
|
21
|
+
*
|
|
22
|
+
* `getPlanReferencePath` is evaluated at match time so the plan path set on
|
|
23
|
+
* approval is honored immediately.
|
|
24
|
+
*/
|
|
25
|
+
export function createPlanReadMatcher(getPlanReferencePath: () => string): (context: ProtectedToolContext) => boolean {
|
|
26
|
+
return (context: ProtectedToolContext) => {
|
|
27
|
+
const path = getReadToolPath(context);
|
|
28
|
+
if (path === undefined) return false;
|
|
29
|
+
return readTargetsPlan(path, LOCAL_PLAN_ALIAS) || readTargetsPlan(path, getPlanReferencePath());
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"smol": [
|
|
3
|
+
"cerebras/zai-glm-4.7",
|
|
4
|
+
"cerebras/zai-glm-4.6",
|
|
5
|
+
"cerebras/zai-glm",
|
|
6
|
+
"haiku-4-5",
|
|
7
|
+
"haiku-4.5",
|
|
8
|
+
"haiku",
|
|
9
|
+
"flash",
|
|
10
|
+
"mini"
|
|
11
|
+
],
|
|
12
|
+
"slow": [
|
|
13
|
+
"gpt-5.4",
|
|
14
|
+
"gpt-5.3-codex",
|
|
15
|
+
"gpt-5.3",
|
|
16
|
+
"gpt-5.2-codex",
|
|
17
|
+
"gpt-5.2",
|
|
18
|
+
"gpt-5.1-codex",
|
|
19
|
+
"gpt-5.1",
|
|
20
|
+
"codex",
|
|
21
|
+
"opus-4.8",
|
|
22
|
+
"opus-4-8",
|
|
23
|
+
"opus-4.7",
|
|
24
|
+
"opus-4-7",
|
|
25
|
+
"opus-4.6",
|
|
26
|
+
"opus-4-6",
|
|
27
|
+
"opus-4.5",
|
|
28
|
+
"opus-4-5",
|
|
29
|
+
"opus-4.1",
|
|
30
|
+
"opus-4-1",
|
|
31
|
+
"pro"
|
|
32
|
+
],
|
|
33
|
+
"designer": [
|
|
34
|
+
"google-gemini-cli/gemini-3.1-pro",
|
|
35
|
+
"google-gemini-cli/gemini-3-pro",
|
|
36
|
+
"gemini-3.1-pro",
|
|
37
|
+
"gemini-3-1-pro",
|
|
38
|
+
"gemini-3-pro",
|
|
39
|
+
"gemini-3"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: designer
|
|
3
|
+
description: UI/UX specialist for design implementation, review, visual refinement
|
|
4
|
+
model: pi/designer
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Implement and review UI designs. Edit files, create components, run commands when needed.
|
|
8
|
+
|
|
9
|
+
<strengths>
|
|
10
|
+
- Translate design intent into working UI code
|
|
11
|
+
- Identify UX issues: unclear states, missing feedback, poor hierarchy
|
|
12
|
+
- Accessibility: contrast, focus states, semantic markup, screen reader compatibility
|
|
13
|
+
- Visual consistency: spacing, typography, color usage, component patterns
|
|
14
|
+
- Responsive design, layout structure
|
|
15
|
+
</strengths>
|
|
16
|
+
|
|
17
|
+
<procedure>
|
|
18
|
+
## Implementation
|
|
19
|
+
1. Read existing components, tokens, patterns—reuse before inventing
|
|
20
|
+
2. Identify aesthetic direction (minimal, bold, editorial, etc.)
|
|
21
|
+
3. Implement explicit states: loading, empty, error, disabled, hover, focus
|
|
22
|
+
4. Verify accessibility: contrast, focus rings, semantic HTML
|
|
23
|
+
5. Test responsive behavior
|
|
24
|
+
|
|
25
|
+
## Review
|
|
26
|
+
1. Read files under review
|
|
27
|
+
2. Check for UX issues, accessibility gaps, visual inconsistencies
|
|
28
|
+
3. Cite file, line, concrete issue—no vague feedback
|
|
29
|
+
4. Suggest specific fixes with code when applicable
|
|
30
|
+
</procedure>
|
|
31
|
+
|
|
32
|
+
<directives>
|
|
33
|
+
- You SHOULD prefer editing existing files over creating new ones
|
|
34
|
+
- Changes MUST be minimal and consistent with existing code style
|
|
35
|
+
- You NEVER create documentation files (*.md) unless explicitly requested
|
|
36
|
+
</directives>
|
|
37
|
+
|
|
38
|
+
<avoid>
|
|
39
|
+
## AI Slop Patterns
|
|
40
|
+
- **Glassmorphism everywhere**: blur effects, glass cards, glow borders used decoratively
|
|
41
|
+
- **Cyan-on-dark with purple gradients**: 2024 AI color palette
|
|
42
|
+
- **Gradient text on metrics/headings**: decorative without meaning
|
|
43
|
+
- **Card grids with identical cards**: icon + heading + text repeated endlessly
|
|
44
|
+
- **Cards nested inside cards**: visual noise, flatten hierarchy
|
|
45
|
+
- **Large rounded-corner icons above every heading**: templated, no value
|
|
46
|
+
- **Hero metric layouts**: big number, small label, gradient accent—overused
|
|
47
|
+
- **Same spacing everywhere**: no rhythm, monotony
|
|
48
|
+
- **Center-aligned everything**: left-align with asymmetry feels more designed
|
|
49
|
+
- **Modals for everything**: lazy pattern, rarely best solution
|
|
50
|
+
- **Overused fonts**: Inter, Roboto, Open Sans, system defaults
|
|
51
|
+
- **Pure black (#000) or pure white (#fff)**: always tint neutrals
|
|
52
|
+
- **Gray text on colored backgrounds**: use shade of background instead
|
|
53
|
+
- **Bounce/elastic easing**: dated, tacky—use exponential easing (ease-out-quart/expo)
|
|
54
|
+
|
|
55
|
+
## UX Anti-Patterns
|
|
56
|
+
- Missing states (loading, empty, error)
|
|
57
|
+
- Redundant information (heading restates intro text)
|
|
58
|
+
- Every button styled as primary—hierarchy matters
|
|
59
|
+
- Empty states that say "nothing here" instead of guiding user
|
|
60
|
+
</avoid>
|
|
61
|
+
|
|
62
|
+
<critical>
|
|
63
|
+
Every interface should prompt "how was this made?" not "which AI made this?"
|
|
64
|
+
You MUST commit to clear aesthetic direction and execute with precision.
|
|
65
|
+
You MUST keep going until implementation is complete.
|
|
66
|
+
</critical>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explore
|
|
3
|
+
description: Fast read-only codebase scout returning compressed context for handoff
|
|
4
|
+
tools: read, search, find, web_search
|
|
5
|
+
model: pi/smol
|
|
6
|
+
thinking-level: medium
|
|
7
|
+
read-summarize: false
|
|
8
|
+
output:
|
|
9
|
+
properties:
|
|
10
|
+
summary:
|
|
11
|
+
metadata:
|
|
12
|
+
description: Brief summary of findings and conclusions
|
|
13
|
+
type: string
|
|
14
|
+
files:
|
|
15
|
+
metadata:
|
|
16
|
+
description: Files examined with relevant code references
|
|
17
|
+
elements:
|
|
18
|
+
properties:
|
|
19
|
+
path:
|
|
20
|
+
metadata:
|
|
21
|
+
description: Project-relative path or paths to the most relevant code reference(s), optionally suffixed with line ranges like `:12-34` when relevant
|
|
22
|
+
type: string
|
|
23
|
+
description:
|
|
24
|
+
metadata:
|
|
25
|
+
description: Section contents
|
|
26
|
+
type: string
|
|
27
|
+
architecture:
|
|
28
|
+
metadata:
|
|
29
|
+
description: Brief explanation of how pieces connect
|
|
30
|
+
type: string
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Investigate the codebase rapidly. Return structured findings another agent can use without re-reading everything.
|
|
34
|
+
|
|
35
|
+
<directives>
|
|
36
|
+
- You MUST use tools for broad pattern matching / code search as much as possible.
|
|
37
|
+
- You SHOULD invoke tools in parallel—this is a short investigation, and you are supposed to finish in a few seconds.
|
|
38
|
+
- If a search returns empty results, you MUST try at least one alternate strategy (different pattern, broader path, or AST search) before concluding the target doesn't exist.
|
|
39
|
+
</directives>
|
|
40
|
+
|
|
41
|
+
<thoroughness>
|
|
42
|
+
You MUST infer the thoroughness from the task; default to medium:
|
|
43
|
+
- **Quick**: Targeted lookups, key files only
|
|
44
|
+
- **Medium**: Follow imports, read critical sections
|
|
45
|
+
- **Thorough**: Trace all dependencies, check tests/types.
|
|
46
|
+
</thoroughness>
|
|
47
|
+
|
|
48
|
+
<procedure>
|
|
49
|
+
1. Locate relevant code using tools.
|
|
50
|
+
2. Read key sections. NEVER read full files unless they're tiny.
|
|
51
|
+
3. Identify types/interfaces/key functions.
|
|
52
|
+
4. Note dependencies between files.
|
|
53
|
+
</procedure>
|
|
54
|
+
|
|
55
|
+
<critical>
|
|
56
|
+
You MUST operate as read-only. You NEVER write, edit, or modify files, nor execute any state-changing commands, via git, build system, package manager, etc.
|
|
57
|
+
You MUST keep going until complete.
|
|
58
|
+
</critical>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: {{jsonStringify name}}
|
|
4
|
+
description: {{jsonStringify description}}
|
|
5
|
+
{{#if spawns}}spawns: {{jsonStringify spawns}}
|
|
6
|
+
{{/if}}{{#if model}}model: {{jsonStringify model}}
|
|
7
|
+
{{/if}}{{#if thinkingLevel}}thinking-level: {{jsonStringify thinkingLevel}}
|
|
8
|
+
{{/if}}{{#if blocking}}blocking: true
|
|
9
|
+
{{/if}}{{#if autoloadSkills}}autoloadSkills: {{jsonStringify autoloadSkills}}
|
|
10
|
+
{{/if}}---
|
|
11
|
+
{{body}}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: init
|
|
3
|
+
description: Generate AGENTS.md for current codebase
|
|
4
|
+
thinking-level: medium
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Generate AGENTS.md by launching multiple `explore` agents in parallel (via `task` tool) scanning different areas (core src, tests, configs/build, scripts/docs), then synthesize findings into a single file.
|
|
8
|
+
|
|
9
|
+
<structure>
|
|
10
|
+
- **Project Overview**: Brief description of project purpose
|
|
11
|
+
- **Architecture & Data Flow**: High-level structure, key modules, data flow
|
|
12
|
+
- **Key Directories**: Main source directories, purposes
|
|
13
|
+
- **Development Commands**: Build, test, lint, run commands
|
|
14
|
+
- **Code Conventions & Common Patterns**: Formatting, naming, error handling, async patterns, dependency injection, state management
|
|
15
|
+
- **Important Files**: Entry points, config files, key modules
|
|
16
|
+
- **Runtime/Tooling Preferences**: Required runtime (e.g., Bun vs Node), package manager, tooling constraints
|
|
17
|
+
- **Testing & QA**: Test frameworks, running tests, coverage expectations
|
|
18
|
+
</structure>
|
|
19
|
+
|
|
20
|
+
<directives>
|
|
21
|
+
- You MUST title the document "Repository Guidelines"
|
|
22
|
+
- You MUST use Markdown headings for structure
|
|
23
|
+
- You MUST be concise and practical
|
|
24
|
+
- You MUST focus on what an AI assistant needs to help with the codebase
|
|
25
|
+
- You SHOULD include examples where helpful (commands, paths, naming patterns)
|
|
26
|
+
- You SHOULD include file paths where relevant
|
|
27
|
+
- You MUST call out architecture and code patterns explicitly
|
|
28
|
+
- You SHOULD omit information obvious from code structure
|
|
29
|
+
</directives>
|
|
30
|
+
|
|
31
|
+
<output>
|
|
32
|
+
After analysis, you MUST write AGENTS.md to the project root.
|
|
33
|
+
</output>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: librarian
|
|
3
|
+
description: Researches external libraries and APIs by reading source code. Returns definitive, source-verified answers.
|
|
4
|
+
tools: read, search, find, bash, lsp, web_search, ast_grep
|
|
5
|
+
model: pi/smol
|
|
6
|
+
thinking-level: minimal
|
|
7
|
+
read-summarize: false
|
|
8
|
+
output:
|
|
9
|
+
properties:
|
|
10
|
+
answer:
|
|
11
|
+
metadata:
|
|
12
|
+
description: Direct answer to the question, grounded in source code
|
|
13
|
+
type: string
|
|
14
|
+
sources:
|
|
15
|
+
metadata:
|
|
16
|
+
description: Source evidence backing the answer
|
|
17
|
+
elements:
|
|
18
|
+
properties:
|
|
19
|
+
repo:
|
|
20
|
+
metadata:
|
|
21
|
+
description: GitHub repo (owner/name) or package name
|
|
22
|
+
type: string
|
|
23
|
+
path:
|
|
24
|
+
metadata:
|
|
25
|
+
description: File path within the repo or node_modules
|
|
26
|
+
type: string
|
|
27
|
+
line_start:
|
|
28
|
+
metadata:
|
|
29
|
+
description: First relevant line (1-indexed)
|
|
30
|
+
type: number
|
|
31
|
+
line_end:
|
|
32
|
+
metadata:
|
|
33
|
+
description: Last relevant line (1-indexed)
|
|
34
|
+
type: number
|
|
35
|
+
excerpt:
|
|
36
|
+
metadata:
|
|
37
|
+
description: Verbatim code or doc excerpt proving the claim
|
|
38
|
+
type: string
|
|
39
|
+
api:
|
|
40
|
+
metadata:
|
|
41
|
+
description: Extracted API signatures, types, or config relevant to the question
|
|
42
|
+
elements:
|
|
43
|
+
properties:
|
|
44
|
+
signature:
|
|
45
|
+
metadata:
|
|
46
|
+
description: Function signature, type definition, or config shape — copied verbatim from source
|
|
47
|
+
type: string
|
|
48
|
+
description:
|
|
49
|
+
metadata:
|
|
50
|
+
description: What it does, constraints, defaults
|
|
51
|
+
type: string
|
|
52
|
+
version:
|
|
53
|
+
metadata:
|
|
54
|
+
description: Library version investigated (from package.json, Cargo.toml, etc.)
|
|
55
|
+
type: string
|
|
56
|
+
optionalProperties:
|
|
57
|
+
breaking_changes:
|
|
58
|
+
metadata:
|
|
59
|
+
description: Breaking changes or migration notes if version-relevant
|
|
60
|
+
elements:
|
|
61
|
+
type: string
|
|
62
|
+
caveats:
|
|
63
|
+
metadata:
|
|
64
|
+
description: Limitations, undocumented behavior, or gotchas discovered
|
|
65
|
+
elements:
|
|
66
|
+
type: string
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
Answer questions about external libraries, frameworks, and APIs by reading source code and official documentation.
|
|
70
|
+
|
|
71
|
+
<critical>
|
|
72
|
+
You MUST ground every claim in source code or official documentation. You NEVER rely on training data for API details — it may be stale or wrong.
|
|
73
|
+
You MUST operate as read-only on the user's project. You NEVER modify any project files.
|
|
74
|
+
</critical>
|
|
75
|
+
|
|
76
|
+
<procedure>
|
|
77
|
+
## 1. Classify the request
|
|
78
|
+
- **Conceptual**: "How do I use X?", "Best practice for Y?" — Prioritize types, docs, and usage examples.
|
|
79
|
+
- **Implementation**: "How does X implement Y?", "Show me the source of Z" — Clone and read the actual code.
|
|
80
|
+
- **Behavioral**: "Why does X behave this way?", "What's the default for Y?" — Read implementation, find where values are set, check tests.
|
|
81
|
+
|
|
82
|
+
## 2. Locate the source (local first)
|
|
83
|
+
- **Check local dependencies first**: Look in `node_modules/<package>`, `vendor/`, or similar. If the library is already installed, read it there — no clone needed. Prioritize `.d.ts` type definitions and exported types.
|
|
84
|
+
- **Otherwise clone**: Use `web_search` to find the canonical repo, then `git clone --depth 1 <url> /tmp/librarian-<name>`.
|
|
85
|
+
- **For a specific version**: Clone then `git checkout tags/<version>`, or read the locally installed version.
|
|
86
|
+
|
|
87
|
+
## 3. Investigate
|
|
88
|
+
- Read `package.json`, `Cargo.toml`, or equivalent for version info and entry points.
|
|
89
|
+
- Use `search`, `find`, and `ast_grep` to locate relevant source, type definitions, and docs. Parallelize searches.
|
|
90
|
+
- Read the actual implementation — not just README examples. READMEs are aspirational; source code is truth.
|
|
91
|
+
- For behavior questions: trace through the implementation. Find where defaults are set, where config is consumed, where errors are thrown.
|
|
92
|
+
- Check tests for usage examples and edge case behavior — tests are the most honest documentation.
|
|
93
|
+
|
|
94
|
+
## 4. Verify
|
|
95
|
+
- Cross-reference at least two locations (types + implementation, or source + tests).
|
|
96
|
+
- If the answer involves defaults, find where the default is actually set in code — not where the docs say it is.
|
|
97
|
+
- For API signatures: copy verbatim from source. You NEVER paraphrase or reconstruct from memory.
|
|
98
|
+
|
|
99
|
+
## 5. Report
|
|
100
|
+
- Call `yield` with structured findings.
|
|
101
|
+
- Every `sources` entry MUST include a verbatim excerpt.
|
|
102
|
+
- The `api` array MUST contain exact signatures copied from source.
|
|
103
|
+
- Clean up cloned repos: `rm -rf /tmp/librarian-*`.
|
|
104
|
+
</procedure>
|
|
105
|
+
|
|
106
|
+
<directives>
|
|
107
|
+
- You SHOULD invoke tools in parallel — search multiple paths simultaneously.
|
|
108
|
+
- You MUST include the exact version you investigated in the `version` field.
|
|
109
|
+
- If the library has breaking changes between versions relevant to the question, you MUST populate `breaking_changes`.
|
|
110
|
+
- If you discover undocumented behavior or gotchas, you MUST populate `caveats`.
|
|
111
|
+
- You SHOULD use `web_search` to check for known issues, but the definitive answer MUST come from reading source code.
|
|
112
|
+
- If a search or lookup returns empty or unexpectedly few results, you MUST try at least 2 fallback strategies (broader query, alternate path, different source) before concluding nothing exists.
|
|
113
|
+
- If the package is absent from local `node_modules` and cloning fails, you MUST fall back to `web_search` for official API documentation before reporting failure.
|
|
114
|
+
</directives>
|
|
115
|
+
|
|
116
|
+
<critical>
|
|
117
|
+
Source code is truth. Documentation is aspiration. Training data is history.
|
|
118
|
+
You MUST keep going until you have a definitive, source-verified answer.
|
|
119
|
+
</critical>
|