agent-nuvira 3.3.12 → 3.3.14
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/README.md +67 -1
- package/dist/agents/agents/planner.d.ts.map +1 -1
- package/dist/agents/agents/planner.js +9 -0
- package/dist/agents/agents/planner.js.map +1 -1
- package/dist/agents/agents/reasoner.d.ts.map +1 -1
- package/dist/agents/agents/reasoner.js +13 -0
- package/dist/agents/agents/reasoner.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +31 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +103 -135
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/chat.d.ts +89 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +798 -39
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +20 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +107 -3
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/decisions.d.ts +28 -0
- package/dist/cli/decisions.d.ts.map +1 -0
- package/dist/cli/decisions.js +140 -0
- package/dist/cli/decisions.js.map +1 -0
- package/dist/cli/doctor.d.ts +6 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +46 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +6 -0
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +19 -1
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/feedback.d.ts.map +1 -1
- package/dist/cli/feedback.js +5 -1
- package/dist/cli/feedback.js.map +1 -1
- package/dist/cli/hooks.d.ts +30 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +224 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/knowledge.d.ts +31 -0
- package/dist/cli/knowledge.d.ts.map +1 -0
- package/dist/cli/knowledge.js +223 -0
- package/dist/cli/knowledge.js.map +1 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +92 -18
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts +20 -0
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +294 -14
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/omniroute-control.d.ts +88 -0
- package/dist/cli/omniroute-control.d.ts.map +1 -0
- package/dist/cli/omniroute-control.js +179 -0
- package/dist/cli/omniroute-control.js.map +1 -0
- package/dist/cli/omniroute.d.ts +21 -0
- package/dist/cli/omniroute.d.ts.map +1 -0
- package/dist/cli/omniroute.js +67 -0
- package/dist/cli/omniroute.js.map +1 -0
- package/dist/cli/rate.d.ts +78 -0
- package/dist/cli/rate.d.ts.map +1 -0
- package/dist/cli/rate.js +294 -0
- package/dist/cli/rate.js.map +1 -0
- package/dist/config/process-env.d.ts.map +1 -1
- package/dist/config/process-env.js +10 -0
- package/dist/config/process-env.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/history.d.ts +21 -0
- package/dist/context/history.d.ts.map +1 -1
- package/dist/context/history.js +50 -0
- package/dist/context/history.js.map +1 -1
- package/dist/enterprise/vault.d.ts.map +1 -1
- package/dist/enterprise/vault.js +5 -21
- package/dist/enterprise/vault.js.map +1 -1
- package/dist/gateway/hook-contract.d.ts +206 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -0
- package/dist/gateway/hook-contract.js +449 -0
- package/dist/gateway/hook-contract.js.map +1 -0
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +14 -0
- package/dist/gateway/hooks.js.map +1 -1
- package/dist/inference/gemini-adapter.d.ts.map +1 -1
- package/dist/inference/gemini-adapter.js +4 -0
- package/dist/inference/gemini-adapter.js.map +1 -1
- package/dist/inference/interface.d.ts +54 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/model-id-validation.d.ts +57 -0
- package/dist/inference/model-id-validation.d.ts.map +1 -0
- package/dist/inference/model-id-validation.js +127 -0
- package/dist/inference/model-id-validation.js.map +1 -0
- package/dist/inference/native-tools.d.ts +16 -1
- package/dist/inference/native-tools.d.ts.map +1 -1
- package/dist/inference/native-tools.js +34 -10
- package/dist/inference/native-tools.js.map +1 -1
- package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
- package/dist/inference/openai-compat-adapter.js +12 -1
- package/dist/inference/openai-compat-adapter.js.map +1 -1
- package/dist/inference/provider-catalog.d.ts +11 -0
- package/dist/inference/provider-catalog.d.ts.map +1 -1
- package/dist/inference/provider-catalog.js +80 -0
- package/dist/inference/provider-catalog.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +32 -8
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +175 -1
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +10 -8
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/inference/tools.d.ts +17 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +69 -19
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/acceptance-model.d.ts +247 -0
- package/dist/learning/acceptance-model.d.ts.map +1 -0
- package/dist/learning/acceptance-model.js +708 -0
- package/dist/learning/acceptance-model.js.map +1 -0
- package/dist/learning/auto-router.d.ts +121 -24
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +374 -96
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/autonomy-policy.d.ts +12 -16
- package/dist/learning/autonomy-policy.d.ts.map +1 -1
- package/dist/learning/autonomy-policy.js +50 -48
- package/dist/learning/autonomy-policy.js.map +1 -1
- package/dist/learning/behavioural-labels.d.ts +86 -0
- package/dist/learning/behavioural-labels.d.ts.map +1 -0
- package/dist/learning/behavioural-labels.js +166 -0
- package/dist/learning/behavioural-labels.js.map +1 -0
- package/dist/learning/capability-evidence.d.ts +167 -0
- package/dist/learning/capability-evidence.d.ts.map +1 -0
- package/dist/learning/capability-evidence.js +210 -0
- package/dist/learning/capability-evidence.js.map +1 -0
- package/dist/learning/capability-readiness.d.ts +64 -0
- package/dist/learning/capability-readiness.d.ts.map +1 -0
- package/dist/learning/capability-readiness.js +74 -0
- package/dist/learning/capability-readiness.js.map +1 -0
- package/dist/learning/capability-types.d.ts +169 -0
- package/dist/learning/capability-types.d.ts.map +1 -0
- package/dist/learning/capability-types.js +20 -0
- package/dist/learning/capability-types.js.map +1 -0
- package/dist/learning/catalog-feed.d.ts +89 -0
- package/dist/learning/catalog-feed.d.ts.map +1 -0
- package/dist/learning/catalog-feed.js +211 -0
- package/dist/learning/catalog-feed.js.map +1 -0
- package/dist/learning/cli-intent-effects.d.ts +60 -0
- package/dist/learning/cli-intent-effects.d.ts.map +1 -0
- package/dist/learning/cli-intent-effects.js +153 -0
- package/dist/learning/cli-intent-effects.js.map +1 -0
- package/dist/learning/command-adaptation.d.ts +41 -0
- package/dist/learning/command-adaptation.d.ts.map +1 -0
- package/dist/learning/command-adaptation.js +122 -0
- package/dist/learning/command-adaptation.js.map +1 -0
- package/dist/learning/consent-picture.d.ts +42 -0
- package/dist/learning/consent-picture.d.ts.map +1 -0
- package/dist/learning/consent-picture.js +53 -0
- package/dist/learning/consent-picture.js.map +1 -0
- package/dist/learning/context-budget.d.ts +37 -6
- package/dist/learning/context-budget.d.ts.map +1 -1
- package/dist/learning/context-budget.js +38 -9
- package/dist/learning/context-budget.js.map +1 -1
- package/dist/learning/decision-log.d.ts +114 -0
- package/dist/learning/decision-log.d.ts.map +1 -0
- package/dist/learning/decision-log.js +296 -0
- package/dist/learning/decision-log.js.map +1 -0
- package/dist/learning/deliverable-class.d.ts.map +1 -1
- package/dist/learning/deliverable-class.js +19 -0
- package/dist/learning/deliverable-class.js.map +1 -1
- package/dist/learning/deliverable-corpus.d.ts +117 -0
- package/dist/learning/deliverable-corpus.d.ts.map +1 -0
- package/dist/learning/deliverable-corpus.js +176 -0
- package/dist/learning/deliverable-corpus.js.map +1 -0
- package/dist/learning/error-repair.d.ts +45 -2
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +95 -0
- package/dist/learning/error-repair.js.map +1 -1
- package/dist/learning/exhaustion-report.d.ts +136 -0
- package/dist/learning/exhaustion-report.d.ts.map +1 -0
- package/dist/learning/exhaustion-report.js +239 -0
- package/dist/learning/exhaustion-report.js.map +1 -0
- package/dist/learning/failure-bookkeeping.d.ts +16 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +51 -5
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/gate-friction.d.ts +39 -0
- package/dist/learning/gate-friction.d.ts.map +1 -0
- package/dist/learning/gate-friction.js +91 -0
- package/dist/learning/gate-friction.js.map +1 -0
- package/dist/learning/harness-narration.d.ts +34 -0
- package/dist/learning/harness-narration.d.ts.map +1 -0
- package/dist/learning/harness-narration.js +58 -0
- package/dist/learning/harness-narration.js.map +1 -0
- package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
- package/dist/learning/hub-skill-catalog.js +1 -2
- package/dist/learning/hub-skill-catalog.js.map +1 -1
- package/dist/learning/hybrid-router.d.ts +65 -0
- package/dist/learning/hybrid-router.d.ts.map +1 -1
- package/dist/learning/hybrid-router.js +186 -0
- package/dist/learning/hybrid-router.js.map +1 -1
- package/dist/learning/knowledge-base.d.ts +350 -0
- package/dist/learning/knowledge-base.d.ts.map +1 -0
- package/dist/learning/knowledge-base.js +906 -0
- package/dist/learning/knowledge-base.js.map +1 -0
- package/dist/learning/knowledge-eval.d.ts +171 -0
- package/dist/learning/knowledge-eval.d.ts.map +1 -0
- package/dist/learning/knowledge-eval.js +196 -0
- package/dist/learning/knowledge-eval.js.map +1 -0
- package/dist/learning/knowledge-turn.d.ts +92 -0
- package/dist/learning/knowledge-turn.d.ts.map +1 -0
- package/dist/learning/knowledge-turn.js +190 -0
- package/dist/learning/knowledge-turn.js.map +1 -0
- package/dist/learning/learned-commands.d.ts +64 -0
- package/dist/learning/learned-commands.d.ts.map +1 -0
- package/dist/learning/learned-commands.js +108 -0
- package/dist/learning/learned-commands.js.map +1 -0
- package/dist/learning/lexical-search.d.ts +50 -0
- package/dist/learning/lexical-search.d.ts.map +1 -0
- package/dist/learning/lexical-search.js +111 -0
- package/dist/learning/lexical-search.js.map +1 -0
- package/dist/learning/machine-facts.d.ts +71 -0
- package/dist/learning/machine-facts.d.ts.map +1 -0
- package/dist/learning/machine-facts.js +164 -0
- package/dist/learning/machine-facts.js.map +1 -0
- package/dist/learning/markdown-outline.d.ts +73 -0
- package/dist/learning/markdown-outline.d.ts.map +1 -0
- package/dist/learning/markdown-outline.js +136 -0
- package/dist/learning/markdown-outline.js.map +1 -0
- package/dist/learning/model-first-router.d.ts +33 -1
- package/dist/learning/model-first-router.d.ts.map +1 -1
- package/dist/learning/model-first-router.js +123 -9
- package/dist/learning/model-first-router.js.map +1 -1
- package/dist/learning/model-identity.d.ts +80 -0
- package/dist/learning/model-identity.d.ts.map +1 -0
- package/dist/learning/model-identity.js +115 -0
- package/dist/learning/model-identity.js.map +1 -0
- package/dist/learning/model-registry.d.ts +141 -2
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +324 -38
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/model-scoring.d.ts.map +1 -1
- package/dist/learning/model-scoring.js +8 -1
- package/dist/learning/model-scoring.js.map +1 -1
- package/dist/learning/model-selection.d.ts +2 -1
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +76 -2
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/outcome-observation.d.ts +49 -0
- package/dist/learning/outcome-observation.d.ts.map +1 -0
- package/dist/learning/outcome-observation.js +95 -0
- package/dist/learning/outcome-observation.js.map +1 -0
- package/dist/learning/pair-entitlement.d.ts +184 -0
- package/dist/learning/pair-entitlement.d.ts.map +1 -0
- package/dist/learning/pair-entitlement.js +214 -0
- package/dist/learning/pair-entitlement.js.map +1 -0
- package/dist/learning/project-docs.d.ts +83 -0
- package/dist/learning/project-docs.d.ts.map +1 -0
- package/dist/learning/project-docs.js +132 -0
- package/dist/learning/project-docs.js.map +1 -0
- package/dist/learning/provider-fallback.d.ts +23 -1
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +24 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/quota-ledger.d.ts +13 -0
- package/dist/learning/quota-ledger.d.ts.map +1 -1
- package/dist/learning/quota-ledger.js +28 -0
- package/dist/learning/quota-ledger.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +65 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +123 -1
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/requirement-probe.d.ts +55 -0
- package/dist/learning/requirement-probe.d.ts.map +1 -0
- package/dist/learning/requirement-probe.js +77 -0
- package/dist/learning/requirement-probe.js.map +1 -0
- package/dist/learning/resilient-call.d.ts +20 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +42 -4
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/response-usability.d.ts +85 -0
- package/dist/learning/response-usability.d.ts.map +1 -0
- package/dist/learning/response-usability.js +135 -0
- package/dist/learning/response-usability.js.map +1 -0
- package/dist/learning/router-bandit.d.ts +132 -0
- package/dist/learning/router-bandit.d.ts.map +1 -1
- package/dist/learning/router-bandit.js +253 -0
- package/dist/learning/router-bandit.js.map +1 -1
- package/dist/learning/routing-history.d.ts +41 -2
- package/dist/learning/routing-history.d.ts.map +1 -1
- package/dist/learning/routing-history.js.map +1 -1
- package/dist/learning/run-trace.d.ts +21 -0
- package/dist/learning/run-trace.d.ts.map +1 -1
- package/dist/learning/run-trace.js +38 -0
- package/dist/learning/run-trace.js.map +1 -1
- package/dist/learning/seeded-benchmark.d.ts +14 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -1
- package/dist/learning/seeded-benchmark.js +43 -4
- package/dist/learning/seeded-benchmark.js.map +1 -1
- package/dist/learning/session-grant.d.ts +75 -0
- package/dist/learning/session-grant.d.ts.map +1 -0
- package/dist/learning/session-grant.js +112 -0
- package/dist/learning/session-grant.js.map +1 -0
- package/dist/learning/task-model-continuity.d.ts +73 -0
- package/dist/learning/task-model-continuity.d.ts.map +1 -0
- package/dist/learning/task-model-continuity.js +87 -0
- package/dist/learning/task-model-continuity.js.map +1 -0
- package/dist/learning/turn-feedback.d.ts +93 -0
- package/dist/learning/turn-feedback.d.ts.map +1 -0
- package/dist/learning/turn-feedback.js +127 -0
- package/dist/learning/turn-feedback.js.map +1 -0
- package/dist/learning/turn-report.d.ts +104 -2
- package/dist/learning/turn-report.d.ts.map +1 -1
- package/dist/learning/turn-report.js +161 -6
- package/dist/learning/turn-report.js.map +1 -1
- package/dist/learning/verdict-routing.d.ts +51 -0
- package/dist/learning/verdict-routing.d.ts.map +1 -0
- package/dist/learning/verdict-routing.js +122 -0
- package/dist/learning/verdict-routing.js.map +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +5 -0
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/manager.d.ts +10 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +20 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/mcp-discovery.d.ts +34 -0
- package/dist/mcp/mcp-discovery.d.ts.map +1 -0
- package/dist/mcp/mcp-discovery.js +71 -0
- package/dist/mcp/mcp-discovery.js.map +1 -0
- package/dist/mcp/mcp-schema-cache.d.ts +17 -0
- package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
- package/dist/mcp/mcp-schema-cache.js +47 -3
- package/dist/mcp/mcp-schema-cache.js.map +1 -1
- package/dist/mcp/types.d.ts +28 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/security/secret-scan.d.ts +156 -0
- package/dist/security/secret-scan.d.ts.map +1 -0
- package/dist/security/secret-scan.js +525 -0
- package/dist/security/secret-scan.js.map +1 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +4 -0
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/capability-registry.d.ts +150 -0
- package/dist/tools/capability-registry.d.ts.map +1 -0
- package/dist/tools/capability-registry.js +400 -0
- package/dist/tools/capability-registry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -1
- package/dist/tools/child-agent-runtime.js +19 -5
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/coding-tools.d.ts +17 -5
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +80 -11
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/command-memo.d.ts +116 -0
- package/dist/tools/command-memo.d.ts.map +1 -0
- package/dist/tools/command-memo.js +202 -0
- package/dist/tools/command-memo.js.map +1 -0
- package/dist/tools/git-tool.d.ts.map +1 -1
- package/dist/tools/git-tool.js +13 -3
- package/dist/tools/git-tool.js.map +1 -1
- package/dist/tools/harness-directive.d.ts +42 -0
- package/dist/tools/harness-directive.d.ts.map +1 -0
- package/dist/tools/harness-directive.js +45 -0
- package/dist/tools/harness-directive.js.map +1 -0
- package/dist/tools/loop-skill-hint.d.ts +74 -174
- package/dist/tools/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +110 -536
- package/dist/tools/loop-skill-hint.js.map +1 -1
- package/dist/tools/mcp-client-tool.d.ts +2 -0
- package/dist/tools/mcp-client-tool.d.ts.map +1 -1
- package/dist/tools/mcp-client-tool.js +3 -0
- package/dist/tools/mcp-client-tool.js.map +1 -1
- package/dist/tools/modality/shared.d.ts +1 -4
- package/dist/tools/modality/shared.d.ts.map +1 -1
- package/dist/tools/modality/shared.js +7 -22
- package/dist/tools/modality/shared.js.map +1 -1
- package/dist/tools/plan-store.d.ts +44 -4
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +93 -9
- package/dist/tools/plan-store.js.map +1 -1
- package/dist/tools/registry.d.ts +76 -3
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +623 -15
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts +91 -0
- package/dist/tools/remediation-ladder.d.ts.map +1 -0
- package/dist/tools/remediation-ladder.js +316 -0
- package/dist/tools/remediation-ladder.js.map +1 -0
- package/dist/tools/run-cli.d.ts.map +1 -1
- package/dist/tools/run-cli.js +29 -4
- package/dist/tools/run-cli.js.map +1 -1
- package/dist/tools/run-terminal.d.ts +11 -0
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +289 -10
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/skills-hub.d.ts +7 -0
- package/dist/tools/skills-hub.d.ts.map +1 -1
- package/dist/tools/skills-hub.js +11 -2
- package/dist/tools/skills-hub.js.map +1 -1
- package/dist/tools/step-artifact.d.ts +35 -0
- package/dist/tools/step-artifact.d.ts.map +1 -0
- package/dist/tools/step-artifact.js +154 -0
- package/dist/tools/step-artifact.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +327 -13
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +891 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/toolsets.js +4 -4
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/worktree.d.ts +11 -2
- package/dist/tools/worktree.d.ts.map +1 -1
- package/dist/tools/worktree.js +11 -2
- package/dist/tools/worktree.js.map +1 -1
- package/dist/utils/atomic-store.d.ts +53 -0
- package/dist/utils/atomic-store.d.ts.map +1 -0
- package/dist/utils/atomic-store.js +178 -0
- package/dist/utils/atomic-store.js.map +1 -0
- package/dist/utils/binary-probe.d.ts +25 -0
- package/dist/utils/binary-probe.d.ts.map +1 -0
- package/dist/utils/binary-probe.js +48 -0
- package/dist/utils/binary-probe.js.map +1 -0
- package/dist/utils/workspace-path.d.ts +50 -0
- package/dist/utils/workspace-path.d.ts.map +1 -0
- package/dist/utils/workspace-path.js +86 -0
- package/dist/utils/workspace-path.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +24 -0
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +38 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/project-context.d.ts +27 -2
- package/dist/web-dashboard/project-context.d.ts.map +1 -1
- package/dist/web-dashboard/project-context.js +32 -2
- package/dist/web-dashboard/project-context.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +40 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +733 -15
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +236 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +18 -2
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +94 -12
- package/dist/web-dashboard/workspace-guard.js.map +1 -1
- package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
- package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
- package/dist/web-dashboard/workspace-resolution.js +105 -0
- package/dist/web-dashboard/workspace-resolution.js.map +1 -0
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/src/web-dashboard/public/assets/index-BrZcYhy6.js +0 -207
- package/src/web-dashboard/public/assets/index-BrZcYhy6.js.map +0 -1
- package/src/web-dashboard/public/assets/index-DsWczTa6.css +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate friction — how much the harness speaks to the model in a turn, summarized
|
|
3
|
+
* from reasoning traces so the dashboard can show the number.
|
|
4
|
+
*
|
|
5
|
+
* Counts every `gate` event (a bounded nudge: plan / verification / deliverable /
|
|
6
|
+
* permission / repeat / action / promise / self-review / diagnosis /
|
|
7
|
+
* malformed-call / prerequisite) and every `refusal` event (a tool declined a
|
|
8
|
+
* call). The per-turn distribution is the number Bundle 37b ("deliver gate text
|
|
9
|
+
* as an acted-on instruction") exists to reduce. This module is the READ side of
|
|
10
|
+
* `scripts/measure-gate-friction.mjs`, so the dashboard and the CLI report the
|
|
11
|
+
* same figure from the same rule.
|
|
12
|
+
*
|
|
13
|
+
* It also counts narration (Bundle 39): a turn whose final answer reuses the
|
|
14
|
+
* harness's own distinctive vocabulary — see `harness-narration.ts`.
|
|
15
|
+
*/
|
|
16
|
+
import { detectHarnessNarration } from './harness-narration.js';
|
|
17
|
+
function normalize(raw) {
|
|
18
|
+
const list = Array.isArray(raw)
|
|
19
|
+
? raw
|
|
20
|
+
: raw && typeof raw === 'object' && Array.isArray(raw.traces)
|
|
21
|
+
? raw.traces
|
|
22
|
+
: [];
|
|
23
|
+
return list.filter((t) => Boolean(t) && typeof t === 'object');
|
|
24
|
+
}
|
|
25
|
+
function finalText(trace) {
|
|
26
|
+
const steps = trace.steps ?? [];
|
|
27
|
+
for (let i = steps.length - 1; i >= 0; i--) {
|
|
28
|
+
const t = steps[i]?.responsePreview;
|
|
29
|
+
if (t && String(t).trim())
|
|
30
|
+
return String(t);
|
|
31
|
+
}
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
export function summarizeGateFriction(raw) {
|
|
35
|
+
const traces = normalize(raw);
|
|
36
|
+
const byKey = new Map();
|
|
37
|
+
const perTurn = [];
|
|
38
|
+
let narrated = 0;
|
|
39
|
+
let echoed = 0;
|
|
40
|
+
for (const trace of traces) {
|
|
41
|
+
let total = 0;
|
|
42
|
+
const harnessTexts = [];
|
|
43
|
+
for (const e of trace.events ?? []) {
|
|
44
|
+
if (!e)
|
|
45
|
+
continue;
|
|
46
|
+
if (e.kind === 'gate') {
|
|
47
|
+
const key = `gate:${e.gate || 'unknown'}`;
|
|
48
|
+
byKey.set(key, (byKey.get(key) ?? 0) + 1);
|
|
49
|
+
total += 1;
|
|
50
|
+
if (e.summary)
|
|
51
|
+
harnessTexts.push(e.summary);
|
|
52
|
+
}
|
|
53
|
+
else if (e.kind === 'refusal') {
|
|
54
|
+
const key = `refusal:${e.gate || e.tool || 'unknown'}`;
|
|
55
|
+
byKey.set(key, (byKey.get(key) ?? 0) + 1);
|
|
56
|
+
total += 1;
|
|
57
|
+
if (e.summary)
|
|
58
|
+
harnessTexts.push(e.summary);
|
|
59
|
+
if (e.result)
|
|
60
|
+
harnessTexts.push(e.result);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
perTurn.push(total);
|
|
64
|
+
if (harnessTexts.length > 0) {
|
|
65
|
+
const text = finalText(trace);
|
|
66
|
+
if (text.includes('[harness]'))
|
|
67
|
+
echoed += 1;
|
|
68
|
+
if (detectHarnessNarration(text, harnessTexts).narrated)
|
|
69
|
+
narrated += 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const sorted = [...perTurn].sort((a, b) => a - b);
|
|
73
|
+
const sum = sorted.reduce((n, v) => n + v, 0);
|
|
74
|
+
const at = (p) => (sorted.length ? sorted[Math.min(sorted.length - 1, Math.floor(p * sorted.length))] : 0);
|
|
75
|
+
return {
|
|
76
|
+
traces: traces.length,
|
|
77
|
+
events: sum,
|
|
78
|
+
perTurn: {
|
|
79
|
+
mean: sorted.length ? Math.round((sum / sorted.length) * 100) / 100 : 0,
|
|
80
|
+
median: at(0.5),
|
|
81
|
+
p90: at(0.9),
|
|
82
|
+
max: sorted.length ? sorted[sorted.length - 1] : 0,
|
|
83
|
+
turnsWithAny: perTurn.filter((n) => n > 0).length,
|
|
84
|
+
},
|
|
85
|
+
byGate: [...byKey.entries()]
|
|
86
|
+
.map(([key, count]) => ({ key, count }))
|
|
87
|
+
.sort((a, b) => b.count - a.count),
|
|
88
|
+
narration: { turns: narrated, echoedMarker: echoed },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=gate-friction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-friction.js","sourceRoot":"","sources":["../../src/learning/gate-friction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness-narration detection — did the model NARRATE the harness back at the
|
|
3
|
+
* user instead of acting on it?
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS. Bundle 37b made every gate nudge a marked `[harness]`
|
|
6
|
+
* `system` directive so the model would act on it rather than answer it. That
|
|
7
|
+
* change is only worth having if it is VERIFIABLE on live traces: some turns
|
|
8
|
+
* would still produce prose ABOUT the harness (`"the command guard misfired on a
|
|
9
|
+
* read-only check, so verification was…"`) instead of quietly continuing.
|
|
10
|
+
*
|
|
11
|
+
* HOW IT DETECTS, WITHOUT A PHRASE LIST. It does not look for words like
|
|
12
|
+
* "guard" or "misfire" — that would be a hand-written list of user phrasings,
|
|
13
|
+
* which this codebase forbids. Instead it takes the harness's OWN text (the
|
|
14
|
+
* refusals and gate summaries the trace recorded for that turn) and asks whether
|
|
15
|
+
* the model's answer reuses a DISTINCTIVE token from it: a hyphenated compound
|
|
16
|
+
* (`state-changing`, `read-only`) or a long word (≥10 chars). Those are the
|
|
17
|
+
* tokens that carry the harness's specific vocabulary; a shared one means the
|
|
18
|
+
* model is quoting the loop's language rather than talking about the task.
|
|
19
|
+
*
|
|
20
|
+
* The vocabulary is DERIVED at runtime from the harness's own strings, so it
|
|
21
|
+
* tracks whatever the harness actually says — it can never drift from a list.
|
|
22
|
+
*
|
|
23
|
+
* It is a REPORTER, not a gate: it never changes what the turn does. It exists so
|
|
24
|
+
* "the model stopped narrating the harness" is a measurement (see
|
|
25
|
+
* `scripts/detect-harness-narration.mjs`).
|
|
26
|
+
*/
|
|
27
|
+
export interface NarrationVerdict {
|
|
28
|
+
narrated: boolean;
|
|
29
|
+
/** The distinctive tokens the answer shares with the harness text. */
|
|
30
|
+
matches: string[];
|
|
31
|
+
}
|
|
32
|
+
/** The pure check. `harnessTexts` are the harness's own strings for this turn. */
|
|
33
|
+
export declare function detectHarnessNarration(finalText: string, harnessTexts: Array<string | undefined | null>): NarrationVerdict;
|
|
34
|
+
//# sourceMappingURL=harness-narration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-narration.d.ts","sourceRoot":"","sources":["../../src/learning/harness-narration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAiBD,kFAAkF;AAClF,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAC7C,gBAAgB,CASlB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness-narration detection — did the model NARRATE the harness back at the
|
|
3
|
+
* user instead of acting on it?
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS. Bundle 37b made every gate nudge a marked `[harness]`
|
|
6
|
+
* `system` directive so the model would act on it rather than answer it. That
|
|
7
|
+
* change is only worth having if it is VERIFIABLE on live traces: some turns
|
|
8
|
+
* would still produce prose ABOUT the harness (`"the command guard misfired on a
|
|
9
|
+
* read-only check, so verification was…"`) instead of quietly continuing.
|
|
10
|
+
*
|
|
11
|
+
* HOW IT DETECTS, WITHOUT A PHRASE LIST. It does not look for words like
|
|
12
|
+
* "guard" or "misfire" — that would be a hand-written list of user phrasings,
|
|
13
|
+
* which this codebase forbids. Instead it takes the harness's OWN text (the
|
|
14
|
+
* refusals and gate summaries the trace recorded for that turn) and asks whether
|
|
15
|
+
* the model's answer reuses a DISTINCTIVE token from it: a hyphenated compound
|
|
16
|
+
* (`state-changing`, `read-only`) or a long word (≥10 chars). Those are the
|
|
17
|
+
* tokens that carry the harness's specific vocabulary; a shared one means the
|
|
18
|
+
* model is quoting the loop's language rather than talking about the task.
|
|
19
|
+
*
|
|
20
|
+
* The vocabulary is DERIVED at runtime from the harness's own strings, so it
|
|
21
|
+
* tracks whatever the harness actually says — it can never drift from a list.
|
|
22
|
+
*
|
|
23
|
+
* It is a REPORTER, not a gate: it never changes what the turn does. It exists so
|
|
24
|
+
* "the model stopped narrating the harness" is a measurement (see
|
|
25
|
+
* `scripts/detect-harness-narration.mjs`).
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Tokens specific enough to signal the harness's vocabulary: hyphenated
|
|
29
|
+
* compounds, or long words. Deliberately NOT common prose (which is why a short
|
|
30
|
+
* word can never match).
|
|
31
|
+
*/
|
|
32
|
+
function distinctiveTokens(text) {
|
|
33
|
+
const out = new Set();
|
|
34
|
+
for (const raw of String(text ?? '').toLowerCase().split(/[^a-z0-9-]+/)) {
|
|
35
|
+
const t = raw.replace(/^-+|-+$/g, '');
|
|
36
|
+
if (!t)
|
|
37
|
+
continue;
|
|
38
|
+
if (t.length >= 10 || (t.includes('-') && t.length >= 6))
|
|
39
|
+
out.add(t);
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
/** The pure check. `harnessTexts` are the harness's own strings for this turn. */
|
|
44
|
+
export function detectHarnessNarration(finalText, harnessTexts) {
|
|
45
|
+
const said = distinctiveTokens(finalText);
|
|
46
|
+
if (said.size === 0)
|
|
47
|
+
return { narrated: false, matches: [] };
|
|
48
|
+
const matches = new Set();
|
|
49
|
+
for (const h of harnessTexts) {
|
|
50
|
+
if (!h)
|
|
51
|
+
continue;
|
|
52
|
+
for (const t of distinctiveTokens(h))
|
|
53
|
+
if (said.has(t))
|
|
54
|
+
matches.add(t);
|
|
55
|
+
}
|
|
56
|
+
return { narrated: matches.size > 0, matches: [...matches].sort() };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=harness-narration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-narration.js","sourceRoot":"","sources":["../../src/learning/harness-narration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,YAA8C;IAE9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-skill-catalog.d.ts","sourceRoot":"","sources":["../../src/learning/hub-skill-catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hub-skill-catalog.d.ts","sourceRoot":"","sources":["../../src/learning/hub-skill-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -348,8 +348,7 @@ export function findHubSkillMatch(goal, cm, projectRoot = process.cwd(), home =
|
|
|
348
348
|
// "s**kill**", which ranked `feature-flags` top for "no skill covers alpaca
|
|
349
349
|
// husbandry whatsoever". The same class makes `mac` match "machine" and
|
|
350
350
|
// `arch` match "search". Tokenizing once also keeps this ranking consistent
|
|
351
|
-
// with
|
|
352
|
-
// cannot nominate a skill the gate then rejects.
|
|
351
|
+
// with whole-word matching elsewhere in the skill layer. NOTE: the auto-
|
|
353
352
|
const tokens = new Set(q.split(/[^a-z0-9]+/).filter((w) => w.length > 0));
|
|
354
353
|
const scored = skills.map((skill) => {
|
|
355
354
|
let score = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-skill-catalog.js","sourceRoot":"","sources":["../../src/learning/hub-skill-catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hub-skill-catalog.js","sourceRoot":"","sources":["../../src/learning/hub-skill-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAqC5C,+EAA+E;AAE/E,MAAM,aAAa,GAAG,cAAc,CAAC;AAsBrC,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,CAAC,GAAG,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,GAAG,GAA+D,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,OAAO,GAAkB,IAAI,CAAC,CAAC,wBAAwB;IAC3D,IAAI,SAAS,GAAkB,IAAI,CAAC,CAAC,wBAAwB;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,sEAAsE;QACtE,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAa,CAAC;YACrC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,4EAA4E;QAC5E,IAAI,SAAS,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,EAAE,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,EAAE,EAAE,CAAC;gBACN,GAAG,CAAC,SAAS,CAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,SAAS;YACX,CAAC;QACH,CAAC;QACD,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,SAAS,GAAG,GAAG,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,6CAA6C;YAC7C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAsB,EAAE;QAC7C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAwB,EAAE;QACnD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;QAChC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;QAChC,gBAAgB,EAAE,QAAQ,CAAC,mBAAmB,CAAC;QAC/C,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QACtD,MAAM,EAAE,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;QACrG,CAAC,CAAC,EAAE;QACJ,eAAe,EAAE,QAAQ,CAAC,gCAAgC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAED,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,QAAQ,CAAC,IAAwB,EAAE,GAAW;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAS;YACrC,IAAI,CAAC;gBACH,sEAAsE;gBACtE,kEAAkE;gBAClE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAoB;oBAC7B,EAAE,EAAE,KAAK,CAAC,IAAI;oBACd,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;oBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,yCAAyC;oBACxE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC;oBAChC,IAAI;iBACL,CAAC;gBACF,oEAAoE;gBACpE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC5E,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CAAC;gBACxG,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAC;gBACpH,IAAI,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;gBAC7E,IAAI,EAAE,CAAC,eAAe,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;gBACpG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,EAAE;IAC1E,MAAM,KAAK,GAAG;QACZ,EAAE,IAAI,EAAE,SAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QACzE,EAAE,IAAI,EAAE,MAAe,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;KAChE,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,EAAkB;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC;QACvC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,EAAE;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAU,EACV,OAAgB,EAChB,EAAkB,EAClB,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAC3B,IAAI,GAAG,OAAO,EAAE;IAEhB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAC;IAC7F,CAAC;IACD,qEAAqE;IACrE,0DAA0D;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAA0C,EAAE,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5H,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,QAAQ,CAAC,CAAC,oBAAoB;IACzC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsB,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ;IAChF,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,eAA6B;IACjF,IAAI,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,eAAe,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACzE,CAAC;IACD,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;CAC1G,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAkB,EAClB,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAC3B,IAAI,GAAG,OAAO,EAAE,EAChB,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,eAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,eAAe,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CACvF,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAS,mBAAmB,CAAC,EAAkB;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;QACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,EAAkB,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,OAAO,EAAE;IAC/G,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,6CAA6C;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,IAAI,GAAG,CAAC;QACxD,CAAC;QACD,6BAA6B;QAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACrF,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;QACnC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -76,13 +76,78 @@ export interface HybridRouterOptions {
|
|
|
76
76
|
/** Whether to use runtime agent stats to adjust model selection (default: false) */
|
|
77
77
|
useRuntimeStats?: boolean;
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* The requirement UNITS an ask enumerates: its list items.
|
|
81
|
+
*
|
|
82
|
+
* Split on the separators that structure a request (a colon that introduces a
|
|
83
|
+
* list, semicolons, newlines, bullet markers, numbered markers) and keep the
|
|
84
|
+
* substantive ones. Deliberately NOT split on "and" or commas — "PDF, TXT,
|
|
85
|
+
* Markdown" is ONE requirement with three file types, and counting it three
|
|
86
|
+
* times would inflate every ask that mentions a list.
|
|
87
|
+
*/
|
|
88
|
+
export declare function requirementUnits(text: string): string[];
|
|
89
|
+
export declare function stripInjectedContext(text: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* MEASURED breadth: how many requirement units, and how many distinct areas of
|
|
92
|
+
* work. Exported so a test (and any future explain surface) can state WHY a
|
|
93
|
+
* level was reached instead of asserting it blindly.
|
|
94
|
+
*
|
|
95
|
+
* Item 9 — measured on the ask, never on the harness's own injected banners (see
|
|
96
|
+
* `stripInjectedContext`).
|
|
97
|
+
*/
|
|
98
|
+
export declare function measureTaskBreadth(text: string): {
|
|
99
|
+
units: number;
|
|
100
|
+
areas: number;
|
|
101
|
+
areaNames: string[];
|
|
102
|
+
};
|
|
79
103
|
/**
|
|
80
104
|
* Analyze a task description or user goal to determine its complexity level.
|
|
81
105
|
*
|
|
106
|
+
* Two signals, and the HIGHER one wins:
|
|
107
|
+
* 1. the keyword ladder (vocabulary — what the ask says),
|
|
108
|
+
* 2. the breadth floor (shape — how much separable work it enumerates).
|
|
109
|
+
*
|
|
110
|
+
* B5, measured before/after: the parity task above rated `moderate` on the
|
|
111
|
+
* ladder alone (only `build` matched) and rates `complex` with the shape
|
|
112
|
+
* measured (4 units, 5 areas: ingestion / embeddings / generation+retrieval /
|
|
113
|
+
* frontend / persistence). The floor can only RAISE a level — a task whose words
|
|
114
|
+
* already say `critical` still says `critical`, because size must never talk the
|
|
115
|
+
* router down from urgency.
|
|
116
|
+
*
|
|
82
117
|
* @param text — The task description or user goal
|
|
83
118
|
* @returns The detected complexity level
|
|
84
119
|
*/
|
|
85
120
|
export declare function analyzeComplexity(text: string): ComplexityLevel;
|
|
121
|
+
/**
|
|
122
|
+
* Is this message NOTHING BUT a greeting?
|
|
123
|
+
*
|
|
124
|
+
* B2 — WHY A PREDICATE AND NOT THREE `includes()` CALLS. Both
|
|
125
|
+
* `estimateTaskRequirements` implementations used to decide this with
|
|
126
|
+
* `desc.includes('hello') || desc.includes('hi') || desc.includes('greeting')`,
|
|
127
|
+
* and `'hi'` is a SUBSTRING of `this`, `which`, `anything`, `nothing`,
|
|
128
|
+
* `shift`, `crashing`, `architecture`, `graphify`… Measured against the 160
|
|
129
|
+
* distinct tasks in `~/.nuvira/memory/routing-history.json`: **77 of them**
|
|
130
|
+
* matched the substring while containing no greeting at all, and 81/160 landed
|
|
131
|
+
* on `reasoningNeed: 'low'` (only 2 on `'high'`). `low` is not cosmetic — it
|
|
132
|
+
* flips the candidate weights to cost 0.30 / capabilityFit 0.15 and inverts
|
|
133
|
+
* `capabilityFit` to PREFER small models, so a multi-provider engineering ask
|
|
134
|
+
* was ranked `gemini/gemma-4-26b-a4b-it` (4B active) #1, `local/qwen2.5:0.5b`
|
|
135
|
+
* #2, `gemini/allam-2-7b` #3 — the run that then fell through three providers.
|
|
136
|
+
*
|
|
137
|
+
* The intent is narrow: answering a bare "hi" should not provision a frontier
|
|
138
|
+
* model. A greeting BURIED IN A REAL ASK is not that case, and neither is the
|
|
139
|
+
* word "this". So the test is not "does it contain a greeting word" but "is
|
|
140
|
+
* there nothing here but a greeting and pleasantries": the greeting is removed
|
|
141
|
+
* and what remains must be empty or filler. `"hi"` → true; `"hi there!"` →
|
|
142
|
+
* true; `"hello, how are you?"` → true; `"hi, build me a RAG pipeline"` →
|
|
143
|
+
* false (that is a task that happens to open politely); `"this will work"` →
|
|
144
|
+
* false (no greeting word at all).
|
|
145
|
+
*
|
|
146
|
+
* Shared from here so the two routers cannot drift apart on it again —
|
|
147
|
+
* `model-first-router.ts` and `model-scoring.ts` previously carried two copies
|
|
148
|
+
* of this rule that already disagreed about other phrases.
|
|
149
|
+
*/
|
|
150
|
+
export declare function isSmallTalk(text: string): boolean;
|
|
86
151
|
/**
|
|
87
152
|
* Build a fallback chain for a given agent type and complexity.
|
|
88
153
|
* The chain is ordered: primary → secondary → tertiary.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-router.d.ts","sourceRoot":"","sources":["../../src/learning/hybrid-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzF,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,UAAU,EAAE,eAAe,CAAC;IAC5B,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,cAAc,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,mBAAmB,GAAG,YAAY,GAAG,eAAe,CAAC;AAE/F,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oFAAoF;IACpF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"hybrid-router.d.ts","sourceRoot":"","sources":["../../src/learning/hybrid-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,13 +55,199 @@ const COMPLEXITY_KEYWORDS = {
|
|
|
55
55
|
/data\s+(loss|breach|corruption)/i,
|
|
56
56
|
],
|
|
57
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* The separable AREAS of work an ask names.
|
|
60
|
+
*
|
|
61
|
+
* B5 — WHY BREADTH IS MEASURED AT ALL. The keyword ladder below reads
|
|
62
|
+
* VOCABULARY, and vocabulary is a poor proxy for size. The measured case: the
|
|
63
|
+
* parity task *"Build a knowledge base web app where users can: upload documents
|
|
64
|
+
* (PDF, TXT, Markdown); automatically extract embeddings (FAISS or Milvus); query
|
|
65
|
+
* the knowledge base using an LLM (via adapters like Groq, Gemini, DeepSeek); view
|
|
66
|
+
* results in a React dashboard."* names FOUR separable subsystems and eight
|
|
67
|
+
* technologies, and rated `moderate` — because the only keyword that matched was
|
|
68
|
+
* `build`, which is a `moderate` word. `/architecture/` never appears; nobody
|
|
69
|
+
* writes "architect" when they write a requirements list.
|
|
70
|
+
*
|
|
71
|
+
* So the ask's SHAPE is measured too: how many distinct areas of work it names.
|
|
72
|
+
* An ask that spans ingestion, embeddings, retrieval/generation and a UI is not a
|
|
73
|
+
* moderate task whatever verb introduces it. The area set is deliberately coarse
|
|
74
|
+
* (twelve areas, one regex each) — the question is "how many different kinds of
|
|
75
|
+
* work", not "how many words are in my list", and a finer set would start
|
|
76
|
+
* counting synonyms as subsystems.
|
|
77
|
+
*
|
|
78
|
+
* ITEM 9 — MEASURED AGAINST THE REAL CORPUS, AND WHAT IT FOUND. Run over all 500
|
|
79
|
+
goals in `~/.nuvira/memory/routing-history.json`, this set fired on 30 goals with
|
|
80
|
+
≥ 3 areas (the breadth floor fires on 20). The measurement also found a real
|
|
81
|
+
defect: 66 of those goals carry a bracketed banner the HARNESS itself injects
|
|
82
|
+
(`[Origin: …]` from the gateway, `[Image: …]` from inbound media), and matching
|
|
83
|
+
that scaffolding as if it were the user's requirements inflated the dominant area
|
|
84
|
+
— `integration`, which matches `whatsapp`/`telegram`/`slack` — from 35 genuine
|
|
85
|
+
hits to 98. **63 of 98 were the harness's own text.** The fix is below
|
|
86
|
+
(`stripInjectedContext`); the SET itself stays hand-written on purpose, because a
|
|
87
|
+
learned set can only be validated against a labeled corpus and none exists (the
|
|
88
|
+
same missing ground truth as items 4/13) — what CAN be measured is whether the
|
|
89
|
+
measurer is reading the ask or reading itself, and that is what changed.
|
|
90
|
+
*/
|
|
91
|
+
const CAPABILITY_AREA_RE = [
|
|
92
|
+
['ingestion', /upload|ingest|import|parse|extract\s+(?:text|data|content)|attachment/i],
|
|
93
|
+
['embeddings', /embedding|vector|faiss|milvus|pinecone|chroma|weaviate|semantic\s+(?:search|index)|training|fine[- ]?tun/i],
|
|
94
|
+
['generation', /\bllm\b|gpt|claude|gemini|deepseek|groq|openai|anthropic|prompt|rag\b|adapter/i],
|
|
95
|
+
['retrieval', /retriev|rank|relevance|\bindex(?:ing)?\b|\bsearch\b|quer(?:y|ies)/i],
|
|
96
|
+
['frontend', /dashboard|front[- ]?end|\bui\b|\bux\b|react|vue|svelte|component|screen|\bpage\b|html|css/i],
|
|
97
|
+
['backend', /\bapi\b|\bserver\b|endpoint|back[- ]?end|rest\b|graphql|\bservice\b|\broute[s]?\b/i],
|
|
98
|
+
['persistence', /database|storage|persist|\bschema\b|migration|\bsql\b|postgres|mongo|sqlite|redis|\btable[s]?\b/i],
|
|
99
|
+
['auth', /auth|login|sign[- ]?up|permission|\brole[s]?\b|session|token|oauth/i],
|
|
100
|
+
['realtime', /realtime|real[- ]time|websocket|\bsocket\b|stream|pubsub|\bqueue\b|worker|\bjob[s]?\b|cron/i],
|
|
101
|
+
['testing', /\btest[s]?\b|\bspec[s]?\b|coverage|vitest|jest|pytest|e2e|assertion/i],
|
|
102
|
+
['deploy', /deploy|docker|kubernetes|\bci\/cd\b|pipeline|container|cloud|\baws\b|\bgcp\b|azure|infrastructure/i],
|
|
103
|
+
['integration', /webhook|integration|third[- ]party|payment|stripe|\bemail\b|\bsms\b|notification|slack|whatsapp|telegram/i],
|
|
104
|
+
];
|
|
105
|
+
/**
|
|
106
|
+
* The requirement UNITS an ask enumerates: its list items.
|
|
107
|
+
*
|
|
108
|
+
* Split on the separators that structure a request (a colon that introduces a
|
|
109
|
+
* list, semicolons, newlines, bullet markers, numbered markers) and keep the
|
|
110
|
+
* substantive ones. Deliberately NOT split on "and" or commas — "PDF, TXT,
|
|
111
|
+
* Markdown" is ONE requirement with three file types, and counting it three
|
|
112
|
+
* times would inflate every ask that mentions a list.
|
|
113
|
+
*/
|
|
114
|
+
export function requirementUnits(text) {
|
|
115
|
+
return stripInjectedContext(text)
|
|
116
|
+
.split(/[:;\n]|(?:^|\s)[-*\u2022]\s|(?:^|\s)\d+[.)]\s/)
|
|
117
|
+
.map((u) => u.trim())
|
|
118
|
+
// A fragment this short is a label or a lead-in ("Requirements"), not a unit.
|
|
119
|
+
.filter((u) => u.length >= 10);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Item 9 — strip the harness's OWN injected context before measuring an ask.
|
|
123
|
+
*
|
|
124
|
+
* MEASURED over the 500 real goals in `routing-history.json`: 66 carry a bracketed
|
|
125
|
+
* banner this product adds itself — `[Origin: …]` (`gateway/registry.ts`) and
|
|
126
|
+
* `[Image: …]` (`gateway/inbound-media.ts`). Counting those as the user's
|
|
127
|
+
* requirements inflated the dominant area, `integration` (which matches
|
|
128
|
+
* `whatsapp`/`telegram`/`slack`), from **35 genuine hits to 98 — 63 of 98 were the
|
|
129
|
+
* harness's own scaffolding** — and added **64 spurious requirement units**, because
|
|
130
|
+
* a banner's `:` is a list separator. A measurer that counts its own text measures
|
|
131
|
+
* itself, not the ask.
|
|
132
|
+
*
|
|
133
|
+
* Deliberately TARGETED to the known banner prefixes: a blanket `[…⇒` strip also
|
|
134
|
+
* removed genuine user text (measured: it wrongly dropped 12 real `frontend` hits),
|
|
135
|
+
* which would trade one false signal for another.
|
|
136
|
+
*/
|
|
137
|
+
const INJECTED_CONTEXT_RE = /\[(?:Origin|Image|Attached|File):[^\]]*\]/g;
|
|
138
|
+
export function stripInjectedContext(text) {
|
|
139
|
+
return (text ?? '').replace(INJECTED_CONTEXT_RE, ' ');
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* MEASURED breadth: how many requirement units, and how many distinct areas of
|
|
143
|
+
* work. Exported so a test (and any future explain surface) can state WHY a
|
|
144
|
+
* level was reached instead of asserting it blindly.
|
|
145
|
+
*
|
|
146
|
+
* Item 9 — measured on the ask, never on the harness's own injected banners (see
|
|
147
|
+
* `stripInjectedContext`).
|
|
148
|
+
*/
|
|
149
|
+
export function measureTaskBreadth(text) {
|
|
150
|
+
const clean = stripInjectedContext(text);
|
|
151
|
+
const areaNames = CAPABILITY_AREA_RE.filter(([, re]) => re.test(clean)).map(([name]) => name);
|
|
152
|
+
return { units: requirementUnits(clean).length, areas: areaNames.length, areaNames };
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The breadth FLOOR: the level an ask's size alone justifies, or null.
|
|
156
|
+
*
|
|
157
|
+
* Both thresholds must be met — three or more enumerated requirements spanning
|
|
158
|
+
* three or more areas of work — and requiring BOTH is what keeps this from firing
|
|
159
|
+
* on an ordinary request that merely mentions several technologies ("build a todo
|
|
160
|
+
* app with React and localStorage" is one requirement and one area, so `moderate`
|
|
161
|
+
* stays right) or that enumerates a single area at length ("read a CSV; print a
|
|
162
|
+
* table; write a JSON file" is 4 units but 0 named areas).
|
|
163
|
+
*
|
|
164
|
+
* Measured at both thresholds, then chosen: `areas >= 4` missed a four-component
|
|
165
|
+
* ask that named Stripe + Postgres + React + email (5 units, exactly 3 areas), and
|
|
166
|
+
* every false-positive shape above has units 1 or 2, so the looser area bar costs
|
|
167
|
+
* nothing. It cannot reach `critical` in any case: breadth establishes SIZE, and
|
|
168
|
+
* `critical` is about urgency and blast radius, which size alone does not imply.
|
|
169
|
+
*/
|
|
170
|
+
function breadthFloor(text) {
|
|
171
|
+
const { units, areas } = measureTaskBreadth(text);
|
|
172
|
+
if (units >= 3 && areas >= 3)
|
|
173
|
+
return 'complex';
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
/** Ordering so two levels can be compared (a floor may only RAISE a level). */
|
|
177
|
+
const LEVEL_RANK = {
|
|
178
|
+
trivial: 0,
|
|
179
|
+
simple: 1,
|
|
180
|
+
moderate: 2,
|
|
181
|
+
complex: 3,
|
|
182
|
+
critical: 4,
|
|
183
|
+
};
|
|
58
184
|
/**
|
|
59
185
|
* Analyze a task description or user goal to determine its complexity level.
|
|
60
186
|
*
|
|
187
|
+
* Two signals, and the HIGHER one wins:
|
|
188
|
+
* 1. the keyword ladder (vocabulary — what the ask says),
|
|
189
|
+
* 2. the breadth floor (shape — how much separable work it enumerates).
|
|
190
|
+
*
|
|
191
|
+
* B5, measured before/after: the parity task above rated `moderate` on the
|
|
192
|
+
* ladder alone (only `build` matched) and rates `complex` with the shape
|
|
193
|
+
* measured (4 units, 5 areas: ingestion / embeddings / generation+retrieval /
|
|
194
|
+
* frontend / persistence). The floor can only RAISE a level — a task whose words
|
|
195
|
+
* already say `critical` still says `critical`, because size must never talk the
|
|
196
|
+
* router down from urgency.
|
|
197
|
+
*
|
|
61
198
|
* @param text — The task description or user goal
|
|
62
199
|
* @returns The detected complexity level
|
|
63
200
|
*/
|
|
64
201
|
export function analyzeComplexity(text) {
|
|
202
|
+
const fromKeywords = complexityFromKeywords(text ?? '');
|
|
203
|
+
const floor = breadthFloor(text ?? '');
|
|
204
|
+
if (floor && LEVEL_RANK[floor] > LEVEL_RANK[fromKeywords])
|
|
205
|
+
return floor;
|
|
206
|
+
return fromKeywords;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Is this message NOTHING BUT a greeting?
|
|
210
|
+
*
|
|
211
|
+
* B2 — WHY A PREDICATE AND NOT THREE `includes()` CALLS. Both
|
|
212
|
+
* `estimateTaskRequirements` implementations used to decide this with
|
|
213
|
+
* `desc.includes('hello') || desc.includes('hi') || desc.includes('greeting')`,
|
|
214
|
+
* and `'hi'` is a SUBSTRING of `this`, `which`, `anything`, `nothing`,
|
|
215
|
+
* `shift`, `crashing`, `architecture`, `graphify`… Measured against the 160
|
|
216
|
+
* distinct tasks in `~/.nuvira/memory/routing-history.json`: **77 of them**
|
|
217
|
+
* matched the substring while containing no greeting at all, and 81/160 landed
|
|
218
|
+
* on `reasoningNeed: 'low'` (only 2 on `'high'`). `low` is not cosmetic — it
|
|
219
|
+
* flips the candidate weights to cost 0.30 / capabilityFit 0.15 and inverts
|
|
220
|
+
* `capabilityFit` to PREFER small models, so a multi-provider engineering ask
|
|
221
|
+
* was ranked `gemini/gemma-4-26b-a4b-it` (4B active) #1, `local/qwen2.5:0.5b`
|
|
222
|
+
* #2, `gemini/allam-2-7b` #3 — the run that then fell through three providers.
|
|
223
|
+
*
|
|
224
|
+
* The intent is narrow: answering a bare "hi" should not provision a frontier
|
|
225
|
+
* model. A greeting BURIED IN A REAL ASK is not that case, and neither is the
|
|
226
|
+
* word "this". So the test is not "does it contain a greeting word" but "is
|
|
227
|
+
* there nothing here but a greeting and pleasantries": the greeting is removed
|
|
228
|
+
* and what remains must be empty or filler. `"hi"` → true; `"hi there!"` →
|
|
229
|
+
* true; `"hello, how are you?"` → true; `"hi, build me a RAG pipeline"` →
|
|
230
|
+
* false (that is a task that happens to open politely); `"this will work"` →
|
|
231
|
+
* false (no greeting word at all).
|
|
232
|
+
*
|
|
233
|
+
* Shared from here so the two routers cannot drift apart on it again —
|
|
234
|
+
* `model-first-router.ts` and `model-scoring.ts` previously carried two copies
|
|
235
|
+
* of this rule that already disagreed about other phrases.
|
|
236
|
+
*/
|
|
237
|
+
export function isSmallTalk(text) {
|
|
238
|
+
const lower = (text ?? '').toLowerCase();
|
|
239
|
+
// `\b` on both sides: a greeting is a whole word, never a fragment of one.
|
|
240
|
+
const greetingRe = /\b(?:hello|hi|hey|howdy|greetings?|good\s+(?:morning|afternoon|evening))\b/g;
|
|
241
|
+
const stripped = lower.replace(greetingRe, ' ');
|
|
242
|
+
// No greeting word at all — including "this", "which", "anything".
|
|
243
|
+
if (stripped === lower)
|
|
244
|
+
return false;
|
|
245
|
+
// What is left must be punctuation and pleasantries, nothing that names work.
|
|
246
|
+
const fillerRe = /^(?:[\s,.!?~\-—–:;'"()\[\]]|"(?:s|t|re|ll|ve|d|m)"|\b(?:there|again|all|everyone|folks|team|buddy|mate|please|pls|thanks|thank|you|thx|and|ok|okay|k|so|just|now|yes|yeah|yep|sure|whats|what's|up|how|are|is|it|going|doing|was|were|been|im|i'm|am)\b)*$/;
|
|
247
|
+
return fillerRe.test(stripped);
|
|
248
|
+
}
|
|
249
|
+
/** The keyword ladder, unchanged — the vocabulary half of the decision. */
|
|
250
|
+
function complexityFromKeywords(text) {
|
|
65
251
|
// Check critical first (highest priority)
|
|
66
252
|
for (const keyword of COMPLEXITY_KEYWORDS.critical) {
|
|
67
253
|
if (keyword.test(text))
|