@code-yeongyu/senpi 2026.8.29 → 2026.8.30-2
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 +122 -0
- package/dist/core/agent-session.d.ts +45 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +329 -29
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +155 -37
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/compaction/compaction-execution.d.ts +14 -0
- package/dist/core/compaction/compaction-execution.d.ts.map +1 -0
- package/dist/core/compaction/compaction-execution.js +121 -0
- package/dist/core/compaction/compaction-execution.js.map +1 -0
- package/dist/core/compaction/compaction-settings.d.ts +17 -0
- package/dist/core/compaction/compaction-settings.d.ts.map +1 -0
- package/dist/core/compaction/compaction-settings.js +17 -0
- package/dist/core/compaction/compaction-settings.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +13 -26
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +7 -136
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/ideal-compaction-settings.d.ts +9 -0
- package/dist/core/compaction/ideal-compaction-settings.d.ts.map +1 -0
- package/dist/core/compaction/ideal-compaction-settings.js +7 -0
- package/dist/core/compaction/ideal-compaction-settings.js.map +1 -0
- package/dist/core/compaction-settings-access.d.ts +19 -0
- package/dist/core/compaction-settings-access.d.ts.map +1 -0
- package/dist/core/compaction-settings-access.js +10 -0
- package/dist/core/compaction-settings-access.js.map +1 -0
- package/dist/core/compaction-settings-resolver.d.ts +22 -0
- package/dist/core/compaction-settings-resolver.d.ts.map +1 -0
- package/dist/core/compaction-settings-resolver.js +46 -0
- package/dist/core/compaction-settings-resolver.js.map +1 -0
- package/dist/core/credential-accounts.d.ts.map +1 -1
- package/dist/core/credential-accounts.js +23 -9
- package/dist/core/credential-accounts.js.map +1 -1
- package/dist/core/credential-pool/env-slots.d.ts.map +1 -1
- package/dist/core/credential-pool/env-slots.js +2 -0
- package/dist/core/credential-pool/env-slots.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/context-pipeline.d.ts +17 -0
- package/dist/core/extensions/builtin/compaction/context-pipeline.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/context-pipeline.js +28 -0
- package/dist/core/extensions/builtin/compaction/context-pipeline.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts +8 -2
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js +163 -48
- package/dist/core/extensions/builtin/compaction/deterministic-fallback.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/emergency-prune.d.ts +17 -0
- package/dist/core/extensions/builtin/compaction/emergency-prune.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/emergency-prune.js +64 -0
- package/dist/core/extensions/builtin/compaction/emergency-prune.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/extension-wiring.d.ts +27 -0
- package/dist/core/extensions/builtin/compaction/extension-wiring.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/extension-wiring.js +84 -0
- package/dist/core/extensions/builtin/compaction/extension-wiring.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/idle.d.ts +1 -0
- package/dist/core/extensions/builtin/compaction/idle.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/idle.js +13 -2
- package/dist/core/extensions/builtin/compaction/idle.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +121 -147
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/log.d.ts +1 -1
- package/dist/core/extensions/builtin/compaction/log.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/log.js +2 -0
- package/dist/core/extensions/builtin/compaction/log.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/model-selection.d.ts +14 -0
- package/dist/core/extensions/builtin/compaction/model-selection.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/model-selection.js +37 -0
- package/dist/core/extensions/builtin/compaction/model-selection.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/openai-remote-dependencies.d.ts +9 -0
- package/dist/core/extensions/builtin/compaction/openai-remote-dependencies.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/openai-remote-dependencies.js +2 -0
- package/dist/core/extensions/builtin/compaction/openai-remote-dependencies.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +3 -6
- package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/orchestration.d.ts +56 -0
- package/dist/core/extensions/builtin/compaction/orchestration.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/orchestration.js +136 -0
- package/dist/core/extensions/builtin/compaction/orchestration.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/policy.d.ts +5 -2
- package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/policy.js +43 -26
- package/dist/core/extensions/builtin/compaction/policy.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/retained-message-safety.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/retained-message-safety.js +31 -8
- package/dist/core/extensions/builtin/compaction/retained-message-safety.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculation-lead.d.ts +8 -0
- package/dist/core/extensions/builtin/compaction/speculation-lead.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculation-lead.js +17 -0
- package/dist/core/extensions/builtin/compaction/speculation-lead.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-job.d.ts +22 -0
- package/dist/core/extensions/builtin/compaction/speculative-job.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-job.js +16 -0
- package/dist/core/extensions/builtin/compaction/speculative-job.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.d.ts +22 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.js +131 -0
- package/dist/core/extensions/builtin/compaction/speculative-summary.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +8 -13
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +7 -196
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/token-budget-reminder.d.ts +18 -0
- package/dist/core/extensions/builtin/compaction/token-budget-reminder.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/token-budget-reminder.js +18 -0
- package/dist/core/extensions/builtin/compaction/token-budget-reminder.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-admission.d.ts +36 -0
- package/dist/core/extensions/builtin/compaction/tool-admission.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-admission.js +92 -0
- package/dist/core/extensions/builtin/compaction/tool-admission.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.d.ts.map +1 -1
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js +8 -28
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/external-dir.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/external-dir.js +15 -5
- package/dist/core/extensions/builtin/permission-system/external-dir.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/parsers.js +16 -1
- package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/manager.d.ts +5 -0
- package/dist/core/extensions/builtin/terminal/manager.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/manager.js +31 -3
- package/dist/core/extensions/builtin/terminal/manager.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-permission.d.ts +8 -0
- package/dist/core/extensions/builtin/terminal/monitor-permission.d.ts.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-permission.js +16 -0
- package/dist/core/extensions/builtin/terminal/monitor-permission.js.map +1 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +13 -0
- package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/monitor-registry.js +403 -3
- package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/session-bundle.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/session-bundle.js +1 -0
- package/dist/core/extensions/builtin/terminal/session-bundle.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/kill-bash.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/kill-bash.js +5 -2
- package/dist/core/extensions/builtin/terminal/tools/kill-bash.js.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts +4 -0
- package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts.map +1 -1
- package/dist/core/extensions/builtin/terminal/tools/monitor.js +40 -2
- package/dist/core/extensions/builtin/terminal/tools/monitor.js.map +1 -1
- package/dist/core/model-resolver.js +2 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +10 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +15 -85
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +15 -17
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-public-types.d.ts +11 -0
- package/dist/core/settings-public-types.d.ts.map +1 -0
- package/dist/core/settings-public-types.js +2 -0
- package/dist/core/settings-public-types.js.map +1 -0
- package/dist/core/settings-shapes.d.ts +36 -0
- package/dist/core/settings-shapes.d.ts.map +1 -0
- package/dist/core/settings-shapes.js +2 -0
- package/dist/core/settings-shapes.js.map +1 -0
- package/dist/core/shared-host-policy.d.ts +6 -0
- package/dist/core/shared-host-policy.d.ts.map +1 -0
- package/dist/core/shared-host-policy.js +7 -0
- package/dist/core/shared-host-policy.js.map +1 -0
- package/dist/core/terminal-settings.d.ts +22 -0
- package/dist/core/terminal-settings.d.ts.map +1 -0
- package/dist/core/terminal-settings.js +2 -0
- package/dist/core/terminal-settings.js.map +1 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +97 -15
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +8 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +76 -34
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -5
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +7 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +34 -8
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/grok/chrome.d.ts +2 -0
- package/dist/modes/interactive/grok/chrome.d.ts.map +1 -1
- package/dist/modes/interactive/grok/chrome.js.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.d.ts +121 -1
- package/dist/modes/interactive/interactive-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-host-runtime.js +336 -65
- package/dist/modes/interactive/interactive-host-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +7 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +114 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts +8 -1
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +145 -49
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/host-ensure.d.ts +19 -0
- package/dist/modes/rpc/host-ensure.d.ts.map +1 -1
- package/dist/modes/rpc/host-ensure.js +79 -15
- package/dist/modes/rpc/host-ensure.js.map +1 -1
- package/dist/modes/rpc/host-lifecycle.d.ts +29 -0
- package/dist/modes/rpc/host-lifecycle.d.ts.map +1 -1
- package/dist/modes/rpc/host-lifecycle.js +96 -25
- package/dist/modes/rpc/host-lifecycle.js.map +1 -1
- package/dist/modes/rpc/host-watchdog.d.ts +2 -0
- package/dist/modes/rpc/host-watchdog.d.ts.map +1 -1
- package/dist/modes/rpc/host-watchdog.js +23 -12
- package/dist/modes/rpc/host-watchdog.js.map +1 -1
- package/dist/modes/rpc/multi-session-host.js +6 -4
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +10 -4
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +47 -10
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-input-validation.d.ts +1 -0
- package/dist/modes/rpc/rpc-input-validation.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-validation.js +66 -0
- package/dist/modes/rpc/rpc-input-validation.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +86 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/session-binding.d.ts +1 -0
- package/dist/modes/rpc/session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/session-binding.js +21 -1
- package/dist/modes/rpc/session-binding.js.map +1 -1
- package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
- package/dist/modes/rpc/session-command-router.js +1 -0
- package/dist/modes/rpc/session-command-router.js.map +1 -1
- package/dist/modes/rpc/session-event-writer.d.ts +2 -0
- package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
- package/dist/modes/rpc/session-event-writer.js +54 -7
- package/dist/modes/rpc/session-event-writer.js.map +1 -1
- package/dist/modes/rpc/session-extension-ui-requests.d.ts +1 -0
- package/dist/modes/rpc/session-extension-ui-requests.d.ts.map +1 -1
- package/dist/modes/rpc/session-extension-ui-requests.js +5 -0
- package/dist/modes/rpc/session-extension-ui-requests.js.map +1 -1
- package/dist/modes/rpc/session-registry.d.ts +10 -2
- package/dist/modes/rpc/session-registry.d.ts.map +1 -1
- package/dist/modes/rpc/session-registry.js +58 -4
- package/dist/modes/rpc/session-registry.js.map +1 -1
- package/dist/modes/rpc/socket-event-fanout.d.ts +22 -0
- package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -0
- package/dist/modes/rpc/socket-event-fanout.js +84 -0
- package/dist/modes/rpc/socket-event-fanout.js.map +1 -0
- package/docs/rpc.md +18 -2
- package/docs/settings.md +34 -0
- package/docs/windows.md +2 -0
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +50 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-indirect-eval.js +139 -90
- package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +4 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +40 -20
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +3 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +28 -9
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +67 -38
- package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts +20 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js +443 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
- 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/cloudflare-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.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/opencode-go.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.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/together.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +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/dist/components/editor.d.ts +7 -0
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +5 -0
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/mux.js +2 -2
- package/node_modules/@earendil-works/pi-tui/dist/mux.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +19 -0
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { estimateTotalTokens, pruneOldMessagesToBudget, SUMMARIZATION_INPUT_BUDGET_RATIO } from "./overflow-retry.js";
|
|
2
|
+
import * as truncation from "./tool-truncation.js";
|
|
3
|
+
const EMERGENCY_CONTEXT_TARGET_RATIO = 0.95;
|
|
4
|
+
const EMERGENCY_CONTEXT_RELEASE_RATIO = 0.85;
|
|
5
|
+
export function pruneToolResults(messages, contextWindow, budgetRatio) {
|
|
6
|
+
const toolResults = messages
|
|
7
|
+
.filter((message) => message.role === "toolResult")
|
|
8
|
+
.map((message) => ({ content: message.content, details: undefined }));
|
|
9
|
+
if (toolResults.length === 0)
|
|
10
|
+
return messages;
|
|
11
|
+
const prunedResults = truncation.prePruneToolOutputsToBudget(toolResults, contextWindow * budgetRatio);
|
|
12
|
+
let resultIndex = 0;
|
|
13
|
+
return messages.map((message) => {
|
|
14
|
+
if (message.role !== "toolResult")
|
|
15
|
+
return message;
|
|
16
|
+
const pruned = prunedResults[resultIndex];
|
|
17
|
+
resultIndex++;
|
|
18
|
+
return pruned ? { ...message, content: pruned.content } : message;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function truncateContextMessages(messages) {
|
|
22
|
+
const toolResults = messages
|
|
23
|
+
.filter((message) => message.role === "toolResult")
|
|
24
|
+
.map((message) => ({ content: message.content, details: undefined }));
|
|
25
|
+
if (toolResults.length === 0)
|
|
26
|
+
return messages;
|
|
27
|
+
const truncatedResults = truncation.truncateOversizedToolResults(toolResults);
|
|
28
|
+
let resultIndex = 0;
|
|
29
|
+
return messages.map((message) => {
|
|
30
|
+
if (message.role !== "toolResult")
|
|
31
|
+
return message;
|
|
32
|
+
const truncated = truncatedResults[resultIndex];
|
|
33
|
+
resultIndex++;
|
|
34
|
+
return truncated ? { ...message, content: truncated.content } : message;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export function createEmergencyPruneLatch() {
|
|
38
|
+
return { engaged: false };
|
|
39
|
+
}
|
|
40
|
+
export function hardLimitEmergencyPrune(messages, contextWindow, latch) {
|
|
41
|
+
const targetTokens = Math.floor(contextWindow * EMERGENCY_CONTEXT_TARGET_RATIO);
|
|
42
|
+
const releaseTokens = Math.floor(contextWindow * EMERGENCY_CONTEXT_RELEASE_RATIO);
|
|
43
|
+
const totalTokens = estimateTotalTokens(messages);
|
|
44
|
+
// Without a latch this keeps the historical single-threshold behaviour.
|
|
45
|
+
const engaged = latch
|
|
46
|
+
? latch.engaged
|
|
47
|
+
? totalTokens > releaseTokens
|
|
48
|
+
: totalTokens > targetTokens
|
|
49
|
+
: totalTokens > targetTokens;
|
|
50
|
+
if (latch)
|
|
51
|
+
latch.engaged = engaged;
|
|
52
|
+
if (!engaged) {
|
|
53
|
+
return { messages, needsAggressiveCompaction: false };
|
|
54
|
+
}
|
|
55
|
+
const noLlmPruned = truncateContextMessages(pruneToolResults(messages, contextWindow, SUMMARIZATION_INPUT_BUDGET_RATIO));
|
|
56
|
+
if (estimateTotalTokens(noLlmPruned) <= targetTokens) {
|
|
57
|
+
return { messages: noLlmPruned, needsAggressiveCompaction: false };
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
messages: pruneOldMessagesToBudget(noLlmPruned, targetTokens),
|
|
61
|
+
needsAggressiveCompaction: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=emergency-prune.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emergency-prune.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/emergency-prune.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { estimateTotalTokens, pruneOldMessagesToBudget, SUMMARIZATION_INPUT_BUDGET_RATIO } from \"./overflow-retry.ts\";\nimport * as truncation from \"./tool-truncation.ts\";\n\nconst EMERGENCY_CONTEXT_TARGET_RATIO = 0.95;\nconst EMERGENCY_CONTEXT_RELEASE_RATIO = 0.85;\nexport function pruneToolResults(messages: AgentMessage[], contextWindow: number, budgetRatio: number): AgentMessage[] {\n\tconst toolResults = messages\n\t\t.filter((message) => message.role === \"toolResult\")\n\t\t.map((message) => ({ content: message.content, details: undefined }));\n\tif (toolResults.length === 0) return messages;\n\n\tconst prunedResults = truncation.prePruneToolOutputsToBudget(toolResults, contextWindow * budgetRatio);\n\tlet resultIndex = 0;\n\treturn messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst pruned = prunedResults[resultIndex];\n\t\tresultIndex++;\n\t\treturn pruned ? { ...message, content: pruned.content } : message;\n\t});\n}\n\nexport function truncateContextMessages(messages: AgentMessage[]): AgentMessage[] {\n\tconst toolResults = messages\n\t\t.filter((message) => message.role === \"toolResult\")\n\t\t.map((message) => ({ content: message.content, details: undefined }));\n\tif (toolResults.length === 0) return messages;\n\n\tconst truncatedResults = truncation.truncateOversizedToolResults(toolResults);\n\tlet resultIndex = 0;\n\treturn messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst truncated = truncatedResults[resultIndex];\n\t\tresultIndex++;\n\t\treturn truncated ? { ...message, content: truncated.content } : message;\n\t});\n}\n\n/**\n * Sticky engage/release state for {@link hardLimitEmergencyPrune}. Callers that\n * issue many requests for one session share a single latch so the emitted context\n * shape stays stable while the estimate hovers around the engage threshold.\n */\n\nexport interface EmergencyPruneLatch {\n\tengaged: boolean;\n}\n\nexport function createEmergencyPruneLatch(): EmergencyPruneLatch {\n\treturn { engaged: false };\n}\n\nexport function hardLimitEmergencyPrune(\n\tmessages: AgentMessage[],\n\tcontextWindow: number,\n\tlatch?: EmergencyPruneLatch,\n): {\n\tmessages: AgentMessage[];\n\tneedsAggressiveCompaction: boolean;\n} {\n\tconst targetTokens = Math.floor(contextWindow * EMERGENCY_CONTEXT_TARGET_RATIO);\n\tconst releaseTokens = Math.floor(contextWindow * EMERGENCY_CONTEXT_RELEASE_RATIO);\n\tconst totalTokens = estimateTotalTokens(messages);\n\t// Without a latch this keeps the historical single-threshold behaviour.\n\tconst engaged = latch\n\t\t? latch.engaged\n\t\t\t? totalTokens > releaseTokens\n\t\t\t: totalTokens > targetTokens\n\t\t: totalTokens > targetTokens;\n\tif (latch) latch.engaged = engaged;\n\tif (!engaged) {\n\t\treturn { messages, needsAggressiveCompaction: false };\n\t}\n\tconst noLlmPruned = truncateContextMessages(\n\t\tpruneToolResults(messages, contextWindow, SUMMARIZATION_INPUT_BUDGET_RATIO),\n\t);\n\tif (estimateTotalTokens(noLlmPruned) <= targetTokens) {\n\t\treturn { messages: noLlmPruned, needsAggressiveCompaction: false };\n\t}\n\treturn {\n\t\tmessages: pruneOldMessagesToBudget(noLlmPruned, targetTokens),\n\t\tneedsAggressiveCompaction: true,\n\t};\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { ContextUsage, ExtensionContext, MessageEndEvent, SessionBeforeCompactEvent } from "../../types.ts";
|
|
3
|
+
import * as checkpointState from "./checkpoint-state.ts";
|
|
4
|
+
import type { SpeculativeCompactionResult, SpeculativeCompactionSnapshot } from "./speculative.ts";
|
|
5
|
+
export declare function estimatePendingPromptTokens(event: {
|
|
6
|
+
prompt?: string;
|
|
7
|
+
images?: readonly unknown[];
|
|
8
|
+
}): number;
|
|
9
|
+
export declare function getPromptContextWindow(contextWindow: number, maxTokens: number | undefined): number;
|
|
10
|
+
export declare function withAdditionalTokens(usage: ContextUsage, additionalTokens: number): ContextUsage;
|
|
11
|
+
export declare function isMonitorableMessageEvent(event: MessageEndEvent): event is MessageEndEvent & {
|
|
12
|
+
message: AgentMessage & {
|
|
13
|
+
content: Array<{
|
|
14
|
+
type: string;
|
|
15
|
+
text?: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare function isAbortedAssistantMessage(event: {
|
|
20
|
+
message: AgentMessage;
|
|
21
|
+
}): boolean;
|
|
22
|
+
export declare function isRequiredCompactionFallbackReason(reason: SessionBeforeCompactEvent["reason"]): boolean;
|
|
23
|
+
export declare function recentCheckpoint(ctx: ExtensionContext): checkpointState.AgentCheckpoint | null;
|
|
24
|
+
export declare function endCompactionFeedback(ctx: ExtensionContext, signal: AbortSignal | undefined, result: SpeculativeCompactionResult, remoteFallbackReason?: string): void;
|
|
25
|
+
export declare function linkAbortSignal(source: AbortSignal | undefined, target: AbortController): () => void;
|
|
26
|
+
export declare function createBlockingRemoteCompactionEvent(ctx: ExtensionContext, snapshot: SpeculativeCompactionSnapshot, customInstructions: string, signal: AbortSignal): SessionBeforeCompactEvent;
|
|
27
|
+
//# sourceMappingURL=extension-wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-wiring.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/extension-wiring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AASnG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,MAAM,CAE3G;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMnG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,GAAG,YAAY,CAQhG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,IAAI,eAAe,GAAG;IAC7F,OAAO,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAC5E,CAEA;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAEnF;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,yBAAyB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAEvG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAAC,eAAe,GAAG,IAAI,CAI9F;AAMD,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,2BAA2B,EACnC,oBAAoB,CAAC,EAAE,MAAM,GAC3B,IAAI,CAeN;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,CASpG;AAED,wBAAgB,mCAAmC,CAClD,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,6BAA6B,EACvC,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,WAAW,GACjB,yBAAyB,CAW3B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import * as checkpointState from "./checkpoint-state.js";
|
|
3
|
+
const IMAGE_PROMPT_TOKEN_ESTIMATE = 1_200;
|
|
4
|
+
const MAX_OUTPUT_RESERVE_RATIO = 0.5;
|
|
5
|
+
function approxTokens(text) {
|
|
6
|
+
return Math.ceil(text.length / 4);
|
|
7
|
+
}
|
|
8
|
+
export function estimatePendingPromptTokens(event) {
|
|
9
|
+
return approxTokens(event.prompt ?? "") + (event.images?.length ?? 0) * IMAGE_PROMPT_TOKEN_ESTIMATE;
|
|
10
|
+
}
|
|
11
|
+
export function getPromptContextWindow(contextWindow, maxTokens) {
|
|
12
|
+
if (typeof maxTokens !== "number" || !Number.isFinite(maxTokens) || maxTokens <= 0 || contextWindow <= 0) {
|
|
13
|
+
return contextWindow;
|
|
14
|
+
}
|
|
15
|
+
const outputReserve = Math.min(maxTokens, Math.floor(contextWindow * MAX_OUTPUT_RESERVE_RATIO));
|
|
16
|
+
return contextWindow - outputReserve;
|
|
17
|
+
}
|
|
18
|
+
export function withAdditionalTokens(usage, additionalTokens) {
|
|
19
|
+
if (usage.tokens === null || additionalTokens <= 0)
|
|
20
|
+
return usage;
|
|
21
|
+
const tokens = usage.tokens + additionalTokens;
|
|
22
|
+
return {
|
|
23
|
+
...usage,
|
|
24
|
+
tokens,
|
|
25
|
+
percent: usage.contextWindow > 0 ? (tokens / usage.contextWindow) * 100 : usage.percent,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function isMonitorableMessageEvent(event) {
|
|
29
|
+
return "content" in event.message && Array.isArray(event.message.content);
|
|
30
|
+
}
|
|
31
|
+
export function isAbortedAssistantMessage(event) {
|
|
32
|
+
return event.message.role === "assistant" && "stopReason" in event.message && event.message.stopReason === "aborted";
|
|
33
|
+
}
|
|
34
|
+
export function isRequiredCompactionFallbackReason(reason) {
|
|
35
|
+
return reason === "threshold" || reason === "overflow";
|
|
36
|
+
}
|
|
37
|
+
export function recentCheckpoint(ctx) {
|
|
38
|
+
const checkpoint = checkpointState.getLatestCheckpoint(ctx);
|
|
39
|
+
if (!checkpoint?.timestamp)
|
|
40
|
+
return null;
|
|
41
|
+
return Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;
|
|
42
|
+
}
|
|
43
|
+
function shouldEndFeedback(result) {
|
|
44
|
+
return !result.applied && result.reason !== "rejected";
|
|
45
|
+
}
|
|
46
|
+
export function endCompactionFeedback(ctx, signal, result, remoteFallbackReason) {
|
|
47
|
+
if (shouldEndFeedback(result)) {
|
|
48
|
+
// Surface the concrete failure instead of the generic "Compaction did not
|
|
49
|
+
// apply": the remote stage's reason (e.g. remote-compaction-timeout) and the
|
|
50
|
+
// terminal local reason (unavailable / stale), so the decision log and TUI
|
|
51
|
+
// show what actually happened. An aborted compaction renders "Compaction
|
|
52
|
+
// cancelled" downstream and must not carry a failure message.
|
|
53
|
+
const localReason = result.applied ? undefined : result.reason;
|
|
54
|
+
const parts = [remoteFallbackReason, localReason].filter((part) => Boolean(part));
|
|
55
|
+
const errorMessage = signal?.aborted || parts.length === 0
|
|
56
|
+
? undefined
|
|
57
|
+
: `Compaction did not apply: ${parts.join("; local fallback ")}`;
|
|
58
|
+
ctx.endCompaction?.({ reason: "extension", signal, aborted: signal?.aborted, errorMessage });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function linkAbortSignal(source, target) {
|
|
62
|
+
if (!source)
|
|
63
|
+
return () => { };
|
|
64
|
+
if (source.aborted) {
|
|
65
|
+
target.abort();
|
|
66
|
+
return () => { };
|
|
67
|
+
}
|
|
68
|
+
const abort = () => target.abort();
|
|
69
|
+
source.addEventListener("abort", abort, { once: true });
|
|
70
|
+
return () => source.removeEventListener("abort", abort);
|
|
71
|
+
}
|
|
72
|
+
export function createBlockingRemoteCompactionEvent(ctx, snapshot, customInstructions, signal) {
|
|
73
|
+
return {
|
|
74
|
+
type: "session_before_compact",
|
|
75
|
+
reason: "extension",
|
|
76
|
+
willRetry: false,
|
|
77
|
+
requestId: randomUUID(),
|
|
78
|
+
preparation: snapshot.preparation,
|
|
79
|
+
branchEntries: ctx.sessionManager.getBranch(),
|
|
80
|
+
customInstructions,
|
|
81
|
+
signal,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=extension-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-wiring.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/extension-wiring.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ContextUsage, ExtensionContext, MessageEndEvent, SessionBeforeCompactEvent } from \"../../types.ts\";\nimport * as checkpointState from \"./checkpoint-state.ts\";\nimport type { SpeculativeCompactionResult, SpeculativeCompactionSnapshot } from \"./speculative.ts\";\n\nconst IMAGE_PROMPT_TOKEN_ESTIMATE = 1_200;\nconst MAX_OUTPUT_RESERVE_RATIO = 0.5;\n\nfunction approxTokens(text: string): number {\n\treturn Math.ceil(text.length / 4);\n}\n\nexport function estimatePendingPromptTokens(event: { prompt?: string; images?: readonly unknown[] }): number {\n\treturn approxTokens(event.prompt ?? \"\") + (event.images?.length ?? 0) * IMAGE_PROMPT_TOKEN_ESTIMATE;\n}\n\nexport function getPromptContextWindow(contextWindow: number, maxTokens: number | undefined): number {\n\tif (typeof maxTokens !== \"number\" || !Number.isFinite(maxTokens) || maxTokens <= 0 || contextWindow <= 0) {\n\t\treturn contextWindow;\n\t}\n\tconst outputReserve = Math.min(maxTokens, Math.floor(contextWindow * MAX_OUTPUT_RESERVE_RATIO));\n\treturn contextWindow - outputReserve;\n}\n\nexport function withAdditionalTokens(usage: ContextUsage, additionalTokens: number): ContextUsage {\n\tif (usage.tokens === null || additionalTokens <= 0) return usage;\n\tconst tokens = usage.tokens + additionalTokens;\n\treturn {\n\t\t...usage,\n\t\ttokens,\n\t\tpercent: usage.contextWindow > 0 ? (tokens / usage.contextWindow) * 100 : usage.percent,\n\t};\n}\n\nexport function isMonitorableMessageEvent(event: MessageEndEvent): event is MessageEndEvent & {\n\tmessage: AgentMessage & { content: Array<{ type: string; text?: string }> };\n} {\n\treturn \"content\" in event.message && Array.isArray(event.message.content);\n}\n\nexport function isAbortedAssistantMessage(event: { message: AgentMessage }): boolean {\n\treturn event.message.role === \"assistant\" && \"stopReason\" in event.message && event.message.stopReason === \"aborted\";\n}\n\nexport function isRequiredCompactionFallbackReason(reason: SessionBeforeCompactEvent[\"reason\"]): boolean {\n\treturn reason === \"threshold\" || reason === \"overflow\";\n}\n\nexport function recentCheckpoint(ctx: ExtensionContext): checkpointState.AgentCheckpoint | null {\n\tconst checkpoint = checkpointState.getLatestCheckpoint(ctx);\n\tif (!checkpoint?.timestamp) return null;\n\treturn Date.now() - checkpoint.timestamp <= 60_000 ? checkpoint : null;\n}\n\nfunction shouldEndFeedback(result: SpeculativeCompactionResult): boolean {\n\treturn !result.applied && result.reason !== \"rejected\";\n}\n\nexport function endCompactionFeedback(\n\tctx: ExtensionContext,\n\tsignal: AbortSignal | undefined,\n\tresult: SpeculativeCompactionResult,\n\tremoteFallbackReason?: string,\n): void {\n\tif (shouldEndFeedback(result)) {\n\t\t// Surface the concrete failure instead of the generic \"Compaction did not\n\t\t// apply\": the remote stage's reason (e.g. remote-compaction-timeout) and the\n\t\t// terminal local reason (unavailable / stale), so the decision log and TUI\n\t\t// show what actually happened. An aborted compaction renders \"Compaction\n\t\t// cancelled\" downstream and must not carry a failure message.\n\t\tconst localReason = result.applied ? undefined : result.reason;\n\t\tconst parts = [remoteFallbackReason, localReason].filter((part): part is string => Boolean(part));\n\t\tconst errorMessage =\n\t\t\tsignal?.aborted || parts.length === 0\n\t\t\t\t? undefined\n\t\t\t\t: `Compaction did not apply: ${parts.join(\"; local fallback \")}`;\n\t\tctx.endCompaction?.({ reason: \"extension\", signal, aborted: signal?.aborted, errorMessage });\n\t}\n}\n\nexport function linkAbortSignal(source: AbortSignal | undefined, target: AbortController): () => void {\n\tif (!source) return () => {};\n\tif (source.aborted) {\n\t\ttarget.abort();\n\t\treturn () => {};\n\t}\n\tconst abort = () => target.abort();\n\tsource.addEventListener(\"abort\", abort, { once: true });\n\treturn () => source.removeEventListener(\"abort\", abort);\n}\n\nexport function createBlockingRemoteCompactionEvent(\n\tctx: ExtensionContext,\n\tsnapshot: SpeculativeCompactionSnapshot,\n\tcustomInstructions: string,\n\tsignal: AbortSignal,\n): SessionBeforeCompactEvent {\n\treturn {\n\t\ttype: \"session_before_compact\",\n\t\treason: \"extension\",\n\t\twillRetry: false,\n\t\trequestId: randomUUID(),\n\t\tpreparation: snapshot.preparation,\n\t\tbranchEntries: ctx.sessionManager.getBranch(),\n\t\tcustomInstructions,\n\t\tsignal,\n\t};\n}\n"]}
|
|
@@ -13,4 +13,5 @@ export interface IdleCompactionDecision {
|
|
|
13
13
|
mode: ExtensionMode;
|
|
14
14
|
}
|
|
15
15
|
export declare function shouldRunIdleCompaction(decision: IdleCompactionDecision): boolean;
|
|
16
|
+
export declare function shouldWarmAtIdle(decision: IdleCompactionDecision): boolean;
|
|
16
17
|
//# sourceMappingURL=idle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/idle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/idle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,aAAa,CAAC;AAG5E,eAAO,MAAM,4BAA4B,2FACgD,CAAC;AAI1F,MAAM,WAAW,sBAAsB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;CACpB;AAaD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAG1E"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import { shouldTriggerCompaction } from "./policy.js";
|
|
2
|
+
import { WARM_GENERATION_FLOOR_RATIO } from "./speculation-lead.js";
|
|
2
3
|
export const IDLE_COMPACTION_INSTRUCTIONS = "Proactively compact at idle before the next agent turn, while the user is not waiting.";
|
|
3
4
|
const PERSISTENT_MODES = new Set(["tui", "rpc", "app-server"]);
|
|
4
|
-
|
|
5
|
+
function isIdleEligible(decision) {
|
|
5
6
|
if (decision.willRetry)
|
|
6
7
|
return false;
|
|
7
8
|
if (decision.aborted)
|
|
8
9
|
return false;
|
|
9
10
|
if (!PERSISTENT_MODES.has(decision.mode))
|
|
10
11
|
return false;
|
|
12
|
+
if (!decision.settings.enabled)
|
|
13
|
+
return false;
|
|
11
14
|
if (decision.settings.idleCompactionEnabled === false)
|
|
12
15
|
return false;
|
|
13
16
|
if (decision.breakerTripped)
|
|
14
17
|
return false;
|
|
15
18
|
if (!decision.usage)
|
|
16
19
|
return false;
|
|
17
|
-
|
|
20
|
+
return decision.usage.tokens !== null;
|
|
21
|
+
}
|
|
22
|
+
export function shouldRunIdleCompaction(decision) {
|
|
23
|
+
if (!isIdleEligible(decision) || !decision.usage)
|
|
18
24
|
return false;
|
|
19
25
|
return shouldTriggerCompaction(decision.usage, decision.contextWindow, decision.settings, decision.lastYield);
|
|
20
26
|
}
|
|
27
|
+
export function shouldWarmAtIdle(decision) {
|
|
28
|
+
if (!isIdleEligible(decision) || !decision.usage || decision.usage.tokens === null)
|
|
29
|
+
return false;
|
|
30
|
+
return decision.usage.tokens >= decision.contextWindow * WARM_GENERATION_FLOOR_RATIO;
|
|
31
|
+
}
|
|
21
32
|
//# sourceMappingURL=idle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/idle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/idle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE,MAAM,CAAC,MAAM,4BAA4B,GACxC,wFAAwF,CAAC;AAE1F,MAAM,gBAAgB,GAA+B,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAa3F,SAAS,cAAc,CAAC,QAAgC;IACvD,IAAI,QAAQ,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,QAAQ,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgC;IACvE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgC;IAChE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjG,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,aAAa,GAAG,2BAA2B,CAAC;AACtF,CAAC","sourcesContent":["import type { CompactionSettings } from \"../../../compaction/index.ts\";\nimport type { ContextUsage, ExtensionMode } from \"../../types.ts\";\nimport { type CompactionYield, shouldTriggerCompaction } from \"./policy.ts\";\nimport { WARM_GENERATION_FLOOR_RATIO } from \"./speculation-lead.ts\";\n\nexport const IDLE_COMPACTION_INSTRUCTIONS =\n\t\"Proactively compact at idle before the next agent turn, while the user is not waiting.\";\n\nconst PERSISTENT_MODES: ReadonlySet<ExtensionMode> = new Set([\"tui\", \"rpc\", \"app-server\"]);\n\nexport interface IdleCompactionDecision {\n\twillRetry: boolean;\n\taborted: boolean;\n\tsettings: CompactionSettings;\n\tusage: ContextUsage | undefined;\n\tcontextWindow: number;\n\tbreakerTripped: boolean;\n\tlastYield?: CompactionYield;\n\tmode: ExtensionMode;\n}\n\nfunction isIdleEligible(decision: IdleCompactionDecision): boolean {\n\tif (decision.willRetry) return false;\n\tif (decision.aborted) return false;\n\tif (!PERSISTENT_MODES.has(decision.mode)) return false;\n\tif (!decision.settings.enabled) return false;\n\tif (decision.settings.idleCompactionEnabled === false) return false;\n\tif (decision.breakerTripped) return false;\n\tif (!decision.usage) return false;\n\treturn decision.usage.tokens !== null;\n}\n\nexport function shouldRunIdleCompaction(decision: IdleCompactionDecision): boolean {\n\tif (!isIdleEligible(decision) || !decision.usage) return false;\n\treturn shouldTriggerCompaction(decision.usage, decision.contextWindow, decision.settings, decision.lastYield);\n}\n\nexport function shouldWarmAtIdle(decision: IdleCompactionDecision): boolean {\n\tif (!isIdleEligible(decision) || !decision.usage || decision.usage.tokens === null) return false;\n\treturn decision.usage.tokens >= decision.contextWindow * WARM_GENERATION_FLOOR_RATIO;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "../../types.ts";
|
|
2
2
|
import { type OpenAiRemoteCompactionDependencies } from "./openai-remote.ts";
|
|
3
|
-
export
|
|
3
|
+
export { getPromptContextWindow } from "./extension-wiring.ts";
|
|
4
4
|
export default function compactionExtension(pi: ExtensionAPI, remoteCompactionDependencies?: OpenAiRemoteCompactionDependencies): void;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAoE,MAAM,gBAAgB,CAAC;AAyBrH,OAAO,EACN,KAAK,kCAAkC,EAIvC,MAAM,oBAAoB,CAAC;AAqC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA0B/D,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAC1C,EAAE,EAAE,YAAY,EAChB,4BAA4B,GAAE,kCAAuC,GACnE,IAAI,CAo5BN"}
|