@oh-my-pi/pi-coding-agent 15.10.10 → 15.10.12
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 +142 -7
- package/dist/cli.js +23108 -0
- package/dist/tokenizers.linux-x64-gnu-xcjh3jwk.node +0 -0
- package/dist/types/async/job-manager.d.ts +18 -0
- package/dist/types/cli/args.d.ts +2 -1
- package/dist/types/cli/dry-balance-cli.d.ts +1 -1
- package/dist/types/cli/gallery-cli.d.ts +1 -1
- package/dist/types/cli/gallery-fixtures/types.d.ts +1 -1
- package/dist/types/cli/usage-cli.d.ts +72 -0
- package/dist/types/cli-commands.d.ts +12 -0
- package/dist/types/commands/launch.d.ts +5 -1
- package/dist/types/commands/read.d.ts +1 -1
- package/dist/types/commands/usage.d.ts +25 -0
- package/dist/types/config/api-key-resolver.d.ts +3 -0
- package/dist/types/config/append-only-context-mode.d.ts +2 -1
- package/dist/types/config/model-discovery.d.ts +55 -0
- package/dist/types/config/model-registry.d.ts +8 -219
- package/dist/types/config/model-resolver.d.ts +34 -10
- package/dist/types/config/model-roles.d.ts +28 -0
- package/dist/types/config/models-config-schema.d.ts +523 -42
- package/dist/types/config/models-config.d.ts +385 -0
- package/dist/types/config/settings-schema.d.ts +41 -8
- package/dist/types/config/settings.d.ts +8 -1
- package/dist/types/debug/log-viewer.d.ts +1 -1
- package/dist/types/debug/raw-sse.d.ts +1 -1
- package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
- package/dist/types/eval/backend.d.ts +0 -2
- package/dist/types/eval/idle-timeout.d.ts +0 -4
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
- package/dist/types/eval/py/executor.d.ts +5 -0
- package/dist/types/eval/py/kernel.d.ts +6 -1
- package/dist/types/eval/py/runtime.d.ts +9 -0
- package/dist/types/exec/bash-executor.d.ts +2 -0
- package/dist/types/export/html/template.generated.d.ts +1 -1
- package/dist/types/extensibility/extensions/runner.d.ts +3 -2
- package/dist/types/extensibility/extensions/types.d.ts +6 -3
- package/dist/types/hindsight/mental-models.d.ts +17 -8
- package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
- package/dist/types/internal-urls/types.d.ts +1 -1
- package/dist/types/lsp/edits.d.ts +9 -0
- package/dist/types/lsp/index.d.ts +2 -2
- package/dist/types/lsp/types.d.ts +2 -0
- package/dist/types/lsp/utils.d.ts +3 -0
- package/dist/types/mcp/json-rpc.d.ts +5 -0
- package/dist/types/memory-backend/index.d.ts +1 -0
- package/dist/types/memory-backend/runtime.d.ts +4 -0
- package/dist/types/memory-backend/types.d.ts +66 -1
- package/dist/types/mnemopi/state.d.ts +11 -1
- package/dist/types/modes/components/agent-dashboard.d.ts +1 -1
- package/dist/types/modes/components/assistant-message.d.ts +3 -1
- package/dist/types/modes/components/bash-execution.d.ts +1 -1
- package/dist/types/modes/components/copy-selector.d.ts +1 -1
- 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 +1 -1
- package/dist/types/modes/components/model-selector.d.ts +1 -1
- package/dist/types/modes/components/plan-review-overlay.d.ts +1 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +1 -1
- package/dist/types/modes/components/session-selector.d.ts +1 -1
- package/dist/types/modes/components/status-line/component.d.ts +1 -1
- package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
- package/dist/types/modes/components/transcript-container.d.ts +25 -6
- package/dist/types/modes/components/tree-selector.d.ts +1 -1
- 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 +19 -3
- package/dist/types/modes/controllers/mcp-command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/streaming-reveal.d.ts +1 -1
- package/dist/types/modes/index.d.ts +3 -3
- package/dist/types/modes/interactive-mode.d.ts +8 -3
- package/dist/types/modes/oauth-manual-input.d.ts +7 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +39 -2
- package/dist/types/modes/rpc/rpc-mode.d.ts +31 -2
- package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +75 -1
- package/dist/types/modes/setup-wizard/index.d.ts +5 -1
- package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
- package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/types.d.ts +1 -1
- package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +1 -1
- package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
- package/dist/types/modes/types.d.ts +4 -1
- package/dist/types/secrets/index.d.ts +1 -1
- package/dist/types/secrets/obfuscator.d.ts +8 -2
- package/dist/types/session/agent-session.d.ts +15 -3
- package/dist/types/session/auth-broker-config.d.ts +4 -0
- package/dist/types/session/session-manager.d.ts +1 -1
- package/dist/types/session/streaming-output.d.ts +23 -0
- package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
- package/dist/types/slash-commands/builtin-registry.d.ts +1 -0
- package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
- package/dist/types/slash-commands/types.d.ts +1 -1
- package/dist/types/ssh/connection-manager.d.ts +8 -0
- package/dist/types/system-prompt.d.ts +2 -0
- package/dist/types/task/executor.d.ts +1 -0
- package/dist/types/task/index.d.ts +2 -2
- package/dist/types/task/parallel.d.ts +2 -2
- package/dist/types/task/types.d.ts +8 -0
- package/dist/types/task/worktree.d.ts +2 -0
- package/dist/types/thinking.d.ts +4 -0
- package/dist/types/tiny/title-client.d.ts +11 -0
- package/dist/types/tiny/title-protocol.d.ts +1 -0
- package/dist/types/tools/ask.d.ts +4 -0
- package/dist/types/tools/conflict-detect.d.ts +16 -0
- package/dist/types/tools/github-cache.d.ts +7 -0
- package/dist/types/tools/index.d.ts +6 -0
- package/dist/types/tools/sqlite-reader.d.ts +3 -0
- package/dist/types/tui/output-block.d.ts +3 -3
- package/dist/types/utils/changelog.d.ts +8 -0
- package/dist/types/utils/git.d.ts +15 -2
- package/dist/types/utils/title-generator.d.ts +3 -2
- 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/providers/codex.d.ts +1 -1
- package/dist/types/web/search/providers/gemini.d.ts +1 -1
- package/examples/extensions/tools.ts +5 -4
- package/package.json +14 -11
- package/scripts/build-binary.ts +18 -23
- package/scripts/bundle-dist.ts +81 -0
- package/scripts/{dev-launch → omp} +1 -1
- package/scripts/{dev-launch-preload.ts → omp.ts} +1 -1
- package/src/async/job-manager.ts +57 -3
- package/src/auto-thinking/classifier.ts +1 -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/capability/fs.ts +10 -0
- package/src/cli/args.ts +4 -1
- package/src/cli/auth-gateway-cli.ts +1 -3
- package/src/cli/dry-balance-cli.ts +1 -1
- package/src/cli/gallery-cli.ts +1 -1
- package/src/cli/gallery-fixtures/fs.ts +1 -1
- package/src/cli/gallery-fixtures/types.ts +5 -1
- package/src/cli/list-models.ts +2 -1
- package/src/cli/usage-cli.ts +603 -0
- package/src/cli-commands.ts +30 -0
- package/src/cli.ts +76 -13
- package/src/commands/complete.ts +1 -1
- package/src/commands/launch.ts +5 -1
- package/src/commands/read.ts +6 -3
- package/src/commands/usage.ts +35 -0
- package/src/commit/agentic/agent.ts +1 -1
- package/src/commit/model-selection.ts +4 -3
- package/src/config/api-key-resolver.ts +8 -6
- package/src/config/append-only-context-mode.ts +6 -12
- package/src/config/model-discovery.ts +554 -0
- package/src/config/model-registry.ts +320 -1041
- package/src/config/model-resolver.ts +173 -156
- package/src/config/model-roles.ts +74 -0
- package/src/config/models-config-schema.ts +57 -8
- package/src/config/models-config.ts +129 -0
- package/src/config/settings-schema.ts +61 -19
- package/src/config/settings.ts +98 -4
- package/src/dap/client.ts +124 -37
- package/src/dap/session.ts +259 -158
- package/src/debug/log-viewer.ts +1 -1
- package/src/debug/raw-sse.ts +1 -1
- package/src/edit/diff.ts +47 -3
- package/src/edit/hashline/block-resolver.ts +20 -1
- package/src/edit/hashline/diff.ts +36 -1
- package/src/edit/hashline/execute.ts +47 -4
- package/src/edit/hashline/noop-loop-guard.ts +99 -0
- package/src/edit/index.ts +16 -1
- package/src/edit/modes/patch.ts +52 -0
- package/src/edit/modes/replace.ts +56 -22
- package/src/edit/notebook.ts +22 -2
- package/src/edit/renderer.ts +36 -10
- package/src/eval/__tests__/completion-bridge.test.ts +1 -1
- package/src/eval/backend.ts +0 -2
- package/src/eval/completion-bridge.ts +3 -1
- package/src/eval/idle-timeout.ts +2 -9
- package/src/eval/js/context-manager.ts +6 -8
- package/src/eval/js/executor.ts +6 -2
- package/src/eval/js/index.ts +0 -2
- package/src/eval/js/shared/helpers.ts +5 -6
- package/src/eval/js/shared/local-module-loader.ts +1 -1
- package/src/eval/js/shared/prelude.txt +62 -1
- package/src/eval/js/shared/rewrite-imports.ts +40 -22
- package/src/eval/js/shared/runtime.ts +1 -1
- package/src/eval/py/executor.ts +29 -7
- package/src/eval/py/index.ts +6 -3
- package/src/eval/py/kernel.ts +43 -4
- package/src/eval/py/runner.py +107 -3
- package/src/eval/py/runtime.ts +37 -0
- package/src/exec/bash-executor.ts +85 -4
- package/src/export/html/template.generated.ts +1 -1
- package/src/export/html/template.js +3 -1
- package/src/extensibility/extensions/get-commands-handler.ts +2 -1
- package/src/extensibility/extensions/runner.ts +6 -1
- package/src/extensibility/extensions/types.ts +6 -2
- package/src/extensibility/plugins/legacy-pi-compat.ts +20 -3
- package/src/hindsight/bank.ts +17 -2
- package/src/hindsight/mental-models.ts +59 -12
- package/src/hindsight/state.ts +6 -1
- package/src/internal-urls/artifact-protocol.ts +11 -2
- package/src/internal-urls/docs-index.generated.ts +11 -11
- package/src/internal-urls/issue-pr-protocol.ts +12 -5
- package/src/internal-urls/router.ts +1 -1
- package/src/internal-urls/types.ts +1 -1
- package/src/lib/xai-http.ts +1 -1
- package/src/lsp/client.ts +118 -38
- package/src/lsp/clients/biome-client.ts +101 -39
- package/src/lsp/edits.ts +143 -95
- package/src/lsp/index.ts +31 -22
- package/src/lsp/render.ts +1 -1
- package/src/lsp/types.ts +2 -0
- package/src/lsp/utils.ts +28 -10
- package/src/main.ts +183 -23
- package/src/mcp/json-rpc.ts +35 -5
- package/src/mcp/transports/stdio.ts +7 -1
- package/src/memories/index.ts +4 -1
- package/src/memory-backend/index.ts +1 -0
- package/src/memory-backend/local-backend.ts +9 -0
- package/src/memory-backend/off-backend.ts +9 -0
- package/src/memory-backend/runtime.ts +66 -0
- package/src/memory-backend/types.ts +81 -1
- package/src/mnemopi/backend.ts +176 -7
- package/src/mnemopi/state.ts +38 -2
- package/src/modes/acp/acp-agent.ts +119 -11
- package/src/modes/components/agent-dashboard.ts +10 -7
- package/src/modes/components/assistant-message.ts +32 -28
- package/src/modes/components/bash-execution.ts +1 -1
- package/src/modes/components/copy-selector.ts +1 -1
- package/src/modes/components/diff.ts +13 -2
- package/src/modes/components/dynamic-border.ts +12 -3
- 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 +1 -1
- 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-selector.ts +2 -2
- package/src/modes/components/model-selector.ts +4 -2
- package/src/modes/components/plan-review-overlay.ts +1 -1
- package/src/modes/components/session-observer-overlay.ts +2 -2
- package/src/modes/components/session-selector.ts +1 -1
- package/src/modes/components/settings-selector.ts +5 -1
- package/src/modes/components/status-line/component.ts +119 -35
- package/src/modes/components/tiny-title-download-progress.ts +1 -1
- package/src/modes/components/transcript-container.ts +258 -53
- package/src/modes/components/tree-selector.ts +3 -3
- package/src/modes/components/user-message-selector.ts +1 -1
- package/src/modes/components/user-message.ts +17 -5
- package/src/modes/components/visual-truncate.ts +1 -1
- package/src/modes/components/welcome.ts +108 -26
- package/src/modes/controllers/command-controller.ts +11 -4
- package/src/modes/controllers/event-controller.ts +73 -4
- package/src/modes/controllers/input-controller.ts +2 -1
- package/src/modes/controllers/mcp-command-controller.ts +39 -4
- package/src/modes/controllers/selector-controller.ts +1 -1
- package/src/modes/controllers/streaming-reveal.ts +85 -18
- package/src/modes/index.ts +3 -21
- package/src/modes/interactive-mode.ts +42 -18
- package/src/modes/oauth-manual-input.ts +30 -3
- package/src/modes/rpc/rpc-client.ts +154 -3
- package/src/modes/rpc/rpc-mode.ts +97 -12
- package/src/modes/rpc/rpc-subagents.ts +265 -0
- package/src/modes/rpc/rpc-types.ts +81 -1
- package/src/modes/setup-wizard/index.ts +12 -2
- package/src/modes/setup-wizard/lazy.ts +16 -0
- package/src/modes/setup-wizard/scenes/glyph.ts +1 -1
- package/src/modes/setup-wizard/scenes/providers.ts +1 -1
- package/src/modes/setup-wizard/scenes/sign-in.ts +1 -1
- package/src/modes/setup-wizard/scenes/theme.ts +1 -1
- package/src/modes/setup-wizard/scenes/types.ts +1 -1
- package/src/modes/setup-wizard/scenes/web-search.ts +1 -1
- package/src/modes/setup-wizard/wizard-overlay.ts +1 -1
- package/src/modes/types.ts +4 -1
- package/src/prompts/agents/explore.md +2 -2
- package/src/prompts/agents/librarian.md +1 -2
- package/src/prompts/agents/oracle.md +1 -1
- package/src/prompts/agents/plan.md +5 -5
- package/src/prompts/agents/task.md +5 -5
- 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/memories/read-path.md +1 -1
- 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/background-tan-dispatch.md +1 -1
- 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-todo.md +2 -2
- package/src/prompts/system/irc-incoming.md +1 -1
- package/src/prompts/system/manual-continue.md +1 -1
- package/src/prompts/system/omfg-user.md +3 -4
- package/src/prompts/system/orchestrate-notice.md +9 -9
- package/src/prompts/system/plan-mode-active.md +4 -4
- 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/subagent-system-prompt.md +4 -4
- package/src/prompts/system/system-prompt.md +13 -24
- package/src/prompts/system/title-system.md +2 -2
- package/src/prompts/system/ttsr-tool-reminder.md +1 -1
- package/src/prompts/system/workflow-notice.md +1 -1
- package/src/prompts/tools/ast-edit.md +1 -1
- package/src/prompts/tools/ast-grep.md +2 -2
- package/src/prompts/tools/bash.md +5 -7
- package/src/prompts/tools/browser.md +7 -7
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/eval.md +3 -3
- 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 +15 -15
- package/src/prompts/tools/lsp.md +2 -2
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/read.md +3 -4
- 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.md +2 -3
- package/src/prompts/tools/todo.md +1 -1
- package/src/sdk.ts +31 -11
- package/src/secrets/index.ts +8 -1
- package/src/secrets/obfuscator.ts +39 -18
- package/src/session/agent-session.ts +223 -64
- package/src/session/auth-broker-config.ts +30 -1
- package/src/session/session-manager.ts +2 -2
- package/src/session/streaming-output.ts +188 -11
- package/src/slash-commands/acp-builtins.ts +24 -0
- package/src/slash-commands/builtin-registry.ts +40 -0
- package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
- package/src/slash-commands/types.ts +1 -1
- package/src/ssh/connection-manager.ts +27 -0
- package/src/system-prompt.ts +14 -0
- package/src/task/commands.ts +2 -1
- package/src/task/executor.ts +74 -65
- package/src/task/index.ts +146 -68
- package/src/task/parallel.ts +3 -3
- package/src/task/render.ts +20 -5
- package/src/task/types.ts +9 -0
- package/src/task/worktree.ts +64 -56
- package/src/thinking.ts +9 -1
- package/src/tiny/title-client.ts +60 -16
- package/src/tiny/title-protocol.ts +1 -1
- package/src/tiny/worker.ts +6 -4
- package/src/tools/archive-reader.ts +30 -2
- package/src/tools/ask.ts +104 -21
- package/src/tools/ast-edit.ts +25 -5
- package/src/tools/auto-generated-guard.ts +20 -3
- package/src/tools/bash-interactive.ts +27 -7
- package/src/tools/bash.ts +100 -18
- package/src/tools/browser/launch.ts +11 -2
- package/src/tools/browser/readable.ts +19 -2
- package/src/tools/browser/registry.ts +4 -1
- package/src/tools/browser/render.ts +2 -2
- package/src/tools/browser/tab-supervisor.ts +55 -16
- package/src/tools/conflict-detect.ts +50 -4
- package/src/tools/debug.ts +1 -1
- package/src/tools/eval-render.ts +5 -5
- package/src/tools/eval.ts +0 -2
- package/src/tools/fetch.ts +33 -10
- package/src/tools/gh-cache-invalidation.ts +63 -8
- package/src/tools/gh-renderer.ts +1 -1
- package/src/tools/gh.ts +172 -29
- package/src/tools/github-cache.ts +70 -6
- package/src/tools/image-gen.ts +14 -13
- package/src/tools/index.ts +13 -1
- package/src/tools/inspect-image.ts +1 -0
- package/src/tools/irc.ts +5 -1
- package/src/tools/job.ts +1 -1
- package/src/tools/read.ts +202 -61
- package/src/tools/render-utils.ts +3 -3
- package/src/tools/resolve.ts +1 -1
- package/src/tools/search.ts +92 -29
- package/src/tools/sqlite-reader.ts +17 -5
- package/src/tools/ssh.ts +8 -8
- package/src/tools/todo.ts +38 -8
- package/src/tools/write.ts +118 -18
- package/src/tui/output-block.ts +4 -4
- package/src/utils/changelog.ts +27 -1
- package/src/utils/commit-message-generator.ts +1 -0
- package/src/utils/file-mentions.ts +2 -1
- package/src/utils/git.ts +267 -13
- package/src/utils/title-generator.ts +24 -5
- package/src/web/scrapers/arxiv.ts +1 -1
- 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 +6 -1
- package/src/web/search/index.ts +1 -1
- package/src/web/search/providers/codex.ts +2 -1
- package/src/web/search/providers/gemini.ts +2 -3
- package/src/web/search/render.ts +8 -6
- package/dist/types/config/model-equivalence.d.ts +0 -24
- package/dist/types/config/model-id-affixes.d.ts +0 -12
- package/dist/types/config/model-provider-priority.d.ts +0 -1
- package/dist/types/exec/idle-timeout-watchdog.d.ts +0 -18
- package/src/config/model-equivalence.ts +0 -875
- package/src/config/model-id-affixes.ts +0 -81
- package/src/config/model-provider-priority.ts +0 -56
- package/src/exec/idle-timeout-watchdog.ts +0 -126
|
@@ -31,10 +31,9 @@ Subagents have no conversation history. Every fact, file path, and direction the
|
|
|
31
31
|
|
|
32
32
|
<rules>
|
|
33
33
|
- **Maximize batch width.** Spawn the widest parallel set the work decomposes into. NEVER spawn a single-task batch for divisible work, or defer work that could have been concurrent.
|
|
34
|
-
-
|
|
35
|
-
- **Subagents do not verify, lint, or format.** Every assignment MUST instruct the subagent to skip all gates and formatters. You run them once at the end across the union of changed files — avoids redundant runs and racing formatter passes.
|
|
34
|
+
- **Subagents do not verify, lint, or format.** Every assignment MUST instruct the subagent to skip all gates, formatters, and project-wide build/test/lint. You run them once at the end across the union of changed files — avoids redundant runs and racing formatter passes.
|
|
36
35
|
- No globs, no "update all", no package-wide scope. Fan out.
|
|
37
|
-
-
|
|
36
|
+
- NEVER slow down or serialize because tasks might overlap on some files. Agents resolve collisions among themselves in real time.
|
|
38
37
|
- Pass large payloads via `local://<path>` URIs, not inline. {{#if contextEnabled}} (other than the context){{/if}}
|
|
39
38
|
{{#if contextEnabled}}- Put shared constraints in `context` once; do not duplicate across assignments.{{/if}}
|
|
40
39
|
- Prefer agents that investigate **and** edit in one pass; only spin a read-only discovery step when affected files are genuinely unknown.
|
|
@@ -12,7 +12,7 @@ Allowed `op` values are only `init`, `start`, `done`, `drop`, `rm`, `append`, `n
|
|
|
12
12
|
|`start`|`task`|Mark in progress|
|
|
13
13
|
|`done`|`task` or `phase`|Mark completed|
|
|
14
14
|
|`drop`|`task` or `phase`|Mark abandoned|
|
|
15
|
-
|`rm`|`task` or `phase
|
|
15
|
+
|`rm`|`task` or `phase` (optional)|Remove task or phase's tasks; omit both to clear the entire list|
|
|
16
16
|
|`append`|`phase`, `items: string[]`|Append tasks to `phase`; lazily creates phase|
|
|
17
17
|
|`note`|`task`, `text`|Append a note to a task. Reminders for future-you only.|
|
|
18
18
|
|`view`|—|Read-only: echo the current list without modifying it|
|
package/src/sdk.ts
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
getOpenAICodexTransportDetails,
|
|
20
20
|
prewarmOpenAICodexResponses,
|
|
21
21
|
} from "@oh-my-pi/pi-ai/providers/openai-codex-responses";
|
|
22
|
+
import { DEFAULT_MODEL_PER_PROVIDER } from "@oh-my-pi/pi-catalog/provider-models";
|
|
22
23
|
import type { Component } from "@oh-my-pi/pi-tui";
|
|
23
24
|
import {
|
|
24
25
|
$env,
|
|
@@ -41,7 +42,6 @@ import { createApiKeyResolver } from "./config/api-key-resolver";
|
|
|
41
42
|
import { shouldEnableAppendOnlyContext } from "./config/append-only-context-mode";
|
|
42
43
|
import { ModelRegistry } from "./config/model-registry";
|
|
43
44
|
import {
|
|
44
|
-
defaultModelPerProvider,
|
|
45
45
|
formatModelString,
|
|
46
46
|
getModelMatchPreferences,
|
|
47
47
|
parseModelPattern,
|
|
@@ -89,7 +89,7 @@ import type { HindsightSessionState } from "./hindsight/state";
|
|
|
89
89
|
import { LocalProtocolHandler, type LocalProtocolOptions } from "./internal-urls";
|
|
90
90
|
import { LSP_STARTUP_EVENT_CHANNEL, type LspStartupEvent } from "./lsp/startup-events";
|
|
91
91
|
import { discoverAndLoadMCPTools, MCPManager, type MCPToolsLoadResult } from "./mcp";
|
|
92
|
-
import { resolveMemoryBackend } from "./memory-backend";
|
|
92
|
+
import { createSessionMemoryRuntimeContext, resolveMemoryBackend } from "./memory-backend";
|
|
93
93
|
import type { MnemopiSessionState } from "./mnemopi/state";
|
|
94
94
|
import asyncResultTemplate from "./prompts/tools/async-result.md" with { type: "text" };
|
|
95
95
|
import lateDiagnosticTemplate from "./prompts/tools/lsp-late-diagnostic.md" with { type: "text" };
|
|
@@ -99,6 +99,7 @@ import {
|
|
|
99
99
|
deobfuscateSessionContext,
|
|
100
100
|
loadSecrets,
|
|
101
101
|
obfuscateMessages,
|
|
102
|
+
obfuscateProviderContext,
|
|
102
103
|
SecretObfuscator,
|
|
103
104
|
} from "./secrets";
|
|
104
105
|
import { AgentSession } from "./session/agent-session";
|
|
@@ -134,6 +135,7 @@ import {
|
|
|
134
135
|
parseThinkingLevel,
|
|
135
136
|
resolveProvisionalAutoLevel,
|
|
136
137
|
resolveThinkingLevelForModel,
|
|
138
|
+
shouldDisableReasoning,
|
|
137
139
|
toReasoningEffort,
|
|
138
140
|
} from "./thinking";
|
|
139
141
|
import { countToolsForAutoDiscovery, resolveEffectiveToolDiscoveryMode } from "./tool-discovery/mode";
|
|
@@ -531,11 +533,18 @@ function resolveSnapshotTtlMs(): number {
|
|
|
531
533
|
* override to re-mint access tokens when needed.
|
|
532
534
|
*/
|
|
533
535
|
export async function discoverAuthStorage(agentDir: string = getDefaultAgentDir()): Promise<AuthStorage> {
|
|
534
|
-
const
|
|
536
|
+
const brokerConfigPromise = resolveAuthBrokerConfig();
|
|
537
|
+
const cachePath = getAuthBrokerSnapshotCachePath();
|
|
538
|
+
// Warm the encrypted snapshot cache into the page cache while the broker
|
|
539
|
+
// config resolves (it may shell out for a `!command` token). Decryption
|
|
540
|
+
// needs the resolved token, so the real cache read cannot start earlier.
|
|
541
|
+
void Bun.file(cachePath)
|
|
542
|
+
.arrayBuffer()
|
|
543
|
+
.catch(() => undefined);
|
|
544
|
+
const brokerConfig = await brokerConfigPromise;
|
|
535
545
|
if (brokerConfig) {
|
|
536
546
|
const client = new AuthBrokerClient({ url: brokerConfig.url, token: brokerConfig.token });
|
|
537
547
|
const ttlMs = resolveSnapshotTtlMs();
|
|
538
|
-
const cachePath = getAuthBrokerSnapshotCachePath();
|
|
539
548
|
const persist =
|
|
540
549
|
ttlMs > 0
|
|
541
550
|
? (snapshot: SnapshotResponse): void => {
|
|
@@ -1730,7 +1739,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1730
1739
|
// the winning provider (e.g. anthropic's claude-3-5-sonnet-20240620)
|
|
1731
1740
|
// instead of the intended provider default (claude-sonnet-4-6). Mirrors
|
|
1732
1741
|
// findInitialModel's precedence.
|
|
1733
|
-
for (const [provider, defaultId] of Object.entries(
|
|
1742
|
+
for (const [provider, defaultId] of Object.entries(DEFAULT_MODEL_PER_PROVIDER)) {
|
|
1734
1743
|
const preferred = fallbackCandidates.find(
|
|
1735
1744
|
candidate => candidate.provider === provider && candidate.id === defaultId,
|
|
1736
1745
|
);
|
|
@@ -1784,6 +1793,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1784
1793
|
cwd,
|
|
1785
1794
|
sessionManager,
|
|
1786
1795
|
modelRegistry,
|
|
1796
|
+
() => (hasSession ? createSessionMemoryRuntimeContext(session, agentDir, cwd) : undefined),
|
|
1787
1797
|
);
|
|
1788
1798
|
|
|
1789
1799
|
credentialDisabledTarget = extensionRunner;
|
|
@@ -2131,6 +2141,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2131
2141
|
if (!obfuscator?.hasSecrets()) return converted;
|
|
2132
2142
|
return obfuscateMessages(obfuscator, converted);
|
|
2133
2143
|
};
|
|
2144
|
+
|
|
2134
2145
|
const transformContext = async (messages: AgentMessage[], _signal?: AbortSignal) => {
|
|
2135
2146
|
const withContext = await extensionRunner.emitContext(messages);
|
|
2136
2147
|
return wrapSteeringForModel(withContext);
|
|
@@ -2166,6 +2177,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2166
2177
|
systemPrompt,
|
|
2167
2178
|
model,
|
|
2168
2179
|
thinkingLevel: toReasoningEffort(effectiveThinkingLevel),
|
|
2180
|
+
disableReasoning: shouldDisableReasoning(effectiveThinkingLevel),
|
|
2169
2181
|
tools: initialTools,
|
|
2170
2182
|
},
|
|
2171
2183
|
convertToLlm: convertToLlmFinal,
|
|
@@ -2174,6 +2186,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2174
2186
|
sessionId: providerSessionId,
|
|
2175
2187
|
promptCacheKey: options.providerPromptCacheKey,
|
|
2176
2188
|
transformContext,
|
|
2189
|
+
transformProviderContext: obfuscator ? context => obfuscateProviderContext(obfuscator, context) : undefined,
|
|
2177
2190
|
steeringMode: settings.get("steeringMode") ?? "one-at-a-time",
|
|
2178
2191
|
followUpMode: settings.get("followUpMode") ?? "one-at-a-time",
|
|
2179
2192
|
interruptMode: settings.get("interruptMode") ?? "immediate",
|
|
@@ -2260,6 +2273,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2260
2273
|
thinkingLevel: autoThinking ? AUTO_THINKING : effectiveThinkingLevel,
|
|
2261
2274
|
sessionManager,
|
|
2262
2275
|
settings,
|
|
2276
|
+
autoApprove: options.autoApprove,
|
|
2263
2277
|
evalKernelOwnerId,
|
|
2264
2278
|
// Defined only for top-level sessions (creation is gated above).
|
|
2265
2279
|
// AgentSession uses this to decide whether it may dispose the global
|
|
@@ -2342,7 +2356,8 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2342
2356
|
}
|
|
2343
2357
|
|
|
2344
2358
|
if (model?.api === "openai-codex-responses") {
|
|
2345
|
-
|
|
2359
|
+
// `.api` equality doesn't narrow the generic; the guard makes this cast sound.
|
|
2360
|
+
const codexModel = model as Model<"openai-codex-responses">;
|
|
2346
2361
|
const codexTransport = getOpenAICodexTransportDetails(codexModel, {
|
|
2347
2362
|
sessionId: providerSessionId,
|
|
2348
2363
|
baseUrl: codexModel.baseUrl,
|
|
@@ -2373,12 +2388,17 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2373
2388
|
}
|
|
2374
2389
|
|
|
2375
2390
|
// Start LSP warmup in the background so startup does not block on language server initialization.
|
|
2376
|
-
//
|
|
2377
|
-
//
|
|
2378
|
-
//
|
|
2379
|
-
//
|
|
2391
|
+
// With `lsp.lazy` (the default) the warmup is skipped: recognized servers are still discovered and
|
|
2392
|
+
// surfaced in the UI as "available", but cold-start on first use — the lsp tool or an edit/write
|
|
2393
|
+
// touching a matching file type — through `getOrCreateClient`.
|
|
2394
|
+
// Print/script invocations (`hasUI=false`) skip it regardless: they don't render the warmup status
|
|
2395
|
+
// indicator AND typically finish before LSP servers would have stabilized — warming them just spends
|
|
2396
|
+
// CPU parsing big `initialize` responses concurrently with the LLM stream consumer, jittering
|
|
2397
|
+
// perceived latency.
|
|
2380
2398
|
let lspServers: CreateAgentSessionResult["lspServers"];
|
|
2381
|
-
if (enableLsp && options.hasUI && settings.get("lsp.
|
|
2399
|
+
if (enableLsp && options.hasUI && settings.get("lsp.lazy")) {
|
|
2400
|
+
lspServers = discoverStartupLspServers(cwd, "available");
|
|
2401
|
+
} else if (enableLsp && options.hasUI) {
|
|
2382
2402
|
lspServers = discoverStartupLspServers(cwd);
|
|
2383
2403
|
if (lspServers.length > 0) {
|
|
2384
2404
|
void (async () => {
|
package/src/secrets/index.ts
CHANGED
|
@@ -4,7 +4,14 @@ import { YAML } from "bun";
|
|
|
4
4
|
import type { SecretEntry } from "./obfuscator";
|
|
5
5
|
import { compileSecretRegex } from "./regex";
|
|
6
6
|
|
|
7
|
-
export {
|
|
7
|
+
export {
|
|
8
|
+
deobfuscateSessionContext,
|
|
9
|
+
obfuscateMessages,
|
|
10
|
+
obfuscateProviderContext,
|
|
11
|
+
obfuscateProviderTools,
|
|
12
|
+
type SecretEntry,
|
|
13
|
+
SecretObfuscator,
|
|
14
|
+
} from "./obfuscator";
|
|
8
15
|
|
|
9
16
|
/**
|
|
10
17
|
* Load secrets from project-local and global secrets.yml files.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Message,
|
|
1
|
+
import type { Context, Message, Tool } from "@oh-my-pi/pi-ai";
|
|
2
|
+
import { toolWireSchema } from "@oh-my-pi/pi-ai/utils/schema";
|
|
2
3
|
import type { SessionContext } from "../session/session-manager";
|
|
3
4
|
import { compileSecretRegex } from "./regex";
|
|
4
5
|
|
|
@@ -184,6 +185,12 @@ export class SecretObfuscator {
|
|
|
184
185
|
return deepWalkStrings(obj, s => this.deobfuscate(s));
|
|
185
186
|
}
|
|
186
187
|
|
|
188
|
+
/** Deep-walk an object, obfuscating all string values. */
|
|
189
|
+
obfuscateObject<T>(obj: T): T {
|
|
190
|
+
if (!this.#hasAny) return obj;
|
|
191
|
+
return deepWalkStrings(obj, s => this.obfuscate(s));
|
|
192
|
+
}
|
|
193
|
+
|
|
187
194
|
/** Find the obfuscate index for a known secret value. */
|
|
188
195
|
#findObfuscateIndex(secret: string): number | undefined {
|
|
189
196
|
// Check plain mappings first
|
|
@@ -211,25 +218,34 @@ export function deobfuscateSessionContext(
|
|
|
211
218
|
// Message obfuscation (outbound to LLM)
|
|
212
219
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
213
220
|
|
|
214
|
-
/** Obfuscate all
|
|
221
|
+
/** Obfuscate all string content in LLM messages (for outbound interception). */
|
|
215
222
|
export function obfuscateMessages(obfuscator: SecretObfuscator, messages: Message[]): Message[] {
|
|
216
|
-
return
|
|
217
|
-
|
|
223
|
+
return obfuscator.obfuscateObject(messages);
|
|
224
|
+
}
|
|
218
225
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
});
|
|
226
|
+
/** Obfuscate provider request context without walking live tool schema instances. */
|
|
227
|
+
export function obfuscateProviderContext(obfuscator: SecretObfuscator | undefined, context: Context): Context {
|
|
228
|
+
if (!obfuscator?.hasSecrets()) return context;
|
|
229
|
+
return {
|
|
230
|
+
...context,
|
|
231
|
+
systemPrompt: obfuscator.obfuscateObject(context.systemPrompt),
|
|
232
|
+
messages: obfuscator.obfuscateObject(context.messages),
|
|
233
|
+
tools: obfuscateProviderTools(obfuscator, context.tools),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
230
236
|
|
|
231
|
-
|
|
232
|
-
|
|
237
|
+
/** Convert tool schemas to wire JSON Schema before obfuscating provider-visible strings. */
|
|
238
|
+
export function obfuscateProviderTools(
|
|
239
|
+
obfuscator: SecretObfuscator | undefined,
|
|
240
|
+
tools: Tool[] | undefined,
|
|
241
|
+
): Tool[] | undefined {
|
|
242
|
+
if (!tools || !obfuscator?.hasSecrets()) return tools;
|
|
243
|
+
return tools.map(tool => ({
|
|
244
|
+
...tool,
|
|
245
|
+
description: obfuscator.obfuscate(tool.description),
|
|
246
|
+
parameters: obfuscator.obfuscateObject(toolWireSchema(tool)),
|
|
247
|
+
customFormat: tool.customFormat ? obfuscator.obfuscateObject(tool.customFormat) : undefined,
|
|
248
|
+
}));
|
|
233
249
|
}
|
|
234
250
|
|
|
235
251
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -262,7 +278,7 @@ function deepWalkStrings<T>(obj: T, transform: (s: string) => string): T {
|
|
|
262
278
|
});
|
|
263
279
|
return (changed ? result : obj) as unknown as T;
|
|
264
280
|
}
|
|
265
|
-
if (obj !== null && typeof obj === "object") {
|
|
281
|
+
if (obj !== null && typeof obj === "object" && isPlainRecord(obj)) {
|
|
266
282
|
let changed = false;
|
|
267
283
|
const result: Record<string, unknown> = {};
|
|
268
284
|
for (const key of Object.keys(obj)) {
|
|
@@ -275,3 +291,8 @@ function deepWalkStrings<T>(obj: T, transform: (s: string) => string): T {
|
|
|
275
291
|
}
|
|
276
292
|
return obj;
|
|
277
293
|
}
|
|
294
|
+
|
|
295
|
+
function isPlainRecord(obj: object): obj is Record<string, unknown> {
|
|
296
|
+
const prototype = Object.getPrototypeOf(obj);
|
|
297
|
+
return prototype === Object.prototype || prototype === null;
|
|
298
|
+
}
|