@remnic/core 9.65.6 → 9.65.7
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-admin-ops-surface.d.ts +11 -11
- package/dist/access-admin-ops-surface.js +31 -31
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +11 -11
- package/dist/access-authorization-probe.js +32 -32
- package/dist/access-boundary.d.ts +11 -11
- package/dist/access-boundary.js +31 -31
- package/dist/access-cli.js +111 -106
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +1 -1
- package/dist/access-extraction-force-flush.d.ts +11 -11
- package/dist/access-extraction-force-flush.js +31 -31
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-lcm-compaction.d.ts +11 -11
- package/dist/access-http-lifecycle-flush.d.ts +11 -11
- package/dist/access-http-offline-stream.d.ts +11 -11
- package/dist/access-http-query.d.ts +2 -2
- package/dist/access-http-query.js +33 -33
- package/dist/access-http.d.ts +13 -18
- package/dist/access-http.js +50 -48
- package/dist/access-identity-continuity-surface.d.ts +9 -9
- package/dist/access-identity-continuity-surface.js +31 -31
- package/dist/access-lcm-surface.d.ts +11 -11
- package/dist/access-lcm-surface.js +31 -31
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +11 -11
- package/dist/access-mcp.js +42 -40
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-D_6mo8ms.d.ts → access-namespace-preflight-8VYKmRX0.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +31 -31
- package/dist/access-observe-write-surface.d.ts +11 -11
- package/dist/access-observe-write-surface.js +31 -31
- package/dist/access-offline-manifest.d.ts +9 -9
- package/dist/access-operations-batch.js +34 -34
- package/dist/access-operations.d.ts +12 -12
- package/dist/access-operations.js +39 -37
- package/dist/access-recall-concurrency.d.ts +11 -11
- package/dist/access-recall-concurrency.js +31 -31
- package/dist/access-recall-response.d.ts +11 -11
- package/dist/access-recall-response.js +31 -31
- package/dist/access-recall-surface.d.ts +11 -11
- package/dist/access-recall-surface.js +31 -31
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-sbiNS5UB.d.ts → access-service-Crk__Git.d.ts} +8 -8
- package/dist/access-service-helpers.d.ts +11 -11
- package/dist/access-service.d.ts +11 -11
- package/dist/access-service.js +31 -31
- package/dist/access-surface-catalog.d.ts +11 -11
- package/dist/access-surface-catalog.js +43 -33
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +3 -3
- 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 -4
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +9 -9
- package/dist/briefing-window.d.ts +2 -2
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +10 -10
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/{catalog-DO_7zfkv.d.ts → catalog-DybwVNW3.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 +13 -13
- 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-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-NZPFCP5A.js → chunk-2PSX5BJU.js} +2 -2
- package/dist/chunk-3BCULS4U.js +1093 -0
- package/dist/chunk-3BCULS4U.js.map +1 -0
- package/dist/{chunk-W6J4POB6.js → chunk-3RI5Y7KU.js} +2 -2
- package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
- package/dist/{chunk-IF4EY26E.js → chunk-5DH6PG4B.js} +2 -2
- package/dist/{chunk-M4AHBM72.js → chunk-5HERQ5FX.js} +10 -10
- package/dist/{chunk-IRXMJLTW.js → chunk-5HK3CJAR.js} +2 -2
- package/dist/{chunk-XAWIL7TC.js → chunk-5S4LQOPE.js} +2 -2
- package/dist/{chunk-IDQ6DKXC.js → chunk-5VPQSRQO.js} +3 -3
- package/dist/{chunk-ROEAEANL.js → chunk-6CPUQ5D6.js} +10 -10
- package/dist/{chunk-SR7JIRAR.js → chunk-7F27PCSN.js} +2 -2
- package/dist/{chunk-7OZSHBWK.js → chunk-7TCGNUVP.js} +2 -2
- package/dist/{chunk-KBOG7FJV.js → chunk-7WR462EM.js} +2 -2
- package/dist/{chunk-AYAZWXJI.js → chunk-A32YEQAM.js} +2 -2
- package/dist/{chunk-5GIZM4RX.js → chunk-ACOC27BB.js} +2 -2
- package/dist/{chunk-5W7MKXMU.js → chunk-AFR6AIM4.js} +144 -78
- package/dist/chunk-AFR6AIM4.js.map +1 -0
- package/dist/{chunk-OMZLBT4B.js → chunk-ANJXPFRS.js} +47 -26
- package/dist/chunk-ANJXPFRS.js.map +1 -0
- package/dist/{chunk-FC7TIRFS.js → chunk-AX7UXCHJ.js} +6 -1
- package/dist/chunk-AX7UXCHJ.js.map +1 -0
- package/dist/{chunk-6LS5OX3U.js → chunk-BJTHRFFC.js} +6 -6
- package/dist/chunk-BWGCOLEL.js +61 -0
- package/dist/chunk-BWGCOLEL.js.map +1 -0
- package/dist/{chunk-PGW64IFQ.js → chunk-CFGU52XJ.js} +2 -2
- package/dist/{chunk-DPNXADEI.js → chunk-D4QVPP3G.js} +2 -2
- package/dist/{chunk-2RXUZVPU.js → chunk-EOHKUWXW.js} +2 -2
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-ZK4BFABK.js → chunk-F635GAL7.js} +4 -4
- package/dist/{chunk-HWVNYNIV.js → chunk-F6QHHRWP.js} +2 -2
- package/dist/{chunk-YUTTMSC7.js → chunk-FMQ4MOQO.js} +89 -26
- package/dist/chunk-FMQ4MOQO.js.map +1 -0
- package/dist/{chunk-LDBFXD4F.js → chunk-FP7YTTVO.js} +3 -1
- package/dist/chunk-FP7YTTVO.js.map +1 -0
- package/dist/{chunk-O4BAGJDN.js → chunk-GEPACVWN.js} +2 -2
- package/dist/{chunk-XZBXINXZ.js → chunk-GIC6BASP.js} +4 -4
- package/dist/{chunk-PP7R754B.js → chunk-GPFZFCRN.js} +1 -1
- package/dist/{chunk-LSYD7GHZ.js → chunk-GTSVEEP3.js} +2 -2
- package/dist/{chunk-RQ2EQRRR.js → chunk-I4343FIA.js} +79 -6
- package/dist/chunk-I4343FIA.js.map +1 -0
- package/dist/{chunk-YWBOOBDP.js → chunk-I7EX6KSH.js} +58 -58
- package/dist/{chunk-3I22VWB3.js → chunk-IP4ZNT4U.js} +2 -2
- package/dist/{chunk-AXGFOFNY.js → chunk-IY7UXD3J.js} +2 -2
- package/dist/{chunk-6FUMA6AA.js → chunk-JAQXUGLN.js} +2 -2
- package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
- package/dist/chunk-JCCWJHOP.js +240 -0
- package/dist/chunk-JCCWJHOP.js.map +1 -0
- package/dist/{chunk-5W7CTZ2E.js → chunk-KQAFEZQX.js} +4 -4
- package/dist/{chunk-D2YNNDML.js → chunk-KWIGDKM2.js} +2 -2
- package/dist/{chunk-2JHRCWHT.js → chunk-LLQCM2U2.js} +85 -85
- package/dist/{chunk-OLBZ2WGG.js → chunk-LTBKKSCX.js} +2 -2
- package/dist/{chunk-RACZB5HT.js → chunk-N37X5RU7.js} +4 -4
- package/dist/{chunk-FEO2CDXR.js → chunk-NG3MBQV4.js} +2 -2
- package/dist/{chunk-AG46P24C.js → chunk-NNBZS3DY.js} +4 -4
- package/dist/{chunk-JGG5HVI2.js → chunk-OPGL46PX.js} +2 -2
- package/dist/{chunk-OUKBMQ2O.js → chunk-PD66CVSD.js} +2 -2
- package/dist/{chunk-7SSRXEZJ.js → chunk-PDDSFELN.js} +2 -2
- package/dist/{chunk-MVIYRRVJ.js → chunk-PMVPCZJZ.js} +5 -5
- package/dist/{chunk-D35XLYQ7.js → chunk-RGCF4XNH.js} +9 -9
- package/dist/{chunk-PNAGNVGK.js → chunk-RQE4TITU.js} +35 -30
- package/dist/chunk-RQE4TITU.js.map +1 -0
- package/dist/{chunk-X2DWBWOX.js → chunk-S3K2CIK5.js} +2 -2
- package/dist/{chunk-TWBQQ3FT.js → chunk-SEA6M7SS.js} +2 -2
- package/dist/{chunk-DYO24BNB.js → chunk-SVVIASVX.js} +2 -2
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-4K7IW3F7.js → chunk-UD7UNYRD.js} +34 -3
- package/dist/chunk-UD7UNYRD.js.map +1 -0
- package/dist/chunk-ULM7JCDH.js +154 -0
- package/dist/chunk-ULM7JCDH.js.map +1 -0
- package/dist/{chunk-NLUCDKLT.js → chunk-VKCAHCBI.js} +2 -2
- package/dist/{chunk-BXXOPKT5.js → chunk-VXVZ2GM3.js} +2 -2
- package/dist/chunk-W2UOAATB.js +521 -0
- package/dist/chunk-W2UOAATB.js.map +1 -0
- package/dist/{chunk-JFWZRUKP.js → chunk-WTOZBZNN.js} +3 -3
- package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-5TG4MU2U.js → chunk-YKWFK7XA.js} +5 -5
- package/dist/{chunk-BIJAWZYW.js → chunk-YMOPYG3K.js} +6 -6
- package/dist/{chunk-XUZ5CIEE.js → chunk-YRVAKONL.js} +1 -1
- package/dist/{chunk-53MZQEBD.js → chunk-YWSQD2IB.js} +2 -2
- package/dist/{chunk-US4IRASK.js → chunk-Z4U3UN56.js} +2 -2
- package/dist/{chunk-QMZY3GG6.js → chunk-ZAOHJDKH.js} +3 -3
- package/dist/{chunk-ZXUZ54Z5.js → chunk-ZIJDI4CP.js} +2 -2
- package/dist/{cli-Bfgo0n1L.d.ts → cli-B322UMvB.d.ts} +5 -5
- package/dist/cli.d.ts +13 -13
- package/dist/cli.js +75 -74
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +10 -10
- 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 -4
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +10 -10
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +10 -10
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +3 -3
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +12 -12
- package/dist/conversation-index/backend.d.ts +1 -1
- 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/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +12 -12
- package/dist/cross-lingual-recall.d.ts +1 -1
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-D23_x-s5.d.ts → dependency-propagation-delivery-BGcNairQ.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-origin-fields.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +10 -10
- package/dist/entity-schema.d.ts +1 -1
- package/dist/episodic-context.d.ts +1 -1
- package/dist/eval-trajectory-contracts.d.ts +256 -0
- package/dist/eval-trajectory-contracts.js +56 -0
- package/dist/eval-trajectory-store.d.ts +39 -0
- package/dist/eval-trajectory-store.js +19 -0
- package/dist/eval-trajectory-store.js.map +1 -0
- package/dist/eval-trajectory.d.ts +67 -0
- package/dist/eval-trajectory.js +46 -0
- package/dist/eval-trajectory.js.map +1 -0
- package/dist/event-order-recall.js +2 -2
- package/dist/explicit-capture.d.ts +9 -9
- package/dist/external-wiki-access.d.ts +11 -11
- package/dist/external-wiki-access.js +32 -32
- package/dist/external-wiki-collection-registration.d.ts +1 -1
- package/dist/external-wiki-collection.d.ts +1 -1
- package/dist/external-wiki-mcp-tools.d.ts +11 -11
- package/dist/extraction-error-classification.d.ts +1 -1
- package/dist/extraction-faithfulness.d.ts +1 -1
- 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-liveness.d.ts +1 -1
- package/dist/extraction-normalization.d.ts +1 -1
- package/dist/extraction-prompt.d.ts +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +12 -12
- package/dist/fallback-llm.d.ts +1 -1
- 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-FXGELBFA.js → graph-edge-decay-A4SDFMMS.js} +4 -4
- package/dist/graph-edge-decay-A4SDFMMS.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-path-reconstruction.d.ts +1 -1
- package/dist/graph-path-scoring.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 +3 -3
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/{index--QhGIXF2.d.ts → index-By2QUAMh.d.ts} +2 -2
- package/dist/index.d.ts +26 -23
- package/dist/index.js +184 -142
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +4 -4
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +13 -13
- 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 +1 -1
- package/dist/location/index.d.ts +128 -1
- package/dist/location/index.js +60 -750
- package/dist/location/index.js.map +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +10 -10
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -10
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +11 -11
- package/dist/{maintenance-PFvY1Pw_.d.ts → maintenance-Dm2McrIx.d.ts} +4 -3
- package/dist/mcp-memory-inspector-app.d.ts +11 -11
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-controller.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-snapshot.d.ts +1 -1
- package/dist/memory-subject-cli.d.ts +11 -11
- package/dist/memory-subject.d.ts +11 -11
- package/dist/memory-worth-outcomes.d.ts +47 -3
- package/dist/memory-worth-outcomes.js +5 -3
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +11 -11
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +7 -7
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +10 -10
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +13 -13
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +24 -24
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +18 -16
- package/dist/{orchestrator-4wzJrPVm.d.ts → orchestrator-Co1DyfuP.d.ts} +8 -8
- package/dist/orchestrator.d.ts +9 -9
- package/dist/orchestrator.js +111 -106
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-CgXgdIrF.d.ts → pipeline-DotMnb6y.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/{public-http-BP3VQDl5.d.ts → public-http-PJRtnSi-.d.ts} +1 -1
- package/dist/{qmd-BppGGxsi.d.ts → qmd-BP0n11fR.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/recall-concurrency-config.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-memory-map.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray.d.ts +1 -1
- package/dist/reconcile/cursor.d.ts +1 -1
- package/dist/reconcile/manifest.d.ts +1 -1
- package/dist/reconcile/plan.d.ts +1 -1
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/replica-divergence.d.ts +1 -1
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +5 -5
- package/dist/retrieval-agents.d.ts +2 -2
- 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/salvage-envelope.d.ts +1 -1
- package/dist/{scope-profiles-ChZUtxDU.d.ts → scope-profiles-6ChZKTy-.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 +6 -6
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +10 -10
- 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-mSPwQSmF.d.ts → semantic-consolidation-DziYcW5J.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +11 -11
- package/dist/semantic-rule-promotion.js +10 -10
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +10 -10
- package/dist/{service-BICWLwSP.d.ts → service-C7rIBuK_.d.ts} +2 -2
- 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/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +10 -10
- package/dist/{storage-B7urx1K3.d.ts → storage-B1hEx8Xg.d.ts} +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +9 -9
- package/dist/subject-config.d.ts +1 -1
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +14 -14
- package/dist/support-passport/index.js +34 -34
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-timeline-recall.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 +2 -2
- 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 +2 -2
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-ETU5N6nB.d.ts → types-BHDNxGTT.d.ts} +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +10 -10
- package/dist/who-knows-cli.d.ts +11 -11
- package/dist/who-knows-cli.js +11 -11
- package/dist/who-knows.d.ts +11 -11
- package/dist/who-knows.js +10 -10
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/access-boundary.ts +5 -0
- package/src/access-http.ts +15 -16
- package/src/access-mcp-output-schemas.ts +5 -0
- package/src/access-mcp.ts +6 -6
- package/src/access-operations.ts +2 -0
- package/src/access-surface-catalog.ts +10 -0
- package/src/eval-trajectory-contracts.ts +411 -0
- package/src/eval-trajectory-store.ts +306 -0
- package/src/eval-trajectory.test.ts +534 -0
- package/src/eval-trajectory.ts +773 -0
- package/src/index.ts +2 -0
- package/src/location/access-operations.ts +84 -0
- package/src/location/http-glue.test.ts +100 -0
- package/src/location/http-glue.ts +85 -0
- package/src/location/index.ts +3 -0
- package/src/location/mcp-tools.ts +82 -0
- package/src/location/provider-setup.test.ts +106 -0
- package/src/location/provider-setup.ts +103 -0
- package/src/location/scheduler.test.ts +113 -0
- package/src/location/scheduler.ts +98 -0
- package/src/location/surfaces.test.ts +241 -0
- package/src/location/surfaces.ts +329 -0
- package/src/maintenance/day-summary-cron.ts +45 -0
- package/src/mcp-read-only-tools.ts +2 -0
- package/src/memory-worth-outcomes.test.ts +53 -18
- package/src/memory-worth-outcomes.ts +91 -9
- package/src/orchestration/maintenance.ts +22 -30
- package/src/wearables/http-glue.ts +28 -0
- package/dist/chunk-4K7IW3F7.js.map +0 -1
- package/dist/chunk-5W7MKXMU.js.map +0 -1
- package/dist/chunk-FC7TIRFS.js.map +0 -1
- package/dist/chunk-LDBFXD4F.js.map +0 -1
- package/dist/chunk-OMZLBT4B.js.map +0 -1
- package/dist/chunk-PNAGNVGK.js.map +0 -1
- package/dist/chunk-RQ2EQRRR.js.map +0 -1
- package/dist/chunk-YUTTMSC7.js.map +0 -1
- /package/dist/{capsule-crypto-GWVG7LGC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
- /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-NZPFCP5A.js.map → chunk-2PSX5BJU.js.map} +0 -0
- /package/dist/{chunk-W6J4POB6.js.map → chunk-3RI5Y7KU.js.map} +0 -0
- /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
- /package/dist/{chunk-IF4EY26E.js.map → chunk-5DH6PG4B.js.map} +0 -0
- /package/dist/{chunk-M4AHBM72.js.map → chunk-5HERQ5FX.js.map} +0 -0
- /package/dist/{chunk-IRXMJLTW.js.map → chunk-5HK3CJAR.js.map} +0 -0
- /package/dist/{chunk-XAWIL7TC.js.map → chunk-5S4LQOPE.js.map} +0 -0
- /package/dist/{chunk-IDQ6DKXC.js.map → chunk-5VPQSRQO.js.map} +0 -0
- /package/dist/{chunk-ROEAEANL.js.map → chunk-6CPUQ5D6.js.map} +0 -0
- /package/dist/{chunk-SR7JIRAR.js.map → chunk-7F27PCSN.js.map} +0 -0
- /package/dist/{chunk-7OZSHBWK.js.map → chunk-7TCGNUVP.js.map} +0 -0
- /package/dist/{chunk-KBOG7FJV.js.map → chunk-7WR462EM.js.map} +0 -0
- /package/dist/{chunk-AYAZWXJI.js.map → chunk-A32YEQAM.js.map} +0 -0
- /package/dist/{chunk-5GIZM4RX.js.map → chunk-ACOC27BB.js.map} +0 -0
- /package/dist/{chunk-6LS5OX3U.js.map → chunk-BJTHRFFC.js.map} +0 -0
- /package/dist/{chunk-PGW64IFQ.js.map → chunk-CFGU52XJ.js.map} +0 -0
- /package/dist/{chunk-DPNXADEI.js.map → chunk-D4QVPP3G.js.map} +0 -0
- /package/dist/{chunk-2RXUZVPU.js.map → chunk-EOHKUWXW.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-ZK4BFABK.js.map → chunk-F635GAL7.js.map} +0 -0
- /package/dist/{chunk-HWVNYNIV.js.map → chunk-F6QHHRWP.js.map} +0 -0
- /package/dist/{chunk-O4BAGJDN.js.map → chunk-GEPACVWN.js.map} +0 -0
- /package/dist/{chunk-XZBXINXZ.js.map → chunk-GIC6BASP.js.map} +0 -0
- /package/dist/{chunk-PP7R754B.js.map → chunk-GPFZFCRN.js.map} +0 -0
- /package/dist/{chunk-LSYD7GHZ.js.map → chunk-GTSVEEP3.js.map} +0 -0
- /package/dist/{chunk-YWBOOBDP.js.map → chunk-I7EX6KSH.js.map} +0 -0
- /package/dist/{chunk-3I22VWB3.js.map → chunk-IP4ZNT4U.js.map} +0 -0
- /package/dist/{chunk-AXGFOFNY.js.map → chunk-IY7UXD3J.js.map} +0 -0
- /package/dist/{chunk-6FUMA6AA.js.map → chunk-JAQXUGLN.js.map} +0 -0
- /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
- /package/dist/{chunk-5W7CTZ2E.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-D2YNNDML.js.map → chunk-KWIGDKM2.js.map} +0 -0
- /package/dist/{chunk-2JHRCWHT.js.map → chunk-LLQCM2U2.js.map} +0 -0
- /package/dist/{chunk-OLBZ2WGG.js.map → chunk-LTBKKSCX.js.map} +0 -0
- /package/dist/{chunk-RACZB5HT.js.map → chunk-N37X5RU7.js.map} +0 -0
- /package/dist/{chunk-FEO2CDXR.js.map → chunk-NG3MBQV4.js.map} +0 -0
- /package/dist/{chunk-AG46P24C.js.map → chunk-NNBZS3DY.js.map} +0 -0
- /package/dist/{chunk-JGG5HVI2.js.map → chunk-OPGL46PX.js.map} +0 -0
- /package/dist/{chunk-OUKBMQ2O.js.map → chunk-PD66CVSD.js.map} +0 -0
- /package/dist/{chunk-7SSRXEZJ.js.map → chunk-PDDSFELN.js.map} +0 -0
- /package/dist/{chunk-MVIYRRVJ.js.map → chunk-PMVPCZJZ.js.map} +0 -0
- /package/dist/{chunk-D35XLYQ7.js.map → chunk-RGCF4XNH.js.map} +0 -0
- /package/dist/{chunk-X2DWBWOX.js.map → chunk-S3K2CIK5.js.map} +0 -0
- /package/dist/{chunk-TWBQQ3FT.js.map → chunk-SEA6M7SS.js.map} +0 -0
- /package/dist/{chunk-DYO24BNB.js.map → chunk-SVVIASVX.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-NLUCDKLT.js.map → chunk-VKCAHCBI.js.map} +0 -0
- /package/dist/{chunk-BXXOPKT5.js.map → chunk-VXVZ2GM3.js.map} +0 -0
- /package/dist/{chunk-JFWZRUKP.js.map → chunk-WTOZBZNN.js.map} +0 -0
- /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-5TG4MU2U.js.map → chunk-YKWFK7XA.js.map} +0 -0
- /package/dist/{chunk-BIJAWZYW.js.map → chunk-YMOPYG3K.js.map} +0 -0
- /package/dist/{chunk-XUZ5CIEE.js.map → chunk-YRVAKONL.js.map} +0 -0
- /package/dist/{chunk-53MZQEBD.js.map → chunk-YWSQD2IB.js.map} +0 -0
- /package/dist/{chunk-US4IRASK.js.map → chunk-Z4U3UN56.js.map} +0 -0
- /package/dist/{chunk-QMZY3GG6.js.map → chunk-ZAOHJDKH.js.map} +0 -0
- /package/dist/{chunk-ZXUZ54Z5.js.map → chunk-ZIJDI4CP.js.map} +0 -0
- /package/dist/{graph-edge-decay-FXGELBFA.js.map → eval-trajectory-contracts.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
|
|
3
3
|
SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RQE4TITU.js";
|
|
5
5
|
import {
|
|
6
6
|
SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
|
|
7
7
|
} from "./chunk-XDL5CYZN.js";
|
|
@@ -343,4 +343,4 @@ export {
|
|
|
343
343
|
parseSupportPassportModelJob,
|
|
344
344
|
SupportPassportModelBridge
|
|
345
345
|
};
|
|
346
|
-
//# sourceMappingURL=chunk-
|
|
346
|
+
//# sourceMappingURL=chunk-S3K2CIK5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BJTHRFFC.js";
|
|
4
4
|
import {
|
|
5
5
|
getCachedRuleMemories,
|
|
6
6
|
setCachedRuleMemories
|
|
@@ -119,4 +119,4 @@ export {
|
|
|
119
119
|
compareVerifiedSemanticRuleResults,
|
|
120
120
|
searchVerifiedSemanticRules
|
|
121
121
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-SEA6M7SS.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BJTHRFFC.js";
|
|
4
4
|
import {
|
|
5
5
|
bumpMemoryCorpusVersionForDir
|
|
6
6
|
} from "./chunk-XCB6QDL6.js";
|
|
@@ -765,4 +765,4 @@ export {
|
|
|
765
765
|
listMemoryGovernanceRuns,
|
|
766
766
|
readMemoryGovernanceRunArtifact
|
|
767
767
|
};
|
|
768
|
-
//# sourceMappingURL=chunk-
|
|
768
|
+
//# sourceMappingURL=chunk-SVVIASVX.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
appendRecallAuditEntry
|
|
3
|
-
} from "./chunk-LBLXEFWK.js";
|
|
4
1
|
import {
|
|
5
2
|
detectRecallAnomalies
|
|
6
3
|
} from "./chunk-RFYAYKTD.js";
|
|
4
|
+
import {
|
|
5
|
+
appendRecallAuditEntry
|
|
6
|
+
} from "./chunk-LBLXEFWK.js";
|
|
7
7
|
|
|
8
8
|
// src/access-audit.ts
|
|
9
9
|
var AccessAuditAdapter = class {
|
|
@@ -62,4 +62,4 @@ var AccessAuditAdapter = class {
|
|
|
62
62
|
export {
|
|
63
63
|
AccessAuditAdapter
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
65
|
+
//# sourceMappingURL=chunk-TVVEYCNW.js.map
|
|
@@ -16,7 +16,10 @@ function runSerialized(key, task) {
|
|
|
16
16
|
});
|
|
17
17
|
return next;
|
|
18
18
|
}
|
|
19
|
-
var MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES = /* @__PURE__ */ new Set([
|
|
19
|
+
var MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES = /* @__PURE__ */ new Set([
|
|
20
|
+
"fact",
|
|
21
|
+
"procedure"
|
|
22
|
+
]);
|
|
20
23
|
function memoryWorthOutcomeEligibleCategories() {
|
|
21
24
|
return new Set(MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES);
|
|
22
25
|
}
|
|
@@ -82,9 +85,37 @@ async function recordMemoryOutcome(storage, input) {
|
|
|
82
85
|
};
|
|
83
86
|
});
|
|
84
87
|
}
|
|
88
|
+
var OBSERVATION_ISO_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
89
|
+
function toMemoryOutcomeObservation(raw) {
|
|
90
|
+
if (typeof raw.memoryId !== "string" || raw.memoryId.length === 0 || typeof raw.namespace !== "string" || raw.namespace.length === 0 || raw.outcome !== "success" && raw.outcome !== "failure") {
|
|
91
|
+
throw new Error("toMemoryOutcomeObservation requires memoryId, namespace, and outcome");
|
|
92
|
+
}
|
|
93
|
+
const observedAt = typeof raw.observedAt === "string" && OBSERVATION_ISO_RE.test(raw.observedAt) ? raw.observedAt : raw.observedAt instanceof Date ? raw.observedAt.toISOString() : null;
|
|
94
|
+
if (observedAt === null) {
|
|
95
|
+
return { status: "missing_observation", memoryId: raw.memoryId, reason: "missing_observed_at" };
|
|
96
|
+
}
|
|
97
|
+
const joinId = typeof raw.joinId === "string" && raw.joinId.length > 0 ? raw.joinId : void 0;
|
|
98
|
+
const sessionKey = typeof raw.sessionKey === "string" && raw.sessionKey.length > 0 ? raw.sessionKey : void 0;
|
|
99
|
+
if (joinId === void 0 && sessionKey === void 0) {
|
|
100
|
+
return { status: "missing_observation", memoryId: raw.memoryId, reason: "missing_join_data" };
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
status: "observed",
|
|
104
|
+
observation: {
|
|
105
|
+
schemaVersion: 1,
|
|
106
|
+
memoryId: raw.memoryId,
|
|
107
|
+
namespace: raw.namespace,
|
|
108
|
+
outcome: raw.outcome,
|
|
109
|
+
observedAt,
|
|
110
|
+
joinId,
|
|
111
|
+
sessionKey
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
85
115
|
|
|
86
116
|
export {
|
|
87
117
|
memoryWorthOutcomeEligibleCategories,
|
|
88
|
-
recordMemoryOutcome
|
|
118
|
+
recordMemoryOutcome,
|
|
119
|
+
toMemoryOutcomeObservation
|
|
89
120
|
};
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
121
|
+
//# sourceMappingURL=chunk-UD7UNYRD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/memory-worth-outcomes.ts"],"sourcesContent":["/**\n * Issue #560 PR 3 — Memory Worth outcome signal pipeline.\n *\n * PR 1 added `mw_success` / `mw_fail` fields to MemoryFrontmatter. PR 2 added\n * a pure scoring helper. This module adds the one piece tying the two\n * together: a way for callers to record a single outcome observation against\n * a memory, which increments the appropriate counter in frontmatter.\n *\n * The public entry point is `recordMemoryOutcome({ memoryPath, outcome, ... })`.\n * Callers pass the full path to the memory file (not just the ID) because in\n * the usual outcome source — the observation ledger — the memory path is\n * already captured in the event payload, and path-based lookup avoids a\n * full-corpus scan.\n *\n * Intentional properties:\n * - Works on a per-memory basis (no bulk API in this slice). Bulk update is\n * an easy layer on top of this once a second caller needs it.\n * - Reuses the existing `updateMemoryFrontmatter(id, patch)` write path so\n * unrelated fields (confidence, importance, lifecycle hooks, etc.) are\n * preserved. The PR 1 serializer rejects negative / non-integer counters,\n * so we rely on that for defensive validation rather than duplicating it.\n * - Only instruments categories in `MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES`\n * (currently `fact` and `procedure` — procedures joined in issue #2370 —\n * matching `MEMORY_WORTH_ELIGIBLE_CATEGORIES` in operator-toolkit.ts for\n * the doctor audit). Non-eligible memories return\n * `{ ok: false, reason: \"ineligible_category\" }` rather than throwing so\n * the caller — typically a ledger consumer draining heterogeneous events\n * — doesn't need to pre-filter by category.\n * - Missing / unknown memory IDs return `{ ok: false, reason: \"not_found\" }`\n * rather than throwing, because outcome events may reference memories\n * that were archived/deleted between the session and the ledger drain.\n * That isn't an operator-actionable error.\n * - On success, returns the new counter values so observability surfaces\n * can report the increment without a second read.\n *\n * Out of scope (later PRs):\n * - Recall filter reading the counters (PR 4).\n * - Benchmark + default flip (PR 5).\n * - Automatic increments from extraction or summarization. Only the\n * explicit `MEM_OUTCOME` ledger tag or an MCP tool call drives writes.\n */\n\nimport path from \"node:path\";\n\nimport type { StorageManager } from \"./storage.js\";\nimport type { MemoryFrontmatter } from \"./types.js\";\n\n/**\n * Per-memory-ID serialization of the read-modify-write increment.\n *\n * Codex P1: without this, concurrent calls for the same memory race. Both\n * callers read the same `mw_*` values, each writes +1, and one increment\n * is lost — silently undercounting outcomes. We chain an async promise\n * per memory ID so read-then-write is atomic with respect to other calls\n * into this module.\n *\n * This serializes only THIS module. Direct writers (e.g. hand-rolled\n * frontmatter patches) still bypass the lock, but the documented surface\n * for Memory Worth increments is this function, and the bench only uses\n * this path.\n *\n * The lock map is WeakRef-free by design: the chain self-cleans once the\n * last pending write resolves (we delete the entry inside the `.finally`\n * of the tail), so memory use stays bounded even for long-running\n * processes that touch many different memory IDs.\n */\nconst outcomeLocks = new Map<string, Promise<unknown>>();\n\nfunction runSerialized<T>(key: string, task: () => Promise<T>): Promise<T> {\n const prev = outcomeLocks.get(key) ?? Promise.resolve();\n // Swallow upstream errors so a failed outcome for memory A doesn't\n // permanently poison the chain for memory A. We still propagate our own\n // result/errors to the caller.\n const next = prev.catch(() => undefined).then(task);\n outcomeLocks.set(key, next);\n // Chain the cleanup off `next` BUT attach a `.catch` so the cleanup\n // promise itself never surfaces as an unhandled rejection. The caller\n // gets `next` back and handles it their own way; this detached cleanup\n // chain has no observer, so without the .catch Node would crash the\n // process on a task rejection even when the caller awaited `next` and\n // handled the error correctly.\n next\n .then(\n () => {\n if (outcomeLocks.get(key) === next) outcomeLocks.delete(key);\n },\n () => {\n if (outcomeLocks.get(key) === next) outcomeLocks.delete(key);\n }\n )\n .catch(() => {\n // Defensive no-op in case a hook inside the cleanup branches throws.\n });\n return next;\n}\n\n/**\n * Categories currently instrumented for Memory Worth counters. `procedure`\n * joined in issue #2370 — the procedure library-health maintenance loop\n * retires on failure-dominant `mw_*` counters, so injected procedures must\n * be able to accrue outcomes. Must be kept in sync with\n * `MEMORY_WORTH_ELIGIBLE_CATEGORIES` in `operator-toolkit.ts`. Declared\n * here (not imported) to avoid a circular dep with operator-toolkit, which\n * imports from this file's peers. The two constants are validated by a\n * test to stay in lockstep.\n */\nconst MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES: ReadonlySet<MemoryFrontmatter[\"category\"]> = new Set([\n \"fact\",\n \"procedure\",\n]);\n\n/**\n * Exported so downstream tests / operators can query the allowlist without\n * re-declaring it. Returned as a frozen copy so consumers cannot mutate the\n * module-internal set.\n */\nexport function memoryWorthOutcomeEligibleCategories(): ReadonlySet<MemoryFrontmatter[\"category\"]> {\n return new Set(MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES);\n}\n\n/**\n * The direction of an outcome — whether the session that consumed this\n * memory succeeded or failed. Restricted to a string literal union so\n * callers in TypeScript land can't pass arbitrary tags.\n */\nexport type MemoryOutcomeKind = \"success\" | \"failure\";\n\n/**\n * Arguments to `recordMemoryOutcome`.\n *\n * `memoryPath` is the filesystem path to the memory; we derive the ID from\n * the basename, matching how the operator-toolkit and recall layers map\n * paths to IDs.\n */\nexport interface RecordMemoryOutcomeInput {\n /**\n * Absolute or repo-relative path to the memory file. Typically the value\n * of `MemoryFile.path` for a memory returned by `readAllMemories`.\n */\n memoryPath: string;\n /** Outcome direction — \"success\" bumps mw_success; \"failure\" bumps mw_fail. */\n outcome: MemoryOutcomeKind;\n /**\n * Optional observation timestamp for audit / telemetry. This PR doesn't\n * persist the timestamp (PR 4/5 will use `lastAccessed`, which already\n * covers the recency-decay requirement), but accepting it here keeps the\n * call shape stable so future ledger integrations don't need a breaking\n * change.\n */\n timestamp?: Date | string;\n}\n\n/**\n * Outcome of a `recordMemoryOutcome` call.\n *\n * `ok: true` means the counter was incremented and flushed. The returned\n * values reflect the post-increment state, so callers can log\n * `\"fact-xyz: 4/1 → 5/1\"` without re-reading.\n *\n * `ok: false` carries a short machine-readable `reason` so a ledger drainer\n * can aggregate metrics (\"how many events hit not_found this hour?\"). The\n * human-readable `message` is a friendlier version for logs.\n */\nexport type RecordMemoryOutcomeResult =\n | {\n ok: true;\n memoryId: string;\n /** New value of `mw_success` after the increment. */\n mw_success: number;\n /** New value of `mw_fail` after the increment. */\n mw_fail: number;\n }\n | {\n ok: false;\n reason: \"not_found\" | \"ineligible_category\" | \"invalid_outcome\" | \"invalid_path\";\n message: string;\n };\n\n/**\n * Extract the memory ID from a file path. Memory files are stored as\n * `<id>.md`, matching the rest of the system (see `getMemoryById`, which\n * infers paths from IDs).\n *\n * Returns `null` for any path that does not end in `.md`. The check is\n * unconditional — `path.basename` strips directory components before the\n * suffix check, so previous conditional logic silently accepted\n * directory-prefixed paths like `/tmp/facts/2026-01-01/not-a-memory`\n * (the basename `not-a-memory` is not equal to the input, so the `.md`\n * guard was skipped). The new check looks at the raw input once.\n */\nfunction memoryIdFromPath(memoryPath: string): string | null {\n if (!memoryPath || typeof memoryPath !== \"string\") return null;\n if (!memoryPath.endsWith(\".md\")) return null;\n const basename = path.basename(memoryPath, \".md\");\n if (!basename) return null;\n return basename;\n}\n\n/**\n * Record a single outcome observation against a memory. Increments\n * `mw_success` or `mw_fail` on the memory's frontmatter (preserving all\n * other fields) via the existing `updateMemoryFrontmatter` write path.\n *\n * See the top-of-file doc comment for policy details (eligible categories,\n * error semantics, and what is intentionally out of scope).\n */\nexport async function recordMemoryOutcome(\n storage: StorageManager,\n input: RecordMemoryOutcomeInput\n): Promise<RecordMemoryOutcomeResult> {\n if (input.outcome !== \"success\" && input.outcome !== \"failure\") {\n return {\n ok: false,\n reason: \"invalid_outcome\",\n message: `outcome must be \"success\" or \"failure\"; got ${JSON.stringify(input.outcome)}`,\n };\n }\n\n const memoryId = memoryIdFromPath(input.memoryPath);\n if (memoryId === null) {\n return {\n ok: false,\n reason: \"invalid_path\",\n message: `memoryPath must end in .md; got ${JSON.stringify(input.memoryPath)}`,\n };\n }\n\n // Serialize the read-modify-write per memory ID so concurrent callers\n // (parallel ledger drain, multiple MCP clients, etc.) can't each read\n // the same snapshot and race to write `+1`, losing an increment.\n return runSerialized(memoryId, async () => {\n const memory = await storage.getMemoryById(memoryId);\n if (!memory) {\n return {\n ok: false,\n reason: \"not_found\",\n message: `no memory with id ${memoryId}`,\n };\n }\n\n if (!MEMORY_WORTH_OUTCOME_ELIGIBLE_CATEGORIES.has(memory.frontmatter.category)) {\n return {\n ok: false,\n reason: \"ineligible_category\",\n message: `category ${memory.frontmatter.category} is not instrumented for Memory Worth`,\n };\n }\n\n // Absent counters are treated as 0 (matching the PR 1 semantics — legacy\n // memories implicitly have Beta(1,1) priors). Increments land on the\n // actual counter regardless of whether the field was previously set.\n const currentSuccess = memory.frontmatter.mw_success ?? 0;\n const currentFail = memory.frontmatter.mw_fail ?? 0;\n\n const nextSuccess = input.outcome === \"success\" ? currentSuccess + 1 : currentSuccess;\n const nextFail = input.outcome === \"failure\" ? currentFail + 1 : currentFail;\n\n // `updateMemoryFrontmatter` goes through `writeMemoryFrontmatter`, which\n // routes through the PR 1 serializer — so a stored corrupt value (e.g., a\n // pre-existing float) would be rejected here. That is intentional: we\n // refuse to layer a fresh increment on top of garbage. Operators should\n // use `remnic doctor` to find and fix those rows before PR 4 ships.\n //\n // `updateMemoryFrontmatter` returns `false` when the memory is no\n // longer present (archived / deleted between `getMemoryById` and the\n // write). Surface that as `not_found` so callers see an honest result\n // — silently returning `ok: true` with a counter that never landed\n // would skew downstream worth scoring.\n const updated = await storage.updateMemoryFrontmatter(memoryId, {\n mw_success: nextSuccess,\n mw_fail: nextFail,\n });\n if (!updated) {\n return {\n ok: false,\n reason: \"not_found\",\n message: `memory ${memoryId} disappeared between read and write`,\n };\n }\n\n return {\n ok: true,\n memoryId,\n mw_success: nextSuccess,\n mw_fail: nextFail,\n };\n });\n}\n\n// ---------------------------------------------------------------------------\n// Issue #2345 — pure outcome-observation view (no writes, no counter changes)\n// ---------------------------------------------------------------------------\n\n/**\n * A Memory Worth outcome that carries WHEN it was observed and WHAT it can\n * join to — the facts the trajectory evaluator needs and plain counter rows\n * lack. `mw_success` / `mw_fail` totals have no timestamp or join ID, so they\n * cannot participate in delayed action-to-outcome joins.\n */\nexport interface MemoryOutcomeObservation {\n schemaVersion: 1;\n memoryId: string;\n namespace: string;\n outcome: MemoryOutcomeKind;\n observedAt: string;\n /** Stable join key shared with the action side (never free text). */\n joinId?: string;\n sessionKey?: string;\n}\n\n/**\n * Discriminated view over outcome facts a caller can supply.\n *\n * - `missing_observation` — counter-only or incomplete rows. The evaluator\n * must never guess the action behind an aggregate counter, so these stay\n * visible as missing rather than being inferred.\n */\nexport type MemoryOutcomeObservationView =\n | { status: \"observed\"; observation: MemoryOutcomeObservation }\n | { status: \"missing_observation\"; memoryId: string; reason: \"missing_observed_at\" | \"missing_join_data\" };\n\nconst OBSERVATION_ISO_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n\n/**\n * Build the pure observation view. Accepts exactly what a caller already\n * knows; performs no storage reads and no writes, and does not alter the\n * counter path — `recordMemoryOutcome` keeps its current behavior.\n */\nexport function toMemoryOutcomeObservation(raw: {\n memoryId: string;\n namespace: string;\n outcome: MemoryOutcomeKind;\n observedAt?: unknown;\n joinId?: unknown;\n sessionKey?: unknown;\n}): MemoryOutcomeObservationView {\n if (\n typeof raw.memoryId !== \"string\" ||\n raw.memoryId.length === 0 ||\n typeof raw.namespace !== \"string\" ||\n raw.namespace.length === 0 ||\n (raw.outcome !== \"success\" && raw.outcome !== \"failure\")\n ) {\n throw new Error(\"toMemoryOutcomeObservation requires memoryId, namespace, and outcome\");\n }\n const observedAt =\n typeof raw.observedAt === \"string\" && OBSERVATION_ISO_RE.test(raw.observedAt)\n ? raw.observedAt\n : raw.observedAt instanceof Date\n ? raw.observedAt.toISOString()\n : null;\n if (observedAt === null) {\n return { status: \"missing_observation\", memoryId: raw.memoryId, reason: \"missing_observed_at\" };\n }\n const joinId = typeof raw.joinId === \"string\" && raw.joinId.length > 0 ? raw.joinId : undefined;\n const sessionKey = typeof raw.sessionKey === \"string\" && raw.sessionKey.length > 0 ? raw.sessionKey : undefined;\n if (joinId === undefined && sessionKey === undefined) {\n return { status: \"missing_observation\", memoryId: raw.memoryId, reason: \"missing_join_data\" };\n }\n return {\n status: \"observed\",\n observation: {\n schemaVersion: 1,\n memoryId: raw.memoryId,\n namespace: raw.namespace,\n outcome: raw.outcome,\n observedAt,\n joinId,\n sessionKey,\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// src/eval-trajectory-contracts.ts
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
var EVAL_TRAJECTORY_REPORT_SCHEMA_VERSION = 1;
|
|
4
|
+
var DEFAULT_EVAL_TRAJECTORY_OUTCOME_WINDOW_MS = 6048e5;
|
|
5
|
+
var DEFAULT_EVAL_TRAJECTORY_MAX_FUTURE_SKEW_MS = 3e5;
|
|
6
|
+
var DEFAULT_EVAL_TRAJECTORY_MAX_ROWS = 5e3;
|
|
7
|
+
var MAX_EVAL_TRAJECTORY_ROWS_LIMIT = 5e4;
|
|
8
|
+
var DEFAULT_EVAL_TRAJECTORY_REPORT_MAX_AGE_MS = 2592e6;
|
|
9
|
+
var DEFAULT_EVAL_TRAJECTORY_WEIGHTS = Object.freeze({
|
|
10
|
+
task: 1,
|
|
11
|
+
context: 0.25,
|
|
12
|
+
trust: 1,
|
|
13
|
+
stale: 0.5
|
|
14
|
+
});
|
|
15
|
+
var MEMORY_ACTION_TYPES = {
|
|
16
|
+
store_episode: true,
|
|
17
|
+
store_note: true,
|
|
18
|
+
update_note: true,
|
|
19
|
+
create_artifact: true,
|
|
20
|
+
summarize_node: true,
|
|
21
|
+
discard: true,
|
|
22
|
+
link_graph: true
|
|
23
|
+
};
|
|
24
|
+
var DESTRUCTIVE_ACTION_TYPES = { discard: true };
|
|
25
|
+
var STALE_LIFECYCLE_STATES = {
|
|
26
|
+
active: true,
|
|
27
|
+
stale: true,
|
|
28
|
+
archived: true,
|
|
29
|
+
superseded: true
|
|
30
|
+
};
|
|
31
|
+
var STALE_OUTCOMES = {
|
|
32
|
+
success: true,
|
|
33
|
+
partial: true,
|
|
34
|
+
failure: true,
|
|
35
|
+
unknown: true
|
|
36
|
+
};
|
|
37
|
+
var EVAL_TRAJECTORY_PROMOTION_THRESHOLDS = Object.freeze({
|
|
38
|
+
minJoinedRows: 30,
|
|
39
|
+
minReach: 0.5
|
|
40
|
+
});
|
|
41
|
+
function resolveEvalTrajectoryRunConfig(partial) {
|
|
42
|
+
const source = partial ?? {};
|
|
43
|
+
const weightsSource = source.weights ?? DEFAULT_EVAL_TRAJECTORY_WEIGHTS;
|
|
44
|
+
const weights = {
|
|
45
|
+
task: Number(weightsSource.task),
|
|
46
|
+
context: Number(weightsSource.context),
|
|
47
|
+
trust: Number(weightsSource.trust),
|
|
48
|
+
stale: Number(weightsSource.stale)
|
|
49
|
+
};
|
|
50
|
+
for (const [name, value] of Object.entries(weights)) {
|
|
51
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
52
|
+
throw new Error(`eval trajectory weight '${name}' must be a finite non-negative number`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const totalWeight = weights.task + weights.context + weights.trust + weights.stale;
|
|
56
|
+
if (!(totalWeight > 0)) {
|
|
57
|
+
throw new Error("eval trajectory weights must have a positive total weight");
|
|
58
|
+
}
|
|
59
|
+
const outcomeWindowMs = Number(source.outcomeWindowMs ?? DEFAULT_EVAL_TRAJECTORY_OUTCOME_WINDOW_MS);
|
|
60
|
+
if (!Number.isSafeInteger(outcomeWindowMs) || outcomeWindowMs <= 0) {
|
|
61
|
+
throw new Error("outcomeWindowMs must be a positive integer");
|
|
62
|
+
}
|
|
63
|
+
const maxFutureSkewMs = Number(source.maxFutureSkewMs ?? DEFAULT_EVAL_TRAJECTORY_MAX_FUTURE_SKEW_MS);
|
|
64
|
+
if (!Number.isSafeInteger(maxFutureSkewMs) || maxFutureSkewMs < 0) {
|
|
65
|
+
throw new Error("maxFutureSkewMs must be a non-negative integer");
|
|
66
|
+
}
|
|
67
|
+
const maxRows = Number(source.maxRows ?? DEFAULT_EVAL_TRAJECTORY_MAX_ROWS);
|
|
68
|
+
if (!Number.isSafeInteger(maxRows) || maxRows < 1 || maxRows > MAX_EVAL_TRAJECTORY_ROWS_LIMIT) {
|
|
69
|
+
throw new Error(`maxRows must be an integer in [1, ${MAX_EVAL_TRAJECTORY_ROWS_LIMIT}]`);
|
|
70
|
+
}
|
|
71
|
+
return { outcomeWindowMs, maxFutureSkewMs, weights, maxRows };
|
|
72
|
+
}
|
|
73
|
+
function sha256Hex(input) {
|
|
74
|
+
return createHash("sha256").update(input, "utf8").digest("hex");
|
|
75
|
+
}
|
|
76
|
+
function sortKeysDeep(value) {
|
|
77
|
+
if (Array.isArray(value)) return value.map(sortKeysDeep);
|
|
78
|
+
if (typeof value === "object" && value !== null) {
|
|
79
|
+
const out = {};
|
|
80
|
+
for (const key of Object.keys(value).sort()) {
|
|
81
|
+
out[key] = sortKeysDeep(value[key]);
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
function canonicalJson(value) {
|
|
88
|
+
return JSON.stringify(sortKeysDeep(value));
|
|
89
|
+
}
|
|
90
|
+
function digestOf(salt, payload) {
|
|
91
|
+
return sha256Hex(`${salt}
|
|
92
|
+
${canonicalJson(payload)}`);
|
|
93
|
+
}
|
|
94
|
+
function serializeEvalTrajectoryReport(report) {
|
|
95
|
+
return `${JSON.stringify(sortKeysDeep(report), null, 2)}
|
|
96
|
+
`;
|
|
97
|
+
}
|
|
98
|
+
function compareStrings(a, b) {
|
|
99
|
+
if (a === b) return 0;
|
|
100
|
+
return a < b ? -1 : 1;
|
|
101
|
+
}
|
|
102
|
+
function compareRows(a, b) {
|
|
103
|
+
const byTime = compareStrings(a.outcomeRecordedAt ?? "", b.outcomeRecordedAt ?? "");
|
|
104
|
+
if (byTime !== 0) return byTime;
|
|
105
|
+
return compareStrings(a.actionDigest, b.actionDigest);
|
|
106
|
+
}
|
|
107
|
+
var ISO_UTC_TIMESTAMP_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
108
|
+
function isIsoTimestamp(value) {
|
|
109
|
+
return typeof value === "string" && ISO_UTC_TIMESTAMP_RE.test(value) && !Number.isNaN(Date.parse(value));
|
|
110
|
+
}
|
|
111
|
+
function isNonEmptyString(value) {
|
|
112
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
113
|
+
}
|
|
114
|
+
function isFiniteNumber(value) {
|
|
115
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
116
|
+
}
|
|
117
|
+
function isMemoryActionType(value) {
|
|
118
|
+
return typeof value === "string" && MEMORY_ACTION_TYPES[value] === true;
|
|
119
|
+
}
|
|
120
|
+
function isRowStatus(value) {
|
|
121
|
+
return value === "joined" || value === "ambiguous" || value === "late_outcome" || value === "future_outcome" || value === "missing_within_window";
|
|
122
|
+
}
|
|
123
|
+
function isHexSha256(value) {
|
|
124
|
+
return typeof value === "string" && /^[0-9a-f]{64}$/.test(value);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export {
|
|
128
|
+
EVAL_TRAJECTORY_REPORT_SCHEMA_VERSION,
|
|
129
|
+
DEFAULT_EVAL_TRAJECTORY_OUTCOME_WINDOW_MS,
|
|
130
|
+
DEFAULT_EVAL_TRAJECTORY_MAX_FUTURE_SKEW_MS,
|
|
131
|
+
DEFAULT_EVAL_TRAJECTORY_MAX_ROWS,
|
|
132
|
+
MAX_EVAL_TRAJECTORY_ROWS_LIMIT,
|
|
133
|
+
DEFAULT_EVAL_TRAJECTORY_REPORT_MAX_AGE_MS,
|
|
134
|
+
DEFAULT_EVAL_TRAJECTORY_WEIGHTS,
|
|
135
|
+
DESTRUCTIVE_ACTION_TYPES,
|
|
136
|
+
STALE_LIFECYCLE_STATES,
|
|
137
|
+
STALE_OUTCOMES,
|
|
138
|
+
EVAL_TRAJECTORY_PROMOTION_THRESHOLDS,
|
|
139
|
+
resolveEvalTrajectoryRunConfig,
|
|
140
|
+
sha256Hex,
|
|
141
|
+
sortKeysDeep,
|
|
142
|
+
canonicalJson,
|
|
143
|
+
digestOf,
|
|
144
|
+
serializeEvalTrajectoryReport,
|
|
145
|
+
compareStrings,
|
|
146
|
+
compareRows,
|
|
147
|
+
isIsoTimestamp,
|
|
148
|
+
isNonEmptyString,
|
|
149
|
+
isFiniteNumber,
|
|
150
|
+
isMemoryActionType,
|
|
151
|
+
isRowStatus,
|
|
152
|
+
isHexSha256
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=chunk-ULM7JCDH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/eval-trajectory-contracts.ts"],"sourcesContent":["/**\n * Issue #2345 — internal contracts, config bounds, digests, and validators for\n * the privacy-safe action-to-outcome trajectory evaluator.\n *\n * Internal module: never re-exported from the package root by itself. The\n * public surface is `eval-trajectory.ts` (builder) and `eval-trajectory-store.ts`\n * (validation, persistence, promotion gate). Keeping this layer separate holds\n * every file under the #1995 new-file ratchet cap while preserving one\n * subsystem.\n */\n\nimport { createHash } from \"node:crypto\";\nimport type { MemoryActionOutcome, MemoryActionPolicyDecision, MemoryActionType } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Constants and bounded config\n// ---------------------------------------------------------------------------\n\nexport const EVAL_TRAJECTORY_REPORT_SCHEMA_VERSION = 1;\n\n/** Default delayed-outcome window: 7 days, half-open `actionAt < outcomeAt < actionAt + window`. */\nexport const DEFAULT_EVAL_TRAJECTORY_OUTCOME_WINDOW_MS = 604_800_000;\n/** Default allowed clock skew for input timestamps beyond `asOf`. */\nexport const DEFAULT_EVAL_TRAJECTORY_MAX_FUTURE_SKEW_MS = 300_000;\n/** Default cap on emitted rows per report. */\nexport const DEFAULT_EVAL_TRAJECTORY_MAX_ROWS = 5_000;\nexport const MAX_EVAL_TRAJECTORY_ROWS_LIMIT = 50_000;\n/** Default reader expiry: a report older than 30 days fails the checked read. */\nexport const DEFAULT_EVAL_TRAJECTORY_REPORT_MAX_AGE_MS = 2_592_000_000;\n\nexport interface EvalTrajectoryWeights {\n task: number;\n context: number;\n trust: number;\n stale: number;\n}\n\nexport const DEFAULT_EVAL_TRAJECTORY_WEIGHTS: Readonly<EvalTrajectoryWeights> = Object.freeze({\n task: 1,\n context: 0.25,\n trust: 1,\n stale: 0.5,\n});\n\nconst MEMORY_ACTION_TYPES: Record<string, true> = {\n store_episode: true,\n store_note: true,\n update_note: true,\n create_artifact: true,\n summarize_node: true,\n discard: true,\n link_graph: true,\n};\n\n/** Action types whose live execution is destructive (irreversible) for promotion gating. */\nexport const DESTRUCTIVE_ACTION_TYPES: Record<string, true> = { discard: true };\n\nexport const STALE_LIFECYCLE_STATES: Record<string, true> = {\n active: true,\n stale: true,\n archived: true,\n superseded: true,\n};\n\nexport const STALE_OUTCOMES: Record<string, true> = {\n success: true,\n partial: true,\n failure: true,\n unknown: true,\n};\n\n/**\n * Fixed promotion thresholds for `deriveUnifiedMemoryPromotionReport`. These\n * are deliberately conservative named constants — #2348 owns application, and\n * any loosening must be a reviewed change, not a config knob.\n */\nexport const EVAL_TRAJECTORY_PROMOTION_THRESHOLDS = Object.freeze({\n minJoinedRows: 30,\n minReach: 0.5,\n});\n\nexport interface EvalTrajectoryRunConfig {\n outcomeWindowMs: number;\n maxFutureSkewMs: number;\n weights: EvalTrajectoryWeights;\n maxRows: number;\n}\n\nexport function resolveEvalTrajectoryRunConfig(partial?: Partial<EvalTrajectoryRunConfig>): EvalTrajectoryRunConfig {\n const source = partial ?? {};\n const weightsSource = source.weights ?? DEFAULT_EVAL_TRAJECTORY_WEIGHTS;\n const weights: EvalTrajectoryWeights = {\n task: Number(weightsSource.task),\n context: Number(weightsSource.context),\n trust: Number(weightsSource.trust),\n stale: Number(weightsSource.stale),\n };\n for (const [name, value] of Object.entries(weights)) {\n if (!Number.isFinite(value) || value < 0) {\n throw new Error(`eval trajectory weight '${name}' must be a finite non-negative number`);\n }\n }\n const totalWeight = weights.task + weights.context + weights.trust + weights.stale;\n if (!(totalWeight > 0)) {\n throw new Error(\"eval trajectory weights must have a positive total weight\");\n }\n\n const outcomeWindowMs = Number(source.outcomeWindowMs ?? DEFAULT_EVAL_TRAJECTORY_OUTCOME_WINDOW_MS);\n if (!Number.isSafeInteger(outcomeWindowMs) || outcomeWindowMs <= 0) {\n throw new Error(\"outcomeWindowMs must be a positive integer\");\n }\n const maxFutureSkewMs = Number(source.maxFutureSkewMs ?? DEFAULT_EVAL_TRAJECTORY_MAX_FUTURE_SKEW_MS);\n if (!Number.isSafeInteger(maxFutureSkewMs) || maxFutureSkewMs < 0) {\n throw new Error(\"maxFutureSkewMs must be a non-negative integer\");\n }\n const maxRows = Number(source.maxRows ?? DEFAULT_EVAL_TRAJECTORY_MAX_ROWS);\n if (!Number.isSafeInteger(maxRows) || maxRows < 1 || maxRows > MAX_EVAL_TRAJECTORY_ROWS_LIMIT) {\n throw new Error(`maxRows must be an integer in [1, ${MAX_EVAL_TRAJECTORY_ROWS_LIMIT}]`);\n }\n return { outcomeWindowMs, maxFutureSkewMs, weights, maxRows };\n}\n\n// ---------------------------------------------------------------------------\n// Input contracts (sanitized caller rows — raw IDs live here, never in output)\n// ---------------------------------------------------------------------------\n\nexport type EvalTrajectoryTaskResult = \"success\" | \"partial\" | \"failure\";\nexport type EvalTrajectoryOutcomeSource = \"eval_artifact\" | \"causal_trajectory\" | \"memory_outcome\";\nexport type EvalStaleUseLifecycleState = \"active\" | \"stale\" | \"archived\" | \"superseded\";\nexport type EvalStaleUseOutcome = \"success\" | \"partial\" | \"failure\" | \"unknown\";\n\nexport interface EvalActionInput {\n schemaVersion: 1;\n /** Stable action identity. Required — rows without it are rejected. */\n actionId: string;\n namespace: string;\n actionAt: string;\n action: MemoryActionType;\n /** Immediate operation status. Never a delayed task result. */\n immediateStatus: MemoryActionOutcome;\n policyDecision?: MemoryActionPolicyDecision;\n policyVersion?: string;\n /** Producing subsystem tag (enum-like; exported through the projection). */\n subsystem?: string;\n sessionKey?: string;\n memoryId?: string;\n trajectoryId?: string;\n contextTokensBefore?: number;\n contextTokensAfter?: number;\n contextTokenBudget?: number;\n contextOverflow?: boolean;\n replayMismatch?: boolean;\n missingReversibleGuard?: boolean;\n outsideEligibility?: boolean;\n}\n\nexport interface EvalOutcomeInput {\n schemaVersion: 1;\n namespace: string;\n /** Stable local identity used only for digesting/dedup — never exported. */\n outcomeId: string;\n outcomeAt: string;\n source: EvalTrajectoryOutcomeSource;\n /** success | partial | failure. Memory-outcome results never become task results. */\n result?: EvalTrajectoryTaskResult;\n actionId?: string;\n trajectoryId?: string;\n memoryId?: string;\n sessionKey?: string;\n}\n\nexport interface EvalStaleUseEvidenceInput {\n schemaVersion: 1;\n namespace: string;\n actionId: string;\n memoryId: string;\n lifecycleState: EvalStaleUseLifecycleState;\n usedAt: string;\n outcome: EvalStaleUseOutcome;\n}\n\n/**\n * Normalized digest-only projections. Joins run on these, so raw IDs never\n * reach the metric or export layers. Equality joins survive digesting because\n * equal raw keys digest to equal values under the same run salt.\n */\nexport interface EvalActionProjection {\n schemaVersion: 1;\n actionDigest: string;\n namespaceDigest: string;\n actionAt: string;\n action: MemoryActionType;\n immediateStatus: MemoryActionOutcome;\n policyDecision: MemoryActionPolicyDecision | null;\n policyVersion: string | null;\n source: string | null;\n actionIdDigest: string;\n sessionKeyDigest: string | null;\n memoryIdDigest: string | null;\n trajectoryIdDigest: string | null;\n contextTokenCost: number | null;\n trustViolation: 0 | 1;\n}\n\nexport interface EvalOutcomeProjection {\n schemaVersion: 1;\n outcomeDigest: string;\n namespaceDigest: string;\n recordedAt: string;\n kind: EvalTrajectoryOutcomeSource;\n /** 1 | 0.5 | 0 for task sources; null when unknown or memory-sourced. */\n value: number | null;\n sourceRefDigest: string;\n actionIdDigest: string | null;\n trajectoryIdDigest: string | null;\n memoryIdDigest: string | null;\n sessionKeyDigest: string | null;\n}\n\nexport interface EvalStaleUseEvidence {\n schemaVersion: 1;\n actionDigest: string;\n memoryDigest: string;\n lifecycleState: EvalStaleUseLifecycleState;\n usedAt: string;\n outcome: EvalStaleUseOutcome;\n}\n\n// ---------------------------------------------------------------------------\n// Exported report contracts (digests, enums, numbers only)\n// ---------------------------------------------------------------------------\n\nexport type EvalTrajectoryMetricName = \"taskOutcome\" | \"contextTokenCost\" | \"trustViolation\" | \"staleMemoryHarm\";\n\nexport type EvalTrajectoryJoinKind = \"action_id\" | \"trajectory_id\" | \"memory_scope\" | \"session_scope\";\n\nexport type EvalTrajectoryRowStatus =\n | \"joined\"\n | \"ambiguous\"\n | \"late_outcome\"\n | \"future_outcome\"\n | \"missing_within_window\";\n\nexport type EvalTrajectoryRejectionReason =\n | \"missing_action_id\"\n | \"namespace_mismatch\"\n | \"invalid_timestamp\"\n | \"future_beyond_skew\"\n | \"malformed_row\"\n | \"invalid_context_budget\"\n | \"duplicate_row\"\n | \"max_rows_exceeded\";\n\nexport interface EvalActionOutcomeRow {\n schemaVersion: 1;\n actionDigest: string;\n outcomeDigest: string | null;\n join: EvalTrajectoryJoinKind | null;\n status: EvalTrajectoryRowStatus;\n outcomeRecordedAt: string | null;\n taskOutcome: number | null;\n contextTokenCost: number | null;\n trustViolation: 0 | 1;\n staleMemoryHarm: 0 | 0.5 | 1;\n actionConditionedUtility: number | null;\n missingDimensions: EvalTrajectoryMetricName[];\n}\n\nexport interface EvalTrajectoryAggregates {\n rowCount: number;\n statusCounts: Record<EvalTrajectoryRowStatus, number>;\n metricMeans: {\n taskOutcome: number | null;\n contextTokenCost: number | null;\n trustViolation: number | null;\n staleMemoryHarm: number | null;\n actionConditionedUtility: number | null;\n };\n coverage: {\n reach: number | null;\n joined: number;\n missingWithinWindow: number;\n lateOutcome: number;\n futureOutcome: number;\n ambiguous: number;\n excludedFromMeans: number;\n };\n byAction: Array<{ action: MemoryActionType; rowCount: number; meanUtility: number | null }>;\n byPolicyDecision: Array<{ policyDecision: string; rowCount: number; meanUtility: number | null }>;\n}\n\nexport interface EvalTrajectoryReport {\n schemaVersion: 1;\n reportId: string;\n namespaceDigest: string;\n asOf: string;\n config: EvalTrajectoryRunConfig;\n sourceCounts: { actions: number; outcomes: number; staleUseEvidence: number };\n rejectionCounts: Record<EvalTrajectoryRejectionReason, number>;\n rows: EvalActionOutcomeRow[];\n aggregates: EvalTrajectoryAggregates;\n inputFingerprint: string;\n contentHash: string;\n}\n\nexport type UnifiedMemoryPromotionState =\n | \"insufficient_evidence\"\n | \"shadow_eligible\"\n | \"active_reversible_eligible\"\n | \"active_destructive_review_only\"\n | \"demote_to_shadow\";\n\nexport interface UnifiedMemoryPromotionReport {\n schemaVersion: 1;\n sourceReportId: string;\n namespaceDigest: string;\n asOf: string;\n inputFingerprint: string;\n state: UnifiedMemoryPromotionState;\n reasons: string[];\n evidence: {\n joinedRows: number;\n reach: number | null;\n meanUtility: number | null;\n trustViolations: number;\n staleHarms: number;\n destructiveJoinedRows: number;\n };\n contentHash: string;\n}\n\n// ---------------------------------------------------------------------------\n// Digests and deterministic serialization\n// ---------------------------------------------------------------------------\n\nexport function sha256Hex(input: string): string {\n return createHash(\"sha256\").update(input, \"utf8\").digest(\"hex\");\n}\n\nexport function sortKeysDeep(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortKeysDeep);\n if (typeof value === \"object\" && value !== null) {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n out[key] = sortKeysDeep((value as Record<string, unknown>)[key]);\n }\n return out;\n }\n return value;\n}\n\nexport function canonicalJson(value: unknown): string {\n return JSON.stringify(sortKeysDeep(value));\n}\n\nexport function digestOf(salt: string, payload: unknown): string {\n return sha256Hex(`${salt}\\n${canonicalJson(payload)}`);\n}\n\n/** Byte-identical serialization for given report content, independent of construction order. */\nexport function serializeEvalTrajectoryReport(report: EvalTrajectoryReport): string {\n return `${JSON.stringify(sortKeysDeep(report), null, 2)}\\n`;\n}\n\n/** Total-order comparators (equality guarded — never let equal keys claim both orders). */\nexport function compareStrings(a: string, b: string): number {\n if (a === b) return 0;\n return a < b ? -1 : 1;\n}\n\nexport function compareRows(a: EvalActionOutcomeRow, b: EvalActionOutcomeRow): number {\n const byTime = compareStrings(a.outcomeRecordedAt ?? \"\", b.outcomeRecordedAt ?? \"\");\n if (byTime !== 0) return byTime;\n return compareStrings(a.actionDigest, b.actionDigest);\n}\n\n// ---------------------------------------------------------------------------\n// Small shared validators (local copies — evals.ts is at its ratchet ceiling)\n// ---------------------------------------------------------------------------\n\nconst ISO_UTC_TIMESTAMP_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n\nexport function isIsoTimestamp(value: unknown): value is string {\n return typeof value === \"string\" && ISO_UTC_TIMESTAMP_RE.test(value) && !Number.isNaN(Date.parse(value));\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nexport function isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nexport function isMemoryActionType(value: unknown): value is MemoryActionType {\n return typeof value === \"string\" && MEMORY_ACTION_TYPES[value] === true;\n}\n\nexport function isRowStatus(value: unknown): value is EvalTrajectoryRowStatus {\n return (\n value === \"joined\" ||\n value === \"ambiguous\" ||\n value === \"late_outcome\" ||\n value === \"future_outcome\" ||\n value === \"missing_within_window\"\n );\n}\n\nexport function isHexSha256(value: unknown): value is string {\n return typeof value === \"string\" && /^[0-9a-f]{64}$/.test(value);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-7T4TOGMS.js";
|
|
4
4
|
import {
|
|
5
5
|
defineOperation
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RQE4TITU.js";
|
|
7
7
|
|
|
8
8
|
// src/external-wiki-access.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
|
|
|
26
26
|
export {
|
|
27
27
|
externalWikiSearchOperation
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-VKCAHCBI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
listNamespaces
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5VPQSRQO.js";
|
|
4
4
|
import {
|
|
5
5
|
capabilityAllowsNamespace
|
|
6
6
|
} from "./chunk-MZWSOLMT.js";
|
|
@@ -282,4 +282,4 @@ export {
|
|
|
282
282
|
computeServiceCorpusWatermarks,
|
|
283
283
|
computeServiceCorpusCensus
|
|
284
284
|
};
|
|
285
|
-
//# sourceMappingURL=chunk-
|
|
285
|
+
//# sourceMappingURL=chunk-VXVZ2GM3.js.map
|