@code-yeongyu/senpi 0.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4225 -0
- package/README.md +654 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +9 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +53 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +342 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +83 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +92 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +399 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +300 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +93 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +118 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +643 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2702 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +441 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +93 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +285 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +129 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +635 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +165 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/dynamic-prompt/build.d.ts +15 -0
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/build.js +61 -0
- package/dist/core/dynamic-prompt/build.js.map +1 -0
- package/dist/core/dynamic-prompt/exploration.d.ts +2 -0
- package/dist/core/dynamic-prompt/exploration.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/exploration.js +8 -0
- package/dist/core/dynamic-prompt/exploration.js.map +1 -0
- package/dist/core/dynamic-prompt/identity.d.ts +2 -0
- package/dist/core/dynamic-prompt/identity.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/identity.js +4 -0
- package/dist/core/dynamic-prompt/identity.js.map +1 -0
- package/dist/core/dynamic-prompt/index.d.ts +13 -0
- package/dist/core/dynamic-prompt/index.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/index.js +11 -0
- package/dist/core/dynamic-prompt/index.js.map +1 -0
- package/dist/core/dynamic-prompt/intent-gate.d.ts +5 -0
- package/dist/core/dynamic-prompt/intent-gate.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/intent-gate.js +57 -0
- package/dist/core/dynamic-prompt/intent-gate.js.map +1 -0
- package/dist/core/dynamic-prompt/parallel-tools.d.ts +2 -0
- package/dist/core/dynamic-prompt/parallel-tools.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/parallel-tools.js +10 -0
- package/dist/core/dynamic-prompt/parallel-tools.js.map +1 -0
- package/dist/core/dynamic-prompt/policies.d.ts +2 -0
- package/dist/core/dynamic-prompt/policies.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/policies.js +14 -0
- package/dist/core/dynamic-prompt/policies.js.map +1 -0
- package/dist/core/dynamic-prompt/style.d.ts +2 -0
- package/dist/core/dynamic-prompt/style.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/style.js +10 -0
- package/dist/core/dynamic-prompt/style.js.map +1 -0
- package/dist/core/dynamic-prompt/tool-categorization.d.ts +4 -0
- package/dist/core/dynamic-prompt/tool-categorization.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/tool-categorization.js +26 -0
- package/dist/core/dynamic-prompt/tool-categorization.js.map +1 -0
- package/dist/core/dynamic-prompt/tool-section.d.ts +7 -0
- package/dist/core/dynamic-prompt/tool-section.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/tool-section.js +46 -0
- package/dist/core/dynamic-prompt/tool-section.js.map +1 -0
- package/dist/core/dynamic-prompt/types.d.ts +5 -0
- package/dist/core/dynamic-prompt/types.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/types.js +2 -0
- package/dist/core/dynamic-prompt/types.js.map +1 -0
- package/dist/core/dynamic-prompt/verification.d.ts +2 -0
- package/dist/core/dynamic-prompt/verification.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/verification.js +12 -0
- package/dist/core/dynamic-prompt/verification.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +224 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.d.ts +25 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.js +38 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts +3 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.js +32 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/index.d.ts +3 -0
- package/dist/core/extensions/builtin/agent-system/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/index.js +42 -0
- package/dist/core/extensions/builtin/agent-system/index.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/loader.d.ts +4 -0
- package/dist/core/extensions/builtin/agent-system/loader.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/loader.js +59 -0
- package/dist/core/extensions/builtin/agent-system/loader.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/permission.d.ts +11 -0
- package/dist/core/extensions/builtin/agent-system/permission.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/permission.js +24 -0
- package/dist/core/extensions/builtin/agent-system/permission.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/registry.d.ts +10 -0
- package/dist/core/extensions/builtin/agent-system/registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/registry.js +50 -0
- package/dist/core/extensions/builtin/agent-system/registry.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/types.d.ts +9 -0
- package/dist/core/extensions/builtin/agent-system/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/types.js +2 -0
- package/dist/core/extensions/builtin/agent-system/types.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.d.ts +4 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.js +58 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.js +79 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.js +79 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts +53 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.js +676 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts +25 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.js +244 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts +6 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.js +112 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.js +112 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.js +102 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts +10 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.js +109 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/index.d.ts +3 -0
- package/dist/core/extensions/builtin/background-task/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/index.js +207 -0
- package/dist/core/extensions/builtin/background-task/index.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/manager.d.ts +17 -0
- package/dist/core/extensions/builtin/background-task/manager.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/manager.js +114 -0
- package/dist/core/extensions/builtin/background-task/manager.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/notification.d.ts +22 -0
- package/dist/core/extensions/builtin/background-task/notification.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/notification.js +105 -0
- package/dist/core/extensions/builtin/background-task/notification.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/output-tool.d.ts +11 -0
- package/dist/core/extensions/builtin/background-task/output-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/output-tool.js +127 -0
- package/dist/core/extensions/builtin/background-task/output-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/spawner.d.ts +8 -0
- package/dist/core/extensions/builtin/background-task/spawner.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/spawner.js +207 -0
- package/dist/core/extensions/builtin/background-task/spawner.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/task-tool.d.ts +20 -0
- package/dist/core/extensions/builtin/background-task/task-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/task-tool.js +302 -0
- package/dist/core/extensions/builtin/background-task/task-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/types.d.ts +72 -0
- package/dist/core/extensions/builtin/background-task/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/types.js +32 -0
- package/dist/core/extensions/builtin/background-task/types.js.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/index.d.ts +5 -0
- package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/index.js +20 -0
- package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +17 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.js +28 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts +46 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.js +131 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts +23 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.js +36 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +67 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js +90 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts +3 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.js +199 -0
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +11 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.js +40 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts +15 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.js +26 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/policy.d.ts +19 -0
- package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/policy.js +96 -0
- package/dist/core/extensions/builtin/compaction/policy.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/prompts.d.ts +16 -0
- package/dist/core/extensions/builtin/compaction/prompts.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/prompts.js +252 -0
- package/dist/core/extensions/builtin/compaction/prompts.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts +57 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.js +274 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +58 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.js +230 -0
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/state.d.ts +17 -0
- package/dist/core/extensions/builtin/compaction/state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/state.js +15 -0
- package/dist/core/extensions/builtin/compaction/state.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts +25 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.js +77 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts +4 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.js +85 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.js.map +1 -0
- package/dist/core/extensions/builtin/diff.d.ts +9 -0
- package/dist/core/extensions/builtin/diff.d.ts.map +1 -0
- package/dist/core/extensions/builtin/diff.js +188 -0
- package/dist/core/extensions/builtin/diff.js.map +1 -0
- package/dist/core/extensions/builtin/files.d.ts +9 -0
- package/dist/core/extensions/builtin/files.d.ts.map +1 -0
- package/dist/core/extensions/builtin/files.js +186 -0
- package/dist/core/extensions/builtin/files.js.map +1 -0
- package/dist/core/extensions/builtin/google-code-execution/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-code-execution/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-code-execution/index.js +73 -0
- package/dist/core/extensions/builtin/google-code-execution/index.js.map +1 -0
- package/dist/core/extensions/builtin/google-google-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-google-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-google-search/index.js +83 -0
- package/dist/core/extensions/builtin/google-google-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/google-url-context/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-url-context/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-url-context/index.js +82 -0
- package/dist/core/extensions/builtin/google-url-context/index.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.js +159 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts +8 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.js +29 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts +8 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.js +14 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +54 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts +12 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.js +11 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.js +13 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.js +157 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js +36 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js +50 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts +13 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js +306 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts +7 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.js +73 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js +49 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts +23 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js +197 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts +4 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js +76 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts +4 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.js +16 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js +116 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts +109 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.js +2 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts +2 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js +5 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js.map +1 -0
- package/dist/core/extensions/builtin/index.d.ts +18 -0
- package/dist/core/extensions/builtin/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/index.js +58 -0
- package/dist/core/extensions/builtin/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts +6 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js +57 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts +10 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.js +95 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-web-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/openai-web-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-web-search/index.js +111 -0
- package/dist/core/extensions/builtin/openai-web-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/arity.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/arity.js +168 -0
- package/dist/core/extensions/builtin/permission-system/arity.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/cli.d.ts +6 -0
- package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/cli.js +33 -0
- package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/config.d.ts +7 -0
- package/dist/core/extensions/builtin/permission-system/config.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/config.js +49 -0
- package/dist/core/extensions/builtin/permission-system/config.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.d.ts +9 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.js +14 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/events.d.ts +67 -0
- package/dist/core/extensions/builtin/permission-system/events.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/events.js +63 -0
- package/dist/core/extensions/builtin/permission-system/events.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.js +138 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/index.d.ts +3 -0
- package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/index.js +134 -0
- package/dist/core/extensions/builtin/permission-system/index.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts +9 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.js +43 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts +16 -0
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/parsers.js +150 -0
- package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/prompt.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/prompt.js +74 -0
- package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/service.d.ts +27 -0
- package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/service.js +129 -0
- package/dist/core/extensions/builtin/permission-system/service.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/settings.d.ts +18 -0
- package/dist/core/extensions/builtin/permission-system/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/settings.js +23 -0
- package/dist/core/extensions/builtin/permission-system/settings.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/storage.d.ts +6 -0
- package/dist/core/extensions/builtin/permission-system/storage.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/storage.js +58 -0
- package/dist/core/extensions/builtin/permission-system/storage.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/types.d.ts +61 -0
- package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/types.js +29 -0
- package/dist/core/extensions/builtin/permission-system/types.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.js +58 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js +8 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js +8 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts +2 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.js +31 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js +17 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js +15 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js +15 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +21 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.js +13 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/index.js +56 -0
- package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts +12 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.js +101 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +7 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js +26 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-url-widget.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-url-widget.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-url-widget.js +127 -0
- package/dist/core/extensions/builtin/prompt-url-widget.js.map +1 -0
- package/dist/core/extensions/builtin/redraws.d.ts +8 -0
- package/dist/core/extensions/builtin/redraws.d.ts.map +1 -0
- package/dist/core/extensions/builtin/redraws.js +23 -0
- package/dist/core/extensions/builtin/redraws.js.map +1 -0
- package/dist/core/extensions/builtin/service-tier.d.ts +6 -0
- package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -0
- package/dist/core/extensions/builtin/service-tier.js +29 -0
- package/dist/core/extensions/builtin/service-tier.js.map +1 -0
- package/dist/core/extensions/builtin/system-messages.d.ts +47 -0
- package/dist/core/extensions/builtin/system-messages.d.ts.map +1 -0
- package/dist/core/extensions/builtin/system-messages.js +117 -0
- package/dist/core/extensions/builtin/system-messages.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +10 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.js +33 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +2 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.js +2 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +5 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js +34 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +11 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js +204 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/index.d.ts +5 -0
- package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/index.js +39 -0
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -0
- package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/prompt.js +164 -0
- package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/state.d.ts +29 -0
- package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/state.js +74 -0
- package/dist/core/extensions/builtin/todotools/state.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts +4 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.js +35 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts +10 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.js +92 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.js.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts +4 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.js +11 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.js.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +3 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +75 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -0
- package/dist/core/extensions/builtin/tps.d.ts +3 -0
- package/dist/core/extensions/builtin/tps.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tps.js +65 -0
- package/dist/core/extensions/builtin/tps.js.map +1 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +27 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +505 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +164 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +900 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1240 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +310 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +295 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +79 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +138 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +177 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +853 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +116 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +498 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +198 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1995 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +250 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +23 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +126 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +184 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +771 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +129 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +339 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +333 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1128 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +294 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +810 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +404 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +25 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +120 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +31 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +335 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +85 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +338 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +49 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +324 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +37 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +298 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +304 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +40 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +112 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +169 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +50 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +178 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +81 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +36 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +205 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +213 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +603 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +311 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +32 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +209 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +54 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +503 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +70 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +79 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +140 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +111 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +78 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/favorite-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/favorite-models-selector.js +302 -0
- package/dist/modes/interactive/components/favorite-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +193 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +32 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +33 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +46 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +160 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +48 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +279 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +861 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +376 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +52 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +66 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +339 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1102 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +29 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +360 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4615 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/startup-tools.d.ts +8 -0
- package/dist/modes/interactive/startup-tools.d.ts.map +1 -0
- package/dist/modes/interactive/startup-tools.js +6 -0
- package/dist/modes/interactive/startup-tools.js.map +1 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +973 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +144 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +224 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +410 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +601 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +419 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +460 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/senpi +20 -0
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +12 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +86 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +8 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +14 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize.d.ts +36 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +137 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +2 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +26 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +50 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +6 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +190 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +256 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +78 -0
- package/dist/utils/version-check.js.map +1 -0
- package/docs/agents.md +348 -0
- package/docs/compaction-guide.md +240 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +646 -0
- package/docs/development.md +80 -0
- package/docs/docs.json +148 -0
- package/docs/extensions.md +2596 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +66 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +474 -0
- package/docs/packages.md +223 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +243 -0
- package/docs/quickstart.md +142 -0
- package/docs/rpc.md +1407 -0
- package/docs/sdk.md +1149 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +330 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +232 -0
- package/docs/terminal-setup.md +106 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +918 -0
- package/docs/usage.md +277 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +208 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1348 -0
- package/examples/extensions/overlay-test.ts +150 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +436 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +172 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +987 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +141 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +22 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +72 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +44 -0
- package/examples/sdk/06-extensions.ts +90 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +48 -0
- package/examples/sdk/12-full-control.ts +73 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +147 -0
- package/package.json +105 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { ExtensionAPI, ExtensionContext } from "../../types.js";
|
|
3
|
+
export interface AgentCheckpoint {
|
|
4
|
+
activeTools?: string[];
|
|
5
|
+
thinkingLevel?: ThinkingLevel | null;
|
|
6
|
+
modelId?: string | undefined;
|
|
7
|
+
agentName?: string | null;
|
|
8
|
+
timestamp?: number;
|
|
9
|
+
model?: {
|
|
10
|
+
provider: string;
|
|
11
|
+
modelId: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
interface LegacyCaptureInput {
|
|
15
|
+
agentName?: string;
|
|
16
|
+
model?: {
|
|
17
|
+
provider: string;
|
|
18
|
+
modelId: string;
|
|
19
|
+
};
|
|
20
|
+
activeTools?: string[];
|
|
21
|
+
}
|
|
22
|
+
interface AppendEntryTarget {
|
|
23
|
+
appendEntry<T = unknown>(customType: string, data?: T): void;
|
|
24
|
+
}
|
|
25
|
+
interface LegacyCheckpointSource {
|
|
26
|
+
persistedCheckpoints?: AgentCheckpoint[];
|
|
27
|
+
appendCalls?: Array<{
|
|
28
|
+
customType: string;
|
|
29
|
+
data: unknown;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
export declare function captureAgentCheckpoint(pi: ExtensionAPI, ctx: ExtensionContext): AgentCheckpoint;
|
|
33
|
+
export declare function captureAgentCheckpoint(input: LegacyCaptureInput): AgentCheckpoint;
|
|
34
|
+
export declare function persistCheckpoint(pi: ExtensionAPI, checkpoint: AgentCheckpoint): void;
|
|
35
|
+
export declare function persistCheckpoint(checkpoint: AgentCheckpoint, pi: AppendEntryTarget): void;
|
|
36
|
+
export declare function getLatestCheckpoint(ctx: ExtensionContext): AgentCheckpoint | null;
|
|
37
|
+
export declare function getLatestCheckpoint(source: LegacyCheckpointSource): AgentCheckpoint | undefined;
|
|
38
|
+
export declare function injectRestorationDirective(systemPrompt: string, checkpoint: AgentCheckpoint): string;
|
|
39
|
+
export declare function injectRestorationDirective(checkpoint?: AgentCheckpoint, fallback?: {
|
|
40
|
+
model?: {
|
|
41
|
+
provider: string;
|
|
42
|
+
modelId: string;
|
|
43
|
+
};
|
|
44
|
+
}): string;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=checkpoint-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-state.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/checkpoint-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMrE,MAAM,WAAW,eAAe;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAOD,UAAU,kBAAkB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,UAAU,iBAAiB;IAC1B,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;CAC7D;AAED,UAAU,sBAAsB;IAC/B,oBAAoB,CAAC,EAAE,eAAe,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3D;AA2DD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAAC;AACjG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,CAAC;AA2BnF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;AACvF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAe5F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAAC;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,eAAe,GAAG,SAAS,CAAC;AAwCjG,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,MAAM,CAAC;AACtG,wBAAgB,0BAA0B,CACzC,UAAU,CAAC,EAAE,eAAe,EAC5B,QAAQ,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D,MAAM,CAAC","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ExtensionAPI, ExtensionContext } from \"../../types.js\";\n\nconst CHECKPOINT_CUSTOM_TYPE = \"compaction.agent-checkpoint\";\nconst CHECKPOINT_SCHEMA = \"senpi.compaction.agent-checkpoint.v1\";\nconst RESTORATION_DIRECTIVE = \"[restore checkpointed session agent configuration after compaction]\";\n\nexport interface AgentCheckpoint {\n\tactiveTools?: string[];\n\tthinkingLevel?: ThinkingLevel | null;\n\tmodelId?: string | undefined;\n\tagentName?: string | null;\n\ttimestamp?: number;\n\tmodel?: {\n\t\tprovider: string;\n\t\tmodelId: string;\n\t};\n}\n\ninterface PersistedCheckpointPayload {\n\tschema: typeof CHECKPOINT_SCHEMA;\n\tdata: AgentCheckpoint;\n}\n\ninterface LegacyCaptureInput {\n\tagentName?: string;\n\tmodel?: {\n\t\tprovider: string;\n\t\tmodelId: string;\n\t};\n\tactiveTools?: string[];\n}\n\ninterface AppendEntryTarget {\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n}\n\ninterface LegacyCheckpointSource {\n\tpersistedCheckpoints?: AgentCheckpoint[];\n\tappendCalls?: Array<{ customType: string; data: unknown }>;\n}\n\nfunction isExtensionAPI(value: ExtensionAPI | LegacyCaptureInput): value is ExtensionAPI {\n\treturn \"getActiveTools\" in value && \"getThinkingLevel\" in value;\n}\n\nfunction deriveAgentName(ctx: ExtensionContext): string | null {\n\tfor (let index = ctx.sessionManager.getEntries().length - 1; index >= 0; index--) {\n\t\tconst entry = ctx.sessionManager.getEntries()[index];\n\t\tif (entry.type !== \"custom\") continue;\n\t\tconst data = entry.data;\n\t\tif (isRecord(data) && typeof data.agentName === \"string\") {\n\t\t\treturn data.agentName;\n\t\t}\n\t\tif (isRecord(data) && typeof data.agent === \"string\") {\n\t\t\treturn data.agent;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction parseCheckpoint(value: unknown): AgentCheckpoint | null {\n\tif (!isRecord(value)) return null;\n\tif (value.schema === CHECKPOINT_SCHEMA && isRecord(value.data)) {\n\t\treturn parseCheckpoint(value.data);\n\t}\n\n\tconst activeTools = Array.isArray(value.activeTools)\n\t\t? value.activeTools.filter((tool): tool is string => typeof tool === \"string\")\n\t\t: [];\n\tconst model = isRecord(value.model)\n\t\t? {\n\t\t\t\tprovider: typeof value.model.provider === \"string\" ? value.model.provider : \"\",\n\t\t\t\tmodelId: typeof value.model.modelId === \"string\" ? value.model.modelId : \"\",\n\t\t\t}\n\t\t: undefined;\n\n\treturn {\n\t\tactiveTools,\n\t\tthinkingLevel: typeof value.thinkingLevel === \"string\" ? (value.thinkingLevel as ThinkingLevel) : null,\n\t\tmodelId: typeof value.modelId === \"string\" ? value.modelId : model?.modelId,\n\t\tagentName: typeof value.agentName === \"string\" ? value.agentName : null,\n\t\ttimestamp: typeof value.timestamp === \"number\" ? value.timestamp : undefined,\n\t\tmodel,\n\t};\n}\n\nfunction serializeCheckpoint(checkpoint: AgentCheckpoint): PersistedCheckpointPayload & AgentCheckpoint {\n\treturn {\n\t\t...checkpoint,\n\t\tschema: CHECKPOINT_SCHEMA,\n\t\tdata: checkpoint,\n\t};\n}\n\nexport function captureAgentCheckpoint(pi: ExtensionAPI, ctx: ExtensionContext): AgentCheckpoint;\nexport function captureAgentCheckpoint(input: LegacyCaptureInput): AgentCheckpoint;\nexport function captureAgentCheckpoint(\n\tpiOrInput: ExtensionAPI | LegacyCaptureInput,\n\tctx?: ExtensionContext,\n): AgentCheckpoint {\n\tif (isExtensionAPI(piOrInput) && ctx) {\n\t\treturn {\n\t\t\tactiveTools: piOrInput.getActiveTools(),\n\t\t\tthinkingLevel: piOrInput.getThinkingLevel(),\n\t\t\tmodelId: ctx.model?.id,\n\t\t\tagentName: deriveAgentName(ctx),\n\t\t\ttimestamp: Date.now(),\n\t\t\tmodel: ctx.model ? { provider: ctx.model.provider, modelId: ctx.model.id } : undefined,\n\t\t};\n\t}\n\n\tconst input = piOrInput as LegacyCaptureInput;\n\treturn {\n\t\tactiveTools: input.activeTools ?? [],\n\t\tthinkingLevel: null,\n\t\tmodelId: input.model?.modelId,\n\t\tagentName: input.agentName ?? null,\n\t\ttimestamp: Date.now(),\n\t\tmodel: input.model,\n\t};\n}\n\nexport function persistCheckpoint(pi: ExtensionAPI, checkpoint: AgentCheckpoint): void;\nexport function persistCheckpoint(checkpoint: AgentCheckpoint, pi: AppendEntryTarget): void;\nexport function persistCheckpoint(\n\tpiOrCheckpoint: ExtensionAPI | AgentCheckpoint,\n\tcheckpointOrPi: AgentCheckpoint | AppendEntryTarget,\n): void {\n\tif (\"appendEntry\" in piOrCheckpoint) {\n\t\tconst checkpoint = checkpointOrPi as AgentCheckpoint;\n\t\tpiOrCheckpoint.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(checkpoint));\n\t\treturn;\n\t}\n\n\tconst pi = checkpointOrPi as AppendEntryTarget;\n\tpi.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(piOrCheckpoint));\n}\n\nexport function getLatestCheckpoint(ctx: ExtensionContext): AgentCheckpoint | null;\nexport function getLatestCheckpoint(source: LegacyCheckpointSource): AgentCheckpoint | undefined;\nexport function getLatestCheckpoint(\n\tsource: ExtensionContext | LegacyCheckpointSource,\n): AgentCheckpoint | null | undefined {\n\tif (\"sessionManager\" in source) {\n\t\tconst entries = source.sessionManager.getEntries();\n\t\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\t\tconst entry = entries[index];\n\t\t\tif (entry.type !== \"custom\" || entry.customType !== CHECKPOINT_CUSTOM_TYPE) continue;\n\t\t\tconst checkpoint = parseCheckpoint(entry.data);\n\t\t\tif (checkpoint) return checkpoint;\n\t\t}\n\t\treturn null;\n\t}\n\n\tconst checkpoints = source.persistedCheckpoints ?? [];\n\tif (checkpoints.length > 0) {\n\t\treturn [...checkpoints].sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];\n\t}\n\n\tconst appended = source.appendCalls\n\t\t?.filter((call) => call.customType === CHECKPOINT_CUSTOM_TYPE)\n\t\t.map((call) => parseCheckpoint(call.data))\n\t\t.filter((checkpoint): checkpoint is AgentCheckpoint => checkpoint !== null);\n\treturn appended?.sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];\n}\n\nfunction buildRestorationHints(checkpoint: AgentCheckpoint): string {\n\tconst modelId = checkpoint.modelId ?? checkpoint.model?.modelId;\n\tconst lines = [\n\t\tRESTORATION_DIRECTIVE,\n\t\t\"\",\n\t\t\"Restore checkpointed session configuration:\",\n\t\t`- Agent: ${checkpoint.agentName ?? \"unknown\"}`,\n\t\t`- Tools: ${checkpoint.activeTools && checkpoint.activeTools.length > 0 ? checkpoint.activeTools.join(\", \") : \"none\"}`,\n\t\t`- Model: ${modelId ?? \"unknown\"}`,\n\t];\n\treturn lines.join(\"\\n\");\n}\n\nexport function injectRestorationDirective(systemPrompt: string, checkpoint: AgentCheckpoint): string;\nexport function injectRestorationDirective(\n\tcheckpoint?: AgentCheckpoint,\n\tfallback?: { model?: { provider: string; modelId: string } },\n): string;\nexport function injectRestorationDirective(\n\tsystemPromptOrCheckpoint?: string | AgentCheckpoint,\n\tcheckpointOrFallback?: AgentCheckpoint | { model?: { provider: string; modelId: string } },\n): string {\n\tif (typeof systemPromptOrCheckpoint === \"string\") {\n\t\tconst checkpoint = checkpointOrFallback as AgentCheckpoint;\n\t\treturn `${systemPromptOrCheckpoint}\\n\\n${buildRestorationHints(checkpoint)}`;\n\t}\n\n\tif (checkpointOrFallback && \"model\" in checkpointOrFallback && checkpointOrFallback.model) {\n\t\treturn `${RESTORATION_DIRECTIVE}\\nModel: ${checkpointOrFallback.model.modelId}`;\n\t}\n\n\treturn RESTORATION_DIRECTIVE;\n}\n"]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
const CHECKPOINT_CUSTOM_TYPE = "compaction.agent-checkpoint";
|
|
2
|
+
const CHECKPOINT_SCHEMA = "senpi.compaction.agent-checkpoint.v1";
|
|
3
|
+
const RESTORATION_DIRECTIVE = "[restore checkpointed session agent configuration after compaction]";
|
|
4
|
+
function isExtensionAPI(value) {
|
|
5
|
+
return "getActiveTools" in value && "getThinkingLevel" in value;
|
|
6
|
+
}
|
|
7
|
+
function deriveAgentName(ctx) {
|
|
8
|
+
for (let index = ctx.sessionManager.getEntries().length - 1; index >= 0; index--) {
|
|
9
|
+
const entry = ctx.sessionManager.getEntries()[index];
|
|
10
|
+
if (entry.type !== "custom")
|
|
11
|
+
continue;
|
|
12
|
+
const data = entry.data;
|
|
13
|
+
if (isRecord(data) && typeof data.agentName === "string") {
|
|
14
|
+
return data.agentName;
|
|
15
|
+
}
|
|
16
|
+
if (isRecord(data) && typeof data.agent === "string") {
|
|
17
|
+
return data.agent;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
function isRecord(value) {
|
|
23
|
+
return typeof value === "object" && value !== null;
|
|
24
|
+
}
|
|
25
|
+
function parseCheckpoint(value) {
|
|
26
|
+
if (!isRecord(value))
|
|
27
|
+
return null;
|
|
28
|
+
if (value.schema === CHECKPOINT_SCHEMA && isRecord(value.data)) {
|
|
29
|
+
return parseCheckpoint(value.data);
|
|
30
|
+
}
|
|
31
|
+
const activeTools = Array.isArray(value.activeTools)
|
|
32
|
+
? value.activeTools.filter((tool) => typeof tool === "string")
|
|
33
|
+
: [];
|
|
34
|
+
const model = isRecord(value.model)
|
|
35
|
+
? {
|
|
36
|
+
provider: typeof value.model.provider === "string" ? value.model.provider : "",
|
|
37
|
+
modelId: typeof value.model.modelId === "string" ? value.model.modelId : "",
|
|
38
|
+
}
|
|
39
|
+
: undefined;
|
|
40
|
+
return {
|
|
41
|
+
activeTools,
|
|
42
|
+
thinkingLevel: typeof value.thinkingLevel === "string" ? value.thinkingLevel : null,
|
|
43
|
+
modelId: typeof value.modelId === "string" ? value.modelId : model?.modelId,
|
|
44
|
+
agentName: typeof value.agentName === "string" ? value.agentName : null,
|
|
45
|
+
timestamp: typeof value.timestamp === "number" ? value.timestamp : undefined,
|
|
46
|
+
model,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function serializeCheckpoint(checkpoint) {
|
|
50
|
+
return {
|
|
51
|
+
...checkpoint,
|
|
52
|
+
schema: CHECKPOINT_SCHEMA,
|
|
53
|
+
data: checkpoint,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function captureAgentCheckpoint(piOrInput, ctx) {
|
|
57
|
+
if (isExtensionAPI(piOrInput) && ctx) {
|
|
58
|
+
return {
|
|
59
|
+
activeTools: piOrInput.getActiveTools(),
|
|
60
|
+
thinkingLevel: piOrInput.getThinkingLevel(),
|
|
61
|
+
modelId: ctx.model?.id,
|
|
62
|
+
agentName: deriveAgentName(ctx),
|
|
63
|
+
timestamp: Date.now(),
|
|
64
|
+
model: ctx.model ? { provider: ctx.model.provider, modelId: ctx.model.id } : undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const input = piOrInput;
|
|
68
|
+
return {
|
|
69
|
+
activeTools: input.activeTools ?? [],
|
|
70
|
+
thinkingLevel: null,
|
|
71
|
+
modelId: input.model?.modelId,
|
|
72
|
+
agentName: input.agentName ?? null,
|
|
73
|
+
timestamp: Date.now(),
|
|
74
|
+
model: input.model,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function persistCheckpoint(piOrCheckpoint, checkpointOrPi) {
|
|
78
|
+
if ("appendEntry" in piOrCheckpoint) {
|
|
79
|
+
const checkpoint = checkpointOrPi;
|
|
80
|
+
piOrCheckpoint.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(checkpoint));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const pi = checkpointOrPi;
|
|
84
|
+
pi.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(piOrCheckpoint));
|
|
85
|
+
}
|
|
86
|
+
export function getLatestCheckpoint(source) {
|
|
87
|
+
if ("sessionManager" in source) {
|
|
88
|
+
const entries = source.sessionManager.getEntries();
|
|
89
|
+
for (let index = entries.length - 1; index >= 0; index--) {
|
|
90
|
+
const entry = entries[index];
|
|
91
|
+
if (entry.type !== "custom" || entry.customType !== CHECKPOINT_CUSTOM_TYPE)
|
|
92
|
+
continue;
|
|
93
|
+
const checkpoint = parseCheckpoint(entry.data);
|
|
94
|
+
if (checkpoint)
|
|
95
|
+
return checkpoint;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const checkpoints = source.persistedCheckpoints ?? [];
|
|
100
|
+
if (checkpoints.length > 0) {
|
|
101
|
+
return [...checkpoints].sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];
|
|
102
|
+
}
|
|
103
|
+
const appended = source.appendCalls
|
|
104
|
+
?.filter((call) => call.customType === CHECKPOINT_CUSTOM_TYPE)
|
|
105
|
+
.map((call) => parseCheckpoint(call.data))
|
|
106
|
+
.filter((checkpoint) => checkpoint !== null);
|
|
107
|
+
return appended?.sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];
|
|
108
|
+
}
|
|
109
|
+
function buildRestorationHints(checkpoint) {
|
|
110
|
+
const modelId = checkpoint.modelId ?? checkpoint.model?.modelId;
|
|
111
|
+
const lines = [
|
|
112
|
+
RESTORATION_DIRECTIVE,
|
|
113
|
+
"",
|
|
114
|
+
"Restore checkpointed session configuration:",
|
|
115
|
+
`- Agent: ${checkpoint.agentName ?? "unknown"}`,
|
|
116
|
+
`- Tools: ${checkpoint.activeTools && checkpoint.activeTools.length > 0 ? checkpoint.activeTools.join(", ") : "none"}`,
|
|
117
|
+
`- Model: ${modelId ?? "unknown"}`,
|
|
118
|
+
];
|
|
119
|
+
return lines.join("\n");
|
|
120
|
+
}
|
|
121
|
+
export function injectRestorationDirective(systemPromptOrCheckpoint, checkpointOrFallback) {
|
|
122
|
+
if (typeof systemPromptOrCheckpoint === "string") {
|
|
123
|
+
const checkpoint = checkpointOrFallback;
|
|
124
|
+
return `${systemPromptOrCheckpoint}\n\n${buildRestorationHints(checkpoint)}`;
|
|
125
|
+
}
|
|
126
|
+
if (checkpointOrFallback && "model" in checkpointOrFallback && checkpointOrFallback.model) {
|
|
127
|
+
return `${RESTORATION_DIRECTIVE}\nModel: ${checkpointOrFallback.model.modelId}`;
|
|
128
|
+
}
|
|
129
|
+
return RESTORATION_DIRECTIVE;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=checkpoint-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-state.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/checkpoint-state.ts"],"names":[],"mappings":"AAGA,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAC7D,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AACjE,MAAM,qBAAqB,GAAG,qEAAqE,CAAC;AAqCpG,SAAS,cAAc,CAAC,KAAwC,EAAyB;IACxF,OAAO,gBAAgB,IAAI,KAAK,IAAI,kBAAkB,IAAI,KAAK,CAAC;AAAA,CAChE;AAED,SAAS,eAAe,CAAC,GAAqB,EAAiB;IAC9D,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAClF,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,CACnD;AAED,SAAS,eAAe,CAAC,KAAc,EAA0B;IAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;QAC9E,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,CAAC,CAAC;YACA,QAAQ,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAC9E,OAAO,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SAC3E;QACF,CAAC,CAAC,SAAS,CAAC;IAEb,OAAO;QACN,WAAW;QACX,aAAa,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,aAA+B,CAAC,CAAC,CAAC,IAAI;QACtG,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO;QAC3E,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QACvE,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC5E,KAAK;KACL,CAAC;AAAA,CACF;AAED,SAAS,mBAAmB,CAAC,UAA2B,EAAgD;IACvG,OAAO;QACN,GAAG,UAAU;QACb,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,UAAU;KAChB,CAAC;AAAA,CACF;AAID,MAAM,UAAU,sBAAsB,CACrC,SAA4C,EAC5C,GAAsB,EACJ;IAClB,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;QACtC,OAAO;YACN,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE;YACvC,aAAa,EAAE,SAAS,CAAC,gBAAgB,EAAE;YAC3C,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE;YACtB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;SACtF,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,SAA+B,CAAC;IAC9C,OAAO;QACN,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,KAAK,CAAC,KAAK;KAClB,CAAC;AAAA,CACF;AAID,MAAM,UAAU,iBAAiB,CAChC,cAA8C,EAC9C,cAAmD,EAC5C;IACP,IAAI,aAAa,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,cAAiC,CAAC;QACrD,cAAc,CAAC,WAAW,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,OAAO;IACR,CAAC;IAED,MAAM,EAAE,GAAG,cAAmC,CAAC;IAC/C,EAAE,CAAC,WAAW,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;AAAA,CAC5E;AAID,MAAM,UAAU,mBAAmB,CAClC,MAAiD,EACZ;IACrC,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACnD,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,sBAAsB;gBAAE,SAAS;YACrF,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;QAClC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,sBAAsB,CAAC;SAC7D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC,MAAM,CAAC,CAAC,UAAU,EAAiC,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IAC7E,OAAO,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC1F;AAED,SAAS,qBAAqB,CAAC,UAA2B,EAAU;IACnE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;IAChE,MAAM,KAAK,GAAG;QACb,qBAAqB;QACrB,EAAE;QACF,6CAA6C;QAC7C,YAAY,UAAU,CAAC,SAAS,IAAI,SAAS,EAAE;QAC/C,YAAY,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACtH,YAAY,OAAO,IAAI,SAAS,EAAE;KAClC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACxB;AAOD,MAAM,UAAU,0BAA0B,CACzC,wBAAmD,EACnD,oBAA0F,EACjF;IACT,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,oBAAuC,CAAC;QAC3D,OAAO,GAAG,wBAAwB,OAAO,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,IAAI,oBAAoB,IAAI,OAAO,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC3F,OAAO,GAAG,qBAAqB,YAAY,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC;IAED,OAAO,qBAAqB,CAAC;AAAA,CAC7B","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ExtensionAPI, ExtensionContext } from \"../../types.js\";\n\nconst CHECKPOINT_CUSTOM_TYPE = \"compaction.agent-checkpoint\";\nconst CHECKPOINT_SCHEMA = \"senpi.compaction.agent-checkpoint.v1\";\nconst RESTORATION_DIRECTIVE = \"[restore checkpointed session agent configuration after compaction]\";\n\nexport interface AgentCheckpoint {\n\tactiveTools?: string[];\n\tthinkingLevel?: ThinkingLevel | null;\n\tmodelId?: string | undefined;\n\tagentName?: string | null;\n\ttimestamp?: number;\n\tmodel?: {\n\t\tprovider: string;\n\t\tmodelId: string;\n\t};\n}\n\ninterface PersistedCheckpointPayload {\n\tschema: typeof CHECKPOINT_SCHEMA;\n\tdata: AgentCheckpoint;\n}\n\ninterface LegacyCaptureInput {\n\tagentName?: string;\n\tmodel?: {\n\t\tprovider: string;\n\t\tmodelId: string;\n\t};\n\tactiveTools?: string[];\n}\n\ninterface AppendEntryTarget {\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n}\n\ninterface LegacyCheckpointSource {\n\tpersistedCheckpoints?: AgentCheckpoint[];\n\tappendCalls?: Array<{ customType: string; data: unknown }>;\n}\n\nfunction isExtensionAPI(value: ExtensionAPI | LegacyCaptureInput): value is ExtensionAPI {\n\treturn \"getActiveTools\" in value && \"getThinkingLevel\" in value;\n}\n\nfunction deriveAgentName(ctx: ExtensionContext): string | null {\n\tfor (let index = ctx.sessionManager.getEntries().length - 1; index >= 0; index--) {\n\t\tconst entry = ctx.sessionManager.getEntries()[index];\n\t\tif (entry.type !== \"custom\") continue;\n\t\tconst data = entry.data;\n\t\tif (isRecord(data) && typeof data.agentName === \"string\") {\n\t\t\treturn data.agentName;\n\t\t}\n\t\tif (isRecord(data) && typeof data.agent === \"string\") {\n\t\t\treturn data.agent;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction parseCheckpoint(value: unknown): AgentCheckpoint | null {\n\tif (!isRecord(value)) return null;\n\tif (value.schema === CHECKPOINT_SCHEMA && isRecord(value.data)) {\n\t\treturn parseCheckpoint(value.data);\n\t}\n\n\tconst activeTools = Array.isArray(value.activeTools)\n\t\t? value.activeTools.filter((tool): tool is string => typeof tool === \"string\")\n\t\t: [];\n\tconst model = isRecord(value.model)\n\t\t? {\n\t\t\t\tprovider: typeof value.model.provider === \"string\" ? value.model.provider : \"\",\n\t\t\t\tmodelId: typeof value.model.modelId === \"string\" ? value.model.modelId : \"\",\n\t\t\t}\n\t\t: undefined;\n\n\treturn {\n\t\tactiveTools,\n\t\tthinkingLevel: typeof value.thinkingLevel === \"string\" ? (value.thinkingLevel as ThinkingLevel) : null,\n\t\tmodelId: typeof value.modelId === \"string\" ? value.modelId : model?.modelId,\n\t\tagentName: typeof value.agentName === \"string\" ? value.agentName : null,\n\t\ttimestamp: typeof value.timestamp === \"number\" ? value.timestamp : undefined,\n\t\tmodel,\n\t};\n}\n\nfunction serializeCheckpoint(checkpoint: AgentCheckpoint): PersistedCheckpointPayload & AgentCheckpoint {\n\treturn {\n\t\t...checkpoint,\n\t\tschema: CHECKPOINT_SCHEMA,\n\t\tdata: checkpoint,\n\t};\n}\n\nexport function captureAgentCheckpoint(pi: ExtensionAPI, ctx: ExtensionContext): AgentCheckpoint;\nexport function captureAgentCheckpoint(input: LegacyCaptureInput): AgentCheckpoint;\nexport function captureAgentCheckpoint(\n\tpiOrInput: ExtensionAPI | LegacyCaptureInput,\n\tctx?: ExtensionContext,\n): AgentCheckpoint {\n\tif (isExtensionAPI(piOrInput) && ctx) {\n\t\treturn {\n\t\t\tactiveTools: piOrInput.getActiveTools(),\n\t\t\tthinkingLevel: piOrInput.getThinkingLevel(),\n\t\t\tmodelId: ctx.model?.id,\n\t\t\tagentName: deriveAgentName(ctx),\n\t\t\ttimestamp: Date.now(),\n\t\t\tmodel: ctx.model ? { provider: ctx.model.provider, modelId: ctx.model.id } : undefined,\n\t\t};\n\t}\n\n\tconst input = piOrInput as LegacyCaptureInput;\n\treturn {\n\t\tactiveTools: input.activeTools ?? [],\n\t\tthinkingLevel: null,\n\t\tmodelId: input.model?.modelId,\n\t\tagentName: input.agentName ?? null,\n\t\ttimestamp: Date.now(),\n\t\tmodel: input.model,\n\t};\n}\n\nexport function persistCheckpoint(pi: ExtensionAPI, checkpoint: AgentCheckpoint): void;\nexport function persistCheckpoint(checkpoint: AgentCheckpoint, pi: AppendEntryTarget): void;\nexport function persistCheckpoint(\n\tpiOrCheckpoint: ExtensionAPI | AgentCheckpoint,\n\tcheckpointOrPi: AgentCheckpoint | AppendEntryTarget,\n): void {\n\tif (\"appendEntry\" in piOrCheckpoint) {\n\t\tconst checkpoint = checkpointOrPi as AgentCheckpoint;\n\t\tpiOrCheckpoint.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(checkpoint));\n\t\treturn;\n\t}\n\n\tconst pi = checkpointOrPi as AppendEntryTarget;\n\tpi.appendEntry(CHECKPOINT_CUSTOM_TYPE, serializeCheckpoint(piOrCheckpoint));\n}\n\nexport function getLatestCheckpoint(ctx: ExtensionContext): AgentCheckpoint | null;\nexport function getLatestCheckpoint(source: LegacyCheckpointSource): AgentCheckpoint | undefined;\nexport function getLatestCheckpoint(\n\tsource: ExtensionContext | LegacyCheckpointSource,\n): AgentCheckpoint | null | undefined {\n\tif (\"sessionManager\" in source) {\n\t\tconst entries = source.sessionManager.getEntries();\n\t\tfor (let index = entries.length - 1; index >= 0; index--) {\n\t\t\tconst entry = entries[index];\n\t\t\tif (entry.type !== \"custom\" || entry.customType !== CHECKPOINT_CUSTOM_TYPE) continue;\n\t\t\tconst checkpoint = parseCheckpoint(entry.data);\n\t\t\tif (checkpoint) return checkpoint;\n\t\t}\n\t\treturn null;\n\t}\n\n\tconst checkpoints = source.persistedCheckpoints ?? [];\n\tif (checkpoints.length > 0) {\n\t\treturn [...checkpoints].sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];\n\t}\n\n\tconst appended = source.appendCalls\n\t\t?.filter((call) => call.customType === CHECKPOINT_CUSTOM_TYPE)\n\t\t.map((call) => parseCheckpoint(call.data))\n\t\t.filter((checkpoint): checkpoint is AgentCheckpoint => checkpoint !== null);\n\treturn appended?.sort((left, right) => (right.timestamp ?? 0) - (left.timestamp ?? 0))[0];\n}\n\nfunction buildRestorationHints(checkpoint: AgentCheckpoint): string {\n\tconst modelId = checkpoint.modelId ?? checkpoint.model?.modelId;\n\tconst lines = [\n\t\tRESTORATION_DIRECTIVE,\n\t\t\"\",\n\t\t\"Restore checkpointed session configuration:\",\n\t\t`- Agent: ${checkpoint.agentName ?? \"unknown\"}`,\n\t\t`- Tools: ${checkpoint.activeTools && checkpoint.activeTools.length > 0 ? checkpoint.activeTools.join(\", \") : \"none\"}`,\n\t\t`- Model: ${modelId ?? \"unknown\"}`,\n\t];\n\treturn lines.join(\"\\n\");\n}\n\nexport function injectRestorationDirective(systemPrompt: string, checkpoint: AgentCheckpoint): string;\nexport function injectRestorationDirective(\n\tcheckpoint?: AgentCheckpoint,\n\tfallback?: { model?: { provider: string; modelId: string } },\n): string;\nexport function injectRestorationDirective(\n\tsystemPromptOrCheckpoint?: string | AgentCheckpoint,\n\tcheckpointOrFallback?: AgentCheckpoint | { model?: { provider: string; modelId: string } },\n): string {\n\tif (typeof systemPromptOrCheckpoint === \"string\") {\n\t\tconst checkpoint = checkpointOrFallback as AgentCheckpoint;\n\t\treturn `${systemPromptOrCheckpoint}\\n\\n${buildRestorationHints(checkpoint)}`;\n\t}\n\n\tif (checkpointOrFallback && \"model\" in checkpointOrFallback && checkpointOrFallback.model) {\n\t\treturn `${RESTORATION_DIRECTIVE}\\nModel: ${checkpointOrFallback.model.modelId}`;\n\t}\n\n\treturn RESTORATION_DIRECTIVE;\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CompactionReason } from "../../types.js";
|
|
2
|
+
import type { CompactionExtensionState } from "./state.js";
|
|
3
|
+
export declare const FAILURE_TRIP_THRESHOLD = 3;
|
|
4
|
+
export declare const COOLDOWN_MS = 60000;
|
|
5
|
+
export interface BreakerNotification {
|
|
6
|
+
tripped: true;
|
|
7
|
+
failureCount: number;
|
|
8
|
+
trippedAt: number;
|
|
9
|
+
reason: CompactionReason | "threshold";
|
|
10
|
+
}
|
|
11
|
+
export interface RecordFailureOptions {
|
|
12
|
+
onTrip?: (notification: BreakerNotification) => void;
|
|
13
|
+
route?: CompactionReason;
|
|
14
|
+
}
|
|
15
|
+
export interface ShouldBypassOptions {
|
|
16
|
+
manual?: boolean;
|
|
17
|
+
reason?: CompactionReason;
|
|
18
|
+
}
|
|
19
|
+
export declare function recordSuccess(state: CompactionExtensionState): CompactionExtensionState;
|
|
20
|
+
export declare function recordFailure(state: CompactionExtensionState, now: number, opts?: RecordFailureOptions): CompactionExtensionState;
|
|
21
|
+
export declare function isTripped(state: CompactionExtensionState, now: number): boolean;
|
|
22
|
+
export declare function shouldBypass(_state: CompactionExtensionState, opts?: ShouldBypassOptions): boolean;
|
|
23
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,WAAW,QAAS,CAAC;AAElC,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,CAEvF;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,wBAAwB,EAC/B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,oBAAoB,GACzB,wBAAwB,CAmB1B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAIlG","sourcesContent":["import type { CompactionReason } from \"../../types.js\";\nimport type { CompactionExtensionState } from \"./state.js\";\n\nexport const FAILURE_TRIP_THRESHOLD = 3;\nexport const COOLDOWN_MS = 60_000;\n\nexport interface BreakerNotification {\n\ttripped: true;\n\tfailureCount: number;\n\ttrippedAt: number;\n\treason: CompactionReason | \"threshold\";\n}\n\nexport interface RecordFailureOptions {\n\tonTrip?: (notification: BreakerNotification) => void;\n\troute?: CompactionReason;\n}\n\nexport interface ShouldBypassOptions {\n\tmanual?: boolean;\n\treason?: CompactionReason;\n}\n\nexport function recordSuccess(state: CompactionExtensionState): CompactionExtensionState {\n\treturn { ...state, consecutiveFailures: 0, trippedAt: null };\n}\n\nexport function recordFailure(\n\tstate: CompactionExtensionState,\n\tnow: number,\n\topts?: RecordFailureOptions,\n): CompactionExtensionState {\n\tlet working = state;\n\tif (working.trippedAt !== null && now >= working.trippedAt + COOLDOWN_MS) {\n\t\tworking = { ...working, consecutiveFailures: 0, trippedAt: null };\n\t}\n\tconst next: CompactionExtensionState = {\n\t\t...working,\n\t\tconsecutiveFailures: working.consecutiveFailures + 1,\n\t};\n\tif (next.consecutiveFailures >= FAILURE_TRIP_THRESHOLD && next.trippedAt === null) {\n\t\tnext.trippedAt = now;\n\t\topts?.onTrip?.({\n\t\t\ttripped: true,\n\t\t\tfailureCount: next.consecutiveFailures,\n\t\t\ttrippedAt: now,\n\t\t\treason: opts.route ?? \"threshold\",\n\t\t});\n\t}\n\treturn next;\n}\n\nexport function isTripped(state: CompactionExtensionState, now: number): boolean {\n\treturn state.trippedAt !== null && now < state.trippedAt + COOLDOWN_MS;\n}\n\nexport function shouldBypass(_state: CompactionExtensionState, opts?: ShouldBypassOptions): boolean {\n\tif (opts?.manual === true) return true;\n\tif (opts?.reason === \"manual\") return true;\n\treturn false;\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const FAILURE_TRIP_THRESHOLD = 3;
|
|
2
|
+
export const COOLDOWN_MS = 60_000;
|
|
3
|
+
export function recordSuccess(state) {
|
|
4
|
+
return { ...state, consecutiveFailures: 0, trippedAt: null };
|
|
5
|
+
}
|
|
6
|
+
export function recordFailure(state, now, opts) {
|
|
7
|
+
let working = state;
|
|
8
|
+
if (working.trippedAt !== null && now >= working.trippedAt + COOLDOWN_MS) {
|
|
9
|
+
working = { ...working, consecutiveFailures: 0, trippedAt: null };
|
|
10
|
+
}
|
|
11
|
+
const next = {
|
|
12
|
+
...working,
|
|
13
|
+
consecutiveFailures: working.consecutiveFailures + 1,
|
|
14
|
+
};
|
|
15
|
+
if (next.consecutiveFailures >= FAILURE_TRIP_THRESHOLD && next.trippedAt === null) {
|
|
16
|
+
next.trippedAt = now;
|
|
17
|
+
opts?.onTrip?.({
|
|
18
|
+
tripped: true,
|
|
19
|
+
failureCount: next.consecutiveFailures,
|
|
20
|
+
trippedAt: now,
|
|
21
|
+
reason: opts.route ?? "threshold",
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return next;
|
|
25
|
+
}
|
|
26
|
+
export function isTripped(state, now) {
|
|
27
|
+
return state.trippedAt !== null && now < state.trippedAt + COOLDOWN_MS;
|
|
28
|
+
}
|
|
29
|
+
export function shouldBypass(_state, opts) {
|
|
30
|
+
if (opts?.manual === true)
|
|
31
|
+
return true;
|
|
32
|
+
if (opts?.reason === "manual")
|
|
33
|
+
return true;
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/circuit-breaker.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAmBlC,MAAM,UAAU,aAAa,CAAC,KAA+B,EAA4B;IACxF,OAAO,EAAE,GAAG,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAAA,CAC7D;AAED,MAAM,UAAU,aAAa,CAC5B,KAA+B,EAC/B,GAAW,EACX,IAA2B,EACA;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;QAC1E,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,mBAAmB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAA6B;QACtC,GAAG,OAAO;QACV,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,GAAG,CAAC;KACpD,CAAC;IACF,IAAI,IAAI,CAAC,mBAAmB,IAAI,sBAAsB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACnF,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,EAAE,MAAM,EAAE,CAAC;YACd,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI,CAAC,mBAAmB;YACtC,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,WAAW;SACjC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,MAAM,UAAU,SAAS,CAAC,KAA+B,EAAE,GAAW,EAAW;IAChF,OAAO,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;AAAA,CACvE;AAED,MAAM,UAAU,YAAY,CAAC,MAAgC,EAAE,IAA0B,EAAW;IACnG,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,KAAK,CAAC;AAAA,CACb","sourcesContent":["import type { CompactionReason } from \"../../types.js\";\nimport type { CompactionExtensionState } from \"./state.js\";\n\nexport const FAILURE_TRIP_THRESHOLD = 3;\nexport const COOLDOWN_MS = 60_000;\n\nexport interface BreakerNotification {\n\ttripped: true;\n\tfailureCount: number;\n\ttrippedAt: number;\n\treason: CompactionReason | \"threshold\";\n}\n\nexport interface RecordFailureOptions {\n\tonTrip?: (notification: BreakerNotification) => void;\n\troute?: CompactionReason;\n}\n\nexport interface ShouldBypassOptions {\n\tmanual?: boolean;\n\treason?: CompactionReason;\n}\n\nexport function recordSuccess(state: CompactionExtensionState): CompactionExtensionState {\n\treturn { ...state, consecutiveFailures: 0, trippedAt: null };\n}\n\nexport function recordFailure(\n\tstate: CompactionExtensionState,\n\tnow: number,\n\topts?: RecordFailureOptions,\n): CompactionExtensionState {\n\tlet working = state;\n\tif (working.trippedAt !== null && now >= working.trippedAt + COOLDOWN_MS) {\n\t\tworking = { ...working, consecutiveFailures: 0, trippedAt: null };\n\t}\n\tconst next: CompactionExtensionState = {\n\t\t...working,\n\t\tconsecutiveFailures: working.consecutiveFailures + 1,\n\t};\n\tif (next.consecutiveFailures >= FAILURE_TRIP_THRESHOLD && next.trippedAt === null) {\n\t\tnext.trippedAt = now;\n\t\topts?.onTrip?.({\n\t\t\ttripped: true,\n\t\t\tfailureCount: next.consecutiveFailures,\n\t\t\ttrippedAt: now,\n\t\t\treason: opts.route ?? \"threshold\",\n\t\t});\n\t}\n\treturn next;\n}\n\nexport function isTripped(state: CompactionExtensionState, now: number): boolean {\n\treturn state.trippedAt !== null && now < state.trippedAt + COOLDOWN_MS;\n}\n\nexport function shouldBypass(_state: CompactionExtensionState, opts?: ShouldBypassOptions): boolean {\n\tif (opts?.manual === true) return true;\n\tif (opts?.reason === \"manual\") return true;\n\treturn false;\n}\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-compaction degradation monitor.
|
|
3
|
+
*
|
|
4
|
+
* Watches the first POST_COMPACTION_MONITOR_COUNT assistant turns after a
|
|
5
|
+
* compaction completes and triggers a single recovery compaction if the
|
|
6
|
+
* model emits POST_COMPACTION_NO_TEXT_THRESHOLD consecutive assistant
|
|
7
|
+
* messages with no text content (only step-start/step-finish parts).
|
|
8
|
+
*
|
|
9
|
+
* Algorithm ported from omo's preemptive-compaction-degradation-monitor:
|
|
10
|
+
* `/Users/yeongyu/local-workspaces/omo/src/hooks/preemptive-compaction-degradation-monitor.ts`
|
|
11
|
+
*
|
|
12
|
+
* Pi extension surface differences vs omo:
|
|
13
|
+
* - Recovery dispatch: speculative generation plus `ctx.applyCompaction(...)`
|
|
14
|
+
* instead of omo's `client.session.summarize(...)`. The "RECOVERY:" prefix
|
|
15
|
+
* in customInstructions is the disambiguator; CompactionReason stays
|
|
16
|
+
* "extension" (no new variant in v1).
|
|
17
|
+
* - Notification: `ctx.notify(message)` instead of omo's
|
|
18
|
+
* `client.tui.showToast(...)`.
|
|
19
|
+
*
|
|
20
|
+
* Recovery cap: 1 per compaction cycle (gate via recoveryTriggeredThisCycle).
|
|
21
|
+
* MAX_RECOVERY_ATTEMPTS = 3 is exported for future iteration but the v1 cycle
|
|
22
|
+
* gate keeps the effective cap at 1 — recoveryAttempts is incremented only on
|
|
23
|
+
* successful trigger, so once it hits 1 the cycle gate also fires regardless.
|
|
24
|
+
*/
|
|
25
|
+
export declare const POST_COMPACTION_MONITOR_COUNT = 5;
|
|
26
|
+
export declare const POST_COMPACTION_NO_TEXT_THRESHOLD = 3;
|
|
27
|
+
export declare const MAX_RECOVERY_ATTEMPTS = 3;
|
|
28
|
+
export declare const RECOVERY_COMPACTION_SUPPRESSION_MS = 5000;
|
|
29
|
+
export declare const RECOVERY_INSTRUCTIONS = "RECOVERY: prior compaction caused degraded responses; rebuild context";
|
|
30
|
+
export declare const RECOVERY_NOTIFICATION = "Detected repeated no-text assistant responses; retried compaction recovery.";
|
|
31
|
+
export interface DegradationMonitorState {
|
|
32
|
+
postCompactionTurnsRemaining: number;
|
|
33
|
+
noTextCounter: number;
|
|
34
|
+
recoveryTriggeredThisCycle: boolean;
|
|
35
|
+
recoveryAttempts: number;
|
|
36
|
+
}
|
|
37
|
+
export interface DegradationMonitorContext {
|
|
38
|
+
applyCompaction: (options: {
|
|
39
|
+
customInstructions: string;
|
|
40
|
+
}) => Promise<{
|
|
41
|
+
applied: boolean;
|
|
42
|
+
reason: string;
|
|
43
|
+
}>;
|
|
44
|
+
notify: (message: string) => void;
|
|
45
|
+
}
|
|
46
|
+
interface MonitoredMessageContentPart {
|
|
47
|
+
type: string;
|
|
48
|
+
text?: string;
|
|
49
|
+
}
|
|
50
|
+
interface MonitoredMessageEvent {
|
|
51
|
+
message: {
|
|
52
|
+
role: string;
|
|
53
|
+
content: MonitoredMessageContentPart[];
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export declare function createDegradationMonitorState(): DegradationMonitorState;
|
|
57
|
+
/**
|
|
58
|
+
* Reset the per-cycle monitor fields when a fresh compaction completes.
|
|
59
|
+
* Opens a new POST_COMPACTION_MONITOR_COUNT-turn window and clears the
|
|
60
|
+
* cycle-trigger gate. recoveryAttempts is preserved across cycles so the
|
|
61
|
+
* MAX_RECOVERY_ATTEMPTS ceiling remains a session-wide guard.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resetOnSessionCompact(state: DegradationMonitorState): void;
|
|
64
|
+
export declare function handleMessageEnd(state: DegradationMonitorState, event: MonitoredMessageEvent, context: DegradationMonitorContext): Promise<void>;
|
|
65
|
+
export declare function handleTurnEnd(state: DegradationMonitorState): void;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=degradation-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"degradation-monitor.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/degradation-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,kCAAkC,OAAQ,CAAC;AAExD,eAAO,MAAM,qBAAqB,0EAA0E,CAAC;AAC7G,eAAO,MAAM,qBAAqB,gFAAgF,CAAC;AAEnH,MAAM,WAAW,uBAAuB;IACvC,4BAA4B,EAAE,MAAM,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,OAAO,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACzC,eAAe,EAAE,CAAC,OAAO,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5G,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,UAAU,2BAA2B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,qBAAqB;IAC9B,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,2BAA2B,EAAE,CAAC;KACvC,CAAC;CACF;AAED,wBAAgB,6BAA6B,IAAI,uBAAuB,CAOvE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAI1E;AAcD,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,yBAAyB,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAIlE","sourcesContent":["/**\n * Post-compaction degradation monitor.\n *\n * Watches the first POST_COMPACTION_MONITOR_COUNT assistant turns after a\n * compaction completes and triggers a single recovery compaction if the\n * model emits POST_COMPACTION_NO_TEXT_THRESHOLD consecutive assistant\n * messages with no text content (only step-start/step-finish parts).\n *\n * Algorithm ported from omo's preemptive-compaction-degradation-monitor:\n * `/Users/yeongyu/local-workspaces/omo/src/hooks/preemptive-compaction-degradation-monitor.ts`\n *\n * Pi extension surface differences vs omo:\n * - Recovery dispatch: speculative generation plus `ctx.applyCompaction(...)`\n * instead of omo's `client.session.summarize(...)`. The \"RECOVERY:\" prefix\n * in customInstructions is the disambiguator; CompactionReason stays\n * \"extension\" (no new variant in v1).\n * - Notification: `ctx.notify(message)` instead of omo's\n * `client.tui.showToast(...)`.\n *\n * Recovery cap: 1 per compaction cycle (gate via recoveryTriggeredThisCycle).\n * MAX_RECOVERY_ATTEMPTS = 3 is exported for future iteration but the v1 cycle\n * gate keeps the effective cap at 1 — recoveryAttempts is incremented only on\n * successful trigger, so once it hits 1 the cycle gate also fires regardless.\n */\n\nexport const POST_COMPACTION_MONITOR_COUNT = 5;\nexport const POST_COMPACTION_NO_TEXT_THRESHOLD = 3;\nexport const MAX_RECOVERY_ATTEMPTS = 3;\nexport const RECOVERY_COMPACTION_SUPPRESSION_MS = 5_000;\n\nexport const RECOVERY_INSTRUCTIONS = \"RECOVERY: prior compaction caused degraded responses; rebuild context\";\nexport const RECOVERY_NOTIFICATION = \"Detected repeated no-text assistant responses; retried compaction recovery.\";\n\nexport interface DegradationMonitorState {\n\tpostCompactionTurnsRemaining: number;\n\tnoTextCounter: number;\n\trecoveryTriggeredThisCycle: boolean;\n\trecoveryAttempts: number;\n}\n\nexport interface DegradationMonitorContext {\n\tapplyCompaction: (options: { customInstructions: string }) => Promise<{ applied: boolean; reason: string }>;\n\tnotify: (message: string) => void;\n}\n\ninterface MonitoredMessageContentPart {\n\ttype: string;\n\ttext?: string;\n}\n\ninterface MonitoredMessageEvent {\n\tmessage: {\n\t\trole: string;\n\t\tcontent: MonitoredMessageContentPart[];\n\t};\n}\n\nexport function createDegradationMonitorState(): DegradationMonitorState {\n\treturn {\n\t\tpostCompactionTurnsRemaining: 0,\n\t\tnoTextCounter: 0,\n\t\trecoveryTriggeredThisCycle: false,\n\t\trecoveryAttempts: 0,\n\t};\n}\n\n/**\n * Reset the per-cycle monitor fields when a fresh compaction completes.\n * Opens a new POST_COMPACTION_MONITOR_COUNT-turn window and clears the\n * cycle-trigger gate. recoveryAttempts is preserved across cycles so the\n * MAX_RECOVERY_ATTEMPTS ceiling remains a session-wide guard.\n */\nexport function resetOnSessionCompact(state: DegradationMonitorState): void {\n\tstate.postCompactionTurnsRemaining = POST_COMPACTION_MONITOR_COUNT;\n\tstate.noTextCounter = 0;\n\tstate.recoveryTriggeredThisCycle = false;\n}\n\nfunction assistantMessageHasText(event: MonitoredMessageEvent): boolean {\n\tif (event.message.role !== \"assistant\") {\n\t\treturn true;\n\t}\n\tfor (const part of event.message.content) {\n\t\tif (part.type === \"text\" && typeof part.text === \"string\" && part.text.length > 0) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nexport async function handleMessageEnd(\n\tstate: DegradationMonitorState,\n\tevent: MonitoredMessageEvent,\n\tcontext: DegradationMonitorContext,\n): Promise<void> {\n\tif (state.postCompactionTurnsRemaining <= 0) {\n\t\treturn;\n\t}\n\n\tif (assistantMessageHasText(event)) {\n\t\tstate.noTextCounter = 0;\n\t\treturn;\n\t}\n\n\tstate.noTextCounter += 1;\n\n\tif (state.noTextCounter < POST_COMPACTION_NO_TEXT_THRESHOLD) {\n\t\treturn;\n\t}\n\n\tif (state.recoveryTriggeredThisCycle) {\n\t\treturn;\n\t}\n\n\tif (state.recoveryAttempts >= MAX_RECOVERY_ATTEMPTS) {\n\t\treturn;\n\t}\n\n\tstate.recoveryTriggeredThisCycle = true;\n\tstate.recoveryAttempts += 1;\n\tstate.noTextCounter = 0;\n\n\tawait context.applyCompaction({ customInstructions: RECOVERY_INSTRUCTIONS });\n\tcontext.notify(RECOVERY_NOTIFICATION);\n}\n\nexport function handleTurnEnd(state: DegradationMonitorState): void {\n\tif (state.postCompactionTurnsRemaining > 0) {\n\t\tstate.postCompactionTurnsRemaining -= 1;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-compaction degradation monitor.
|
|
3
|
+
*
|
|
4
|
+
* Watches the first POST_COMPACTION_MONITOR_COUNT assistant turns after a
|
|
5
|
+
* compaction completes and triggers a single recovery compaction if the
|
|
6
|
+
* model emits POST_COMPACTION_NO_TEXT_THRESHOLD consecutive assistant
|
|
7
|
+
* messages with no text content (only step-start/step-finish parts).
|
|
8
|
+
*
|
|
9
|
+
* Algorithm ported from omo's preemptive-compaction-degradation-monitor:
|
|
10
|
+
* `/Users/yeongyu/local-workspaces/omo/src/hooks/preemptive-compaction-degradation-monitor.ts`
|
|
11
|
+
*
|
|
12
|
+
* Pi extension surface differences vs omo:
|
|
13
|
+
* - Recovery dispatch: speculative generation plus `ctx.applyCompaction(...)`
|
|
14
|
+
* instead of omo's `client.session.summarize(...)`. The "RECOVERY:" prefix
|
|
15
|
+
* in customInstructions is the disambiguator; CompactionReason stays
|
|
16
|
+
* "extension" (no new variant in v1).
|
|
17
|
+
* - Notification: `ctx.notify(message)` instead of omo's
|
|
18
|
+
* `client.tui.showToast(...)`.
|
|
19
|
+
*
|
|
20
|
+
* Recovery cap: 1 per compaction cycle (gate via recoveryTriggeredThisCycle).
|
|
21
|
+
* MAX_RECOVERY_ATTEMPTS = 3 is exported for future iteration but the v1 cycle
|
|
22
|
+
* gate keeps the effective cap at 1 — recoveryAttempts is incremented only on
|
|
23
|
+
* successful trigger, so once it hits 1 the cycle gate also fires regardless.
|
|
24
|
+
*/
|
|
25
|
+
export const POST_COMPACTION_MONITOR_COUNT = 5;
|
|
26
|
+
export const POST_COMPACTION_NO_TEXT_THRESHOLD = 3;
|
|
27
|
+
export const MAX_RECOVERY_ATTEMPTS = 3;
|
|
28
|
+
export const RECOVERY_COMPACTION_SUPPRESSION_MS = 5_000;
|
|
29
|
+
export const RECOVERY_INSTRUCTIONS = "RECOVERY: prior compaction caused degraded responses; rebuild context";
|
|
30
|
+
export const RECOVERY_NOTIFICATION = "Detected repeated no-text assistant responses; retried compaction recovery.";
|
|
31
|
+
export function createDegradationMonitorState() {
|
|
32
|
+
return {
|
|
33
|
+
postCompactionTurnsRemaining: 0,
|
|
34
|
+
noTextCounter: 0,
|
|
35
|
+
recoveryTriggeredThisCycle: false,
|
|
36
|
+
recoveryAttempts: 0,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reset the per-cycle monitor fields when a fresh compaction completes.
|
|
41
|
+
* Opens a new POST_COMPACTION_MONITOR_COUNT-turn window and clears the
|
|
42
|
+
* cycle-trigger gate. recoveryAttempts is preserved across cycles so the
|
|
43
|
+
* MAX_RECOVERY_ATTEMPTS ceiling remains a session-wide guard.
|
|
44
|
+
*/
|
|
45
|
+
export function resetOnSessionCompact(state) {
|
|
46
|
+
state.postCompactionTurnsRemaining = POST_COMPACTION_MONITOR_COUNT;
|
|
47
|
+
state.noTextCounter = 0;
|
|
48
|
+
state.recoveryTriggeredThisCycle = false;
|
|
49
|
+
}
|
|
50
|
+
function assistantMessageHasText(event) {
|
|
51
|
+
if (event.message.role !== "assistant") {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
for (const part of event.message.content) {
|
|
55
|
+
if (part.type === "text" && typeof part.text === "string" && part.text.length > 0) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
export async function handleMessageEnd(state, event, context) {
|
|
62
|
+
if (state.postCompactionTurnsRemaining <= 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (assistantMessageHasText(event)) {
|
|
66
|
+
state.noTextCounter = 0;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
state.noTextCounter += 1;
|
|
70
|
+
if (state.noTextCounter < POST_COMPACTION_NO_TEXT_THRESHOLD) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (state.recoveryTriggeredThisCycle) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (state.recoveryAttempts >= MAX_RECOVERY_ATTEMPTS) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
state.recoveryTriggeredThisCycle = true;
|
|
80
|
+
state.recoveryAttempts += 1;
|
|
81
|
+
state.noTextCounter = 0;
|
|
82
|
+
await context.applyCompaction({ customInstructions: RECOVERY_INSTRUCTIONS });
|
|
83
|
+
context.notify(RECOVERY_NOTIFICATION);
|
|
84
|
+
}
|
|
85
|
+
export function handleTurnEnd(state) {
|
|
86
|
+
if (state.postCompactionTurnsRemaining > 0) {
|
|
87
|
+
state.postCompactionTurnsRemaining -= 1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=degradation-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"degradation-monitor.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/degradation-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uEAAuE,CAAC;AAC7G,MAAM,CAAC,MAAM,qBAAqB,GAAG,6EAA6E,CAAC;AA0BnH,MAAM,UAAU,6BAA6B,GAA4B;IACxE,OAAO;QACN,4BAA4B,EAAE,CAAC;QAC/B,aAAa,EAAE,CAAC;QAChB,0BAA0B,EAAE,KAAK;QACjC,gBAAgB,EAAE,CAAC;KACnB,CAAC;AAAA,CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA8B,EAAQ;IAC3E,KAAK,CAAC,4BAA4B,GAAG,6BAA6B,CAAC;IACnE,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,KAAK,CAAC,0BAA0B,GAAG,KAAK,CAAC;AAAA,CACzC;AAED,SAAS,uBAAuB,CAAC,KAA4B,EAAW;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,KAA8B,EAC9B,KAA4B,EAC5B,OAAkC,EAClB;IAChB,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO;IACR,CAAC;IAED,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,OAAO;IACR,CAAC;IAED,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;IAEzB,IAAI,KAAK,CAAC,aAAa,GAAG,iCAAiC,EAAE,CAAC;QAC7D,OAAO;IACR,CAAC;IAED,IAAI,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACtC,OAAO;IACR,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,IAAI,qBAAqB,EAAE,CAAC;QACrD,OAAO;IACR,CAAC;IAED,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IAExB,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAAA,CACtC;AAED,MAAM,UAAU,aAAa,CAAC,KAA8B,EAAQ;IACnE,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,4BAA4B,IAAI,CAAC,CAAC;IACzC,CAAC;AAAA,CACD","sourcesContent":["/**\n * Post-compaction degradation monitor.\n *\n * Watches the first POST_COMPACTION_MONITOR_COUNT assistant turns after a\n * compaction completes and triggers a single recovery compaction if the\n * model emits POST_COMPACTION_NO_TEXT_THRESHOLD consecutive assistant\n * messages with no text content (only step-start/step-finish parts).\n *\n * Algorithm ported from omo's preemptive-compaction-degradation-monitor:\n * `/Users/yeongyu/local-workspaces/omo/src/hooks/preemptive-compaction-degradation-monitor.ts`\n *\n * Pi extension surface differences vs omo:\n * - Recovery dispatch: speculative generation plus `ctx.applyCompaction(...)`\n * instead of omo's `client.session.summarize(...)`. The \"RECOVERY:\" prefix\n * in customInstructions is the disambiguator; CompactionReason stays\n * \"extension\" (no new variant in v1).\n * - Notification: `ctx.notify(message)` instead of omo's\n * `client.tui.showToast(...)`.\n *\n * Recovery cap: 1 per compaction cycle (gate via recoveryTriggeredThisCycle).\n * MAX_RECOVERY_ATTEMPTS = 3 is exported for future iteration but the v1 cycle\n * gate keeps the effective cap at 1 — recoveryAttempts is incremented only on\n * successful trigger, so once it hits 1 the cycle gate also fires regardless.\n */\n\nexport const POST_COMPACTION_MONITOR_COUNT = 5;\nexport const POST_COMPACTION_NO_TEXT_THRESHOLD = 3;\nexport const MAX_RECOVERY_ATTEMPTS = 3;\nexport const RECOVERY_COMPACTION_SUPPRESSION_MS = 5_000;\n\nexport const RECOVERY_INSTRUCTIONS = \"RECOVERY: prior compaction caused degraded responses; rebuild context\";\nexport const RECOVERY_NOTIFICATION = \"Detected repeated no-text assistant responses; retried compaction recovery.\";\n\nexport interface DegradationMonitorState {\n\tpostCompactionTurnsRemaining: number;\n\tnoTextCounter: number;\n\trecoveryTriggeredThisCycle: boolean;\n\trecoveryAttempts: number;\n}\n\nexport interface DegradationMonitorContext {\n\tapplyCompaction: (options: { customInstructions: string }) => Promise<{ applied: boolean; reason: string }>;\n\tnotify: (message: string) => void;\n}\n\ninterface MonitoredMessageContentPart {\n\ttype: string;\n\ttext?: string;\n}\n\ninterface MonitoredMessageEvent {\n\tmessage: {\n\t\trole: string;\n\t\tcontent: MonitoredMessageContentPart[];\n\t};\n}\n\nexport function createDegradationMonitorState(): DegradationMonitorState {\n\treturn {\n\t\tpostCompactionTurnsRemaining: 0,\n\t\tnoTextCounter: 0,\n\t\trecoveryTriggeredThisCycle: false,\n\t\trecoveryAttempts: 0,\n\t};\n}\n\n/**\n * Reset the per-cycle monitor fields when a fresh compaction completes.\n * Opens a new POST_COMPACTION_MONITOR_COUNT-turn window and clears the\n * cycle-trigger gate. recoveryAttempts is preserved across cycles so the\n * MAX_RECOVERY_ATTEMPTS ceiling remains a session-wide guard.\n */\nexport function resetOnSessionCompact(state: DegradationMonitorState): void {\n\tstate.postCompactionTurnsRemaining = POST_COMPACTION_MONITOR_COUNT;\n\tstate.noTextCounter = 0;\n\tstate.recoveryTriggeredThisCycle = false;\n}\n\nfunction assistantMessageHasText(event: MonitoredMessageEvent): boolean {\n\tif (event.message.role !== \"assistant\") {\n\t\treturn true;\n\t}\n\tfor (const part of event.message.content) {\n\t\tif (part.type === \"text\" && typeof part.text === \"string\" && part.text.length > 0) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nexport async function handleMessageEnd(\n\tstate: DegradationMonitorState,\n\tevent: MonitoredMessageEvent,\n\tcontext: DegradationMonitorContext,\n): Promise<void> {\n\tif (state.postCompactionTurnsRemaining <= 0) {\n\t\treturn;\n\t}\n\n\tif (assistantMessageHasText(event)) {\n\t\tstate.noTextCounter = 0;\n\t\treturn;\n\t}\n\n\tstate.noTextCounter += 1;\n\n\tif (state.noTextCounter < POST_COMPACTION_NO_TEXT_THRESHOLD) {\n\t\treturn;\n\t}\n\n\tif (state.recoveryTriggeredThisCycle) {\n\t\treturn;\n\t}\n\n\tif (state.recoveryAttempts >= MAX_RECOVERY_ATTEMPTS) {\n\t\treturn;\n\t}\n\n\tstate.recoveryTriggeredThisCycle = true;\n\tstate.recoveryAttempts += 1;\n\tstate.noTextCounter = 0;\n\n\tawait context.applyCompaction({ customInstructions: RECOVERY_INSTRUCTIONS });\n\tcontext.notify(RECOVERY_NOTIFICATION);\n}\n\nexport function handleTurnEnd(state: DegradationMonitorState): void {\n\tif (state.postCompactionTurnsRemaining > 0) {\n\t\tstate.postCompactionTurnsRemaining -= 1;\n\t}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/compaction/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAqDrE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA8LlE","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { repairOrphanedToolResults } from \"@earendil-works/pi-ai\";\nimport { type CompactionResult, DEFAULT_COMPACTION_SETTINGS } from \"../../../compaction/index.js\";\nimport { convertToLlm } from \"../../../messages.js\";\nimport type { CompactionEntry } from \"../../../session-manager.js\";\nimport type { ExtensionAPI, ExtensionContext } from \"../../types.js\";\nimport * as checkpointState from \"./checkpoint-state.js\";\nimport * as breaker from \"./circuit-breaker.js\";\nimport {\n\tcreateDegradationMonitorState,\n\thandleMessageEnd,\n\thandleTurnEnd,\n\tRECOVERY_INSTRUCTIONS,\n\tresetOnSessionCompact,\n} from \"./degradation-monitor.js\";\nimport * as overflow from \"./overflow-detection.js\";\nimport * as cap from \"./per-turn-cap.js\";\nimport * as policy from \"./policy.js\";\nimport * as restoration from \"./restoration-tracker.js\";\nimport {\n\tapplyGeneratedCompaction,\n\tcreateSpeculativeCompactionSnapshot,\n\tgetPromptVariant,\n\thardLimitEmergencyPrune,\n\trunExtensionCompaction,\n\ttype SpeculativeCompactionResult,\n\ttype SpeculativeCompactionSnapshot,\n} from \"./speculative.js\";\nimport { type CompactionExtensionState, createInitialState, resetTurnCounter } from \"./state.js\";\nimport * as todoBridge from \"./todo-bridge.js\";\nimport * as truncation from \"./tool-truncation.js\";\n\nconst DEFAULT_CONTEXT_WINDOW = 200_000;\nconst EMERGENCY_COMPACTION_INSTRUCTIONS =\n\t\"EMERGENCY: hard context limit reached. Produce an aggressive recovery summary that preserves current goal, constraints, files touched, tool outcomes, and exact next steps. Prefer concise factual state over transcript detail.\";\nconst PROACTIVE_COMPACTION_INSTRUCTIONS = \"Proactively compact before the next agent turn.\";\n\nfunction approxTokens(text: string): number {\n\treturn Math.ceil(text.length / 4);\n}\n\nfunction isMonitorableMessageEvent(event: { message: AgentMessage }): event is {\n\tmessage: AgentMessage & { content: Array<{ type: string; text?: string }> };\n} {\n\treturn \"content\" in event.message && Array.isArray(event.message.content);\n}\n\nfunction updateLastYield(state: CompactionExtensionState, entry: CompactionEntry): CompactionExtensionState {\n\tconst savedTokens = Math.max(0, entry.tokensBefore - approxTokens(entry.summary));\n\treturn { ...state, lastYield: { savedTokens, tokensBefore: entry.tokensBefore } };\n}\n\nfunction 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\nexport default function compactionExtension(pi: ExtensionAPI): void {\n\tlet state: CompactionExtensionState = createInitialState();\n\tconst degradationState = createDegradationMonitorState();\n\tconst restorationState = state.restoration ?? restoration.createRestorationTrackerState();\n\tstate = { ...state, restoration: restorationState };\n\tlet speculativeGeneration = 0;\n\tlet speculativeJob:\n\t\t| {\n\t\t\t\tgeneration: number;\n\t\t\t\tsnapshot: SpeculativeCompactionSnapshot;\n\t\t\t\tcontroller: AbortController;\n\t\t\t\tpromise: Promise<CompactionResult | undefined>;\n\t\t }\n\t\t| undefined;\n\n\tfunction invalidateSpeculativeCompaction(): void {\n\t\tspeculativeGeneration++;\n\t\tspeculativeJob?.controller.abort();\n\t\tspeculativeJob = undefined;\n\t}\n\n\tfunction startSpeculativeCompaction(ctx: ExtensionContext, customInstructions: string): void {\n\t\tif (speculativeJob) return;\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });\n\t\tif (!snapshot) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst promise = runExtensionCompaction(ctx, snapshot, controller.signal).catch(() => undefined);\n\t\tspeculativeJob = { generation, snapshot, controller, promise };\n\t}\n\n\tasync function applyBlockingCompaction(\n\t\tctx: ExtensionContext,\n\t\tcustomInstructions: string,\n\t): Promise<SpeculativeCompactionResult> {\n\t\tconst pendingJob = speculativeJob;\n\t\tif (pendingJob) {\n\t\t\tconst compaction = await pendingJob.promise;\n\t\t\tconst result = await applyGeneratedCompaction(\n\t\t\t\tctx,\n\t\t\t\tpendingJob.snapshot,\n\t\t\t\t() => speculativeGeneration,\n\t\t\t\tcompaction,\n\t\t\t);\n\t\t\tif (result.applied || result.reason === \"stale\") {\n\t\t\t\tspeculativeJob = undefined;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tspeculativeJob = undefined;\n\t\t}\n\n\t\tconst generation = ++speculativeGeneration;\n\t\tconst snapshot = createSpeculativeCompactionSnapshot(ctx, { generation, customInstructions });\n\t\tif (!snapshot) return { applied: false, reason: \"unavailable\" };\n\t\tconst compaction = await runExtensionCompaction(ctx, snapshot);\n\t\treturn await applyGeneratedCompaction(ctx, snapshot, () => speculativeGeneration, compaction);\n\t}\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (cap.shouldRejectByCap(state, { reason: event.reason }).cancel) return { cancel: true };\n\t\tif (breaker.isTripped(state, Date.now()) && !breaker.shouldBypass(state, { reason: event.reason }))\n\t\t\treturn { cancel: true };\n\n\t\tcheckpointState.persistCheckpoint(pi, checkpointState.captureAgentCheckpoint(pi, ctx));\n\t\ttodoBridge.captureTodoSnapshot(pi, ctx);\n\n\t\tconst model = ctx.model;\n\t\tif (!model) return undefined;\n\t\tconst snapshot = {\n\t\t\tgeneration: ++speculativeGeneration,\n\t\t\texpectedRevision: ctx.getMessageRevision(),\n\t\t\tmodel,\n\t\t\tcontextWindow: ctx.getContextUsage()?.contextWindow ?? model.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\tpreparation: event.preparation,\n\t\t\tpromptVariant: getPromptVariant(event),\n\t\t\tcustomInstructions: event.customInstructions,\n\t\t};\n\t\tconst compaction = await runExtensionCompaction(ctx, snapshot, event.signal);\n\t\tif (!compaction) return { cancel: true };\n\n\t\treturn {\n\t\t\tcompaction,\n\t\t};\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tinvalidateSpeculativeCompaction();\n\t\tif (event.accepted) {\n\t\t\tconst branchEntries = ctx.sessionManager.getBranch();\n\t\t\tconst firstKeptIndex = branchEntries.findIndex((entry) => entry.id === event.compactionEntry.firstKeptEntryId);\n\t\t\tconst keptEntries = firstKeptIndex === -1 ? [] : branchEntries.slice(firstKeptIndex);\n\t\t\tstate = cap.incrementAccepted(state);\n\t\t\tstate = breaker.recordSuccess(state);\n\t\t\tstate = updateLastYield(state, event.compactionEntry);\n\t\t\tresetOnSessionCompact(degradationState);\n\t\t\ttodoBridge.restoreTodosIfMissing(pi, ctx);\n\t\t\tconst usage = ctx.getContextUsage();\n\t\t\tif (DEFAULT_COMPACTION_SETTINGS.restorationEnabled) {\n\t\t\t\trestoration.preparePendingPayload(restorationState, {\n\t\t\t\t\taccepted: true,\n\t\t\t\t\treason: event.reason,\n\t\t\t\t\tcompactionEntryId: event.compactionEntry.id,\n\t\t\t\t\tcontextWindow: usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW,\n\t\t\t\t\tusageTokens: usage?.tokens ?? null,\n\t\t\t\t\treserveTokens: DEFAULT_COMPACTION_SETTINGS.reserveTokens,\n\t\t\t\t\tsettings: DEFAULT_COMPACTION_SETTINGS,\n\t\t\t\t\tkeptMessages: keptEntries.flatMap((entry) => {\n\t\t\t\t\t\tif (entry.type !== \"message\") return [];\n\t\t\t\t\t\treturn [entry.message];\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstate = breaker.recordFailure(state, Date.now(), { route: event.reason });\n\t\tctx.ui.notify(`Compaction rejected: ${event.rejectionCause ?? \"unknown\"}`, \"warning\");\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tconst message = restoration.consumePendingPayload(restorationState);\n\t\tconst checkpoint = recentCheckpoint(ctx);\n\t\tif (checkpoint) systemPrompt = checkpointState.injectRestorationDirective(systemPrompt, checkpoint);\n\n\t\tconst usage = ctx.getContextUsage();\n\t\tconst contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst settings = ctx.getCompactionSettings();\n\t\tif (usage && policy.isAtHardLimit(usage, contextWindow, settings.reserveTokens)) {\n\t\t\tawait applyBlockingCompaction(ctx, EMERGENCY_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusage &&\n\t\t\tpolicy.shouldTriggerCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tawait applyBlockingCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t} else if (\n\t\t\tusage &&\n\t\t\tpolicy.shouldStartSpeculativeCompaction(usage, contextWindow, settings, state.lastYield ?? undefined)\n\t\t) {\n\t\t\tstartSpeculativeCompaction(ctx, PROACTIVE_COMPACTION_INSTRUCTIONS);\n\t\t}\n\n\t\tif (systemPrompt === event.systemPrompt && !message) return undefined;\n\t\treturn message ? { systemPrompt, message } : { systemPrompt };\n\t});\n\n\tpi.on(\"context\", (event, ctx) => {\n\t\tconst contextWindow = ctx.getContextUsage()?.contextWindow ?? ctx.model?.contextWindow ?? DEFAULT_CONTEXT_WINDOW;\n\t\tconst emergency = hardLimitEmergencyPrune(event.messages, contextWindow);\n\t\treturn { messages: repairOrphanedToolResults(convertToLlm(emergency.messages)) };\n\t});\n\n\tpi.on(\"turn_end\", async (_event, ctx) => {\n\t\thandleTurnEnd(degradationState);\n\t\tif (degradationState.recoveryTriggeredThisCycle) return;\n\t\tif (state.lastYield && state.lastYield.savedTokens <= 0) {\n\t\t\tvoid applyBlockingCompaction(ctx, RECOVERY_INSTRUCTIONS);\n\t\t}\n\t});\n\n\tpi.on(\"agent_end\", () => {\n\t\tstate = resetTurnCounter(state, \"\");\n\t});\n\n\tpi.on(\"message_end\", async (event, ctx) => {\n\t\tif (isMonitorableMessageEvent(event)) {\n\t\t\tawait handleMessageEnd(degradationState, event, {\n\t\t\t\tapplyCompaction: async (options) => {\n\t\t\t\t\treturn await applyBlockingCompaction(ctx, options.customInstructions);\n\t\t\t\t},\n\t\t\t\tnotify: (message) => ctx.ui.notify(message, \"warning\"),\n\t\t\t});\n\t\t}\n\t\tif (event.message.role === \"assistant\" && event.message.stopReason === \"error\") {\n\t\t\tconst detected = overflow.isContextOverflowError(new Error(event.message.errorMessage ?? \"\"));\n\t\t\tif (detected.detected) {\n\t\t\t\tvoid applyBlockingCompaction(ctx, `RECOVERY: context overflow detected (${detected.confidence})`);\n\t\t\t}\n\t\t}\n\t});\n\n\tpi.on(\"tool_result\", (event) => {\n\t\tconst [truncated] = truncation.truncateOversizedToolResults([{ content: event.content, details: event.details }]);\n\t\treturn truncated ? { content: truncated.content, details: event.details, isError: event.isError } : undefined;\n\t});\n\n\tpi.on(\"tool_call\", (event) => {\n\t\trestoration.trackToolCall(restorationState, event);\n\t});\n}\n"]}
|