agent-nuvira 3.3.13 → 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/orchestrator.d.ts +31 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +74 -126
- 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 +765 -33
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +12 -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 +86 -0
- 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/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 +9 -1
- package/dist/cli/knowledge.d.ts.map +1 -1
- package/dist/cli/knowledge.js +93 -2
- package/dist/cli/knowledge.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +47 -12
- 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/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/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 +33 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -1
- package/dist/gateway/hook-contract.js +97 -0
- package/dist/gateway/hook-contract.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 +37 -0
- package/dist/inference/interface.d.ts.map +1 -1
- 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/route-resolver.d.ts +30 -0
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +158 -1
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tools.d.ts +16 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +51 -18
- 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 +68 -24
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +301 -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 +22 -1
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +37 -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 +229 -3
- package/dist/learning/knowledge-base.d.ts.map +1 -1
- package/dist/learning/knowledge-base.js +593 -24
- package/dist/learning/knowledge-base.js.map +1 -1
- 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.map +1 -1
- package/dist/learning/model-selection.js +41 -0
- 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/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/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/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/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 +20 -2
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +51 -7
- 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 +486 -26
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts.map +1 -1
- package/dist/tools/remediation-ladder.js +8 -0
- package/dist/tools/remediation-ladder.js.map +1 -1
- 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 +265 -10
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +321 -13
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +867 -66
- package/dist/tools/tool-loop.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 +11 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +362 -11
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +170 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +11 -2
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +24 -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-zjbdJnO-.js +210 -0
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
- package/src/web-dashboard/public/index.html +1 -1
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js +0 -210
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +0 -1
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Acceptance model — fit `P(accepted | features)` to the labels the harness now
|
|
3
|
+
* collects, and report it READ-ONLY.
|
|
4
|
+
*
|
|
5
|
+
* THE POINT OF THE WHOLE `userVerdict` WORK. Bundles 27–30 made it possible for a
|
|
6
|
+
* turn to carry a LABEL: the user accepted it, rejected it, or said nothing. This
|
|
7
|
+
* module is the first consumer — it fits a probability of acceptance to the
|
|
8
|
+
* harness's OWN features (did the turn verify, was it flagged, did it deliver),
|
|
9
|
+
* which is the thing a "quality score" was always supposed to be and could never
|
|
10
|
+
* be built from derived signals alone.
|
|
11
|
+
*
|
|
12
|
+
* WHAT IT REFUSES TO DO.
|
|
13
|
+
* - It never routes on an UNMEASURED or too-thin sample. `cachedAcceptanceFit`
|
|
14
|
+
* returns the same named refusal below the floor as `trainAcceptanceModel`, and
|
|
15
|
+
* the one routing consumer (`outcome-observation.ts` → the bandit's
|
|
16
|
+
* `qualityScore`) omits the field entirely unless the fit is `ok`. So a router
|
|
17
|
+
* cannot be moved by a probability fitted to three rows — the exact defect the
|
|
18
|
+
* programme removes. (NOTE: this file previously READ-ONLY; the user's decision
|
|
19
|
+
* of 2026-10-08 wired the fitted probability into the bandit's measured
|
|
20
|
+
* `qualityScore`, which is why the router now reads it. Below the floor, nothing
|
|
21
|
+
* changes.)
|
|
22
|
+
* - It never fits below the sample floor. With too few labelled turns, or with
|
|
23
|
+
* only one class, it returns a NAMED reason and no model — an underfit
|
|
24
|
+
* probability printed as if it were evidence is worse than printing nothing.
|
|
25
|
+
* - It never invents an acceptance. Only rows with a real verdict are used;
|
|
26
|
+
* `verdict: null` rows are excluded, because silence is not a positive.
|
|
27
|
+
*
|
|
28
|
+
* THE FEATURES are the ones the harness already records per turn, each of them
|
|
29
|
+
* evidence the run produced rather than the model's account of itself:
|
|
30
|
+
* verified — the turn's own check passed (`verified` / `delivered-and-read-back`)
|
|
31
|
+
* unverified — the turn ran but nothing verified it
|
|
32
|
+
* flag — an honesty flag fired (a defect the turn disclosed)
|
|
33
|
+
* delivered — the turn produced an authored artifact
|
|
34
|
+
*
|
|
35
|
+
* Training is deterministic (zero initial weights, fixed iterations), so the same
|
|
36
|
+
* corpus always yields the same coefficients and a report cannot drift run to run.
|
|
37
|
+
*/
|
|
38
|
+
import type { TurnReport } from './turn-report.js';
|
|
39
|
+
/** The features a fit sees. Binary by construction — measured flags, not magnitudes. */
|
|
40
|
+
export declare const ACCEPTANCE_FEATURES: readonly ["verified", "unverified", "flag", "delivered"];
|
|
41
|
+
export type AcceptanceFeature = (typeof ACCEPTANCE_FEATURES)[number];
|
|
42
|
+
export type AcceptanceFeatures = Record<AcceptanceFeature, number>;
|
|
43
|
+
/** Below this many labelled turns a fit is noise. */
|
|
44
|
+
export declare const MIN_LABELS_FOR_FIT = 20;
|
|
45
|
+
/** …and below this many of EITHER class it can only learn the base rate. */
|
|
46
|
+
export declare const MIN_PER_CLASS = 5;
|
|
47
|
+
/** One labelled turn: what the harness saw, and whether the user accepted it. */
|
|
48
|
+
export interface LabelledTurn {
|
|
49
|
+
traceId?: string;
|
|
50
|
+
provider?: string;
|
|
51
|
+
model?: string;
|
|
52
|
+
at: number;
|
|
53
|
+
accepted: boolean;
|
|
54
|
+
/** Where the label came from: `cli` / `dashboard` / `derived` (see `turn-feedback.ts`). */
|
|
55
|
+
source: string;
|
|
56
|
+
features: AcceptanceFeatures;
|
|
57
|
+
}
|
|
58
|
+
export interface AcceptanceModel {
|
|
59
|
+
weights: number[];
|
|
60
|
+
bias: number;
|
|
61
|
+
featureNames: AcceptanceFeature[];
|
|
62
|
+
n: number;
|
|
63
|
+
positives: number;
|
|
64
|
+
negatives: number;
|
|
65
|
+
trainedAt: number;
|
|
66
|
+
}
|
|
67
|
+
export type AcceptanceFit = {
|
|
68
|
+
ok: true;
|
|
69
|
+
model: AcceptanceModel;
|
|
70
|
+
} | {
|
|
71
|
+
ok: false;
|
|
72
|
+
reason: string;
|
|
73
|
+
n: number;
|
|
74
|
+
positives: number;
|
|
75
|
+
negatives: number;
|
|
76
|
+
};
|
|
77
|
+
/** Imported labels kept on disk, oldest drop first — a dataset, not an unbounded log. */
|
|
78
|
+
export declare const MAX_IMPORTED_LABELS = 5000;
|
|
79
|
+
/**
|
|
80
|
+
* Where an imported corpus's labels live. Kept separate from the traces because an
|
|
81
|
+
* imported row has no local trace to attach a `userVerdict` to — a fit simply READS
|
|
82
|
+
* these alongside the local labels, so a corpus collected elsewhere joins without
|
|
83
|
+
* the harness inventing a trace or rewriting one it does not own.
|
|
84
|
+
*/
|
|
85
|
+
export declare function importedLabelsPath(): string;
|
|
86
|
+
/** Best-effort format detection: by extension, else by the first non-space character. */
|
|
87
|
+
export declare function detectCorpusFormat(path: string | undefined, text: string): CorpusFormat;
|
|
88
|
+
/** Parse a shipped corpus in either format into labelled turns (malformed rows dropped). */
|
|
89
|
+
export declare function parseCorpusText(text: string, format: CorpusFormat): LabelledTurn[];
|
|
90
|
+
/** Read the imported labels store (best-effort; a corrupt line is skipped). */
|
|
91
|
+
export declare function readImportedLabels(): LabelledTurn[];
|
|
92
|
+
/**
|
|
93
|
+
* Merge an imported corpus into the local store, deduped by trace (or identity).
|
|
94
|
+
* Re-importing the same file is idempotent: rows already present are updated, not
|
|
95
|
+
* duplicated. Returns the counts a caller reports, and never throws.
|
|
96
|
+
*/
|
|
97
|
+
export declare function mergeImportedLabels(incoming: LabelledTurn[]): {
|
|
98
|
+
added: number;
|
|
99
|
+
updated: number;
|
|
100
|
+
total: number;
|
|
101
|
+
};
|
|
102
|
+
/** Names of the honesty flags a report set, for an audit view. */
|
|
103
|
+
export declare function flagNames(report: TurnReport | undefined): string[];
|
|
104
|
+
/**
|
|
105
|
+
* The features a fit sees for ONE trace — the SAME derivation `collectLocalTurns`
|
|
106
|
+
* uses, extracted so an audit (`nuvira rate --explain`) cannot disagree with the fit.
|
|
107
|
+
*/
|
|
108
|
+
export declare function featuresFromTrace(trace: {
|
|
109
|
+
turnReport?: TurnReport;
|
|
110
|
+
}, delivered: boolean): AcceptanceFeatures;
|
|
111
|
+
/**
|
|
112
|
+
* Features for a LIVE turn, derived from its `TurnReport` the SAME way
|
|
113
|
+
* {@link featuresFromTrace} derives them for a stored one — so the score a turn
|
|
114
|
+
* gets while it runs cannot disagree with the rows the fit trained on.
|
|
115
|
+
*/
|
|
116
|
+
export declare function featuresFromReport(report: TurnReport | undefined): AcceptanceFeatures;
|
|
117
|
+
/** How long a fitted model is reused before the corpus is re-read. */
|
|
118
|
+
export declare const FIT_CACHE_TTL_MS = 60000;
|
|
119
|
+
/**
|
|
120
|
+
* A MEMOIZED {@link trainAcceptanceModel}.
|
|
121
|
+
*
|
|
122
|
+
* WHY IT MUST BE CACHED: this is read on the live turn-outcome path, and fitting
|
|
123
|
+
* re-reads up to 1000 traces plus the corpus and runs 500 iterations. Doing that
|
|
124
|
+
* once per turn would put a synchronous fs read on every answer. The corpus only
|
|
125
|
+
* grows when a turn is rated, so a short TTL costs at most one refit per minute and
|
|
126
|
+
* cannot hide a label for longer than that.
|
|
127
|
+
*/
|
|
128
|
+
export declare function cachedAcceptanceFit(now?: number): AcceptanceFit;
|
|
129
|
+
/** Drop the memoized fit, so the next read refits (a CLI refresh, and tests). */
|
|
130
|
+
export declare function invalidateAcceptanceFit(): void;
|
|
131
|
+
/**
|
|
132
|
+
* Collect every LABELLED turn the harness has: the local labels plus the rows
|
|
133
|
+
* imported from another corpus. A LOCAL label for the same trace wins — the local
|
|
134
|
+
* record carries the features we measured ourselves.
|
|
135
|
+
*/
|
|
136
|
+
export declare function collectLabelledTurns(): LabelledTurn[];
|
|
137
|
+
/** One turn's evidence and label, for auditing a single rating. */
|
|
138
|
+
export interface TraceLabelExplanation {
|
|
139
|
+
traceId: string;
|
|
140
|
+
goal: string;
|
|
141
|
+
provider?: string;
|
|
142
|
+
model?: string;
|
|
143
|
+
verification?: string;
|
|
144
|
+
flags: string[];
|
|
145
|
+
delivered: boolean;
|
|
146
|
+
features: AcceptanceFeatures;
|
|
147
|
+
/** The user's label, or null when the turn is unrated. */
|
|
148
|
+
label: boolean | null;
|
|
149
|
+
source: string | null;
|
|
150
|
+
/** The fitted `P(accepted | features)` for THIS turn, or null when no model exists. */
|
|
151
|
+
probability: number | null;
|
|
152
|
+
fitReady: boolean;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Explain ONE trace: its features, its label and — when the fit has trained — the
|
|
156
|
+
* probability the model assigns to it. The features come from the SAME
|
|
157
|
+
* `featuresFromTrace` the fit uses, so an audit cannot disagree with the model.
|
|
158
|
+
*/
|
|
159
|
+
export declare function explainTraceLabel(traceId: string, now?: number): TraceLabelExplanation | null;
|
|
160
|
+
/** The outcome of reconciling an imported corpus against the local labels. */
|
|
161
|
+
export interface MergeResult {
|
|
162
|
+
/** Rows in the incoming file. */
|
|
163
|
+
incoming: number;
|
|
164
|
+
/** Rows written to the imported store (no local label for their trace). */
|
|
165
|
+
stored: number;
|
|
166
|
+
/** Rows whose trace already carries a DIFFERENT local label. */
|
|
167
|
+
conflicts: number;
|
|
168
|
+
/** Conflicts the incoming label won (`--replace`). */
|
|
169
|
+
replaced: number;
|
|
170
|
+
/** Conflicts the local label won (the default). */
|
|
171
|
+
keptLocal: number;
|
|
172
|
+
/** Rows whose trace already carries the SAME label — nothing to reconcile. */
|
|
173
|
+
matching: number;
|
|
174
|
+
/** The imported store size after the merge. */
|
|
175
|
+
total: number;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Overwrite one LOCAL label with an imported verdict (corpus row and trace). Used
|
|
179
|
+
* only by an EXPLICIT `--replace` — the default keeps the local label, because a
|
|
180
|
+
* label this machine recorded is one a person or the behaviour here produced.
|
|
181
|
+
*/
|
|
182
|
+
export declare function replaceLocalLabel(traceId: string, accepted: boolean, source: string, now?: number): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Reconcile an incoming corpus against the LOCAL labels, explicitly.
|
|
185
|
+
*
|
|
186
|
+
* A conflict is a trace the local record already labels differently. The default
|
|
187
|
+
* KEEPS the local label (it is this machine's own measurement) and reports the
|
|
188
|
+
* count; `replace: true` lets the incoming label win. Rows with no local label are
|
|
189
|
+
* simply stored. Deduped and idempotent like {@link mergeImportedLabels}.
|
|
190
|
+
*/
|
|
191
|
+
export declare function mergeLabelledCorpus(incoming: LabelledTurn[], opts?: {
|
|
192
|
+
replace?: boolean;
|
|
193
|
+
now?: number;
|
|
194
|
+
}): MergeResult;
|
|
195
|
+
/**
|
|
196
|
+
* Fit the logistic model. Deterministic; returns a NAMED reason rather than a
|
|
197
|
+
* model whenever the sample is too thin to mean anything. Trains on an arbitrary
|
|
198
|
+
* set of rows, so the offline fitter can reuse the identical maths on an EXPORTED
|
|
199
|
+
* corpus — a shipped corpus and this machine cannot disagree.
|
|
200
|
+
*/
|
|
201
|
+
export declare function fitLabelledTurns(rows: LabelledTurn[], now?: number): AcceptanceFit;
|
|
202
|
+
/** Fit to the LIVE corpus the harness has collected (local traces + imports). */
|
|
203
|
+
export declare function trainAcceptanceModel(now?: number): AcceptanceFit;
|
|
204
|
+
/** `P(accepted | features)` under a fitted model. */
|
|
205
|
+
export declare function predictAcceptance(model: AcceptanceModel, features: AcceptanceFeatures): number;
|
|
206
|
+
/** One review surface's worth of acceptance state, so CLI and dashboard agree. */
|
|
207
|
+
export interface AcceptanceSummary {
|
|
208
|
+
labelled: number;
|
|
209
|
+
accepted: number;
|
|
210
|
+
rejected: number;
|
|
211
|
+
/** Labels by provenance: `cli` / `dashboard` / `derived`. */
|
|
212
|
+
bySource: Record<string, number>;
|
|
213
|
+
byPair: Record<string, {
|
|
214
|
+
accepted: number;
|
|
215
|
+
rejected: number;
|
|
216
|
+
}>;
|
|
217
|
+
fit: AcceptanceFit;
|
|
218
|
+
}
|
|
219
|
+
/** The whole acceptance picture in one call — the ONE source the surfaces render. */
|
|
220
|
+
export declare function acceptanceSummary(now?: number): AcceptanceSummary;
|
|
221
|
+
/**
|
|
222
|
+
* Render a summary as human lines — the SINGLE renderer every surface uses.
|
|
223
|
+
*
|
|
224
|
+
* `nuvira rate --stats`, `model explain` and any future surface call THIS, so they
|
|
225
|
+
* cannot describe the same corpus two different ways. `focusPair` (optional) lists
|
|
226
|
+
* that `provider/model` first, which is how `model explain` keeps the decision's own
|
|
227
|
+
* pair at the top without a second formatter.
|
|
228
|
+
*/
|
|
229
|
+
export declare function formatAcceptanceSummary(s: AcceptanceSummary, focusPair?: string): string[];
|
|
230
|
+
/** Export formats for the labelled corpus. */
|
|
231
|
+
export type CorpusFormat = 'json' | 'csv';
|
|
232
|
+
/** CSV column order (stable, so an offline reader can rely on it). */
|
|
233
|
+
export declare const CORPUS_CSV_COLUMNS: readonly ["traceId", "provider", "model", "at", "accepted", "source", "verified", "unverified", "flag", "delivered"];
|
|
234
|
+
/**
|
|
235
|
+
* Serialize the labelled corpus for shipping and offline fitting — the SAME rows
|
|
236
|
+
* a fit here would read, so nothing is lost in the hand-off.
|
|
237
|
+
*
|
|
238
|
+
* JSON carries the full structure (features nested, plus provenance); CSV is the
|
|
239
|
+
* flat form for a spreadsheet, with one column per feature and `accepted` as 0/1.
|
|
240
|
+
*/
|
|
241
|
+
export declare function serializeLabelledTurns(rows: LabelledTurn[], format: CorpusFormat, now?: number): string;
|
|
242
|
+
/** Rated turns per `provider/model`, for the per-pair acceptance line. */
|
|
243
|
+
export declare function acceptanceByPair(): Record<string, {
|
|
244
|
+
accepted: number;
|
|
245
|
+
rejected: number;
|
|
246
|
+
}>;
|
|
247
|
+
//# sourceMappingURL=acceptance-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acceptance-model.d.ts","sourceRoot":"","sources":["../../src/learning/acceptance-model.ts"],"names":[],"mappings":"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"}
|