@remnic/core 9.3.720 → 9.3.721
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/dist/access-boundary.d.ts +5 -5
- package/dist/access-boundary.js +35 -33
- package/dist/access-cli.js +69 -66
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +5 -5
- package/dist/access-http.js +39 -37
- package/dist/access-mcp.d.ts +5 -5
- package/dist/access-mcp.js +38 -36
- package/dist/access-operations-batch.js +36 -34
- package/dist/access-operations.d.ts +5 -5
- package/dist/access-operations.js +37 -35
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-Dw-tK1pa.d.ts → access-service-Dj3I-VBS.d.ts} +3 -3
- package/dist/access-service.d.ts +5 -5
- package/dist/access-service.js +34 -32
- package/dist/access-surface-catalog.d.ts +5 -5
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +4 -2
- package/dist/active-recall.js.map +1 -1
- package/dist/{auto-sync-24NNS3GU.js → auto-sync-F3KCSQFJ.js} +5 -5
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +4 -4
- package/dist/briefing.d.ts +1 -1
- package/dist/briefing.js +11 -9
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +2 -2
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-B9SPfcsE.d.ts → catalog-F-OEVbRQ.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +14 -12
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory-graph.js +2 -2
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-TH7WMHVK.js → chunk-3NN73CM7.js} +2 -2
- package/dist/{chunk-ZKUW2MJG.js → chunk-4SF232E6.js} +18 -30
- package/dist/chunk-4SF232E6.js.map +1 -0
- package/dist/{chunk-DGTDRIUO.js → chunk-4T3BMHKD.js} +2 -2
- package/dist/{chunk-RX7EBFFJ.js → chunk-5O42UKXI.js} +2 -2
- package/dist/{chunk-5YQN2XYC.js → chunk-6FAMMBQ3.js} +2 -2
- package/dist/{chunk-FEB7W5JG.js → chunk-6OIDDKAA.js} +27 -6
- package/dist/chunk-6OIDDKAA.js.map +1 -0
- package/dist/{chunk-67HG7KFE.js → chunk-6YKIYQU7.js} +2 -2
- package/dist/{chunk-V7UUIIR7.js → chunk-7CTNUVHZ.js} +2 -2
- package/dist/{chunk-HU4EBIXO.js → chunk-A5XNBK2D.js} +8 -8
- package/dist/{chunk-2RBMGTK4.js → chunk-A7TJZLPK.js} +2 -2
- package/dist/{chunk-BGQ7WKMT.js → chunk-B7WISIAJ.js} +5 -5
- package/dist/{chunk-CYJV5AYC.js → chunk-BXEOHV7K.js} +3 -3
- package/dist/chunk-C4X4QGIO.js +60 -0
- package/dist/chunk-C4X4QGIO.js.map +1 -0
- package/dist/{chunk-RIW3UDDY.js → chunk-D7EBTQ24.js} +2 -2
- package/dist/{chunk-IO5NQEGZ.js → chunk-DKT3X5C3.js} +2 -2
- package/dist/{chunk-H2AGJ5SV.js → chunk-EBDA5TYA.js} +2 -2
- package/dist/{chunk-NBYXOEO7.js → chunk-EDOQM4E4.js} +2 -2
- package/dist/{chunk-YMPEGBLL.js → chunk-EEJMD2L2.js} +3 -3
- package/dist/{chunk-XROP4ZHB.js → chunk-EHQ5HO5T.js} +4 -4
- package/dist/{chunk-ATGRQ2NE.js → chunk-EM2LDXJ2.js} +4 -4
- package/dist/{chunk-422TIKIH.js → chunk-EVPNWN7Z.js} +9 -9
- package/dist/{chunk-WBHQ5LP5.js → chunk-EXUCUPV2.js} +2 -2
- package/dist/{chunk-M3GBOKUX.js → chunk-GDUOCHCD.js} +16 -16
- package/dist/{chunk-3XEGHEQ2.js → chunk-GJSL4WG2.js} +2 -2
- package/dist/{chunk-2SXMCQEQ.js → chunk-GZQXOQQ2.js} +3 -3
- package/dist/{chunk-UUMYB3FR.js → chunk-HCVWF657.js} +11 -11
- package/dist/{chunk-ZW5I3UNP.js → chunk-ILFSEIRT.js} +1 -1
- package/dist/chunk-ILFSEIRT.js.map +1 -0
- package/dist/{chunk-HHSO6VCQ.js → chunk-J3JPB7ZI.js} +2 -2
- package/dist/{chunk-Y4I7SOJN.js → chunk-LA3HZKES.js} +78 -78
- package/dist/{chunk-LQ6JI4VH.js → chunk-LD53WPMU.js} +4 -4
- package/dist/{chunk-NE5WFIY6.js → chunk-LLUGAZ3B.js} +2 -2
- package/dist/{chunk-RVLB4E6N.js → chunk-MDBZTH7N.js} +5 -32
- package/dist/chunk-MDBZTH7N.js.map +1 -0
- package/dist/{chunk-KNN6DAZQ.js → chunk-N77ELJ2D.js} +4 -4
- package/dist/{chunk-HTIL3EJK.js → chunk-NXRUUDUF.js} +2 -2
- package/dist/{chunk-JV7Q226R.js → chunk-OHTOPFRF.js} +2 -2
- package/dist/{chunk-ZG2WP425.js → chunk-ORAK3LNZ.js} +2 -2
- package/dist/{chunk-NERBFQNY.js → chunk-PD42EYQN.js} +2 -2
- package/dist/chunk-PHK3HARR.js +32 -0
- package/dist/chunk-PHK3HARR.js.map +1 -0
- package/dist/{chunk-NO4DWSQE.js → chunk-PKMQK2WY.js} +7 -7
- package/dist/{chunk-V5EGLYXE.js → chunk-QD6QP5P6.js} +42 -42
- package/dist/{chunk-IPJD7WJH.js → chunk-QR67FU5G.js} +2 -2
- package/dist/{chunk-ZE7GJ76H.js → chunk-SQNED75R.js} +1 -1
- package/dist/{chunk-5CEJH5ZN.js → chunk-TAPSNIMA.js} +4 -4
- package/dist/{chunk-PMBWVQ7D.js → chunk-TQT3USCG.js} +2 -2
- package/dist/{chunk-LLLG5PTE.js → chunk-TXQCG6SE.js} +3 -3
- package/dist/{chunk-6S5ZI7HB.js → chunk-UIXXE6NI.js} +6 -6
- package/dist/{chunk-T3XSXAWK.js → chunk-UO5ZHIIH.js} +2 -2
- package/dist/{chunk-PPVCZPYA.js → chunk-VCLGUIFM.js} +2 -2
- package/dist/{chunk-5J4OL7TJ.js → chunk-VUA4S7P6.js} +4 -4
- package/dist/{chunk-HAPVZ4CO.js → chunk-WQYSDPMA.js} +2 -2
- package/dist/chunk-XGTBNVIU.js +79 -0
- package/dist/chunk-XGTBNVIU.js.map +1 -0
- package/dist/{chunk-O6SEGJNV.js → chunk-YEE5KJQQ.js} +2 -2
- package/dist/{chunk-WRFKZEO6.js → chunk-YQGHW5ML.js} +4 -4
- package/dist/{chunk-DG3ORVCU.js → chunk-Z4RU5VPM.js} +2 -2
- package/dist/{chunk-DCWIQFNA.js → chunk-ZUDM75KG.js} +4 -4
- package/dist/{cli-qcLCJlOD.d.ts → cli-P_GaYcCY.d.ts} +3 -3
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +63 -60
- package/dist/compounding/engine.d.ts +1 -1
- package/dist/compounding/engine.js +11 -9
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +4 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +11 -9
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +12 -10
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +1 -1
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +11 -9
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +4 -4
- package/dist/extraction-faithfulness.d.ts +8 -2
- package/dist/extraction-faithfulness.js +4 -3
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction-judge.js +3 -3
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +5 -4
- package/dist/faithfulness-config.d.ts +55 -0
- package/dist/faithfulness-config.js +11 -0
- package/dist/faithfulness-config.js.map +1 -0
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/fallback-llm.js +2 -2
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/{graph-edge-decay-QDDC6AVV.js → graph-edge-decay-QPRJQ7DL.js} +3 -3
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph-snapshot.js +3 -3
- package/dist/graph.d.ts +1 -1
- package/dist/graph.js +2 -2
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +101 -98
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +5 -5
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-model-endpoint.d.ts +96 -0
- package/dist/local-model-endpoint.js +12 -0
- package/dist/local-model-endpoint.js.map +1 -0
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +11 -9
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +11 -9
- package/dist/maintenance/rebuild-memory-projection.js +12 -10
- package/dist/mcp-memory-inspector-app.d.ts +5 -5
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +2 -2
- package/dist/namespaces/migrate.js +21 -19
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +9 -9
- package/dist/namespaces/storage.d.ts +2 -2
- package/dist/namespaces/storage.js +11 -9
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +1 -1
- package/dist/operator-toolkit.js +30 -27
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +13 -11
- package/dist/{orchestrator-Bg5Fnza6.d.ts → orchestrator-f5xv19kp.d.ts} +3 -3
- package/dist/orchestrator.d.ts +4 -4
- package/dist/orchestrator.js +54 -52
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/provenance.js +2 -1
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-planner-llm.js +2 -2
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +5 -3
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +8 -8
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +13 -13
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/orama-backend.js +2 -2
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-ClOiS6KP.d.ts → semantic-consolidation-BQm1e1Pn.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +12 -10
- package/dist/semantic-rule-promotion.js +11 -9
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +11 -9
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +10 -8
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +3 -3
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +1 -1
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +1 -1
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-BSdUWePh.d.ts → types-DwO1Ot4n.d.ts} +19 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +11 -9
- package/package.json +2 -2
- package/src/config.ts +9 -30
- package/src/extraction-faithfulness.test.ts +175 -0
- package/src/extraction-faithfulness.ts +53 -1
- package/src/faithfulness-config.test.ts +96 -0
- package/src/faithfulness-config.ts +138 -0
- package/src/local-model-endpoint.test.ts +155 -0
- package/src/local-model-endpoint.ts +189 -0
- package/src/types.ts +19 -1
- package/dist/chunk-FEB7W5JG.js.map +0 -1
- package/dist/chunk-RVLB4E6N.js.map +0 -1
- package/dist/chunk-ZKUW2MJG.js.map +0 -1
- package/dist/chunk-ZW5I3UNP.js.map +0 -1
- /package/dist/{auto-sync-24NNS3GU.js.map → auto-sync-F3KCSQFJ.js.map} +0 -0
- /package/dist/{chunk-TH7WMHVK.js.map → chunk-3NN73CM7.js.map} +0 -0
- /package/dist/{chunk-DGTDRIUO.js.map → chunk-4T3BMHKD.js.map} +0 -0
- /package/dist/{chunk-RX7EBFFJ.js.map → chunk-5O42UKXI.js.map} +0 -0
- /package/dist/{chunk-5YQN2XYC.js.map → chunk-6FAMMBQ3.js.map} +0 -0
- /package/dist/{chunk-67HG7KFE.js.map → chunk-6YKIYQU7.js.map} +0 -0
- /package/dist/{chunk-V7UUIIR7.js.map → chunk-7CTNUVHZ.js.map} +0 -0
- /package/dist/{chunk-HU4EBIXO.js.map → chunk-A5XNBK2D.js.map} +0 -0
- /package/dist/{chunk-2RBMGTK4.js.map → chunk-A7TJZLPK.js.map} +0 -0
- /package/dist/{chunk-BGQ7WKMT.js.map → chunk-B7WISIAJ.js.map} +0 -0
- /package/dist/{chunk-CYJV5AYC.js.map → chunk-BXEOHV7K.js.map} +0 -0
- /package/dist/{chunk-RIW3UDDY.js.map → chunk-D7EBTQ24.js.map} +0 -0
- /package/dist/{chunk-IO5NQEGZ.js.map → chunk-DKT3X5C3.js.map} +0 -0
- /package/dist/{chunk-H2AGJ5SV.js.map → chunk-EBDA5TYA.js.map} +0 -0
- /package/dist/{chunk-NBYXOEO7.js.map → chunk-EDOQM4E4.js.map} +0 -0
- /package/dist/{chunk-YMPEGBLL.js.map → chunk-EEJMD2L2.js.map} +0 -0
- /package/dist/{chunk-XROP4ZHB.js.map → chunk-EHQ5HO5T.js.map} +0 -0
- /package/dist/{chunk-ATGRQ2NE.js.map → chunk-EM2LDXJ2.js.map} +0 -0
- /package/dist/{chunk-422TIKIH.js.map → chunk-EVPNWN7Z.js.map} +0 -0
- /package/dist/{chunk-WBHQ5LP5.js.map → chunk-EXUCUPV2.js.map} +0 -0
- /package/dist/{chunk-M3GBOKUX.js.map → chunk-GDUOCHCD.js.map} +0 -0
- /package/dist/{chunk-3XEGHEQ2.js.map → chunk-GJSL4WG2.js.map} +0 -0
- /package/dist/{chunk-2SXMCQEQ.js.map → chunk-GZQXOQQ2.js.map} +0 -0
- /package/dist/{chunk-UUMYB3FR.js.map → chunk-HCVWF657.js.map} +0 -0
- /package/dist/{chunk-HHSO6VCQ.js.map → chunk-J3JPB7ZI.js.map} +0 -0
- /package/dist/{chunk-Y4I7SOJN.js.map → chunk-LA3HZKES.js.map} +0 -0
- /package/dist/{chunk-LQ6JI4VH.js.map → chunk-LD53WPMU.js.map} +0 -0
- /package/dist/{chunk-NE5WFIY6.js.map → chunk-LLUGAZ3B.js.map} +0 -0
- /package/dist/{chunk-KNN6DAZQ.js.map → chunk-N77ELJ2D.js.map} +0 -0
- /package/dist/{chunk-HTIL3EJK.js.map → chunk-NXRUUDUF.js.map} +0 -0
- /package/dist/{chunk-JV7Q226R.js.map → chunk-OHTOPFRF.js.map} +0 -0
- /package/dist/{chunk-ZG2WP425.js.map → chunk-ORAK3LNZ.js.map} +0 -0
- /package/dist/{chunk-NERBFQNY.js.map → chunk-PD42EYQN.js.map} +0 -0
- /package/dist/{chunk-NO4DWSQE.js.map → chunk-PKMQK2WY.js.map} +0 -0
- /package/dist/{chunk-V5EGLYXE.js.map → chunk-QD6QP5P6.js.map} +0 -0
- /package/dist/{chunk-IPJD7WJH.js.map → chunk-QR67FU5G.js.map} +0 -0
- /package/dist/{chunk-ZE7GJ76H.js.map → chunk-SQNED75R.js.map} +0 -0
- /package/dist/{chunk-5CEJH5ZN.js.map → chunk-TAPSNIMA.js.map} +0 -0
- /package/dist/{chunk-PMBWVQ7D.js.map → chunk-TQT3USCG.js.map} +0 -0
- /package/dist/{chunk-LLLG5PTE.js.map → chunk-TXQCG6SE.js.map} +0 -0
- /package/dist/{chunk-6S5ZI7HB.js.map → chunk-UIXXE6NI.js.map} +0 -0
- /package/dist/{chunk-T3XSXAWK.js.map → chunk-UO5ZHIIH.js.map} +0 -0
- /package/dist/{chunk-PPVCZPYA.js.map → chunk-VCLGUIFM.js.map} +0 -0
- /package/dist/{chunk-5J4OL7TJ.js.map → chunk-VUA4S7P6.js.map} +0 -0
- /package/dist/{chunk-HAPVZ4CO.js.map → chunk-WQYSDPMA.js.map} +0 -0
- /package/dist/{chunk-O6SEGJNV.js.map → chunk-YEE5KJQQ.js.map} +0 -0
- /package/dist/{chunk-WRFKZEO6.js.map → chunk-YQGHW5ML.js.map} +0 -0
- /package/dist/{chunk-DG3ORVCU.js.map → chunk-Z4RU5VPM.js.map} +0 -0
- /package/dist/{chunk-DCWIQFNA.js.map → chunk-ZUDM75KG.js.map} +0 -0
- /package/dist/{graph-edge-decay-QDDC6AVV.js.map → graph-edge-decay-QPRJQ7DL.js.map} +0 -0
package/dist/threading.d.ts
CHANGED
package/dist/tier-migration.d.ts
CHANGED
package/dist/tier-routing.d.ts
CHANGED
package/dist/topics.d.ts
CHANGED
package/dist/transcript.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-
|
|
1
|
+
import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-DwO1Ot4n.js';
|
|
2
2
|
import { SessionIntegrityReport } from './session-integrity.js';
|
|
3
3
|
import './types-gb_SNtjR.js';
|
|
4
4
|
import './message-parts/index.js';
|
package/dist/transfer/backup.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
import "../chunk-765K3SAT.js";
|
|
5
5
|
import "../chunk-X7Y7WX73.js";
|
|
6
6
|
import "../chunk-J4EB7DNW.js";
|
|
7
|
+
import "../chunk-UI3NYK34.js";
|
|
8
|
+
import "../chunk-GCGJW34D.js";
|
|
7
9
|
import "../chunk-BJMBJZ2Y.js";
|
|
8
10
|
import "../chunk-UKJAGEXH.js";
|
|
9
11
|
import "../chunk-FP2373TW.js";
|
|
10
|
-
import "../chunk-UI3NYK34.js";
|
|
11
|
-
import "../chunk-GCGJW34D.js";
|
|
12
12
|
import "../chunk-A6XUJE5D.js";
|
|
13
13
|
import "../chunk-PZ5AY32C.js";
|
|
14
14
|
export {
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
import "../chunk-WEHSQBFR.js";
|
|
6
6
|
import "../chunk-X7Y7WX73.js";
|
|
7
7
|
import "../chunk-J4EB7DNW.js";
|
|
8
|
+
import "../chunk-UI3NYK34.js";
|
|
9
|
+
import "../chunk-GCGJW34D.js";
|
|
8
10
|
import "../chunk-BJMBJZ2Y.js";
|
|
9
11
|
import "../chunk-UKJAGEXH.js";
|
|
10
12
|
import "../chunk-FP2373TW.js";
|
|
11
|
-
import "../chunk-UI3NYK34.js";
|
|
12
|
-
import "../chunk-GCGJW34D.js";
|
|
13
13
|
import "../chunk-A6XUJE5D.js";
|
|
14
14
|
import "../chunk-PZ5AY32C.js";
|
|
15
15
|
export {
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
import "../chunk-VF4XKTX3.js";
|
|
5
5
|
import "../chunk-WEHSQBFR.js";
|
|
6
6
|
import "../chunk-X7Y7WX73.js";
|
|
7
|
+
import "../chunk-GCGJW34D.js";
|
|
7
8
|
import "../chunk-BJMBJZ2Y.js";
|
|
8
9
|
import "../chunk-UKJAGEXH.js";
|
|
9
10
|
import "../chunk-FP2373TW.js";
|
|
10
|
-
import "../chunk-GCGJW34D.js";
|
|
11
11
|
import "../chunk-A6XUJE5D.js";
|
|
12
12
|
import "../chunk-VS2IYZRU.js";
|
|
13
13
|
import "../chunk-PZ5AY32C.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TrustSignals, TrustScoreResult, TrustBand, TrustScoreComponent } from './trust-score.js';
|
|
2
|
-
import { F as FaithfulnessFrontmatter, ai as ProvenanceSource, ao as TrustWeights } from './types-
|
|
2
|
+
import { F as FaithfulnessFrontmatter, ai as ProvenanceSource, ao as TrustWeights } from './types-DwO1Ot4n.js';
|
|
3
3
|
import './types-gb_SNtjR.js';
|
|
4
4
|
import './message-parts/index.js';
|
|
5
5
|
|
package/dist/trust-score.d.ts
CHANGED
|
@@ -1451,12 +1451,30 @@ interface PluginConfig {
|
|
|
1451
1451
|
judgeTrainingDir: string;
|
|
1452
1452
|
/** Gate mode: "off" (default, byte-identical pre-feature), "shadow" (record only), "enforce" (route to pending_review). */
|
|
1453
1453
|
extractionFaithfulnessGate: "off" | "shadow" | "enforce";
|
|
1454
|
-
/** Override model
|
|
1454
|
+
/** Override model name; empty string = default routing chain. */
|
|
1455
1455
|
extractionFaithfulnessModel: string;
|
|
1456
|
+
/**
|
|
1457
|
+
* Base URL of a local openai-compatible endpoint serving a fine-tuned
|
|
1458
|
+
* faithfulness gate (issue #1585 model-lab), e.g.
|
|
1459
|
+
* `http://localhost:11434/v1` (Ollama) or `http://localhost:8000/v1` (vLLM).
|
|
1460
|
+
* Empty string (default) preserves the existing routing chain exactly;
|
|
1461
|
+
* set together with `extractionFaithfulnessModel` to route the gate to the
|
|
1462
|
+
* local model first, falling back to the chain on failure.
|
|
1463
|
+
*/
|
|
1464
|
+
extractionFaithfulnessBaseUrl: string;
|
|
1456
1465
|
/** Context window (chars) around the quote sent to the verifier. Default 400. */
|
|
1457
1466
|
extractionFaithfulnessContextChars: number;
|
|
1458
1467
|
/** Per-batch timeout in ms; timeout → tagged error, never blocks writes. Default 8000. */
|
|
1459
1468
|
extractionFaithfulnessTimeoutMs: number;
|
|
1469
|
+
/**
|
|
1470
|
+
* Correction-intent model-lab pointer (issue #1581 / #1585). When both this
|
|
1471
|
+
* and `correctionIntentBaseUrl` are set, the detection path can route to a
|
|
1472
|
+
* local fine-tuned correction-intent classifier. Empty default keeps the
|
|
1473
|
+
* rule-based passive-correction detector as the sole path (byte-identical).
|
|
1474
|
+
*/
|
|
1475
|
+
correctionIntentModel: string;
|
|
1476
|
+
/** Base URL of a local openai-compatible endpoint serving the correction-intent classifier (issue #1585). Empty default = rule-based detection. */
|
|
1477
|
+
correctionIntentBaseUrl: string;
|
|
1460
1478
|
hourlySummariesEnabled: boolean;
|
|
1461
1479
|
daySummaryEnabled: boolean;
|
|
1462
1480
|
/** Timezone override for the day summary cron (issue #1475). */
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './types-gb_SNtjR.js';
|
|
2
2
|
import './message-parts/index.js';
|
|
3
|
-
export { av as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b9 as AgentAccessHttpConfig, ba as AgentDefaultsConfig, bb as AgentPersona, j as AgentPersonaModelConfig, bc as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bd as BehaviorSignalDirection, B as BehaviorSignalEvent, be as BehaviorSignalType, aI as BootstrapOptions, aJ as BootstrapResult, r as BriefingActiveThread, bf as BriefingCalendarSourceError, aV as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aW as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aX as BriefingWindow, bg as BufferEntryState, aq as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bh as CaptureMode, bi as ChatConfig, v as Checkpoint, bj as CodexCliReasoningEffort, bk as CodexCompactionFlushMode, aY as CodexCompatConfig, bl as CodexConnectorConfig, aH as CodingContext, bm as CodingKnowledgeConfig, aS as CodingModeConfig, bn as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bo as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bp as ConfidenceTier, bq as ConsolidationAction, br as ConsolidationItem, aK as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bs as ContinuityIncidentState, bt as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, bu as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bv as ContradictionScanConfig, am as ConversationThread, bw as CronConversationRecallMode, bx as CronRecallMode, aZ as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, by as DreamingConfig, bz as DreamingNarrativePromptStyle, bA as DreamsDeepSleepConfig, bB as DreamsLightSleepConfig, aQ as DreamsPhase, bC as DreamsPhaseStatus, bD as DreamsPhasesConfig, bE as DreamsRemConfig, aR as DreamsRunResult, aP as DreamsStatusResult, bF as EngramTraceEvent, au as EntityActivityEntry, E as EntityFile, Y as EntityMention, at as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aL as EntityTimelineEntry, a_ as ExtractedFact, bG as ExtractedProcedureStep, bH as ExtractedQuestion, bI as ExtractedReasoningTrace, bJ as ExtractedReasoningTraceStep, bK as ExtractedRelationship, bL as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, as as FileHygieneConfig, G as GatewayConfig, bM as GitHubLiveConnectorConfig, bN as GmailLiveConnectorConfig, bO as GoogleDriveLiveConnectorConfig, bP as HeartbeatConfig, bQ as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bR as LlmTraceCallback, bS as LlmTraceEvent, ac as MemoryActionEligibilityContext, a$ as MemoryActionEligibilitySource, W as MemoryActionEvent, bT as MemoryActionOutcome, bU as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bV as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ap as MemoryLink, bW as MemoryLinkType, b0 as MemoryObservation, bX as MemoryOsPresetName, l as MemoryProjectionCurrentState, b1 as MemoryScope, f as MemoryStatus, aw as MemorySummary, ar as MetaState, bY as ModelApi, bZ as ModelDefinitionConfig, b_ as ModelProviderAuthMode, ag as ModelProviderConfig, b$ as NamespacePolicy, ah as NativeKnowledgeConfig, c0 as NativeKnowledgeFolderRuleConfig, c1 as NativeKnowledgeObsidianVaultConfig, c2 as NativeKnowledgeOpenClawWorkspaceConfig, c3 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c4 as PrincipalFromSessionKeyMode, c5 as PrincipalRule, c6 as ProceduralConfig, aj as ProvenanceConfig, ai as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c7 as QuestionEntry, b2 as RECALL_DISCLOSURE_LEVELS, c8 as ReasoningEffort, i as RecallDisclosure, c9 as RecallPipelineConfig, h as RecallPlanMode, ca as RecallSectionConfig, R as RecallTierExplain, cb as RecallTraceEvent, cc as RelevanceFeedback, ak as RetrievalTier, cd as SPECULATIVE_TTL_DAYS, ce as ScopeProfileAutoPromoteConfig, aO as ScopeProfileConfig, aM as ScopeProfileLayerId, aN as ScopeProfilePromotionTarget, cf as ScopeProfileTeamProjectConfig, cg as ScopeTeamConfig, ch as ScoredEntity, D as SecretRef, ci as SemanticChunkingConfigShape, S as SessionObserverBandConfig, cj as SignalLevel, al as SignalScanResult, ck as SlotBehaviorConfig, cl as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, cm as TriggerMode, ao as TrustWeights, V as VerificationState, cn as confidenceTier, b8 as isRecallDisclosure } from './types-
|
|
3
|
+
export { av as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b9 as AgentAccessHttpConfig, ba as AgentDefaultsConfig, bb as AgentPersona, j as AgentPersonaModelConfig, bc as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bd as BehaviorSignalDirection, B as BehaviorSignalEvent, be as BehaviorSignalType, aI as BootstrapOptions, aJ as BootstrapResult, r as BriefingActiveThread, bf as BriefingCalendarSourceError, aV as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aW as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aX as BriefingWindow, bg as BufferEntryState, aq as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bh as CaptureMode, bi as ChatConfig, v as Checkpoint, bj as CodexCliReasoningEffort, bk as CodexCompactionFlushMode, aY as CodexCompatConfig, bl as CodexConnectorConfig, aH as CodingContext, bm as CodingKnowledgeConfig, aS as CodingModeConfig, bn as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bo as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bp as ConfidenceTier, bq as ConsolidationAction, br as ConsolidationItem, aK as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bs as ContinuityIncidentState, bt as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, bu as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bv as ContradictionScanConfig, am as ConversationThread, bw as CronConversationRecallMode, bx as CronRecallMode, aZ as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, by as DreamingConfig, bz as DreamingNarrativePromptStyle, bA as DreamsDeepSleepConfig, bB as DreamsLightSleepConfig, aQ as DreamsPhase, bC as DreamsPhaseStatus, bD as DreamsPhasesConfig, bE as DreamsRemConfig, aR as DreamsRunResult, aP as DreamsStatusResult, bF as EngramTraceEvent, au as EntityActivityEntry, E as EntityFile, Y as EntityMention, at as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aL as EntityTimelineEntry, a_ as ExtractedFact, bG as ExtractedProcedureStep, bH as ExtractedQuestion, bI as ExtractedReasoningTrace, bJ as ExtractedReasoningTraceStep, bK as ExtractedRelationship, bL as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, as as FileHygieneConfig, G as GatewayConfig, bM as GitHubLiveConnectorConfig, bN as GmailLiveConnectorConfig, bO as GoogleDriveLiveConnectorConfig, bP as HeartbeatConfig, bQ as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bR as LlmTraceCallback, bS as LlmTraceEvent, ac as MemoryActionEligibilityContext, a$ as MemoryActionEligibilitySource, W as MemoryActionEvent, bT as MemoryActionOutcome, bU as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bV as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ap as MemoryLink, bW as MemoryLinkType, b0 as MemoryObservation, bX as MemoryOsPresetName, l as MemoryProjectionCurrentState, b1 as MemoryScope, f as MemoryStatus, aw as MemorySummary, ar as MetaState, bY as ModelApi, bZ as ModelDefinitionConfig, b_ as ModelProviderAuthMode, ag as ModelProviderConfig, b$ as NamespacePolicy, ah as NativeKnowledgeConfig, c0 as NativeKnowledgeFolderRuleConfig, c1 as NativeKnowledgeObsidianVaultConfig, c2 as NativeKnowledgeOpenClawWorkspaceConfig, c3 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c4 as PrincipalFromSessionKeyMode, c5 as PrincipalRule, c6 as ProceduralConfig, aj as ProvenanceConfig, ai as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c7 as QuestionEntry, b2 as RECALL_DISCLOSURE_LEVELS, c8 as ReasoningEffort, i as RecallDisclosure, c9 as RecallPipelineConfig, h as RecallPlanMode, ca as RecallSectionConfig, R as RecallTierExplain, cb as RecallTraceEvent, cc as RelevanceFeedback, ak as RetrievalTier, cd as SPECULATIVE_TTL_DAYS, ce as ScopeProfileAutoPromoteConfig, aO as ScopeProfileConfig, aM as ScopeProfileLayerId, aN as ScopeProfilePromotionTarget, cf as ScopeProfileTeamProjectConfig, cg as ScopeTeamConfig, ch as ScoredEntity, D as SecretRef, ci as SemanticChunkingConfigShape, S as SessionObserverBandConfig, cj as SignalLevel, al as SignalScanResult, ck as SlotBehaviorConfig, cl as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, cm as TriggerMode, ao as TrustWeights, V as VerificationState, cn as confidenceTier, b8 as isRecallDisclosure } from './types-DwO1Ot4n.js';
|
package/dist/types.js
CHANGED
package/dist/verified-recall.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EBDA5TYA.js";
|
|
5
5
|
import "./chunk-7FL4CNPV.js";
|
|
6
6
|
import "./chunk-ZBJMUXZH.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-EVPNWN7Z.js";
|
|
8
8
|
import "./chunk-L2B3EE7B.js";
|
|
9
9
|
import "./chunk-M7XQSUBB.js";
|
|
10
10
|
import "./chunk-5UZXUTVO.js";
|
|
@@ -14,29 +14,31 @@ import "./chunk-6CIAGZ6X.js";
|
|
|
14
14
|
import "./chunk-J6A3CX5N.js";
|
|
15
15
|
import "./chunk-SVOZFLIQ.js";
|
|
16
16
|
import "./chunk-LTJAMRGI.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-ILFSEIRT.js";
|
|
18
|
+
import "./chunk-AWJ2FHCF.js";
|
|
19
|
+
import "./chunk-42JKGUFJ.js";
|
|
18
20
|
import "./chunk-RULE4VG5.js";
|
|
19
21
|
import "./chunk-SCU65EZI.js";
|
|
20
22
|
import "./chunk-MB5RSUW6.js";
|
|
21
23
|
import "./chunk-6KYMPV2O.js";
|
|
22
|
-
import "./chunk-AWJ2FHCF.js";
|
|
23
|
-
import "./chunk-42JKGUFJ.js";
|
|
24
24
|
import "./chunk-DM2T26WE.js";
|
|
25
25
|
import "./chunk-LDXUBPMO.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-6OIDDKAA.js";
|
|
27
|
+
import "./chunk-XGTBNVIU.js";
|
|
27
28
|
import "./chunk-G7D6GZ5J.js";
|
|
28
29
|
import "./chunk-VF4XKTX3.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-VUA4S7P6.js";
|
|
30
31
|
import "./chunk-IQVQJJL7.js";
|
|
31
|
-
import "./chunk-VL7DP3OW.js";
|
|
32
32
|
import "./chunk-L2EXJQJP.js";
|
|
33
|
+
import "./chunk-VL7DP3OW.js";
|
|
33
34
|
import "./chunk-RGMVMVMF.js";
|
|
34
35
|
import "./chunk-N7RWREIQ.js";
|
|
35
36
|
import "./chunk-J2HSAU72.js";
|
|
36
37
|
import "./chunk-A6XUJE5D.js";
|
|
37
38
|
import "./chunk-P7FMDTKL.js";
|
|
38
39
|
import "./chunk-VS2IYZRU.js";
|
|
39
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-MDBZTH7N.js";
|
|
41
|
+
import "./chunk-PHK3HARR.js";
|
|
40
42
|
import "./chunk-5GKPFL3S.js";
|
|
41
43
|
import "./chunk-4DJQYKMN.js";
|
|
42
44
|
import "./chunk-EYIEWJNI.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.3.
|
|
3
|
+
"version": "9.3.721",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -2966,7 +2966,7 @@
|
|
|
2966
2966
|
"core"
|
|
2967
2967
|
],
|
|
2968
2968
|
"peerDependencies": {
|
|
2969
|
-
"@remnic/coding-graph": "^9.3.
|
|
2969
|
+
"@remnic/coding-graph": "^9.3.721"
|
|
2970
2970
|
},
|
|
2971
2971
|
"peerDependenciesMeta": {
|
|
2972
2972
|
"@remnic/coding-graph": {
|
package/src/config.ts
CHANGED
|
@@ -49,6 +49,7 @@ import { parseWearablesConfig } from "./wearables/config.js";
|
|
|
49
49
|
import { parseProvenanceConfig } from "./provenance.js";
|
|
50
50
|
import { parseCodingKnowledgeConfig } from "./coding/coding-knowledge-config.js";
|
|
51
51
|
import { parseChatConfig } from "./chat/chat-config.js";
|
|
52
|
+
import { parseCorrectionIntentConfig, parseFaithfulnessGateConfig } from "./faithfulness-config.js";
|
|
52
53
|
const DEFAULT_MEMORY_DIR = path.join(
|
|
53
54
|
resolveHomeDir(),
|
|
54
55
|
".openclaw",
|
|
@@ -3018,36 +3019,14 @@ export function parseConfig(
|
|
|
3018
3019
|
collectJudgeTrainingPairs: coerceBool(cfg.collectJudgeTrainingPairs) === true,
|
|
3019
3020
|
judgeTrainingDir:
|
|
3020
3021
|
typeof cfg.judgeTrainingDir === "string" ? cfg.judgeTrainingDir : "",
|
|
3021
|
-
// Extraction faithfulness gate (issue #1576)
|
|
3022
|
-
//
|
|
3023
|
-
// (
|
|
3024
|
-
//
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
const raw = typeof v === "string" ? v.trim().toLowerCase() : v;
|
|
3030
|
-
if (raw === "off" || raw === "shadow" || raw === "enforce") return raw;
|
|
3031
|
-
throw new Error(
|
|
3032
|
-
`extractionFaithfulnessGate must be one of "off" | "shadow" | "enforce" (got ${JSON.stringify(v)})`,
|
|
3033
|
-
);
|
|
3034
|
-
})(),
|
|
3035
|
-
extractionFaithfulnessModel:
|
|
3036
|
-
typeof cfg.extractionFaithfulnessModel === "string"
|
|
3037
|
-
? cfg.extractionFaithfulnessModel
|
|
3038
|
-
: "",
|
|
3039
|
-
// Issue #1634 (#1576 follow-up): strict-integer validation via
|
|
3040
|
-
// parseIntegerAtLeast — reject non-numeric, <=0, non-integer, NaN,
|
|
3041
|
-
// Infinity, booleans, objects (gotcha #51). Mirrors qmdDaemonTimeoutMs.
|
|
3042
|
-
// Valid CLI-string integers still coerce and clamp to the budget cap.
|
|
3043
|
-
extractionFaithfulnessContextChars: Math.min(
|
|
3044
|
-
parseIntegerAtLeast(cfg.extractionFaithfulnessContextChars, 400, 1, "extractionFaithfulnessContextChars"),
|
|
3045
|
-
4000,
|
|
3046
|
-
),
|
|
3047
|
-
extractionFaithfulnessTimeoutMs: Math.min(
|
|
3048
|
-
parseIntegerAtLeast(cfg.extractionFaithfulnessTimeoutMs, 8000, 1, "extractionFaithfulnessTimeoutMs"),
|
|
3049
|
-
60_000,
|
|
3050
|
-
),
|
|
3022
|
+
// Extraction faithfulness gate (issue #1576) + model-lab pointer
|
|
3023
|
+
// `extractionFaithfulnessBaseUrl` (issue #1585), and the correction-intent
|
|
3024
|
+
// model-lab pointer (issue #1581 / #1585). Parsed in faithfulness-config.ts
|
|
3025
|
+
// (extracted from this god file so the block can grow without tripping the
|
|
3026
|
+
// ratchet). Defaults preserve the byte-identical pre-feature pipeline
|
|
3027
|
+
// (rule 39); invalid values reject (rule 51 / #1634).
|
|
3028
|
+
...parseFaithfulnessGateConfig(cfg),
|
|
3029
|
+
...parseCorrectionIntentConfig(cfg),
|
|
3051
3030
|
// Inline source attribution (issue #369). Opt-in to preserve
|
|
3052
3031
|
// backwards compatibility with existing downstream consumers.
|
|
3053
3032
|
inlineSourceAttributionEnabled: cfg.inlineSourceAttributionEnabled === true,
|
|
@@ -1254,3 +1254,178 @@ test("parseFaithfulnessResponse: object-wrapped arrays unwrap (results/verdicts/
|
|
|
1254
1254
|
// A wrapper object with no recognized array key still returns null (no over-match).
|
|
1255
1255
|
assert.equal(parseFaithfulnessResponse('{"data": {"nested": []}}', 1), null);
|
|
1256
1256
|
});
|
|
1257
|
+
|
|
1258
|
+
// ---------------------------------------------------------------------------
|
|
1259
|
+
// Issue #1585 model-lab pointer: local fine-tuned endpoint path
|
|
1260
|
+
// ---------------------------------------------------------------------------
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Build a fake fetch that responds for a specific base URL with a canned
|
|
1264
|
+
* openai-compatible chat-completions body. Records the request body so tests
|
|
1265
|
+
* can assert the gate routed to the local model.
|
|
1266
|
+
*/
|
|
1267
|
+
function fakeFetchFor(
|
|
1268
|
+
baseUrl: string,
|
|
1269
|
+
responder: (body: Record<string, unknown>) => unknown,
|
|
1270
|
+
): { fetch: typeof fetch; requests: Array<{ url: string; body: Record<string, unknown> }> } {
|
|
1271
|
+
const requests: Array<{ url: string; body: Record<string, unknown> }> = [];
|
|
1272
|
+
const fake = ((url: string, init: RequestInit) => {
|
|
1273
|
+
requests.push({ url, body: JSON.parse(String(init.body)) });
|
|
1274
|
+
const body = JSON.parse(String(init.body));
|
|
1275
|
+
const payload = responder(body);
|
|
1276
|
+
return Promise.resolve(
|
|
1277
|
+
new Response(JSON.stringify(payload), {
|
|
1278
|
+
status: 200,
|
|
1279
|
+
headers: { "content-type": "application/json" },
|
|
1280
|
+
}),
|
|
1281
|
+
);
|
|
1282
|
+
}) as typeof fetch;
|
|
1283
|
+
return { fetch: fake, requests };
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
test("checkFaithfulnessBatch: local model-lab endpoint is tried first when configured (#1585)", async () => {
|
|
1287
|
+
const inputs = [{ factText: "Fact", quote: "Quote" }];
|
|
1288
|
+
const config = parseConfig({
|
|
1289
|
+
extractionFaithfulnessModel: "remnic-faithfulness-gate-v1",
|
|
1290
|
+
extractionFaithfulnessBaseUrl: "http://localhost:11434/v1",
|
|
1291
|
+
extractionFaithfulnessTimeoutMs: 5000,
|
|
1292
|
+
});
|
|
1293
|
+
const fallbackCalls: Array<{ messages: unknown; options: unknown }> = [];
|
|
1294
|
+
const { fetch: fakeFetch, requests } = fakeFetchFor("http://localhost:11434/v1", (body) => ({
|
|
1295
|
+
model: body.model,
|
|
1296
|
+
choices: [{ message: { content: JSON.stringify([{ index: 0, verdict: "contradicted" }]) } }],
|
|
1297
|
+
}));
|
|
1298
|
+
const result = await checkFaithfulnessBatch(
|
|
1299
|
+
inputs,
|
|
1300
|
+
config,
|
|
1301
|
+
null,
|
|
1302
|
+
stubFallbackLlm("[]", fallbackCalls),
|
|
1303
|
+
fakeFetch,
|
|
1304
|
+
);
|
|
1305
|
+
assert.equal(requests.length, 1, "local model-lab endpoint must be called");
|
|
1306
|
+
assert.equal(requests[0]?.url, "http://localhost:11434/v1/chat/completions");
|
|
1307
|
+
assert.equal(requests[0]?.body.model, "remnic-faithfulness-gate-v1");
|
|
1308
|
+
assert.equal(fallbackCalls.length, 0, "gateway fallback must NOT run when the local endpoint succeeds");
|
|
1309
|
+
assert.equal(result.results[0]?.ok, true);
|
|
1310
|
+
if (result.results[0]?.ok) {
|
|
1311
|
+
assert.equal(result.results[0].verdict, "contradicted", "local model verdict is used");
|
|
1312
|
+
assert.equal(result.results[0].model, "remnic-faithfulness-gate-v1");
|
|
1313
|
+
}
|
|
1314
|
+
});
|
|
1315
|
+
|
|
1316
|
+
test("checkFaithfulnessBatch: local endpoint failure falls back to the configured chain (#1585 graceful)", async () => {
|
|
1317
|
+
const inputs = [{ factText: "Fact", quote: "Quote" }];
|
|
1318
|
+
const config = parseConfig({
|
|
1319
|
+
extractionFaithfulnessModel: "remnic-faithfulness-gate-v1",
|
|
1320
|
+
extractionFaithfulnessBaseUrl: "http://localhost:11434/v1",
|
|
1321
|
+
extractionFaithfulnessTimeoutMs: 5000,
|
|
1322
|
+
});
|
|
1323
|
+
const fallbackCalls: Array<{ messages: unknown; options: unknown }> = [];
|
|
1324
|
+
// Local endpoint returns 500 → caller returns null → gate falls through to fallback.
|
|
1325
|
+
const failingFetch = (() =>
|
|
1326
|
+
Promise.resolve(new Response("err", { status: 500 }))) as unknown as typeof fetch;
|
|
1327
|
+
const result = await checkFaithfulnessBatch(
|
|
1328
|
+
inputs,
|
|
1329
|
+
config,
|
|
1330
|
+
null,
|
|
1331
|
+
stubFallbackLlm(JSON.stringify([{ index: 0, verdict: "entailed" }]), fallbackCalls),
|
|
1332
|
+
failingFetch,
|
|
1333
|
+
);
|
|
1334
|
+
assert.equal(fallbackCalls.length, 1, "must fall back to the configured chain on local-endpoint failure");
|
|
1335
|
+
assert.equal(result.results[0]?.ok, true);
|
|
1336
|
+
if (result.results[0]?.ok) {
|
|
1337
|
+
assert.equal(result.results[0].verdict, "entailed", "fallback chain verdict is used");
|
|
1338
|
+
}
|
|
1339
|
+
});
|
|
1340
|
+
|
|
1341
|
+
test("checkFaithfulnessBatch: a wedged local endpoint falls back to the chain BEFORE the batch timeout (codex P2 — probe budget)", async () => {
|
|
1342
|
+
// The local probe must use a SMALLER budget than the outer batch timeout so a
|
|
1343
|
+
// hanging endpoint returns null and the configured chain runs before the batch
|
|
1344
|
+
// timer fires. extractionFaithfulnessTimeoutMs: 1000 → probe budget = 500ms.
|
|
1345
|
+
const inputs = [{ factText: "Fact", quote: "Quote" }];
|
|
1346
|
+
const config = parseConfig({
|
|
1347
|
+
extractionFaithfulnessModel: "remnic-faithfulness-gate-v1",
|
|
1348
|
+
extractionFaithfulnessBaseUrl: "http://localhost:11434/v1",
|
|
1349
|
+
extractionFaithfulnessTimeoutMs: 1000,
|
|
1350
|
+
});
|
|
1351
|
+
const fallbackCalls: Array<{ messages: unknown; options: unknown }> = [];
|
|
1352
|
+
// A fetch that hangs forever on its own but HONORS the probe's AbortSignal —
|
|
1353
|
+
// the probe's controller aborts it at 500ms (half the batch budget), the call
|
|
1354
|
+
// returns null, and the gate falls through to the configured chain.
|
|
1355
|
+
const wedgedFetch = ((_url: string, init: RequestInit) =>
|
|
1356
|
+
new Promise<Response>((_resolve, reject) => {
|
|
1357
|
+
const sig = init.signal;
|
|
1358
|
+
if (!sig) return;
|
|
1359
|
+
if (sig.aborted) reject(new Error("aborted"));
|
|
1360
|
+
else sig.addEventListener("abort", () => reject(new Error("aborted")), { once: true });
|
|
1361
|
+
})) as unknown as typeof fetch;
|
|
1362
|
+
const result = await checkFaithfulnessBatch(
|
|
1363
|
+
inputs,
|
|
1364
|
+
config,
|
|
1365
|
+
null,
|
|
1366
|
+
stubFallbackLlm(JSON.stringify([{ index: 0, verdict: "entailed" }]), fallbackCalls),
|
|
1367
|
+
wedgedFetch,
|
|
1368
|
+
);
|
|
1369
|
+
assert.equal(
|
|
1370
|
+
fallbackCalls.length,
|
|
1371
|
+
1,
|
|
1372
|
+
"a wedged local probe must reach the configured chain before the batch budget elapses",
|
|
1373
|
+
);
|
|
1374
|
+
assert.equal(result.results[0]?.ok, true);
|
|
1375
|
+
if (result.results[0]?.ok) {
|
|
1376
|
+
assert.equal(result.results[0].verdict, "entailed", "fallback chain verdict is used");
|
|
1377
|
+
}
|
|
1378
|
+
});
|
|
1379
|
+
|
|
1380
|
+
test("checkFaithfulnessBatch: no local endpoint pointer → byte-identical routing (regression guard)", async () => {
|
|
1381
|
+
// Default config (no baseUrl) must never attempt a local-endpoint fetch.
|
|
1382
|
+
const inputs = [{ factText: "Fact", quote: "Quote" }];
|
|
1383
|
+
const config = baseConfig();
|
|
1384
|
+
let fetchCalled = false;
|
|
1385
|
+
const spyFetch = (() => {
|
|
1386
|
+
fetchCalled = true;
|
|
1387
|
+
return Promise.resolve(new Response("{}", { status: 200 }));
|
|
1388
|
+
}) as unknown as typeof fetch;
|
|
1389
|
+
await checkFaithfulnessBatch(
|
|
1390
|
+
inputs,
|
|
1391
|
+
config,
|
|
1392
|
+
null,
|
|
1393
|
+
stubFallbackLlm(JSON.stringify([{ index: 0, verdict: "entailed" }])),
|
|
1394
|
+
spyFetch,
|
|
1395
|
+
);
|
|
1396
|
+
assert.equal(fetchCalled, false, "no local-endpoint fetch when pointer is unset");
|
|
1397
|
+
});
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
test("checkFaithfulnessBatch: local-endpoint failure does NOT leak the local model name into the fallback chain (codex P2 PRRT_kwDORJXyws6Otp-L)", async () => {
|
|
1401
|
+
// extractionFaithfulnessModel is the LOCAL served model's name. When the
|
|
1402
|
+
// local endpoint is configured but fails, that name must NOT be forwarded to
|
|
1403
|
+
// the gateway/fallback as options.model — otherwise the configured chain is
|
|
1404
|
+
// forced onto an unavailable local-only model and a local outage becomes
|
|
1405
|
+
// backend_unavailable instead of graceful fallback to the configured chain.
|
|
1406
|
+
const inputs = [{ factText: "Fact", quote: "Quote" }];
|
|
1407
|
+
const config = parseConfig({
|
|
1408
|
+
extractionFaithfulnessModel: "remnic-faithfulness-gate-v1",
|
|
1409
|
+
extractionFaithfulnessBaseUrl: "http://localhost:11434/v1",
|
|
1410
|
+
extractionFaithfulnessTimeoutMs: 5000,
|
|
1411
|
+
});
|
|
1412
|
+
const fallbackCalls: Array<{ messages: unknown; options: unknown }> = [];
|
|
1413
|
+
// Local endpoint returns 500 -> caller returns null -> gate falls through.
|
|
1414
|
+
const failingFetch = (() =>
|
|
1415
|
+
Promise.resolve(new Response("err", { status: 500 }))) as unknown as typeof fetch;
|
|
1416
|
+
const result = await checkFaithfulnessBatch(
|
|
1417
|
+
inputs,
|
|
1418
|
+
config,
|
|
1419
|
+
null,
|
|
1420
|
+
stubFallbackLlm(JSON.stringify([{ index: 0, verdict: "entailed" }]), fallbackCalls),
|
|
1421
|
+
failingFetch,
|
|
1422
|
+
);
|
|
1423
|
+
assert.equal(fallbackCalls.length, 1, "fallback chain must run on local-endpoint failure");
|
|
1424
|
+
const opts = fallbackCalls[0]?.options as Record<string, unknown>;
|
|
1425
|
+
assert.equal(
|
|
1426
|
+
opts?.model,
|
|
1427
|
+
undefined,
|
|
1428
|
+
"local-only model name must NOT leak into the fallback chain on endpoint failure",
|
|
1429
|
+
);
|
|
1430
|
+
assert.equal(result.results[0]?.ok, true);
|
|
1431
|
+
});
|
|
@@ -34,6 +34,10 @@ import { log } from "./logger.js";
|
|
|
34
34
|
import type { PluginConfig, MemoryFrontmatter, FaithfulnessFrontmatter } from "./types.js";
|
|
35
35
|
import type { LocalLlmClient } from "./local-llm.js";
|
|
36
36
|
import { type FallbackLlmClient, gatewayTaskChainOptions } from "./fallback-llm.js";
|
|
37
|
+
import {
|
|
38
|
+
callOpenAiCompatibleChat,
|
|
39
|
+
resolveFaithfulnessGateEndpoint,
|
|
40
|
+
} from "./local-model-endpoint.js";
|
|
37
41
|
import { extractJsonCandidates } from "./json-extract.js";
|
|
38
42
|
|
|
39
43
|
// Re-export for callers importing from this module.
|
|
@@ -280,13 +284,54 @@ async function callFaithfulnessLlm(
|
|
|
280
284
|
fallbackLlm: FallbackLlmClient | null,
|
|
281
285
|
timeoutMs: number,
|
|
282
286
|
signal?: AbortSignal,
|
|
287
|
+
fetchImpl: typeof fetch = fetch,
|
|
283
288
|
): Promise<LlmCallResult> {
|
|
284
289
|
const messages: Array<{ role: "system" | "user"; content: string }> = [
|
|
285
290
|
{ role: "system", content: systemPrompt },
|
|
286
291
|
{ role: "user", content: userPrompt },
|
|
287
292
|
];
|
|
288
293
|
|
|
289
|
-
|
|
294
|
+
// Issue #1585 model-lab pointer: when an explicit local fine-tuned endpoint
|
|
295
|
+
// is configured (base URL + model name), try it FIRST — it is the cheapest,
|
|
296
|
+
// deterministic path the operator opted into by setting
|
|
297
|
+
// extractionFaithfulnessBaseUrl. Unset (the default) skips this entirely,
|
|
298
|
+
// preserving byte-identical pre-feature routing (rule 39). Any failure
|
|
299
|
+
// (network, non-2xx, malformed body, timeout) returns null and falls through
|
|
300
|
+
// to the configured chain (checklist §4 graceful degradation).
|
|
301
|
+
const localEndpoint = resolveFaithfulnessGateEndpoint(config);
|
|
302
|
+
if (localEndpoint) {
|
|
303
|
+
// Give the local probe a SMALLER budget than the outer batch timeout so a
|
|
304
|
+
// wedged local model returns null (and falls through to the configured
|
|
305
|
+
// chain) before the batch timer fires. The local endpoint is meant to be
|
|
306
|
+
// the fast path; if it cannot answer within half the budget (min 500ms),
|
|
307
|
+
// abandon it and let the fallback chain use the remainder (codex P2 — the
|
|
308
|
+
// advertised graceful fallback must actually reach the chain, not be starved
|
|
309
|
+
// by a hanging probe sharing the full batch budget).
|
|
310
|
+
const probeBudgetMs = Math.max(500, Math.floor(timeoutMs / 2));
|
|
311
|
+
const result = await callOpenAiCompatibleChat(
|
|
312
|
+
localEndpoint,
|
|
313
|
+
messages,
|
|
314
|
+
{ temperature: 0.1, maxTokens: 2048, responseFormatJson: true, timeoutMs: probeBudgetMs },
|
|
315
|
+
fetchImpl,
|
|
316
|
+
);
|
|
317
|
+
if (result?.content) {
|
|
318
|
+
return { content: result.content, modelUsed: result.modelUsed };
|
|
319
|
+
}
|
|
320
|
+
log.debug(
|
|
321
|
+
"extraction-faithfulness: local model-lab endpoint unavailable, trying configured chain",
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// extractionFaithfulnessModel is the LOCAL served model's name (e.g.
|
|
326
|
+
// remnic-faithfulness-gate-v1). When a local endpoint is configured it
|
|
327
|
+
// belongs to that endpoint ONLY — it must NOT leak into the fallback chain
|
|
328
|
+
// as a gateway/local-LLM override, or a local outage forces the configured
|
|
329
|
+
// chain onto an unavailable local-only model and turns graceful fallback
|
|
330
|
+
// into backend_unavailable (codex P2 PRRT_kwDORJXyws6Otp-L). Decouple: the
|
|
331
|
+
// override reaches the fallback chain only when NO local endpoint is
|
|
332
|
+
// configured (the pre-feature model-override contract, preserved
|
|
333
|
+
// byte-identical — rule 39).
|
|
334
|
+
const modelOverride = localEndpoint ? undefined : (config.extractionFaithfulnessModel || undefined);
|
|
290
335
|
|
|
291
336
|
// Skip the local backend when (a) modelSource is "gateway", or (b) a
|
|
292
337
|
// faithfulness model override is set. The local client always sends
|
|
@@ -415,6 +460,12 @@ export async function checkFaithfulnessBatch(
|
|
|
415
460
|
config: PluginConfig,
|
|
416
461
|
localLlm: LocalLlmClient | null,
|
|
417
462
|
fallbackLlm: FallbackLlmClient | null,
|
|
463
|
+
/**
|
|
464
|
+
* Optional fetch injection (issue #1585). The orchestrator does not pass it
|
|
465
|
+
* (uses global fetch); tests pass a stub to exercise the local model-lab
|
|
466
|
+
* endpoint path without a live server. See callFaithfulnessLlm.
|
|
467
|
+
*/
|
|
468
|
+
fetchImpl?: typeof fetch,
|
|
418
469
|
): Promise<FaithfulnessBatchResult> {
|
|
419
470
|
const timeoutMs =
|
|
420
471
|
typeof config.extractionFaithfulnessTimeoutMs === "number" &&
|
|
@@ -486,6 +537,7 @@ export async function checkFaithfulnessBatch(
|
|
|
486
537
|
fallbackLlm,
|
|
487
538
|
timeoutMs,
|
|
488
539
|
controller.signal,
|
|
540
|
+
fetchImpl,
|
|
489
541
|
);
|
|
490
542
|
const settled = await Promise.race([
|
|
491
543
|
callPromise.then(
|