@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
@@ -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 { isSameLcmRow, lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
3
4
  import {
4
5
  gatherAcrossReadSessions,
5
6
  resolveLcmReadSessionIds,
@@ -252,19 +253,26 @@ async function collectGuidanceItems(
252
253
  searchWindowTokens,
253
254
  );
254
255
  const candidates = expanded.length > 0
255
- ? expanded.map((message) => ({
256
- id: `${result.session_id}:${message.turn_index}`,
257
- sessionId: result.session_id,
258
- turnIndex: message.turn_index,
259
- role: message.role,
260
- content: message.content,
261
- ...(message.turn_index === result.turn_index &&
262
- typeof result.score === "number"
263
- ? { score: result.score }
264
- : {}),
265
- }))
256
+ ? expanded.map((message) => {
257
+ const matchesSearchHit = isSameLcmRow(
258
+ message,
259
+ result.session_id,
260
+ result,
261
+ result.session_id,
262
+ );
263
+ return {
264
+ ...lcmEvidenceIdentity(message, result.session_id),
265
+ sessionId: message.session_id ?? result.session_id,
266
+ turnIndex: message.turn_index,
267
+ role: message.role,
268
+ content: message.content,
269
+ ...(matchesSearchHit && typeof result.score === "number"
270
+ ? { score: result.score }
271
+ : {}),
272
+ };
273
+ })
266
274
  : [{
267
- id: `${result.session_id}:${result.turn_index}`,
275
+ ...lcmEvidenceIdentity(result, result.session_id),
268
276
  sessionId: result.session_id,
269
277
  turnIndex: result.turn_index,
270
278
  role: result.role,
@@ -331,8 +339,8 @@ async function collectGuidanceScanItems(
331
339
  for (const message of messages) {
332
340
  if (!isGuidanceEvidence(message.content, options.query, intents, options.forceGeneric === true)) continue;
333
341
  items.push({
334
- id: `${options.sessionId}:${message.turn_index}`,
335
- sessionId: options.sessionId,
342
+ ...lcmEvidenceIdentity(message, options.sessionId),
343
+ sessionId: message.session_id ?? options.sessionId,
336
344
  turnIndex: message.turn_index,
337
345
  role: message.role,
338
346
  content: message.content,
@@ -8,6 +8,7 @@ import {
8
8
  gatherAcrossReadSessions,
9
9
  resolveLcmReadSessionIds,
10
10
  } from "./lcm-fallback-read.js";
11
+ import { isSameLcmRow, lcmEvidenceIdentity } from "./lcm/evidence-identity.js";
11
12
 
12
13
  import {
13
14
  unifiedDedupeAndRank,
@@ -124,27 +125,35 @@ async function collectTargetedFactSearchItems(
124
125
  result.turn_index + searchWindowAfter,
125
126
  searchWindowTokens,
126
127
  );
128
+ const searchIdentity = lcmEvidenceIdentity(result, result.session_id);
127
129
  const searchHit: EvidencePackItem = {
128
- id: `${result.session_id}:${result.turn_index}`,
130
+ ...searchIdentity,
129
131
  sessionId: result.session_id,
130
132
  turnIndex: result.turn_index,
131
133
  role: result.role,
132
134
  content: result.content,
133
135
  ...(typeof result.score === "number" ? { score: result.score } : {}),
134
136
  };
135
- const candidates: EvidencePackItem[] = expanded.map((message) => ({
136
- id: `${result.session_id}:${message.turn_index}`,
137
- sessionId: result.session_id,
138
- turnIndex: message.turn_index,
139
- role: message.role,
140
- content: message.content,
141
- ...(message.turn_index === result.turn_index &&
142
- typeof result.score === "number"
143
- ? { score: result.score }
144
- : {}),
145
- }));
146
- const hitIndex = candidates.findIndex((candidate) =>
147
- candidate.turnIndex === result.turn_index
137
+ const candidates: EvidencePackItem[] = expanded.map((message) => {
138
+ const matchesSearchHit = isSameLcmRow(
139
+ message,
140
+ result.session_id,
141
+ result,
142
+ result.session_id,
143
+ );
144
+ return {
145
+ ...lcmEvidenceIdentity(message, result.session_id),
146
+ sessionId: message.session_id ?? result.session_id,
147
+ turnIndex: message.turn_index,
148
+ role: message.role,
149
+ content: message.content,
150
+ ...(matchesSearchHit && typeof result.score === "number"
151
+ ? { score: result.score }
152
+ : {}),
153
+ };
154
+ });
155
+ const hitIndex = expanded.findIndex((message) =>
156
+ isSameLcmRow(message, result.session_id, result, result.session_id)
148
157
  );
149
158
  if (hitIndex >= 0) {
150
159
  candidates[hitIndex] = searchHit;
@@ -200,8 +209,8 @@ async function collectTargetedFactScanItems(
200
209
  for (const message of messages) {
201
210
  if (!isTargetedFactEvidence(message.content, options.query)) continue;
202
211
  items.push({
203
- id: `${options.sessionId}:${message.turn_index}`,
204
- sessionId: options.sessionId,
212
+ ...lcmEvidenceIdentity(message, options.sessionId),
213
+ sessionId: message.session_id ?? options.sessionId,
205
214
  turnIndex: message.turn_index,
206
215
  role: message.role,
207
216
  content: message.content,