@remnic/core 9.3.665 → 9.3.667

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 (150) hide show
  1. package/dist/access-audit.js +2 -2
  2. package/dist/access-cli.js +41 -40
  3. package/dist/access-cli.js.map +1 -1
  4. package/dist/access-http.d.ts +3 -2
  5. package/dist/access-http.js +25 -25
  6. package/dist/access-mcp.d.ts +3 -2
  7. package/dist/access-mcp.js +22 -22
  8. package/dist/access-schema.d.ts +36 -36
  9. package/dist/access-schema.js +3 -3
  10. package/dist/{access-service-D0SLB4MH.d.ts → access-service-BCuaiNHa.d.ts} +1 -1
  11. package/dist/access-service.d.ts +3 -2
  12. package/dist/access-service.js +21 -21
  13. package/dist/adapters/index.js +4 -4
  14. package/dist/adapters/registry.js +2 -2
  15. package/dist/bootstrap.d.ts +2 -1
  16. package/dist/briefing.js +4 -3
  17. package/dist/capabilities.d.ts +73 -0
  18. package/dist/capabilities.js +8 -0
  19. package/dist/capabilities.js.map +1 -0
  20. package/dist/causal-behavior.js +2 -2
  21. package/dist/causal-chain.js +2 -2
  22. package/dist/causal-consolidation.js +7 -6
  23. package/dist/causal-consolidation.js.map +1 -1
  24. package/dist/causal-retrieval.js +2 -2
  25. package/dist/causal-trajectory.js +1 -1
  26. package/dist/{chunk-ROHLEUTH.js → chunk-23EBQ27U.js} +5 -5
  27. package/dist/{chunk-YW52BQSU.js → chunk-2TCHDANJ.js} +2 -2
  28. package/dist/{chunk-IROWLAWG.js → chunk-46WUVFOD.js} +4 -4
  29. package/dist/{chunk-WH4SKYPX.js → chunk-4FJKKC2N.js} +107 -77
  30. package/dist/chunk-4FJKKC2N.js.map +1 -0
  31. package/dist/{chunk-7C4MPEPE.js → chunk-4T7P2HLJ.js} +3 -3
  32. package/dist/{chunk-7XH7VJN4.js → chunk-6T4LTI2F.js} +4 -4
  33. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  34. package/dist/{chunk-BZG2CWOQ.js → chunk-A5TEHAR4.js} +3 -3
  35. package/dist/{chunk-C7AF236A.js → chunk-AARDBQTA.js} +2 -2
  36. package/dist/{chunk-IHG6CC7T.js → chunk-BQJUPECT.js} +2 -2
  37. package/dist/{chunk-7OGJQP7T.js → chunk-CRO4LCQ6.js} +5 -5
  38. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  39. package/dist/{chunk-UXA5L2DZ.js → chunk-HQCGRSRU.js} +2 -2
  40. package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
  41. package/dist/{chunk-XW3W4PV4.js → chunk-JTPXSXHC.js} +2 -2
  42. package/dist/{chunk-OHJFJ4HI.js → chunk-KOXGLQS7.js} +2 -2
  43. package/dist/{chunk-2OPARZ4B.js → chunk-MPXYHC35.js} +26 -26
  44. package/dist/{chunk-6JBKHTQD.js → chunk-MR4PJ277.js} +2 -2
  45. package/dist/{chunk-EXXBA5OM.js → chunk-OI4BXFSB.js} +4 -4
  46. package/dist/{chunk-SQZ42MKH.js → chunk-OQH5XUH3.js} +6 -3
  47. package/dist/chunk-OQH5XUH3.js.map +1 -0
  48. package/dist/{chunk-2HEZXPYU.js → chunk-Q2LQZYQ7.js} +3 -3
  49. package/dist/{chunk-XRSIGVTS.js → chunk-QHWJG5C5.js} +8 -8
  50. package/dist/{chunk-T2AN3BSP.js → chunk-QZ7ODIVL.js} +2 -2
  51. package/dist/chunk-RI5XBIZ6.js +23 -0
  52. package/dist/chunk-RI5XBIZ6.js.map +1 -0
  53. package/dist/{chunk-D7IXTY5E.js → chunk-TJ7HH5LB.js} +2 -2
  54. package/dist/{chunk-V25ZAOSB.js → chunk-UOBLE67F.js} +4 -4
  55. package/dist/{chunk-JIX3ZL2J.js → chunk-UVUTV7CM.js} +15 -15
  56. package/dist/{chunk-VH6EIKVS.js → chunk-WKMCC4NQ.js} +35 -16
  57. package/dist/chunk-WKMCC4NQ.js.map +1 -0
  58. package/dist/{chunk-SSOMTUCA.js → chunk-WXGTC424.js} +1 -1
  59. package/dist/{chunk-KHGE6PMF.js → chunk-WXXLSZHA.js} +2 -2
  60. package/dist/{chunk-DSLUOQDY.js → chunk-XMWF6AU3.js} +2 -2
  61. package/dist/{chunk-DQY7NJ5L.js → chunk-XS2CWEHZ.js} +2 -2
  62. package/dist/{cli-BQRqR9N-.d.ts → cli-C98xlwYA.d.ts} +2 -2
  63. package/dist/cli.d.ts +4 -3
  64. package/dist/cli.js +42 -42
  65. package/dist/compounding/engine.js +4 -3
  66. package/dist/connectors/codex-materialize-runner.js +4 -3
  67. package/dist/connectors/index.js +4 -3
  68. package/dist/consolidation-provenance-check.js +2 -2
  69. package/dist/conversation-index/backend.js +2 -2
  70. package/dist/dashboard-runtime.js +2 -2
  71. package/dist/direct-answer-wiring.d.ts +13 -3
  72. package/dist/direct-answer-wiring.js +1 -1
  73. package/dist/entity-retrieval.js +4 -3
  74. package/dist/explicit-capture.d.ts +2 -1
  75. package/dist/index.d.ts +5 -4
  76. package/dist/index.js +66 -65
  77. package/dist/index.js.map +1 -1
  78. package/dist/lcm/engine.js +2 -2
  79. package/dist/lcm/index.js +4 -4
  80. package/dist/maintenance/memory-governance.js +4 -4
  81. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -3
  82. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  83. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  84. package/dist/namespaces/migrate.js +11 -11
  85. package/dist/namespaces/search.js +7 -7
  86. package/dist/namespaces/storage.js +4 -3
  87. package/dist/operator-toolkit.js +15 -15
  88. package/dist/{orchestrator-Cg1UkvmO.d.ts → orchestrator-DyP9QYsh.d.ts} +16 -0
  89. package/dist/orchestrator.d.ts +2 -1
  90. package/dist/orchestrator.js +32 -31
  91. package/dist/recall-planner-llm.d.ts +2 -1
  92. package/dist/recall-planner-llm.js +3 -2
  93. package/dist/recall-planner-llm.js.map +1 -1
  94. package/dist/schemas.d.ts +64 -64
  95. package/dist/search/factory.js +6 -6
  96. package/dist/search/index.js +10 -10
  97. package/dist/search/lancedb-backend.js +1 -1
  98. package/dist/search/meilisearch-backend.js +1 -1
  99. package/dist/search/orama-backend.js +1 -1
  100. package/dist/semantic-consolidation.js +5 -4
  101. package/dist/semantic-rule-promotion.js +4 -3
  102. package/dist/semantic-rule-verifier.js +4 -3
  103. package/dist/shared-context/manager.d.ts +2 -2
  104. package/dist/storage.js +3 -2
  105. package/dist/transfer/backup.js +2 -2
  106. package/dist/transfer/capsule-export.js +2 -2
  107. package/dist/transfer/capsule-import.js +1 -1
  108. package/dist/transfer/types.d.ts +12 -12
  109. package/dist/verified-recall.js +4 -3
  110. package/package.json +1 -1
  111. package/src/capabilities.test.ts +97 -0
  112. package/src/capabilities.ts +86 -0
  113. package/src/direct-answer-wiring.test.ts +53 -2
  114. package/src/direct-answer-wiring.ts +18 -5
  115. package/src/orchestrator.ts +83 -22
  116. package/src/recall-planner-llm.test.ts +12 -11
  117. package/src/recall-planner-llm.ts +7 -1
  118. package/src/storage-fallback-category-dirs.test.ts +150 -1
  119. package/src/storage.ts +51 -14
  120. package/dist/chunk-SQZ42MKH.js.map +0 -1
  121. package/dist/chunk-VH6EIKVS.js.map +0 -1
  122. package/dist/chunk-WH4SKYPX.js.map +0 -1
  123. /package/dist/{chunk-ROHLEUTH.js.map → chunk-23EBQ27U.js.map} +0 -0
  124. /package/dist/{chunk-YW52BQSU.js.map → chunk-2TCHDANJ.js.map} +0 -0
  125. /package/dist/{chunk-IROWLAWG.js.map → chunk-46WUVFOD.js.map} +0 -0
  126. /package/dist/{chunk-7C4MPEPE.js.map → chunk-4T7P2HLJ.js.map} +0 -0
  127. /package/dist/{chunk-7XH7VJN4.js.map → chunk-6T4LTI2F.js.map} +0 -0
  128. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  129. /package/dist/{chunk-BZG2CWOQ.js.map → chunk-A5TEHAR4.js.map} +0 -0
  130. /package/dist/{chunk-C7AF236A.js.map → chunk-AARDBQTA.js.map} +0 -0
  131. /package/dist/{chunk-IHG6CC7T.js.map → chunk-BQJUPECT.js.map} +0 -0
  132. /package/dist/{chunk-7OGJQP7T.js.map → chunk-CRO4LCQ6.js.map} +0 -0
  133. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  134. /package/dist/{chunk-UXA5L2DZ.js.map → chunk-HQCGRSRU.js.map} +0 -0
  135. /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
  136. /package/dist/{chunk-XW3W4PV4.js.map → chunk-JTPXSXHC.js.map} +0 -0
  137. /package/dist/{chunk-OHJFJ4HI.js.map → chunk-KOXGLQS7.js.map} +0 -0
  138. /package/dist/{chunk-2OPARZ4B.js.map → chunk-MPXYHC35.js.map} +0 -0
  139. /package/dist/{chunk-6JBKHTQD.js.map → chunk-MR4PJ277.js.map} +0 -0
  140. /package/dist/{chunk-EXXBA5OM.js.map → chunk-OI4BXFSB.js.map} +0 -0
  141. /package/dist/{chunk-2HEZXPYU.js.map → chunk-Q2LQZYQ7.js.map} +0 -0
  142. /package/dist/{chunk-XRSIGVTS.js.map → chunk-QHWJG5C5.js.map} +0 -0
  143. /package/dist/{chunk-T2AN3BSP.js.map → chunk-QZ7ODIVL.js.map} +0 -0
  144. /package/dist/{chunk-D7IXTY5E.js.map → chunk-TJ7HH5LB.js.map} +0 -0
  145. /package/dist/{chunk-V25ZAOSB.js.map → chunk-UOBLE67F.js.map} +0 -0
  146. /package/dist/{chunk-JIX3ZL2J.js.map → chunk-UVUTV7CM.js.map} +0 -0
  147. /package/dist/{chunk-SSOMTUCA.js.map → chunk-WXGTC424.js.map} +0 -0
  148. /package/dist/{chunk-KHGE6PMF.js.map → chunk-WXXLSZHA.js.map} +0 -0
  149. /package/dist/{chunk-DSLUOQDY.js.map → chunk-XMWF6AU3.js.map} +0 -0
  150. /package/dist/{chunk-DQY7NJ5L.js.map → chunk-XS2CWEHZ.js.map} +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-666A3MOW.js";
20
20
  import {
21
21
  LcmEngine
22
- } from "./chunk-V25ZAOSB.js";
22
+ } from "./chunk-UOBLE67F.js";
23
23
  import {
24
24
  chunkTranscriptEntries
25
25
  } from "./chunk-TECVW3JP.js";
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  CompoundingEngine,
31
31
  defaultTierMigrationCycleBudget
32
- } from "./chunk-OHJFJ4HI.js";
32
+ } from "./chunk-KOXGLQS7.js";
33
33
  import {
34
34
  SharedContextManager
35
35
  } from "./chunk-DRD2Q7HQ.js";
@@ -38,6 +38,14 @@ import {
38
38
  applyUtilityRankingRuntimeDelta,
39
39
  loadUtilityRuntimeValues
40
40
  } from "./chunk-LXOM6IQU.js";
41
+ import {
42
+ applyTemporalSupersession,
43
+ normalizeSupersessionKey,
44
+ shouldFilterSupersededFromRecall
45
+ } from "./chunk-YTWNKQ2G.js";
46
+ import {
47
+ isValidAsOf
48
+ } from "./chunk-MDYG7VI7.js";
41
49
  import {
42
50
  TierMigrationExecutor
43
51
  } from "./chunk-VOUOLGIP.js";
@@ -57,17 +65,13 @@ import {
57
65
  buildTargetedFactRecallSection,
58
66
  shouldRecallTargetedFactEvidence
59
67
  } from "./chunk-R5DB26G6.js";
60
- import {
61
- applyTemporalSupersession,
62
- normalizeSupersessionKey,
63
- shouldFilterSupersededFromRecall
64
- } from "./chunk-YTWNKQ2G.js";
65
- import {
66
- isValidAsOf
67
- } from "./chunk-MDYG7VI7.js";
68
68
  import {
69
69
  SessionObserverState
70
70
  } from "./chunk-MHQC2WU2.js";
71
+ import {
72
+ RerankCache,
73
+ rerankLocalOrNoop
74
+ } from "./chunk-E3VODCC3.js";
71
75
  import {
72
76
  buildResponseGuidanceRecallSection,
73
77
  shouldRecallResponseGuidance
@@ -99,10 +103,6 @@ import {
99
103
  import {
100
104
  RelevanceStore
101
105
  } from "./chunk-452WDNFO.js";
102
- import {
103
- RerankCache,
104
- rerankLocalOrNoop
105
- } from "./chunk-E3VODCC3.js";
106
106
  import {
107
107
  reorderRecallResultsWithMmr
108
108
  } from "./chunk-YDBIWGNI.js";
@@ -120,6 +120,9 @@ import {
120
120
  import {
121
121
  NegativeExampleStore
122
122
  } from "./chunk-XKXKSQU7.js";
123
+ import {
124
+ evaluateMemoryActionPolicy
125
+ } from "./chunk-H63EDPFJ.js";
123
126
  import {
124
127
  applyMemoryWorthFilter,
125
128
  buildMemoryWorthCounterMap
@@ -128,8 +131,8 @@ import {
128
131
  runLiveConnectorsOnce
129
132
  } from "./chunk-VU3SVYMA.js";
130
133
  import {
131
- evaluateMemoryActionPolicy
132
- } from "./chunk-H63EDPFJ.js";
134
+ classifyMemoryKind
135
+ } from "./chunk-YAZNBMNF.js";
133
136
  import {
134
137
  hasBroadGraphIntent,
135
138
  inferIntentFromText,
@@ -137,9 +140,6 @@ import {
137
140
  isTaskInitiationIntent,
138
141
  planRecallMode
139
142
  } from "./chunk-PD6O7AXF.js";
140
- import {
141
- classifyMemoryKind
142
- } from "./chunk-YAZNBMNF.js";
143
143
  import {
144
144
  recordJudgeTrainingPair
145
145
  } from "./chunk-7YX23JBA.js";
@@ -166,11 +166,14 @@ import {
166
166
  buildFocusedListRecallSection,
167
167
  shouldRecallFocusedListEvidence
168
168
  } from "./chunk-LZTFCAKE.js";
169
+ import {
170
+ EmbeddingFallback
171
+ } from "./chunk-XCAZF7KQ.js";
169
172
  import {
170
173
  buildEntityRecallSection,
171
174
  entityRecentTranscriptLookbackHours,
172
175
  readRecentEntityTranscriptEntries
173
- } from "./chunk-T2AN3BSP.js";
176
+ } from "./chunk-QZ7ODIVL.js";
174
177
  import {
175
178
  buildEventOrderRecallSection,
176
179
  shouldRecallEventOrderEvidence
@@ -183,10 +186,7 @@ import {
183
186
  } from "./chunk-WLEB7WCG.js";
184
187
  import {
185
188
  tryDirectAnswer
186
- } from "./chunk-SQZ42MKH.js";
187
- import {
188
- EmbeddingFallback
189
- } from "./chunk-XCAZF7KQ.js";
189
+ } from "./chunk-OQH5XUH3.js";
190
190
  import {
191
191
  CODEX_THREAD_KEY_PREFIX
192
192
  } from "./chunk-3PG3H5TD.js";
@@ -205,24 +205,24 @@ import {
205
205
  materializeAfterSemanticConsolidation,
206
206
  parseConsolidationResponse,
207
207
  parseOperatorAwareConsolidationResponse
208
- } from "./chunk-XW3W4PV4.js";
209
- import {
210
- normalizeReplaySessionKey
211
- } from "./chunk-2PRQG7PV.js";
208
+ } from "./chunk-JTPXSXHC.js";
212
209
  import {
213
210
  RoutingRulesStore
214
211
  } from "./chunk-X6IRLNOO.js";
212
+ import {
213
+ normalizeReplaySessionKey
214
+ } from "./chunk-2PRQG7PV.js";
215
215
  import {
216
216
  compareVerifiedEpisodeResults,
217
217
  searchVerifiedEpisodes
218
- } from "./chunk-YW52BQSU.js";
218
+ } from "./chunk-2TCHDANJ.js";
219
219
  import {
220
220
  ThreadingManager
221
221
  } from "./chunk-W4RVMTHR.js";
222
222
  import {
223
223
  compareVerifiedSemanticRuleResults,
224
224
  searchVerifiedSemanticRules
225
- } from "./chunk-DSLUOQDY.js";
225
+ } from "./chunk-XMWF6AU3.js";
226
226
  import {
227
227
  searchWorkProductLedgerEntries
228
228
  } from "./chunk-ZRWB5D4H.js";
@@ -236,7 +236,7 @@ import {
236
236
  NamespaceStorageRouter,
237
237
  resolveDefaultNamespaceRoot,
238
238
  resolveNamespaceStorageRoot
239
- } from "./chunk-D7IXTY5E.js";
239
+ } from "./chunk-TJ7HH5LB.js";
240
240
  import {
241
241
  isAboveImportanceThreshold,
242
242
  scoreImportance
@@ -244,6 +244,10 @@ import {
244
244
  import {
245
245
  searchHarmonicRetrieval
246
246
  } from "./chunk-AV5ZEH4M.js";
247
+ import {
248
+ EXTRACTION_JUDGE_VERDICT_CATEGORY,
249
+ recordJudgeVerdict
250
+ } from "./chunk-AJU4PJGY.js";
247
251
  import {
248
252
  collectNativeKnowledgeChunks,
249
253
  formatNativeKnowledgeSection,
@@ -252,10 +256,6 @@ import {
252
256
  import {
253
257
  recordEvalShadowRecall
254
258
  } from "./chunk-3PY7VHV7.js";
255
- import {
256
- EXTRACTION_JUDGE_VERDICT_CATEGORY,
257
- recordJudgeVerdict
258
- } from "./chunk-AJU4PJGY.js";
259
259
  import {
260
260
  applyCommitmentLedgerLifecycle
261
261
  } from "./chunk-LMDRGRJ2.js";
@@ -273,6 +273,9 @@ import {
273
273
  fallbackLlmRuntimeContextFromConfig,
274
274
  gatewayTaskChainOptions
275
275
  } from "./chunk-LCC5EZTT.js";
276
+ import {
277
+ resolveCapabilities
278
+ } from "./chunk-RI5XBIZ6.js";
276
279
  import {
277
280
  compileCorrectionRule,
278
281
  correctionsFilePath,
@@ -319,11 +322,11 @@ import {
319
322
  } from "./chunk-2MXEVL75.js";
320
323
  import {
321
324
  NamespaceSearchRouter
322
- } from "./chunk-DQY7NJ5L.js";
325
+ } from "./chunk-XS2CWEHZ.js";
323
326
  import {
324
327
  createConversationIndexRuntime,
325
328
  createSearchBackend
326
- } from "./chunk-ROHLEUTH.js";
329
+ } from "./chunk-23EBQ27U.js";
327
330
  import {
328
331
  NoopSearchBackend
329
332
  } from "./chunk-CYEPCZN5.js";
@@ -332,9 +335,6 @@ import {
332
335
  namespaceIdentityToken,
333
336
  normalizeNamespaceIdentity
334
337
  } from "./chunk-ZFXCQPNO.js";
335
- import {
336
- assertPathInsideRoot
337
- } from "./chunk-5GPPACXK.js";
338
338
  import {
339
339
  writeConversationChunks
340
340
  } from "./chunk-OIF36KGD.js";
@@ -359,7 +359,7 @@ import {
359
359
  } from "./chunk-Y56J7CXW.js";
360
360
  import {
361
361
  buildChainFollowupGenerator
362
- } from "./chunk-KHGE6PMF.js";
362
+ } from "./chunk-WXXLSZHA.js";
363
363
  import {
364
364
  ContentHashIndex,
365
365
  StorageManager,
@@ -368,7 +368,7 @@ import {
368
368
  normalizeAttributePairs,
369
369
  parseEntityFile,
370
370
  stripAttributesSuffix
371
- } from "./chunk-VH6EIKVS.js";
371
+ } from "./chunk-WKMCC4NQ.js";
372
372
  import {
373
373
  isValidTranscriptDate,
374
374
  loadSpeakerRegistry,
@@ -376,6 +376,9 @@ import {
376
376
  saveSpeakerRegistry,
377
377
  speakerRegistryKey
378
378
  } from "./chunk-M7XQSUBB.js";
379
+ import {
380
+ assertPathInsideRoot
381
+ } from "./chunk-5GPPACXK.js";
379
382
  import {
380
383
  attachCitation,
381
384
  hasCitationForTemplate,
@@ -405,7 +408,7 @@ import {
405
408
  } from "./chunk-FVQJYWH7.js";
406
409
  import {
407
410
  searchCausalTrajectories
408
- } from "./chunk-SSOMTUCA.js";
411
+ } from "./chunk-WXGTC424.js";
409
412
  import {
410
413
  canReadNamespace,
411
414
  defaultNamespaceForPrincipal,
@@ -3968,7 +3971,8 @@ function resolveRecallModeDecision(options) {
3968
3971
  }
3969
3972
  async function resolveRecallModeDecisionAsync(options) {
3970
3973
  const heuristicDecision = resolveRecallModeDecision(options);
3971
- if (!options.plannerEnabled || !options.config.recallPlannerLlmEnabled) {
3974
+ const plannerLlmEnabled = options.caps?.recallPlannerLlm ?? options.config.recallPlannerLlmEnabled;
3975
+ if (!options.plannerEnabled || !plannerLlmEnabled) {
3972
3976
  return heuristicDecision;
3973
3977
  }
3974
3978
  const { planRecallModeLLM } = await import("./recall-planner-llm.js");
@@ -3977,7 +3981,8 @@ async function resolveRecallModeDecisionAsync(options) {
3977
3981
  options.hints,
3978
3982
  options.config,
3979
3983
  options.llm,
3980
- options.signal
3984
+ options.signal,
3985
+ options.caps
3981
3986
  );
3982
3987
  if (options.config.recallPlannerShadowMode) {
3983
3988
  return {
@@ -7081,6 +7086,7 @@ ${r.snippet.trim()}
7081
7086
  }
7082
7087
  }
7083
7088
  async recall(prompt, sessionKey, options = {}) {
7089
+ const caps = resolveCapabilities(this.config);
7084
7090
  const abortController = new AbortController();
7085
7091
  const onAbort = () => {
7086
7092
  abortController.abort();
@@ -7134,7 +7140,7 @@ ${r.snippet.trim()}
7134
7140
  const recallPromise = this.recallInternal(prompt, sessionKey, {
7135
7141
  ...options,
7136
7142
  abortSignal: abortController.signal
7137
- });
7143
+ }, caps);
7138
7144
  const RECALL_TIMEOUT_MS = this.config.recallOuterTimeoutMs ?? 75e3;
7139
7145
  if (RECALL_TIMEOUT_MS <= 0) {
7140
7146
  return await recallPromise;
@@ -7152,13 +7158,14 @@ ${r.snippet.trim()}
7152
7158
  } finally {
7153
7159
  if (timeoutHandle) clearTimeout(timeoutHandle);
7154
7160
  }
7155
- if (this.config.recallDirectAnswerEnabled && sessionKey) {
7161
+ if (caps.recallDirectAnswer && sessionKey) {
7156
7162
  try {
7157
7163
  this.enqueueDirectAnswerObservation(
7158
7164
  prompt,
7159
7165
  sessionKey,
7160
7166
  options.namespace?.trim() || void 0,
7161
- options.principalOverride
7167
+ options.principalOverride,
7168
+ caps
7162
7169
  );
7163
7170
  } catch (err) {
7164
7171
  log.debug(`direct-answer observation setup failed: ${err}`);
@@ -7213,7 +7220,7 @@ ${r.snippet.trim()}
7213
7220
  if (timeoutHandle) clearTimeout(timeoutHandle);
7214
7221
  }
7215
7222
  }
7216
- enqueueDirectAnswerObservation(prompt, sessionKey, namespaceOverride, principalOverride) {
7223
+ enqueueDirectAnswerObservation(prompt, sessionKey, namespaceOverride, principalOverride, caps) {
7217
7224
  const expectedSnapshot = this.lastRecall.get(sessionKey);
7218
7225
  if (expectedSnapshot === null) return;
7219
7226
  if (expectedSnapshot.plannerMode === "no_recall") return;
@@ -7271,6 +7278,7 @@ ${r.snippet.trim()}
7271
7278
  sessionKey,
7272
7279
  observationNamespaces,
7273
7280
  expectedIdentity,
7281
+ caps,
7274
7282
  void 0
7275
7283
  );
7276
7284
  } catch (err) {
@@ -7278,7 +7286,7 @@ ${r.snippet.trim()}
7278
7286
  }
7279
7287
  });
7280
7288
  }
7281
- async annotateDirectAnswerTier(prompt, sessionKey, namespaces, expectedIdentity, _parentAbortSignal) {
7289
+ async annotateDirectAnswerTier(prompt, sessionKey, namespaces, expectedIdentity, caps, _parentAbortSignal) {
7282
7290
  const tierStart = Date.now();
7283
7291
  try {
7284
7292
  if (namespaces.length === 0) return;
@@ -7339,6 +7347,7 @@ ${r.snippet.trim()}
7339
7347
  query: prompt,
7340
7348
  namespace: ns,
7341
7349
  config: this.config,
7350
+ enabled: caps.recallDirectAnswer,
7342
7351
  sources
7343
7352
  });
7344
7353
  if (r.eligible && r.winner) {
@@ -8203,7 +8212,17 @@ ${r.snippet.trim()}
8203
8212
  finalChars: usedChars
8204
8213
  };
8205
8214
  }
8206
- async recallInternal(prompt, sessionKey, options = {}) {
8215
+ /**
8216
+ * Clock source for the shared post-retrieval assembly/enrichment budget. The
8217
+ * deadline is set from this value and every expiry check reads it back, so a
8218
+ * test can drive the budget deterministically instead of racing the few-ms
8219
+ * wall-clock window that made the "skips … after budget expires" tests flaky.
8220
+ * Production behavior is unchanged — it returns the wall clock.
8221
+ */
8222
+ recallAssemblyClockMs() {
8223
+ return Date.now();
8224
+ }
8225
+ async recallInternal(prompt, sessionKey, options = {}, caps = resolveCapabilities(this.config)) {
8207
8226
  const recallStart = Date.now();
8208
8227
  const backendDegradations = [];
8209
8228
  let asOfMs;
@@ -8299,16 +8318,17 @@ ${r.snippet.trim()}
8299
8318
  let identityInjectionTruncated = false;
8300
8319
  timings.queryPolicy = `${queryPolicy.promptShape}/${queryPolicy.retrievalBudgetMode}${queryPolicy.skipConversationRecall ? "/skip-conv" : ""}`;
8301
8320
  const recallModeDecisionOptions = {
8302
- plannerEnabled: this.config.recallPlannerEnabled,
8303
- graphRecallEnabled: this.config.graphRecallEnabled,
8321
+ plannerEnabled: caps.recallPlanner,
8322
+ graphRecallEnabled: caps.graphRecall,
8304
8323
  multiGraphMemoryEnabled: this.config.multiGraphMemoryEnabled,
8305
- graphExpandedIntentEnabled: this.config.graphExpandedIntentEnabled === true,
8324
+ graphExpandedIntentEnabled: caps.graphExpandedIntent,
8306
8325
  prompt
8307
8326
  };
8308
8327
  const requestedMode = options.mode;
8309
8328
  const recallDecision = requestedMode !== void 0 ? resolveRecallModeDecision(recallModeDecisionOptions) : await resolveRecallModeDecisionAsync({
8310
8329
  ...recallModeDecisionOptions,
8311
8330
  config: this.config,
8331
+ caps,
8312
8332
  signal: options.abortSignal
8313
8333
  });
8314
8334
  if (this.config.recallPlannerTelemetryEnabled && recallDecision.plannerSource && recallDecision.plannerSource !== "heuristic") {
@@ -8468,7 +8488,7 @@ ${r.snippet.trim()}
8468
8488
  promptLength: prompt.length,
8469
8489
  retrievalQueryHash,
8470
8490
  retrievalQueryLength: retrievalQuery.length,
8471
- plannerEnabled: this.config.recallPlannerEnabled,
8491
+ plannerEnabled: caps.recallPlanner,
8472
8492
  plannedMode: requestedMode ?? recallDecision.plannedMode,
8473
8493
  effectiveMode: recallMode,
8474
8494
  recallResultLimit,
@@ -8479,7 +8499,7 @@ ${r.snippet.trim()}
8479
8499
  reason: graphDecisionReason,
8480
8500
  shadowMode: graphDecisionShadowMode,
8481
8501
  qmdAvailable,
8482
- graphRecallEnabled: this.config.graphRecallEnabled,
8502
+ graphRecallEnabled: caps.graphRecall,
8483
8503
  multiGraphMemoryEnabled: this.config.multiGraphMemoryEnabled
8484
8504
  }
8485
8505
  });
@@ -10450,7 +10470,7 @@ ${formatted}`;
10450
10470
  `recall phase-1: core work done at +${Date.now() - recallStart}ms (phase took ${Date.now() - phase1Start}ms); continuing with incremental enrichment assembly`
10451
10471
  );
10452
10472
  throwIfRecallAborted(options.abortSignal);
10453
- const enrichmentAssemblyDeadlineAtMs = enrichmentSectionDeadlineMs > 0 ? Date.now() + enrichmentSectionDeadlineMs : null;
10473
+ const enrichmentAssemblyDeadlineAtMs = enrichmentSectionDeadlineMs > 0 ? this.recallAssemblyClockMs() + enrichmentSectionDeadlineMs : null;
10454
10474
  const awaitEnrichmentSection = async (name, promise) => {
10455
10475
  const finalizeEnrichmentOutcome = (outcome2) => {
10456
10476
  if (outcome2.status === "resolved") {
@@ -10478,7 +10498,7 @@ ${formatted}`;
10478
10498
  return null;
10479
10499
  }
10480
10500
  let timeoutHandle;
10481
- const timeoutMs = enrichmentAssemblyDeadlineAtMs === null ? null : Math.max(0, enrichmentAssemblyDeadlineAtMs - Date.now());
10501
+ const timeoutMs = enrichmentAssemblyDeadlineAtMs === null ? null : Math.max(0, enrichmentAssemblyDeadlineAtMs - this.recallAssemblyClockMs());
10482
10502
  if (timeoutMs === 0) {
10483
10503
  const settledOutcome = promise.getSettledOutcome();
10484
10504
  if (settledOutcome) {
@@ -10512,7 +10532,7 @@ ${formatted}`;
10512
10532
  }
10513
10533
  return finalizeEnrichmentOutcome(outcome);
10514
10534
  };
10515
- const remainingEnrichmentAssemblyMs = () => enrichmentAssemblyDeadlineAtMs === null ? null : Math.max(0, enrichmentAssemblyDeadlineAtMs - Date.now());
10535
+ const remainingEnrichmentAssemblyMs = () => enrichmentAssemblyDeadlineAtMs === null ? null : Math.max(0, enrichmentAssemblyDeadlineAtMs - this.recallAssemblyClockMs());
10516
10536
  const awaitAssemblyStep = async (name, task, fallback) => {
10517
10537
  if (options.abortSignal?.aborted) {
10518
10538
  log.debug(
@@ -10974,7 +10994,7 @@ ${tmtNode.summary}`
10974
10994
  memoryResults = memoryResults.filter(
10975
10995
  (r) => !isArtifactMemoryPath(r.path)
10976
10996
  );
10977
- const isFullModeGraphAssist = this.config.multiGraphMemoryEnabled && this.config.graphAssistInFullModeEnabled !== false && recallMode === "full" && memoryResults.length >= Math.max(1, this.config.graphAssistMinSeedResults ?? 3);
10997
+ const isFullModeGraphAssist = this.config.multiGraphMemoryEnabled && caps.graphAssistInFullMode && recallMode === "full" && memoryResults.length >= Math.max(1, this.config.graphAssistMinSeedResults ?? 3);
10978
10998
  const shouldRunGraphExpansion = recallMode === "graph_mode" || isFullModeGraphAssist;
10979
10999
  const graphShadowEvalEnabled = isFullModeGraphAssist && this.config.graphAssistShadowEvalEnabled === true;
10980
11000
  if (shouldRunGraphExpansion) {
@@ -11117,7 +11137,7 @@ ${tmtNode.summary}`
11117
11137
  timeoutMs: this.config.rerankTimeoutMs,
11118
11138
  maxCandidates: this.config.rerankMaxCandidates,
11119
11139
  cache: this.rerankCache,
11120
- cacheEnabled: this.config.rerankCacheEnabled,
11140
+ cacheEnabled: caps.rerankCache,
11121
11141
  cacheTtlMs: this.config.rerankCacheTtlMs
11122
11142
  });
11123
11143
  if (ranked && ranked.length > 0) {
@@ -11139,7 +11159,7 @@ ${tmtNode.summary}`
11139
11159
  "rerankProvider=cloud is reserved/experimental in v2.2.0; skipping rerank"
11140
11160
  );
11141
11161
  }
11142
- if (this.config.recallMemoryWorthFilterEnabled && memoryResults.length > 0) {
11162
+ if (caps.recallMemoryWorthFilter && memoryResults.length > 0) {
11143
11163
  try {
11144
11164
  memoryResults = await this.applyMemoryWorthRerank(memoryResults, recallNamespaces);
11145
11165
  } catch (err) {
@@ -11152,7 +11172,7 @@ ${tmtNode.summary}`
11152
11172
  memoryResults.length
11153
11173
  );
11154
11174
  let confidenceGateRejected = false;
11155
- if (this.config.recallConfidenceGateEnabled && effectiveGateScore > 0) {
11175
+ if (caps.recallConfidenceGate && effectiveGateScore > 0) {
11156
11176
  if (effectiveGateScore < this.config.recallConfidenceGateThreshold) {
11157
11177
  log.debug(
11158
11178
  `recall: confidence gate rejected ${memoryResults.length} results (effective score ${effectiveGateScore.toFixed(3)} below ${this.config.recallConfidenceGateThreshold})`
@@ -11165,7 +11185,8 @@ ${tmtNode.summary}`
11165
11185
  "memories",
11166
11186
  memoryResults,
11167
11187
  recallResultLimit,
11168
- retrievalQuery
11188
+ retrievalQuery,
11189
+ caps
11169
11190
  );
11170
11191
  if (this.config.memoryReconstructionEnabled && memoryResults.length > 0) {
11171
11192
  try {
@@ -11265,7 +11286,8 @@ ${tmtNode.summary}`
11265
11286
  "memories",
11266
11287
  boostedScoped,
11267
11288
  recallResultLimit,
11268
- retrievalQuery
11289
+ retrievalQuery,
11290
+ caps
11269
11291
  );
11270
11292
  },
11271
11293
  []
@@ -11301,6 +11323,7 @@ ${tmtNode.summary}`
11301
11323
  recallNamespaces,
11302
11324
  recallResultLimit,
11303
11325
  recallMode,
11326
+ caps,
11304
11327
  queryAwarePrefilter,
11305
11328
  abortSignal: options.abortSignal,
11306
11329
  onDegradation: (degradation) => {
@@ -11409,7 +11432,8 @@ ${tmtNode.summary}`
11409
11432
  "memories",
11410
11433
  boostedScoped,
11411
11434
  recallResultLimit,
11412
- retrievalQuery
11435
+ retrievalQuery,
11436
+ caps
11413
11437
  );
11414
11438
  },
11415
11439
  []
@@ -11472,6 +11496,7 @@ ${tmtNode.summary}`
11472
11496
  recallNamespaces,
11473
11497
  recallResultLimit,
11474
11498
  recallMode,
11499
+ caps,
11475
11500
  queryAwarePrefilter,
11476
11501
  abortSignal: options.abortSignal,
11477
11502
  onDegradation: (degradation) => {
@@ -11535,7 +11560,8 @@ ${tmtNode.summary}`
11535
11560
  "memories",
11536
11561
  boostedRecent,
11537
11562
  recallResultLimit,
11538
- retrievalQuery
11563
+ retrievalQuery,
11564
+ caps
11539
11565
  );
11540
11566
  },
11541
11567
  []
@@ -11571,6 +11597,7 @@ ${tmtNode.summary}`
11571
11597
  recallNamespaces,
11572
11598
  recallResultLimit,
11573
11599
  recallMode,
11600
+ caps,
11574
11601
  queryAwarePrefilter,
11575
11602
  abortSignal: options.abortSignal,
11576
11603
  onDegradation: (degradation) => {
@@ -11615,6 +11642,7 @@ ${tmtNode.summary}`
11615
11642
  recallNamespaces,
11616
11643
  recallResultLimit,
11617
11644
  recallMode,
11645
+ caps,
11618
11646
  queryAwarePrefilter,
11619
11647
  abortSignal: options.abortSignal,
11620
11648
  onDegradation: (degradation) => {
@@ -16122,15 +16150,15 @@ ${lines.join("\n\n")}`;
16122
16150
  }
16123
16151
  return reordered;
16124
16152
  }
16125
- diversifyAndLimitRecallResults(sectionId, results, limit, retrievalQuery) {
16153
+ diversifyAndLimitRecallResults(sectionId, results, limit, retrievalQuery, caps = resolveCapabilities(this.config)) {
16126
16154
  const safeLimit = typeof limit === "number" && Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : 0;
16127
16155
  if (!Array.isArray(results) || results.length === 0) return [];
16128
16156
  if (safeLimit === 0) return [];
16129
- const boosted = this.config.recallReasoningTraceBoostEnabled && typeof retrievalQuery === "string" ? applyReasoningTraceBoost(results, {
16157
+ const boosted = caps.recallReasoningTraceBoost && typeof retrievalQuery === "string" ? applyReasoningTraceBoost(results, {
16130
16158
  enabled: true,
16131
16159
  query: retrievalQuery
16132
16160
  }) : results;
16133
- const diversified = this.applyMmrToQmdResults(sectionId, boosted);
16161
+ const diversified = this.applyMmrToQmdResults(sectionId, boosted, caps);
16134
16162
  return diversified.slice(0, safeLimit);
16135
16163
  }
16136
16164
  /**
@@ -16141,8 +16169,8 @@ ${lines.join("\n\n")}`;
16141
16169
  * input unchanged when disabled, when there are fewer than 2 candidates, or
16142
16170
  * when no budget information is available.
16143
16171
  */
16144
- applyMmrToQmdResults(sectionId, results) {
16145
- if (this.config.recallMmrEnabled === false) return results;
16172
+ applyMmrToQmdResults(sectionId, results, caps = resolveCapabilities(this.config)) {
16173
+ if (!caps.recallMmr) return results;
16146
16174
  if (!Array.isArray(results) || results.length < 2) return results;
16147
16175
  const configuredTopN = this.config.recallMmrTopN;
16148
16176
  const topN = typeof configuredTopN === "number" && Number.isFinite(configuredTopN) ? Math.max(0, Math.floor(configuredTopN)) : 40;
@@ -16328,6 +16356,7 @@ ${lines.join("\n\n")}`;
16328
16356
  return [...mergedByPath.values()].filter((result) => !isArtifactMemoryPath(result.path)).sort((a, b) => b.score - a.score).slice(0, cappedLimit);
16329
16357
  }
16330
16358
  async applyColdFallbackPipeline(options) {
16359
+ const caps = options.caps ?? resolveCapabilities(this.config);
16331
16360
  if (options.queryAwarePrefilter?.candidatePaths?.size === 0) {
16332
16361
  if (options.xrayPoolSizeSink) options.xrayPoolSizeSink.size = 0;
16333
16362
  return [];
@@ -16501,7 +16530,7 @@ ${lines.join("\n\n")}`;
16501
16530
  }
16502
16531
  results = results.filter((r) => !isArtifactMemoryPath(r.path));
16503
16532
  if (results.length === 0) return [];
16504
- const isFullModeGraphAssist = this.config.qmdTierParityGraphEnabled && this.config.multiGraphMemoryEnabled && this.config.graphAssistInFullModeEnabled !== false && options.recallMode === "full" && results.length >= Math.max(1, this.config.graphAssistMinSeedResults ?? 3);
16533
+ const isFullModeGraphAssist = this.config.qmdTierParityGraphEnabled && this.config.multiGraphMemoryEnabled && caps.graphAssistInFullMode && options.recallMode === "full" && results.length >= Math.max(1, this.config.graphAssistMinSeedResults ?? 3);
16505
16534
  const shouldRunGraphExpansion = this.config.qmdTierParityGraphEnabled && (options.recallMode === "graph_mode" || isFullModeGraphAssist);
16506
16535
  if (shouldRunGraphExpansion) {
16507
16536
  const { merged } = await this.expandResultsViaGraph({
@@ -16578,7 +16607,7 @@ ${lines.join("\n\n")}`;
16578
16607
  timeoutMs: this.config.rerankTimeoutMs,
16579
16608
  maxCandidates: this.config.rerankMaxCandidates,
16580
16609
  cache: this.rerankCache,
16581
- cacheEnabled: this.config.rerankCacheEnabled,
16610
+ cacheEnabled: caps.rerankCache,
16582
16611
  cacheTtlMs: this.config.rerankCacheTtlMs
16583
16612
  });
16584
16613
  if (ranked && ranked.length > 0) {
@@ -16600,7 +16629,7 @@ ${lines.join("\n\n")}`;
16600
16629
  "rerankProvider=cloud is reserved/experimental in v2.2.0; skipping rerank"
16601
16630
  );
16602
16631
  }
16603
- if (this.config.recallMemoryWorthFilterEnabled && results.length > 0) {
16632
+ if (caps.recallMemoryWorthFilter && results.length > 0) {
16604
16633
  try {
16605
16634
  results = await this.applyMemoryWorthRerank(results, options.recallNamespaces);
16606
16635
  } catch (err) {
@@ -16619,7 +16648,8 @@ ${lines.join("\n\n")}`;
16619
16648
  "memories",
16620
16649
  results,
16621
16650
  options.recallResultLimit,
16622
- options.prompt
16651
+ options.prompt,
16652
+ caps
16623
16653
  );
16624
16654
  }
16625
16655
  // ---------------------------------------------------------------------------
@@ -17357,4 +17387,4 @@ export {
17357
17387
  resolvePersistedMemoryRelativePath,
17358
17388
  Orchestrator
17359
17389
  };
17360
- //# sourceMappingURL=chunk-WH4SKYPX.js.map
17390
+ //# sourceMappingURL=chunk-4FJKKC2N.js.map