@remnic/core 9.6.29 → 9.6.30

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.
Files changed (77) hide show
  1. package/dist/access-admin-ops-surface.js +2 -1
  2. package/dist/access-boundary.js +3 -2
  3. package/dist/access-cli.js +16 -15
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.js +7 -6
  6. package/dist/access-identity-continuity-surface.js +2 -1
  7. package/dist/access-lcm-surface.js +2 -1
  8. package/dist/access-mcp.js +6 -5
  9. package/dist/access-observe-write-surface.js +2 -1
  10. package/dist/access-operations-batch.js +4 -3
  11. package/dist/access-operations.js +5 -4
  12. package/dist/access-recall-surface.js +2 -1
  13. package/dist/access-service.js +2 -1
  14. package/dist/{chunk-5WJ4LBFR.js → chunk-3VSTTB74.js} +7 -7
  15. package/dist/{chunk-4463LUIE.js → chunk-77UPM7P3.js} +22 -11
  16. package/dist/chunk-77UPM7P3.js.map +1 -0
  17. package/dist/{chunk-FV5FVO2J.js → chunk-7O2JL5RY.js} +9 -5
  18. package/dist/chunk-7O2JL5RY.js.map +1 -0
  19. package/dist/{chunk-LZTFCAKE.js → chunk-BFU7H32D.js} +28 -15
  20. package/dist/chunk-BFU7H32D.js.map +1 -0
  21. package/dist/chunk-C37ZRXX7.js +36 -0
  22. package/dist/chunk-C37ZRXX7.js.map +1 -0
  23. package/dist/{chunk-SGYTQKC2.js → chunk-C6TKSI35.js} +3 -3
  24. package/dist/{chunk-C2SEH754.js → chunk-DAAJUA6Q.js} +4 -4
  25. package/dist/{chunk-EAREADWV.js → chunk-GQURC4B7.js} +2 -2
  26. package/dist/{chunk-4SBW47WK.js → chunk-IRMLYBMU.js} +28 -15
  27. package/dist/chunk-IRMLYBMU.js.map +1 -0
  28. package/dist/{chunk-XA4PWKBW.js → chunk-MXAGJHTA.js} +3 -3
  29. package/dist/{chunk-5BHIGBHQ.js → chunk-OXVKR5OU.js} +6 -3
  30. package/dist/{chunk-5BHIGBHQ.js.map → chunk-OXVKR5OU.js.map} +1 -1
  31. package/dist/{chunk-IF7THCGJ.js → chunk-PUQZIS6A.js} +3 -3
  32. package/dist/{chunk-PYPOFEMK.js → chunk-R26WO46Z.js} +1 -1
  33. package/dist/chunk-R26WO46Z.js.map +1 -0
  34. package/dist/chunk-VDC6RZI4.js +1 -0
  35. package/dist/{chunk-3RROR5KV.js → chunk-VJRJTRYF.js} +4 -4
  36. package/dist/{chunk-L6W77GWW.js → chunk-XGSOXFD4.js} +25 -13
  37. package/dist/chunk-XGSOXFD4.js.map +1 -0
  38. package/dist/cli.js +8 -7
  39. package/dist/event-order-recall.js +3 -2
  40. package/dist/evidence-pack.d.ts +2 -0
  41. package/dist/evidence-pack.js +1 -1
  42. package/dist/explicit-cue-recall.d.ts +3 -0
  43. package/dist/explicit-cue-recall.js +3 -2
  44. package/dist/focused-list-recall.js +3 -2
  45. package/dist/index.js +16 -15
  46. package/dist/lcm/index.d.ts +22 -0
  47. package/dist/lcm/index.js +9 -1
  48. package/dist/orchestrator.js +16 -15
  49. package/dist/response-guidance-recall.js +3 -2
  50. package/dist/targeted-fact-recall.js +3 -2
  51. package/package.json +2 -2
  52. package/src/access-lcm-surface.ts +20 -5
  53. package/src/access-recall-surface.ts +2 -1
  54. package/src/event-order-recall.ts +5 -3
  55. package/src/evidence-pack.ts +2 -0
  56. package/src/explicit-cue-recall.ts +67 -66
  57. package/src/focused-list-recall.ts +25 -16
  58. package/src/lcm/evidence-identity.ts +59 -0
  59. package/src/lcm/index.ts +7 -0
  60. package/src/lcm-retrieval-lineage.test.ts +236 -0
  61. package/src/response-guidance-recall.ts +22 -14
  62. package/src/targeted-fact-recall.ts +25 -16
  63. package/dist/chunk-4463LUIE.js.map +0 -1
  64. package/dist/chunk-4SBW47WK.js.map +0 -1
  65. package/dist/chunk-FV5FVO2J.js.map +0 -1
  66. package/dist/chunk-HHLLAQGZ.js +0 -1
  67. package/dist/chunk-L6W77GWW.js.map +0 -1
  68. package/dist/chunk-LZTFCAKE.js.map +0 -1
  69. package/dist/chunk-PYPOFEMK.js.map +0 -1
  70. /package/dist/{chunk-5WJ4LBFR.js.map → chunk-3VSTTB74.js.map} +0 -0
  71. /package/dist/{chunk-SGYTQKC2.js.map → chunk-C6TKSI35.js.map} +0 -0
  72. /package/dist/{chunk-C2SEH754.js.map → chunk-DAAJUA6Q.js.map} +0 -0
  73. /package/dist/{chunk-EAREADWV.js.map → chunk-GQURC4B7.js.map} +0 -0
  74. /package/dist/{chunk-XA4PWKBW.js.map → chunk-MXAGJHTA.js.map} +0 -0
  75. /package/dist/{chunk-IF7THCGJ.js.map → chunk-PUQZIS6A.js.map} +0 -0
  76. /package/dist/{chunk-HHLLAQGZ.js.map → chunk-VDC6RZI4.js.map} +0 -0
  77. /package/dist/{chunk-3RROR5KV.js.map → chunk-VJRJTRYF.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -90,7 +90,7 @@ import {
90
90
  runWorkProductStatusCliCommand,
91
91
  runWorkProjectCliCommand,
92
92
  runWorkTaskCliCommand
93
- } from "./chunk-3RROR5KV.js";
93
+ } from "./chunk-VJRJTRYF.js";
94
94
  import "./chunk-MMACM5G2.js";
95
95
  import "./chunk-54BGIBCR.js";
96
96
  import "./chunk-H4CKS5B2.js";
@@ -168,7 +168,7 @@ import "./chunk-G6NKALRN.js";
168
168
  import "./chunk-OO42R444.js";
169
169
  import "./chunk-K6MV3TRQ.js";
170
170
  import "./chunk-OADWQ5CR.js";
171
- import "./chunk-C2SEH754.js";
171
+ import "./chunk-DAAJUA6Q.js";
172
172
  import "./chunk-V7IZKJI3.js";
173
173
  import "./chunk-SEDEKFYQ.js";
174
174
  import "./chunk-RKNJBZ55.js";
@@ -177,13 +177,13 @@ import "./chunk-RSUYKGGZ.js";
177
177
  import "./chunk-42NQ7AVG.js";
178
178
  import "./chunk-TMSXWOBZ.js";
179
179
  import "./chunk-7RXCMVFQ.js";
180
- import "./chunk-XA4PWKBW.js";
180
+ import "./chunk-MXAGJHTA.js";
181
181
  import "./chunk-IC2TCZJ2.js";
182
182
  import "./chunk-D24OXEPB.js";
183
183
  import "./chunk-5RUE3GHQ.js";
184
- import "./chunk-SGYTQKC2.js";
184
+ import "./chunk-C6TKSI35.js";
185
185
  import "./chunk-2MR3MFQB.js";
186
- import "./chunk-IF7THCGJ.js";
186
+ import "./chunk-PUQZIS6A.js";
187
187
  import "./chunk-HLTAPHZZ.js";
188
188
  import "./chunk-YF6FMLBT.js";
189
189
  import "./chunk-PRTA6444.js";
@@ -191,9 +191,9 @@ import "./chunk-KQDNAXOM.js";
191
191
  import "./chunk-35NN3ZFA.js";
192
192
  import "./chunk-FTYDWKO6.js";
193
193
  import "./chunk-T4WDJPEZ.js";
194
- import "./chunk-EAREADWV.js";
194
+ import "./chunk-GQURC4B7.js";
195
195
  import "./chunk-D7FOKIY5.js";
196
- import "./chunk-5BHIGBHQ.js";
196
+ import "./chunk-OXVKR5OU.js";
197
197
  import "./chunk-GDASG7NC.js";
198
198
  import "./chunk-GDB4J2H3.js";
199
199
  import "./chunk-M5QKGHCR.js";
@@ -239,6 +239,7 @@ import "./chunk-MTWKDOVO.js";
239
239
  import "./chunk-O75CRYGF.js";
240
240
  import "./chunk-QDW3E4RD.js";
241
241
  import "./chunk-ZGPDSEKG.js";
242
+ import "./chunk-C37ZRXX7.js";
242
243
  import "./chunk-3ONXXHQO.js";
243
244
  import "./chunk-ODPLEWB6.js";
244
245
  import "./chunk-ZY2MNJR6.js";
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  buildEventOrderRecallSection,
3
3
  shouldRecallEventOrderEvidence
4
- } from "./chunk-FV5FVO2J.js";
4
+ } from "./chunk-7O2JL5RY.js";
5
5
  import "./chunk-LUPVCGYK.js";
6
- import "./chunk-PYPOFEMK.js";
6
+ import "./chunk-R26WO46Z.js";
7
+ import "./chunk-C37ZRXX7.js";
7
8
  import "./chunk-PZ5AY32C.js";
8
9
  export {
9
10
  buildEventOrderRecallSection,
@@ -1,5 +1,7 @@
1
1
  interface EvidencePackItem {
2
2
  id?: string;
3
+ /** Stable SQLite row lineage for diagnostics; intentionally not rendered. */
4
+ archiveRowId?: number;
3
5
  sessionId?: string;
4
6
  turnIndex?: number;
5
7
  role?: string;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildEvidencePack,
3
3
  insertAfterEvidenceHeading
4
- } from "./chunk-PYPOFEMK.js";
4
+ } from "./chunk-R26WO46Z.js";
5
5
  import "./chunk-PZ5AY32C.js";
6
6
  export {
7
7
  buildEvidencePack,
@@ -1,5 +1,7 @@
1
1
  interface ExplicitCueRecallEngine {
2
2
  expandContext(sessionId: string, fromTurn: number, toTurn: number, maxTokens: number): Promise<Array<{
3
+ id?: number;
4
+ session_id?: string;
3
5
  turn_index: number;
4
6
  role: string;
5
7
  content: string;
@@ -9,6 +11,7 @@ interface ExplicitCueRecallEngine {
9
11
  maxTurnIndex?: number;
10
12
  }>;
11
13
  searchContextFull(query: string, limit: number, sessionId?: string): Promise<Array<{
14
+ id?: number;
12
15
  turn_index: number;
13
16
  role: string;
14
17
  content: string;
@@ -9,10 +9,11 @@ import {
9
9
  collectStructuredPlanCues,
10
10
  collectTemporalLexicalCues,
11
11
  normalizeTurnExpansionEnd
12
- } from "./chunk-4463LUIE.js";
12
+ } from "./chunk-77UPM7P3.js";
13
13
  import "./chunk-YVVQUAOO.js";
14
14
  import "./chunk-LUPVCGYK.js";
15
- import "./chunk-PYPOFEMK.js";
15
+ import "./chunk-R26WO46Z.js";
16
+ import "./chunk-C37ZRXX7.js";
16
17
  import "./chunk-PZ5AY32C.js";
17
18
  export {
18
19
  buildExplicitCueRecallSection,
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  buildFocusedListRecallSection,
3
3
  shouldRecallFocusedListEvidence
4
- } from "./chunk-LZTFCAKE.js";
4
+ } from "./chunk-BFU7H32D.js";
5
5
  import "./chunk-YVVQUAOO.js";
6
- import "./chunk-PYPOFEMK.js";
6
+ import "./chunk-R26WO46Z.js";
7
+ import "./chunk-C37ZRXX7.js";
7
8
  import "./chunk-PZ5AY32C.js";
8
9
  export {
9
10
  buildFocusedListRecallSection,
package/dist/index.js CHANGED
@@ -93,7 +93,7 @@ import {
93
93
  validateTaxonomy,
94
94
  watchForChanges,
95
95
  writeManifest
96
- } from "./chunk-5WJ4LBFR.js";
96
+ } from "./chunk-3VSTTB74.js";
97
97
  import {
98
98
  WEARABLE_SOURCE_PREFIX,
99
99
  buildExtractionTurns,
@@ -138,7 +138,7 @@ import {
138
138
  rollbackFromEngramMigration
139
139
  } from "./chunk-7HYPN2GC.js";
140
140
  import "./chunk-666A3MOW.js";
141
- import "./chunk-HHLLAQGZ.js";
141
+ import "./chunk-VDC6RZI4.js";
142
142
  import "./chunk-5AJIDEFT.js";
143
143
  import "./chunk-TPDBFYEG.js";
144
144
  import "./chunk-KCYE2MZM.js";
@@ -214,7 +214,7 @@ import "./chunk-YN2UN7N3.js";
214
214
  import {
215
215
  buildTargetedFactRecallSection,
216
216
  shouldRecallTargetedFactEvidence
217
- } from "./chunk-4SBW47WK.js";
217
+ } from "./chunk-IRMLYBMU.js";
218
218
  import "./chunk-I6WYQSX4.js";
219
219
  import {
220
220
  CODEX_THREAD_KEY_PREFIX
@@ -228,7 +228,7 @@ import "./chunk-E3VODCC3.js";
228
228
  import {
229
229
  buildResponseGuidanceRecallSection,
230
230
  shouldRecallResponseGuidance
231
- } from "./chunk-L6W77GWW.js";
231
+ } from "./chunk-XGSOXFD4.js";
232
232
  import "./chunk-DE6ENYLG.js";
233
233
  import "./chunk-HHAA35A3.js";
234
234
  import "./chunk-X7XN6YU4.js";
@@ -301,11 +301,11 @@ import "./chunk-QT2RZNRT.js";
301
301
  import {
302
302
  buildFocusedListRecallSection,
303
303
  shouldRecallFocusedListEvidence
304
- } from "./chunk-LZTFCAKE.js";
304
+ } from "./chunk-BFU7H32D.js";
305
305
  import {
306
306
  buildEventOrderRecallSection,
307
307
  shouldRecallEventOrderEvidence
308
- } from "./chunk-FV5FVO2J.js";
308
+ } from "./chunk-7O2JL5RY.js";
309
309
  import "./chunk-IAIPNEHD.js";
310
310
  import {
311
311
  buildExplicitCueRecallSection,
@@ -318,12 +318,12 @@ import {
318
318
  collectStructuredPlanCues,
319
319
  collectTemporalLexicalCues,
320
320
  normalizeTurnExpansionEnd
321
- } from "./chunk-4463LUIE.js";
321
+ } from "./chunk-77UPM7P3.js";
322
322
  import "./chunk-YVVQUAOO.js";
323
323
  import "./chunk-LUPVCGYK.js";
324
324
  import {
325
325
  buildEvidencePack
326
- } from "./chunk-PYPOFEMK.js";
326
+ } from "./chunk-R26WO46Z.js";
327
327
  import {
328
328
  buildExtensionsFooterForSummary,
329
329
  loadDaySummaryPrompt
@@ -348,7 +348,7 @@ import {
348
348
  registerTrainingExportAdapter,
349
349
  runBulkImportCliCommand,
350
350
  runWearablesCliCommand
351
- } from "./chunk-3RROR5KV.js";
351
+ } from "./chunk-VJRJTRYF.js";
352
352
  import "./chunk-MMACM5G2.js";
353
353
  import "./chunk-54BGIBCR.js";
354
354
  import "./chunk-H4CKS5B2.js";
@@ -550,7 +550,7 @@ import "./chunk-K6MV3TRQ.js";
550
550
  import "./chunk-OADWQ5CR.js";
551
551
  import {
552
552
  EngramAccessHttpServer
553
- } from "./chunk-C2SEH754.js";
553
+ } from "./chunk-DAAJUA6Q.js";
554
554
  import {
555
555
  WearablesInputError,
556
556
  describeErrorForOperator
@@ -564,7 +564,7 @@ import "./chunk-TMSXWOBZ.js";
564
564
  import "./chunk-7RXCMVFQ.js";
565
565
  import {
566
566
  EngramMcpServer
567
- } from "./chunk-XA4PWKBW.js";
567
+ } from "./chunk-MXAGJHTA.js";
568
568
  import "./chunk-IC2TCZJ2.js";
569
569
  import {
570
570
  buildCitationGuidance,
@@ -573,7 +573,7 @@ import {
573
573
  sanitizeNoteForCitation
574
574
  } from "./chunk-D24OXEPB.js";
575
575
  import "./chunk-5RUE3GHQ.js";
576
- import "./chunk-SGYTQKC2.js";
576
+ import "./chunk-C6TKSI35.js";
577
577
  import {
578
578
  formatZodError,
579
579
  memoryStoreRequestSchema,
@@ -582,7 +582,7 @@ import {
582
582
  suggestionSubmitRequestSchema,
583
583
  validateRequest
584
584
  } from "./chunk-2MR3MFQB.js";
585
- import "./chunk-IF7THCGJ.js";
585
+ import "./chunk-PUQZIS6A.js";
586
586
  import "./chunk-HLTAPHZZ.js";
587
587
  import "./chunk-YF6FMLBT.js";
588
588
  import {
@@ -615,7 +615,7 @@ import {
615
615
  } from "./chunk-T4WDJPEZ.js";
616
616
  import {
617
617
  OPERATION_NAMES
618
- } from "./chunk-EAREADWV.js";
618
+ } from "./chunk-GQURC4B7.js";
619
619
  import {
620
620
  TOKEN_CAPABILITIES_VERSION,
621
621
  capabilityAllowsNamespace,
@@ -631,7 +631,7 @@ import {
631
631
  EngramAccessService,
632
632
  computeProcedureStats,
633
633
  formatProcedureStatsText
634
- } from "./chunk-5BHIGBHQ.js";
634
+ } from "./chunk-OXVKR5OU.js";
635
635
  import "./chunk-GDASG7NC.js";
636
636
  import "./chunk-GDB4J2H3.js";
637
637
  import "./chunk-M5QKGHCR.js";
@@ -727,6 +727,7 @@ import {
727
727
  parseProcedureStepsFromBody
728
728
  } from "./chunk-QDW3E4RD.js";
729
729
  import "./chunk-ZGPDSEKG.js";
730
+ import "./chunk-C37ZRXX7.js";
730
731
  import {
731
732
  getHostEmbeddingProvider,
732
733
  normalizeHostEmbeddingVector,
@@ -10,3 +10,25 @@ import '../message-parts/index.js';
10
10
  import '../types-DDUDgd7T.js';
11
11
  import 'better-sqlite3';
12
12
  import '../runtime/better-sqlite.js';
13
+
14
+ interface LcmRowIdentity {
15
+ id?: number;
16
+ session_id?: string;
17
+ turn_index: number;
18
+ }
19
+ interface LcmEvidenceIdentity {
20
+ id: string;
21
+ archiveRowId?: number;
22
+ }
23
+ declare function lcmArchiveRowId(row: Pick<LcmRowIdentity, "id">): number | undefined;
24
+ /**
25
+ * Build the non-rendered evidence identity for an LCM archive row.
26
+ *
27
+ * Older adapters and test doubles may omit the SQLite row id. Those callers
28
+ * retain the historical session+turn identity until they adopt row lineage.
29
+ */
30
+ declare function lcmEvidenceIdentity(row: LcmRowIdentity, fallbackSessionId: string): LcmEvidenceIdentity;
31
+ /** Match a search hit to its expanded archive row without conflating siblings. */
32
+ declare function isSameLcmRow(left: LcmRowIdentity, leftFallbackSessionId: string, right: LcmRowIdentity, rightFallbackSessionId: string): boolean;
33
+
34
+ export { type LcmEvidenceIdentity, type LcmRowIdentity, isSameLcmRow, lcmArchiveRowId, lcmEvidenceIdentity };
package/dist/lcm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import "../chunk-HHLLAQGZ.js";
1
+ import "../chunk-VDC6RZI4.js";
2
2
  import {
3
3
  LcmEngine,
4
4
  extractLcmConfig
@@ -26,6 +26,11 @@ import {
26
26
  } from "../chunk-7N4KAIGN.js";
27
27
  import "../chunk-4RA3C3EV.js";
28
28
  import "../chunk-AQEJKOKI.js";
29
+ import {
30
+ isSameLcmRow,
31
+ lcmArchiveRowId,
32
+ lcmEvidenceIdentity
33
+ } from "../chunk-C37ZRXX7.js";
29
34
  import "../chunk-RL6NEVXT.js";
30
35
  import "../chunk-37CTGERM.js";
31
36
  import "../chunk-PZ5AY32C.js";
@@ -38,6 +43,9 @@ export {
38
43
  ensureLcmStateDir,
39
44
  estimateTokens,
40
45
  extractLcmConfig,
46
+ isSameLcmRow,
47
+ lcmArchiveRowId,
48
+ lcmEvidenceIdentity,
41
49
  openLcmDatabase,
42
50
  registerLcmTools
43
51
  };
@@ -43,7 +43,7 @@ import {
43
43
  throwIfRecallAborted,
44
44
  tokenizeRecallQuery,
45
45
  utcDateKeysForLocalDay
46
- } from "./chunk-5WJ4LBFR.js";
46
+ } from "./chunk-3VSTTB74.js";
47
47
  import "./chunk-J3XHPFEU.js";
48
48
  import {
49
49
  formatCompressionGuidelinesForRecall
@@ -53,7 +53,7 @@ import "./chunk-I74SUMNI.js";
53
53
  import "./chunk-ILNPU5W5.js";
54
54
  import "./chunk-7HYPN2GC.js";
55
55
  import "./chunk-666A3MOW.js";
56
- import "./chunk-HHLLAQGZ.js";
56
+ import "./chunk-VDC6RZI4.js";
57
57
  import "./chunk-5AJIDEFT.js";
58
58
  import "./chunk-TPDBFYEG.js";
59
59
  import "./chunk-KCYE2MZM.js";
@@ -78,7 +78,7 @@ import "./chunk-4OKLXWDZ.js";
78
78
  import "./chunk-UHGBNIOS.js";
79
79
  import "./chunk-BCDKBDSY.js";
80
80
  import "./chunk-YN2UN7N3.js";
81
- import "./chunk-4SBW47WK.js";
81
+ import "./chunk-IRMLYBMU.js";
82
82
  import "./chunk-I6WYQSX4.js";
83
83
  import "./chunk-4EX5WZ4M.js";
84
84
  import "./chunk-XZ5I7OZR.js";
@@ -87,7 +87,7 @@ import "./chunk-FDPZVY6D.js";
87
87
  import "./chunk-5IZL4DCV.js";
88
88
  import "./chunk-2IZAGAJR.js";
89
89
  import "./chunk-E3VODCC3.js";
90
- import "./chunk-L6W77GWW.js";
90
+ import "./chunk-XGSOXFD4.js";
91
91
  import "./chunk-DE6ENYLG.js";
92
92
  import "./chunk-HHAA35A3.js";
93
93
  import "./chunk-X7XN6YU4.js";
@@ -113,20 +113,20 @@ import "./chunk-5GSUBCZM.js";
113
113
  import "./chunk-54V4BZWP.js";
114
114
  import "./chunk-KAWTOYAW.js";
115
115
  import "./chunk-QT2RZNRT.js";
116
- import "./chunk-LZTFCAKE.js";
117
- import "./chunk-FV5FVO2J.js";
116
+ import "./chunk-BFU7H32D.js";
117
+ import "./chunk-7O2JL5RY.js";
118
118
  import "./chunk-IAIPNEHD.js";
119
- import "./chunk-4463LUIE.js";
119
+ import "./chunk-77UPM7P3.js";
120
120
  import "./chunk-YVVQUAOO.js";
121
121
  import "./chunk-LUPVCGYK.js";
122
- import "./chunk-PYPOFEMK.js";
122
+ import "./chunk-R26WO46Z.js";
123
123
  import "./chunk-I73G4UH7.js";
124
124
  import "./chunk-VEWZZM3H.js";
125
125
  import "./chunk-Q6IP2ARR.js";
126
126
  import "./chunk-6HEM6HTQ.js";
127
127
  import "./chunk-O2EL7EGG.js";
128
128
  import "./chunk-FVTLSFWU.js";
129
- import "./chunk-3RROR5KV.js";
129
+ import "./chunk-VJRJTRYF.js";
130
130
  import "./chunk-MMACM5G2.js";
131
131
  import "./chunk-54BGIBCR.js";
132
132
  import "./chunk-H4CKS5B2.js";
@@ -217,7 +217,7 @@ import "./chunk-G6NKALRN.js";
217
217
  import "./chunk-OO42R444.js";
218
218
  import "./chunk-K6MV3TRQ.js";
219
219
  import "./chunk-OADWQ5CR.js";
220
- import "./chunk-C2SEH754.js";
220
+ import "./chunk-DAAJUA6Q.js";
221
221
  import "./chunk-V7IZKJI3.js";
222
222
  import "./chunk-SEDEKFYQ.js";
223
223
  import "./chunk-RKNJBZ55.js";
@@ -226,13 +226,13 @@ import "./chunk-RSUYKGGZ.js";
226
226
  import "./chunk-42NQ7AVG.js";
227
227
  import "./chunk-TMSXWOBZ.js";
228
228
  import "./chunk-7RXCMVFQ.js";
229
- import "./chunk-XA4PWKBW.js";
229
+ import "./chunk-MXAGJHTA.js";
230
230
  import "./chunk-IC2TCZJ2.js";
231
231
  import "./chunk-D24OXEPB.js";
232
232
  import "./chunk-5RUE3GHQ.js";
233
- import "./chunk-SGYTQKC2.js";
233
+ import "./chunk-C6TKSI35.js";
234
234
  import "./chunk-2MR3MFQB.js";
235
- import "./chunk-IF7THCGJ.js";
235
+ import "./chunk-PUQZIS6A.js";
236
236
  import "./chunk-HLTAPHZZ.js";
237
237
  import "./chunk-YF6FMLBT.js";
238
238
  import "./chunk-PRTA6444.js";
@@ -240,9 +240,9 @@ import "./chunk-KQDNAXOM.js";
240
240
  import "./chunk-35NN3ZFA.js";
241
241
  import "./chunk-FTYDWKO6.js";
242
242
  import "./chunk-T4WDJPEZ.js";
243
- import "./chunk-EAREADWV.js";
243
+ import "./chunk-GQURC4B7.js";
244
244
  import "./chunk-D7FOKIY5.js";
245
- import "./chunk-5BHIGBHQ.js";
245
+ import "./chunk-OXVKR5OU.js";
246
246
  import "./chunk-GDASG7NC.js";
247
247
  import "./chunk-GDB4J2H3.js";
248
248
  import "./chunk-M5QKGHCR.js";
@@ -288,6 +288,7 @@ import "./chunk-MTWKDOVO.js";
288
288
  import "./chunk-O75CRYGF.js";
289
289
  import "./chunk-QDW3E4RD.js";
290
290
  import "./chunk-ZGPDSEKG.js";
291
+ import "./chunk-C37ZRXX7.js";
291
292
  import "./chunk-3ONXXHQO.js";
292
293
  import "./chunk-ODPLEWB6.js";
293
294
  import "./chunk-ZY2MNJR6.js";
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  buildResponseGuidanceRecallSection,
3
3
  shouldRecallResponseGuidance
4
- } from "./chunk-L6W77GWW.js";
4
+ } from "./chunk-XGSOXFD4.js";
5
5
  import "./chunk-YVVQUAOO.js";
6
6
  import "./chunk-LUPVCGYK.js";
7
- import "./chunk-PYPOFEMK.js";
7
+ import "./chunk-R26WO46Z.js";
8
+ import "./chunk-C37ZRXX7.js";
8
9
  import "./chunk-PZ5AY32C.js";
9
10
  export {
10
11
  buildResponseGuidanceRecallSection,
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  buildTargetedFactRecallSection,
3
3
  shouldRecallTargetedFactEvidence
4
- } from "./chunk-4SBW47WK.js";
4
+ } from "./chunk-IRMLYBMU.js";
5
5
  import "./chunk-YVVQUAOO.js";
6
6
  import "./chunk-LUPVCGYK.js";
7
- import "./chunk-PYPOFEMK.js";
7
+ import "./chunk-R26WO46Z.js";
8
+ import "./chunk-C37ZRXX7.js";
8
9
  import "./chunk-PZ5AY32C.js";
9
10
  export {
10
11
  buildTargetedFactRecallSection,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.6.29",
3
+ "version": "9.6.30",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3000,7 +3000,7 @@
3000
3000
  "core"
3001
3001
  ],
3002
3002
  "peerDependencies": {
3003
- "@remnic/coding-graph": "^9.6.29"
3003
+ "@remnic/coding-graph": "^9.6.30"
3004
3004
  },
3005
3005
  "peerDependenciesMeta": {
3006
3006
  "@remnic/coding-graph": {
@@ -11,6 +11,7 @@
11
11
  import { resolveNamespaceCapabilities } from "./capabilities.js";
12
12
  import { combineNamespaces, lcmSessionKeyForNamespace, resolveCodingNamespaceOverlay } from "./coding/coding-namespace.js";
13
13
  import { log } from "./logger.js";
14
+ import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
14
15
  import { canWriteNamespace, defaultNamespaceForPrincipal, recallNamespacesForPrincipal } from "./namespaces/principal.js";
15
16
  import type { Orchestrator } from "./orchestrator.js";
16
17
  import {
@@ -207,8 +208,8 @@ export class AccessLcmSurface {
207
208
  lcmEnabled: true,
208
209
  };
209
210
  }
210
- // Query each LCM read key in order, merging + deduping rows (by
211
- // sessionId+turnIndex) and preserving first-seen order, capped at `limit`.
211
+ // Query each LCM read key in order, merging + deduping by stable archive-row
212
+ // identity and preserving first-seen order, capped at `limit`.
212
213
  // Use allSettled so one corrupt/failed namespace key cannot discard sibling
213
214
  // results from other authorized profile namespaces.
214
215
  const seenRows = new Set<string>();
@@ -216,7 +217,14 @@ export class AccessLcmSurface {
216
217
  const lcmSearches: Array<{
217
218
  key: string | undefined;
218
219
  prefix: string | undefined;
219
- promise: Promise<Array<{ session_id: string; content: string; turn_index: number }>>;
220
+ promise: Promise<
221
+ Array<{
222
+ id?: number;
223
+ session_id: string;
224
+ content: string;
225
+ turn_index: number;
226
+ }>
227
+ >;
220
228
  }> = [];
221
229
  for (const lcmSessionKey of lcmSessionKeyIds) {
222
230
  for (const lcmSessionPrefix of lcmSessionPrefixes) {
@@ -228,7 +236,14 @@ export class AccessLcmSurface {
228
236
  limit,
229
237
  lcmSessionKey,
230
238
  lcmSessionPrefix,
231
- ) as Promise<Array<{ session_id: string; content: string; turn_index: number }>>,
239
+ ) as Promise<
240
+ Array<{
241
+ id?: number;
242
+ session_id: string;
243
+ content: string;
244
+ turn_index: number;
245
+ }>
246
+ >,
232
247
  });
233
248
  }
234
249
  }
@@ -246,7 +261,7 @@ export class AccessLcmSurface {
246
261
  continue;
247
262
  }
248
263
  for (const r of settled.value) {
249
- const dedupeKey = `${r.session_id}\0${r.turn_index}`;
264
+ const dedupeKey = lcmEvidenceIdentity(r, r.session_id).id;
250
265
  if (seenRows.has(dedupeKey)) continue;
251
266
  seenRows.add(dedupeKey);
252
267
  results.push({
@@ -18,6 +18,7 @@ import { throwIfAborted } from "./abort-error.js";
18
18
  import { resolveNamespaceCapabilities } from "./capabilities.js";
19
19
  import { resolveCodingNamespaceOverlay } from "./coding/coding-namespace.js";
20
20
  import { type BudgetDecision, CrossNamespaceBudget } from "./cross-namespace-budget.js";
21
+ import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
21
22
  import { normalizeProjectionTags } from "./memory-projection-format.js";
22
23
  import { namespaceIdentityFromToken } from "./namespaces/identity.js";
23
24
  import { canReadNamespace, defaultNamespaceForPrincipal, recallNamespacesForPrincipal, resolvePrincipal } from "./namespaces/principal.js";
@@ -593,7 +594,7 @@ export class AccessRecallSurface {
593
594
  if (excerpts.length >= limit) break;
594
595
  if (result.status !== "fulfilled") continue;
595
596
  for (const r of result.value) {
596
- const dedupeKey = `${r.session_id} ${r.turn_index}`;
597
+ const dedupeKey = lcmEvidenceIdentity(r, r.session_id).id;
597
598
  if (seenRows.has(dedupeKey)) continue;
598
599
  seenRows.add(dedupeKey);
599
600
  excerpts.push({
@@ -1,5 +1,6 @@
1
1
  import { buildEvidencePack, type EvidencePackItem } from "./evidence-pack.js";
2
2
  import type { ExplicitCueRecallEngine } from "./explicit-cue-recall.js";
3
+ import { lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
3
4
 
4
5
  import {
5
6
  unifiedDedupeAndRank,
@@ -205,13 +206,14 @@ async function collectEventOrderItems(
205
206
  windowTokens,
206
207
  );
207
208
  for (const message of messages) {
208
- const id = `${options.sessionId}:${message.turn_index}`;
209
+ const identity = lcmEvidenceIdentity(message, options.sessionId);
210
+ const id = identity.id;
209
211
  if (seen.has(id)) continue;
210
212
  if (!isEventOrderCandidate(message.content, message.role, options.query)) continue;
211
213
  seen.add(id);
212
214
  items.push({
213
- id,
214
- sessionId: options.sessionId,
215
+ ...identity,
216
+ sessionId: message.session_id ?? options.sessionId,
215
217
  turnIndex: message.turn_index,
216
218
  role: message.role,
217
219
  content: appendChronologicalCues(message.content, options.query),
@@ -1,5 +1,7 @@
1
1
  export interface EvidencePackItem {
2
2
  id?: string;
3
+ /** Stable SQLite row lineage for diagnostics; intentionally not rendered. */
4
+ archiveRowId?: number;
3
5
  sessionId?: string;
4
6
  turnIndex?: number;
5
7
  role?: string;