@remnic/core 9.3.688 → 9.3.689

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 (49) hide show
  1. package/dist/access-boundary.js +8 -8
  2. package/dist/access-cli.js +13 -13
  3. package/dist/access-http.js +11 -11
  4. package/dist/access-mcp.js +10 -10
  5. package/dist/access-operations.js +9 -9
  6. package/dist/access-service.js +7 -7
  7. package/dist/{chunk-ZPTISBQU.js → chunk-2SNKUSQC.js} +4 -4
  8. package/dist/{chunk-2KAYTPPT.js → chunk-JPETDXED.js} +5 -5
  9. package/dist/{chunk-B43NZNMG.js → chunk-JZBFL7RI.js} +7 -7
  10. package/dist/{chunk-NN7QYW5W.js → chunk-OWFY6NGQ.js} +2 -2
  11. package/dist/{chunk-S2OU5DZY.js → chunk-QSQW54U5.js} +4 -4
  12. package/dist/{chunk-CCWHPGT4.js → chunk-RHXFYIHA.js} +21 -21
  13. package/dist/{chunk-CTOQEZSN.js → chunk-SAEZIIID.js} +2 -2
  14. package/dist/{chunk-DCWIQFNA.js → chunk-T422SYM6.js} +5 -5
  15. package/dist/{chunk-RVYD6LR3.js → chunk-UHUZXWDX.js} +2 -2
  16. package/dist/{chunk-473JIN2U.js → chunk-UXLZOVCN.js} +3 -3
  17. package/dist/{chunk-2SJCWLQD.js → chunk-W63OY3J7.js} +2 -2
  18. package/dist/{chunk-FUCUR2OZ.js → chunk-XU7363OX.js} +2 -2
  19. package/dist/{chunk-KFBOZYME.js → chunk-Z2M6YTAJ.js} +3 -3
  20. package/dist/cli.js +20 -20
  21. package/dist/conversation-index/backend.js +2 -2
  22. package/dist/index.js +28 -28
  23. package/dist/lcm/engine.js +2 -2
  24. package/dist/lcm/index.js +4 -4
  25. package/dist/namespaces/migrate.js +7 -7
  26. package/dist/namespaces/search.js +6 -6
  27. package/dist/operator-toolkit.js +8 -8
  28. package/dist/orchestrator.js +10 -10
  29. package/dist/recall-pipeline-stages.d.ts +167 -0
  30. package/dist/recall-pipeline-stages.js +61 -0
  31. package/dist/recall-pipeline-stages.js.map +1 -0
  32. package/dist/search/factory.js +5 -5
  33. package/dist/search/index.js +9 -9
  34. package/package.json +2 -2
  35. package/src/recall-pipeline-stages.test.ts +269 -0
  36. package/src/recall-pipeline-stages.ts +294 -0
  37. /package/dist/{chunk-ZPTISBQU.js.map → chunk-2SNKUSQC.js.map} +0 -0
  38. /package/dist/{chunk-2KAYTPPT.js.map → chunk-JPETDXED.js.map} +0 -0
  39. /package/dist/{chunk-B43NZNMG.js.map → chunk-JZBFL7RI.js.map} +0 -0
  40. /package/dist/{chunk-NN7QYW5W.js.map → chunk-OWFY6NGQ.js.map} +0 -0
  41. /package/dist/{chunk-S2OU5DZY.js.map → chunk-QSQW54U5.js.map} +0 -0
  42. /package/dist/{chunk-CCWHPGT4.js.map → chunk-RHXFYIHA.js.map} +0 -0
  43. /package/dist/{chunk-CTOQEZSN.js.map → chunk-SAEZIIID.js.map} +0 -0
  44. /package/dist/{chunk-DCWIQFNA.js.map → chunk-T422SYM6.js.map} +0 -0
  45. /package/dist/{chunk-RVYD6LR3.js.map → chunk-UHUZXWDX.js.map} +0 -0
  46. /package/dist/{chunk-473JIN2U.js.map → chunk-UXLZOVCN.js.map} +0 -0
  47. /package/dist/{chunk-2SJCWLQD.js.map → chunk-W63OY3J7.js.map} +0 -0
  48. /package/dist/{chunk-FUCUR2OZ.js.map → chunk-XU7363OX.js.map} +0 -0
  49. /package/dist/{chunk-KFBOZYME.js.map → chunk-Z2M6YTAJ.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-CCWHPGT4.js";
93
+ } from "./chunk-RHXFYIHA.js";
94
94
  import "./chunk-MC4FJXPA.js";
95
95
  import "./chunk-LQHDIS7L.js";
96
96
  import "./chunk-7F7Z6MOS.js";
@@ -103,29 +103,29 @@ import "./chunk-OZKVVUJB.js";
103
103
  import "./chunk-2DL3OFLD.js";
104
104
  import "./chunk-G4IAEX6D.js";
105
105
  import "./chunk-2NLLXCJG.js";
106
- import "./chunk-UP6MOYCB.js";
107
106
  import "./chunk-765K3SAT.js";
107
+ import "./chunk-UP6MOYCB.js";
108
108
  import "./chunk-EEC4PCG5.js";
109
109
  import "./chunk-PYIFUBRK.js";
110
110
  import "./chunk-HOJZMQ4J.js";
111
+ import "./chunk-D6RIFG4O.js";
111
112
  import "./chunk-VX6OBUDW.js";
112
113
  import "./chunk-6O6A6YUO.js";
113
114
  import "./chunk-LZZNTPLR.js";
115
+ import "./chunk-JCK7V6SN.js";
114
116
  import "./chunk-WMWVO45V.js";
115
117
  import "./chunk-KJTKLXTH.js";
116
- import "./chunk-D6RIFG4O.js";
117
- import "./chunk-JCK7V6SN.js";
118
- import "./chunk-GQL52GQ5.js";
119
118
  import "./chunk-CKITWVWJ.js";
120
119
  import "./chunk-OUELRE5E.js";
120
+ import "./chunk-GQL52GQ5.js";
121
121
  import "./chunk-IQ7WCZRW.js";
122
122
  import "./chunk-UTYBJR7M.js";
123
123
  import "./chunk-3K37VPM3.js";
124
- import "./chunk-TGQ2NTWH.js";
125
124
  import "./chunk-BFVPIKDY.js";
125
+ import "./chunk-TGQ2NTWH.js";
126
126
  import "./chunk-3T74IZB3.js";
127
- import "./chunk-RVYD6LR3.js";
128
- import "./chunk-2SJCWLQD.js";
127
+ import "./chunk-UHUZXWDX.js";
128
+ import "./chunk-W63OY3J7.js";
129
129
  import "./chunk-HL4DB7TO.js";
130
130
  import "./chunk-7XH7VJN4.js";
131
131
  import "./chunk-YNDLCWXS.js";
@@ -133,8 +133,8 @@ import "./chunk-AUDJPF4N.js";
133
133
  import "./chunk-44442YCH.js";
134
134
  import "./chunk-Y4Z4I6WK.js";
135
135
  import "./chunk-YBPYIAA5.js";
136
- import "./chunk-2PRQG7PV.js";
137
136
  import "./chunk-WIWPSQYU.js";
137
+ import "./chunk-2PRQG7PV.js";
138
138
  import "./chunk-2F6NP3NT.js";
139
139
  import "./chunk-TERNBNJB.js";
140
140
  import "./chunk-4FE2K57M.js";
@@ -168,7 +168,7 @@ import "./chunk-OO42R444.js";
168
168
  import "./chunk-K6MV3TRQ.js";
169
169
  import "./chunk-LBJBNWS2.js";
170
170
  import "./chunk-OADWQ5CR.js";
171
- import "./chunk-S2OU5DZY.js";
171
+ import "./chunk-QSQW54U5.js";
172
172
  import "./chunk-SEDEKFYQ.js";
173
173
  import "./chunk-RKNJBZ55.js";
174
174
  import "./chunk-J64TK33U.js";
@@ -177,13 +177,13 @@ import "./chunk-42NQ7AVG.js";
177
177
  import "./chunk-TMSXWOBZ.js";
178
178
  import "./chunk-7RXCMVFQ.js";
179
179
  import "./chunk-7WV3F5DQ.js";
180
- import "./chunk-473JIN2U.js";
180
+ import "./chunk-UXLZOVCN.js";
181
181
  import "./chunk-T4WDJPEZ.js";
182
182
  import "./chunk-D24OXEPB.js";
183
- import "./chunk-KFBOZYME.js";
183
+ import "./chunk-Z2M6YTAJ.js";
184
184
  import "./chunk-UDJLF3BO.js";
185
- import "./chunk-NN7QYW5W.js";
186
- import "./chunk-FUCUR2OZ.js";
185
+ import "./chunk-OWFY6NGQ.js";
186
+ import "./chunk-XU7363OX.js";
187
187
  import "./chunk-GDASG7NC.js";
188
188
  import "./chunk-GDB4J2H3.js";
189
189
  import "./chunk-ARV3AUOM.js";
@@ -200,21 +200,21 @@ import "./chunk-BMFZLLNI.js";
200
200
  import "./chunk-CI7RKSRE.js";
201
201
  import "./chunk-6HMYUWXR.js";
202
202
  import "./chunk-4N3TFFPH.js";
203
- import "./chunk-CTOQEZSN.js";
204
- import "./chunk-2KAYTPPT.js";
203
+ import "./chunk-SAEZIIID.js";
204
+ import "./chunk-JPETDXED.js";
205
+ import "./chunk-5CEJH5ZN.js";
205
206
  import "./chunk-WRFKZEO6.js";
206
207
  import "./chunk-CYEPCZN5.js";
207
208
  import "./chunk-LQ6JI4VH.js";
208
209
  import "./chunk-SANZHXY2.js";
209
- import "./chunk-EHISUJFN.js";
210
- import "./chunk-5CEJH5ZN.js";
211
210
  import "./chunk-AER6MT24.js";
211
+ import "./chunk-EHISUJFN.js";
212
212
  import "./chunk-CINZGPSJ.js";
213
213
  import "./chunk-ZFXCQPNO.js";
214
- import "./chunk-DCWIQFNA.js";
214
+ import "./chunk-T422SYM6.js";
215
+ import "./chunk-SJHM6I4J.js";
215
216
  import "./chunk-XBZQRZ6G.js";
216
217
  import "./chunk-KCQA46NR.js";
217
- import "./chunk-SJHM6I4J.js";
218
218
  import "./chunk-K43PI6DQ.js";
219
219
  import "./chunk-YNQ6DFSV.js";
220
220
  import "./chunk-EIR5VLIH.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createConversationIndexBackend
3
- } from "../chunk-DCWIQFNA.js";
3
+ } from "../chunk-T422SYM6.js";
4
+ import "../chunk-SJHM6I4J.js";
4
5
  import "../chunk-XBZQRZ6G.js";
5
6
  import "../chunk-KCQA46NR.js";
6
- import "../chunk-SJHM6I4J.js";
7
7
  import "../chunk-O75CRYGF.js";
8
8
  import "../chunk-NU3CSQ4H.js";
9
9
  import "../chunk-PZ5AY32C.js";
package/dist/index.js CHANGED
@@ -98,7 +98,7 @@ import {
98
98
  registerTrainingExportAdapter,
99
99
  runBulkImportCliCommand,
100
100
  runWearablesCliCommand
101
- } from "./chunk-CCWHPGT4.js";
101
+ } from "./chunk-RHXFYIHA.js";
102
102
  import "./chunk-MC4FJXPA.js";
103
103
  import "./chunk-LQHDIS7L.js";
104
104
  import "./chunk-7F7Z6MOS.js";
@@ -111,19 +111,18 @@ import "./chunk-OZKVVUJB.js";
111
111
  import "./chunk-2DL3OFLD.js";
112
112
  import "./chunk-G4IAEX6D.js";
113
113
  import "./chunk-2NLLXCJG.js";
114
- import "./chunk-UP6MOYCB.js";
115
114
  import "./chunk-765K3SAT.js";
115
+ import "./chunk-UP6MOYCB.js";
116
116
  import "./chunk-EEC4PCG5.js";
117
117
  import "./chunk-PYIFUBRK.js";
118
118
  import "./chunk-HOJZMQ4J.js";
119
+ import "./chunk-D6RIFG4O.js";
119
120
  import "./chunk-VX6OBUDW.js";
120
121
  import "./chunk-6O6A6YUO.js";
121
122
  import "./chunk-LZZNTPLR.js";
123
+ import "./chunk-JCK7V6SN.js";
122
124
  import "./chunk-WMWVO45V.js";
123
125
  import "./chunk-KJTKLXTH.js";
124
- import "./chunk-D6RIFG4O.js";
125
- import "./chunk-JCK7V6SN.js";
126
- import "./chunk-GQL52GQ5.js";
127
126
  import {
128
127
  clearBulkImportSources,
129
128
  formatBatchTranscript,
@@ -139,23 +138,24 @@ import {
139
138
  parseIsoTimestamp,
140
139
  validateImportTurn
141
140
  } from "./chunk-OUELRE5E.js";
141
+ import "./chunk-GQL52GQ5.js";
142
142
  import "./chunk-IQ7WCZRW.js";
143
143
  import "./chunk-UTYBJR7M.js";
144
144
  import "./chunk-3K37VPM3.js";
145
+ import {
146
+ parseXrayBudgetFlag,
147
+ parseXrayCliOptions
148
+ } from "./chunk-BFVPIKDY.js";
145
149
  import {
146
150
  clearAuthTokenSecretCache,
147
151
  isAgentAccessSecretRef,
148
152
  resolveAgentAccessAuthToken
149
153
  } from "./chunk-TGQ2NTWH.js";
150
- import {
151
- parseXrayBudgetFlag,
152
- parseXrayCliOptions
153
- } from "./chunk-BFVPIKDY.js";
154
154
  import {
155
155
  parseStrictCliDate
156
156
  } from "./chunk-3T74IZB3.js";
157
- import "./chunk-RVYD6LR3.js";
158
- import "./chunk-2SJCWLQD.js";
157
+ import "./chunk-UHUZXWDX.js";
158
+ import "./chunk-W63OY3J7.js";
159
159
  import "./chunk-HL4DB7TO.js";
160
160
  import "./chunk-7XH7VJN4.js";
161
161
  import "./chunk-YNDLCWXS.js";
@@ -196,7 +196,7 @@ import {
196
196
  saveTaxonomy,
197
197
  validateSlug,
198
198
  validateTaxonomy
199
- } from "./chunk-B43NZNMG.js";
199
+ } from "./chunk-JZBFL7RI.js";
200
200
  import {
201
201
  WEARABLE_SOURCE_PREFIX,
202
202
  buildExtractionTurns,
@@ -227,7 +227,8 @@ import {
227
227
  import "./chunk-666A3MOW.js";
228
228
  import "./chunk-HHLLAQGZ.js";
229
229
  import "./chunk-UWK5OXUJ.js";
230
- import "./chunk-ZPTISBQU.js";
230
+ import "./chunk-2SNKUSQC.js";
231
+ import "./chunk-KCYE2MZM.js";
231
232
  import {
232
233
  applyLcmSchema,
233
234
  ensureLcmStateDir,
@@ -237,7 +238,6 @@ import "./chunk-7WWURLG6.js";
237
238
  import "./chunk-MDJURR27.js";
238
239
  import "./chunk-7N4KAIGN.js";
239
240
  import "./chunk-TPDBFYEG.js";
240
- import "./chunk-KCYE2MZM.js";
241
241
  import "./chunk-TECVW3JP.js";
242
242
  import "./chunk-O7GOFAM3.js";
243
243
  import "./chunk-STOEE37X.js";
@@ -361,8 +361,8 @@ import {
361
361
  buildExtensionsFooterForSummary,
362
362
  loadDaySummaryPrompt
363
363
  } from "./chunk-EO5QWINU.js";
364
- import "./chunk-2PRQG7PV.js";
365
364
  import "./chunk-WIWPSQYU.js";
365
+ import "./chunk-2PRQG7PV.js";
366
366
  import "./chunk-2F6NP3NT.js";
367
367
  import "./chunk-TERNBNJB.js";
368
368
  import "./chunk-4FE2K57M.js";
@@ -500,7 +500,7 @@ import "./chunk-LBJBNWS2.js";
500
500
  import "./chunk-OADWQ5CR.js";
501
501
  import {
502
502
  EngramAccessHttpServer
503
- } from "./chunk-S2OU5DZY.js";
503
+ } from "./chunk-QSQW54U5.js";
504
504
  import "./chunk-SEDEKFYQ.js";
505
505
  import "./chunk-RKNJBZ55.js";
506
506
  import "./chunk-J64TK33U.js";
@@ -514,7 +514,7 @@ import {
514
514
  } from "./chunk-7WV3F5DQ.js";
515
515
  import {
516
516
  EngramMcpServer
517
- } from "./chunk-473JIN2U.js";
517
+ } from "./chunk-UXLZOVCN.js";
518
518
  import {
519
519
  REMNIC_CHATGPT_MEMORY_INSPECTOR_CANONICAL_TOOL,
520
520
  REMNIC_CHATGPT_MEMORY_INSPECTOR_MIME_TYPE,
@@ -530,7 +530,7 @@ import {
530
530
  parseOaiMemCitation,
531
531
  sanitizeNoteForCitation
532
532
  } from "./chunk-D24OXEPB.js";
533
- import "./chunk-KFBOZYME.js";
533
+ import "./chunk-Z2M6YTAJ.js";
534
534
  import {
535
535
  formatZodError,
536
536
  memoryStoreRequestSchema,
@@ -539,13 +539,13 @@ import {
539
539
  suggestionSubmitRequestSchema,
540
540
  validateRequest
541
541
  } from "./chunk-UDJLF3BO.js";
542
- import "./chunk-NN7QYW5W.js";
542
+ import "./chunk-OWFY6NGQ.js";
543
543
  import {
544
544
  EngramAccessInputError,
545
545
  EngramAccessService,
546
546
  computeProcedureStats,
547
547
  formatProcedureStatsText
548
- } from "./chunk-FUCUR2OZ.js";
548
+ } from "./chunk-XU7363OX.js";
549
549
  import "./chunk-GDASG7NC.js";
550
550
  import "./chunk-GDB4J2H3.js";
551
551
  import {
@@ -592,8 +592,11 @@ import {
592
592
  } from "./chunk-CI7RKSRE.js";
593
593
  import "./chunk-6HMYUWXR.js";
594
594
  import "./chunk-4N3TFFPH.js";
595
- import "./chunk-CTOQEZSN.js";
596
- import "./chunk-2KAYTPPT.js";
595
+ import "./chunk-SAEZIIID.js";
596
+ import "./chunk-JPETDXED.js";
597
+ import {
598
+ LanceDbBackend
599
+ } from "./chunk-5CEJH5ZN.js";
597
600
  import {
598
601
  MeilisearchBackend
599
602
  } from "./chunk-WRFKZEO6.js";
@@ -602,17 +605,14 @@ import {
602
605
  OramaBackend
603
606
  } from "./chunk-LQ6JI4VH.js";
604
607
  import "./chunk-SANZHXY2.js";
605
- import "./chunk-EHISUJFN.js";
606
- import {
607
- LanceDbBackend
608
- } from "./chunk-5CEJH5ZN.js";
609
608
  import "./chunk-AER6MT24.js";
609
+ import "./chunk-EHISUJFN.js";
610
610
  import "./chunk-CINZGPSJ.js";
611
611
  import "./chunk-ZFXCQPNO.js";
612
- import "./chunk-DCWIQFNA.js";
612
+ import "./chunk-T422SYM6.js";
613
+ import "./chunk-SJHM6I4J.js";
613
614
  import "./chunk-XBZQRZ6G.js";
614
615
  import "./chunk-KCQA46NR.js";
615
- import "./chunk-SJHM6I4J.js";
616
616
  import {
617
617
  QmdClient
618
618
  } from "./chunk-K43PI6DQ.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  LcmEngine,
3
3
  extractLcmConfig
4
- } from "../chunk-ZPTISBQU.js";
4
+ } from "../chunk-2SNKUSQC.js";
5
+ import "../chunk-KCYE2MZM.js";
5
6
  import "../chunk-KYYL4U6X.js";
6
7
  import "../chunk-7WWURLG6.js";
7
8
  import "../chunk-MDJURR27.js";
8
9
  import "../chunk-7N4KAIGN.js";
9
10
  import "../chunk-TPDBFYEG.js";
10
- import "../chunk-KCYE2MZM.js";
11
11
  import "../chunk-4RA3C3EV.js";
12
12
  import "../chunk-CI7RKSRE.js";
13
13
  import "../chunk-6KYMPV2O.js";
package/dist/lcm/index.js CHANGED
@@ -5,7 +5,10 @@ import {
5
5
  import {
6
6
  LcmEngine,
7
7
  extractLcmConfig
8
- } from "../chunk-ZPTISBQU.js";
8
+ } from "../chunk-2SNKUSQC.js";
9
+ import {
10
+ assembleCompressedHistory
11
+ } from "../chunk-KCYE2MZM.js";
9
12
  import {
10
13
  ensureLcmStateDir,
11
14
  openLcmDatabase
@@ -21,9 +24,6 @@ import {
21
24
  LcmDag
22
25
  } from "../chunk-7N4KAIGN.js";
23
26
  import "../chunk-TPDBFYEG.js";
24
- import {
25
- assembleCompressedHistory
26
- } from "../chunk-KCYE2MZM.js";
27
27
  import "../chunk-4RA3C3EV.js";
28
28
  import "../chunk-CI7RKSRE.js";
29
29
  import "../chunk-6KYMPV2O.js";
@@ -2,23 +2,23 @@ import {
2
2
  listNamespaces,
3
3
  runNamespaceMigration,
4
4
  verifyNamespaces
5
- } from "../chunk-2SJCWLQD.js";
5
+ } from "../chunk-W63OY3J7.js";
6
6
  import "../chunk-WIHPNY65.js";
7
- import "../chunk-CTOQEZSN.js";
8
- import "../chunk-2KAYTPPT.js";
7
+ import "../chunk-SAEZIIID.js";
8
+ import "../chunk-JPETDXED.js";
9
+ import "../chunk-5CEJH5ZN.js";
9
10
  import "../chunk-WRFKZEO6.js";
10
11
  import "../chunk-CYEPCZN5.js";
11
12
  import "../chunk-LQ6JI4VH.js";
12
13
  import "../chunk-SANZHXY2.js";
13
- import "../chunk-EHISUJFN.js";
14
- import "../chunk-5CEJH5ZN.js";
15
14
  import "../chunk-AER6MT24.js";
15
+ import "../chunk-EHISUJFN.js";
16
16
  import "../chunk-CINZGPSJ.js";
17
17
  import "../chunk-ZFXCQPNO.js";
18
- import "../chunk-DCWIQFNA.js";
18
+ import "../chunk-T422SYM6.js";
19
+ import "../chunk-SJHM6I4J.js";
19
20
  import "../chunk-XBZQRZ6G.js";
20
21
  import "../chunk-KCQA46NR.js";
21
- import "../chunk-SJHM6I4J.js";
22
22
  import "../chunk-K43PI6DQ.js";
23
23
  import "../chunk-YNQ6DFSV.js";
24
24
  import "../chunk-O75CRYGF.js";
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  NamespaceSearchRouter,
3
3
  namespaceCollectionName
4
- } from "../chunk-CTOQEZSN.js";
5
- import "../chunk-2KAYTPPT.js";
4
+ } from "../chunk-SAEZIIID.js";
5
+ import "../chunk-JPETDXED.js";
6
+ import "../chunk-5CEJH5ZN.js";
6
7
  import "../chunk-WRFKZEO6.js";
7
8
  import "../chunk-CYEPCZN5.js";
8
9
  import "../chunk-LQ6JI4VH.js";
9
10
  import "../chunk-SANZHXY2.js";
10
- import "../chunk-EHISUJFN.js";
11
- import "../chunk-5CEJH5ZN.js";
12
11
  import "../chunk-AER6MT24.js";
12
+ import "../chunk-EHISUJFN.js";
13
13
  import "../chunk-CINZGPSJ.js";
14
14
  import "../chunk-ZFXCQPNO.js";
15
- import "../chunk-DCWIQFNA.js";
15
+ import "../chunk-T422SYM6.js";
16
+ import "../chunk-SJHM6I4J.js";
16
17
  import "../chunk-XBZQRZ6G.js";
17
18
  import "../chunk-KCQA46NR.js";
18
- import "../chunk-SJHM6I4J.js";
19
19
  import "../chunk-K43PI6DQ.js";
20
20
  import "../chunk-YNQ6DFSV.js";
21
21
  import "../chunk-O75CRYGF.js";
@@ -11,8 +11,8 @@ import {
11
11
  summarizeMemoryWorthLegacyCounters,
12
12
  summarizeObservationThroughput,
13
13
  summarizeTierDistribution
14
- } from "./chunk-RVYD6LR3.js";
15
- import "./chunk-2SJCWLQD.js";
14
+ } from "./chunk-UHUZXWDX.js";
15
+ import "./chunk-W63OY3J7.js";
16
16
  import "./chunk-7XH7VJN4.js";
17
17
  import "./chunk-YBPYIAA5.js";
18
18
  import "./chunk-WIHPNY65.js";
@@ -27,21 +27,21 @@ import "./chunk-Z5LAYHGJ.js";
27
27
  import "./chunk-OO42R444.js";
28
28
  import "./chunk-K6MV3TRQ.js";
29
29
  import "./chunk-4N3TFFPH.js";
30
- import "./chunk-CTOQEZSN.js";
31
- import "./chunk-2KAYTPPT.js";
30
+ import "./chunk-SAEZIIID.js";
31
+ import "./chunk-JPETDXED.js";
32
+ import "./chunk-5CEJH5ZN.js";
32
33
  import "./chunk-WRFKZEO6.js";
33
34
  import "./chunk-CYEPCZN5.js";
34
35
  import "./chunk-LQ6JI4VH.js";
35
36
  import "./chunk-SANZHXY2.js";
36
- import "./chunk-EHISUJFN.js";
37
- import "./chunk-5CEJH5ZN.js";
38
37
  import "./chunk-AER6MT24.js";
38
+ import "./chunk-EHISUJFN.js";
39
39
  import "./chunk-CINZGPSJ.js";
40
40
  import "./chunk-ZFXCQPNO.js";
41
- import "./chunk-DCWIQFNA.js";
41
+ import "./chunk-T422SYM6.js";
42
+ import "./chunk-SJHM6I4J.js";
42
43
  import "./chunk-XBZQRZ6G.js";
43
44
  import "./chunk-KCQA46NR.js";
44
- import "./chunk-SJHM6I4J.js";
45
45
  import "./chunk-K43PI6DQ.js";
46
46
  import "./chunk-YNQ6DFSV.js";
47
47
  import "./chunk-O75CRYGF.js";
@@ -28,19 +28,19 @@ import {
28
28
  sanitizeSessionKeyForFilename,
29
29
  shouldFilterLifecycleRecallCandidate,
30
30
  summarizeGraphShadowComparison
31
- } from "./chunk-B43NZNMG.js";
31
+ } from "./chunk-JZBFL7RI.js";
32
32
  import "./chunk-AGJH5ISO.js";
33
33
  import "./chunk-7HYPN2GC.js";
34
34
  import "./chunk-666A3MOW.js";
35
35
  import "./chunk-HHLLAQGZ.js";
36
36
  import "./chunk-UWK5OXUJ.js";
37
- import "./chunk-ZPTISBQU.js";
37
+ import "./chunk-2SNKUSQC.js";
38
+ import "./chunk-KCYE2MZM.js";
38
39
  import "./chunk-KYYL4U6X.js";
39
40
  import "./chunk-7WWURLG6.js";
40
41
  import "./chunk-MDJURR27.js";
41
42
  import "./chunk-7N4KAIGN.js";
42
43
  import "./chunk-TPDBFYEG.js";
43
- import "./chunk-KCYE2MZM.js";
44
44
  import "./chunk-TECVW3JP.js";
45
45
  import "./chunk-O7GOFAM3.js";
46
46
  import "./chunk-STOEE37X.js";
@@ -93,8 +93,8 @@ import "./chunk-6HEM6HTQ.js";
93
93
  import "./chunk-ZA2S2VLL.js";
94
94
  import "./chunk-B4XVLHJA.js";
95
95
  import "./chunk-EO5QWINU.js";
96
- import "./chunk-2PRQG7PV.js";
97
96
  import "./chunk-WIWPSQYU.js";
97
+ import "./chunk-2PRQG7PV.js";
98
98
  import "./chunk-2F6NP3NT.js";
99
99
  import "./chunk-TERNBNJB.js";
100
100
  import "./chunk-4FE2K57M.js";
@@ -149,21 +149,21 @@ import "./chunk-FF4KLI5W.js";
149
149
  import "./chunk-LLONI6PY.js";
150
150
  import "./chunk-CI7RKSRE.js";
151
151
  import "./chunk-6HMYUWXR.js";
152
- import "./chunk-CTOQEZSN.js";
153
- import "./chunk-2KAYTPPT.js";
152
+ import "./chunk-SAEZIIID.js";
153
+ import "./chunk-JPETDXED.js";
154
+ import "./chunk-5CEJH5ZN.js";
154
155
  import "./chunk-WRFKZEO6.js";
155
156
  import "./chunk-CYEPCZN5.js";
156
157
  import "./chunk-LQ6JI4VH.js";
157
158
  import "./chunk-SANZHXY2.js";
158
- import "./chunk-EHISUJFN.js";
159
- import "./chunk-5CEJH5ZN.js";
160
159
  import "./chunk-AER6MT24.js";
160
+ import "./chunk-EHISUJFN.js";
161
161
  import "./chunk-CINZGPSJ.js";
162
162
  import "./chunk-ZFXCQPNO.js";
163
- import "./chunk-DCWIQFNA.js";
163
+ import "./chunk-T422SYM6.js";
164
+ import "./chunk-SJHM6I4J.js";
164
165
  import "./chunk-XBZQRZ6G.js";
165
166
  import "./chunk-KCQA46NR.js";
166
- import "./chunk-SJHM6I4J.js";
167
167
  import "./chunk-K43PI6DQ.js";
168
168
  import "./chunk-YNQ6DFSV.js";
169
169
  import "./chunk-U33LWTQQ.js";
@@ -0,0 +1,167 @@
1
+ import { EvidencePackItem } from './evidence-pack.js';
2
+
3
+ /**
4
+ * Issue #1539 PR2 — the staged recall pipeline spine.
5
+ *
6
+ * The four recall pipelines (`targeted-fact-recall.ts`, `response-guidance-
7
+ * recall.ts`, `explicit-cue-recall.ts`, `event-order-recall.ts`) implement
8
+ * the same stage sequence — intent → candidate collection → dedup → rank →
9
+ * filter → slice → metadata insertion → token budgeting — with ~70%
10
+ * near-duplicate code. The most dangerous divergence is the sort
11
+ * comparator: guidance/targeted-fact sort `turnIndex` DESC (recency) while
12
+ * event-order sorts `turnIndex` ASC (chronological). The comparators are
13
+ * byte-identical except for this direction — copy-pasting into a new
14
+ * chronological pipeline silently inverts the ordering.
15
+ *
16
+ * This module centralizes the **dedup + score + threshold-filter + sort**
17
+ * stages behind one declared config object. Per-tier divergence (threshold
18
+ * value, sort direction, content transformation) becomes a declared config
19
+ * field instead of embedded code.
20
+ *
21
+ * **PR 2 scope:** extract the module with NO pipeline changes. PRs 3–6
22
+ * migrate each pipeline to call `unifiedDedupeAndRank` one at a time,
23
+ * re-running the characterization snapshots
24
+ * (`tests/recall-pipeline-unified.test.ts`) to verify byte-for-byte parity.
25
+ *
26
+ * Future PRs will add the remaining stages from the issue's Solution
27
+ * (`mergeAcrossLcmKeys`, `insertMetadata`) once the per-tier hooks are
28
+ * factored out of each pipeline.
29
+ *
30
+ * @see https://github.com/joshuaswarren/remnic/issues/1539
31
+ */
32
+
33
+ /** A ranked evidence item: an `EvidencePackItem` with a computed `rank`. */
34
+ interface RankedEvidenceItem extends EvidencePackItem {
35
+ rank: number;
36
+ }
37
+ /**
38
+ * Sort direction for the turn-index secondary key. This is the divergence
39
+ * issue #1539 identifies: relevance-ranked pipelines (targeted-fact,
40
+ * response-guidance) sort `turnIndex` DESC (recency — latest first); the
41
+ * chronological pipeline (event-order) sorts `turnIndex` ASC (earliest
42
+ * first). The rank primary key is ALWAYS DESC (higher rank first); only
43
+ * the `turnIndex` tiebreaker flips direction.
44
+ */
45
+ type TurnIndexSortDirection = "desc" | "asc";
46
+ /**
47
+ * Configuration for the unified dedup + score + threshold-filter + sort
48
+ * pass. Each pipeline declares its divergences as fields here instead of
49
+ * embedding them in pipeline-specific code.
50
+ *
51
+ * The issue's Solution defines the intended full config object
52
+ * (`RecallPipelineConfig`); this interface is extracted incrementally:
53
+ * - PR 2 (this PR): dedup/score/threshold/sort only
54
+ * - PRs 3–6: migrate each pipeline to consume the spine
55
+ * - future: add `mergeAcrossLcmKeys`, `insertMetadata` once the per-tier
56
+ * hooks are factored out of each pipeline
57
+ */
58
+ interface UnifiedRankConfig<TIntent> {
59
+ /** The user query — passed to the scorer. */
60
+ query: string;
61
+ /**
62
+ * Per-tier intent classification result (already computed by the caller;
63
+ * intent classification stays per-tier because it is genuinely
64
+ * per-tier per issue #1539 Pitfall 1).
65
+ */
66
+ intents: TIntent[];
67
+ /**
68
+ * Score an item using its ORIGINAL (pre-transform) content. Higher = more
69
+ * relevant. The return value becomes the item's `rank`. For pipelines
70
+ * that don't score (explicit-cue), pass a constant scorer — the config
71
+ * makes the no-scoring policy explicit.
72
+ */
73
+ scoreEvidence: (item: EvidencePackItem, query: string, intents: TIntent[]) => number;
74
+ /**
75
+ * Optional content transformation applied to each surviving item's
76
+ * OUTPUT content (NOT to the content the scorer sees). Per-tier
77
+ * cue-appenders go here:
78
+ * - targeted-fact: `appendNormalizedNumericCues`
79
+ * - response-guidance: `appendGuidanceCues`
80
+ * - event-order: `appendChronologicalCues`
81
+ *
82
+ * The dedup key uses the TRANSFORMED content. This is equivalent to
83
+ * deduping on original content for all existing pipelines because every
84
+ * transform is a deterministic append (same original → same transformed →
85
+ * same key; different originals → different transformed → different key).
86
+ */
87
+ transformContent?: (content: string, intents: TIntent[]) => string;
88
+ /**
89
+ * Whether to deduplicate by normalized (transformed) content in addition to
90
+ * id. Default `true` — matches targeted-fact, response-guidance, and
91
+ * explicit-cue, which all collapse later items sharing a normalized content
92
+ * key. Event-order sets this to `false`: its rank pass
93
+ * (`rankAndSelectEventOrderItems`) deduplicates by turn id only and keeps
94
+ * distinct turns even when two turns share the same cue-appended body
95
+ * (legitimate repeated turns in a chronological transcript). Making this a
96
+ * declared field prevents PR 6's migration from silently dropping valid
97
+ * turns (cursor bugbot a4299851).
98
+ */
99
+ dedupByContent?: boolean;
100
+ /**
101
+ * Items with `rank` below this threshold are dropped. `undefined` = no
102
+ * filter. Event-order declares `rankThreshold: 6` here instead of
103
+ * inlining an undocumented `.filter((item) => item.rank >= 6)` (the
104
+ * "hardcoded rank threshold that exists in no config and no other
105
+ * pipeline" from issue #1539's audit).
106
+ */
107
+ rankThreshold?: number;
108
+ /**
109
+ * Sort direction for the `turnIndex` secondary key.
110
+ *
111
+ * - `"desc"` (default): relevance-ranked pipelines (targeted-fact,
112
+ * response-guidance) sort `turnIndex` DESC. Undefined `turnIndex`
113
+ * falls to `-1` (bottom of a DESC list). Tertiary tiebreaker:
114
+ * `score DESC`.
115
+ * - `"asc"`: the chronological pipeline (event-order) sorts `turnIndex`
116
+ * ASC. Undefined `turnIndex` falls to `Number.MAX_SAFE_INTEGER`
117
+ * (bottom of an ASC list). Tertiary tiebreaker: `content.localeCompare`.
118
+ *
119
+ * The rank primary key is ALWAYS DESC regardless of this setting.
120
+ */
121
+ turnIndexSortDirection?: TurnIndexSortDirection;
122
+ }
123
+ /**
124
+ * Deduplicate, score, threshold-filter, and sort evidence items under one
125
+ * unified policy.
126
+ *
127
+ * **Stage order** (matches every existing pipeline's rank/dedupe function):
128
+ * 1. **dedup** by `id` + normalized content (first-seen wins). The dedup
129
+ * key uses transformed content if `transformContent` is declared.
130
+ * 2. **score** each surviving item on its ORIGINAL content (the transform
131
+ * does not influence the score).
132
+ * 3. **threshold-filter**: drop items with `rank < rankThreshold` (if
133
+ * declared).
134
+ * 4. **sort**: `rank DESC` → `turnIndex` (direction-configurable) →
135
+ * tertiary tiebreaker (`score DESC` for relevance pipelines,
136
+ * `content.localeCompare` for chronological pipelines).
137
+ *
138
+ * This function does NOT slice (`maxResults`), budget, or format — those
139
+ * stages remain per-tier because they interact with per-tier metadata
140
+ * insertion. The issue's Solution describes a future `insertMetadata` hook
141
+ * that will make budget-adjustment uniform; that lands in the per-tier
142
+ * migration PRs.
143
+ *
144
+ * @example
145
+ * // Relevance-ranked pipeline (targeted-fact shape):
146
+ * unifiedDedupeAndRank(items, {
147
+ * query,
148
+ * intents: [],
149
+ * scoreEvidence: (item, q) => scoreTargetedFact(item, q),
150
+ * transformContent: (content) => appendNormalizedNumericCues(content),
151
+ * // turnIndexSortDirection defaults to "desc"
152
+ * });
153
+ *
154
+ * @example
155
+ * // Chronological pipeline (event-order shape):
156
+ * unifiedDedupeAndRank(items, {
157
+ * query,
158
+ * intents: [],
159
+ * scoreEvidence: (item, q) => scoreEventOrder(item, q),
160
+ * transformContent: (content) => appendChronologicalCues(content, query),
161
+ * rankThreshold: 6, // declared, not inlined
162
+ * turnIndexSortDirection: "asc",
163
+ * });
164
+ */
165
+ declare function unifiedDedupeAndRank<TIntent>(items: readonly EvidencePackItem[], config: UnifiedRankConfig<TIntent>): RankedEvidenceItem[];
166
+
167
+ export { type RankedEvidenceItem, type TurnIndexSortDirection, type UnifiedRankConfig, unifiedDedupeAndRank };