open-multi-agent-kit 0.80.7 → 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 -30
- package/README.md +80 -38
- 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.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- 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 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -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 +16 -27
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +185 -89
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +3 -6
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +7 -7
- 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 +1 -0
- 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.map +1 -1
- package/dist/core/command-safety.js +106 -3
- package/dist/core/command-safety.js.map +1 -1
- 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 +5 -21
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -101
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +21 -656
- 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 +8 -0
- package/dist/core/exact-cache-policy.d.ts.map +1 -1
- package/dist/core/exact-cache-policy.js +9 -0
- package/dist/core/exact-cache-policy.js.map +1 -1
- package/dist/core/exec.d.ts +0 -2
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +0 -1
- package/dist/core/exec.js.map +1 -1
- 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 +1 -3
- 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 +3 -0
- package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.js +15 -3
- package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
- 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 +4 -4
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +57 -92
- 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 +7 -35
- 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 +4 -2
- package/dist/core/hook-inventory.d.ts.map +1 -1
- package/dist/core/hook-inventory.js +80 -11
- package/dist/core/hook-inventory.js.map +1 -1
- 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-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 +22 -0
- package/dist/core/loadout-runtime.d.ts.map +1 -1
- package/dist/core/loadout-runtime.js +41 -5
- package/dist/core/loadout-runtime.js.map +1 -1
- 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 +4 -2
- package/dist/core/loadouts.d.ts.map +1 -1
- package/dist/core/loadouts.js +116 -5
- package/dist/core/loadouts.js.map +1 -1
- 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 +7 -0
- package/dist/core/mcp-inventory.d.ts.map +1 -1
- package/dist/core/mcp-inventory.js +5 -1
- package/dist/core/mcp-inventory.js.map +1 -1
- package/dist/core/mcp-presets.d.ts +43 -2
- package/dist/core/mcp-presets.d.ts.map +1 -1
- package/dist/core/mcp-presets.js +298 -2
- package/dist/core/mcp-presets.js.map +1 -1
- 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 -2
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +18 -41
- 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 -2
- 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 +5 -123
- package/dist/core/package-gallery.d.ts.map +1 -1
- package/dist/core/package-gallery.js +5 -391
- package/dist/core/package-gallery.js.map +1 -1
- package/dist/core/package-manager.d.ts +0 -69
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +69 -367
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-procurement.d.ts +4 -4
- package/dist/core/package-procurement.d.ts.map +1 -1
- package/dist/core/package-procurement.js +29 -17
- package/dist/core/package-procurement.js.map +1 -1
- 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 +1 -1
- package/dist/core/read-anchors.d.ts.map +1 -1
- package/dist/core/read-anchors.js +1 -1
- package/dist/core/read-anchors.js.map +1 -1
- package/dist/core/recovery-checkpoint.d.ts +2 -2
- package/dist/core/recovery-checkpoint.d.ts.map +1 -1
- package/dist/core/recovery-checkpoint.js +2 -2
- package/dist/core/recovery-checkpoint.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +2 -30
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +12 -20
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +66 -90
- package/dist/core/resource-loader.js.map +1 -1
- 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 +10 -78
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +97 -139
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/semantic-cache-policy.d.ts +7 -1
- package/dist/core/semantic-cache-policy.d.ts.map +1 -1
- package/dist/core/semantic-cache-policy.js +8 -0
- package/dist/core/semantic-cache-policy.js.map +1 -1
- 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 +5 -6
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -18
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -48
- 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 +57 -36
- package/dist/core/system-prompt.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 +0 -4
- 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 +8 -9
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +9 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -14
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -25
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -4
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -4
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -4
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +2 -5
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -2
- 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 -4
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -4
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +2 -14
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -28
- 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 -4
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +4 -4
- 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/index.d.ts +4 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -17
- package/dist/index.js.map +1 -1
- 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 +2 -2
- 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.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -36
- package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient.d.ts +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel-gradient.js +6 -5
- package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -1
- 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 +8 -31
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +38 -169
- 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 +1 -1
- 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 +1 -1
- 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 -9
- 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 +13 -47
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +118 -193
- 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 -2
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +2 -11
- 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 +3 -8
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +74 -232
- 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 -45
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js.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-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +0 -4
- package/dist/modes/rpc/rpc-mode.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 +48 -113
- 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/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/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 +7 -48
- package/docs/prompt-templates.md +0 -2
- 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/docs/usage.md +6 -16
- package/examples/extensions/README.md +2 -2
- 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/bash-spawn-hook.ts +1 -1
- package/examples/extensions/border-status-editor.ts +2 -2
- package/examples/extensions/built-in-tool-renderer.ts +1 -1
- package/examples/extensions/custom-compaction.ts +1 -1
- package/examples/extensions/custom-footer.ts +2 -2
- package/examples/extensions/custom-header.ts +8 -8
- package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/doom-overlay/README.md +1 -2
- 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_omk.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/git-merge-and-resolve.ts +1 -1
- package/examples/extensions/github-issue-autocomplete.ts +1 -6
- package/examples/extensions/gondolin/index.ts +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +2 -2
- package/examples/extensions/hello.ts +1 -1
- package/examples/extensions/inline-bash.ts +1 -1
- package/examples/extensions/input-transform-streaming.ts +1 -1
- package/examples/extensions/input-transform.ts +2 -2
- package/examples/extensions/mac-system-theme.ts +1 -1
- package/examples/extensions/message-renderer.ts +1 -1
- package/examples/extensions/minimal-mode.ts +1 -1
- package/examples/extensions/modal-editor.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +7 -7
- package/examples/extensions/overlay-test.ts +1 -1
- package/examples/extensions/plan-mode/index.ts +3 -3
- package/examples/extensions/preset.ts +4 -4
- package/examples/extensions/provider-payload.ts +6 -3
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/question.ts +1 -1
- package/examples/extensions/questionnaire.ts +1 -1
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +2 -2
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/shutdown-command.ts +5 -5
- package/examples/extensions/snake.ts +1 -1
- package/examples/extensions/space-invaders.ts +1 -1
- package/examples/extensions/structured-output.ts +1 -1
- package/examples/extensions/subagent/agents.ts +2 -2
- package/examples/extensions/subagent/index.ts +19 -51
- package/examples/extensions/summarize.ts +2 -2
- package/examples/extensions/tic-tac-toe.ts +2 -2
- package/examples/extensions/todo.ts +2 -2
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +1 -1
- package/examples/extensions/truncated-tool.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +3 -3
- package/examples/rpc-extension-ui.ts +1 -9
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/07-context-files.ts +0 -2
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +1805 -0
- package/package.json +10 -32
- package/dist/core/compaction/pruner-policy.d.ts +0 -84
- package/dist/core/compaction/pruner-policy.d.ts.map +0 -1
- package/dist/core/compaction/pruner-policy.js +0 -273
- package/dist/core/compaction/pruner-policy.js.map +0 -1
- package/dist/core/context-graph-identity-resolution.d.ts +0 -114
- package/dist/core/context-graph-identity-resolution.d.ts.map +0 -1
- package/dist/core/context-graph-identity-resolution.js +0 -127
- package/dist/core/context-graph-identity-resolution.js.map +0 -1
- package/dist/core/context-graph-memory-store.d.ts +0 -153
- package/dist/core/context-graph-memory-store.d.ts.map +0 -1
- package/dist/core/context-graph-memory-store.js +0 -377
- package/dist/core/context-graph-memory-store.js.map +0 -1
- package/dist/core/context-graph-ontology-generation.d.ts +0 -104
- package/dist/core/context-graph-ontology-generation.d.ts.map +0 -1
- package/dist/core/context-graph-ontology-generation.js +0 -135
- package/dist/core/context-graph-ontology-generation.js.map +0 -1
- package/dist/core/context-graph-ontology-registry.d.ts +0 -766
- package/dist/core/context-graph-ontology-registry.d.ts.map +0 -1
- package/dist/core/context-graph-ontology-registry.js +0 -1133
- package/dist/core/context-graph-ontology-registry.js.map +0 -1
- package/dist/core/context-graph-policy.d.ts +0 -68
- package/dist/core/context-graph-policy.d.ts.map +0 -1
- package/dist/core/context-graph-policy.js +0 -221
- package/dist/core/context-graph-policy.js.map +0 -1
- package/dist/core/context-graph-reasoning.d.ts +0 -130
- package/dist/core/context-graph-reasoning.d.ts.map +0 -1
- package/dist/core/context-graph-reasoning.js +0 -442
- package/dist/core/context-graph-reasoning.js.map +0 -1
- package/dist/core/context-graph-retrieval.d.ts +0 -120
- package/dist/core/context-graph-retrieval.d.ts.map +0 -1
- package/dist/core/context-graph-retrieval.js +0 -288
- package/dist/core/context-graph-retrieval.js.map +0 -1
- package/dist/core/contract-verification.d.ts +0 -78
- package/dist/core/contract-verification.d.ts.map +0 -1
- package/dist/core/contract-verification.js +0 -110
- package/dist/core/contract-verification.js.map +0 -1
- package/dist/core/freedom/banner.d.ts +0 -14
- package/dist/core/freedom/banner.d.ts.map +0 -1
- package/dist/core/freedom/banner.js +0 -22
- package/dist/core/freedom/banner.js.map +0 -1
- package/dist/core/freedom/config.d.ts +0 -27
- package/dist/core/freedom/config.d.ts.map +0 -1
- package/dist/core/freedom/config.js +0 -216
- package/dist/core/freedom/config.js.map +0 -1
- package/dist/core/freedom/index.d.ts +0 -23
- package/dist/core/freedom/index.d.ts.map +0 -1
- package/dist/core/freedom/index.js +0 -19
- package/dist/core/freedom/index.js.map +0 -1
- package/dist/core/freedom/policy.d.ts +0 -42
- package/dist/core/freedom/policy.d.ts.map +0 -1
- package/dist/core/freedom/policy.js +0 -47
- package/dist/core/freedom/policy.js.map +0 -1
- package/dist/core/freedom/safety-floor.d.ts +0 -73
- package/dist/core/freedom/safety-floor.d.ts.map +0 -1
- package/dist/core/freedom/safety-floor.js +0 -275
- package/dist/core/freedom/safety-floor.js.map +0 -1
- package/dist/core/harness-control-events.d.ts +0 -91
- package/dist/core/harness-control-events.d.ts.map +0 -1
- package/dist/core/harness-control-events.js +0 -514
- package/dist/core/harness-control-events.js.map +0 -1
- package/dist/core/harness-control-replay.d.ts +0 -31
- package/dist/core/harness-control-replay.d.ts.map +0 -1
- package/dist/core/harness-control-replay.js +0 -187
- package/dist/core/harness-control-replay.js.map +0 -1
- package/dist/core/headroom-middleware.d.ts +0 -35
- package/dist/core/headroom-middleware.d.ts.map +0 -1
- package/dist/core/headroom-middleware.js +0 -166
- package/dist/core/headroom-middleware.js.map +0 -1
- package/dist/core/lean-context-middleware.d.ts +0 -12
- package/dist/core/lean-context-middleware.d.ts.map +0 -1
- package/dist/core/lean-context-middleware.js +0 -87
- package/dist/core/lean-context-middleware.js.map +0 -1
- package/dist/core/lean-context-policy.d.ts +0 -45
- package/dist/core/lean-context-policy.d.ts.map +0 -1
- package/dist/core/lean-context-policy.js +0 -108
- package/dist/core/lean-context-policy.js.map +0 -1
- package/dist/core/native-adoption-benchmark.d.ts +0 -166
- package/dist/core/native-adoption-benchmark.d.ts.map +0 -1
- package/dist/core/native-adoption-benchmark.js +0 -624
- package/dist/core/native-adoption-benchmark.js.map +0 -1
- package/dist/core/observability-trace.d.ts +0 -80
- package/dist/core/observability-trace.d.ts.map +0 -1
- package/dist/core/observability-trace.js +0 -140
- package/dist/core/observability-trace.js.map +0 -1
- package/dist/core/orchestration/checkpoint.d.ts +0 -83
- package/dist/core/orchestration/checkpoint.d.ts.map +0 -1
- package/dist/core/orchestration/checkpoint.js +0 -152
- package/dist/core/orchestration/checkpoint.js.map +0 -1
- package/dist/core/orchestration/errors.d.ts +0 -74
- package/dist/core/orchestration/errors.d.ts.map +0 -1
- package/dist/core/orchestration/errors.js +0 -52
- package/dist/core/orchestration/errors.js.map +0 -1
- package/dist/core/orchestration/merge-queue.d.ts +0 -121
- package/dist/core/orchestration/merge-queue.d.ts.map +0 -1
- package/dist/core/orchestration/merge-queue.js +0 -149
- package/dist/core/orchestration/merge-queue.js.map +0 -1
- package/dist/core/orchestration/recovery.d.ts +0 -106
- package/dist/core/orchestration/recovery.d.ts.map +0 -1
- package/dist/core/orchestration/recovery.js +0 -110
- package/dist/core/orchestration/recovery.js.map +0 -1
- package/dist/core/orchestration/replay-ledger.d.ts +0 -76
- package/dist/core/orchestration/replay-ledger.d.ts.map +0 -1
- package/dist/core/orchestration/replay-ledger.js +0 -395
- package/dist/core/orchestration/replay-ledger.js.map +0 -1
- package/dist/core/orchestration/scheduler-state.d.ts +0 -78
- package/dist/core/orchestration/scheduler-state.d.ts.map +0 -1
- package/dist/core/orchestration/scheduler-state.js +0 -185
- package/dist/core/orchestration/scheduler-state.js.map +0 -1
- package/dist/core/orchestration/scheduler-store.d.ts +0 -309
- package/dist/core/orchestration/scheduler-store.d.ts.map +0 -1
- package/dist/core/orchestration/scheduler-store.js +0 -368
- package/dist/core/orchestration/scheduler-store.js.map +0 -1
- package/dist/core/orchestration/sqlite-scheduler-store.d.ts +0 -57
- package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +0 -1
- package/dist/core/orchestration/sqlite-scheduler-store.js +0 -528
- package/dist/core/orchestration/sqlite-scheduler-store.js.map +0 -1
- package/dist/core/orchestration/transaction-coordinator.d.ts +0 -217
- package/dist/core/orchestration/transaction-coordinator.d.ts.map +0 -1
- package/dist/core/orchestration/transaction-coordinator.js +0 -281
- package/dist/core/orchestration/transaction-coordinator.js.map +0 -1
- package/dist/core/orchestration/verification-contract.d.ts +0 -197
- package/dist/core/orchestration/verification-contract.d.ts.map +0 -1
- package/dist/core/orchestration/verification-contract.js +0 -145
- package/dist/core/orchestration/verification-contract.js.map +0 -1
- package/dist/core/package-composition.d.ts +0 -68
- package/dist/core/package-composition.d.ts.map +0 -1
- package/dist/core/package-composition.js +0 -304
- package/dist/core/package-composition.js.map +0 -1
- package/dist/core/package-trial-runtime.d.ts +0 -75
- package/dist/core/package-trial-runtime.d.ts.map +0 -1
- package/dist/core/package-trial-runtime.js +0 -73
- package/dist/core/package-trial-runtime.js.map +0 -1
- package/dist/core/package-trial-sandbox.d.ts +0 -27
- package/dist/core/package-trial-sandbox.d.ts.map +0 -1
- package/dist/core/package-trial-sandbox.js +0 -102
- package/dist/core/package-trial-sandbox.js.map +0 -1
- package/dist/core/policy-overlays-runtime.d.ts +0 -141
- package/dist/core/policy-overlays-runtime.d.ts.map +0 -1
- package/dist/core/policy-overlays-runtime.js +0 -720
- package/dist/core/policy-overlays-runtime.js.map +0 -1
- package/dist/core/read-anchor-registry.d.ts +0 -27
- package/dist/core/read-anchor-registry.d.ts.map +0 -1
- package/dist/core/read-anchor-registry.js +0 -103
- package/dist/core/read-anchor-registry.js.map +0 -1
- package/dist/core/read-content-cache.d.ts +0 -22
- package/dist/core/read-content-cache.d.ts.map +0 -1
- package/dist/core/read-content-cache.js +0 -79
- package/dist/core/read-content-cache.js.map +0 -1
- package/dist/core/session-digest.d.ts +0 -57
- package/dist/core/session-digest.d.ts.map +0 -1
- package/dist/core/session-digest.js +0 -193
- package/dist/core/session-digest.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 -30
- package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.js +0 -155
- package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
- package/dist/modes/interactive/components/model-selector-state.d.ts +0 -101
- package/dist/modes/interactive/components/model-selector-state.d.ts.map +0 -1
- package/dist/modes/interactive/components/model-selector-state.js +0 -261
- package/dist/modes/interactive/components/model-selector-state.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/modes/interactive/theme/omk-blackboard.json +0 -91
- package/dist/modes/interactive/theme/omk-freedom-grid.json +0 -91
- package/dist/modes/interactive/theme/omk-neon-ops.json +0 -90
- package/dist/modes/interactive/theme/omk-slate-light.json +0 -91
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
- package/node_modules/@earendil-works/omk-agent-core/README.md +0 -488
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +0 -24
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +0 -553
- package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +0 -118
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +0 -402
- package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +0 -95
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +0 -996
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +0 -53
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +0 -175
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +0 -117
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +0 -568
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +0 -131
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +0 -51
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +0 -510
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +0 -51
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +0 -102
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +0 -48
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +0 -230
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +0 -101
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -36
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +0 -273
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +0 -42
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +0 -114
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +0 -39
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +0 -33
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +0 -210
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +0 -2
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +0 -50
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +0 -44
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +0 -311
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +0 -30
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +0 -616
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +0 -94
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +0 -14
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +0 -126
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +0 -70
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +0 -297
- package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +0 -20
- package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/index.js +0 -25
- package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/node.js +0 -3
- package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +0 -69
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +0 -278
- package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +0 -393
- package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/dist/types.js +0 -2
- package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-agent-core/package.json +0 -60
- package/node_modules/@earendil-works/omk-ai/README.md +0 -1389
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +0 -20
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +0 -44
- package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +0 -5
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +0 -6
- package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/cli.js +0 -130
- package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +0 -20
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +0 -199
- package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +0 -10
- package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +0 -515
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +0 -517
- package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/image-models.js +0 -23
- package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +0 -14
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/images.js +0 -16
- package/node_modules/@earendil-works/omk-ai/dist/images.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +0 -33
- package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/index.js +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +0 -18762
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +0 -17197
- package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/models.js +0 -78
- package/node_modules/@earendil-works/omk-ai/dist/models.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/oauth.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +0 -39
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +0 -170
- package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +0 -38
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +0 -826
- package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +0 -77
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +0 -1123
- package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +0 -15
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +0 -221
- package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +0 -26
- package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +0 -56
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +0 -368
- package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +0 -29
- package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +0 -70
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +0 -331
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +0 -15
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +0 -442
- package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +0 -402
- package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +0 -128
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +0 -34
- package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +0 -534
- package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +0 -30
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +0 -1171
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +0 -19
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +0 -977
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +0 -11
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +0 -496
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +0 -233
- package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +0 -35
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +0 -254
- package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +0 -42
- package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +0 -82
- package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +0 -184
- package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +0 -4
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/stream.js +0 -77
- package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +0 -570
- package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/types.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +0 -6
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +0 -34
- package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +0 -19
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +0 -81
- package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +0 -14
- package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +0 -8
- package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +0 -16
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +0 -113
- package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +0 -10
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +0 -97
- package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +0 -25
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +0 -335
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +0 -56
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +0 -30
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +0 -280
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +0 -58
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +0 -122
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +0 -3
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +0 -105
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +0 -43
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +0 -487
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +0 -13
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +0 -31
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +0 -64
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +0 -2
- package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +0 -57
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +0 -154
- package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +0 -22
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +0 -26
- package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +0 -17
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +0 -21
- package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +0 -18
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +0 -281
- package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +0 -1
- package/node_modules/@earendil-works/omk-ai/package.json +0 -106
- package/node_modules/@earendil-works/omk-tui/README.md +0 -791
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +0 -54
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +0 -632
- package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +0 -22
- package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/box.js +0 -104
- package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +0 -22
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +0 -35
- package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +0 -249
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +0 -1857
- package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +0 -28
- package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/image.js +0 -89
- package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +0 -37
- package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/input.js +0 -378
- package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +0 -31
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +0 -69
- package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +0 -96
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +0 -644
- package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +0 -159
- package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +0 -185
- package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +0 -12
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +0 -23
- package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +0 -19
- package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/text.js +0 -89
- package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +0 -13
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +0 -51
- package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +0 -39
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +0 -2
- package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +0 -16
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +0 -110
- package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +0 -23
- package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/index.js +0 -32
- package/node_modules/@earendil-works/omk-tui/dist/index.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +0 -212
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +0 -252
- package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +0 -184
- package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/keys.js +0 -1173
- package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +0 -28
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +0 -44
- package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +0 -3
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +0 -53
- package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +0 -50
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +0 -361
- package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +0 -90
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +0 -366
- package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +0 -113
- package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/terminal.js +0 -472
- package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +0 -242
- package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/tui.js +0 -1221
- package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +0 -17
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +0 -25
- package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +0 -84
- package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/utils.js +0 -1032
- package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +0 -25
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +0 -1
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +0 -96
- package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +0 -1
- package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/node_modules/@earendil-works/omk-tui/package.json +0 -47
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headroom-middleware.js","sourceRoot":"","sources":["../../src/core/headroom-middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport { estimateLeanContextTokens } from \"./lean-context-policy.ts\";\n\nconst DEFAULT_THRESHOLD_TOKENS = 2_048;\nconst LEAN_CONTEXT_STUB_PREFIX = \"[lean-context]\";\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport interface HeadroomCompressTextInput {\n\treadonly text: string;\n\treadonly estimatedTokens: number;\n\treadonly thresholdTokens: number;\n\treadonly toolCallId: string;\n\treadonly toolName: string;\n\treadonly contentIndex: number;\n\treadonly isError: boolean;\n\treadonly details?: unknown;\n}\n\nexport type HeadroomCompressText = (input: HeadroomCompressTextInput) => string | undefined;\n\nexport interface HeadroomBeforeProviderSendOptions {\n\treadonly compressText: HeadroomCompressText;\n\treadonly thresholdTokens?: number;\n\treadonly logsThresholdTokens?: number;\n\treadonly enabled?: boolean;\n}\n\nexport interface HeadroomBeforeProviderSendStats {\n\treadonly seenToolResultTextBlocks: number;\n\treadonly compressedBlocks: number;\n\treadonly skippedBelowThresholdBlocks: number;\n\treadonly skippedSecretBlocks: number;\n\treadonly skippedLeanContextBlocks: number;\n\treadonly failedOpenBlocks: number;\n\treadonly inputTokens: number;\n\treadonly outputTokens: number;\n}\n\nexport interface HeadroomBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetStats(): HeadroomBeforeProviderSendStats;\n\treset(): void;\n}\n\nexport function createHeadroomBeforeProviderSend(\n\toptions: HeadroomBeforeProviderSendOptions,\n): HeadroomBeforeProviderSend {\n\tlet stats = createEmptyStats();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, options, stats);\n\t\t\tstats = result.stats;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetStats() {\n\t\t\treturn { ...stats };\n\t\t},\n\t\treset() {\n\t\t\tstats = createEmptyStats();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): ContextTransformResult {\n\tlet nextStats = initialStats;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, options, nextStats);\n\t\tnextStats = result.stats;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tstats: nextStats,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage<unknown>;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage<unknown>,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): ToolResultTransformResult {\n\tlet nextStats = initialStats;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst result = transformTextBlock(block, message, index, options, nextStats);\n\t\tnextStats = result.stats;\n\t\tchanged = changed || result.changed;\n\t\treturn result.block;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tstats: nextStats,\n\t\tchanged,\n\t};\n}\n\ninterface TextBlockTransformResult {\n\treadonly block: TextContent;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformTextBlock(\n\tblock: TextContent,\n\tmessage: ToolResultMessage<unknown>,\n\tcontentIndex: number,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): TextBlockTransformResult {\n\tconst estimatedTokens = estimateLeanContextTokens(block.text);\n\tlet stats = incrementStats(initialStats, {\n\t\tseenToolResultTextBlocks: 1,\n\t\tinputTokens: estimatedTokens,\n\t});\n\n\tif (isLeanContextStub(block.text)) {\n\t\treturn { block, stats: incrementStats(stats, { skippedLeanContextBlocks: 1 }), changed: false };\n\t}\n\n\tif (containsSecretPattern(block.text)) {\n\t\treturn { block, stats: incrementStats(stats, { skippedSecretBlocks: 1 }), changed: false };\n\t}\n\n\tconst thresholdTokens = getThresholdTokens(options, message);\n\tif (estimatedTokens <= thresholdTokens) {\n\t\treturn { block, stats: incrementStats(stats, { skippedBelowThresholdBlocks: 1 }), changed: false };\n\t}\n\n\tlet compressed: string | undefined;\n\ttry {\n\t\tcompressed = options.compressText({\n\t\t\ttext: block.text,\n\t\t\testimatedTokens,\n\t\t\tthresholdTokens,\n\t\t\ttoolCallId: message.toolCallId,\n\t\t\ttoolName: message.toolName,\n\t\t\tcontentIndex,\n\t\t\tisError: message.isError,\n\t\t\tdetails: message.details,\n\t\t});\n\t} catch {\n\t\treturn { block, stats: incrementStats(stats, { failedOpenBlocks: 1 }), changed: false };\n\t}\n\n\tif (compressed === undefined) {\n\t\treturn { block, stats: incrementStats(stats, { failedOpenBlocks: 1 }), changed: false };\n\t}\n\n\tif (compressed === block.text) {\n\t\treturn { block, stats, changed: false };\n\t}\n\n\tstats = incrementStats(stats, {\n\t\tcompressedBlocks: 1,\n\t\toutputTokens: estimateLeanContextTokens(compressed),\n\t});\n\treturn { block: { ...block, text: compressed }, stats, changed: true };\n}\n\nfunction createEmptyStats(): HeadroomBeforeProviderSendStats {\n\treturn {\n\t\tseenToolResultTextBlocks: 0,\n\t\tcompressedBlocks: 0,\n\t\tskippedBelowThresholdBlocks: 0,\n\t\tskippedSecretBlocks: 0,\n\t\tskippedLeanContextBlocks: 0,\n\t\tfailedOpenBlocks: 0,\n\t\tinputTokens: 0,\n\t\toutputTokens: 0,\n\t};\n}\n\nfunction incrementStats(\n\tstats: HeadroomBeforeProviderSendStats,\n\tdelta: Partial<Record<keyof HeadroomBeforeProviderSendStats, number>>,\n): HeadroomBeforeProviderSendStats {\n\treturn {\n\t\tseenToolResultTextBlocks: stats.seenToolResultTextBlocks + (delta.seenToolResultTextBlocks ?? 0),\n\t\tcompressedBlocks: stats.compressedBlocks + (delta.compressedBlocks ?? 0),\n\t\tskippedBelowThresholdBlocks: stats.skippedBelowThresholdBlocks + (delta.skippedBelowThresholdBlocks ?? 0),\n\t\tskippedSecretBlocks: stats.skippedSecretBlocks + (delta.skippedSecretBlocks ?? 0),\n\t\tskippedLeanContextBlocks: stats.skippedLeanContextBlocks + (delta.skippedLeanContextBlocks ?? 0),\n\t\tfailedOpenBlocks: stats.failedOpenBlocks + (delta.failedOpenBlocks ?? 0),\n\t\tinputTokens: stats.inputTokens + (delta.inputTokens ?? 0),\n\t\toutputTokens: stats.outputTokens + (delta.outputTokens ?? 0),\n\t};\n}\n\nfunction getThresholdTokens(options: HeadroomBeforeProviderSendOptions, message: ToolResultMessage<unknown>): number {\n\tconst threshold = isLogLikeToolResult(message)\n\t\t? (options.logsThresholdTokens ?? options.thresholdTokens)\n\t\t: options.thresholdTokens;\n\tif (threshold === undefined) return DEFAULT_THRESHOLD_TOKENS;\n\tif (!Number.isFinite(threshold) || threshold < 0) return 0;\n\treturn Math.ceil(threshold);\n}\n\nfunction isLogLikeToolResult(message: ToolResultMessage<unknown>): boolean {\n\tif (/\\b(?:bash|exec|shell|log|logs|stderr|stdout)\\b/i.test(message.toolName)) return true;\n\tconst details = asRecord(message.details);\n\tif (!details) return false;\n\treturn [\"path\", \"filePath\", \"command\", \"query\"].some((key) => {\n\t\tconst value = details[key];\n\t\treturn typeof value === \"string\" && /(?:\\.log\\b|\\blogs?\\b|stderr|stdout|trace)/i.test(value);\n\t});\n}\n\nfunction isLeanContextStub(text: string): boolean {\n\treturn text.trimStart().startsWith(LEAN_CONTEXT_STUB_PREFIX);\n}\n\nfunction containsSecretPattern(text: string): boolean {\n\treturn DEFAULT_SECRET_PATTERNS.some((pattern) => regexTestStateless(pattern, text));\n}\n\nfunction regexTestStateless(pattern: RegExp, text: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(text);\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { BeforeProviderSend } from "@earendil-works/omk-ai";
|
|
2
|
-
import { type LeanContextPolicyOptions, type LeanContextPolicyState } from "./lean-context-policy.ts";
|
|
3
|
-
export interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {
|
|
4
|
-
readonly enabled?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export interface LeanContextBeforeProviderSend {
|
|
7
|
-
readonly beforeProviderSend: BeforeProviderSend;
|
|
8
|
-
getState(): LeanContextPolicyState;
|
|
9
|
-
reset(): void;
|
|
10
|
-
}
|
|
11
|
-
export declare function createLeanContextBeforeProviderSend(options?: LeanContextBeforeProviderSendOptions): LeanContextBeforeProviderSend;
|
|
12
|
-
//# sourceMappingURL=lean-context-middleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lean-context-middleware.d.ts","sourceRoot":"","sources":["../../src/core/lean-context-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAA2C,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAGN,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,oCAAqC,SAAQ,wBAAwB;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,IAAI,sBAAsB,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,mCAAmC,CAClD,OAAO,GAAE,oCAAyC,GAChD,6BAA6B,CAiB/B","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport {\n\tcreateLeanContextPolicyState,\n\tdecideLeanContextEmission,\n\ttype LeanContextPolicyOptions,\n\ttype LeanContextPolicyState,\n} from \"./lean-context-policy.ts\";\n\nexport interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {\n\treadonly enabled?: boolean;\n}\n\nexport interface LeanContextBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetState(): LeanContextPolicyState;\n\treset(): void;\n}\n\nexport function createLeanContextBeforeProviderSend(\n\toptions: LeanContextBeforeProviderSendOptions = {},\n): LeanContextBeforeProviderSend {\n\tlet state = createLeanContextPolicyState();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, state, options);\n\t\t\tstate = result.nextState;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetState() {\n\t\t\treturn state;\n\t\t},\n\t\treset() {\n\t\t\tstate = createLeanContextPolicyState();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ContextTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, nextState, options);\n\t\tnextState = result.nextState;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ToolResultTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst key = extractLeanContextKey(message, index);\n\t\tconst decision = decideLeanContextEmission({\n\t\t\tstate: nextState,\n\t\t\ttool: message.toolName,\n\t\t\tkey,\n\t\t\tpath: key,\n\t\t\tcontent: block.text,\n\t\t\tminStubTokens: options.minStubTokens,\n\t\t\tneverStubFilenames: options.neverStubFilenames,\n\t\t\tsecretPatterns: options.secretPatterns,\n\t\t});\n\t\tnextState = decision.nextState;\n\t\tif (decision.emit !== \"stub\" || decision.stub === undefined) return block;\n\t\tchanged = true;\n\t\treturn { type: \"text\", text: decision.stub } satisfies TextContent;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\nfunction extractLeanContextKey(message: ToolResultMessage, contentIndex: number): string {\n\tconst details = asRecord(message.details);\n\tconst detailKey = firstStringValue(details, [\"leanContextKey\", \"path\", \"filePath\", \"command\", \"query\"]);\n\treturn detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;\n}\n\nfunction firstStringValue(record: Record<string, unknown> | undefined, keys: readonly string[]): string | undefined {\n\tif (!record) return undefined;\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { createLeanContextPolicyState, decideLeanContextEmission, } from "./lean-context-policy.js";
|
|
2
|
-
export function createLeanContextBeforeProviderSend(options = {}) {
|
|
3
|
-
let state = createLeanContextPolicyState();
|
|
4
|
-
return {
|
|
5
|
-
beforeProviderSend(input) {
|
|
6
|
-
if (options.enabled === false)
|
|
7
|
-
return undefined;
|
|
8
|
-
const result = transformContext(input.context, state, options);
|
|
9
|
-
state = result.nextState;
|
|
10
|
-
return result.changed ? result.context : undefined;
|
|
11
|
-
},
|
|
12
|
-
getState() {
|
|
13
|
-
return state;
|
|
14
|
-
},
|
|
15
|
-
reset() {
|
|
16
|
-
state = createLeanContextPolicyState();
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function transformContext(context, initialState, options) {
|
|
21
|
-
let nextState = initialState;
|
|
22
|
-
let changed = false;
|
|
23
|
-
const messages = context.messages.map((message) => {
|
|
24
|
-
if (message.role !== "toolResult")
|
|
25
|
-
return message;
|
|
26
|
-
const result = transformToolResult(message, nextState, options);
|
|
27
|
-
nextState = result.nextState;
|
|
28
|
-
changed = changed || result.changed;
|
|
29
|
-
return result.message;
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
context: changed ? { ...context, messages } : context,
|
|
33
|
-
nextState,
|
|
34
|
-
changed,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function transformToolResult(message, initialState, options) {
|
|
38
|
-
let nextState = initialState;
|
|
39
|
-
let changed = false;
|
|
40
|
-
const content = message.content.map((block, index) => {
|
|
41
|
-
if (block.type !== "text")
|
|
42
|
-
return block;
|
|
43
|
-
const key = extractLeanContextKey(message, index);
|
|
44
|
-
const decision = decideLeanContextEmission({
|
|
45
|
-
state: nextState,
|
|
46
|
-
tool: message.toolName,
|
|
47
|
-
key,
|
|
48
|
-
path: key,
|
|
49
|
-
content: block.text,
|
|
50
|
-
minStubTokens: options.minStubTokens,
|
|
51
|
-
neverStubFilenames: options.neverStubFilenames,
|
|
52
|
-
secretPatterns: options.secretPatterns,
|
|
53
|
-
});
|
|
54
|
-
nextState = decision.nextState;
|
|
55
|
-
if (decision.emit !== "stub" || decision.stub === undefined)
|
|
56
|
-
return block;
|
|
57
|
-
changed = true;
|
|
58
|
-
return { type: "text", text: decision.stub };
|
|
59
|
-
});
|
|
60
|
-
return {
|
|
61
|
-
message: changed ? { ...message, content } : message,
|
|
62
|
-
nextState,
|
|
63
|
-
changed,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function extractLeanContextKey(message, contentIndex) {
|
|
67
|
-
const details = asRecord(message.details);
|
|
68
|
-
const detailKey = firstStringValue(details, ["leanContextKey", "path", "filePath", "command", "query"]);
|
|
69
|
-
return detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;
|
|
70
|
-
}
|
|
71
|
-
function firstStringValue(record, keys) {
|
|
72
|
-
if (!record)
|
|
73
|
-
return undefined;
|
|
74
|
-
for (const key of keys) {
|
|
75
|
-
const value = record[key];
|
|
76
|
-
if (typeof value === "string" && value.trim().length > 0) {
|
|
77
|
-
return value;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
function asRecord(value) {
|
|
83
|
-
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
84
|
-
? value
|
|
85
|
-
: undefined;
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=lean-context-middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lean-context-middleware.js","sourceRoot":"","sources":["../../src/core/lean-context-middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport {\n\tcreateLeanContextPolicyState,\n\tdecideLeanContextEmission,\n\ttype LeanContextPolicyOptions,\n\ttype LeanContextPolicyState,\n} from \"./lean-context-policy.ts\";\n\nexport interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {\n\treadonly enabled?: boolean;\n}\n\nexport interface LeanContextBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetState(): LeanContextPolicyState;\n\treset(): void;\n}\n\nexport function createLeanContextBeforeProviderSend(\n\toptions: LeanContextBeforeProviderSendOptions = {},\n): LeanContextBeforeProviderSend {\n\tlet state = createLeanContextPolicyState();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, state, options);\n\t\t\tstate = result.nextState;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetState() {\n\t\t\treturn state;\n\t\t},\n\t\treset() {\n\t\t\tstate = createLeanContextPolicyState();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ContextTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, nextState, options);\n\t\tnextState = result.nextState;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ToolResultTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst key = extractLeanContextKey(message, index);\n\t\tconst decision = decideLeanContextEmission({\n\t\t\tstate: nextState,\n\t\t\ttool: message.toolName,\n\t\t\tkey,\n\t\t\tpath: key,\n\t\t\tcontent: block.text,\n\t\t\tminStubTokens: options.minStubTokens,\n\t\t\tneverStubFilenames: options.neverStubFilenames,\n\t\t\tsecretPatterns: options.secretPatterns,\n\t\t});\n\t\tnextState = decision.nextState;\n\t\tif (decision.emit !== \"stub\" || decision.stub === undefined) return block;\n\t\tchanged = true;\n\t\treturn { type: \"text\", text: decision.stub } satisfies TextContent;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\nfunction extractLeanContextKey(message: ToolResultMessage, contentIndex: number): string {\n\tconst details = asRecord(message.details);\n\tconst detailKey = firstStringValue(details, [\"leanContextKey\", \"path\", \"filePath\", \"command\", \"query\"]);\n\treturn detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;\n}\n\nfunction firstStringValue(record: Record<string, unknown> | undefined, keys: readonly string[]): string | undefined {\n\tif (!record) return undefined;\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export declare const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;
|
|
2
|
-
export declare const LEAN_CONTEXT_NEVER_STUB_FILENAMES: readonly ["AGENTS.md", "CLAUDE.md", "SYSTEM.md"];
|
|
3
|
-
export type LeanContextEmission = "full" | "stub";
|
|
4
|
-
export type LeanContextDecisionReason = "first-pass" | "changed" | "unchanged" | "never-stub-parent-instruction" | "secret-pattern" | "below-min-token-threshold";
|
|
5
|
-
export interface LeanContextPolicyState {
|
|
6
|
-
readonly hashesByToolKey: Readonly<Record<string, string>>;
|
|
7
|
-
}
|
|
8
|
-
export interface LeanContextPolicyOptions {
|
|
9
|
-
/** Repeated unchanged outputs below this token estimate stay full. */
|
|
10
|
-
readonly minStubTokens?: number;
|
|
11
|
-
/** Basenames that must never be replaced with an unchanged stub. */
|
|
12
|
-
readonly neverStubFilenames?: readonly string[];
|
|
13
|
-
/** Patterns that force full output when matched. */
|
|
14
|
-
readonly secretPatterns?: readonly RegExp[];
|
|
15
|
-
}
|
|
16
|
-
export interface LeanContextPolicyInput extends LeanContextPolicyOptions {
|
|
17
|
-
readonly state: LeanContextPolicyState;
|
|
18
|
-
readonly tool: string;
|
|
19
|
-
/** Stable caller-defined identity inside the tool, such as path or request key. */
|
|
20
|
-
readonly key: string;
|
|
21
|
-
readonly content: string;
|
|
22
|
-
/** Optional path used for parent-instruction filename checks. Defaults to key. */
|
|
23
|
-
readonly path?: string;
|
|
24
|
-
}
|
|
25
|
-
export interface LeanContextPolicyDecision {
|
|
26
|
-
readonly emit: LeanContextEmission;
|
|
27
|
-
readonly reason: LeanContextDecisionReason;
|
|
28
|
-
readonly contentSha256: string;
|
|
29
|
-
readonly previousSha256?: string;
|
|
30
|
-
readonly estimatedTokens: number;
|
|
31
|
-
readonly nextState: LeanContextPolicyState;
|
|
32
|
-
readonly stub?: string;
|
|
33
|
-
}
|
|
34
|
-
export declare function createLeanContextPolicyState(hashesByToolKey?: Readonly<Record<string, string>>): LeanContextPolicyState;
|
|
35
|
-
export declare function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision;
|
|
36
|
-
export declare function getLeanContextTrackingHash(state: LeanContextPolicyState, tool: string, key: string): string | undefined;
|
|
37
|
-
export declare function createLeanContextTrackingKey(tool: string, key: string): string;
|
|
38
|
-
export declare function estimateLeanContextTokens(content: string): number;
|
|
39
|
-
export declare function formatLeanContextUnchangedStub(input: {
|
|
40
|
-
readonly tool: string;
|
|
41
|
-
readonly key: string;
|
|
42
|
-
readonly contentSha256: string;
|
|
43
|
-
readonly estimatedTokens: number;
|
|
44
|
-
}): string;
|
|
45
|
-
//# sourceMappingURL=lean-context-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lean-context-policy.d.ts","sourceRoot":"","sources":["../../src/core/lean-context-policy.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,kDAAmD,CAAC;AASlG,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,yBAAyB,GAClC,YAAY,GACZ,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,gBAAgB,GAChB,2BAA2B,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,wBAAwB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,oDAAoD;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;IACvE,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC3C,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACpD,sBAAsB,CAExB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,yBAAyB,CA6ClG;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,CAET","sourcesContent":["import { createHash } from \"node:crypto\";\n\nconst CHARS_PER_TOKEN_ESTIMATE = 4;\nconst TRACKING_KEY_SEPARATOR = \"\\u0000\";\n\nexport const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;\nexport const LEAN_CONTEXT_NEVER_STUB_FILENAMES = [\"AGENTS.md\", \"CLAUDE.md\", \"SYSTEM.md\"] as const;\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport type LeanContextEmission = \"full\" | \"stub\";\n\nexport type LeanContextDecisionReason =\n\t| \"first-pass\"\n\t| \"changed\"\n\t| \"unchanged\"\n\t| \"never-stub-parent-instruction\"\n\t| \"secret-pattern\"\n\t| \"below-min-token-threshold\";\n\nexport interface LeanContextPolicyState {\n\treadonly hashesByToolKey: Readonly<Record<string, string>>;\n}\n\nexport interface LeanContextPolicyOptions {\n\t/** Repeated unchanged outputs below this token estimate stay full. */\n\treadonly minStubTokens?: number;\n\t/** Basenames that must never be replaced with an unchanged stub. */\n\treadonly neverStubFilenames?: readonly string[];\n\t/** Patterns that force full output when matched. */\n\treadonly secretPatterns?: readonly RegExp[];\n}\n\nexport interface LeanContextPolicyInput extends LeanContextPolicyOptions {\n\treadonly state: LeanContextPolicyState;\n\treadonly tool: string;\n\t/** Stable caller-defined identity inside the tool, such as path or request key. */\n\treadonly key: string;\n\treadonly content: string;\n\t/** Optional path used for parent-instruction filename checks. Defaults to key. */\n\treadonly path?: string;\n}\n\nexport interface LeanContextPolicyDecision {\n\treadonly emit: LeanContextEmission;\n\treadonly reason: LeanContextDecisionReason;\n\treadonly contentSha256: string;\n\treadonly previousSha256?: string;\n\treadonly estimatedTokens: number;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly stub?: string;\n}\n\nexport function createLeanContextPolicyState(\n\thashesByToolKey: Readonly<Record<string, string>> = {},\n): LeanContextPolicyState {\n\treturn { hashesByToolKey: { ...hashesByToolKey } };\n}\n\nexport function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision {\n\tconst contentSha256 = sha256Text(input.content);\n\tconst trackingKey = createLeanContextTrackingKey(input.tool, input.key);\n\tconst previousSha256 = input.state.hashesByToolKey[trackingKey];\n\tconst estimatedTokens = estimateLeanContextTokens(input.content);\n\tconst nextState = updateTrackedHash(input.state, trackingKey, contentSha256);\n\tconst baseDecision = {\n\t\tcontentSha256,\n\t\tpreviousSha256,\n\t\testimatedTokens,\n\t\tnextState,\n\t};\n\n\tif (previousSha256 === undefined) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"first-pass\" };\n\t}\n\n\tif (previousSha256 !== contentSha256) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"changed\" };\n\t}\n\n\tif (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"never-stub-parent-instruction\" };\n\t}\n\n\tif (containsSecretPattern(input.content, input.secretPatterns)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"secret-pattern\" };\n\t}\n\n\tconst minStubTokens = normalizeMinStubTokens(input.minStubTokens);\n\tif (estimatedTokens < minStubTokens) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"below-min-token-threshold\" };\n\t}\n\n\treturn {\n\t\t...baseDecision,\n\t\temit: \"stub\",\n\t\treason: \"unchanged\",\n\t\tstub: formatLeanContextUnchangedStub({\n\t\t\ttool: input.tool,\n\t\t\tkey: input.key,\n\t\t\tcontentSha256,\n\t\t\testimatedTokens,\n\t\t}),\n\t};\n}\n\nexport function getLeanContextTrackingHash(\n\tstate: LeanContextPolicyState,\n\ttool: string,\n\tkey: string,\n): string | undefined {\n\treturn state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];\n}\n\nexport function createLeanContextTrackingKey(tool: string, key: string): string {\n\treturn `${tool}${TRACKING_KEY_SEPARATOR}${key}`;\n}\n\nexport function estimateLeanContextTokens(content: string): number {\n\tif (content.length === 0) return 0;\n\treturn Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);\n}\n\nexport function formatLeanContextUnchangedStub(input: {\n\treadonly tool: string;\n\treadonly key: string;\n\treadonly contentSha256: string;\n\treadonly estimatedTokens: number;\n}): string {\n\treturn `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;\n}\n\nfunction updateTrackedHash(\n\tstate: LeanContextPolicyState,\n\ttrackingKey: string,\n\tcontentSha256: string,\n): LeanContextPolicyState {\n\tif (state.hashesByToolKey[trackingKey] === contentSha256) {\n\t\treturn state;\n\t}\n\treturn {\n\t\thashesByToolKey: {\n\t\t\t...state.hashesByToolKey,\n\t\t\t[trackingKey]: contentSha256,\n\t\t},\n\t};\n}\n\nfunction sha256Text(content: string): string {\n\treturn createHash(\"sha256\").update(content, \"utf8\").digest(\"hex\");\n}\n\nfunction isNeverStubParentInstruction(pathOrKey: string, filenames?: readonly string[]): boolean {\n\tconst allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;\n\tconst basename = getBasename(pathOrKey).toUpperCase();\n\treturn allowedNames.some((name) => name.toUpperCase() === basename);\n}\n\nfunction getBasename(pathOrKey: string): string {\n\tconst normalized = pathOrKey.replaceAll(\"\\\\\", \"/\");\n\tconst parts = normalized.split(\"/\");\n\treturn parts.at(-1) ?? normalized;\n}\n\nfunction containsSecretPattern(content: string, patterns?: readonly RegExp[]): boolean {\n\tconst activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;\n\treturn activePatterns.some((pattern) => regexTestStateless(pattern, content));\n}\n\nfunction regexTestStateless(pattern: RegExp, content: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(content);\n}\n\nfunction normalizeMinStubTokens(value: number | undefined): number {\n\tif (value === undefined) return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;\n\tif (!Number.isFinite(value) || value <= 0) return 0;\n\treturn Math.ceil(value);\n}\n"]}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
const CHARS_PER_TOKEN_ESTIMATE = 4;
|
|
3
|
-
const TRACKING_KEY_SEPARATOR = "\u0000";
|
|
4
|
-
export const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;
|
|
5
|
-
export const LEAN_CONTEXT_NEVER_STUB_FILENAMES = ["AGENTS.md", "CLAUDE.md", "SYSTEM.md"];
|
|
6
|
-
const DEFAULT_SECRET_PATTERNS = [
|
|
7
|
-
/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,
|
|
8
|
-
/\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\b\s*[:=]\s*["']?[^\s"']{8,}/i,
|
|
9
|
-
/\bauthorization\s*:\s*bearer\s+[A-Za-z0-9._~+/=-]{10,}/i,
|
|
10
|
-
/\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,
|
|
11
|
-
];
|
|
12
|
-
export function createLeanContextPolicyState(hashesByToolKey = {}) {
|
|
13
|
-
return { hashesByToolKey: { ...hashesByToolKey } };
|
|
14
|
-
}
|
|
15
|
-
export function decideLeanContextEmission(input) {
|
|
16
|
-
const contentSha256 = sha256Text(input.content);
|
|
17
|
-
const trackingKey = createLeanContextTrackingKey(input.tool, input.key);
|
|
18
|
-
const previousSha256 = input.state.hashesByToolKey[trackingKey];
|
|
19
|
-
const estimatedTokens = estimateLeanContextTokens(input.content);
|
|
20
|
-
const nextState = updateTrackedHash(input.state, trackingKey, contentSha256);
|
|
21
|
-
const baseDecision = {
|
|
22
|
-
contentSha256,
|
|
23
|
-
previousSha256,
|
|
24
|
-
estimatedTokens,
|
|
25
|
-
nextState,
|
|
26
|
-
};
|
|
27
|
-
if (previousSha256 === undefined) {
|
|
28
|
-
return { ...baseDecision, emit: "full", reason: "first-pass" };
|
|
29
|
-
}
|
|
30
|
-
if (previousSha256 !== contentSha256) {
|
|
31
|
-
return { ...baseDecision, emit: "full", reason: "changed" };
|
|
32
|
-
}
|
|
33
|
-
if (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {
|
|
34
|
-
return { ...baseDecision, emit: "full", reason: "never-stub-parent-instruction" };
|
|
35
|
-
}
|
|
36
|
-
if (containsSecretPattern(input.content, input.secretPatterns)) {
|
|
37
|
-
return { ...baseDecision, emit: "full", reason: "secret-pattern" };
|
|
38
|
-
}
|
|
39
|
-
const minStubTokens = normalizeMinStubTokens(input.minStubTokens);
|
|
40
|
-
if (estimatedTokens < minStubTokens) {
|
|
41
|
-
return { ...baseDecision, emit: "full", reason: "below-min-token-threshold" };
|
|
42
|
-
}
|
|
43
|
-
return {
|
|
44
|
-
...baseDecision,
|
|
45
|
-
emit: "stub",
|
|
46
|
-
reason: "unchanged",
|
|
47
|
-
stub: formatLeanContextUnchangedStub({
|
|
48
|
-
tool: input.tool,
|
|
49
|
-
key: input.key,
|
|
50
|
-
contentSha256,
|
|
51
|
-
estimatedTokens,
|
|
52
|
-
}),
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
export function getLeanContextTrackingHash(state, tool, key) {
|
|
56
|
-
return state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];
|
|
57
|
-
}
|
|
58
|
-
export function createLeanContextTrackingKey(tool, key) {
|
|
59
|
-
return `${tool}${TRACKING_KEY_SEPARATOR}${key}`;
|
|
60
|
-
}
|
|
61
|
-
export function estimateLeanContextTokens(content) {
|
|
62
|
-
if (content.length === 0)
|
|
63
|
-
return 0;
|
|
64
|
-
return Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);
|
|
65
|
-
}
|
|
66
|
-
export function formatLeanContextUnchangedStub(input) {
|
|
67
|
-
return `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;
|
|
68
|
-
}
|
|
69
|
-
function updateTrackedHash(state, trackingKey, contentSha256) {
|
|
70
|
-
if (state.hashesByToolKey[trackingKey] === contentSha256) {
|
|
71
|
-
return state;
|
|
72
|
-
}
|
|
73
|
-
return {
|
|
74
|
-
hashesByToolKey: {
|
|
75
|
-
...state.hashesByToolKey,
|
|
76
|
-
[trackingKey]: contentSha256,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
function sha256Text(content) {
|
|
81
|
-
return createHash("sha256").update(content, "utf8").digest("hex");
|
|
82
|
-
}
|
|
83
|
-
function isNeverStubParentInstruction(pathOrKey, filenames) {
|
|
84
|
-
const allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;
|
|
85
|
-
const basename = getBasename(pathOrKey).toUpperCase();
|
|
86
|
-
return allowedNames.some((name) => name.toUpperCase() === basename);
|
|
87
|
-
}
|
|
88
|
-
function getBasename(pathOrKey) {
|
|
89
|
-
const normalized = pathOrKey.replaceAll("\\", "/");
|
|
90
|
-
const parts = normalized.split("/");
|
|
91
|
-
return parts.at(-1) ?? normalized;
|
|
92
|
-
}
|
|
93
|
-
function containsSecretPattern(content, patterns) {
|
|
94
|
-
const activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;
|
|
95
|
-
return activePatterns.some((pattern) => regexTestStateless(pattern, content));
|
|
96
|
-
}
|
|
97
|
-
function regexTestStateless(pattern, content) {
|
|
98
|
-
const flags = pattern.flags.replace(/[gy]/g, "");
|
|
99
|
-
return new RegExp(pattern.source, flags).test(content);
|
|
100
|
-
}
|
|
101
|
-
function normalizeMinStubTokens(value) {
|
|
102
|
-
if (value === undefined)
|
|
103
|
-
return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;
|
|
104
|
-
if (!Number.isFinite(value) || value <= 0)
|
|
105
|
-
return 0;
|
|
106
|
-
return Math.ceil(value);
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=lean-context-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lean-context-policy.js","sourceRoot":"","sources":["../../src/core/lean-context-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\n\nconst CHARS_PER_TOKEN_ESTIMATE = 4;\nconst TRACKING_KEY_SEPARATOR = \"\\u0000\";\n\nexport const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;\nexport const LEAN_CONTEXT_NEVER_STUB_FILENAMES = [\"AGENTS.md\", \"CLAUDE.md\", \"SYSTEM.md\"] as const;\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport type LeanContextEmission = \"full\" | \"stub\";\n\nexport type LeanContextDecisionReason =\n\t| \"first-pass\"\n\t| \"changed\"\n\t| \"unchanged\"\n\t| \"never-stub-parent-instruction\"\n\t| \"secret-pattern\"\n\t| \"below-min-token-threshold\";\n\nexport interface LeanContextPolicyState {\n\treadonly hashesByToolKey: Readonly<Record<string, string>>;\n}\n\nexport interface LeanContextPolicyOptions {\n\t/** Repeated unchanged outputs below this token estimate stay full. */\n\treadonly minStubTokens?: number;\n\t/** Basenames that must never be replaced with an unchanged stub. */\n\treadonly neverStubFilenames?: readonly string[];\n\t/** Patterns that force full output when matched. */\n\treadonly secretPatterns?: readonly RegExp[];\n}\n\nexport interface LeanContextPolicyInput extends LeanContextPolicyOptions {\n\treadonly state: LeanContextPolicyState;\n\treadonly tool: string;\n\t/** Stable caller-defined identity inside the tool, such as path or request key. */\n\treadonly key: string;\n\treadonly content: string;\n\t/** Optional path used for parent-instruction filename checks. Defaults to key. */\n\treadonly path?: string;\n}\n\nexport interface LeanContextPolicyDecision {\n\treadonly emit: LeanContextEmission;\n\treadonly reason: LeanContextDecisionReason;\n\treadonly contentSha256: string;\n\treadonly previousSha256?: string;\n\treadonly estimatedTokens: number;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly stub?: string;\n}\n\nexport function createLeanContextPolicyState(\n\thashesByToolKey: Readonly<Record<string, string>> = {},\n): LeanContextPolicyState {\n\treturn { hashesByToolKey: { ...hashesByToolKey } };\n}\n\nexport function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision {\n\tconst contentSha256 = sha256Text(input.content);\n\tconst trackingKey = createLeanContextTrackingKey(input.tool, input.key);\n\tconst previousSha256 = input.state.hashesByToolKey[trackingKey];\n\tconst estimatedTokens = estimateLeanContextTokens(input.content);\n\tconst nextState = updateTrackedHash(input.state, trackingKey, contentSha256);\n\tconst baseDecision = {\n\t\tcontentSha256,\n\t\tpreviousSha256,\n\t\testimatedTokens,\n\t\tnextState,\n\t};\n\n\tif (previousSha256 === undefined) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"first-pass\" };\n\t}\n\n\tif (previousSha256 !== contentSha256) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"changed\" };\n\t}\n\n\tif (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"never-stub-parent-instruction\" };\n\t}\n\n\tif (containsSecretPattern(input.content, input.secretPatterns)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"secret-pattern\" };\n\t}\n\n\tconst minStubTokens = normalizeMinStubTokens(input.minStubTokens);\n\tif (estimatedTokens < minStubTokens) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"below-min-token-threshold\" };\n\t}\n\n\treturn {\n\t\t...baseDecision,\n\t\temit: \"stub\",\n\t\treason: \"unchanged\",\n\t\tstub: formatLeanContextUnchangedStub({\n\t\t\ttool: input.tool,\n\t\t\tkey: input.key,\n\t\t\tcontentSha256,\n\t\t\testimatedTokens,\n\t\t}),\n\t};\n}\n\nexport function getLeanContextTrackingHash(\n\tstate: LeanContextPolicyState,\n\ttool: string,\n\tkey: string,\n): string | undefined {\n\treturn state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];\n}\n\nexport function createLeanContextTrackingKey(tool: string, key: string): string {\n\treturn `${tool}${TRACKING_KEY_SEPARATOR}${key}`;\n}\n\nexport function estimateLeanContextTokens(content: string): number {\n\tif (content.length === 0) return 0;\n\treturn Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);\n}\n\nexport function formatLeanContextUnchangedStub(input: {\n\treadonly tool: string;\n\treadonly key: string;\n\treadonly contentSha256: string;\n\treadonly estimatedTokens: number;\n}): string {\n\treturn `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;\n}\n\nfunction updateTrackedHash(\n\tstate: LeanContextPolicyState,\n\ttrackingKey: string,\n\tcontentSha256: string,\n): LeanContextPolicyState {\n\tif (state.hashesByToolKey[trackingKey] === contentSha256) {\n\t\treturn state;\n\t}\n\treturn {\n\t\thashesByToolKey: {\n\t\t\t...state.hashesByToolKey,\n\t\t\t[trackingKey]: contentSha256,\n\t\t},\n\t};\n}\n\nfunction sha256Text(content: string): string {\n\treturn createHash(\"sha256\").update(content, \"utf8\").digest(\"hex\");\n}\n\nfunction isNeverStubParentInstruction(pathOrKey: string, filenames?: readonly string[]): boolean {\n\tconst allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;\n\tconst basename = getBasename(pathOrKey).toUpperCase();\n\treturn allowedNames.some((name) => name.toUpperCase() === basename);\n}\n\nfunction getBasename(pathOrKey: string): string {\n\tconst normalized = pathOrKey.replaceAll(\"\\\\\", \"/\");\n\tconst parts = normalized.split(\"/\");\n\treturn parts.at(-1) ?? normalized;\n}\n\nfunction containsSecretPattern(content: string, patterns?: readonly RegExp[]): boolean {\n\tconst activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;\n\treturn activePatterns.some((pattern) => regexTestStateless(pattern, content));\n}\n\nfunction regexTestStateless(pattern: RegExp, content: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(content);\n}\n\nfunction normalizeMinStubTokens(value: number | undefined): number {\n\tif (value === undefined) return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;\n\tif (!Number.isFinite(value) || value <= 0) return 0;\n\treturn Math.ceil(value);\n}\n"]}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { type RetrievalRanking, type ScoredContextCandidate } from "./context-graph-retrieval.ts";
|
|
2
|
-
export declare const NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION = "native-adoption-baseline.v1";
|
|
3
|
-
export declare const DEFAULT_NATIVE_ADOPTION_SEED = 12648430;
|
|
4
|
-
export type NativeAdoptionBenchmarkTarget = "selectMmrContext" | "fuseRrfRankings" | "scoreTopicalRelevance" | "scoreRetrievalCandidate" | "renderContextPack" | "cacheKeyControl";
|
|
5
|
-
export type NativeAdoptionBottleneckClass = "cpu" | "io" | "provider" | "spawn" | "unknown";
|
|
6
|
-
export type NativeAdoptionVerdict = "go" | "no-go" | "needs-telemetry";
|
|
7
|
-
export interface NativeAdoptionFixtureOptions {
|
|
8
|
-
candidateCount: number;
|
|
9
|
-
embeddingDimensions: number;
|
|
10
|
-
seed?: number;
|
|
11
|
-
}
|
|
12
|
-
export interface NativeAdoptionFixtureManifest {
|
|
13
|
-
sha256: string;
|
|
14
|
-
payloadBytes: number;
|
|
15
|
-
candidateCount: number;
|
|
16
|
-
embeddingDimensions: number;
|
|
17
|
-
seed: number;
|
|
18
|
-
}
|
|
19
|
-
export interface NativeAdoptionFixture {
|
|
20
|
-
seed: number;
|
|
21
|
-
candidateCount: number;
|
|
22
|
-
embeddingDimensions: number;
|
|
23
|
-
query: string;
|
|
24
|
-
queryEmbedding?: readonly number[];
|
|
25
|
-
candidates: readonly ScoredContextCandidate[];
|
|
26
|
-
rankings: readonly RetrievalRanking[];
|
|
27
|
-
manifest: NativeAdoptionFixtureManifest;
|
|
28
|
-
}
|
|
29
|
-
export interface NativeAdoptionSampleStats {
|
|
30
|
-
samples: number;
|
|
31
|
-
minNs: number;
|
|
32
|
-
maxNs: number;
|
|
33
|
-
meanNs: number;
|
|
34
|
-
p50Ns: number;
|
|
35
|
-
p95Ns: number;
|
|
36
|
-
p99Ns: number;
|
|
37
|
-
coefficientOfVariation: number;
|
|
38
|
-
}
|
|
39
|
-
export interface NativeAdoptionTargetResult {
|
|
40
|
-
target: NativeAdoptionBenchmarkTarget;
|
|
41
|
-
operations: number;
|
|
42
|
-
outputDigest: string;
|
|
43
|
-
}
|
|
44
|
-
export interface NativeAdoptionTargetMeasurement extends NativeAdoptionTargetResult {
|
|
45
|
-
stats: NativeAdoptionSampleStats;
|
|
46
|
-
sideEffects: NativeAdoptionSideEffectCounts;
|
|
47
|
-
}
|
|
48
|
-
export interface NativeAdoptionMeasureOptions {
|
|
49
|
-
iterations?: number;
|
|
50
|
-
warmupIterations?: number;
|
|
51
|
-
clock?: () => number;
|
|
52
|
-
}
|
|
53
|
-
export interface NativeAdoptionGateInput {
|
|
54
|
-
runtimeCallsites: number;
|
|
55
|
-
bottleneckClass: NativeAdoptionBottleneckClass;
|
|
56
|
-
typescriptP95Ns: number;
|
|
57
|
-
projectedRustP95Ns: number;
|
|
58
|
-
ipcOverheadP95Ns: number;
|
|
59
|
-
movableFraction: number;
|
|
60
|
-
startupP95Ms: number;
|
|
61
|
-
rssDeltaMb: number;
|
|
62
|
-
archiveDeltaMb: number;
|
|
63
|
-
sideEffectViolations?: readonly string[];
|
|
64
|
-
budgets?: Partial<NativeAdoptionGateBudgets>;
|
|
65
|
-
}
|
|
66
|
-
export interface NativeAdoptionGateBudgets {
|
|
67
|
-
minTypeScriptP95Ns: number;
|
|
68
|
-
minMovableFraction: number;
|
|
69
|
-
maxIpcOverheadFraction: number;
|
|
70
|
-
minProjectedNetSpeedup: number;
|
|
71
|
-
maxStartupP95Ms: number;
|
|
72
|
-
maxRssDeltaMb: number;
|
|
73
|
-
maxArchiveDeltaMb: number;
|
|
74
|
-
}
|
|
75
|
-
export interface NativeAdoptionGateMetrics {
|
|
76
|
-
retainedTypeScriptP95Ns: number;
|
|
77
|
-
sidecarNetP95Ns: number;
|
|
78
|
-
projectedNetSpeedup: number;
|
|
79
|
-
cpuSpeedup: number;
|
|
80
|
-
ipcOverheadFraction: number;
|
|
81
|
-
movableFraction: number;
|
|
82
|
-
}
|
|
83
|
-
export interface NativeAdoptionGateDecision {
|
|
84
|
-
verdict: NativeAdoptionVerdict;
|
|
85
|
-
reasons: readonly string[];
|
|
86
|
-
metrics: NativeAdoptionGateMetrics;
|
|
87
|
-
budgets: NativeAdoptionGateBudgets;
|
|
88
|
-
}
|
|
89
|
-
export interface NativeAdoptionBaselineInput {
|
|
90
|
-
repoSha: string;
|
|
91
|
-
runtime: string;
|
|
92
|
-
generatedAt: string;
|
|
93
|
-
fixture: NativeAdoptionFixture;
|
|
94
|
-
measurements: readonly NativeAdoptionTargetMeasurement[];
|
|
95
|
-
decision: NativeAdoptionGateDecision;
|
|
96
|
-
}
|
|
97
|
-
export interface NativeAdoptionBaseline {
|
|
98
|
-
schemaVersion: typeof NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION;
|
|
99
|
-
repoSha: string;
|
|
100
|
-
runtime: string;
|
|
101
|
-
generatedAt: string;
|
|
102
|
-
env: Record<string, never>;
|
|
103
|
-
fixture: NativeAdoptionFixtureManifest;
|
|
104
|
-
measurements: readonly NativeAdoptionTargetMeasurement[];
|
|
105
|
-
decision: NativeAdoptionGateDecision;
|
|
106
|
-
}
|
|
107
|
-
export interface NativeAdoptionSecretScanFinding {
|
|
108
|
-
path: string;
|
|
109
|
-
pattern: string;
|
|
110
|
-
}
|
|
111
|
-
export interface NativeAdoptionForbiddenImportFinding {
|
|
112
|
-
path: string;
|
|
113
|
-
specifier: string;
|
|
114
|
-
statement: string;
|
|
115
|
-
}
|
|
116
|
-
export interface NativeAdoptionSideEffectCounts {
|
|
117
|
-
network: number;
|
|
118
|
-
spawn: number;
|
|
119
|
-
fileRead: number;
|
|
120
|
-
}
|
|
121
|
-
export interface NativeAdoptionSideEffectRecorder {
|
|
122
|
-
recordNetwork: () => never;
|
|
123
|
-
recordSpawn: () => never;
|
|
124
|
-
recordFileRead: () => never;
|
|
125
|
-
}
|
|
126
|
-
export interface NativeAdoptionGuardedResult<T> {
|
|
127
|
-
value: T;
|
|
128
|
-
sideEffects: NativeAdoptionSideEffectCounts;
|
|
129
|
-
}
|
|
130
|
-
export interface NativeAdoptionSourceFile {
|
|
131
|
-
path: string;
|
|
132
|
-
content: string;
|
|
133
|
-
}
|
|
134
|
-
export interface NativeAdoptionCallsiteInput {
|
|
135
|
-
symbols: readonly string[];
|
|
136
|
-
files: readonly NativeAdoptionSourceFile[];
|
|
137
|
-
}
|
|
138
|
-
export interface NativeAdoptionCallsiteSummary {
|
|
139
|
-
runtimeCallsites: number;
|
|
140
|
-
testCallsites: number;
|
|
141
|
-
definitionCallsites: number;
|
|
142
|
-
exportCallsites: number;
|
|
143
|
-
harnessCallsites: number;
|
|
144
|
-
bySymbol: Record<string, {
|
|
145
|
-
runtime: number;
|
|
146
|
-
test: number;
|
|
147
|
-
definition: number;
|
|
148
|
-
export: number;
|
|
149
|
-
harness: number;
|
|
150
|
-
}>;
|
|
151
|
-
}
|
|
152
|
-
export declare function createNativeAdoptionFixture(options: NativeAdoptionFixtureOptions): NativeAdoptionFixture;
|
|
153
|
-
export declare function assertNativeAdoptionFixtureSecretFree(fixture: NativeAdoptionFixture): void;
|
|
154
|
-
export declare function scanNativeAdoptionSecrets(value: unknown): NativeAdoptionSecretScanFinding[];
|
|
155
|
-
export declare function assertNativeAdoptionBaselineSecretFree(value: unknown): void;
|
|
156
|
-
export declare const assertNativeAdoptionDocumentSecretFree: typeof assertNativeAdoptionBaselineSecretFree;
|
|
157
|
-
export declare function runNativeAdoptionTarget(target: NativeAdoptionBenchmarkTarget, fixture: NativeAdoptionFixture): NativeAdoptionTargetResult;
|
|
158
|
-
export declare function measureNativeAdoptionTarget(target: NativeAdoptionBenchmarkTarget, fixture: NativeAdoptionFixture, options?: NativeAdoptionMeasureOptions): NativeAdoptionTargetMeasurement;
|
|
159
|
-
export declare function summarizeNativeAdoptionSamples(samples: readonly number[]): NativeAdoptionSampleStats;
|
|
160
|
-
export declare function withNativeAdoptionSideEffectGuards<T>(fn: (recorder: NativeAdoptionSideEffectRecorder) => T): NativeAdoptionGuardedResult<T>;
|
|
161
|
-
export declare function evaluateNativeAdoptionGate(input: NativeAdoptionGateInput): NativeAdoptionGateDecision;
|
|
162
|
-
export declare function createNativeAdoptionBaseline(input: NativeAdoptionBaselineInput): NativeAdoptionBaseline;
|
|
163
|
-
export declare function classifyNativeAdoptionCallsites(input: NativeAdoptionCallsiteInput): NativeAdoptionCallsiteSummary;
|
|
164
|
-
export declare function scanNativeAdoptionForbiddenImports(files: readonly NativeAdoptionSourceFile[]): NativeAdoptionForbiddenImportFinding[];
|
|
165
|
-
export declare function assertNativeAdoptionTimedTargetImportSafe(content: string, path?: string): void;
|
|
166
|
-
//# sourceMappingURL=native-adoption-benchmark.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native-adoption-benchmark.d.ts","sourceRoot":"","sources":["../../src/core/native-adoption-benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { performance } from \"node:perf_hooks\";\nimport {\n\tcanonicalJsonStringify,\n\tfuseRrfRankings,\n\ttype RetrievalRanking,\n\trenderContextPack,\n\ttype ScoredContextCandidate,\n\tscoreRetrievalCandidate,\n\tscoreTopicalRelevance,\n\tselectMmrContext,\n} from \"./context-graph-retrieval.ts\";\n\nexport const NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION = \"native-adoption-baseline.v1\";\nexport const DEFAULT_NATIVE_ADOPTION_SEED = 0xc0ffee;\n\nconst DEFAULT_MIN_TYPESCRIPT_P95_NS = 200_000;\nconst DEFAULT_MIN_MOVABLE_FRACTION = 0.6;\nconst DEFAULT_MAX_IPC_OVERHEAD_FRACTION = 0.3;\nconst DEFAULT_MIN_NET_SPEEDUP = 3;\nconst DEFAULT_MAX_STARTUP_P95_MS = 150;\nconst DEFAULT_MAX_RSS_DELTA_MB = 64;\nconst DEFAULT_MAX_ARCHIVE_DELTA_MB = 15;\nconst DEFAULT_TOKEN_BUDGET = 2_400;\n\nexport type NativeAdoptionBenchmarkTarget =\n\t| \"selectMmrContext\"\n\t| \"fuseRrfRankings\"\n\t| \"scoreTopicalRelevance\"\n\t| \"scoreRetrievalCandidate\"\n\t| \"renderContextPack\"\n\t| \"cacheKeyControl\";\n\nexport type NativeAdoptionBottleneckClass = \"cpu\" | \"io\" | \"provider\" | \"spawn\" | \"unknown\";\nexport type NativeAdoptionVerdict = \"go\" | \"no-go\" | \"needs-telemetry\";\n\nexport interface NativeAdoptionFixtureOptions {\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tseed?: number;\n}\n\nexport interface NativeAdoptionFixtureManifest {\n\tsha256: string;\n\tpayloadBytes: number;\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tseed: number;\n}\n\nexport interface NativeAdoptionFixture {\n\tseed: number;\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tquery: string;\n\tqueryEmbedding?: readonly number[];\n\tcandidates: readonly ScoredContextCandidate[];\n\trankings: readonly RetrievalRanking[];\n\tmanifest: NativeAdoptionFixtureManifest;\n}\n\nexport interface NativeAdoptionSampleStats {\n\tsamples: number;\n\tminNs: number;\n\tmaxNs: number;\n\tmeanNs: number;\n\tp50Ns: number;\n\tp95Ns: number;\n\tp99Ns: number;\n\tcoefficientOfVariation: number;\n}\n\nexport interface NativeAdoptionTargetResult {\n\ttarget: NativeAdoptionBenchmarkTarget;\n\toperations: number;\n\toutputDigest: string;\n}\n\nexport interface NativeAdoptionTargetMeasurement extends NativeAdoptionTargetResult {\n\tstats: NativeAdoptionSampleStats;\n\tsideEffects: NativeAdoptionSideEffectCounts;\n}\n\nexport interface NativeAdoptionMeasureOptions {\n\titerations?: number;\n\twarmupIterations?: number;\n\tclock?: () => number;\n}\n\nexport interface NativeAdoptionGateInput {\n\truntimeCallsites: number;\n\tbottleneckClass: NativeAdoptionBottleneckClass;\n\ttypescriptP95Ns: number;\n\tprojectedRustP95Ns: number;\n\tipcOverheadP95Ns: number;\n\tmovableFraction: number;\n\tstartupP95Ms: number;\n\trssDeltaMb: number;\n\tarchiveDeltaMb: number;\n\tsideEffectViolations?: readonly string[];\n\tbudgets?: Partial<NativeAdoptionGateBudgets>;\n}\n\nexport interface NativeAdoptionGateBudgets {\n\tminTypeScriptP95Ns: number;\n\tminMovableFraction: number;\n\tmaxIpcOverheadFraction: number;\n\tminProjectedNetSpeedup: number;\n\tmaxStartupP95Ms: number;\n\tmaxRssDeltaMb: number;\n\tmaxArchiveDeltaMb: number;\n}\n\nexport interface NativeAdoptionGateMetrics {\n\tretainedTypeScriptP95Ns: number;\n\tsidecarNetP95Ns: number;\n\tprojectedNetSpeedup: number;\n\tcpuSpeedup: number;\n\tipcOverheadFraction: number;\n\tmovableFraction: number;\n}\n\nexport interface NativeAdoptionGateDecision {\n\tverdict: NativeAdoptionVerdict;\n\treasons: readonly string[];\n\tmetrics: NativeAdoptionGateMetrics;\n\tbudgets: NativeAdoptionGateBudgets;\n}\n\nexport interface NativeAdoptionBaselineInput {\n\trepoSha: string;\n\truntime: string;\n\tgeneratedAt: string;\n\tfixture: NativeAdoptionFixture;\n\tmeasurements: readonly NativeAdoptionTargetMeasurement[];\n\tdecision: NativeAdoptionGateDecision;\n}\n\nexport interface NativeAdoptionBaseline {\n\tschemaVersion: typeof NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION;\n\trepoSha: string;\n\truntime: string;\n\tgeneratedAt: string;\n\tenv: Record<string, never>;\n\tfixture: NativeAdoptionFixtureManifest;\n\tmeasurements: readonly NativeAdoptionTargetMeasurement[];\n\tdecision: NativeAdoptionGateDecision;\n}\n\nexport interface NativeAdoptionSecretScanFinding {\n\tpath: string;\n\tpattern: string;\n}\n\nexport interface NativeAdoptionForbiddenImportFinding {\n\tpath: string;\n\tspecifier: string;\n\tstatement: string;\n}\n\nexport interface NativeAdoptionSideEffectCounts {\n\tnetwork: number;\n\tspawn: number;\n\tfileRead: number;\n}\n\nexport interface NativeAdoptionSideEffectRecorder {\n\trecordNetwork: () => never;\n\trecordSpawn: () => never;\n\trecordFileRead: () => never;\n}\n\nexport interface NativeAdoptionGuardedResult<T> {\n\tvalue: T;\n\tsideEffects: NativeAdoptionSideEffectCounts;\n}\n\nexport interface NativeAdoptionSourceFile {\n\tpath: string;\n\tcontent: string;\n}\n\nexport interface NativeAdoptionCallsiteInput {\n\tsymbols: readonly string[];\n\tfiles: readonly NativeAdoptionSourceFile[];\n}\n\nexport interface NativeAdoptionCallsiteSummary {\n\truntimeCallsites: number;\n\ttestCallsites: number;\n\tdefinitionCallsites: number;\n\texportCallsites: number;\n\tharnessCallsites: number;\n\tbySymbol: Record<\n\t\tstring,\n\t\t{\n\t\t\truntime: number;\n\t\t\ttest: number;\n\t\t\tdefinition: number;\n\t\t\texport: number;\n\t\t\tharness: number;\n\t\t}\n\t>;\n}\n\ntype NativeAdoptionSourceCategory = \"definition\" | \"export\" | \"test\" | \"harness\" | \"runtime\";\n\ninterface Prng {\n\tnext: () => number;\n}\n\nconst SECRET_PATTERNS: ReadonlyArray<{ name: string; pattern: RegExp }> = [\n\t{ name: \"pem-private-key\", pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----/i },\n\t{ name: \"bearer-token\", pattern: /\\bBearer\\s+[A-Za-z0-9._~+/=-]{16,}/i },\n\t{ name: \"jwt\", pattern: /\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b/ },\n\t{\n\t\tname: \"env-secret-assignment\",\n\t\tpattern: /\\b[A-Z0-9_]*(?:API[_-]?KEY|SECRET|TOKEN|PASSWORD|PRIVATE[_-]?KEY)[A-Z0-9_]*\\s*=\\s*[\"']?[^\"'\\s]{8,}/,\n\t},\n\t{\n\t\tname: \"vendor-token-prefix\",\n\t\tpattern: /\\b(?:(?:ghp|gho|ghu|ghs|github_pat)_[A-Za-z0-9_]{16,}|sk-[A-Za-z0-9]{16,})\\b/,\n\t},\n];\n\nconst FORBIDDEN_NATIVE_ADOPTION_IMPORTS = new Set([\n\t\"fs\",\n\t\"node:fs\",\n\t\"child_process\",\n\t\"node:child_process\",\n\t\"net\",\n\t\"node:net\",\n\t\"tls\",\n\t\"node:tls\",\n\t\"http\",\n\t\"node:http\",\n\t\"https\",\n\t\"node:https\",\n\t\"undici\",\n]);\n\nexport function createNativeAdoptionFixture(options: NativeAdoptionFixtureOptions): NativeAdoptionFixture {\n\tconst seed = normalizeSeed(options.seed ?? DEFAULT_NATIVE_ADOPTION_SEED);\n\tconst candidateCount = Math.max(0, Math.floor(options.candidateCount));\n\tconst embeddingDimensions = Math.max(0, Math.floor(options.embeddingDimensions));\n\tconst prng = createMulberry32(seed);\n\tconst topics = [\"retrieval\", \"memory\", \"ontology\", \"cache\", \"session\", \"tools\"];\n\tconst query = \"context graph retrieval ranking memory cache\";\n\tconst queryEmbedding = embeddingDimensions > 0 ? createVector(prng, embeddingDimensions) : undefined;\n\tconst candidates: ScoredContextCandidate[] = [];\n\n\tfor (let index = 0; index < candidateCount; index++) {\n\t\tconst topic = topics[index % topics.length] ?? \"retrieval\";\n\t\tconst score = round6(1 - index / Math.max(candidateCount, 1) + prng.next() * 0.05);\n\t\tcandidates.push({\n\t\t\tid: `fixture-${index.toString().padStart(5, \"0\")}`,\n\t\t\tpath: `packages/coding-agent/src/fixture/${topic}-${index}.ts`,\n\t\t\ttitle: `${topic} fixture ${index}`,\n\t\t\tsymbol: `fixtureSymbol${index}`,\n\t\t\tkind: index % 3 === 0 ? \"function\" : \"document\",\n\t\t\tcontent: createFixtureContent(topic, index),\n\t\t\ttokenEstimate: 32 + (index % 11) * 7,\n\t\t\ttopic,\n\t\t\t...(embeddingDimensions > 0 ? { embedding: createVector(prng, embeddingDimensions) } : {}),\n\t\t\tscore: clamp01(score),\n\t\t\trrfScore: clamp01(score * 0.8),\n\t\t\ttopicalScore: clamp01(score * 0.9),\n\t\t});\n\t}\n\n\tconst rankings = createFixtureRankings(candidates);\n\tconst payload = { seed, candidateCount, embeddingDimensions, query, queryEmbedding, candidates, rankings };\n\tconst payloadText = canonicalJsonStringify(payload);\n\tconst manifest = {\n\t\tsha256: sha256Hex(payloadText),\n\t\tpayloadBytes: Buffer.byteLength(payloadText, \"utf8\"),\n\t\tcandidateCount,\n\t\tembeddingDimensions,\n\t\tseed,\n\t};\n\tconst fixture: NativeAdoptionFixture = {\n\t\tseed,\n\t\tcandidateCount,\n\t\tembeddingDimensions,\n\t\tquery,\n\t\t...(queryEmbedding ? { queryEmbedding } : {}),\n\t\tcandidates,\n\t\trankings,\n\t\tmanifest,\n\t};\n\tassertNativeAdoptionFixtureSecretFree(fixture);\n\treturn fixture;\n}\n\nexport function assertNativeAdoptionFixtureSecretFree(fixture: NativeAdoptionFixture): void {\n\tconst payload = canonicalJsonStringify({\n\t\tseed: fixture.seed,\n\t\tcandidateCount: fixture.candidateCount,\n\t\tembeddingDimensions: fixture.embeddingDimensions,\n\t\tquery: fixture.query,\n\t\tqueryEmbedding: fixture.queryEmbedding,\n\t\tcandidates: fixture.candidates,\n\t\trankings: fixture.rankings,\n\t\tmanifest: fixture.manifest,\n\t});\n\tconst hit = SECRET_PATTERNS.find(({ pattern }) => pattern.test(payload));\n\tif (hit) {\n\t\tthrow new Error(`secret-like fixture content rejected: ${hit.name}`);\n\t}\n}\n\nexport function scanNativeAdoptionSecrets(value: unknown): NativeAdoptionSecretScanFinding[] {\n\tconst findings: NativeAdoptionSecretScanFinding[] = [];\n\tvisitNativeAdoptionSecretValue(value, \"$\", findings, new Set<object>());\n\treturn findings;\n}\n\nexport function assertNativeAdoptionBaselineSecretFree(value: unknown): void {\n\tconst findings = scanNativeAdoptionSecrets(value);\n\tif (findings.length > 0) {\n\t\tconst first = findings[0];\n\t\tthrow new Error(`secret-like baseline content rejected: ${first?.pattern ?? \"unknown\"} at ${first?.path ?? \"$\"}`);\n\t}\n}\n\nexport const assertNativeAdoptionDocumentSecretFree = assertNativeAdoptionBaselineSecretFree;\n\nexport function runNativeAdoptionTarget(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\tfixture: NativeAdoptionFixture,\n): NativeAdoptionTargetResult {\n\tassertNativeAdoptionFixtureSecretFree(fixture);\n\tif (target === \"selectMmrContext\") {\n\t\tconst result = selectMmrContext(fixture.candidates, { tokenBudget: DEFAULT_TOKEN_BUDGET, lambda: 0.6 });\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.selected.map((candidate) => candidate.id),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"fuseRrfRankings\") {\n\t\tconst result = fuseRrfRankings(fixture.rankings, { limit: Math.min(100, fixture.candidates.length) });\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.map((hit) => [hit.id, round6(hit.score)]),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"scoreTopicalRelevance\") {\n\t\tconst result = fixture.candidates.map((candidate) =>\n\t\t\tscoreTopicalRelevance({ query: fixture.query, queryEmbedding: fixture.queryEmbedding, document: candidate }),\n\t\t);\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.map((score) => round6(score.score)),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"scoreRetrievalCandidate\") {\n\t\tconst result = fixture.candidates.map(\n\t\t\t(candidate) =>\n\t\t\t\tscoreRetrievalCandidate({\n\t\t\t\t\trrfScore: candidate.rrfScore ?? candidate.score,\n\t\t\t\t\ttopicalScore: candidate.topicalScore ?? candidate.score,\n\t\t\t\t\tgraphScore: candidate.score,\n\t\t\t\t\trecencyScore: (candidate.score * 0.5) % 1,\n\t\t\t\t\tauthorityScore: (candidate.score * 0.75) % 1,\n\t\t\t\t\tconflictPenalty: candidate.conflicts?.length ? 1 : 0,\n\t\t\t\t}).finalScore,\n\t\t);\n\t\treturn digestTargetResult(target, result.map(round6), fixture.candidates.length);\n\t}\n\tif (target === \"renderContextPack\") {\n\t\tconst result = renderContextPack(fixture.candidates.slice(0, Math.min(16, fixture.candidates.length)), {\n\t\t\tqueryIntent: \"native-adoption-benchmark\",\n\t\t\tmaxEvidenceChars: 180,\n\t\t});\n\t\treturn digestTargetResult(target, result, fixture.candidates.length);\n\t}\n\tconst result = canonicalJsonStringify({\n\t\tquery: fixture.query,\n\t\tmanifest: fixture.manifest,\n\t\tfirst: fixture.candidates[0]?.id ?? \"none\",\n\t});\n\treturn digestTargetResult(target, result, fixture.candidates.length);\n}\n\nexport function measureNativeAdoptionTarget(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\tfixture: NativeAdoptionFixture,\n\toptions: NativeAdoptionMeasureOptions = {},\n): NativeAdoptionTargetMeasurement {\n\tconst iterations = Math.max(1, Math.floor(options.iterations ?? 20));\n\tconst warmupIterations = Math.max(0, Math.floor(options.warmupIterations ?? 5));\n\tconst clock = options.clock ?? performance.now.bind(performance);\n\tlet lastResult = runNativeAdoptionTarget(target, fixture);\n\tfor (let index = 0; index < warmupIterations; index++) {\n\t\tlastResult = runNativeAdoptionTarget(target, fixture);\n\t}\n\n\tconst samples: number[] = [];\n\tlet sideEffects = createEmptySideEffectCounts();\n\tfor (let index = 0; index < iterations; index++) {\n\t\tconst guarded = withNativeAdoptionSideEffectGuards(() => {\n\t\t\tconst startMs = clock();\n\t\t\tlastResult = runNativeAdoptionTarget(target, fixture);\n\t\t\tconst endMs = clock();\n\t\t\treturn Math.max(0, Math.round((endMs - startMs) * 1_000_000));\n\t\t});\n\t\tsideEffects = addSideEffects(sideEffects, guarded.sideEffects);\n\t\tsamples.push(guarded.value);\n\t}\n\n\treturn {\n\t\t...lastResult,\n\t\tstats: summarizeNativeAdoptionSamples(samples),\n\t\tsideEffects,\n\t};\n}\n\nexport function summarizeNativeAdoptionSamples(samples: readonly number[]): NativeAdoptionSampleStats {\n\tif (samples.length === 0) {\n\t\treturn {\n\t\t\tsamples: 0,\n\t\t\tminNs: 0,\n\t\t\tmaxNs: 0,\n\t\t\tmeanNs: 0,\n\t\t\tp50Ns: 0,\n\t\t\tp95Ns: 0,\n\t\t\tp99Ns: 0,\n\t\t\tcoefficientOfVariation: 0,\n\t\t};\n\t}\n\tconst sorted = [...samples].map((sample) => Math.max(0, Math.round(sample))).sort((a, b) => a - b);\n\tconst meanNs = sorted.reduce((sum, sample) => sum + sample, 0) / sorted.length;\n\tconst variance = sorted.reduce((sum, sample) => sum + (sample - meanNs) ** 2, 0) / sorted.length;\n\treturn {\n\t\tsamples: sorted.length,\n\t\tminNs: sorted[0] ?? 0,\n\t\tmaxNs: sorted[sorted.length - 1] ?? 0,\n\t\tmeanNs,\n\t\tp50Ns: nearestRank(sorted, 0.5),\n\t\tp95Ns: nearestRank(sorted, 0.95),\n\t\tp99Ns: nearestRank(sorted, 0.99),\n\t\tcoefficientOfVariation: meanNs === 0 ? 0 : Math.sqrt(variance) / meanNs,\n\t};\n}\n\nexport function withNativeAdoptionSideEffectGuards<T>(\n\tfn: (recorder: NativeAdoptionSideEffectRecorder) => T,\n): NativeAdoptionGuardedResult<T> {\n\tconst sideEffects = createEmptySideEffectCounts();\n\tconst recorder = createSideEffectRecorder(sideEffects);\n\tconst originalFetch = globalThis.fetch;\n\tglobalThis.fetch = ((..._args: Parameters<typeof fetch>) => recorder.recordNetwork()) as typeof fetch;\n\n\tlet value: T | undefined;\n\tlet thrown: unknown;\n\ttry {\n\t\tvalue = fn(recorder);\n\t} catch (error) {\n\t\tthrown = error;\n\t} finally {\n\t\tglobalThis.fetch = originalFetch;\n\t}\n\n\tconst violations = formatSideEffectViolations(sideEffects);\n\tif (violations.length > 0) {\n\t\tthrow new Error(`forbidden side effect during native adoption benchmark: ${violations.join(\",\")}`);\n\t}\n\tif (thrown) throw thrown;\n\treturn { value: value as T, sideEffects };\n}\n\nexport function evaluateNativeAdoptionGate(input: NativeAdoptionGateInput): NativeAdoptionGateDecision {\n\tconst budgets = createGateBudgets(input.budgets);\n\tconst movableFraction = clamp01(input.movableFraction);\n\tconst retainedTypeScriptP95Ns = Math.max(0, input.typescriptP95Ns) * (1 - movableFraction);\n\tconst sidecarNetP95Ns =\n\t\tretainedTypeScriptP95Ns + Math.max(0, input.projectedRustP95Ns) + Math.max(0, input.ipcOverheadP95Ns);\n\tconst projectedNetSpeedup = sidecarNetP95Ns > 0 ? Math.max(0, input.typescriptP95Ns) / sidecarNetP95Ns : 0;\n\tconst movableTypeScriptP95Ns = Math.max(0, input.typescriptP95Ns) * movableFraction;\n\tconst cpuSpeedup = input.projectedRustP95Ns > 0 ? movableTypeScriptP95Ns / input.projectedRustP95Ns : 0;\n\tconst ipcOverheadFraction =\n\t\tinput.typescriptP95Ns > 0 ? Math.max(0, input.ipcOverheadP95Ns) / input.typescriptP95Ns : 1;\n\tconst reasons: string[] = [];\n\n\tif (input.runtimeCallsites <= 0) reasons.push(\"runtime-callsite-absent\");\n\tif (input.bottleneckClass !== \"cpu\") reasons.push(`bottleneck-not-cpu:${input.bottleneckClass}`);\n\tif (input.typescriptP95Ns < budgets.minTypeScriptP95Ns) reasons.push(\"typescript-p95-too-small\");\n\tif (movableFraction < budgets.minMovableFraction) reasons.push(\"movable-fraction-too-low\");\n\tif (ipcOverheadFraction >= budgets.maxIpcOverheadFraction) reasons.push(\"ipc-overhead-too-high\");\n\tif (projectedNetSpeedup < budgets.minProjectedNetSpeedup) reasons.push(\"projected-net-speedup-too-low\");\n\tif (input.startupP95Ms > budgets.maxStartupP95Ms) reasons.push(\"startup-p95-too-high\");\n\tif (input.rssDeltaMb > budgets.maxRssDeltaMb) reasons.push(\"rss-delta-too-high\");\n\tif (input.archiveDeltaMb > budgets.maxArchiveDeltaMb) reasons.push(\"archive-delta-too-high\");\n\tfor (const violation of input.sideEffectViolations ?? []) {\n\t\treasons.push(`side-effect:${violation}`);\n\t}\n\n\treturn {\n\t\tverdict: reasons.length === 0 ? \"go\" : \"no-go\",\n\t\treasons,\n\t\tmetrics: {\n\t\t\tretainedTypeScriptP95Ns,\n\t\t\tsidecarNetP95Ns,\n\t\t\tprojectedNetSpeedup,\n\t\t\tcpuSpeedup,\n\t\t\tipcOverheadFraction,\n\t\t\tmovableFraction,\n\t\t},\n\t\tbudgets,\n\t};\n}\n\nexport function createNativeAdoptionBaseline(input: NativeAdoptionBaselineInput): NativeAdoptionBaseline {\n\tassertNativeAdoptionFixtureSecretFree(input.fixture);\n\tconst baseline = {\n\t\tschemaVersion: NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION,\n\t\trepoSha: input.repoSha,\n\t\truntime: input.runtime,\n\t\tgeneratedAt: input.generatedAt,\n\t\tenv: {},\n\t\tfixture: input.fixture.manifest,\n\t\tmeasurements: input.measurements,\n\t\tdecision: input.decision,\n\t} satisfies NativeAdoptionBaseline;\n\tassertNativeAdoptionBaselineSecretFree(baseline);\n\treturn baseline;\n}\n\nexport function classifyNativeAdoptionCallsites(input: NativeAdoptionCallsiteInput): NativeAdoptionCallsiteSummary {\n\tconst bySymbol: NativeAdoptionCallsiteSummary[\"bySymbol\"] = {};\n\tfor (const symbol of input.symbols) {\n\t\tbySymbol[symbol] = { runtime: 0, test: 0, definition: 0, export: 0, harness: 0 };\n\t}\n\n\tfor (const file of input.files) {\n\t\tconst category = classifySourceFile(file);\n\t\tfor (const symbol of input.symbols) {\n\t\t\tconst symbolSummary = bySymbol[symbol];\n\t\t\tif (!symbolSummary) continue;\n\t\t\tconst count = countNativeAdoptionReferences(file, symbol, category);\n\t\t\tif (count === 0) continue;\n\t\t\tif (category === \"test\") symbolSummary.test += count;\n\t\t\telse if (category === \"definition\") symbolSummary.definition += count;\n\t\t\telse if (category === \"export\") symbolSummary.export += count;\n\t\t\telse if (category === \"harness\") symbolSummary.harness += count;\n\t\t\telse symbolSummary.runtime += count;\n\t\t}\n\t}\n\n\treturn {\n\t\truntimeCallsites: sumBySymbol(bySymbol, \"runtime\"),\n\t\ttestCallsites: sumBySymbol(bySymbol, \"test\"),\n\t\tdefinitionCallsites: sumBySymbol(bySymbol, \"definition\"),\n\t\texportCallsites: sumBySymbol(bySymbol, \"export\"),\n\t\tharnessCallsites: sumBySymbol(bySymbol, \"harness\"),\n\t\tbySymbol,\n\t};\n}\n\nexport function scanNativeAdoptionForbiddenImports(\n\tfiles: readonly NativeAdoptionSourceFile[],\n): NativeAdoptionForbiddenImportFinding[] {\n\tconst findings: NativeAdoptionForbiddenImportFinding[] = [];\n\tfor (const file of files) {\n\t\tfor (const match of findNativeAdoptionImportSpecifiers(file.content)) {\n\t\t\tif (FORBIDDEN_NATIVE_ADOPTION_IMPORTS.has(match.specifier)) {\n\t\t\t\tfindings.push({ path: file.path, specifier: match.specifier, statement: match.statement });\n\t\t\t}\n\t\t}\n\t}\n\treturn findings;\n}\n\nexport function assertNativeAdoptionTimedTargetImportSafe(content: string, path = \"<inline>\"): void {\n\tconst findings = scanNativeAdoptionForbiddenImports([{ path, content }]);\n\tif (findings.length > 0) {\n\t\tconst first = findings[0];\n\t\tthrow new Error(`forbidden static import in timed native adoption target: ${first?.specifier ?? \"unknown\"}`);\n\t}\n}\n\nfunction createFixtureContent(topic: string, index: number): string {\n\treturn [\n\t\t`Fixture document ${index} covers ${topic} retrieval behavior.`,\n\t\t\"It describes graph context ranking, memory evidence, ontology validation, cache policy, and session packing.\",\n\t\t\"The text is synthetic and contains no credentials, network endpoints, or external provider payloads.\",\n\t].join(\" \");\n}\n\nfunction createFixtureRankings(candidates: readonly ScoredContextCandidate[]): RetrievalRanking[] {\n\tconst lexical = candidates.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\tconst vector = [...candidates]\n\t\t.sort((a, b) => (a.topic ?? \"\").localeCompare(b.topic ?? \"\") || b.score - a.score)\n\t\t.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\tconst graph = [...candidates]\n\t\t.sort((a, b) => (a.path ?? \"\").localeCompare(b.path ?? \"\"))\n\t\t.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\treturn [\n\t\t{ name: \"lexical\", weight: 1, hits: lexical },\n\t\t{ name: \"vector\", weight: 1.15, hits: vector },\n\t\t{ name: \"graph\", weight: 0.85, hits: graph },\n\t];\n}\n\nfunction createVector(prng: Prng, dimensions: number): number[] {\n\treturn Array.from({ length: dimensions }, () => round6(prng.next() * 2 - 1));\n}\n\nfunction createMulberry32(seed: number): Prng {\n\tlet state = seed >>> 0;\n\treturn {\n\t\tnext: () => {\n\t\t\tstate += 0x6d2b79f5;\n\t\t\tlet value = state;\n\t\t\tvalue = Math.imul(value ^ (value >>> 15), value | 1);\n\t\t\tvalue ^= value + Math.imul(value ^ (value >>> 7), value | 61);\n\t\t\treturn ((value ^ (value >>> 14)) >>> 0) / 4_294_967_296;\n\t\t},\n\t};\n}\n\nfunction normalizeSeed(seed: number): number {\n\treturn Number.isFinite(seed) ? Math.floor(seed) >>> 0 : DEFAULT_NATIVE_ADOPTION_SEED;\n}\n\nfunction digestTargetResult(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\toutput: unknown,\n\toperations: number,\n): NativeAdoptionTargetResult {\n\treturn {\n\t\ttarget,\n\t\toperations,\n\t\toutputDigest: sha256Hex(canonicalJsonStringify({ target, output })),\n\t};\n}\n\nfunction sha256Hex(value: string): string {\n\treturn createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\nfunction nearestRank(sortedSamples: readonly number[], percentile: number): number {\n\tif (sortedSamples.length === 0) return 0;\n\tconst index = Math.min(sortedSamples.length - 1, Math.max(0, Math.ceil(percentile * sortedSamples.length) - 1));\n\treturn sortedSamples[index] ?? 0;\n}\n\nfunction createEmptySideEffectCounts(): NativeAdoptionSideEffectCounts {\n\treturn { network: 0, spawn: 0, fileRead: 0 };\n}\n\nfunction createSideEffectRecorder(sideEffects: NativeAdoptionSideEffectCounts): NativeAdoptionSideEffectRecorder {\n\treturn {\n\t\trecordNetwork: () => {\n\t\t\tsideEffects.network += 1;\n\t\t\tthrow new Error(\"forbidden side effect: network\");\n\t\t},\n\t\trecordSpawn: () => {\n\t\t\tsideEffects.spawn += 1;\n\t\t\tthrow new Error(\"forbidden side effect: spawn\");\n\t\t},\n\t\trecordFileRead: () => {\n\t\t\tsideEffects.fileRead += 1;\n\t\t\tthrow new Error(\"forbidden side effect: file-read\");\n\t\t},\n\t};\n}\n\nfunction addSideEffects(\n\tleft: NativeAdoptionSideEffectCounts,\n\tright: NativeAdoptionSideEffectCounts,\n): NativeAdoptionSideEffectCounts {\n\treturn {\n\t\tnetwork: left.network + right.network,\n\t\tspawn: left.spawn + right.spawn,\n\t\tfileRead: left.fileRead + right.fileRead,\n\t};\n}\n\nfunction formatSideEffectViolations(sideEffects: NativeAdoptionSideEffectCounts): string[] {\n\tconst violations: string[] = [];\n\tif (sideEffects.network > 0) violations.push(`network:${sideEffects.network}`);\n\tif (sideEffects.spawn > 0) violations.push(`spawn:${sideEffects.spawn}`);\n\tif (sideEffects.fileRead > 0) violations.push(`fileRead:${sideEffects.fileRead}`);\n\treturn violations;\n}\n\nfunction createGateBudgets(input: Partial<NativeAdoptionGateBudgets> | undefined): NativeAdoptionGateBudgets {\n\treturn {\n\t\tminTypeScriptP95Ns: input?.minTypeScriptP95Ns ?? DEFAULT_MIN_TYPESCRIPT_P95_NS,\n\t\tminMovableFraction: input?.minMovableFraction ?? DEFAULT_MIN_MOVABLE_FRACTION,\n\t\tmaxIpcOverheadFraction: input?.maxIpcOverheadFraction ?? DEFAULT_MAX_IPC_OVERHEAD_FRACTION,\n\t\tminProjectedNetSpeedup: input?.minProjectedNetSpeedup ?? DEFAULT_MIN_NET_SPEEDUP,\n\t\tmaxStartupP95Ms: input?.maxStartupP95Ms ?? DEFAULT_MAX_STARTUP_P95_MS,\n\t\tmaxRssDeltaMb: input?.maxRssDeltaMb ?? DEFAULT_MAX_RSS_DELTA_MB,\n\t\tmaxArchiveDeltaMb: input?.maxArchiveDeltaMb ?? DEFAULT_MAX_ARCHIVE_DELTA_MB,\n\t};\n}\n\nfunction classifySourceFile(file: NativeAdoptionSourceFile): NativeAdoptionSourceCategory {\n\tconst normalizedPath = file.path.replaceAll(\"\\\\\", \"/\");\n\tif (normalizedPath.endsWith(\"/src/core/native-adoption-benchmark.ts\")) return \"harness\";\n\tif (normalizedPath.includes(\"/test/bench/\") || normalizedPath.endsWith(\"/test/native-adoption-runner.test.ts\")) {\n\t\treturn \"harness\";\n\t}\n\tif (/\\/(test|tests)\\//.test(normalizedPath) || /\\.test\\.tsx?$/.test(normalizedPath)) return \"test\";\n\tif (normalizedPath.endsWith(\"/context-graph-retrieval.ts\")) return \"definition\";\n\tif (normalizedPath.endsWith(\"/src/index.ts\")) return \"export\";\n\treturn \"runtime\";\n}\n\nfunction countNativeAdoptionReferences(\n\tfile: NativeAdoptionSourceFile,\n\tsymbol: string,\n\tcategory: NativeAdoptionSourceCategory,\n): number {\n\tif (category === \"export\") return countBarrelExportReferences(file, symbol);\n\tif (category === \"definition\") return countDefinitionReferences(file.content, symbol);\n\treturn countCallExpressionReferences(file.content, symbol);\n}\n\nfunction countDefinitionReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\treturn (\n\t\tcontent.match(new RegExp(`(?:export\\\\s+)?(?:function|const|let|var|class)\\\\s+${escaped}\\\\b`, \"g\"))?.length ?? 0\n\t);\n}\n\nfunction countCallExpressionReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\tconst sanitized = stripCommentsAndStrings(content);\n\tconst matches = sanitized.match(new RegExp(`(^|[^\\\\w.$])${escaped}\\\\s*\\\\(`, \"g\"));\n\treturn matches?.length ?? 0;\n}\n\nfunction countSymbolReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\treturn content.match(new RegExp(`\\\\b${escaped}\\\\b`, \"g\"))?.length ?? 0;\n}\n\nfunction countBarrelExportReferences(file: NativeAdoptionSourceFile, symbol: string): number {\n\tconst normalizedPath = file.path.replaceAll(\"\\\\\", \"/\");\n\tif (!normalizedPath.endsWith(\"/src/index.ts\")) return 0;\n\tif (countSymbolReferences(file.content, symbol) > 0) return 0;\n\treturn file.content.includes(\"context-graph-retrieval.ts\") ? 1 : 0;\n}\n\nfunction sumBySymbol(\n\tbySymbol: NativeAdoptionCallsiteSummary[\"bySymbol\"],\n\tkey: \"runtime\" | \"test\" | \"definition\" | \"export\" | \"harness\",\n): number {\n\treturn Object.values(bySymbol).reduce((sum, value) => sum + value[key], 0);\n}\n\nfunction visitNativeAdoptionSecretValue(\n\tvalue: unknown,\n\tpath: string,\n\tfindings: NativeAdoptionSecretScanFinding[],\n\tseen: Set<object>,\n): void {\n\tif (typeof value === \"string\") {\n\t\tfor (const { name, pattern } of SECRET_PATTERNS) {\n\t\t\tif (pattern.test(value)) findings.push({ path, pattern: name });\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value !== \"object\" || value === null) return;\n\tif (seen.has(value)) return;\n\tseen.add(value);\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach((entry, index) => {\n\t\t\tvisitNativeAdoptionSecretValue(entry, `${path}[${index}]`, findings, seen);\n\t\t});\n\t\treturn;\n\t}\n\tfor (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n\t\tvisitNativeAdoptionSecretValue(entry, `${path}.${key}`, findings, seen);\n\t}\n}\n\nfunction findNativeAdoptionImportSpecifiers(content: string): Array<{ specifier: string; statement: string }> {\n\tconst imports: Array<{ specifier: string; statement: string }> = [];\n\tconst sanitized = stripCommentsAndStrings(content, { keepImportSpecifiers: true });\n\tconst importPattern =\n\t\t/\\bimport\\s+(?:type\\s+)?(?:[^\"';]+?\\s+from\\s+)?[\"']([^\"']+)[\"']|\\brequire\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g;\n\tfor (const match of sanitized.matchAll(importPattern)) {\n\t\tconst specifier = match[1] ?? match[2];\n\t\tif (!specifier) continue;\n\t\timports.push({ specifier, statement: match[0] });\n\t}\n\treturn imports;\n}\n\nfunction stripCommentsAndStrings(content: string, options: { keepImportSpecifiers?: boolean } = {}): string {\n\tlet output = \"\";\n\tlet index = 0;\n\tlet state: \"code\" | \"single\" | \"double\" | \"template\" | \"line\" | \"block\" = \"code\";\n\twhile (index < content.length) {\n\t\tconst char = content[index] ?? \"\";\n\t\tconst next = content[index + 1] ?? \"\";\n\t\tif (state === \"code\") {\n\t\t\tif (char === \"/\" && next === \"/\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"line\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"/\" && next === \"*\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"block\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"'\") {\n\t\t\t\toutput += options.keepImportSpecifiers ? char : \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"single\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === '\"') {\n\t\t\t\toutput += options.keepImportSpecifiers ? char : \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"double\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"`\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"template\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\toutput += char;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (state === \"line\") {\n\t\t\toutput += char === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tindex += 1;\n\t\t\tif (char === \"\\n\") state = \"code\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (state === \"block\") {\n\t\t\toutput += char === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tif (char === \"*\" && next === \"/\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"code\";\n\t\t\t} else {\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst quote = state === \"single\" ? \"'\" : state === \"double\" ? '\"' : \"`\";\n\t\toutput += options.keepImportSpecifiers && state !== \"template\" ? char : char === \"\\n\" ? \"\\n\" : \" \";\n\t\tif (char === \"\\\\\") {\n\t\t\tconst escaped = content[index + 1] ?? \"\";\n\t\t\toutput += options.keepImportSpecifiers && state !== \"template\" ? escaped : escaped === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tindex += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tindex += 1;\n\t\tif (char === quote) state = \"code\";\n\t}\n\treturn output;\n}\n\nfunction escapeRegExp(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction round6(value: number): number {\n\treturn Math.round(value * 1_000_000) / 1_000_000;\n}\n\nfunction clamp01(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\tif (value < 0) return 0;\n\tif (value > 1) return 1;\n\treturn value;\n}\n"]}
|