oma-coding-agent 1.1.4
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 +12164 -0
- package/README.md +35 -0
- package/dist/cli.js +18266 -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 +573 -0
- package/scripts/bench-guard.ts +71 -0
- package/scripts/build-binary.ts +108 -0
- package/scripts/bundle-dist.ts +110 -0
- package/scripts/embed-mupdf-wasm.ts +67 -0
- package/scripts/format-prompts.ts +68 -0
- package/scripts/generate-docs-index.ts +56 -0
- package/scripts/generate-share-viewer.ts +34 -0
- package/scripts/measure-prompt-tokens.ts +63 -0
- package/scripts/omp +42 -0
- package/scripts/omp.ts +19 -0
- package/src/advisor/__tests__/advisor.test.ts +915 -0
- package/src/advisor/advise-tool.ts +165 -0
- package/src/advisor/index.ts +4 -0
- package/src/advisor/runtime.ts +270 -0
- package/src/advisor/transcript-recorder.ts +136 -0
- package/src/advisor/watchdog.ts +83 -0
- package/src/async/index.ts +1 -0
- package/src/async/job-manager.ts +674 -0
- package/src/auto-thinking/classifier.ts +190 -0
- package/src/autolearn/controller.ts +139 -0
- package/src/autolearn/managed-skills.ts +255 -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 +700 -0
- package/src/autoresearch/tools/init-experiment.ts +269 -0
- package/src/autoresearch/tools/log-experiment.ts +521 -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/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 +76 -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 +361 -0
- package/src/cli/auth-broker-cli.ts +893 -0
- package/src/cli/auth-gateway-cli.ts +608 -0
- package/src/cli/bench-cli.ts +552 -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 +858 -0
- package/src/cli/extension-flags.ts +48 -0
- package/src/cli/file-processor.ts +133 -0
- package/src/cli/flag-tables.ts +280 -0
- package/src/cli/gallery-cli.ts +231 -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/models-cli.ts +427 -0
- package/src/cli/plugin-cli.ts +996 -0
- package/src/cli/profile-alias.ts +338 -0
- package/src/cli/profile-bootstrap.ts +243 -0
- package/src/cli/read-cli.ts +57 -0
- package/src/cli/session-picker.ts +80 -0
- package/src/cli/setup-cli.ts +332 -0
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli/shell-cli.ts +176 -0
- package/src/cli/ssh-cli.ts +179 -0
- package/src/cli/startup-cwd.ts +58 -0
- package/src/cli/stats-cli.ts +229 -0
- package/src/cli/tiny-models-cli.ts +127 -0
- package/src/cli/ttsr-cli.ts +995 -0
- package/src/cli/update-cli.ts +671 -0
- package/src/cli/usage-cli.ts +774 -0
- package/src/cli/web-search-cli.ts +132 -0
- package/src/cli/worktree-cli.ts +291 -0
- package/src/cli-commands.ts +85 -0
- package/src/cli.ts +326 -0
- package/src/collab/crypto.ts +63 -0
- package/src/collab/guest.ts +450 -0
- package/src/collab/host.ts +577 -0
- package/src/collab/protocol.ts +274 -0
- package/src/collab/relay-client.ts +216 -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/bench.ts +42 -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/join.ts +39 -0
- package/src/commands/launch.ts +182 -0
- package/src/commands/models.ts +61 -0
- package/src/commands/plugin.ts +78 -0
- package/src/commands/read.ts +38 -0
- package/src/commands/say.ts +102 -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/token.ts +108 -0
- package/src/commands/ttsr.ts +125 -0
- package/src/commands/update.ts +21 -0
- package/src/commands/usage.ts +43 -0
- package/src/commands/web-search.ts +42 -0
- package/src/commands/worktree.ts +56 -0
- package/src/commit/agentic/agent.ts +318 -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 +149 -0
- package/src/commit/agentic/tools/git-file-diff.ts +191 -0
- package/src/commit/agentic/tools/git-hunk.ts +52 -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 +147 -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 +11 -0
- package/src/commit/agentic/tools/split-commit.ts +241 -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 +107 -0
- package/src/commit/analysis/validation.ts +66 -0
- package/src/commit/changelog/detect.ts +40 -0
- package/src/commit/changelog/generate.ts +101 -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 +89 -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 +70 -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 +67 -0
- package/src/config/append-only-context-mode.ts +76 -0
- package/src/config/config-file.ts +315 -0
- package/src/config/file-lock.ts +164 -0
- package/src/config/keybindings.ts +634 -0
- package/src/config/mcp-schema.json +238 -0
- package/src/config/model-discovery.ts +589 -0
- package/src/config/model-registry.ts +2260 -0
- package/src/config/model-resolver.ts +1819 -0
- package/src/config/model-roles.ts +99 -0
- package/src/config/models-config-schema.ts +266 -0
- package/src/config/models-config.ts +131 -0
- package/src/config/prompt-templates.ts +185 -0
- package/src/config/resolve-config-value.ts +94 -0
- package/src/config/settings-schema.ts +4740 -0
- package/src/config/settings.ts +1243 -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 +559 -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 +294 -0
- package/src/debug/raw-sse.ts +292 -0
- package/src/debug/remote-debugger.ts +151 -0
- package/src/debug/report-bundle.ts +375 -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 +63 -0
- package/src/discovery/builtin-rules/low-end/no-hallucinated-apis.md +14 -0
- package/src/discovery/builtin-rules/low-end/no-hallucinated-paths.md +14 -0
- package/src/discovery/builtin-rules/low-end/no-premature-completion.md +14 -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 +65 -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-inline-cast-access.md +55 -0
- package/src/discovery/builtin-rules/ts-no-return-type.md +44 -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 +934 -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 +337 -0
- package/src/discovery/helpers.ts +1092 -0
- package/src/discovery/index.ts +81 -0
- package/src/discovery/mcp-json.ts +172 -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 +143 -0
- package/src/edit/hashline/block-resolver.ts +33 -0
- package/src/edit/hashline/diff.ts +290 -0
- package/src/edit/hashline/execute.ts +237 -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 +19 -0
- package/src/edit/index.ts +620 -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 +1888 -0
- package/src/edit/modes/replace.ts +1133 -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 +823 -0
- package/src/edit/streaming.ts +517 -0
- package/src/eval/__tests__/agent-bridge.test.ts +769 -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 +291 -0
- package/src/eval/__tests__/kernel-spawn.test.ts +103 -0
- package/src/eval/__tests__/prelude-agent.test.ts +73 -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 +211 -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 +621 -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 +307 -0
- package/src/eval/js/shared/rewrite-imports.ts +532 -0
- package/src/eval/js/shared/runtime.ts +580 -0
- package/src/eval/js/shared/types.ts +18 -0
- package/src/eval/js/tool-bridge.ts +163 -0
- package/src/eval/js/worker-core.ts +151 -0
- package/src/eval/js/worker-entry.ts +37 -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 +683 -0
- package/src/eval/py/prelude.ts +3 -0
- package/src/eval/py/runner.py +1177 -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 +434 -0
- package/src/exec/exec.ts +53 -0
- package/src/exec/non-interactive-env.ts +119 -0
- package/src/export/custom-share.ts +65 -0
- package/src/export/html/index.ts +266 -0
- package/src/export/html/share-loader.js +102 -0
- package/src/export/html/template.css +1337 -0
- package/src/export/html/template.html +49 -0
- package/src/export/html/template.js +1626 -0
- package/src/export/html/tool-views.generated.js +37 -0
- package/src/export/html/vendor/highlight.min.js +1213 -0
- package/src/export/html/vendor/marked.min.js +6 -0
- package/src/export/share.ts +268 -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 +698 -0
- package/src/extensibility/custom-commands/index.ts +2 -0
- package/src/extensibility/custom-commands/loader.ts +242 -0
- package/src/extensibility/custom-commands/types.ts +119 -0
- package/src/extensibility/custom-tools/index.ts +7 -0
- package/src/extensibility/custom-tools/loader.ts +268 -0
- package/src/extensibility/custom-tools/types.ts +277 -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 +587 -0
- package/src/extensibility/extensions/model-api.ts +41 -0
- package/src/extensibility/extensions/runner.ts +989 -0
- package/src/extensibility/extensions/types.ts +1394 -0
- package/src/extensibility/extensions/wrapper.ts +259 -0
- package/src/extensibility/hooks/index.ts +6 -0
- package/src/extensibility/hooks/loader.ts +262 -0
- package/src/extensibility/hooks/runner.ts +425 -0
- package/src/extensibility/hooks/tool-wrapper.ts +107 -0
- package/src/extensibility/hooks/types.ts +613 -0
- package/src/extensibility/legacy-pi-ai-shim.ts +61 -0
- package/src/extensibility/legacy-pi-coding-agent-shim.ts +128 -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 +712 -0
- package/src/extensibility/plugins/loader.ts +458 -0
- package/src/extensibility/plugins/manager.ts +1026 -0
- package/src/extensibility/plugins/marketplace/cache.ts +136 -0
- package/src/extensibility/plugins/marketplace/fetcher.ts +315 -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/runtime-config.ts +9 -0
- package/src/extensibility/plugins/types.ts +194 -0
- package/src/extensibility/shared-events.ts +367 -0
- package/src/extensibility/skills.ts +408 -0
- package/src/extensibility/slash-commands.ts +131 -0
- package/src/extensibility/tool-proxy.ts +28 -0
- package/src/extensibility/typebox.ts +945 -0
- package/src/extensibility/utils.ts +44 -0
- package/src/goals/guided-setup.ts +142 -0
- package/src/goals/index.ts +3 -0
- package/src/goals/runtime.ts +521 -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 +623 -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 +492 -0
- package/src/hindsight/transcript.ts +71 -0
- package/src/index.ts +66 -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.txt +2 -0
- package/src/internal-urls/docs-index.ts +102 -0
- package/src/internal-urls/history-protocol.ts +118 -0
- package/src/internal-urls/index.ts +25 -0
- package/src/internal-urls/issue-pr-protocol.ts +594 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/local-protocol.ts +309 -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 +94 -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 +311 -0
- package/src/lib/xai-http.ts +124 -0
- package/src/lsp/client.ts +1217 -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 +85 -0
- package/src/lsp/clients/swiftlint-client.ts +120 -0
- package/src/lsp/config.ts +502 -0
- package/src/lsp/defaults.json +499 -0
- package/src/lsp/diagnostics-ledger.ts +51 -0
- package/src/lsp/edits.ts +267 -0
- package/src/lsp/format-options.ts +119 -0
- package/src/lsp/index.ts +2480 -0
- package/src/lsp/lspmux.ts +233 -0
- package/src/lsp/render.ts +668 -0
- package/src/lsp/startup-events.ts +13 -0
- package/src/lsp/types.ts +444 -0
- package/src/lsp/utils.ts +718 -0
- package/src/main.ts +1421 -0
- package/src/markit/NOTICE +32 -0
- package/src/markit/converters/docx.ts +56 -0
- package/src/markit/converters/epub.ts +136 -0
- package/src/markit/converters/mammoth.d.ts +24 -0
- package/src/markit/converters/pdf/columns.ts +103 -0
- package/src/markit/converters/pdf/extract.ts +574 -0
- package/src/markit/converters/pdf/grid.ts +780 -0
- package/src/markit/converters/pdf/headers.ts +106 -0
- package/src/markit/converters/pdf/index.ts +146 -0
- package/src/markit/converters/pdf/render.ts +501 -0
- package/src/markit/converters/pdf/types.ts +84 -0
- package/src/markit/converters/pptx.ts +325 -0
- package/src/markit/converters/xlsx.ts +173 -0
- package/src/markit/index.ts +2 -0
- package/src/markit/registry.ts +59 -0
- package/src/markit/types.ts +35 -0
- package/src/mcp/client.ts +509 -0
- package/src/mcp/config-writer.ts +229 -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 +1326 -0
- package/src/mcp/oauth-credentials.ts +104 -0
- package/src/mcp/oauth-discovery.ts +467 -0
- package/src/mcp/oauth-flow.ts +555 -0
- package/src/mcp/render.ts +155 -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/startup-events.ts +21 -0
- package/src/mcp/timeout.ts +59 -0
- package/src/mcp/tool-bridge.ts +429 -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 +606 -0
- package/src/mcp/types.ts +427 -0
- package/src/memories/index.ts +1281 -0
- package/src/memories/storage.ts +578 -0
- package/src/memory-backend/index.ts +18 -0
- package/src/memory-backend/local-backend.ts +45 -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 +612 -0
- package/src/mnemopi/config.ts +265 -0
- package/src/mnemopi/embed-client.ts +401 -0
- package/src/mnemopi/embed-protocol.ts +35 -0
- package/src/mnemopi/embed-worker.ts +113 -0
- package/src/mnemopi/index.ts +3 -0
- package/src/mnemopi/state.ts +657 -0
- package/src/modes/acp/acp-agent.ts +2362 -0
- package/src/modes/acp/acp-client-bridge.ts +154 -0
- package/src/modes/acp/acp-event-mapper.ts +933 -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/__tests__/skill-message.test.ts +92 -0
- package/src/modes/components/advisor-message.ts +99 -0
- package/src/modes/components/agent-dashboard.ts +1206 -0
- package/src/modes/components/agent-hub.ts +566 -0
- package/src/modes/components/agent-transcript-viewer.ts +461 -0
- package/src/modes/components/assistant-message.ts +612 -0
- package/src/modes/components/background-tan-message.ts +36 -0
- package/src/modes/components/bash-execution.ts +220 -0
- package/src/modes/components/bordered-loader.ts +41 -0
- package/src/modes/components/btw-panel.ts +112 -0
- package/src/modes/components/cache-invalidation-marker.ts +110 -0
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/chat-transcript-builder.ts +476 -0
- package/src/modes/components/collab-prompt-message.ts +32 -0
- package/src/modes/components/compaction-summary-message.ts +215 -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.test.ts +142 -0
- package/src/modes/components/custom-editor.ts +620 -0
- package/src/modes/components/custom-message.ts +67 -0
- package/src/modes/components/diff.ts +254 -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 +321 -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 +275 -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 +67 -0
- package/src/modes/components/hook-selector.ts +659 -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/logout-account-selector.ts +130 -0
- package/src/modes/components/mcp-add-wizard.ts +1360 -0
- package/src/modes/components/message-frame.ts +92 -0
- package/src/modes/components/model-selector.ts +1315 -0
- package/src/modes/components/oauth-selector.ts +457 -0
- package/src/modes/components/omfg-panel.ts +141 -0
- package/src/modes/components/overlay-box.ts +109 -0
- package/src/modes/components/plan-review-overlay.ts +847 -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 +739 -0
- package/src/modes/components/queue-mode-selector.ts +56 -0
- package/src/modes/components/read-tool-group.ts +676 -0
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/segment-track.ts +89 -0
- package/src/modes/components/session-selector.ts +631 -0
- package/src/modes/components/settings-defs.ts +225 -0
- package/src/modes/components/settings-selector.ts +1095 -0
- package/src/modes/components/show-images-selector.ts +45 -0
- package/src/modes/components/skill-message.ts +110 -0
- package/src/modes/components/snapcompact-shape-preview-doc.md +18 -0
- package/src/modes/components/snapcompact-shape-preview.ts +192 -0
- package/src/modes/components/status-line/component.ts +1001 -0
- package/src/modes/components/status-line/context-thresholds.ts +78 -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 +616 -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 +124 -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 +24 -0
- package/src/modes/components/todo-reminder.ts +39 -0
- package/src/modes/components/tool-execution.ts +1165 -0
- package/src/modes/components/transcript-container.ts +806 -0
- package/src/modes/components/tree-selector.ts +994 -0
- package/src/modes/components/ttsr-notification.ts +123 -0
- package/src/modes/components/usage-row.ts +18 -0
- package/src/modes/components/user-message-selector.ts +227 -0
- package/src/modes/components/user-message.ts +68 -0
- package/src/modes/components/visual-truncate.ts +63 -0
- package/src/modes/components/welcome.ts +581 -0
- package/src/modes/controllers/btw-controller.ts +173 -0
- package/src/modes/controllers/command-controller-shared.ts +109 -0
- package/src/modes/controllers/command-controller.ts +1653 -0
- package/src/modes/controllers/event-controller.ts +1153 -0
- package/src/modes/controllers/extension-ui-controller.ts +893 -0
- package/src/modes/controllers/input-controller.ts +1627 -0
- package/src/modes/controllers/mcp-command-controller.ts +2162 -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 +1285 -0
- package/src/modes/controllers/session-focus-controller.ts +112 -0
- package/src/modes/controllers/ssh-command-controller.ts +384 -0
- package/src/modes/controllers/streaming-reveal.ts +295 -0
- package/src/modes/controllers/tan-command-controller.ts +190 -0
- package/src/modes/controllers/todo-command-controller.ts +485 -0
- package/src/modes/controllers/tool-args-reveal.ts +174 -0
- package/src/modes/data/emojis.json +1 -0
- package/src/modes/emoji-autocomplete.ts +285 -0
- package/src/modes/gradient-highlight.ts +99 -0
- package/src/modes/image-references.ts +137 -0
- package/src/modes/index.ts +17 -0
- package/src/modes/interactive-mode.ts +3940 -0
- package/src/modes/internal-url-autocomplete.ts +143 -0
- package/src/modes/loop-limit.ts +192 -0
- package/src/modes/magic-keywords.ts +42 -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 +130 -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 +995 -0
- package/src/modes/rpc/rpc-mode.ts +1156 -0
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +487 -0
- package/src/modes/runtime-init.ts +142 -0
- package/src/modes/session-observer-registry.ts +215 -0
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +101 -0
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +114 -0
- package/src/modes/setup-wizard/scenes/outro.ts +35 -0
- package/src/modes/setup-wizard/scenes/providers.ts +103 -0
- package/src/modes/setup-wizard/scenes/sign-in.ts +286 -0
- package/src/modes/setup-wizard/scenes/splash.ts +201 -0
- package/src/modes/setup-wizard/scenes/theme.ts +326 -0
- package/src/modes/setup-wizard/scenes/types.ts +57 -0
- package/src/modes/setup-wizard/scenes/web-search.ts +145 -0
- package/src/modes/setup-wizard/startup-splash.ts +107 -0
- package/src/modes/setup-wizard/wizard-overlay.ts +334 -0
- package/src/modes/shared.ts +49 -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 +92 -0
- package/src/modes/theme/shimmer.ts +235 -0
- package/src/modes/theme/theme-schema.json +459 -0
- package/src/modes/theme/theme.ts +2915 -0
- package/src/modes/turn-budget.ts +31 -0
- package/src/modes/types.ts +406 -0
- package/src/modes/ultrathink.ts +41 -0
- package/src/modes/utils/context-usage.ts +432 -0
- package/src/modes/utils/copy-targets.ts +360 -0
- package/src/modes/utils/hotkeys-markdown.ts +62 -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 +886 -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 +45 -0
- package/src/prompts/advisor/advise-tool.md +3 -0
- package/src/prompts/advisor/system.md +113 -0
- package/src/prompts/agents/designer.md +74 -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 +54 -0
- package/src/prompts/agents/plan.md +48 -0
- package/src/prompts/agents/reviewer.md +139 -0
- package/src/prompts/agents/task.md +17 -0
- package/src/prompts/bench.md +12 -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/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/low-end/system.md +47 -0
- package/src/prompts/memories/consolidation.md +30 -0
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/read-path.md +17 -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 +9 -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/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge.md +3 -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-task.md +7 -0
- package/src/prompts/system/eager-todo.md +18 -0
- package/src/prompts/system/empty-stop-retry.md +4 -0
- package/src/prompts/system/irc-autoreply.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/personalities/default.md +18 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -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/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/subagent-system-prompt.md +71 -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 +251 -0
- package/src/prompts/system/tiny-title-system.md +8 -0
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +16 -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/unexpected-stop-classifier.md +17 -0
- package/src/prompts/system/unexpected-stop-retry.md +4 -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 +22 -0
- package/src/prompts/tools/ast-edit.md +22 -0
- package/src/prompts/tools/ast-grep.md +25 -0
- package/src/prompts/tools/async-result.md +8 -0
- package/src/prompts/tools/bash.md +45 -0
- package/src/prompts/tools/browser.md +42 -0
- package/src/prompts/tools/checkpoint.md +15 -0
- package/src/prompts/tools/debug.md +17 -0
- package/src/prompts/tools/eval.md +70 -0
- package/src/prompts/tools/find.md +19 -0
- package/src/prompts/tools/github.md +17 -0
- package/src/prompts/tools/goal.md +11 -0
- package/src/prompts/tools/image-attachment-describe-system.md +8 -0
- package/src/prompts/tools/image-attachment-describe.md +10 -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 +22 -0
- package/src/prompts/tools/irc.md +33 -0
- package/src/prompts/tools/job.md +17 -0
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +39 -0
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +8 -0
- package/src/prompts/tools/patch.md +57 -0
- package/src/prompts/tools/read.md +76 -0
- package/src/prompts/tools/recall.md +5 -0
- package/src/prompts/tools/reflect.md +5 -0
- package/src/prompts/tools/replace.md +29 -0
- package/src/prompts/tools/resolve.md +4 -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 +22 -0
- package/src/prompts/tools/ssh.md +22 -0
- package/src/prompts/tools/task-summary.md +17 -0
- package/src/prompts/tools/task.md +91 -0
- package/src/prompts/tools/todo.md +39 -0
- package/src/prompts/tools/web-search.md +6 -0
- package/src/prompts/tools/write.md +14 -0
- package/src/registry/agent-lifecycle.ts +270 -0
- package/src/registry/agent-registry.ts +190 -0
- package/src/sdk.ts +2919 -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 +12539 -0
- package/src/session/agent-storage.ts +478 -0
- package/src/session/artifacts.ts +153 -0
- package/src/session/auth-broker-config.ts +92 -0
- package/src/session/auth-storage.ts +24 -0
- package/src/session/blob-store.ts +255 -0
- package/src/session/client-bridge.ts +85 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/compact-modes.ts +105 -0
- package/src/session/history-storage.ts +361 -0
- package/src/session/indexed-session-storage.ts +427 -0
- package/src/session/messages.ts +546 -0
- package/src/session/redis-session-storage.ts +170 -0
- package/src/session/session-context.ts +399 -0
- package/src/session/session-dump-format.ts +216 -0
- package/src/session/session-entries.ts +198 -0
- package/src/session/session-history-format.ts +308 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +93 -0
- package/src/session/session-manager.ts +1748 -0
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +147 -0
- package/src/session/session-storage.ts +590 -0
- package/src/session/shake-types.ts +43 -0
- package/src/session/snapcompact-inline.ts +542 -0
- package/src/session/snapcompact-savings-journal.ts +113 -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 +290 -0
- package/src/session/unexpected-stop-classifier.ts +129 -0
- package/src/session/yield-queue.ts +183 -0
- package/src/slash-commands/acp-builtins.ts +70 -0
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +2332 -0
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/collab-qrcode.ts +28 -0
- package/src/slash-commands/helpers/context-report.ts +66 -0
- package/src/slash-commands/helpers/format.ts +46 -0
- package/src/slash-commands/helpers/logout.ts +88 -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/reset-usage.ts +66 -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 +128 -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 +510 -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/startup-splash.ts +19 -0
- package/src/stt/asr-client.ts +521 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +138 -0
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +7 -0
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +538 -0
- package/src/stt/stt-controller.ts +380 -0
- package/src/stt/transcriber.ts +60 -0
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +709 -0
- package/src/task/agents.ts +166 -0
- package/src/task/commands.ts +132 -0
- package/src/task/discovery.ts +122 -0
- package/src/task/executor.ts +2356 -0
- package/src/task/index.ts +1580 -0
- package/src/task/name-generator.ts +1577 -0
- package/src/task/omp-command.ts +26 -0
- package/src/task/output-manager.ts +93 -0
- package/src/task/parallel.ts +116 -0
- package/src/task/persisted-revive.ts +128 -0
- package/src/task/render.ts +1558 -0
- package/src/task/repair-args.ts +129 -0
- package/src/task/subprocess-tool-registry.ts +88 -0
- package/src/task/types.ts +401 -0
- package/src/task/worktree.ts +514 -0
- package/src/telemetry-export.ts +144 -0
- package/src/thinking.ts +187 -0
- package/src/tiny/device.ts +111 -0
- package/src/tiny/dtype.ts +101 -0
- package/src/tiny/models.ts +252 -0
- package/src/tiny/text.ts +169 -0
- package/src/tiny/title-client.ts +538 -0
- package/src/tiny/title-protocol.ts +56 -0
- package/src/tiny/worker.ts +491 -0
- package/src/tool-discovery/mode.ts +24 -0
- package/src/tool-discovery/tool-index.ts +271 -0
- package/src/tools/__tests__/json-tree.test.ts +35 -0
- package/src/tools/approval.ts +189 -0
- package/src/tools/ask.ts +977 -0
- package/src/tools/ast-edit.ts +700 -0
- package/src/tools/ast-grep.ts +483 -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 +1405 -0
- package/src/tools/browser/attach.ts +194 -0
- package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
- package/src/tools/browser/cmux/rpc.ts +156 -0
- package/src/tools/browser/cmux/socket-client.ts +309 -0
- package/src/tools/browser/launch.ts +673 -0
- package/src/tools/browser/readable.ts +112 -0
- package/src/tools/browser/registry.ts +241 -0
- package/src/tools/browser/render.ts +221 -0
- package/src/tools/browser/tab-protocol.ts +107 -0
- package/src/tools/browser/tab-supervisor.ts +799 -0
- package/src/tools/browser/tab-worker-entry.ts +29 -0
- package/src/tools/browser/tab-worker.ts +1226 -0
- package/src/tools/browser.ts +403 -0
- package/src/tools/builtin-names.ts +34 -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 +1087 -0
- package/src/tools/eval-backends.ts +27 -0
- package/src/tools/eval-render.ts +762 -0
- package/src/tools/eval.ts +600 -0
- package/src/tools/fetch.ts +1902 -0
- package/src/tools/file-recorder.ts +35 -0
- package/src/tools/find.ts +629 -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 +3752 -0
- package/src/tools/github-cache.ts +663 -0
- package/src/tools/grouped-file-output.ts +210 -0
- package/src/tools/image-gen.ts +1586 -0
- package/src/tools/index.ts +649 -0
- package/src/tools/inspect-image-renderer.ts +132 -0
- package/src/tools/inspect-image.ts +260 -0
- package/src/tools/irc.ts +788 -0
- package/src/tools/job.ts +612 -0
- package/src/tools/json-tree.ts +260 -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/learn.ts +141 -0
- package/src/tools/list-limit.ts +40 -0
- package/src/tools/manage-skill.ts +100 -0
- package/src/tools/match-line-format.ts +20 -0
- package/src/tools/memory-edit.ts +59 -0
- package/src/tools/memory-recall.ts +102 -0
- package/src/tools/memory-reflect.ts +88 -0
- package/src/tools/memory-render.ts +202 -0
- package/src/tools/memory-retain.ts +89 -0
- package/src/tools/output-meta.ts +768 -0
- package/src/tools/output-schema-validator.ts +132 -0
- package/src/tools/path-utils.ts +1116 -0
- package/src/tools/plan-mode-guard.ts +142 -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 +208 -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 +3124 -0
- package/src/tools/render-utils.ts +895 -0
- package/src/tools/renderers.ts +86 -0
- package/src/tools/report-tool-issue.ts +530 -0
- package/src/tools/resolve.ts +302 -0
- package/src/tools/review.ts +251 -0
- package/src/tools/search-tool-bm25.ts +351 -0
- package/src/tools/search.ts +1583 -0
- package/src/tools/sqlite-reader.ts +828 -0
- package/src/tools/ssh.ts +369 -0
- package/src/tools/todo.ts +938 -0
- package/src/tools/tool-errors.ts +62 -0
- package/src/tools/tool-result.ts +102 -0
- package/src/tools/tool-timeouts.ts +30 -0
- package/src/tools/tts.ts +265 -0
- package/src/tools/write.ts +1182 -0
- package/src/tools/yield.ts +269 -0
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +8 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/streaming-player.ts +266 -0
- package/src/tts/tts-client.ts +642 -0
- package/src/tts/tts-protocol.ts +60 -0
- package/src/tts/tts-worker.ts +505 -0
- package/src/tts/vocalizer.ts +162 -0
- package/src/tts/wav.ts +58 -0
- package/src/tui/code-cell.ts +257 -0
- package/src/tui/file-list.ts +55 -0
- package/src/tui/hyperlink.ts +178 -0
- package/src/tui/index.ts +13 -0
- package/src/tui/output-block.ts +240 -0
- package/src/tui/status-line.ts +54 -0
- package/src/tui/tree-list.ts +133 -0
- package/src/tui/types.ts +15 -0
- package/src/tui/utils.ts +103 -0
- package/src/tui/width-aware-text.ts +58 -0
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +132 -0
- package/src/utils/clipboard.ts +262 -0
- package/src/utils/command-args.ts +76 -0
- package/src/utils/commit-message-generator.ts +147 -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 +78 -0
- package/src/utils/file-display-mode.ts +45 -0
- package/src/utils/file-mentions.ts +284 -0
- package/src/utils/git.ts +1838 -0
- package/src/utils/image-loading.ts +231 -0
- package/src/utils/image-resize.ts +309 -0
- package/src/utils/image-vision-fallback.ts +197 -0
- package/src/utils/ipc.ts +38 -0
- package/src/utils/jj.ts +248 -0
- package/src/utils/lang-from-path.ts +244 -0
- package/src/utils/markit.ts +143 -0
- package/src/utils/mupdf-wasm-embed.ts +12 -0
- package/src/utils/open.ts +55 -0
- package/src/utils/qrcode.ts +535 -0
- package/src/utils/session-color.ts +142 -0
- package/src/utils/shell-snapshot.ts +187 -0
- package/src/utils/sixel.ts +69 -0
- package/src/utils/thinking-display.ts +11 -0
- package/src/utils/title-generator.ts +416 -0
- package/src/utils/tool-choice.ts +49 -0
- package/src/utils/tools-manager.ts +372 -0
- package/src/utils/turndown.ts +83 -0
- package/src/utils/zip.ts +1091 -0
- package/src/web/kagi.ts +304 -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 +652 -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 +800 -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 +354 -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 +317 -0
- package/src/web/search/provider.ts +169 -0
- package/src/web/search/providers/anthropic.ts +343 -0
- package/src/web/search/providers/base.ts +90 -0
- package/src/web/search/providers/brave.ts +152 -0
- package/src/web/search/providers/codex.ts +593 -0
- package/src/web/search/providers/exa.ts +400 -0
- package/src/web/search/providers/gemini.ts +518 -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-auth.ts +133 -0
- package/src/web/search/providers/perplexity.ts +866 -0
- package/src/web/search/providers/searxng.ts +325 -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 +462 -0
- package/src/web/search/utils.ts +17 -0
- package/src/workspace-tree.ts +326 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-side handler for the eval `agent()` helper.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs/promises";
|
|
5
|
+
import * as os from "node:os";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import { prompt, Snowflake } from "@oh-my-pi/pi-utils";
|
|
8
|
+
import { type } from "arktype";
|
|
9
|
+
import { resolveAgentModelPatterns } from "../config/model-resolver";
|
|
10
|
+
import type { LocalProtocolOptions } from "../internal-urls";
|
|
11
|
+
import { MCPManager } from "../mcp/manager";
|
|
12
|
+
import subagentUserPromptTemplate from "../prompts/system/subagent-user-prompt.md" with { type: "text" };
|
|
13
|
+
import { MAIN_AGENT_ID } from "../registry/agent-registry";
|
|
14
|
+
import * as taskDiscovery from "../task/discovery";
|
|
15
|
+
import * as taskExecutor from "../task/executor";
|
|
16
|
+
import { AgentOutputManager } from "../task/output-manager";
|
|
17
|
+
import type { AgentDefinition, AgentProgress, SingleResult } from "../task/types";
|
|
18
|
+
import type { ToolSession } from "../tools";
|
|
19
|
+
import { ToolError } from "../tools/tool-errors";
|
|
20
|
+
import { withBridgeTimeoutPause } from "./bridge-timeout";
|
|
21
|
+
import type { JsStatusEvent } from "./js/shared/types";
|
|
22
|
+
// Import review tools for side effects (registers subagent tool handlers).
|
|
23
|
+
import "../tools/review";
|
|
24
|
+
|
|
25
|
+
/** Synthetic bridge name reserved for the `agent()` helper across both runtimes. */
|
|
26
|
+
export const EVAL_AGENT_BRIDGE_NAME = "__agent__";
|
|
27
|
+
|
|
28
|
+
/** Hard recursion limit for eval-driven subagents. */
|
|
29
|
+
export const EVAL_AGENT_MAX_DEPTH = 3;
|
|
30
|
+
|
|
31
|
+
const DEFAULT_AGENT_TYPE = "task";
|
|
32
|
+
const DEFAULT_AGENT_LABEL = "EvalAgent";
|
|
33
|
+
|
|
34
|
+
const agentArgsSchema = type({
|
|
35
|
+
prompt: "string>0",
|
|
36
|
+
"agentType?": "string>0",
|
|
37
|
+
"model?": "string>0|string>0[]",
|
|
38
|
+
"label?": "string",
|
|
39
|
+
"schema?": "unknown",
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
interface EvalAgentArgs {
|
|
43
|
+
prompt: string;
|
|
44
|
+
agentType?: string;
|
|
45
|
+
model?: string | string[];
|
|
46
|
+
label?: string;
|
|
47
|
+
schema?: unknown;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface EvalAgentBridgeOptions {
|
|
51
|
+
session: ToolSession;
|
|
52
|
+
signal?: AbortSignal;
|
|
53
|
+
emitStatus?: (event: JsStatusEvent) => void;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface EvalAgentResult {
|
|
57
|
+
text: string;
|
|
58
|
+
details: {
|
|
59
|
+
agent: string;
|
|
60
|
+
id: string;
|
|
61
|
+
model?: string | string[];
|
|
62
|
+
structured: boolean;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function parseAgentArgs(args: unknown): EvalAgentArgs {
|
|
67
|
+
const result = agentArgsSchema(args);
|
|
68
|
+
if (result instanceof type.errors) {
|
|
69
|
+
throw new ToolError(`agent() received invalid arguments: ${result.summary}`);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function assertDepthAllowed(session: ToolSession): void {
|
|
75
|
+
const taskDepth = session.taskDepth ?? 0;
|
|
76
|
+
if (taskDepth >= EVAL_AGENT_MAX_DEPTH) {
|
|
77
|
+
throw new ToolError(
|
|
78
|
+
`agent() cannot spawn another agent at task depth ${taskDepth}; maximum depth is ${EVAL_AGENT_MAX_DEPTH}.`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function assertSpawnAllowed(session: ToolSession, agentName: string): void {
|
|
84
|
+
const parentSpawns = session.getSessionSpawns() ?? "*";
|
|
85
|
+
if (parentSpawns === "*") return;
|
|
86
|
+
if (parentSpawns === "") {
|
|
87
|
+
throw new ToolError(`Cannot spawn '${agentName}'. Allowed: none (spawns disabled for this agent)`);
|
|
88
|
+
}
|
|
89
|
+
const allowedSpawns = parentSpawns.split(",").map(spawn => spawn.trim());
|
|
90
|
+
if (!allowedSpawns.includes(agentName)) {
|
|
91
|
+
throw new ToolError(`Cannot spawn '${agentName}'. Allowed: ${parentSpawns}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function assertAgentEnabled(session: ToolSession, agentName: string, agents: AgentDefinition[]): void {
|
|
96
|
+
const disabledAgents = session.settings.get("task.disabledAgents") as string[];
|
|
97
|
+
if (!disabledAgents.includes(agentName)) return;
|
|
98
|
+
const enabled = agents.filter(agent => !disabledAgents.includes(agent.name)).map(agent => agent.name);
|
|
99
|
+
throw new ToolError(
|
|
100
|
+
`Agent "${agentName}" is disabled in settings. Enable it via /agents, or use a different agent type.${enabled.length > 0 ? ` Available: ${enabled.join(", ")}` : ""}`,
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function assertNotPlanMode(session: ToolSession): void {
|
|
105
|
+
if (session.getPlanModeState?.()?.enabled) {
|
|
106
|
+
throw new ToolError("agent() is unavailable in plan mode.");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function renderSubagentPrompt(assignment: string): string {
|
|
111
|
+
return prompt.render(subagentUserPromptTemplate, { assignment: assignment.trim() });
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function trimToUndefined(value: string | undefined): string | undefined {
|
|
115
|
+
const trimmed = value?.trim();
|
|
116
|
+
return trimmed ? trimmed : undefined;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function outputIdBase(label: string | undefined, agentName: string): string {
|
|
120
|
+
const source = trimToUndefined(label) ?? agentName ?? DEFAULT_AGENT_LABEL;
|
|
121
|
+
const sanitized = source.replace(/[^A-Za-z0-9_-]+/g, "").slice(0, 48);
|
|
122
|
+
return sanitized || DEFAULT_AGENT_LABEL;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function getOutputManager(session: ToolSession): AgentOutputManager {
|
|
126
|
+
if (session.agentOutputManager) return session.agentOutputManager;
|
|
127
|
+
const manager = new AgentOutputManager(session.getArtifactsDir ?? (() => null));
|
|
128
|
+
session.agentOutputManager = manager;
|
|
129
|
+
return manager;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async function getArtifacts(session: ToolSession): Promise<{
|
|
133
|
+
sessionFile: string | null;
|
|
134
|
+
artifactsDir: string;
|
|
135
|
+
}> {
|
|
136
|
+
const sessionFile = session.getSessionFile();
|
|
137
|
+
const sessionArtifactsDir = sessionFile ? sessionFile.slice(0, -6) : null;
|
|
138
|
+
const artifactsDir = sessionArtifactsDir ?? path.join(os.tmpdir(), `omp-eval-agent-${Snowflake.next()}`);
|
|
139
|
+
await fs.mkdir(artifactsDir, { recursive: true });
|
|
140
|
+
return { sessionFile, artifactsDir };
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function emitProgressStatus(emitStatus: ((event: JsStatusEvent) => void) | undefined, progress: AgentProgress): void {
|
|
144
|
+
if (!emitStatus) return;
|
|
145
|
+
const preview = (progress.assignment ?? progress.task ?? "").split("\n")[0]?.slice(0, 120);
|
|
146
|
+
emitStatus({
|
|
147
|
+
op: "agent",
|
|
148
|
+
id: progress.id,
|
|
149
|
+
agent: progress.agent,
|
|
150
|
+
status: progress.status,
|
|
151
|
+
lastIntent: progress.lastIntent,
|
|
152
|
+
currentTool: progress.currentTool,
|
|
153
|
+
currentToolArgs: progress.currentToolArgs,
|
|
154
|
+
taskPreview: preview || undefined,
|
|
155
|
+
toolCount: progress.toolCount,
|
|
156
|
+
tokens: progress.tokens,
|
|
157
|
+
contextTokens: progress.contextTokens,
|
|
158
|
+
contextWindow: progress.contextWindow,
|
|
159
|
+
cost: progress.cost,
|
|
160
|
+
durationMs: progress.durationMs,
|
|
161
|
+
model: progress.resolvedModel,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Coalesce a subagent failure into a non-empty, human-meaningful error message.
|
|
167
|
+
*
|
|
168
|
+
* When the executor aborts a subagent (runtime limit, parent cancellation, …)
|
|
169
|
+
* the actionable explanation lives on `abortReason`, while `error`/`stderr`
|
|
170
|
+
* are routinely empty strings. Plain `??` coalescing stops at the empty string
|
|
171
|
+
* and ships an empty error through the bridge — Python then surfaces only the
|
|
172
|
+
* generic `bridge call '__agent__' failed`. See #2006.
|
|
173
|
+
*/
|
|
174
|
+
function buildSubagentFailureMessage(agentName: string, result: SingleResult): string {
|
|
175
|
+
const abortReason = trimToUndefined(result.abortReason);
|
|
176
|
+
if (result.aborted && abortReason) return abortReason;
|
|
177
|
+
return (
|
|
178
|
+
trimToUndefined(result.error) ??
|
|
179
|
+
trimToUndefined(result.stderr) ??
|
|
180
|
+
abortReason ??
|
|
181
|
+
`agent() subagent '${agentName}' failed.`
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Run a single subagent on behalf of an eval cell's `agent()` call.
|
|
187
|
+
*/
|
|
188
|
+
export async function runEvalAgent(args: unknown, options: EvalAgentBridgeOptions): Promise<EvalAgentResult> {
|
|
189
|
+
const parsed = parseAgentArgs(args);
|
|
190
|
+
const agentName = parsed.agentType ?? DEFAULT_AGENT_TYPE;
|
|
191
|
+
const structured = Object.hasOwn(parsed, "schema");
|
|
192
|
+
|
|
193
|
+
assertNotPlanMode(options.session);
|
|
194
|
+
assertDepthAllowed(options.session);
|
|
195
|
+
assertSpawnAllowed(options.session, agentName);
|
|
196
|
+
|
|
197
|
+
const turnBudget = options.session.getTurnBudget?.();
|
|
198
|
+
if (turnBudget?.hard && turnBudget.total !== null && turnBudget.spent >= turnBudget.total) {
|
|
199
|
+
throw new ToolError(
|
|
200
|
+
`agent() blocked: turn token budget exhausted (${turnBudget.spent}/${turnBudget.total} output tokens). Raise or drop the +Nk! ceiling to continue.`,
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const { agents } = await taskDiscovery.discoverAgents(options.session.cwd);
|
|
205
|
+
const agent = taskDiscovery.getAgent(agents, agentName);
|
|
206
|
+
if (!agent) {
|
|
207
|
+
const available = agents.map(candidate => candidate.name).join(", ") || "none";
|
|
208
|
+
throw new ToolError(`Unknown agent "${agentName}". Available: ${available}`);
|
|
209
|
+
}
|
|
210
|
+
assertAgentEnabled(options.session, agentName, agents);
|
|
211
|
+
|
|
212
|
+
const effectiveAgent = agent;
|
|
213
|
+
const parentActiveModelPattern = options.session.getActiveModelString?.();
|
|
214
|
+
const agentModelOverrides = options.session.settings.get("task.agentModelOverrides");
|
|
215
|
+
const modelOverride = resolveAgentModelPatterns({
|
|
216
|
+
settingsOverride: parsed.model ?? agentModelOverrides[agentName],
|
|
217
|
+
agentModel: effectiveAgent.model,
|
|
218
|
+
settings: options.session.settings,
|
|
219
|
+
activeModelPattern: parentActiveModelPattern,
|
|
220
|
+
fallbackModelPattern: options.session.getModelString?.(),
|
|
221
|
+
});
|
|
222
|
+
const availableSkills = [...(options.session.skills ?? [])];
|
|
223
|
+
const resolvedAutoloadSkills =
|
|
224
|
+
effectiveAgent.autoloadSkills?.length && availableSkills.length > 0
|
|
225
|
+
? effectiveAgent.autoloadSkills
|
|
226
|
+
.map(name => availableSkills.find(skill => skill.name === name))
|
|
227
|
+
.filter((skill): skill is NonNullable<typeof skill> => skill !== undefined)
|
|
228
|
+
: [];
|
|
229
|
+
const contextFiles = options.session.contextFiles?.filter(
|
|
230
|
+
file => path.basename(file.path).toLowerCase() !== "agents.md",
|
|
231
|
+
);
|
|
232
|
+
const localProtocolOptions: LocalProtocolOptions = options.session.localProtocolOptions ?? {
|
|
233
|
+
getArtifactsDir: options.session.getArtifactsDir ?? (() => null),
|
|
234
|
+
getSessionId: options.session.getSessionId ?? (() => null),
|
|
235
|
+
};
|
|
236
|
+
const parentArtifactManager = options.session.getArtifactManager?.() ?? undefined;
|
|
237
|
+
const mcpManager = options.session.mcpManager ?? MCPManager.instance();
|
|
238
|
+
const { sessionFile, artifactsDir } = await getArtifacts(options.session);
|
|
239
|
+
const outputManager = getOutputManager(options.session);
|
|
240
|
+
const id = await outputManager.allocate(outputIdBase(parsed.label, agentName));
|
|
241
|
+
const assignment = parsed.prompt.trim();
|
|
242
|
+
// Suspend eval timeout accounting while the subagent owns control. The
|
|
243
|
+
// timeout clock restarts once the bridge returns to the cell runtime.
|
|
244
|
+
const result = await withBridgeTimeoutPause(options.emitStatus, () =>
|
|
245
|
+
taskExecutor.runSubprocess({
|
|
246
|
+
cwd: options.session.cwd,
|
|
247
|
+
agent: effectiveAgent,
|
|
248
|
+
task: renderSubagentPrompt(assignment),
|
|
249
|
+
assignment,
|
|
250
|
+
description: trimToUndefined(parsed.label),
|
|
251
|
+
index: 0,
|
|
252
|
+
id,
|
|
253
|
+
taskDepth: options.session.taskDepth ?? 0,
|
|
254
|
+
modelOverride,
|
|
255
|
+
parentActiveModelPattern,
|
|
256
|
+
thinkingLevel: effectiveAgent.thinkingLevel,
|
|
257
|
+
outputSchema: structured ? parsed.schema : undefined,
|
|
258
|
+
sessionFile,
|
|
259
|
+
persistArtifacts: Boolean(sessionFile),
|
|
260
|
+
artifactsDir,
|
|
261
|
+
// Eval `agent()` subagents are short-lived programmatic helpers (data
|
|
262
|
+
// collection, structured output, parallel() fan-out). LSP server
|
|
263
|
+
// cold-start costs tens of seconds and is pure overhead here, so it is
|
|
264
|
+
// forced off regardless of the `task.enableLsp` setting — that knob only
|
|
265
|
+
// governs LSP-aware delegation through the `task` tool.
|
|
266
|
+
enableLsp: false,
|
|
267
|
+
signal: options.signal,
|
|
268
|
+
eventBus: options.session.eventBus,
|
|
269
|
+
onProgress: progress => emitProgressStatus(options.emitStatus, progress),
|
|
270
|
+
authStorage: options.session.authStorage,
|
|
271
|
+
modelRegistry: options.session.modelRegistry,
|
|
272
|
+
settings: options.session.settings,
|
|
273
|
+
// Eval `agent()` subagents are never wall-clock capped: the parent
|
|
274
|
+
// cell's idle watchdog is suspended for the whole bridge call
|
|
275
|
+
// (withBridgeTimeoutPause), so a long-running phase/recovery workflow
|
|
276
|
+
// must not be killed by `task.maxRuntimeMs`. Force the limit off
|
|
277
|
+
// regardless of the inherited session setting.
|
|
278
|
+
maxRuntimeMs: 0,
|
|
279
|
+
mcpManager,
|
|
280
|
+
contextFiles,
|
|
281
|
+
skills: availableSkills,
|
|
282
|
+
autoloadSkills: resolvedAutoloadSkills,
|
|
283
|
+
workspaceTree: options.session.workspaceTree,
|
|
284
|
+
promptTemplates: options.session.promptTemplates,
|
|
285
|
+
localProtocolOptions,
|
|
286
|
+
parentArtifactManager,
|
|
287
|
+
parentHindsightSessionState: options.session.getHindsightSessionState?.(),
|
|
288
|
+
parentMnemopiSessionState: options.session.getMnemopiSessionState?.(),
|
|
289
|
+
parentTelemetry: options.session.getTelemetry?.(),
|
|
290
|
+
parentAgentId: options.session.getAgentId?.() ?? MAIN_AGENT_ID,
|
|
291
|
+
// Deliberately omit parentEvalSessionId: the parent's Python kernel is
|
|
292
|
+
// blocked on this bridge call, so sharing the eval session would deadlock
|
|
293
|
+
// (subagent queues behind the parent's in-flight execution, parent waits
|
|
294
|
+
// for subagent → circular). Each bridge-spawned subagent gets its own
|
|
295
|
+
// eval session with an independent kernel.
|
|
296
|
+
}),
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
if (result.exitCode !== 0 || result.error || result.aborted) {
|
|
300
|
+
throw new ToolError(buildSubagentFailureMessage(agentName, result));
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
options.session.recordEvalSubagentUsage?.(result.usage?.output ?? 0);
|
|
304
|
+
|
|
305
|
+
// The final `onProgress` flush from `runSubprocess` already emits a
|
|
306
|
+
// status:"completed" event carrying full stats (toolCount, cost, context),
|
|
307
|
+
// so we don't emit a second, sparser completion event here — it would
|
|
308
|
+
// coalesce over the richer one and drop those stats.
|
|
309
|
+
|
|
310
|
+
return {
|
|
311
|
+
text: result.output,
|
|
312
|
+
details: {
|
|
313
|
+
agent: result.agent,
|
|
314
|
+
id: result.id,
|
|
315
|
+
model: result.resolvedModel ?? modelOverride,
|
|
316
|
+
structured,
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { buildEvalUrlRoots, type LocalProtocolOptions } from "../internal-urls";
|
|
2
|
+
import type { ToolSession } from "../tools";
|
|
3
|
+
import type { EvalDisplayOutput, EvalLanguage, EvalStatusEvent } from "./types";
|
|
4
|
+
|
|
5
|
+
/** Per-cell execute() options. */
|
|
6
|
+
export interface ExecutorBackendExecOptions {
|
|
7
|
+
cwd: string;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
sessionFile: string | undefined;
|
|
10
|
+
kernelOwnerId: string | undefined;
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
session: ToolSession;
|
|
13
|
+
/**
|
|
14
|
+
* Runtime-work budget in milliseconds (the cell's `timeout`). Cancellation is
|
|
15
|
+
* driven entirely by `signal`, which the eval tool arms as a watchdog that
|
|
16
|
+
* pauses on bridge timeout-control status events and fires a `TimeoutError`
|
|
17
|
+
* reason only while the Python/JS runtime owns control. Backends use this
|
|
18
|
+
* value only for timeout-annotation text and as cold-start headroom; they MUST
|
|
19
|
+
* NOT derive a competing wall-clock timer from it.
|
|
20
|
+
*/
|
|
21
|
+
idleTimeoutMs: number;
|
|
22
|
+
reset: boolean;
|
|
23
|
+
onChunk: (chunk: string) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Live status events (read/write/agent/…) delivered as they are emitted,
|
|
26
|
+
* before the cell finishes. The same events are also returned in
|
|
27
|
+
* `displayOutputs`; this channel exists so callers can stream long-running
|
|
28
|
+
* progress (e.g. `agent()` subagents) into the UI mid-execution.
|
|
29
|
+
*/
|
|
30
|
+
onStatus?: (event: EvalStatusEvent) => void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Result returned by a backend's execute(). */
|
|
34
|
+
export interface ExecutorBackendResult {
|
|
35
|
+
output: string;
|
|
36
|
+
exitCode: number | undefined;
|
|
37
|
+
cancelled: boolean;
|
|
38
|
+
truncated: boolean;
|
|
39
|
+
artifactId: string | undefined;
|
|
40
|
+
totalLines: number;
|
|
41
|
+
totalBytes: number;
|
|
42
|
+
outputLines: number;
|
|
43
|
+
outputBytes: number;
|
|
44
|
+
displayOutputs: EvalDisplayOutput[];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Pluggable language backend for the eval tool. */
|
|
48
|
+
export interface ExecutorBackend {
|
|
49
|
+
readonly id: EvalLanguage;
|
|
50
|
+
readonly label: string;
|
|
51
|
+
/** Source language identifier passed to the syntax highlighter (e.g. "python", "javascript"). */
|
|
52
|
+
readonly highlightLang: string;
|
|
53
|
+
/** Cheap availability check. Used by fallback resolution. */
|
|
54
|
+
isAvailable(session: ToolSession): Promise<boolean>;
|
|
55
|
+
/** Execute one cell. Caller invokes once per cell and aggregates results. */
|
|
56
|
+
execute(code: string, opts: ExecutorBackendExecOptions): Promise<ExecutorBackendResult>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Resolve the on-disk roots that the eval helpers substitute for internal-URL
|
|
61
|
+
* schemes (currently `local://`). Prefers the session's own
|
|
62
|
+
* {@link LocalProtocolOptions} — the exact mapping `read local://…` uses — so an
|
|
63
|
+
* eval `write("local://x")` and a later `read local://x` agree on the location.
|
|
64
|
+
*/
|
|
65
|
+
export function resolveEvalUrlRoots(session: ToolSession): Record<string, string> {
|
|
66
|
+
const options: LocalProtocolOptions = session.localProtocolOptions ?? {
|
|
67
|
+
getArtifactsDir: () => session.getArtifactsDir?.() ?? null,
|
|
68
|
+
getSessionId: () => session.getSessionId?.() ?? null,
|
|
69
|
+
};
|
|
70
|
+
return buildEvalUrlRoots(options);
|
|
71
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout suspension for in-flight host-side eval bridge calls.
|
|
3
|
+
*
|
|
4
|
+
* The eval watchdog caps a cell's `timeout` as a budget on the cell runtime's
|
|
5
|
+
* own work. Host-side `agent()` / `parallel()` / `completion()` bridge calls hand
|
|
6
|
+
* control to the outer TypeScript process, where the Python kernel or JS VM is
|
|
7
|
+
* only waiting for a result. While that delegated work is in flight, the cell
|
|
8
|
+
* timeout must be ignored completely; once the bridge returns and the runtime is
|
|
9
|
+
* back in control, the watchdog starts a fresh timeout window.
|
|
10
|
+
*
|
|
11
|
+
* Bridge helpers express that handoff with synthetic pause/resume status events
|
|
12
|
+
* on the existing `emitStatus → onStatus` path. Consumers MUST treat these as
|
|
13
|
+
* timeout-control events only: update the watchdog and drop them from rendered
|
|
14
|
+
* or persisted cell output.
|
|
15
|
+
*/
|
|
16
|
+
import type { JsStatusEvent } from "./js/shared/types";
|
|
17
|
+
|
|
18
|
+
/** Synthetic status op emitted when a bridge call leaves the cell runtime. */
|
|
19
|
+
export const EVAL_TIMEOUT_PAUSE_OP = "timeout-pause";
|
|
20
|
+
|
|
21
|
+
/** Synthetic status op emitted when a bridge call returns control to the runtime. */
|
|
22
|
+
export const EVAL_TIMEOUT_RESUME_OP = "timeout-resume";
|
|
23
|
+
|
|
24
|
+
/** Whether a status event is pure eval-timeout control and should not render. */
|
|
25
|
+
export function isEvalTimeoutControlEvent(event: JsStatusEvent): boolean {
|
|
26
|
+
return event.op === EVAL_TIMEOUT_PAUSE_OP || event.op === EVAL_TIMEOUT_RESUME_OP;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Run {@link operation} while suspending the eval watchdog through
|
|
31
|
+
* {@link emitStatus}. A no-op wrapper when no status sink is wired.
|
|
32
|
+
*/
|
|
33
|
+
export async function withBridgeTimeoutPause<T>(
|
|
34
|
+
emitStatus: ((event: JsStatusEvent) => void) | undefined,
|
|
35
|
+
operation: () => Promise<T>,
|
|
36
|
+
): Promise<T> {
|
|
37
|
+
if (!emitStatus) return operation();
|
|
38
|
+
emitStatus({ op: EVAL_TIMEOUT_PAUSE_OP });
|
|
39
|
+
try {
|
|
40
|
+
return await operation();
|
|
41
|
+
} finally {
|
|
42
|
+
emitStatus({ op: EVAL_TIMEOUT_RESUME_OP });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-side handler for the eval `budget` helper.
|
|
3
|
+
*
|
|
4
|
+
* Reports the active token ceiling and amount spent so kernel helpers can
|
|
5
|
+
* compute remaining budget. Precedence: a `+Nk`/`+Nk!` per-turn directive (the
|
|
6
|
+
* user's immediate intent) wins; otherwise an active Goal Mode budget; otherwise
|
|
7
|
+
* no ceiling, with `spent` still reflecting this turn's output where available.
|
|
8
|
+
*/
|
|
9
|
+
import type { ToolSession } from "../tools";
|
|
10
|
+
import type { JsStatusEvent } from "./js/shared/types";
|
|
11
|
+
|
|
12
|
+
/** Synthetic bridge name reserved for the `budget` helper across both runtimes. */
|
|
13
|
+
export const EVAL_BUDGET_BRIDGE_NAME = "__budget__";
|
|
14
|
+
|
|
15
|
+
export interface EvalBudgetBridgeOptions {
|
|
16
|
+
session: ToolSession;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
emitStatus?: (event: JsStatusEvent) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface EvalBudgetResult {
|
|
22
|
+
total: number | null;
|
|
23
|
+
spent: number;
|
|
24
|
+
/** Whether the ceiling is enforced (eval `agent()` throws past it) vs advisory. */
|
|
25
|
+
hard: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the current token budget snapshot for an eval cell's `budget` helper.
|
|
30
|
+
* The returned object is JSON-passed verbatim by the bridge transport; kernel
|
|
31
|
+
* helpers read `.total`/`.spent`/`.hard` directly.
|
|
32
|
+
*/
|
|
33
|
+
export async function runEvalBudget(_args: unknown, options: EvalBudgetBridgeOptions): Promise<EvalBudgetResult> {
|
|
34
|
+
const turn = options.session.getTurnBudget?.();
|
|
35
|
+
if (turn && turn.total !== null) {
|
|
36
|
+
return { total: turn.total, spent: turn.spent, hard: turn.hard };
|
|
37
|
+
}
|
|
38
|
+
const goal = options.session.getGoalModeState?.();
|
|
39
|
+
if (goal?.enabled && goal.goal) {
|
|
40
|
+
return {
|
|
41
|
+
total: goal.goal.tokenBudget ?? null,
|
|
42
|
+
spent: goal.goal.tokensUsed ?? 0,
|
|
43
|
+
hard: goal.goal.tokenBudget != null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const spent = turn?.spent ?? options.session.getUsageStatistics?.()?.output ?? 0;
|
|
47
|
+
return { total: null, spent, hard: false };
|
|
48
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-side handler for the eval `completion()` helper.
|
|
3
|
+
*
|
|
4
|
+
* Both eval runtimes (JS worker + Python kernel) route helper→host calls
|
|
5
|
+
* through {@link callSessionTool}. Reserving the synthetic tool name
|
|
6
|
+
* {@link EVAL_COMPLETION_BRIDGE_NAME} lets a single host handler serve both
|
|
7
|
+
* transports without registering an agent-visible tool: cell code calls
|
|
8
|
+
* `completion(prompt, opts)`, the prelude forwards `{ prompt, model, system?, schema? }`
|
|
9
|
+
* through the bridge, and this module performs one stateless completion.
|
|
10
|
+
*
|
|
11
|
+
* The call is oneshot and toolless from the model's perspective — pure text
|
|
12
|
+
* in, text (or, with `schema`, a structured object) out.
|
|
13
|
+
*/
|
|
14
|
+
import { instrumentedCompleteSimple, resolveTelemetry } from "@oh-my-pi/pi-agent-core";
|
|
15
|
+
import { type Api, Effort, type Model, type Tool } from "@oh-my-pi/pi-ai";
|
|
16
|
+
import { getSupportedEfforts } from "@oh-my-pi/pi-catalog/model-thinking";
|
|
17
|
+
import { type } from "arktype";
|
|
18
|
+
import { extractTextContent, extractToolCall, parseJsonPayload } from "../commit/utils";
|
|
19
|
+
|
|
20
|
+
import {
|
|
21
|
+
expandRoleAlias,
|
|
22
|
+
formatModelString,
|
|
23
|
+
getModelMatchPreferences,
|
|
24
|
+
resolveModelFromString,
|
|
25
|
+
} from "../config/model-resolver";
|
|
26
|
+
import type { ToolSession } from "../tools";
|
|
27
|
+
import { ToolError } from "../tools/tool-errors";
|
|
28
|
+
import { withBridgeTimeoutPause } from "./bridge-timeout";
|
|
29
|
+
import type { JsStatusEvent } from "./js/shared/types";
|
|
30
|
+
|
|
31
|
+
/** Synthetic bridge name reserved for the `completion()` helper across both runtimes. */
|
|
32
|
+
export const EVAL_COMPLETION_BRIDGE_NAME = "__completion__";
|
|
33
|
+
|
|
34
|
+
/** Synthetic tool the model is forced to call when a `schema` is supplied. */
|
|
35
|
+
const STRUCTURED_TOOL_NAME = "respond";
|
|
36
|
+
|
|
37
|
+
type CompletionTier = "smol" | "default" | "slow";
|
|
38
|
+
|
|
39
|
+
const TIER_TO_PATTERN: Record<CompletionTier, string> = {
|
|
40
|
+
smol: "pi/smol",
|
|
41
|
+
default: "pi/default",
|
|
42
|
+
slow: "pi/slow",
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const completionArgsSchema = type({
|
|
46
|
+
prompt: "string>0",
|
|
47
|
+
"model?": "'smol'|'default'|'slow'",
|
|
48
|
+
"system?": "string",
|
|
49
|
+
"schema?": "Record<string,unknown>",
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
export interface EvalCompletionBridgeOptions {
|
|
53
|
+
session: ToolSession;
|
|
54
|
+
signal?: AbortSignal;
|
|
55
|
+
emitStatus?: (event: JsStatusEvent) => void;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface EvalCompletionResult {
|
|
59
|
+
text: string;
|
|
60
|
+
details: { model: string; tier: CompletionTier; structured: boolean };
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Resolve a tier to a concrete {@link Model}. `default` prefers the session's
|
|
65
|
+
* active model and falls back to the `pi/default` role; `smol`/`slow` resolve
|
|
66
|
+
* their respective role patterns. Returns `undefined` when nothing matches.
|
|
67
|
+
*/
|
|
68
|
+
function resolveTierModel(tier: CompletionTier, session: ToolSession): Model<Api> | undefined {
|
|
69
|
+
const modelRegistry = session.modelRegistry;
|
|
70
|
+
if (!modelRegistry) return undefined;
|
|
71
|
+
const available = modelRegistry.getAvailable();
|
|
72
|
+
if (available.length === 0) return undefined;
|
|
73
|
+
|
|
74
|
+
const matchPreferences = getModelMatchPreferences(session.settings);
|
|
75
|
+
const resolve = (pattern: string | undefined): Model<Api> | undefined => {
|
|
76
|
+
if (!pattern) return undefined;
|
|
77
|
+
const expanded = expandRoleAlias(pattern, session.settings);
|
|
78
|
+
return resolveModelFromString(expanded, available, matchPreferences, modelRegistry);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
if (tier === "default") {
|
|
82
|
+
const activePattern = session.getActiveModelString?.() ?? session.getModelString?.();
|
|
83
|
+
return resolve(activePattern) ?? resolve(TIER_TO_PATTERN.default);
|
|
84
|
+
}
|
|
85
|
+
return resolve(TIER_TO_PATTERN[tier]);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Choose the reasoning effort for a tier. Only `slow` opts into thinking, and
|
|
90
|
+
* only on reasoning-capable models — guarding against `requireSupportedEffort`
|
|
91
|
+
* throwing downstream on models that cannot reason. Clamps to the highest
|
|
92
|
+
* supported effort so a reasoning model without `high` does not 400.
|
|
93
|
+
*/
|
|
94
|
+
function reasoningForTier(tier: CompletionTier, model: Model<Api>): Effort | undefined {
|
|
95
|
+
if (tier !== "slow" || !model.reasoning) return undefined;
|
|
96
|
+
const efforts = getSupportedEfforts(model);
|
|
97
|
+
if (efforts.length === 0) return undefined;
|
|
98
|
+
return efforts.includes(Effort.High) ? Effort.High : efforts[efforts.length - 1];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Run a single stateless completion on behalf of an eval cell's `completion()` call.
|
|
103
|
+
* Returns a `{ text, details }` value shaped like a {@link callSessionTool}
|
|
104
|
+
* result so the existing bridge transport carries it to either runtime.
|
|
105
|
+
*/
|
|
106
|
+
export async function runEvalCompletion(
|
|
107
|
+
args: unknown,
|
|
108
|
+
options: EvalCompletionBridgeOptions,
|
|
109
|
+
): Promise<EvalCompletionResult> {
|
|
110
|
+
const parsed = completionArgsSchema(args);
|
|
111
|
+
if (parsed instanceof type.errors) {
|
|
112
|
+
throw new ToolError(`completion() received invalid arguments: ${parsed.summary}`);
|
|
113
|
+
}
|
|
114
|
+
const { prompt, model: modelTier, system, schema } = parsed;
|
|
115
|
+
// Apply default value for model if not provided
|
|
116
|
+
const finalTier: CompletionTier = modelTier ?? "default";
|
|
117
|
+
|
|
118
|
+
const model = resolveTierModel(finalTier, options.session);
|
|
119
|
+
if (!model) {
|
|
120
|
+
throw new ToolError(
|
|
121
|
+
`completion() could not resolve a model for the "${finalTier}" tier. Configure modelRoles.${finalTier === "default" ? "default" : finalTier} or ensure a provider is available.`,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const registry = options.session.modelRegistry;
|
|
126
|
+
const apiKey = await registry?.getApiKey(model);
|
|
127
|
+
if (!registry || !apiKey) {
|
|
128
|
+
throw new ToolError(
|
|
129
|
+
`completion() has no API key for ${formatModelString(model)}. Configure credentials for this provider or choose another tier.`,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const tools: Tool[] | undefined = schema
|
|
134
|
+
? [
|
|
135
|
+
{
|
|
136
|
+
name: STRUCTURED_TOOL_NAME,
|
|
137
|
+
description: "Return your answer by calling this tool with the requested structured fields.",
|
|
138
|
+
parameters: schema,
|
|
139
|
+
strict: false,
|
|
140
|
+
},
|
|
141
|
+
]
|
|
142
|
+
: undefined;
|
|
143
|
+
|
|
144
|
+
const telemetry = resolveTelemetry(options.session.getTelemetry?.(), options.session.getSessionId?.() ?? undefined);
|
|
145
|
+
|
|
146
|
+
// Some providers (notably openai-codex) require a non-empty `instructions`
|
|
147
|
+
// field on every Responses request and 400 with "Instructions are required"
|
|
148
|
+
// when it is missing. Fall back to a minimal default so `completion(prompt)` works
|
|
149
|
+
// without forcing every caller to pass a `system` prompt.
|
|
150
|
+
const systemPrompt = system ? [system] : ["You are a helpful assistant."];
|
|
151
|
+
|
|
152
|
+
// Suspend eval timeout accounting while the model request owns control. The
|
|
153
|
+
// timeout clock restarts once the bridge returns to the cell runtime.
|
|
154
|
+
const response = await withBridgeTimeoutPause(options.emitStatus, () =>
|
|
155
|
+
instrumentedCompleteSimple(
|
|
156
|
+
model,
|
|
157
|
+
{
|
|
158
|
+
systemPrompt,
|
|
159
|
+
messages: [{ role: "user", content: [{ type: "text", text: prompt }], timestamp: Date.now() }],
|
|
160
|
+
tools,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
apiKey: registry.resolver(model, options.session.getSessionId?.() ?? undefined),
|
|
164
|
+
signal: options.signal,
|
|
165
|
+
reasoning: reasoningForTier(finalTier, model),
|
|
166
|
+
toolChoice: schema ? { type: "tool", name: STRUCTURED_TOOL_NAME } : undefined,
|
|
167
|
+
},
|
|
168
|
+
{ telemetry, oneshotKind: "eval_completion" },
|
|
169
|
+
),
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
if (response.stopReason === "error") {
|
|
173
|
+
throw new ToolError(response.errorMessage ?? "completion() request failed.");
|
|
174
|
+
}
|
|
175
|
+
if (response.stopReason === "aborted") {
|
|
176
|
+
throw new ToolError("completion() request aborted.");
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
let resultText: string;
|
|
180
|
+
if (schema) {
|
|
181
|
+
const call = extractToolCall(response, STRUCTURED_TOOL_NAME);
|
|
182
|
+
let value: unknown;
|
|
183
|
+
if (call) {
|
|
184
|
+
value = call.arguments;
|
|
185
|
+
} else {
|
|
186
|
+
const text = extractTextContent(response);
|
|
187
|
+
if (!text) throw new ToolError("completion() returned no structured response.");
|
|
188
|
+
try {
|
|
189
|
+
value = parseJsonPayload(text);
|
|
190
|
+
} catch {
|
|
191
|
+
throw new ToolError("completion() did not return a structured response matching the schema.");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
resultText = JSON.stringify(value);
|
|
195
|
+
} else {
|
|
196
|
+
resultText = extractTextContent(response);
|
|
197
|
+
if (!resultText) throw new ToolError("completion() returned no text output.");
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
options.emitStatus?.({
|
|
201
|
+
op: "completion",
|
|
202
|
+
model: formatModelString(model),
|
|
203
|
+
tier: finalTier,
|
|
204
|
+
chars: resultText.length,
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
return {
|
|
208
|
+
text: resultText,
|
|
209
|
+
details: { model: formatModelString(model), tier: finalTier, structured: Boolean(schema) },
|
|
210
|
+
};
|
|
211
|
+
}
|