agent-nuvira 3.3.3 → 3.3.4
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 +13 -5
- package/dist/agent-sdk/src/agent.d.ts +2 -0
- package/dist/agent-sdk/src/agent.d.ts.map +1 -1
- package/dist/agent-sdk/src/define.d.ts +64 -0
- package/dist/agent-sdk/src/define.d.ts.map +1 -0
- package/dist/agent-sdk/src/define.js +76 -0
- package/dist/agent-sdk/src/define.js.map +1 -0
- package/dist/agent-sdk/src/index.d.ts +9 -0
- package/dist/agent-sdk/src/index.d.ts.map +1 -1
- package/dist/agent-sdk/src/index.js +9 -0
- package/dist/agent-sdk/src/index.js.map +1 -1
- package/dist/agent-sdk/src/scaffold.d.ts +11 -0
- package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
- package/dist/agent-sdk/src/scaffold.js +16 -6
- package/dist/agent-sdk/src/scaffold.js.map +1 -1
- package/dist/agents/long-form-plan.d.ts.map +1 -1
- package/dist/agents/long-form-plan.js +2 -1
- package/dist/agents/long-form-plan.js.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +5 -4
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/agent.d.ts +2 -2
- package/dist/cli/agent.js +10 -10
- package/dist/cli/chat.d.ts +94 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +354 -20
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +5 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +9 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +3 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/edit.js +2 -2
- package/dist/cli/eval.d.ts +17 -0
- package/dist/cli/eval.d.ts.map +1 -1
- package/dist/cli/eval.js +105 -2
- package/dist/cli/eval.js.map +1 -1
- package/dist/cli/execute.d.ts +16 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +192 -22
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/loop-executor.d.ts +55 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +212 -13
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +9 -8
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/models.d.ts +1 -1
- package/dist/cli/models.js +4 -4
- package/dist/cli/parity.d.ts +85 -0
- package/dist/cli/parity.d.ts.map +1 -0
- package/dist/cli/parity.js +506 -0
- package/dist/cli/parity.js.map +1 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +2 -1
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/retrieval.d.ts.map +1 -1
- package/dist/cli/retrieval.js +5 -4
- package/dist/cli/retrieval.js.map +1 -1
- package/dist/cli/sdk.js +4 -4
- package/dist/cli/sdk.js.map +1 -1
- package/dist/cli/trace.d.ts.map +1 -1
- package/dist/cli/trace.js +2 -1
- package/dist/cli/trace.js.map +1 -1
- package/dist/cli/workflow.js +2 -2
- package/dist/cli/workflow.js.map +1 -1
- package/dist/config/types.d.ts +44 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/findings/verdicts.d.ts +241 -0
- package/dist/findings/verdicts.d.ts.map +1 -0
- package/dist/findings/verdicts.js +284 -0
- package/dist/findings/verdicts.js.map +1 -0
- package/dist/gateway/adapters.d.ts +65 -0
- package/dist/gateway/adapters.d.ts.map +1 -1
- package/dist/gateway/adapters.js +216 -10
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/channel-directory.d.ts +31 -0
- package/dist/gateway/channel-directory.d.ts.map +1 -1
- package/dist/gateway/channel-directory.js +40 -0
- package/dist/gateway/channel-directory.js.map +1 -1
- package/dist/gateway/gateway-log.d.ts +1 -1
- package/dist/gateway/gateway-log.d.ts.map +1 -1
- package/dist/gateway/gateway-log.js.map +1 -1
- package/dist/gateway/hooks.d.ts +87 -19
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +62 -23
- package/dist/gateway/hooks.js.map +1 -1
- package/dist/gateway/inbound-media.d.ts +147 -0
- package/dist/gateway/inbound-media.d.ts.map +1 -0
- package/dist/gateway/inbound-media.js +317 -0
- package/dist/gateway/inbound-media.js.map +1 -0
- package/dist/gateway/inbox.d.ts +8 -1
- package/dist/gateway/inbox.d.ts.map +1 -1
- package/dist/gateway/inbox.js.map +1 -1
- package/dist/gateway/platform-config.d.ts +14 -0
- package/dist/gateway/platform-config.d.ts.map +1 -1
- package/dist/gateway/platform-config.js +26 -8
- package/dist/gateway/platform-config.js.map +1 -1
- package/dist/gateway/realtime.d.ts +114 -0
- package/dist/gateway/realtime.d.ts.map +1 -0
- package/dist/gateway/realtime.js +402 -0
- package/dist/gateway/realtime.js.map +1 -0
- package/dist/gateway/registry.d.ts +31 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +224 -4
- package/dist/gateway/registry.js.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
- package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
- package/dist/gateway/whatsapp/bridge.d.ts +6 -2
- package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/bridge.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/inference/factory.d.ts +14 -0
- package/dist/inference/factory.d.ts.map +1 -1
- package/dist/inference/factory.js +17 -0
- package/dist/inference/factory.js.map +1 -1
- package/dist/inference/groq-adapter.d.ts +2 -0
- package/dist/inference/groq-adapter.d.ts.map +1 -1
- package/dist/inference/groq-adapter.js +16 -6
- package/dist/inference/groq-adapter.js.map +1 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +29 -0
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/benchmark.d.ts.map +1 -1
- package/dist/learning/benchmark.js +3 -2
- package/dist/learning/benchmark.js.map +1 -1
- package/dist/learning/continuation.d.ts.map +1 -1
- package/dist/learning/continuation.js +2 -1
- package/dist/learning/continuation.js.map +1 -1
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +2 -1
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/deferred-task.d.ts.map +1 -1
- package/dist/learning/deferred-task.js +13 -4
- package/dist/learning/deferred-task.js.map +1 -1
- package/dist/learning/eval-framework.d.ts.map +1 -1
- package/dist/learning/eval-framework.js +2 -1
- package/dist/learning/eval-framework.js.map +1 -1
- package/dist/learning/long-form.d.ts.map +1 -1
- package/dist/learning/long-form.js +2 -1
- package/dist/learning/long-form.js.map +1 -1
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +2 -1
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/reasoning-cache.d.ts.map +1 -1
- package/dist/learning/reasoning-cache.js +2 -1
- package/dist/learning/reasoning-cache.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +37 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +66 -0
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +2 -1
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/retrieval.d.ts.map +1 -1
- package/dist/learning/retrieval.js +2 -1
- package/dist/learning/retrieval.js.map +1 -1
- package/dist/learning/seeded-benchmark.d.ts +160 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -0
- package/dist/learning/seeded-benchmark.js +321 -0
- package/dist/learning/seeded-benchmark.js.map +1 -0
- package/dist/learning/seeded-bugs.d.ts +142 -0
- package/dist/learning/seeded-bugs.d.ts.map +1 -0
- package/dist/learning/seeded-bugs.js +535 -0
- package/dist/learning/seeded-bugs.js.map +1 -0
- package/dist/learning/step-checkpoint.d.ts +127 -0
- package/dist/learning/step-checkpoint.d.ts.map +1 -0
- package/dist/learning/step-checkpoint.js +244 -0
- package/dist/learning/step-checkpoint.js.map +1 -0
- package/dist/nlu/intent-confirm.d.ts +23 -1
- package/dist/nlu/intent-confirm.d.ts.map +1 -1
- package/dist/nlu/intent-confirm.js +85 -2
- package/dist/nlu/intent-confirm.js.map +1 -1
- package/dist/nlu/learnings.d.ts +7 -0
- package/dist/nlu/learnings.d.ts.map +1 -1
- package/dist/nlu/learnings.js +7 -0
- package/dist/nlu/learnings.js.map +1 -1
- package/dist/observability/debug-log.d.ts +250 -0
- package/dist/observability/debug-log.d.ts.map +1 -0
- package/dist/observability/debug-log.js +500 -0
- package/dist/observability/debug-log.js.map +1 -0
- package/dist/observability/event-bus.d.ts.map +1 -1
- package/dist/observability/event-bus.js +4 -1
- package/dist/observability/event-bus.js.map +1 -1
- package/dist/observability/otel.d.ts +278 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +590 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/parity/drivers.d.ts +99 -0
- package/dist/parity/drivers.d.ts.map +1 -0
- package/dist/parity/drivers.js +1362 -0
- package/dist/parity/drivers.js.map +1 -0
- package/dist/parity/graph.d.ts +73 -0
- package/dist/parity/graph.d.ts.map +1 -0
- package/dist/parity/graph.js +162 -0
- package/dist/parity/graph.js.map +1 -0
- package/dist/parity/matrix.d.ts +105 -0
- package/dist/parity/matrix.d.ts.map +1 -0
- package/dist/parity/matrix.js +352 -0
- package/dist/parity/matrix.js.map +1 -0
- package/dist/parity/observation.d.ts +444 -0
- package/dist/parity/observation.d.ts.map +1 -0
- package/dist/parity/observation.js +333 -0
- package/dist/parity/observation.js.map +1 -0
- package/dist/parity/scenarios.d.ts +229 -0
- package/dist/parity/scenarios.d.ts.map +1 -0
- package/dist/parity/scenarios.js +175 -0
- package/dist/parity/scenarios.js.map +1 -0
- package/dist/parity/surfaces.d.ts +122 -0
- package/dist/parity/surfaces.d.ts.map +1 -0
- package/dist/parity/surfaces.js +190 -0
- package/dist/parity/surfaces.js.map +1 -0
- package/dist/runtime/fault-injection.d.ts +173 -0
- package/dist/runtime/fault-injection.d.ts.map +1 -0
- package/dist/runtime/fault-injection.js +281 -0
- package/dist/runtime/fault-injection.js.map +1 -0
- package/dist/tools/child-agent-entry.d.ts +23 -0
- package/dist/tools/child-agent-entry.d.ts.map +1 -0
- package/dist/tools/child-agent-entry.js +129 -0
- package/dist/tools/child-agent-entry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts +124 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -0
- package/dist/tools/child-agent-runtime.js +704 -0
- package/dist/tools/child-agent-runtime.js.map +1 -0
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +82 -10
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/delegation-system.d.ts +31 -0
- package/dist/tools/delegation-system.d.ts.map +1 -1
- package/dist/tools/delegation-system.js +70 -9
- package/dist/tools/delegation-system.js.map +1 -1
- package/dist/tools/extract/docx.d.ts +27 -0
- package/dist/tools/extract/docx.d.ts.map +1 -0
- package/dist/tools/extract/docx.js +48 -0
- package/dist/tools/extract/docx.js.map +1 -0
- package/dist/tools/extract/html-text.d.ts +27 -0
- package/dist/tools/extract/html-text.d.ts.map +1 -0
- package/dist/tools/extract/html-text.js +86 -0
- package/dist/tools/extract/html-text.js.map +1 -0
- package/dist/tools/extract/pdf-ocr.d.ts +58 -0
- package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
- package/dist/tools/extract/pdf-ocr.js +116 -0
- package/dist/tools/extract/pdf-ocr.js.map +1 -0
- package/dist/tools/extract/pdf.d.ts +65 -0
- package/dist/tools/extract/pdf.d.ts.map +1 -0
- package/dist/tools/extract/pdf.js +197 -0
- package/dist/tools/extract/pdf.js.map +1 -0
- package/dist/tools/extract/pptx.d.ts +32 -0
- package/dist/tools/extract/pptx.d.ts.map +1 -0
- package/dist/tools/extract/pptx.js +77 -0
- package/dist/tools/extract/pptx.js.map +1 -0
- package/dist/tools/extract/xlsx.d.ts +47 -0
- package/dist/tools/extract/xlsx.d.ts.map +1 -0
- package/dist/tools/extract/xlsx.js +111 -0
- package/dist/tools/extract/xlsx.js.map +1 -0
- package/dist/tools/finding-tool.d.ts +76 -0
- package/dist/tools/finding-tool.d.ts.map +1 -0
- package/dist/tools/finding-tool.js +125 -0
- package/dist/tools/finding-tool.js.map +1 -0
- package/dist/tools/messaging-tools.d.ts +41 -11
- package/dist/tools/messaging-tools.d.ts.map +1 -1
- package/dist/tools/messaging-tools.js +104 -55
- package/dist/tools/messaging-tools.js.map +1 -1
- package/dist/tools/neutts-synth.d.ts +27 -3
- package/dist/tools/neutts-synth.d.ts.map +1 -1
- package/dist/tools/neutts-synth.js +57 -13
- package/dist/tools/neutts-synth.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts +43 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +13 -2
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/read-extract.d.ts +116 -45
- package/dist/tools/read-extract.d.ts.map +1 -1
- package/dist/tools/read-extract.js +494 -158
- package/dist/tools/read-extract.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +152 -23
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/subagent-refusal.d.ts +15 -0
- package/dist/tools/subagent-refusal.d.ts.map +1 -0
- package/dist/tools/subagent-refusal.js +18 -0
- package/dist/tools/subagent-refusal.js.map +1 -0
- package/dist/tools/subagent-spawner.d.ts +122 -0
- package/dist/tools/subagent-spawner.d.ts.map +1 -1
- package/dist/tools/subagent-spawner.js +249 -28
- package/dist/tools/subagent-spawner.js.map +1 -1
- package/dist/tools/tool-hooks.d.ts +177 -0
- package/dist/tools/tool-hooks.d.ts.map +1 -0
- package/dist/tools/tool-hooks.js +427 -0
- package/dist/tools/tool-hooks.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +82 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +167 -9
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/tool-refusal.d.ts +68 -0
- package/dist/tools/tool-refusal.d.ts.map +1 -0
- package/dist/tools/tool-refusal.js +78 -0
- package/dist/tools/tool-refusal.js.map +1 -0
- package/dist/tools/toolsets.d.ts +8 -0
- package/dist/tools/toolsets.d.ts.map +1 -1
- package/dist/tools/toolsets.js +12 -2
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/vision-tools.d.ts +88 -83
- package/dist/tools/vision-tools.d.ts.map +1 -1
- package/dist/tools/vision-tools.js +134 -103
- package/dist/tools/vision-tools.js.map +1 -1
- package/dist/tools/worktree.d.ts +210 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +374 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/utils/format.d.ts +3 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +32 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/web-dashboard/attachment-extract.d.ts +64 -0
- package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
- package/dist/web-dashboard/attachment-extract.js +154 -0
- package/dist/web-dashboard/attachment-extract.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +108 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +36 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/hub-data.d.ts +37 -0
- package/dist/web-dashboard/hub-data.d.ts.map +1 -1
- package/dist/web-dashboard/hub-data.js +61 -1
- package/dist/web-dashboard/hub-data.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +14 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +247 -13
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +196 -48
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +18 -3
- package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/dist/tools/child-agent-worker.js +0 -212
- package/src/web-dashboard/public/assets/index-CxDj7p6i.js +0 -207
- package/src/web-dashboard/public/assets/index-CxDj7p6i.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-checkpoint.d.ts","sourceRoot":"","sources":["../../src/learning/step-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAOjD,mFAAmF;AAEnF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,aAAa,GAAG,SAAS,CAgBpG;AAED,mFAAmF;AAEnF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAE1F;AAmED,mFAAmF;AAEnF;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC7D,uEAAuE;IACvE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtE,gEAAgE;IAChE,UAAU,IAAI,MAAM,CAAC;CACtB;AA2BD,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,UAAU,CAgDlG;AAMD,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAuCnG"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WS5 (#27) — the resume ledger: replay a run's unchanged MODEL CALLS.
|
|
3
|
+
*
|
|
4
|
+
* WHY REPLAYING MODEL CALLS IS THE USEFUL UNIT. `--resume` already existed for the
|
|
5
|
+
* pipeline engine, where it skips completed TASKS (`agents/checkpoint-store.ts`).
|
|
6
|
+
* A task is a coarse unit: one that half-finished is re-run from its start, and on
|
|
7
|
+
* an agent LOOP — where a turn is many model calls, each of which may have cost a
|
|
8
|
+
* slow provider round trip — the expensive thing is the calls, not the tasks. So
|
|
9
|
+
* this ledger records each step's answer and replays the ones whose input has not
|
|
10
|
+
* changed, which is what makes a re-run cost two calls instead of twenty.
|
|
11
|
+
*
|
|
12
|
+
* WHY THE KEY IS A DIGEST OF THE WHOLE INPUT, NOT THE STEP NUMBER. A step's number
|
|
13
|
+
* is the same on every run and means nothing about its content: replay by position
|
|
14
|
+
* and a plan that shifted by one step serves an answer to a question that was never
|
|
15
|
+
* asked — silently, because a replayed answer is indistinguishable from a fresh one
|
|
16
|
+
* in the transcript. The digest covers the whole thread AND the tool schema, so a
|
|
17
|
+
* changed tool result, a changed schema, a reordered message or an edited goal all
|
|
18
|
+
* MISS and the step is paid for again.
|
|
19
|
+
*
|
|
20
|
+
* WHY AN EMPTY RECORDED STEP IS NEVER REPLAYED. A response with no text and no tool
|
|
21
|
+
* call is a provider failure, not an answer. Replaying it would reproduce the
|
|
22
|
+
* failure while removing the only thing that would have fixed it — the call itself
|
|
23
|
+
* — and would hide the fact that the provider was never consulted.
|
|
24
|
+
*
|
|
25
|
+
* WHY NOTHING HAPPENS WITHOUT A REQUEST. An ordinary run must not read, write, or
|
|
26
|
+
* even look for a record: `--resume` is the only thing that opens the store, and a
|
|
27
|
+
* turn that was never asked to resume pays no filesystem cost and cannot inherit
|
|
28
|
+
* another run's answers by accident.
|
|
29
|
+
*
|
|
30
|
+
* WHY IT REPORTS WHAT IT LOADED AND WHAT IT REPLAYED SEPARATELY. At open time the
|
|
31
|
+
* only knowable fact is what the RECORD holds; whether any of it will be usable is
|
|
32
|
+
* decided step by step, once the thread is actually built. Announcing an outcome at
|
|
33
|
+
* open is how a resumed run came to print "nothing to replay" before it had tried
|
|
34
|
+
* anything — including on runs that then replayed everything.
|
|
35
|
+
*/
|
|
36
|
+
import { createHash } from 'node:crypto';
|
|
37
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
38
|
+
import { join } from 'node:path';
|
|
39
|
+
import { checkpointIdFor } from '../agents/checkpoint-store.js';
|
|
40
|
+
import { envBuff, resolveNuviraHome } from '../config/paths.js';
|
|
41
|
+
/** The environment key a deployment asks for a resume through. */
|
|
42
|
+
export const RESUME_ENABLE_ENV = 'NUVIRA_RESUME';
|
|
43
|
+
/** Why a recorded step could not be used. Reported, never merely logged. */
|
|
44
|
+
const CHANGED_REASON = 'its input changed';
|
|
45
|
+
const EMPTY_REASON = 'the recorded step was an empty provider response';
|
|
46
|
+
const MISSING_REASON = 'not in the record';
|
|
47
|
+
/**
|
|
48
|
+
* Resolve a resume request from a caller's option, with the environment as the
|
|
49
|
+
* fallback.
|
|
50
|
+
*
|
|
51
|
+
* `undefined` means nobody said anything, and only then does `NUVIRA_RESUME`
|
|
52
|
+
* decide (`1` asks for the auto record, any other value names one). An explicit
|
|
53
|
+
* `false` is a DECISION and outranks the environment, so a surface with an off
|
|
54
|
+
* switch can decline a request a deployment made for every turn.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveResumeRequest(input) {
|
|
57
|
+
const explicit = input.resume;
|
|
58
|
+
if (explicit === false)
|
|
59
|
+
return undefined;
|
|
60
|
+
if (typeof explicit === 'string') {
|
|
61
|
+
const id = explicit.trim();
|
|
62
|
+
// An empty string is not a record name; it is "this ask, this directory".
|
|
63
|
+
return id === '' ? {} : { id };
|
|
64
|
+
}
|
|
65
|
+
if (explicit === true)
|
|
66
|
+
return {};
|
|
67
|
+
const raw = envBuff('RESUME');
|
|
68
|
+
if (raw === undefined)
|
|
69
|
+
return undefined;
|
|
70
|
+
const value = raw.trim();
|
|
71
|
+
if (value === '' || value === '0' || value.toLowerCase() === 'false')
|
|
72
|
+
return undefined;
|
|
73
|
+
if (value === '1' || value.toLowerCase() === 'true' || value.toLowerCase() === 'yes')
|
|
74
|
+
return {};
|
|
75
|
+
return { id: value };
|
|
76
|
+
}
|
|
77
|
+
/** ─── Digests ──────────────────────────────────────────────────────────────── */
|
|
78
|
+
/**
|
|
79
|
+
* The key a step is stored under: a hash of its whole input.
|
|
80
|
+
*
|
|
81
|
+
* Key ORDER is normalised, so a tool-call argument object that came back with its
|
|
82
|
+
* keys in a different order hashes the same — that is a JSON-round-trip artefact,
|
|
83
|
+
* not a change of input — while a different VALUE anywhere hashes differently.
|
|
84
|
+
*/
|
|
85
|
+
export function stepDigest(thread, schemas) {
|
|
86
|
+
return createHash('sha256').update(stableJson({ thread, schemas })).digest('hex');
|
|
87
|
+
}
|
|
88
|
+
/** JSON with object keys sorted, so two equal values always encode identically. */
|
|
89
|
+
function stableJson(value) {
|
|
90
|
+
if (value === null || typeof value !== 'object')
|
|
91
|
+
return JSON.stringify(value) ?? 'null';
|
|
92
|
+
if (Array.isArray(value)) {
|
|
93
|
+
return `[${value.map((item) => stableJson(item === undefined ? null : item)).join(',')}]`;
|
|
94
|
+
}
|
|
95
|
+
const record = value;
|
|
96
|
+
const keys = Object.keys(record).filter((key) => record[key] !== undefined).sort();
|
|
97
|
+
return `{${keys.map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(',')}}`;
|
|
98
|
+
}
|
|
99
|
+
function stepsDir() {
|
|
100
|
+
const base = envBuff('MEMORY_DIR') || join(resolveNuviraHome(), 'memory');
|
|
101
|
+
return join(base, 'checkpoints', 'steps');
|
|
102
|
+
}
|
|
103
|
+
function recordPath(id) {
|
|
104
|
+
return join(stepsDir(), `${id}.json`);
|
|
105
|
+
}
|
|
106
|
+
/** Read a record, best-effort. A corrupt record is a miss, never a crash. */
|
|
107
|
+
function readRecord(id) {
|
|
108
|
+
try {
|
|
109
|
+
const path = recordPath(id);
|
|
110
|
+
if (!existsSync(path))
|
|
111
|
+
return [];
|
|
112
|
+
const parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
113
|
+
if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.steps))
|
|
114
|
+
return [];
|
|
115
|
+
return parsed.steps.filter((entry) => !!entry && typeof entry.key === 'string' && typeof entry.digest === 'string');
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** Write a record, best-effort. Returns whether it reached the disk. */
|
|
122
|
+
function writeRecord(file) {
|
|
123
|
+
try {
|
|
124
|
+
mkdirSync(stepsDir(), { recursive: true });
|
|
125
|
+
writeFileSync(recordPath(file.id), JSON.stringify(file, null, 2), 'utf-8');
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** The ledger instances this module created, so `closeResume` can read its state. */
|
|
133
|
+
const STATES = new WeakMap();
|
|
134
|
+
/** A response with no text and no tool call is a provider failure, not an answer. */
|
|
135
|
+
function isEmptyResponse(response) {
|
|
136
|
+
if (!response || typeof response !== 'object')
|
|
137
|
+
return true;
|
|
138
|
+
const text = typeof response.content === 'string' ? response.content.trim() : '';
|
|
139
|
+
const calls = Array.isArray(response.toolCalls) ? response.toolCalls.length : 0;
|
|
140
|
+
return text === '' && calls === 0;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Open the record for this ask, reading it once (a record is not re-read per step).
|
|
144
|
+
*/
|
|
145
|
+
export function openResume(input) {
|
|
146
|
+
const id = input.resume.id?.trim() || checkpointIdFor(input.goal, input.cwd);
|
|
147
|
+
const prior = readRecord(id);
|
|
148
|
+
const state = {
|
|
149
|
+
id,
|
|
150
|
+
goal: input.goal,
|
|
151
|
+
cwd: input.cwd,
|
|
152
|
+
loaded: prior.length,
|
|
153
|
+
replayed: 0,
|
|
154
|
+
modelCalls: 0,
|
|
155
|
+
misses: new Map(),
|
|
156
|
+
staged: new Map(),
|
|
157
|
+
};
|
|
158
|
+
const byKey = new Map(prior.map((entry) => [entry.key, entry]));
|
|
159
|
+
const ledger = {
|
|
160
|
+
replay(key, digest) {
|
|
161
|
+
const entry = byKey.get(key);
|
|
162
|
+
if (!entry) {
|
|
163
|
+
countMiss(state, MISSING_REASON);
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
if (entry.digest !== digest) {
|
|
167
|
+
countMiss(state, CHANGED_REASON);
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
if (isEmptyResponse(entry.response)) {
|
|
171
|
+
countMiss(state, EMPTY_REASON);
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
state.replayed += 1;
|
|
175
|
+
// Carried forward: a step this run did not PAY for is still part of what the
|
|
176
|
+
// next resume should be able to replay, so it goes back into the record.
|
|
177
|
+
state.staged.set(key, entry);
|
|
178
|
+
return entry.response;
|
|
179
|
+
},
|
|
180
|
+
record(key, digest, response) {
|
|
181
|
+
state.modelCalls += 1;
|
|
182
|
+
state.staged.set(key, { key, digest, response });
|
|
183
|
+
},
|
|
184
|
+
openNotice() {
|
|
185
|
+
return state.loaded > 0
|
|
186
|
+
? `↩️ resumed: ${state.loaded} recorded step(s) loaded — a step replays only when its whole input is unchanged`
|
|
187
|
+
: '↩️ no record for this ask in this directory yet — this run will write one';
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
STATES.set(ledger, state);
|
|
191
|
+
return { id, goal: input.goal, cwd: input.cwd, ledger };
|
|
192
|
+
}
|
|
193
|
+
function countMiss(state, reason) {
|
|
194
|
+
state.misses.set(reason, (state.misses.get(reason) ?? 0) + 1);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Close the ledger: write back what this run learned, and report the real counts.
|
|
198
|
+
*
|
|
199
|
+
* The record is rewritten only from what this run staged — the entries it replayed
|
|
200
|
+
* plus the ones it paid for — which is what makes the chain work: the next resume
|
|
201
|
+
* replays what this one learned, and a step nobody could use is not carried along
|
|
202
|
+
* as if it had been.
|
|
203
|
+
*/
|
|
204
|
+
export function closeResume(resume, input) {
|
|
205
|
+
const state = STATES.get(resume.ledger);
|
|
206
|
+
if (!state) {
|
|
207
|
+
const notice = '↩️ resume probe: replayed 0, made 0 model call(s)';
|
|
208
|
+
return { id: resume.id, replayed: 0, modelCalls: 0, saved: false, notice };
|
|
209
|
+
}
|
|
210
|
+
const steps = [...state.staged.values()];
|
|
211
|
+
let saved;
|
|
212
|
+
if (steps.length === 0) {
|
|
213
|
+
// Nothing was learned and nothing was replayed. Writing an empty record would
|
|
214
|
+
// REPLACE a usable one with nothing, so the file is left alone.
|
|
215
|
+
saved = true;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
saved = writeRecord({
|
|
219
|
+
id: state.id,
|
|
220
|
+
goal: input.goal,
|
|
221
|
+
cwd: input.cwd,
|
|
222
|
+
savedAt: Date.now(),
|
|
223
|
+
steps,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
const lines = [
|
|
227
|
+
`↩️ resume probe: replayed ${state.replayed}, made ${state.modelCalls} model call(s)`,
|
|
228
|
+
];
|
|
229
|
+
if (state.replayed === 0 && state.misses.size > 0) {
|
|
230
|
+
const reasons = [...state.misses.entries()].map(([reason, count]) => `${reason} (${count})`);
|
|
231
|
+
lines.push(` why not: ${reasons.join(', ')}`);
|
|
232
|
+
}
|
|
233
|
+
if (!saved) {
|
|
234
|
+
lines.push(' the record could not be written — the next resume will not see this run');
|
|
235
|
+
}
|
|
236
|
+
return {
|
|
237
|
+
id: state.id,
|
|
238
|
+
replayed: state.replayed,
|
|
239
|
+
modelCalls: state.modelCalls,
|
|
240
|
+
saved,
|
|
241
|
+
notice: lines.join('\n'),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=step-checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-checkpoint.js","sourceRoot":"","sources":["../../src/learning/step-checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,19 @@
|
|
|
24
24
|
* the NLU from a failed probe would encode an outage as a rule, which is the
|
|
25
25
|
* worst possible outcome: the router would get worse exactly when the pool
|
|
26
26
|
* is down.
|
|
27
|
+
*
|
|
28
|
+
* AND IT NOW CARRIES A VERDICT, because restraint 3 was only half the promise.
|
|
29
|
+
* `learnings.ts` says a learning is written only when a misreading has been
|
|
30
|
+
* CONFIRMED — but "confirmed" meant the model said so, with nothing recorded that
|
|
31
|
+
* a second party could check, so a correction nobody could justify was persisted
|
|
32
|
+
* and silently re-routed every later ask that matched. The decision is now a
|
|
33
|
+
* `Finding` (`src/findings/verdicts.ts`): the model's stated reason is the
|
|
34
|
+
* evidence, and only a CONFIRMED verdict is TAUGHT. A correction with no reason
|
|
35
|
+
* is still ACTED ON — the turn takes the better route — it is just not written
|
|
36
|
+
* down as a rule, which is the difference between a decision and a permanent
|
|
37
|
+
* change to the router.
|
|
27
38
|
*/
|
|
39
|
+
import { type Finding } from '../findings/verdicts.js';
|
|
28
40
|
import { type NluLearning } from './learnings.js';
|
|
29
41
|
import type { AskKind } from './conversation-gate.js';
|
|
30
42
|
/** What one confirmation established. */
|
|
@@ -35,10 +47,20 @@ export interface IntentConfirmResult {
|
|
|
35
47
|
agreed: boolean;
|
|
36
48
|
/** The model's one-line reason, when it gave one. */
|
|
37
49
|
reason?: string;
|
|
38
|
-
/** The learning written, when the reading was corrected. */
|
|
50
|
+
/** The learning written, when the reading was corrected AND confirmed. */
|
|
39
51
|
learning?: NluLearning;
|
|
40
52
|
/** True when the probe could not run (no model / unreadable answer). */
|
|
41
53
|
failed?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* The verdict this decision carries, with its evidence.
|
|
56
|
+
*
|
|
57
|
+
* Always present, including when the probe failed: "we could not establish a
|
|
58
|
+
* reading" is itself a fact about the turn, and a caller composing a report
|
|
59
|
+
* (`src/findings/verdicts.ts` `describeFinding`) should be able to print the
|
|
60
|
+
* decision and see that it was a guess rather than infer it from a missing
|
|
61
|
+
* field.
|
|
62
|
+
*/
|
|
63
|
+
finding: Finding;
|
|
42
64
|
}
|
|
43
65
|
/**
|
|
44
66
|
* The audit prompt. Kept to a JSON contract with the decision space spelled out,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-confirm.d.ts","sourceRoot":"","sources":["../../src/nlu/intent-confirm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"intent-confirm.d.ts","sourceRoot":"","sources":["../../src/nlu/intent-confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAmD,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,yCAAyC;AACzC,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAiDD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAc7E;AAOD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CA0B7G;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyE/B;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAI3D;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxE"}
|
|
@@ -24,8 +24,54 @@
|
|
|
24
24
|
* the NLU from a failed probe would encode an outage as a rule, which is the
|
|
25
25
|
* worst possible outcome: the router would get worse exactly when the pool
|
|
26
26
|
* is down.
|
|
27
|
+
*
|
|
28
|
+
* AND IT NOW CARRIES A VERDICT, because restraint 3 was only half the promise.
|
|
29
|
+
* `learnings.ts` says a learning is written only when a misreading has been
|
|
30
|
+
* CONFIRMED — but "confirmed" meant the model said so, with nothing recorded that
|
|
31
|
+
* a second party could check, so a correction nobody could justify was persisted
|
|
32
|
+
* and silently re-routed every later ask that matched. The decision is now a
|
|
33
|
+
* `Finding` (`src/findings/verdicts.ts`): the model's stated reason is the
|
|
34
|
+
* evidence, and only a CONFIRMED verdict is TAUGHT. A correction with no reason
|
|
35
|
+
* is still ACTED ON — the turn takes the better route — it is just not written
|
|
36
|
+
* down as a rule, which is the difference between a decision and a permanent
|
|
37
|
+
* change to the router.
|
|
27
38
|
*/
|
|
39
|
+
import { confirmFinding, plausibleFinding } from '../findings/verdicts.js';
|
|
28
40
|
import { recordLearning } from './learnings.js';
|
|
41
|
+
/** The claim a confirmation asserts: which kind serves the ask. */
|
|
42
|
+
function claimFor(ask, reading) {
|
|
43
|
+
const shown = ask.length > 120 ? `${ask.slice(0, 120)}…` : ask;
|
|
44
|
+
const as = reading === 'pipeline' ? 'the coding pipeline' : 'a direct written answer';
|
|
45
|
+
return `the ask "${shown}" is best served by ${as}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The model's stated reason, as evidence.
|
|
49
|
+
*
|
|
50
|
+
* This is the whole bar, and it is a deliberately modest one: a routing probe
|
|
51
|
+
* cannot run a test or read a file, so the only check available to it is that the
|
|
52
|
+
* model can say WHY. A correction the model could not justify is not promoted,
|
|
53
|
+
* and therefore is not persisted into a rule that outlives the conversation.
|
|
54
|
+
*/
|
|
55
|
+
function reasonEvidence(reason) {
|
|
56
|
+
const ref = String(reason ?? '').trim();
|
|
57
|
+
return ref ? [{ kind: 'observation', ref, detail: 'stated reason from the probe model' }] : [];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The finding for one decision: PLAUSIBLE unless the probe justified it.
|
|
61
|
+
*
|
|
62
|
+
* `outcome` is required and always says what BECAME of the finding, because an
|
|
63
|
+
* outcome is what separates a finding from a status line — "the route was
|
|
64
|
+
* corrected" and "no verdict: the answer did not state a reading" are different
|
|
65
|
+
* facts and must not both render as silence.
|
|
66
|
+
*/
|
|
67
|
+
function decisionFinding(input) {
|
|
68
|
+
return confirmFinding(plausibleFinding({
|
|
69
|
+
claim: claimFor(input.ask, input.reading),
|
|
70
|
+
outcome: input.outcome,
|
|
71
|
+
source: 'intent-confirm',
|
|
72
|
+
...(input.now !== undefined ? { at: input.now } : {}),
|
|
73
|
+
}), reasonEvidence(input.reason), { outcome: input.outcome }).finding;
|
|
74
|
+
}
|
|
29
75
|
/**
|
|
30
76
|
* The audit prompt. Kept to a JSON contract with the decision space spelled out,
|
|
31
77
|
* because the model is being asked to judge a routing decision — not to answer
|
|
@@ -101,7 +147,17 @@ export async function confirmRoutedIntent(input) {
|
|
|
101
147
|
}
|
|
102
148
|
catch {
|
|
103
149
|
// The probe is best-effort by contract: a failure means "no verdict".
|
|
104
|
-
return {
|
|
150
|
+
return {
|
|
151
|
+
kind: input.routed,
|
|
152
|
+
agreed: true,
|
|
153
|
+
failed: true,
|
|
154
|
+
finding: decisionFinding({
|
|
155
|
+
ask: input.ask,
|
|
156
|
+
reading: input.routed,
|
|
157
|
+
outcome: 'no verdict — the probe could not run, so the reading stands unexamined',
|
|
158
|
+
...(input.now !== undefined ? { now: input.now } : {}),
|
|
159
|
+
}),
|
|
160
|
+
};
|
|
105
161
|
}
|
|
106
162
|
const parsed = parseIntentConfirmReply(raw);
|
|
107
163
|
if (!parsed.understood || !parsed.kind || parsed.kind === input.routed) {
|
|
@@ -110,14 +166,35 @@ export async function confirmRoutedIntent(input) {
|
|
|
110
166
|
agreed: true,
|
|
111
167
|
...(parsed.reason ? { reason: parsed.reason } : {}),
|
|
112
168
|
...(parsed.understood ? {} : { failed: true }),
|
|
169
|
+
finding: decisionFinding({
|
|
170
|
+
ask: input.ask,
|
|
171
|
+
reading: input.routed,
|
|
172
|
+
outcome: parsed.understood
|
|
173
|
+
? 'the reading was not changed'
|
|
174
|
+
: 'no verdict — the answer did not state a reading',
|
|
175
|
+
...(parsed.reason ? { reason: parsed.reason } : {}),
|
|
176
|
+
...(input.now !== undefined ? { now: input.now } : {}),
|
|
177
|
+
}),
|
|
113
178
|
};
|
|
114
179
|
}
|
|
180
|
+
// The corrected reading — the one that can turn into a rule. It is ACTED ON
|
|
181
|
+
// whatever its verdict (the turn takes the better route), and TAUGHT only when
|
|
182
|
+
// the model justified it, which is the gate: see the header.
|
|
183
|
+
const finding = decisionFinding({
|
|
184
|
+
ask: input.ask,
|
|
185
|
+
reading: parsed.kind,
|
|
186
|
+
outcome: `the route was corrected from ${input.routed} to ${parsed.kind}`,
|
|
187
|
+
...(parsed.reason ? { reason: parsed.reason } : {}),
|
|
188
|
+
...(input.now !== undefined ? { now: input.now } : {}),
|
|
189
|
+
});
|
|
115
190
|
const result = {
|
|
116
191
|
kind: parsed.kind,
|
|
117
192
|
agreed: false,
|
|
193
|
+
finding,
|
|
118
194
|
...(parsed.reason ? { reason: parsed.reason } : {}),
|
|
119
195
|
};
|
|
120
|
-
|
|
196
|
+
const confirmed = finding.verdict === 'CONFIRMED' && finding.evidence.length > 0;
|
|
197
|
+
if (confirmed && input.record !== false) {
|
|
121
198
|
const learning = recordLearning({
|
|
122
199
|
text: input.ask,
|
|
123
200
|
from: input.routed,
|
|
@@ -128,6 +205,12 @@ export async function confirmRoutedIntent(input) {
|
|
|
128
205
|
if (learning)
|
|
129
206
|
result.learning = learning;
|
|
130
207
|
}
|
|
208
|
+
if (!confirmed) {
|
|
209
|
+
result.finding = {
|
|
210
|
+
...finding,
|
|
211
|
+
outcome: `${finding.outcome} — not learned: nothing the model could be checked against`,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
131
214
|
return result;
|
|
132
215
|
}
|
|
133
216
|
/** The line a sender sees when the audit CONFIRMS the reading. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-confirm.js","sourceRoot":"","sources":["../../src/nlu/intent-confirm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"intent-confirm.js","sourceRoot":"","sources":["../../src/nlu/intent-confirm.ts"],"names":[],"mappings":"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"}
|
package/dist/nlu/learnings.d.ts
CHANGED
|
@@ -16,6 +16,13 @@
|
|
|
16
16
|
* the store stays inspectable — a human can read exactly which asks were
|
|
17
17
|
* misread and how.
|
|
18
18
|
*
|
|
19
|
+
* CONFIRMED NOW MEANS SOMETHING CHECKABLE (`src/findings/verdicts.ts`). It used
|
|
20
|
+
* to mean "the model said so": a correction it could not justify was persisted
|
|
21
|
+
* anyway, and a rule outlives the conversation — it re-routes every later ask
|
|
22
|
+
* that matches, with nothing on file to review. The probe's stated reason is
|
|
23
|
+
* recorded as the evidence, and a correction without one stays PLAUSIBLE: acted
|
|
24
|
+
* on for this turn, never taught as a rule.
|
|
25
|
+
*
|
|
19
26
|
* MATCHING IS DELIBERATELY NARROW. A learning applies to the same ask, not to a
|
|
20
27
|
* similar-looking one: word order and repeated words are ignored (token set), but
|
|
21
28
|
* nothing else is. A loose match would be worse than no learning at all — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/nlu/learnings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"learnings.d.ts","sourceRoot":"","sources":["../../src/nlu/learnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,EAAE,EAAE,OAAO,CAAC;IACZ,0CAA0C;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAOnE;AAeD;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAkB7C;AA6BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,WAAW,GAAG,SAAS,CA6B1B;AAwCD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAsBtF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,OAAO,EAAE,OAAO,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAKtD;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAW9E;AAED,wEAAwE;AACxE,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAE7C;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMlD;AAED,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
package/dist/nlu/learnings.js
CHANGED
|
@@ -16,6 +16,13 @@
|
|
|
16
16
|
* the store stays inspectable — a human can read exactly which asks were
|
|
17
17
|
* misread and how.
|
|
18
18
|
*
|
|
19
|
+
* CONFIRMED NOW MEANS SOMETHING CHECKABLE (`src/findings/verdicts.ts`). It used
|
|
20
|
+
* to mean "the model said so": a correction it could not justify was persisted
|
|
21
|
+
* anyway, and a rule outlives the conversation — it re-routes every later ask
|
|
22
|
+
* that matches, with nothing on file to review. The probe's stated reason is
|
|
23
|
+
* recorded as the evidence, and a correction without one stays PLAUSIBLE: acted
|
|
24
|
+
* on for this turn, never taught as a rule.
|
|
25
|
+
*
|
|
19
26
|
* MATCHING IS DELIBERATELY NARROW. A learning applies to the same ask, not to a
|
|
20
27
|
* similar-looking one: word order and repeated words are ignored (token set), but
|
|
21
28
|
* nothing else is. A loose match would be worse than no learning at all — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/nlu/learnings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"learnings.js","sourceRoot":"","sources":["../../src/nlu/learnings.ts"],"names":[],"mappings":"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"}
|