open-multi-agent-kit 0.80.6 → 0.80.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -20
- package/README.md +66 -16
- package/dist/agents/jailbreak/index.d.ts +7 -0
- package/dist/agents/jailbreak/index.d.ts.map +1 -0
- package/dist/agents/jailbreak/index.js +7 -0
- package/dist/agents/jailbreak/index.js.map +1 -0
- package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
- package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
- package/dist/agents/jailbreak/subagent-f.js +60 -0
- package/dist/agents/jailbreak/subagent-f.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js +2 -2
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/ci/verify-reporter.d.ts +22 -0
- package/dist/ci/verify-reporter.d.ts.map +1 -0
- package/dist/ci/verify-reporter.js +50 -0
- package/dist/ci/verify-reporter.js.map +1 -0
- package/dist/cli/args.d.ts +4 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +7 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/jailbreak-args.d.ts +26 -0
- package/dist/cli/jailbreak-args.d.ts.map +1 -0
- package/dist/cli/jailbreak-args.js +86 -0
- package/dist/cli/jailbreak-args.js.map +1 -0
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/commands/doctor-provider.d.ts +19 -0
- package/dist/commands/doctor-provider.d.ts.map +1 -0
- package/dist/commands/doctor-provider.js +123 -0
- package/dist/commands/doctor-provider.js.map +1 -0
- package/dist/commands/jailbreak.d.ts +49 -0
- package/dist/commands/jailbreak.d.ts.map +1 -0
- package/dist/commands/jailbreak.js +201 -0
- package/dist/commands/jailbreak.js.map +1 -0
- package/dist/config.d.ts +9 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -52
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +36 -8
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +294 -14
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +3 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +4 -4
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +2 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/browser-use.d.ts +45 -0
- package/dist/core/browser-use.d.ts.map +1 -0
- package/dist/core/browser-use.js +70 -0
- package/dist/core/browser-use.js.map +1 -0
- package/dist/core/command-safety-parser.d.ts +77 -0
- package/dist/core/command-safety-parser.d.ts.map +1 -0
- package/dist/core/command-safety-parser.js +763 -0
- package/dist/core/command-safety-parser.js.map +1 -0
- package/dist/core/command-safety.d.ts +11 -0
- package/dist/core/command-safety.d.ts.map +1 -0
- package/dist/core/command-safety.js +631 -0
- package/dist/core/command-safety.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +2 -8
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -84
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +11 -608
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -2
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/compactor.d.ts +42 -0
- package/dist/core/compactor.d.ts.map +1 -0
- package/dist/core/compactor.js +131 -0
- package/dist/core/compactor.js.map +1 -0
- package/dist/core/context-budget-compressors.d.ts +50 -0
- package/dist/core/context-budget-compressors.d.ts.map +1 -0
- package/dist/core/context-budget-compressors.js +166 -0
- package/dist/core/context-budget-compressors.js.map +1 -0
- package/dist/core/context-budget-governor-v2.d.ts +7 -0
- package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
- package/dist/core/context-budget-governor-v2.js +7 -0
- package/dist/core/context-budget-governor-v2.js.map +1 -0
- package/dist/core/context-budget-governor.d.ts +67 -0
- package/dist/core/context-budget-governor.d.ts.map +1 -0
- package/dist/core/context-budget-governor.js +224 -0
- package/dist/core/context-budget-governor.js.map +1 -0
- package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
- package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-candidates.js +85 -0
- package/dist/core/context-budget-headroom-candidates.js.map +1 -0
- package/dist/core/context-budget-headroom-types.d.ts +67 -0
- package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
- package/dist/core/context-budget-headroom-types.js +46 -0
- package/dist/core/context-budget-headroom-types.js.map +1 -0
- package/dist/core/context-budget-headroom.d.ts +5 -0
- package/dist/core/context-budget-headroom.d.ts.map +1 -0
- package/dist/core/context-budget-headroom.js +123 -0
- package/dist/core/context-budget-headroom.js.map +1 -0
- package/dist/core/context-budget-relevance.d.ts +46 -0
- package/dist/core/context-budget-relevance.d.ts.map +1 -0
- package/dist/core/context-budget-relevance.js +329 -0
- package/dist/core/context-budget-relevance.js.map +1 -0
- package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
- package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt-items.js +143 -0
- package/dist/core/context-budget-system-prompt-items.js.map +1 -0
- package/dist/core/context-budget-system-prompt.d.ts +31 -0
- package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
- package/dist/core/context-budget-system-prompt.js +87 -0
- package/dist/core/context-budget-system-prompt.js.map +1 -0
- package/dist/core/context-budget-token-counter.d.ts +34 -0
- package/dist/core/context-budget-token-counter.d.ts.map +1 -0
- package/dist/core/context-budget-token-counter.js +315 -0
- package/dist/core/context-budget-token-counter.js.map +1 -0
- package/dist/core/context-budget-v2-coverage.d.ts +5 -0
- package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
- package/dist/core/context-budget-v2-coverage.js +58 -0
- package/dist/core/context-budget-v2-coverage.js.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
- package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
- package/dist/core/context-budget-v2-plan-hash.js +38 -0
- package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
- package/dist/core/context-budget-v2-planner.d.ts +3 -0
- package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
- package/dist/core/context-budget-v2-planner.js +143 -0
- package/dist/core/context-budget-v2-planner.js.map +1 -0
- package/dist/core/context-budget-v2-scoring.d.ts +14 -0
- package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
- package/dist/core/context-budget-v2-scoring.js +114 -0
- package/dist/core/context-budget-v2-scoring.js.map +1 -0
- package/dist/core/context-budget-v2-selection.d.ts +32 -0
- package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
- package/dist/core/context-budget-v2-selection.js +158 -0
- package/dist/core/context-budget-v2-selection.js.map +1 -0
- package/dist/core/context-budget-v2-tiers.d.ts +15 -0
- package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
- package/dist/core/context-budget-v2-tiers.js +68 -0
- package/dist/core/context-budget-v2-tiers.js.map +1 -0
- package/dist/core/context-budget-v2-types.d.ts +92 -0
- package/dist/core/context-budget-v2-types.d.ts.map +1 -0
- package/dist/core/context-budget-v2-types.js +24 -0
- package/dist/core/context-budget-v2-types.js.map +1 -0
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/diagnostics.d.ts +4 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/domain-confidence.d.ts +9 -0
- package/dist/core/domain-confidence.d.ts.map +1 -0
- package/dist/core/domain-confidence.js +39 -0
- package/dist/core/domain-confidence.js.map +1 -0
- package/dist/core/domain-dispatch.d.ts +44 -0
- package/dist/core/domain-dispatch.d.ts.map +1 -0
- package/dist/core/domain-dispatch.js +118 -0
- package/dist/core/domain-dispatch.js.map +1 -0
- package/dist/core/domain-loadouts.d.ts +76 -0
- package/dist/core/domain-loadouts.d.ts.map +1 -0
- package/dist/core/domain-loadouts.js +981 -0
- package/dist/core/domain-loadouts.js.map +1 -0
- package/dist/core/domain-registry.d.ts +7 -0
- package/dist/core/domain-registry.d.ts.map +1 -0
- package/dist/core/domain-registry.js +11 -0
- package/dist/core/domain-registry.js.map +1 -0
- package/dist/core/domain-router.d.ts +16 -0
- package/dist/core/domain-router.d.ts.map +1 -0
- package/dist/core/domain-router.js +24 -0
- package/dist/core/domain-router.js.map +1 -0
- package/dist/core/domain-score.d.ts +13 -0
- package/dist/core/domain-score.d.ts.map +1 -0
- package/dist/core/domain-score.js +48 -0
- package/dist/core/domain-score.js.map +1 -0
- package/dist/core/domain-trigger-match.d.ts +14 -0
- package/dist/core/domain-trigger-match.d.ts.map +1 -0
- package/dist/core/domain-trigger-match.js +51 -0
- package/dist/core/domain-trigger-match.js.map +1 -0
- package/dist/core/domain-types.d.ts +30 -0
- package/dist/core/domain-types.d.ts.map +1 -0
- package/dist/core/domain-types.js +2 -0
- package/dist/core/domain-types.js.map +1 -0
- package/dist/core/exact-cache-policy.d.ts +108 -0
- package/dist/core/exact-cache-policy.d.ts.map +1 -0
- package/dist/core/exact-cache-policy.js +184 -0
- package/dist/core/exact-cache-policy.js.map +1 -0
- package/dist/core/export-html/index.d.ts +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.js +2 -4
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/builtin/command-safety-gate.d.ts +80 -0
- package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -0
- package/dist/core/extensions/builtin/command-safety-gate.js +159 -0
- package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -0
- package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
- package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todo-checklist.js +70 -0
- package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +50 -47
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +13 -13
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/headroom.d.ts +45 -0
- package/dist/core/headroom.d.ts.map +1 -0
- package/dist/core/headroom.js +171 -0
- package/dist/core/headroom.js.map +1 -0
- package/dist/core/hook-inventory.d.ts +25 -0
- package/dist/core/hook-inventory.d.ts.map +1 -0
- package/dist/core/hook-inventory.js +119 -0
- package/dist/core/hook-inventory.js.map +1 -0
- package/dist/core/hooks/fail-closed.d.ts +4 -1
- package/dist/core/hooks/fail-closed.d.ts.map +1 -1
- package/dist/core/hooks/fail-closed.js +79 -5
- package/dist/core/hooks/fail-closed.js.map +1 -1
- package/dist/core/hooks/index.d.ts +2 -2
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js +1 -1
- package/dist/core/hooks/index.js.map +1 -1
- package/dist/core/hooks/types.d.ts +9 -0
- package/dist/core/hooks/types.d.ts.map +1 -1
- package/dist/core/hooks/types.js.map +1 -1
- package/dist/core/keybindings.d.ts +2 -14
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -31
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/lean-ctx.d.ts +99 -0
- package/dist/core/lean-ctx.d.ts.map +1 -0
- package/dist/core/lean-ctx.js +225 -0
- package/dist/core/lean-ctx.js.map +1 -0
- package/dist/core/loadout-access-policy.d.ts +41 -0
- package/dist/core/loadout-access-policy.d.ts.map +1 -0
- package/dist/core/loadout-access-policy.js +182 -0
- package/dist/core/loadout-access-policy.js.map +1 -0
- package/dist/core/loadout-compose.d.ts +53 -0
- package/dist/core/loadout-compose.d.ts.map +1 -0
- package/dist/core/loadout-compose.js +172 -0
- package/dist/core/loadout-compose.js.map +1 -0
- package/dist/core/loadout-policy-bridge.d.ts +22 -0
- package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
- package/dist/core/loadout-policy-bridge.js +52 -0
- package/dist/core/loadout-policy-bridge.js.map +1 -0
- package/dist/core/loadout-runtime.d.ts +106 -0
- package/dist/core/loadout-runtime.d.ts.map +1 -0
- package/dist/core/loadout-runtime.js +193 -0
- package/dist/core/loadout-runtime.js.map +1 -0
- package/dist/core/loadout-safety.d.ts +55 -0
- package/dist/core/loadout-safety.d.ts.map +1 -0
- package/dist/core/loadout-safety.js +213 -0
- package/dist/core/loadout-safety.js.map +1 -0
- package/dist/core/loadouts.d.ts +149 -0
- package/dist/core/loadouts.d.ts.map +1 -0
- package/dist/core/loadouts.js +553 -0
- package/dist/core/loadouts.js.map +1 -0
- package/dist/core/loop-gates.d.ts +48 -0
- package/dist/core/loop-gates.d.ts.map +1 -0
- package/dist/core/loop-gates.js +352 -0
- package/dist/core/loop-gates.js.map +1 -0
- package/dist/core/loop-registry.d.ts +77 -0
- package/dist/core/loop-registry.d.ts.map +1 -0
- package/dist/core/loop-registry.js +831 -0
- package/dist/core/loop-registry.js.map +1 -0
- package/dist/core/loop-types.d.ts +194 -0
- package/dist/core/loop-types.d.ts.map +1 -0
- package/dist/core/loop-types.js +2 -0
- package/dist/core/loop-types.js.map +1 -0
- package/dist/core/mcp-inventory.d.ts +41 -0
- package/dist/core/mcp-inventory.d.ts.map +1 -1
- package/dist/core/mcp-inventory.js +57 -1
- package/dist/core/mcp-inventory.js.map +1 -1
- package/dist/core/mcp-presets.d.ts +98 -0
- package/dist/core/mcp-presets.d.ts.map +1 -0
- package/dist/core/mcp-presets.js +377 -0
- package/dist/core/mcp-presets.js.map +1 -0
- package/dist/core/messages.d.ts +3 -3
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/metrics-sampler.d.ts +11 -0
- package/dist/core/metrics-sampler.d.ts.map +1 -1
- package/dist/core/metrics-sampler.js +52 -13
- package/dist/core/metrics-sampler.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-gallery-identity.d.ts +7 -0
- package/dist/core/package-gallery-identity.d.ts.map +1 -0
- package/dist/core/package-gallery-identity.js +31 -0
- package/dist/core/package-gallery-identity.js.map +1 -0
- package/dist/core/package-gallery-install.d.ts +6 -0
- package/dist/core/package-gallery-install.d.ts.map +1 -0
- package/dist/core/package-gallery-install.js +59 -0
- package/dist/core/package-gallery-install.js.map +1 -0
- package/dist/core/package-gallery-manifest.d.ts +13 -0
- package/dist/core/package-gallery-manifest.d.ts.map +1 -0
- package/dist/core/package-gallery-manifest.js +183 -0
- package/dist/core/package-gallery-manifest.js.map +1 -0
- package/dist/core/package-gallery-trial.d.ts +4 -0
- package/dist/core/package-gallery-trial.d.ts.map +1 -0
- package/dist/core/package-gallery-trial.js +55 -0
- package/dist/core/package-gallery-trial.js.map +1 -0
- package/dist/core/package-gallery-types.d.ts +71 -0
- package/dist/core/package-gallery-types.d.ts.map +1 -0
- package/dist/core/package-gallery-types.js +2 -0
- package/dist/core/package-gallery-types.js.map +1 -0
- package/dist/core/package-gallery.d.ts +6 -0
- package/dist/core/package-gallery.d.ts.map +1 -0
- package/dist/core/package-gallery.js +6 -0
- package/dist/core/package-gallery.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +10 -10
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-procurement.d.ts +268 -0
- package/dist/core/package-procurement.d.ts.map +1 -0
- package/dist/core/package-procurement.js +709 -0
- package/dist/core/package-procurement.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/read-anchors.d.ts +110 -0
- package/dist/core/read-anchors.d.ts.map +1 -0
- package/dist/core/read-anchors.js +193 -0
- package/dist/core/read-anchors.js.map +1 -0
- package/dist/core/recovery-checkpoint.d.ts +196 -0
- package/dist/core/recovery-checkpoint.d.ts.map +1 -0
- package/dist/core/recovery-checkpoint.js +382 -0
- package/dist/core/recovery-checkpoint.js.map +1 -0
- package/dist/core/resource-loader.d.ts +15 -21
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +62 -8
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sandbox/backend.d.ts +25 -0
- package/dist/core/sandbox/backend.d.ts.map +1 -0
- package/dist/core/sandbox/backend.js +150 -0
- package/dist/core/sandbox/backend.js.map +1 -0
- package/dist/core/sandbox/env.d.ts +6 -0
- package/dist/core/sandbox/env.d.ts.map +1 -0
- package/dist/core/sandbox/env.js +46 -0
- package/dist/core/sandbox/env.js.map +1 -0
- package/dist/core/sandbox/path-resolver.d.ts +4 -0
- package/dist/core/sandbox/path-resolver.d.ts.map +1 -0
- package/dist/core/sandbox/path-resolver.js +44 -0
- package/dist/core/sandbox/path-resolver.js.map +1 -0
- package/dist/core/sandbox/policy.d.ts +87 -0
- package/dist/core/sandbox/policy.d.ts.map +1 -0
- package/dist/core/sandbox/policy.js +280 -0
- package/dist/core/sandbox/policy.js.map +1 -0
- package/dist/core/sandbox/spawn.d.ts +20 -0
- package/dist/core/sandbox/spawn.d.ts.map +1 -0
- package/dist/core/sandbox/spawn.js +80 -0
- package/dist/core/sandbox/spawn.js.map +1 -0
- package/dist/core/sandbox-policy-v2.d.ts +49 -0
- package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
- package/dist/core/sandbox-policy-v2.js +368 -0
- package/dist/core/sandbox-policy-v2.js.map +1 -0
- package/dist/core/sdk.d.ts +15 -4
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +50 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/semantic-cache-policy.d.ts +51 -0
- package/dist/core/semantic-cache-policy.d.ts.map +1 -0
- package/dist/core/semantic-cache-policy.js +228 -0
- package/dist/core/semantic-cache-policy.js.map +1 -0
- package/dist/core/session-manager.d.ts +2 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -4
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +2 -7
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +1 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +46 -5
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-orchestration.d.ts +73 -0
- package/dist/core/subagent-orchestration.d.ts.map +1 -0
- package/dist/core/subagent-orchestration.js +408 -0
- package/dist/core/subagent-orchestration.js.map +1 -0
- package/dist/core/system-prompt.d.ts +5 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +63 -24
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js +1 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.d.ts +0 -4
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +1 -5
- package/dist/core/timings.js.map +1 -1
- package/dist/core/todo-state.d.ts +53 -0
- package/dist/core/todo-state.d.ts.map +1 -0
- package/dist/core/todo-state.js +87 -0
- package/dist/core/todo-state.js.map +1 -0
- package/dist/core/token-optimizer.d.ts +58 -0
- package/dist/core/token-optimizer.d.ts.map +1 -0
- package/dist/core/token-optimizer.js +179 -0
- package/dist/core/token-optimizer.js.map +1 -0
- package/dist/core/tools/bash.d.ts +28 -4
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +55 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +1 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/read.d.ts +2 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +6 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.d.ts +2 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +4 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/encoding/index.d.ts +6 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +6 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/encoding/l4-encoder.d.ts +96 -0
- package/dist/encoding/l4-encoder.d.ts.map +1 -0
- package/dist/encoding/l4-encoder.js +474 -0
- package/dist/encoding/l4-encoder.js.map +1 -0
- package/dist/fuzzing/index.d.ts +6 -0
- package/dist/fuzzing/index.d.ts.map +1 -0
- package/dist/fuzzing/index.js +6 -0
- package/dist/fuzzing/index.js.map +1 -0
- package/dist/fuzzing/mutation-engine.d.ts +93 -0
- package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
- package/dist/fuzzing/mutation-engine.js +244 -0
- package/dist/fuzzing/mutation-engine.js.map +1 -0
- package/dist/guardrails/audit-logger.d.ts +4 -0
- package/dist/guardrails/audit-logger.d.ts.map +1 -0
- package/dist/guardrails/audit-logger.js +28 -0
- package/dist/guardrails/audit-logger.js.map +1 -0
- package/dist/guardrails/evidence-system.d.ts +61 -0
- package/dist/guardrails/evidence-system.d.ts.map +1 -0
- package/dist/guardrails/evidence-system.js +302 -0
- package/dist/guardrails/evidence-system.js.map +1 -0
- package/dist/guardrails/freedomd-adapter.d.ts +16 -0
- package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
- package/dist/guardrails/freedomd-adapter.js +87 -0
- package/dist/guardrails/freedomd-adapter.js.map +1 -0
- package/dist/jailbreak-extension.d.ts +48 -0
- package/dist/jailbreak-extension.d.ts.map +1 -0
- package/dist/jailbreak-extension.js +47 -0
- package/dist/jailbreak-extension.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -8
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +0 -37
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +6 -414
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
- package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-box.js +55 -0
- package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts +28 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.js +112 -0
- package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts +28 -0
- package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-gradient.js +128 -0
- package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
- package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-layout.js +165 -0
- package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
- package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
- package/dist/modes/interactive/components/control-panel.d.ts +24 -20
- package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
- package/dist/modes/interactive/components/control-panel.js +88 -69
- package/dist/modes/interactive/components/control-panel.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +14 -22
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js +2 -2
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +2 -2
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +0 -2
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -2
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +2 -2
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +4 -4
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +20 -42
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -7
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
- package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
- package/dist/modes/interactive/components/todo-checklist.js +121 -0
- package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -8
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +79 -189
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
- package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
- package/dist/modes/interactive/theme/rust-forge.json +14 -24
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +22 -31
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +3 -3
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +2 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modules/index.d.ts +8 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +7 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/lrl-bypass.d.ts +40 -0
- package/dist/modules/lrl-bypass.d.ts.map +1 -0
- package/dist/modules/lrl-bypass.js +84 -0
- package/dist/modules/lrl-bypass.js.map +1 -0
- package/dist/modules/lrl-deps.d.ts +38 -0
- package/dist/modules/lrl-deps.d.ts.map +1 -0
- package/dist/modules/lrl-deps.js +128 -0
- package/dist/modules/lrl-deps.js.map +1 -0
- package/dist/multiturn/easl-chain.d.ts +113 -0
- package/dist/multiturn/easl-chain.d.ts.map +1 -0
- package/dist/multiturn/easl-chain.js +351 -0
- package/dist/multiturn/easl-chain.js.map +1 -0
- package/dist/multiturn/index.d.ts +6 -0
- package/dist/multiturn/index.d.ts.map +1 -0
- package/dist/multiturn/index.js +6 -0
- package/dist/multiturn/index.js.map +1 -0
- package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
- package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
- package/dist/orchestration/lane-grant-auditor.js +87 -0
- package/dist/orchestration/lane-grant-auditor.js.map +1 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +3 -3
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/routing/fallback-router.d.ts +123 -0
- package/dist/routing/fallback-router.d.ts.map +1 -0
- package/dist/routing/fallback-router.js +355 -0
- package/dist/routing/fallback-router.js.map +1 -0
- package/dist/routing/index.d.ts +6 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +6 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/types/evidence.d.ts +117 -0
- package/dist/types/evidence.d.ts.map +1 -0
- package/dist/types/evidence.js +8 -0
- package/dist/types/evidence.js.map +1 -0
- package/dist/types/guardrails.d.ts +61 -0
- package/dist/types/guardrails.d.ts.map +1 -0
- package/dist/types/guardrails.js +9 -0
- package/dist/types/guardrails.js.map +1 -0
- package/dist/types/jailbreak.d.ts +246 -0
- package/dist/types/jailbreak.d.ts.map +1 -0
- package/dist/types/jailbreak.js +8 -0
- package/dist/types/jailbreak.js.map +1 -0
- package/dist/types/lane-grant.d.ts +58 -0
- package/dist/types/lane-grant.d.ts.map +1 -0
- package/dist/types/lane-grant.js +9 -0
- package/dist/types/lane-grant.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/jailbreak/common.d.ts +63 -0
- package/dist/utils/jailbreak/common.d.ts.map +1 -0
- package/dist/utils/jailbreak/common.js +130 -0
- package/dist/utils/jailbreak/common.js.map +1 -0
- package/dist/utils/jailbreak/index.d.ts +7 -0
- package/dist/utils/jailbreak/index.d.ts.map +1 -0
- package/dist/utils/jailbreak/index.js +7 -0
- package/dist/utils/jailbreak/index.js.map +1 -0
- package/dist/utils/omk-user-agent.d.ts +2 -0
- package/dist/utils/omk-user-agent.d.ts.map +1 -0
- package/dist/utils/{pi-user-agent.js → omk-user-agent.js} +2 -2
- package/dist/utils/omk-user-agent.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +5 -5
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +8 -11
- package/dist/utils/version-check.js.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/dist/utils/windows-self-update.js +1 -1
- package/dist/utils/windows-self-update.js.map +1 -1
- package/docs/compaction.md +8 -21
- package/docs/custom-provider.md +2 -2
- package/docs/development.md +1 -1
- package/docs/extensions.md +11 -11
- package/docs/loadout-domains/README.md +70 -0
- package/docs/loadout-domains/ai-agent-ops.md +94 -0
- package/docs/loadout-domains/backend-api.md +116 -0
- package/docs/loadout-domains/data-science.md +100 -0
- package/docs/loadout-domains/devops-infra.md +85 -0
- package/docs/loadout-domains/docs-writing.md +92 -0
- package/docs/loadout-domains/frontend-ui.md +128 -0
- package/docs/loadout-domains/general.md +62 -0
- package/docs/loadout-domains/mobile.md +84 -0
- package/docs/loadout-domains/qa-testing.md +87 -0
- package/docs/loadout-domains/research.md +80 -0
- package/docs/loadout-domains/security-audit.md +97 -0
- package/docs/packages.md +1 -1
- package/docs/sdk.md +3 -3
- package/docs/security.md +145 -0
- package/docs/session-format.md +1 -1
- package/docs/themes.md +8 -7
- package/docs/tui.md +14 -14
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +12 -12
- package/examples/extensions/aside-computer-use/README.md +114 -0
- package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
- package/examples/extensions/aside-computer-use/assertions.ts +380 -0
- package/examples/extensions/aside-computer-use/controller.ts +491 -0
- package/examples/extensions/aside-computer-use/evidence.ts +229 -0
- package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
- package/examples/extensions/aside-computer-use/index.ts +76 -0
- package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
- package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
- package/examples/extensions/aside-computer-use/package.json +16 -0
- package/examples/extensions/aside-computer-use/policy.ts +257 -0
- package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
- package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
- package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
- package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
- package/examples/extensions/aside-computer-use/tools.ts +449 -0
- package/examples/extensions/aside-computer-use/types.ts +217 -0
- package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
- package/examples/extensions/auto-commit-on-exit.ts +6 -6
- package/examples/extensions/bash-spawn-hook.ts +3 -3
- package/examples/extensions/bookmark.ts +5 -5
- package/examples/extensions/border-status-editor.ts +9 -9
- package/examples/extensions/built-in-tool-renderer.ts +7 -7
- package/examples/extensions/claude-rules.ts +4 -4
- package/examples/extensions/commands.ts +5 -5
- package/examples/extensions/confirm-destructive.ts +3 -3
- package/examples/extensions/custom-compaction.ts +4 -4
- package/examples/extensions/custom-footer.ts +4 -4
- package/examples/extensions/custom-header.ts +11 -11
- package/examples/extensions/custom-provider-anthropic/index.ts +5 -5
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +4 -4
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/dirty-repo-guard.ts +7 -7
- package/examples/extensions/doom-overlay/README.md +2 -3
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +4 -4
- package/examples/extensions/doom-overlay/doom/{doomgeneric_pi.c → doomgeneric_omk.c} +1 -1
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/doom-overlay/index.ts +3 -3
- package/examples/extensions/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/dynamic-resources/index.ts +2 -2
- package/examples/extensions/dynamic-tools.ts +4 -4
- package/examples/extensions/event-bus.ts +8 -8
- package/examples/extensions/file-trigger.ts +3 -3
- package/examples/extensions/git-checkpoint.ts +7 -7
- package/examples/extensions/git-merge-and-resolve.ts +14 -14
- package/examples/extensions/github-issue-autocomplete.ts +7 -12
- package/examples/extensions/gondolin/index.ts +16 -16
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +4 -4
- package/examples/extensions/hello.ts +3 -3
- package/examples/extensions/hidden-thinking-label.ts +4 -4
- package/examples/extensions/inline-bash.ts +5 -5
- package/examples/extensions/input-transform-streaming.ts +5 -5
- package/examples/extensions/input-transform.ts +5 -5
- package/examples/extensions/interactive-shell.ts +3 -3
- package/examples/extensions/mac-system-theme.ts +5 -5
- package/examples/extensions/message-renderer.ts +5 -5
- package/examples/extensions/minimal-mode.ts +10 -10
- package/examples/extensions/modal-editor.ts +4 -4
- package/examples/extensions/model-status.ts +3 -3
- package/examples/extensions/notify.ts +5 -5
- package/examples/extensions/overlay-qa-tests.ts +22 -22
- package/examples/extensions/overlay-test.ts +4 -4
- package/examples/extensions/permission-gate.ts +2 -2
- package/examples/extensions/pirate.ts +4 -4
- package/examples/extensions/plan-mode/index.ts +25 -25
- package/examples/extensions/preset.ts +31 -31
- package/examples/extensions/prompt-customizer.ts +3 -3
- package/examples/extensions/protected-paths.ts +2 -2
- package/examples/extensions/provider-payload.ts +8 -5
- package/examples/extensions/qna.ts +3 -3
- package/examples/extensions/question.ts +3 -3
- package/examples/extensions/questionnaire.ts +3 -3
- package/examples/extensions/rainbow-editor.ts +3 -3
- package/examples/extensions/reload-runtime.ts +4 -4
- package/examples/extensions/rpc-demo.ts +10 -10
- package/examples/extensions/sandbox/index.ts +16 -16
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/send-user-message.ts +13 -13
- package/examples/extensions/session-name.ts +4 -4
- package/examples/extensions/shutdown-command.ts +10 -10
- package/examples/extensions/snake.ts +4 -4
- package/examples/extensions/space-invaders.ts +4 -4
- package/examples/extensions/ssh.ts +12 -12
- package/examples/extensions/status-line.ts +4 -4
- package/examples/extensions/structured-output.ts +3 -3
- package/examples/extensions/subagent/README.md +13 -13
- package/examples/extensions/subagent/agents.ts +1 -1
- package/examples/extensions/subagent/index.ts +13 -13
- package/examples/extensions/summarize.ts +4 -4
- package/examples/extensions/system-prompt-header.ts +3 -3
- package/examples/extensions/tic-tac-toe.ts +17 -17
- package/examples/extensions/timed-confirm.ts +4 -4
- package/examples/extensions/titlebar-spinner.ts +9 -9
- package/examples/extensions/todo.ts +7 -7
- package/examples/extensions/tool-override.ts +6 -6
- package/examples/extensions/tools.ts +11 -11
- package/examples/extensions/trigger-compact.ts +3 -3
- package/examples/extensions/truncated-tool.ts +4 -4
- package/examples/extensions/widget-placement.ts +2 -2
- package/examples/extensions/with-deps/index.ts +2 -2
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +7 -7
- package/examples/extensions/working-message-test.ts +3 -3
- package/examples/rpc-extension-ui.ts +1 -9
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/03-custom-prompt.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/05-tools.ts +1 -1
- package/examples/sdk/06-extensions.ts +11 -11
- package/examples/sdk/08-prompt-templates.ts +1 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +3 -3
- package/npm-shrinkwrap.json +1805 -0
- package/package.json +8 -14
- package/dist/core/harness-control-events.d.ts +0 -79
- package/dist/core/harness-control-events.d.ts.map +0 -1
- package/dist/core/harness-control-events.js +0 -339
- package/dist/core/harness-control-events.js.map +0 -1
- package/dist/core/harness-control-replay.d.ts +0 -26
- package/dist/core/harness-control-replay.d.ts.map +0 -1
- package/dist/core/harness-control-replay.js +0 -155
- package/dist/core/harness-control-replay.js.map +0 -1
- package/dist/core/spec-kit/compiler.d.ts +0 -67
- package/dist/core/spec-kit/compiler.d.ts.map +0 -1
- package/dist/core/spec-kit/compiler.js +0 -268
- package/dist/core/spec-kit/compiler.js.map +0 -1
- package/dist/core/transaction-coordinator.d.ts +0 -30
- package/dist/core/transaction-coordinator.d.ts.map +0 -1
- package/dist/core/transaction-coordinator.js +0 -173
- package/dist/core/transaction-coordinator.js.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.d.ts +0 -28
- package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/mcp-selector.js +0 -138
- package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
- package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
- package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/skills-selector.js +0 -130
- package/dist/modes/interactive/components/skills-selector.js.map +0 -1
- package/dist/utils/pi-user-agent.d.ts +0 -2
- package/dist/utils/pi-user-agent.d.ts.map +0 -1
- package/dist/utils/pi-user-agent.js.map +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# OMK ↔ Aside Computer-Use Bridge
|
|
2
|
+
|
|
3
|
+
A security-gated extension that lets the OMK agent drive an [Aside](https://aside.com)
|
|
4
|
+
Chromium browser via `aside mcp` (JSON-RPC over stdio). **Aside does the browser
|
|
5
|
+
execution; OMK does the planning, policy, approval, and evidence-gated completion.**
|
|
6
|
+
|
|
7
|
+
> The Aside binary is **not** bundled. Install it yourself (`aside` must be on
|
|
8
|
+
> `PATH`). This extension never auto-installs third-party software.
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
OMK Agent (LLM planner)
|
|
14
|
+
│ tool calls (observe / execute_action / verify / ...)
|
|
15
|
+
▼
|
|
16
|
+
aside-computer-use extension ← policy · risk · origin · approval · redact · evidence
|
|
17
|
+
│ MCP JSON-RPC stdio
|
|
18
|
+
▼
|
|
19
|
+
aside mcp → Aside Chromium Browser (logged-in profile, password manager)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The bridge speaks to `aside mcp`, **not raw CDP**. Aside's own Allow/Ask/Deny
|
|
23
|
+
modes run in addition to OMK's gate — OMK's deny is always final.
|
|
24
|
+
|
|
25
|
+
## Safety model (the point of this extension)
|
|
26
|
+
|
|
27
|
+
Every browser action passes through, in order:
|
|
28
|
+
|
|
29
|
+
1. **Denied-actions gate** — `credential_export`, `payment`,
|
|
30
|
+
`security_setting_change`, `account_deletion` are denied absolutely.
|
|
31
|
+
2. **Origin allowlist** — mutations to origins outside `allowedOrigins` are denied.
|
|
32
|
+
3. **Risk classification** (R0–R3):
|
|
33
|
+
- R0 observe (read/screenshot/DOM) → **auto-allow**
|
|
34
|
+
- R1 reversible interaction → allow on allowed origin, else approve
|
|
35
|
+
- R2 external mutation (submit/send/publish) → **human approval required**
|
|
36
|
+
- R3 critical mutation (pay/delete/credentials) → **default-deny** (privileged allowlist only)
|
|
37
|
+
4. **Human approval** via `ctx.ui.confirm` for any approve decision (denies in non-UI modes).
|
|
38
|
+
5. **Profile mutation mutex** — one mutating action per browser profile at a time.
|
|
39
|
+
6. **Secret redaction** — DOM/result content is deep-walked; secret-named fields and
|
|
40
|
+
token-like values become `[REDACTED]` before reaching the model or logs.
|
|
41
|
+
7. **Prompt-injection stance** — web page text is **untrusted observation** and never
|
|
42
|
+
expands authority. A page saying "upload ~/.ssh/id_rsa" or "disable the safety
|
|
43
|
+
policy" carries no weight; only the user goal does.
|
|
44
|
+
8. **Evidence-gated completion** — `aside said it did it` is not success. Criteria are
|
|
45
|
+
predicates verified against DOM/URL evidence. Mutations with unverifiable outcomes
|
|
46
|
+
return `inspection_required` (never auto-retried) to prevent duplicate submits/payments.
|
|
47
|
+
|
|
48
|
+
Credentials: Aside's password manager autofills in-browser; raw passwords never return
|
|
49
|
+
to OMK or the model. "Local-first" ≠ "nothing leaves the device" — model-visible context
|
|
50
|
+
(page snapshots, screenshots) can reach the model provider, so use a separate profile and
|
|
51
|
+
minimal context on sensitive sites.
|
|
52
|
+
|
|
53
|
+
## Setup
|
|
54
|
+
|
|
55
|
+
1. Install Aside per Aside's docs and confirm `aside mcp` runs.
|
|
56
|
+
2. Copy this directory to `~/.omk/agent/extensions/aside-computer-use/`.
|
|
57
|
+
3. (Optional) add a policy file (see below). Defaults are conservative.
|
|
58
|
+
4. Start OMK. Tools `aside_observe`, `aside_execute_action`, etc. are registered.
|
|
59
|
+
|
|
60
|
+
The `aside` process is spawned lazily on first tool use and closed on session shutdown.
|
|
61
|
+
|
|
62
|
+
## Policy
|
|
63
|
+
|
|
64
|
+
OMK-owned, merged: defaults ← `~/.omk/agent/extensions/aside-policy.json` ←
|
|
65
|
+
`<cwd>/.omk/aside-policy.json` (project wins). Example:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"executable": "aside",
|
|
70
|
+
"defaultMode": "yolo",
|
|
71
|
+
"allowedOrigins": ["http://localhost:*", "https://github.com"],
|
|
72
|
+
"deniedActions": ["credential_export", "payment", "security_setting_change", "account_deletion"],
|
|
73
|
+
"approvalRequiredActions": ["submit", "send_message", "publish", "delete", "change_permission"],
|
|
74
|
+
"limits": { "maxSteps": 80, "maxRetries": 2, "maxWallTimeSeconds": 900, "maxDownloads": 10 },
|
|
75
|
+
"evidence": { "captureFinalScreenshot": true, "recordFinalUrl": true, "hashDownloadedFiles": true }
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`/aside` shows the active policy.
|
|
80
|
+
|
|
81
|
+
## Tools
|
|
82
|
+
|
|
83
|
+
| Tool | Purpose |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `aside_observe` | R0 read-only page state (URL/title/text) |
|
|
86
|
+
| `aside_plan_action` | Preview an action's risk band + authorization **without** executing |
|
|
87
|
+
| `aside_execute_action` | Gate + execute one action (risk → origin → approval → lock → redact → evidence) |
|
|
88
|
+
| `aside_verify` | Check success criteria against the current observation |
|
|
89
|
+
| `aside_take_screenshot` | R0 capture, save to evidence dir with sha256 |
|
|
90
|
+
| `aside_download_artifact` | Gated download, hash for integrity |
|
|
91
|
+
| `aside_start_task` | observe → scripted plan → gated execute loop |
|
|
92
|
+
| `aside_close_task` | Gracefully close the Aside MCP process |
|
|
93
|
+
|
|
94
|
+
The agent (LLM) is the planner. It calls these tools; the extension applies the full
|
|
95
|
+
safety gate on every action — matching Algorithm 2's loop while fitting OMK's tool-call model.
|
|
96
|
+
|
|
97
|
+
## Module layout
|
|
98
|
+
|
|
99
|
+
| File | Role |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `index.ts` | Entry: load policy, lazy client, register tools + `/aside`, shutdown close |
|
|
102
|
+
| `policy.ts` | `AsidePolicy`, defaults, load + merge |
|
|
103
|
+
| `risk-classifier.ts` | action → R0..R3 band (pure) |
|
|
104
|
+
| `risk-authorize.ts` | (action, risk, policy) → allow/approve/deny (pure) |
|
|
105
|
+
| `url-origin.ts` | origin resolution + glob/port-wildcard matching (pure) |
|
|
106
|
+
| `schema-fingerprint.ts` | MCP tool inputSchema drift detection (pure) |
|
|
107
|
+
| `evidence.ts` | `redactSecrets`, file hashing, evidence builders |
|
|
108
|
+
| `session-binding.ts` | OMK↔Aside binding store + per-profile mutex |
|
|
109
|
+
| `mcp-client.ts` | JSON-RPC stdio client (initialize/list/call, lazy spawn, graceful close) |
|
|
110
|
+
| `controller.ts` | Algorithm 2 policy-gated loop (mockable ports) |
|
|
111
|
+
| `tools.ts` | 8-tool facade over client + gate |
|
|
112
|
+
|
|
113
|
+
Pure safety modules have unit tests (`packages/coding-agent/test/aside-*.test.ts`); the
|
|
114
|
+
controller is tested with mock ports — no real Aside binary or browser required.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic candidate action scoring for Aside planner proposals.
|
|
3
|
+
*
|
|
4
|
+
* Pure module — no I/O, no controller/tool coupling.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ActionScoringConfidence, BrowserAction, PlannedActionCandidate, RiskLevel } from "./types.ts";
|
|
8
|
+
|
|
9
|
+
const RISK_THRESHOLDS: Readonly<Record<RiskLevel, number>> = {
|
|
10
|
+
R0: 0.5,
|
|
11
|
+
R1: 0.65,
|
|
12
|
+
R2: 0.85,
|
|
13
|
+
R3: 0.95,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const AMBIGUOUS_DELTA = 0.1;
|
|
17
|
+
|
|
18
|
+
export interface ScoredActionCandidate {
|
|
19
|
+
readonly candidate: PlannedActionCandidate;
|
|
20
|
+
readonly total: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ActionCandidateSelection {
|
|
24
|
+
readonly status: ActionScoringConfidence;
|
|
25
|
+
readonly selected?: ScoredActionCandidate;
|
|
26
|
+
readonly scored: readonly ScoredActionCandidate[];
|
|
27
|
+
readonly reason: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function clampScore(value: number | undefined): number {
|
|
31
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return 0;
|
|
32
|
+
return Math.max(0, Math.min(1, value));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function stableStringify(value: unknown): string {
|
|
36
|
+
if (value === undefined) return "undefined";
|
|
37
|
+
if (value === null || typeof value !== "object") {
|
|
38
|
+
if (typeof value === "bigint") return value.toString();
|
|
39
|
+
return JSON.stringify(value) ?? String(value);
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(value)) return `[${value.map((item) => stableStringify(item)).join(",")}]`;
|
|
42
|
+
const record = value as Readonly<Record<string, unknown>>;
|
|
43
|
+
return `{${Object.keys(record)
|
|
44
|
+
.sort()
|
|
45
|
+
.map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)
|
|
46
|
+
.join(",")}}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function actionSortKey(action: BrowserAction): string {
|
|
50
|
+
return [
|
|
51
|
+
action.kind,
|
|
52
|
+
action.url ?? "",
|
|
53
|
+
action.description,
|
|
54
|
+
action.asideTool ?? "",
|
|
55
|
+
stableStringify(action.asideArgs ?? {}),
|
|
56
|
+
].join("\u0000");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function compareScoredCandidates(left: ScoredActionCandidate, right: ScoredActionCandidate): number {
|
|
60
|
+
if (left.total !== right.total) return right.total - left.total;
|
|
61
|
+
const leftKey = actionSortKey(left.candidate.action);
|
|
62
|
+
const rightKey = actionSortKey(right.candidate.action);
|
|
63
|
+
if (leftKey < rightKey) return -1;
|
|
64
|
+
if (leftKey > rightKey) return 1;
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Score one planned action candidate using the fixed weighted formula. */
|
|
69
|
+
export function scoreActionCandidate(input: PlannedActionCandidate): number {
|
|
70
|
+
const total =
|
|
71
|
+
0.3 * clampScore(input.goalProgress) +
|
|
72
|
+
0.2 * clampScore(input.observationSupport) +
|
|
73
|
+
0.15 * clampScore(input.selectorCertainty) +
|
|
74
|
+
0.1 * clampScore(input.policyFit) +
|
|
75
|
+
0.1 * clampScore(input.reversibility) +
|
|
76
|
+
0.1 * clampScore(input.toolReliability) +
|
|
77
|
+
0.05 * clampScore(input.evidenceGain) -
|
|
78
|
+
clampScore(input.ambiguityPenalty) -
|
|
79
|
+
clampScore(input.repeatPenalty) -
|
|
80
|
+
clampScore(input.riskPenalty);
|
|
81
|
+
return clampScore(total);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Minimum acceptable score for a risk band. */
|
|
85
|
+
export function thresholdForRisk(risk: RiskLevel): number {
|
|
86
|
+
return RISK_THRESHOLDS[risk];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Select the best safe candidate, or require inspection when evidence is weak
|
|
91
|
+
* or the top candidates are too close to choose deterministically.
|
|
92
|
+
*/
|
|
93
|
+
export function selectActionCandidate(candidates: readonly PlannedActionCandidate[]): ActionCandidateSelection {
|
|
94
|
+
const scored = candidates
|
|
95
|
+
.map((candidate) => ({ candidate, total: scoreActionCandidate(candidate) }))
|
|
96
|
+
.sort(compareScoredCandidates);
|
|
97
|
+
|
|
98
|
+
const top = scored[0];
|
|
99
|
+
if (!top) {
|
|
100
|
+
return { status: "inspection_required", scored, reason: "no action candidates available" };
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const threshold = thresholdForRisk(top.candidate.risk);
|
|
104
|
+
if (top.total < threshold) {
|
|
105
|
+
return {
|
|
106
|
+
status: "inspection_required",
|
|
107
|
+
scored,
|
|
108
|
+
reason: `top action score ${top.total.toFixed(3)} is below ${top.candidate.risk} threshold ${threshold.toFixed(2)}`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const runnerUp = scored[1];
|
|
113
|
+
if (runnerUp && top.total - runnerUp.total < AMBIGUOUS_DELTA) {
|
|
114
|
+
return {
|
|
115
|
+
status: "inspection_required",
|
|
116
|
+
scored,
|
|
117
|
+
reason: `ambiguous top candidates: score delta ${(top.total - runnerUp.total).toFixed(3)}`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return { status: "selected", selected: top, scored, reason: "top action exceeds risk threshold and ambiguity gap" };
|
|
122
|
+
}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AssertionVerification,
|
|
3
|
+
AssertionVerificationStatus,
|
|
4
|
+
AssertionVerificationSummary,
|
|
5
|
+
Observation,
|
|
6
|
+
SuccessAssertion,
|
|
7
|
+
SuccessCriterion,
|
|
8
|
+
} from "./types.ts";
|
|
9
|
+
|
|
10
|
+
export interface VerifyAssertionsOptions {
|
|
11
|
+
readonly minConfidence?: number;
|
|
12
|
+
readonly allowLowConfidenceFallback?: boolean;
|
|
13
|
+
readonly tokenOverlapThreshold?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type CriterionInput = string | SuccessCriterion;
|
|
17
|
+
|
|
18
|
+
const DEFAULT_MIN_CONFIDENCE = 0.7;
|
|
19
|
+
const DEFAULT_TOKEN_OVERLAP_THRESHOLD = 0.6;
|
|
20
|
+
|
|
21
|
+
export function parseCriterionToAssertion(criterion: CriterionInput): SuccessAssertion {
|
|
22
|
+
const source = typeof criterion === "string" ? criterion : criterion.description;
|
|
23
|
+
const description = normalizeWhitespace(source);
|
|
24
|
+
const id = typeof criterion === "string" ? `assert_${stableHash(description)}` : criterion.id;
|
|
25
|
+
|
|
26
|
+
const domPrefix = "dom:";
|
|
27
|
+
if (description.startsWith(domPrefix)) {
|
|
28
|
+
const domCriterion = description.slice(domPrefix.length);
|
|
29
|
+
const separatorIndex = domCriterion.lastIndexOf("=");
|
|
30
|
+
if (separatorIndex > 0) {
|
|
31
|
+
const target = normalizeWhitespace(domCriterion.slice(0, separatorIndex));
|
|
32
|
+
const expected = normalizeExpected(domCriterion.slice(separatorIndex + 1));
|
|
33
|
+
if (target.length > 0) {
|
|
34
|
+
return createAssertion(id, description, "element_value", 0.95, { target, expected });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const visiblePrefix = "visible:";
|
|
40
|
+
if (description.startsWith(visiblePrefix)) {
|
|
41
|
+
const target = normalizeWhitespace(description.slice(visiblePrefix.length));
|
|
42
|
+
if (target.length > 0) {
|
|
43
|
+
return createAssertion(id, description, "element_visible", 0.95, { target });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const urlPrefix = "url:";
|
|
48
|
+
if (description.startsWith(urlPrefix)) {
|
|
49
|
+
return createAssertion(id, description, "url", 0.8, {
|
|
50
|
+
expected: normalizeExpected(description.slice(urlPrefix.length)),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const titlePrefix = "title:";
|
|
55
|
+
if (description.startsWith(titlePrefix)) {
|
|
56
|
+
return createAssertion(id, description, "title", 0.7, {
|
|
57
|
+
expected: normalizeExpected(description.slice(titlePrefix.length)),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const textPrefix = "text:";
|
|
62
|
+
if (description.startsWith(textPrefix)) {
|
|
63
|
+
return createAssertion(id, description, "text", 0.7, {
|
|
64
|
+
expected: normalizeExpected(description.slice(textPrefix.length)),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const absentPrefix = "absent:";
|
|
69
|
+
if (description.startsWith(absentPrefix)) {
|
|
70
|
+
return createAssertion(id, description, "negative_text_absent", 0.7, {
|
|
71
|
+
expected: normalizeExpected(description.slice(absentPrefix.length)),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const quotedPhrase = getQuotedPhrase(description);
|
|
76
|
+
if (quotedPhrase !== undefined) {
|
|
77
|
+
return createAssertion(id, description, "text", 0.7, { expected: quotedPhrase });
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const tokens = tokenize(description);
|
|
81
|
+
return createAssertion(id, description, "token_overlap", 0.45, {
|
|
82
|
+
expected: description,
|
|
83
|
+
tokens,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function verifyAssertions(
|
|
88
|
+
assertions: readonly SuccessAssertion[],
|
|
89
|
+
observation: Observation,
|
|
90
|
+
options: VerifyAssertionsOptions = {},
|
|
91
|
+
): AssertionVerificationSummary {
|
|
92
|
+
const minConfidence = options.minConfidence ?? DEFAULT_MIN_CONFIDENCE;
|
|
93
|
+
const allowLowConfidenceFallback = options.allowLowConfidenceFallback ?? false;
|
|
94
|
+
const results = assertions.map((assertion) => verifyAssertion(assertion, observation, options));
|
|
95
|
+
const requiredResults = results.filter((result) => result.assertion.required);
|
|
96
|
+
|
|
97
|
+
if (requiredResults.length === 0) {
|
|
98
|
+
return {
|
|
99
|
+
status: "inconclusive",
|
|
100
|
+
confidence: 0,
|
|
101
|
+
assertions: results,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const confidence = Math.min(...requiredResults.map((result) => result.confidence));
|
|
106
|
+
const hasFailure = requiredResults.some((result) => result.status === "fail");
|
|
107
|
+
if (hasFailure) {
|
|
108
|
+
return {
|
|
109
|
+
status: "fail",
|
|
110
|
+
confidence,
|
|
111
|
+
assertions: results,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const hasInconclusive = requiredResults.some((result) => result.status === "inconclusive");
|
|
116
|
+
const hasLowConfidence = requiredResults.some((result) => {
|
|
117
|
+
const fallbackAllowed = result.assertion.kind === "token_overlap" && allowLowConfidenceFallback;
|
|
118
|
+
return result.status === "pass" && result.confidence < minConfidence && !fallbackAllowed;
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
status: hasInconclusive || hasLowConfidence ? "inconclusive" : "pass",
|
|
123
|
+
confidence,
|
|
124
|
+
assertions: results,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function createAssertion(
|
|
129
|
+
id: string,
|
|
130
|
+
description: string,
|
|
131
|
+
kind: SuccessAssertion["kind"],
|
|
132
|
+
confidence: number,
|
|
133
|
+
fields: {
|
|
134
|
+
readonly target?: string;
|
|
135
|
+
readonly expected?: string;
|
|
136
|
+
readonly tokens?: readonly string[];
|
|
137
|
+
},
|
|
138
|
+
): SuccessAssertion {
|
|
139
|
+
return {
|
|
140
|
+
id,
|
|
141
|
+
kind,
|
|
142
|
+
description,
|
|
143
|
+
required: true,
|
|
144
|
+
confidence,
|
|
145
|
+
...(fields.target !== undefined ? { target: fields.target } : {}),
|
|
146
|
+
...(fields.expected !== undefined ? { expected: fields.expected } : {}),
|
|
147
|
+
...(fields.tokens !== undefined ? { tokens: fields.tokens } : {}),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function verifyAssertion(
|
|
152
|
+
assertion: SuccessAssertion,
|
|
153
|
+
observation: Observation,
|
|
154
|
+
options: VerifyAssertionsOptions,
|
|
155
|
+
): AssertionVerification {
|
|
156
|
+
switch (assertion.kind) {
|
|
157
|
+
case "element_value":
|
|
158
|
+
return verifyElementValue(assertion, observation);
|
|
159
|
+
case "element_visible":
|
|
160
|
+
return verifyElementVisible(assertion, observation);
|
|
161
|
+
case "url":
|
|
162
|
+
return verifyContains(assertion, observation.url, "url");
|
|
163
|
+
case "title":
|
|
164
|
+
return verifyContains(assertion, observation.title ?? "", "title");
|
|
165
|
+
case "text":
|
|
166
|
+
return verifyContains(assertion, observation.text ?? "", "text");
|
|
167
|
+
case "negative_text_absent":
|
|
168
|
+
return verifyNegativeTextAbsent(assertion, observation);
|
|
169
|
+
case "token_overlap":
|
|
170
|
+
return verifyTokenOverlap(assertion, observation, options);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function verifyElementValue(assertion: SuccessAssertion, observation: Observation): AssertionVerification {
|
|
175
|
+
if (assertion.target === undefined || assertion.expected === undefined) {
|
|
176
|
+
return inconclusive(assertion, "element value assertion is missing a selector or expected value", 0);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const element = findElement(observation, assertion.target);
|
|
180
|
+
if (element === undefined) {
|
|
181
|
+
return fail(assertion, `selector ${assertion.target} was not observed`, assertion.confidence);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const actual = normalizeForMatch(element.value);
|
|
185
|
+
const expected = normalizeForMatch(assertion.expected);
|
|
186
|
+
if (actual === expected) {
|
|
187
|
+
return pass(
|
|
188
|
+
assertion,
|
|
189
|
+
`selector ${assertion.target} matched expected value`,
|
|
190
|
+
assertion.confidence,
|
|
191
|
+
element.value,
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return fail(assertion, `selector ${assertion.target} value did not match`, assertion.confidence, element.value);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function verifyElementVisible(assertion: SuccessAssertion, observation: Observation): AssertionVerification {
|
|
199
|
+
if (assertion.target === undefined) {
|
|
200
|
+
return inconclusive(assertion, "visible assertion is missing a selector", 0);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const element = findElement(observation, assertion.target);
|
|
204
|
+
if (element === undefined) {
|
|
205
|
+
return fail(assertion, `selector ${assertion.target} was not observed`, assertion.confidence);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return pass(assertion, `selector ${assertion.target} was observed`, assertion.confidence, element.value);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function verifyContains(assertion: SuccessAssertion, actualValue: string, label: string): AssertionVerification {
|
|
212
|
+
if (assertion.expected === undefined || assertion.expected.length === 0) {
|
|
213
|
+
return inconclusive(assertion, `${label} assertion is missing expected text`, 0);
|
|
214
|
+
}
|
|
215
|
+
if (actualValue.length === 0) {
|
|
216
|
+
return inconclusive(assertion, `${label} was not present in the observation`, assertion.confidence);
|
|
217
|
+
}
|
|
218
|
+
if (containsNormalized(actualValue, assertion.expected)) {
|
|
219
|
+
return pass(assertion, `${label} contained expected text`, assertion.confidence, actualValue);
|
|
220
|
+
}
|
|
221
|
+
return fail(assertion, `${label} did not contain expected text`, assertion.confidence, actualValue);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function verifyNegativeTextAbsent(assertion: SuccessAssertion, observation: Observation): AssertionVerification {
|
|
225
|
+
if (assertion.expected === undefined || assertion.expected.length === 0) {
|
|
226
|
+
return inconclusive(assertion, "negative text assertion is missing expected text", 0);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const searchableText = observationText(observation);
|
|
230
|
+
if (searchableText.length === 0) {
|
|
231
|
+
return inconclusive(assertion, "no textual evidence was present in the observation", assertion.confidence);
|
|
232
|
+
}
|
|
233
|
+
if (containsNormalized(searchableText, assertion.expected)) {
|
|
234
|
+
return fail(assertion, "forbidden text was present", assertion.confidence, assertion.expected);
|
|
235
|
+
}
|
|
236
|
+
return pass(assertion, "forbidden text was absent", assertion.confidence);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function verifyTokenOverlap(
|
|
240
|
+
assertion: SuccessAssertion,
|
|
241
|
+
observation: Observation,
|
|
242
|
+
options: VerifyAssertionsOptions,
|
|
243
|
+
): AssertionVerification {
|
|
244
|
+
const tokens = assertion.tokens ?? tokenize(assertion.expected ?? assertion.description);
|
|
245
|
+
if (tokens.length === 0) {
|
|
246
|
+
return inconclusive(assertion, "token-overlap assertion has no comparable tokens", 0);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const observedTokens = new Set(tokenize(observationSearchText(observation)));
|
|
250
|
+
const overlapCount = tokens.filter((token) => observedTokens.has(token)).length;
|
|
251
|
+
const overlapRatio = overlapCount / tokens.length;
|
|
252
|
+
const matchedValue = `${overlapCount}/${tokens.length} tokens`;
|
|
253
|
+
|
|
254
|
+
if (!(options.allowLowConfidenceFallback ?? false)) {
|
|
255
|
+
return {
|
|
256
|
+
assertion,
|
|
257
|
+
status: "inconclusive",
|
|
258
|
+
confidence: assertion.confidence,
|
|
259
|
+
reason: "low-confidence fallback requires explicit allowLowConfidenceFallback",
|
|
260
|
+
matchedValue,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const threshold = options.tokenOverlapThreshold ?? DEFAULT_TOKEN_OVERLAP_THRESHOLD;
|
|
265
|
+
if (overlapRatio >= threshold) {
|
|
266
|
+
return pass(assertion, "fallback token overlap met threshold", assertion.confidence, matchedValue);
|
|
267
|
+
}
|
|
268
|
+
return fail(assertion, "fallback token overlap missed threshold", assertion.confidence, matchedValue);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function findElement(
|
|
272
|
+
observation: Observation,
|
|
273
|
+
selector: string,
|
|
274
|
+
): { readonly selector: string; readonly value: string } | undefined {
|
|
275
|
+
return observation.dom?.find((element) => element.selector === selector);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
function observationText(observation: Observation): string {
|
|
279
|
+
return [observation.title, observation.text, ...(observation.dom ?? []).map((element) => element.value)]
|
|
280
|
+
.filter((value): value is string => value !== undefined && value.length > 0)
|
|
281
|
+
.join("\n");
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
function observationSearchText(observation: Observation): string {
|
|
285
|
+
return [observation.url, observationText(observation)].join("\n");
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function pass(
|
|
289
|
+
assertion: SuccessAssertion,
|
|
290
|
+
reason: string,
|
|
291
|
+
confidence: number,
|
|
292
|
+
matchedValue?: string,
|
|
293
|
+
): AssertionVerification {
|
|
294
|
+
return verification(assertion, "pass", reason, confidence, matchedValue);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function fail(
|
|
298
|
+
assertion: SuccessAssertion,
|
|
299
|
+
reason: string,
|
|
300
|
+
confidence: number,
|
|
301
|
+
matchedValue?: string,
|
|
302
|
+
): AssertionVerification {
|
|
303
|
+
return verification(assertion, "fail", reason, confidence, matchedValue);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function inconclusive(
|
|
307
|
+
assertion: SuccessAssertion,
|
|
308
|
+
reason: string,
|
|
309
|
+
confidence: number,
|
|
310
|
+
matchedValue?: string,
|
|
311
|
+
): AssertionVerification {
|
|
312
|
+
return verification(assertion, "inconclusive", reason, confidence, matchedValue);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function verification(
|
|
316
|
+
assertion: SuccessAssertion,
|
|
317
|
+
status: AssertionVerificationStatus,
|
|
318
|
+
reason: string,
|
|
319
|
+
confidence: number,
|
|
320
|
+
matchedValue?: string,
|
|
321
|
+
): AssertionVerification {
|
|
322
|
+
return {
|
|
323
|
+
assertion,
|
|
324
|
+
status,
|
|
325
|
+
confidence: clamp01(confidence),
|
|
326
|
+
reason,
|
|
327
|
+
...(matchedValue !== undefined ? { matchedValue } : {}),
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function normalizeExpected(value: string): string {
|
|
332
|
+
const normalized = normalizeWhitespace(value);
|
|
333
|
+
return getQuotedPhrase(normalized) ?? normalized;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
function getQuotedPhrase(value: string): string | undefined {
|
|
337
|
+
if (value.length < 2) {
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
340
|
+
const exactFirst = value[0];
|
|
341
|
+
const exactLast = value[value.length - 1];
|
|
342
|
+
if ((exactFirst === '"' && exactLast === '"') || (exactFirst === "'" && exactLast === "'")) {
|
|
343
|
+
return normalizeWhitespace(value.slice(1, -1));
|
|
344
|
+
}
|
|
345
|
+
const embedded = value.match(/["']([^"']+)["']/u);
|
|
346
|
+
return embedded ? normalizeWhitespace(embedded[1]) : undefined;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function containsNormalized(haystack: string, needle: string): boolean {
|
|
350
|
+
const normalizedNeedle = normalizeForMatch(needle);
|
|
351
|
+
return normalizedNeedle.length > 0 && normalizeForMatch(haystack).includes(normalizedNeedle);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function normalizeForMatch(value: string): string {
|
|
355
|
+
return normalizeWhitespace(value).toLowerCase();
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
function normalizeWhitespace(value: string): string {
|
|
359
|
+
return value.trim().replace(/\s+/gu, " ");
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
function tokenize(value: string): readonly string[] {
|
|
363
|
+
return normalizeForMatch(value).match(/[a-z0-9]+/gu) ?? [];
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
function clamp01(value: number): number {
|
|
367
|
+
if (!Number.isFinite(value)) {
|
|
368
|
+
return 0;
|
|
369
|
+
}
|
|
370
|
+
return Math.min(1, Math.max(0, value));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
function stableHash(value: string): string {
|
|
374
|
+
let hash = 0x811c9dc5;
|
|
375
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
376
|
+
hash ^= value.charCodeAt(index);
|
|
377
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
378
|
+
}
|
|
379
|
+
return hash.toString(16).padStart(8, "0");
|
|
380
|
+
}
|