@remnic/core 9.69.16 → 9.69.17
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 +1 -1
- package/dist/access-admin-ops-surface.js +43 -39
- package/dist/access-authorization-probe.d.ts +1 -1
- package/dist/access-authorization-probe.js +44 -40
- package/dist/access-boundary.d.ts +1 -1
- package/dist/access-boundary.js +43 -39
- package/dist/access-cli.js +103 -102
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.d.ts +1 -1
- package/dist/access-extraction-force-flush.js +43 -39
- package/dist/access-http-lcm-compaction.d.ts +1 -1
- package/dist/access-http-lifecycle-flush.d.ts +1 -1
- package/dist/access-http-offline-stream.d.ts +1 -1
- package/dist/access-http-query.js +45 -41
- package/dist/access-http.d.ts +2 -2
- package/dist/access-http.js +63 -59
- package/dist/access-identity-continuity-surface.js +43 -39
- package/dist/access-lcm-surface.d.ts +1 -1
- package/dist/access-lcm-surface.js +43 -39
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +1 -1
- package/dist/access-mcp.js +54 -50
- package/dist/access-namespace-preflight.js +43 -39
- 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 +2 -1
- package/dist/access-observe-write-surface.js +43 -39
- package/dist/access-offline-manifest.js +3 -3
- package/dist/access-operations-batch.js +46 -42
- package/dist/access-operations.d.ts +2 -2
- package/dist/access-operations.js +51 -47
- package/dist/access-recall-concurrency.d.ts +1 -1
- package/dist/access-recall-concurrency.js +43 -39
- package/dist/access-recall-response.d.ts +1 -1
- package/dist/access-recall-response.js +43 -39
- package/dist/access-recall-surface.d.ts +1 -1
- package/dist/access-recall-surface.js +43 -39
- 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-DmDS8Y5P.d.ts} +9 -0
- package/dist/access-service-helpers.d.ts +1 -1
- package/dist/access-service.d.ts +1 -1
- package/dist/access-service.js +43 -39
- package/dist/access-surface-catalog.d.ts +1 -1
- package/dist/access-surface-catalog.js +45 -41
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +6 -6
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/{auto-sync-Q6Q2FVSC.js → auto-sync-GRUJFD2F.js} +3 -3
- package/dist/briefing.js +13 -13
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +15 -15
- package/dist/causal-retrieval.js +2 -2
- 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-AU7Q3LSC.js → chunk-2QSZNTDO.js} +4 -4
- package/dist/{chunk-P6GKRT2H.js → chunk-2Z3DG5CQ.js} +1 -1
- package/dist/{chunk-MSDIETFC.js → chunk-376CEAYL.js} +53 -44
- package/dist/chunk-376CEAYL.js.map +1 -0
- package/dist/{chunk-XMIAU4CO.js → chunk-3ZAZ77WB.js} +2 -2
- package/dist/{chunk-3TSU662L.js → chunk-46QMN7I7.js} +5 -5
- package/dist/{chunk-LF6SHWVV.js → chunk-5CX3NSR7.js} +2 -2
- package/dist/{chunk-QRDSXR3V.js → chunk-5DRBG5U6.js} +2 -2
- package/dist/{chunk-I4QAH4SY.js → chunk-5J36BYRI.js} +3 -3
- package/dist/{chunk-7JV4JST3.js → chunk-5Z6JYMK4.js} +44 -44
- package/dist/{chunk-JGXMA6HL.js → chunk-6FUMA6AA.js} +2 -2
- package/dist/{chunk-K2IJH4D3.js → chunk-7RRUHJPG.js} +7 -7
- package/dist/{chunk-NNBZS3DY.js → chunk-AG46P24C.js} +4 -4
- package/dist/{chunk-QUVWFZOU.js → chunk-AYHPGLG6.js} +2 -2
- package/dist/{chunk-S35IIP5P.js → chunk-B67W7CBL.js} +2 -2
- package/dist/{chunk-OLBZ2WGG.js → chunk-C2JCVZWX.js} +2 -2
- package/dist/{chunk-S5G2LAL7.js → chunk-CHWUICVY.js} +4 -4
- package/dist/{chunk-XQGFIAG7.js → chunk-CM3JBYD4.js} +2 -2
- package/dist/{chunk-F2ERDKY2.js → chunk-CWPVXVIT.js} +16 -16
- package/dist/{chunk-BE4Y6GK6.js → chunk-D35XLYQ7.js} +11 -11
- package/dist/{chunk-P7LVYPIX.js → chunk-DBLVQROL.js} +3 -3
- package/dist/{chunk-5H2G5X4R.js → chunk-DGKQVGLC.js} +3 -3
- package/dist/{chunk-M7DGN6JZ.js → chunk-EQEP23JK.js} +2 -2
- package/dist/{chunk-I6DUKBUI.js → chunk-EYKDBZB3.js} +2 -2
- package/dist/{chunk-LUDXSSTW.js → chunk-FCL6ENLF.js} +2 -2
- package/dist/{chunk-LJAP4KSW.js → chunk-FK2SJX27.js} +2 -2
- package/dist/{chunk-4WIKMOE3.js → chunk-GF7QLY6E.js} +1 -1
- package/dist/{chunk-B64IVEOH.js → chunk-GI726D4G.js} +2 -2
- package/dist/{chunk-NHLEFBE2.js → chunk-I4Y6TBD7.js} +3 -3
- package/dist/{chunk-BO4PWIJY.js → chunk-I672YBXY.js} +3 -3
- package/dist/{chunk-HODFGQGT.js → chunk-IDZU6I4H.js} +2 -2
- package/dist/{chunk-OAKATRAN.js → chunk-IO4OJ73B.js} +10 -10
- package/dist/{chunk-CTCGHNWN.js → chunk-J2R275FN.js} +4 -4
- package/dist/{chunk-C25N5HWX.js → chunk-J6HRJ37H.js} +2 -2
- package/dist/{chunk-XJJYSX6F.js → chunk-JCUG7AXZ.js} +4 -4
- package/dist/{chunk-BX6GW4KC.js → chunk-JMAG7WZ7.js} +2 -2
- package/dist/{chunk-7LCGFUMB.js → chunk-KQAFEZQX.js} +4 -4
- package/dist/{chunk-BEXFNGQ3.js → chunk-LE7B5ETE.js} +3 -3
- package/dist/chunk-LVE64P5Y.js +80 -0
- package/dist/chunk-LVE64P5Y.js.map +1 -0
- package/dist/{chunk-VAMZYOOV.js → chunk-MAIBNEB6.js} +2 -2
- package/dist/{chunk-VYD63IFH.js → chunk-N3DSSCOR.js} +2 -2
- package/dist/{chunk-IEZ6CGTW.js → chunk-N3SS45OW.js} +115 -55
- package/dist/chunk-N3SS45OW.js.map +1 -0
- package/dist/{chunk-SXHBZXHK.js → chunk-NAOAZASM.js} +5 -5
- package/dist/{chunk-3BS2OGDT.js → chunk-NCUODVUI.js} +5 -5
- package/dist/{chunk-63I7LMLG.js → chunk-NISCAOSR.js} +2 -2
- package/dist/{chunk-YWN3GYI2.js → chunk-NYFWBYY4.js} +2 -2
- package/dist/{chunk-BIJAWZYW.js → chunk-OLT3YTDH.js} +4 -4
- package/dist/{chunk-BFDOBESV.js → chunk-QFMFZILG.js} +2 -2
- package/dist/{chunk-G7VEQEMG.js → chunk-QVSRE355.js} +65 -39
- package/dist/chunk-QVSRE355.js.map +1 -0
- package/dist/{chunk-N37X5RU7.js → chunk-RACZB5HT.js} +4 -4
- package/dist/{chunk-5JQV4T5Q.js → chunk-ROHBPMWD.js} +2 -2
- package/dist/{chunk-ZKZCJRRO.js → chunk-S6ZZOFVJ.js} +2 -2
- package/dist/{chunk-KLSPKMIO.js → chunk-SJ5JGIBT.js} +2 -2
- package/dist/{chunk-JHTF22NQ.js → chunk-TA7UZZMW.js} +2 -2
- package/dist/{chunk-2XJDAEAM.js → chunk-V5RWV5DK.js} +5 -5
- package/dist/{chunk-2EHDPHMD.js → chunk-W7M7NKR7.js} +2 -2
- package/dist/{chunk-4UVDLNHQ.js → chunk-WHO6ITU7.js} +2 -2
- package/dist/{chunk-7ZMU4XQT.js → chunk-WMZ6F7GY.js} +2 -2
- package/dist/{chunk-W6GEMUZM.js → chunk-WOEKJPJG.js} +13 -13
- package/dist/{chunk-5YQ7RFSO.js → chunk-WP37SBRE.js} +2 -2
- package/dist/{chunk-RJ57OOCD.js → chunk-X66BHMAU.js} +2 -2
- package/dist/{chunk-W272SWN7.js → chunk-X73YCO3E.js} +6 -6
- package/dist/{chunk-PAWIY5OQ.js → chunk-XAJWPB2V.js} +6 -6
- package/dist/{chunk-QVI63XSO.js → chunk-XR6LLNLU.js} +48 -48
- package/dist/{chunk-GIC6BASP.js → chunk-XZBXINXZ.js} +4 -4
- package/dist/{chunk-APZXA4WI.js → chunk-Y7E5SUZ6.js} +2 -2
- package/dist/{chunk-LDOQE34V.js → chunk-YCJASQMN.js} +2 -2
- package/dist/{chunk-H5IIBGDM.js → chunk-YYE5MKRX.js} +2 -2
- package/dist/{chunk-TRLCMLX7.js → chunk-YYP5GM6J.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/{cli-BI9YYpKx.d.ts → cli-CYQIKncA.d.ts} +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.js +85 -81
- package/dist/coding/export-okf-codegraph.js +12 -12
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.js +12 -12
- package/dist/config.js +6 -6
- package/dist/connectors/codex-materialize-runner.js +12 -12
- package/dist/connectors/index.js +12 -12
- package/dist/convergence-refresh.js +14 -14
- package/dist/conversation-index/backend.js +2 -2
- package/dist/corpus-watermark.js +14 -14
- package/dist/deep-recall-http-glue.d.ts +1 -1
- package/dist/deep-recall-http-glue.js +6 -6
- package/dist/deep-recall-mcp-tools.d.ts +1 -1
- package/dist/deep-recall.js +2 -2
- package/dist/entity-retrieval.js +12 -12
- package/dist/external-wiki-access.d.ts +1 -1
- package/dist/external-wiki-access.js +44 -40
- package/dist/external-wiki-mcp-tools.d.ts +1 -1
- package/dist/extraction.js +15 -15
- 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-snapshot.js +3 -3
- package/dist/graph.js +2 -2
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +119 -118
- package/dist/location/index.js +14 -14
- package/dist/maintenance/memory-governance.js +12 -12
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +12 -12
- package/dist/maintenance/rebuild-memory-projection.js +13 -13
- package/dist/mcp-memory-inspector-app.d.ts +1 -1
- package/dist/memory-subject-cli.d.ts +1 -1
- package/dist/memory-subject.d.ts +1 -1
- package/dist/namespaces/migrate.js +13 -13
- package/dist/namespaces/search.js +9 -9
- package/dist/namespaces/storage.js +12 -12
- package/dist/offline-sync.js +2 -2
- package/dist/operator-doctor-corpus.js +15 -15
- package/dist/operator-toolkit.js +28 -28
- package/dist/orchestration/maintenance.js +20 -20
- package/dist/orchestrator.js +103 -102
- package/dist/{public-http-Bocro5ZU.d.ts → public-http-C_hWt6I8.d.ts} +1 -1
- package/dist/resume-bundles.js +7 -7
- package/dist/search/factory.js +8 -8
- package/dist/search/index.js +13 -13
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/orama-backend.js +2 -2
- package/dist/semantic-consolidation.js +13 -13
- package/dist/semantic-rule-promotion.js +12 -12
- package/dist/semantic-rule-verifier.js +12 -12
- package/dist/source-agent-qualifier.js +12 -12
- package/dist/standup/build.js +12 -12
- package/dist/storage.js +11 -11
- package/dist/summarizer.d.ts +29 -3
- package/dist/summarizer.js +6 -4
- package/dist/support-passport/index.d.ts +4 -4
- package/dist/support-passport/index.js +46 -42
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +13 -13
- package/dist/verified-recall.js +12 -12
- package/dist/who-knows-cli.d.ts +1 -1
- package/dist/who-knows-cli.js +13 -13
- package/dist/who-knows.d.ts +1 -1
- package/dist/who-knows.js +12 -12
- 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/summarizer.ts +217 -111
- package/src/summary-snapshot.test.ts +8 -6
- package/dist/chunk-G7VEQEMG.js.map +0 -1
- package/dist/chunk-IEZ6CGTW.js.map +0 -1
- package/dist/chunk-MSDIETFC.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-AU7Q3LSC.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-P6GKRT2H.js.map → chunk-2Z3DG5CQ.js.map} +0 -0
- /package/dist/{chunk-XMIAU4CO.js.map → chunk-3ZAZ77WB.js.map} +0 -0
- /package/dist/{chunk-3TSU662L.js.map → chunk-46QMN7I7.js.map} +0 -0
- /package/dist/{chunk-LF6SHWVV.js.map → chunk-5CX3NSR7.js.map} +0 -0
- /package/dist/{chunk-QRDSXR3V.js.map → chunk-5DRBG5U6.js.map} +0 -0
- /package/dist/{chunk-I4QAH4SY.js.map → chunk-5J36BYRI.js.map} +0 -0
- /package/dist/{chunk-7JV4JST3.js.map → chunk-5Z6JYMK4.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-NNBZS3DY.js.map → chunk-AG46P24C.js.map} +0 -0
- /package/dist/{chunk-QUVWFZOU.js.map → chunk-AYHPGLG6.js.map} +0 -0
- /package/dist/{chunk-S35IIP5P.js.map → chunk-B67W7CBL.js.map} +0 -0
- /package/dist/{chunk-OLBZ2WGG.js.map → chunk-C2JCVZWX.js.map} +0 -0
- /package/dist/{chunk-S5G2LAL7.js.map → chunk-CHWUICVY.js.map} +0 -0
- /package/dist/{chunk-XQGFIAG7.js.map → chunk-CM3JBYD4.js.map} +0 -0
- /package/dist/{chunk-F2ERDKY2.js.map → chunk-CWPVXVIT.js.map} +0 -0
- /package/dist/{chunk-BE4Y6GK6.js.map → chunk-D35XLYQ7.js.map} +0 -0
- /package/dist/{chunk-P7LVYPIX.js.map → chunk-DBLVQROL.js.map} +0 -0
- /package/dist/{chunk-5H2G5X4R.js.map → chunk-DGKQVGLC.js.map} +0 -0
- /package/dist/{chunk-M7DGN6JZ.js.map → chunk-EQEP23JK.js.map} +0 -0
- /package/dist/{chunk-I6DUKBUI.js.map → chunk-EYKDBZB3.js.map} +0 -0
- /package/dist/{chunk-LUDXSSTW.js.map → chunk-FCL6ENLF.js.map} +0 -0
- /package/dist/{chunk-LJAP4KSW.js.map → chunk-FK2SJX27.js.map} +0 -0
- /package/dist/{chunk-4WIKMOE3.js.map → chunk-GF7QLY6E.js.map} +0 -0
- /package/dist/{chunk-B64IVEOH.js.map → chunk-GI726D4G.js.map} +0 -0
- /package/dist/{chunk-NHLEFBE2.js.map → chunk-I4Y6TBD7.js.map} +0 -0
- /package/dist/{chunk-BO4PWIJY.js.map → chunk-I672YBXY.js.map} +0 -0
- /package/dist/{chunk-HODFGQGT.js.map → chunk-IDZU6I4H.js.map} +0 -0
- /package/dist/{chunk-OAKATRAN.js.map → chunk-IO4OJ73B.js.map} +0 -0
- /package/dist/{chunk-CTCGHNWN.js.map → chunk-J2R275FN.js.map} +0 -0
- /package/dist/{chunk-C25N5HWX.js.map → chunk-J6HRJ37H.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-7LCGFUMB.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-BEXFNGQ3.js.map → chunk-LE7B5ETE.js.map} +0 -0
- /package/dist/{chunk-VAMZYOOV.js.map → chunk-MAIBNEB6.js.map} +0 -0
- /package/dist/{chunk-VYD63IFH.js.map → chunk-N3DSSCOR.js.map} +0 -0
- /package/dist/{chunk-SXHBZXHK.js.map → chunk-NAOAZASM.js.map} +0 -0
- /package/dist/{chunk-3BS2OGDT.js.map → chunk-NCUODVUI.js.map} +0 -0
- /package/dist/{chunk-63I7LMLG.js.map → chunk-NISCAOSR.js.map} +0 -0
- /package/dist/{chunk-YWN3GYI2.js.map → chunk-NYFWBYY4.js.map} +0 -0
- /package/dist/{chunk-BIJAWZYW.js.map → chunk-OLT3YTDH.js.map} +0 -0
- /package/dist/{chunk-BFDOBESV.js.map → chunk-QFMFZILG.js.map} +0 -0
- /package/dist/{chunk-N37X5RU7.js.map → chunk-RACZB5HT.js.map} +0 -0
- /package/dist/{chunk-5JQV4T5Q.js.map → chunk-ROHBPMWD.js.map} +0 -0
- /package/dist/{chunk-ZKZCJRRO.js.map → chunk-S6ZZOFVJ.js.map} +0 -0
- /package/dist/{chunk-KLSPKMIO.js.map → chunk-SJ5JGIBT.js.map} +0 -0
- /package/dist/{chunk-JHTF22NQ.js.map → chunk-TA7UZZMW.js.map} +0 -0
- /package/dist/{chunk-2XJDAEAM.js.map → chunk-V5RWV5DK.js.map} +0 -0
- /package/dist/{chunk-2EHDPHMD.js.map → chunk-W7M7NKR7.js.map} +0 -0
- /package/dist/{chunk-4UVDLNHQ.js.map → chunk-WHO6ITU7.js.map} +0 -0
- /package/dist/{chunk-7ZMU4XQT.js.map → chunk-WMZ6F7GY.js.map} +0 -0
- /package/dist/{chunk-W6GEMUZM.js.map → chunk-WOEKJPJG.js.map} +0 -0
- /package/dist/{chunk-5YQ7RFSO.js.map → chunk-WP37SBRE.js.map} +0 -0
- /package/dist/{chunk-RJ57OOCD.js.map → chunk-X66BHMAU.js.map} +0 -0
- /package/dist/{chunk-W272SWN7.js.map → chunk-X73YCO3E.js.map} +0 -0
- /package/dist/{chunk-PAWIY5OQ.js.map → chunk-XAJWPB2V.js.map} +0 -0
- /package/dist/{chunk-QVI63XSO.js.map → chunk-XR6LLNLU.js.map} +0 -0
- /package/dist/{chunk-GIC6BASP.js.map → chunk-XZBXINXZ.js.map} +0 -0
- /package/dist/{chunk-APZXA4WI.js.map → chunk-Y7E5SUZ6.js.map} +0 -0
- /package/dist/{chunk-LDOQE34V.js.map → chunk-YCJASQMN.js.map} +0 -0
- /package/dist/{chunk-H5IIBGDM.js.map → chunk-YYE5MKRX.js.map} +0 -0
- /package/dist/{chunk-TRLCMLX7.js.map → chunk-YYP5GM6J.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
|
@@ -4,30 +4,30 @@ import {
|
|
|
4
4
|
exportOkfBundle,
|
|
5
5
|
firstHeading,
|
|
6
6
|
parseIncludeStatus
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-5J36BYRI.js";
|
|
8
8
|
import {
|
|
9
9
|
OKF_EXPORT_VERSION
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-NYFWBYY4.js";
|
|
11
11
|
import "../chunk-D24OXEPB.js";
|
|
12
12
|
import "../chunk-3UXOZBHV.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-N3DSSCOR.js";
|
|
14
14
|
import "../chunk-UHVXE24Y.js";
|
|
15
15
|
import "../chunk-4ZWCQJNM.js";
|
|
16
16
|
import "../chunk-WVGXCBOC.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-N37X5RU7.js";
|
|
20
|
-
import "../chunk-NNBZS3DY.js";
|
|
21
|
-
import "../chunk-CYEPCZN5.js";
|
|
22
|
-
import "../chunk-GIC6BASP.js";
|
|
17
|
+
import "../chunk-6FUMA6AA.js";
|
|
18
|
+
import "../chunk-D35XLYQ7.js";
|
|
23
19
|
import "../chunk-YQNNHLCG.js";
|
|
24
|
-
import "../chunk-W7IGLX4G.js";
|
|
25
20
|
import "../chunk-6KTXE6A3.js";
|
|
21
|
+
import "../chunk-RACZB5HT.js";
|
|
22
|
+
import "../chunk-AG46P24C.js";
|
|
23
|
+
import "../chunk-CYEPCZN5.js";
|
|
24
|
+
import "../chunk-XZBXINXZ.js";
|
|
26
25
|
import "../chunk-GUMZC2BO.js";
|
|
27
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-W7IGLX4G.js";
|
|
27
|
+
import "../chunk-227UFSEQ.js";
|
|
28
|
+
import "../chunk-ET356KSB.js";
|
|
28
29
|
import "../chunk-72A4L5JJ.js";
|
|
29
30
|
import "../chunk-A7Q43EUZ.js";
|
|
30
|
-
import "../chunk-ET356KSB.js";
|
|
31
31
|
import "../chunk-S2V7RUCL.js";
|
|
32
32
|
import "../chunk-OYV6RKPM.js";
|
|
33
33
|
import "../chunk-S2HLHAZ4.js";
|
|
@@ -38,8 +38,8 @@ import "../chunk-LDXUBPMO.js";
|
|
|
38
38
|
import "../chunk-XSTNGNJP.js";
|
|
39
39
|
import "../chunk-AAD2ZS6P.js";
|
|
40
40
|
import "../chunk-LUDBXTBJ.js";
|
|
41
|
-
import "../chunk-3ONXXHQO.js";
|
|
42
41
|
import "../chunk-YXZG5TVN.js";
|
|
42
|
+
import "../chunk-3ONXXHQO.js";
|
|
43
43
|
import "../chunk-5GINB5LC.js";
|
|
44
44
|
import "../chunk-3WU7XOFN.js";
|
|
45
45
|
import "../chunk-G7D6GZ5J.js";
|
package/dist/verified-recall.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FK2SJX27.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-N3DSSCOR.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-4ZWCQJNM.js";
|
|
9
9
|
import "./chunk-WVGXCBOC.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-N37X5RU7.js";
|
|
13
|
-
import "./chunk-NNBZS3DY.js";
|
|
14
|
-
import "./chunk-CYEPCZN5.js";
|
|
15
|
-
import "./chunk-GIC6BASP.js";
|
|
10
|
+
import "./chunk-6FUMA6AA.js";
|
|
11
|
+
import "./chunk-D35XLYQ7.js";
|
|
16
12
|
import "./chunk-YQNNHLCG.js";
|
|
17
|
-
import "./chunk-W7IGLX4G.js";
|
|
18
13
|
import "./chunk-6KTXE6A3.js";
|
|
14
|
+
import "./chunk-RACZB5HT.js";
|
|
15
|
+
import "./chunk-AG46P24C.js";
|
|
16
|
+
import "./chunk-CYEPCZN5.js";
|
|
17
|
+
import "./chunk-XZBXINXZ.js";
|
|
19
18
|
import "./chunk-GUMZC2BO.js";
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-W7IGLX4G.js";
|
|
20
|
+
import "./chunk-227UFSEQ.js";
|
|
21
|
+
import "./chunk-ET356KSB.js";
|
|
21
22
|
import "./chunk-72A4L5JJ.js";
|
|
22
23
|
import "./chunk-A7Q43EUZ.js";
|
|
23
|
-
import "./chunk-ET356KSB.js";
|
|
24
24
|
import "./chunk-S2V7RUCL.js";
|
|
25
25
|
import "./chunk-OYV6RKPM.js";
|
|
26
26
|
import "./chunk-S2HLHAZ4.js";
|
|
@@ -31,8 +31,8 @@ import "./chunk-LDXUBPMO.js";
|
|
|
31
31
|
import "./chunk-XSTNGNJP.js";
|
|
32
32
|
import "./chunk-AAD2ZS6P.js";
|
|
33
33
|
import "./chunk-LUDBXTBJ.js";
|
|
34
|
-
import "./chunk-3ONXXHQO.js";
|
|
35
34
|
import "./chunk-YXZG5TVN.js";
|
|
35
|
+
import "./chunk-3ONXXHQO.js";
|
|
36
36
|
import "./chunk-5GINB5LC.js";
|
|
37
37
|
import "./chunk-3WU7XOFN.js";
|
|
38
38
|
import "./chunk-G7D6GZ5J.js";
|
package/dist/who-knows-cli.d.ts
CHANGED
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,26 +4,26 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-YYP5GM6J.js";
|
|
8
|
+
import "./chunk-FCL6ENLF.js";
|
|
9
|
+
import "./chunk-N3DSSCOR.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-4ZWCQJNM.js";
|
|
12
12
|
import "./chunk-WVGXCBOC.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-N37X5RU7.js";
|
|
16
|
-
import "./chunk-NNBZS3DY.js";
|
|
17
|
-
import "./chunk-CYEPCZN5.js";
|
|
18
|
-
import "./chunk-GIC6BASP.js";
|
|
13
|
+
import "./chunk-6FUMA6AA.js";
|
|
14
|
+
import "./chunk-D35XLYQ7.js";
|
|
19
15
|
import "./chunk-YQNNHLCG.js";
|
|
20
|
-
import "./chunk-W7IGLX4G.js";
|
|
21
16
|
import "./chunk-6KTXE6A3.js";
|
|
17
|
+
import "./chunk-RACZB5HT.js";
|
|
18
|
+
import "./chunk-AG46P24C.js";
|
|
19
|
+
import "./chunk-CYEPCZN5.js";
|
|
20
|
+
import "./chunk-XZBXINXZ.js";
|
|
22
21
|
import "./chunk-GUMZC2BO.js";
|
|
23
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-W7IGLX4G.js";
|
|
23
|
+
import "./chunk-227UFSEQ.js";
|
|
24
|
+
import "./chunk-ET356KSB.js";
|
|
24
25
|
import "./chunk-72A4L5JJ.js";
|
|
25
26
|
import "./chunk-A7Q43EUZ.js";
|
|
26
|
-
import "./chunk-ET356KSB.js";
|
|
27
27
|
import "./chunk-S2V7RUCL.js";
|
|
28
28
|
import "./chunk-OYV6RKPM.js";
|
|
29
29
|
import "./chunk-S2HLHAZ4.js";
|
|
@@ -34,8 +34,8 @@ import "./chunk-LDXUBPMO.js";
|
|
|
34
34
|
import "./chunk-XSTNGNJP.js";
|
|
35
35
|
import "./chunk-AAD2ZS6P.js";
|
|
36
36
|
import "./chunk-LUDBXTBJ.js";
|
|
37
|
-
import "./chunk-3ONXXHQO.js";
|
|
38
37
|
import "./chunk-YXZG5TVN.js";
|
|
38
|
+
import "./chunk-3ONXXHQO.js";
|
|
39
39
|
import "./chunk-5GINB5LC.js";
|
|
40
40
|
import "./chunk-3WU7XOFN.js";
|
|
41
41
|
import "./chunk-G7D6GZ5J.js";
|
package/dist/who-knows.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { bA as WHO_KNOWS_AUTHORSHIP_BONUS, bB as WHO_KNOWS_DEFAULT_LIMIT, bC as WHO_KNOWS_MAX_EVIDENCE, bD as WHO_KNOWS_MAX_LIMIT, bE as WHO_KNOWS_MCP_TOOLS, bF as WhoKnowsEntity, bG as WhoKnowsEvidence, bH as WhoKnowsHit, bI as WhoKnowsHttpOutcome, W as WhoKnowsResult, bJ as WhoKnowsStorage, bT as computeWhoKnows, bZ as handleWhoKnowsHttpQuery, c2 as loadWhoKnowsEntities, c9 as tokenizeTopic, ca as validateWhoKnowsInput } from './access-service-
|
|
1
|
+
export { bA as WHO_KNOWS_AUTHORSHIP_BONUS, bB as WHO_KNOWS_DEFAULT_LIMIT, bC as WHO_KNOWS_MAX_EVIDENCE, bD as WHO_KNOWS_MAX_LIMIT, bE as WHO_KNOWS_MCP_TOOLS, bF as WhoKnowsEntity, bG as WhoKnowsEvidence, bH as WhoKnowsHit, bI as WhoKnowsHttpOutcome, W as WhoKnowsResult, bJ as WhoKnowsStorage, bT as computeWhoKnows, bZ as handleWhoKnowsHttpQuery, c2 as loadWhoKnowsEntities, c9 as tokenizeTopic, ca as validateWhoKnowsInput } from './access-service-DmDS8Y5P.js';
|
|
2
2
|
import './types-Cy1l6fzp.js';
|
|
3
3
|
import './orchestrator-DqLcuNMP.js';
|
|
4
4
|
import './recall-state.js';
|
package/dist/who-knows.js
CHANGED
|
@@ -9,25 +9,25 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-FCL6ENLF.js";
|
|
13
|
+
import "./chunk-N3DSSCOR.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-4ZWCQJNM.js";
|
|
16
16
|
import "./chunk-WVGXCBOC.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-N37X5RU7.js";
|
|
20
|
-
import "./chunk-NNBZS3DY.js";
|
|
21
|
-
import "./chunk-CYEPCZN5.js";
|
|
22
|
-
import "./chunk-GIC6BASP.js";
|
|
17
|
+
import "./chunk-6FUMA6AA.js";
|
|
18
|
+
import "./chunk-D35XLYQ7.js";
|
|
23
19
|
import "./chunk-YQNNHLCG.js";
|
|
24
|
-
import "./chunk-W7IGLX4G.js";
|
|
25
20
|
import "./chunk-6KTXE6A3.js";
|
|
21
|
+
import "./chunk-RACZB5HT.js";
|
|
22
|
+
import "./chunk-AG46P24C.js";
|
|
23
|
+
import "./chunk-CYEPCZN5.js";
|
|
24
|
+
import "./chunk-XZBXINXZ.js";
|
|
26
25
|
import "./chunk-GUMZC2BO.js";
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-W7IGLX4G.js";
|
|
27
|
+
import "./chunk-227UFSEQ.js";
|
|
28
|
+
import "./chunk-ET356KSB.js";
|
|
28
29
|
import "./chunk-72A4L5JJ.js";
|
|
29
30
|
import "./chunk-A7Q43EUZ.js";
|
|
30
|
-
import "./chunk-ET356KSB.js";
|
|
31
31
|
import "./chunk-S2V7RUCL.js";
|
|
32
32
|
import "./chunk-OYV6RKPM.js";
|
|
33
33
|
import "./chunk-S2HLHAZ4.js";
|
|
@@ -38,8 +38,8 @@ import "./chunk-LDXUBPMO.js";
|
|
|
38
38
|
import "./chunk-XSTNGNJP.js";
|
|
39
39
|
import "./chunk-AAD2ZS6P.js";
|
|
40
40
|
import "./chunk-LUDBXTBJ.js";
|
|
41
|
-
import "./chunk-3ONXXHQO.js";
|
|
42
41
|
import "./chunk-YXZG5TVN.js";
|
|
42
|
+
import "./chunk-3ONXXHQO.js";
|
|
43
43
|
import "./chunk-5GINB5LC.js";
|
|
44
44
|
import "./chunk-3WU7XOFN.js";
|
|
45
45
|
import "./chunk-G7D6GZ5J.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.69.
|
|
3
|
+
"version": "9.69.17",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3227,7 +3227,7 @@
|
|
|
3227
3227
|
"core"
|
|
3228
3228
|
],
|
|
3229
3229
|
"peerDependencies": {
|
|
3230
|
-
"@remnic/coding-graph": "^9.69.
|
|
3230
|
+
"@remnic/coding-graph": "^9.69.17"
|
|
3231
3231
|
},
|
|
3232
3232
|
"peerDependenciesMeta": {
|
|
3233
3233
|
"@remnic/coding-graph": {
|
|
@@ -18,7 +18,7 @@ const T_NULLABLE_STRING = { type: ["string", "null"] } as const;
|
|
|
18
18
|
/** Build a JSON Schema object type with the given properties. */
|
|
19
19
|
function objectSchema(
|
|
20
20
|
properties: Record<string, Readonly<Record<string, unknown>>>,
|
|
21
|
-
required?: readonly string[]
|
|
21
|
+
required?: readonly string[]
|
|
22
22
|
): Record<string, unknown> {
|
|
23
23
|
return {
|
|
24
24
|
type: "object",
|
|
@@ -82,8 +82,20 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
|
|
|
82
82
|
skipped: T_NUMBER,
|
|
83
83
|
removed: T_ARRAY,
|
|
84
84
|
}),
|
|
85
|
-
deep_recall: objectSchema(
|
|
86
|
-
|
|
85
|
+
deep_recall: objectSchema(
|
|
86
|
+
{ ok: T_BOOLEAN, error: T_NULLABLE_STRING, entries: T_ARRAY, trace: T_ARRAY, rendered: T_STRING },
|
|
87
|
+
["entries", "trace"]
|
|
88
|
+
),
|
|
89
|
+
standup: objectSchema({
|
|
90
|
+
date: T_STRING,
|
|
91
|
+
yesterday: T_STRING,
|
|
92
|
+
today: T_STRING,
|
|
93
|
+
highlights: T_ARRAY,
|
|
94
|
+
priorities: T_ARRAY,
|
|
95
|
+
blockers: T_ARRAY,
|
|
96
|
+
activityGrid: T_STRING,
|
|
97
|
+
markdown: T_STRING,
|
|
98
|
+
}),
|
|
87
99
|
action_confidence: objectSchema({
|
|
88
100
|
schemaVersion: T_NUMBER,
|
|
89
101
|
decision: T_STRING,
|
|
@@ -176,6 +188,7 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
|
|
|
176
188
|
effectiveNamespace: T_STRING,
|
|
177
189
|
lcmArchived: T_BOOLEAN,
|
|
178
190
|
extractionQueued: T_BOOLEAN,
|
|
191
|
+
transcriptPersisted: T_BOOLEAN,
|
|
179
192
|
}),
|
|
180
193
|
lcm_search: objectSchema({
|
|
181
194
|
query: T_STRING,
|
|
@@ -274,42 +287,45 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
|
|
|
274
287
|
guidelineVersion: { type: ["number", "null"] } as const,
|
|
275
288
|
}),
|
|
276
289
|
memory_search: objectSchema({ query: T_STRING, results: T_ARRAY, count: T_NUMBER }),
|
|
277
|
-
external_wiki_search: objectSchema(
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
290
|
+
external_wiki_search: objectSchema(
|
|
291
|
+
{
|
|
292
|
+
query: T_STRING,
|
|
293
|
+
hits: {
|
|
294
|
+
type: "array",
|
|
295
|
+
items: {
|
|
296
|
+
type: "object",
|
|
297
|
+
properties: {
|
|
298
|
+
wikiId: T_STRING,
|
|
299
|
+
title: T_STRING,
|
|
300
|
+
path: T_STRING,
|
|
301
|
+
snippet: T_STRING,
|
|
302
|
+
score: T_NUMBER,
|
|
303
|
+
rank: T_NUMBER,
|
|
304
|
+
citations: {
|
|
305
|
+
type: "array",
|
|
306
|
+
items: {
|
|
307
|
+
type: "object",
|
|
308
|
+
properties: {
|
|
309
|
+
path: T_STRING,
|
|
310
|
+
lineStart: T_NUMBER,
|
|
311
|
+
lineEnd: T_NUMBER,
|
|
312
|
+
note: T_STRING,
|
|
313
|
+
},
|
|
314
|
+
required: ["path", "lineStart", "lineEnd", "note"],
|
|
315
|
+
additionalProperties: false,
|
|
299
316
|
},
|
|
300
|
-
required: ["path", "lineStart", "lineEnd", "note"],
|
|
301
|
-
additionalProperties: false,
|
|
302
317
|
},
|
|
318
|
+
indexBlurb: T_STRING,
|
|
303
319
|
},
|
|
304
|
-
|
|
320
|
+
required: ["wikiId", "title", "path", "snippet", "score", "rank", "citations"],
|
|
321
|
+
additionalProperties: false,
|
|
305
322
|
},
|
|
306
|
-
required: ["wikiId", "title", "path", "snippet", "score", "rank", "citations"],
|
|
307
|
-
additionalProperties: false,
|
|
308
323
|
},
|
|
324
|
+
count: T_NUMBER,
|
|
325
|
+
degradedWikiIds: T_ARRAY,
|
|
309
326
|
},
|
|
310
|
-
count
|
|
311
|
-
|
|
312
|
-
}, ["query", "hits", "count", "degradedWikiIds"]),
|
|
327
|
+
["query", "hits", "count", "degradedWikiIds"]
|
|
328
|
+
),
|
|
313
329
|
memory_profile: objectSchema({ profile: T_STRING }),
|
|
314
330
|
memory_entities_list: objectSchema({ entities: T_ARRAY, count: T_NUMBER }),
|
|
315
331
|
memory_questions: objectSchema({ questions: T_ARRAY, count: T_NUMBER }),
|
|
@@ -408,7 +424,17 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
|
|
|
408
424
|
elapsedMs: T_NUMBER,
|
|
409
425
|
skippedReason: T_STRING,
|
|
410
426
|
}),
|
|
411
|
-
memory_summarize_hourly: objectSchema({
|
|
427
|
+
memory_summarize_hourly: objectSchema({
|
|
428
|
+
ok: T_BOOLEAN,
|
|
429
|
+
message: T_STRING,
|
|
430
|
+
sessionsConsidered: T_NUMBER,
|
|
431
|
+
sessionsWithEntries: T_NUMBER,
|
|
432
|
+
summariesWritten: T_NUMBER,
|
|
433
|
+
staleStore: T_BOOLEAN,
|
|
434
|
+
newestEntryTimestamp: T_NULLABLE_STRING,
|
|
435
|
+
scanFailed: T_BOOLEAN,
|
|
436
|
+
warning: T_STRING,
|
|
437
|
+
}),
|
|
412
438
|
conversation_index_update: objectSchema({
|
|
413
439
|
enabled: T_BOOLEAN,
|
|
414
440
|
sessions: T_NUMBER,
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Issue #2783: the daemon's observe path must persist observe-derived turns
|
|
3
|
+
* into the transcript store, and `memory_summarize_hourly` must report an
|
|
4
|
+
* empty/stale transcript store distinctly instead of a bare unconditional
|
|
5
|
+
* ok. Delegate-mode gateways (and any observe-only client) starve the
|
|
6
|
+
* hourly summarizer otherwise — 11 days of silent empty runs in the field.
|
|
7
|
+
*/
|
|
8
|
+
import assert from "node:assert/strict";
|
|
9
|
+
import { mkdtemp, readdir, readFile, rm } from "node:fs/promises";
|
|
10
|
+
import { tmpdir } from "node:os";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import test from "node:test";
|
|
13
|
+
|
|
14
|
+
import { EngramAccessService } from "./access-service.js";
|
|
15
|
+
import { HourlySummarizer } from "./summarizer.js";
|
|
16
|
+
import { Orchestrator } from "./orchestrator.js";
|
|
17
|
+
import { TranscriptManager } from "./transcript.js";
|
|
18
|
+
import type { CodingContext, PluginConfig } from "./types.js";
|
|
19
|
+
|
|
20
|
+
interface StubOrchestrator {
|
|
21
|
+
config: PluginConfig;
|
|
22
|
+
transcript: TranscriptManager;
|
|
23
|
+
summarizer: HourlySummarizer;
|
|
24
|
+
lcmEngine?: undefined;
|
|
25
|
+
ingestReplayBatch: () => Promise<unknown[]>;
|
|
26
|
+
_codingContextBySession: Map<string, CodingContext>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function makeService(
|
|
30
|
+
memoryDir: string,
|
|
31
|
+
transcriptEnabled: boolean,
|
|
32
|
+
transcriptSkipChannelTypes: string[] = []
|
|
33
|
+
): { service: EngramAccessService; orchestrator: StubOrchestrator } {
|
|
34
|
+
const config = {
|
|
35
|
+
memoryDir,
|
|
36
|
+
transcriptEnabled,
|
|
37
|
+
transcriptSkipChannelTypes,
|
|
38
|
+
namespacesEnabled: false,
|
|
39
|
+
defaultNamespace: "default",
|
|
40
|
+
} as unknown as PluginConfig;
|
|
41
|
+
const orch = Object.create(Orchestrator.prototype) as Orchestrator;
|
|
42
|
+
const stub: StubOrchestrator = {
|
|
43
|
+
config,
|
|
44
|
+
transcript: new TranscriptManager(config),
|
|
45
|
+
summarizer: new HourlySummarizer(config),
|
|
46
|
+
lcmEngine: undefined,
|
|
47
|
+
ingestReplayBatch: async () => [],
|
|
48
|
+
_codingContextBySession: new Map<string, CodingContext>(),
|
|
49
|
+
};
|
|
50
|
+
Object.assign(orch as unknown as Record<string, unknown>, stub);
|
|
51
|
+
return { service: new EngramAccessService(orch), orchestrator: stub };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async function withTempDir(fn: (dir: string) => Promise<void>): Promise<void> {
|
|
55
|
+
const dir = await mkdtemp(path.join(tmpdir(), "remnic-2783-"));
|
|
56
|
+
try {
|
|
57
|
+
await fn(dir);
|
|
58
|
+
} finally {
|
|
59
|
+
await rm(dir, { recursive: true, force: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async function readAllTranscriptLines(dir: string): Promise<Array<Record<string, unknown>>> {
|
|
64
|
+
const root = path.join(dir, "transcripts");
|
|
65
|
+
const entries: Array<Record<string, unknown>> = [];
|
|
66
|
+
const typeDirs = await readdir(root, { withFileTypes: true }).catch(() => []);
|
|
67
|
+
for (const typeEnt of typeDirs) {
|
|
68
|
+
if (!typeEnt.isDirectory()) continue;
|
|
69
|
+
const idDirs = await readdir(path.join(root, typeEnt.name), { withFileTypes: true });
|
|
70
|
+
for (const idEnt of idDirs) {
|
|
71
|
+
if (!idEnt.isDirectory()) continue;
|
|
72
|
+
const files = await readdir(path.join(root, typeEnt.name, idEnt.name));
|
|
73
|
+
for (const file of files) {
|
|
74
|
+
if (!file.endsWith(".jsonl")) continue;
|
|
75
|
+
const raw = await readFile(path.join(root, typeEnt.name, idEnt.name, file), "utf-8");
|
|
76
|
+
for (const line of raw.split("\n")) {
|
|
77
|
+
if (line.trim().length === 0) continue;
|
|
78
|
+
entries.push(JSON.parse(line) as Record<string, unknown>);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return entries;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const USER_TURN = "please summarize the replication topology for the fleet";
|
|
87
|
+
const ASSISTANT_TURN = "the fleet uses one primary daemon with a replicated failover copy";
|
|
88
|
+
|
|
89
|
+
test("observe persists user and assistant turns into the transcript store (#2783)", async () => {
|
|
90
|
+
await withTempDir(async (dir) => {
|
|
91
|
+
const { service } = makeService(dir, true);
|
|
92
|
+
const response = await service.observe({
|
|
93
|
+
sessionKey: "agent:delegate-test:session-1",
|
|
94
|
+
messages: [
|
|
95
|
+
{ role: "user", content: USER_TURN },
|
|
96
|
+
{ role: "assistant", content: ASSISTANT_TURN },
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
assert.equal(response.transcriptPersisted, true);
|
|
100
|
+
const entries = await readAllTranscriptLines(dir);
|
|
101
|
+
assert.equal(entries.length, 2);
|
|
102
|
+
assert.equal(entries[0]?.role, "user");
|
|
103
|
+
assert.equal(entries[0]?.content, USER_TURN);
|
|
104
|
+
assert.equal(entries[0]?.sessionKey, "agent:delegate-test:session-1");
|
|
105
|
+
assert.equal(entries[1]?.role, "assistant");
|
|
106
|
+
assert.equal(entries[1]?.content, ASSISTANT_TURN);
|
|
107
|
+
assert.equal(typeof entries[0]?.turnId, "string");
|
|
108
|
+
assert.equal(typeof entries[0]?.timestamp, "string");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test("observe filters short messages below the embedded parity noise floor (#2783)", async () => {
|
|
113
|
+
await withTempDir(async (dir) => {
|
|
114
|
+
const { service } = makeService(dir, true);
|
|
115
|
+
const response = await service.observe({
|
|
116
|
+
sessionKey: "agent:delegate-test:session-2",
|
|
117
|
+
messages: [
|
|
118
|
+
{ role: "user", content: "ok" },
|
|
119
|
+
{ role: "assistant", content: ASSISTANT_TURN },
|
|
120
|
+
],
|
|
121
|
+
});
|
|
122
|
+
assert.equal(response.transcriptPersisted, true);
|
|
123
|
+
const entries = await readAllTranscriptLines(dir);
|
|
124
|
+
assert.equal(entries.length, 1);
|
|
125
|
+
assert.equal(entries[0]?.role, "assistant");
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
test("a re-POST of the same user turn is deduped; new turns still append (#2783)", async () => {
|
|
130
|
+
await withTempDir(async (dir) => {
|
|
131
|
+
const { service } = makeService(dir, true);
|
|
132
|
+
await service.observe({
|
|
133
|
+
sessionKey: "agent:delegate-test:session-3",
|
|
134
|
+
messages: [
|
|
135
|
+
{ role: "user", content: USER_TURN },
|
|
136
|
+
{ role: "assistant", content: ASSISTANT_TURN },
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
// Un-keyed client retry of the SAME turn (no idempotencyKey).
|
|
140
|
+
await service.observe({
|
|
141
|
+
sessionKey: "agent:delegate-test:session-3",
|
|
142
|
+
messages: [
|
|
143
|
+
{ role: "user", content: USER_TURN },
|
|
144
|
+
{ role: "assistant", content: ASSISTANT_TURN },
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
const afterRetry = await readAllTranscriptLines(dir);
|
|
148
|
+
assert.equal(afterRetry.length, 2);
|
|
149
|
+
|
|
150
|
+
// A genuinely new turn still appends.
|
|
151
|
+
await service.observe({
|
|
152
|
+
sessionKey: "agent:delegate-test:session-3",
|
|
153
|
+
messages: [{ role: "user", content: "now check the failover read path end to end please" }],
|
|
154
|
+
});
|
|
155
|
+
const afterNew = await readAllTranscriptLines(dir);
|
|
156
|
+
assert.equal(afterNew.length, 3);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
test("transcript persistence is gated on the transcriptEnabled capability (#2783)", async () => {
|
|
161
|
+
await withTempDir(async (dir) => {
|
|
162
|
+
const { service } = makeService(dir, false);
|
|
163
|
+
const response = await service.observe({
|
|
164
|
+
sessionKey: "agent:delegate-test:session-4",
|
|
165
|
+
messages: [{ role: "user", content: USER_TURN }],
|
|
166
|
+
});
|
|
167
|
+
assert.equal(response.transcriptPersisted, false);
|
|
168
|
+
const entries = await readAllTranscriptLines(dir);
|
|
169
|
+
assert.equal(entries.length, 0);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
test("memory_summarize_hourly warns distinctly when the transcript store is empty (#2783)", async () => {
|
|
174
|
+
await withTempDir(async (dir) => {
|
|
175
|
+
const { service } = makeService(dir, true);
|
|
176
|
+
const result = await service.memorySummarizeHourly();
|
|
177
|
+
assert.equal(result.ok, true);
|
|
178
|
+
assert.equal(result.sessionsConsidered, 0);
|
|
179
|
+
assert.equal(result.warning, "transcript store is empty");
|
|
180
|
+
assert.match(result.message, /transcript store is empty/);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
test("memory_summarize_hourly warns distinctly when the store is stale and the hour was idle (#2783)", async () => {
|
|
185
|
+
await withTempDir(async (dir) => {
|
|
186
|
+
const { service, orchestrator } = makeService(dir, true);
|
|
187
|
+
// Seed one transcript entry far in the past: the store is non-empty but
|
|
188
|
+
// stale, and the target hour has no entries.
|
|
189
|
+
await orchestrator.transcript.append({
|
|
190
|
+
timestamp: new Date(Date.now() - 6 * 60 * 60 * 1000).toISOString(),
|
|
191
|
+
role: "user",
|
|
192
|
+
content: "an old turn from a much earlier hour",
|
|
193
|
+
sessionKey: "agent:delegate-test:session-5",
|
|
194
|
+
turnId: "seed-turn",
|
|
195
|
+
});
|
|
196
|
+
const result = await service.memorySummarizeHourly();
|
|
197
|
+
assert.equal(result.ok, true);
|
|
198
|
+
assert.ok(result.sessionsConsidered > 0);
|
|
199
|
+
assert.equal(result.sessionsWithEntries, 0);
|
|
200
|
+
assert.equal(result.staleStore, true);
|
|
201
|
+
assert.equal(result.warning, "no transcript entries for the target hour and no new entries recently");
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
test("observeTranscriptSessionKey scopes transcripts to the effective write namespace (#2783 review)", async () => {
|
|
206
|
+
const { observeTranscriptSessionKey } = await import("./access-observe-transcript.js");
|
|
207
|
+
const config = { defaultNamespace: "generalist" } as { defaultNamespace: string };
|
|
208
|
+
// Same client-controlled sessionKey from two principals in different
|
|
209
|
+
// namespaces must not share one transcript identity.
|
|
210
|
+
const a = observeTranscriptSessionKey("agent:shared-key:s1", "project-origin-aaa", config);
|
|
211
|
+
const b = observeTranscriptSessionKey("agent:shared-key:s1", "project-origin-bbb", config);
|
|
212
|
+
assert.notEqual(a, b);
|
|
213
|
+
assert.ok(a.includes("project-origin-aaa"));
|
|
214
|
+
assert.ok(b.includes("project-origin-bbb"));
|
|
215
|
+
// A default-store write keeps the raw key (single-store deployments
|
|
216
|
+
// unchanged, mirroring the LCM archive key rules).
|
|
217
|
+
assert.equal(observeTranscriptSessionKey("agent:shared-key:s1", "generalist", config), "agent:shared-key:s1");
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
test("skip-listed channel types report transcriptPersisted=false, not a silent success (#2783 review)", async () => {
|
|
221
|
+
await withTempDir(async (dir) => {
|
|
222
|
+
// cron is in the default skip list; a session whose channel type
|
|
223
|
+
// resolves to it must not report persisted=true for a no-op append.
|
|
224
|
+
const { service } = makeService(dir, true, ["cron"]);
|
|
225
|
+
const response = await service.observe({
|
|
226
|
+
sessionKey: "agent:nightly:cron:job-1",
|
|
227
|
+
messages: [{ role: "user", content: "this nightly cron turn must not claim transcript persistence" }],
|
|
228
|
+
});
|
|
229
|
+
assert.equal(response.transcriptPersisted, false);
|
|
230
|
+
const entries = await readAllTranscriptLines(dir);
|
|
231
|
+
assert.equal(entries.length, 0);
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
test("overlapping identical observes do not double-append the same turn (#2783 review)", async () => {
|
|
236
|
+
await withTempDir(async (dir) => {
|
|
237
|
+
const { service } = makeService(dir, true);
|
|
238
|
+
const [a, b] = await Promise.all([
|
|
239
|
+
service.observe({
|
|
240
|
+
sessionKey: "agent:overlap:s1",
|
|
241
|
+
messages: [{ role: "user", content: "the same turn submitted concurrently by a retrying client" }],
|
|
242
|
+
}),
|
|
243
|
+
service.observe({
|
|
244
|
+
sessionKey: "agent:overlap:s1",
|
|
245
|
+
messages: [{ role: "user", content: "the same turn submitted concurrently by a retrying client" }],
|
|
246
|
+
}),
|
|
247
|
+
]);
|
|
248
|
+
const entries = await readAllTranscriptLines(dir);
|
|
249
|
+
assert.equal(entries.length, 1);
|
|
250
|
+
assert.equal(a.transcriptPersisted !== b.transcriptPersisted, true);
|
|
251
|
+
});
|
|
252
|
+
});
|