@astralyn/pi 0.99.0 → 1.0.1
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 +58 -3
- package/dist/bundle/chunks/anthropic-messages-YET4T7BO.js +6 -0
- package/dist/bundle/chunks/anthropic.js +2 -2
- package/dist/bundle/chunks/azure-openai-responses-SBLL5YN3.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +3 -3
- package/dist/bundle/chunks/chunk-4TT2QGFL.js +2 -0
- package/dist/bundle/chunks/chunk-GIG5IHES.js +2 -0
- package/dist/bundle/chunks/{chunk-VW2P3X6P.js → chunk-H2N2THAO.js} +436 -668
- package/dist/bundle/chunks/{chunk-A576H74Y.js → chunk-IZ3S3GDX.js} +1 -1
- package/dist/bundle/chunks/{chunk-ABVRAYXT.js → chunk-NY3CWK44.js} +2 -2
- package/dist/bundle/chunks/chunk-SVJ7OGEB.js +2 -0
- package/dist/bundle/chunks/chunk-TRHTWM3C.js +2 -0
- package/dist/bundle/chunks/{chunk-DEWXBB6W.js → chunk-V66VGGOM.js} +1 -1
- package/dist/bundle/chunks/chunk-XDYM2567.js +20 -0
- package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-ZYSAFXXL.js → cloudflare-workers-ai-system-one-QI46LUZ6.js} +1 -1
- package/dist/bundle/chunks/codemode-worker.js +90 -10
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{google-generative-ai-SDNQVVXA.js → google-generative-ai-YTZCSHQN.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-LZXOLBIO.js → google-vertex-OTFZJJXQ.js} +1 -1
- package/dist/bundle/chunks/{llama-cpp-classify-7IYGGPND.js → llama-cpp-classify-R7DQLTQN.js} +1 -1
- package/dist/bundle/chunks/{mistral-conversations-VYKPSSAM.js → mistral-conversations-ELH4V4TY.js} +1 -1
- package/dist/bundle/chunks/node-USQQ7C6M.js +16 -0
- package/dist/bundle/chunks/openai-chatgpt.js +2 -2
- package/dist/bundle/chunks/{openai-codex-responses-HZ4VUDXD.js → openai-codex-responses-OLVTU4UA.js} +1 -1
- package/dist/bundle/chunks/openai-codex.js +1 -1
- package/dist/bundle/chunks/openai-completions-53M2KJ67.js +7 -0
- package/dist/bundle/chunks/openai-responses-4ABDEL4Z.js +3 -0
- package/dist/bundle/chunks/{openrouter-images-5524IQHX.js → openrouter-images-YP3YVB54.js} +1 -1
- package/dist/bundle/chunks/openrouter.js +1 -1
- package/dist/bundle/chunks/radius.js +1 -1
- package/dist/bundle/chunks/{typesafe-system-one-Z2CDLKEY.js → typesafe-system-one-RREJAKWB.js} +1 -1
- package/dist/bundle/chunks/virtual-modules-YFKU7JZF.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 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts +5 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -13
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +21 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +65 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts +3 -3
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +3 -3
- package/dist/core/export-html/tool-renderer.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 +18 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +6 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +15 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/keybindings.d.ts +51 -11
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +11 -3
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +40 -7
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js +63 -11
- package/dist/core/mcp-servers.js.map +1 -1
- package/dist/core/model-config.d.ts +36 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +14 -2
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +3 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +6 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +22 -18
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer.d.ts +2 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +13 -0
- 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.map +1 -1
- package/dist/core/remote-catalog-provider.js +4 -9
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +7 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -1
- package/dist/core/settings-manager.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/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.map +1 -1
- package/dist/core/tasks/history.js +0 -19
- package/dist/core/tasks/history.js.map +1 -1
- package/dist/core/tasks/output.d.ts +8 -0
- package/dist/core/tasks/output.d.ts.map +1 -1
- package/dist/core/tasks/output.js +19 -0
- package/dist/core/tasks/output.js.map +1 -1
- package/dist/core/tasks/presentation.d.ts +1 -3
- package/dist/core/tasks/presentation.d.ts.map +1 -1
- package/dist/core/tasks/presentation.js +79 -166
- package/dist/core/tasks/presentation.js.map +1 -1
- package/dist/core/tasks/runtime.d.ts +16 -9
- package/dist/core/tasks/runtime.d.ts.map +1 -1
- package/dist/core/tasks/runtime.js +89 -106
- package/dist/core/tasks/runtime.js.map +1 -1
- package/dist/core/tasks/session.d.ts.map +1 -1
- package/dist/core/tasks/session.js +13 -4
- package/dist/core/tasks/session.js.map +1 -1
- package/dist/core/tasks/store.d.ts +20 -6
- package/dist/core/tasks/store.d.ts.map +1 -1
- package/dist/core/tasks/store.js +45 -18
- package/dist/core/tasks/store.js.map +1 -1
- package/dist/core/tasks/types.d.ts +14 -54
- package/dist/core/tasks/types.d.ts.map +1 -1
- package/dist/core/tasks/types.js +1 -5
- package/dist/core/tasks/types.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js +11 -34
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/core/tools/renderers/index.d.ts +2 -2
- package/dist/core/tools/renderers/index.d.ts.map +1 -1
- package/dist/core/tools/renderers/index.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts +0 -1
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +3 -10
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-tool.d.ts.map +1 -1
- package/dist/core/tools/shell-tool.js +2 -4
- package/dist/core/tools/shell-tool.js.map +1 -1
- package/dist/core/tools/tasks/actions.d.ts +1 -1
- package/dist/core/tools/tasks/actions.d.ts.map +1 -1
- package/dist/core/tools/tasks/actions.js +26 -12
- package/dist/core/tools/tasks/actions.js.map +1 -1
- package/dist/core/tools/tasks/constants.d.ts +2 -6
- package/dist/core/tools/tasks/constants.d.ts.map +1 -1
- package/dist/core/tools/tasks/constants.js +2 -6
- package/dist/core/tools/tasks/constants.js.map +1 -1
- package/dist/core/tools/tasks/schema.d.ts +1 -1
- package/dist/core/tools/tasks/schema.d.ts.map +1 -1
- package/dist/core/tools/tasks/schema.js +8 -7
- package/dist/core/tools/tasks/schema.js.map +1 -1
- package/dist/core/tools/tasks/types.d.ts +8 -38
- package/dist/core/tools/tasks/types.d.ts.map +1 -1
- package/dist/core/tools/tasks/types.js +6 -11
- package/dist/core/tools/tasks/types.js.map +1 -1
- package/dist/core/virtual-models.d.ts +2 -0
- package/dist/core/virtual-models.d.ts.map +1 -1
- package/dist/core/virtual-models.js +19 -12
- package/dist/core/virtual-models.js.map +1 -1
- 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.map +1 -1
- package/dist/extensions/codemode/execute.js +197 -51
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/renderer.d.ts.map +1 -1
- package/dist/extensions/codemode/renderer.js +43 -25
- package/dist/extensions/codemode/renderer.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts +12 -11
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +73 -129
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/codemode/worker.d.ts +1 -1
- package/dist/extensions/codemode/worker.js +1 -1
- package/dist/extensions/codemode/worker.js.map +1 -1
- package/dist/extensions/deepwiki/schema.d.ts +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +0 -2
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts.map +1 -1
- package/dist/extensions/mcp/cli.js +23 -5
- package/dist/extensions/mcp/cli.js.map +1 -1
- package/dist/extensions/mcp/config.d.ts +19 -5
- package/dist/extensions/mcp/config.d.ts.map +1 -1
- package/dist/extensions/mcp/config.js +60 -12
- package/dist/extensions/mcp/config.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts +36 -9
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +309 -100
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/oauth.d.ts +14 -8
- package/dist/extensions/mcp/oauth.d.ts.map +1 -1
- package/dist/extensions/mcp/oauth.js +105 -36
- package/dist/extensions/mcp/oauth.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts +2 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +17 -9
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/extensions/mcp/tools.d.ts +8 -5
- package/dist/extensions/mcp/tools.d.ts.map +1 -1
- package/dist/extensions/mcp/tools.js +50 -26
- package/dist/extensions/mcp/tools.js.map +1 -1
- package/dist/extensions/mcp/ui.d.ts.map +1 -1
- package/dist/extensions/mcp/ui.js +7 -1
- package/dist/extensions/mcp/ui.js.map +1 -1
- 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/tool.d.ts +5 -4
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +7 -28
- package/dist/extensions/tool-search/tool.js.map +1 -1
- 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 +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +3 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +7 -5
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/auth-url.d.ts +14 -0
- package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
- package/dist/modes/interactive/components/auth-url.js +34 -0
- package/dist/modes/interactive/components/auth-url.js.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
- package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.js +1123 -0
- package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js +24 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +0 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +9 -5
- package/dist/modes/interactive/components/login-dialog.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.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -1
- package/dist/modes/interactive/components/pi-logo.js +13 -1
- package/dist/modes/interactive/components/pi-logo.js.map +1 -1
- 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 +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +5 -5
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-marker.d.ts +0 -2
- package/dist/modes/interactive/components/status-marker.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-marker.js +0 -4
- package/dist/modes/interactive/components/status-marker.js.map +1 -1
- 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 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +180 -55
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts +1 -1
- package/dist/modes/interactive/tasks/completion-render.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/completion-render.js +28 -82
- package/dist/modes/interactive/tasks/completion-render.js.map +1 -1
- package/dist/modes/interactive/tasks/index.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/index.js +18 -13
- package/dist/modes/interactive/tasks/index.js.map +1 -1
- 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 +29 -36
- package/dist/modes/interactive/tasks/manager.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/manager.js +315 -315
- package/dist/modes/interactive/tasks/manager.js.map +1 -1
- 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 +5 -19
- package/dist/modes/interactive/tasks/render.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/render.js +18 -102
- package/dist/modes/interactive/tasks/render.js.map +1 -1
- package/dist/modes/interactive/tasks/task-view.d.ts +8 -48
- package/dist/modes/interactive/tasks/task-view.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/task-view.js +11 -51
- package/dist/modes/interactive/tasks/task-view.js.map +1 -1
- package/dist/modes/interactive/tasks/text.d.ts +1 -7
- package/dist/modes/interactive/tasks/text.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/text.js +6 -29
- package/dist/modes/interactive/tasks/text.js.map +1 -1
- package/dist/modes/interactive/tasks/viewport.d.ts +2 -0
- package/dist/modes/interactive/tasks/viewport.d.ts.map +1 -1
- package/dist/modes/interactive/tasks/viewport.js +17 -7
- package/dist/modes/interactive/tasks/viewport.js.map +1 -1
- 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/system-theme.d.ts +2 -1
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/system-theme.js +16 -5
- package/dist/modes/interactive/theme/system-theme.js.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.d.ts +4 -19
- package/dist/modes/interactive/tool-view/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/tool-view/tool-execution.js +23 -67
- package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
- package/dist/utils/image-convert.d.ts +12 -0
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +45 -6
- package/dist/utils/image-convert.js.map +1 -1
- package/docs/bundled/README.md +0 -1
- package/docs/bundled/extensions/question.md +2 -2
- package/docs/bundled/extensions/statusline.md +24 -15
- package/docs/bundled/tasks.md +34 -48
- package/docs/codemode.md +207 -0
- package/docs/docs.json +4 -4
- package/docs/environment-variables.md +1 -1
- package/docs/extensions.md +11 -9
- package/docs/keybindings.md +14 -7
- package/docs/mcp.md +164 -82
- package/docs/models.md +51 -3
- package/docs/providers.md +8 -0
- package/docs/sdk.md +2 -2
- package/docs/session-format.md +12 -22
- package/docs/settings.md +4 -2
- package/docs/tui.md +1 -1
- package/docs/usage.md +6 -16
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +1 -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/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- 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/sdk/14-codemode-mcp.ts +2 -2
- package/npm-shrinkwrap.json +73 -62
- package/package.json +11 -10
- package/dist/bundle/chunks/anthropic-messages-KIXY7EDT.js +0 -6
- package/dist/bundle/chunks/azure-openai-responses-RPBERDXD.js +0 -2
- package/dist/bundle/chunks/chunk-CLLDCO64.js +0 -2
- package/dist/bundle/chunks/chunk-PJVFYVHE.js +0 -42
- package/dist/bundle/chunks/chunk-UUSTLCVC.js +0 -2
- package/dist/bundle/chunks/chunk-VWCWZD6E.js +0 -2
- package/dist/bundle/chunks/node-CXWYTK2I.js +0 -16
- package/dist/bundle/chunks/openai-completions-SKDGF6OE.js +0 -7
- package/dist/bundle/chunks/openai-responses-FPML4SSG.js +0 -3
- package/dist/bundle/chunks/virtual-modules-TQRORWJQ.js +0 -2
- package/dist/core/tasks/view-data.d.ts +0 -8
- package/dist/core/tasks/view-data.d.ts.map +0 -1
- package/dist/core/tasks/view-data.js +0 -61
- package/dist/core/tasks/view-data.js.map +0 -1
- package/dist/core/tasks/view.d.ts +0 -30
- package/dist/core/tasks/view.d.ts.map +0 -1
- package/dist/core/tasks/view.js +0 -50
- package/dist/core/tasks/view.js.map +0 -1
- package/dist/core/tools/renderers/shell-task.d.ts +0 -4
- package/dist/core/tools/renderers/shell-task.d.ts.map +0 -1
- package/dist/core/tools/renderers/shell-task.js +0 -35
- package/dist/core/tools/renderers/shell-task.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/dist/modes/interactive/components/daxnuts.d.ts +0 -23
- package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
- package/dist/modes/interactive/components/daxnuts.js +0 -138
- package/dist/modes/interactive/components/daxnuts.js.map +0 -1
- package/dist/modes/interactive/tasks/fallback-view.d.ts +0 -4
- package/dist/modes/interactive/tasks/fallback-view.d.ts.map +0 -1
- package/dist/modes/interactive/tasks/fallback-view.js +0 -27
- package/dist/modes/interactive/tasks/fallback-view.js.map +0 -1
- package/docs/bundled/extensions/todo.md +0 -104
- package/examples/extensions/todo.ts +0 -297
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* todo/state.ts — v3 pure state core: closure-scoped store, atomic patch
|
|
3
|
-
* application (delete, then update, then create), snapshot cloning, and
|
|
4
|
-
* branch replay. No session registry, metadata, dependency graph, tombstones,
|
|
5
|
-
* filters, or legacy normalizers.
|
|
6
|
-
*
|
|
7
|
-
* The patch shape is designed so every value a strict sampler may fill in for
|
|
8
|
-
* an unused field ([], "", null already stripped by validation) is a no-op:
|
|
9
|
-
* empty groups do nothing, blank update text keeps the current value, and
|
|
10
|
-
* deleting an absent id is recorded rather than rejected.
|
|
11
|
-
*/
|
|
12
|
-
import { TODO_MAX_BATCH_ITEMS, TODO_MAX_DESCRIPTION_LENGTH, TODO_MAX_ITEMS, TODO_MAX_SUBJECT_LENGTH, TODO_TOOL_NAME, } from "./constants.js";
|
|
13
|
-
import { EMPTY_TODO_STATE, TODO_DETAILS_SCHEMA_VERSION, } from "./schema.js";
|
|
14
|
-
const TODO_STATUSES = new Set(["pending", "in_progress", "completed"]);
|
|
15
|
-
const GROUP_FIELDS = new Set(["create", "update", "delete"]);
|
|
16
|
-
function isRecord(value) {
|
|
17
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
18
|
-
}
|
|
19
|
-
function isPositiveSafeInteger(value) {
|
|
20
|
-
return typeof value === "number" && Number.isSafeInteger(value) && value >= 1;
|
|
21
|
-
}
|
|
22
|
-
function isTodoStatus(value) {
|
|
23
|
-
return typeof value === "string" && TODO_STATUSES.has(value);
|
|
24
|
-
}
|
|
25
|
-
/** De-duplicate ids preserving first-seen input order. */
|
|
26
|
-
function dedupeIds(ids) {
|
|
27
|
-
const seen = [];
|
|
28
|
-
for (const id of ids) {
|
|
29
|
-
if (!seen.includes(id))
|
|
30
|
-
seen.push(id);
|
|
31
|
-
}
|
|
32
|
-
return seen;
|
|
33
|
-
}
|
|
34
|
-
/** Trim and collapse every internal whitespace run to a single space. */
|
|
35
|
-
function normalizeText(value) {
|
|
36
|
-
return value.trim().replace(/\s+/g, " ");
|
|
37
|
-
}
|
|
38
|
-
/** Required text (create): normalized, non-empty, within the limit. */
|
|
39
|
-
function validateRequiredText(value, label, maximum) {
|
|
40
|
-
if (typeof value !== "string")
|
|
41
|
-
throw new Error(`${label} must be a string`);
|
|
42
|
-
const normalized = normalizeText(value);
|
|
43
|
-
if (!normalized)
|
|
44
|
-
throw new Error(`${label} cannot be empty`);
|
|
45
|
-
if (normalized.length > maximum)
|
|
46
|
-
throw new Error(`${label} exceeds ${maximum} characters`);
|
|
47
|
-
return normalized;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Optional text (update): normalized and within the limit, where blank means
|
|
51
|
-
* "keep the current value" (undefined) so strict-mode filler stays harmless.
|
|
52
|
-
*/
|
|
53
|
-
function validateOptionalText(value, label, maximum) {
|
|
54
|
-
if (value === undefined)
|
|
55
|
-
return undefined;
|
|
56
|
-
if (typeof value !== "string")
|
|
57
|
-
throw new Error(`${label} must be a string`);
|
|
58
|
-
const normalized = normalizeText(value);
|
|
59
|
-
if (!normalized)
|
|
60
|
-
return undefined;
|
|
61
|
-
if (normalized.length > maximum)
|
|
62
|
-
throw new Error(`${label} exceeds ${maximum} characters`);
|
|
63
|
-
return normalized;
|
|
64
|
-
}
|
|
65
|
-
function validateOptionalStatus(value, label) {
|
|
66
|
-
if (value === undefined)
|
|
67
|
-
return undefined;
|
|
68
|
-
if (!isTodoStatus(value))
|
|
69
|
-
throw new Error(`${label} is invalid`);
|
|
70
|
-
return value;
|
|
71
|
-
}
|
|
72
|
-
function readCreateEntries(raw) {
|
|
73
|
-
if (raw === undefined)
|
|
74
|
-
return [];
|
|
75
|
-
if (!Array.isArray(raw))
|
|
76
|
-
throw new Error("create must be an array");
|
|
77
|
-
if (raw.length > TODO_MAX_BATCH_ITEMS)
|
|
78
|
-
throw new Error(`create exceeds ${TODO_MAX_BATCH_ITEMS} tasks`);
|
|
79
|
-
const entries = [];
|
|
80
|
-
for (let index = 0; index < raw.length; index++) {
|
|
81
|
-
const item = raw[index];
|
|
82
|
-
if (!isRecord(item))
|
|
83
|
-
throw new Error(`create[${index}] must be an object`);
|
|
84
|
-
for (const key of Object.keys(item)) {
|
|
85
|
-
if (key !== "subject" && key !== "description" && key !== "status") {
|
|
86
|
-
throw new Error(`create[${index}].${key} is not a create field; valid fields: subject, description, status`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const entry = {
|
|
90
|
-
subject: validateRequiredText(item.subject, `create[${index}].subject`, TODO_MAX_SUBJECT_LENGTH),
|
|
91
|
-
description: validateRequiredText(item.description, `create[${index}].description`, TODO_MAX_DESCRIPTION_LENGTH),
|
|
92
|
-
};
|
|
93
|
-
const status = validateOptionalStatus(item.status, `create[${index}].status`);
|
|
94
|
-
if (status !== undefined)
|
|
95
|
-
entry.status = status;
|
|
96
|
-
entries.push(entry);
|
|
97
|
-
}
|
|
98
|
-
return entries;
|
|
99
|
-
}
|
|
100
|
-
function readUpdateEntries(raw) {
|
|
101
|
-
if (raw === undefined)
|
|
102
|
-
return [];
|
|
103
|
-
if (!Array.isArray(raw))
|
|
104
|
-
throw new Error("update must be an array");
|
|
105
|
-
if (raw.length > TODO_MAX_BATCH_ITEMS)
|
|
106
|
-
throw new Error(`update exceeds ${TODO_MAX_BATCH_ITEMS} tasks`);
|
|
107
|
-
const entries = [];
|
|
108
|
-
for (let index = 0; index < raw.length; index++) {
|
|
109
|
-
const item = raw[index];
|
|
110
|
-
if (!isRecord(item))
|
|
111
|
-
throw new Error(`update[${index}] must be an object`);
|
|
112
|
-
for (const key of Object.keys(item)) {
|
|
113
|
-
if (key !== "id" && key !== "subject" && key !== "description" && key !== "status") {
|
|
114
|
-
throw new Error(`update[${index}].${key} is not an update field; valid fields: id, subject, description, status`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (!isPositiveSafeInteger(item.id))
|
|
118
|
-
throw new Error(`update[${index}].id must be a positive integer`);
|
|
119
|
-
const entry = { id: item.id };
|
|
120
|
-
const subject = validateOptionalText(item.subject, `update[${index}].subject`, TODO_MAX_SUBJECT_LENGTH);
|
|
121
|
-
if (subject !== undefined)
|
|
122
|
-
entry.subject = subject;
|
|
123
|
-
const description = validateOptionalText(item.description, `update[${index}].description`, TODO_MAX_DESCRIPTION_LENGTH);
|
|
124
|
-
if (description !== undefined)
|
|
125
|
-
entry.description = description;
|
|
126
|
-
const status = validateOptionalStatus(item.status, `update[${index}].status`);
|
|
127
|
-
if (status !== undefined)
|
|
128
|
-
entry.status = status;
|
|
129
|
-
entries.push(entry);
|
|
130
|
-
}
|
|
131
|
-
return entries;
|
|
132
|
-
}
|
|
133
|
-
function readDeleteIds(raw) {
|
|
134
|
-
if (raw === undefined)
|
|
135
|
-
return [];
|
|
136
|
-
if (!Array.isArray(raw))
|
|
137
|
-
throw new Error("delete must be an array");
|
|
138
|
-
if (raw.length > TODO_MAX_BATCH_ITEMS)
|
|
139
|
-
throw new Error(`delete exceeds ${TODO_MAX_BATCH_ITEMS} ids`);
|
|
140
|
-
const ids = [];
|
|
141
|
-
for (let index = 0; index < raw.length; index++) {
|
|
142
|
-
if (!isPositiveSafeInteger(raw[index]))
|
|
143
|
-
throw new Error(`delete[${index}] must be a positive integer id`);
|
|
144
|
-
ids.push(raw[index]);
|
|
145
|
-
}
|
|
146
|
-
return ids;
|
|
147
|
-
}
|
|
148
|
-
function currentIdsLabel(state) {
|
|
149
|
-
if (state.items.length === 0)
|
|
150
|
-
return "the list is empty";
|
|
151
|
-
return `current ids: ${state.items.map((item) => `#${item.id}`).join(", ")}`;
|
|
152
|
-
}
|
|
153
|
-
/** Snapshot clone: items are plain string/number records, so a shallow copy is safe. */
|
|
154
|
-
export function cloneTodoState(state) {
|
|
155
|
-
return { items: state.items.map((item) => ({ ...item })), nextId: state.nextId };
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Pure patch application: validates every runtime input (tool args can be
|
|
159
|
-
* tampered after schema validation), throws on any invalid call, and never
|
|
160
|
-
* mutates the input state. Application order is delete, then update, then
|
|
161
|
-
* create, so a delete in the same call frees capacity for the create.
|
|
162
|
-
*/
|
|
163
|
-
export function applyTodoPatch(before, params) {
|
|
164
|
-
if (!isRecord(params))
|
|
165
|
-
throw new Error("todo params must be an object");
|
|
166
|
-
for (const key of Object.keys(params)) {
|
|
167
|
-
if (!GROUP_FIELDS.has(key))
|
|
168
|
-
throw new Error(`unknown todo field "${key}"; valid fields: create, update, delete`);
|
|
169
|
-
}
|
|
170
|
-
// Everything above the apply phase is validation: any throw leaves the
|
|
171
|
-
// caller's state untouched.
|
|
172
|
-
const createEntries = readCreateEntries(params.create);
|
|
173
|
-
const updateEntries = readUpdateEntries(params.update);
|
|
174
|
-
const deleteIds = readDeleteIds(params.delete);
|
|
175
|
-
// Conflicts: one edit per task per call, and a task cannot be both edited
|
|
176
|
-
// and removed in the same call.
|
|
177
|
-
const updatedIds = new Set();
|
|
178
|
-
for (const entry of updateEntries) {
|
|
179
|
-
if (updatedIds.has(entry.id))
|
|
180
|
-
throw new Error(`#${entry.id} appears more than once in update`);
|
|
181
|
-
updatedIds.add(entry.id);
|
|
182
|
-
}
|
|
183
|
-
const deleteSet = new Set(deleteIds);
|
|
184
|
-
for (const entry of updateEntries) {
|
|
185
|
-
if (deleteSet.has(entry.id))
|
|
186
|
-
throw new Error(`#${entry.id} cannot be in both update and delete`);
|
|
187
|
-
}
|
|
188
|
-
// At most one activation per call: more than one is a real contradiction,
|
|
189
|
-
// since a single task can be in_progress at any time.
|
|
190
|
-
const activations = [];
|
|
191
|
-
createEntries.forEach((entry, index) => {
|
|
192
|
-
if (entry.status === "in_progress")
|
|
193
|
-
activations.push(`create[${index}]`);
|
|
194
|
-
});
|
|
195
|
-
for (const entry of updateEntries) {
|
|
196
|
-
if (entry.status === "in_progress")
|
|
197
|
-
activations.push(`#${entry.id}`);
|
|
198
|
-
}
|
|
199
|
-
if (activations.length > 1) {
|
|
200
|
-
throw new Error(`at most one task may be set in_progress per call; got ${activations.join(" and ")}`);
|
|
201
|
-
}
|
|
202
|
-
const byId = new Map(before.items.map((item) => [item.id, item]));
|
|
203
|
-
for (const entry of updateEntries) {
|
|
204
|
-
if (!byId.has(entry.id))
|
|
205
|
-
throw new Error(`#${entry.id} not found; ${currentIdsLabel(before)}`);
|
|
206
|
-
}
|
|
207
|
-
if (createEntries.length > 0) {
|
|
208
|
-
if (!Number.isSafeInteger(before.nextId) || before.nextId < 1)
|
|
209
|
-
throw new Error("next id is invalid");
|
|
210
|
-
if (before.nextId > Number.MAX_SAFE_INTEGER - createEntries.length)
|
|
211
|
-
throw new Error("next id is exhausted");
|
|
212
|
-
}
|
|
213
|
-
// --- Apply: delete -------------------------------------------------------
|
|
214
|
-
const deleted = [];
|
|
215
|
-
const absent = [];
|
|
216
|
-
for (const id of dedupeIds(deleteIds)) {
|
|
217
|
-
const item = byId.get(id);
|
|
218
|
-
if (item)
|
|
219
|
-
deleted.push({ id: item.id, subject: item.subject });
|
|
220
|
-
else
|
|
221
|
-
absent.push(id);
|
|
222
|
-
}
|
|
223
|
-
let items = before.items.filter((item) => !deleteSet.has(item.id));
|
|
224
|
-
// --- Apply: update -------------------------------------------------------
|
|
225
|
-
if (updateEntries.length > 0) {
|
|
226
|
-
const entriesById = new Map(updateEntries.map((entry) => [entry.id, entry]));
|
|
227
|
-
items = items.map((item) => {
|
|
228
|
-
const entry = entriesById.get(item.id);
|
|
229
|
-
if (!entry)
|
|
230
|
-
return item;
|
|
231
|
-
const next = {
|
|
232
|
-
id: item.id,
|
|
233
|
-
subject: entry.subject ?? item.subject,
|
|
234
|
-
description: entry.description ?? item.description,
|
|
235
|
-
status: entry.status ?? item.status,
|
|
236
|
-
};
|
|
237
|
-
return next;
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
// --- Apply: create -------------------------------------------------------
|
|
241
|
-
const created = [];
|
|
242
|
-
if (createEntries.length > 0) {
|
|
243
|
-
const newItems = createEntries.map((entry, index) => {
|
|
244
|
-
const item = {
|
|
245
|
-
id: before.nextId + index,
|
|
246
|
-
subject: entry.subject,
|
|
247
|
-
description: entry.description,
|
|
248
|
-
status: entry.status ?? "pending",
|
|
249
|
-
};
|
|
250
|
-
return item;
|
|
251
|
-
});
|
|
252
|
-
for (const item of newItems)
|
|
253
|
-
created.push(item.id);
|
|
254
|
-
items = [...items, ...newItems];
|
|
255
|
-
}
|
|
256
|
-
// --- Single in_progress: the one task this call activates demotes the rest.
|
|
257
|
-
let demotedId;
|
|
258
|
-
let activatedId;
|
|
259
|
-
for (const entry of updateEntries) {
|
|
260
|
-
if (entry.status === "in_progress")
|
|
261
|
-
activatedId = entry.id;
|
|
262
|
-
}
|
|
263
|
-
if (activatedId === undefined) {
|
|
264
|
-
createEntries.forEach((entry, index) => {
|
|
265
|
-
if (entry.status === "in_progress")
|
|
266
|
-
activatedId = before.nextId + index;
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
if (activatedId !== undefined) {
|
|
270
|
-
const demoted = items.find((item) => item.id !== activatedId && item.status === "in_progress");
|
|
271
|
-
if (demoted) {
|
|
272
|
-
demotedId = demoted.id;
|
|
273
|
-
items = items.map((item) => (item.id === demoted.id ? { ...item, status: "pending" } : item));
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
// --- Capacity: completed tasks are reclaimed oldest-first before a call
|
|
277
|
-
// may fail for space; only a list that stays over the cap is rejected.
|
|
278
|
-
// Tasks this call created or updated are never reclaimed: silently dropping
|
|
279
|
-
// a task would be confusing when the same result reports it as touched.
|
|
280
|
-
const evicted = [];
|
|
281
|
-
if (items.length > TODO_MAX_ITEMS) {
|
|
282
|
-
let overflow = items.length - TODO_MAX_ITEMS;
|
|
283
|
-
const evictIds = new Set();
|
|
284
|
-
const touched = new Set([...created, ...updatedIds]);
|
|
285
|
-
const completedOldestFirst = items
|
|
286
|
-
.filter((item) => item.status === "completed" && !touched.has(item.id))
|
|
287
|
-
.sort((first, second) => first.id - second.id);
|
|
288
|
-
for (const item of completedOldestFirst) {
|
|
289
|
-
if (overflow <= 0)
|
|
290
|
-
break;
|
|
291
|
-
evictIds.add(item.id);
|
|
292
|
-
evicted.push({ id: item.id, subject: item.subject });
|
|
293
|
-
overflow--;
|
|
294
|
-
}
|
|
295
|
-
if (overflow > 0) {
|
|
296
|
-
const completedIds = before.items.filter((item) => item.status === "completed").map((item) => `#${item.id}`);
|
|
297
|
-
throw new Error(`at most ${TODO_MAX_ITEMS} tasks; complete or delete some first. Patch not applied. Tasks created or updated in this call are not reclaimed. ` +
|
|
298
|
-
`Delete existing tasks in the same patch to free space (remove those ids from update), or complete tasks in a separate call before creating more. ` +
|
|
299
|
-
`Completed ids before this call: ${completedIds.join(", ") || "none"}.`);
|
|
300
|
-
}
|
|
301
|
-
items = items.filter((item) => !evictIds.has(item.id));
|
|
302
|
-
}
|
|
303
|
-
// Report transitions only after activation and capacity have settled the snapshot.
|
|
304
|
-
const updated = items
|
|
305
|
-
.filter((item) => updatedIds.has(item.id))
|
|
306
|
-
.map((item) => ({
|
|
307
|
-
id: item.id,
|
|
308
|
-
from: byId.get(item.id).status,
|
|
309
|
-
to: item.status,
|
|
310
|
-
}));
|
|
311
|
-
const change = { created, updated, deleted, absent, evicted };
|
|
312
|
-
if (demotedId !== undefined)
|
|
313
|
-
change.demotedId = demotedId;
|
|
314
|
-
return { state: { items, nextId: before.nextId + created.length }, change };
|
|
315
|
-
}
|
|
316
|
-
export function buildTodoDetails(change, state) {
|
|
317
|
-
return { schemaVersion: TODO_DETAILS_SCHEMA_VERSION, change, state: cloneTodoState(state) };
|
|
318
|
-
}
|
|
319
|
-
function requireValidState(value) {
|
|
320
|
-
const state = normalizeSnapshotState(value);
|
|
321
|
-
if (!state)
|
|
322
|
-
throw new Error("todo state is invalid");
|
|
323
|
-
return state;
|
|
324
|
-
}
|
|
325
|
-
/** Closure-scoped store: one list per store, no module-global session state. */
|
|
326
|
-
export function createTodoStore(initial) {
|
|
327
|
-
let state = requireValidState(initial ?? EMPTY_TODO_STATE);
|
|
328
|
-
return {
|
|
329
|
-
getState() {
|
|
330
|
-
return cloneTodoState(state);
|
|
331
|
-
},
|
|
332
|
-
replaceState(next) {
|
|
333
|
-
state = requireValidState(next);
|
|
334
|
-
},
|
|
335
|
-
execute(params) {
|
|
336
|
-
const patch = applyTodoPatch(state, params);
|
|
337
|
-
const details = buildTodoDetails(patch.change, patch.state);
|
|
338
|
-
state = patch.state;
|
|
339
|
-
return details;
|
|
340
|
-
},
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Validate an external v3 snapshot; returns undefined when malformed.
|
|
345
|
-
*
|
|
346
|
-
* Snapshot text must already be in normalizeText() form, which makes that
|
|
347
|
-
* function's output part of the v3 persistence contract: relaxing or changing
|
|
348
|
-
* it would silently invalidate every historical snapshot, falling back to an
|
|
349
|
-
* earlier one or to the empty state with no diagnostic. Change normalizeText
|
|
350
|
-
* only together with TODO_DETAILS_SCHEMA_VERSION.
|
|
351
|
-
*/
|
|
352
|
-
function normalizeSnapshotState(value) {
|
|
353
|
-
if (!isRecord(value) || !Array.isArray(value.items) || !isPositiveSafeInteger(value.nextId))
|
|
354
|
-
return undefined;
|
|
355
|
-
if (value.items.length > TODO_MAX_ITEMS)
|
|
356
|
-
return undefined;
|
|
357
|
-
const items = [];
|
|
358
|
-
const ids = new Set();
|
|
359
|
-
let maxId = 0;
|
|
360
|
-
let activeCount = 0;
|
|
361
|
-
for (const rawItem of value.items) {
|
|
362
|
-
if (!isRecord(rawItem))
|
|
363
|
-
return undefined;
|
|
364
|
-
const id = rawItem.id;
|
|
365
|
-
if (!isPositiveSafeInteger(id) || ids.has(id))
|
|
366
|
-
return undefined;
|
|
367
|
-
const subject = rawItem.subject;
|
|
368
|
-
const description = rawItem.description;
|
|
369
|
-
const status = rawItem.status;
|
|
370
|
-
if (typeof subject !== "string" || typeof description !== "string")
|
|
371
|
-
return undefined;
|
|
372
|
-
if (subject !== normalizeText(subject) || description !== normalizeText(description))
|
|
373
|
-
return undefined;
|
|
374
|
-
if (!subject || subject.length > TODO_MAX_SUBJECT_LENGTH)
|
|
375
|
-
return undefined;
|
|
376
|
-
if (!description || description.length > TODO_MAX_DESCRIPTION_LENGTH)
|
|
377
|
-
return undefined;
|
|
378
|
-
if (!isTodoStatus(status))
|
|
379
|
-
return undefined;
|
|
380
|
-
ids.add(id);
|
|
381
|
-
if (id > maxId)
|
|
382
|
-
maxId = id;
|
|
383
|
-
if (status === "in_progress")
|
|
384
|
-
activeCount++;
|
|
385
|
-
items.push({ id, subject, description, status });
|
|
386
|
-
}
|
|
387
|
-
if (activeCount > 1)
|
|
388
|
-
return undefined;
|
|
389
|
-
if (value.nextId <= maxId)
|
|
390
|
-
return undefined;
|
|
391
|
-
return { items, nextId: value.nextId };
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Replay the newest valid v3 todo snapshot from a branch, scanning tail to
|
|
395
|
-
* head so a malformed latest snapshot falls back to an earlier valid one.
|
|
396
|
-
* Older schema versions (v1/v2) are ignored: restoring a session written
|
|
397
|
-
* before v3 starts from an empty list.
|
|
398
|
-
*/
|
|
399
|
-
export function replayTodosFromBranch(ctx) {
|
|
400
|
-
const branch = Array.from(ctx.sessionManager.getBranch());
|
|
401
|
-
for (let index = branch.length - 1; index >= 0; index--) {
|
|
402
|
-
// Session history is external input, so every field read stays inside the
|
|
403
|
-
// guard: a hostile entry falls through to an earlier snapshot instead of
|
|
404
|
-
// escaping to the lifecycle handler.
|
|
405
|
-
try {
|
|
406
|
-
const entry = branch[index];
|
|
407
|
-
if (!isRecord(entry) || entry.type !== "message")
|
|
408
|
-
continue;
|
|
409
|
-
const message = entry.message;
|
|
410
|
-
if (!isRecord(message) || message.role !== "toolResult" || message.toolName !== TODO_TOOL_NAME)
|
|
411
|
-
continue;
|
|
412
|
-
const details = message.details;
|
|
413
|
-
if (!isRecord(details) || details.schemaVersion !== TODO_DETAILS_SCHEMA_VERSION)
|
|
414
|
-
continue;
|
|
415
|
-
const state = normalizeSnapshotState(details.state);
|
|
416
|
-
if (state)
|
|
417
|
-
return state;
|
|
418
|
-
}
|
|
419
|
-
catch {
|
|
420
|
-
// Keep scanning for an earlier valid v3 snapshot.
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
return cloneTodoState(EMPTY_TODO_STATE);
|
|
424
|
-
}
|
|
425
|
-
//# sourceMappingURL=state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/extensions/todo/state.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * todo/state.ts — v3 pure state core: closure-scoped store, atomic patch\n * application (delete, then update, then create), snapshot cloning, and\n * branch replay. No session registry, metadata, dependency graph, tombstones,\n * filters, or legacy normalizers.\n *\n * The patch shape is designed so every value a strict sampler may fill in for\n * an unused field ([], \"\", null already stripped by validation) is a no-op:\n * empty groups do nothing, blank update text keeps the current value, and\n * deleting an absent id is recorded rather than rejected.\n */\nimport {\n\tTODO_MAX_BATCH_ITEMS,\n\tTODO_MAX_DESCRIPTION_LENGTH,\n\tTODO_MAX_ITEMS,\n\tTODO_MAX_SUBJECT_LENGTH,\n\tTODO_TOOL_NAME,\n} from \"./constants.ts\";\nimport {\n\tEMPTY_TODO_STATE,\n\tTODO_DETAILS_SCHEMA_VERSION,\n\ttype TodoChange,\n\ttype TodoDetails,\n\ttype TodoItem,\n\ttype TodoParams,\n\ttype TodoState,\n\ttype TodoStatus,\n} from \"./schema.ts\";\n\nconst TODO_STATUSES: ReadonlySet<TodoStatus> = new Set([\"pending\", \"in_progress\", \"completed\"]);\nconst GROUP_FIELDS: ReadonlySet<string> = new Set([\"create\", \"update\", \"delete\"]);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isPositiveSafeInteger(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1;\n}\n\nfunction isTodoStatus(value: unknown): value is TodoStatus {\n\treturn typeof value === \"string\" && TODO_STATUSES.has(value as TodoStatus);\n}\n\n/** De-duplicate ids preserving first-seen input order. */\nfunction dedupeIds(ids: number[]): number[] {\n\tconst seen: number[] = [];\n\tfor (const id of ids) {\n\t\tif (!seen.includes(id)) seen.push(id);\n\t}\n\treturn seen;\n}\n\n/** Trim and collapse every internal whitespace run to a single space. */\nfunction normalizeText(value: string): string {\n\treturn value.trim().replace(/\\s+/g, \" \");\n}\n\n/** Required text (create): normalized, non-empty, within the limit. */\nfunction validateRequiredText(value: unknown, label: string, maximum: number): string {\n\tif (typeof value !== \"string\") throw new Error(`${label} must be a string`);\n\tconst normalized = normalizeText(value);\n\tif (!normalized) throw new Error(`${label} cannot be empty`);\n\tif (normalized.length > maximum) throw new Error(`${label} exceeds ${maximum} characters`);\n\treturn normalized;\n}\n\n/**\n * Optional text (update): normalized and within the limit, where blank means\n * \"keep the current value\" (undefined) so strict-mode filler stays harmless.\n */\nfunction validateOptionalText(value: unknown, label: string, maximum: number): string | undefined {\n\tif (value === undefined) return undefined;\n\tif (typeof value !== \"string\") throw new Error(`${label} must be a string`);\n\tconst normalized = normalizeText(value);\n\tif (!normalized) return undefined;\n\tif (normalized.length > maximum) throw new Error(`${label} exceeds ${maximum} characters`);\n\treturn normalized;\n}\n\nfunction validateOptionalStatus(value: unknown, label: string): TodoStatus | undefined {\n\tif (value === undefined) return undefined;\n\tif (!isTodoStatus(value)) throw new Error(`${label} is invalid`);\n\treturn value;\n}\n\ninterface CreateEntry {\n\tsubject: string;\n\tdescription: string;\n\tstatus?: TodoStatus;\n}\n\ninterface UpdateEntry {\n\tid: number;\n\tsubject?: string;\n\tdescription?: string;\n\tstatus?: TodoStatus;\n}\n\nfunction readCreateEntries(raw: unknown): CreateEntry[] {\n\tif (raw === undefined) return [];\n\tif (!Array.isArray(raw)) throw new Error(\"create must be an array\");\n\tif (raw.length > TODO_MAX_BATCH_ITEMS) throw new Error(`create exceeds ${TODO_MAX_BATCH_ITEMS} tasks`);\n\tconst entries: CreateEntry[] = [];\n\tfor (let index = 0; index < raw.length; index++) {\n\t\tconst item = raw[index];\n\t\tif (!isRecord(item)) throw new Error(`create[${index}] must be an object`);\n\t\tfor (const key of Object.keys(item)) {\n\t\t\tif (key !== \"subject\" && key !== \"description\" && key !== \"status\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`create[${index}].${key} is not a create field; valid fields: subject, description, status`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst entry: CreateEntry = {\n\t\t\tsubject: validateRequiredText(item.subject, `create[${index}].subject`, TODO_MAX_SUBJECT_LENGTH),\n\t\t\tdescription: validateRequiredText(\n\t\t\t\titem.description,\n\t\t\t\t`create[${index}].description`,\n\t\t\t\tTODO_MAX_DESCRIPTION_LENGTH,\n\t\t\t),\n\t\t};\n\t\tconst status = validateOptionalStatus(item.status, `create[${index}].status`);\n\t\tif (status !== undefined) entry.status = status;\n\t\tentries.push(entry);\n\t}\n\treturn entries;\n}\n\nfunction readUpdateEntries(raw: unknown): UpdateEntry[] {\n\tif (raw === undefined) return [];\n\tif (!Array.isArray(raw)) throw new Error(\"update must be an array\");\n\tif (raw.length > TODO_MAX_BATCH_ITEMS) throw new Error(`update exceeds ${TODO_MAX_BATCH_ITEMS} tasks`);\n\tconst entries: UpdateEntry[] = [];\n\tfor (let index = 0; index < raw.length; index++) {\n\t\tconst item = raw[index];\n\t\tif (!isRecord(item)) throw new Error(`update[${index}] must be an object`);\n\t\tfor (const key of Object.keys(item)) {\n\t\t\tif (key !== \"id\" && key !== \"subject\" && key !== \"description\" && key !== \"status\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`update[${index}].${key} is not an update field; valid fields: id, subject, description, status`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (!isPositiveSafeInteger(item.id)) throw new Error(`update[${index}].id must be a positive integer`);\n\t\tconst entry: UpdateEntry = { id: item.id };\n\t\tconst subject = validateOptionalText(item.subject, `update[${index}].subject`, TODO_MAX_SUBJECT_LENGTH);\n\t\tif (subject !== undefined) entry.subject = subject;\n\t\tconst description = validateOptionalText(\n\t\t\titem.description,\n\t\t\t`update[${index}].description`,\n\t\t\tTODO_MAX_DESCRIPTION_LENGTH,\n\t\t);\n\t\tif (description !== undefined) entry.description = description;\n\t\tconst status = validateOptionalStatus(item.status, `update[${index}].status`);\n\t\tif (status !== undefined) entry.status = status;\n\t\tentries.push(entry);\n\t}\n\treturn entries;\n}\n\nfunction readDeleteIds(raw: unknown): number[] {\n\tif (raw === undefined) return [];\n\tif (!Array.isArray(raw)) throw new Error(\"delete must be an array\");\n\tif (raw.length > TODO_MAX_BATCH_ITEMS) throw new Error(`delete exceeds ${TODO_MAX_BATCH_ITEMS} ids`);\n\tconst ids: number[] = [];\n\tfor (let index = 0; index < raw.length; index++) {\n\t\tif (!isPositiveSafeInteger(raw[index])) throw new Error(`delete[${index}] must be a positive integer id`);\n\t\tids.push(raw[index]);\n\t}\n\treturn ids;\n}\n\nfunction currentIdsLabel(state: TodoState): string {\n\tif (state.items.length === 0) return \"the list is empty\";\n\treturn `current ids: ${state.items.map((item) => `#${item.id}`).join(\", \")}`;\n}\n\n/** Snapshot clone: items are plain string/number records, so a shallow copy is safe. */\nexport function cloneTodoState(state: TodoState): TodoState {\n\treturn { items: state.items.map((item) => ({ ...item })), nextId: state.nextId };\n}\n\nexport interface TodoPatch {\n\tstate: TodoState;\n\tchange: TodoChange;\n}\n\n/**\n * Pure patch application: validates every runtime input (tool args can be\n * tampered after schema validation), throws on any invalid call, and never\n * mutates the input state. Application order is delete, then update, then\n * create, so a delete in the same call frees capacity for the create.\n */\nexport function applyTodoPatch(before: TodoState, params: TodoParams): TodoPatch {\n\tif (!isRecord(params)) throw new Error(\"todo params must be an object\");\n\tfor (const key of Object.keys(params)) {\n\t\tif (!GROUP_FIELDS.has(key)) throw new Error(`unknown todo field \"${key}\"; valid fields: create, update, delete`);\n\t}\n\n\t// Everything above the apply phase is validation: any throw leaves the\n\t// caller's state untouched.\n\tconst createEntries = readCreateEntries(params.create);\n\tconst updateEntries = readUpdateEntries(params.update);\n\tconst deleteIds = readDeleteIds(params.delete);\n\n\t// Conflicts: one edit per task per call, and a task cannot be both edited\n\t// and removed in the same call.\n\tconst updatedIds = new Set<number>();\n\tfor (const entry of updateEntries) {\n\t\tif (updatedIds.has(entry.id)) throw new Error(`#${entry.id} appears more than once in update`);\n\t\tupdatedIds.add(entry.id);\n\t}\n\tconst deleteSet = new Set(deleteIds);\n\tfor (const entry of updateEntries) {\n\t\tif (deleteSet.has(entry.id)) throw new Error(`#${entry.id} cannot be in both update and delete`);\n\t}\n\n\t// At most one activation per call: more than one is a real contradiction,\n\t// since a single task can be in_progress at any time.\n\tconst activations: string[] = [];\n\tcreateEntries.forEach((entry, index) => {\n\t\tif (entry.status === \"in_progress\") activations.push(`create[${index}]`);\n\t});\n\tfor (const entry of updateEntries) {\n\t\tif (entry.status === \"in_progress\") activations.push(`#${entry.id}`);\n\t}\n\tif (activations.length > 1) {\n\t\tthrow new Error(`at most one task may be set in_progress per call; got ${activations.join(\" and \")}`);\n\t}\n\n\tconst byId = new Map(before.items.map((item) => [item.id, item]));\n\tfor (const entry of updateEntries) {\n\t\tif (!byId.has(entry.id)) throw new Error(`#${entry.id} not found; ${currentIdsLabel(before)}`);\n\t}\n\n\tif (createEntries.length > 0) {\n\t\tif (!Number.isSafeInteger(before.nextId) || before.nextId < 1) throw new Error(\"next id is invalid\");\n\t\tif (before.nextId > Number.MAX_SAFE_INTEGER - createEntries.length) throw new Error(\"next id is exhausted\");\n\t}\n\n\t// --- Apply: delete -------------------------------------------------------\n\tconst deleted: Array<{ id: number; subject: string }> = [];\n\tconst absent: number[] = [];\n\tfor (const id of dedupeIds(deleteIds)) {\n\t\tconst item = byId.get(id);\n\t\tif (item) deleted.push({ id: item.id, subject: item.subject });\n\t\telse absent.push(id);\n\t}\n\tlet items = before.items.filter((item) => !deleteSet.has(item.id));\n\n\t// --- Apply: update -------------------------------------------------------\n\tif (updateEntries.length > 0) {\n\t\tconst entriesById = new Map(updateEntries.map((entry) => [entry.id, entry]));\n\t\titems = items.map((item) => {\n\t\t\tconst entry = entriesById.get(item.id);\n\t\t\tif (!entry) return item;\n\t\t\tconst next: TodoItem = {\n\t\t\t\tid: item.id,\n\t\t\t\tsubject: entry.subject ?? item.subject,\n\t\t\t\tdescription: entry.description ?? item.description,\n\t\t\t\tstatus: entry.status ?? item.status,\n\t\t\t};\n\t\t\treturn next;\n\t\t});\n\t}\n\n\t// --- Apply: create -------------------------------------------------------\n\tconst created: number[] = [];\n\tif (createEntries.length > 0) {\n\t\tconst newItems = createEntries.map((entry, index) => {\n\t\t\tconst item: TodoItem = {\n\t\t\t\tid: before.nextId + index,\n\t\t\t\tsubject: entry.subject,\n\t\t\t\tdescription: entry.description,\n\t\t\t\tstatus: entry.status ?? \"pending\",\n\t\t\t};\n\t\t\treturn item;\n\t\t});\n\t\tfor (const item of newItems) created.push(item.id);\n\t\titems = [...items, ...newItems];\n\t}\n\n\t// --- Single in_progress: the one task this call activates demotes the rest.\n\tlet demotedId: number | undefined;\n\tlet activatedId: number | undefined;\n\tfor (const entry of updateEntries) {\n\t\tif (entry.status === \"in_progress\") activatedId = entry.id;\n\t}\n\tif (activatedId === undefined) {\n\t\tcreateEntries.forEach((entry, index) => {\n\t\t\tif (entry.status === \"in_progress\") activatedId = before.nextId + index;\n\t\t});\n\t}\n\tif (activatedId !== undefined) {\n\t\tconst demoted = items.find((item) => item.id !== activatedId && item.status === \"in_progress\");\n\t\tif (demoted) {\n\t\t\tdemotedId = demoted.id;\n\t\t\titems = items.map((item) => (item.id === demoted.id ? { ...item, status: \"pending\" as const } : item));\n\t\t}\n\t}\n\n\t// --- Capacity: completed tasks are reclaimed oldest-first before a call\n\t// may fail for space; only a list that stays over the cap is rejected.\n\t// Tasks this call created or updated are never reclaimed: silently dropping\n\t// a task would be confusing when the same result reports it as touched.\n\tconst evicted: Array<{ id: number; subject: string }> = [];\n\tif (items.length > TODO_MAX_ITEMS) {\n\t\tlet overflow = items.length - TODO_MAX_ITEMS;\n\t\tconst evictIds = new Set<number>();\n\t\tconst touched = new Set<number>([...created, ...updatedIds]);\n\t\tconst completedOldestFirst = items\n\t\t\t.filter((item) => item.status === \"completed\" && !touched.has(item.id))\n\t\t\t.sort((first, second) => first.id - second.id);\n\t\tfor (const item of completedOldestFirst) {\n\t\t\tif (overflow <= 0) break;\n\t\t\tevictIds.add(item.id);\n\t\t\tevicted.push({ id: item.id, subject: item.subject });\n\t\t\toverflow--;\n\t\t}\n\t\tif (overflow > 0) {\n\t\t\tconst completedIds = before.items.filter((item) => item.status === \"completed\").map((item) => `#${item.id}`);\n\t\t\tthrow new Error(\n\t\t\t\t`at most ${TODO_MAX_ITEMS} tasks; complete or delete some first. Patch not applied. Tasks created or updated in this call are not reclaimed. ` +\n\t\t\t\t\t`Delete existing tasks in the same patch to free space (remove those ids from update), or complete tasks in a separate call before creating more. ` +\n\t\t\t\t\t`Completed ids before this call: ${completedIds.join(\", \") || \"none\"}.`,\n\t\t\t);\n\t\t}\n\t\titems = items.filter((item) => !evictIds.has(item.id));\n\t}\n\n\t// Report transitions only after activation and capacity have settled the snapshot.\n\tconst updated = items\n\t\t.filter((item) => updatedIds.has(item.id))\n\t\t.map((item) => ({\n\t\t\tid: item.id,\n\t\t\tfrom: byId.get(item.id)!.status,\n\t\t\tto: item.status,\n\t\t}));\n\tconst change: TodoChange = { created, updated, deleted, absent, evicted };\n\tif (demotedId !== undefined) change.demotedId = demotedId;\n\treturn { state: { items, nextId: before.nextId + created.length }, change };\n}\n\nexport function buildTodoDetails(change: TodoChange, state: TodoState): TodoDetails {\n\treturn { schemaVersion: TODO_DETAILS_SCHEMA_VERSION, change, state: cloneTodoState(state) };\n}\n\nexport interface TodoStore {\n\tgetState(): TodoState;\n\treplaceState(state: TodoState): void;\n\texecute(params: TodoParams): TodoDetails;\n}\n\nfunction requireValidState(value: unknown): TodoState {\n\tconst state = normalizeSnapshotState(value);\n\tif (!state) throw new Error(\"todo state is invalid\");\n\treturn state;\n}\n\n/** Closure-scoped store: one list per store, no module-global session state. */\nexport function createTodoStore(initial?: TodoState): TodoStore {\n\tlet state = requireValidState(initial ?? EMPTY_TODO_STATE);\n\treturn {\n\t\tgetState() {\n\t\t\treturn cloneTodoState(state);\n\t\t},\n\t\treplaceState(next: TodoState) {\n\t\t\tstate = requireValidState(next);\n\t\t},\n\t\texecute(params: TodoParams): TodoDetails {\n\t\t\tconst patch = applyTodoPatch(state, params);\n\t\t\tconst details = buildTodoDetails(patch.change, patch.state);\n\t\t\tstate = patch.state;\n\t\t\treturn details;\n\t\t},\n\t};\n}\n\n/**\n * Validate an external v3 snapshot; returns undefined when malformed.\n *\n * Snapshot text must already be in normalizeText() form, which makes that\n * function's output part of the v3 persistence contract: relaxing or changing\n * it would silently invalidate every historical snapshot, falling back to an\n * earlier one or to the empty state with no diagnostic. Change normalizeText\n * only together with TODO_DETAILS_SCHEMA_VERSION.\n */\nfunction normalizeSnapshotState(value: unknown): TodoState | undefined {\n\tif (!isRecord(value) || !Array.isArray(value.items) || !isPositiveSafeInteger(value.nextId)) return undefined;\n\tif (value.items.length > TODO_MAX_ITEMS) return undefined;\n\tconst items: TodoItem[] = [];\n\tconst ids = new Set<number>();\n\tlet maxId = 0;\n\tlet activeCount = 0;\n\tfor (const rawItem of value.items) {\n\t\tif (!isRecord(rawItem)) return undefined;\n\t\tconst id = rawItem.id;\n\t\tif (!isPositiveSafeInteger(id) || ids.has(id)) return undefined;\n\t\tconst subject = rawItem.subject;\n\t\tconst description = rawItem.description;\n\t\tconst status = rawItem.status;\n\t\tif (typeof subject !== \"string\" || typeof description !== \"string\") return undefined;\n\t\tif (subject !== normalizeText(subject) || description !== normalizeText(description)) return undefined;\n\t\tif (!subject || subject.length > TODO_MAX_SUBJECT_LENGTH) return undefined;\n\t\tif (!description || description.length > TODO_MAX_DESCRIPTION_LENGTH) return undefined;\n\t\tif (!isTodoStatus(status)) return undefined;\n\t\tids.add(id);\n\t\tif (id > maxId) maxId = id;\n\t\tif (status === \"in_progress\") activeCount++;\n\t\titems.push({ id, subject, description, status });\n\t}\n\tif (activeCount > 1) return undefined;\n\tif (value.nextId <= maxId) return undefined;\n\treturn { items, nextId: value.nextId };\n}\n\n/**\n * Replay the newest valid v3 todo snapshot from a branch, scanning tail to\n * head so a malformed latest snapshot falls back to an earlier valid one.\n * Older schema versions (v1/v2) are ignored: restoring a session written\n * before v3 starts from an empty list.\n */\nexport function replayTodosFromBranch(ctx: { sessionManager: { getBranch(): Iterable<unknown> } }): TodoState {\n\tconst branch = Array.from(ctx.sessionManager.getBranch());\n\tfor (let index = branch.length - 1; index >= 0; index--) {\n\t\t// Session history is external input, so every field read stays inside the\n\t\t// guard: a hostile entry falls through to an earlier snapshot instead of\n\t\t// escaping to the lifecycle handler.\n\t\ttry {\n\t\t\tconst entry = branch[index];\n\t\t\tif (!isRecord(entry) || entry.type !== \"message\") continue;\n\t\t\tconst message = entry.message;\n\t\t\tif (!isRecord(message) || message.role !== \"toolResult\" || message.toolName !== TODO_TOOL_NAME) continue;\n\t\t\tconst details = message.details;\n\t\t\tif (!isRecord(details) || details.schemaVersion !== TODO_DETAILS_SCHEMA_VERSION) continue;\n\t\t\tconst state = normalizeSnapshotState(details.state);\n\t\t\tif (state) return state;\n\t\t} catch {\n\t\t\t// Keep scanning for an earlier valid v3 snapshot.\n\t\t}\n\t}\n\treturn cloneTodoState(EMPTY_TODO_STATE);\n}\n"]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* todo/view.ts — v3 presentation: the one-line above-editor widget renderer,
|
|
3
|
-
* tool call/group renderers, the /todos list formatter, and model-facing
|
|
4
|
-
* result text. Wire input (args, details, snapshots) is read defensively and
|
|
5
|
-
* bounded so partial or hostile input cannot grow output without limit.
|
|
6
|
-
*/
|
|
7
|
-
import type { AgentToolResult } from "../../core/extensions/types.ts";
|
|
8
|
-
import type { Theme } from "../../modes/interactive/theme/theme.ts";
|
|
9
|
-
import { type TodoChange, type TodoParams, type TodoState, type TodoStatus } from "./schema.ts";
|
|
10
|
-
export declare const STATUS_MARK: Record<TodoStatus, string>;
|
|
11
|
-
/** True while any open task exists; the widget is registered only in that case. */
|
|
12
|
-
export declare function hasOpenTodos(state: TodoState): boolean;
|
|
13
|
-
/** One-line widget: `Todos 2/6 · [>] #4 s [ ] #5 s +N more`; only hidden open tasks count in the overflow. */
|
|
14
|
-
export declare function renderWidgetLine(state: TodoState, theme: Theme, width: number): string[];
|
|
15
|
-
/** `Todos: X in progress, Y pending, Z completed` header plus two-line tasks. */
|
|
16
|
-
declare function formatTodoList(state: TodoState): string;
|
|
17
|
-
/** /todos command output: full list, subject line plus indented description per task. */
|
|
18
|
-
export declare const formatCommandList: typeof formatTodoList;
|
|
19
|
-
/**
|
|
20
|
-
* One-line change summary for a completed call, e.g.
|
|
21
|
-
* `Created 1 task: #7: Wire parser (in_progress); Updated #1 (pending -> completed): S; demoted #5 to pending; auto-removed completed #1–#3 to stay within 20`.
|
|
22
|
-
* A call that changed nothing (including `{}`) returns the full list.
|
|
23
|
-
*/
|
|
24
|
-
export declare function formatTodoContent(change: TodoChange, state: TodoState): string;
|
|
25
|
-
type TodoCallArgs = Partial<Record<keyof TodoParams, unknown>>;
|
|
26
|
-
/** One-line call summary when collapsed; headline plus details when expanded. */
|
|
27
|
-
export declare function formatTodoCall(args: TodoCallArgs | undefined, theme: Theme, expanded: boolean, result?: AgentToolResult<unknown>): string;
|
|
28
|
-
export interface TodoSummaryContext {
|
|
29
|
-
isError: boolean;
|
|
30
|
-
isPartial: boolean;
|
|
31
|
-
result?: AgentToolResult<unknown>;
|
|
32
|
-
}
|
|
33
|
-
/** Compact result-aware one-line summary of a collapsed todo row. */
|
|
34
|
-
export declare function formatTodoSummary(args: TodoCallArgs | undefined, theme: Theme, context: TodoSummaryContext): string;
|
|
35
|
-
export {};
|
|
36
|
-
//# sourceMappingURL=view.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/extensions/todo/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAOpE,OAAO,EAEN,KAAK,UAAU,EAEf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAIlD,CAAC;AAmBF,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEtD;AAsBD,gHAAgH;AAChH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwDxF;AAID,iFAAiF;AACjF,iBAAS,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYhD;AAED,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,uBAAiB,CAAC;AAUhD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CA+B9E;AASD,KAAK,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAkR/D,iFAAiF;AACjF,wBAAgB,cAAc,CAC7B,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAC/B,MAAM,CAGR;AAiID,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAyBnH"}
|