@ashx-j/lunr 0.2.25 → 0.2.27
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 +31 -1
- package/LICENSE +22 -0
- package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -1
- package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-thinking.js +1 -1
- package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts +11 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +6 -10
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +1 -0
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
- package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
- package/dist/builtin-extensions/lunr-computer-use.js +179 -0
- package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
- package/dist/builtin-extensions/lunr-cron.d.ts +4 -5
- package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-cron.js +94 -108
- package/dist/builtin-extensions/lunr-cron.js.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.js +3 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js +2 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/commands.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.js +2 -2
- package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js +1 -15
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts +6 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js +187 -132
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-client.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts +8 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js +142 -112
- package/dist/builtin-extensions/pi-lsp-extension/src/lsp-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts +12 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js +14 -7
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts +11 -3
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js +67 -41
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/rewrite-engine.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts +4 -2
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js +3 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/tree-sitter/search-engine.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts +2 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.js +6 -6
- package/dist/builtin-extensions/pi-mcp-adapter/commands.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/config.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/config.js +11 -5
- package/dist/builtin-extensions/pi-mcp-adapter/config.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +2 -2
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/host-html-template.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.js +48 -40
- package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.js +3 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts +12 -40
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js +166 -235
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-auth-flow.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts +5 -0
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js +43 -13
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-callback-server.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts +14 -3
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js +73 -21
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-oauth-provider.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js +4 -4
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +2 -2
- package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts +2 -0
- package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/state.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.js +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts +11 -5
- package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.js +12 -32
- package/dist/builtin-extensions/pi-ollama-cloud/models.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/index.js +5 -3
- package/dist/builtin-extensions/pi-prompt-template-model/index.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts +2 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +21 -12
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +7 -24
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +39 -77
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -4
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +8 -5
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +15 -31
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +7 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +21 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +11 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +121 -25
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +25 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +7 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js +60 -32
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.js +15 -5
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +4 -3
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +22 -11
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
- package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-tps.js +20 -17
- package/dist/builtin-extensions/pi-tps.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/activity.d.ts +1 -0
- package/dist/builtin-extensions/pi-web-access/activity.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/activity.js +27 -5
- package/dist/builtin-extensions/pi-web-access/activity.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts +3 -0
- package/dist/builtin-extensions/pi-web-access/bounded-body.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/bounded-body.js +43 -0
- package/dist/builtin-extensions/pi-web-access/bounded-body.js.map +1 -0
- package/dist/builtin-extensions/pi-web-access/content-page.d.ts +24 -0
- package/dist/builtin-extensions/pi-web-access/content-page.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/content-page.js +57 -0
- package/dist/builtin-extensions/pi-web-access/content-page.js.map +1 -0
- package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/extract.js +7 -2
- package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.d.ts +0 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.js +147 -36
- package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +48 -73
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +12 -4
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js +35 -12
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/storage.d.ts +9 -6
- package/dist/builtin-extensions/pi-web-access/storage.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/storage.js +36 -24
- package/dist/builtin-extensions/pi-web-access/storage.js.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
- package/dist/cli/install-cli.d.ts.map +1 -1
- package/dist/cli/install-cli.js +38 -30
- package/dist/cli/install-cli.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +13 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +75 -11
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +40 -6
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +309 -76
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/browser/runtime.d.ts +2 -0
- package/dist/core/browser/runtime.d.ts.map +1 -1
- package/dist/core/browser/runtime.js +80 -45
- package/dist/core/browser/runtime.js.map +1 -1
- package/dist/core/browser/setup.d.ts.map +1 -1
- package/dist/core/browser/setup.js +12 -1
- package/dist/core/browser/setup.js.map +1 -1
- package/dist/core/computer-use/adapter.d.ts +28 -0
- package/dist/core/computer-use/adapter.d.ts.map +1 -0
- package/dist/core/computer-use/adapter.js +138 -0
- package/dist/core/computer-use/adapter.js.map +1 -0
- package/dist/core/computer-use/image.d.ts +27 -0
- package/dist/core/computer-use/image.d.ts.map +1 -0
- package/dist/core/computer-use/image.js +84 -0
- package/dist/core/computer-use/image.js.map +1 -0
- package/dist/core/computer-use/lease.d.ts +18 -0
- package/dist/core/computer-use/lease.d.ts.map +1 -0
- package/dist/core/computer-use/lease.js +129 -0
- package/dist/core/computer-use/lease.js.map +1 -0
- package/dist/core/computer-use/macos-runtime.d.ts +14 -0
- package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
- package/dist/core/computer-use/macos-runtime.js +148 -0
- package/dist/core/computer-use/macos-runtime.js.map +1 -0
- package/dist/core/computer-use/policy.d.ts +19 -0
- package/dist/core/computer-use/policy.d.ts.map +1 -0
- package/dist/core/computer-use/policy.js +67 -0
- package/dist/core/computer-use/policy.js.map +1 -0
- package/dist/core/computer-use/release.generated.d.ts +31 -0
- package/dist/core/computer-use/release.generated.d.ts.map +1 -0
- package/dist/core/computer-use/release.generated.js +36 -0
- package/dist/core/computer-use/release.generated.js.map +1 -0
- package/dist/core/computer-use/runtime.d.ts +13 -0
- package/dist/core/computer-use/runtime.d.ts.map +1 -0
- package/dist/core/computer-use/runtime.js +158 -0
- package/dist/core/computer-use/runtime.js.map +1 -0
- package/dist/core/computer-use/schemas.d.ts +100 -0
- package/dist/core/computer-use/schemas.d.ts.map +1 -0
- package/dist/core/computer-use/schemas.js +96 -0
- package/dist/core/computer-use/schemas.js.map +1 -0
- package/dist/core/computer-use/windows-desktop.d.ts +3 -0
- package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
- package/dist/core/computer-use/windows-desktop.js +48 -0
- package/dist/core/computer-use/windows-desktop.js.map +1 -0
- package/dist/core/computer-use/workflow.d.ts +38 -0
- package/dist/core/computer-use/workflow.d.ts.map +1 -0
- package/dist/core/computer-use/workflow.js +900 -0
- package/dist/core/computer-use/workflow.js.map +1 -0
- package/dist/core/cron/jobs.d.ts +26 -8
- package/dist/core/cron/jobs.d.ts.map +1 -1
- package/dist/core/cron/jobs.js +357 -232
- package/dist/core/cron/jobs.js.map +1 -1
- package/dist/core/cron/origin-context.d.ts +1 -0
- package/dist/core/cron/origin-context.d.ts.map +1 -1
- package/dist/core/cron/origin-context.js.map +1 -1
- package/dist/core/cron/scheduler.d.ts +22 -17
- package/dist/core/cron/scheduler.d.ts.map +1 -1
- package/dist/core/cron/scheduler.js +153 -73
- package/dist/core/cron/scheduler.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- 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 +4 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +8 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +8 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +4 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +22 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/large-subagent-launch.d.ts +1 -1
- package/dist/core/large-subagent-launch.d.ts.map +1 -1
- package/dist/core/large-subagent-launch.js +7 -7
- package/dist/core/large-subagent-launch.js.map +1 -1
- package/dist/core/model-registry.d.ts +2 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +5 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-runtime.d.ts +4 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +40 -4
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/permissions.d.ts +4 -4
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +25 -38
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts +5 -13
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +135 -116
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js +1 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/prompt-resource-bridge.d.ts +12 -0
- package/dist/core/prompt-resource-bridge.d.ts.map +1 -0
- package/dist/core/prompt-resource-bridge.js +9 -0
- package/dist/core/prompt-resource-bridge.js.map +1 -0
- package/dist/core/protected-targets.d.ts +6 -0
- package/dist/core/protected-targets.d.ts.map +1 -0
- package/dist/core/protected-targets.js +45 -0
- package/dist/core/protected-targets.js.map +1 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +7 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/rollback.d.ts +19 -3
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +172 -56
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +3 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +14 -1
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts +3 -0
- 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/session-manager.d.ts +6 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +95 -32
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-ownership.d.ts.map +1 -1
- package/dist/core/session-ownership.js +8 -3
- package/dist/core/session-ownership.js.map +1 -1
- package/dist/core/session-retention.d.ts.map +1 -1
- package/dist/core/session-retention.js +18 -7
- package/dist/core/session-retention.js.map +1 -1
- package/dist/core/session-startup-settings.d.ts +10 -0
- package/dist/core/session-startup-settings.d.ts.map +1 -0
- package/dist/core/session-startup-settings.js +70 -0
- package/dist/core/session-startup-settings.js.map +1 -0
- package/dist/core/settings-manager.d.ts +6 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +19 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/subagent-event-transport.d.ts +3 -0
- package/dist/core/subagent-event-transport.d.ts.map +1 -0
- package/dist/core/subagent-event-transport.js +61 -0
- package/dist/core/subagent-event-transport.js.map +1 -0
- package/dist/core/subscriptions.d.ts +16 -7
- package/dist/core/subscriptions.d.ts.map +1 -1
- package/dist/core/subscriptions.js +96 -55
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/trust-manager.d.ts +2 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +6 -1
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/update-check.d.ts.map +1 -1
- package/dist/core/update-check.js.map +1 -1
- package/dist/core/usage-adapters/kimi-coding.d.ts +2 -2
- package/dist/core/usage-adapters/kimi-coding.d.ts.map +1 -1
- package/dist/core/usage-adapters/kimi-coding.js +2 -2
- package/dist/core/usage-adapters/kimi-coding.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts +3 -2
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js +3 -3
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-adapters/xai.d.ts +2 -2
- package/dist/core/usage-adapters/xai.d.ts.map +1 -1
- package/dist/core/usage-adapters/xai.js +3 -3
- package/dist/core/usage-adapters/xai.js.map +1 -1
- package/dist/core/usage-adapters/zai.d.ts +2 -2
- package/dist/core/usage-adapters/zai.d.ts.map +1 -1
- package/dist/core/usage-adapters/zai.js +2 -2
- package/dist/core/usage-adapters/zai.js.map +1 -1
- package/dist/core/usage-service.d.ts +9 -2
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +95 -50
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/adapters/discord.d.ts.map +1 -1
- package/dist/gateway/adapters/discord.js +2 -2
- package/dist/gateway/adapters/discord.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts +9 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +91 -37
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/approval.d.ts.map +1 -1
- package/dist/gateway/approval.js +3 -3
- package/dist/gateway/approval.js.map +1 -1
- package/dist/gateway/authz.d.ts +4 -4
- package/dist/gateway/authz.d.ts.map +1 -1
- package/dist/gateway/authz.js +8 -12
- package/dist/gateway/authz.js.map +1 -1
- package/dist/gateway/buttons.d.ts +8 -1
- package/dist/gateway/buttons.d.ts.map +1 -1
- package/dist/gateway/buttons.js +76 -18
- package/dist/gateway/buttons.js.map +1 -1
- package/dist/gateway/commands.d.ts +1 -0
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +12 -10
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/cron.d.ts +12 -11
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +85 -62
- package/dist/gateway/cron.js.map +1 -1
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +5 -4
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/mobile-commands.d.ts +1 -0
- package/dist/gateway/mobile-commands.d.ts.map +1 -1
- package/dist/gateway/mobile-commands.js +64 -22
- package/dist/gateway/mobile-commands.js.map +1 -1
- package/dist/gateway/presenter.d.ts +12 -2
- package/dist/gateway/presenter.d.ts.map +1 -1
- package/dist/gateway/presenter.js +74 -39
- package/dist/gateway/presenter.js.map +1 -1
- package/dist/gateway/router.d.ts +2 -2
- package/dist/gateway/router.d.ts.map +1 -1
- package/dist/gateway/router.js +22 -9
- package/dist/gateway/router.js.map +1 -1
- package/dist/gateway/service.d.ts +2 -0
- package/dist/gateway/service.d.ts.map +1 -1
- package/dist/gateway/service.js +153 -0
- package/dist/gateway/service.js.map +1 -1
- package/dist/gateway/setup.d.ts.map +1 -1
- package/dist/gateway/setup.js +6 -4
- package/dist/gateway/setup.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +86 -33
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +6 -4
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -1
- package/dist/modes/interactive/components/copyable-text.js +3 -2
- package/dist/modes/interactive/components/copyable-text.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +104 -109
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
- package/dist/modes/interactive/smooth-streaming.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +9 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +2 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/node-runtime/adapter-247RTYLS.js +16 -0
- package/dist/node-runtime/agent-session-services-KDMSPQDY.js +53 -0
- package/dist/node-runtime/{brave-UWDA3I22.js → brave-2AFFAXNN.js} +1 -1
- package/dist/node-runtime/{builtin-extensions-ZLAX7TUH.js → builtin-extensions-OX6KELNX.js} +9 -7
- package/dist/node-runtime/{chunk-QH6YL7VK.js → chunk-252ZVPPF.js} +3 -3
- package/dist/node-runtime/{chunk-PCEW76PM.js → chunk-2OIPYKLZ.js} +6 -6
- package/dist/node-runtime/{chunk-XBWPBZBN.js → chunk-2SWW7KMW.js} +1 -1
- package/dist/node-runtime/{chunk-UQUCFAJ3.js → chunk-2VIW3IMF.js} +40 -7
- package/dist/node-runtime/{chunk-UOEDI7RP.js → chunk-4KNKQGHM.js} +2 -2
- package/dist/node-runtime/{chunk-FQMM2EZ2.js → chunk-64XTQNLA.js} +29 -7
- package/dist/node-runtime/{chunk-NRKGMJYU.js → chunk-6O3IW3IA.js} +2 -2
- package/dist/node-runtime/{chunk-5ZQXRPMC.js → chunk-6ZZHGUSA.js} +2 -2
- package/dist/node-runtime/chunk-A2WO6WIN.js +1197 -0
- package/dist/node-runtime/{chunk-ZXSGTGJ6.js → chunk-APVM5NEU.js} +169 -148
- package/dist/node-runtime/{chunk-RC7DMV45.js → chunk-AYHH7YSD.js} +205 -144
- package/dist/node-runtime/{chunk-LWYIVUGV.js → chunk-B2IBAXNX.js} +48 -31
- package/dist/node-runtime/{chunk-M3LZLQW2.js → chunk-BDRGN3L2.js} +1 -0
- package/dist/node-runtime/{chunk-GJ2RDBRL.js → chunk-BYC6RKCN.js} +4 -2
- package/dist/node-runtime/{chunk-KWIYUUZK.js → chunk-C3P6Q3B2.js} +469 -283
- package/dist/node-runtime/{chunk-YCUZEGJG.js → chunk-DQSCFU7R.js} +17 -8
- package/dist/node-runtime/chunk-EBLAZVSA.js +4170 -0
- package/dist/node-runtime/{chunk-2KIPT4HJ.js → chunk-EPR2F3GU.js} +68 -20
- package/dist/node-runtime/{chunk-CSFI6YXL.js → chunk-ES6PBSIE.js} +1 -1
- package/dist/node-runtime/{chunk-IF24A3FH.js → chunk-EVM653DD.js} +4 -4
- package/dist/node-runtime/{chunk-HTFRRDSF.js → chunk-F2SMQ6ES.js} +3 -2
- package/dist/node-runtime/chunk-F2V2F4ZG.js +114 -0
- package/dist/node-runtime/chunk-FE3WZI7F.js +290 -0
- package/dist/node-runtime/{chunk-GYIXXQAO.js → chunk-FIRA54AC.js} +2 -5
- package/dist/node-runtime/{chunk-6VYZ5UFP.js → chunk-FLGEEH27.js} +1 -1
- package/dist/node-runtime/{chunk-5EFIU3OM.js → chunk-FTKEZL27.js} +1 -1
- package/dist/node-runtime/chunk-FY4A63RK.js +73 -0
- package/dist/node-runtime/chunk-FYIFPFXE.js +98 -0
- package/dist/node-runtime/{chunk-HMBGROQK.js → chunk-GLDXBBL6.js} +3 -3
- package/dist/node-runtime/{chunk-KWA4OC2J.js → chunk-H6YBCWKG.js} +1 -1
- package/dist/node-runtime/{chunk-2MI5OPMN.js → chunk-HNNHHJAB.js} +68 -50
- package/dist/node-runtime/{chunk-6XL67VVY.js → chunk-HUD2RFJW.js} +17 -2
- package/dist/node-runtime/{chunk-I54LGHWM.js → chunk-I2H5QMWW.js} +3 -3
- package/dist/node-runtime/chunk-IAZSK7KK.js +108 -0
- package/dist/node-runtime/{chunk-2HHLJWGD.js → chunk-IHHTWSXN.js} +9 -9
- package/dist/node-runtime/{chunk-DAPBPCBP.js → chunk-IPP5BIV5.js} +25 -3
- package/dist/node-runtime/{chunk-QFWG2RVL.js → chunk-IXG6F4NT.js} +11 -0
- package/dist/node-runtime/{chunk-RDDAZOMU.js → chunk-JL4HYQXK.js} +1 -1
- package/dist/node-runtime/{chunk-CDVHZOOK.js → chunk-JQYNHAKX.js} +1 -1
- package/dist/node-runtime/{chunk-WF7PGWRZ.js → chunk-JWEVT363.js} +37 -28
- package/dist/node-runtime/{chunk-2HMIRK7W.js → chunk-LHV3V67B.js} +5 -5
- package/dist/node-runtime/{chunk-UAEOTO52.js → chunk-MNQXDFPV.js} +6 -2
- package/dist/node-runtime/{chunk-IJIFHRTB.js → chunk-MQPKUHRN.js} +165 -85
- package/dist/node-runtime/{chunk-MPKSOJBT.js → chunk-NHATCSOI.js} +4 -7
- package/dist/node-runtime/{chunk-RMQZU2YU.js → chunk-NNNR3QIY.js} +1 -1
- package/dist/node-runtime/{chunk-RWTKOC3B.js → chunk-QBTJG3UM.js} +1 -1
- package/dist/node-runtime/{chunk-E4D3IGP2.js → chunk-QNVMKNNN.js} +20 -17
- package/dist/node-runtime/{chunk-GS42T6MX.js → chunk-QW3AAHWN.js} +1 -1
- package/dist/node-runtime/{chunk-7S3T6YEA.js → chunk-R4WSB2MQ.js} +5 -5
- package/dist/node-runtime/{chunk-B4HP6ZWM.js → chunk-RHCGYWO7.js} +1 -1
- package/dist/node-runtime/{chunk-3XPLBUEM.js → chunk-RLGY2QIL.js} +49 -59
- package/dist/node-runtime/{chunk-KKUTQQV7.js → chunk-RYRGL7P4.js} +1 -1
- package/dist/node-runtime/{chunk-AD6VXAO7.js → chunk-TCT6PCUR.js} +47 -115
- package/dist/node-runtime/chunk-U5F4IC7R.js +53 -0
- package/dist/node-runtime/{chunk-OCVIXVTZ.js → chunk-UBWW2PID.js} +13 -2
- package/dist/node-runtime/{chunk-HFVZUPFJ.js → chunk-UNUZICC4.js} +3 -3
- package/dist/node-runtime/{chunk-LQP3RB67.js → chunk-UYRKUKFE.js} +1 -1
- package/dist/node-runtime/{chunk-DSIKTUPW.js → chunk-VSUEAI7O.js} +2993 -3820
- package/dist/node-runtime/{chunk-NAY6UUQZ.js → chunk-WDIVLMOH.js} +1 -1
- package/dist/node-runtime/{chunk-E24EO34J.js → chunk-WPXUR3HE.js} +1 -1
- package/dist/node-runtime/{chunk-SLVOAQOY.js → chunk-WXYNALHD.js} +113 -1
- package/dist/node-runtime/{chunk-KJ6DWS3K.js → chunk-XEOCUEUJ.js} +121 -60
- package/dist/node-runtime/chunk-YD3IZAZ7.js +47 -0
- package/dist/node-runtime/chunk-YSB6URMT.js +41 -0
- package/dist/node-runtime/{chunk-VQFSUJJG.js → chunk-ZDJUR45D.js} +430 -129
- package/dist/node-runtime/{chunk-YDO2F2IA.js → chunk-ZEVFBFNF.js} +95 -142
- package/dist/node-runtime/chunk-ZIQUS5QO.js +180 -0
- package/dist/node-runtime/cli-runtime.js +4 -4
- package/dist/node-runtime/{command-6WDOYKS6.js → command-3HMSY6W2.js} +5 -5
- package/dist/node-runtime/{commands-NZLSOHPE.js → commands-D6A6H4TS.js} +11 -16
- package/dist/node-runtime/commands-OCSSEEWJ.js +37 -0
- package/dist/node-runtime/{config-QDD5PUE2.js → config-CU7M7BTK.js} +1 -1
- package/dist/node-runtime/{config-D4QUPAHX.js → config-DS7XLMEM.js} +2 -2
- package/dist/node-runtime/{direct-tool-executor-77GW4F5P.js → direct-tool-executor-2QJXVQD2.js} +8 -10
- package/dist/node-runtime/{exa-LL64QZR2.js → exa-6VBZNPGE.js} +1 -1
- package/dist/node-runtime/{export-html-VM4J2MNR.js → export-html-BRWF5AHI.js} +4 -4
- package/dist/node-runtime/{extension-input-E7BJZ35H.js → extension-input-VBBMX7YV.js} +5 -5
- package/dist/node-runtime/{extension-selector-WU42XDTU.js → extension-selector-T5AOG5XB.js} +5 -5
- package/dist/node-runtime/{extract-EQJE7FZZ.js → extract-BFX2N35A.js} +3 -3
- package/dist/node-runtime/{gateway-INAYBF4Q.js → gateway-6623C2U3.js} +61 -53
- package/dist/node-runtime/{gemini-search-35OCRFLN.js → gemini-search-C66QHDT6.js} +2 -2
- package/dist/node-runtime/{gemini-url-context-UQY3PHHW.js → gemini-url-context-T7DEK73R.js} +3 -3
- package/dist/node-runtime/{github-extract-F64RZOEA.js → github-extract-HOGE3D6F.js} +107 -38
- package/dist/node-runtime/{goal-NJEE5CTU.js → goal-AIHEDUYA.js} +5 -5
- package/dist/node-runtime/index.js +54 -48
- package/dist/node-runtime/{init-HS6NQXSK.js → init-JBQJIPYI.js} +3 -4
- package/dist/node-runtime/{install-cli-KL4UDDAD.js → install-cli-INGHIVBY.js} +30 -25
- package/dist/node-runtime/interactive-mode-FM5DNUSW.js +74 -0
- package/dist/node-runtime/{interactive-view-NGFAMHPW.js → interactive-view-K33PM4OS.js} +8 -8
- package/dist/node-runtime/{lsp-manager-3ASUSO4T.js → lsp-manager-S554V5HR.js} +240 -155
- package/dist/node-runtime/{lunr-browser-IR7TL3J7.js → lunr-browser-H4FDOR3C.js} +7 -7
- package/dist/node-runtime/lunr-computer-use-VDP2QNRQ.js +158 -0
- package/dist/node-runtime/{lunr-cron-LWIZJM2N.js → lunr-cron-LKVA5CZZ.js} +94 -79
- package/dist/node-runtime/main.js +42 -39
- package/dist/node-runtime/{mobile-commands-J7OJEKFO.js → mobile-commands-XT3NQXLD.js} +13 -12
- package/dist/node-runtime/{model-runtime-OO5HFLWE.js → model-runtime-MZ2JMDV4.js} +4 -4
- package/dist/node-runtime/{openai-search-B3MSNCQA.js → openai-search-K72LJDYN.js} +1 -1
- package/dist/node-runtime/{package-manager-cli-VYZM5WHN.js → package-manager-cli-CYM262SI.js} +20 -19
- package/dist/node-runtime/{parallel-AI2MNSCU.js → parallel-X724NCNU.js} +1 -1
- package/dist/node-runtime/{perplexity-QVJW3I35.js → perplexity-RDHQHVMK.js} +2 -2
- package/dist/node-runtime/{pi-intercom-QM53RLTS.js → pi-intercom-NHHEPBMI.js} +2 -2
- package/dist/node-runtime/{pi-mcp-adapter-5UKBZP44.js → pi-mcp-adapter-PP3GQJQ2.js} +98 -94
- package/dist/node-runtime/{pi-ollama-cloud-2F3Y2QNM.js → pi-ollama-cloud-4MNWIMFN.js} +11 -24
- package/dist/node-runtime/{pi-prompt-template-model-QWTCGLJU.js → pi-prompt-template-model-FTGELLS5.js} +32 -36
- package/dist/node-runtime/{pi-subagents-DNY7EAIG.js → pi-subagents-LT3CTO4E.js} +114 -116
- package/dist/node-runtime/{pi-web-access-WTGMNZ32.js → pi-web-access-Z3LP246C.js} +144 -108
- package/dist/node-runtime/{print-mode-XSFM26EL.js → print-mode-2XHN5SUA.js} +4 -3
- package/dist/node-runtime/{process-registry-4FAKZQOL.js → process-registry-Q4QWIU33.js} +3 -3
- package/dist/node-runtime/{proxy-modes-LGEUYD7R.js → proxy-modes-VEGC6QG5.js} +9 -13
- package/dist/node-runtime/rpc-entry.js +42 -39
- package/dist/node-runtime/{rpc-mode-O3XV4SID.js → rpc-mode-32DHJPEJ.js} +4 -4
- package/dist/node-runtime/{runtime-4VA6JKNF.js → runtime-EDUUGAQD.js} +56 -46
- package/dist/node-runtime/runtime-UGXM4NPQ.js +21 -0
- package/dist/node-runtime/{runtime-bridges-VRDDR73P.js → runtime-bridges-DNKMNJCF.js} +8 -7
- package/dist/node-runtime/{service-MDQIPQ26.js → service-IHLGFLBT.js} +6 -4
- package/dist/node-runtime/{session-handoff-GWARVEWT.js → session-handoff-LNSPDTKY.js} +4 -4
- package/dist/node-runtime/{session-manager-JB5J6XBN.js → session-manager-YIFIAVGC.js} +3 -3
- package/dist/node-runtime/{session-selector-GIM4DHQ2.js → session-selector-I73U3EIO.js} +7 -7
- package/dist/node-runtime/{settings-manager-J4SPQPDJ.js → settings-manager-P2TKGYTR.js} +6 -5
- package/dist/node-runtime/{setup-JBKOLJ6F.js → setup-H7CCELIL.js} +15 -1
- package/dist/node-runtime/{setup-CQ2NLVK5.js → setup-OLQ4GXWS.js} +22 -21
- package/dist/node-runtime/{src-IVPNZ2BX.js → src-6RV4PXKJ.js} +64 -36
- package/dist/node-runtime/{subagent-executor-KZZQGAKV.js → subagent-executor-Q5F7DBVM.js} +141 -62
- package/dist/node-runtime/{tavily-WEZFVFP7.js → tavily-KZBFYQB6.js} +1 -1
- package/dist/node-runtime/{theme-UOO5RVFN.js → theme-YLVZKKZD.js} +2 -2
- package/dist/node-runtime/{trust-manager-MMISNCYO.js → trust-manager-ZCU76D23.js} +2 -2
- package/dist/node-runtime/{update-cli-GTFJC7XK.js → update-cli-F3XXJANQ.js} +7 -6
- package/dist/node-runtime/{usage-service-LFB2SWYV.js → usage-service-CPAGBED5.js} +1 -1
- package/dist/node-runtime/{video-extract-OOZHR7SU.js → video-extract-UPKYIBW3.js} +3 -3
- package/dist/node-runtime/workflow-ICDI4N3J.js +767 -0
- package/dist/node-runtime/{youtube-extract-FNPAUNHU.js → youtube-extract-77NT7FWH.js} +4 -4
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/exif-orientation.js +25 -10
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/image-resize-core.d.ts +2 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -1
- package/dist/utils/image-resize-core.js +12 -0
- package/dist/utils/image-resize-core.js.map +1 -1
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +33 -2
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/sanitize-terminal-text.d.ts +7 -0
- package/dist/utils/sanitize-terminal-text.d.ts.map +1 -0
- package/dist/utils/sanitize-terminal-text.js +67 -0
- package/dist/utils/sanitize-terminal-text.js.map +1 -0
- package/docs/browser.md +1 -1
- package/docs/computer-use.md +362 -0
- package/docs/custom-provider.md +3 -3
- package/docs/extensions.md +8 -4
- package/docs/features.md +22 -12
- package/docs/keybindings.md +1 -1
- package/docs/models.md +5 -5
- package/docs/packages.md +1 -1
- package/docs/providers.md +2 -2
- package/docs/rpc.md +7 -7
- package/docs/security.md +10 -5
- package/docs/sessions.md +2 -2
- package/docs/skills.md +1 -1
- package/docs/terminal-setup.md +7 -7
- package/docs/themes.md +1 -1
- package/docs/usage.md +1 -1
- package/examples/extensions/auto-commit-on-exit.ts +1 -1
- package/examples/extensions/bash-spawn-hook.ts +1 -1
- package/examples/extensions/built-in-tool-renderer.ts +1 -1
- package/examples/extensions/claude-rules.ts +1 -1
- package/examples/extensions/commands.ts +1 -1
- package/examples/extensions/custom-compaction.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/index.ts +3 -3
- 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/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/index.ts +1 -1
- package/examples/extensions/git-merge-and-resolve.ts +2 -2
- package/examples/extensions/gondolin/index.ts +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/inline-bash.ts +2 -2
- package/examples/extensions/input-transform-streaming.ts +2 -2
- package/examples/extensions/input-transform.ts +2 -2
- package/examples/extensions/interactive-shell.ts +1 -1
- package/examples/extensions/kimi-deferred-tools.ts +1 -1
- package/examples/extensions/mac-system-theme.ts +1 -1
- package/examples/extensions/minimal-mode.ts +1 -1
- package/examples/extensions/modal-editor.ts +1 -1
- package/examples/extensions/model-status.ts +1 -1
- package/examples/extensions/notify.ts +3 -3
- package/examples/extensions/overlay-qa-tests.ts +1 -1
- package/examples/extensions/overlay-test.ts +1 -1
- package/examples/extensions/pirate.ts +1 -1
- package/examples/extensions/preset.ts +3 -3
- package/examples/extensions/project-trust.ts +4 -4
- package/examples/extensions/prompt-customizer.ts +1 -1
- package/examples/extensions/rainbow-editor.ts +1 -1
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +7 -7
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/shutdown-command.ts +5 -5
- package/examples/extensions/ssh.ts +2 -2
- package/examples/extensions/subagent/README.md +3 -3
- package/examples/extensions/subagent/index.ts +2 -2
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +1 -1
- package/examples/extensions/working-message-test.ts +1 -1
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/03-custom-prompt.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/06-extensions.ts +2 -2
- package/examples/sdk/08-prompt-templates.ts +1 -1
- package/install-lock/package-lock.json +3841 -0
- package/install-lock/package.json +18 -0
- package/native/computer-use/LICENSE.md +21 -0
- package/npm-shrinkwrap.json +3858 -0
- package/package.json +15 -9
- package/dist/modes/interactive/components/exit-card.d.ts +0 -22
- package/dist/modes/interactive/components/exit-card.d.ts.map +0 -1
- package/dist/modes/interactive/components/exit-card.js +0 -69
- package/dist/modes/interactive/components/exit-card.js.map +0 -1
- package/dist/node-runtime/agent-session-services-YXXFCP5J.js +0 -49
- package/dist/node-runtime/chunk-4HXHDDCF.js +0 -16
- package/dist/node-runtime/chunk-4TLO4PO2.js +0 -3427
- package/dist/node-runtime/chunk-AUXVGBO4.js +0 -19
- package/dist/node-runtime/chunk-OVX6X377.js +0 -50
- package/dist/node-runtime/chunk-QTU6AKNJ.js +0 -773
- package/dist/node-runtime/chunk-TORR5XBV.js +0 -356
- package/dist/node-runtime/commands-QC6VUZJQ.js +0 -36
- package/dist/node-runtime/interactive-mode-Z5M7WYYZ.js +0 -72
- package/dist/node-runtime/mcp-auth-flow-QIXHW6QN.js +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-ownership.js","sourceRoot":"","sources":["../../src/core/session-ownership.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\trealpathSync,\n\trenameSync,\n\trmdirSync,\n\tstatSync,\n\tunlinkSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { hostname } from \"node:os\";\nimport { basename, dirname, join, resolve } from \"node:path\";\n\nexport interface SessionOwner {\n\tversion: 1;\n\tfile: string;\n\tgeneration: string;\n\tpid: number;\n\thost: string;\n\tinstance: string;\n\tsessionId?: string;\n}\nconst instance = randomUUID();\n\nexport class SessionOwnershipError extends Error {\n\treadonly file: string;\n\tconstructor(\n\t\tfile: string,\n\t\tmessage = \"Session is owned by another runtime. Request a transfer or close its owner first.\",\n\t) {\n\t\tsuper(`${message} ${file}`);\n\t\tthis.name = \"SessionOwnershipError\";\n\t\tthis.file = file;\n\t}\n}\n\nexport function canonicalSessionPath(file: string): string {\n\tconst absolute = resolve(file);\n\tlet canonical: string;\n\tif (existsSync(absolute)) canonical = realpathSync.native(absolute);\n\telse {\n\t\tconst parent = dirname(absolute);\n\t\tcanonical = parent === absolute ? absolute : join(canonicalSessionPath(parent), basename(absolute));\n\t}\n\treturn process.platform === \"win32\" ? canonical.toLowerCase() : canonical;\n}\n\nexport function sessionOwnershipDirectory(file: string): string {\n\treturn `${canonicalSessionPath(file)}.owner`;\n}\n\nexport function readSessionOwner(file: string): SessionOwner | undefined {\n\tconst directory = sessionOwnershipDirectory(file);\n\tif (!existsSync(directory)) return undefined;\n\ttry {\n\t\tconst value = JSON.parse(readFileSync(join(directory, \"owner.json\"), \"utf8\"));\n\t\tif (\n\t\t\tvalue.version === 1 &&\n\t\t\tvalue.file === canonicalSessionPath(file) &&\n\t\t\ttypeof value.generation === \"string\" &&\n\t\t\tNumber.isSafeInteger(value.pid) &&\n\t\t\tvalue.pid > 0 &&\n\t\t\ttypeof value.host === \"string\" &&\n\t\t\ttypeof value.instance === \"string\"\n\t\t)\n\t\t\treturn value;\n\t} catch {}\n\tthrow new SessionOwnershipError(file, \"Session owner is incomplete or unknown; automatic takeover is unsafe.\");\n}\n\nexport function isSessionOwnerDead(owner: SessionOwner): boolean {\n\tif (owner.host !== hostname()) return false;\n\ttry {\n\t\tprocess.kill(owner.pid, 0);\n\t\treturn false;\n\t} catch (error) {\n\t\treturn (error as NodeJS.ErrnoException).code === \"ESRCH\";\n\t}\n}\n\nexport function writeSessionJson(file: string, value: unknown): void {\n\tconst temp = `${file}.${randomUUID()}.tmp`;\n\ttry {\n\t\twriteFileSync(temp, JSON.stringify(value), { flag: \"wx\", mode: 0o600 });\n\t\trenameSync(temp, file);\n\t} finally {\n\t\tif (existsSync(temp)) unlinkSync(temp);\n\t}\n}\n\nexport class SessionOwnership {\n\treadonly owner: SessionOwner;\n\tprivate released = false;\n\tprivate readonly directory: string;\n\tconstructor(file: string) {\n\t\tfile = canonicalSessionPath(file);\n\t\tif (existsSync(file) && statSync(file).nlink > 1)\n\t\t\tthrow new SessionOwnershipError(file, \"Hard-linked sessions cannot be owned safely. Use a separate copy.\");\n\t\tthis.directory = sessionOwnershipDirectory(file);\n\t\tthis.owner = { version: 1, file, generation: randomUUID(), pid: process.pid, host: hostname(), instance };\n\t\tmkdirSync(dirname(file), { recursive: true });\n\t\ttry {\n\t\t\tmkdirSync(this.directory);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t\t\tconst old = readSessionOwner(file);\n\t\t\tif (!old || !isSessionOwnerDead(old)) throw new SessionOwnershipError(file);\n\t\t\t// Serialize dead-owner cleanup. Never infer death from elapsed time or a missing heartbeat.\n\t\t\tconst recovery = `${this.directory}.recovery`;\n\t\t\ttry {\n\t\t\t\twriteFileSync(recovery, JSON.stringify(this.owner), { flag: \"wx\", mode: 0o600 });\n\t\t\t} catch {\n\t\t\t\tthrow new SessionOwnershipError(\n\t\t\t\t\tfile,\n\t\t\t\t\t\"Session recovery is already in progress or requires manual inspection.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst current = readSessionOwner(file);\n\t\t\t\tif (current?.generation !== old.generation || !isSessionOwnerDead(current))\n\t\t\t\t\tthrow new SessionOwnershipError(file);\n\t\t\t\tunlinkSync(join(this.directory, \"owner.json\"));\n\t\t\t\trmdirSync(this.directory);\n\t\t\t\ttry {\n\t\t\t\t\tmkdirSync(this.directory);\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new SessionOwnershipError(file);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tunlinkSync(recovery);\n\t\t\t}\n\t\t}\n\t\twriteSessionJson(join(this.directory, \"owner.json\"), this.owner);\n\t}\n\tbindSession(sessionId: string): void {\n\t\tthis.assert();\n\t\tthis.owner.sessionId = sessionId;\n\t\twriteSessionJson(join(this.directory, \"owner.json\"), this.owner);\n\t}\n\n\tassert(): void {\n\t\tif (existsSync(this.owner.file) && statSync(this.owner.file).nlink > 1)\n\t\t\tthrow new SessionOwnershipError(this.owner.file, \"Session acquired a hard-link alias; writes are blocked.\");\n\t\tif (this.released || readSessionOwner(this.owner.file)?.generation !== this.owner.generation) {\n\t\t\tthrow new SessionOwnershipError(\n\t\t\t\tthis.owner.file,\n\t\t\t\t\"This runtime no longer owns the session. Reclaim or reopen it before continuing.\",\n\t\t\t);\n\t\t}\n\t}\n\trelease(): void {\n\t\tif (this.released) return;\n\t\tthis.assert();\n\t\tthis.released = true;\n\t\tconst releasedDirectory = `${this.directory}.released-${this.owner.generation}`;\n\t\trenameSync(this.directory, releasedDirectory);\n\t\tunlinkSync(join(releasedDirectory, \"owner.json\"));\n\t\trmdirSync(releasedDirectory);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-ownership.js","sourceRoot":"","sources":["../../src/core/session-ownership.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\trealpathSync,\n\trenameSync,\n\trmdirSync,\n\tstatSync,\n\tunlinkSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { hostname } from \"node:os\";\nimport { basename, dirname, join, resolve } from \"node:path\";\n\nexport interface SessionOwner {\n\tversion: 1;\n\tfile: string;\n\tgeneration: string;\n\tpid: number;\n\thost: string;\n\tinstance: string;\n\tsessionId?: string;\n}\nconst instance = randomUUID();\n\nexport class SessionOwnershipError extends Error {\n\treadonly file: string;\n\tconstructor(\n\t\tfile: string,\n\t\tmessage = \"Session is owned by another runtime. Request a transfer or close its owner first.\",\n\t) {\n\t\tsuper(`${message} ${file}`);\n\t\tthis.name = \"SessionOwnershipError\";\n\t\tthis.file = file;\n\t}\n}\n\nexport function canonicalSessionPath(file: string): string {\n\tconst absolute = resolve(file);\n\tlet canonical: string;\n\tif (existsSync(absolute)) canonical = realpathSync.native(absolute);\n\telse {\n\t\tconst parent = dirname(absolute);\n\t\tcanonical = parent === absolute ? absolute : join(canonicalSessionPath(parent), basename(absolute));\n\t}\n\treturn process.platform === \"win32\" ? canonical.toLowerCase() : canonical;\n}\n\nexport function sessionOwnershipDirectory(file: string): string {\n\treturn `${canonicalSessionPath(file)}.owner`;\n}\n\nexport function readSessionOwner(file: string): SessionOwner | undefined {\n\tconst directory = sessionOwnershipDirectory(file);\n\tif (!existsSync(directory)) return undefined;\n\ttry {\n\t\tconst value = JSON.parse(readFileSync(join(directory, \"owner.json\"), \"utf8\"));\n\t\tif (\n\t\t\tvalue.version === 1 &&\n\t\t\tvalue.file === canonicalSessionPath(file) &&\n\t\t\ttypeof value.generation === \"string\" &&\n\t\t\tNumber.isSafeInteger(value.pid) &&\n\t\t\tvalue.pid > 0 &&\n\t\t\ttypeof value.host === \"string\" &&\n\t\t\ttypeof value.instance === \"string\"\n\t\t)\n\t\t\treturn value;\n\t} catch {}\n\tthrow new SessionOwnershipError(file, \"Session owner is incomplete or unknown; automatic takeover is unsafe.\");\n}\n\nexport function isSessionOwnerDead(owner: SessionOwner): boolean {\n\tif (owner.host !== hostname()) return false;\n\ttry {\n\t\tprocess.kill(owner.pid, 0);\n\t\treturn false;\n\t} catch (error) {\n\t\treturn (error as NodeJS.ErrnoException).code === \"ESRCH\";\n\t}\n}\n\nexport function writeSessionJson(file: string, value: unknown): void {\n\tconst temp = `${file}.${randomUUID()}.tmp`;\n\ttry {\n\t\twriteFileSync(temp, JSON.stringify(value), { flag: \"wx\", mode: 0o600 });\n\t\trenameSync(temp, file);\n\t} finally {\n\t\tif (existsSync(temp)) unlinkSync(temp);\n\t}\n}\n\nexport class SessionOwnership {\n\treadonly owner: SessionOwner;\n\tprivate released = false;\n\tprivate readonly directory: string;\n\tconstructor(file: string) {\n\t\tfile = canonicalSessionPath(file);\n\t\tif (existsSync(file) && statSync(file).nlink > 1)\n\t\t\tthrow new SessionOwnershipError(file, \"Hard-linked sessions cannot be owned safely. Use a separate copy.\");\n\t\tthis.directory = sessionOwnershipDirectory(file);\n\t\tthis.owner = { version: 1, file, generation: randomUUID(), pid: process.pid, host: hostname(), instance };\n\t\tmkdirSync(dirname(file), { recursive: true });\n\t\ttry {\n\t\t\tmkdirSync(this.directory);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t\t\tconst old = readSessionOwner(file);\n\t\t\tif (!old || !isSessionOwnerDead(old)) throw new SessionOwnershipError(file);\n\t\t\t// Serialize dead-owner cleanup. Never infer death from elapsed time or a missing heartbeat.\n\t\t\tconst recovery = `${this.directory}.recovery`;\n\t\t\ttry {\n\t\t\t\twriteFileSync(recovery, JSON.stringify(this.owner), { flag: \"wx\", mode: 0o600 });\n\t\t\t} catch {\n\t\t\t\tthrow new SessionOwnershipError(\n\t\t\t\t\tfile,\n\t\t\t\t\t\"Session recovery is already in progress or requires manual inspection.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst current = readSessionOwner(file);\n\t\t\t\tif (current?.generation !== old.generation || !isSessionOwnerDead(current))\n\t\t\t\t\tthrow new SessionOwnershipError(file);\n\t\t\t\tunlinkSync(join(this.directory, \"owner.json\"));\n\t\t\t\trmdirSync(this.directory);\n\t\t\t\ttry {\n\t\t\t\t\tmkdirSync(this.directory);\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new SessionOwnershipError(file);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tunlinkSync(recovery);\n\t\t\t}\n\t\t}\n\t\twriteSessionJson(join(this.directory, \"owner.json\"), this.owner);\n\t}\n\tbindSession(sessionId: string): void {\n\t\tthis.assert();\n\t\tthis.owner.sessionId = sessionId;\n\t\twriteSessionJson(join(this.directory, \"owner.json\"), this.owner);\n\t}\n\n\tassert(): void {\n\t\tif (existsSync(this.owner.file) && statSync(this.owner.file).nlink > 1)\n\t\t\tthrow new SessionOwnershipError(this.owner.file, \"Session acquired a hard-link alias; writes are blocked.\");\n\t\tif (this.released || readSessionOwner(this.owner.file)?.generation !== this.owner.generation) {\n\t\t\tthrow new SessionOwnershipError(\n\t\t\t\tthis.owner.file,\n\t\t\t\t\"This runtime no longer owns the session. Reclaim or reopen it before continuing.\",\n\t\t\t);\n\t\t}\n\t}\n\trelease(): void {\n\t\tif (this.released) return;\n\t\tthis.assert();\n\t\tconst releasedDirectory = `${this.directory}.released-${this.owner.generation}`;\n\t\trenameSync(this.directory, releasedDirectory);\n\t\tthis.released = true;\n\t\ttry {\n\t\t\tunlinkSync(join(releasedDirectory, \"owner.json\"));\n\t\t\trmdirSync(releasedDirectory);\n\t\t} catch {\n\t\t\t// Ownership is already relinquished. Cleanup must not reject the handoff.\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-retention.d.ts","sourceRoot":"","sources":["../../src/core/session-retention.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACvC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACtC,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"session-retention.d.ts","sourceRoot":"","sources":["../../src/core/session-retention.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACvC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACtC,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAsDD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACrC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAwBjC","sourcesContent":["// lunr: session retention pruning (Phase 5 of lunr-ux plan).\n// Scans the sessions root (~/.lunr/agent/sessions/, layout: <root>/--<cwd>--/*.jsonl,\n// or a flat custom --session-dir) and deletes .jsonl session files older than the\n// configured retention window. The active session file is always excluded.\n\nimport type { Dirent } from \"node:fs\";\nimport { readdir, realpath, stat, unlink } from \"node:fs/promises\";\nimport { basename, join, resolve } from \"node:path\";\nimport { SessionOwnership } from \"./session-ownership.ts\";\n\nexport interface PruneOldSessionsOptions {\n\t/** Absolute path of the active session file; never deleted. */\n\texcludeFile?: string;\n\t/** Reference timestamp in ms (defaults to Date.now()); injectable for tests. */\n\tnow?: number;\n}\n\nexport interface PruneOldSessionsResult {\n\t/** Paths of session files that were deleted. */\n\tdeleted: string[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\nasync function sameFile(a: string, b: string): Promise<boolean> {\n\tconst normalize = (path: string) => (process.platform === \"win32\" ? resolve(path).toLowerCase() : resolve(path));\n\tconst ra = normalize(a);\n\tconst rb = normalize(b);\n\t// Windows paths are case-insensitive.\n\tif (ra === rb) return true;\n\tif (basename(ra) !== basename(rb)) return false;\n\ttry {\n\t\tconst [canonicalA, canonicalB] = await Promise.all([realpath(a), realpath(b)]);\n\t\treturn normalize(canonicalA) === normalize(canonicalB);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function pruneDir(\n\tdir: string,\n\tcutoffMs: number,\n\texcludeFile: string | undefined,\n\tdeleted: string[],\n): Promise<void> {\n\tlet entries: Dirent[];\n\ttry {\n\t\tentries = await readdir(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn; // Missing or unreadable directory: nothing to prune.\n\t}\n\tfor (const entry of entries) {\n\t\tif (!entry.isFile() || !entry.name.endsWith(\".jsonl\")) continue;\n\t\tconst filePath = join(dir, entry.name);\n\t\tif (excludeFile && (await sameFile(filePath, excludeFile))) continue;\n\t\ttry {\n\t\t\tconst info = await stat(filePath);\n\t\t\tif (info.mtimeMs < cutoffMs) {\n\t\t\t\tconst ownership = new SessionOwnership(filePath);\n\t\t\t\ttry {\n\t\t\t\t\tif ((await stat(filePath)).mtimeMs < cutoffMs) {\n\t\t\t\t\t\tawait unlink(filePath);\n\t\t\t\t\t\tdeleted.push(filePath);\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\townership.release();\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Per-file errors (stat/unlink races, permissions) must never break startup.\n\t\t}\n\t}\n}\n\n/**\n * Delete .jsonl session files older than `retentionDays` under `sessionsRoot`.\n * Covers both layouts: project subdirectories (<root>/--<cwd>--/*.jsonl) and flat\n * custom session dirs (<root>/*.jsonl). `retentionDays <= 0` keeps everything.\n */\nexport async function pruneOldSessions(\n\tsessionsRoot: string,\n\tretentionDays: number,\n\toptions: PruneOldSessionsOptions = {},\n): Promise<PruneOldSessionsResult> {\n\tconst deleted: string[] = [];\n\tif (!Number.isFinite(retentionDays) || retentionDays <= 0) {\n\t\treturn { deleted };\n\t}\n\tconst now = options.now ?? Date.now();\n\tconst cutoffMs = now - retentionDays * DAY_MS;\n\n\t// Flat layout (custom --session-dir).\n\tawait pruneDir(sessionsRoot, cutoffMs, options.excludeFile, deleted);\n\n\t// Project layout (<root>/<dir>/*.jsonl).\n\tlet subdirs: Dirent[];\n\ttry {\n\t\tsubdirs = await readdir(sessionsRoot, { withFileTypes: true });\n\t} catch {\n\t\treturn { deleted };\n\t}\n\tfor (const entry of subdirs) {\n\t\tif (entry.isDirectory()) {\n\t\t\tawait pruneDir(join(sessionsRoot, entry.name), cutoffMs, options.excludeFile, deleted);\n\t\t}\n\t}\n\treturn { deleted };\n}\n"]}
|
|
@@ -2,15 +2,26 @@
|
|
|
2
2
|
// Scans the sessions root (~/.lunr/agent/sessions/, layout: <root>/--<cwd>--/*.jsonl,
|
|
3
3
|
// or a flat custom --session-dir) and deletes .jsonl session files older than the
|
|
4
4
|
// configured retention window. The active session file is always excluded.
|
|
5
|
-
import { readdir, stat, unlink } from "node:fs/promises";
|
|
6
|
-
import { join, resolve } from "node:path";
|
|
5
|
+
import { readdir, realpath, stat, unlink } from "node:fs/promises";
|
|
6
|
+
import { basename, join, resolve } from "node:path";
|
|
7
7
|
import { SessionOwnership } from "./session-ownership.js";
|
|
8
8
|
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
9
|
-
function sameFile(a, b) {
|
|
10
|
-
const
|
|
11
|
-
const
|
|
9
|
+
async function sameFile(a, b) {
|
|
10
|
+
const normalize = (path) => (process.platform === "win32" ? resolve(path).toLowerCase() : resolve(path));
|
|
11
|
+
const ra = normalize(a);
|
|
12
|
+
const rb = normalize(b);
|
|
12
13
|
// Windows paths are case-insensitive.
|
|
13
|
-
|
|
14
|
+
if (ra === rb)
|
|
15
|
+
return true;
|
|
16
|
+
if (basename(ra) !== basename(rb))
|
|
17
|
+
return false;
|
|
18
|
+
try {
|
|
19
|
+
const [canonicalA, canonicalB] = await Promise.all([realpath(a), realpath(b)]);
|
|
20
|
+
return normalize(canonicalA) === normalize(canonicalB);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
26
|
async function pruneDir(dir, cutoffMs, excludeFile, deleted) {
|
|
16
27
|
let entries;
|
|
@@ -24,7 +35,7 @@ async function pruneDir(dir, cutoffMs, excludeFile, deleted) {
|
|
|
24
35
|
if (!entry.isFile() || !entry.name.endsWith(".jsonl"))
|
|
25
36
|
continue;
|
|
26
37
|
const filePath = join(dir, entry.name);
|
|
27
|
-
if (excludeFile && sameFile(filePath, excludeFile))
|
|
38
|
+
if (excludeFile && (await sameFile(filePath, excludeFile)))
|
|
28
39
|
continue;
|
|
29
40
|
try {
|
|
30
41
|
const info = await stat(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-retention.js","sourceRoot":"","sources":["../../src/core/session-retention.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,sFAAsF;AACtF,kFAAkF;AAClF,2EAA2E;AAG3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-retention.js","sourceRoot":"","sources":["../../src/core/session-retention.ts"],"names":[],"mappings":"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","sourcesContent":["// lunr: session retention pruning (Phase 5 of lunr-ux plan).\n// Scans the sessions root (~/.lunr/agent/sessions/, layout: <root>/--<cwd>--/*.jsonl,\n// or a flat custom --session-dir) and deletes .jsonl session files older than the\n// configured retention window. The active session file is always excluded.\n\nimport type { Dirent } from \"node:fs\";\nimport { readdir, realpath, stat, unlink } from \"node:fs/promises\";\nimport { basename, join, resolve } from \"node:path\";\nimport { SessionOwnership } from \"./session-ownership.ts\";\n\nexport interface PruneOldSessionsOptions {\n\t/** Absolute path of the active session file; never deleted. */\n\texcludeFile?: string;\n\t/** Reference timestamp in ms (defaults to Date.now()); injectable for tests. */\n\tnow?: number;\n}\n\nexport interface PruneOldSessionsResult {\n\t/** Paths of session files that were deleted. */\n\tdeleted: string[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\nasync function sameFile(a: string, b: string): Promise<boolean> {\n\tconst normalize = (path: string) => (process.platform === \"win32\" ? resolve(path).toLowerCase() : resolve(path));\n\tconst ra = normalize(a);\n\tconst rb = normalize(b);\n\t// Windows paths are case-insensitive.\n\tif (ra === rb) return true;\n\tif (basename(ra) !== basename(rb)) return false;\n\ttry {\n\t\tconst [canonicalA, canonicalB] = await Promise.all([realpath(a), realpath(b)]);\n\t\treturn normalize(canonicalA) === normalize(canonicalB);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function pruneDir(\n\tdir: string,\n\tcutoffMs: number,\n\texcludeFile: string | undefined,\n\tdeleted: string[],\n): Promise<void> {\n\tlet entries: Dirent[];\n\ttry {\n\t\tentries = await readdir(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn; // Missing or unreadable directory: nothing to prune.\n\t}\n\tfor (const entry of entries) {\n\t\tif (!entry.isFile() || !entry.name.endsWith(\".jsonl\")) continue;\n\t\tconst filePath = join(dir, entry.name);\n\t\tif (excludeFile && (await sameFile(filePath, excludeFile))) continue;\n\t\ttry {\n\t\t\tconst info = await stat(filePath);\n\t\t\tif (info.mtimeMs < cutoffMs) {\n\t\t\t\tconst ownership = new SessionOwnership(filePath);\n\t\t\t\ttry {\n\t\t\t\t\tif ((await stat(filePath)).mtimeMs < cutoffMs) {\n\t\t\t\t\t\tawait unlink(filePath);\n\t\t\t\t\t\tdeleted.push(filePath);\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\townership.release();\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Per-file errors (stat/unlink races, permissions) must never break startup.\n\t\t}\n\t}\n}\n\n/**\n * Delete .jsonl session files older than `retentionDays` under `sessionsRoot`.\n * Covers both layouts: project subdirectories (<root>/--<cwd>--/*.jsonl) and flat\n * custom session dirs (<root>/*.jsonl). `retentionDays <= 0` keeps everything.\n */\nexport async function pruneOldSessions(\n\tsessionsRoot: string,\n\tretentionDays: number,\n\toptions: PruneOldSessionsOptions = {},\n): Promise<PruneOldSessionsResult> {\n\tconst deleted: string[] = [];\n\tif (!Number.isFinite(retentionDays) || retentionDays <= 0) {\n\t\treturn { deleted };\n\t}\n\tconst now = options.now ?? Date.now();\n\tconst cutoffMs = now - retentionDays * DAY_MS;\n\n\t// Flat layout (custom --session-dir).\n\tawait pruneDir(sessionsRoot, cutoffMs, options.excludeFile, deleted);\n\n\t// Project layout (<root>/<dir>/*.jsonl).\n\tlet subdirs: Dirent[];\n\ttry {\n\t\tsubdirs = await readdir(sessionsRoot, { withFileTypes: true });\n\t} catch {\n\t\treturn { deleted };\n\t}\n\tfor (const entry of subdirs) {\n\t\tif (entry.isDirectory()) {\n\t\t\tawait pruneDir(join(sessionsRoot, entry.name), cutoffMs, options.excludeFile, deleted);\n\t\t}\n\t}\n\treturn { deleted };\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SessionManager } from "./session-manager.ts";
|
|
2
|
+
import type { SettingsManager } from "./settings-manager.ts";
|
|
3
|
+
/** Global maintenance keeps its own policy; approved project policy applies only to its configured tree. */
|
|
4
|
+
export declare function getSessionRetentionTargets(globalSettings: SettingsManager, runtimeSettings: SettingsManager, explicitSessionDir?: string): {
|
|
5
|
+
directory: string;
|
|
6
|
+
days: number;
|
|
7
|
+
}[];
|
|
8
|
+
/** Replace the provisional manager only after a project directory is approved. */
|
|
9
|
+
export declare function selectApprovedStartupSession(manager: SessionManager, directory: string | undefined, select?: () => Promise<SessionManager>): Promise<SessionManager>;
|
|
10
|
+
//# sourceMappingURL=session-startup-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-startup-settings.d.ts","sourceRoot":"","sources":["../../src/core/session-startup-settings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAgC7D,4GAA4G;AAC5G,wBAAgB,0BAA0B,CACzC,cAAc,EAAE,eAAe,EAC/B,eAAe,EAAE,eAAe,EAChC,kBAAkB,CAAC,EAAE,MAAM,GACzB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAmBvC;AAED,kFAAkF;AAClF,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC,CASzB","sourcesContent":["import { lstatSync, realpathSync } from \"node:fs\";\nimport { basename, dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { getSessionsDir } from \"../config.ts\";\nimport { SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\nfunction canonicalDirectory(directory: string, allowMissing = false): string | undefined {\n\ttry {\n\t\treturn realpathSync(directory);\n\t} catch {\n\t\tif (!allowMissing) return undefined;\n\t\ttry {\n\t\t\t// A dangling link exists and must not be treated as a missing directory.\n\t\t\tlstatSync(directory);\n\t\t\treturn undefined;\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof Error) || !(\"code\" in error) || error.code !== \"ENOENT\") return undefined;\n\t\t}\n\t\ttry {\n\t\t\t// The standard sessions root may not exist when all storage is custom.\n\t\t\treturn join(realpathSync(dirname(directory)), basename(directory));\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n}\n\nfunction containsDirectory(root: string, directory: string): boolean {\n\tif (process.platform === \"win32\") {\n\t\troot = root.toLowerCase();\n\t\tdirectory = directory.toLowerCase();\n\t}\n\tconst path = relative(root, directory);\n\treturn path === \"\" || (!isAbsolute(path) && path !== \"..\" && !path.startsWith(`..${sep}`));\n}\n\n/** Global maintenance keeps its own policy; approved project policy applies only to its configured tree. */\nexport function getSessionRetentionTargets(\n\tglobalSettings: SettingsManager,\n\truntimeSettings: SettingsManager,\n\texplicitSessionDir?: string,\n): { directory: string; days: number }[] {\n\tconst globalDirectory = canonicalDirectory(getSessionsDir(), true);\n\tif (!globalDirectory) return [];\n\tconst globalDays = globalSettings.getSessionRetentionDays();\n\tconst targets = [{ directory: globalDirectory, days: globalDays }];\n\tconst configuredDirectory = explicitSessionDir ?? runtimeSettings.getSessionDir();\n\tconst directory = configuredDirectory ? canonicalDirectory(configuredDirectory) : undefined;\n\tif (directory && relative(globalDirectory, directory) !== \"\") {\n\t\tconst projectDirectory = runtimeSettings.getProjectSettings().sessionDir;\n\t\tconst overlapsGlobal =\n\t\t\tcontainsDirectory(globalDirectory, directory) || containsDirectory(directory, globalDirectory);\n\t\tconst usesProjectDirectory =\n\t\t\truntimeSettings.isProjectTrusted() &&\n\t\t\tprojectDirectory !== undefined &&\n\t\t\t!overlapsGlobal &&\n\t\t\tdirectory === canonicalDirectory(projectDirectory);\n\t\ttargets.push({ directory, days: usesProjectDirectory ? runtimeSettings.getSessionRetentionDays() : globalDays });\n\t}\n\treturn targets.filter(({ days }) => days > 0);\n}\n\n/** Replace the provisional manager only after a project directory is approved. */\nexport async function selectApprovedStartupSession(\n\tmanager: SessionManager,\n\tdirectory: string | undefined,\n\tselect?: () => Promise<SessionManager>,\n): Promise<SessionManager> {\n\tconst cwd = manager.getCwd();\n\tconst sessionFile = manager.getSessionFile();\n\tconst id = manager.getSessionId();\n\tmanager.dispose();\n\tif (select) return select();\n\treturn sessionFile\n\t\t? SessionManager.open(sessionFile, directory, cwd)\n\t\t: SessionManager.create(cwd, directory, { id });\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { lstatSync, realpathSync } from "node:fs";
|
|
2
|
+
import { basename, dirname, isAbsolute, join, relative, sep } from "node:path";
|
|
3
|
+
import { getSessionsDir } from "../config.js";
|
|
4
|
+
import { SessionManager } from "./session-manager.js";
|
|
5
|
+
function canonicalDirectory(directory, allowMissing = false) {
|
|
6
|
+
try {
|
|
7
|
+
return realpathSync(directory);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
if (!allowMissing)
|
|
11
|
+
return undefined;
|
|
12
|
+
try {
|
|
13
|
+
// A dangling link exists and must not be treated as a missing directory.
|
|
14
|
+
lstatSync(directory);
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (!(error instanceof Error) || !("code" in error) || error.code !== "ENOENT")
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
// The standard sessions root may not exist when all storage is custom.
|
|
23
|
+
return join(realpathSync(dirname(directory)), basename(directory));
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function containsDirectory(root, directory) {
|
|
31
|
+
if (process.platform === "win32") {
|
|
32
|
+
root = root.toLowerCase();
|
|
33
|
+
directory = directory.toLowerCase();
|
|
34
|
+
}
|
|
35
|
+
const path = relative(root, directory);
|
|
36
|
+
return path === "" || (!isAbsolute(path) && path !== ".." && !path.startsWith(`..${sep}`));
|
|
37
|
+
}
|
|
38
|
+
/** Global maintenance keeps its own policy; approved project policy applies only to its configured tree. */
|
|
39
|
+
export function getSessionRetentionTargets(globalSettings, runtimeSettings, explicitSessionDir) {
|
|
40
|
+
const globalDirectory = canonicalDirectory(getSessionsDir(), true);
|
|
41
|
+
if (!globalDirectory)
|
|
42
|
+
return [];
|
|
43
|
+
const globalDays = globalSettings.getSessionRetentionDays();
|
|
44
|
+
const targets = [{ directory: globalDirectory, days: globalDays }];
|
|
45
|
+
const configuredDirectory = explicitSessionDir ?? runtimeSettings.getSessionDir();
|
|
46
|
+
const directory = configuredDirectory ? canonicalDirectory(configuredDirectory) : undefined;
|
|
47
|
+
if (directory && relative(globalDirectory, directory) !== "") {
|
|
48
|
+
const projectDirectory = runtimeSettings.getProjectSettings().sessionDir;
|
|
49
|
+
const overlapsGlobal = containsDirectory(globalDirectory, directory) || containsDirectory(directory, globalDirectory);
|
|
50
|
+
const usesProjectDirectory = runtimeSettings.isProjectTrusted() &&
|
|
51
|
+
projectDirectory !== undefined &&
|
|
52
|
+
!overlapsGlobal &&
|
|
53
|
+
directory === canonicalDirectory(projectDirectory);
|
|
54
|
+
targets.push({ directory, days: usesProjectDirectory ? runtimeSettings.getSessionRetentionDays() : globalDays });
|
|
55
|
+
}
|
|
56
|
+
return targets.filter(({ days }) => days > 0);
|
|
57
|
+
}
|
|
58
|
+
/** Replace the provisional manager only after a project directory is approved. */
|
|
59
|
+
export async function selectApprovedStartupSession(manager, directory, select) {
|
|
60
|
+
const cwd = manager.getCwd();
|
|
61
|
+
const sessionFile = manager.getSessionFile();
|
|
62
|
+
const id = manager.getSessionId();
|
|
63
|
+
manager.dispose();
|
|
64
|
+
if (select)
|
|
65
|
+
return select();
|
|
66
|
+
return sessionFile
|
|
67
|
+
? SessionManager.open(sessionFile, directory, cwd)
|
|
68
|
+
: SessionManager.create(cwd, directory, { id });
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=session-startup-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-startup-settings.js","sourceRoot":"","sources":["../../src/core/session-startup-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { lstatSync, realpathSync } from \"node:fs\";\nimport { basename, dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { getSessionsDir } from \"../config.ts\";\nimport { SessionManager } from \"./session-manager.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\nfunction canonicalDirectory(directory: string, allowMissing = false): string | undefined {\n\ttry {\n\t\treturn realpathSync(directory);\n\t} catch {\n\t\tif (!allowMissing) return undefined;\n\t\ttry {\n\t\t\t// A dangling link exists and must not be treated as a missing directory.\n\t\t\tlstatSync(directory);\n\t\t\treturn undefined;\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof Error) || !(\"code\" in error) || error.code !== \"ENOENT\") return undefined;\n\t\t}\n\t\ttry {\n\t\t\t// The standard sessions root may not exist when all storage is custom.\n\t\t\treturn join(realpathSync(dirname(directory)), basename(directory));\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n}\n\nfunction containsDirectory(root: string, directory: string): boolean {\n\tif (process.platform === \"win32\") {\n\t\troot = root.toLowerCase();\n\t\tdirectory = directory.toLowerCase();\n\t}\n\tconst path = relative(root, directory);\n\treturn path === \"\" || (!isAbsolute(path) && path !== \"..\" && !path.startsWith(`..${sep}`));\n}\n\n/** Global maintenance keeps its own policy; approved project policy applies only to its configured tree. */\nexport function getSessionRetentionTargets(\n\tglobalSettings: SettingsManager,\n\truntimeSettings: SettingsManager,\n\texplicitSessionDir?: string,\n): { directory: string; days: number }[] {\n\tconst globalDirectory = canonicalDirectory(getSessionsDir(), true);\n\tif (!globalDirectory) return [];\n\tconst globalDays = globalSettings.getSessionRetentionDays();\n\tconst targets = [{ directory: globalDirectory, days: globalDays }];\n\tconst configuredDirectory = explicitSessionDir ?? runtimeSettings.getSessionDir();\n\tconst directory = configuredDirectory ? canonicalDirectory(configuredDirectory) : undefined;\n\tif (directory && relative(globalDirectory, directory) !== \"\") {\n\t\tconst projectDirectory = runtimeSettings.getProjectSettings().sessionDir;\n\t\tconst overlapsGlobal =\n\t\t\tcontainsDirectory(globalDirectory, directory) || containsDirectory(directory, globalDirectory);\n\t\tconst usesProjectDirectory =\n\t\t\truntimeSettings.isProjectTrusted() &&\n\t\t\tprojectDirectory !== undefined &&\n\t\t\t!overlapsGlobal &&\n\t\t\tdirectory === canonicalDirectory(projectDirectory);\n\t\ttargets.push({ directory, days: usesProjectDirectory ? runtimeSettings.getSessionRetentionDays() : globalDays });\n\t}\n\treturn targets.filter(({ days }) => days > 0);\n}\n\n/** Replace the provisional manager only after a project directory is approved. */\nexport async function selectApprovedStartupSession(\n\tmanager: SessionManager,\n\tdirectory: string | undefined,\n\tselect?: () => Promise<SessionManager>,\n): Promise<SessionManager> {\n\tconst cwd = manager.getCwd();\n\tconst sessionFile = manager.getSessionFile();\n\tconst id = manager.getSessionId();\n\tmanager.dispose();\n\tif (select) return select();\n\treturn sessionFile\n\t\t? SessionManager.open(sessionFile, directory, cwd)\n\t\t: SessionManager.create(cwd, directory, { id });\n}\n"]}
|
|
@@ -130,6 +130,8 @@ export interface Settings {
|
|
|
130
130
|
modelTiers?: ModelTiersSettings;
|
|
131
131
|
modelInstructions?: ModelInstructionsSettings;
|
|
132
132
|
sessionRetentionDays?: number;
|
|
133
|
+
computerUse?: boolean;
|
|
134
|
+
computerForeground?: boolean;
|
|
133
135
|
browserEnabled?: boolean;
|
|
134
136
|
browserAllowPrivateNetwork?: boolean;
|
|
135
137
|
memoryEnabled?: boolean;
|
|
@@ -302,6 +304,10 @@ export declare class SettingsManager {
|
|
|
302
304
|
getSessionRetentionDays(): number;
|
|
303
305
|
setSessionRetentionDays(days: number): void;
|
|
304
306
|
getMemoryCharCap(): number;
|
|
307
|
+
getComputerUse(): boolean;
|
|
308
|
+
setComputerUse(enabled: boolean): void;
|
|
309
|
+
getComputerForeground(): boolean;
|
|
310
|
+
setComputerForeground(enabled: boolean): void;
|
|
305
311
|
getBrowserEnabled(): boolean;
|
|
306
312
|
setBrowserEnabled(enabled: boolean): void;
|
|
307
313
|
getMemoryEnabled(): boolean;
|