@remnic/core 9.69.16 → 9.69.18
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 +49 -45
- package/dist/access-authorization-probe.d.ts +11 -11
- package/dist/access-authorization-probe.js +50 -46
- package/dist/access-boundary.d.ts +11 -11
- package/dist/access-boundary.js +49 -45
- package/dist/access-cli.js +111 -110
- 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 +49 -45
- 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 +51 -47
- package/dist/access-http.d.ts +12 -12
- package/dist/access-http.js +69 -65
- package/dist/access-identity-continuity-surface.d.ts +9 -9
- package/dist/access-identity-continuity-surface.js +49 -45
- package/dist/access-lcm-surface.d.ts +11 -11
- package/dist/access-lcm-surface.js +49 -45
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +11 -11
- package/dist/access-mcp.js +60 -56
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-Rzuo1nGR.d.ts → access-namespace-preflight-BMHhxoL9.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +49 -45
- package/dist/access-observe-transcript.d.ts +147 -0
- package/dist/access-observe-transcript.js +16 -0
- package/dist/access-observe-write-surface.d.ts +12 -11
- package/dist/access-observe-write-surface.js +49 -45
- package/dist/access-offline-manifest.d.ts +9 -9
- package/dist/access-offline-manifest.js +6 -6
- package/dist/access-operations-batch.js +52 -48
- package/dist/access-operations.d.ts +13 -13
- package/dist/access-operations.js +57 -53
- package/dist/access-recall-concurrency.d.ts +11 -11
- package/dist/access-recall-concurrency.js +49 -45
- package/dist/access-recall-response.d.ts +11 -11
- package/dist/access-recall-response.js +49 -45
- package/dist/access-recall-surface.d.ts +11 -11
- package/dist/access-recall-surface.js +49 -45
- package/dist/access-schema.d.ts +4 -4
- package/dist/access-schema.js +5 -5
- package/dist/{access-service-tcC_jK6C.d.ts → access-service-CYdqPfpS.d.ts} +22 -13
- package/dist/access-service-helpers.d.ts +11 -11
- package/dist/access-service.d.ts +11 -11
- package/dist/access-service.js +49 -45
- package/dist/access-surface-catalog.d.ts +11 -11
- package/dist/access-surface-catalog.js +51 -47
- 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 +7 -7
- 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/{auto-sync-Q6Q2FVSC.js → auto-sync-GRUJFD2F.js} +3 -3
- 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 +14 -14
- 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/{catalog-DjTLVOYp.d.ts → catalog-C1qHsGew.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 +16 -16
- 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-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
- package/dist/{chunk-RJ57OOCD.js → chunk-2J4TIFBK.js} +3 -3
- package/dist/{chunk-AU7Q3LSC.js → chunk-2QSZNTDO.js} +4 -4
- package/dist/{chunk-P6GKRT2H.js → chunk-2Z3DG5CQ.js} +1 -1
- package/dist/{chunk-BO4PWIJY.js → chunk-3LADWWMA.js} +3 -3
- package/dist/{chunk-P7LVYPIX.js → chunk-3LJPSRAN.js} +3 -3
- package/dist/{chunk-ZKZCJRRO.js → chunk-43HMVVOL.js} +2 -2
- package/dist/{chunk-3TSU662L.js → chunk-46QMN7I7.js} +5 -5
- package/dist/{chunk-HODFGQGT.js → chunk-4HYNMLT6.js} +2 -2
- package/dist/{chunk-HTOWFFAI.js → chunk-5CF2R4NS.js} +2 -2
- package/dist/{chunk-QVI63XSO.js → chunk-5MF4EGL5.js} +50 -50
- package/dist/{chunk-KLSPKMIO.js → chunk-5SGOARQJ.js} +2 -2
- package/dist/{chunk-JGXMA6HL.js → chunk-6FUMA6AA.js} +2 -2
- package/dist/chunk-6MINUTGJ.js +64 -0
- package/dist/chunk-6MINUTGJ.js.map +1 -0
- package/dist/{chunk-K2IJH4D3.js → chunk-7RRUHJPG.js} +7 -7
- package/dist/{chunk-I4QAH4SY.js → chunk-7TUB6JWA.js} +3 -3
- package/dist/{chunk-NNBZS3DY.js → chunk-AG46P24C.js} +4 -4
- package/dist/{chunk-B64IVEOH.js → chunk-AWF4CNYJ.js} +2 -2
- package/dist/{chunk-C25N5HWX.js → chunk-B2AGUKSS.js} +2 -2
- package/dist/{chunk-7ZMU4XQT.js → chunk-BR3OOQZQ.js} +2 -2
- package/dist/{chunk-TRLCMLX7.js → chunk-BZTJEILZ.js} +2 -2
- package/dist/{chunk-OLBZ2WGG.js → chunk-C2JCVZWX.js} +2 -2
- package/dist/{chunk-YWN3GYI2.js → chunk-CASWJ2HM.js} +2 -2
- package/dist/{chunk-S35IIP5P.js → chunk-CFKCFY4B.js} +2 -2
- package/dist/{chunk-S5G2LAL7.js → chunk-CHWUICVY.js} +4 -4
- package/dist/{chunk-7JV4JST3.js → chunk-CVJMGVEW.js} +47 -47
- package/dist/{chunk-BE4Y6GK6.js → chunk-D35XLYQ7.js} +11 -11
- package/dist/{chunk-DA4ZMCBU.js → chunk-D5ZNOKR7.js} +3 -3
- package/dist/{chunk-BEXFNGQ3.js → chunk-DK6GMO6D.js} +3 -3
- package/dist/{chunk-I6DUKBUI.js → chunk-DP4EBV7C.js} +2 -2
- package/dist/{chunk-W6GEMUZM.js → chunk-EFCBJDYE.js} +13 -13
- package/dist/{chunk-XMIAU4CO.js → chunk-EJ5RKUXW.js} +2 -2
- package/dist/{chunk-LF6SHWVV.js → chunk-F5UWQ4LX.js} +2 -2
- package/dist/{chunk-XQGFIAG7.js → chunk-FB7LAJQM.js} +2 -2
- package/dist/{chunk-OAKATRAN.js → chunk-G6N654ND.js} +10 -10
- package/dist/{chunk-2EHDPHMD.js → chunk-GGYDJJBO.js} +2 -2
- package/dist/{chunk-VAMZYOOV.js → chunk-HOUST5UX.js} +2 -2
- package/dist/{chunk-NHLEFBE2.js → chunk-I4Y6TBD7.js} +3 -3
- package/dist/{chunk-W272SWN7.js → chunk-I7FY43VC.js} +7 -7
- package/dist/{chunk-MSDIETFC.js → chunk-IZZ7Q2RJ.js} +56 -47
- package/dist/chunk-IZZ7Q2RJ.js.map +1 -0
- package/dist/{chunk-CTCGHNWN.js → chunk-J2R275FN.js} +4 -4
- package/dist/{chunk-XJJYSX6F.js → chunk-JCUG7AXZ.js} +4 -4
- package/dist/{chunk-ZRUEP4IK.js → chunk-JIM4BIOC.js} +30 -49
- package/dist/chunk-JIM4BIOC.js.map +1 -0
- package/dist/{chunk-BX6GW4KC.js → chunk-JMAG7WZ7.js} +2 -2
- package/dist/{chunk-NF3NMAG7.js → chunk-JOYC4RYC.js} +2 -2
- package/dist/{chunk-5JQV4T5Q.js → chunk-JZ6EYAVP.js} +2 -2
- package/dist/{chunk-QRDSXR3V.js → chunk-KA2HZCMG.js} +2 -2
- package/dist/{chunk-7LCGFUMB.js → chunk-KQAFEZQX.js} +4 -4
- package/dist/{chunk-ETZ7KKOS.js → chunk-KTVSPFCQ.js} +2 -2
- package/dist/{chunk-PAWIY5OQ.js → chunk-L74A6NTI.js} +6 -6
- package/dist/{chunk-2XJDAEAM.js → chunk-LFK623SF.js} +5 -5
- package/dist/chunk-LVE64P5Y.js +80 -0
- package/dist/chunk-LVE64P5Y.js.map +1 -0
- package/dist/{chunk-IEZ6CGTW.js → chunk-N3SS45OW.js} +115 -55
- package/dist/chunk-N3SS45OW.js.map +1 -0
- package/dist/{chunk-QUVWFZOU.js → chunk-N7JK2RKG.js} +2 -2
- package/dist/{chunk-BFDOBESV.js → chunk-NYRB7BKY.js} +2 -2
- package/dist/{chunk-LDOQE34V.js → chunk-NZGO2GKL.js} +2 -2
- package/dist/{chunk-VYD63IFH.js → chunk-OGTKQ5MJ.js} +3 -3
- package/dist/{chunk-BIJAWZYW.js → chunk-OLT3YTDH.js} +4 -4
- package/dist/{chunk-F2ERDKY2.js → chunk-PC7WNIRL.js} +17 -17
- package/dist/{chunk-3BS2OGDT.js → chunk-PPOT6SPR.js} +5 -5
- package/dist/{chunk-G7VEQEMG.js → chunk-QVSRE355.js} +65 -39
- package/dist/chunk-QVSRE355.js.map +1 -0
- package/dist/{chunk-LUDXSSTW.js → chunk-R7LY4YKF.js} +2 -2
- package/dist/{chunk-N37X5RU7.js → chunk-RACZB5HT.js} +4 -4
- package/dist/{chunk-LJAP4KSW.js → chunk-RO2X2EYM.js} +2 -2
- package/dist/{chunk-5YQ7RFSO.js → chunk-S37NN23M.js} +2 -2
- package/dist/{chunk-DDX6KIXF.js → chunk-SB4OBB7P.js} +2 -2
- package/dist/{chunk-JHTF22NQ.js → chunk-TA7UZZMW.js} +2 -2
- package/dist/{chunk-4UVDLNHQ.js → chunk-UMEOXLIZ.js} +2 -2
- package/dist/{chunk-63I7LMLG.js → chunk-WL5PR5YC.js} +2 -2
- package/dist/{chunk-H5IIBGDM.js → chunk-X33MJFD2.js} +2 -2
- package/dist/{chunk-SXHBZXHK.js → chunk-XJJLWTLW.js} +5 -5
- package/dist/{chunk-OYV6RKPM.js → chunk-XOQGUGJL.js} +2 -6
- package/dist/chunk-XOQGUGJL.js.map +1 -0
- package/dist/{chunk-GIC6BASP.js → chunk-XZBXINXZ.js} +4 -4
- package/dist/{chunk-APZXA4WI.js → chunk-YVLENSNS.js} +2 -2
- package/dist/{chunk-OUKBMQ2O.js → chunk-Z3SQEEB6.js} +2 -2
- package/dist/{chunk-NN5CQTAJ.js → chunk-ZEBRENA6.js} +2 -2
- package/dist/{chunk-5H2G5X4R.js → chunk-ZJWDWPX6.js} +3 -3
- package/dist/{chunk-M7DGN6JZ.js → chunk-ZL3XX5LW.js} +2 -2
- package/dist/{chunk-4WIKMOE3.js → chunk-ZZM476NV.js} +1 -1
- package/dist/{cli-BI9YYpKx.d.ts → cli-DN9LpWf0.d.ts} +5 -5
- package/dist/cli.d.ts +13 -13
- package/dist/cli.js +92 -88
- package/dist/coding/export-okf-codegraph.d.ts +1 -1
- package/dist/coding/export-okf-codegraph.js +13 -13
- 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 +13 -13
- 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 +7 -7
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +13 -13
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +13 -13
- 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 +16 -2
- package/dist/converge-config.js +9 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +15 -15
- 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/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +15 -15
- package/dist/cross-lingual-recall.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/deep-recall-http-glue.d.ts +11 -11
- package/dist/deep-recall-http-glue.js +6 -6
- package/dist/deep-recall-mcp-tools.d.ts +11 -11
- package/dist/deep-recall-policy-llm.d.ts +1 -1
- package/dist/deep-recall-seeds.d.ts +1 -1
- package/dist/deep-recall.js +2 -2
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-37JdQv_3.d.ts → dependency-propagation-delivery-DjpUlhLi.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 +13 -13
- package/dist/entity-schema.d.ts +1 -1
- package/dist/episodic-context.d.ts +1 -1
- package/dist/eval-trajectory-contracts.d.ts +1 -1
- package/dist/eval-trajectory-store.d.ts +1 -1
- package/dist/eval-trajectory.d.ts +1 -1
- package/dist/explicit-capture.d.ts +9 -9
- package/dist/external-wiki-access.d.ts +11 -11
- package/dist/external-wiki-access.js +50 -46
- 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 +16 -16
- 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-DGTBFALQ.js} +4 -4
- package/dist/graph-edge-decay-DGTBFALQ.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 +2 -2
- 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-DquhYqsc.d.ts → index-CsUrdMyL.d.ts} +2 -2
- package/dist/index.d.ts +26 -26
- package/dist/index.js +138 -127
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/index.d.ts +1 -1
- 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 +3 -3
- package/dist/location/index.js +15 -15
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +13 -13
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -13
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +14 -14
- package/dist/{maintenance-CizZOycr.d.ts → maintenance-D1GRGLTE.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +11 -11
- 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 +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +14 -14
- 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 +3 -3
- package/dist/namespaces/storage.js +13 -13
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/offline-sync.js +2 -2
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +16 -16
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +30 -30
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +21 -21
- package/dist/{orchestrator-DqLcuNMP.d.ts → orchestrator-DeqaPGT5.d.ts} +8 -8
- package/dist/orchestrator.d.ts +9 -9
- package/dist/orchestrator.js +111 -110
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-DbJpmcRu.d.ts → pipeline-umUzU0D1.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-Bocro5ZU.d.ts → public-http-C1ht4oDJ.d.ts} +1 -1
- package/dist/{qmd-DA_7fbSz.d.ts → qmd-BasT78PP.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-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -1
- package/dist/recall-navigate-access.d.ts +1 -1
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.d.ts +1 -1
- package/dist/recall-navigate-disclosure.js +1 -1
- package/dist/recall-navigate.d.ts +1 -1
- package/dist/recall-navigate.js +2 -2
- 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-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/reconcile/cursor.d.ts +1 -1
- package/dist/reconcile/cursor.js +2 -2
- package/dist/reconcile/manifest.d.ts +1 -1
- package/dist/reconcile/manifest.js +3 -3
- package/dist/reconcile/plan.d.ts +16 -1
- package/dist/reconcile/plan.js +2 -2
- 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 +8 -8
- 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/schemas.d.ts +42 -42
- package/dist/{scope-profiles-BpiWKZzx.d.ts → scope-profiles-DXYzyOXW.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-NJpaZpkY.d.ts → semantic-consolidation-CqDeaY0U.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +14 -14
- package/dist/semantic-rule-promotion.js +13 -13
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +13 -13
- package/dist/{service-DdlZjX1D.d.ts → service-BKD-DVYZ.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 +13 -13
- package/dist/standup/build.js +13 -13
- package/dist/{storage-C7BWrpU9.d.ts → storage-BcFd1lN_.d.ts} +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +12 -12
- package/dist/subject-config.d.ts +1 -1
- package/dist/summarizer.d.ts +30 -4
- package/dist/summarizer.js +6 -4
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +14 -14
- package/dist/support-passport/index.js +52 -48
- 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/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.d.ts +1 -1
- package/dist/transfer/export-okf.js +14 -14
- package/dist/transfer/types.d.ts +12 -12
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-Cy1l6fzp.d.ts → types-BRg3tMyp.d.ts} +2 -0
- 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 +13 -13
- package/dist/who-knows-cli.d.ts +11 -11
- package/dist/who-knows-cli.js +14 -14
- package/dist/who-knows.d.ts +11 -11
- package/dist/who-knows.js +13 -13
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/access-mcp-output-schemas.ts +60 -34
- package/src/access-observe-transcript-persistence.test.ts +252 -0
- package/src/access-observe-transcript.ts +153 -0
- package/src/access-observe-write-surface.ts +234 -224
- package/src/access-service.ts +33 -28
- package/src/converge-config.ts +40 -3
- package/src/index.ts +1 -1
- package/src/reconcile/plan.test.ts +118 -88
- package/src/reconcile/plan.ts +98 -84
- package/src/summarizer.ts +217 -111
- package/src/summary-snapshot.test.ts +8 -6
- package/src/types.ts +47 -44
- package/dist/chunk-G7VEQEMG.js.map +0 -1
- package/dist/chunk-HBVPYRDW.js +0 -39
- package/dist/chunk-HBVPYRDW.js.map +0 -1
- package/dist/chunk-IEZ6CGTW.js.map +0 -1
- package/dist/chunk-MSDIETFC.js.map +0 -1
- package/dist/chunk-OYV6RKPM.js.map +0 -1
- package/dist/chunk-ZRUEP4IK.js.map +0 -1
- /package/dist/{graph-edge-decay-FXGELBFA.js.map → access-observe-transcript.js.map} +0 -0
- /package/dist/{auto-sync-Q6Q2FVSC.js.map → auto-sync-GRUJFD2F.js.map} +0 -0
- /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
- /package/dist/{chunk-RJ57OOCD.js.map → chunk-2J4TIFBK.js.map} +0 -0
- /package/dist/{chunk-AU7Q3LSC.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-P6GKRT2H.js.map → chunk-2Z3DG5CQ.js.map} +0 -0
- /package/dist/{chunk-BO4PWIJY.js.map → chunk-3LADWWMA.js.map} +0 -0
- /package/dist/{chunk-P7LVYPIX.js.map → chunk-3LJPSRAN.js.map} +0 -0
- /package/dist/{chunk-ZKZCJRRO.js.map → chunk-43HMVVOL.js.map} +0 -0
- /package/dist/{chunk-3TSU662L.js.map → chunk-46QMN7I7.js.map} +0 -0
- /package/dist/{chunk-HODFGQGT.js.map → chunk-4HYNMLT6.js.map} +0 -0
- /package/dist/{chunk-HTOWFFAI.js.map → chunk-5CF2R4NS.js.map} +0 -0
- /package/dist/{chunk-QVI63XSO.js.map → chunk-5MF4EGL5.js.map} +0 -0
- /package/dist/{chunk-KLSPKMIO.js.map → chunk-5SGOARQJ.js.map} +0 -0
- /package/dist/{chunk-JGXMA6HL.js.map → chunk-6FUMA6AA.js.map} +0 -0
- /package/dist/{chunk-K2IJH4D3.js.map → chunk-7RRUHJPG.js.map} +0 -0
- /package/dist/{chunk-I4QAH4SY.js.map → chunk-7TUB6JWA.js.map} +0 -0
- /package/dist/{chunk-NNBZS3DY.js.map → chunk-AG46P24C.js.map} +0 -0
- /package/dist/{chunk-B64IVEOH.js.map → chunk-AWF4CNYJ.js.map} +0 -0
- /package/dist/{chunk-C25N5HWX.js.map → chunk-B2AGUKSS.js.map} +0 -0
- /package/dist/{chunk-7ZMU4XQT.js.map → chunk-BR3OOQZQ.js.map} +0 -0
- /package/dist/{chunk-TRLCMLX7.js.map → chunk-BZTJEILZ.js.map} +0 -0
- /package/dist/{chunk-OLBZ2WGG.js.map → chunk-C2JCVZWX.js.map} +0 -0
- /package/dist/{chunk-YWN3GYI2.js.map → chunk-CASWJ2HM.js.map} +0 -0
- /package/dist/{chunk-S35IIP5P.js.map → chunk-CFKCFY4B.js.map} +0 -0
- /package/dist/{chunk-S5G2LAL7.js.map → chunk-CHWUICVY.js.map} +0 -0
- /package/dist/{chunk-7JV4JST3.js.map → chunk-CVJMGVEW.js.map} +0 -0
- /package/dist/{chunk-BE4Y6GK6.js.map → chunk-D35XLYQ7.js.map} +0 -0
- /package/dist/{chunk-DA4ZMCBU.js.map → chunk-D5ZNOKR7.js.map} +0 -0
- /package/dist/{chunk-BEXFNGQ3.js.map → chunk-DK6GMO6D.js.map} +0 -0
- /package/dist/{chunk-I6DUKBUI.js.map → chunk-DP4EBV7C.js.map} +0 -0
- /package/dist/{chunk-W6GEMUZM.js.map → chunk-EFCBJDYE.js.map} +0 -0
- /package/dist/{chunk-XMIAU4CO.js.map → chunk-EJ5RKUXW.js.map} +0 -0
- /package/dist/{chunk-LF6SHWVV.js.map → chunk-F5UWQ4LX.js.map} +0 -0
- /package/dist/{chunk-XQGFIAG7.js.map → chunk-FB7LAJQM.js.map} +0 -0
- /package/dist/{chunk-OAKATRAN.js.map → chunk-G6N654ND.js.map} +0 -0
- /package/dist/{chunk-2EHDPHMD.js.map → chunk-GGYDJJBO.js.map} +0 -0
- /package/dist/{chunk-VAMZYOOV.js.map → chunk-HOUST5UX.js.map} +0 -0
- /package/dist/{chunk-NHLEFBE2.js.map → chunk-I4Y6TBD7.js.map} +0 -0
- /package/dist/{chunk-W272SWN7.js.map → chunk-I7FY43VC.js.map} +0 -0
- /package/dist/{chunk-CTCGHNWN.js.map → chunk-J2R275FN.js.map} +0 -0
- /package/dist/{chunk-XJJYSX6F.js.map → chunk-JCUG7AXZ.js.map} +0 -0
- /package/dist/{chunk-BX6GW4KC.js.map → chunk-JMAG7WZ7.js.map} +0 -0
- /package/dist/{chunk-NF3NMAG7.js.map → chunk-JOYC4RYC.js.map} +0 -0
- /package/dist/{chunk-5JQV4T5Q.js.map → chunk-JZ6EYAVP.js.map} +0 -0
- /package/dist/{chunk-QRDSXR3V.js.map → chunk-KA2HZCMG.js.map} +0 -0
- /package/dist/{chunk-7LCGFUMB.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-ETZ7KKOS.js.map → chunk-KTVSPFCQ.js.map} +0 -0
- /package/dist/{chunk-PAWIY5OQ.js.map → chunk-L74A6NTI.js.map} +0 -0
- /package/dist/{chunk-2XJDAEAM.js.map → chunk-LFK623SF.js.map} +0 -0
- /package/dist/{chunk-QUVWFZOU.js.map → chunk-N7JK2RKG.js.map} +0 -0
- /package/dist/{chunk-BFDOBESV.js.map → chunk-NYRB7BKY.js.map} +0 -0
- /package/dist/{chunk-LDOQE34V.js.map → chunk-NZGO2GKL.js.map} +0 -0
- /package/dist/{chunk-VYD63IFH.js.map → chunk-OGTKQ5MJ.js.map} +0 -0
- /package/dist/{chunk-BIJAWZYW.js.map → chunk-OLT3YTDH.js.map} +0 -0
- /package/dist/{chunk-F2ERDKY2.js.map → chunk-PC7WNIRL.js.map} +0 -0
- /package/dist/{chunk-3BS2OGDT.js.map → chunk-PPOT6SPR.js.map} +0 -0
- /package/dist/{chunk-LUDXSSTW.js.map → chunk-R7LY4YKF.js.map} +0 -0
- /package/dist/{chunk-N37X5RU7.js.map → chunk-RACZB5HT.js.map} +0 -0
- /package/dist/{chunk-LJAP4KSW.js.map → chunk-RO2X2EYM.js.map} +0 -0
- /package/dist/{chunk-5YQ7RFSO.js.map → chunk-S37NN23M.js.map} +0 -0
- /package/dist/{chunk-DDX6KIXF.js.map → chunk-SB4OBB7P.js.map} +0 -0
- /package/dist/{chunk-JHTF22NQ.js.map → chunk-TA7UZZMW.js.map} +0 -0
- /package/dist/{chunk-4UVDLNHQ.js.map → chunk-UMEOXLIZ.js.map} +0 -0
- /package/dist/{chunk-63I7LMLG.js.map → chunk-WL5PR5YC.js.map} +0 -0
- /package/dist/{chunk-H5IIBGDM.js.map → chunk-X33MJFD2.js.map} +0 -0
- /package/dist/{chunk-SXHBZXHK.js.map → chunk-XJJLWTLW.js.map} +0 -0
- /package/dist/{chunk-GIC6BASP.js.map → chunk-XZBXINXZ.js.map} +0 -0
- /package/dist/{chunk-APZXA4WI.js.map → chunk-YVLENSNS.js.map} +0 -0
- /package/dist/{chunk-OUKBMQ2O.js.map → chunk-Z3SQEEB6.js.map} +0 -0
- /package/dist/{chunk-NN5CQTAJ.js.map → chunk-ZEBRENA6.js.map} +0 -0
- /package/dist/{chunk-5H2G5X4R.js.map → chunk-ZJWDWPX6.js.map} +0 -0
- /package/dist/{chunk-M7DGN6JZ.js.map → chunk-ZL3XX5LW.js.map} +0 -0
- /package/dist/{chunk-4WIKMOE3.js.map → chunk-ZZM476NV.js.map} +0 -0
|
@@ -30,11 +30,13 @@ import {
|
|
|
30
30
|
NamespaceNotWritableError,
|
|
31
31
|
} from "./access-service.js";
|
|
32
32
|
import { extractionForceFlush } from "./access-extraction-force-flush.js";
|
|
33
|
+
import { ObserveTranscriptPersister, observeTranscriptSessionKey } from "./access-observe-transcript.js";
|
|
33
34
|
import { FileCalendarSource, buildBriefing, parseBriefingFocus, parseBriefingWindow } from "./briefing.js";
|
|
34
35
|
import {
|
|
35
36
|
resolveCompressionCapabilities,
|
|
36
37
|
resolveNamespaceCapabilities,
|
|
37
38
|
resolveObjectiveStateCapabilities,
|
|
39
|
+
resolvePresentationCapabilities,
|
|
38
40
|
} from "./capabilities.js";
|
|
39
41
|
import { lcmSessionKeyForNamespace } from "./coding/coding-namespace.js";
|
|
40
42
|
import {
|
|
@@ -110,15 +112,12 @@ export interface AccessObserveWriteSurfaceDeps {
|
|
|
110
112
|
authenticatedPrincipal?: string;
|
|
111
113
|
}
|
|
112
114
|
): Promise<MemoryScopePlan>;
|
|
113
|
-
cancelPendingObservePreparations?(
|
|
114
|
-
sessionKey: string,
|
|
115
|
-
scopeHint?: string,
|
|
116
|
-
): void;
|
|
115
|
+
cancelPendingObservePreparations?(sessionKey: string, scopeHint?: string): void;
|
|
117
116
|
cancelPendingObserveExtractions?(
|
|
118
117
|
sessionKey: string,
|
|
119
118
|
principal?: string,
|
|
120
119
|
namespace?: string,
|
|
121
|
-
scopeHint?: string
|
|
120
|
+
scopeHint?: string
|
|
122
121
|
): void;
|
|
123
122
|
resolveReadableNamespace(namespace: string | undefined, principal?: string): string;
|
|
124
123
|
validateWriteCandidate(
|
|
@@ -135,6 +134,7 @@ export interface AccessObserveWriteSurfaceDeps {
|
|
|
135
134
|
export class AccessObserveWriteSurface {
|
|
136
135
|
private quarantineStoreInstance?: WriteQuarantineStore;
|
|
137
136
|
private readonly pendingObserveExtractions = new PendingObserveExtractionTracker();
|
|
137
|
+
private readonly observeTranscriptPersister = new ObserveTranscriptPersister();
|
|
138
138
|
|
|
139
139
|
public cancelPendingObservePreparations(sessionKey: string, scopeHint?: string): void {
|
|
140
140
|
this.pendingObserveExtractions.cancelPreparations(sessionKey, scopeHint);
|
|
@@ -144,7 +144,7 @@ export class AccessObserveWriteSurface {
|
|
|
144
144
|
sessionKey: string,
|
|
145
145
|
principal?: string,
|
|
146
146
|
namespace?: string,
|
|
147
|
-
scopeHint?: string
|
|
147
|
+
scopeHint?: string
|
|
148
148
|
): void {
|
|
149
149
|
this.pendingObserveExtractions.cancel(sessionKey, principal, namespace, scopeHint);
|
|
150
150
|
}
|
|
@@ -152,9 +152,7 @@ export class AccessObserveWriteSurface {
|
|
|
152
152
|
|
|
153
153
|
private quarantineStore(): WriteQuarantineStore {
|
|
154
154
|
if (!this.quarantineStoreInstance) {
|
|
155
|
-
this.quarantineStoreInstance = new WriteQuarantineStore(
|
|
156
|
-
this.deps.orchestrator.config.memoryDir,
|
|
157
|
-
);
|
|
155
|
+
this.quarantineStoreInstance = new WriteQuarantineStore(this.deps.orchestrator.config.memoryDir);
|
|
158
156
|
}
|
|
159
157
|
return this.quarantineStoreInstance;
|
|
160
158
|
}
|
|
@@ -167,11 +165,7 @@ export class AccessObserveWriteSurface {
|
|
|
167
165
|
* the caller re-throws. The ACL placement is unchanged; the payload simply
|
|
168
166
|
* stops being destroyed.
|
|
169
167
|
*/
|
|
170
|
-
private async parkRejectedWrite(
|
|
171
|
-
err: unknown,
|
|
172
|
-
operation: QuarantineOperation,
|
|
173
|
-
payload: unknown,
|
|
174
|
-
): Promise<void> {
|
|
168
|
+
private async parkRejectedWrite(err: unknown, operation: QuarantineOperation, payload: unknown): Promise<void> {
|
|
175
169
|
if (!(err instanceof NamespaceNotWritableError)) return;
|
|
176
170
|
try {
|
|
177
171
|
await this.quarantineStore().quarantine({
|
|
@@ -181,11 +175,11 @@ export class AccessObserveWriteSurface {
|
|
|
181
175
|
payload,
|
|
182
176
|
});
|
|
183
177
|
log.warn(
|
|
184
|
-
`quarantine: parked rejected ${operation} write for principal=${err.principal ?? "-"} attemptedNamespace=${err.attemptedNamespace} (namespace not writable); replay after fixing config
|
|
178
|
+
`quarantine: parked rejected ${operation} write for principal=${err.principal ?? "-"} attemptedNamespace=${err.attemptedNamespace} (namespace not writable); replay after fixing config`
|
|
185
179
|
);
|
|
186
180
|
} catch (quarantineErr) {
|
|
187
181
|
log.warn(
|
|
188
|
-
`quarantine: failed to park rejected ${operation} write: ${quarantineErr instanceof Error ? quarantineErr.message : String(quarantineErr)}
|
|
182
|
+
`quarantine: failed to park rejected ${operation} write: ${quarantineErr instanceof Error ? quarantineErr.message : String(quarantineErr)}`
|
|
189
183
|
);
|
|
190
184
|
}
|
|
191
185
|
}
|
|
@@ -272,14 +266,20 @@ export class AccessObserveWriteSurface {
|
|
|
272
266
|
if (typeof (qmd as { status?: unknown }).status === "function") {
|
|
273
267
|
try {
|
|
274
268
|
const statusReport = await Promise.race([
|
|
275
|
-
(
|
|
269
|
+
(
|
|
270
|
+
qmd as unknown as {
|
|
271
|
+
status: () => Promise<{ pendingEmbeddings: number | null; oldestPendingAgeMs: number | null }>;
|
|
272
|
+
}
|
|
273
|
+
).status(),
|
|
276
274
|
new Promise<null>((resolve) => setTimeout(() => resolve(null), 5_000).unref?.()),
|
|
277
275
|
]);
|
|
278
276
|
if (statusReport) {
|
|
279
277
|
pendingEmbeddings = statusReport.pendingEmbeddings;
|
|
280
278
|
oldestPendingAgeMs = statusReport.oldestPendingAgeMs;
|
|
281
279
|
}
|
|
282
|
-
} catch {
|
|
280
|
+
} catch {
|
|
281
|
+
/* status probe failed — non-fatal */
|
|
282
|
+
}
|
|
283
283
|
}
|
|
284
284
|
if (threshold > 0 && pendingEmbeddings !== null && pendingEmbeddings > threshold) {
|
|
285
285
|
degraded = true;
|
|
@@ -682,230 +682,240 @@ export class AccessObserveWriteSurface {
|
|
|
682
682
|
// session mutation.
|
|
683
683
|
const observePreparation = this.pendingObserveExtractions.reserve(
|
|
684
684
|
request.sessionKey,
|
|
685
|
-
pendingObserveScopeHint(request)
|
|
685
|
+
pendingObserveScopeHint(request)
|
|
686
686
|
);
|
|
687
687
|
try {
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
688
|
+
let scope: MemoryScopePlan;
|
|
689
|
+
try {
|
|
690
|
+
scope = await this.deps.resolveMemoryScopePlan(request);
|
|
691
|
+
} catch (err) {
|
|
692
|
+
// A replay re-submit sets suppressQuarantine so a still-unwritable target
|
|
693
|
+
// propagates instead of re-parking (#1888); observe has no dryRun path.
|
|
694
|
+
if (request.suppressQuarantine !== true) {
|
|
695
|
+
await this.parkRejectedWrite(err, "observe", request);
|
|
696
|
+
}
|
|
697
|
+
throw err;
|
|
697
698
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
const writeNamespace = scope.writeNamespace;
|
|
701
|
-
observePreparation.setScope(scope.principal, writeNamespace);
|
|
699
|
+
const writeNamespace = scope.writeNamespace;
|
|
700
|
+
observePreparation.setScope(scope.principal, writeNamespace);
|
|
702
701
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
702
|
+
// Backward-compatible BASE writable namespace (pre-#1495 response semantics)
|
|
703
|
+
// for the legacy `namespace` response field. DERIVED from the already-resolved
|
|
704
|
+
// scope plan — NOT a second writable-namespace resolution call
|
|
705
|
+
// call (#1505 thread jvO). The fresh call re-authorized `undefined ⇒
|
|
706
|
+
// config.defaultNamespace` a SECOND time; under a restrictive default-namespace
|
|
707
|
+
// write policy that re-auth could REJECT an otherwise valid project-scoped
|
|
708
|
+
// observe whose effective self/project write target the scope plan already
|
|
709
|
+
// authorized (the same target memory_store/suggestion_submit accept). Worse,
|
|
710
|
+
// that post-plan rejection fired AFTER `resolveMemoryScopePlan` may have seeded
|
|
711
|
+
// the coding context, leaving an orphaned session binding behind. The plan is
|
|
712
|
+
// the single authorization point (rule 22 / 39); the legacy field must reuse it
|
|
713
|
+
// and never re-authorize. Pre-#1495 semantics were exactly
|
|
714
|
+
// the writable-namespace resolver (overlay-agnostic): the explicit
|
|
715
|
+
// namespace when supplied, else `config.defaultNamespace` for user-project
|
|
716
|
+
// coding overlays. Hosted scope-profile layers such as `teamProject` report
|
|
717
|
+
// their effective profile write namespace because there is no legacy
|
|
718
|
+
// overlay-compatible base namespace for those writes.
|
|
719
|
+
const namespace = this.deps.legacyResponseNamespaceForScope(scope);
|
|
720
|
+
const shouldWriteObjectiveState =
|
|
721
|
+
resolveObjectiveStateCapabilities(this.deps.orchestrator.config).objectiveStateMemory === true &&
|
|
722
|
+
resolveObjectiveStateCapabilities(this.deps.orchestrator.config).objectiveStateSnapshotWrites === true;
|
|
724
723
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
724
|
+
// 2. Auto-resolve coding context from cwd/projectTag so a LATER bare recall
|
|
725
|
+
// on the same session is project-scoped (rule 42: same namespace layer as
|
|
726
|
+
// recall). Done AFTER the scope plan authorized the write, so a rejected
|
|
727
|
+
// request never leaves orphaned context on the session.
|
|
728
|
+
await this.deps.maybeAttachCodingContext(request.sessionKey, {
|
|
729
|
+
cwd: request.cwd,
|
|
730
|
+
projectTag: request.projectTag,
|
|
731
|
+
});
|
|
733
732
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
733
|
+
// Prefix sessionKey with the EFFECTIVE write namespace for LCM archival so
|
|
734
|
+
// observed turns are scoped to the same namespace project-scoped recall
|
|
735
|
+
// reads. The SAME `lcmSessionKeyForNamespace` helper is used by the
|
|
736
|
+
// orchestrator recall readers and by compaction flush/record, so the LCM
|
|
737
|
+
// write key and every read/flush key agree (#1495, rule 42). Only prefixes
|
|
738
|
+
// when the namespace diverges from the default store; a single-store
|
|
739
|
+
// deployment keeps the raw sessionKey unchanged.
|
|
740
|
+
const lcmSessionKey =
|
|
741
|
+
lcmSessionKeyForNamespace(writeNamespace, request.sessionKey, this.deps.orchestrator.config.defaultNamespace) ??
|
|
742
|
+
request.sessionKey;
|
|
744
743
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
744
|
+
// 4. Objective-state snapshots → the scope plan's objective-state namespace.
|
|
745
|
+
// For explicit-namespace and coding-overlay writes this equals
|
|
746
|
+
// writeNamespace; for an IMPLICIT write it is the principal SELF base
|
|
747
|
+
// (#928 contract, already auth-checked inside the scope plan), not the
|
|
748
|
+
// general default-store write namespace.
|
|
749
|
+
if (shouldWriteObjectiveState) {
|
|
750
|
+
try {
|
|
751
|
+
const objectiveStateLocation = await this.deps.objectiveStateStoreLocationForNamespace(
|
|
752
|
+
scope.objectiveStateNamespace
|
|
753
|
+
);
|
|
754
|
+
await recordObjectiveStateSnapshotsFromObservedMessages({
|
|
755
|
+
memoryDir: objectiveStateLocation.memoryDir,
|
|
756
|
+
objectiveStateStoreDir: objectiveStateLocation.objectiveStateStoreDir,
|
|
757
|
+
objectiveStateMemoryEnabled: resolveObjectiveStateCapabilities(this.deps.orchestrator.config)
|
|
758
|
+
.objectiveStateMemory,
|
|
759
|
+
objectiveStateSnapshotWritesEnabled: resolveObjectiveStateCapabilities(this.deps.orchestrator.config)
|
|
760
|
+
.objectiveStateSnapshotWrites,
|
|
761
|
+
sessionKey: request.sessionKey,
|
|
762
|
+
recordedAt: new Date().toISOString(),
|
|
763
|
+
messages: request.messages,
|
|
764
|
+
});
|
|
765
|
+
} catch (err) {
|
|
766
|
+
log.error(`access-observe objective-state snapshot write failed: ${err}`);
|
|
767
|
+
}
|
|
768
768
|
}
|
|
769
|
-
}
|
|
770
769
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
770
|
+
// 5. LCM archival → effective write namespace.
|
|
771
|
+
// lcmArchived in the response means "LCM archival was queued" (not
|
|
772
|
+
// "completed"), matching extractionQueued semantics. Both run async.
|
|
773
|
+
let lcmArchived = false;
|
|
774
|
+
if (this.deps.orchestrator.lcmEngine && this.deps.orchestrator.lcmEngine.enabled) {
|
|
775
|
+
// Fire-and-forget: LCM archival writes to SQLite and builds summary
|
|
776
|
+
// DAGs, which can take tens of seconds for large sessions. Don't
|
|
777
|
+
// block the HTTP response — the caller only needs acknowledgment.
|
|
778
|
+
try {
|
|
779
|
+
this.deps.orchestrator.lcmEngine.enqueueObserveMessages(lcmSessionKey, request.messages);
|
|
780
|
+
lcmArchived = true;
|
|
781
|
+
} catch (err) {
|
|
782
|
+
log.error(`access-observe LCM enqueue failed: ${err}`);
|
|
783
|
+
}
|
|
784
784
|
}
|
|
785
|
-
}
|
|
786
785
|
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
// the `agent:` heuristic). Pass the ORIGINAL sessionKey so identity is
|
|
799
|
-
// correct; storage routing is pinned separately via
|
|
800
|
-
// writeNamespaceOverride below, and the authenticated principal is pinned
|
|
801
|
-
// via principalOverride.
|
|
802
|
-
sessionKey: request.sessionKey,
|
|
803
|
-
role: m.role,
|
|
804
|
-
content: m.content,
|
|
805
|
-
parts: m.parts,
|
|
806
|
-
rawContent: m.rawContent,
|
|
807
|
-
sourceFormat: m.sourceFormat,
|
|
808
|
-
timestamp: new Date().toISOString(),
|
|
809
|
-
...(request.sourceConnector ? { sourceConnector: request.sourceConnector } : {}),
|
|
810
|
-
}));
|
|
811
|
-
// Pin extraction STORAGE to the effective namespace rather than letting the
|
|
812
|
-
// orchestrator re-derive one from the session key + coding overlay — that
|
|
813
|
-
// re-derivation would have to reparse identity and could miss the overlay
|
|
814
|
-
// (the #1495 drift). Passing writeNamespaceOverride makes the extraction
|
|
815
|
-
// target deterministic and identical to LCM/objective-state (rule 39).
|
|
816
|
-
//
|
|
817
|
-
// Pin WHENEVER namespaces are enabled, not only when writeNamespace differs
|
|
818
|
-
// from the default store (#1505 round 3, codex "Pin default-store extraction
|
|
819
|
-
// writes too"). For an unqualified/no-overlay observe by a principal that
|
|
820
|
-
// HAS a self namespace, writeNamespace is `config.defaultNamespace` but an
|
|
821
|
-
// unpinned `runExtraction` would fall back to
|
|
822
|
-
// `defaultNamespaceForPrincipal(principal)` = the SELF namespace — diverging
|
|
823
|
-
// from where LCM/objective-state/response wrote (`default`). Pinning the
|
|
824
|
-
// resolved writeNamespace forces all side effects onto the one scope-plan
|
|
825
|
-
// namespace. When namespaces are DISABLED the router collapses every
|
|
826
|
-
// namespace to one store, so leaving the override undefined preserves the
|
|
827
|
-
// existing single-store routing byte-for-byte.
|
|
828
|
-
const writeNamespaceOverride =
|
|
829
|
-
resolveNamespaceCapabilities(this.deps.orchestrator.config).namespaces === true ? writeNamespace : undefined;
|
|
830
|
-
// Pin provenance PRINCIPAL to the scope plan's resolved principal (#1505
|
|
831
|
-
// thread 1). The scope plan already applied auth precedence
|
|
832
|
-
// (authenticatedPrincipal/principalOverride > resolvePrincipal(original
|
|
833
|
-
// sessionKey)), so this is the same identity the surface authorized — never
|
|
834
|
-
// a `default` fallback parsed from a prefixed key. Omitted when no principal
|
|
835
|
-
// resolved (namespaces-disabled / unauthenticated single-store), preserving
|
|
836
|
-
// existing behavior.
|
|
837
|
-
const principalOverride =
|
|
838
|
-
typeof scope.principal === "string" && scope.principal.length > 0 ? scope.principal : undefined;
|
|
839
|
-
// Fire-and-forget: queue extraction in the background so the HTTP
|
|
840
|
-
// response returns immediately. LCM archival (above) is also
|
|
841
|
-
// enqueue-only; extraction involves LLM calls that can take
|
|
842
|
-
// minutes under load and should not block the caller.
|
|
843
|
-
//
|
|
844
|
-
// Backpressure: the orchestrator's own extraction queue already
|
|
845
|
-
// limits concurrency (one extraction at a time per session via
|
|
846
|
-
// queueBufferedExtraction). Fire-and-forget here just decouples
|
|
847
|
-
// the HTTP response from the queue drain.
|
|
848
|
-
if (!observePreparation.isCancelled()) {
|
|
786
|
+
// 5b. Transcript persistence → the per-session transcript store the
|
|
787
|
+
// hourly summarizer reads (issue #2783). Best-effort like the LCM
|
|
788
|
+
// enqueue above: a transcript failure must not fail the observe.
|
|
789
|
+
const transcriptPersisted = resolvePresentationCapabilities(this.deps.orchestrator.config).transcript
|
|
790
|
+
? await this.observeTranscriptPersister.persist(
|
|
791
|
+
this.deps.orchestrator,
|
|
792
|
+
observeTranscriptSessionKey(request.sessionKey, writeNamespace, this.deps.orchestrator.config),
|
|
793
|
+
request.messages,
|
|
794
|
+
request.sessionKey
|
|
795
|
+
)
|
|
796
|
+
: false;
|
|
849
797
|
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
798
|
+
// 6. Extraction/replay → effective write namespace for STORAGE, ORIGINAL
|
|
799
|
+
// sessionKey for IDENTITY (provenance + threading).
|
|
800
|
+
let extractionQueued = false;
|
|
801
|
+
if (request.skipExtraction !== true) {
|
|
802
|
+
const turns = request.messages.map((m) => ({
|
|
803
|
+
source: "openclaw" as const,
|
|
804
|
+
// Identity-vs-routing separation (#1505 thread 1, cursor): extraction
|
|
805
|
+
// derives the provenance principal via `resolvePrincipal(turn.sessionKey)`
|
|
806
|
+
// and threads `turn.sessionKey` into conversation threading. Feeding the
|
|
807
|
+
// namespace-PREFIXED `lcmSessionKey` here mis-derived the principal to
|
|
808
|
+
// `default` (a `<ns>:<key>` string matches no prefix/map rule and fails
|
|
809
|
+
// the `agent:` heuristic). Pass the ORIGINAL sessionKey so identity is
|
|
810
|
+
// correct; storage routing is pinned separately via
|
|
811
|
+
// writeNamespaceOverride below, and the authenticated principal is pinned
|
|
812
|
+
// via principalOverride.
|
|
813
|
+
sessionKey: request.sessionKey,
|
|
814
|
+
role: m.role,
|
|
815
|
+
content: m.content,
|
|
816
|
+
parts: m.parts,
|
|
817
|
+
rawContent: m.rawContent,
|
|
818
|
+
sourceFormat: m.sourceFormat,
|
|
819
|
+
timestamp: new Date().toISOString(),
|
|
820
|
+
...(request.sourceConnector ? { sourceConnector: request.sourceConnector } : {}),
|
|
821
|
+
}));
|
|
822
|
+
// Pin extraction STORAGE to the effective namespace rather than letting the
|
|
823
|
+
// orchestrator re-derive one from the session key + coding overlay — that
|
|
824
|
+
// re-derivation would have to reparse identity and could miss the overlay
|
|
825
|
+
// (the #1495 drift). Passing writeNamespaceOverride makes the extraction
|
|
826
|
+
// target deterministic and identical to LCM/objective-state (rule 39).
|
|
827
|
+
//
|
|
828
|
+
// Pin WHENEVER namespaces are enabled, not only when writeNamespace differs
|
|
829
|
+
// from the default store (#1505 round 3, codex "Pin default-store extraction
|
|
830
|
+
// writes too"). For an unqualified/no-overlay observe by a principal that
|
|
831
|
+
// HAS a self namespace, writeNamespace is `config.defaultNamespace` but an
|
|
832
|
+
// unpinned `runExtraction` would fall back to
|
|
833
|
+
// `defaultNamespaceForPrincipal(principal)` = the SELF namespace — diverging
|
|
834
|
+
// from where LCM/objective-state/response wrote (`default`). Pinning the
|
|
835
|
+
// resolved writeNamespace forces all side effects onto the one scope-plan
|
|
836
|
+
// namespace. When namespaces are DISABLED the router collapses every
|
|
837
|
+
// namespace to one store, so leaving the override undefined preserves the
|
|
838
|
+
// existing single-store routing byte-for-byte.
|
|
839
|
+
const writeNamespaceOverride =
|
|
840
|
+
resolveNamespaceCapabilities(this.deps.orchestrator.config).namespaces === true ? writeNamespace : undefined;
|
|
841
|
+
// Pin provenance PRINCIPAL to the scope plan's resolved principal (#1505
|
|
842
|
+
// thread 1). The scope plan already applied auth precedence
|
|
843
|
+
// (authenticatedPrincipal/principalOverride > resolvePrincipal(original
|
|
844
|
+
// sessionKey)), so this is the same identity the surface authorized — never
|
|
845
|
+
// a `default` fallback parsed from a prefixed key. Omitted when no principal
|
|
846
|
+
// resolved (namespaces-disabled / unauthenticated single-store), preserving
|
|
847
|
+
// existing behavior.
|
|
848
|
+
const principalOverride =
|
|
849
|
+
typeof scope.principal === "string" && scope.principal.length > 0 ? scope.principal : undefined;
|
|
850
|
+
// Fire-and-forget: queue extraction in the background so the HTTP
|
|
851
|
+
// response returns immediately. LCM archival (above) is also
|
|
852
|
+
// enqueue-only; extraction involves LLM calls that can take
|
|
853
|
+
// minutes under load and should not block the caller.
|
|
854
|
+
//
|
|
855
|
+
// Backpressure: the orchestrator's own extraction queue already
|
|
856
|
+
// limits concurrency (one extraction at a time per session via
|
|
857
|
+
// queueBufferedExtraction). Fire-and-forget here just decouples
|
|
858
|
+
// the HTTP response from the queue drain.
|
|
859
|
+
if (!observePreparation.isCancelled()) {
|
|
860
|
+
try {
|
|
861
|
+
const observeAbortController = new AbortController();
|
|
862
|
+
const extractionPromise = this.deps.orchestrator.ingestReplayBatch(turns, {
|
|
863
|
+
archiveLcm: false,
|
|
864
|
+
writeNamespaceOverride,
|
|
865
|
+
principalOverride,
|
|
866
|
+
abortSignal: observeAbortController.signal,
|
|
867
|
+
...(typeof request.authenticatedPrincipal === "string" && request.authenticatedPrincipal.trim().length > 0
|
|
868
|
+
? { sessionOwnerPrincipal: request.authenticatedPrincipal.trim() }
|
|
869
|
+
: {}),
|
|
870
|
+
});
|
|
871
|
+
extractionPromise.catch((err) => {
|
|
872
|
+
log.error(`access-observe background extraction failed: ${err}`);
|
|
873
|
+
});
|
|
874
|
+
this.pendingObserveExtractions.track(
|
|
875
|
+
this.pendingObserveExtractions.key(request.sessionKey, scope.principal, writeNamespace),
|
|
876
|
+
extractionPromise,
|
|
877
|
+
observeAbortController
|
|
878
|
+
);
|
|
879
|
+
extractionQueued = true;
|
|
880
|
+
} catch (err) {
|
|
881
|
+
// Synchronous enqueue failure (e.g. orchestrator disposed)
|
|
882
|
+
log.error(`access-observe extraction enqueue failed: ${err}`);
|
|
883
|
+
}
|
|
884
|
+
}
|
|
875
885
|
}
|
|
876
886
|
|
|
887
|
+
log.info(
|
|
888
|
+
`access-observe namespace=${namespace} effectiveNamespace=${writeNamespace} sessionKey=${request.sessionKey} messages=${request.messages.length} lcm=${lcmArchived} extraction=${extractionQueued} transcript=${transcriptPersisted}`
|
|
889
|
+
);
|
|
877
890
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
}
|
|
899
|
-
lcmArchived,
|
|
900
|
-
extractionQueued,
|
|
901
|
-
};
|
|
891
|
+
return {
|
|
892
|
+
accepted: request.messages.length,
|
|
893
|
+
sessionKey: request.sessionKey,
|
|
894
|
+
namespace,
|
|
895
|
+
effectiveNamespace: writeNamespace,
|
|
896
|
+
scopeDebug: {
|
|
897
|
+
principal: scope.principal,
|
|
898
|
+
explicitNamespace: scope.explicitNamespace,
|
|
899
|
+
baseNamespace: scope.baseNamespace,
|
|
900
|
+
writeNamespace: scope.writeNamespace,
|
|
901
|
+
codingOverlayApplied: scope.codingOverlayApplied,
|
|
902
|
+
readNamespaces: scope.readNamespaces,
|
|
903
|
+
scopeProfile: scope.scopeProfile,
|
|
904
|
+
writeLayer: scope.writeLayer,
|
|
905
|
+
layers: scope.layers,
|
|
906
|
+
promotionTargets: scope.promotionTargets,
|
|
907
|
+
},
|
|
908
|
+
lcmArchived,
|
|
909
|
+
extractionQueued,
|
|
910
|
+
transcriptPersisted,
|
|
911
|
+
};
|
|
902
912
|
} finally {
|
|
903
913
|
observePreparation.release();
|
|
904
|
-
|
|
914
|
+
}
|
|
905
915
|
}
|
|
906
916
|
|
|
907
917
|
async extractionForceFlush(
|
|
908
|
-
request: EngramAccessExtractionForceFlushRequest
|
|
918
|
+
request: EngramAccessExtractionForceFlushRequest
|
|
909
919
|
): Promise<EngramAccessExtractionForceFlushResponse> {
|
|
910
920
|
return extractionForceFlush(
|
|
911
921
|
this.deps,
|
|
@@ -917,8 +927,8 @@ export class AccessObserveWriteSurface {
|
|
|
917
927
|
namespace,
|
|
918
928
|
abortSignal,
|
|
919
929
|
registerCancellation,
|
|
920
|
-
scopeHint
|
|
921
|
-
)
|
|
930
|
+
scopeHint
|
|
931
|
+
)
|
|
922
932
|
);
|
|
923
933
|
}
|
|
924
934
|
async workTask(request: {
|