@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
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import * as fs from "node:fs/promises";
|
|
2
2
|
import * as os from "node:os";
|
|
3
3
|
import { getProjectDir } from "@prometheus-ai/utils";
|
|
4
|
+
import {
|
|
5
|
+
isValidManagedSkillName,
|
|
6
|
+
MANAGED_SKILLS_PROVIDER_ID,
|
|
7
|
+
sanitizeManagedDescription,
|
|
8
|
+
} from "../autolearn/managed-skills";
|
|
4
9
|
import { skillCapability } from "../capability/skill";
|
|
5
10
|
import type { SourceMeta } from "../capability/types";
|
|
6
11
|
import type { SkillsSettings } from "../config/settings";
|
|
@@ -54,6 +59,26 @@ export function resetActiveSkillsForTests(): void {
|
|
|
54
59
|
activeSkills = [];
|
|
55
60
|
}
|
|
56
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Whether `name` is already claimed by an active authored (non-managed) skill.
|
|
64
|
+
*
|
|
65
|
+
* Managed (auto-learn) skills resolve dead-last in discovery, so an authored
|
|
66
|
+
* skill of the same name always wins (see `loadSkills`) and a managed skill
|
|
67
|
+
* written under an authored name is silently dropped — it never surfaces.
|
|
68
|
+
* `manage_skill` create consults this to refuse the write up front instead of
|
|
69
|
+
* reporting a false "Created" for a skill that can never appear.
|
|
70
|
+
*/
|
|
71
|
+
export function isNameClaimedByAuthoredSkill(name: string): boolean {
|
|
72
|
+
return getActiveSkills().some(
|
|
73
|
+
skill =>
|
|
74
|
+
skillNameKey(skill.name) === skillNameKey(name) && skill._source?.provider !== MANAGED_SKILLS_PROVIDER_ID,
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function skillNameKey(name: string): string {
|
|
79
|
+
return name.trim().toLowerCase();
|
|
80
|
+
}
|
|
81
|
+
|
|
57
82
|
export interface LoadSkillsFromDirOptions {
|
|
58
83
|
/** Directory to scan for skills */
|
|
59
84
|
dir: string;
|
|
@@ -105,31 +130,45 @@ export async function loadSkills(options: LoadSkillsOptions = {}): Promise<LoadS
|
|
|
105
130
|
enableCodexUser = true,
|
|
106
131
|
enableClaudeUser = true,
|
|
107
132
|
enableClaudeProject = true,
|
|
133
|
+
enablePiUser = true,
|
|
134
|
+
enablePiProject = true,
|
|
135
|
+
enableAgentsUser = true,
|
|
136
|
+
enableAgentsProject = true,
|
|
108
137
|
customDirectories = [],
|
|
109
138
|
ignoredSkills = [],
|
|
110
139
|
includeSkills = [],
|
|
111
140
|
disabledExtensions = [],
|
|
112
141
|
} = options;
|
|
113
|
-
const enablePrometheusUser = options.enablePrometheusUser ?? true;
|
|
114
|
-
const enablePrometheusProject = options.enablePrometheusProject ?? true;
|
|
115
142
|
|
|
116
143
|
// Early return if skills are disabled
|
|
117
144
|
if (!enabled) {
|
|
118
145
|
return { skills: [], warnings: [] };
|
|
119
146
|
}
|
|
147
|
+
// Fall-through gate for third-party CLI providers (claude-plugins, opencode,
|
|
148
|
+
// gemini, github, ...) that share user intent with the named third-party
|
|
149
|
+
// source toggles but don't have a dedicated control of their own. Only the
|
|
150
|
+
// third-party toggles count here: the Prometheus-native providers (`agents`,
|
|
151
|
+
// `native`) get explicit branches in `isSourceEnabled` below, so folding
|
|
152
|
+
// them into the fallback would re-enable unrelated third-party CLIs whenever
|
|
153
|
+
// the user kept the default `.agent[s]/skills` toggles on while turning off
|
|
154
|
+
// Codex/Claude/Pi (issue #2401 / PR #2405 review).
|
|
155
|
+
const anyThirdPartySkillToggleEnabled =
|
|
156
|
+
enableCodexUser || enableClaudeUser || enableClaudeProject || enablePiUser || enablePiProject;
|
|
120
157
|
|
|
121
|
-
const anyBuiltInSkillSourceEnabled =
|
|
122
|
-
enableCodexUser || enableClaudeUser || enableClaudeProject || enablePrometheusUser || enablePrometheusProject;
|
|
123
|
-
// Helper to check if a source is enabled
|
|
124
158
|
function isSourceEnabled(source: SourceMeta): boolean {
|
|
125
159
|
const { provider, level } = source;
|
|
160
|
+
// Managed skills (auto-learn) are Prometheus-native and discovered unconditionally
|
|
161
|
+
// — third-party CLI toggles must never silently hide them (cf. #2401). The
|
|
162
|
+
// master `enabled` flag above still gates them.
|
|
163
|
+
if (provider === MANAGED_SKILLS_PROVIDER_ID) return true;
|
|
126
164
|
if (provider === "codex" && level === "user") return enableCodexUser;
|
|
127
165
|
if (provider === "claude" && level === "user") return enableClaudeUser;
|
|
128
166
|
if (provider === "claude" && level === "project") return enableClaudeProject;
|
|
129
|
-
if (provider === "native" && level === "user") return
|
|
130
|
-
if (provider === "native" && level === "project") return
|
|
131
|
-
|
|
132
|
-
return
|
|
167
|
+
if (provider === "native" && level === "user") return enablePiUser;
|
|
168
|
+
if (provider === "native" && level === "project") return enablePiProject;
|
|
169
|
+
if (provider === "agents" && level === "user") return enableAgentsUser;
|
|
170
|
+
if (provider === "agents" && level === "project") return enableAgentsProject;
|
|
171
|
+
return anyThirdPartySkillToggleEnabled;
|
|
133
172
|
}
|
|
134
173
|
|
|
135
174
|
// Use capability API to load all skills
|
|
@@ -162,6 +201,15 @@ export async function loadSkills(options: LoadSkillsOptions = {}): Promise<LoadS
|
|
|
162
201
|
if (!matchesIncludePatterns(capSkill.name)) return false;
|
|
163
202
|
return true;
|
|
164
203
|
});
|
|
204
|
+
const enabledAuthoredSkillNames = new Set<string>();
|
|
205
|
+
for (const capSkill of result.all) {
|
|
206
|
+
if (capSkill._source.provider === MANAGED_SKILLS_PROVIDER_ID) continue;
|
|
207
|
+
if (disabledSkillNames.has(capSkill.name)) continue;
|
|
208
|
+
if (!isSourceEnabled(capSkill._source)) continue;
|
|
209
|
+
if (matchesIgnorePatterns(capSkill.name)) continue;
|
|
210
|
+
if (!matchesIncludePatterns(capSkill.name)) continue;
|
|
211
|
+
enabledAuthoredSkillNames.add(skillNameKey(capSkill.name));
|
|
212
|
+
}
|
|
165
213
|
|
|
166
214
|
// Batch resolve all real paths in parallel
|
|
167
215
|
const realPaths = await Promise.all(
|
|
@@ -177,6 +225,9 @@ export async function loadSkills(options: LoadSkillsOptions = {}): Promise<LoadS
|
|
|
177
225
|
// Process skills with resolved paths
|
|
178
226
|
for (let i = 0; i < filteredSkills.length; i++) {
|
|
179
227
|
const capSkill = filteredSkills[i];
|
|
228
|
+
// Managed (auto-learn) skills are resolved dead-last (below) so any
|
|
229
|
+
// authored skill of the same name — from ANY provider or custom dir — wins.
|
|
230
|
+
if (capSkill._source.provider === MANAGED_SKILLS_PROVIDER_ID) continue;
|
|
180
231
|
const resolvedPath = realPaths[i];
|
|
181
232
|
|
|
182
233
|
// Skip silently if we've already loaded this exact file (via symlink)
|
|
@@ -256,6 +307,7 @@ export async function loadSkills(options: LoadSkillsOptions = {}): Promise<LoadS
|
|
|
256
307
|
for (let i = 0; i < allCustomSkills.length; i++) {
|
|
257
308
|
const { skill } = allCustomSkills[i];
|
|
258
309
|
const resolvedPath = customRealPaths[i];
|
|
310
|
+
enabledAuthoredSkillNames.add(skillNameKey(skill.name));
|
|
259
311
|
if (realPathSet.has(resolvedPath)) continue;
|
|
260
312
|
|
|
261
313
|
const existing = skillMap.get(skill.name);
|
|
@@ -270,6 +322,58 @@ export async function loadSkills(options: LoadSkillsOptions = {}): Promise<LoadS
|
|
|
270
322
|
}
|
|
271
323
|
}
|
|
272
324
|
|
|
325
|
+
// Managed (auto-learn) skills resolve dead-last with first-wins. Source from
|
|
326
|
+
// result.all (pre-dedup): capability-level dedup runs BEFORE isSourceEnabled,
|
|
327
|
+
// so a managed skill can be shadowed by a higher-priority authored skill that
|
|
328
|
+
// is itself disabled here — managed must stay visible regardless of toggles.
|
|
329
|
+
// Validate the on-disk name (a hand-placed managed file could carry an unsafe
|
|
330
|
+
// frontmatter name) and re-sanitize the description on read. Descriptions and
|
|
331
|
+
// names both render unescaped into the system prompt.
|
|
332
|
+
const managedCandidates = result.all.filter(
|
|
333
|
+
capSkill =>
|
|
334
|
+
capSkill._source.provider === MANAGED_SKILLS_PROVIDER_ID &&
|
|
335
|
+
isValidManagedSkillName(capSkill.name) &&
|
|
336
|
+
!disabledSkillNames.has(capSkill.name) &&
|
|
337
|
+
!matchesIgnorePatterns(capSkill.name) &&
|
|
338
|
+
matchesIncludePatterns(capSkill.name),
|
|
339
|
+
);
|
|
340
|
+
// Names claimed by any ENABLED authored skill (from the pre-dedup superset).
|
|
341
|
+
// Managed defers to these even when capability dedup hid an enabled authored
|
|
342
|
+
// skill behind a disabled higher-priority one, so managed never masks it.
|
|
343
|
+
const managedRealPaths = await Promise.all(
|
|
344
|
+
managedCandidates.map(async capSkill => {
|
|
345
|
+
try {
|
|
346
|
+
return await fs.realpath(capSkill.path);
|
|
347
|
+
} catch {
|
|
348
|
+
return capSkill.path;
|
|
349
|
+
}
|
|
350
|
+
}),
|
|
351
|
+
);
|
|
352
|
+
for (let i = 0; i < managedCandidates.length; i++) {
|
|
353
|
+
const capSkill = managedCandidates[i];
|
|
354
|
+
const resolvedPath = managedRealPaths[i];
|
|
355
|
+
if (realPathSet.has(resolvedPath)) continue;
|
|
356
|
+
if (enabledAuthoredSkillNames.has(skillNameKey(capSkill.name))) continue; // an enabled authored skill owns this name
|
|
357
|
+
// Already claimed — e.g. by a custom-directory skill. LOAD-BEARING: custom
|
|
358
|
+
// dirs also populate `enabledAuthoredSkillNames` above; this map check is
|
|
359
|
+
// the final veto that lets an authored skill win over a same-named managed one.
|
|
360
|
+
// The custom-dir loop (which populates
|
|
361
|
+
// skillMap, ~30 lines up) MUST run before this block — do not reorder.
|
|
362
|
+
if (skillMap.has(capSkill.name)) continue;
|
|
363
|
+
const rawDescription =
|
|
364
|
+
typeof capSkill.frontmatter?.description === "string" ? capSkill.frontmatter.description : "";
|
|
365
|
+
skillMap.set(capSkill.name, {
|
|
366
|
+
name: capSkill.name,
|
|
367
|
+
description: sanitizeManagedDescription(rawDescription),
|
|
368
|
+
filePath: capSkill.path,
|
|
369
|
+
baseDir: capSkill.path.replace(/[\\/]SKILL\.md$/, ""),
|
|
370
|
+
source: `${capSkill._source.provider}:${capSkill.level}`,
|
|
371
|
+
hide: capSkill.frontmatter?.hide === true || capSkill.frontmatter?.disableModelInvocation === true,
|
|
372
|
+
_source: capSkill._source,
|
|
373
|
+
});
|
|
374
|
+
realPathSet.add(resolvedPath);
|
|
375
|
+
}
|
|
376
|
+
|
|
273
377
|
const skills = Array.from(skillMap.values());
|
|
274
378
|
// Deterministic ordering for prompt stability (case-insensitive, then exact name, then path).
|
|
275
379
|
skills.sort((a, b) => compareSkillOrder(a.name, a.filePath, b.name, b.filePath));
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import type { AutocompleteItem } from "@prometheus-ai/tui";
|
|
2
1
|
import { parseFrontmatter, prompt } from "@prometheus-ai/utils";
|
|
3
2
|
import { slashCommandCapability } from "../capability/slash-command";
|
|
4
3
|
import { appendInlineArgsFallback, templateUsesInlineArgPlaceholders } from "../config/prompt-templates";
|
|
5
4
|
import type { SlashCommand } from "../discovery";
|
|
6
5
|
import { loadCapability } from "../discovery";
|
|
7
|
-
import {
|
|
8
|
-
BUILTIN_SLASH_COMMAND_DEFS,
|
|
9
|
-
type BuiltinSlashCommand,
|
|
10
|
-
type SubcommandDef,
|
|
11
|
-
} from "../slash-commands/builtin-registry";
|
|
12
6
|
import { EMBEDDED_COMMAND_TEMPLATES } from "../task/commands";
|
|
13
7
|
import { parseCommandArgs, substituteArgs } from "../utils/command-args";
|
|
14
8
|
|
|
@@ -24,97 +18,7 @@ export interface SlashCommandInfo {
|
|
|
24
18
|
path?: string;
|
|
25
19
|
}
|
|
26
20
|
|
|
27
|
-
export type { BuiltinSlashCommand, SubcommandDef } from "../slash-commands/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Build getArgumentCompletions from declarative subcommand definitions.
|
|
31
|
-
* Returns subcommand names filtered by prefix in the dropdown.
|
|
32
|
-
*/
|
|
33
|
-
function buildArgumentCompletions(subcommands: SubcommandDef[]): (prefix: string) => AutocompleteItem[] | null {
|
|
34
|
-
return (argumentPrefix: string) => {
|
|
35
|
-
if (argumentPrefix.includes(" ")) return null; // past the subcommand
|
|
36
|
-
const lower = argumentPrefix.toLowerCase();
|
|
37
|
-
const matches = subcommands
|
|
38
|
-
.filter(s => s.name.startsWith(lower))
|
|
39
|
-
.map(s => ({
|
|
40
|
-
value: `${s.name} `,
|
|
41
|
-
label: s.name,
|
|
42
|
-
description: s.description,
|
|
43
|
-
hint: s.usage,
|
|
44
|
-
}));
|
|
45
|
-
return matches.length > 0 ? matches : null;
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Build getInlineHint from declarative subcommand definitions.
|
|
51
|
-
* Shows remaining completion + usage as dim ghost text after cursor.
|
|
52
|
-
*/
|
|
53
|
-
function buildSubcommandInlineHint(subcommands: SubcommandDef[]): (argumentText: string) => string | null {
|
|
54
|
-
return (argumentText: string) => {
|
|
55
|
-
const trimmed = argumentText.trimStart();
|
|
56
|
-
const spaceIndex = trimmed.indexOf(" ");
|
|
57
|
-
|
|
58
|
-
if (spaceIndex === -1) {
|
|
59
|
-
// Still typing subcommand name — show remaining chars + usage
|
|
60
|
-
const prefix = trimmed.toLowerCase();
|
|
61
|
-
if (prefix.length === 0) return null;
|
|
62
|
-
const match = subcommands.find(s => s.name.startsWith(prefix));
|
|
63
|
-
if (!match) return null;
|
|
64
|
-
const remaining = match.name.slice(prefix.length);
|
|
65
|
-
return remaining + (match.usage ? ` ${match.usage}` : "");
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Subcommand typed — show remaining usage params
|
|
69
|
-
const subName = trimmed.slice(0, spaceIndex).toLowerCase();
|
|
70
|
-
const afterSub = trimmed.slice(spaceIndex + 1);
|
|
71
|
-
const sub = subcommands.find(s => s.name === subName);
|
|
72
|
-
if (!sub?.usage) return null;
|
|
73
|
-
|
|
74
|
-
if (afterSub.length > 0) {
|
|
75
|
-
const usageParts = sub.usage.split(" ");
|
|
76
|
-
const inputParts = afterSub.trim().split(/\s+/);
|
|
77
|
-
const remaining = usageParts.slice(inputParts.length);
|
|
78
|
-
return remaining.length > 0 ? remaining.join(" ") : null;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return sub.usage;
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Build getInlineHint for commands with a simple static hint string.
|
|
87
|
-
* Shows the hint only when no arguments have been typed yet.
|
|
88
|
-
*/
|
|
89
|
-
function buildStaticInlineHint(hint: string): (argumentText: string) => string | null {
|
|
90
|
-
return (argumentText: string) => (argumentText.trim().length === 0 ? hint : null);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Materialized builtin slash commands with completion functions derived from
|
|
95
|
-
* declarative subcommand/hint definitions.
|
|
96
|
-
*/
|
|
97
|
-
export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<
|
|
98
|
-
BuiltinSlashCommand & {
|
|
99
|
-
getArgumentCompletions?: (prefix: string) => AutocompleteItem[] | null;
|
|
100
|
-
getInlineHint?: (argumentText: string) => string | null;
|
|
101
|
-
}
|
|
102
|
-
> = BUILTIN_SLASH_COMMAND_DEFS.map(cmd => {
|
|
103
|
-
if (cmd.subcommands) {
|
|
104
|
-
return {
|
|
105
|
-
...cmd,
|
|
106
|
-
getArgumentCompletions: buildArgumentCompletions(cmd.subcommands),
|
|
107
|
-
getInlineHint: buildSubcommandInlineHint(cmd.subcommands),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
if (cmd.inlineHint) {
|
|
111
|
-
return {
|
|
112
|
-
...cmd,
|
|
113
|
-
getInlineHint: buildStaticInlineHint(cmd.inlineHint),
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
return cmd;
|
|
117
|
-
});
|
|
21
|
+
export type { BuiltinSlashCommand, SubcommandDef } from "../slash-commands/types";
|
|
118
22
|
|
|
119
23
|
/**
|
|
120
24
|
* Represents a custom slash command loaded from a file
|
|
@@ -2,17 +2,26 @@ import type { GatewayEvent } from "../../types";
|
|
|
2
2
|
|
|
3
3
|
export interface TelegramGatewayAccessPolicy {
|
|
4
4
|
allowedUserIds: string[];
|
|
5
|
+
allowedChatIds?: string[];
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
export type TelegramGatewayAuthorizer = (event: GatewayEvent) => boolean | Promise<boolean>;
|
|
8
9
|
|
|
9
|
-
export function createTelegramUserAllowlistPolicy(
|
|
10
|
+
export function createTelegramUserAllowlistPolicy(
|
|
11
|
+
userIds: Iterable<string>,
|
|
12
|
+
chatIds: Iterable<string> = [],
|
|
13
|
+
): TelegramGatewayAccessPolicy | undefined {
|
|
10
14
|
const allowedUserIds = normalizeTelegramUserIds(userIds);
|
|
11
|
-
|
|
15
|
+
const allowedChatIds = normalizeTelegramChatIds(chatIds);
|
|
16
|
+
if (allowedUserIds.length === 0 && allowedChatIds.length === 0) return undefined;
|
|
17
|
+
return {
|
|
18
|
+
allowedUserIds,
|
|
19
|
+
...(allowedChatIds.length > 0 ? { allowedChatIds } : {}),
|
|
20
|
+
};
|
|
12
21
|
}
|
|
13
22
|
|
|
14
23
|
export function isTelegramGatewayAccessRestricted(policy: TelegramGatewayAccessPolicy | undefined): boolean {
|
|
15
|
-
return (policy?.allowedUserIds.length ?? 0) > 0;
|
|
24
|
+
return (policy?.allowedUserIds.length ?? 0) > 0 || (policy?.allowedChatIds?.length ?? 0) > 0;
|
|
16
25
|
}
|
|
17
26
|
|
|
18
27
|
export function isTelegramGatewayEventAuthorized(
|
|
@@ -21,7 +30,9 @@ export function isTelegramGatewayEventAuthorized(
|
|
|
21
30
|
): boolean {
|
|
22
31
|
if (!policy || !isTelegramGatewayAccessRestricted(policy)) return true;
|
|
23
32
|
const userId = event.source.userId?.trim();
|
|
24
|
-
|
|
33
|
+
if (userId !== undefined && policy.allowedUserIds.includes(userId)) return true;
|
|
34
|
+
const chatId = event.source.chatId.trim();
|
|
35
|
+
return chatId.length > 0 && (policy.allowedChatIds?.includes(chatId) ?? false);
|
|
25
36
|
}
|
|
26
37
|
|
|
27
38
|
export function normalizeTelegramUserIds(userIds: Iterable<string>): string[] {
|
|
@@ -36,6 +47,18 @@ export function normalizeTelegramUserIds(userIds: Iterable<string>): string[] {
|
|
|
36
47
|
return normalized;
|
|
37
48
|
}
|
|
38
49
|
|
|
50
|
+
export function normalizeTelegramChatIds(chatIds: Iterable<string>): string[] {
|
|
51
|
+
const normalized: string[] = [];
|
|
52
|
+
const seen = new Set<string>();
|
|
53
|
+
for (const chatId of chatIds) {
|
|
54
|
+
const value = normalizeTelegramSignedIntegerId(chatId, "Telegram chat id");
|
|
55
|
+
if (seen.has(value)) continue;
|
|
56
|
+
seen.add(value);
|
|
57
|
+
normalized.push(value);
|
|
58
|
+
}
|
|
59
|
+
return normalized;
|
|
60
|
+
}
|
|
61
|
+
|
|
39
62
|
export function normalizeTelegramPositiveIntegerId(value: string, label: string): string {
|
|
40
63
|
const trimmed = value.trim();
|
|
41
64
|
if (!/^[0-9]+$/u.test(trimmed)) {
|
|
@@ -48,6 +71,18 @@ export function normalizeTelegramPositiveIntegerId(value: string, label: string)
|
|
|
48
71
|
return String(numeric);
|
|
49
72
|
}
|
|
50
73
|
|
|
74
|
+
export function normalizeTelegramSignedIntegerId(value: string, label: string): string {
|
|
75
|
+
const trimmed = value.trim();
|
|
76
|
+
if (!/^-?[0-9]+$/u.test(trimmed)) {
|
|
77
|
+
throw new Error(`${label} must be an integer`);
|
|
78
|
+
}
|
|
79
|
+
const numeric = Number(trimmed);
|
|
80
|
+
if (!Number.isSafeInteger(numeric) || numeric === 0) {
|
|
81
|
+
throw new Error(`${label} must be a non-zero safe integer`);
|
|
82
|
+
}
|
|
83
|
+
return String(numeric);
|
|
84
|
+
}
|
|
85
|
+
|
|
51
86
|
export function toTelegramPositiveIntegerId(value: string, label: string): number {
|
|
52
87
|
return Number(normalizeTelegramPositiveIntegerId(value, label));
|
|
53
88
|
}
|
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
GatewayChatType,
|
|
4
4
|
GatewayEvent,
|
|
5
5
|
GatewayEventFeatures,
|
|
6
|
+
GatewayEventKind,
|
|
6
7
|
GatewayLocation,
|
|
7
8
|
GatewayMediaAttachment,
|
|
8
9
|
GatewayMediaVariant,
|
|
@@ -19,7 +20,8 @@ export function normalizeTelegramUpdate(
|
|
|
19
20
|
update: TelegramUpdate,
|
|
20
21
|
options: TelegramNormalizeOptions = {},
|
|
21
22
|
): GatewayEvent | undefined {
|
|
22
|
-
const
|
|
23
|
+
const messageUpdate = getTelegramMessageUpdate(update);
|
|
24
|
+
const message = messageUpdate?.message;
|
|
23
25
|
if (!message) return undefined;
|
|
24
26
|
const messageUser = message.from ?? message.direct_messages_topic?.user;
|
|
25
27
|
if (messageUser?.is_bot && !options.allowBotMessages) return undefined;
|
|
@@ -47,6 +49,7 @@ export function normalizeTelegramUpdate(
|
|
|
47
49
|
text,
|
|
48
50
|
receivedAt,
|
|
49
51
|
};
|
|
52
|
+
if (messageUpdate.kind !== "message") event.kind = messageUpdate.kind;
|
|
50
53
|
if (media.length > 0) event.media = media;
|
|
51
54
|
if (features !== undefined) event.features = features;
|
|
52
55
|
|
|
@@ -72,6 +75,18 @@ export function normalizeTelegramUpdate(
|
|
|
72
75
|
return event;
|
|
73
76
|
}
|
|
74
77
|
|
|
78
|
+
function getTelegramMessageUpdate(
|
|
79
|
+
update: TelegramUpdate,
|
|
80
|
+
): { kind: Exclude<GatewayEventKind, "callback_query">; message: TelegramMessage } | undefined {
|
|
81
|
+
if (update.message !== undefined) return { kind: "message", message: update.message };
|
|
82
|
+
if (update.edited_message !== undefined) return { kind: "edited_message", message: update.edited_message };
|
|
83
|
+
if (update.channel_post !== undefined) return { kind: "channel_post", message: update.channel_post };
|
|
84
|
+
if (update.edited_channel_post !== undefined) {
|
|
85
|
+
return { kind: "edited_channel_post", message: update.edited_channel_post };
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
|
|
75
90
|
export function normalizeTelegramCallbackQuery(
|
|
76
91
|
update: TelegramUpdate,
|
|
77
92
|
options: TelegramNormalizeOptions = {},
|
|
@@ -6,7 +6,13 @@ import {
|
|
|
6
6
|
} from "./send-message";
|
|
7
7
|
import type { TelegramUpdate, TelegramUser } from "./types";
|
|
8
8
|
|
|
9
|
-
export const TELEGRAM_GATEWAY_ALLOWED_UPDATES = [
|
|
9
|
+
export const TELEGRAM_GATEWAY_ALLOWED_UPDATES = [
|
|
10
|
+
"message",
|
|
11
|
+
"edited_message",
|
|
12
|
+
"channel_post",
|
|
13
|
+
"edited_channel_post",
|
|
14
|
+
"callback_query",
|
|
15
|
+
] as const;
|
|
10
16
|
|
|
11
17
|
export interface TelegramSetupApiOptions {
|
|
12
18
|
apiBaseUrl?: string;
|
|
@@ -33,7 +33,12 @@ export const TELEGRAM_UPDATE_TYPES = [
|
|
|
33
33
|
] as const;
|
|
34
34
|
|
|
35
35
|
export type TelegramUpdateType = (typeof TELEGRAM_UPDATE_TYPES)[number];
|
|
36
|
-
export type TelegramRoutableUpdateType =
|
|
36
|
+
export type TelegramRoutableUpdateType =
|
|
37
|
+
| "message"
|
|
38
|
+
| "edited_message"
|
|
39
|
+
| "channel_post"
|
|
40
|
+
| "edited_channel_post"
|
|
41
|
+
| "callback_query";
|
|
37
42
|
|
|
38
43
|
export type TelegramWebhookIgnoreReason =
|
|
39
44
|
| "unsupported_update_type"
|
|
@@ -170,7 +175,7 @@ export async function processTelegramUpdate(
|
|
|
170
175
|
}
|
|
171
176
|
event = normalizeTelegramCallbackQuery(update, options);
|
|
172
177
|
} else {
|
|
173
|
-
if (!hasTelegramMessageEnvelope(update)) {
|
|
178
|
+
if (!hasTelegramMessageEnvelope(update, updateType)) {
|
|
174
179
|
return rejectWebhook(400, "invalid_json_update");
|
|
175
180
|
}
|
|
176
181
|
event = normalizeTelegramUpdate(update, options);
|
|
@@ -223,7 +228,13 @@ export function getTelegramUpdateType(update: TelegramUpdate): TelegramUpdateTyp
|
|
|
223
228
|
export function isRoutableUpdateType(
|
|
224
229
|
updateType: TelegramUpdateType | undefined,
|
|
225
230
|
): updateType is TelegramRoutableUpdateType {
|
|
226
|
-
return
|
|
231
|
+
return (
|
|
232
|
+
updateType === "message" ||
|
|
233
|
+
updateType === "edited_message" ||
|
|
234
|
+
updateType === "channel_post" ||
|
|
235
|
+
updateType === "edited_channel_post" ||
|
|
236
|
+
updateType === "callback_query"
|
|
237
|
+
);
|
|
227
238
|
}
|
|
228
239
|
|
|
229
240
|
export function isValidTelegramWebhookSecretToken(secretToken: string): boolean {
|
|
@@ -256,8 +267,8 @@ function getTelegramCallbackQueryId(update: TelegramUpdate): string | undefined
|
|
|
256
267
|
return normalized ? normalized : undefined;
|
|
257
268
|
}
|
|
258
269
|
|
|
259
|
-
function hasTelegramMessageEnvelope(update: TelegramUpdate): boolean {
|
|
260
|
-
const message = (update
|
|
270
|
+
function hasTelegramMessageEnvelope(update: TelegramUpdate, updateType: TelegramRoutableUpdateType): boolean {
|
|
271
|
+
const message = getTelegramMessageEnvelope(update, updateType);
|
|
261
272
|
if (!isRecord(message)) return false;
|
|
262
273
|
|
|
263
274
|
const chat = message.chat;
|
|
@@ -273,6 +284,16 @@ function hasTelegramMessageEnvelope(update: TelegramUpdate): boolean {
|
|
|
273
284
|
);
|
|
274
285
|
}
|
|
275
286
|
|
|
287
|
+
function getTelegramMessageEnvelope(update: TelegramUpdate, updateType: TelegramRoutableUpdateType): unknown {
|
|
288
|
+
if (updateType === "message") return (update as unknown as Record<string, unknown>).message;
|
|
289
|
+
if (updateType === "edited_message") return (update as unknown as Record<string, unknown>).edited_message;
|
|
290
|
+
if (updateType === "channel_post") return (update as unknown as Record<string, unknown>).channel_post;
|
|
291
|
+
if (updateType === "edited_channel_post") {
|
|
292
|
+
return (update as unknown as Record<string, unknown>).edited_channel_post;
|
|
293
|
+
}
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
|
|
276
297
|
function isValidTelegramChatId(value: unknown): boolean {
|
|
277
298
|
if (typeof value === "number") return Number.isSafeInteger(value);
|
|
278
299
|
if (typeof value === "string") return value.trim().length > 0;
|
package/src/gateway/context.ts
CHANGED
|
@@ -72,10 +72,18 @@ export function renderGatewayEventPrompt(event: GatewayEvent): string {
|
|
|
72
72
|
if (event.text.trim().length === 0) {
|
|
73
73
|
throw new Error("Gateway event text cannot be empty");
|
|
74
74
|
}
|
|
75
|
-
const label = event.kind
|
|
75
|
+
const label = getGatewayPromptLabel(event.kind);
|
|
76
76
|
return `${renderGatewayEventContext(event)}\n\n${label}:\n${event.text}`;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
function getGatewayPromptLabel(kind: GatewayEvent["kind"]): string {
|
|
80
|
+
if (kind === "callback_query") return "Gateway user action";
|
|
81
|
+
if (kind === "edited_message") return "Gateway edited user message";
|
|
82
|
+
if (kind === "channel_post") return "Gateway channel post";
|
|
83
|
+
if (kind === "edited_channel_post") return "Gateway edited channel post";
|
|
84
|
+
return "Gateway user message";
|
|
85
|
+
}
|
|
86
|
+
|
|
79
87
|
function addInteraction(
|
|
80
88
|
payload: GatewayEventContextPayload,
|
|
81
89
|
interaction: GatewayEvent["interaction"] | undefined,
|
package/src/gateway/types.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type GatewayChatType = "direct" | "group" | "supergroup" | "channel";
|
|
|
4
4
|
|
|
5
5
|
export type GatewayParticipantScope = "shared" | "per-user";
|
|
6
6
|
|
|
7
|
-
export type GatewayEventKind = "message" | "callback_query";
|
|
7
|
+
export type GatewayEventKind = "message" | "edited_message" | "channel_post" | "edited_channel_post" | "callback_query";
|
|
8
8
|
|
|
9
9
|
export interface GatewayCallbackInteraction {
|
|
10
10
|
type: "callback_query";
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { instrumentedCompleteSimple, resolveTelemetry } from "@prometheus-ai/agent-core";
|
|
2
|
+
import type { Tool } from "@prometheus-ai/ai";
|
|
3
|
+
import { prompt } from "@prometheus-ai/utils";
|
|
4
|
+
import { extractTextContent, extractToolCall, parseJsonPayload } from "../commit/utils";
|
|
5
|
+
import guidedGoalInterviewPrompt from "../prompts/goals/guided-goal-interview.md" with { type: "text" };
|
|
6
|
+
import guidedGoalSystemPrompt from "../prompts/goals/guided-goal-system.md" with { type: "text" };
|
|
7
|
+
import type { AgentSession } from "../session/agent-session";
|
|
8
|
+
import { toReasoningEffort } from "../thinking";
|
|
9
|
+
|
|
10
|
+
const RESPOND_TOOL_NAME = "respond";
|
|
11
|
+
|
|
12
|
+
const RESPOND_TOOL: Tool = {
|
|
13
|
+
name: RESPOND_TOOL_NAME,
|
|
14
|
+
description: "Return the next guided-goal interview step.",
|
|
15
|
+
parameters: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
kind: { type: "string", enum: ["question", "ready"] },
|
|
19
|
+
question: { type: "string" },
|
|
20
|
+
objective: { type: "string" },
|
|
21
|
+
},
|
|
22
|
+
required: ["kind"],
|
|
23
|
+
additionalProperties: false,
|
|
24
|
+
},
|
|
25
|
+
strict: false,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export interface GuidedGoalMessage {
|
|
29
|
+
role: "user" | "assistant";
|
|
30
|
+
content: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type GuidedGoalTurnResult =
|
|
34
|
+
| { kind: "question"; question: string; objective?: string }
|
|
35
|
+
| { kind: "ready"; objective: string };
|
|
36
|
+
|
|
37
|
+
export interface GuidedGoalTurnOptions {
|
|
38
|
+
messages: readonly GuidedGoalMessage[];
|
|
39
|
+
signal?: AbortSignal;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function parseGuidedGoalPayload(value: unknown): GuidedGoalTurnResult {
|
|
43
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
44
|
+
throw new Error("guided goal returned an invalid response");
|
|
45
|
+
}
|
|
46
|
+
const payload = value as Record<string, unknown>;
|
|
47
|
+
if (payload.kind === "question" && typeof payload.question === "string" && payload.question.trim()) {
|
|
48
|
+
const question = payload.question.trim();
|
|
49
|
+
if (typeof payload.objective === "string" && payload.objective.trim()) {
|
|
50
|
+
return { kind: "question", question, objective: payload.objective.trim() };
|
|
51
|
+
}
|
|
52
|
+
return { kind: "question", question };
|
|
53
|
+
}
|
|
54
|
+
if (payload.kind === "ready" && typeof payload.objective === "string" && payload.objective.trim()) {
|
|
55
|
+
return { kind: "ready", objective: payload.objective.trim() };
|
|
56
|
+
}
|
|
57
|
+
throw new Error("guided goal returned an invalid response");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function parseToolArguments(value: unknown): unknown {
|
|
61
|
+
return typeof value === "string" ? parseJsonPayload(value) : value;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export async function runGuidedGoalTurn(
|
|
65
|
+
session: AgentSession,
|
|
66
|
+
options: GuidedGoalTurnOptions,
|
|
67
|
+
): Promise<GuidedGoalTurnResult> {
|
|
68
|
+
const plan = session.resolveRoleModelWithThinking("plan");
|
|
69
|
+
const resolved = plan.model ? plan : session.resolveRoleModelWithThinking("slow");
|
|
70
|
+
if (!resolved.model) {
|
|
71
|
+
throw new Error("No plan or slow model is available for /guided-goal.");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const apiKey = await session.modelRegistry.getApiKey(resolved.model, session.sessionId);
|
|
75
|
+
if (!apiKey) {
|
|
76
|
+
throw new Error(`No API key for ${resolved.model.provider}/${resolved.model.id}`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const userPrompt = prompt.render(guidedGoalInterviewPrompt, {
|
|
80
|
+
messages: options.messages.map(message => ({ label: message.role.toUpperCase(), content: message.content })),
|
|
81
|
+
});
|
|
82
|
+
// Secret obfuscation: route the user-authored transcript through the session obfuscator the
|
|
83
|
+
// same way normal turns do, so an API key / secret typed into the rough goal or an answer is
|
|
84
|
+
// never sent verbatim to the plan/slow provider. Deobfuscated again below before display/use.
|
|
85
|
+
const obfuscator = session.obfuscator;
|
|
86
|
+
const promptText = obfuscator?.hasSecrets() ? obfuscator.obfuscate(userPrompt) : userPrompt;
|
|
87
|
+
const response = await instrumentedCompleteSimple(
|
|
88
|
+
resolved.model,
|
|
89
|
+
{
|
|
90
|
+
systemPrompt: [prompt.render(guidedGoalSystemPrompt)],
|
|
91
|
+
messages: [{ role: "user", content: [{ type: "text", text: promptText }], timestamp: Date.now() }],
|
|
92
|
+
tools: [RESPOND_TOOL],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
apiKey: session.modelRegistry.resolver(resolved.model, session.sessionId),
|
|
96
|
+
signal: options.signal,
|
|
97
|
+
reasoning: toReasoningEffort(resolved.thinkingLevel),
|
|
98
|
+
toolChoice: { type: "tool", name: RESPOND_TOOL_NAME },
|
|
99
|
+
},
|
|
100
|
+
{ telemetry: resolveTelemetry(session.agent.telemetry, session.sessionId), oneshotKind: "guided_goal_setup" },
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
if (response.stopReason === "error") {
|
|
104
|
+
throw new Error(response.errorMessage ?? "guided goal request failed");
|
|
105
|
+
}
|
|
106
|
+
if (response.stopReason === "aborted") {
|
|
107
|
+
throw new Error("guided goal request aborted");
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const call = extractToolCall(response, RESPOND_TOOL_NAME);
|
|
111
|
+
let result: GuidedGoalTurnResult;
|
|
112
|
+
if (call) {
|
|
113
|
+
result = parseGuidedGoalPayload(parseToolArguments(call.arguments));
|
|
114
|
+
} else {
|
|
115
|
+
const text = extractTextContent(response);
|
|
116
|
+
if (!text) {
|
|
117
|
+
throw new Error("guided goal returned an invalid response");
|
|
118
|
+
}
|
|
119
|
+
result = parseGuidedGoalPayload(parseJsonPayload(text));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Reverse the obfuscation: restore any secret placeholders the model echoed back before the
|
|
123
|
+
// question/objective is shown or the goal is started.
|
|
124
|
+
if (!obfuscator?.hasSecrets()) return result;
|
|
125
|
+
if (result.kind === "question") {
|
|
126
|
+
return {
|
|
127
|
+
kind: "question",
|
|
128
|
+
question: obfuscator.deobfuscate(result.question),
|
|
129
|
+
objective: result.objective !== undefined ? obfuscator.deobfuscate(result.objective) : undefined,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return { kind: "ready", objective: obfuscator.deobfuscate(result.objective) };
|
|
133
|
+
}
|
package/src/goals/state.ts
CHANGED