@code-yeongyu/senpi 2026.9.15 → 2026.9.16-3
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 +89 -0
- package/README.md +1 -1
- package/dist/cli/help-extension-flags.d.ts +22 -0
- package/dist/cli/help-extension-flags.d.ts.map +1 -0
- package/dist/cli/help-extension-flags.js +30 -0
- package/dist/cli/help-extension-flags.js.map +1 -0
- package/dist/cli/help-fast-path.d.ts +19 -0
- package/dist/cli/help-fast-path.d.ts.map +1 -0
- package/dist/cli/help-fast-path.js +64 -0
- package/dist/cli/help-fast-path.js.map +1 -0
- package/dist/cli/help-flags-cache.d.ts +23 -0
- package/dist/cli/help-flags-cache.d.ts.map +1 -0
- package/dist/cli/help-flags-cache.js +118 -0
- package/dist/cli/help-flags-cache.js.map +1 -0
- package/dist/cli/startup-loading-indicator.d.ts.map +1 -1
- package/dist/cli/startup-loading-indicator.js +10 -4
- package/dist/cli/startup-loading-indicator.js.map +1 -1
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session.d.ts +17 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +62 -8
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +4 -2
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/stream-watchdog.d.ts +56 -2
- package/dist/core/compaction/stream-watchdog.d.ts.map +1 -1
- package/dist/core/compaction/stream-watchdog.js +93 -15
- package/dist/core/compaction/stream-watchdog.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts +6 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +17 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts +4 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js +31 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts +2 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js +16 -0
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +19 -8
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +1 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js +2 -1
- package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +13 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +66 -2
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +16 -10
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative-summary.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative-summary.js +4 -2
- package/dist/core/extensions/builtin/compaction/speculative-summary.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +8 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +31 -7
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/transient-failure.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/transient-failure.js +6 -3
- package/dist/core/extensions/builtin/compaction/transient-failure.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/index.js +25 -8
- package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts +4 -5
- package/dist/core/extensions/builtin/config-reload/watch-engine.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-engine.js +14 -18
- package/dist/core/extensions/builtin/config-reload/watch-engine.js.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-event-source.d.ts.map +1 -1
- package/dist/core/extensions/builtin/config-reload/watch-event-source.js +32 -9
- package/dist/core/extensions/builtin/config-reload/watch-event-source.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/catalog-refresh.d.ts +23 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/catalog-refresh.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/catalog-refresh.js +48 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/catalog-refresh.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/environment.d.ts +13 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/environment.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/environment.js +24 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/environment.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js +7 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.d.ts +2 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.js +11 -9
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/models-probe.d.ts +18 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models-probe.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models-probe.js +61 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models-probe.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts +4 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.js +1 -44
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.d.ts +22 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.js +2 -13
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-file-digest.d.ts +3 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-digest.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-digest.js +25 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-digest.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-watch.d.ts +9 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-watch.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-watch.js +33 -0
- package/dist/core/extensions/builtin/terminal/monitor-file-watch.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-line-buffer.d.ts +6 -0
- package/dist/core/extensions/builtin/terminal/monitor-line-buffer.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-line-buffer.js +22 -0
- package/dist/core/extensions/builtin/terminal/monitor-line-buffer.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.js +14 -35
- package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
- package/dist/core/extensions/builtin/ttsr/detectors/collapse-near-duplicates.d.ts +38 -0
- package/dist/core/extensions/builtin/ttsr/detectors/collapse-near-duplicates.d.ts.map +1 -0
- package/dist/core/extensions/builtin/ttsr/detectors/collapse-near-duplicates.js +155 -0
- package/dist/core/extensions/builtin/ttsr/detectors/collapse-near-duplicates.js.map +1 -0
- package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts +2 -0
- package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts.map +1 -1
- package/dist/core/extensions/builtin/ttsr/detectors/collapse.js +4 -1
- package/dist/core/extensions/builtin/ttsr/detectors/collapse.js.map +1 -1
- package/dist/core/extensions/kernel-tools-context.d.ts +13 -0
- package/dist/core/extensions/kernel-tools-context.d.ts.map +1 -0
- package/dist/core/extensions/kernel-tools-context.js +3 -0
- package/dist/core/extensions/kernel-tools-context.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +19 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +103 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +21 -0
- 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 +5 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +9 -17
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/session-manager.d.ts +30 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +92 -5
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-resident-store.d.ts +33 -7
- package/dist/core/session-resident-store.d.ts.map +1 -1
- package/dist/core/session-resident-store.js +163 -14
- package/dist/core/session-resident-store.js.map +1 -1
- package/dist/core/session-write-reservation.d.ts +6 -0
- package/dist/core/session-write-reservation.d.ts.map +1 -1
- package/dist/core/session-write-reservation.js +19 -0
- package/dist/core/session-write-reservation.js.map +1 -1
- package/dist/core/settings-manager.d.ts +23 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +41 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +4 -3
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/read.d.ts +3 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +16 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +31 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-render-descriptors.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-render-descriptors.js +12 -5
- package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +2 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +5 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +7 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +35 -16
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/session-tips.js +1 -1
- package/dist/modes/interactive/tips/catalog/session-tips.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +5 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/host-watchdog.d.ts.map +1 -1
- package/dist/modes/rpc/host-watchdog.js +5 -24
- package/dist/modes/rpc/host-watchdog.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +3 -8
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +3 -0
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-worker-client.d.ts +3 -0
- package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
- package/dist/modes/rpc/session-worker-client.js +17 -6
- package/dist/modes/rpc/session-worker-client.js.map +1 -1
- package/dist/modes/rpc/shutdown.d.ts +3 -0
- package/dist/modes/rpc/shutdown.d.ts.map +1 -0
- package/dist/modes/rpc/shutdown.js +17 -0
- package/dist/modes/rpc/shutdown.js.map +1 -0
- package/dist/senpi +9 -0
- package/docs/extensions.md +5 -2
- package/docs/keybindings.md +1 -0
- package/docs/session-format.md +1 -1
- package/docs/sessions.md +3 -3
- package/docs/settings.md +12 -0
- package/docs/usage.md +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +62 -0
- package/node_modules/@code-yeongyu/senpi-codemode/README.md +24 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/http-server.ts +7 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/kernel-tools-protocol.ts +85 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/protocol.ts +6 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/bridges/agent-bridge.ts +30 -11
- package/node_modules/@code-yeongyu/senpi-codemode/src/extension/session-manager.ts +11 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +10 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/jl/prelude.jl +46 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/jl/runner.jl +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/context-manager.ts +58 -10
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-contract.ts +12 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-context.d.ts +13 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-context.js +7 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-define.d.ts +10 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-define.js +12 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-errors.js +22 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-errors.ts +26 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-host.ts +134 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-naming.js +28 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-parse.d.ts +5 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-parse.js +255 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-pump.js +105 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-registry.d.ts +27 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-registry.js +127 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-schema.js +69 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-tools-types.ts +42 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/prelude.ts +2 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-core.js +26 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-runtime.js +20 -8
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-slot.ts +6 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-startup.ts +9 -7
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/workpool.js +37 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/kernel-tools-unavailable.ts +5 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel.ts +13 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/prelude.py +57 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/rb/prelude.rb +13 -2
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/rb/workpool.rb +38 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-kernel.ts +13 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-queue.ts +9 -1
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt-template.ts +4 -2
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-handler.ts +31 -3
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/detached-cell-manager.ts +36 -71
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/image-resize.ts +52 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/image.ts +37 -72
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/managed-cell.ts +78 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +30 -5
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/run-eval-cell.ts +52 -30
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/terminal-snapshot-store.ts +35 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/tool-result-marshal.ts +23 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +2 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.js +51 -12
- package/node_modules/@earendil-works/pi-agent-core/dist/empty-assistant-recovery.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts +3 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js +18 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/brace-scanner.d.ts +4 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/brace-scanner.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/brace-scanner.js +268 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/brace-scanner.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/header-protection.d.ts +18 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/header-protection.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/header-protection.js +69 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/header-protection.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/index.d.ts +27 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/index.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/index.js +118 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/index.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-context.d.ts +21 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-context.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-context.js +24 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-context.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-spans.d.ts +12 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-spans.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-spans.js +92 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/lexical-spans.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/types.d.ts +47 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/types.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/types.js +8 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/read-folders/types.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/segmented-read-view.d.ts +52 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/segmented-read-view.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/segmented-read-view.js +155 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/segmented-read-view.js.map +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +2 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/index.js +2 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/alibaba-token-plan.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/empty-response-errors.d.ts +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/empty-response-errors.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/empty-response-errors.js +15 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/empty-response-errors.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts +23 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +74 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
|
@@ -1,23 +1,49 @@
|
|
|
1
|
+
export declare const RESIDENT_STRING_PREFIX = "\0senpi-resident-string:v1:";
|
|
1
2
|
export interface ResidentStoreStats {
|
|
2
3
|
blobCount: number;
|
|
3
4
|
blobBytes: number;
|
|
5
|
+
evictedCount?: number;
|
|
6
|
+
evictedBytes?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ResidentStringStoreOptions {
|
|
9
|
+
maxBytes?: number;
|
|
10
|
+
blobsDir?: () => string | undefined;
|
|
4
11
|
}
|
|
5
12
|
export declare class ResidentStringStore {
|
|
6
13
|
private strings;
|
|
7
14
|
private bytes;
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
-
* Externalized strings are a cache of the JSONL, not a second source of truth.
|
|
11
|
-
* Keep at most 64 MiB by default; evicted values are materialized from disk by
|
|
12
|
-
* SessionManager when a persisted entry is actually read.
|
|
13
|
-
*/
|
|
15
|
+
private evictedCount;
|
|
16
|
+
private evictedBytes;
|
|
14
17
|
private readonly maxBytes;
|
|
15
|
-
|
|
18
|
+
private blobsDir?;
|
|
19
|
+
constructor(options?: ResidentStringStoreOptions);
|
|
20
|
+
configure(options: {
|
|
21
|
+
blobsDir?: () => string | undefined;
|
|
22
|
+
}): void;
|
|
16
23
|
clear(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Unlike clear(), the blob backing itself survives: consumers of entries that
|
|
26
|
+
* were spilled keep hydrating from it instead of falling back to a full JSONL
|
|
27
|
+
* reload. Used where the store is emptied in place (post-compaction mirror
|
|
28
|
+
* trim) rather than across a session switch.
|
|
29
|
+
*/
|
|
30
|
+
spillResident(): void;
|
|
17
31
|
stats(): ResidentStoreStats;
|
|
18
32
|
externalize<T>(value: T): T;
|
|
19
33
|
materialize<T>(value: T, onMissing?: (id: string) => string | undefined): T;
|
|
34
|
+
resolvedBlobsDir(): string | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Replace large strings reachable from `value` with resident tokens, mutating
|
|
37
|
+
* the object graph in place so consumer-held references stay valid.
|
|
38
|
+
*/
|
|
39
|
+
externalizeInPlace(value: unknown): void;
|
|
40
|
+
/** Hydrate resident tokens reachable from `value` in place (inverse of externalizeInPlace). */
|
|
41
|
+
materializeInPlace(value: unknown): void;
|
|
42
|
+
private _mutateStringsInPlace;
|
|
20
43
|
private externalizeString;
|
|
21
44
|
private materializeString;
|
|
45
|
+
private _enforceBudget;
|
|
46
|
+
private _writeBlob;
|
|
47
|
+
private _readBlob;
|
|
22
48
|
}
|
|
23
49
|
//# sourceMappingURL=session-resident-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resident-store.d.ts","sourceRoot":"","sources":["../../src/core/session-resident-store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session-resident-store.d.ts","sourceRoot":"","sources":["../../src/core/session-resident-store.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,sBAAsB,gCAAoC,CAAC;AAGxE,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IAI1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,qBAAa,mBAAmB;IAI/B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,CAA2B;IAE5C,YAAY,OAAO,GAAE,0BAA+B,EAGnD;IAED,SAAS,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,IAAI,CAEhE;IAED,KAAK,IAAI,IAAI,CAWZ;IAED;;;;;OAKG;IACH,aAAa,IAAI,IAAI,CAWpB;IAED,KAAK,IAAI,kBAAkB,CAO1B;IAED,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE1B;IAED,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,CAAC,CAE1E;IAED,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvC;IAED,+FAA+F;IAC/F,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvC;IAED,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,SAAS;CAmBjB"}
|
|
@@ -1,24 +1,63 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
1
4
|
import { Buffer } from "buffer";
|
|
2
5
|
const RESIDENT_STRING_MIN_BYTES = 32 * 1024;
|
|
3
6
|
const DEFAULT_RESIDENT_STRING_BUDGET_BYTES = 64 * 1024 * 1024;
|
|
4
|
-
const RESIDENT_STRING_PREFIX = "\u0000senpi-resident-string:v1:";
|
|
7
|
+
export const RESIDENT_STRING_PREFIX = "\u0000senpi-resident-string:v1:";
|
|
5
8
|
const OMIT_JSON_VALUE = Symbol("omit-json-value");
|
|
6
9
|
export class ResidentStringStore {
|
|
7
|
-
constructor(
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
// Keyed by content hash: the id IS the reverse index, so the same text always
|
|
12
|
+
// resolves to the same token and the same blob file, across store instances
|
|
13
|
+
// sharing a backing directory and across eviction/spill cycles.
|
|
8
14
|
this.strings = new Map();
|
|
9
15
|
this.bytes = 0;
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
16
|
+
this.evictedCount = 0;
|
|
17
|
+
this.evictedBytes = 0;
|
|
18
|
+
this.maxBytes = options.maxBytes ?? DEFAULT_RESIDENT_STRING_BUDGET_BYTES;
|
|
19
|
+
this.blobsDir = options.blobsDir;
|
|
20
|
+
}
|
|
21
|
+
configure(options) {
|
|
22
|
+
this.blobsDir = options.blobsDir;
|
|
12
23
|
}
|
|
13
24
|
clear() {
|
|
14
25
|
this.strings.clear();
|
|
15
26
|
this.bytes = 0;
|
|
16
|
-
this.
|
|
27
|
+
this.evictedCount = 0;
|
|
28
|
+
this.evictedBytes = 0;
|
|
29
|
+
const dir = this.blobsDir?.();
|
|
30
|
+
if (dir) {
|
|
31
|
+
try {
|
|
32
|
+
rmSync(dir, { force: true, recursive: true });
|
|
33
|
+
}
|
|
34
|
+
catch { }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Unlike clear(), the blob backing itself survives: consumers of entries that
|
|
39
|
+
* were spilled keep hydrating from it instead of falling back to a full JSONL
|
|
40
|
+
* reload. Used where the store is emptied in place (post-compaction mirror
|
|
41
|
+
* trim) rather than across a session switch.
|
|
42
|
+
*/
|
|
43
|
+
spillResident() {
|
|
44
|
+
const dir = this.blobsDir?.();
|
|
45
|
+
if (!dir) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const [id, text] of this.strings) {
|
|
49
|
+
if (this._writeBlob(id, text)) {
|
|
50
|
+
this.strings.delete(id);
|
|
51
|
+
this.bytes -= Buffer.byteLength(text, "utf8");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
17
54
|
}
|
|
18
55
|
stats() {
|
|
19
56
|
return {
|
|
20
57
|
blobCount: this.strings.size,
|
|
21
58
|
blobBytes: this.bytes,
|
|
59
|
+
evictedCount: this.evictedCount,
|
|
60
|
+
evictedBytes: this.evictedBytes,
|
|
22
61
|
};
|
|
23
62
|
}
|
|
24
63
|
externalize(value) {
|
|
@@ -27,26 +66,134 @@ export class ResidentStringStore {
|
|
|
27
66
|
materialize(value, onMissing) {
|
|
28
67
|
return transformJson(value, (text) => this.materializeString(text, onMissing));
|
|
29
68
|
}
|
|
69
|
+
resolvedBlobsDir() {
|
|
70
|
+
return this.blobsDir?.();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Replace large strings reachable from `value` with resident tokens, mutating
|
|
74
|
+
* the object graph in place so consumer-held references stay valid.
|
|
75
|
+
*/
|
|
76
|
+
externalizeInPlace(value) {
|
|
77
|
+
this._mutateStringsInPlace(value, new Set(), (text) => this.externalizeString(text));
|
|
78
|
+
}
|
|
79
|
+
/** Hydrate resident tokens reachable from `value` in place (inverse of externalizeInPlace). */
|
|
80
|
+
materializeInPlace(value) {
|
|
81
|
+
this._mutateStringsInPlace(value, new Set(), (text) => this.materializeString(text));
|
|
82
|
+
}
|
|
83
|
+
_mutateStringsInPlace(value, seen, mutate) {
|
|
84
|
+
if (typeof value !== "object" || value === null || seen.has(value)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
seen.add(value);
|
|
88
|
+
const record = value;
|
|
89
|
+
for (const key of Object.keys(record)) {
|
|
90
|
+
const current = record[key];
|
|
91
|
+
if (typeof current === "string") {
|
|
92
|
+
record[key] = mutate(current);
|
|
93
|
+
}
|
|
94
|
+
else if (typeof current === "object" && current !== null) {
|
|
95
|
+
this._mutateStringsInPlace(current, seen, mutate);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
30
99
|
externalizeString(text) {
|
|
31
100
|
if (text.length < RESIDENT_STRING_MIN_BYTES || text.startsWith(RESIDENT_STRING_PREFIX)) {
|
|
32
101
|
return text;
|
|
33
102
|
}
|
|
34
|
-
const id =
|
|
103
|
+
const id = createHash("sha256").update(text, "utf8").digest("hex");
|
|
104
|
+
const token = `${RESIDENT_STRING_PREFIX}${id}`;
|
|
105
|
+
if (this.strings.has(id)) {
|
|
106
|
+
// Map insertion order is the eviction order; a re-externalize refreshes recency.
|
|
107
|
+
this.strings.delete(id);
|
|
108
|
+
this.strings.set(id, text);
|
|
109
|
+
return token;
|
|
110
|
+
}
|
|
35
111
|
this.strings.set(id, text);
|
|
36
112
|
this.bytes += Buffer.byteLength(text, "utf8");
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.strings.delete(oldest[0]);
|
|
40
|
-
this.bytes -= Buffer.byteLength(oldest[1], "utf8");
|
|
41
|
-
}
|
|
42
|
-
return `${RESIDENT_STRING_PREFIX}${id}`;
|
|
113
|
+
this._enforceBudget();
|
|
114
|
+
return token;
|
|
43
115
|
}
|
|
44
116
|
materializeString(text, onMissing) {
|
|
45
117
|
if (!text.startsWith(RESIDENT_STRING_PREFIX)) {
|
|
46
118
|
return text;
|
|
47
119
|
}
|
|
48
120
|
const id = text.slice(RESIDENT_STRING_PREFIX.length);
|
|
49
|
-
|
|
121
|
+
const resident = this.strings.get(id);
|
|
122
|
+
if (resident !== undefined) {
|
|
123
|
+
// Map insertion order is the eviction order; a read refreshes recency.
|
|
124
|
+
this.strings.delete(id);
|
|
125
|
+
this.strings.set(id, resident);
|
|
126
|
+
return resident;
|
|
127
|
+
}
|
|
128
|
+
// Hydration is transient on purpose: the string must not re-enter the
|
|
129
|
+
// resident cache, or one bulk read would refill the entire budget. The
|
|
130
|
+
// caller's JSONL recovery remains the authority for a missing blob.
|
|
131
|
+
const hydrated = this._readBlob(id);
|
|
132
|
+
if (hydrated !== undefined) {
|
|
133
|
+
return hydrated;
|
|
134
|
+
}
|
|
135
|
+
return onMissing?.(id) ?? text;
|
|
136
|
+
}
|
|
137
|
+
_enforceBudget() {
|
|
138
|
+
while (this.bytes > this.maxBytes && this.strings.size > 0) {
|
|
139
|
+
const [oldestId, oldest] = this.strings.entries().next().value;
|
|
140
|
+
if (!this._writeBlob(oldestId, oldest)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
this.strings.delete(oldestId);
|
|
144
|
+
this.bytes -= Buffer.byteLength(oldest, "utf8");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
_writeBlob(id, text) {
|
|
148
|
+
const dir = this.blobsDir?.();
|
|
149
|
+
if (!dir) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const final = join(dir, `${id}.blob`);
|
|
153
|
+
const temp = `${final}.tmp`;
|
|
154
|
+
try {
|
|
155
|
+
mkdirSync(dir, { recursive: true });
|
|
156
|
+
// The id is the content hash, so an existing blob already holds these exact
|
|
157
|
+
// bytes: skip the rewrite but still report the eviction, because the string
|
|
158
|
+
// is leaving memory either way.
|
|
159
|
+
if (!existsSync(final)) {
|
|
160
|
+
// Blobs are JSON envelopes so a truncated or mangled file fails the read
|
|
161
|
+
// below and falls back to JSONL recovery instead of hydrating garbage.
|
|
162
|
+
writeFileSync(temp, JSON.stringify({ v: 1, text }), "utf8");
|
|
163
|
+
renameSync(temp, final);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
try {
|
|
168
|
+
rmSync(temp, { force: true });
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
this.evictedCount++;
|
|
174
|
+
this.evictedBytes += Buffer.byteLength(text, "utf8");
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
_readBlob(id) {
|
|
178
|
+
const dir = this.blobsDir?.();
|
|
179
|
+
if (!dir) {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
const file = join(dir, `${id}.blob`);
|
|
183
|
+
try {
|
|
184
|
+
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
185
|
+
if (typeof parsed.text === "string") {
|
|
186
|
+
return parsed.text;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch { }
|
|
190
|
+
// The blob is missing or unusable. Drop whatever is there so the next eviction
|
|
191
|
+
// of this content writes a readable blob instead of skipping over a broken one.
|
|
192
|
+
try {
|
|
193
|
+
rmSync(file, { force: true });
|
|
194
|
+
}
|
|
195
|
+
catch { }
|
|
196
|
+
return undefined;
|
|
50
197
|
}
|
|
51
198
|
}
|
|
52
199
|
function transformJson(value, transformString) {
|
|
@@ -71,6 +218,8 @@ function transformJsonValue(value, transformString, key, seen) {
|
|
|
71
218
|
return value;
|
|
72
219
|
}
|
|
73
220
|
if (typeof value === "bigint") {
|
|
221
|
+
// JSON.stringify semantics: a BigInt is not serializable, and the store's
|
|
222
|
+
// contract is to fail exactly like it does.
|
|
74
223
|
throw new TypeError("Do not know how to serialize a BigInt");
|
|
75
224
|
}
|
|
76
225
|
if (typeof value === "undefined" || typeof value === "function" || typeof value === "symbol") {
|
|
@@ -97,7 +246,7 @@ function transformJsonValue(value, transformString, key, seen) {
|
|
|
97
246
|
}
|
|
98
247
|
const transformed = {};
|
|
99
248
|
for (const [key, item] of Object.entries(value)) {
|
|
100
|
-
const transformedItem = transformJsonValue(item, transformString, key, seen);
|
|
249
|
+
const transformedItem = transformJsonValue(item, transformString, String(key), seen);
|
|
101
250
|
if (transformedItem !== OMIT_JSON_VALUE) {
|
|
102
251
|
Object.defineProperty(transformed, key, {
|
|
103
252
|
configurable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resident-store.js","sourceRoot":"","sources":["../../src/core/session-resident-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from \"buffer\";\n\nconst RESIDENT_STRING_MIN_BYTES = 32 * 1024;\nconst DEFAULT_RESIDENT_STRING_BUDGET_BYTES = 64 * 1024 * 1024;\nconst RESIDENT_STRING_PREFIX = \"\\u0000senpi-resident-string:v1:\";\nconst OMIT_JSON_VALUE = Symbol(\"omit-json-value\");\n\nexport interface ResidentStoreStats {\n\tblobCount: number;\n\tblobBytes: number;\n}\n\nexport class ResidentStringStore {\n\tprivate strings = new Map<string, string>();\n\tprivate bytes = 0;\n\tprivate nextId = 0;\n\n\t/**\n\t * Externalized strings are a cache of the JSONL, not a second source of truth.\n\t * Keep at most 64 MiB by default; evicted values are materialized from disk by\n\t * SessionManager when a persisted entry is actually read.\n\t */\n\tprivate readonly maxBytes: number;\n\n\tconstructor(maxBytes = DEFAULT_RESIDENT_STRING_BUDGET_BYTES) {\n\t\tthis.maxBytes = maxBytes;\n\t}\n\n\tclear(): void {\n\t\tthis.strings.clear();\n\t\tthis.bytes = 0;\n\t\tthis.nextId = 0;\n\t}\n\n\tstats(): ResidentStoreStats {\n\t\treturn {\n\t\t\tblobCount: this.strings.size,\n\t\t\tblobBytes: this.bytes,\n\t\t};\n\t}\n\n\texternalize<T>(value: T): T {\n\t\treturn transformJson(value, (text) => this.externalizeString(text));\n\t}\n\n\tmaterialize<T>(value: T, onMissing?: (id: string) => string | undefined): T {\n\t\treturn transformJson(value, (text) => this.materializeString(text, onMissing));\n\t}\n\n\tprivate externalizeString(text: string): string {\n\t\tif (text.length < RESIDENT_STRING_MIN_BYTES || text.startsWith(RESIDENT_STRING_PREFIX)) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst id = `${this.nextId++}`;\n\t\tthis.strings.set(id, text);\n\t\tthis.bytes += Buffer.byteLength(text, \"utf8\");\n\t\twhile (this.bytes > this.maxBytes && this.strings.size > 0) {\n\t\t\tconst oldest = this.strings.entries().next().value as [string, string];\n\t\t\tthis.strings.delete(oldest[0]);\n\t\t\tthis.bytes -= Buffer.byteLength(oldest[1], \"utf8\");\n\t\t}\n\t\treturn `${RESIDENT_STRING_PREFIX}${id}`;\n\t}\n\n\tprivate materializeString(text: string, onMissing?: (id: string) => string | undefined): string {\n\t\tif (!text.startsWith(RESIDENT_STRING_PREFIX)) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst id = text.slice(RESIDENT_STRING_PREFIX.length);\n\t\treturn this.strings.get(id) ?? onMissing?.(id) ?? text;\n\t}\n}\n\nfunction transformJson<T>(value: T, transformString: (text: string) => string): T {\n\tconst transformed = transformJsonValue(value, transformString, \"\", new WeakSet());\n\tif (transformed === OMIT_JSON_VALUE) {\n\t\tconst serialized = JSON.stringify(value);\n\t\tif (serialized === undefined) {\n\t\t\tthrow new SyntaxError(\"JSON-compatible value expected\");\n\t\t}\n\t\treturn JSON.parse(serialized) as T;\n\t}\n\treturn transformed as T;\n}\n\nfunction transformJsonValue(\n\tvalue: unknown,\n\ttransformString: (text: string) => string,\n\tkey: string,\n\tseen: WeakSet<object>,\n): unknown | typeof OMIT_JSON_VALUE {\n\tif (typeof value === \"string\") {\n\t\treturn transformString(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? value : null;\n\t}\n\tif (value === null || typeof value === \"boolean\") {\n\t\treturn value;\n\t}\n\tif (typeof value === \"bigint\") {\n\t\tthrow new TypeError(\"Do not know how to serialize a BigInt\");\n\t}\n\tif (typeof value === \"undefined\" || typeof value === \"function\" || typeof value === \"symbol\") {\n\t\treturn OMIT_JSON_VALUE;\n\t}\n\n\tif (seen.has(value)) {\n\t\tthrow new TypeError(\"Converting circular structure to JSON\");\n\t}\n\tseen.add(value);\n\n\tconst jsonValue = hasJsonSerializer(value) ? value.toJSON(key) : value;\n\tif (jsonValue !== value) {\n\t\tconst transformed = transformJsonValue(jsonValue, transformString, key, seen);\n\t\tseen.delete(value);\n\t\treturn transformed;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tconst transformed = Array.from({ length: value.length }, (_item, index) => {\n\t\t\tconst item = value[index];\n\t\t\tconst transformedItem = transformJsonValue(item, transformString, String(index), seen);\n\t\t\treturn transformedItem === OMIT_JSON_VALUE ? null : transformedItem;\n\t\t});\n\t\tseen.delete(value);\n\t\treturn transformed;\n\t}\n\n\tconst transformed: Record<string, unknown> = {};\n\tfor (const [key, item] of Object.entries(value)) {\n\t\tconst transformedItem = transformJsonValue(item, transformString, key, seen);\n\t\tif (transformedItem !== OMIT_JSON_VALUE) {\n\t\t\tObject.defineProperty(transformed, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: transformedItem,\n\t\t\t\twritable: true,\n\t\t\t});\n\t\t}\n\t}\n\tseen.delete(value);\n\treturn transformed;\n}\n\nfunction hasJsonSerializer(value: object): value is { toJSON: (key: string) => unknown } {\n\treturn \"toJSON\" in value && typeof value.toJSON === \"function\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-resident-store.js","sourceRoot":"","sources":["../../src/core/session-resident-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,MAAM,oCAAoC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AACxE,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAiBlD,MAAM,OAAO,mBAAmB;IAW/B,YAAY,OAAO,GAA+B,EAAE;QAVpD,8EAA8E;QAC9E,4EAA4E;QAC5E,gEAAgE;QACxD,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpC,UAAK,GAAG,CAAC,CAAC;QACV,iBAAY,GAAG,CAAC,CAAC;QACjB,iBAAY,GAAG,CAAC,CAAC;QAKxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,oCAAoC,CAAC;QACzE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,OAAgD;QACzD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9B,IAAI,GAAG,EAAE,CAAC;YACT,IAAI,CAAC;gBACJ,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACX,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACR,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK;QACJ,OAAO;YACN,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC5B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC;IACH,CAAC;IAED,WAAW,CAAI,KAAQ;QACtB,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,WAAW,CAAI,KAAQ,EAAE,SAA8C;QACtE,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAc;QAChC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,+FAA+F;IAC/F,kBAAkB,CAAC,KAAc;QAChC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,qBAAqB,CAAC,KAAc,EAAE,IAAiB,EAAE,MAAgC;QAChG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5D,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;QACF,CAAC;IACF,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACrC,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,GAAG,sBAAsB,GAAG,EAAE,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,iFAAiF;YACjF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,IAAY,EAAE,SAA8C;QACrF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,uEAAuE;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IAChC,CAAC;IAEO,cAAc;QACrB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAyB,CAAC;YACnF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;gBACxC,OAAO;YACR,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,EAAU,EAAE,IAAY;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,KAAK,MAAM,CAAC;QAC5B,IAAI,CAAC;YACJ,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,4EAA4E;YAC5E,4EAA4E;YAC5E,gCAAgC;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,yEAAyE;gBACzE,uEAAuE;gBACvE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC5D,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,CAAC;gBACJ,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,SAAS,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAuB,CAAC;YAC5E,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC,IAAI,CAAC;YACpB,CAAC;QACF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,+EAA+E;QAC/E,gFAAgF;QAChF,IAAI,CAAC;YACJ,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,SAAS,CAAC;IAClB,CAAC;CACD;AAED,SAAS,aAAa,CAAI,KAAQ,EAAE,eAAyC;IAC5E,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;IAClF,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAM,CAAC;IACpC,CAAC;IACD,OAAO,WAAgB,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAC1B,KAAc,EACd,eAAyC,EACzC,GAAW,EACX,IAAqB;IAErB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,0EAA0E;QAC1E,4CAA4C;QAC5C,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9F,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACvF,OAAO,eAAe,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;YACzC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE;gBACvC,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,IAAI;aACd,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACvC,OAAO,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;AAChE,CAAC","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { Buffer } from \"buffer\";\n\nconst RESIDENT_STRING_MIN_BYTES = 32 * 1024;\nconst DEFAULT_RESIDENT_STRING_BUDGET_BYTES = 64 * 1024 * 1024;\nexport const RESIDENT_STRING_PREFIX = \"\\u0000senpi-resident-string:v1:\";\nconst OMIT_JSON_VALUE = Symbol(\"omit-json-value\");\n\nexport interface ResidentStoreStats {\n\tblobCount: number;\n\tblobBytes: number;\n\tevictedCount?: number;\n\tevictedBytes?: number;\n}\n\nexport interface ResidentStringStoreOptions {\n\t// Eviction only runs when a recoverable backing directory is configured;\n\t// without one, dropping a string would leave consumers holding unreadable\n\t// sentinel tokens, so strings stay resident beyond the budget instead.\n\tmaxBytes?: number;\n\tblobsDir?: () => string | undefined;\n}\n\nexport class ResidentStringStore {\n\t// Keyed by content hash: the id IS the reverse index, so the same text always\n\t// resolves to the same token and the same blob file, across store instances\n\t// sharing a backing directory and across eviction/spill cycles.\n\tprivate strings = new Map<string, string>();\n\tprivate bytes = 0;\n\tprivate evictedCount = 0;\n\tprivate evictedBytes = 0;\n\tprivate readonly maxBytes: number;\n\tprivate blobsDir?: () => string | undefined;\n\n\tconstructor(options: ResidentStringStoreOptions = {}) {\n\t\tthis.maxBytes = options.maxBytes ?? DEFAULT_RESIDENT_STRING_BUDGET_BYTES;\n\t\tthis.blobsDir = options.blobsDir;\n\t}\n\n\tconfigure(options: { blobsDir?: () => string | undefined }): void {\n\t\tthis.blobsDir = options.blobsDir;\n\t}\n\n\tclear(): void {\n\t\tthis.strings.clear();\n\t\tthis.bytes = 0;\n\t\tthis.evictedCount = 0;\n\t\tthis.evictedBytes = 0;\n\t\tconst dir = this.blobsDir?.();\n\t\tif (dir) {\n\t\t\ttry {\n\t\t\t\trmSync(dir, { force: true, recursive: true });\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\t/**\n\t * Unlike clear(), the blob backing itself survives: consumers of entries that\n\t * were spilled keep hydrating from it instead of falling back to a full JSONL\n\t * reload. Used where the store is emptied in place (post-compaction mirror\n\t * trim) rather than across a session switch.\n\t */\n\tspillResident(): void {\n\t\tconst dir = this.blobsDir?.();\n\t\tif (!dir) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const [id, text] of this.strings) {\n\t\t\tif (this._writeBlob(id, text)) {\n\t\t\t\tthis.strings.delete(id);\n\t\t\t\tthis.bytes -= Buffer.byteLength(text, \"utf8\");\n\t\t\t}\n\t\t}\n\t}\n\n\tstats(): ResidentStoreStats {\n\t\treturn {\n\t\t\tblobCount: this.strings.size,\n\t\t\tblobBytes: this.bytes,\n\t\t\tevictedCount: this.evictedCount,\n\t\t\tevictedBytes: this.evictedBytes,\n\t\t};\n\t}\n\n\texternalize<T>(value: T): T {\n\t\treturn transformJson(value, (text) => this.externalizeString(text));\n\t}\n\n\tmaterialize<T>(value: T, onMissing?: (id: string) => string | undefined): T {\n\t\treturn transformJson(value, (text) => this.materializeString(text, onMissing));\n\t}\n\n\tresolvedBlobsDir(): string | undefined {\n\t\treturn this.blobsDir?.();\n\t}\n\n\t/**\n\t * Replace large strings reachable from `value` with resident tokens, mutating\n\t * the object graph in place so consumer-held references stay valid.\n\t */\n\texternalizeInPlace(value: unknown): void {\n\t\tthis._mutateStringsInPlace(value, new Set(), (text) => this.externalizeString(text));\n\t}\n\n\t/** Hydrate resident tokens reachable from `value` in place (inverse of externalizeInPlace). */\n\tmaterializeInPlace(value: unknown): void {\n\t\tthis._mutateStringsInPlace(value, new Set(), (text) => this.materializeString(text));\n\t}\n\n\tprivate _mutateStringsInPlace(value: unknown, seen: Set<object>, mutate: (text: string) => string): void {\n\t\tif (typeof value !== \"object\" || value === null || seen.has(value)) {\n\t\t\treturn;\n\t\t}\n\t\tseen.add(value);\n\t\tconst record = value as Record<string, unknown>;\n\t\tfor (const key of Object.keys(record)) {\n\t\t\tconst current = record[key];\n\t\t\tif (typeof current === \"string\") {\n\t\t\t\trecord[key] = mutate(current);\n\t\t\t} else if (typeof current === \"object\" && current !== null) {\n\t\t\t\tthis._mutateStringsInPlace(current, seen, mutate);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate externalizeString(text: string): string {\n\t\tif (text.length < RESIDENT_STRING_MIN_BYTES || text.startsWith(RESIDENT_STRING_PREFIX)) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst id = createHash(\"sha256\").update(text, \"utf8\").digest(\"hex\");\n\t\tconst token = `${RESIDENT_STRING_PREFIX}${id}`;\n\t\tif (this.strings.has(id)) {\n\t\t\t// Map insertion order is the eviction order; a re-externalize refreshes recency.\n\t\t\tthis.strings.delete(id);\n\t\t\tthis.strings.set(id, text);\n\t\t\treturn token;\n\t\t}\n\n\t\tthis.strings.set(id, text);\n\t\tthis.bytes += Buffer.byteLength(text, \"utf8\");\n\t\tthis._enforceBudget();\n\t\treturn token;\n\t}\n\n\tprivate materializeString(text: string, onMissing?: (id: string) => string | undefined): string {\n\t\tif (!text.startsWith(RESIDENT_STRING_PREFIX)) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst id = text.slice(RESIDENT_STRING_PREFIX.length);\n\t\tconst resident = this.strings.get(id);\n\t\tif (resident !== undefined) {\n\t\t\t// Map insertion order is the eviction order; a read refreshes recency.\n\t\t\tthis.strings.delete(id);\n\t\t\tthis.strings.set(id, resident);\n\t\t\treturn resident;\n\t\t}\n\t\t// Hydration is transient on purpose: the string must not re-enter the\n\t\t// resident cache, or one bulk read would refill the entire budget. The\n\t\t// caller's JSONL recovery remains the authority for a missing blob.\n\t\tconst hydrated = this._readBlob(id);\n\t\tif (hydrated !== undefined) {\n\t\t\treturn hydrated;\n\t\t}\n\t\treturn onMissing?.(id) ?? text;\n\t}\n\n\tprivate _enforceBudget(): void {\n\t\twhile (this.bytes > this.maxBytes && this.strings.size > 0) {\n\t\t\tconst [oldestId, oldest] = this.strings.entries().next().value as [string, string];\n\t\t\tif (!this._writeBlob(oldestId, oldest)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.strings.delete(oldestId);\n\t\t\tthis.bytes -= Buffer.byteLength(oldest, \"utf8\");\n\t\t}\n\t}\n\n\tprivate _writeBlob(id: string, text: string): boolean {\n\t\tconst dir = this.blobsDir?.();\n\t\tif (!dir) {\n\t\t\treturn false;\n\t\t}\n\t\tconst final = join(dir, `${id}.blob`);\n\t\tconst temp = `${final}.tmp`;\n\t\ttry {\n\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t// The id is the content hash, so an existing blob already holds these exact\n\t\t\t// bytes: skip the rewrite but still report the eviction, because the string\n\t\t\t// is leaving memory either way.\n\t\t\tif (!existsSync(final)) {\n\t\t\t\t// Blobs are JSON envelopes so a truncated or mangled file fails the read\n\t\t\t\t// below and falls back to JSONL recovery instead of hydrating garbage.\n\t\t\t\twriteFileSync(temp, JSON.stringify({ v: 1, text }), \"utf8\");\n\t\t\t\trenameSync(temp, final);\n\t\t\t}\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\trmSync(temp, { force: true });\n\t\t\t} catch {}\n\t\t\treturn false;\n\t\t}\n\t\tthis.evictedCount++;\n\t\tthis.evictedBytes += Buffer.byteLength(text, \"utf8\");\n\t\treturn true;\n\t}\n\n\tprivate _readBlob(id: string): string | undefined {\n\t\tconst dir = this.blobsDir?.();\n\t\tif (!dir) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst file = join(dir, `${id}.blob`);\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(readFileSync(file, \"utf8\")) as { text?: unknown };\n\t\t\tif (typeof parsed.text === \"string\") {\n\t\t\t\treturn parsed.text;\n\t\t\t}\n\t\t} catch {}\n\t\t// The blob is missing or unusable. Drop whatever is there so the next eviction\n\t\t// of this content writes a readable blob instead of skipping over a broken one.\n\t\ttry {\n\t\t\trmSync(file, { force: true });\n\t\t} catch {}\n\t\treturn undefined;\n\t}\n}\n\nfunction transformJson<T>(value: T, transformString: (text: string) => string): T {\n\tconst transformed = transformJsonValue(value, transformString, \"\", new WeakSet());\n\tif (transformed === OMIT_JSON_VALUE) {\n\t\tconst serialized = JSON.stringify(value);\n\t\tif (serialized === undefined) {\n\t\t\tthrow new SyntaxError(\"JSON-compatible value expected\");\n\t\t}\n\t\treturn JSON.parse(serialized) as T;\n\t}\n\treturn transformed as T;\n}\n\nfunction transformJsonValue(\n\tvalue: unknown,\n\ttransformString: (text: string) => string,\n\tkey: string,\n\tseen: WeakSet<object>,\n): unknown | typeof OMIT_JSON_VALUE {\n\tif (typeof value === \"string\") {\n\t\treturn transformString(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? value : null;\n\t}\n\tif (value === null || typeof value === \"boolean\") {\n\t\treturn value;\n\t}\n\tif (typeof value === \"bigint\") {\n\t\t// JSON.stringify semantics: a BigInt is not serializable, and the store's\n\t\t// contract is to fail exactly like it does.\n\t\tthrow new TypeError(\"Do not know how to serialize a BigInt\");\n\t}\n\tif (typeof value === \"undefined\" || typeof value === \"function\" || typeof value === \"symbol\") {\n\t\treturn OMIT_JSON_VALUE;\n\t}\n\n\tif (seen.has(value)) {\n\t\tthrow new TypeError(\"Converting circular structure to JSON\");\n\t}\n\tseen.add(value);\n\n\tconst jsonValue = hasJsonSerializer(value) ? value.toJSON(key) : value;\n\tif (jsonValue !== value) {\n\t\tconst transformed = transformJsonValue(jsonValue, transformString, key, seen);\n\t\tseen.delete(value);\n\t\treturn transformed;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tconst transformed = Array.from({ length: value.length }, (_item, index) => {\n\t\t\tconst item = value[index];\n\t\t\tconst transformedItem = transformJsonValue(item, transformString, String(index), seen);\n\t\t\treturn transformedItem === OMIT_JSON_VALUE ? null : transformedItem;\n\t\t});\n\t\tseen.delete(value);\n\t\treturn transformed;\n\t}\n\n\tconst transformed: Record<string, unknown> = {};\n\tfor (const [key, item] of Object.entries(value)) {\n\t\tconst transformedItem = transformJsonValue(item, transformString, String(key), seen);\n\t\tif (transformedItem !== OMIT_JSON_VALUE) {\n\t\t\tObject.defineProperty(transformed, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: transformedItem,\n\t\t\t\twritable: true,\n\t\t\t});\n\t\t}\n\t}\n\tseen.delete(value);\n\treturn transformed;\n}\n\nfunction hasJsonSerializer(value: object): value is { toJSON: (key: string) => unknown } {\n\treturn \"toJSON\" in value && typeof value.toJSON === \"function\";\n}\n"]}
|
|
@@ -8,6 +8,12 @@ export interface SessionWriterOwner {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function registerSessionWriter(owner: SessionWriterOwner): void;
|
|
10
10
|
export declare function unregisterSessionWriter(owner: SessionWriterOwner): void;
|
|
11
|
+
/**
|
|
12
|
+
* Whether a persisted writer other than `self` still owns `path`. Callers that release
|
|
13
|
+
* per-session caches ask this so the last owner is the one that clears them; collected
|
|
14
|
+
* writers are pruned here.
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasOtherLiveSessionWriter(path: string, self: SessionWriterOwner): boolean;
|
|
11
17
|
/** Session files still owned by a live persisted writer; collected writers are pruned here. */
|
|
12
18
|
export declare function liveSessionWritePaths(): string[];
|
|
13
19
|
//# sourceMappingURL=session-write-reservation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-write-reservation.d.ts","sourceRoot":"","sources":["../../src/core/session-write-reservation.ts"],"names":[],"mappings":"AAGA,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAGxF;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IAClC,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,IAAI,OAAO,CAAC;CACvB;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAKrE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAKvE;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD"}
|
|
1
|
+
{"version":3,"file":"session-write-reservation.d.ts","sourceRoot":"","sources":["../../src/core/session-write-reservation.ts"],"names":[],"mappings":"AAGA,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAGxF;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IAClC,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,IAAI,OAAO,CAAC;CACvB;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAKrE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAKvE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAWzF;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD"}
|
|
@@ -27,6 +27,25 @@ export function unregisterSessionWriter(owner) {
|
|
|
27
27
|
writerRefs.delete(owner);
|
|
28
28
|
liveWriters.delete(ref);
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether a persisted writer other than `self` still owns `path`. Callers that release
|
|
32
|
+
* per-session caches ask this so the last owner is the one that clears them; collected
|
|
33
|
+
* writers are pruned here.
|
|
34
|
+
*/
|
|
35
|
+
export function hasOtherLiveSessionWriter(path, self) {
|
|
36
|
+
for (const ref of liveWriters) {
|
|
37
|
+
const owner = ref.deref();
|
|
38
|
+
if (!owner) {
|
|
39
|
+
liveWriters.delete(ref);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (owner === self)
|
|
43
|
+
continue;
|
|
44
|
+
if (owner.isPersisted() && owner.getSessionFile() === path)
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
30
49
|
/** Session files still owned by a live persisted writer; collected writers are pruned here. */
|
|
31
50
|
export function liveSessionWritePaths() {
|
|
32
51
|
const paths = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-write-reservation.js","sourceRoot":"","sources":["../../src/core/session-write-reservation.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,IAAI,OAA6C,CAAC;AAElD,MAAM,UAAU,8BAA8B,CAAC,WAAmC;IACjF,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC5E,OAAO,GAAG,WAAW,CAAC;AACvB,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAQD,4FAA4F;AAC5F,qFAAqF;AACrF,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;AAC3D,MAAM,UAAU,GAAG,IAAI,OAAO,EAAmD,CAAC;AAElF,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC9D,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,qBAAqB;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["/** Installed only inside a shared-host session isolate, before constructing any writer. */\nlet reserve: ((path: string) => void) | undefined;\n\nexport function installSessionWriteReservation(reservation: (path: string) => void): void {\n\tif (reserve) throw new Error(\"Session write reservation already installed\");\n\treserve = reservation;\n}\n\n/** Synchronous SessionManager entry points must obtain the host grant before touching a writer. */\nexport function reserveSessionWrite(path: string): void {\n\treserve?.(path);\n}\n\n/** A session writer whose grant must live exactly as long as the writer itself. */\nexport interface SessionWriterOwner {\n\tgetSessionFile(): string | undefined;\n\tisPersisted(): boolean;\n}\n\n// Weak on purpose: a writer nobody references anymore writes nothing, so its grant must not\n// be kept alive by this registry. Identity removal needs the same ref the set holds.\nconst liveWriters = new Set<WeakRef<SessionWriterOwner>>();\nconst writerRefs = new WeakMap<SessionWriterOwner, WeakRef<SessionWriterOwner>>();\n\nexport function registerSessionWriter(owner: SessionWriterOwner): void {\n\tif (writerRefs.has(owner)) return;\n\tconst ref = new WeakRef(owner);\n\twriterRefs.set(owner, ref);\n\tliveWriters.add(ref);\n}\n\nexport function unregisterSessionWriter(owner: SessionWriterOwner): void {\n\tconst ref = writerRefs.get(owner);\n\tif (!ref) return;\n\twriterRefs.delete(owner);\n\tliveWriters.delete(ref);\n}\n\n/** Session files still owned by a live persisted writer; collected writers are pruned here. */\nexport function liveSessionWritePaths(): string[] {\n\tconst paths: string[] = [];\n\tfor (const ref of liveWriters) {\n\t\tconst owner = ref.deref();\n\t\tif (!owner) {\n\t\t\tliveWriters.delete(ref);\n\t\t\tcontinue;\n\t\t}\n\t\tconst path = owner.isPersisted() ? owner.getSessionFile() : undefined;\n\t\tif (path) paths.push(path);\n\t}\n\treturn paths;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-write-reservation.js","sourceRoot":"","sources":["../../src/core/session-write-reservation.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,IAAI,OAA6C,CAAC;AAElD,MAAM,UAAU,8BAA8B,CAAC,WAAmC;IACjF,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC5E,OAAO,GAAG,WAAW,CAAC;AACvB,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAQD,4FAA4F;AAC5F,qFAAqF;AACrF,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;AAC3D,MAAM,UAAU,GAAG,IAAI,OAAO,EAAmD,CAAC;AAElF,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC9D,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,IAAwB;IAC/E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,SAAS;QACV,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,qBAAqB;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["/** Installed only inside a shared-host session isolate, before constructing any writer. */\nlet reserve: ((path: string) => void) | undefined;\n\nexport function installSessionWriteReservation(reservation: (path: string) => void): void {\n\tif (reserve) throw new Error(\"Session write reservation already installed\");\n\treserve = reservation;\n}\n\n/** Synchronous SessionManager entry points must obtain the host grant before touching a writer. */\nexport function reserveSessionWrite(path: string): void {\n\treserve?.(path);\n}\n\n/** A session writer whose grant must live exactly as long as the writer itself. */\nexport interface SessionWriterOwner {\n\tgetSessionFile(): string | undefined;\n\tisPersisted(): boolean;\n}\n\n// Weak on purpose: a writer nobody references anymore writes nothing, so its grant must not\n// be kept alive by this registry. Identity removal needs the same ref the set holds.\nconst liveWriters = new Set<WeakRef<SessionWriterOwner>>();\nconst writerRefs = new WeakMap<SessionWriterOwner, WeakRef<SessionWriterOwner>>();\n\nexport function registerSessionWriter(owner: SessionWriterOwner): void {\n\tif (writerRefs.has(owner)) return;\n\tconst ref = new WeakRef(owner);\n\twriterRefs.set(owner, ref);\n\tliveWriters.add(ref);\n}\n\nexport function unregisterSessionWriter(owner: SessionWriterOwner): void {\n\tconst ref = writerRefs.get(owner);\n\tif (!ref) return;\n\twriterRefs.delete(owner);\n\tliveWriters.delete(ref);\n}\n\n/**\n * Whether a persisted writer other than `self` still owns `path`. Callers that release\n * per-session caches ask this so the last owner is the one that clears them; collected\n * writers are pruned here.\n */\nexport function hasOtherLiveSessionWriter(path: string, self: SessionWriterOwner): boolean {\n\tfor (const ref of liveWriters) {\n\t\tconst owner = ref.deref();\n\t\tif (!owner) {\n\t\t\tliveWriters.delete(ref);\n\t\t\tcontinue;\n\t\t}\n\t\tif (owner === self) continue;\n\t\tif (owner.isPersisted() && owner.getSessionFile() === path) return true;\n\t}\n\treturn false;\n}\n\n/** Session files still owned by a live persisted writer; collected writers are pruned here. */\nexport function liveSessionWritePaths(): string[] {\n\tconst paths: string[] = [];\n\tfor (const ref of liveWriters) {\n\t\tconst owner = ref.deref();\n\t\tif (!owner) {\n\t\t\tliveWriters.delete(ref);\n\t\t\tcontinue;\n\t\t}\n\t\tconst path = owner.isPersisted() ? owner.getSessionFile() : undefined;\n\t\tif (path) paths.push(path);\n\t}\n\treturn paths;\n}\n"]}
|
|
@@ -10,6 +10,14 @@ import { type BranchSummarySettings, type TerminalMouseMode, type TerminalSettin
|
|
|
10
10
|
export type * from "./settings-public-types.ts";
|
|
11
11
|
export declare const DEFAULT_STREAM_START_TIMEOUT_MS = 300000;
|
|
12
12
|
export declare const DEFAULT_PROVIDER_STREAM_RETRY_TIMEOUT_MS = 30000;
|
|
13
|
+
/** Warn threshold for a single `session_shutdown` extension handler. */
|
|
14
|
+
export declare const DEFAULT_SESSION_SHUTDOWN_HANDLER_WARN_MS = 2000;
|
|
15
|
+
/**
|
|
16
|
+
* Hard cap for a single `session_shutdown` extension handler. Higher than the
|
|
17
|
+
* 2s warning because several extensions persist durable state at shutdown; a
|
|
18
|
+
* hung handler still must not hold quit/reload/new/resume hostage.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_SESSION_SHUTDOWN_HANDLER_TIMEOUT_MS = 10000;
|
|
13
21
|
export type TuiMode = RendererTuiMode;
|
|
14
22
|
export type FullscreenExitOutput = "transcript" | "resume-hint";
|
|
15
23
|
/** Service tier remembered per model; "auto" is an explicit opt-out of an inherited priority tier. */
|
|
@@ -104,6 +112,8 @@ export interface Settings {
|
|
|
104
112
|
httpProxy?: string;
|
|
105
113
|
httpIdleTimeoutMs?: number;
|
|
106
114
|
websocketConnectTimeoutMs?: number;
|
|
115
|
+
sessionShutdownHandlerWarnMs?: number;
|
|
116
|
+
sessionShutdownHandlerTimeoutMs?: number;
|
|
107
117
|
tuiMode?: TuiMode;
|
|
108
118
|
fullscreenExitOutput?: FullscreenExitOutput;
|
|
109
119
|
fullscreenScrollbar?: ScrollViewScrollbar;
|
|
@@ -313,6 +323,19 @@ export declare class SettingsManager {
|
|
|
313
323
|
private getGlobalFallbackChains;
|
|
314
324
|
getHttpIdleTimeoutMs(): number;
|
|
315
325
|
setHttpIdleTimeoutMs(timeoutMs: number): void;
|
|
326
|
+
/**
|
|
327
|
+
* How long one extension's `session_shutdown` handler may run before the host
|
|
328
|
+
* warns about it. 0 disables the warning.
|
|
329
|
+
*/
|
|
330
|
+
getSessionShutdownHandlerWarnMs(): number;
|
|
331
|
+
setSessionShutdownHandlerWarnMs(warnMs: number): void;
|
|
332
|
+
/**
|
|
333
|
+
* Hard cap on one extension's `session_shutdown` handler. On expiry the host
|
|
334
|
+
* aborts that handler's `event.signal`, reports an extension error and moves
|
|
335
|
+
* on to the next handler. 0 disables the cap (unbounded, pre-budget behavior).
|
|
336
|
+
*/
|
|
337
|
+
getSessionShutdownHandlerTimeoutMs(): number;
|
|
338
|
+
setSessionShutdownHandlerTimeoutMs(timeoutMs: number): void;
|
|
316
339
|
getProviderRetrySettings(): {
|
|
317
340
|
timeoutMs?: number;
|
|
318
341
|
maxRetries?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,14 @@ import { ASK_USER_DEFAULT_TIMEOUT_MINUTES, ASK_USER_MAX_TIMEOUT_MINUTES, ASK_USE
|
|
|
20
20
|
import { isTerminalMouseMode, } from "./terminal-settings.js";
|
|
21
21
|
export const DEFAULT_STREAM_START_TIMEOUT_MS = 300_000;
|
|
22
22
|
export const DEFAULT_PROVIDER_STREAM_RETRY_TIMEOUT_MS = 30_000;
|
|
23
|
+
/** Warn threshold for a single `session_shutdown` extension handler. */
|
|
24
|
+
export const DEFAULT_SESSION_SHUTDOWN_HANDLER_WARN_MS = 2_000;
|
|
25
|
+
/**
|
|
26
|
+
* Hard cap for a single `session_shutdown` extension handler. Higher than the
|
|
27
|
+
* 2s warning because several extensions persist durable state at shutdown; a
|
|
28
|
+
* hung handler still must not hold quit/reload/new/resume hostage.
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_SESSION_SHUTDOWN_HANDLER_TIMEOUT_MS = 10_000;
|
|
23
31
|
const THINKING_LEVEL_VALUES = new Set([
|
|
24
32
|
"off",
|
|
25
33
|
"minimal",
|
|
@@ -1049,6 +1057,39 @@ export class SettingsManager {
|
|
|
1049
1057
|
this.markModified("httpIdleTimeoutMs");
|
|
1050
1058
|
this.save();
|
|
1051
1059
|
}
|
|
1060
|
+
/**
|
|
1061
|
+
* How long one extension's `session_shutdown` handler may run before the host
|
|
1062
|
+
* warns about it. 0 disables the warning.
|
|
1063
|
+
*/
|
|
1064
|
+
getSessionShutdownHandlerWarnMs() {
|
|
1065
|
+
return (parseTimeoutSetting(this.settings.sessionShutdownHandlerWarnMs, "sessionShutdownHandlerWarnMs") ??
|
|
1066
|
+
DEFAULT_SESSION_SHUTDOWN_HANDLER_WARN_MS);
|
|
1067
|
+
}
|
|
1068
|
+
setSessionShutdownHandlerWarnMs(warnMs) {
|
|
1069
|
+
if (!Number.isFinite(warnMs) || warnMs < 0) {
|
|
1070
|
+
throw new Error(`Invalid sessionShutdownHandlerWarnMs setting: ${String(warnMs)}`);
|
|
1071
|
+
}
|
|
1072
|
+
this.globalSettings.sessionShutdownHandlerWarnMs = Math.floor(warnMs);
|
|
1073
|
+
this.markModified("sessionShutdownHandlerWarnMs");
|
|
1074
|
+
this.save();
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Hard cap on one extension's `session_shutdown` handler. On expiry the host
|
|
1078
|
+
* aborts that handler's `event.signal`, reports an extension error and moves
|
|
1079
|
+
* on to the next handler. 0 disables the cap (unbounded, pre-budget behavior).
|
|
1080
|
+
*/
|
|
1081
|
+
getSessionShutdownHandlerTimeoutMs() {
|
|
1082
|
+
return (parseTimeoutSetting(this.settings.sessionShutdownHandlerTimeoutMs, "sessionShutdownHandlerTimeoutMs") ??
|
|
1083
|
+
DEFAULT_SESSION_SHUTDOWN_HANDLER_TIMEOUT_MS);
|
|
1084
|
+
}
|
|
1085
|
+
setSessionShutdownHandlerTimeoutMs(timeoutMs) {
|
|
1086
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {
|
|
1087
|
+
throw new Error(`Invalid sessionShutdownHandlerTimeoutMs setting: ${String(timeoutMs)}`);
|
|
1088
|
+
}
|
|
1089
|
+
this.globalSettings.sessionShutdownHandlerTimeoutMs = Math.floor(timeoutMs);
|
|
1090
|
+
this.markModified("sessionShutdownHandlerTimeoutMs");
|
|
1091
|
+
this.save();
|
|
1092
|
+
}
|
|
1052
1093
|
getProviderRetrySettings() {
|
|
1053
1094
|
return {
|
|
1054
1095
|
timeoutMs: this.settings.retry?.provider?.timeoutMs,
|