@remnic/core 9.69.40 → 9.69.41
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 +13 -13
- package/dist/access-admin-ops-surface.js +69 -68
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +13 -13
- package/dist/access-authorization-probe.js +70 -69
- package/dist/access-boundary.d.ts +13 -13
- package/dist/access-boundary.js +69 -68
- package/dist/access-cli.js +157 -155
- 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 +13 -13
- package/dist/access-extraction-force-flush.js +69 -68
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-briefing.d.ts +13 -13
- package/dist/access-http-briefing.js +70 -69
- package/dist/access-http-lcm-compaction.d.ts +13 -13
- package/dist/access-http-lifecycle-flush.d.ts +13 -13
- package/dist/access-http-offline-stream.d.ts +13 -13
- package/dist/access-http-query.d.ts +2 -2
- package/dist/access-http-query.js +71 -70
- package/dist/access-http.d.ts +14 -14
- package/dist/access-http.js +90 -87
- package/dist/access-identity-continuity-surface.d.ts +11 -11
- package/dist/access-identity-continuity-surface.js +69 -68
- package/dist/access-lcm-surface.d.ts +13 -13
- package/dist/access-lcm-surface.js +69 -68
- package/dist/access-mcp-shared-context-tools.d.ts +156 -0
- package/dist/access-mcp-shared-context-tools.js +8 -0
- package/dist/access-mcp.d.ts +13 -13
- package/dist/access-mcp.js +81 -78
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-CKBumJ8W.d.ts → access-namespace-preflight-DWsMc9Dh.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +69 -68
- package/dist/access-observe-transcript.d.ts +11 -11
- package/dist/access-observe-write-category.d.ts +1 -1
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.d.ts +13 -13
- package/dist/access-observe-write-surface.js +69 -68
- package/dist/access-offline-manifest.d.ts +11 -11
- package/dist/access-offline-manifest.js +9 -9
- package/dist/access-operations-batch.js +74 -72
- package/dist/access-operations.d.ts +13 -13
- package/dist/access-operations.js +79 -77
- package/dist/access-recall-concurrency.d.ts +13 -13
- package/dist/access-recall-concurrency.js +69 -68
- package/dist/access-recall-response.d.ts +13 -13
- package/dist/access-recall-response.js +69 -68
- package/dist/access-recall-surface.d.ts +13 -13
- package/dist/access-recall-surface.js +69 -68
- package/dist/access-schema.d.ts +1 -1
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-DJ3qogNt.d.ts → access-service-Cisy5YDq.d.ts} +14 -9
- package/dist/access-service-helpers.d.ts +13 -13
- package/dist/access-service.d.ts +13 -13
- package/dist/access-service.js +69 -68
- package/dist/access-surface-catalog.d.ts +13 -13
- package/dist/access-surface-catalog.js +71 -70
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +4 -4
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-memory-bridge.js +3 -3
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +6 -6
- package/dist/activity/digest.d.ts +1 -1
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-D6BAPIJV.js → auto-sync-7PGUFY7U.js} +7 -7
- package/dist/background-generation.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 +11 -11
- package/dist/briefing-window.d.ts +2 -2
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +17 -17
- 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/buffer.js +5 -5
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +2 -2
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
- package/dist/{capsule-merge-IPG4IOFP.js → capsule-merge-3MNURAQ3.js} +2 -2
- package/dist/{catalog-BHXkBVhg.d.ts → catalog-wcX1QhtQ.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +20 -20
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-M6RORUO5.js → chunk-2EYZ32LH.js} +24 -2
- package/dist/{chunk-M6RORUO5.js.map → chunk-2EYZ32LH.js.map} +1 -1
- package/dist/{chunk-VHKXRYQN.js → chunk-2HQPE2NM.js} +2 -2
- package/dist/{chunk-RDLPFM7I.js → chunk-2ZG2LLZT.js} +2 -2
- package/dist/{chunk-IMBQFHRV.js → chunk-3BLHPQHT.js} +5 -5
- package/dist/{chunk-6L2II3KS.js → chunk-3D75XIYO.js} +2 -2
- package/dist/{chunk-J272ODKJ.js → chunk-42DJ235G.js} +2 -2
- package/dist/{chunk-RJQAP333.js → chunk-46RII65S.js} +2 -2
- package/dist/{chunk-JUDT33RX.js → chunk-4AX5OYKC.js} +2 -2
- package/dist/{chunk-GSSDHAYH.js → chunk-4IGOLIWM.js} +2 -2
- package/dist/{chunk-4CMXI55L.js → chunk-54QPOE45.js} +2 -2
- package/dist/{chunk-LKFVVN7R.js → chunk-563X6JJX.js} +2 -2
- package/dist/{chunk-VQWBUPSJ.js → chunk-5EQT62HH.js} +2 -2
- package/dist/{chunk-BYQX4IOG.js → chunk-6MQMYXSQ.js} +2 -2
- package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
- package/dist/{chunk-K75A5XWU.js → chunk-7ZLC4DTZ.js} +4 -4
- package/dist/{chunk-7Z54NXVS.js → chunk-A4OIJYCV.js} +2 -2
- package/dist/{chunk-QS5Q5RBV.js → chunk-AFJHNHAM.js} +8 -8
- package/dist/{chunk-TZ44E732.js → chunk-AIVRD66I.js} +2 -2
- package/dist/{chunk-OEDW4ER7.js → chunk-AJBWVDRV.js} +2 -1
- package/dist/chunk-AJBWVDRV.js.map +1 -0
- package/dist/{chunk-IOPIGX7Y.js → chunk-AKABVXFS.js} +2 -2
- package/dist/{chunk-KOTG3RXE.js → chunk-AUSRUOMQ.js} +2 -2
- package/dist/{chunk-K4A6UVPB.js → chunk-BTPCP535.js} +8 -8
- package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
- package/dist/{chunk-TEMKBSV6.js → chunk-C3G6MW4W.js} +3 -3
- package/dist/{chunk-3QEVOQF5.js → chunk-D6PY63OM.js} +2 -2
- package/dist/{chunk-DFVSJFHK.js → chunk-DBB5JPSL.js} +2 -2
- package/dist/{chunk-HJUP3K6L.js → chunk-DIXZQTGY.js} +2 -2
- package/dist/{chunk-ZX3AYNNV.js → chunk-DM5CU5J7.js} +2 -2
- package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
- package/dist/{chunk-BGRTZOJB.js → chunk-E3I3NDUP.js} +4 -4
- package/dist/{chunk-ZAEPD4C2.js → chunk-E4LMQTST.js} +2 -2
- package/dist/{chunk-NETQXOPY.js → chunk-EH3HNCAM.js} +12 -7
- package/dist/{chunk-NETQXOPY.js.map → chunk-EH3HNCAM.js.map} +1 -1
- package/dist/{chunk-7D6SER6A.js → chunk-EMSYMYXO.js} +14 -14
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-V2ZA4YWE.js → chunk-F5H6YG5P.js} +2 -2
- package/dist/{chunk-YTK5MVNF.js → chunk-FGFC2EFR.js} +14 -13
- package/dist/chunk-FGFC2EFR.js.map +1 -0
- package/dist/{chunk-ZMWSYUUL.js → chunk-GCBIXUPT.js} +2 -2
- package/dist/{chunk-IS2IDFJP.js → chunk-GMH5QPUU.js} +22 -22
- package/dist/chunk-GMH5QPUU.js.map +1 -0
- package/dist/{chunk-LFVZD5EC.js → chunk-GWNSKQDA.js} +3 -3
- package/dist/{chunk-JDX2OA4R.js → chunk-HNHIHXSD.js} +2 -2
- package/dist/{chunk-2SNCQHJZ.js → chunk-I33QYUAF.js} +6 -6
- package/dist/{chunk-UZ6JYPJ6.js → chunk-I46BYY7U.js} +193 -150
- package/dist/chunk-I46BYY7U.js.map +1 -0
- package/dist/{chunk-MVG3KXON.js → chunk-ICN37XHG.js} +15 -15
- package/dist/chunk-IFBSZGW3.js +42 -0
- package/dist/chunk-IFBSZGW3.js.map +1 -0
- package/dist/{chunk-ICNJ6J46.js → chunk-IYIPXAIJ.js} +2 -2
- package/dist/{chunk-AEOOGXMQ.js → chunk-J2MGTGKC.js} +4 -4
- package/dist/chunk-JATHBCAV.js +94 -0
- package/dist/chunk-JATHBCAV.js.map +1 -0
- package/dist/{chunk-5U7K4W6K.js → chunk-JDOBQPJY.js} +3 -3
- package/dist/{chunk-TG3FAM2S.js → chunk-JL4TQYM5.js} +48 -1
- package/dist/{chunk-TG3FAM2S.js.map → chunk-JL4TQYM5.js.map} +1 -1
- package/dist/{chunk-NVVZPBKI.js → chunk-JMWUPUE6.js} +2 -2
- package/dist/{chunk-QPVNK2VE.js → chunk-JSD7Q7LD.js} +2 -2
- package/dist/{chunk-RLU2Y5GV.js → chunk-K5D2XVNN.js} +4 -4
- package/dist/{chunk-YTZN2UZO.js → chunk-KJLLPG26.js} +2 -2
- package/dist/{chunk-2SKMZUOW.js → chunk-KLUC2GSG.js} +6 -6
- package/dist/{chunk-YRIFXXMI.js → chunk-KZJM7R4F.js} +3 -3
- package/dist/{chunk-46Z3VGWF.js → chunk-LE2KZ72G.js} +3 -3
- package/dist/{chunk-HIP6DKJJ.js → chunk-LQVXSRAJ.js} +2 -2
- package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
- package/dist/{chunk-5LYSEZOF.js → chunk-MCMS4VUK.js} +9 -8
- package/dist/chunk-MCMS4VUK.js.map +1 -0
- package/dist/{chunk-ROEFLU37.js → chunk-N6XTC56E.js} +13 -81
- package/dist/chunk-N6XTC56E.js.map +1 -0
- package/dist/{chunk-PKUJNICO.js → chunk-ND7MAIJC.js} +2 -2
- package/dist/{chunk-DAZANIYU.js → chunk-NYWCFC3K.js} +76 -77
- package/dist/{chunk-DAZANIYU.js.map → chunk-NYWCFC3K.js.map} +1 -1
- package/dist/{chunk-W23JARAQ.js → chunk-P66QH6R6.js} +2 -2
- package/dist/{chunk-62D2PAAM.js → chunk-PAAJWQH5.js} +4 -4
- package/dist/{chunk-XM46Y66S.js → chunk-PFKIOYJH.js} +2 -2
- package/dist/{chunk-C5R73BON.js → chunk-PGGPRF6J.js} +2 -2
- package/dist/{chunk-V6EGNVUT.js → chunk-PIWFNPQT.js} +4 -4
- package/dist/{chunk-JOP7W24J.js → chunk-PLJ2MQFT.js} +4 -4
- package/dist/{chunk-MJC7UKH7.js → chunk-PQ42DJNG.js} +2 -2
- package/dist/{chunk-37CAEC7E.js → chunk-PWPIERBM.js} +4 -4
- package/dist/{chunk-BXIJSPCL.js → chunk-Q62GA5U2.js} +2 -2
- package/dist/{chunk-CC37E3QM.js → chunk-QKCXRS5A.js} +16 -1
- package/dist/chunk-QKCXRS5A.js.map +1 -0
- package/dist/{chunk-VKWFNPBH.js → chunk-RQQO3ORQ.js} +2 -2
- package/dist/{chunk-SFHLQPBF.js → chunk-S4MJTIPG.js} +85 -81
- package/dist/chunk-S4MJTIPG.js.map +1 -0
- package/dist/{chunk-THTF2W7M.js → chunk-TRTLWUDD.js} +19 -18
- package/dist/chunk-TRTLWUDD.js.map +1 -0
- package/dist/{chunk-KTOXQMW3.js → chunk-UHSOPTNB.js} +14 -4
- package/dist/chunk-UHSOPTNB.js.map +1 -0
- package/dist/{chunk-ES5BUPYB.js → chunk-UZGHKD3T.js} +2 -2
- package/dist/{chunk-62HFZNCJ.js → chunk-V2EXYQEQ.js} +11 -10
- package/dist/{chunk-62HFZNCJ.js.map → chunk-V2EXYQEQ.js.map} +1 -1
- package/dist/{chunk-QE6YVNP5.js → chunk-V2TOGJPM.js} +49 -16
- package/dist/chunk-V2TOGJPM.js.map +1 -0
- package/dist/{chunk-J4WGTN2N.js → chunk-V62YYBBY.js} +4 -4
- package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
- package/dist/{chunk-Z4GUX2M6.js → chunk-VSN2DMQK.js} +2 -2
- package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
- package/dist/{chunk-KY236SP5.js → chunk-W7UV2ZCA.js} +3 -3
- package/dist/{chunk-TO36VPZI.js → chunk-WBQ4ONQJ.js} +2 -2
- package/dist/{chunk-WZYHPAG5.js → chunk-WFMQN7JE.js} +3 -3
- package/dist/{chunk-G2XZFGYN.js → chunk-WGZHSQDV.js} +4 -4
- package/dist/{chunk-MDIEES23.js → chunk-WN2OXGGH.js} +1 -1
- package/dist/chunk-WN2OXGGH.js.map +1 -0
- package/dist/{chunk-SUEOG2S4.js → chunk-WPGA4RYI.js} +2 -2
- package/dist/{chunk-SV4Z2S67.js → chunk-WUUGE7QC.js} +54 -21
- package/dist/chunk-WUUGE7QC.js.map +1 -0
- package/dist/{chunk-J7FVMLBR.js → chunk-WZIO3TW6.js} +2 -2
- package/dist/{chunk-ZZUVBZL2.js → chunk-X2QPKLPL.js} +2 -2
- package/dist/{chunk-JAJIMTFB.js → chunk-XRS65T4O.js} +9 -9
- package/dist/{chunk-GO5LOHCD.js → chunk-YFXAWGMR.js} +2 -2
- package/dist/{chunk-ZRMMXWYI.js → chunk-YR5QT4SR.js} +32 -9
- package/dist/chunk-YR5QT4SR.js.map +1 -0
- package/dist/{chunk-CARRTDKC.js → chunk-Z22M4JCY.js} +4 -3
- package/dist/chunk-Z22M4JCY.js.map +1 -0
- package/dist/{chunk-K4JKAXMO.js → chunk-Z535ADTC.js} +3 -3
- package/dist/{chunk-23HFXQ5J.js → chunk-Z7NBT6AK.js} +3 -3
- package/dist/{chunk-VQYWKCDR.js → chunk-ZX6NNFSY.js} +3 -3
- package/dist/{chunk-3XPN7AVY.js → chunk-ZYSOT6HD.js} +2 -2
- package/dist/{chunk-ZZCR2QYL.js → chunk-ZZEIL3MI.js} +2 -2
- package/dist/{cli-BWri5-am.d.ts → cli-CUlMlS2N.d.ts} +5 -5
- package/dist/cli.d.ts +15 -15
- package/dist/cli.js +116 -114
- package/dist/coding/export-okf-codegraph.d.ts +1 -1
- package/dist/coding/export-okf-codegraph.js +16 -16
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +19 -19
- 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 +6 -6
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +19 -19
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +19 -19
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +4 -4
- package/dist/contradiction/index.js +4 -4
- package/dist/{contradiction-scan-BSGKZHYJ.js → contradiction-scan-GVD4JJ7B.js} +4 -4
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +20 -20
- 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 +19 -19
- 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/deep-recall-config.d.ts +12 -1
- package/dist/deep-recall-config.js +5 -3
- package/dist/deep-recall-http-glue.d.ts +16 -14
- package/dist/deep-recall-http-glue.js +7 -4
- package/dist/deep-recall-mcp-tools.d.ts +13 -13
- package/dist/deep-recall-policy-llm.d.ts +12 -2
- package/dist/deep-recall-policy-llm.js +3 -3
- package/dist/deep-recall-seeds.d.ts +4 -1
- package/dist/deep-recall-seeds.js +1 -1
- package/dist/deep-recall.d.ts +12 -1
- package/dist/deep-recall.js +3 -2
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-ueZlKTQB.d.ts → dependency-propagation-delivery-BDDjImQn.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 +18 -18
- 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 +11 -11
- package/dist/explicit-capture.js +3 -3
- package/dist/external-wiki-access.d.ts +13 -13
- package/dist/external-wiki-access.js +70 -69
- 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 +13 -13
- package/dist/extraction-error-classification.d.ts +1 -1
- package/dist/extraction-faithfulness.d.ts +2 -2
- package/dist/extraction-faithfulness.js +3 -3
- package/dist/extraction-judge-telemetry.d.ts +2 -2
- package/dist/extraction-judge-training.d.ts +2 -2
- package/dist/extraction-judge.d.ts +2 -2
- package/dist/extraction-judge.js +3 -3
- 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-span-config.d.ts +1 -1
- package/dist/extraction-span-materialize.d.ts +1 -1
- package/dist/extraction.d.ts +2 -2
- package/dist/extraction.js +30 -30
- package/dist/fallback-llm-codex-subscription.d.ts +15 -5
- package/dist/fallback-llm-codex-subscription.js +3 -1
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/fallback-llm.js +2 -2
- package/dist/{first-start-migration-ZWMV5CX4.js → first-start-migration-L3UFX5CU.js} +4 -4
- package/dist/{generic-recall-paths-CpyVmA88.d.ts → generic-recall-paths-CpDzNO_I.d.ts} +1 -1
- package/dist/graph-append-error.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-reinforcement.d.ts +1 -1
- package/dist/graph-jsonl.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.d.ts +1 -1
- package/dist/harmonic-retrieval.js +3 -3
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/importers/test-utils.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/{index-BvUA4S7M.d.ts → index-CtmmCJoo.d.ts} +3 -3
- package/dist/index.d.ts +26 -26
- package/dist/index.js +279 -275
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +8 -8
- 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-BsJGulur.d.ts → local-llm-DpXIvm6F.d.ts} +1 -1
- package/dist/local-llm-helpers.d.ts +2 -2
- package/dist/local-llm.d.ts +2 -2
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/location/index.d.ts +3 -3
- package/dist/location/index.js +19 -19
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +18 -18
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +17 -17
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +19 -19
- package/dist/{maintenance-CYubtIRr.d.ts → maintenance-CNgoLsoM.d.ts} +7 -6
- package/dist/mcp-memory-inspector-app.d.ts +13 -13
- 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 +13 -13
- package/dist/memory-subject.d.ts +13 -13
- 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 +18 -18
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +17 -17
- 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 +20 -20
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +35 -35
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +29 -29
- package/dist/{orchestrator-BWDRJ_0d.d.ts → orchestrator-DT7ybIFz.d.ts} +18 -10
- package/dist/orchestrator.d.ts +11 -11
- package/dist/orchestrator.js +157 -155
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-7JMn2yMH.d.ts → pipeline-CgBEmHcz.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +2 -2
- package/dist/provenance.d.ts +1 -1
- package/dist/{public-http-CJWs3mo9.d.ts → public-http-C8P8fyiO.d.ts} +1 -1
- package/dist/{qmd-CxCH9G9m.d.ts → qmd-BkY8KpCh.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-planner-llm.js +2 -2
- package/dist/recall-state-view-admission.d.ts +2 -2
- package/dist/recall-state-view-admission.js +7 -7
- package/dist/recall-state-view-anchors.d.ts +1 -1
- package/dist/recall-state-view-anchors.js +2 -2
- package/dist/recall-state-view-inject.js +2 -2
- package/dist/recall-state-view-render.js +2 -2
- package/dist/recall-state-view-widen.js +2 -2
- package/dist/recall-state-view-wire.js +3 -3
- package/dist/recall-state-view.d.ts +9 -1
- package/dist/recall-state-view.js +5 -3
- 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 +4 -4
- package/dist/reconcile/plan.d.ts +1 -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/{resolution-4GG3QZRJ.js → resolution-LXFQQ4AE.js} +5 -5
- package/dist/resolution-LXFQQ4AE.js.map +1 -0
- 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/{scope-profiles-BGAUqhBR.d.ts → scope-profiles-BBPjZ9jb.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 +2 -2
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +4 -4
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-CCeRD9pV.d.ts → semantic-consolidation-BPFFVO84.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +20 -20
- package/dist/semantic-rule-promotion.js +17 -17
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +17 -17
- package/dist/{service-BwpzRduk.d.ts → service-jKcr6Jvr.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/shared-context/manager.js +2 -2
- package/dist/shared-context/write-output-controls.d.ts +34 -0
- package/dist/shared-context/write-output-controls.js +10 -0
- package/dist/shared-context/write-output-controls.js.map +1 -0
- package/dist/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +25 -25
- package/dist/source-attribution.d.ts +23 -1
- package/dist/source-attribution.js +13 -3
- package/dist/standup/build.js +17 -17
- package/dist/{storage-BprAGBG0.d.ts → storage-C-0Ah5OY.d.ts} +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +16 -16
- package/dist/subject-config.d.ts +1 -1
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +6 -6
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +16 -16
- package/dist/support-passport/index.js +72 -71
- 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/tier-routing.js +3 -3
- package/dist/{tier-stats-LUSUUNU6.js → tier-stats-VK5PCO2L.js} +4 -4
- 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 +3 -3
- package/dist/transfer/export-okf.d.ts +1 -1
- package/dist/transfer/export-okf.js +17 -17
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-nJV23pa3.d.ts → types-cK5LydjL.d.ts} +5 -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 +17 -17
- package/dist/who-knows-cli.d.ts +13 -13
- package/dist/who-knows-cli.js +18 -18
- package/dist/who-knows.d.ts +13 -13
- package/dist/who-knows.js +17 -17
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +12 -2
- package/src/access-http.ts +1 -1
- package/src/access-mcp-shared-context-tools.ts +103 -0
- package/src/access-mcp.ts +4 -74
- package/src/access-operations-batch.ts +45 -2
- package/src/access-service.ts +14 -7
- package/src/activity/timeline/regenerate.test.ts +48 -0
- package/src/activity/timeline/regenerate.ts +7 -5
- package/src/cli/deep-recall-commands.ts +22 -10
- package/src/config.ts +5 -0
- package/src/dedup/merge.test.ts +283 -0
- package/src/deep-recall-boundary.test.ts +66 -0
- package/src/deep-recall-cli.test.ts +82 -0
- package/src/deep-recall-config.test.ts +56 -0
- package/src/deep-recall-config.ts +32 -0
- package/src/deep-recall-http-glue.ts +10 -10
- package/src/deep-recall-policy-llm.test.ts +242 -0
- package/src/deep-recall-policy-llm.ts +37 -7
- package/src/deep-recall-seeds.test.ts +53 -0
- package/src/deep-recall-seeds.ts +7 -1
- package/src/deep-recall-surface.test.ts +93 -0
- package/src/deep-recall.test.ts +121 -0
- package/src/deep-recall.ts +88 -28
- package/src/fallback-llm-codex-subscription.ts +27 -5
- package/src/fallback-llm.test.ts +120 -0
- package/src/fallback-llm.ts +17 -16
- package/src/meetings/config.test.ts +58 -0
- package/src/orchestration/extraction-persist.ts +1 -1
- package/src/orchestration/recall-entry.ts +15 -1
- package/src/orchestration/recall-internal.ts +1 -0
- package/src/orchestration/recall-section-coordinator.ts +65 -28
- package/src/orchestration/recall-state-view-pipeline.test.ts +8 -2
- package/src/orchestration/semantic-merge-commit-effects.ts +45 -16
- package/src/orchestration/semantic-merge-persist.ts +23 -36
- package/src/providers/codex-subscription.test.ts +127 -0
- package/src/providers/codex-subscription.ts +1 -1
- package/src/recall-state-view-budget.test.ts +424 -0
- package/src/recall-state-view.ts +30 -16
- package/src/shared-context/envelope-io.ts +25 -0
- package/src/shared-context/envelope-wiring.test.ts +4 -2
- package/src/shared-context/manager.ts +1 -0
- package/src/shared-context/write-output-controls.test.ts +192 -0
- package/src/shared-context/write-output-controls.ts +72 -0
- package/src/source-attribution.test.ts +39 -0
- package/src/source-attribution.ts +72 -0
- package/src/types.ts +5 -0
- package/dist/chunk-5LYSEZOF.js.map +0 -1
- package/dist/chunk-CARRTDKC.js.map +0 -1
- package/dist/chunk-CC37E3QM.js.map +0 -1
- package/dist/chunk-IS2IDFJP.js.map +0 -1
- package/dist/chunk-KTOXQMW3.js.map +0 -1
- package/dist/chunk-MDIEES23.js.map +0 -1
- package/dist/chunk-OEDW4ER7.js.map +0 -1
- package/dist/chunk-QE6YVNP5.js.map +0 -1
- package/dist/chunk-ROEFLU37.js.map +0 -1
- package/dist/chunk-SFHLQPBF.js.map +0 -1
- package/dist/chunk-SV4Z2S67.js.map +0 -1
- package/dist/chunk-THTF2W7M.js.map +0 -1
- package/dist/chunk-UZ6JYPJ6.js.map +0 -1
- package/dist/chunk-YTK5MVNF.js.map +0 -1
- package/dist/chunk-ZRMMXWYI.js.map +0 -1
- /package/dist/{capsule-crypto-7FJQINUR.js.map → access-mcp-shared-context-tools.js.map} +0 -0
- /package/dist/{auto-sync-D6BAPIJV.js.map → auto-sync-7PGUFY7U.js.map} +0 -0
- /package/dist/{contradiction-scan-BSGKZHYJ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
- /package/dist/{capsule-merge-IPG4IOFP.js.map → capsule-merge-3MNURAQ3.js.map} +0 -0
- /package/dist/{chunk-VHKXRYQN.js.map → chunk-2HQPE2NM.js.map} +0 -0
- /package/dist/{chunk-RDLPFM7I.js.map → chunk-2ZG2LLZT.js.map} +0 -0
- /package/dist/{chunk-IMBQFHRV.js.map → chunk-3BLHPQHT.js.map} +0 -0
- /package/dist/{chunk-6L2II3KS.js.map → chunk-3D75XIYO.js.map} +0 -0
- /package/dist/{chunk-J272ODKJ.js.map → chunk-42DJ235G.js.map} +0 -0
- /package/dist/{chunk-RJQAP333.js.map → chunk-46RII65S.js.map} +0 -0
- /package/dist/{chunk-JUDT33RX.js.map → chunk-4AX5OYKC.js.map} +0 -0
- /package/dist/{chunk-GSSDHAYH.js.map → chunk-4IGOLIWM.js.map} +0 -0
- /package/dist/{chunk-4CMXI55L.js.map → chunk-54QPOE45.js.map} +0 -0
- /package/dist/{chunk-LKFVVN7R.js.map → chunk-563X6JJX.js.map} +0 -0
- /package/dist/{chunk-VQWBUPSJ.js.map → chunk-5EQT62HH.js.map} +0 -0
- /package/dist/{chunk-BYQX4IOG.js.map → chunk-6MQMYXSQ.js.map} +0 -0
- /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
- /package/dist/{chunk-K75A5XWU.js.map → chunk-7ZLC4DTZ.js.map} +0 -0
- /package/dist/{chunk-7Z54NXVS.js.map → chunk-A4OIJYCV.js.map} +0 -0
- /package/dist/{chunk-QS5Q5RBV.js.map → chunk-AFJHNHAM.js.map} +0 -0
- /package/dist/{chunk-TZ44E732.js.map → chunk-AIVRD66I.js.map} +0 -0
- /package/dist/{chunk-IOPIGX7Y.js.map → chunk-AKABVXFS.js.map} +0 -0
- /package/dist/{chunk-KOTG3RXE.js.map → chunk-AUSRUOMQ.js.map} +0 -0
- /package/dist/{chunk-K4A6UVPB.js.map → chunk-BTPCP535.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
- /package/dist/{chunk-TEMKBSV6.js.map → chunk-C3G6MW4W.js.map} +0 -0
- /package/dist/{chunk-3QEVOQF5.js.map → chunk-D6PY63OM.js.map} +0 -0
- /package/dist/{chunk-DFVSJFHK.js.map → chunk-DBB5JPSL.js.map} +0 -0
- /package/dist/{chunk-HJUP3K6L.js.map → chunk-DIXZQTGY.js.map} +0 -0
- /package/dist/{chunk-ZX3AYNNV.js.map → chunk-DM5CU5J7.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
- /package/dist/{chunk-BGRTZOJB.js.map → chunk-E3I3NDUP.js.map} +0 -0
- /package/dist/{chunk-ZAEPD4C2.js.map → chunk-E4LMQTST.js.map} +0 -0
- /package/dist/{chunk-7D6SER6A.js.map → chunk-EMSYMYXO.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-V2ZA4YWE.js.map → chunk-F5H6YG5P.js.map} +0 -0
- /package/dist/{chunk-ZMWSYUUL.js.map → chunk-GCBIXUPT.js.map} +0 -0
- /package/dist/{chunk-LFVZD5EC.js.map → chunk-GWNSKQDA.js.map} +0 -0
- /package/dist/{chunk-JDX2OA4R.js.map → chunk-HNHIHXSD.js.map} +0 -0
- /package/dist/{chunk-2SNCQHJZ.js.map → chunk-I33QYUAF.js.map} +0 -0
- /package/dist/{chunk-MVG3KXON.js.map → chunk-ICN37XHG.js.map} +0 -0
- /package/dist/{chunk-ICNJ6J46.js.map → chunk-IYIPXAIJ.js.map} +0 -0
- /package/dist/{chunk-AEOOGXMQ.js.map → chunk-J2MGTGKC.js.map} +0 -0
- /package/dist/{chunk-5U7K4W6K.js.map → chunk-JDOBQPJY.js.map} +0 -0
- /package/dist/{chunk-NVVZPBKI.js.map → chunk-JMWUPUE6.js.map} +0 -0
- /package/dist/{chunk-QPVNK2VE.js.map → chunk-JSD7Q7LD.js.map} +0 -0
- /package/dist/{chunk-RLU2Y5GV.js.map → chunk-K5D2XVNN.js.map} +0 -0
- /package/dist/{chunk-YTZN2UZO.js.map → chunk-KJLLPG26.js.map} +0 -0
- /package/dist/{chunk-2SKMZUOW.js.map → chunk-KLUC2GSG.js.map} +0 -0
- /package/dist/{chunk-YRIFXXMI.js.map → chunk-KZJM7R4F.js.map} +0 -0
- /package/dist/{chunk-46Z3VGWF.js.map → chunk-LE2KZ72G.js.map} +0 -0
- /package/dist/{chunk-HIP6DKJJ.js.map → chunk-LQVXSRAJ.js.map} +0 -0
- /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
- /package/dist/{chunk-PKUJNICO.js.map → chunk-ND7MAIJC.js.map} +0 -0
- /package/dist/{chunk-W23JARAQ.js.map → chunk-P66QH6R6.js.map} +0 -0
- /package/dist/{chunk-62D2PAAM.js.map → chunk-PAAJWQH5.js.map} +0 -0
- /package/dist/{chunk-XM46Y66S.js.map → chunk-PFKIOYJH.js.map} +0 -0
- /package/dist/{chunk-C5R73BON.js.map → chunk-PGGPRF6J.js.map} +0 -0
- /package/dist/{chunk-V6EGNVUT.js.map → chunk-PIWFNPQT.js.map} +0 -0
- /package/dist/{chunk-JOP7W24J.js.map → chunk-PLJ2MQFT.js.map} +0 -0
- /package/dist/{chunk-MJC7UKH7.js.map → chunk-PQ42DJNG.js.map} +0 -0
- /package/dist/{chunk-37CAEC7E.js.map → chunk-PWPIERBM.js.map} +0 -0
- /package/dist/{chunk-BXIJSPCL.js.map → chunk-Q62GA5U2.js.map} +0 -0
- /package/dist/{chunk-VKWFNPBH.js.map → chunk-RQQO3ORQ.js.map} +0 -0
- /package/dist/{chunk-ES5BUPYB.js.map → chunk-UZGHKD3T.js.map} +0 -0
- /package/dist/{chunk-J4WGTN2N.js.map → chunk-V62YYBBY.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
- /package/dist/{chunk-Z4GUX2M6.js.map → chunk-VSN2DMQK.js.map} +0 -0
- /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
- /package/dist/{chunk-KY236SP5.js.map → chunk-W7UV2ZCA.js.map} +0 -0
- /package/dist/{chunk-TO36VPZI.js.map → chunk-WBQ4ONQJ.js.map} +0 -0
- /package/dist/{chunk-WZYHPAG5.js.map → chunk-WFMQN7JE.js.map} +0 -0
- /package/dist/{chunk-G2XZFGYN.js.map → chunk-WGZHSQDV.js.map} +0 -0
- /package/dist/{chunk-SUEOG2S4.js.map → chunk-WPGA4RYI.js.map} +0 -0
- /package/dist/{chunk-J7FVMLBR.js.map → chunk-WZIO3TW6.js.map} +0 -0
- /package/dist/{chunk-ZZUVBZL2.js.map → chunk-X2QPKLPL.js.map} +0 -0
- /package/dist/{chunk-JAJIMTFB.js.map → chunk-XRS65T4O.js.map} +0 -0
- /package/dist/{chunk-GO5LOHCD.js.map → chunk-YFXAWGMR.js.map} +0 -0
- /package/dist/{chunk-K4JKAXMO.js.map → chunk-Z535ADTC.js.map} +0 -0
- /package/dist/{chunk-23HFXQ5J.js.map → chunk-Z7NBT6AK.js.map} +0 -0
- /package/dist/{chunk-VQYWKCDR.js.map → chunk-ZX6NNFSY.js.map} +0 -0
- /package/dist/{chunk-3XPN7AVY.js.map → chunk-ZYSOT6HD.js.map} +0 -0
- /package/dist/{chunk-ZZCR2QYL.js.map → chunk-ZZEIL3MI.js.map} +0 -0
- /package/dist/{resolution-4GG3QZRJ.js.map → contradiction-scan-GVD4JJ7B.js.map} +0 -0
- /package/dist/{first-start-migration-ZWMV5CX4.js.map → first-start-migration-L3UFX5CU.js.map} +0 -0
- /package/dist/{tier-stats-LUSUUNU6.js.map → tier-stats-VK5PCO2L.js.map} +0 -0
|
@@ -27,6 +27,13 @@ export interface RecallSectionAppendOptions {
|
|
|
27
27
|
memoryId?: string;
|
|
28
28
|
memoryPath?: string;
|
|
29
29
|
memoryNamespace?: string;
|
|
30
|
+
/**
|
|
31
|
+
* #2928 — state-view packet key (canonical `stateViewPacketKeys` root).
|
|
32
|
+
* Atomic chunks sharing a packetKey are ONE evidence packet: the final
|
|
33
|
+
* budget admits or drops them together, so a historical row can never
|
|
34
|
+
* render without its linked successor. Absent on non-state rows.
|
|
35
|
+
*/
|
|
36
|
+
packetKey?: string;
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
export interface RecallSectionChunk {
|
|
@@ -35,6 +42,7 @@ export interface RecallSectionChunk {
|
|
|
35
42
|
memoryId?: string;
|
|
36
43
|
memoryPath?: string;
|
|
37
44
|
memoryNamespace?: string;
|
|
45
|
+
packetKey?: string;
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
export type RecallSectionBuckets = Map<
|
|
@@ -160,6 +168,7 @@ export class RecallSectionCoordinator {
|
|
|
160
168
|
...(options.memoryNamespace
|
|
161
169
|
? { memoryNamespace: options.memoryNamespace }
|
|
162
170
|
: {}),
|
|
171
|
+
...(options.packetKey ? { packetKey: options.packetKey } : {}),
|
|
163
172
|
});
|
|
164
173
|
} else {
|
|
165
174
|
existing.push(finalContent);
|
|
@@ -454,15 +463,55 @@ export class RecallSectionCoordinator {
|
|
|
454
463
|
let includedPostAtomicContent = false;
|
|
455
464
|
const postAtomicContents: string[] = [];
|
|
456
465
|
let includedLeadingContent = false;
|
|
466
|
+
// #2928 — state-view packets: atomic chunks sharing a packetKey are
|
|
467
|
+
// ONE evidence packet (a historical row plus its linked successor).
|
|
468
|
+
// The packet renders as a block at the FIRST member's position,
|
|
469
|
+
// members in incoming order, and is admitted or dropped together —
|
|
470
|
+
// the final character/token budget can never emit one side alone.
|
|
471
|
+
// Chunks without a packetKey keep the pre-#2928 per-row behavior.
|
|
472
|
+
const packetFirstIndex = new Map<string, number>();
|
|
473
|
+
const packetMembers = new Map<number, number[]>();
|
|
457
474
|
for (const [index, chunk] of section.chunks.entries()) {
|
|
475
|
+
if (!chunk.atomic || !chunk.packetKey) continue;
|
|
476
|
+
const first = packetFirstIndex.get(chunk.packetKey);
|
|
477
|
+
if (first === undefined) {
|
|
478
|
+
packetFirstIndex.set(chunk.packetKey, index);
|
|
479
|
+
packetMembers.set(index, [index]);
|
|
480
|
+
} else {
|
|
481
|
+
packetMembers.get(first)!.push(index);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
const admitMemoryRefs = (memberIndexes: readonly number[]): void => {
|
|
485
|
+
for (const memberIndex of memberIndexes) {
|
|
486
|
+
const member = section.chunks[memberIndex]!;
|
|
487
|
+
if (member.memoryId && member.memoryPath) {
|
|
488
|
+
includedMemories.push(
|
|
489
|
+
member.memoryNamespace
|
|
490
|
+
? { id: member.memoryId, path: member.memoryPath, namespace: member.memoryNamespace }
|
|
491
|
+
: { id: member.memoryId, path: member.memoryPath },
|
|
492
|
+
);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
for (const [index, chunk] of section.chunks.entries()) {
|
|
497
|
+
const members = chunk.atomic ? packetMembers.get(index) : undefined;
|
|
498
|
+
if (chunk.atomic && chunk.packetKey && members === undefined) {
|
|
499
|
+
// Non-first packet member: decided with its block at the first
|
|
500
|
+
// member's position — never admitted alone (#2928).
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
const memberIndexes = members ?? [index];
|
|
504
|
+
const content = members
|
|
505
|
+
? members.map((memberIndex) => section.chunks[memberIndex]!.content).join("\n\n")
|
|
506
|
+
: chunk.content;
|
|
458
507
|
if (
|
|
459
508
|
!chunk.atomic &&
|
|
460
509
|
includedAtomicCount === 0 &&
|
|
461
510
|
index < firstAtomicIndex
|
|
462
511
|
) {
|
|
463
512
|
const candidate = rendered
|
|
464
|
-
? `${rendered}\n\n${
|
|
465
|
-
:
|
|
513
|
+
? `${rendered}\n\n${content}`
|
|
514
|
+
: content;
|
|
466
515
|
if (
|
|
467
516
|
candidate.length <= allocatedSectionAvailable &&
|
|
468
517
|
estimateTokenCount(candidate) <= allocatedTokenAvailable
|
|
@@ -476,8 +525,8 @@ export class RecallSectionCoordinator {
|
|
|
476
525
|
}
|
|
477
526
|
|
|
478
527
|
const candidate = rendered
|
|
479
|
-
? `${rendered}\n\n${
|
|
480
|
-
:
|
|
528
|
+
? `${rendered}\n\n${content}`
|
|
529
|
+
: content;
|
|
481
530
|
if (
|
|
482
531
|
candidate.length > allocatedSectionAvailable ||
|
|
483
532
|
estimateTokenCount(candidate) > allocatedTokenAvailable
|
|
@@ -486,32 +535,26 @@ export class RecallSectionCoordinator {
|
|
|
486
535
|
chunk.atomic &&
|
|
487
536
|
includedAtomicCount === 0 &&
|
|
488
537
|
includedLeadingContent &&
|
|
489
|
-
|
|
490
|
-
estimateTokenCount(
|
|
538
|
+
content.length <= allocatedSectionAvailable &&
|
|
539
|
+
estimateTokenCount(content) <= allocatedTokenAvailable
|
|
491
540
|
) {
|
|
492
|
-
rendered =
|
|
541
|
+
rendered = content;
|
|
493
542
|
includedLeadingContent = false;
|
|
494
|
-
includedAtomicCount
|
|
495
|
-
|
|
496
|
-
includedMemories.push(
|
|
497
|
-
chunk.memoryNamespace
|
|
498
|
-
? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
|
|
499
|
-
: { id: chunk.memoryId, path: chunk.memoryPath },
|
|
500
|
-
);
|
|
501
|
-
}
|
|
543
|
+
includedAtomicCount += memberIndexes.length;
|
|
544
|
+
admitMemoryRefs(memberIndexes);
|
|
502
545
|
continue;
|
|
503
546
|
}
|
|
504
547
|
if (
|
|
505
548
|
!chunk.atomic &&
|
|
506
549
|
includedAtomicCount === 0 &&
|
|
507
550
|
includedLeadingContent &&
|
|
508
|
-
|
|
509
|
-
estimateTokenCount(
|
|
551
|
+
content.length <= allocatedSectionAvailable &&
|
|
552
|
+
estimateTokenCount(content) <= allocatedTokenAvailable
|
|
510
553
|
) {
|
|
511
|
-
rendered =
|
|
554
|
+
rendered = content;
|
|
512
555
|
includedLeadingContent = false;
|
|
513
556
|
includedPostAtomicContent = true;
|
|
514
|
-
postAtomicContents.push(
|
|
557
|
+
postAtomicContents.push(content);
|
|
515
558
|
continue;
|
|
516
559
|
}
|
|
517
560
|
truncated = true;
|
|
@@ -520,17 +563,11 @@ export class RecallSectionCoordinator {
|
|
|
520
563
|
|
|
521
564
|
rendered = candidate;
|
|
522
565
|
if (chunk.atomic) {
|
|
523
|
-
includedAtomicCount +=
|
|
524
|
-
|
|
525
|
-
includedMemories.push(
|
|
526
|
-
chunk.memoryNamespace
|
|
527
|
-
? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
|
|
528
|
-
: { id: chunk.memoryId, path: chunk.memoryPath },
|
|
529
|
-
);
|
|
530
|
-
}
|
|
566
|
+
includedAtomicCount += memberIndexes.length;
|
|
567
|
+
admitMemoryRefs(memberIndexes);
|
|
531
568
|
} else {
|
|
532
569
|
includedPostAtomicContent = true;
|
|
533
|
-
postAtomicContents.push(
|
|
570
|
+
postAtomicContents.push(content);
|
|
534
571
|
}
|
|
535
572
|
}
|
|
536
573
|
if (includedAtomicCount === 0) {
|
|
@@ -96,8 +96,14 @@ test("default (stateViewActive unset) keeps filtering superseded — zero-diff b
|
|
|
96
96
|
const explicitOff = coordinator.filterSearchResultsByRecallSafety(results, memories, {
|
|
97
97
|
stateViewActive: false,
|
|
98
98
|
});
|
|
99
|
-
assert.deepEqual(
|
|
100
|
-
|
|
99
|
+
assert.deepEqual(
|
|
100
|
+
baseline.map((r) => r.path),
|
|
101
|
+
[NEW]
|
|
102
|
+
);
|
|
103
|
+
assert.deepEqual(
|
|
104
|
+
explicitOff.map((r) => r.path),
|
|
105
|
+
[NEW]
|
|
106
|
+
);
|
|
101
107
|
// No chain fields leak onto survivors when the view is off.
|
|
102
108
|
assert.equal(baseline[0]?.supersededBy, undefined);
|
|
103
109
|
assert.equal(baseline[0]?.id, undefined);
|
|
@@ -17,8 +17,12 @@ import type { GraphEdge, GraphType } from "../graph.js";
|
|
|
17
17
|
import { readFile } from "node:fs/promises";
|
|
18
18
|
import { removeNodeEdgesForRewrite, rollbackNodeEdgeRewrite } from "../graph-jsonl.js";
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
attachCitation,
|
|
21
|
+
citationTemplateIsDetectable,
|
|
22
|
+
citationTemplatesForMerge,
|
|
23
|
+
lastRecognizedCitationMarker,
|
|
24
|
+
stripRecognizedCitations,
|
|
25
|
+
type CitationContext,
|
|
22
26
|
} from "../source-attribution.js";
|
|
23
27
|
import { resolvePipelineProcessingCapabilities } from "../capabilities.js";
|
|
24
28
|
import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
@@ -328,27 +332,52 @@ export async function rewriteMergedTargetGraphEdges(
|
|
|
328
332
|
}
|
|
329
333
|
}
|
|
330
334
|
|
|
335
|
+
/**
|
|
336
|
+
* Round N+7 (C) + #2916: the citation form of the committed merged body.
|
|
337
|
+
* A liftable incoming marker still wins. The fallback attaches only when
|
|
338
|
+
* the current template can be re-matched later. An already-recognized
|
|
339
|
+
* marker — current, default, or a prior configured format still in
|
|
340
|
+
* history — is left in place so a template change does not duplicate it.
|
|
341
|
+
* All-placeholder templates cannot be stripped, so they are not attached.
|
|
342
|
+
*/
|
|
343
|
+
export function committedMergedBody(
|
|
344
|
+
deps: ExtractionPersistDeps,
|
|
345
|
+
mergedContent: string,
|
|
346
|
+
incomingCitedContent: string | undefined,
|
|
347
|
+
incomingCitationContext: Omit<CitationContext, "ts"> | undefined,
|
|
348
|
+
nowIso: string,
|
|
349
|
+
): string {
|
|
350
|
+
if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
|
|
351
|
+
return mergedContent;
|
|
352
|
+
}
|
|
353
|
+
const template = deps.config.inlineSourceAttributionFormat;
|
|
354
|
+
const templates = citationTemplatesForMerge(deps.config);
|
|
355
|
+
if (incomingCitedContent !== undefined) {
|
|
356
|
+
const marker = lastRecognizedCitationMarker(incomingCitedContent, templates);
|
|
357
|
+
if (marker) {
|
|
358
|
+
return mergedContent.endsWith(marker) ? mergedContent : `${mergedContent} ${marker}`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (!citationTemplateIsDetectable(template)) return mergedContent;
|
|
362
|
+
if (lastRecognizedCitationMarker(mergedContent, templates)) return mergedContent;
|
|
363
|
+
return attachCitation(
|
|
364
|
+
mergedContent,
|
|
365
|
+
{ ...incomingCitationContext, ts: nowIso },
|
|
366
|
+
template,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
|
|
331
370
|
/**
|
|
332
371
|
* Round N+2 (C) — the canonical RAW pre-citation merged body for hashing.
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
* fact text BEFORE any citation is attached. Hashing the cited body would
|
|
337
|
-
* give the merged record a different identity than the equivalent raw
|
|
338
|
-
* write (checklist #13), so the configured citation form is stripped
|
|
339
|
-
* first, exactly like the write path's `rawChunkedContent`
|
|
340
|
-
* canonicalization. Lives in this sibling (extracted from
|
|
341
|
-
* semantic-merge-persist.ts) so that file stays within its file-size
|
|
342
|
-
* ratchet cap.
|
|
372
|
+
* Strips every recognized citation form (current, default, and any prior
|
|
373
|
+
* configured template still in history). All-placeholder templates are
|
|
374
|
+
* not attached on the merge path, so they never reach this hash input.
|
|
343
375
|
*/
|
|
344
376
|
export function rawPreCitationMergedBody(deps: ExtractionPersistDeps, mergedContent: string): string {
|
|
345
377
|
if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
|
|
346
378
|
return mergedContent;
|
|
347
379
|
}
|
|
348
|
-
|
|
349
|
-
return hasCitationForTemplate(mergedContent, template)
|
|
350
|
-
? stripCitationForTemplate(mergedContent, template)
|
|
351
|
-
: mergedContent;
|
|
380
|
+
return stripRecognizedCitations(mergedContent, citationTemplatesForMerge(deps.config));
|
|
352
381
|
}
|
|
353
382
|
|
|
354
383
|
/**
|
|
@@ -28,6 +28,7 @@ import { sanitizeMemoryContent } from "../sanitize.js";
|
|
|
28
28
|
import { ContentHashIndex } from "../storage/content-hash-index.js";
|
|
29
29
|
import type { VersioningConfig } from "../page-versioning.js";
|
|
30
30
|
import {
|
|
31
|
+
committedMergedBody,
|
|
31
32
|
committedMergedFactHash,
|
|
32
33
|
discardMergedTargetSnapshot,
|
|
33
34
|
finalizeMergedVersionPrune,
|
|
@@ -57,13 +58,10 @@ import { REFUSED_MERGE_CATEGORIES } from "../dedup/merge-on-write.js";
|
|
|
57
58
|
import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
58
59
|
import { inferIntentFromText } from "../intent.js";
|
|
59
60
|
import {
|
|
60
|
-
|
|
61
|
-
lastCitationMarkerForTemplate,
|
|
62
|
-
stripCitationForTemplate,
|
|
61
|
+
type CitationContext,
|
|
63
62
|
} from "../source-attribution.js";
|
|
64
63
|
import {
|
|
65
64
|
resolveConversationContextCapabilities,
|
|
66
|
-
resolvePipelineProcessingCapabilities,
|
|
67
65
|
resolvePresentationCapabilities,
|
|
68
66
|
resolveRecallAuxiliaryCapabilities,
|
|
69
67
|
type GraphConstructionCapabilitySet,
|
|
@@ -225,6 +223,14 @@ export interface ApplySemanticMergeOptions {
|
|
|
225
223
|
* Absent (or citation-free) commits the judge's merged body unchanged.
|
|
226
224
|
*/
|
|
227
225
|
incomingCitedContent?: string;
|
|
226
|
+
/**
|
|
227
|
+
* #2916: the citation context of THIS write (agent/session) — the same
|
|
228
|
+
* base a fresh attributed write stamps. When no incoming citation marker
|
|
229
|
+
* is liftable, the committed merged body still receives the configured
|
|
230
|
+
* inline-attribution transform exactly as a fresh attributed write would,
|
|
231
|
+
* stamped with this context and the merge's commit timestamp.
|
|
232
|
+
*/
|
|
233
|
+
incomingCitationContext?: Omit<CitationContext, "ts">;
|
|
228
234
|
/**
|
|
229
235
|
* Finding C: async probe run after a merge verdict but before any
|
|
230
236
|
* mutation. True when the would-be target already has promoted
|
|
@@ -470,33 +476,6 @@ export function createPathMergeParity(input: {
|
|
|
470
476
|
};
|
|
471
477
|
}
|
|
472
478
|
|
|
473
|
-
/**
|
|
474
|
-
* Round N+7 (C): the committed merged body carries the incoming extraction's
|
|
475
|
-
* citation marker (lifted from the caller's cited body for this write)
|
|
476
|
-
* appended after the judge's merged text, so incoming claims stay attributed
|
|
477
|
-
* even when the merged text embeds the target's older citation — quoted
|
|
478
|
-
* excerpts travel without frontmatter, so `sources` alone is not enough.
|
|
479
|
-
* Idempotent; a no-op when attribution is off or no marker exists.
|
|
480
|
-
*/
|
|
481
|
-
function committedMergedBody(
|
|
482
|
-
deps: ExtractionPersistDeps,
|
|
483
|
-
mergedContent: string,
|
|
484
|
-
incomingCitedContent: string | undefined,
|
|
485
|
-
): string {
|
|
486
|
-
if (
|
|
487
|
-
resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true ||
|
|
488
|
-
incomingCitedContent === undefined
|
|
489
|
-
) {
|
|
490
|
-
return mergedContent;
|
|
491
|
-
}
|
|
492
|
-
const marker = lastCitationMarkerForTemplate(
|
|
493
|
-
incomingCitedContent,
|
|
494
|
-
deps.config.inlineSourceAttributionFormat,
|
|
495
|
-
);
|
|
496
|
-
if (!marker || mergedContent.endsWith(marker)) return mergedContent;
|
|
497
|
-
return `${mergedContent} ${marker}`;
|
|
498
|
-
}
|
|
499
|
-
|
|
500
479
|
function versioningConfigFrom(deps: ExtractionPersistDeps): VersioningConfig {
|
|
501
480
|
return {
|
|
502
481
|
enabled: resolveRecallAuxiliaryCapabilities(deps.config).versioning,
|
|
@@ -611,10 +590,19 @@ export async function applySemanticMergeAtPersist(
|
|
|
611
590
|
if (target.content !== decision.targetContent) {
|
|
612
591
|
return { action: "created", reason: "target_changed" };
|
|
613
592
|
}
|
|
614
|
-
// Round N+7 (C): every mutation below commits THIS body — the
|
|
615
|
-
// merged text
|
|
616
|
-
//
|
|
617
|
-
|
|
593
|
+
// Round N+7 (C) + #2916: every mutation below commits THIS body — the
|
|
594
|
+
// judge's merged text in its cited form (the incoming marker when one is
|
|
595
|
+
// liftable, else the configured transform as a fresh attributed write
|
|
596
|
+
// applies it) — and the outcome reports it, so caller comparisons
|
|
597
|
+
// describe what storage actually holds.
|
|
598
|
+
const nowIso = (options.now ? options.now() : new Date()).toISOString();
|
|
599
|
+
const committedContent = committedMergedBody(
|
|
600
|
+
deps,
|
|
601
|
+
decision.mergedContent,
|
|
602
|
+
options.incomingCitedContent,
|
|
603
|
+
options.incomingCitationContext,
|
|
604
|
+
nowIso,
|
|
605
|
+
);
|
|
618
606
|
|
|
619
607
|
// Create-path parity gate (final round) — ONE place enumerates every
|
|
620
608
|
// trust/scope/verdict field the normal write stamps and bypasses the
|
|
@@ -714,7 +702,6 @@ export async function applySemanticMergeAtPersist(
|
|
|
714
702
|
// snapshot just read: a writer landing between the read and the write must
|
|
715
703
|
// win rather than be overwritten from a stale body. The active-target check
|
|
716
704
|
// above makes a tombstone block structurally impossible here.
|
|
717
|
-
const nowIso = (options.now ? options.now() : new Date()).toISOString();
|
|
718
705
|
let casRevision: string | undefined; // #2813 (P1): OUR content CAS's receipt — feeds the patch stamp below and the catch's rollback comparison
|
|
719
706
|
let mergePatch: MergeFrontmatterUpdate | undefined;
|
|
720
707
|
try {
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
CodexSubscriptionConfigError,
|
|
15
15
|
CodexSubscriptionTimeoutError,
|
|
16
16
|
type CodexSubscriptionExecRequest,
|
|
17
|
+
type CodexSubscriptionExecResult,
|
|
17
18
|
__codexSubscriptionTestHooks,
|
|
18
19
|
createCodexSubscriptionRunner,
|
|
19
20
|
ensureCodexSubscriptionRunnerRegistered,
|
|
@@ -781,6 +782,63 @@ test("caller abort reaches the cold login check: no spawn when pre-aborted, wait
|
|
|
781
782
|
await assert.rejects(fresh, (error: unknown) => error === freshReason);
|
|
782
783
|
});
|
|
783
784
|
|
|
785
|
+
test("last waiter out aborts the shared login subprocess; earlier leavers do not", async () => {
|
|
786
|
+
__codexSubscriptionTestHooks.resetLoginStatusCache();
|
|
787
|
+
let loginCalls = 0;
|
|
788
|
+
const loginSignals: AbortSignal[] = [];
|
|
789
|
+
let resolveSecondLogin:
|
|
790
|
+
| ((value: { status: number | null; stdout: string; stderr: string }) => void)
|
|
791
|
+
| undefined;
|
|
792
|
+
const runner = createCodexSubscriptionRunner({
|
|
793
|
+
env: { HOME: "/home/alice", PATH: "/usr/bin:/bin" },
|
|
794
|
+
now: () => 0,
|
|
795
|
+
runLoginStatus: (_executable, _env, _timeoutMs, signal) => {
|
|
796
|
+
loginCalls++;
|
|
797
|
+
loginSignals.push(signal!);
|
|
798
|
+
const pending = Promise.withResolvers<{ status: number | null; stdout: string; stderr: string }>();
|
|
799
|
+
if (loginCalls === 2) resolveSecondLogin = pending.resolve;
|
|
800
|
+
signal?.addEventListener("abort", () =>
|
|
801
|
+
pending.resolve({ status: 1, stdout: "", stderr: "terminated" })
|
|
802
|
+
);
|
|
803
|
+
return pending.promise;
|
|
804
|
+
},
|
|
805
|
+
runCodexExec: async () => ({ status: 0, stdout: "", stderr: "", outputText: "ok" }),
|
|
806
|
+
});
|
|
807
|
+
const call = (signal?: AbortSignal) =>
|
|
808
|
+
runner({
|
|
809
|
+
config: { executable: "codex-fake" },
|
|
810
|
+
modelId: "gpt-5.6-luna",
|
|
811
|
+
messages: [{ role: "user", content: "hi" }],
|
|
812
|
+
options: { timeoutMs: 60_000, ...(signal ? { signal } : {}) },
|
|
813
|
+
});
|
|
814
|
+
|
|
815
|
+
const a = new AbortController();
|
|
816
|
+
const b = new AbortController();
|
|
817
|
+
const aReason = new Error("A left first");
|
|
818
|
+
const bReason = new Error("B left last");
|
|
819
|
+
const first = call(a.signal);
|
|
820
|
+
await flushLoop();
|
|
821
|
+
assert.equal(loginCalls, 1);
|
|
822
|
+
const second = call(b.signal);
|
|
823
|
+
await flushLoop();
|
|
824
|
+
assert.equal(loginCalls, 1, "second caller shares the in-flight check");
|
|
825
|
+
|
|
826
|
+
a.abort(aReason);
|
|
827
|
+
await assert.rejects(first, (error: unknown) => error === aReason);
|
|
828
|
+
assert.equal(loginSignals[0].aborted, false, "one waiter leaving must not cancel the shared check");
|
|
829
|
+
|
|
830
|
+
b.abort(bReason);
|
|
831
|
+
await assert.rejects(second, (error: unknown) => error === bReason);
|
|
832
|
+
await flushLoop();
|
|
833
|
+
assert.ok(loginSignals[0].aborted, "the last waiter leaving aborts the login subprocess");
|
|
834
|
+
|
|
835
|
+
// The aborted entry is dropped: the next caller starts a fresh check.
|
|
836
|
+
const fresh = call();
|
|
837
|
+
await flushLoop();
|
|
838
|
+
assert.equal(loginCalls, 2);
|
|
839
|
+
resolveSecondLogin?.({ status: 0, stdout: "Logged in using ChatGPT\n", stderr: "" });
|
|
840
|
+
assert.equal((await fresh).content, "ok");
|
|
841
|
+
});
|
|
784
842
|
test("codex-subscription apiKey and SecretRef are rejected before secret resolution", { concurrency: false }, async () => {
|
|
785
843
|
clearModelsJsonCache();
|
|
786
844
|
clearSecretCache();
|
|
@@ -1184,6 +1242,75 @@ test(
|
|
|
1184
1242
|
}
|
|
1185
1243
|
);
|
|
1186
1244
|
|
|
1245
|
+
test(
|
|
1246
|
+
"typed provider timeout still wins when the provider settles just past the outer deadline",
|
|
1247
|
+
{ concurrency: false },
|
|
1248
|
+
async () => {
|
|
1249
|
+
clearModelsJsonCache();
|
|
1250
|
+
clearSecretCache();
|
|
1251
|
+
__codexSubscriptionTestHooks.resetLoginStatusCache();
|
|
1252
|
+
__codexSubscriptionTestHooks.resetCoreRunnerRegistered();
|
|
1253
|
+
const runner = createCodexSubscriptionRunner({
|
|
1254
|
+
env: { HOME: "/home/alice", PATH: "/usr/bin:/bin" },
|
|
1255
|
+
now: () => 0,
|
|
1256
|
+
runLoginStatus: async () => ({ status: 0, stdout: "Logged in using ChatGPT\n", stderr: "" }),
|
|
1257
|
+
// Real timer by design: the deadline race is wall-clock behavior. The
|
|
1258
|
+
// exec "child" ignores the abort signal (like one already mid-close)
|
|
1259
|
+
// and settles 35ms after its own 475ms budget — past the caller's
|
|
1260
|
+
// 500ms deadline but inside the 25ms settle grace (T=500 -> 25 headroom).
|
|
1261
|
+
runCodexExec: (request) => {
|
|
1262
|
+
const execTimeoutMs = request.timeoutMs;
|
|
1263
|
+
if (execTimeoutMs === undefined) {
|
|
1264
|
+
throw new Error("expected timeoutMs");
|
|
1265
|
+
}
|
|
1266
|
+
const { promise, resolve } = Promise.withResolvers<CodexSubscriptionExecResult>();
|
|
1267
|
+
setTimeout(
|
|
1268
|
+
() =>
|
|
1269
|
+
resolve({
|
|
1270
|
+
status: 124,
|
|
1271
|
+
stdout: "",
|
|
1272
|
+
stderr: `codex-subscription: exec timed out after ${execTimeoutMs}ms.\n`,
|
|
1273
|
+
outputText: "",
|
|
1274
|
+
}),
|
|
1275
|
+
execTimeoutMs + 35,
|
|
1276
|
+
);
|
|
1277
|
+
return promise;
|
|
1278
|
+
},
|
|
1279
|
+
});
|
|
1280
|
+
const restore = setCodexCliFallbackRunnerForProcess(runner);
|
|
1281
|
+
try {
|
|
1282
|
+
const llm = new FallbackLlmClient({
|
|
1283
|
+
agents: { defaults: { model: { primary: `${CODEX_SUBSCRIPTION_PROVIDER_ID}/gpt-5.6-luna` } } },
|
|
1284
|
+
models: {
|
|
1285
|
+
providers: {
|
|
1286
|
+
[CODEX_SUBSCRIPTION_PROVIDER_ID]: {
|
|
1287
|
+
baseUrl: "codex-cli://subscription",
|
|
1288
|
+
api: "codex-cli",
|
|
1289
|
+
models: [],
|
|
1290
|
+
},
|
|
1291
|
+
},
|
|
1292
|
+
},
|
|
1293
|
+
});
|
|
1294
|
+
const startedAt = Date.now();
|
|
1295
|
+
await assert.rejects(
|
|
1296
|
+
llm.chatCompletion([{ role: "user", content: "hi" }], { timeoutMs: 500 }),
|
|
1297
|
+
(error: unknown) => {
|
|
1298
|
+
assert.ok(error instanceof CodexSubscriptionTimeoutError, `expected timeout, got: ${error}`);
|
|
1299
|
+
assert.equal(error.name, "TimeoutError");
|
|
1300
|
+
return true;
|
|
1301
|
+
}
|
|
1302
|
+
);
|
|
1303
|
+
assert.ok(
|
|
1304
|
+
Date.now() - startedAt < 1_400,
|
|
1305
|
+
"typed timeout must surface within the settle grace, not wait for the provider forever"
|
|
1306
|
+
);
|
|
1307
|
+
} finally {
|
|
1308
|
+
restore();
|
|
1309
|
+
clearModelsJsonCache();
|
|
1310
|
+
clearSecretCache();
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
);
|
|
1187
1314
|
test("concurrent callers share one in-flight login when auth.json already exists", async () => {
|
|
1188
1315
|
__codexSubscriptionTestHooks.resetLoginStatusCache();
|
|
1189
1316
|
const home = await mkdtemp(path.join(os.tmpdir(), "remnic-codex-home-"));
|
|
@@ -284,7 +284,6 @@ export function isDefaultRegisteredCodexSubscriptionRunner(): boolean {
|
|
|
284
284
|
return defaultRegisteredRunner !== undefined
|
|
285
285
|
&& getCodexCliFallbackRunnerForProcess() === defaultRegisteredRunner;
|
|
286
286
|
}
|
|
287
|
-
|
|
288
287
|
/** Host shutdown hook: terminate this runtime's detached Codex children. Does not exit. */
|
|
289
288
|
export function terminateActiveCodexSubscriptionChildren(
|
|
290
289
|
signal: NodeJS.Signals = "SIGTERM",
|
|
@@ -491,6 +490,7 @@ async function assertSubscriptionLogin(
|
|
|
491
490
|
await waitForLoginEntry(cached, cacheKey, ctx, now);
|
|
492
491
|
return;
|
|
493
492
|
}
|
|
493
|
+
|
|
494
494
|
}
|
|
495
495
|
loginStatusCache.delete(cacheKey);
|
|
496
496
|
if (ctx.signal?.aborted) {
|