@prometheus-ai/agent 0.5.3 → 0.5.8
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 +39 -0
- package/dist/cli.js +25110 -0
- package/dist/types/async/index.d.ts +0 -1
- package/dist/types/async/job-manager.d.ts +33 -0
- package/dist/types/autolearn/controller.d.ts +25 -0
- package/dist/types/autolearn/managed-skills.d.ts +45 -0
- package/dist/types/autoresearch/state.d.ts +1 -1
- package/dist/types/autoresearch/tools/init-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/log-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/run-experiment.d.ts +1 -1
- package/dist/types/autoresearch/tools/update-notes.d.ts +1 -1
- package/dist/types/autoresearch/types.d.ts +1 -1
- package/dist/types/capability/context-file.d.ts +0 -13
- package/dist/types/capability/mcp.d.ts +1 -0
- package/dist/types/capability/rule-buckets.d.ts +1 -1
- package/dist/types/capability/rule.d.ts +6 -1
- package/dist/types/capability/types.d.ts +0 -4
- package/dist/types/cli/args.d.ts +23 -3
- package/dist/types/cli/bench-cli.d.ts +78 -0
- package/dist/types/cli/claude-trace-cli.d.ts +7 -0
- package/dist/types/cli/dry-balance-cli.d.ts +16 -2
- package/dist/types/cli/gallery-cli.d.ts +43 -0
- package/dist/types/cli/gallery-fixtures/agentic.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/codeintel.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/edit.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/fs.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/index.d.ts +4 -0
- package/dist/types/cli/gallery-fixtures/interaction.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/memory.d.ts +2 -0
- package/dist/types/cli/gallery-fixtures/misc.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/search.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/shell.d.ts +3 -0
- package/dist/types/cli/gallery-fixtures/types.d.ts +55 -0
- package/dist/types/cli/gallery-fixtures/web.d.ts +2 -0
- package/dist/types/cli/gallery-screenshot.d.ts +35 -0
- package/dist/types/cli/gateway-cli.d.ts +4 -0
- package/dist/types/cli/grievances-cli.d.ts +1 -1
- package/dist/types/cli/list-models.d.ts +6 -14
- package/dist/types/cli/models-cli.d.ts +49 -0
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/cli/setup-model-picker.d.ts +14 -0
- package/dist/types/cli/startup-cwd.d.ts +2 -0
- package/dist/types/cli/update-cli.d.ts +13 -40
- package/dist/types/cli/usage-cli.d.ts +81 -0
- package/dist/types/cli-commands.d.ts +12 -0
- package/dist/types/collab/crypto.d.ts +7 -0
- package/dist/types/collab/guest.d.ts +37 -0
- package/dist/types/collab/host.d.ts +29 -0
- package/dist/types/collab/protocol.d.ts +119 -0
- package/dist/types/collab/relay-client.d.ts +22 -0
- package/dist/types/commands/bench.d.ts +29 -0
- package/dist/types/commands/gallery.d.ts +47 -0
- package/dist/types/commands/gateway.d.ts +3 -0
- package/dist/types/commands/install.d.ts +1 -1
- package/dist/types/commands/join.d.ts +12 -0
- package/dist/types/commands/launch.d.ts +8 -4
- package/dist/types/commands/models.d.ts +33 -0
- package/dist/types/commands/read.d.ts +1 -1
- package/dist/types/commands/say.d.ts +24 -0
- package/dist/types/commands/token.d.ts +25 -0
- package/dist/types/commands/usage.d.ts +34 -0
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
- package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
- package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
- package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
- package/dist/types/commit/analysis/conventional.d.ts +2 -2
- package/dist/types/commit/analysis/summary.d.ts +2 -2
- package/dist/types/commit/changelog/generate.d.ts +3 -3
- package/dist/types/commit/changelog/index.d.ts +2 -2
- package/dist/types/commit/map-reduce/index.d.ts +3 -3
- package/dist/types/commit/map-reduce/map-phase.d.ts +2 -2
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +2 -2
- package/dist/types/commit/model-selection.d.ts +10 -4
- package/dist/types/commit/shared-llm.d.ts +1 -1
- package/dist/types/config/api-key-resolver.d.ts +43 -0
- package/dist/types/config/append-only-context-mode.d.ts +2 -1
- package/dist/types/config/keybindings.d.ts +12 -7
- package/dist/types/config/model-discovery.d.ts +57 -0
- package/dist/types/config/model-equivalence.d.ts +1 -1
- package/dist/types/config/model-registry.d.ts +86 -222
- package/dist/types/config/model-resolver.d.ts +43 -12
- package/dist/types/config/model-roles.d.ts +29 -0
- package/dist/types/config/models-config-schema.d.ts +536 -43
- package/dist/types/config/models-config.d.ts +391 -0
- package/dist/types/config/settings-schema.d.ts +1211 -324
- package/dist/types/config/settings.d.ts +15 -3
- package/dist/types/dap/config.d.ts +14 -1
- package/dist/types/dap/types.d.ts +10 -0
- package/dist/types/debug/log-viewer.d.ts +1 -1
- package/dist/types/debug/raw-sse.d.ts +1 -1
- package/dist/types/debug/report-bundle.d.ts +3 -0
- package/dist/types/debug/terminal-info.d.ts +0 -1
- package/dist/types/discovery/at-imports.d.ts +15 -0
- package/dist/types/discovery/prometheus-extension-roots.d.ts +7 -7
- package/dist/types/edit/diff.d.ts +3 -2
- package/dist/types/edit/file-snapshot-store.d.ts +18 -0
- package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
- package/dist/types/edit/hashline/params.d.ts +1 -1
- package/dist/types/edit/index.d.ts +0 -1
- package/dist/types/edit/modes/apply-patch.d.ts +1 -1
- package/dist/types/edit/modes/patch.d.ts +1 -1
- package/dist/types/edit/modes/replace.d.ts +1 -1
- package/dist/types/edit/renderer.d.ts +1 -0
- package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
- package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
- package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
- package/dist/types/eval/backend.d.ts +7 -2
- package/dist/types/eval/bridge-timeout.d.ts +1 -1
- package/dist/types/eval/completion-bridge.d.ts +25 -0
- package/dist/types/eval/idle-timeout.d.ts +1 -5
- package/dist/types/eval/js/context-manager.d.ts +1 -0
- package/dist/types/eval/js/executor.d.ts +2 -0
- package/dist/types/eval/js/index.d.ts +1 -1
- package/dist/types/eval/js/shared/helpers.d.ts +7 -1
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
- package/dist/types/eval/js/shared/runtime.d.ts +6 -1
- package/dist/types/eval/js/worker-protocol.d.ts +6 -0
- package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
- package/dist/types/eval/py/executor.d.ts +12 -0
- package/dist/types/eval/py/index.d.ts +1 -1
- package/dist/types/eval/py/kernel.d.ts +6 -1
- package/dist/types/eval/py/runtime.d.ts +9 -0
- package/dist/types/exa/index.d.ts +1 -19
- package/dist/types/exa/mcp-client.d.ts +10 -3
- package/dist/types/exa/types.d.ts +0 -83
- package/dist/types/exec/bash-executor.d.ts +7 -0
- package/dist/types/export/custom-share.d.ts +1 -2
- package/dist/types/export/html/index.d.ts +39 -0
- package/dist/types/export/html/template-js.d.ts +2 -0
- package/dist/types/export/share.d.ts +61 -0
- package/dist/types/export/ttsr.d.ts +14 -0
- package/dist/types/extensibility/custom-commands/types.d.ts +9 -4
- package/dist/types/extensibility/custom-tools/loader.d.ts +30 -4
- package/dist/types/extensibility/custom-tools/types.d.ts +16 -8
- package/dist/types/extensibility/extensions/index.d.ts +1 -1
- package/dist/types/extensibility/extensions/loader.d.ts +20 -1
- package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
- package/dist/types/extensibility/extensions/runner.d.ts +5 -2
- package/dist/types/extensibility/extensions/types.d.ts +72 -11
- package/dist/types/extensibility/hooks/index.d.ts +2 -1
- package/dist/types/extensibility/hooks/loader.d.ts +1 -1
- package/dist/types/extensibility/hooks/types.d.ts +11 -5
- package/dist/types/extensibility/{legacy-pi-ai-shim.d.ts → legacy-package-ai-shim.d.ts} +2 -2
- package/dist/types/extensibility/plugins/{legacy-pi-compat.d.ts → legacy-package-compat.d.ts} +20 -3
- package/dist/types/extensibility/plugins/loader.d.ts +11 -0
- package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
- package/dist/types/extensibility/plugins/types.d.ts +2 -2
- package/dist/types/extensibility/shared-events.d.ts +3 -3
- package/dist/types/extensibility/skills.d.ts +10 -0
- package/dist/types/extensibility/slash-commands.d.ts +1 -11
- package/dist/types/gateway/adapters/telegram/access.d.ts +4 -1
- package/dist/types/gateway/adapters/telegram/setup-api.d.ts +1 -1
- package/dist/types/gateway/adapters/telegram/webhook.d.ts +1 -1
- package/dist/types/gateway/types.d.ts +1 -1
- package/dist/types/goals/guided-setup.d.ts +18 -0
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/goals/tools/goal-tool.d.ts +1 -1
- package/dist/types/hindsight/mental-models.d.ts +17 -8
- package/dist/types/hindsight/transcript.d.ts +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
- package/dist/types/internal-urls/history-protocol.d.ts +14 -0
- package/dist/types/internal-urls/index.d.ts +1 -0
- package/dist/types/internal-urls/local-protocol.d.ts +14 -2
- package/dist/types/internal-urls/types.d.ts +1 -1
- package/dist/types/irc/bus.d.ts +79 -0
- package/dist/types/lib/xai-http.d.ts +1 -1
- package/dist/types/lsp/client.d.ts +10 -0
- package/dist/types/lsp/config.d.ts +2 -2
- package/dist/types/lsp/edits.d.ts +9 -0
- package/dist/types/lsp/format-options.d.ts +32 -0
- package/dist/types/lsp/index.d.ts +2 -7
- package/dist/types/lsp/types.d.ts +13 -1
- package/dist/types/lsp/utils.d.ts +6 -2
- package/dist/types/main.d.ts +23 -8
- package/dist/types/mcp/json-rpc.d.ts +5 -0
- package/dist/types/mcp/manager.d.ts +8 -0
- package/dist/types/mcp/oauth-discovery.d.ts +6 -1
- package/dist/types/mcp/oauth-flow.d.ts +13 -3
- package/dist/types/mcp/startup-events.d.ts +11 -0
- package/dist/types/mcp/tool-bridge.d.ts +2 -0
- package/dist/types/mcp/transports/stdio.d.ts +13 -0
- package/dist/types/mcp/types.d.ts +2 -0
- package/dist/types/memories/index.d.ts +7 -15
- package/dist/types/memories/storage.d.ts +0 -10
- package/dist/types/memory-backend/index.d.ts +3 -1
- package/dist/types/memory-backend/local-backend.d.ts +4 -3
- package/dist/types/memory-backend/resolve.d.ts +2 -2
- package/dist/types/memory-backend/runtime.d.ts +4 -0
- package/dist/types/memory-backend/types.d.ts +67 -2
- package/dist/types/mnemopi/config.d.ts +31 -1
- package/dist/types/mnemopi/state.d.ts +40 -2
- package/dist/types/modes/acp/acp-agent.d.ts +1 -2
- package/dist/types/modes/components/agent-dashboard.d.ts +17 -1
- package/dist/types/modes/components/agent-hub.d.ts +82 -0
- package/dist/types/modes/components/assistant-message.d.ts +5 -12
- package/dist/types/modes/components/bash-execution.d.ts +1 -1
- package/dist/types/modes/components/chat-block.d.ts +64 -0
- package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +25 -5
- package/dist/types/modes/components/copy-selector.d.ts +1 -1
- package/dist/types/modes/components/custom-editor.d.ts +49 -2
- package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
- package/dist/types/modes/components/dynamic-border.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +1 -1
- package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
- package/dist/types/modes/components/footer.d.ts +1 -1
- package/dist/types/modes/components/hook-editor.d.ts +5 -0
- package/dist/types/modes/components/hook-input.d.ts +4 -0
- package/dist/types/modes/components/hook-selector.d.ts +5 -7
- package/dist/types/modes/components/index.d.ts +1 -0
- package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
- package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
- package/dist/types/modes/components/mcp-add-wizard.d.ts +2 -1
- package/dist/types/modes/components/model-selector.d.ts +1 -1
- package/dist/types/modes/components/oauth-selector.d.ts +10 -1
- package/dist/types/modes/components/overlay-box.d.ts +17 -0
- package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
- package/dist/types/modes/components/plan-toc.d.ts +41 -0
- package/dist/types/modes/components/read-tool-group.d.ts +8 -0
- package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
- package/dist/types/modes/components/segment-track.d.ts +11 -6
- package/dist/types/modes/components/session-selector.d.ts +18 -9
- package/dist/types/modes/components/settings-defs.d.ts +9 -2
- package/dist/types/modes/components/settings-selector.d.ts +17 -4
- package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
- package/dist/types/modes/components/status-line/component.d.ts +61 -0
- package/dist/types/modes/components/status-line/index.d.ts +1 -0
- package/dist/types/modes/components/status-line/types.d.ts +47 -3
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +49 -2
- package/dist/types/modes/components/transcript-container.d.ts +76 -26
- package/dist/types/modes/components/tree-selector.d.ts +2 -2
- package/dist/types/modes/components/ttsr-notification.d.ts +5 -1
- package/dist/types/modes/components/usage-row.d.ts +3 -0
- package/dist/types/modes/components/user-message-selector.d.ts +1 -1
- package/dist/types/modes/components/user-message.d.ts +2 -1
- package/dist/types/modes/components/visual-truncate.d.ts +1 -1
- package/dist/types/modes/components/welcome.d.ts +12 -2
- package/dist/types/modes/controllers/command-controller.d.ts +3 -2
- package/dist/types/modes/controllers/event-controller.d.ts +7 -1
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -1
- package/dist/types/modes/controllers/input-controller.d.ts +25 -3
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +8 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +5 -2
- package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
- package/dist/types/modes/controllers/streaming-reveal.d.ts +22 -0
- package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
- package/dist/types/modes/controllers/tool-args-reveal.d.ts +43 -0
- package/dist/types/modes/gradient-highlight.d.ts +9 -4
- package/dist/types/modes/image-references.d.ts +14 -3
- package/dist/types/modes/index.d.ts +8 -7
- package/dist/types/modes/interactive-mode.d.ts +92 -16
- package/dist/types/modes/magic-keywords.d.ts +14 -2
- package/dist/types/modes/markdown-prose.d.ts +1 -1
- package/dist/types/modes/oauth-manual-input.d.ts +7 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +48 -2
- package/dist/types/modes/rpc/rpc-mode.d.ts +67 -2
- package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +113 -1
- package/dist/types/modes/runtime-init.d.ts +4 -0
- package/dist/types/modes/session-observer-registry.d.ts +9 -0
- package/dist/types/modes/setup-version.d.ts +11 -0
- package/dist/types/modes/setup-wizard/index.d.ts +7 -2
- package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +4 -1
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +11 -2
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +6 -2
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +42 -7
- package/dist/types/modes/types.d.ts +62 -13
- package/dist/types/modes/utils/context-usage.d.ts +6 -1
- package/dist/types/modes/utils/copy-targets.d.ts +21 -1
- package/dist/types/modes/utils/ui-helpers.d.ts +4 -4
- package/dist/types/modes/workflow.d.ts +3 -3
- package/dist/types/plan-mode/approved-plan.d.ts +27 -8
- package/dist/types/plan-mode/plan-protection.d.ts +4 -4
- package/dist/types/registry/agent-lifecycle.d.ts +51 -0
- package/dist/types/registry/agent-registry.d.ts +33 -5
- package/dist/types/sdk.d.ts +46 -4
- package/dist/types/secrets/index.d.ts +1 -1
- package/dist/types/secrets/obfuscator.d.ts +9 -3
- package/dist/types/session/agent-session.d.ts +136 -66
- package/dist/types/session/agent-storage.d.ts +2 -1
- package/dist/types/session/auth-broker-config.d.ts +4 -0
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/codex-auto-reset.d.ts +111 -0
- package/dist/types/session/indexed-session-storage.d.ts +3 -3
- package/dist/types/session/messages.d.ts +26 -15
- package/dist/types/session/session-context.d.ts +39 -0
- package/dist/types/session/session-entries.d.ts +159 -0
- package/dist/types/session/session-history-format.d.ts +12 -0
- package/dist/types/session/session-listing.d.ts +69 -0
- package/dist/types/session/session-loader.d.ts +16 -0
- package/dist/types/session/session-manager.d.ts +107 -440
- package/dist/types/session/session-migrations.d.ts +12 -0
- package/dist/types/session/session-paths.d.ts +25 -0
- package/dist/types/session/session-persistence.d.ts +8 -0
- package/dist/types/session/session-storage.d.ts +11 -7
- package/dist/types/session/snapcompact-inline.d.ts +145 -0
- package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
- package/dist/types/session/streaming-output.d.ts +46 -0
- package/dist/types/session/tool-choice-queue.d.ts +6 -6
- package/dist/types/session/yield-queue.d.ts +10 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
- package/dist/types/slash-commands/available-commands.d.ts +34 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +10 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
- package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
- package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
- package/dist/types/slash-commands/types.d.ts +5 -9
- package/dist/types/ssh/connection-manager.d.ts +8 -0
- package/dist/types/stt/asr-client.d.ts +90 -0
- package/dist/types/stt/asr-protocol.d.ts +97 -0
- package/dist/types/stt/asr-worker.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +38 -0
- package/dist/types/stt/endpointer.d.ts +59 -0
- package/dist/types/stt/index.d.ts +5 -1
- package/dist/types/stt/models.d.ts +120 -0
- package/dist/types/stt/recorder.d.ts +17 -0
- package/dist/types/stt/stt-controller.d.ts +6 -0
- package/dist/types/stt/transcriber.d.ts +5 -7
- package/dist/types/stt/wav.d.ts +29 -0
- package/dist/types/system-prompt.d.ts +9 -1
- package/dist/types/task/commands.d.ts +1 -1
- package/dist/types/task/discovery.d.ts +1 -2
- package/dist/types/task/executor.d.ts +61 -2
- package/dist/types/task/index.d.ts +37 -6
- package/dist/types/task/output-manager.d.ts +0 -7
- package/dist/types/task/parallel.d.ts +2 -2
- package/dist/types/task/prometheus-command.d.ts +2 -2
- package/dist/types/task/render.d.ts +20 -7
- package/dist/types/task/repair-args.d.ts +8 -7
- package/dist/types/task/types.d.ts +109 -52
- package/dist/types/task/worktree.d.ts +2 -0
- package/dist/types/telemetry-export.d.ts +2 -2
- package/dist/types/thinking.d.ts +4 -0
- package/dist/types/tiny/models.d.ts +1 -1
- package/dist/types/tiny/title-client.d.ts +12 -1
- package/dist/types/tiny/title-protocol.d.ts +1 -0
- package/dist/types/tools/archive-reader.d.ts +5 -0
- package/dist/types/tools/ask.d.ts +6 -1
- package/dist/types/tools/ast-edit.d.ts +4 -1
- package/dist/types/tools/ast-grep.d.ts +4 -1
- package/dist/types/tools/bash.d.ts +5 -2
- package/dist/types/tools/browser/attach.d.ts +4 -4
- package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
- package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
- package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
- package/dist/types/tools/browser/registry.d.ts +17 -3
- package/dist/types/tools/browser/render.d.ts +2 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
- package/dist/types/tools/browser/tab-worker.d.ts +18 -1
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/checkpoint.d.ts +1 -1
- package/dist/types/tools/conflict-detect.d.ts +16 -0
- package/dist/types/tools/debug.d.ts +1 -1
- package/dist/types/tools/eval-render.d.ts +1 -8
- package/dist/types/tools/eval.d.ts +9 -1
- package/dist/types/tools/fetch.d.ts +17 -8
- package/dist/types/tools/find.d.ts +1 -8
- package/dist/types/tools/gh-cache-invalidation.d.ts +6 -0
- package/dist/types/tools/gh.d.ts +4 -1
- package/dist/types/tools/github-cache.d.ts +19 -0
- package/dist/types/tools/grouped-file-output.d.ts +46 -12
- package/dist/types/tools/image-gen.d.ts +1 -1
- package/dist/types/tools/index.d.ts +89 -8
- package/dist/types/tools/inspect-image.d.ts +1 -1
- package/dist/types/tools/irc.d.ts +79 -39
- package/dist/types/tools/job.d.ts +8 -2
- package/dist/types/tools/learn.d.ts +51 -0
- package/dist/types/tools/manage-skill.d.ts +40 -0
- package/dist/types/tools/memory-edit.d.ts +2 -2
- package/dist/types/tools/memory-recall.d.ts +1 -1
- package/dist/types/tools/memory-reflect.d.ts +1 -1
- package/dist/types/tools/memory-render.d.ts +4 -1
- package/dist/types/tools/memory-retain.d.ts +1 -1
- package/dist/types/tools/path-utils.d.ts +17 -5
- package/dist/types/tools/plan-mode-guard.d.ts +18 -9
- package/dist/types/tools/read.d.ts +3 -2
- package/dist/types/tools/render-mermaid.d.ts +1 -1
- package/dist/types/tools/render-utils.d.ts +47 -27
- package/dist/types/tools/renderers.d.ts +10 -2
- package/dist/types/tools/report-tool-issue.d.ts +6 -1
- package/dist/types/tools/resolve.d.ts +1 -1
- package/dist/types/tools/review.d.ts +1 -1
- package/dist/types/tools/search-tool-bm25.d.ts +1 -1
- package/dist/types/tools/search.d.ts +7 -3
- package/dist/types/tools/sqlite-reader.d.ts +4 -0
- package/dist/types/tools/ssh.d.ts +2 -1
- package/dist/types/tools/todo.d.ts +7 -15
- package/dist/types/tools/tool-result.d.ts +2 -0
- package/dist/types/tools/tool-timeouts.d.ts +1 -1
- package/dist/types/tools/tts.d.ts +26 -1
- package/dist/types/tools/write.d.ts +6 -3
- package/dist/types/tools/yield.d.ts +8 -0
- package/dist/types/tts/downloader.d.ts +20 -0
- package/dist/types/tts/index.d.ts +8 -0
- package/dist/types/tts/models.d.ts +82 -0
- package/dist/types/tts/player.d.ts +32 -0
- package/dist/types/tts/runtime.d.ts +6 -0
- package/dist/types/tts/streaming-player.d.ts +41 -0
- package/dist/types/tts/tts-client.d.ts +93 -0
- package/dist/types/tts/tts-protocol.d.ts +95 -0
- package/dist/types/tts/tts-worker.d.ts +2 -0
- package/dist/types/tts/vocalizer.d.ts +41 -0
- package/dist/types/tts/wav.d.ts +8 -0
- package/dist/types/tui/code-cell.d.ts +0 -2
- package/dist/types/tui/hyperlink.d.ts +13 -7
- package/dist/types/tui/output-block.d.ts +16 -22
- package/dist/types/tui/status-line.d.ts +3 -0
- package/dist/types/utils/block-context.d.ts +35 -0
- package/dist/types/utils/changelog.d.ts +8 -0
- package/dist/types/utils/clipboard.d.ts +4 -3
- package/dist/types/utils/enhanced-paste.d.ts +20 -0
- package/dist/types/utils/file-mentions.d.ts +7 -0
- package/dist/types/utils/git.d.ts +22 -3
- package/dist/types/utils/image-loading.d.ts +30 -1
- package/dist/types/utils/session-color.d.ts +15 -3
- package/dist/types/utils/thinking-display.d.ts +17 -0
- package/dist/types/utils/title-generator.d.ts +3 -2
- package/dist/types/utils/tool-choice.d.ts +8 -0
- package/dist/types/utils/tools-manager.d.ts +2 -1
- package/dist/types/web/kagi.d.ts +2 -2
- package/dist/types/web/parallel.d.ts +3 -0
- package/dist/types/web/scrapers/github.d.ts +22 -0
- package/dist/types/web/scrapers/readthedocs.d.ts +3 -0
- package/dist/types/web/scrapers/types.d.ts +12 -0
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/providers/anthropic.d.ts +2 -1
- package/dist/types/web/search/providers/base.d.ts +2 -1
- package/dist/types/web/search/providers/brave.d.ts +2 -1
- package/dist/types/web/search/providers/codex.d.ts +2 -1
- package/dist/types/web/search/providers/exa.d.ts +2 -1
- package/dist/types/web/search/providers/gemini.d.ts +10 -6
- package/dist/types/web/search/providers/jina.d.ts +7 -2
- package/dist/types/web/search/providers/kagi.d.ts +7 -2
- package/dist/types/web/search/providers/kimi.d.ts +7 -2
- package/dist/types/web/search/providers/parallel.d.ts +2 -1
- package/dist/types/web/search/providers/perplexity.d.ts +10 -2
- package/dist/types/web/search/providers/searxng.d.ts +2 -1
- package/dist/types/web/search/providers/synthetic.d.ts +7 -3
- package/dist/types/web/search/providers/tavily.d.ts +2 -1
- package/dist/types/web/search/providers/zai.d.ts +2 -1
- package/dist/types/web/search/types.d.ts +1 -1
- package/examples/extensions/api-demo.ts +2 -2
- package/package.json +41 -15
- package/scripts/bench-guard.ts +71 -0
- package/scripts/build-binary.ts +24 -25
- package/scripts/bundle-dist.ts +97 -0
- package/scripts/generate-share-viewer.ts +34 -0
- package/scripts/prometheus +42 -0
- package/scripts/prometheus.ts +20 -0
- package/src/async/index.ts +0 -1
- package/src/async/job-manager.ts +106 -3
- package/src/auto-thinking/classifier.ts +2 -1
- package/src/autolearn/controller.ts +139 -0
- package/src/autolearn/managed-skills.ts +257 -0
- package/src/autoresearch/dashboard.ts +1 -1
- package/src/autoresearch/prompt-setup.md +6 -6
- package/src/autoresearch/prompt.md +6 -6
- package/src/autoresearch/state.ts +1 -1
- package/src/autoresearch/storage.ts +2 -1
- package/src/autoresearch/tools/init-experiment.ts +1 -1
- package/src/autoresearch/tools/log-experiment.ts +1 -1
- package/src/autoresearch/tools/run-experiment.ts +1 -1
- package/src/autoresearch/tools/update-notes.ts +1 -1
- package/src/autoresearch/types.ts +1 -1
- package/src/capability/context-file.ts +0 -14
- package/src/capability/fs.ts +10 -0
- package/src/capability/index.ts +1 -6
- package/src/capability/mcp.ts +1 -0
- package/src/capability/rule-buckets.ts +4 -2
- package/src/capability/rule.ts +10 -1
- package/src/capability/types.ts +0 -4
- package/src/cli/args.ts +66 -13
- package/src/cli/auth-broker-cli.ts +6 -7
- package/src/cli/auth-gateway-cli.ts +8 -9
- package/src/cli/bench-cli.ts +437 -0
- package/src/cli/claude-trace-cli.ts +28 -50
- package/src/cli/completion-gen.ts +28 -28
- package/src/cli/dry-balance-cli.ts +56 -23
- 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/gateway-cli.ts +32 -2
- package/src/cli/grievances-cli.ts +1 -1
- package/src/cli/list-models.ts +16 -174
- package/src/cli/models-cli.ts +429 -0
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +148 -47
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli/startup-cwd.ts +68 -0
- package/src/cli/update-cli.ts +144 -272
- package/src/cli/usage-cli.ts +774 -0
- package/src/cli-commands.ts +36 -0
- package/src/cli.ts +141 -32
- package/src/collab/crypto.ts +63 -0
- package/src/collab/guest.ts +451 -0
- package/src/collab/host.ts +565 -0
- package/src/collab/protocol.ts +241 -0
- package/src/collab/relay-client.ts +216 -0
- package/src/commands/bench.ts +42 -0
- package/src/commands/complete.ts +1 -1
- package/src/commands/gallery.ts +52 -0
- package/src/commands/gateway.ts +4 -0
- package/src/commands/install.ts +1 -1
- package/src/commands/join.ts +39 -0
- package/src/commands/launch.ts +8 -4
- package/src/commands/models.ts +61 -0
- package/src/commands/read.ts +6 -3
- package/src/commands/say.ts +102 -0
- package/src/commands/setup.ts +1 -1
- package/src/commands/token.ts +89 -0
- package/src/commands/usage.ts +43 -0
- package/src/commit/agentic/agent.ts +2 -1
- package/src/commit/agentic/tools/analyze-file.ts +42 -20
- package/src/commit/agentic/tools/git-file-diff.ts +1 -1
- package/src/commit/agentic/tools/git-hunk.ts +1 -1
- package/src/commit/agentic/tools/git-overview.ts +1 -1
- package/src/commit/agentic/tools/propose-changelog.ts +1 -1
- package/src/commit/agentic/tools/propose-commit.ts +1 -1
- package/src/commit/agentic/tools/recent-commits.ts +1 -1
- package/src/commit/agentic/tools/schemas.ts +1 -1
- package/src/commit/agentic/tools/split-commit.ts +9 -2
- package/src/commit/analysis/conventional.ts +2 -2
- package/src/commit/analysis/summary.ts +3 -3
- package/src/commit/changelog/generate.ts +3 -3
- package/src/commit/changelog/index.ts +2 -2
- package/src/commit/map-reduce/index.ts +3 -3
- package/src/commit/map-reduce/map-phase.ts +2 -2
- package/src/commit/map-reduce/reduce-phase.ts +2 -2
- package/src/commit/model-selection.ts +35 -12
- package/src/commit/pipeline.ts +4 -4
- package/src/commit/shared-llm.ts +1 -1
- package/src/config/api-key-resolver.ts +67 -0
- package/src/config/append-only-context-mode.ts +6 -12
- package/src/config/keybindings.ts +9 -4
- package/src/config/mcp-schema.json +4 -0
- package/src/config/model-discovery.ts +574 -0
- package/src/config/model-equivalence.ts +5 -4
- package/src/config/model-registry.ts +659 -1093
- package/src/config/model-resolver.ts +374 -174
- package/src/config/model-roles.ts +88 -0
- package/src/config/models-config-schema.ts +61 -9
- package/src/config/models-config.ts +130 -0
- package/src/config/settings-schema.ts +1445 -382
- package/src/config/settings.ts +261 -69
- package/src/dap/client.ts +138 -53
- package/src/dap/config.ts +41 -2
- package/src/dap/defaults.json +1 -0
- package/src/dap/session.ts +263 -161
- package/src/dap/types.ts +10 -0
- package/src/debug/index.ts +50 -60
- package/src/debug/log-viewer.ts +1 -1
- package/src/debug/protocol-probe.ts +1 -1
- package/src/debug/raw-sse-buffer.ts +7 -4
- package/src/debug/raw-sse.ts +1 -1
- package/src/debug/report-bundle.ts +9 -0
- package/src/debug/terminal-info.ts +0 -3
- package/src/discovery/agents-md.ts +25 -21
- package/src/discovery/agents.ts +9 -15
- package/src/discovery/at-imports.ts +273 -0
- package/src/discovery/builtin-rules/index.ts +4 -0
- package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
- package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
- package/src/discovery/builtin.ts +45 -23
- package/src/discovery/claude-plugins.ts +44 -5
- package/src/discovery/helpers.ts +50 -9
- package/src/discovery/prometheus-extension-roots.ts +10 -10
- package/src/discovery/prometheus-plugins.ts +10 -10
- package/src/edit/diff.ts +191 -4
- package/src/edit/file-snapshot-store.ts +34 -1
- package/src/edit/hashline/block-resolver.ts +20 -1
- package/src/edit/hashline/diff.ts +123 -2
- package/src/edit/hashline/execute.ts +60 -4
- package/src/edit/hashline/filesystem.ts +2 -1
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/hashline/params.ts +1 -1
- package/src/edit/index.ts +47 -18
- package/src/edit/modes/apply-patch.ts +1 -1
- package/src/edit/modes/patch.ts +59 -3
- package/src/edit/modes/replace.ts +58 -24
- package/src/edit/notebook.ts +22 -2
- package/src/edit/renderer.ts +315 -151
- package/src/eval/__tests__/agent-bridge.test.ts +105 -39
- package/src/eval/__tests__/budget-bridge.test.ts +1 -1
- 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__/js-context-manager.test.ts +241 -0
- package/src/eval/__tests__/llm-bridge.test.ts +6 -4
- package/src/eval/__tests__/shared-executors.test.ts +34 -92
- package/src/eval/agent-bridge.ts +39 -23
- package/src/eval/backend.ts +15 -2
- package/src/eval/bridge-timeout.ts +1 -1
- package/src/eval/completion-bridge.ts +203 -0
- package/src/eval/idle-timeout.ts +3 -10
- package/src/eval/js/context-manager.ts +108 -31
- package/src/eval/js/executor.ts +9 -2
- package/src/eval/js/index.ts +7 -3
- package/src/eval/js/shared/helpers.ts +59 -13
- package/src/eval/js/shared/local-module-loader.ts +2 -2
- package/src/eval/js/shared/prelude.txt +167 -30
- package/src/eval/js/shared/rewrite-imports.ts +58 -34
- package/src/eval/js/shared/runtime.ts +24 -16
- package/src/eval/js/tool-bridge.ts +4 -0
- package/src/eval/js/worker-core.ts +1 -0
- package/src/eval/js/worker-entry.ts +6 -0
- package/src/eval/js/worker-protocol.ts +6 -0
- package/src/eval/llm-bridge.ts +2 -1
- package/src/eval/py/__tests__/prelude.test.ts +19 -0
- package/src/eval/py/executor.ts +70 -26
- package/src/eval/py/index.ts +13 -4
- package/src/eval/py/kernel.ts +48 -9
- package/src/eval/py/prelude.py +73 -24
- package/src/eval/py/runner.py +133 -28
- package/src/eval/py/runtime.ts +38 -1
- package/src/exa/index.ts +1 -26
- package/src/exa/mcp-client.ts +10 -10
- package/src/exa/types.ts +0 -97
- package/src/exec/bash-executor.ts +104 -7
- package/src/export/custom-share.ts +1 -1
- package/src/export/html/index.ts +119 -17
- package/src/export/html/share-loader.js +102 -0
- package/src/export/html/template-js.ts +6 -0
- package/src/export/html/template.css +745 -459
- package/src/export/html/template.css.d.ts +2 -0
- package/src/export/html/template.html +6 -3
- package/src/export/html/template.js +277 -891
- package/src/export/html/tool-views.generated.d.ts +2 -0
- package/src/export/html/tool-views.generated.js +38 -0
- package/src/export/share.ts +269 -0
- package/src/export/ttsr.ts +122 -1
- package/src/extensibility/custom-commands/loader.ts +7 -4
- package/src/extensibility/custom-commands/types.ts +9 -4
- package/src/extensibility/custom-tools/loader.ts +51 -23
- package/src/extensibility/custom-tools/types.ts +16 -8
- package/src/extensibility/extensions/get-commands-handler.ts +2 -1
- package/src/extensibility/extensions/index.ts +1 -0
- package/src/extensibility/extensions/loader.ts +70 -20
- package/src/extensibility/extensions/model-api.ts +41 -0
- package/src/extensibility/extensions/runner.ts +12 -2
- package/src/extensibility/extensions/types.ts +83 -11
- package/src/extensibility/extensions/wrapper.ts +41 -5
- package/src/extensibility/hooks/index.ts +2 -1
- package/src/extensibility/hooks/loader.ts +6 -3
- package/src/extensibility/hooks/types.ts +11 -5
- package/src/extensibility/{legacy-pi-ai-shim.ts → legacy-package-ai-shim.ts} +2 -2
- package/src/extensibility/plugins/doctor.ts +1 -2
- package/src/extensibility/plugins/installer.ts +2 -2
- package/src/extensibility/plugins/{legacy-pi-compat.ts → legacy-package-compat.ts} +165 -77
- package/src/extensibility/plugins/loader.ts +34 -23
- package/src/extensibility/plugins/manager.ts +226 -95
- package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
- package/src/extensibility/plugins/types.ts +3 -3
- package/src/extensibility/shared-events.ts +3 -3
- package/src/extensibility/skills.ts +113 -9
- package/src/extensibility/slash-commands.ts +1 -97
- package/src/gateway/adapters/telegram/access.ts +39 -4
- package/src/gateway/adapters/telegram/normalize.ts +16 -1
- package/src/gateway/adapters/telegram/setup-api.ts +7 -1
- package/src/gateway/adapters/telegram/webhook.ts +26 -5
- package/src/gateway/context.ts +9 -1
- package/src/gateway/types.ts +1 -1
- package/src/goals/guided-setup.ts +133 -0
- package/src/goals/state.ts +1 -1
- package/src/goals/tools/goal-tool.ts +38 -28
- package/src/hindsight/bank.ts +17 -2
- package/src/hindsight/client.ts +27 -2
- package/src/hindsight/mental-models.ts +59 -12
- package/src/hindsight/state.ts +12 -3
- package/src/hindsight/transcript.ts +1 -1
- package/src/index.ts +5 -0
- package/src/internal-urls/artifact-protocol.ts +11 -2
- package/src/internal-urls/docs-index.generated.ts +11 -9
- package/src/internal-urls/history-protocol.ts +113 -0
- package/src/internal-urls/index.ts +1 -0
- package/src/internal-urls/issue-pr-protocol.ts +22 -9
- package/src/internal-urls/local-protocol.ts +42 -7
- package/src/internal-urls/memory-protocol.ts +4 -31
- package/src/internal-urls/router.ts +3 -1
- package/src/internal-urls/types.ts +1 -1
- package/src/irc/bus.ts +303 -0
- package/src/lib/xai-http.ts +3 -3
- package/src/lsp/client.ts +245 -104
- package/src/lsp/clients/biome-client.ts +101 -39
- package/src/lsp/clients/lsp-linter-client.ts +2 -10
- package/src/lsp/config.ts +15 -5
- package/src/lsp/defaults.json +6 -0
- package/src/lsp/edits.ts +143 -95
- package/src/lsp/format-options.ts +119 -0
- package/src/lsp/index.ts +233 -93
- package/src/lsp/render.ts +11 -35
- package/src/lsp/types.ts +13 -1
- package/src/lsp/utils.ts +31 -12
- package/src/main.ts +396 -216
- package/src/mcp/config-writer.ts +7 -3
- package/src/mcp/json-rpc.ts +35 -5
- package/src/mcp/manager.ts +31 -16
- package/src/mcp/oauth-discovery.ts +34 -4
- package/src/mcp/oauth-flow.ts +61 -8
- package/src/mcp/render.ts +7 -1
- package/src/mcp/startup-events.ts +21 -0
- package/src/mcp/tool-bridge.ts +2 -0
- package/src/mcp/transports/stdio.ts +224 -4
- package/src/mcp/types.ts +2 -0
- package/src/memories/index.ts +174 -1128
- package/src/memories/storage.ts +2 -41
- package/src/memory-backend/index.ts +14 -1
- package/src/memory-backend/local-backend.ts +18 -3
- package/src/memory-backend/off-backend.ts +9 -0
- package/src/memory-backend/resolve.ts +4 -6
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +82 -2
- package/src/mnemopi/backend.ts +220 -28
- package/src/mnemopi/config.ts +138 -33
- package/src/mnemopi/state.ts +91 -11
- package/src/modes/acp/acp-agent.ts +149 -142
- package/src/modes/acp/acp-event-mapper.ts +5 -1
- package/src/modes/components/agent-dashboard.ts +17 -11
- package/src/modes/components/agent-hub.ts +1346 -0
- package/src/modes/components/assistant-message.ts +190 -80
- package/src/modes/components/bash-execution.ts +1 -1
- package/src/modes/components/btw-panel.ts +5 -1
- package/src/modes/components/chat-block.ts +111 -0
- package/src/modes/components/collab-prompt-message.ts +30 -0
- package/src/modes/components/compaction-summary-message.ts +168 -33
- package/src/modes/components/copy-selector.ts +2 -45
- package/src/modes/components/custom-editor.test.ts +96 -0
- package/src/modes/components/custom-editor.ts +405 -118
- package/src/modes/components/custom-message.ts +1 -3
- package/src/modes/components/diff.ts +13 -2
- package/src/modes/components/dynamic-border.ts +12 -3
- package/src/modes/components/execution-shared.ts +1 -2
- package/src/modes/components/extensions/extension-dashboard.ts +8 -5
- package/src/modes/components/extensions/extension-list.ts +1 -1
- package/src/modes/components/extensions/inspector-panel.ts +7 -3
- package/src/modes/components/extensions/state-manager.ts +36 -41
- package/src/modes/components/footer.ts +4 -2
- package/src/modes/components/history-search.ts +1 -1
- package/src/modes/components/hook-editor.ts +8 -0
- package/src/modes/components/hook-input.ts +8 -0
- package/src/modes/components/hook-message.ts +1 -3
- package/src/modes/components/hook-selector.ts +6 -7
- package/src/modes/components/index.ts +1 -0
- package/src/modes/components/late-diagnostics-message.ts +60 -0
- package/src/modes/components/login-dialog.ts +1 -1
- package/src/modes/components/logout-account-selector.ts +130 -0
- package/src/modes/components/mcp-add-wizard.ts +14 -1
- package/src/modes/components/model-selector.ts +177 -75
- package/src/modes/components/oauth-selector.ts +102 -16
- package/src/modes/components/overlay-box.ts +108 -0
- package/src/modes/components/plan-review-overlay.ts +845 -0
- package/src/modes/components/plan-toc.ts +138 -0
- package/src/modes/components/plugin-settings.ts +22 -5
- package/src/modes/components/read-tool-group.ts +442 -39
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/segment-track.ts +44 -7
- package/src/modes/components/session-selector.ts +97 -37
- package/src/modes/components/settings-defs.ts +28 -6
- package/src/modes/components/settings-selector.ts +541 -93
- package/src/modes/components/skill-message.ts +0 -1
- package/src/modes/components/snapcompact-shape-preview-doc.md +11 -0
- package/src/modes/components/snapcompact-shape-preview.ts +193 -0
- package/src/modes/components/{status-line.ts → status-line/component.ts} +205 -168
- package/src/modes/components/status-line/index.ts +1 -0
- package/src/modes/components/status-line/presets.ts +3 -3
- package/src/modes/components/status-line/segments.ts +26 -7
- package/src/modes/components/status-line/types.ts +40 -9
- package/src/modes/components/tiny-title-download-progress.ts +1 -1
- package/src/modes/components/tips.txt +7 -3
- package/src/modes/components/todo-reminder.ts +0 -2
- package/src/modes/components/tool-execution.ts +236 -103
- package/src/modes/components/transcript-container.ts +724 -99
- package/src/modes/components/tree-selector.ts +19 -4
- package/src/modes/components/ttsr-notification.ts +72 -30
- package/src/modes/components/usage-row.ts +18 -0
- package/src/modes/components/user-message-selector.ts +1 -1
- package/src/modes/components/user-message.ts +28 -12
- package/src/modes/components/visual-truncate.ts +1 -1
- package/src/modes/components/welcome.ts +80 -22
- package/src/modes/controllers/command-controller-shared.ts +7 -6
- package/src/modes/controllers/command-controller.ts +210 -180
- package/src/modes/controllers/event-controller.ts +352 -142
- package/src/modes/controllers/extension-ui-controller.ts +167 -208
- package/src/modes/controllers/input-controller.ts +778 -162
- package/src/modes/controllers/mcp-command-controller.ts +232 -80
- package/src/modes/controllers/selector-controller.ts +284 -145
- package/src/modes/controllers/session-focus-controller.ts +112 -0
- package/src/modes/controllers/ssh-command-controller.ts +2 -2
- package/src/modes/controllers/streaming-reveal.ts +295 -0
- package/src/modes/controllers/tan-command-controller.ts +173 -0
- package/src/modes/controllers/tool-args-reveal.ts +174 -0
- package/src/modes/gradient-highlight.ts +21 -9
- package/src/modes/image-references.ts +33 -7
- package/src/modes/index.ts +8 -25
- package/src/modes/interactive-mode.ts +840 -186
- package/src/modes/magic-keywords.ts +28 -6
- package/src/modes/markdown-prose.ts +1 -1
- package/src/modes/oauth-manual-input.ts +30 -3
- package/src/modes/rpc/rpc-client.ts +186 -3
- package/src/modes/rpc/rpc-mode.ts +318 -24
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +111 -2
- package/src/modes/runtime-init.ts +28 -3
- package/src/modes/session-observer-registry.ts +72 -3
- package/src/modes/setup-version.ts +11 -0
- package/src/modes/setup-wizard/index.ts +16 -4
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +25 -7
- package/src/modes/setup-wizard/scenes/providers.ts +45 -12
- package/src/modes/setup-wizard/scenes/sign-in.ts +14 -13
- package/src/modes/setup-wizard/scenes/splash.ts +1 -1
- package/src/modes/setup-wizard/scenes/telegram.ts +77 -22
- package/src/modes/setup-wizard/scenes/theme.ts +29 -2
- package/src/modes/setup-wizard/scenes/types.ts +11 -2
- package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
- package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/defaults/dark-poimandres.json +1 -1
- package/src/modes/theme/defaults/light-poimandres.json +1 -1
- package/src/modes/theme/shimmer.ts +20 -9
- package/src/modes/theme/theme-schema.json +1 -1
- package/src/modes/theme/theme.ts +342 -82
- package/src/modes/types.ts +60 -18
- package/src/modes/utils/context-usage.ts +88 -8
- package/src/modes/utils/copy-targets.ts +133 -27
- package/src/modes/utils/hotkeys-markdown.ts +3 -2
- package/src/modes/utils/ui-helpers.ts +191 -110
- package/src/modes/workflow.ts +10 -10
- package/src/plan-mode/approved-plan.ts +66 -43
- package/src/plan-mode/plan-protection.ts +4 -4
- package/src/priority.json +5 -1
- package/src/prompts/agents/designer.md +1 -1
- package/src/prompts/agents/explore.md +3 -3
- package/src/prompts/agents/librarian.md +2 -3
- package/src/prompts/agents/oracle.md +2 -2
- package/src/prompts/agents/plan.md +6 -6
- package/src/prompts/agents/reviewer.md +1 -1
- package/src/prompts/agents/task.md +6 -5
- package/src/prompts/bench.md +12 -0
- package/src/prompts/ci-green-request.md +5 -7
- package/src/prompts/goals/goal-budget-limit.md +2 -2
- package/src/prompts/goals/goal-continuation.md +4 -4
- package/src/prompts/goals/goal-mode-active.md +1 -1
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/consolidation.md +2 -7
- package/src/prompts/memories/consolidation_system.md +4 -0
- package/src/prompts/memories/identity_review.md +2 -2
- package/src/prompts/memories/read-path.md +11 -10
- package/src/prompts/memories/stage_one_system.md +2 -2
- package/src/prompts/review-custom-request.md +1 -1
- package/src/prompts/system/agent-creation-architect.md +2 -2
- package/src/prompts/system/auto-continue.md +1 -1
- 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 +2 -2
- package/src/prompts/system/commit-message-system.md +13 -1
- package/src/prompts/system/custom-system-prompt.md +1 -1
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +11 -6
- package/src/prompts/system/empty-stop-retry.md +4 -6
- package/src/prompts/system/irc-autoreply.md +6 -0
- package/src/prompts/system/irc-incoming.md +3 -4
- package/src/prompts/system/manual-continue.md +7 -0
- package/src/prompts/system/omfg-user.md +3 -4
- package/src/prompts/system/orchestrate-notice.md +10 -10
- package/src/prompts/system/personalities/default.md +26 -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 +70 -77
- package/src/prompts/system/plan-mode-approved.md +1 -1
- package/src/prompts/system/plan-mode-subagent.md +4 -5
- package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
- package/src/prompts/system/project-prompt.md +2 -2
- 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 +7 -8
- package/src/prompts/system/system-prompt.md +28 -57
- package/src/prompts/system/tiny-title-system.md +1 -1
- 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 -3
- package/src/prompts/system/ttsr-tool-reminder.md +1 -1
- package/src/prompts/system/workflow-notice.md +4 -4
- package/src/prompts/tools/ast-edit.md +1 -1
- package/src/prompts/tools/ast-grep.md +2 -2
- package/src/prompts/tools/bash.md +16 -8
- package/src/prompts/tools/browser.md +33 -43
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/eval.md +31 -51
- package/src/prompts/tools/find.md +0 -1
- package/src/prompts/tools/github.md +8 -7
- package/src/prompts/tools/goal.md +1 -1
- package/src/prompts/tools/image-gen.md +1 -1
- package/src/prompts/tools/inspect-image-system.md +1 -1
- package/src/prompts/tools/irc.md +39 -31
- package/src/prompts/tools/job.md +2 -1
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
- package/src/prompts/tools/lsp.md +2 -2
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/memory-edit.md +1 -1
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/read.md +31 -39
- package/src/prompts/tools/recall.md +1 -1
- package/src/prompts/tools/reflect.md +1 -1
- package/src/prompts/tools/render-mermaid.md +2 -2
- package/src/prompts/tools/replace.md +4 -10
- package/src/prompts/tools/rewind.md +2 -2
- package/src/prompts/tools/search-tool-bm25.md +1 -9
- package/src/prompts/tools/search.md +0 -1
- package/src/prompts/tools/ssh.md +0 -4
- package/src/prompts/tools/task-summary.md +5 -16
- package/src/prompts/tools/task.md +47 -31
- package/src/prompts/tools/todo.md +6 -3
- package/src/registry/agent-lifecycle.ts +218 -0
- package/src/registry/agent-registry.ts +46 -5
- package/src/sdk.ts +692 -219
- package/src/secrets/index.ts +8 -1
- package/src/secrets/obfuscator.ts +40 -19
- package/src/session/agent-session.ts +1577 -806
- package/src/session/agent-storage.ts +18 -9
- package/src/session/auth-broker-config.ts +30 -1
- package/src/session/auth-storage.ts +6 -0
- package/src/session/codex-auto-reset.ts +202 -0
- package/src/session/history-storage.ts +3 -2
- package/src/session/indexed-session-storage.ts +7 -10
- package/src/session/messages.ts +59 -95
- package/src/session/session-context.ts +352 -0
- package/src/session/session-dump-format.ts +12 -3
- package/src/session/session-entries.ts +194 -0
- package/src/session/session-history-format.ts +246 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +106 -0
- package/src/session/session-manager.ts +1003 -2920
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +131 -0
- package/src/session/session-storage.ts +91 -30
- package/src/session/snapcompact-inline.ts +542 -0
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/streaming-output.ts +248 -11
- package/src/session/tool-choice-queue.ts +23 -11
- package/src/session/yield-queue.ts +20 -2
- package/src/slash-commands/acp-builtins.ts +25 -1
- package/src/slash-commands/available-commands.ts +105 -0
- package/src/slash-commands/builtin-registry.ts +575 -49
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/context-report.ts +28 -1
- package/src/slash-commands/helpers/logout.ts +88 -0
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/helpers/usage-report.ts +38 -3
- package/src/slash-commands/types.ts +5 -9
- package/src/ssh/connection-manager.ts +27 -0
- package/src/ssh/ssh-executor.ts +60 -4
- package/src/stt/asr-client.ts +520 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +107 -47
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +5 -1
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +254 -67
- package/src/stt/stt-controller.ts +201 -22
- package/src/stt/transcriber.ts +37 -68
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +52 -10
- package/src/task/agents.ts +3 -4
- package/src/task/commands.ts +3 -2
- package/src/task/discovery.ts +17 -24
- package/src/task/executor.ts +1054 -529
- package/src/task/index.ts +862 -757
- package/src/task/output-manager.ts +0 -11
- package/src/task/parallel.ts +3 -3
- package/src/task/prometheus-command.ts +2 -2
- package/src/task/render.ts +529 -182
- package/src/task/repair-args.ts +21 -9
- package/src/task/types.ts +144 -66
- package/src/task/worktree.ts +64 -56
- package/src/telemetry-export.ts +27 -9
- package/src/thinking.ts +9 -7
- package/src/tiny/models.ts +2 -2
- package/src/tiny/text.ts +5 -1
- package/src/tiny/title-client.ts +72 -20
- package/src/tiny/title-protocol.ts +1 -1
- package/src/tiny/worker.ts +23 -99
- package/src/tool-discovery/tool-index.ts +2 -0
- package/src/tools/archive-reader.ts +94 -2
- package/src/tools/ask.ts +234 -177
- package/src/tools/ast-edit.ts +136 -80
- package/src/tools/ast-grep.ts +41 -45
- package/src/tools/auto-generated-guard.ts +20 -3
- package/src/tools/bash-interactive.ts +28 -8
- package/src/tools/bash.ts +198 -35
- package/src/tools/browser/attach.ts +26 -7
- 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 +11 -2
- package/src/tools/browser/readable.ts +19 -2
- package/src/tools/browser/registry.ts +52 -5
- package/src/tools/browser/render.ts +13 -5
- package/src/tools/browser/tab-protocol.ts +2 -0
- package/src/tools/browser/tab-supervisor.ts +256 -34
- package/src/tools/browser/tab-worker.ts +259 -91
- package/src/tools/browser.ts +44 -2
- package/src/tools/checkpoint.ts +1 -1
- package/src/tools/conflict-detect.ts +50 -4
- package/src/tools/debug.ts +27 -12
- package/src/tools/eval-render.ts +32 -35
- package/src/tools/eval.ts +26 -12
- package/src/tools/fetch.ts +450 -99
- package/src/tools/find.ts +182 -142
- package/src/tools/gh-cache-invalidation.ts +255 -0
- package/src/tools/gh-renderer.ts +104 -51
- package/src/tools/gh.ts +232 -37
- package/src/tools/github-cache.ts +97 -7
- package/src/tools/grouped-file-output.ts +159 -52
- package/src/tools/image-gen.ts +237 -132
- package/src/tools/index.ts +147 -26
- package/src/tools/inspect-image-renderer.ts +74 -45
- package/src/tools/inspect-image.ts +12 -6
- package/src/tools/irc.ts +626 -173
- package/src/tools/job.ts +106 -29
- package/src/tools/learn.ts +144 -0
- package/src/tools/manage-skill.ts +104 -0
- package/src/tools/memory-edit.ts +4 -4
- package/src/tools/memory-recall.ts +7 -9
- package/src/tools/memory-reflect.ts +5 -9
- package/src/tools/memory-render.ts +23 -6
- package/src/tools/memory-retain.ts +4 -4
- package/src/tools/path-utils.ts +102 -48
- package/src/tools/plan-mode-guard.ts +101 -40
- package/src/tools/read.ts +475 -120
- package/src/tools/render-mermaid.ts +1 -1
- package/src/tools/render-utils.ts +132 -76
- package/src/tools/renderers.ts +12 -1
- package/src/tools/report-tool-issue.ts +14 -6
- package/src/tools/resolve.ts +20 -3
- package/src/tools/review.ts +2 -2
- package/src/tools/search-tool-bm25.ts +37 -24
- package/src/tools/search.ts +233 -115
- package/src/tools/sqlite-reader.ts +26 -17
- package/src/tools/ssh.ts +20 -14
- package/src/tools/todo.ts +197 -191
- package/src/tools/tool-result.ts +8 -0
- package/src/tools/tool-timeouts.ts +1 -1
- package/src/tools/tts.ts +205 -74
- package/src/tools/write.ts +291 -155
- package/src/tools/yield.ts +10 -1
- 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 +647 -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 +2 -7
- package/src/tui/hyperlink.ts +40 -26
- package/src/tui/output-block.ts +60 -108
- package/src/tui/status-line.ts +5 -1
- package/src/utils/block-context.ts +312 -0
- package/src/utils/changelog.ts +27 -1
- package/src/utils/clipboard.ts +91 -22
- package/src/utils/commit-message-generator.ts +8 -3
- package/src/utils/enhanced-paste.ts +230 -0
- package/src/utils/file-mentions.ts +3 -1
- package/src/utils/git.ts +315 -15
- package/src/utils/image-loading.ts +65 -4
- package/src/utils/session-color.ts +83 -9
- package/src/utils/thinking-display.ts +37 -0
- package/src/utils/title-generator.ts +73 -10
- package/src/utils/tool-choice.ts +16 -0
- package/src/utils/tools-manager.ts +19 -1
- package/src/web/kagi.ts +28 -26
- package/src/web/parallel.ts +7 -3
- package/src/web/scrapers/arxiv.ts +1 -1
- package/src/web/scrapers/github.ts +351 -3
- package/src/web/scrapers/go-pkg.ts +1 -1
- package/src/web/scrapers/iacr.ts +1 -1
- package/src/web/scrapers/readthedocs.ts +1 -1
- package/src/web/scrapers/twitter.ts +2 -1
- package/src/web/scrapers/types.ts +87 -8
- package/src/web/scrapers/wikipedia.ts +1 -1
- package/src/web/scrapers/youtube.ts +9 -3
- package/src/web/search/index.ts +15 -2
- package/src/web/search/providers/anthropic.ts +62 -21
- package/src/web/search/providers/base.ts +2 -1
- package/src/web/search/providers/brave.ts +5 -2
- package/src/web/search/providers/codex.ts +87 -51
- package/src/web/search/providers/exa.ts +101 -10
- package/src/web/search/providers/gemini.ts +49 -24
- package/src/web/search/providers/jina.ts +15 -5
- package/src/web/search/providers/kagi.ts +9 -2
- package/src/web/search/providers/kimi.ts +45 -20
- package/src/web/search/providers/parallel.ts +39 -24
- package/src/web/search/providers/perplexity.ts +226 -63
- package/src/web/search/providers/searxng.ts +19 -3
- package/src/web/search/providers/synthetic.ts +16 -11
- package/src/web/search/providers/tavily.ts +12 -9
- package/src/web/search/providers/zai.ts +22 -9
- package/src/web/search/render.ts +59 -64
- package/src/web/search/types.ts +5 -1
- package/dist/types/discovery/context-files.d.ts +0 -17
- package/dist/types/exa/factory.d.ts +0 -13
- package/dist/types/exa/render.d.ts +0 -19
- package/dist/types/exa/researcher.d.ts +0 -9
- package/dist/types/exa/search.d.ts +0 -9
- package/dist/types/exa/websets.d.ts +0 -9
- package/dist/types/export/html/template.generated.d.ts +0 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
- package/dist/types/modes/components/status-line.d.ts +0 -77
- package/dist/types/slash-commands/headless-plan.d.ts +0 -3
- package/dist/types/stt/setup.d.ts +0 -18
- package/scripts/generate-template.ts +0 -33
- package/src/discovery/context-files.ts +0 -49
- package/src/exa/factory.ts +0 -60
- package/src/exa/render.ts +0 -244
- package/src/exa/researcher.ts +0 -36
- package/src/exa/search.ts +0 -47
- package/src/exa/websets.ts +0 -248
- package/src/export/html/template.generated.ts +0 -2
- package/src/modes/components/session-observer-overlay.ts +0 -852
- package/src/slash-commands/headless-plan.ts +0 -142
- package/src/stt/setup.ts +0 -52
- package/src/stt/transcribe.py +0 -70
- /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
- /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
package/src/tools/job.ts
CHANGED
|
@@ -2,9 +2,10 @@ import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallb
|
|
|
2
2
|
import type { Component } from "@prometheus-ai/tui";
|
|
3
3
|
import { Text } from "@prometheus-ai/tui";
|
|
4
4
|
import { prompt } from "@prometheus-ai/utils";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
5
|
+
import { z } from "zod/v4";
|
|
6
|
+
import type { AsyncJob, AsyncJobManager } from "../async";
|
|
7
7
|
import type { RenderResultOptions } from "../extensibility/custom-tools/types";
|
|
8
|
+
import { shimmerEnabled, shimmerText } from "../modes/theme/shimmer";
|
|
8
9
|
import type { Theme } from "../modes/theme/theme";
|
|
9
10
|
import jobDescription from "../prompts/tools/job.md" with { type: "text" };
|
|
10
11
|
import { Ellipsis, Hasher, type RenderCache, renderStatusLine, renderTreeList, truncateToWidth } from "../tui";
|
|
@@ -23,7 +24,7 @@ import {
|
|
|
23
24
|
import { ToolError } from "./tool-errors";
|
|
24
25
|
|
|
25
26
|
const jobSchema = z.object({
|
|
26
|
-
poll: z.array(z.string()).optional().describe("job ids to wait for"),
|
|
27
|
+
poll: z.array(z.string()).optional().describe("job ids to wait for; omit to wait on all running jobs"),
|
|
27
28
|
cancel: z.array(z.string()).optional().describe("job ids to cancel"),
|
|
28
29
|
list: z.boolean().optional().describe("snapshot all jobs"),
|
|
29
30
|
});
|
|
@@ -65,6 +66,19 @@ export interface JobToolDetails {
|
|
|
65
66
|
cancelled?: { id: string; status: CancelStatus }[];
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
/**
|
|
70
|
+
* A poll snapshot where every watched job is still running and nothing was
|
|
71
|
+
* cancelled — pure "still waiting" noise once a newer poll exists. The TUI
|
|
72
|
+
* keeps such a block un-finalized (displaceable) so a follow-up `job` call
|
|
73
|
+
* replaces it instead of stacking another waiting frame in the transcript.
|
|
74
|
+
*/
|
|
75
|
+
export function isWaitingPollDetails(details: unknown): boolean {
|
|
76
|
+
const d = details as JobToolDetails | undefined;
|
|
77
|
+
if (!d || !Array.isArray(d.jobs) || d.jobs.length === 0) return false;
|
|
78
|
+
if (d.cancelled?.length) return false;
|
|
79
|
+
return d.jobs.every(job => job?.status === "running");
|
|
80
|
+
}
|
|
81
|
+
|
|
68
82
|
export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
69
83
|
readonly name = "job";
|
|
70
84
|
readonly approval = "read" as const;
|
|
@@ -78,11 +92,6 @@ export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
|
78
92
|
this.description = prompt.render(jobDescription);
|
|
79
93
|
}
|
|
80
94
|
|
|
81
|
-
static createIf(session: ToolSession): JobTool | null {
|
|
82
|
-
if (!isBackgroundJobSupportEnabled(session.settings)) return null;
|
|
83
|
-
return new JobTool(session);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
95
|
async execute(
|
|
87
96
|
_toolCallId: string,
|
|
88
97
|
params: JobParams,
|
|
@@ -162,6 +171,9 @@ export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
|
162
171
|
return {
|
|
163
172
|
content: [{ type: "text", text: message }],
|
|
164
173
|
details: { jobs: [] },
|
|
174
|
+
// Nothing found / nothing to wait for is noise once consumed —
|
|
175
|
+
// the follow-up call has already corrected course.
|
|
176
|
+
useless: true,
|
|
165
177
|
};
|
|
166
178
|
}
|
|
167
179
|
|
|
@@ -172,9 +184,16 @@ export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
|
172
184
|
return this.#buildResult(manager, [...cancelledJobs, ...jobsToWatch], cancelOutcomes);
|
|
173
185
|
}
|
|
174
186
|
|
|
175
|
-
// Wait until at least one running job finishes, the wait
|
|
187
|
+
// Wait until at least one running job finishes, the wait window elapses,
|
|
188
|
+
// or the call is aborted. With `async.pollWaitDuration` set to `smart`,
|
|
189
|
+
// the window adapts: it starts at the ladder floor and climbs as the agent
|
|
190
|
+
// polls in a tight loop, then resets to the floor once the agent steps
|
|
191
|
+
// away from polling (see AsyncJobManager.nextPollWaitMs). Any fixed value
|
|
192
|
+
// waits that exact duration every time.
|
|
176
193
|
const racePromises: Promise<unknown>[] = runningJobs.map(j => j.promise);
|
|
177
|
-
const
|
|
194
|
+
const pollSetting = this.session.settings.get("async.pollWaitDuration");
|
|
195
|
+
const smartPoll = pollSetting === "smart";
|
|
196
|
+
const waitMs = smartPoll ? manager.nextPollWaitMs(ownerId) : parseWaitDurationMs(pollSetting);
|
|
178
197
|
const { promise: timeoutPromise, resolve: timeoutResolve } = Promise.withResolvers<void>();
|
|
179
198
|
const timeoutHandle = setTimeout(() => timeoutResolve(), waitMs);
|
|
180
199
|
racePromises.push(timeoutPromise);
|
|
@@ -220,6 +239,11 @@ export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
|
220
239
|
manager.unwatchJobs(watchedJobIds);
|
|
221
240
|
clearTimeout(timeoutHandle);
|
|
222
241
|
if (progressTimer) clearInterval(progressTimer);
|
|
242
|
+
if (smartPoll) {
|
|
243
|
+
// Reset the idle-gap clock: escalate if the agent polls again soon,
|
|
244
|
+
// drop back to the floor once it goes quiet for a while.
|
|
245
|
+
manager.recordPollWaitEnd(ownerId);
|
|
246
|
+
}
|
|
223
247
|
}
|
|
224
248
|
|
|
225
249
|
return this.#buildResult(manager, allTrackedJobs, cancelOutcomes);
|
|
@@ -325,12 +349,17 @@ export class JobTool implements AgentTool<typeof jobSchema, JobToolDetails> {
|
|
|
325
349
|
}
|
|
326
350
|
}
|
|
327
351
|
|
|
352
|
+
const details: JobToolDetails = {
|
|
353
|
+
jobs: jobResults,
|
|
354
|
+
...(cancelOutcomes.length ? { cancelled: cancelOutcomes.map(({ id, status }) => ({ id, status })) } : {}),
|
|
355
|
+
};
|
|
328
356
|
return {
|
|
329
357
|
content: [{ type: "text", text: lines.join("\n").trimEnd() }],
|
|
330
|
-
details
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
358
|
+
details,
|
|
359
|
+
// A poll where everything is still running carries no new information
|
|
360
|
+
// once a later poll exists — same predicate the TUI uses to displace
|
|
361
|
+
// stale waiting frames.
|
|
362
|
+
...(isWaitingPollDetails(details) ? { useless: true } : {}),
|
|
334
363
|
};
|
|
335
364
|
}
|
|
336
365
|
}
|
|
@@ -355,7 +384,7 @@ const PREVIEW_LINE_WIDTH = 80;
|
|
|
355
384
|
function statusToIcon(status: JobSnapshot["status"]): ToolUIStatus {
|
|
356
385
|
switch (status) {
|
|
357
386
|
case "completed":
|
|
358
|
-
return "
|
|
387
|
+
return "done";
|
|
359
388
|
case "failed":
|
|
360
389
|
return "error";
|
|
361
390
|
case "cancelled":
|
|
@@ -378,6 +407,30 @@ function statusToColor(status: JobSnapshot["status"]): ToolUIColor {
|
|
|
378
407
|
}
|
|
379
408
|
}
|
|
380
409
|
|
|
410
|
+
/**
|
|
411
|
+
* Task job results are delivered in the model-facing `<task-result>` envelope
|
|
412
|
+
* (prompts/tools/task-summary.md) so the parent agent can parse status and the
|
|
413
|
+
* `agent://` pointer. The wrapper markup is noise to a human — preview the
|
|
414
|
+
* inner <output>/<preview> body instead.
|
|
415
|
+
*/
|
|
416
|
+
function stripTaskResultEnvelope(text: string): string {
|
|
417
|
+
if (!text.startsWith("<task-result")) return text;
|
|
418
|
+
const body = /<(output|preview)(?:\s[^>]*)?>\n?([\s\S]*?)\n?<\/\1>/.exec(text)?.[2];
|
|
419
|
+
return body?.trim() || text;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Pretty-printed JSON output wastes the collapsed one-line preview on a lone
|
|
424
|
+
* "{" — flatten structured-looking bodies onto a single line. Slice first:
|
|
425
|
+
* downstream truncation keeps at most a few hundred columns, so collapsing
|
|
426
|
+
* whitespace across a multi-KB body would be pure waste.
|
|
427
|
+
*/
|
|
428
|
+
function flattenStructuredPreview(text: string): string {
|
|
429
|
+
const first = text[0];
|
|
430
|
+
if (first !== "{" && first !== "[") return text;
|
|
431
|
+
return text.slice(0, PREVIEW_LINES_EXPANDED * PREVIEW_LINE_WIDTH * 2).replace(/\s+/g, " ");
|
|
432
|
+
}
|
|
433
|
+
|
|
381
434
|
function describeTarget(args: JobRenderArgs | undefined): string {
|
|
382
435
|
const poll = args?.poll ?? [];
|
|
383
436
|
const cancel = args?.cancel ?? [];
|
|
@@ -396,7 +449,7 @@ export const jobToolRenderer = {
|
|
|
396
449
|
inline: true,
|
|
397
450
|
|
|
398
451
|
renderCall(args: JobRenderArgs, _options: RenderResultOptions, uiTheme: Theme): Component {
|
|
399
|
-
const text = renderStatusLine({ icon: "pending", title:
|
|
452
|
+
const text = renderStatusLine({ icon: "pending", title: describeTarget(args) || "Job" }, uiTheme);
|
|
400
453
|
return new Text(text, 0, 0);
|
|
401
454
|
},
|
|
402
455
|
|
|
@@ -410,31 +463,34 @@ export const jobToolRenderer = {
|
|
|
410
463
|
|
|
411
464
|
if (jobs.length === 0) {
|
|
412
465
|
const fallback = result.content?.find(c => c.type === "text")?.text || "No jobs to process";
|
|
413
|
-
const header = renderStatusLine({ icon: "warning", title:
|
|
466
|
+
const header = renderStatusLine({ icon: "warning", title: describeTarget(args) || "Job" }, uiTheme);
|
|
414
467
|
return new Text([header, formatEmptyMessage(fallback, uiTheme)].join("\n"), 0, 0);
|
|
415
468
|
}
|
|
416
469
|
|
|
417
470
|
const counts = { completed: 0, failed: 0, cancelled: 0, running: 0 };
|
|
418
471
|
for (const job of jobs) counts[job.status]++;
|
|
419
472
|
|
|
473
|
+
// The title already carries the running count, so meta lists only the
|
|
474
|
+
// settled categories — "waiting on 19 of 19 · 19 running" read awkward.
|
|
420
475
|
const meta: string[] = [];
|
|
421
476
|
if (counts.completed > 0) meta.push(uiTheme.fg("success", `${counts.completed} done`));
|
|
422
477
|
if (counts.failed > 0) meta.push(uiTheme.fg("error", `${counts.failed} failed`));
|
|
423
478
|
if (counts.cancelled > 0) meta.push(uiTheme.fg("warning", `${counts.cancelled} cancelled`));
|
|
424
|
-
if (counts.running > 0) meta.push(uiTheme.fg("accent", `${counts.running} running`));
|
|
425
479
|
|
|
426
480
|
const headerIcon: ToolUIStatus = counts.failed > 0 ? "warning" : counts.running > 0 ? "info" : "success";
|
|
481
|
+
const jobsNoun = jobs.length === 1 ? "job" : "jobs";
|
|
427
482
|
const description =
|
|
428
483
|
counts.running > 0
|
|
429
|
-
?
|
|
430
|
-
|
|
484
|
+
? counts.running === jobs.length
|
|
485
|
+
? `waiting on ${jobs.length} ${jobsNoun}`
|
|
486
|
+
: `waiting on ${counts.running} of ${jobs.length} ${jobsNoun}`
|
|
487
|
+
: `${jobs.length} ${jobsNoun} settled`;
|
|
431
488
|
|
|
432
489
|
const header = renderStatusLine(
|
|
433
490
|
{
|
|
434
491
|
icon: headerIcon,
|
|
435
492
|
spinnerFrame: counts.running > 0 ? options.spinnerFrame : undefined,
|
|
436
|
-
title:
|
|
437
|
-
description,
|
|
493
|
+
title: description,
|
|
438
494
|
meta,
|
|
439
495
|
},
|
|
440
496
|
uiTheme,
|
|
@@ -455,11 +511,18 @@ export const jobToolRenderer = {
|
|
|
455
511
|
|
|
456
512
|
let cached: RenderCache | undefined;
|
|
457
513
|
return {
|
|
458
|
-
render(width: number): string[] {
|
|
514
|
+
render(width: number): readonly string[] {
|
|
459
515
|
const expanded = options.expanded;
|
|
460
516
|
const spinnerFrame = options.spinnerFrame ?? 0;
|
|
461
|
-
|
|
462
|
-
|
|
517
|
+
// Running-job labels shimmer while the poll block is live; the band
|
|
518
|
+
// phase is Date.now()-sampled at render time, so serving cached bytes
|
|
519
|
+
// would pin it to the ~12.5fps spinner-glyph cadence instead of the
|
|
520
|
+
// 30fps redraw. Bypass the cache while any row animates, and key on
|
|
521
|
+
// the animation state so a sealed block never hits stale shimmered
|
|
522
|
+
// bytes (spinnerFrame falls back to 0 on both sides of the seal).
|
|
523
|
+
const shimmerActive = counts.running > 0 && options.spinnerFrame !== undefined && shimmerEnabled();
|
|
524
|
+
const key = new Hasher().bool(expanded).u32(width).u32(spinnerFrame).bool(shimmerActive).digest();
|
|
525
|
+
if (!shimmerActive && cached?.key === key) return cached.lines;
|
|
463
526
|
|
|
464
527
|
const itemLines = renderTreeList<JobSnapshot>(
|
|
465
528
|
{
|
|
@@ -475,7 +538,9 @@ export const jobToolRenderer = {
|
|
|
475
538
|
job.status === "running" ? options.spinnerFrame : undefined,
|
|
476
539
|
);
|
|
477
540
|
const typeBadge = formatBadge(job.type, statusToColor(job.status), uiTheme);
|
|
478
|
-
|
|
541
|
+
// Task jobs label themselves with their agent id, which is also
|
|
542
|
+
// the job id — drop the id column instead of stuttering it twice.
|
|
543
|
+
const idPart = job.label.trim() === job.id ? "" : ` ${uiTheme.fg("muted", job.id)}`;
|
|
479
544
|
const rawLabelLines = (job.label || "(no label)").split(/\r?\n/);
|
|
480
545
|
const maxLabelLines = expanded ? LABEL_LINES_EXPANDED : LABEL_LINES_COLLAPSED;
|
|
481
546
|
const visibleLabelLines = rawLabelLines
|
|
@@ -486,13 +551,25 @@ export const jobToolRenderer = {
|
|
|
486
551
|
visibleLabelLines[visibleLabelLines.length - 1] = `${last} …`;
|
|
487
552
|
}
|
|
488
553
|
const durationText = uiTheme.fg("dim", formatDuration(job.durationMs));
|
|
489
|
-
|
|
490
|
-
|
|
554
|
+
// Running rows in a live block shimmer their label; once the block
|
|
555
|
+
// stops animating (sealed, or a settled snapshot — spinnerFrame
|
|
556
|
+
// cleared) they render static so scrollback never keeps a mid-sweep
|
|
557
|
+
// shimmer band.
|
|
558
|
+
const live = job.status === "running" && options.spinnerFrame !== undefined;
|
|
559
|
+
const headRaw = visibleLabelLines[0] ?? "";
|
|
560
|
+
const headLabel = live
|
|
561
|
+
? shimmerEnabled()
|
|
562
|
+
? shimmerText(headRaw, uiTheme)
|
|
563
|
+
: uiTheme.fg("accent", headRaw)
|
|
564
|
+
: uiTheme.fg("toolOutput", headRaw);
|
|
565
|
+
lines.push(`${icon}${idPart} ${typeBadge} ${headLabel} ${durationText}`);
|
|
491
566
|
for (let i = 1; i < visibleLabelLines.length; i++) {
|
|
492
567
|
lines.push(` ${uiTheme.fg("toolOutput", visibleLabelLines[i]!)}`);
|
|
493
568
|
}
|
|
494
569
|
|
|
495
|
-
const preview =
|
|
570
|
+
const preview = flattenStructuredPreview(
|
|
571
|
+
stripTaskResultEnvelope(job.errorText?.trim() || job.resultText?.trim() || ""),
|
|
572
|
+
);
|
|
496
573
|
if (preview) {
|
|
497
574
|
const maxLines = expanded ? PREVIEW_LINES_EXPANDED : PREVIEW_LINES_COLLAPSED;
|
|
498
575
|
const previewLines = getPreviewLines(preview, maxLines, PREVIEW_LINE_WIDTH, Ellipsis.Unicode);
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { AgentTool, AgentToolResult } from "@prometheus-ai/agent-core";
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
import { sanitizeSkillName, writeManagedSkill } from "../autolearn/managed-skills";
|
|
4
|
+
import { isNameClaimedByAuthoredSkill } from "../extensibility/skills";
|
|
5
|
+
import { localBackend } from "../memory-backend/local-backend";
|
|
6
|
+
import learnDescription from "../prompts/tools/learn.md" with { type: "text" };
|
|
7
|
+
import type { ToolSession } from ".";
|
|
8
|
+
|
|
9
|
+
const learnSchema = z.object({
|
|
10
|
+
memory: z.string().describe("the durable, self-contained lesson to remember (what, when, why)"),
|
|
11
|
+
context: z.string().describe("optional source context for the lesson").optional(),
|
|
12
|
+
skill: z
|
|
13
|
+
.object({
|
|
14
|
+
action: z.enum(["create", "update"]),
|
|
15
|
+
name: z.string().describe("kebab-case skill name"),
|
|
16
|
+
description: z.string().describe("one-line description of when to use the skill"),
|
|
17
|
+
body: z.string().describe("the SKILL.md body in markdown (no frontmatter)"),
|
|
18
|
+
})
|
|
19
|
+
.describe("also create or enhance a managed skill in the same call")
|
|
20
|
+
.optional(),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export type LearnParams = z.infer<typeof learnSchema>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Orchestrating "learn" tool: persists a lesson to long-term memory and,
|
|
27
|
+
* given a `skill` payload, mints/enhances a managed skill via the shared
|
|
28
|
+
* `writeManagedSkill` primitive. Gated behind `autolearn.enabled` plus a live
|
|
29
|
+
* memory backend — `hindsight`/`mnemopi` (remote/SQLite) or `local` (the
|
|
30
|
+
* file-based rollout backend, where lessons append to `learned.md`).
|
|
31
|
+
*/
|
|
32
|
+
export class LearnTool implements AgentTool<typeof learnSchema> {
|
|
33
|
+
readonly name = "learn";
|
|
34
|
+
readonly approval = (args: unknown) =>
|
|
35
|
+
(args as Partial<LearnParams>).skill || this.session.settings.get("memory.backend") === "local"
|
|
36
|
+
? "write"
|
|
37
|
+
: "read";
|
|
38
|
+
readonly label = "Learn";
|
|
39
|
+
readonly description = learnDescription;
|
|
40
|
+
readonly parameters = learnSchema;
|
|
41
|
+
readonly strict = true;
|
|
42
|
+
readonly loadMode = "essential" as const;
|
|
43
|
+
readonly summary = "Capture a reusable lesson to memory (and optionally a managed skill)";
|
|
44
|
+
|
|
45
|
+
constructor(private readonly session: ToolSession) {}
|
|
46
|
+
|
|
47
|
+
static createIf(session: ToolSession): LearnTool | null {
|
|
48
|
+
if (!session.settings.get("autolearn.enabled")) return null;
|
|
49
|
+
const backend = session.settings.get("memory.backend");
|
|
50
|
+
if (backend !== "hindsight" && backend !== "mnemopi" && backend !== "local") return null;
|
|
51
|
+
return new LearnTool(session);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async execute(_id: string, params: LearnParams): Promise<AgentToolResult> {
|
|
55
|
+
// 1) Persist or queue the lesson to long-term memory (mirrors MemoryRetainTool).
|
|
56
|
+
const backend = this.session.settings.get("memory.backend");
|
|
57
|
+
let memoryMessage = "Lesson stored";
|
|
58
|
+
if (backend === "mnemopi") {
|
|
59
|
+
const state = this.session.getMnemopiSessionState?.();
|
|
60
|
+
if (!state) {
|
|
61
|
+
throw new Error("Mnemopi backend is not initialised for this session.");
|
|
62
|
+
}
|
|
63
|
+
const id = state.rememberScoped(params.memory, {
|
|
64
|
+
source: "coding-agent-learn",
|
|
65
|
+
importance: 0.8,
|
|
66
|
+
metadata: {
|
|
67
|
+
session_id: state.sessionId,
|
|
68
|
+
cwd: state.session.sessionManager.getCwd(),
|
|
69
|
+
context: params.context ?? null,
|
|
70
|
+
tool: "learn",
|
|
71
|
+
},
|
|
72
|
+
scope: "bank",
|
|
73
|
+
extract: true,
|
|
74
|
+
extractEntities: true,
|
|
75
|
+
veracity: "tool",
|
|
76
|
+
memoryType: "fact",
|
|
77
|
+
});
|
|
78
|
+
// rememberScoped returns undefined when the retain failed (closed DB /
|
|
79
|
+
// disk error); mirror mnemopiBackend.save and fail loudly rather than
|
|
80
|
+
// reporting (and minting a skill for) a lesson that was silently dropped.
|
|
81
|
+
if (!id) {
|
|
82
|
+
throw new Error("Mnemopi did not store the lesson (no memory id returned).");
|
|
83
|
+
}
|
|
84
|
+
} else if (backend === "local") {
|
|
85
|
+
const result = await localBackend.save?.(
|
|
86
|
+
{ agentDir: this.session.settings.getAgentDir(), cwd: this.session.settings.getCwd() },
|
|
87
|
+
{ content: params.memory, context: params.context, source: "coding-agent-learn", importance: 0.8 },
|
|
88
|
+
);
|
|
89
|
+
if (!result || result.stored === 0) {
|
|
90
|
+
throw new Error("Lesson was empty after sanitization; nothing stored.");
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
const state = this.session.getHindsightSessionState?.();
|
|
94
|
+
if (!state) {
|
|
95
|
+
throw new Error("Hindsight backend is not initialised for this session.");
|
|
96
|
+
}
|
|
97
|
+
state.enqueueRetain(params.memory, params.context);
|
|
98
|
+
memoryMessage = "Lesson queued for retention";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 2) Optionally mint/enhance a managed skill. A failure here is surfaced
|
|
102
|
+
// as a partial outcome — the lesson is already stored or queued.
|
|
103
|
+
if (params.skill) {
|
|
104
|
+
// A managed skill resolves below any authored skill of the same name, so
|
|
105
|
+
// minting one under a claimed name writes a file that never surfaces. The
|
|
106
|
+
// lesson is already stored/queued; refuse the skill rather than report a
|
|
107
|
+
// false "Created" (mirrors ManageSkillTool).
|
|
108
|
+
let safeSkillName: string | undefined;
|
|
109
|
+
try {
|
|
110
|
+
safeSkillName = sanitizeSkillName(params.skill.name);
|
|
111
|
+
} catch {
|
|
112
|
+
safeSkillName = undefined;
|
|
113
|
+
}
|
|
114
|
+
if (params.skill.action === "create" && safeSkillName && isNameClaimedByAuthoredSkill(safeSkillName)) {
|
|
115
|
+
return {
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: `${memoryMessage}. Did not create managed skill "${params.skill.name}": an authored skill of that name already exists, and managed skills cannot override authored ones. Choose a different name.`,
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
isError: true,
|
|
123
|
+
details: { skill: null, shadowed: true },
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
await writeManagedSkill(params.skill);
|
|
128
|
+
} catch (err) {
|
|
129
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
130
|
+
throw new Error(`${memoryMessage}, but the managed skill could not be written: ${reason}`);
|
|
131
|
+
}
|
|
132
|
+
const verb = params.skill.action === "create" ? "Created" : "Updated";
|
|
133
|
+
return {
|
|
134
|
+
content: [{ type: "text", text: `${memoryMessage}. ${verb} managed skill "${params.skill.name}".` }],
|
|
135
|
+
details: { skill: params.skill.name },
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
content: [{ type: "text", text: `${memoryMessage}.` }],
|
|
141
|
+
details: { skill: null },
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import type { AgentTool, AgentToolResult } from "@prometheus-ai/agent-core";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
|
+
import {
|
|
5
|
+
deleteManagedSkill,
|
|
6
|
+
getManagedSkillsDir,
|
|
7
|
+
sanitizeSkillName,
|
|
8
|
+
writeManagedSkill,
|
|
9
|
+
} from "../autolearn/managed-skills";
|
|
10
|
+
import { isNameClaimedByAuthoredSkill } from "../extensibility/skills";
|
|
11
|
+
import manageSkillDescription from "../prompts/tools/manage-skill.md" with { type: "text" };
|
|
12
|
+
import type { ToolSession } from ".";
|
|
13
|
+
|
|
14
|
+
const manageSkillSchema = z
|
|
15
|
+
.object({
|
|
16
|
+
action: z.enum(["create", "update", "delete"]),
|
|
17
|
+
name: z.string().describe("kebab-case skill name"),
|
|
18
|
+
description: z
|
|
19
|
+
.string()
|
|
20
|
+
.describe("one-line description of when to use the skill (required for create/update)")
|
|
21
|
+
.optional(),
|
|
22
|
+
body: z
|
|
23
|
+
.string()
|
|
24
|
+
.describe("the SKILL.md body in markdown, no frontmatter (required for create/update)")
|
|
25
|
+
.optional(),
|
|
26
|
+
})
|
|
27
|
+
// Enforce the action/field contract at validation time rather than only in
|
|
28
|
+
// execute. Kept as a cross-field refine (not a discriminated union) so the
|
|
29
|
+
// wire schema stays a single root object — strict structured-output mode and
|
|
30
|
+
// the Anthropic tool-schema builder both require that.
|
|
31
|
+
.refine(p => p.action === "delete" || (p.description !== undefined && p.body !== undefined), {
|
|
32
|
+
message: '"create" and "update" require both "description" and "body".',
|
|
33
|
+
path: ["description"],
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export type ManageSkillParams = z.infer<typeof manageSkillSchema>;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Direct create/update/delete of isolated managed skills. Gated behind
|
|
40
|
+
* `autolearn.enabled`; backend-independent (the skill side is standalone).
|
|
41
|
+
*/
|
|
42
|
+
export class ManageSkillTool implements AgentTool<typeof manageSkillSchema> {
|
|
43
|
+
readonly name = "manage_skill";
|
|
44
|
+
readonly approval = "write" as const;
|
|
45
|
+
readonly label = "Manage Skill";
|
|
46
|
+
readonly description = manageSkillDescription;
|
|
47
|
+
readonly parameters = manageSkillSchema;
|
|
48
|
+
readonly strict = true;
|
|
49
|
+
readonly loadMode = "essential" as const;
|
|
50
|
+
readonly summary = "Create, update, or delete an isolated managed skill";
|
|
51
|
+
|
|
52
|
+
// No session state needed: createIf reads settings; writes target the
|
|
53
|
+
// home-based managed-skills dir directly.
|
|
54
|
+
static createIf(session: ToolSession): ManageSkillTool | null {
|
|
55
|
+
if (!session.settings.get("autolearn.enabled")) return null;
|
|
56
|
+
return new ManageSkillTool();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async execute(_id: string, params: ManageSkillParams): Promise<AgentToolResult> {
|
|
60
|
+
if (params.action === "delete") {
|
|
61
|
+
await deleteManagedSkill(params.name);
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: "text", text: `Deleted managed skill "${params.name}".` }],
|
|
64
|
+
details: { action: "delete", name: params.name },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Defensive narrowing: the schema refine already rejects create/update
|
|
69
|
+
// without both fields, so this is unreachable for valid input — it only
|
|
70
|
+
// proves the strings are present to `writeManagedSkill`'s typed contract.
|
|
71
|
+
if (!params.description || !params.body) {
|
|
72
|
+
throw new Error(`"${params.action}" requires both "description" and "body".`);
|
|
73
|
+
}
|
|
74
|
+
// A managed skill resolves below any authored skill of the same name
|
|
75
|
+
// (authored always wins in discovery), so creating one under a name an
|
|
76
|
+
// authored skill already claims writes a file that never surfaces. Refuse
|
|
77
|
+
// up front rather than report a false "Created". `sanitizeSkillName`
|
|
78
|
+
// normalizes to the on-disk name the discovery scan compares against.
|
|
79
|
+
if (params.action === "create" && isNameClaimedByAuthoredSkill(sanitizeSkillName(params.name))) {
|
|
80
|
+
return {
|
|
81
|
+
content: [
|
|
82
|
+
{
|
|
83
|
+
type: "text",
|
|
84
|
+
text: `Cannot create managed skill "${params.name}": an authored skill of that name already exists, and managed skills cannot override authored ones. Choose a different name.`,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
isError: true,
|
|
88
|
+
details: { action: "create", name: params.name, shadowed: true },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const { path: skillPath } = await writeManagedSkill({
|
|
92
|
+
action: params.action,
|
|
93
|
+
name: params.name,
|
|
94
|
+
description: params.description,
|
|
95
|
+
body: params.body,
|
|
96
|
+
});
|
|
97
|
+
const relativePath = path.relative(getManagedSkillsDir(), skillPath);
|
|
98
|
+
const verb = params.action === "create" ? "Created" : "Updated";
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: "text", text: `${verb} managed skill "${params.name}" (managed-skills/${relativePath}).` }],
|
|
101
|
+
details: { action: params.action, name: params.name },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
package/src/tools/memory-edit.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentTool, AgentToolResult } from "@prometheus-ai/agent-core";
|
|
2
|
-
import
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
3
|
import memoryEditDescription from "../prompts/tools/memory-edit.md" with { type: "text" };
|
|
4
4
|
import type { ToolSession } from ".";
|
|
5
5
|
|
|
@@ -21,20 +21,20 @@ export class MemoryEditTool implements AgentTool<typeof memoryEditSchema> {
|
|
|
21
21
|
readonly parameters = memoryEditSchema;
|
|
22
22
|
readonly strict = true;
|
|
23
23
|
readonly loadMode = "discoverable";
|
|
24
|
-
readonly summary = "Update, forget, or invalidate
|
|
24
|
+
readonly summary = "Update, forget, or invalidate Mnemopi memories";
|
|
25
25
|
|
|
26
26
|
constructor(private readonly session: ToolSession) {}
|
|
27
27
|
|
|
28
28
|
static createIf(session: ToolSession): MemoryEditTool | null {
|
|
29
29
|
const backend = session.settings.get("memory.backend");
|
|
30
|
-
if (backend !== "
|
|
30
|
+
if (backend !== "mnemopi") return null;
|
|
31
31
|
return new MemoryEditTool(session);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
async execute(_id: string, params: MemoryEditParams): Promise<AgentToolResult> {
|
|
35
35
|
const state = this.session.getMnemopiSessionState?.();
|
|
36
36
|
if (!state) {
|
|
37
|
-
throw new Error("
|
|
37
|
+
throw new Error("Mnemopi backend is not initialised for this session.");
|
|
38
38
|
}
|
|
39
39
|
if (params.op === "update" && params.content === undefined && params.importance === undefined) {
|
|
40
40
|
throw new Error("memory_edit update requires content or importance.");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentTool, AgentToolResult } from "@prometheus-ai/agent-core";
|
|
2
2
|
import { logger, untilAborted } from "@prometheus-ai/utils";
|
|
3
|
-
import
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
4
|
import { formatCurrentTime, formatMemories } from "../hindsight/content";
|
|
5
5
|
import recallDescription from "../prompts/tools/recall.md" with { type: "text" };
|
|
6
6
|
import type { ToolSession } from ".";
|
|
@@ -25,17 +25,17 @@ export class MemoryRecallTool implements AgentTool<typeof memoryRecallSchema> {
|
|
|
25
25
|
|
|
26
26
|
static createIf(session: ToolSession): MemoryRecallTool | null {
|
|
27
27
|
const backend = session.settings.get("memory.backend");
|
|
28
|
-
if (backend !== "hindsight" && backend !== "
|
|
28
|
+
if (backend !== "hindsight" && backend !== "mnemopi") return null;
|
|
29
29
|
return new MemoryRecallTool(session);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
async execute(_id: string, params: MemoryRecallParams, signal?: AbortSignal): Promise<AgentToolResult> {
|
|
33
33
|
return untilAborted(signal, async () => {
|
|
34
34
|
const backend = this.session.settings.get("memory.backend");
|
|
35
|
-
if (backend === "
|
|
35
|
+
if (backend === "mnemopi") {
|
|
36
36
|
const state = this.session.getMnemopiSessionState?.();
|
|
37
37
|
if (!state) {
|
|
38
|
-
throw new Error("
|
|
38
|
+
throw new Error("Mnemopi backend is not initialised for this session.");
|
|
39
39
|
}
|
|
40
40
|
try {
|
|
41
41
|
const results = await state.recallResultsScoped(params.query);
|
|
@@ -43,6 +43,7 @@ export class MemoryRecallTool implements AgentTool<typeof memoryRecallSchema> {
|
|
|
43
43
|
return {
|
|
44
44
|
content: [{ type: "text", text: "No relevant memories found." }],
|
|
45
45
|
details: {},
|
|
46
|
+
useless: true,
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
const formatted = state.formatScopedRecallWithIds(results);
|
|
@@ -56,11 +57,7 @@ export class MemoryRecallTool implements AgentTool<typeof memoryRecallSchema> {
|
|
|
56
57
|
details: {},
|
|
57
58
|
};
|
|
58
59
|
} catch (err) {
|
|
59
|
-
logger.warn("recall failed", {
|
|
60
|
-
backend: "prometheus-memory",
|
|
61
|
-
bank: state.config.bank,
|
|
62
|
-
error: String(err),
|
|
63
|
-
});
|
|
60
|
+
logger.warn("recall failed", { backend: "mnemopi", bank: state.config.bank, error: String(err) });
|
|
64
61
|
throw err instanceof Error ? err : new Error(String(err));
|
|
65
62
|
}
|
|
66
63
|
}
|
|
@@ -83,6 +80,7 @@ export class MemoryRecallTool implements AgentTool<typeof memoryRecallSchema> {
|
|
|
83
80
|
return {
|
|
84
81
|
content: [{ type: "text", text: "No relevant memories found." }],
|
|
85
82
|
details: {},
|
|
83
|
+
useless: true,
|
|
86
84
|
};
|
|
87
85
|
}
|
|
88
86
|
const formatted = formatMemories(results);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentTool, AgentToolResult } from "@prometheus-ai/agent-core";
|
|
2
2
|
import { logger, untilAborted } from "@prometheus-ai/utils";
|
|
3
|
-
import
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
4
|
import { ensureBankExists } from "../hindsight/bank";
|
|
5
5
|
import reflectDescription from "../prompts/tools/reflect.md" with { type: "text" };
|
|
6
6
|
import type { ToolSession } from ".";
|
|
@@ -26,17 +26,17 @@ export class MemoryReflectTool implements AgentTool<typeof memoryReflectSchema>
|
|
|
26
26
|
|
|
27
27
|
static createIf(session: ToolSession): MemoryReflectTool | null {
|
|
28
28
|
const backend = session.settings.get("memory.backend");
|
|
29
|
-
if (backend !== "hindsight" && backend !== "
|
|
29
|
+
if (backend !== "hindsight" && backend !== "mnemopi") return null;
|
|
30
30
|
return new MemoryReflectTool(session);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
async execute(_id: string, params: MemoryReflectParams, signal?: AbortSignal): Promise<AgentToolResult> {
|
|
34
34
|
return untilAborted(signal, async () => {
|
|
35
35
|
const backend = this.session.settings.get("memory.backend");
|
|
36
|
-
if (backend === "
|
|
36
|
+
if (backend === "mnemopi") {
|
|
37
37
|
const state = this.session.getMnemopiSessionState?.();
|
|
38
38
|
if (!state) {
|
|
39
|
-
throw new Error("
|
|
39
|
+
throw new Error("Mnemopi backend is not initialised for this session.");
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
try {
|
|
@@ -56,11 +56,7 @@ export class MemoryReflectTool implements AgentTool<typeof memoryReflectSchema>
|
|
|
56
56
|
details: {},
|
|
57
57
|
};
|
|
58
58
|
} catch (err) {
|
|
59
|
-
logger.warn("reflect failed", {
|
|
60
|
-
backend: "prometheus-memory",
|
|
61
|
-
bank: state.config.bank,
|
|
62
|
-
error: String(err),
|
|
63
|
-
});
|
|
59
|
+
logger.warn("reflect failed", { backend: "mnemopi", bank: state.config.bank, error: String(err) });
|
|
64
60
|
throw err instanceof Error ? err : new Error(String(err));
|
|
65
61
|
}
|
|
66
62
|
}
|