open-multi-agent-kit 0.80.6 → 0.80.8
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 +4 -20
- package/README.md +66 -16
- package/dist/agents/jailbreak/index.d.ts +7 -0
- package/dist/agents/jailbreak/index.d.ts.map +1 -0
- package/dist/agents/jailbreak/index.js +7 -0
- package/dist/agents/jailbreak/index.js.map +1 -0
- package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
- package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
- package/dist/agents/jailbreak/subagent-f.js +60 -0
- package/dist/agents/jailbreak/subagent-f.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js +2 -2
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/ci/verify-reporter.d.ts +22 -0
- package/dist/ci/verify-reporter.d.ts.map +1 -0
- package/dist/ci/verify-reporter.js +50 -0
- package/dist/ci/verify-reporter.js.map +1 -0
- package/dist/cli/args.d.ts +4 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +7 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/jailbreak-args.d.ts +26 -0
- package/dist/cli/jailbreak-args.d.ts.map +1 -0
- package/dist/cli/jailbreak-args.js +86 -0
- package/dist/cli/jailbreak-args.js.map +1 -0
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/commands/doctor-provider.d.ts +19 -0
- package/dist/commands/doctor-provider.d.ts.map +1 -0
- package/dist/commands/doctor-provider.js +123 -0
- package/dist/commands/doctor-provider.js.map +1 -0
- package/dist/commands/jailbreak.d.ts +49 -0
- package/dist/commands/jailbreak.d.ts.map +1 -0
- package/dist/commands/jailbreak.js +201 -0
- package/dist/commands/jailbreak.js.map +1 -0
- package/dist/config.d.ts +9 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -52
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +36 -8
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +294 -14
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +3 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -4
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +2 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/browser-use.d.ts +45 -0
- package/dist/core/browser-use.d.ts.map +1 -0
- package/dist/core/browser-use.js +70 -0
- package/dist/core/browser-use.js.map +1 -0
- package/dist/core/command-safety-parser.d.ts +77 -0
- package/dist/core/command-safety-parser.d.ts.map +1 -0
- package/dist/core/command-safety-parser.js +763 -0
- package/dist/core/command-safety-parser.js.map +1 -0
- package/dist/core/command-safety.d.ts +11 -0
- package/dist/core/command-safety.d.ts.map +1 -0
- package/dist/core/command-safety.js +631 -0
- package/dist/core/command-safety.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +2 -8
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -84
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +11 -608
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -2
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/compactor.d.ts +42 -0
- package/dist/core/compactor.d.ts.map +1 -0
- package/dist/core/compactor.js +131 -0
- package/dist/core/compactor.js.map +1 -0
- package/dist/core/context-budget-compressors.d.ts +50 -0
- package/dist/core/context-budget-compressors.d.ts.map +1 -0
- package/dist/core/context-budget-compressors.js +166 -0
- package/dist/core/context-budget-compressors.js.map +1 -0
- package/dist/core/context-budget-governor-v2.d.ts +7 -0
- package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
- package/dist/core/context-budget-governor-v2.js +7 -0
- package/dist/core/context-budget-governor-v2.js.map +1 -0
- package/dist/core/context-budget-governor.d.ts +67 -0
- package/dist/core/context-budget-governor.d.ts.map +1 -0
- package/dist/core/context-budget-governor.js +224 -0
- package/dist/core/context-budget-governor.js.map +1 -0
- package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
- package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-candidates.js +85 -0
- package/dist/core/context-budget-headroom-candidates.js.map +1 -0
- package/dist/core/context-budget-headroom-types.d.ts +67 -0
- package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-types.js +46 -0
- package/dist/core/context-budget-headroom-types.js.map +1 -0
- package/dist/core/context-budget-headroom.d.ts +5 -0
- package/dist/core/context-budget-headroom.d.ts.map +1 -0
- package/dist/core/context-budget-headroom.js +123 -0
- package/dist/core/context-budget-headroom.js.map +1 -0
- package/dist/core/context-budget-relevance.d.ts +46 -0
- package/dist/core/context-budget-relevance.d.ts.map +1 -0
- package/dist/core/context-budget-relevance.js +329 -0
- package/dist/core/context-budget-relevance.js.map +1 -0
- package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
- package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt-items.js +143 -0
- package/dist/core/context-budget-system-prompt-items.js.map +1 -0
- package/dist/core/context-budget-system-prompt.d.ts +31 -0
- package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt.js +87 -0
- package/dist/core/context-budget-system-prompt.js.map +1 -0
- package/dist/core/context-budget-token-counter.d.ts +34 -0
- package/dist/core/context-budget-token-counter.d.ts.map +1 -0
- package/dist/core/context-budget-token-counter.js +315 -0
- package/dist/core/context-budget-token-counter.js.map +1 -0
- package/dist/core/context-budget-v2-coverage.d.ts +5 -0
- package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
- package/dist/core/context-budget-v2-coverage.js +58 -0
- package/dist/core/context-budget-v2-coverage.js.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.js +38 -0
- package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
- package/dist/core/context-budget-v2-planner.d.ts +3 -0
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
- package/dist/core/context-budget-v2-planner.js +143 -0
- package/dist/core/context-budget-v2-planner.js.map +1 -0
- package/dist/core/context-budget-v2-scoring.d.ts +14 -0
- package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
- package/dist/core/context-budget-v2-scoring.js +114 -0
- package/dist/core/context-budget-v2-scoring.js.map +1 -0
- package/dist/core/context-budget-v2-selection.d.ts +32 -0
- package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
- package/dist/core/context-budget-v2-selection.js +158 -0
- package/dist/core/context-budget-v2-selection.js.map +1 -0
- package/dist/core/context-budget-v2-tiers.d.ts +15 -0
- package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
- package/dist/core/context-budget-v2-tiers.js +68 -0
- package/dist/core/context-budget-v2-tiers.js.map +1 -0
- package/dist/core/context-budget-v2-types.d.ts +92 -0
- package/dist/core/context-budget-v2-types.d.ts.map +1 -0
- package/dist/core/context-budget-v2-types.js +24 -0
- package/dist/core/context-budget-v2-types.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/diagnostics.d.ts +4 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/domain-confidence.d.ts +9 -0
- package/dist/core/domain-confidence.d.ts.map +1 -0
- package/dist/core/domain-confidence.js +39 -0
- package/dist/core/domain-confidence.js.map +1 -0
- package/dist/core/domain-dispatch.d.ts +44 -0
- package/dist/core/domain-dispatch.d.ts.map +1 -0
- package/dist/core/domain-dispatch.js +118 -0
- package/dist/core/domain-dispatch.js.map +1 -0
- package/dist/core/domain-loadouts.d.ts +76 -0
- package/dist/core/domain-loadouts.d.ts.map +1 -0
- package/dist/core/domain-loadouts.js +981 -0
- package/dist/core/domain-loadouts.js.map +1 -0
- package/dist/core/domain-registry.d.ts +7 -0
- package/dist/core/domain-registry.d.ts.map +1 -0
- package/dist/core/domain-registry.js +11 -0
- package/dist/core/domain-registry.js.map +1 -0
- package/dist/core/domain-router.d.ts +16 -0
- package/dist/core/domain-router.d.ts.map +1 -0
- package/dist/core/domain-router.js +24 -0
- package/dist/core/domain-router.js.map +1 -0
- package/dist/core/domain-score.d.ts +13 -0
- package/dist/core/domain-score.d.ts.map +1 -0
- package/dist/core/domain-score.js +48 -0
- package/dist/core/domain-score.js.map +1 -0
- package/dist/core/domain-trigger-match.d.ts +14 -0
- package/dist/core/domain-trigger-match.d.ts.map +1 -0
- package/dist/core/domain-trigger-match.js +51 -0
- package/dist/core/domain-trigger-match.js.map +1 -0
- package/dist/core/domain-types.d.ts +30 -0
- package/dist/core/domain-types.d.ts.map +1 -0
- package/dist/core/domain-types.js +2 -0
- package/dist/core/domain-types.js.map +1 -0
- package/dist/core/exact-cache-policy.d.ts +108 -0
- package/dist/core/exact-cache-policy.d.ts.map +1 -0
- package/dist/core/exact-cache-policy.js +184 -0
- package/dist/core/exact-cache-policy.js.map +1 -0
- package/dist/core/export-html/index.d.ts +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.js +2 -4
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.d.ts +80 -0
- package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -0
- package/dist/core/extensions/builtin/command-safety-gate.js +159 -0
- package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -0
- package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
- package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todo-checklist.js +70 -0
- package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +50 -47
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +13 -13
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/headroom.d.ts +45 -0
- package/dist/core/headroom.d.ts.map +1 -0
- package/dist/core/headroom.js +171 -0
- package/dist/core/headroom.js.map +1 -0
- package/dist/core/hook-inventory.d.ts +25 -0
- package/dist/core/hook-inventory.d.ts.map +1 -0
- package/dist/core/hook-inventory.js +119 -0
- package/dist/core/hook-inventory.js.map +1 -0
- package/dist/core/hooks/fail-closed.d.ts +4 -1
- package/dist/core/hooks/fail-closed.d.ts.map +1 -1
- package/dist/core/hooks/fail-closed.js +79 -5
- package/dist/core/hooks/fail-closed.js.map +1 -1
- package/dist/core/hooks/index.d.ts +2 -2
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +1 -1
- package/dist/core/hooks/index.js.map +1 -1
- package/dist/core/hooks/types.d.ts +9 -0
- package/dist/core/hooks/types.d.ts.map +1 -1
- package/dist/core/hooks/types.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -14
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -31
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lean-ctx.d.ts +99 -0
- package/dist/core/lean-ctx.d.ts.map +1 -0
- package/dist/core/lean-ctx.js +225 -0
- package/dist/core/lean-ctx.js.map +1 -0
- package/dist/core/loadout-access-policy.d.ts +41 -0
- package/dist/core/loadout-access-policy.d.ts.map +1 -0
- package/dist/core/loadout-access-policy.js +182 -0
- package/dist/core/loadout-access-policy.js.map +1 -0
- package/dist/core/loadout-compose.d.ts +53 -0
- package/dist/core/loadout-compose.d.ts.map +1 -0
- package/dist/core/loadout-compose.js +172 -0
- package/dist/core/loadout-compose.js.map +1 -0
- package/dist/core/loadout-policy-bridge.d.ts +22 -0
- package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
- package/dist/core/loadout-policy-bridge.js +52 -0
- package/dist/core/loadout-policy-bridge.js.map +1 -0
- package/dist/core/loadout-runtime.d.ts +106 -0
- package/dist/core/loadout-runtime.d.ts.map +1 -0
- package/dist/core/loadout-runtime.js +193 -0
- package/dist/core/loadout-runtime.js.map +1 -0
- package/dist/core/loadout-safety.d.ts +55 -0
- package/dist/core/loadout-safety.d.ts.map +1 -0
- package/dist/core/loadout-safety.js +213 -0
- package/dist/core/loadout-safety.js.map +1 -0
- package/dist/core/loadouts.d.ts +149 -0
- package/dist/core/loadouts.d.ts.map +1 -0
- package/dist/core/loadouts.js +553 -0
- package/dist/core/loadouts.js.map +1 -0
- package/dist/core/loop-gates.d.ts +48 -0
- package/dist/core/loop-gates.d.ts.map +1 -0
- package/dist/core/loop-gates.js +352 -0
- package/dist/core/loop-gates.js.map +1 -0
- package/dist/core/loop-registry.d.ts +77 -0
- package/dist/core/loop-registry.d.ts.map +1 -0
- package/dist/core/loop-registry.js +831 -0
- package/dist/core/loop-registry.js.map +1 -0
- package/dist/core/loop-types.d.ts +194 -0
- package/dist/core/loop-types.d.ts.map +1 -0
- package/dist/core/loop-types.js +2 -0
- package/dist/core/loop-types.js.map +1 -0
- package/dist/core/mcp-inventory.d.ts +41 -0
- package/dist/core/mcp-inventory.d.ts.map +1 -1
- package/dist/core/mcp-inventory.js +57 -1
- package/dist/core/mcp-inventory.js.map +1 -1
- package/dist/core/mcp-presets.d.ts +98 -0
- package/dist/core/mcp-presets.d.ts.map +1 -0
- package/dist/core/mcp-presets.js +377 -0
- package/dist/core/mcp-presets.js.map +1 -0
- package/dist/core/messages.d.ts +3 -3
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/metrics-sampler.d.ts +11 -0
- package/dist/core/metrics-sampler.d.ts.map +1 -1
- package/dist/core/metrics-sampler.js +52 -13
- package/dist/core/metrics-sampler.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-gallery-identity.d.ts +7 -0
- package/dist/core/package-gallery-identity.d.ts.map +1 -0
- package/dist/core/package-gallery-identity.js +31 -0
- package/dist/core/package-gallery-identity.js.map +1 -0
- package/dist/core/package-gallery-install.d.ts +6 -0
- package/dist/core/package-gallery-install.d.ts.map +1 -0
- package/dist/core/package-gallery-install.js +59 -0
- package/dist/core/package-gallery-install.js.map +1 -0
- package/dist/core/package-gallery-manifest.d.ts +13 -0
- package/dist/core/package-gallery-manifest.d.ts.map +1 -0
- package/dist/core/package-gallery-manifest.js +183 -0
- package/dist/core/package-gallery-manifest.js.map +1 -0
- package/dist/core/package-gallery-trial.d.ts +4 -0
- package/dist/core/package-gallery-trial.d.ts.map +1 -0
- package/dist/core/package-gallery-trial.js +55 -0
- package/dist/core/package-gallery-trial.js.map +1 -0
- package/dist/core/package-gallery-types.d.ts +71 -0
- package/dist/core/package-gallery-types.d.ts.map +1 -0
- package/dist/core/package-gallery-types.js +2 -0
- package/dist/core/package-gallery-types.js.map +1 -0
- package/dist/core/package-gallery.d.ts +6 -0
- package/dist/core/package-gallery.d.ts.map +1 -0
- package/dist/core/package-gallery.js +6 -0
- package/dist/core/package-gallery.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +10 -10
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-procurement.d.ts +268 -0
- package/dist/core/package-procurement.d.ts.map +1 -0
- package/dist/core/package-procurement.js +709 -0
- package/dist/core/package-procurement.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/read-anchors.d.ts +110 -0
- package/dist/core/read-anchors.d.ts.map +1 -0
- package/dist/core/read-anchors.js +193 -0
- package/dist/core/read-anchors.js.map +1 -0
- package/dist/core/recovery-checkpoint.d.ts +196 -0
- package/dist/core/recovery-checkpoint.d.ts.map +1 -0
- package/dist/core/recovery-checkpoint.js +382 -0
- package/dist/core/recovery-checkpoint.js.map +1 -0
- package/dist/core/resource-loader.d.ts +15 -21
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +62 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sandbox/backend.d.ts +25 -0
- package/dist/core/sandbox/backend.d.ts.map +1 -0
- package/dist/core/sandbox/backend.js +150 -0
- package/dist/core/sandbox/backend.js.map +1 -0
- package/dist/core/sandbox/env.d.ts +6 -0
- package/dist/core/sandbox/env.d.ts.map +1 -0
- package/dist/core/sandbox/env.js +46 -0
- package/dist/core/sandbox/env.js.map +1 -0
- package/dist/core/sandbox/path-resolver.d.ts +4 -0
- package/dist/core/sandbox/path-resolver.d.ts.map +1 -0
- package/dist/core/sandbox/path-resolver.js +44 -0
- package/dist/core/sandbox/path-resolver.js.map +1 -0
- package/dist/core/sandbox/policy.d.ts +87 -0
- package/dist/core/sandbox/policy.d.ts.map +1 -0
- package/dist/core/sandbox/policy.js +280 -0
- package/dist/core/sandbox/policy.js.map +1 -0
- package/dist/core/sandbox/spawn.d.ts +20 -0
- package/dist/core/sandbox/spawn.d.ts.map +1 -0
- package/dist/core/sandbox/spawn.js +80 -0
- package/dist/core/sandbox/spawn.js.map +1 -0
- package/dist/core/sandbox-policy-v2.d.ts +49 -0
- package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
- package/dist/core/sandbox-policy-v2.js +368 -0
- package/dist/core/sandbox-policy-v2.js.map +1 -0
- package/dist/core/sdk.d.ts +15 -4
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +50 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/semantic-cache-policy.d.ts +51 -0
- package/dist/core/semantic-cache-policy.d.ts.map +1 -0
- package/dist/core/semantic-cache-policy.js +228 -0
- package/dist/core/semantic-cache-policy.js.map +1 -0
- package/dist/core/session-manager.d.ts +2 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -4
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -7
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +1 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +46 -5
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-orchestration.d.ts +73 -0
- package/dist/core/subagent-orchestration.d.ts.map +1 -0
- package/dist/core/subagent-orchestration.js +408 -0
- package/dist/core/subagent-orchestration.js.map +1 -0
- package/dist/core/system-prompt.d.ts +5 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +63 -24
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js +1 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.d.ts +0 -4
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +1 -5
- package/dist/core/timings.js.map +1 -1
- package/dist/core/todo-state.d.ts +53 -0
- package/dist/core/todo-state.d.ts.map +1 -0
- package/dist/core/todo-state.js +87 -0
- package/dist/core/todo-state.js.map +1 -0
- package/dist/core/token-optimizer.d.ts +58 -0
- package/dist/core/token-optimizer.d.ts.map +1 -0
- package/dist/core/token-optimizer.js +179 -0
- package/dist/core/token-optimizer.js.map +1 -0
- package/dist/core/tools/bash.d.ts +28 -4
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +55 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +1 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/read.d.ts +2 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +6 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.d.ts +2 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +4 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/encoding/index.d.ts +6 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +6 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/encoding/l4-encoder.d.ts +96 -0
- package/dist/encoding/l4-encoder.d.ts.map +1 -0
- package/dist/encoding/l4-encoder.js +474 -0
- package/dist/encoding/l4-encoder.js.map +1 -0
- package/dist/fuzzing/index.d.ts +6 -0
- package/dist/fuzzing/index.d.ts.map +1 -0
- package/dist/fuzzing/index.js +6 -0
- package/dist/fuzzing/index.js.map +1 -0
- package/dist/fuzzing/mutation-engine.d.ts +93 -0
- package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
- package/dist/fuzzing/mutation-engine.js +244 -0
- package/dist/fuzzing/mutation-engine.js.map +1 -0
- package/dist/guardrails/audit-logger.d.ts +4 -0
- package/dist/guardrails/audit-logger.d.ts.map +1 -0
- package/dist/guardrails/audit-logger.js +28 -0
- package/dist/guardrails/audit-logger.js.map +1 -0
- package/dist/guardrails/evidence-system.d.ts +61 -0
- package/dist/guardrails/evidence-system.d.ts.map +1 -0
- package/dist/guardrails/evidence-system.js +302 -0
- package/dist/guardrails/evidence-system.js.map +1 -0
- package/dist/guardrails/freedomd-adapter.d.ts +16 -0
- package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
- package/dist/guardrails/freedomd-adapter.js +87 -0
- package/dist/guardrails/freedomd-adapter.js.map +1 -0
- package/dist/jailbreak-extension.d.ts +48 -0
- package/dist/jailbreak-extension.d.ts.map +1 -0
- package/dist/jailbreak-extension.js +47 -0
- package/dist/jailbreak-extension.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -8
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +0 -37
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +6 -414
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
- package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-box.js +55 -0
- package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts +28 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.js +112 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts +28 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.js +128 -0
- package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.js +165 -0
- package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
- package/dist/modes/interactive/components/control-panel.d.ts +24 -20
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +88 -69
- package/dist/modes/interactive/components/control-panel.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +14 -22
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js +2 -2
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +2 -2
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +0 -2
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -2
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +2 -2
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +4 -4
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +20 -42
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -7
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
- package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
- package/dist/modes/interactive/components/todo-checklist.js +121 -0
- package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -8
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +79 -189
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
- package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
- package/dist/modes/interactive/theme/rust-forge.json +14 -24
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +22 -31
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +3 -3
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +2 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modules/index.d.ts +8 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +7 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/lrl-bypass.d.ts +40 -0
- package/dist/modules/lrl-bypass.d.ts.map +1 -0
- package/dist/modules/lrl-bypass.js +84 -0
- package/dist/modules/lrl-bypass.js.map +1 -0
- package/dist/modules/lrl-deps.d.ts +38 -0
- package/dist/modules/lrl-deps.d.ts.map +1 -0
- package/dist/modules/lrl-deps.js +128 -0
- package/dist/modules/lrl-deps.js.map +1 -0
- package/dist/multiturn/easl-chain.d.ts +113 -0
- package/dist/multiturn/easl-chain.d.ts.map +1 -0
- package/dist/multiturn/easl-chain.js +351 -0
- package/dist/multiturn/easl-chain.js.map +1 -0
- package/dist/multiturn/index.d.ts +6 -0
- package/dist/multiturn/index.d.ts.map +1 -0
- package/dist/multiturn/index.js +6 -0
- package/dist/multiturn/index.js.map +1 -0
- package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
- package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
- package/dist/orchestration/lane-grant-auditor.js +87 -0
- package/dist/orchestration/lane-grant-auditor.js.map +1 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +3 -3
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/routing/fallback-router.d.ts +123 -0
- package/dist/routing/fallback-router.d.ts.map +1 -0
- package/dist/routing/fallback-router.js +355 -0
- package/dist/routing/fallback-router.js.map +1 -0
- package/dist/routing/index.d.ts +6 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +6 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/types/evidence.d.ts +117 -0
- package/dist/types/evidence.d.ts.map +1 -0
- package/dist/types/evidence.js +8 -0
- package/dist/types/evidence.js.map +1 -0
- package/dist/types/guardrails.d.ts +61 -0
- package/dist/types/guardrails.d.ts.map +1 -0
- package/dist/types/guardrails.js +9 -0
- package/dist/types/guardrails.js.map +1 -0
- package/dist/types/jailbreak.d.ts +246 -0
- package/dist/types/jailbreak.d.ts.map +1 -0
- package/dist/types/jailbreak.js +8 -0
- package/dist/types/jailbreak.js.map +1 -0
- package/dist/types/lane-grant.d.ts +58 -0
- package/dist/types/lane-grant.d.ts.map +1 -0
- package/dist/types/lane-grant.js +9 -0
- package/dist/types/lane-grant.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/jailbreak/common.d.ts +63 -0
- package/dist/utils/jailbreak/common.d.ts.map +1 -0
- package/dist/utils/jailbreak/common.js +130 -0
- package/dist/utils/jailbreak/common.js.map +1 -0
- package/dist/utils/jailbreak/index.d.ts +7 -0
- package/dist/utils/jailbreak/index.d.ts.map +1 -0
- package/dist/utils/jailbreak/index.js +7 -0
- package/dist/utils/jailbreak/index.js.map +1 -0
- package/dist/utils/omk-user-agent.d.ts +2 -0
- package/dist/utils/omk-user-agent.d.ts.map +1 -0
- package/dist/utils/{pi-user-agent.js → omk-user-agent.js} +2 -2
- package/dist/utils/omk-user-agent.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +5 -5
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +8 -11
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/compaction.md +8 -21
- package/docs/custom-provider.md +2 -2
- package/docs/development.md +1 -1
- package/docs/extensions.md +11 -11
- package/docs/loadout-domains/README.md +70 -0
- package/docs/loadout-domains/ai-agent-ops.md +94 -0
- package/docs/loadout-domains/backend-api.md +116 -0
- package/docs/loadout-domains/data-science.md +100 -0
- package/docs/loadout-domains/devops-infra.md +85 -0
- package/docs/loadout-domains/docs-writing.md +92 -0
- package/docs/loadout-domains/frontend-ui.md +128 -0
- package/docs/loadout-domains/general.md +62 -0
- package/docs/loadout-domains/mobile.md +84 -0
- package/docs/loadout-domains/qa-testing.md +87 -0
- package/docs/loadout-domains/research.md +80 -0
- package/docs/loadout-domains/security-audit.md +97 -0
- package/docs/packages.md +1 -1
- package/docs/sdk.md +3 -3
- package/docs/security.md +145 -0
- package/docs/session-format.md +1 -1
- package/docs/themes.md +8 -7
- package/docs/tui.md +14 -14
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +12 -12
- package/examples/extensions/aside-computer-use/README.md +114 -0
- package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
- package/examples/extensions/aside-computer-use/assertions.ts +380 -0
- package/examples/extensions/aside-computer-use/controller.ts +491 -0
- package/examples/extensions/aside-computer-use/evidence.ts +229 -0
- package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
- package/examples/extensions/aside-computer-use/index.ts +76 -0
- package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
- package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
- package/examples/extensions/aside-computer-use/package.json +16 -0
- package/examples/extensions/aside-computer-use/policy.ts +257 -0
- package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
- package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
- package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
- package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
- package/examples/extensions/aside-computer-use/tools.ts +449 -0
- package/examples/extensions/aside-computer-use/types.ts +217 -0
- package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
- package/examples/extensions/auto-commit-on-exit.ts +6 -6
- package/examples/extensions/bash-spawn-hook.ts +3 -3
- package/examples/extensions/bookmark.ts +5 -5
- package/examples/extensions/border-status-editor.ts +9 -9
- package/examples/extensions/built-in-tool-renderer.ts +7 -7
- package/examples/extensions/claude-rules.ts +4 -4
- package/examples/extensions/commands.ts +5 -5
- package/examples/extensions/confirm-destructive.ts +3 -3
- package/examples/extensions/custom-compaction.ts +4 -4
- package/examples/extensions/custom-footer.ts +4 -4
- package/examples/extensions/custom-header.ts +11 -11
- package/examples/extensions/custom-provider-anthropic/index.ts +5 -5
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +4 -4
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/dirty-repo-guard.ts +7 -7
- package/examples/extensions/doom-overlay/README.md +2 -3
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +4 -4
- package/examples/extensions/doom-overlay/doom/{doomgeneric_pi.c → doomgeneric_omk.c} +1 -1
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/doom-overlay/index.ts +3 -3
- package/examples/extensions/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/dynamic-resources/index.ts +2 -2
- package/examples/extensions/dynamic-tools.ts +4 -4
- package/examples/extensions/event-bus.ts +8 -8
- package/examples/extensions/file-trigger.ts +3 -3
- package/examples/extensions/git-checkpoint.ts +7 -7
- package/examples/extensions/git-merge-and-resolve.ts +14 -14
- package/examples/extensions/github-issue-autocomplete.ts +7 -12
- package/examples/extensions/gondolin/index.ts +16 -16
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +4 -4
- package/examples/extensions/hello.ts +3 -3
- package/examples/extensions/hidden-thinking-label.ts +4 -4
- package/examples/extensions/inline-bash.ts +5 -5
- package/examples/extensions/input-transform-streaming.ts +5 -5
- package/examples/extensions/input-transform.ts +5 -5
- package/examples/extensions/interactive-shell.ts +3 -3
- package/examples/extensions/mac-system-theme.ts +5 -5
- package/examples/extensions/message-renderer.ts +5 -5
- package/examples/extensions/minimal-mode.ts +10 -10
- package/examples/extensions/modal-editor.ts +4 -4
- package/examples/extensions/model-status.ts +3 -3
- package/examples/extensions/notify.ts +5 -5
- package/examples/extensions/overlay-qa-tests.ts +22 -22
- package/examples/extensions/overlay-test.ts +4 -4
- package/examples/extensions/permission-gate.ts +2 -2
- package/examples/extensions/pirate.ts +4 -4
- package/examples/extensions/plan-mode/index.ts +25 -25
- package/examples/extensions/preset.ts +31 -31
- package/examples/extensions/prompt-customizer.ts +3 -3
- package/examples/extensions/protected-paths.ts +2 -2
- package/examples/extensions/provider-payload.ts +8 -5
- package/examples/extensions/qna.ts +3 -3
- package/examples/extensions/question.ts +3 -3
- package/examples/extensions/questionnaire.ts +3 -3
- package/examples/extensions/rainbow-editor.ts +3 -3
- package/examples/extensions/reload-runtime.ts +4 -4
- package/examples/extensions/rpc-demo.ts +10 -10
- package/examples/extensions/sandbox/index.ts +16 -16
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/send-user-message.ts +13 -13
- package/examples/extensions/session-name.ts +4 -4
- package/examples/extensions/shutdown-command.ts +10 -10
- package/examples/extensions/snake.ts +4 -4
- package/examples/extensions/space-invaders.ts +4 -4
- package/examples/extensions/ssh.ts +12 -12
- package/examples/extensions/status-line.ts +4 -4
- package/examples/extensions/structured-output.ts +3 -3
- package/examples/extensions/subagent/README.md +13 -13
- package/examples/extensions/subagent/agents.ts +1 -1
- package/examples/extensions/subagent/index.ts +13 -13
- package/examples/extensions/summarize.ts +4 -4
- package/examples/extensions/system-prompt-header.ts +3 -3
- package/examples/extensions/tic-tac-toe.ts +17 -17
- package/examples/extensions/timed-confirm.ts +4 -4
- package/examples/extensions/titlebar-spinner.ts +9 -9
- package/examples/extensions/todo.ts +7 -7
- package/examples/extensions/tool-override.ts +6 -6
- package/examples/extensions/tools.ts +11 -11
- package/examples/extensions/trigger-compact.ts +3 -3
- package/examples/extensions/truncated-tool.ts +4 -4
- package/examples/extensions/widget-placement.ts +2 -2
- package/examples/extensions/with-deps/index.ts +2 -2
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +7 -7
- package/examples/extensions/working-message-test.ts +3 -3
- package/examples/rpc-extension-ui.ts +1 -9
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/03-custom-prompt.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/05-tools.ts +1 -1
- package/examples/sdk/06-extensions.ts +11 -11
- package/examples/sdk/08-prompt-templates.ts +1 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +3 -3
- package/npm-shrinkwrap.json +1805 -0
- package/package.json +8 -14
- package/dist/core/harness-control-events.d.ts +0 -79
- package/dist/core/harness-control-events.d.ts.map +0 -1
- package/dist/core/harness-control-events.js +0 -339
- package/dist/core/harness-control-events.js.map +0 -1
- package/dist/core/harness-control-replay.d.ts +0 -26
- package/dist/core/harness-control-replay.d.ts.map +0 -1
- package/dist/core/harness-control-replay.js +0 -155
- package/dist/core/harness-control-replay.js.map +0 -1
- package/dist/core/spec-kit/compiler.d.ts +0 -67
- package/dist/core/spec-kit/compiler.d.ts.map +0 -1
- package/dist/core/spec-kit/compiler.js +0 -268
- package/dist/core/spec-kit/compiler.js.map +0 -1
- package/dist/core/transaction-coordinator.d.ts +0 -30
- package/dist/core/transaction-coordinator.d.ts.map +0 -1
- package/dist/core/transaction-coordinator.js +0 -173
- package/dist/core/transaction-coordinator.js.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.d.ts +0 -28
- package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.js +0 -138
- package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
- package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
- package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/skills-selector.js +0 -130
- package/dist/modes/interactive/components/skills-selector.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts +0 -2
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js.map +0 -1
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* Pure functions for compaction logic. The session manager handles I/O,
|
|
5
5
|
* and after compaction the session is reloaded.
|
|
6
6
|
*/
|
|
7
|
-
import { completeSimple } from "
|
|
8
|
-
import { recordHarnessControlEvent } from "../harness-control-events.js";
|
|
7
|
+
import { completeSimple } from "omk-ai";
|
|
9
8
|
import { convertToLlm, createBranchSummaryMessage, createCompactionSummaryMessage, createCustomMessage, } from "../messages.js";
|
|
10
9
|
import { buildSessionContext } from "../session-manager.js";
|
|
11
10
|
import { computeFileLists, createFileOps, extractFileOpsFromMessage, formatFileOperations, SUMMARIZATION_SYSTEM_PROMPT, serializeConversation, } from "./utils.js";
|
|
@@ -14,7 +13,6 @@ import { computeFileLists, createFileOps, extractFileOpsFromMessage, formatFileO
|
|
|
14
13
|
*/
|
|
15
14
|
function extractFileOperations(messages, entries, prevCompactionIndex) {
|
|
16
15
|
const fileOps = createFileOps();
|
|
17
|
-
// Collect from previous compaction's details (if pi-generated)
|
|
18
16
|
if (prevCompactionIndex >= 0) {
|
|
19
17
|
const prevCompaction = entries[prevCompactionIndex];
|
|
20
18
|
if (!prevCompaction.fromHook && prevCompaction.details) {
|
|
@@ -65,13 +63,11 @@ function getMessageFromEntryForCompaction(entry) {
|
|
|
65
63
|
return getMessageFromEntry(entry);
|
|
66
64
|
}
|
|
67
65
|
export const DEFAULT_COMPACTION_MAX_USAGE_RATIO = 0.9;
|
|
68
|
-
export const DEFAULT_COMPACTION_SUMMARY_INPUT_TOKENS = 80000;
|
|
69
66
|
export const DEFAULT_COMPACTION_SETTINGS = {
|
|
70
67
|
enabled: true,
|
|
71
68
|
reserveTokens: 16384,
|
|
72
69
|
keepRecentTokens: 20000,
|
|
73
70
|
maxUsageRatio: DEFAULT_COMPACTION_MAX_USAGE_RATIO,
|
|
74
|
-
summaryInputTokens: DEFAULT_COMPACTION_SUMMARY_INPUT_TOKENS,
|
|
75
71
|
};
|
|
76
72
|
// ============================================================================
|
|
77
73
|
// Token calculation
|
|
@@ -377,401 +373,6 @@ export function findCutPoint(entries, startIndex, endIndex, keepRecentTokens) {
|
|
|
377
373
|
};
|
|
378
374
|
}
|
|
379
375
|
// ============================================================================
|
|
380
|
-
// Summarization Input Packing
|
|
381
|
-
// ============================================================================
|
|
382
|
-
const CHARS_PER_TOKEN_ESTIMATE = 4;
|
|
383
|
-
const SUMMARY_INPUT_PROMPT_OVERHEAD_TOKENS = 2048;
|
|
384
|
-
const SUMMARY_INPUT_TOKENIZER_SAFETY_MARGIN = 512;
|
|
385
|
-
const MIN_SUMMARY_INPUT_TOKENS = 512;
|
|
386
|
-
function estimateTextTokens(text) {
|
|
387
|
-
return Math.ceil(text.length / CHARS_PER_TOKEN_ESTIMATE);
|
|
388
|
-
}
|
|
389
|
-
function isFinitePositiveInteger(value) {
|
|
390
|
-
return value !== undefined && Number.isFinite(value) && value > 0;
|
|
391
|
-
}
|
|
392
|
-
export function resolveSummaryInputTokenBudgetV3(model, maxOutputTokens, options) {
|
|
393
|
-
const configuredSummaryInputTokens = typeof options === "number" ? options : options?.configuredSummaryInputTokens;
|
|
394
|
-
if (configuredSummaryInputTokens !== undefined && configuredSummaryInputTokens <= 0) {
|
|
395
|
-
return { emergency: false, fixedPromptTokens: 0 };
|
|
396
|
-
}
|
|
397
|
-
const configuredBudget = configuredSummaryInputTokens ?? DEFAULT_COMPACTION_SUMMARY_INPUT_TOKENS;
|
|
398
|
-
if (!isFinitePositiveInteger(configuredBudget)) {
|
|
399
|
-
return { emergency: false, fixedPromptTokens: 0 };
|
|
400
|
-
}
|
|
401
|
-
const contextWindow = model.contextWindow > 0 ? Math.floor(model.contextWindow) : Number.POSITIVE_INFINITY;
|
|
402
|
-
if (!Number.isFinite(contextWindow)) {
|
|
403
|
-
return { budgetTokens: Math.floor(configuredBudget), emergency: false, fixedPromptTokens: 0 };
|
|
404
|
-
}
|
|
405
|
-
const fixedPromptTokens = typeof options === "object"
|
|
406
|
-
? estimateTextTokens([
|
|
407
|
-
options.systemPrompt,
|
|
408
|
-
options.basePrompt,
|
|
409
|
-
options.customInstructions,
|
|
410
|
-
options.previousSummary,
|
|
411
|
-
options.wrapperText,
|
|
412
|
-
]
|
|
413
|
-
.filter((value) => typeof value === "string" && value.length > 0)
|
|
414
|
-
.join("\n"))
|
|
415
|
-
: SUMMARY_INPUT_PROMPT_OVERHEAD_TOKENS;
|
|
416
|
-
const safetyMarginTokens = typeof options === "object" ? (options.safetyMarginTokens ?? SUMMARY_INPUT_TOKENIZER_SAFETY_MARGIN) : 0;
|
|
417
|
-
const availableInputTokens = contextWindow - Math.max(0, Math.floor(maxOutputTokens)) - fixedPromptTokens - safetyMarginTokens;
|
|
418
|
-
if (availableInputTokens < MIN_SUMMARY_INPUT_TOKENS) {
|
|
419
|
-
return {
|
|
420
|
-
emergency: true,
|
|
421
|
-
reason: "fixed prompt overhead exceeds viable summarization input budget",
|
|
422
|
-
fixedPromptTokens,
|
|
423
|
-
availableInputTokens,
|
|
424
|
-
};
|
|
425
|
-
}
|
|
426
|
-
return {
|
|
427
|
-
budgetTokens: Math.max(MIN_SUMMARY_INPUT_TOKENS, Math.min(Math.floor(configuredBudget), availableInputTokens)),
|
|
428
|
-
emergency: false,
|
|
429
|
-
fixedPromptTokens,
|
|
430
|
-
availableInputTokens,
|
|
431
|
-
};
|
|
432
|
-
}
|
|
433
|
-
export function resolveSummaryInputTokenBudget(model, maxOutputTokens, options) {
|
|
434
|
-
return resolveSummaryInputTokenBudgetV3(model, maxOutputTokens, options).budgetTokens;
|
|
435
|
-
}
|
|
436
|
-
function scoreSummaryLine(line) {
|
|
437
|
-
const trimmed = line.trim();
|
|
438
|
-
if (trimmed.length === 0)
|
|
439
|
-
return 0;
|
|
440
|
-
let score = 0;
|
|
441
|
-
if (/\b(?:[\w.-]+\/)+[\w.-]+\.(?:ts|tsx|js|jsx|json|md|css|scss|py|rs|go|java|kt|swift|sh|yml|yaml|toml)\b/.test(trimmed)) {
|
|
442
|
-
score += 6;
|
|
443
|
-
}
|
|
444
|
-
if (/\b(?:error|failed|failure|exception|warning|blocked|regression|timeout|overflow|abort)\b/i.test(trimmed) ||
|
|
445
|
-
/(?:오류|실패|경고|차단|회귀|시간 초과|타임아웃)/.test(trimmed)) {
|
|
446
|
-
score += 5;
|
|
447
|
-
}
|
|
448
|
-
if (/\b(?:npm|node|pnpm|yarn|bun|git|gh|tsgo|vitest|biome|pytest|cargo|go test)\b/.test(trimmed)) {
|
|
449
|
-
score += 4;
|
|
450
|
-
}
|
|
451
|
-
if (/^(?:#{1,6}\s|[-*]\s|\d+\.\s|\[[ xX]\]|```)/.test(trimmed)) {
|
|
452
|
-
score += 3;
|
|
453
|
-
}
|
|
454
|
-
if (/\b(?:goal|constraint|decision|next step|todo|changed|created|modified|verified|passed|failed)\b/i.test(trimmed) ||
|
|
455
|
-
/(?:목표|제약|결정|다음 단계|검증|통과|수정|생성|변경|증거)/.test(trimmed)) {
|
|
456
|
-
score += 3;
|
|
457
|
-
}
|
|
458
|
-
if (trimmed.length <= 220) {
|
|
459
|
-
score += 1;
|
|
460
|
-
}
|
|
461
|
-
else if (trimmed.length > 1000) {
|
|
462
|
-
score -= 3;
|
|
463
|
-
}
|
|
464
|
-
return score;
|
|
465
|
-
}
|
|
466
|
-
function selectHighSignalLines(text, budgetChars) {
|
|
467
|
-
if (budgetChars <= 0)
|
|
468
|
-
return "";
|
|
469
|
-
const scoredLines = text
|
|
470
|
-
.split("\n")
|
|
471
|
-
.map((line, index) => ({ index, line, score: scoreSummaryLine(line) }))
|
|
472
|
-
.filter((item) => item.score > 0)
|
|
473
|
-
.sort((a, b) => b.score - a.score || a.index - b.index);
|
|
474
|
-
const selected = [];
|
|
475
|
-
let usedChars = 0;
|
|
476
|
-
for (const item of scoredLines) {
|
|
477
|
-
const lineChars = item.line.length + 1;
|
|
478
|
-
if (usedChars + lineChars > budgetChars)
|
|
479
|
-
continue;
|
|
480
|
-
selected.push({ index: item.index, line: item.line });
|
|
481
|
-
usedChars += lineChars;
|
|
482
|
-
}
|
|
483
|
-
if (selected.length === 0) {
|
|
484
|
-
return text.slice(0, budgetChars);
|
|
485
|
-
}
|
|
486
|
-
return selected
|
|
487
|
-
.sort((a, b) => a.index - b.index)
|
|
488
|
-
.map((item) => item.line)
|
|
489
|
-
.join("\n");
|
|
490
|
-
}
|
|
491
|
-
function scoreSummaryUnit(unit) {
|
|
492
|
-
const lineScores = unit.split("\n").map(scoreSummaryLine);
|
|
493
|
-
const maxLineScore = Math.max(0, ...lineScores);
|
|
494
|
-
const aggregateScore = lineScores.reduce((sum, score) => sum + Math.max(0, score), 0);
|
|
495
|
-
let score = maxLineScore * 2 + Math.min(aggregateScore, 12);
|
|
496
|
-
if (/^```/m.test(unit))
|
|
497
|
-
score += 3;
|
|
498
|
-
if (/^#{1,6}\s/m.test(unit))
|
|
499
|
-
score += 2;
|
|
500
|
-
if (unit.length > 2400)
|
|
501
|
-
score -= 4;
|
|
502
|
-
return score;
|
|
503
|
-
}
|
|
504
|
-
function extractSummaryUnitSignals(text) {
|
|
505
|
-
const signals = new Set();
|
|
506
|
-
for (const match of text.matchAll(/\b(?:[\w.-]+\/)+[\w.-]+\.(?:ts|tsx|js|jsx|json|md|css|scss|py|rs|go|java|kt|swift|sh|yml|yaml|toml)\b/g)) {
|
|
507
|
-
signals.add(`path:${match[0]}`);
|
|
508
|
-
}
|
|
509
|
-
for (const match of text.matchAll(/\b(?:npm|node|pnpm|yarn|bun|git|gh|tsgo|vitest|biome|pytest|cargo|go test)\b[^\n]*/g)) {
|
|
510
|
-
signals.add(`cmd:${match[0].trim().slice(0, 160)}`);
|
|
511
|
-
}
|
|
512
|
-
for (const match of text.matchAll(/\b(?:HCP-\d+|R\d+)\b/g)) {
|
|
513
|
-
signals.add(`id:${match[0]}`);
|
|
514
|
-
}
|
|
515
|
-
for (const match of text.matchAll(/\.omk\/[\w./-]+/g)) {
|
|
516
|
-
signals.add(`evidence:${match[0]}`);
|
|
517
|
-
}
|
|
518
|
-
return [...signals];
|
|
519
|
-
}
|
|
520
|
-
function updateHeadingStack(headingStack, headingLine) {
|
|
521
|
-
const match = headingLine.match(/^(#{1,6})\s+(.+)$/);
|
|
522
|
-
if (!match)
|
|
523
|
-
return headingStack;
|
|
524
|
-
const level = match[1].length;
|
|
525
|
-
const title = match[2].replace(/\s+#+\s*$/, "").trim();
|
|
526
|
-
const nextStack = [...headingStack];
|
|
527
|
-
while (nextStack.length > 0 && nextStack.at(-1).level >= level) {
|
|
528
|
-
nextStack.pop();
|
|
529
|
-
}
|
|
530
|
-
nextStack.push({ level, title });
|
|
531
|
-
return nextStack;
|
|
532
|
-
}
|
|
533
|
-
function inferSummaryUnitStatus(text) {
|
|
534
|
-
if (/^- \[[xX]]/m.test(text) || /\b(?:completed|done|fixed)\b/i.test(text) || /(?:완료|수정됨)/.test(text)) {
|
|
535
|
-
return "done";
|
|
536
|
-
}
|
|
537
|
-
if (/^- \[ ]/m.test(text) || /\b(?:in progress|todo|next)\b/i.test(text) || /(?:진행|다음)/.test(text)) {
|
|
538
|
-
return "in_progress";
|
|
539
|
-
}
|
|
540
|
-
if (/\b(?:blocked|blocker)\b/i.test(text) || /(?:차단|블로커)/.test(text))
|
|
541
|
-
return "blocked";
|
|
542
|
-
if (/\b(?:failed|failure|error|exception|regression)\b/i.test(text) || /(?:실패|오류|회귀)/.test(text)) {
|
|
543
|
-
return "failed";
|
|
544
|
-
}
|
|
545
|
-
if (/\b(?:passed|success|ok)\b/i.test(text) || /(?:통과|성공)/.test(text))
|
|
546
|
-
return "passed";
|
|
547
|
-
return undefined;
|
|
548
|
-
}
|
|
549
|
-
function inferSummaryUnitKind(text, status) {
|
|
550
|
-
const trimmed = text.trim();
|
|
551
|
-
if (status === "blocked")
|
|
552
|
-
return "blocker";
|
|
553
|
-
if (trimmed.startsWith("```"))
|
|
554
|
-
return "code";
|
|
555
|
-
if (/\.omk\/[\w./-]+|\bevidence\b/i.test(text))
|
|
556
|
-
return "evidence";
|
|
557
|
-
if (/\b(?:npm|node|pnpm|yarn|bun|git|gh|tsgo|vitest|biome|pytest|cargo|go test)\b/.test(text))
|
|
558
|
-
return "command";
|
|
559
|
-
if (/^(?:[-*]\s+\[[ xX]])/m.test(text))
|
|
560
|
-
return "checklist";
|
|
561
|
-
if (/^#{1,6}\s/m.test(text))
|
|
562
|
-
return "heading";
|
|
563
|
-
return "text";
|
|
564
|
-
}
|
|
565
|
-
function createSummaryInputSemanticUnit(index, text, sectionPath) {
|
|
566
|
-
const status = inferSummaryUnitStatus(text);
|
|
567
|
-
return {
|
|
568
|
-
index,
|
|
569
|
-
text,
|
|
570
|
-
score: scoreSummaryUnit(text),
|
|
571
|
-
sectionPath,
|
|
572
|
-
kind: inferSummaryUnitKind(text, status),
|
|
573
|
-
refs: extractSummaryUnitSignals(text),
|
|
574
|
-
status,
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
export function splitSummaryInputSemanticUnits(text) {
|
|
578
|
-
const lines = text.split("\n");
|
|
579
|
-
const units = [];
|
|
580
|
-
let start = 0;
|
|
581
|
-
let current = [];
|
|
582
|
-
let inFence = false;
|
|
583
|
-
let activeHeadingStack = [];
|
|
584
|
-
let currentSectionPath = [];
|
|
585
|
-
function flush(nextIndex) {
|
|
586
|
-
while (current.length > 0 && current[0]?.trim() === "") {
|
|
587
|
-
current.shift();
|
|
588
|
-
start++;
|
|
589
|
-
}
|
|
590
|
-
while (current.length > 0 && current.at(-1)?.trim() === "") {
|
|
591
|
-
current.pop();
|
|
592
|
-
}
|
|
593
|
-
if (current.length === 0) {
|
|
594
|
-
start = nextIndex;
|
|
595
|
-
currentSectionPath = activeHeadingStack.map((heading) => heading.title);
|
|
596
|
-
return;
|
|
597
|
-
}
|
|
598
|
-
const unitText = current.join("\n");
|
|
599
|
-
units.push(createSummaryInputSemanticUnit(start, unitText, [...currentSectionPath]));
|
|
600
|
-
current = [];
|
|
601
|
-
start = nextIndex;
|
|
602
|
-
currentSectionPath = activeHeadingStack.map((heading) => heading.title);
|
|
603
|
-
}
|
|
604
|
-
for (let index = 0; index < lines.length; index++) {
|
|
605
|
-
const line = lines[index];
|
|
606
|
-
const trimmed = line.trim();
|
|
607
|
-
const startsFence = trimmed.startsWith("```");
|
|
608
|
-
const startsHeading = /^#{1,6}\s/.test(trimmed);
|
|
609
|
-
if (!inFence && startsHeading && current.some((entry) => entry.trim().length > 0)) {
|
|
610
|
-
flush(index);
|
|
611
|
-
}
|
|
612
|
-
if (!inFence && startsHeading) {
|
|
613
|
-
activeHeadingStack = updateHeadingStack(activeHeadingStack, trimmed);
|
|
614
|
-
}
|
|
615
|
-
if (current.length === 0) {
|
|
616
|
-
start = index;
|
|
617
|
-
currentSectionPath = activeHeadingStack.map((heading) => heading.title);
|
|
618
|
-
}
|
|
619
|
-
current.push(line);
|
|
620
|
-
if (startsFence) {
|
|
621
|
-
inFence = !inFence;
|
|
622
|
-
if (!inFence)
|
|
623
|
-
flush(index + 1);
|
|
624
|
-
continue;
|
|
625
|
-
}
|
|
626
|
-
if (!inFence && trimmed.length === 0) {
|
|
627
|
-
flush(index + 1);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
flush(lines.length);
|
|
631
|
-
return units;
|
|
632
|
-
}
|
|
633
|
-
export function buildSummaryDependencyGraph(units) {
|
|
634
|
-
const edges = [];
|
|
635
|
-
const signalsByIndex = new Map();
|
|
636
|
-
for (const unit of units) {
|
|
637
|
-
signalsByIndex.set(unit.index, new Set(unit.refs));
|
|
638
|
-
}
|
|
639
|
-
for (let i = 0; i < units.length; i++) {
|
|
640
|
-
for (let j = i + 1; j < units.length; j++) {
|
|
641
|
-
const leftUnit = units[i];
|
|
642
|
-
const rightUnit = units[j];
|
|
643
|
-
const left = signalsByIndex.get(leftUnit.index) ?? new Set();
|
|
644
|
-
const right = signalsByIndex.get(rightUnit.index) ?? new Set();
|
|
645
|
-
const shared = [...left].find((signal) => right.has(signal));
|
|
646
|
-
const sameSection = leftUnit.sectionPath.length > 0 && leftUnit.sectionPath.join("/") === rightUnit.sectionPath.join("/");
|
|
647
|
-
if (shared || sameSection) {
|
|
648
|
-
const reason = shared ?? `section:${leftUnit.sectionPath.join("/")}`;
|
|
649
|
-
edges.push({ from: leftUnit.index, to: rightUnit.index, reason });
|
|
650
|
-
edges.push({ from: rightUnit.index, to: leftUnit.index, reason });
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
return { nodes: units, edges };
|
|
655
|
-
}
|
|
656
|
-
export function selectSummaryDependencyClosure(graph, seedIndexes, maxAdditionalNodes = 8) {
|
|
657
|
-
const selected = new Set(seedIndexes);
|
|
658
|
-
const queue = [...seedIndexes];
|
|
659
|
-
while (queue.length > 0 && selected.size < seedIndexes.length + maxAdditionalNodes) {
|
|
660
|
-
const index = queue.shift();
|
|
661
|
-
const neighbors = graph.edges
|
|
662
|
-
.filter((edge) => edge.from === index)
|
|
663
|
-
.map((edge) => edge.to)
|
|
664
|
-
.filter((neighbor) => !selected.has(neighbor));
|
|
665
|
-
for (const neighbor of neighbors) {
|
|
666
|
-
selected.add(neighbor);
|
|
667
|
-
queue.push(neighbor);
|
|
668
|
-
if (selected.size >= seedIndexes.length + maxAdditionalNodes)
|
|
669
|
-
break;
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
return selected;
|
|
673
|
-
}
|
|
674
|
-
function normalizeSummaryNovelty(text) {
|
|
675
|
-
return text
|
|
676
|
-
.toLowerCase()
|
|
677
|
-
.replace(/\b\d+\b/g, "#")
|
|
678
|
-
.replace(/\s+/g, " ")
|
|
679
|
-
.trim();
|
|
680
|
-
}
|
|
681
|
-
export function deduplicateSummaryFactsByNovelty(units) {
|
|
682
|
-
const seen = new Set();
|
|
683
|
-
const result = [];
|
|
684
|
-
for (const unit of units) {
|
|
685
|
-
const sectionKey = unit.sectionPath.join("/");
|
|
686
|
-
const key = [sectionKey, unit.kind, unit.status ?? "", normalizeSummaryNovelty(unit.text)].join("|");
|
|
687
|
-
if (seen.has(key))
|
|
688
|
-
continue;
|
|
689
|
-
seen.add(key);
|
|
690
|
-
result.push(unit);
|
|
691
|
-
}
|
|
692
|
-
return result;
|
|
693
|
-
}
|
|
694
|
-
function selectHighSignalSemanticUnits(text, budgetChars) {
|
|
695
|
-
if (budgetChars <= 0)
|
|
696
|
-
return "";
|
|
697
|
-
const candidateUnits = deduplicateSummaryFactsByNovelty(splitSummaryInputSemanticUnits(text).filter((unit) => unit.score > 0));
|
|
698
|
-
const graph = buildSummaryDependencyGraph(candidateUnits);
|
|
699
|
-
const rankedUnits = [...candidateUnits].sort((a, b) => b.score - a.score || a.index - b.index);
|
|
700
|
-
const seedIndexes = rankedUnits.slice(0, Math.min(12, rankedUnits.length)).map((unit) => unit.index);
|
|
701
|
-
const closureIndexes = selectSummaryDependencyClosure(graph, seedIndexes);
|
|
702
|
-
const units = rankedUnits
|
|
703
|
-
.filter((unit) => closureIndexes.has(unit.index))
|
|
704
|
-
.sort((a, b) => b.score - a.score || a.index - b.index);
|
|
705
|
-
const selected = [];
|
|
706
|
-
let usedChars = 0;
|
|
707
|
-
for (const unit of units) {
|
|
708
|
-
const unitChars = unit.text.length + 2;
|
|
709
|
-
if (unitChars > budgetChars) {
|
|
710
|
-
const excerpt = selectHighSignalLines(unit.text, Math.max(0, budgetChars - usedChars));
|
|
711
|
-
if (excerpt.length > 0) {
|
|
712
|
-
selected.push({ ...unit, text: excerpt });
|
|
713
|
-
usedChars += excerpt.length + 2;
|
|
714
|
-
}
|
|
715
|
-
continue;
|
|
716
|
-
}
|
|
717
|
-
if (usedChars + unitChars > budgetChars)
|
|
718
|
-
continue;
|
|
719
|
-
selected.push(unit);
|
|
720
|
-
usedChars += unitChars;
|
|
721
|
-
}
|
|
722
|
-
if (selected.length === 0) {
|
|
723
|
-
return text.slice(0, budgetChars);
|
|
724
|
-
}
|
|
725
|
-
return selected
|
|
726
|
-
.sort((a, b) => a.index - b.index)
|
|
727
|
-
.map((unit) => unit.text)
|
|
728
|
-
.join("\n\n");
|
|
729
|
-
}
|
|
730
|
-
function trimToCharBudget(text, budgetChars, fromEnd = false) {
|
|
731
|
-
if (budgetChars <= 0)
|
|
732
|
-
return "";
|
|
733
|
-
if (text.length <= budgetChars)
|
|
734
|
-
return text;
|
|
735
|
-
return fromEnd ? text.slice(text.length - budgetChars) : text.slice(0, budgetChars);
|
|
736
|
-
}
|
|
737
|
-
/**
|
|
738
|
-
* Pack serialized conversation text under a token budget using a deterministic
|
|
739
|
-
* extractive strategy: preserve the opening, recent tail, and high-signal
|
|
740
|
-
* middle lines such as paths, commands, errors, and decisions.
|
|
741
|
-
*/
|
|
742
|
-
export function packSummaryInputForTokenBudget(text, maxInputTokens) {
|
|
743
|
-
const originalTokens = estimateTextTokens(text);
|
|
744
|
-
if (!isFinitePositiveInteger(maxInputTokens) || originalTokens <= maxInputTokens) {
|
|
745
|
-
return {
|
|
746
|
-
text,
|
|
747
|
-
originalTokens,
|
|
748
|
-
packedTokens: originalTokens,
|
|
749
|
-
omittedTokens: 0,
|
|
750
|
-
wasCompressed: false,
|
|
751
|
-
};
|
|
752
|
-
}
|
|
753
|
-
const targetChars = Math.max(MIN_SUMMARY_INPUT_TOKENS * CHARS_PER_TOKEN_ESTIMATE, Math.floor(maxInputTokens) * 4);
|
|
754
|
-
const marker = `<omk-summary-input-compressed originalTokens="${originalTokens}" targetTokens="${Math.floor(maxInputTokens)}">\nOlder serialized history was packed before summarization. Opening context, high-signal semantic units, and the recent tail were retained; low-signal repeated text was omitted.\n</omk-summary-input-compressed>`;
|
|
755
|
-
const contentBudgetChars = Math.max(512, targetChars - marker.length - 64);
|
|
756
|
-
const headBudgetChars = Math.floor(contentBudgetChars * 0.18);
|
|
757
|
-
const tailBudgetChars = Math.floor(contentBudgetChars * 0.52);
|
|
758
|
-
const middleBudgetChars = Math.max(0, contentBudgetChars - headBudgetChars - tailBudgetChars);
|
|
759
|
-
const head = trimToCharBudget(text, headBudgetChars);
|
|
760
|
-
const tail = trimToCharBudget(text, tailBudgetChars, true);
|
|
761
|
-
const middleStart = Math.min(headBudgetChars, text.length);
|
|
762
|
-
const middleEnd = Math.max(middleStart, text.length - tailBudgetChars);
|
|
763
|
-
const middle = selectHighSignalSemanticUnits(text.slice(middleStart, middleEnd), middleBudgetChars);
|
|
764
|
-
const packedText = [head.trimEnd(), marker, middle.trim(), tail.trimStart()].filter(Boolean).join("\n\n");
|
|
765
|
-
const packedTokens = estimateTextTokens(packedText);
|
|
766
|
-
return {
|
|
767
|
-
text: packedText,
|
|
768
|
-
originalTokens,
|
|
769
|
-
packedTokens,
|
|
770
|
-
omittedTokens: Math.max(0, originalTokens - packedTokens),
|
|
771
|
-
wasCompressed: true,
|
|
772
|
-
};
|
|
773
|
-
}
|
|
774
|
-
// ============================================================================
|
|
775
376
|
// Summarization
|
|
776
377
|
// ============================================================================
|
|
777
378
|
const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
|
|
@@ -805,12 +406,7 @@ Use this EXACT format:
|
|
|
805
406
|
- [Any data, examples, or references needed to continue]
|
|
806
407
|
- [Or "(none)" if not applicable]
|
|
807
408
|
|
|
808
|
-
|
|
809
|
-
- **First action**: [Single concrete next action after compaction]
|
|
810
|
-
- **Re-check before editing**: [Workspace state, files, or commands to verify first; use "(none)" if not needed]
|
|
811
|
-
- **Evidence status**: [Checks/tests already run and results, or "(not run)"]
|
|
812
|
-
|
|
813
|
-
Keep each section concise. Preserve exact file paths, function names, command results, and error messages.`;
|
|
409
|
+
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
814
410
|
const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
|
|
815
411
|
|
|
816
412
|
Update the existing structured summary with new information. RULES:
|
|
@@ -848,150 +444,7 @@ Use this EXACT format:
|
|
|
848
444
|
## Critical Context
|
|
849
445
|
- [Preserve important context, add new if needed]
|
|
850
446
|
|
|
851
|
-
|
|
852
|
-
- **First action**: [Single concrete next action after compaction]
|
|
853
|
-
- **Re-check before editing**: [Workspace state, files, or commands to verify first; use "(none)" if not needed]
|
|
854
|
-
- **Evidence status**: [Checks/tests already run and results, or "(not run)"]
|
|
855
|
-
|
|
856
|
-
Keep each section concise. Preserve exact file paths, function names, command results, and error messages.`;
|
|
857
|
-
const REQUIRED_SUMMARY_SECTIONS = [
|
|
858
|
-
"## Goal",
|
|
859
|
-
"## Constraints & Preferences",
|
|
860
|
-
"## Progress",
|
|
861
|
-
"### Done",
|
|
862
|
-
"### In Progress",
|
|
863
|
-
"### Blocked",
|
|
864
|
-
"## Key Decisions",
|
|
865
|
-
"## Next Steps",
|
|
866
|
-
"## Critical Context",
|
|
867
|
-
"## Resume Handoff",
|
|
868
|
-
];
|
|
869
|
-
export function parseCompactionSummary(summary) {
|
|
870
|
-
const sections = {};
|
|
871
|
-
for (const heading of REQUIRED_SUMMARY_SECTIONS) {
|
|
872
|
-
const value = extractSection(summary, heading);
|
|
873
|
-
if (value !== undefined)
|
|
874
|
-
sections[heading] = value;
|
|
875
|
-
}
|
|
876
|
-
return {
|
|
877
|
-
sections,
|
|
878
|
-
missingSections: REQUIRED_SUMMARY_SECTIONS.filter((heading) => sections[heading] === undefined),
|
|
879
|
-
};
|
|
880
|
-
}
|
|
881
|
-
function extractSection(summary, heading) {
|
|
882
|
-
const start = summary.indexOf(heading);
|
|
883
|
-
if (start < 0)
|
|
884
|
-
return undefined;
|
|
885
|
-
const nextHeading = summary.slice(start + heading.length).search(/\n#{2,3}\s/);
|
|
886
|
-
if (nextHeading < 0)
|
|
887
|
-
return summary.slice(start + heading.length).trim();
|
|
888
|
-
return summary.slice(start + heading.length, start + heading.length + nextHeading).trim();
|
|
889
|
-
}
|
|
890
|
-
function extractCriticalFactsFromText(text, limit = 12) {
|
|
891
|
-
return text
|
|
892
|
-
.split("\n")
|
|
893
|
-
.map((line) => line.trim())
|
|
894
|
-
.filter((line) => line.length > 0 && scoreSummaryLine(line) >= 4)
|
|
895
|
-
.slice(0, limit);
|
|
896
|
-
}
|
|
897
|
-
export function createEmergencyCompactionHandoff(options) {
|
|
898
|
-
const facts = options.fallbackFacts ?? extractCriticalFactsFromText(options.conversationText, 16);
|
|
899
|
-
const previousBlocked = options.previousSummary
|
|
900
|
-
? (extractSection(options.previousSummary, "### Blocked") ??
|
|
901
|
-
extractSection(options.previousSummary, "## Blocked"))
|
|
902
|
-
: undefined;
|
|
903
|
-
return [
|
|
904
|
-
"## Goal",
|
|
905
|
-
"Deterministic emergency compaction handoff because normal summarization could exceed context budget.",
|
|
906
|
-
"",
|
|
907
|
-
"## Constraints & Preferences",
|
|
908
|
-
`- Emergency reason: ${options.reason}`,
|
|
909
|
-
"- Preserve exact paths, commands, blockers, and evidence before continuing.",
|
|
910
|
-
"",
|
|
911
|
-
"## Progress",
|
|
912
|
-
"### Done",
|
|
913
|
-
"- [x] Created emergency handoff without calling the summarization model.",
|
|
914
|
-
"",
|
|
915
|
-
"### In Progress",
|
|
916
|
-
"- [ ] Re-check workspace state and continue from critical facts.",
|
|
917
|
-
"",
|
|
918
|
-
"### Blocked",
|
|
919
|
-
previousBlocked && previousBlocked.length > 0 ? previousBlocked : "- (none)",
|
|
920
|
-
"",
|
|
921
|
-
"## Key Decisions",
|
|
922
|
-
"- **Emergency handoff**: Avoided forced minimum input budget that could overflow the model context.",
|
|
923
|
-
"",
|
|
924
|
-
"## Next Steps",
|
|
925
|
-
"1. Re-check workspace state before editing.",
|
|
926
|
-
"2. Resume from Critical Context and run verification before completion.",
|
|
927
|
-
"",
|
|
928
|
-
"## Critical Context",
|
|
929
|
-
formatFallbackFacts(facts),
|
|
930
|
-
"",
|
|
931
|
-
"## Resume Handoff",
|
|
932
|
-
"- **First action**: Re-check workspace state and relevant files from Critical Context.",
|
|
933
|
-
"- **Re-check before editing**: git status and target file contents.",
|
|
934
|
-
"- **Evidence status**: emergency handoff generated; downstream checks not run by compaction.",
|
|
935
|
-
].join("\n");
|
|
936
|
-
}
|
|
937
|
-
function formatFallbackFacts(fallbackFacts) {
|
|
938
|
-
if (!fallbackFacts || fallbackFacts.length === 0)
|
|
939
|
-
return "- (not captured)";
|
|
940
|
-
return fallbackFacts.map((fact) => `- ${fact}`).join("\n");
|
|
941
|
-
}
|
|
942
|
-
export function validateCompactionSummaryContract(summary, options = {}) {
|
|
943
|
-
const trimmedSummary = summary.trim();
|
|
944
|
-
const missingSections = REQUIRED_SUMMARY_SECTIONS.filter((section) => !trimmedSummary.includes(section));
|
|
945
|
-
const previousBlocked = options.previousSummary
|
|
946
|
-
? (extractSection(options.previousSummary, "### Blocked") ??
|
|
947
|
-
extractSection(options.previousSummary, "## Blocked"))
|
|
948
|
-
: undefined;
|
|
949
|
-
const shouldPreservePreviousBlocked = previousBlocked !== undefined && previousBlocked.length > 0 && !trimmedSummary.includes(previousBlocked);
|
|
950
|
-
if (missingSections.length === 0 && !shouldPreservePreviousBlocked) {
|
|
951
|
-
return { summary: trimmedSummary, wasRepaired: false, missingSections: [] };
|
|
952
|
-
}
|
|
953
|
-
const repairedSections = [trimmedSummary || "## Goal\n(not captured)"];
|
|
954
|
-
if (!trimmedSummary.includes("## Constraints & Preferences")) {
|
|
955
|
-
repairedSections.push("## Constraints & Preferences\n- (not captured)");
|
|
956
|
-
}
|
|
957
|
-
if (!trimmedSummary.includes("## Progress")) {
|
|
958
|
-
repairedSections.push("## Progress");
|
|
959
|
-
}
|
|
960
|
-
if (!trimmedSummary.includes("### Done")) {
|
|
961
|
-
repairedSections.push("### Done\n- [x] (not captured)");
|
|
962
|
-
}
|
|
963
|
-
if (!trimmedSummary.includes("### In Progress")) {
|
|
964
|
-
repairedSections.push("### In Progress\n- [ ] Continue from preserved context");
|
|
965
|
-
}
|
|
966
|
-
if (!trimmedSummary.includes("### Blocked")) {
|
|
967
|
-
repairedSections.push(`### Blocked\n${previousBlocked && previousBlocked.length > 0 ? previousBlocked : "- (none)"}`);
|
|
968
|
-
}
|
|
969
|
-
else if (shouldPreservePreviousBlocked) {
|
|
970
|
-
repairedSections.push(`### Blocked\n${previousBlocked}`);
|
|
971
|
-
}
|
|
972
|
-
if (!trimmedSummary.includes("## Key Decisions")) {
|
|
973
|
-
repairedSections.push("## Key Decisions\n- **Preserved context**: Summary contract repaired deterministically.");
|
|
974
|
-
}
|
|
975
|
-
if (!trimmedSummary.includes("## Next Steps")) {
|
|
976
|
-
repairedSections.push("## Next Steps\n1. Re-check workspace state before editing.");
|
|
977
|
-
}
|
|
978
|
-
if (!trimmedSummary.includes("## Critical Context")) {
|
|
979
|
-
repairedSections.push(`## Critical Context\n${formatFallbackFacts(options.fallbackFacts)}`);
|
|
980
|
-
}
|
|
981
|
-
if (!trimmedSummary.includes("## Resume Handoff")) {
|
|
982
|
-
repairedSections.push([
|
|
983
|
-
"## Resume Handoff",
|
|
984
|
-
"- **First action**: Re-check workspace state and continue the latest requested task.",
|
|
985
|
-
"- **Re-check before editing**: git status and relevant files from Critical Context.",
|
|
986
|
-
"- **Evidence status**: (not run)",
|
|
987
|
-
].join("\n"));
|
|
988
|
-
}
|
|
989
|
-
return {
|
|
990
|
-
summary: repairedSections.join("\n\n"),
|
|
991
|
-
wasRepaired: true,
|
|
992
|
-
missingSections,
|
|
993
|
-
};
|
|
994
|
-
}
|
|
447
|
+
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
995
448
|
function createSummarizationOptions(model, maxTokens, apiKey, headers, signal, thinkingLevel) {
|
|
996
449
|
const options = { maxTokens, signal, apiKey, headers };
|
|
997
450
|
if (model.reasoning && thinkingLevel && thinkingLevel !== "off") {
|
|
@@ -1010,7 +463,7 @@ async function completeSummarization(model, context, options, streamFn) {
|
|
|
1010
463
|
* Generate a summary of the conversation using the LLM.
|
|
1011
464
|
* If previousSummary is provided, uses the update prompt to merge.
|
|
1012
465
|
*/
|
|
1013
|
-
export async function generateSummary(currentMessages, model, reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn
|
|
466
|
+
export async function generateSummary(currentMessages, model, reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn) {
|
|
1014
467
|
const maxTokens = Math.min(Math.floor(0.8 * reserveTokens), model.maxTokens > 0 ? model.maxTokens : Number.POSITIVE_INFINITY);
|
|
1015
468
|
// Use update prompt if we have a previous summary, otherwise initial prompt
|
|
1016
469
|
let basePrompt = previousSummary ? UPDATE_SUMMARIZATION_PROMPT : SUMMARIZATION_PROMPT;
|
|
@@ -1021,37 +474,8 @@ export async function generateSummary(currentMessages, model, reserveTokens, api
|
|
|
1021
474
|
// Convert to LLM messages first (handles custom types like bashExecution, custom, etc.)
|
|
1022
475
|
const llmMessages = convertToLlm(currentMessages);
|
|
1023
476
|
const conversationText = serializeConversation(llmMessages);
|
|
1024
|
-
const summaryInputBudgetResolution = resolveSummaryInputTokenBudgetV3(model, maxTokens, {
|
|
1025
|
-
configuredSummaryInputTokens: summaryInputTokens,
|
|
1026
|
-
basePrompt,
|
|
1027
|
-
previousSummary,
|
|
1028
|
-
systemPrompt: SUMMARIZATION_SYSTEM_PROMPT,
|
|
1029
|
-
wrapperText: "<conversation></conversation><previous-summary></previous-summary>",
|
|
1030
|
-
});
|
|
1031
|
-
if (summaryInputBudgetResolution.emergency) {
|
|
1032
|
-
const summary = createEmergencyCompactionHandoff({
|
|
1033
|
-
reason: summaryInputBudgetResolution.reason ?? "summary input budget unavailable",
|
|
1034
|
-
conversationText,
|
|
1035
|
-
previousSummary,
|
|
1036
|
-
});
|
|
1037
|
-
recordHarnessControlEvent("compaction.summary.generated", "completed", {
|
|
1038
|
-
model: model.id,
|
|
1039
|
-
provider: model.provider,
|
|
1040
|
-
maxTokens,
|
|
1041
|
-
emergency: true,
|
|
1042
|
-
reason: summaryInputBudgetResolution.reason,
|
|
1043
|
-
fixedPromptTokens: summaryInputBudgetResolution.fixedPromptTokens,
|
|
1044
|
-
availableInputTokens: summaryInputBudgetResolution.availableInputTokens,
|
|
1045
|
-
});
|
|
1046
|
-
return validateCompactionSummaryContract(summary, {
|
|
1047
|
-
previousSummary,
|
|
1048
|
-
fallbackFacts: extractCriticalFactsFromText(conversationText),
|
|
1049
|
-
}).summary;
|
|
1050
|
-
}
|
|
1051
|
-
const summaryInputBudget = summaryInputBudgetResolution.budgetTokens;
|
|
1052
|
-
const packedConversation = packSummaryInputForTokenBudget(conversationText, summaryInputBudget);
|
|
1053
477
|
// Build the prompt with conversation wrapped in tags
|
|
1054
|
-
let promptText = `<conversation>\n${
|
|
478
|
+
let promptText = `<conversation>\n${conversationText}\n</conversation>\n\n`;
|
|
1055
479
|
if (previousSummary) {
|
|
1056
480
|
promptText += `<previous-summary>\n${previousSummary}\n</previous-summary>\n\n`;
|
|
1057
481
|
}
|
|
@@ -1072,22 +496,7 @@ export async function generateSummary(currentMessages, model, reserveTokens, api
|
|
|
1072
496
|
.filter((c) => c.type === "text")
|
|
1073
497
|
.map((c) => c.text)
|
|
1074
498
|
.join("\n");
|
|
1075
|
-
|
|
1076
|
-
previousSummary,
|
|
1077
|
-
fallbackFacts: extractCriticalFactsFromText(conversationText),
|
|
1078
|
-
});
|
|
1079
|
-
recordHarnessControlEvent("compaction.summary.generated", "completed", {
|
|
1080
|
-
model: model.id,
|
|
1081
|
-
provider: model.provider,
|
|
1082
|
-
maxTokens,
|
|
1083
|
-
summaryInputBudget,
|
|
1084
|
-
packedTokens: packedConversation.packedTokens,
|
|
1085
|
-
omittedTokens: packedConversation.omittedTokens,
|
|
1086
|
-
wasCompressed: packedConversation.wasCompressed,
|
|
1087
|
-
wasRepaired: validation.wasRepaired,
|
|
1088
|
-
missingSections: validation.missingSections,
|
|
1089
|
-
});
|
|
1090
|
-
return validation.summary;
|
|
499
|
+
return textContent;
|
|
1091
500
|
}
|
|
1092
501
|
export function prepareCompaction(pathEntries, settings) {
|
|
1093
502
|
if (pathEntries.length > 0 && pathEntries[pathEntries.length - 1].type === "compaction") {
|
|
@@ -1185,16 +594,16 @@ export async function compact(preparation, model, apiKey, headers, customInstruc
|
|
|
1185
594
|
// Generate both summaries in parallel
|
|
1186
595
|
const [historyResult, turnPrefixResult] = await Promise.all([
|
|
1187
596
|
messagesToSummarize.length > 0
|
|
1188
|
-
? generateSummary(messagesToSummarize, model, settings.reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn
|
|
597
|
+
? generateSummary(messagesToSummarize, model, settings.reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn)
|
|
1189
598
|
: Promise.resolve("No prior history."),
|
|
1190
|
-
generateTurnPrefixSummary(turnPrefixMessages, model, settings.reserveTokens, apiKey, headers, signal, thinkingLevel, streamFn
|
|
599
|
+
generateTurnPrefixSummary(turnPrefixMessages, model, settings.reserveTokens, apiKey, headers, signal, thinkingLevel, streamFn),
|
|
1191
600
|
]);
|
|
1192
601
|
// Merge into single summary
|
|
1193
602
|
summary = `${historyResult}\n\n---\n\n**Turn Context (split turn):**\n\n${turnPrefixResult}`;
|
|
1194
603
|
}
|
|
1195
604
|
else {
|
|
1196
605
|
// Just generate history summary
|
|
1197
|
-
summary = await generateSummary(messagesToSummarize, model, settings.reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn
|
|
606
|
+
summary = await generateSummary(messagesToSummarize, model, settings.reserveTokens, apiKey, headers, signal, customInstructions, previousSummary, thinkingLevel, streamFn);
|
|
1198
607
|
}
|
|
1199
608
|
// Compute file lists and append to summary
|
|
1200
609
|
const { readFiles, modifiedFiles } = computeFileLists(fileOps);
|
|
@@ -1212,17 +621,11 @@ export async function compact(preparation, model, apiKey, headers, customInstruc
|
|
|
1212
621
|
/**
|
|
1213
622
|
* Generate a summary for a turn prefix (when splitting a turn).
|
|
1214
623
|
*/
|
|
1215
|
-
async function generateTurnPrefixSummary(messages, model, reserveTokens, apiKey, headers, signal, thinkingLevel, streamFn
|
|
624
|
+
async function generateTurnPrefixSummary(messages, model, reserveTokens, apiKey, headers, signal, thinkingLevel, streamFn) {
|
|
1216
625
|
const maxTokens = Math.min(Math.floor(0.5 * reserveTokens), model.maxTokens > 0 ? model.maxTokens : Number.POSITIVE_INFINITY); // Smaller budget for turn prefix
|
|
1217
626
|
const llmMessages = convertToLlm(messages);
|
|
1218
627
|
const conversationText = serializeConversation(llmMessages);
|
|
1219
|
-
const
|
|
1220
|
-
configuredSummaryInputTokens: summaryInputTokens,
|
|
1221
|
-
basePrompt: TURN_PREFIX_SUMMARIZATION_PROMPT,
|
|
1222
|
-
systemPrompt: SUMMARIZATION_SYSTEM_PROMPT,
|
|
1223
|
-
wrapperText: "<conversation></conversation>",
|
|
1224
|
-
}));
|
|
1225
|
-
const promptText = `<conversation>\n${packedConversation.text}\n</conversation>\n\n${TURN_PREFIX_SUMMARIZATION_PROMPT}`;
|
|
628
|
+
const promptText = `<conversation>\n${conversationText}\n</conversation>\n\n${TURN_PREFIX_SUMMARIZATION_PROMPT}`;
|
|
1226
629
|
const summarizationMessages = [
|
|
1227
630
|
{
|
|
1228
631
|
role: "user",
|