@astralyn/pi 0.87.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -9
- package/README.md +3 -3
- package/dist/bun/runtime-setup.js +4 -1
- package/dist/bun/runtime-setup.js.map +1 -1
- package/dist/bundle/chunks/anthropic-messages-CG2BSDQS.js +6 -0
- package/dist/bundle/chunks/anthropic.js +2 -2
- package/dist/bundle/chunks/azure-openai-responses-PBA4QKCM.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +8 -8
- package/dist/bundle/chunks/{chunk-NW5FIDD7.js → chunk-6UFFVA7M.js} +3 -3
- package/dist/bundle/chunks/chunk-G4RY3GN7.js +11 -0
- package/dist/bundle/chunks/chunk-GCKVOFWP.js +2 -0
- package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
- package/dist/bundle/chunks/{chunk-4W4Q2H6W.js → chunk-HESRDUKO.js} +1000 -625
- package/dist/bundle/chunks/chunk-MPDALHNJ.js +2 -0
- package/dist/bundle/chunks/chunk-OO6DJ3CL.js +31 -0
- package/dist/bundle/chunks/{chunk-LPQCB2VJ.js → chunk-PFZKRUMO.js} +2 -2
- package/dist/bundle/chunks/chunk-SGLYRVQL.js +2 -0
- package/dist/bundle/chunks/chunk-TRHTWM3C.js +2 -0
- package/dist/bundle/chunks/chunk-V66VGGOM.js +2 -0
- package/dist/bundle/chunks/chunk-Z2RKSI3O.js +2 -0
- package/dist/bundle/chunks/cloudflare-workers-ai-system-one-YB7XPPP4.js +2 -0
- package/dist/bundle/chunks/codemode-worker.js +354 -0
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/google-generative-ai-V5ZM5MCL.js +2 -0
- package/dist/bundle/chunks/google-vertex-22THOFP5.js +2 -0
- package/dist/bundle/chunks/llama-cpp-classify-R7DQLTQN.js +22 -0
- package/dist/bundle/chunks/meta.js +2 -0
- package/dist/bundle/chunks/mistral-conversations-WHSCJJWP.js +5 -0
- package/dist/bundle/chunks/openai-chatgpt.js +75 -0
- package/dist/bundle/chunks/openai-codex-responses-N7GDPBPP.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +2 -2
- package/dist/bundle/chunks/openai-completions-RGGQK5UW.js +7 -0
- package/dist/bundle/chunks/openai-responses-3ZLD5JYI.js +3 -0
- package/dist/bundle/chunks/{openrouter-images-6XDE2CEW.js → openrouter-images-YP3YVB54.js} +1 -1
- package/dist/bundle/chunks/openrouter.js +2 -2
- package/dist/bundle/chunks/{pi-messages-MQMPIPNC.js → pi-messages-HZZ7GEEW.js} +2 -2
- package/dist/bundle/chunks/radius.js +2 -2
- package/dist/bundle/chunks/typesafe-system-one-RREJAKWB.js +2 -0
- package/dist/bundle/chunks/virtual-modules-4RQ2L6W4.js +2 -0
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +5 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +38 -30
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts +15 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +13 -13
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +14 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +121 -36
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +518 -203
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bug-report.js +1 -1
- package/dist/core/bug-report.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +1 -22
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +25 -18
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/crash-log.d.ts.map +1 -1
- package/dist/core/crash-log.js +2 -1
- package/dist/core/crash-log.js.map +1 -1
- package/dist/core/export-html/template.css +10 -0
- package/dist/core/export-html/template.js +66 -17
- package/dist/core/extensions/distribution-api.d.ts +1 -1
- package/dist/core/extensions/distribution-api.d.ts.map +1 -1
- package/dist/core/extensions/distribution-api.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +67 -5
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +22 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +124 -8
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +310 -25
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +2 -2
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +3 -3
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/keybindings.d.ts +70 -5
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +15 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +125 -0
- package/dist/core/mcp-servers.d.ts.map +1 -0
- package/dist/core/mcp-servers.js +199 -0
- package/dist/core/mcp-servers.js.map +1 -0
- package/dist/core/model-registry.d.ts +15 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +29 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +5 -5
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +47 -3
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +189 -35
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/nested-tool-calls.d.ts +102 -0
- package/dist/core/nested-tool-calls.d.ts.map +1 -0
- package/dist/core/nested-tool-calls.js +177 -0
- package/dist/core/nested-tool-calls.js.map +1 -0
- package/dist/core/package-manager.d.ts +4 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +58 -12
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/provider-composer.d.ts +40 -21
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +92 -40
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -1
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +8 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +21 -11
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +7 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +160 -35
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +3 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +26 -7
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +9 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +22 -22
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +41 -4
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +110 -3
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +8 -0
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +16 -0
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tasks/delivery.d.ts +40 -0
- package/dist/core/tasks/delivery.d.ts.map +1 -0
- package/dist/core/tasks/delivery.js +157 -0
- package/dist/core/tasks/delivery.js.map +1 -0
- package/dist/core/tasks/format.d.ts +7 -0
- package/dist/core/tasks/format.d.ts.map +1 -0
- package/dist/core/tasks/format.js +14 -0
- package/dist/core/tasks/format.js.map +1 -0
- package/dist/core/tasks/history.d.ts +4 -0
- package/dist/core/tasks/history.d.ts.map +1 -0
- package/dist/core/{background → tasks}/history.js +8 -51
- package/dist/core/tasks/history.js.map +1 -0
- package/dist/core/{background → tasks}/output.d.ts +12 -4
- package/dist/core/tasks/output.d.ts.map +1 -0
- package/dist/core/{background → tasks}/output.js +30 -11
- package/dist/core/tasks/output.js.map +1 -0
- package/dist/core/tasks/presentation.d.ts +7 -0
- package/dist/core/tasks/presentation.d.ts.map +1 -0
- package/dist/core/tasks/presentation.js +226 -0
- package/dist/core/tasks/presentation.js.map +1 -0
- package/dist/core/tasks/runtime.d.ts +74 -0
- package/dist/core/tasks/runtime.d.ts.map +1 -0
- package/dist/core/tasks/runtime.js +580 -0
- package/dist/core/tasks/runtime.js.map +1 -0
- package/dist/core/tasks/session.d.ts +49 -0
- package/dist/core/tasks/session.d.ts.map +1 -0
- package/dist/core/tasks/session.js +138 -0
- package/dist/core/tasks/session.js.map +1 -0
- package/dist/core/tasks/store.d.ts +46 -0
- package/dist/core/tasks/store.d.ts.map +1 -0
- package/dist/core/tasks/store.js +162 -0
- package/dist/core/tasks/store.js.map +1 -0
- package/dist/core/{background → tasks}/types.d.ts +64 -86
- package/dist/core/tasks/types.d.ts.map +1 -0
- package/dist/core/tasks/types.js +27 -0
- package/dist/core/tasks/types.js.map +1 -0
- package/dist/core/tools/bash.d.ts +8 -93
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +8 -240
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/grep.d.ts +2 -0
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +2 -0
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +9 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +11 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +36 -0
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +6 -2
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +1 -1
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +6 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +26 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js +11 -35
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/core/tools/renderers/index.d.ts.map +1 -1
- package/dist/core/tools/renderers/index.js +5 -7
- package/dist/core/tools/renderers/index.js.map +1 -1
- package/dist/core/tools/renderers/read.d.ts.map +1 -1
- package/dist/core/tools/renderers/read.js +3 -2
- package/dist/core/tools/renderers/read.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts +4 -6
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +22 -13
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-tool.d.ts +93 -0
- package/dist/core/tools/shell-tool.d.ts.map +1 -0
- package/dist/core/tools/shell-tool.js +249 -0
- package/dist/core/tools/shell-tool.js.map +1 -0
- package/dist/core/tools/tasks/actions.d.ts +12 -0
- package/dist/core/tools/tasks/actions.d.ts.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/actions.js +44 -29
- package/dist/core/tools/tasks/actions.js.map +1 -0
- package/dist/core/tools/tasks/constants.d.ts +20 -0
- package/dist/core/tools/tasks/constants.d.ts.map +1 -0
- package/dist/core/tools/tasks/constants.js +20 -0
- package/dist/core/tools/tasks/constants.js.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/schema.d.ts +7 -7
- package/dist/core/tools/tasks/schema.d.ts.map +1 -0
- package/dist/{extensions/background → core/tools/tasks}/schema.js +21 -20
- package/dist/core/tools/tasks/schema.js.map +1 -0
- package/dist/core/tools/tasks/types.d.ts +53 -0
- package/dist/core/tools/tasks/types.d.ts.map +1 -0
- package/dist/core/tools/tasks/types.js +12 -0
- package/dist/core/tools/tasks/types.js.map +1 -0
- package/dist/core/tools/tasks.d.ts +14 -0
- package/dist/core/tools/tasks.d.ts.map +1 -0
- package/dist/core/tools/tasks.js +40 -0
- package/dist/core/tools/tasks.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +4 -3
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +4 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/truncate.d.ts +14 -0
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +29 -0
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +1 -0
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/usage-totals.d.ts +5 -3
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +27 -4
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/core/virtual-models.d.ts +117 -0
- package/dist/core/virtual-models.d.ts.map +1 -0
- package/dist/core/virtual-models.js +124 -0
- package/dist/core/virtual-models.js.map +1 -0
- package/dist/extensions/btw/agent.d.ts +17 -8
- package/dist/extensions/btw/agent.d.ts.map +1 -1
- package/dist/extensions/btw/agent.js +74 -76
- package/dist/extensions/btw/agent.js.map +1 -1
- package/dist/extensions/btw/controller.d.ts +0 -1
- package/dist/extensions/btw/controller.d.ts.map +1 -1
- package/dist/extensions/btw/controller.js +26 -33
- package/dist/extensions/btw/controller.js.map +1 -1
- package/dist/extensions/btw/panel.d.ts +13 -14
- package/dist/extensions/btw/panel.d.ts.map +1 -1
- package/dist/extensions/btw/panel.js +38 -29
- package/dist/extensions/btw/panel.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts +16 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.js +536 -0
- package/dist/extensions/codemode/execute.js.map +1 -0
- package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
- package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.lazy.js +3 -0
- package/dist/extensions/codemode/execute.lazy.js.map +1 -0
- package/dist/extensions/codemode/index.d.ts +21 -0
- package/dist/extensions/codemode/index.d.ts.map +1 -0
- package/dist/extensions/codemode/index.js +36 -0
- package/dist/extensions/codemode/index.js.map +1 -0
- package/dist/extensions/codemode/renderer.d.ts +12 -0
- package/dist/extensions/codemode/renderer.d.ts.map +1 -0
- package/dist/extensions/codemode/renderer.js +137 -0
- package/dist/extensions/codemode/renderer.js.map +1 -0
- package/dist/extensions/codemode/search.d.ts +33 -0
- package/dist/extensions/codemode/search.d.ts.map +1 -0
- package/dist/extensions/codemode/search.js +117 -0
- package/dist/extensions/codemode/search.js.map +1 -0
- package/dist/extensions/codemode/tool.d.ts +123 -0
- package/dist/extensions/codemode/tool.d.ts.map +1 -0
- package/dist/extensions/codemode/tool.js +268 -0
- package/dist/extensions/codemode/tool.js.map +1 -0
- package/dist/extensions/codemode/worker.d.ts +7 -0
- package/dist/extensions/codemode/worker.d.ts.map +1 -0
- package/dist/extensions/codemode/worker.js +7 -0
- package/dist/extensions/codemode/worker.js.map +1 -0
- package/dist/extensions/deepwiki/schema.d.ts +1 -1
- package/dist/extensions/index.js +13 -13
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +65 -13
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts +21 -0
- package/dist/extensions/mcp/cli.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.js +500 -0
- package/dist/extensions/mcp/cli.js.map +1 -0
- package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
- package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.lazy.js +3 -0
- package/dist/extensions/mcp/cli.lazy.js.map +1 -0
- package/dist/extensions/mcp/config.d.ts +72 -0
- package/dist/extensions/mcp/config.d.ts.map +1 -0
- package/dist/extensions/mcp/config.js +158 -0
- package/dist/extensions/mcp/config.js.map +1 -0
- package/dist/extensions/mcp/index.d.ts +76 -0
- package/dist/extensions/mcp/index.d.ts.map +1 -0
- package/dist/extensions/mcp/index.js +1078 -0
- package/dist/extensions/mcp/index.js.map +1 -0
- package/dist/extensions/mcp/log.d.ts +16 -0
- package/dist/extensions/mcp/log.d.ts.map +1 -0
- package/dist/extensions/mcp/log.js +64 -0
- package/dist/extensions/mcp/log.js.map +1 -0
- package/dist/extensions/mcp/oauth.d.ts +97 -0
- package/dist/extensions/mcp/oauth.d.ts.map +1 -0
- package/dist/extensions/mcp/oauth.js +355 -0
- package/dist/extensions/mcp/oauth.js.map +1 -0
- package/dist/extensions/mcp/resources.d.ts +43 -0
- package/dist/extensions/mcp/resources.d.ts.map +1 -0
- package/dist/extensions/mcp/resources.js +262 -0
- package/dist/extensions/mcp/resources.js.map +1 -0
- package/dist/extensions/mcp/runtime.d.ts +98 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.js +379 -0
- package/dist/extensions/mcp/runtime.js.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.js +3 -0
- package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
- package/dist/extensions/mcp/tools.d.ts +84 -0
- package/dist/extensions/mcp/tools.d.ts.map +1 -0
- package/dist/extensions/mcp/tools.js +251 -0
- package/dist/extensions/mcp/tools.js.map +1 -0
- package/dist/extensions/mcp/ui.d.ts +60 -0
- package/dist/extensions/mcp/ui.d.ts.map +1 -0
- package/dist/extensions/mcp/ui.js +168 -0
- package/dist/extensions/mcp/ui.js.map +1 -0
- package/dist/extensions/provider/catalog.d.ts +8 -1
- package/dist/extensions/provider/catalog.d.ts.map +1 -1
- package/dist/extensions/provider/catalog.js +31 -0
- package/dist/extensions/provider/catalog.js.map +1 -1
- package/dist/extensions/provider/connection.d.ts +4 -1
- package/dist/extensions/provider/connection.d.ts.map +1 -1
- package/dist/extensions/provider/connection.js +1 -5
- package/dist/extensions/provider/connection.js.map +1 -1
- package/dist/extensions/provider/editing.d.ts +36 -0
- package/dist/extensions/provider/editing.d.ts.map +1 -0
- package/dist/extensions/provider/editing.js +99 -0
- package/dist/extensions/provider/editing.js.map +1 -0
- package/dist/extensions/provider/json-fields.d.ts +5 -0
- package/dist/extensions/provider/json-fields.d.ts.map +1 -0
- package/dist/extensions/provider/json-fields.js +31 -0
- package/dist/extensions/provider/json-fields.js.map +1 -0
- package/dist/extensions/provider/store.d.ts +1 -4
- package/dist/extensions/provider/store.d.ts.map +1 -1
- package/dist/extensions/provider/store.js +2 -30
- package/dist/extensions/provider/store.js.map +1 -1
- package/dist/extensions/provider/ui/builtin-data.d.ts +0 -2
- package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -1
- package/dist/extensions/provider/ui/builtin-data.js +14 -79
- package/dist/extensions/provider/ui/builtin-data.js.map +1 -1
- package/dist/extensions/provider/ui/compat.d.ts.map +1 -1
- package/dist/extensions/provider/ui/compat.js +6 -9
- package/dist/extensions/provider/ui/compat.js.map +1 -1
- package/dist/extensions/provider/ui/controls.d.ts +48 -0
- package/dist/extensions/provider/ui/controls.d.ts.map +1 -0
- package/dist/extensions/provider/ui/controls.js +108 -0
- package/dist/extensions/provider/ui/controls.js.map +1 -0
- package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -1
- package/dist/extensions/provider/ui/dictionary.js +6 -9
- package/dist/extensions/provider/ui/dictionary.js.map +1 -1
- package/dist/extensions/provider/ui/editor.d.ts +3 -3
- package/dist/extensions/provider/ui/editor.d.ts.map +1 -1
- package/dist/extensions/provider/ui/editor.js +35 -140
- package/dist/extensions/provider/ui/editor.js.map +1 -1
- package/dist/extensions/provider/ui/fetch-models.d.ts +0 -3
- package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -1
- package/dist/extensions/provider/ui/fetch-models.js +49 -44
- package/dist/extensions/provider/ui/fetch-models.js.map +1 -1
- package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -1
- package/dist/extensions/provider/ui/model-fields.js +11 -14
- package/dist/extensions/provider/ui/model-fields.js.map +1 -1
- package/dist/extensions/provider/ui/model-options.d.ts +4 -34
- package/dist/extensions/provider/ui/model-options.d.ts.map +1 -1
- package/dist/extensions/provider/ui/model-options.js +90 -271
- package/dist/extensions/provider/ui/model-options.js.map +1 -1
- package/dist/extensions/provider/ui/pane.d.ts +4 -18
- package/dist/extensions/provider/ui/pane.d.ts.map +1 -1
- package/dist/extensions/provider/ui/pane.js.map +1 -1
- package/dist/extensions/provider/ui/provider-fields.d.ts +2 -19
- package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -1
- package/dist/extensions/provider/ui/provider-fields.js +58 -171
- package/dist/extensions/provider/ui/provider-fields.js.map +1 -1
- package/dist/extensions/provider/ui/thinking-map.d.ts.map +1 -1
- package/dist/extensions/provider/ui/thinking-map.js +6 -9
- package/dist/extensions/provider/ui/thinking-map.js.map +1 -1
- package/dist/extensions/question/detail-pane.d.ts +7 -2
- package/dist/extensions/question/detail-pane.d.ts.map +1 -1
- package/dist/extensions/question/detail-pane.js +16 -5
- package/dist/extensions/question/detail-pane.js.map +1 -1
- package/dist/extensions/question/dialog-view.d.ts +41 -0
- package/dist/extensions/question/dialog-view.d.ts.map +1 -0
- package/dist/extensions/question/dialog-view.js +329 -0
- package/dist/extensions/question/dialog-view.js.map +1 -0
- package/dist/extensions/question/dialog.d.ts +3 -3
- package/dist/extensions/question/dialog.d.ts.map +1 -1
- package/dist/extensions/question/dialog.js +220 -634
- package/dist/extensions/question/dialog.js.map +1 -1
- package/dist/extensions/question/index.d.ts.map +1 -1
- package/dist/extensions/question/index.js +2 -3
- package/dist/extensions/question/index.js.map +1 -1
- package/dist/extensions/question/render.d.ts.map +1 -1
- package/dist/extensions/question/render.js +22 -32
- package/dist/extensions/question/render.js.map +1 -1
- package/dist/extensions/question/results.d.ts.map +1 -1
- package/dist/extensions/question/results.js +56 -12
- package/dist/extensions/question/results.js.map +1 -1
- package/dist/extensions/question/schema.d.ts +21 -6
- package/dist/extensions/question/schema.d.ts.map +1 -1
- package/dist/extensions/question/schema.js.map +1 -1
- package/dist/extensions/question/state.d.ts +9 -7
- package/dist/extensions/question/state.d.ts.map +1 -1
- package/dist/extensions/question/state.js +63 -54
- package/dist/extensions/question/state.js.map +1 -1
- package/dist/extensions/question/types.d.ts +41 -18
- package/dist/extensions/question/types.d.ts.map +1 -1
- package/dist/extensions/question/types.js.map +1 -1
- package/dist/extensions/statusline/index.d.ts +4 -0
- package/dist/extensions/statusline/index.d.ts.map +1 -1
- package/dist/extensions/statusline/index.js +18 -355
- package/dist/extensions/statusline/index.js.map +1 -1
- package/dist/extensions/statusline/render.d.ts +19 -0
- package/dist/extensions/statusline/render.d.ts.map +1 -0
- package/dist/extensions/statusline/render.js +163 -0
- package/dist/extensions/statusline/render.js.map +1 -0
- package/dist/extensions/statusline/usage.d.ts +12 -0
- package/dist/extensions/statusline/usage.d.ts.map +1 -0
- package/dist/extensions/statusline/usage.js +36 -0
- package/dist/extensions/statusline/usage.js.map +1 -0
- package/dist/extensions/tool-search/index.d.ts +12 -0
- package/dist/extensions/tool-search/index.d.ts.map +1 -0
- package/dist/extensions/tool-search/index.js +20 -0
- package/dist/extensions/tool-search/index.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +73 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -0
- package/dist/extensions/tool-search/tool.js +187 -0
- package/dist/extensions/tool-search/tool.js.map +1 -0
- package/dist/extensions/web-search/execute.d.ts +1 -5
- package/dist/extensions/web-search/execute.d.ts.map +1 -1
- package/dist/extensions/web-search/execute.js +4 -9
- package/dist/extensions/web-search/execute.js.map +1 -1
- package/dist/extensions/web-search/format.d.ts +12 -3
- package/dist/extensions/web-search/format.d.ts.map +1 -1
- package/dist/extensions/web-search/format.js +33 -25
- package/dist/extensions/web-search/format.js.map +1 -1
- package/dist/extensions/web-search/index.d.ts.map +1 -1
- package/dist/extensions/web-search/index.js +6 -29
- package/dist/extensions/web-search/index.js.map +1 -1
- package/dist/extensions/web-search/providers/deepseek.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/deepseek.js +0 -1
- package/dist/extensions/web-search/providers/deepseek.js.map +1 -1
- package/dist/extensions/web-search/providers/http.d.ts +1 -1
- package/dist/extensions/web-search/providers/http.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/http.js.map +1 -1
- package/dist/extensions/web-search/providers/minimax.d.ts.map +1 -1
- package/dist/extensions/web-search/providers/minimax.js +0 -1
- package/dist/extensions/web-search/providers/minimax.js.map +1 -1
- package/dist/extensions/web-search/render.d.ts +7 -2
- package/dist/extensions/web-search/render.d.ts.map +1 -1
- package/dist/extensions/web-search/render.js +32 -4
- package/dist/extensions/web-search/render.js.map +1 -1
- package/dist/extensions/web-search/results.d.ts.map +1 -1
- package/dist/extensions/web-search/results.js +3 -8
- package/dist/extensions/web-search/results.js.map +1 -1
- package/dist/extensions/web-search/types.d.ts +4 -2
- package/dist/extensions/web-search/types.d.ts.map +1 -1
- package/dist/extensions/web-search/types.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +16 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +13 -3
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +3 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +8 -2
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +7 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +42 -3
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +24 -21
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/pi-logo-animation.d.ts +68 -0
- package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.js +1076 -0
- package/dist/modes/interactive/components/pi-logo-animation.js.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js +12 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +1 -0
- package/dist/modes/interactive/components/pi-logo.d.ts +19 -0
- package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo.js +37 -0
- package/dist/modes/interactive/components/pi-logo.js.map +1 -0
- package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
- package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/radius-login-selector.js +83 -0
- package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +6 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +33 -11
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-marker.d.ts +2 -4
- package/dist/modes/interactive/components/status-marker.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-marker.js +2 -6
- package/dist/modes/interactive/components/status-marker.js.map +1 -1
- package/dist/modes/interactive/components/themed-text.d.ts +17 -0
- package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/themed-text.js +28 -0
- package/dist/modes/interactive/components/themed-text.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +5 -4
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +36 -6
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +12 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +377 -199
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts +8 -0
- package/dist/modes/interactive/tasks/completion-render.d.ts.map +1 -0
- package/dist/{extensions/background → modes/interactive/tasks}/completion-render.js +41 -91
- package/dist/modes/interactive/tasks/completion-render.js.map +1 -0
- package/dist/modes/interactive/tasks/index.d.ts +12 -0
- package/dist/modes/interactive/tasks/index.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/index.js +102 -0
- package/dist/modes/interactive/tasks/index.js.map +1 -0
- package/dist/modes/interactive/tasks/inspector.d.ts +35 -0
- package/dist/modes/interactive/tasks/inspector.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/inspector.js +93 -0
- package/dist/modes/interactive/tasks/inspector.js.map +1 -0
- package/dist/modes/interactive/tasks/layout.d.ts +40 -0
- package/dist/modes/interactive/tasks/layout.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/layout.js +212 -0
- package/dist/modes/interactive/tasks/layout.js.map +1 -0
- package/dist/modes/interactive/tasks/list.d.ts +21 -0
- package/dist/modes/interactive/tasks/list.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/list.js +96 -0
- package/dist/modes/interactive/tasks/list.js.map +1 -0
- package/dist/modes/interactive/tasks/manager.d.ts +60 -0
- package/dist/modes/interactive/tasks/manager.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/manager.js +380 -0
- package/dist/modes/interactive/tasks/manager.js.map +1 -0
- package/dist/modes/interactive/tasks/model.d.ts +21 -0
- package/dist/modes/interactive/tasks/model.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/model.js +41 -0
- package/dist/modes/interactive/tasks/model.js.map +1 -0
- package/dist/modes/interactive/tasks/render.d.ts +28 -0
- package/dist/modes/interactive/tasks/render.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/render.js +141 -0
- package/dist/modes/interactive/tasks/render.js.map +1 -0
- package/dist/modes/interactive/tasks/task-view.d.ts +13 -0
- package/dist/modes/interactive/tasks/task-view.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/task-view.js +20 -0
- package/dist/modes/interactive/tasks/task-view.js.map +1 -0
- package/dist/modes/interactive/tasks/text.d.ts +6 -0
- package/dist/modes/interactive/tasks/text.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/text.js +16 -0
- package/dist/modes/interactive/tasks/text.js.map +1 -0
- package/dist/modes/interactive/tasks/viewport.d.ts +17 -0
- package/dist/modes/interactive/tasks/viewport.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/viewport.js +59 -0
- package/dist/modes/interactive/tasks/viewport.js.map +1 -0
- package/dist/modes/interactive/tasks/views.d.ts +9 -0
- package/dist/modes/interactive/tasks/views.d.ts.map +1 -0
- package/dist/modes/interactive/tasks/views.js +42 -0
- package/dist/modes/interactive/tasks/views.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +59 -72
- package/dist/modes/interactive/theme/light.json +57 -69
- package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/system-theme.js +546 -0
- package/dist/modes/interactive/theme/system-theme.js.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +125 -47
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
- package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-json.js +3 -1
- package/dist/modes/interactive/theme/theme-json.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +7 -2
- package/dist/modes/interactive/theme/theme.d.ts +70 -39
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +247 -313
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/tool-view/fallback.d.ts +1 -1
- package/dist/modes/interactive/tool-view/fallback.d.ts.map +1 -1
- package/dist/modes/interactive/tool-view/fallback.js +4 -1
- package/dist/modes/interactive/tool-view/fallback.js.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.js +2 -2
- package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
- package/dist/modes/interactive/tui-renderer.d.ts +2 -1
- package/dist/modes/interactive/tui-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/tui-renderer.js +1 -0
- package/dist/modes/interactive/tui-renderer.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +6 -6
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +12 -8
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +7 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +10 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +6 -2
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +14 -17
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +5 -0
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/paths.d.ts +3 -3
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +5 -4
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -3
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -30
- package/dist/utils/shell.js.map +1 -1
- package/docs/bundled/README.md +22 -9
- package/docs/bundled/extensions/question.md +2 -2
- package/docs/bundled/extensions/statusline.md +26 -17
- package/docs/bundled/tasks.md +127 -0
- package/docs/bundled/tool-presentation.md +1 -1
- package/docs/codemode.md +207 -0
- package/docs/custom-provider.md +44 -0
- package/docs/docs.json +14 -10
- package/docs/environment-variables.md +1 -1
- package/docs/extensions.md +94 -93
- package/docs/index.md +2 -1
- package/docs/keybindings.md +17 -9
- package/docs/llama-cpp.md +12 -1
- package/docs/mcp.md +248 -0
- package/docs/models.md +56 -0
- package/docs/packages.md +4 -0
- package/docs/providers.md +14 -0
- package/docs/rpc.md +5 -3
- package/docs/sdk.md +26 -16
- package/docs/security.md +4 -0
- package/docs/session-format.md +20 -23
- package/docs/settings.md +29 -3
- package/docs/themes.md +27 -5
- package/docs/tui.md +21 -1
- package/docs/usage.md +52 -4
- package/docs/virtual-models.md +114 -0
- package/docs/windows.md +2 -0
- package/examples/README.md +2 -2
- package/examples/extensions/README.md +3 -2
- package/examples/extensions/built-in-tool-renderer.ts +16 -40
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +4 -4
- package/examples/extensions/debug-provider.ts +90 -0
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/jev-router.ts +113 -0
- package/examples/extensions/minimal-mode.ts +24 -96
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/rpc-client.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/14-codemode-mcp.ts +61 -0
- package/examples/sdk/README.md +1 -0
- package/npm-shrinkwrap.json +420 -423
- package/package.json +14 -10
- package/dist/bundle/chunks/anthropic-messages-XWFTZP2N.js +0 -6
- package/dist/bundle/chunks/azure-openai-responses-HS35BQV6.js +0 -2
- package/dist/bundle/chunks/chunk-2IO5GDBS.js +0 -11
- package/dist/bundle/chunks/chunk-EDBLK2JQ.js +0 -2
- package/dist/bundle/chunks/chunk-I5IVW2WS.js +0 -2
- package/dist/bundle/chunks/chunk-IORR2FW4.js +0 -2
- package/dist/bundle/chunks/chunk-NUHFSC37.js +0 -25
- package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
- package/dist/bundle/chunks/google-generative-ai-NOVAJBFC.js +0 -2
- package/dist/bundle/chunks/google-vertex-4VHCZJV5.js +0 -2
- package/dist/bundle/chunks/mistral-conversations-WC6A2WCJ.js +0 -5
- package/dist/bundle/chunks/openai-codex-responses-XCDG75W2.js +0 -10
- package/dist/bundle/chunks/openai-completions-SHS3CAEL.js +0 -7
- package/dist/bundle/chunks/openai-responses-UT6XFKC7.js +0 -2
- package/dist/bundle/chunks/virtual-modules-KUEIEAZN.js +0 -2
- package/dist/core/background/history.d.ts +0 -4
- package/dist/core/background/history.d.ts.map +0 -1
- package/dist/core/background/history.js.map +0 -1
- package/dist/core/background/output.d.ts.map +0 -1
- package/dist/core/background/output.js.map +0 -1
- package/dist/core/background/presentation.d.ts +0 -9
- package/dist/core/background/presentation.d.ts.map +0 -1
- package/dist/core/background/presentation.js +0 -311
- package/dist/core/background/presentation.js.map +0 -1
- package/dist/core/background/service.d.ts +0 -68
- package/dist/core/background/service.d.ts.map +0 -1
- package/dist/core/background/service.js +0 -641
- package/dist/core/background/service.js.map +0 -1
- package/dist/core/background/session.d.ts +0 -67
- package/dist/core/background/session.d.ts.map +0 -1
- package/dist/core/background/session.js +0 -248
- package/dist/core/background/session.js.map +0 -1
- package/dist/core/background/types.d.ts.map +0 -1
- package/dist/core/background/types.js +0 -31
- package/dist/core/background/types.js.map +0 -1
- package/dist/extensions/background/actions.d.ts +0 -11
- package/dist/extensions/background/actions.d.ts.map +0 -1
- package/dist/extensions/background/actions.js.map +0 -1
- package/dist/extensions/background/completion-render.d.ts +0 -8
- package/dist/extensions/background/completion-render.d.ts.map +0 -1
- package/dist/extensions/background/completion-render.js.map +0 -1
- package/dist/extensions/background/constants.d.ts +0 -24
- package/dist/extensions/background/constants.d.ts.map +0 -1
- package/dist/extensions/background/constants.js +0 -24
- package/dist/extensions/background/constants.js.map +0 -1
- package/dist/extensions/background/index.d.ts +0 -7
- package/dist/extensions/background/index.d.ts.map +0 -1
- package/dist/extensions/background/index.js +0 -135
- package/dist/extensions/background/index.js.map +0 -1
- package/dist/extensions/background/keybindings.d.ts +0 -10
- package/dist/extensions/background/keybindings.d.ts.map +0 -1
- package/dist/extensions/background/keybindings.js +0 -14
- package/dist/extensions/background/keybindings.js.map +0 -1
- package/dist/extensions/background/manager.d.ts +0 -80
- package/dist/extensions/background/manager.d.ts.map +0 -1
- package/dist/extensions/background/manager.js +0 -673
- package/dist/extensions/background/manager.js.map +0 -1
- package/dist/extensions/background/render.d.ts +0 -42
- package/dist/extensions/background/render.d.ts.map +0 -1
- package/dist/extensions/background/render.js +0 -225
- package/dist/extensions/background/render.js.map +0 -1
- package/dist/extensions/background/schema.d.ts.map +0 -1
- package/dist/extensions/background/schema.js.map +0 -1
- package/dist/extensions/background/task-view.d.ts +0 -53
- package/dist/extensions/background/task-view.d.ts.map +0 -1
- package/dist/extensions/background/task-view.js +0 -60
- package/dist/extensions/background/task-view.js.map +0 -1
- package/dist/extensions/background/text.d.ts +0 -12
- package/dist/extensions/background/text.d.ts.map +0 -1
- package/dist/extensions/background/text.js +0 -39
- package/dist/extensions/background/text.js.map +0 -1
- package/dist/extensions/background/types.d.ts +0 -85
- package/dist/extensions/background/types.d.ts.map +0 -1
- package/dist/extensions/background/types.js +0 -17
- package/dist/extensions/background/types.js.map +0 -1
- package/dist/extensions/subagent/activity.d.ts +0 -34
- package/dist/extensions/subagent/activity.d.ts.map +0 -1
- package/dist/extensions/subagent/activity.js +0 -192
- package/dist/extensions/subagent/activity.js.map +0 -1
- package/dist/extensions/subagent/agents-command.d.ts +0 -4
- package/dist/extensions/subagent/agents-command.d.ts.map +0 -1
- package/dist/extensions/subagent/agents-command.js +0 -230
- package/dist/extensions/subagent/agents-command.js.map +0 -1
- package/dist/extensions/subagent/agents.d.ts +0 -6
- package/dist/extensions/subagent/agents.d.ts.map +0 -1
- package/dist/extensions/subagent/agents.js +0 -53
- package/dist/extensions/subagent/agents.js.map +0 -1
- package/dist/extensions/subagent/budget.d.ts +0 -15
- package/dist/extensions/subagent/budget.d.ts.map +0 -1
- package/dist/extensions/subagent/budget.js +0 -123
- package/dist/extensions/subagent/budget.js.map +0 -1
- package/dist/extensions/subagent/cancellation.d.ts +0 -29
- package/dist/extensions/subagent/cancellation.d.ts.map +0 -1
- package/dist/extensions/subagent/cancellation.js +0 -91
- package/dist/extensions/subagent/cancellation.js.map +0 -1
- package/dist/extensions/subagent/constants.d.ts +0 -25
- package/dist/extensions/subagent/constants.d.ts.map +0 -1
- package/dist/extensions/subagent/constants.js +0 -50
- package/dist/extensions/subagent/constants.js.map +0 -1
- package/dist/extensions/subagent/index.d.ts +0 -3
- package/dist/extensions/subagent/index.d.ts.map +0 -1
- package/dist/extensions/subagent/index.js +0 -151
- package/dist/extensions/subagent/index.js.map +0 -1
- package/dist/extensions/subagent/model-selection.d.ts +0 -16
- package/dist/extensions/subagent/model-selection.d.ts.map +0 -1
- package/dist/extensions/subagent/model-selection.js +0 -51
- package/dist/extensions/subagent/model-selection.js.map +0 -1
- package/dist/extensions/subagent/render.d.ts +0 -24
- package/dist/extensions/subagent/render.d.ts.map +0 -1
- package/dist/extensions/subagent/render.js +0 -336
- package/dist/extensions/subagent/render.js.map +0 -1
- package/dist/extensions/subagent/resolve.d.ts +0 -31
- package/dist/extensions/subagent/resolve.d.ts.map +0 -1
- package/dist/extensions/subagent/resolve.js +0 -111
- package/dist/extensions/subagent/resolve.js.map +0 -1
- package/dist/extensions/subagent/runner.d.ts +0 -35
- package/dist/extensions/subagent/runner.d.ts.map +0 -1
- package/dist/extensions/subagent/runner.js +0 -255
- package/dist/extensions/subagent/runner.js.map +0 -1
- package/dist/extensions/subagent/schema.d.ts +0 -28
- package/dist/extensions/subagent/schema.d.ts.map +0 -1
- package/dist/extensions/subagent/schema.js +0 -58
- package/dist/extensions/subagent/schema.js.map +0 -1
- package/dist/extensions/subagent/sdk-runner.d.ts +0 -33
- package/dist/extensions/subagent/sdk-runner.d.ts.map +0 -1
- package/dist/extensions/subagent/sdk-runner.js +0 -331
- package/dist/extensions/subagent/sdk-runner.js.map +0 -1
- package/dist/extensions/subagent/settings.d.ts +0 -8
- package/dist/extensions/subagent/settings.d.ts.map +0 -1
- package/dist/extensions/subagent/settings.js +0 -206
- package/dist/extensions/subagent/settings.js.map +0 -1
- package/dist/extensions/subagent/state.d.ts +0 -102
- package/dist/extensions/subagent/state.d.ts.map +0 -1
- package/dist/extensions/subagent/state.js +0 -383
- package/dist/extensions/subagent/state.js.map +0 -1
- package/dist/extensions/subagent/text.d.ts +0 -6
- package/dist/extensions/subagent/text.d.ts.map +0 -1
- package/dist/extensions/subagent/text.js +0 -66
- package/dist/extensions/subagent/text.js.map +0 -1
- package/dist/extensions/subagent/types.d.ts +0 -91
- package/dist/extensions/subagent/types.d.ts.map +0 -1
- package/dist/extensions/subagent/types.js +0 -2
- package/dist/extensions/subagent/types.js.map +0 -1
- package/dist/extensions/subagent/ui/agents-dialog.d.ts +0 -4
- package/dist/extensions/subagent/ui/agents-dialog.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/agents-dialog.js +0 -84
- package/dist/extensions/subagent/ui/agents-dialog.js.map +0 -1
- package/dist/extensions/subagent/ui/choice-menu.d.ts +0 -39
- package/dist/extensions/subagent/ui/choice-menu.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/choice-menu.js +0 -93
- package/dist/extensions/subagent/ui/choice-menu.js.map +0 -1
- package/dist/extensions/subagent/ui/choices.d.ts +0 -36
- package/dist/extensions/subagent/ui/choices.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/choices.js +0 -54
- package/dist/extensions/subagent/ui/choices.js.map +0 -1
- package/dist/extensions/subagent/ui/model-list.d.ts +0 -66
- package/dist/extensions/subagent/ui/model-list.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/model-list.js +0 -235
- package/dist/extensions/subagent/ui/model-list.js.map +0 -1
- package/dist/extensions/subagent/ui/model-picker.d.ts +0 -47
- package/dist/extensions/subagent/ui/model-picker.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/model-picker.js +0 -143
- package/dist/extensions/subagent/ui/model-picker.js.map +0 -1
- package/dist/extensions/subagent/ui/profile-settings-menu.d.ts +0 -41
- package/dist/extensions/subagent/ui/profile-settings-menu.d.ts.map +0 -1
- package/dist/extensions/subagent/ui/profile-settings-menu.js +0 -98
- package/dist/extensions/subagent/ui/profile-settings-menu.js.map +0 -1
- package/dist/extensions/todo/constants.d.ts +0 -16
- package/dist/extensions/todo/constants.d.ts.map +0 -1
- package/dist/extensions/todo/constants.js +0 -30
- package/dist/extensions/todo/constants.js.map +0 -1
- package/dist/extensions/todo/index.d.ts +0 -3
- package/dist/extensions/todo/index.d.ts.map +0 -1
- package/dist/extensions/todo/index.js +0 -98
- package/dist/extensions/todo/index.js.map +0 -1
- package/dist/extensions/todo/schema.d.ts +0 -60
- package/dist/extensions/todo/schema.d.ts.map +0 -1
- package/dist/extensions/todo/schema.js +0 -56
- package/dist/extensions/todo/schema.js.map +0 -1
- package/dist/extensions/todo/state.d.ts +0 -34
- package/dist/extensions/todo/state.d.ts.map +0 -1
- package/dist/extensions/todo/state.js +0 -425
- package/dist/extensions/todo/state.js.map +0 -1
- package/dist/extensions/todo/view.d.ts +0 -36
- package/dist/extensions/todo/view.d.ts.map +0 -1
- package/dist/extensions/todo/view.js +0 -580
- package/dist/extensions/todo/view.js.map +0 -1
- package/dist/extensions/todo/widget.d.ts +0 -15
- package/dist/extensions/todo/widget.d.ts.map +0 -1
- package/dist/extensions/todo/widget.js +0 -50
- package/dist/extensions/todo/widget.js.map +0 -1
- package/docs/bundled/extensions/background.md +0 -132
- package/docs/bundled/extensions/subagent.md +0 -148
- package/docs/bundled/extensions/todo.md +0 -104
- package/examples/extensions/todo.ts +0 -297
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import type { Usage } from "@earendil-works/pi-ai";
|
|
2
|
-
import type { ResolvedSubagentTask, SubagentDetails, SubagentRunDetails, ToolActivity } from "./types.ts";
|
|
3
|
-
/**
|
|
4
|
-
* Mutable-run state plus an internal revision counter. All transitions go
|
|
5
|
-
* through {@link reduceRun}; the batch runner compares version sums instead
|
|
6
|
-
* of diffing rendered fields.
|
|
7
|
-
*/
|
|
8
|
-
export interface SubagentRunState extends SubagentRunDetails {
|
|
9
|
-
/** Monotonic per-run revision; bumped by every applied event. */
|
|
10
|
-
version: number;
|
|
11
|
-
/** Presentation provenance; excluded from the foreground tool's details. */
|
|
12
|
-
reportTruncated: boolean;
|
|
13
|
-
}
|
|
14
|
-
/** The adapter layer's only output and the reducer's only input. */
|
|
15
|
-
export type SubagentRunEvent = {
|
|
16
|
-
type: "slot_acquired";
|
|
17
|
-
startedAt: number;
|
|
18
|
-
} | {
|
|
19
|
-
type: "retry_scheduled";
|
|
20
|
-
attempt: number;
|
|
21
|
-
maxAttempts: number;
|
|
22
|
-
deadline: number;
|
|
23
|
-
error: string | undefined;
|
|
24
|
-
} | {
|
|
25
|
-
type: "retry_started";
|
|
26
|
-
} | {
|
|
27
|
-
type: "auto_retry_start";
|
|
28
|
-
attempt: number;
|
|
29
|
-
maxAttempts: number;
|
|
30
|
-
deadline: number;
|
|
31
|
-
error: string;
|
|
32
|
-
} | {
|
|
33
|
-
type: "auto_retry_end";
|
|
34
|
-
} | {
|
|
35
|
-
type: "turn_end";
|
|
36
|
-
} | {
|
|
37
|
-
type: "assistant_message_settled";
|
|
38
|
-
usage: Usage | undefined;
|
|
39
|
-
} | {
|
|
40
|
-
type: "tool_started";
|
|
41
|
-
toolCallId: string;
|
|
42
|
-
toolName: string;
|
|
43
|
-
args: unknown;
|
|
44
|
-
startedAt: number;
|
|
45
|
-
} | {
|
|
46
|
-
type: "tool_updated";
|
|
47
|
-
toolCallId: string;
|
|
48
|
-
toolName: string;
|
|
49
|
-
args: unknown;
|
|
50
|
-
} | {
|
|
51
|
-
type: "tool_ended";
|
|
52
|
-
toolCallId: string;
|
|
53
|
-
result: unknown;
|
|
54
|
-
isError: boolean;
|
|
55
|
-
endedAt: number;
|
|
56
|
-
} | {
|
|
57
|
-
type: "compaction_started";
|
|
58
|
-
startedAt: number;
|
|
59
|
-
} | {
|
|
60
|
-
type: "compaction_ended";
|
|
61
|
-
usage?: Usage;
|
|
62
|
-
tokensBefore: number | undefined;
|
|
63
|
-
tokensAfter: number | undefined;
|
|
64
|
-
error: string | undefined;
|
|
65
|
-
endedAt: number;
|
|
66
|
-
} | {
|
|
67
|
-
type: "settle";
|
|
68
|
-
verdict: "completed" | "failed" | "aborted";
|
|
69
|
-
report: string;
|
|
70
|
-
error: string | undefined;
|
|
71
|
-
endedAt: number;
|
|
72
|
-
} | {
|
|
73
|
-
type: "abort_while_queued";
|
|
74
|
-
endedAt: number;
|
|
75
|
-
} | {
|
|
76
|
-
type: "abort_while_retrying";
|
|
77
|
-
endedAt: number;
|
|
78
|
-
};
|
|
79
|
-
export declare function createRunState(task: ResolvedSubagentTask, index: number, batchId: string | undefined, parentCwd: string): SubagentRunState;
|
|
80
|
-
/** Strips internal fields for projection into the public details shape. */
|
|
81
|
-
export declare function toRunDetails(state: SubagentRunState): SubagentRunDetails;
|
|
82
|
-
export declare function deriveCurrentActivity(state: SubagentRunState): string | undefined;
|
|
83
|
-
/** Append one bounded activity while preserving the display tail. */
|
|
84
|
-
export declare function appendActivity(activities: ToolActivity[], activity: ToolActivity): void;
|
|
85
|
-
/**
|
|
86
|
-
* Pure transition function; timestamps and deadlines arrive in the event.
|
|
87
|
-
* Events applied after a terminal verdict are ignored (settle is idempotent)
|
|
88
|
-
* — except retry_scheduled, the one sanctioned reopening transition.
|
|
89
|
-
*/
|
|
90
|
-
export declare function reduceRun(state: SubagentRunState, event: SubagentRunEvent): SubagentRunState;
|
|
91
|
-
export declare function versionSum(runs: readonly SubagentRunState[]): number;
|
|
92
|
-
export declare function statusOf(runs: readonly SubagentRunDetails[]): SubagentDetails["status"];
|
|
93
|
-
export declare function isSubagentError(details: Pick<SubagentDetails, "status" | "runs">): boolean;
|
|
94
|
-
export declare function statusSummary(details: SubagentDetails): string;
|
|
95
|
-
export interface SubagentRetryView {
|
|
96
|
-
attempt: number;
|
|
97
|
-
maxAttempts: number;
|
|
98
|
-
remainingSeconds: number;
|
|
99
|
-
error: string;
|
|
100
|
-
}
|
|
101
|
-
export declare function getSubagentRetryView(run: SubagentRunDetails, now?: number): SubagentRetryView | undefined;
|
|
102
|
-
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/extensions/subagent/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAqBnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1G;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC3D,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,eAAe,EAAE,OAAO,CAAC;CACzB;AAED,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GACzB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5C;IACA,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,GACD;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD;IACA,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACf,GACD;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACf,GACD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAsBrD,wBAAgB,cAAc,CAC7B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GACf,gBAAgB,CAiBlB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,CAGxE;AAKD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAQjF;AAyDD,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAGvF;AAqBD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAY5F;AA8MD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAIpE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CASvF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAK1F;AAiBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE9D;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,SAAa,GAAG,iBAAiB,GAAG,SAAS,CAY7G"}
|
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
import { relative } from "node:path";
|
|
2
|
-
import { activitySummary, addUsage, compactionError, compactionSummary, emptyUsage, isDisplayableActivity, resultSummary, } from "./activity.js";
|
|
3
|
-
import { ACTIVITY_LIMIT, ACTIVITY_TEXT_LIMIT, COMPACTION_ACTIVITY_ID, DISPLAY_ACTIVITY_LIMIT, ERROR_TEXT_LIMIT, RETRY_ERROR_TEXT_LIMIT, TASK_OUTPUT_LIMIT, } from "./constants.js";
|
|
4
|
-
import { modelId } from "./model-selection.js";
|
|
5
|
-
import { boundText } from "./text.js";
|
|
6
|
-
function runId(batchId, index) {
|
|
7
|
-
if (!batchId)
|
|
8
|
-
return `subagent-${index + 1}`;
|
|
9
|
-
// toolCallIds are provider-shaped ("call_ABC..."); keep the readable
|
|
10
|
-
// prefix, then disambiguate truncated collisions with a deterministic
|
|
11
|
-
// hash of the full id.
|
|
12
|
-
const sanitized = batchId.replace(/[^A-Za-z0-9-]+/gu, "-").replace(/^-+|-+$/gu, "");
|
|
13
|
-
const hash = hashRunId(batchId);
|
|
14
|
-
const prefix = sanitized.length > 24 ? `${sanitized.slice(0, 24)}-${hash}` : sanitized || `run-${hash}`;
|
|
15
|
-
return `${prefix}-${index + 1}`;
|
|
16
|
-
}
|
|
17
|
-
function hashRunId(value) {
|
|
18
|
-
let hash = 0x811c9dc5;
|
|
19
|
-
for (let index = 0; index < value.length; index++) {
|
|
20
|
-
hash ^= value.charCodeAt(index);
|
|
21
|
-
hash = Math.imul(hash, 0x01000193);
|
|
22
|
-
}
|
|
23
|
-
return (hash >>> 0).toString(36).padStart(6, "0").slice(0, 6);
|
|
24
|
-
}
|
|
25
|
-
export function createRunState(task, index, batchId, parentCwd) {
|
|
26
|
-
return {
|
|
27
|
-
id: runId(batchId, index),
|
|
28
|
-
agent: task.agent.name,
|
|
29
|
-
description: task.description,
|
|
30
|
-
// Display-only relative path; the worker session itself uses the
|
|
31
|
-
// resolved absolute task.cwd. Empty means "same as the parent".
|
|
32
|
-
cwd: relative(parentCwd, task.cwd),
|
|
33
|
-
model: modelId(task.model),
|
|
34
|
-
thinking: task.thinking,
|
|
35
|
-
status: "queued",
|
|
36
|
-
activities: [],
|
|
37
|
-
report: "",
|
|
38
|
-
reportTruncated: false,
|
|
39
|
-
usage: emptyUsage(),
|
|
40
|
-
version: 0,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/** Strips internal fields for projection into the public details shape. */
|
|
44
|
-
export function toRunDetails(state) {
|
|
45
|
-
const { version: _version, reportTruncated: _reportTruncated, ...details } = state;
|
|
46
|
-
return details;
|
|
47
|
-
}
|
|
48
|
-
// The live "current activity" line is derived, never imperative: a pending
|
|
49
|
-
// retry wins, then the most recent still-running tool. This is what keeps a
|
|
50
|
-
// parallel batch's line correct when tools end out of order.
|
|
51
|
-
export function deriveCurrentActivity(state) {
|
|
52
|
-
if (state.status === "completed" || state.status === "failed" || state.status === "aborted")
|
|
53
|
-
return undefined;
|
|
54
|
-
if (state.retry)
|
|
55
|
-
return `Retrying (${state.retry.attempt}/${state.retry.maxAttempts})…`;
|
|
56
|
-
for (let index = state.activities.length - 1; index >= 0; index--) {
|
|
57
|
-
const activity = state.activities[index];
|
|
58
|
-
if (activity?.status === "running")
|
|
59
|
-
return activity.summary;
|
|
60
|
-
}
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
function positiveInteger(value, fallback) {
|
|
64
|
-
return Number.isFinite(value) ? Math.max(1, Math.floor(value)) : fallback;
|
|
65
|
-
}
|
|
66
|
-
function retryError(error) {
|
|
67
|
-
const normalized = error.replace(/\s+/gu, " ").trim();
|
|
68
|
-
return boundText(normalized, RETRY_ERROR_TEXT_LIMIT).replace(/\s+/gu, " ").trim();
|
|
69
|
-
}
|
|
70
|
-
function makeRetry(attempt, maxAttempts, deadline, error) {
|
|
71
|
-
const normalizedAttempt = positiveInteger(attempt, 1);
|
|
72
|
-
return {
|
|
73
|
-
attempt: normalizedAttempt,
|
|
74
|
-
maxAttempts: Math.max(normalizedAttempt, positiveInteger(maxAttempts, normalizedAttempt)),
|
|
75
|
-
deadline,
|
|
76
|
-
error: retryError(error),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Prefer evicting entries outside the latest three real tool calls so a run
|
|
80
|
-
// with repeated synthetic compactions still retains the Activity tail the UI
|
|
81
|
-
// promises. The defensive fallback preserves the hard text budget when an
|
|
82
|
-
// adversarial caller bypasses normal per-event summary bounds.
|
|
83
|
-
function oldestEvictableActivityIndex(activities) {
|
|
84
|
-
const protectedIndexes = new Set();
|
|
85
|
-
for (let index = activities.length - 1; index >= 0 && protectedIndexes.size < DISPLAY_ACTIVITY_LIMIT; index--) {
|
|
86
|
-
const activity = activities[index];
|
|
87
|
-
if (activity && isDisplayableActivity(activity))
|
|
88
|
-
protectedIndexes.add(index);
|
|
89
|
-
}
|
|
90
|
-
const unprotected = activities.findIndex((_activity, index) => !protectedIndexes.has(index));
|
|
91
|
-
if (unprotected >= 0)
|
|
92
|
-
return unprotected;
|
|
93
|
-
return activities.length > 1 ? 0 : -1;
|
|
94
|
-
}
|
|
95
|
-
function activityTextSize(activities) {
|
|
96
|
-
return activities.reduce((total, item) => total + item.summary.length + (item.resultSummary?.length ?? 0), 0);
|
|
97
|
-
}
|
|
98
|
-
// The in-memory activity log stays within both count and text budgets; a
|
|
99
|
-
// bounded O(ACTIVITY_LIMIT) rescan per event replaces incremental byte
|
|
100
|
-
// bookkeeping. Real events bound every individual summary, so retaining one
|
|
101
|
-
// oversized adversarial entry is the only permitted budget exception.
|
|
102
|
-
function enforceActivityLimits(activities) {
|
|
103
|
-
while (activities.length > ACTIVITY_LIMIT) {
|
|
104
|
-
const index = oldestEvictableActivityIndex(activities);
|
|
105
|
-
if (index < 0)
|
|
106
|
-
break;
|
|
107
|
-
activities.splice(index, 1);
|
|
108
|
-
}
|
|
109
|
-
while (activityTextSize(activities) > ACTIVITY_TEXT_LIMIT) {
|
|
110
|
-
const index = oldestEvictableActivityIndex(activities);
|
|
111
|
-
if (index < 0)
|
|
112
|
-
break;
|
|
113
|
-
activities.splice(index, 1);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/** Append one bounded activity while preserving the display tail. */
|
|
117
|
-
export function appendActivity(activities, activity) {
|
|
118
|
-
activities.push(activity);
|
|
119
|
-
enforceActivityLimits(activities);
|
|
120
|
-
}
|
|
121
|
-
function isTerminal(state) {
|
|
122
|
-
return state.status === "completed" || state.status === "failed" || state.status === "aborted";
|
|
123
|
-
}
|
|
124
|
-
function withRevision(state, mutate) {
|
|
125
|
-
const draft = {
|
|
126
|
-
...state,
|
|
127
|
-
activities: state.activities.map((activity) => ({ ...activity })),
|
|
128
|
-
usage: { ...state.usage },
|
|
129
|
-
};
|
|
130
|
-
mutate(draft);
|
|
131
|
-
draft.version = state.version + 1;
|
|
132
|
-
return draft;
|
|
133
|
-
}
|
|
134
|
-
function clearRetry(draft) {
|
|
135
|
-
draft.retry = undefined;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Pure transition function; timestamps and deadlines arrive in the event.
|
|
139
|
-
* Events applied after a terminal verdict are ignored (settle is idempotent)
|
|
140
|
-
* — except retry_scheduled, the one sanctioned reopening transition.
|
|
141
|
-
*/
|
|
142
|
-
export function reduceRun(state, event) {
|
|
143
|
-
if (isTerminal(state) && event.type !== "retry_scheduled")
|
|
144
|
-
return state;
|
|
145
|
-
return withRevision(state, (draft) => {
|
|
146
|
-
// Cross-cutting pre-hook: every event clears the retry view except
|
|
147
|
-
// retry_scheduled (which sets it) and the two abort-terminal events
|
|
148
|
-
// (which clear it explicitly in their own body).
|
|
149
|
-
if (event.type !== "retry_scheduled")
|
|
150
|
-
clearRetry(draft);
|
|
151
|
-
applyEvent(draft, event);
|
|
152
|
-
// Cross-cutting post-hook: derive the live activity line from the
|
|
153
|
-
// new state. Terminal abort events override this to undefined.
|
|
154
|
-
draft.currentActivity = deriveCurrentActivity(draft);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
// ─── Individual event handlers ───────────────────────────────────────────────
|
|
158
|
-
// Each handler mutates the draft in place. Cross-cutting clearRetry and
|
|
159
|
-
// deriveCurrentActivity are handled by the dispatch layer above.
|
|
160
|
-
function handleSlotAcquired(draft, event) {
|
|
161
|
-
draft.status = "running";
|
|
162
|
-
draft.startedAt = event.startedAt;
|
|
163
|
-
}
|
|
164
|
-
function handleRetryScheduled(draft, event) {
|
|
165
|
-
// Reset attempt progress, never accrued provider tokens or cost. Even an
|
|
166
|
-
// attempt with no completed turns can have billable failed requests.
|
|
167
|
-
const error = draft.error ?? "Subagent failed before retry.";
|
|
168
|
-
draft.status = "queued";
|
|
169
|
-
draft.error = undefined;
|
|
170
|
-
draft.startedAt = undefined;
|
|
171
|
-
draft.endedAt = undefined;
|
|
172
|
-
draft.report = "";
|
|
173
|
-
draft.reportTruncated = false;
|
|
174
|
-
draft.activities = [];
|
|
175
|
-
draft.usage.turns = 0;
|
|
176
|
-
draft.usage.toolUses = 0;
|
|
177
|
-
draft.usage.contextTokens = undefined;
|
|
178
|
-
draft.retry = makeRetry(event.attempt, event.maxAttempts, event.deadline, error);
|
|
179
|
-
}
|
|
180
|
-
function handleRetryStarted(draft) {
|
|
181
|
-
// No-op beyond the cross-cutting clearRetry already applied.
|
|
182
|
-
void draft;
|
|
183
|
-
}
|
|
184
|
-
function handleAutoRetryStart(draft, event) {
|
|
185
|
-
draft.retry = makeRetry(event.attempt, event.maxAttempts, event.deadline, event.error);
|
|
186
|
-
}
|
|
187
|
-
function handleAutoRetryEnd(draft) {
|
|
188
|
-
// No-op beyond the cross-cutting clearRetry already applied.
|
|
189
|
-
void draft;
|
|
190
|
-
}
|
|
191
|
-
function handleTurnEnd(draft) {
|
|
192
|
-
draft.usage.turns++;
|
|
193
|
-
}
|
|
194
|
-
function handleAssistantMessageSettled(draft, event) {
|
|
195
|
-
addUsage(draft.usage, event.usage);
|
|
196
|
-
}
|
|
197
|
-
function handleToolStarted(draft, event) {
|
|
198
|
-
draft.usage.toolUses++;
|
|
199
|
-
appendActivity(draft.activities, {
|
|
200
|
-
id: event.toolCallId,
|
|
201
|
-
toolName: event.toolName,
|
|
202
|
-
summary: activitySummary(event.toolName, event.args),
|
|
203
|
-
status: "running",
|
|
204
|
-
startedAt: event.startedAt,
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
function handleToolUpdated(draft, event) {
|
|
208
|
-
const summary = activitySummary(event.toolName, event.args);
|
|
209
|
-
const activity = draft.activities.find((candidate) => candidate.id === event.toolCallId && candidate.status === "running") ??
|
|
210
|
-
[...draft.activities].reverse().find((candidate) => candidate.status === "running");
|
|
211
|
-
if (activity) {
|
|
212
|
-
activity.summary = summary;
|
|
213
|
-
enforceActivityLimits(draft.activities);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function handleToolEnded(draft, event) {
|
|
217
|
-
const activity = draft.activities.find((candidate) => candidate.id === event.toolCallId);
|
|
218
|
-
if (activity && activity.status === "running") {
|
|
219
|
-
activity.status = event.isError ? "failed" : "succeeded";
|
|
220
|
-
activity.endedAt = event.endedAt;
|
|
221
|
-
activity.resultSummary = resultSummary(event.result) || undefined;
|
|
222
|
-
enforceActivityLimits(draft.activities);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
function handleCompactionStarted(draft, event) {
|
|
226
|
-
appendActivity(draft.activities, {
|
|
227
|
-
id: COMPACTION_ACTIVITY_ID,
|
|
228
|
-
toolName: COMPACTION_ACTIVITY_ID,
|
|
229
|
-
summary: "Compacting context…",
|
|
230
|
-
status: "running",
|
|
231
|
-
startedAt: event.startedAt,
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
function handleCompactionEnded(draft, event) {
|
|
235
|
-
// Summary usage is billable, but is not the worker conversation watermark.
|
|
236
|
-
const contextTokens = draft.usage.contextTokens;
|
|
237
|
-
addUsage(draft.usage, event.usage);
|
|
238
|
-
draft.usage.contextTokens = contextTokens;
|
|
239
|
-
const activity = [...draft.activities]
|
|
240
|
-
.reverse()
|
|
241
|
-
.find((candidate) => candidate.id === COMPACTION_ACTIVITY_ID && candidate.status === "running");
|
|
242
|
-
if (activity) {
|
|
243
|
-
activity.status = event.error ? "failed" : "succeeded";
|
|
244
|
-
activity.endedAt = event.endedAt;
|
|
245
|
-
activity.summary = compactionSummary(event.tokensBefore, event.tokensAfter);
|
|
246
|
-
activity.resultSummary = event.error ? compactionError(event.error) : undefined;
|
|
247
|
-
enforceActivityLimits(draft.activities);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
function handleSettle(draft, event) {
|
|
251
|
-
draft.status = event.verdict;
|
|
252
|
-
draft.report = boundText(event.report, TASK_OUTPUT_LIMIT);
|
|
253
|
-
draft.reportTruncated = draft.report !== event.report;
|
|
254
|
-
draft.error = event.error ? boundText(event.error, ERROR_TEXT_LIMIT) : undefined;
|
|
255
|
-
draft.endedAt = event.endedAt;
|
|
256
|
-
draft.retry = undefined;
|
|
257
|
-
}
|
|
258
|
-
function handleAbortWhileQueued(draft, event) {
|
|
259
|
-
draft.status = "aborted";
|
|
260
|
-
draft.error = "Subagent was aborted while queued.";
|
|
261
|
-
draft.endedAt = event.endedAt;
|
|
262
|
-
draft.retry = undefined;
|
|
263
|
-
}
|
|
264
|
-
function handleAbortWhileRetrying(draft, event) {
|
|
265
|
-
draft.status = "aborted";
|
|
266
|
-
draft.error = "Subagent was aborted while waiting to retry.";
|
|
267
|
-
draft.endedAt = event.endedAt;
|
|
268
|
-
draft.retry = undefined;
|
|
269
|
-
}
|
|
270
|
-
function applyEvent(draft, event) {
|
|
271
|
-
switch (event.type) {
|
|
272
|
-
case "slot_acquired":
|
|
273
|
-
handleSlotAcquired(draft, event);
|
|
274
|
-
break;
|
|
275
|
-
case "retry_scheduled":
|
|
276
|
-
handleRetryScheduled(draft, event);
|
|
277
|
-
break;
|
|
278
|
-
case "retry_started":
|
|
279
|
-
handleRetryStarted(draft);
|
|
280
|
-
break;
|
|
281
|
-
case "auto_retry_start":
|
|
282
|
-
handleAutoRetryStart(draft, event);
|
|
283
|
-
break;
|
|
284
|
-
case "auto_retry_end":
|
|
285
|
-
handleAutoRetryEnd(draft);
|
|
286
|
-
break;
|
|
287
|
-
case "turn_end":
|
|
288
|
-
handleTurnEnd(draft);
|
|
289
|
-
break;
|
|
290
|
-
case "assistant_message_settled":
|
|
291
|
-
handleAssistantMessageSettled(draft, event);
|
|
292
|
-
break;
|
|
293
|
-
case "tool_started":
|
|
294
|
-
handleToolStarted(draft, event);
|
|
295
|
-
break;
|
|
296
|
-
case "tool_updated":
|
|
297
|
-
handleToolUpdated(draft, event);
|
|
298
|
-
break;
|
|
299
|
-
case "tool_ended":
|
|
300
|
-
handleToolEnded(draft, event);
|
|
301
|
-
break;
|
|
302
|
-
case "compaction_started":
|
|
303
|
-
handleCompactionStarted(draft, event);
|
|
304
|
-
break;
|
|
305
|
-
case "compaction_ended":
|
|
306
|
-
handleCompactionEnded(draft, event);
|
|
307
|
-
break;
|
|
308
|
-
case "settle":
|
|
309
|
-
handleSettle(draft, event);
|
|
310
|
-
break;
|
|
311
|
-
case "abort_while_queued":
|
|
312
|
-
handleAbortWhileQueued(draft, event);
|
|
313
|
-
break;
|
|
314
|
-
case "abort_while_retrying":
|
|
315
|
-
handleAbortWhileRetrying(draft, event);
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
export function versionSum(runs) {
|
|
320
|
-
let total = 0;
|
|
321
|
-
for (const run of runs)
|
|
322
|
-
total += run.version;
|
|
323
|
-
return total;
|
|
324
|
-
}
|
|
325
|
-
export function statusOf(runs) {
|
|
326
|
-
if (runs.length === 0)
|
|
327
|
-
return "running";
|
|
328
|
-
// Active beats terminal: any queued or running run keeps the batch
|
|
329
|
-
// "running" regardless of what the others have settled to.
|
|
330
|
-
if (runs.some((run) => run.status === "queued" || run.status === "running"))
|
|
331
|
-
return "running";
|
|
332
|
-
if (runs.every((run) => run.status === "completed"))
|
|
333
|
-
return "completed";
|
|
334
|
-
if (runs.some((run) => run.status === "completed"))
|
|
335
|
-
return "partial";
|
|
336
|
-
if (runs.every((run) => run.status === "aborted"))
|
|
337
|
-
return "aborted";
|
|
338
|
-
return "failed";
|
|
339
|
-
}
|
|
340
|
-
export function isSubagentError(details) {
|
|
341
|
-
if (details.status !== "failed" && details.status !== "aborted")
|
|
342
|
-
return false;
|
|
343
|
-
// A batch with any successful run is a partial result, not an error:
|
|
344
|
-
// per-run status is already reported in the content sections.
|
|
345
|
-
return !details.runs.some((run) => run.status === "completed");
|
|
346
|
-
}
|
|
347
|
-
function statusText(details) {
|
|
348
|
-
if (details.runs.length === 0)
|
|
349
|
-
return "Initializing…";
|
|
350
|
-
const running = details.runs.filter((run) => run.status === "running").length;
|
|
351
|
-
const queued = details.runs.filter((run) => run.status === "queued").length;
|
|
352
|
-
const completed = details.runs.filter((run) => run.status === "completed").length;
|
|
353
|
-
const failed = details.runs.filter((run) => run.status === "failed").length;
|
|
354
|
-
const aborted = details.runs.filter((run) => run.status === "aborted").length;
|
|
355
|
-
const parts = [`${completed}/${details.runs.length} complete`];
|
|
356
|
-
if (running)
|
|
357
|
-
parts.push(`${running} running`);
|
|
358
|
-
if (queued)
|
|
359
|
-
parts.push(`${queued} queued`);
|
|
360
|
-
if (failed)
|
|
361
|
-
parts.push(`${failed} failed`);
|
|
362
|
-
if (aborted)
|
|
363
|
-
parts.push(`${aborted} aborted`);
|
|
364
|
-
return parts.join(" · ");
|
|
365
|
-
}
|
|
366
|
-
export function statusSummary(details) {
|
|
367
|
-
return statusText(details);
|
|
368
|
-
}
|
|
369
|
-
export function getSubagentRetryView(run, now = Date.now()) {
|
|
370
|
-
const retry = run.retry;
|
|
371
|
-
if (!retry || !Number.isFinite(retry.deadline))
|
|
372
|
-
return undefined;
|
|
373
|
-
const attempt = positiveInteger(retry.attempt, 1);
|
|
374
|
-
const maxAttempts = Math.max(attempt, positiveInteger(retry.maxAttempts, attempt));
|
|
375
|
-
const currentTime = Number.isFinite(now) ? now : retry.deadline;
|
|
376
|
-
return {
|
|
377
|
-
attempt,
|
|
378
|
-
maxAttempts,
|
|
379
|
-
remainingSeconds: Math.max(0, Math.ceil((retry.deadline - currentTime) / 1000)),
|
|
380
|
-
error: retryError(typeof retry.error === "string" ? retry.error : ""),
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
//# sourceMappingURL=state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/extensions/subagent/state.ts"],"names":[],"mappings":"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","sourcesContent":["import { relative } from \"node:path\";\nimport type { Usage } from \"@earendil-works/pi-ai\";\nimport {\n\tactivitySummary,\n\taddUsage,\n\tcompactionError,\n\tcompactionSummary,\n\temptyUsage,\n\tisDisplayableActivity,\n\tresultSummary,\n} from \"./activity.ts\";\nimport {\n\tACTIVITY_LIMIT,\n\tACTIVITY_TEXT_LIMIT,\n\tCOMPACTION_ACTIVITY_ID,\n\tDISPLAY_ACTIVITY_LIMIT,\n\tERROR_TEXT_LIMIT,\n\tRETRY_ERROR_TEXT_LIMIT,\n\tTASK_OUTPUT_LIMIT,\n} from \"./constants.ts\";\nimport { modelId } from \"./model-selection.ts\";\nimport { boundText } from \"./text.ts\";\nimport type { ResolvedSubagentTask, SubagentDetails, SubagentRunDetails, ToolActivity } from \"./types.ts\";\n\n/**\n * Mutable-run state plus an internal revision counter. All transitions go\n * through {@link reduceRun}; the batch runner compares version sums instead\n * of diffing rendered fields.\n */\nexport interface SubagentRunState extends SubagentRunDetails {\n\t/** Monotonic per-run revision; bumped by every applied event. */\n\tversion: number;\n\t/** Presentation provenance; excluded from the foreground tool's details. */\n\treportTruncated: boolean;\n}\n\n/** The adapter layer's only output and the reducer's only input. */\nexport type SubagentRunEvent =\n\t| { type: \"slot_acquired\"; startedAt: number }\n\t| {\n\t\t\ttype: \"retry_scheduled\";\n\t\t\tattempt: number;\n\t\t\tmaxAttempts: number;\n\t\t\tdeadline: number;\n\t\t\terror: string | undefined;\n\t }\n\t| { type: \"retry_started\" }\n\t| { type: \"auto_retry_start\"; attempt: number; maxAttempts: number; deadline: number; error: string }\n\t| { type: \"auto_retry_end\" }\n\t| { type: \"turn_end\" }\n\t| { type: \"assistant_message_settled\"; usage: Usage | undefined }\n\t| { type: \"tool_started\"; toolCallId: string; toolName: string; args: unknown; startedAt: number }\n\t| { type: \"tool_updated\"; toolCallId: string; toolName: string; args: unknown }\n\t| { type: \"tool_ended\"; toolCallId: string; result: unknown; isError: boolean; endedAt: number }\n\t| { type: \"compaction_started\"; startedAt: number }\n\t| {\n\t\t\ttype: \"compaction_ended\";\n\t\t\tusage?: Usage;\n\t\t\ttokensBefore: number | undefined;\n\t\t\ttokensAfter: number | undefined;\n\t\t\terror: string | undefined;\n\t\t\tendedAt: number;\n\t }\n\t| {\n\t\t\ttype: \"settle\";\n\t\t\tverdict: \"completed\" | \"failed\" | \"aborted\";\n\t\t\treport: string;\n\t\t\terror: string | undefined;\n\t\t\tendedAt: number;\n\t }\n\t| { type: \"abort_while_queued\"; endedAt: number }\n\t| { type: \"abort_while_retrying\"; endedAt: number };\n\nfunction runId(batchId: string | undefined, index: number): string {\n\tif (!batchId) return `subagent-${index + 1}`;\n\t// toolCallIds are provider-shaped (\"call_ABC...\"); keep the readable\n\t// prefix, then disambiguate truncated collisions with a deterministic\n\t// hash of the full id.\n\tconst sanitized = batchId.replace(/[^A-Za-z0-9-]+/gu, \"-\").replace(/^-+|-+$/gu, \"\");\n\tconst hash = hashRunId(batchId);\n\tconst prefix = sanitized.length > 24 ? `${sanitized.slice(0, 24)}-${hash}` : sanitized || `run-${hash}`;\n\treturn `${prefix}-${index + 1}`;\n}\n\nfunction hashRunId(value: string): string {\n\tlet hash = 0x811c9dc5;\n\tfor (let index = 0; index < value.length; index++) {\n\t\thash ^= value.charCodeAt(index);\n\t\thash = Math.imul(hash, 0x01000193);\n\t}\n\treturn (hash >>> 0).toString(36).padStart(6, \"0\").slice(0, 6);\n}\n\nexport function createRunState(\n\ttask: ResolvedSubagentTask,\n\tindex: number,\n\tbatchId: string | undefined,\n\tparentCwd: string,\n): SubagentRunState {\n\treturn {\n\t\tid: runId(batchId, index),\n\t\tagent: task.agent.name,\n\t\tdescription: task.description,\n\t\t// Display-only relative path; the worker session itself uses the\n\t\t// resolved absolute task.cwd. Empty means \"same as the parent\".\n\t\tcwd: relative(parentCwd, task.cwd),\n\t\tmodel: modelId(task.model),\n\t\tthinking: task.thinking,\n\t\tstatus: \"queued\",\n\t\tactivities: [],\n\t\treport: \"\",\n\t\treportTruncated: false,\n\t\tusage: emptyUsage(),\n\t\tversion: 0,\n\t};\n}\n\n/** Strips internal fields for projection into the public details shape. */\nexport function toRunDetails(state: SubagentRunState): SubagentRunDetails {\n\tconst { version: _version, reportTruncated: _reportTruncated, ...details } = state;\n\treturn details;\n}\n\n// The live \"current activity\" line is derived, never imperative: a pending\n// retry wins, then the most recent still-running tool. This is what keeps a\n// parallel batch's line correct when tools end out of order.\nexport function deriveCurrentActivity(state: SubagentRunState): string | undefined {\n\tif (state.status === \"completed\" || state.status === \"failed\" || state.status === \"aborted\") return undefined;\n\tif (state.retry) return `Retrying (${state.retry.attempt}/${state.retry.maxAttempts})…`;\n\tfor (let index = state.activities.length - 1; index >= 0; index--) {\n\t\tconst activity = state.activities[index];\n\t\tif (activity?.status === \"running\") return activity.summary;\n\t}\n\treturn undefined;\n}\n\nfunction positiveInteger(value: number, fallback: number): number {\n\treturn Number.isFinite(value) ? Math.max(1, Math.floor(value)) : fallback;\n}\n\nfunction retryError(error: string): string {\n\tconst normalized = error.replace(/\\s+/gu, \" \").trim();\n\treturn boundText(normalized, RETRY_ERROR_TEXT_LIMIT).replace(/\\s+/gu, \" \").trim();\n}\n\nfunction makeRetry(attempt: number, maxAttempts: number, deadline: number, error: string): SubagentRunState[\"retry\"] {\n\tconst normalizedAttempt = positiveInteger(attempt, 1);\n\treturn {\n\t\tattempt: normalizedAttempt,\n\t\tmaxAttempts: Math.max(normalizedAttempt, positiveInteger(maxAttempts, normalizedAttempt)),\n\t\tdeadline,\n\t\terror: retryError(error),\n\t};\n}\n\n// Prefer evicting entries outside the latest three real tool calls so a run\n// with repeated synthetic compactions still retains the Activity tail the UI\n// promises. The defensive fallback preserves the hard text budget when an\n// adversarial caller bypasses normal per-event summary bounds.\nfunction oldestEvictableActivityIndex(activities: readonly ToolActivity[]): number {\n\tconst protectedIndexes = new Set<number>();\n\tfor (let index = activities.length - 1; index >= 0 && protectedIndexes.size < DISPLAY_ACTIVITY_LIMIT; index--) {\n\t\tconst activity = activities[index];\n\t\tif (activity && isDisplayableActivity(activity)) protectedIndexes.add(index);\n\t}\n\tconst unprotected = activities.findIndex((_activity, index) => !protectedIndexes.has(index));\n\tif (unprotected >= 0) return unprotected;\n\treturn activities.length > 1 ? 0 : -1;\n}\n\nfunction activityTextSize(activities: readonly ToolActivity[]): number {\n\treturn activities.reduce((total, item) => total + item.summary.length + (item.resultSummary?.length ?? 0), 0);\n}\n\n// The in-memory activity log stays within both count and text budgets; a\n// bounded O(ACTIVITY_LIMIT) rescan per event replaces incremental byte\n// bookkeeping. Real events bound every individual summary, so retaining one\n// oversized adversarial entry is the only permitted budget exception.\nfunction enforceActivityLimits(activities: ToolActivity[]): void {\n\twhile (activities.length > ACTIVITY_LIMIT) {\n\t\tconst index = oldestEvictableActivityIndex(activities);\n\t\tif (index < 0) break;\n\t\tactivities.splice(index, 1);\n\t}\n\twhile (activityTextSize(activities) > ACTIVITY_TEXT_LIMIT) {\n\t\tconst index = oldestEvictableActivityIndex(activities);\n\t\tif (index < 0) break;\n\t\tactivities.splice(index, 1);\n\t}\n}\n\n/** Append one bounded activity while preserving the display tail. */\nexport function appendActivity(activities: ToolActivity[], activity: ToolActivity): void {\n\tactivities.push(activity);\n\tenforceActivityLimits(activities);\n}\n\nfunction isTerminal(state: SubagentRunState): boolean {\n\treturn state.status === \"completed\" || state.status === \"failed\" || state.status === \"aborted\";\n}\n\nfunction withRevision(state: SubagentRunState, mutate: (draft: SubagentRunState) => void): SubagentRunState {\n\tconst draft: SubagentRunState = {\n\t\t...state,\n\t\tactivities: state.activities.map((activity) => ({ ...activity })),\n\t\tusage: { ...state.usage },\n\t};\n\tmutate(draft);\n\tdraft.version = state.version + 1;\n\treturn draft;\n}\n\nfunction clearRetry(draft: SubagentRunState): void {\n\tdraft.retry = undefined;\n}\n\n/**\n * Pure transition function; timestamps and deadlines arrive in the event.\n * Events applied after a terminal verdict are ignored (settle is idempotent)\n * — except retry_scheduled, the one sanctioned reopening transition.\n */\nexport function reduceRun(state: SubagentRunState, event: SubagentRunEvent): SubagentRunState {\n\tif (isTerminal(state) && event.type !== \"retry_scheduled\") return state;\n\treturn withRevision(state, (draft) => {\n\t\t// Cross-cutting pre-hook: every event clears the retry view except\n\t\t// retry_scheduled (which sets it) and the two abort-terminal events\n\t\t// (which clear it explicitly in their own body).\n\t\tif (event.type !== \"retry_scheduled\") clearRetry(draft);\n\t\tapplyEvent(draft, event);\n\t\t// Cross-cutting post-hook: derive the live activity line from the\n\t\t// new state. Terminal abort events override this to undefined.\n\t\tdraft.currentActivity = deriveCurrentActivity(draft);\n\t});\n}\n\n// ─── Individual event handlers ───────────────────────────────────────────────\n// Each handler mutates the draft in place. Cross-cutting clearRetry and\n// deriveCurrentActivity are handled by the dispatch layer above.\n\nfunction handleSlotAcquired(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"slot_acquired\" }>,\n): void {\n\tdraft.status = \"running\";\n\tdraft.startedAt = event.startedAt;\n}\n\nfunction handleRetryScheduled(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"retry_scheduled\" }>,\n): void {\n\t// Reset attempt progress, never accrued provider tokens or cost. Even an\n\t// attempt with no completed turns can have billable failed requests.\n\tconst error = draft.error ?? \"Subagent failed before retry.\";\n\tdraft.status = \"queued\";\n\tdraft.error = undefined;\n\tdraft.startedAt = undefined;\n\tdraft.endedAt = undefined;\n\tdraft.report = \"\";\n\tdraft.reportTruncated = false;\n\tdraft.activities = [];\n\tdraft.usage.turns = 0;\n\tdraft.usage.toolUses = 0;\n\tdraft.usage.contextTokens = undefined;\n\tdraft.retry = makeRetry(event.attempt, event.maxAttempts, event.deadline, error);\n}\n\nfunction handleRetryStarted(draft: SubagentRunState): void {\n\t// No-op beyond the cross-cutting clearRetry already applied.\n\tvoid draft;\n}\n\nfunction handleAutoRetryStart(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"auto_retry_start\" }>,\n): void {\n\tdraft.retry = makeRetry(event.attempt, event.maxAttempts, event.deadline, event.error);\n}\n\nfunction handleAutoRetryEnd(draft: SubagentRunState): void {\n\t// No-op beyond the cross-cutting clearRetry already applied.\n\tvoid draft;\n}\n\nfunction handleTurnEnd(draft: SubagentRunState): void {\n\tdraft.usage.turns++;\n}\n\nfunction handleAssistantMessageSettled(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"assistant_message_settled\" }>,\n): void {\n\taddUsage(draft.usage, event.usage);\n}\n\nfunction handleToolStarted(draft: SubagentRunState, event: Extract<SubagentRunEvent, { type: \"tool_started\" }>): void {\n\tdraft.usage.toolUses++;\n\tappendActivity(draft.activities, {\n\t\tid: event.toolCallId,\n\t\ttoolName: event.toolName,\n\t\tsummary: activitySummary(event.toolName, event.args),\n\t\tstatus: \"running\",\n\t\tstartedAt: event.startedAt,\n\t});\n}\n\nfunction handleToolUpdated(draft: SubagentRunState, event: Extract<SubagentRunEvent, { type: \"tool_updated\" }>): void {\n\tconst summary = activitySummary(event.toolName, event.args);\n\tconst activity =\n\t\tdraft.activities.find((candidate) => candidate.id === event.toolCallId && candidate.status === \"running\") ??\n\t\t[...draft.activities].reverse().find((candidate) => candidate.status === \"running\");\n\tif (activity) {\n\t\tactivity.summary = summary;\n\t\tenforceActivityLimits(draft.activities);\n\t}\n}\n\nfunction handleToolEnded(draft: SubagentRunState, event: Extract<SubagentRunEvent, { type: \"tool_ended\" }>): void {\n\tconst activity = draft.activities.find((candidate) => candidate.id === event.toolCallId);\n\tif (activity && activity.status === \"running\") {\n\t\tactivity.status = event.isError ? \"failed\" : \"succeeded\";\n\t\tactivity.endedAt = event.endedAt;\n\t\tactivity.resultSummary = resultSummary(event.result) || undefined;\n\t\tenforceActivityLimits(draft.activities);\n\t}\n}\n\nfunction handleCompactionStarted(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"compaction_started\" }>,\n): void {\n\tappendActivity(draft.activities, {\n\t\tid: COMPACTION_ACTIVITY_ID,\n\t\ttoolName: COMPACTION_ACTIVITY_ID,\n\t\tsummary: \"Compacting context…\",\n\t\tstatus: \"running\",\n\t\tstartedAt: event.startedAt,\n\t});\n}\n\nfunction handleCompactionEnded(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"compaction_ended\" }>,\n): void {\n\t// Summary usage is billable, but is not the worker conversation watermark.\n\tconst contextTokens = draft.usage.contextTokens;\n\taddUsage(draft.usage, event.usage);\n\tdraft.usage.contextTokens = contextTokens;\n\tconst activity = [...draft.activities]\n\t\t.reverse()\n\t\t.find((candidate) => candidate.id === COMPACTION_ACTIVITY_ID && candidate.status === \"running\");\n\tif (activity) {\n\t\tactivity.status = event.error ? \"failed\" : \"succeeded\";\n\t\tactivity.endedAt = event.endedAt;\n\t\tactivity.summary = compactionSummary(event.tokensBefore, event.tokensAfter);\n\t\tactivity.resultSummary = event.error ? compactionError(event.error) : undefined;\n\t\tenforceActivityLimits(draft.activities);\n\t}\n}\n\nfunction handleSettle(draft: SubagentRunState, event: Extract<SubagentRunEvent, { type: \"settle\" }>): void {\n\tdraft.status = event.verdict;\n\tdraft.report = boundText(event.report, TASK_OUTPUT_LIMIT);\n\tdraft.reportTruncated = draft.report !== event.report;\n\tdraft.error = event.error ? boundText(event.error, ERROR_TEXT_LIMIT) : undefined;\n\tdraft.endedAt = event.endedAt;\n\tdraft.retry = undefined;\n}\n\nfunction handleAbortWhileQueued(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"abort_while_queued\" }>,\n): void {\n\tdraft.status = \"aborted\";\n\tdraft.error = \"Subagent was aborted while queued.\";\n\tdraft.endedAt = event.endedAt;\n\tdraft.retry = undefined;\n}\n\nfunction handleAbortWhileRetrying(\n\tdraft: SubagentRunState,\n\tevent: Extract<SubagentRunEvent, { type: \"abort_while_retrying\" }>,\n): void {\n\tdraft.status = \"aborted\";\n\tdraft.error = \"Subagent was aborted while waiting to retry.\";\n\tdraft.endedAt = event.endedAt;\n\tdraft.retry = undefined;\n}\n\nfunction applyEvent(draft: SubagentRunState, event: SubagentRunEvent): void {\n\tswitch (event.type) {\n\t\tcase \"slot_acquired\":\n\t\t\thandleSlotAcquired(draft, event);\n\t\t\tbreak;\n\t\tcase \"retry_scheduled\":\n\t\t\thandleRetryScheduled(draft, event);\n\t\t\tbreak;\n\t\tcase \"retry_started\":\n\t\t\thandleRetryStarted(draft);\n\t\t\tbreak;\n\t\tcase \"auto_retry_start\":\n\t\t\thandleAutoRetryStart(draft, event);\n\t\t\tbreak;\n\t\tcase \"auto_retry_end\":\n\t\t\thandleAutoRetryEnd(draft);\n\t\t\tbreak;\n\t\tcase \"turn_end\":\n\t\t\thandleTurnEnd(draft);\n\t\t\tbreak;\n\t\tcase \"assistant_message_settled\":\n\t\t\thandleAssistantMessageSettled(draft, event);\n\t\t\tbreak;\n\t\tcase \"tool_started\":\n\t\t\thandleToolStarted(draft, event);\n\t\t\tbreak;\n\t\tcase \"tool_updated\":\n\t\t\thandleToolUpdated(draft, event);\n\t\t\tbreak;\n\t\tcase \"tool_ended\":\n\t\t\thandleToolEnded(draft, event);\n\t\t\tbreak;\n\t\tcase \"compaction_started\":\n\t\t\thandleCompactionStarted(draft, event);\n\t\t\tbreak;\n\t\tcase \"compaction_ended\":\n\t\t\thandleCompactionEnded(draft, event);\n\t\t\tbreak;\n\t\tcase \"settle\":\n\t\t\thandleSettle(draft, event);\n\t\t\tbreak;\n\t\tcase \"abort_while_queued\":\n\t\t\thandleAbortWhileQueued(draft, event);\n\t\t\tbreak;\n\t\tcase \"abort_while_retrying\":\n\t\t\thandleAbortWhileRetrying(draft, event);\n\t\t\tbreak;\n\t}\n}\n\nexport function versionSum(runs: readonly SubagentRunState[]): number {\n\tlet total = 0;\n\tfor (const run of runs) total += run.version;\n\treturn total;\n}\n\nexport function statusOf(runs: readonly SubagentRunDetails[]): SubagentDetails[\"status\"] {\n\tif (runs.length === 0) return \"running\";\n\t// Active beats terminal: any queued or running run keeps the batch\n\t// \"running\" regardless of what the others have settled to.\n\tif (runs.some((run) => run.status === \"queued\" || run.status === \"running\")) return \"running\";\n\tif (runs.every((run) => run.status === \"completed\")) return \"completed\";\n\tif (runs.some((run) => run.status === \"completed\")) return \"partial\";\n\tif (runs.every((run) => run.status === \"aborted\")) return \"aborted\";\n\treturn \"failed\";\n}\n\nexport function isSubagentError(details: Pick<SubagentDetails, \"status\" | \"runs\">): boolean {\n\tif (details.status !== \"failed\" && details.status !== \"aborted\") return false;\n\t// A batch with any successful run is a partial result, not an error:\n\t// per-run status is already reported in the content sections.\n\treturn !details.runs.some((run) => run.status === \"completed\");\n}\n\nfunction statusText(details: SubagentDetails): string {\n\tif (details.runs.length === 0) return \"Initializing…\";\n\tconst running = details.runs.filter((run) => run.status === \"running\").length;\n\tconst queued = details.runs.filter((run) => run.status === \"queued\").length;\n\tconst completed = details.runs.filter((run) => run.status === \"completed\").length;\n\tconst failed = details.runs.filter((run) => run.status === \"failed\").length;\n\tconst aborted = details.runs.filter((run) => run.status === \"aborted\").length;\n\tconst parts = [`${completed}/${details.runs.length} complete`];\n\tif (running) parts.push(`${running} running`);\n\tif (queued) parts.push(`${queued} queued`);\n\tif (failed) parts.push(`${failed} failed`);\n\tif (aborted) parts.push(`${aborted} aborted`);\n\treturn parts.join(\" · \");\n}\n\nexport function statusSummary(details: SubagentDetails): string {\n\treturn statusText(details);\n}\n\nexport interface SubagentRetryView {\n\tattempt: number;\n\tmaxAttempts: number;\n\tremainingSeconds: number;\n\terror: string;\n}\n\nexport function getSubagentRetryView(run: SubagentRunDetails, now = Date.now()): SubagentRetryView | undefined {\n\tconst retry = run.retry;\n\tif (!retry || !Number.isFinite(retry.deadline)) return undefined;\n\tconst attempt = positiveInteger(retry.attempt, 1);\n\tconst maxAttempts = Math.max(attempt, positiveInteger(retry.maxAttempts, attempt));\n\tconst currentTime = Number.isFinite(now) ? now : retry.deadline;\n\treturn {\n\t\tattempt,\n\t\tmaxAttempts,\n\t\tremainingSeconds: Math.max(0, Math.ceil((retry.deadline - currentTime) / 1000)),\n\t\terror: retryError(typeof retry.error === \"string\" ? retry.error : \"\"),\n\t};\n}\n"]}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare function plainLine(text: string): string;
|
|
2
|
-
export declare function firstPlainLine(text: string): string;
|
|
3
|
-
export declare function truncate(text: string, limit: number): string;
|
|
4
|
-
export declare function utf8Prefix(text: string, maxBytes: number): string;
|
|
5
|
-
export declare function boundText(text: string, maxBytes: number): string;
|
|
6
|
-
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/extensions/subagent/text.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYjE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBhE"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// Text utilities shared across the subagent extension: plain-text
|
|
2
|
-
// projection, UTF-8 byte bounding, and code-point truncation.
|
|
3
|
-
export function plainLine(text) {
|
|
4
|
-
return text
|
|
5
|
-
.replace(/^\s*#{1,6}\s+/u, "")
|
|
6
|
-
.replace(/`([^`]*)`/gu, "$1")
|
|
7
|
-
.replace(/\*\*([^*]+)\*\*/gu, "$1")
|
|
8
|
-
.replace(/\[([^\]]+)\]\([^)]*\)/gu, "$1")
|
|
9
|
-
.replace(/\s+/gu, " ")
|
|
10
|
-
.trim();
|
|
11
|
-
}
|
|
12
|
-
export function firstPlainLine(text) {
|
|
13
|
-
return (text
|
|
14
|
-
.split("\n")
|
|
15
|
-
.map((line) => plainLine(line))
|
|
16
|
-
.find(Boolean) ?? "");
|
|
17
|
-
}
|
|
18
|
-
// Truncates by code points (never splitting a surrogate pair) and appends an
|
|
19
|
-
// ellipsis; for UTF-8 byte budgets use boundText instead.
|
|
20
|
-
export function truncate(text, limit) {
|
|
21
|
-
const characters = [...text];
|
|
22
|
-
return characters.length <= limit ? text : `${characters.slice(0, Math.max(0, limit - 1)).join("")}…`;
|
|
23
|
-
}
|
|
24
|
-
// Iterates code points so a surrogate pair is never split in half.
|
|
25
|
-
export function utf8Prefix(text, maxBytes) {
|
|
26
|
-
if (maxBytes <= 0)
|
|
27
|
-
return "";
|
|
28
|
-
if (Buffer.byteLength(text, "utf8") <= maxBytes)
|
|
29
|
-
return text;
|
|
30
|
-
let output = "";
|
|
31
|
-
let bytes = 0;
|
|
32
|
-
for (const character of text) {
|
|
33
|
-
const characterBytes = Buffer.byteLength(character, "utf8");
|
|
34
|
-
if (bytes + characterBytes > maxBytes)
|
|
35
|
-
break;
|
|
36
|
-
output += character;
|
|
37
|
-
bytes += characterBytes;
|
|
38
|
-
}
|
|
39
|
-
return output;
|
|
40
|
-
}
|
|
41
|
-
export function boundText(text, maxBytes) {
|
|
42
|
-
if (maxBytes <= 0)
|
|
43
|
-
return "";
|
|
44
|
-
if (Buffer.byteLength(text, "utf8") <= maxBytes)
|
|
45
|
-
return text;
|
|
46
|
-
let output = utf8Prefix(text, maxBytes);
|
|
47
|
-
// The loop converges because the only variable in the notice is the digit
|
|
48
|
-
// count of "N bytes omitted" — each iteration shortens the prefix by at
|
|
49
|
-
// most the byte-length difference of one fewer digit, so it stabilizes in
|
|
50
|
-
// ≤2 iterations in practice. The cap of 8 is purely defensive.
|
|
51
|
-
for (let attempt = 0; attempt < 8; attempt++) {
|
|
52
|
-
const omitted = Buffer.byteLength(text, "utf8") - Buffer.byteLength(output, "utf8");
|
|
53
|
-
const notice = `\n\n[Output truncated: ${omitted} bytes omitted.]`;
|
|
54
|
-
const available = maxBytes - Buffer.byteLength(notice, "utf8");
|
|
55
|
-
if (available <= 0)
|
|
56
|
-
return utf8Prefix("[Output truncated.]", maxBytes);
|
|
57
|
-
const next = utf8Prefix(text, available);
|
|
58
|
-
if (next === output)
|
|
59
|
-
return `${output}${notice}`;
|
|
60
|
-
output = next;
|
|
61
|
-
}
|
|
62
|
-
const omitted = Buffer.byteLength(text, "utf8") - Buffer.byteLength(output, "utf8");
|
|
63
|
-
const notice = `\n\n[Output truncated: ${omitted} bytes omitted.]`;
|
|
64
|
-
return `${utf8Prefix(output, Math.max(0, maxBytes - Buffer.byteLength(notice, "utf8")))}${notice}`;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=text.js.map
|