@remnic/core 9.3.639 → 9.3.641

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 (271) hide show
  1. package/dist/access-cli.js +26 -26
  2. package/dist/access-http.d.ts +5 -5
  3. package/dist/access-http.js +16 -16
  4. package/dist/access-mcp.d.ts +5 -5
  5. package/dist/access-mcp.js +15 -15
  6. package/dist/{access-service-jyYute38.d.ts → access-service-DFXIlGvZ.d.ts} +2 -2
  7. package/dist/access-service.d.ts +5 -5
  8. package/dist/access-service.js +14 -14
  9. package/dist/action-confidence.d.ts +2 -2
  10. package/dist/active-memory-bridge.d.ts +2 -2
  11. package/dist/active-recall.d.ts +2 -2
  12. package/dist/behavior-learner.d.ts +2 -2
  13. package/dist/behavior-signals.d.ts +2 -2
  14. package/dist/bootstrap.d.ts +4 -4
  15. package/dist/briefing.d.ts +2 -2
  16. package/dist/briefing.js +3 -3
  17. package/dist/buffer-surprise-report.d.ts +2 -2
  18. package/dist/buffer.d.ts +2 -2
  19. package/dist/bulk-import/index.d.ts +3 -3
  20. package/dist/bulk-import/index.js +2 -2
  21. package/dist/calibration.d.ts +2 -2
  22. package/dist/causal-behavior.d.ts +2 -2
  23. package/dist/causal-consolidation.d.ts +2 -2
  24. package/dist/causal-consolidation.js +4 -4
  25. package/dist/{chunk-2BHNQRE5.js → chunk-3UR4SBZF.js} +314 -77
  26. package/dist/chunk-3UR4SBZF.js.map +1 -0
  27. package/dist/{chunk-RJGPH2Q3.js → chunk-4HYLRROV.js} +2 -2
  28. package/dist/{chunk-3AZDLWDW.js → chunk-4HYWWO3W.js} +3 -3
  29. package/dist/{chunk-ISMZIMD3.js → chunk-4MNDVDBS.js} +2 -2
  30. package/dist/{chunk-4VTVCWVB.js → chunk-5IDVOWBE.js} +4 -4
  31. package/dist/{chunk-BB6FNMMB.js → chunk-6DDBW2V4.js} +5 -5
  32. package/dist/{chunk-EDQVAMQI.js → chunk-6GIKAUTN.js} +2 -2
  33. package/dist/{chunk-4HFJQCJZ.js → chunk-7HYPN2GC.js} +2 -2
  34. package/dist/{chunk-Q6YIJGXJ.js → chunk-7OGJQP7T.js} +2 -2
  35. package/dist/{chunk-RW5DGAGO.js → chunk-7V36WCUW.js} +2 -2
  36. package/dist/{chunk-LUDUFZTV.js → chunk-ABP6QMVM.js} +2 -2
  37. package/dist/chunk-ABP6QMVM.js.map +1 -0
  38. package/dist/{chunk-FGRV3X3Y.js → chunk-ACNU2UBF.js} +18 -18
  39. package/dist/{chunk-52XI77OQ.js → chunk-AK4DSORQ.js} +9 -9
  40. package/dist/{chunk-CMZLMIZI.js → chunk-BEMWL2FZ.js} +2 -2
  41. package/dist/{chunk-3F7RMHC4.js → chunk-C43KEWEV.js} +1 -1
  42. package/dist/{chunk-3F7RMHC4.js.map → chunk-C43KEWEV.js.map} +1 -1
  43. package/dist/{chunk-H2NCNXMS.js → chunk-CKITWVWJ.js} +2 -2
  44. package/dist/{chunk-AFH2JXSF.js → chunk-DM4US77W.js} +3 -3
  45. package/dist/{chunk-ORFGK3XI.js → chunk-E6ZDCOHM.js} +2 -2
  46. package/dist/{chunk-SBHQBC37.js → chunk-ECMMM2VE.js} +2 -2
  47. package/dist/{chunk-TKWGAOLV.js → chunk-EEC4PCG5.js} +2 -2
  48. package/dist/{chunk-BTY5XQG3.js → chunk-EGBH5IPJ.js} +4 -4
  49. package/dist/{chunk-YR6GIWWY.js → chunk-GQL52GQ5.js} +2 -2
  50. package/dist/{chunk-SHHT4JTC.js → chunk-GYITUZFT.js} +2 -2
  51. package/dist/{chunk-77NAFXUD.js → chunk-H3HDXD3U.js} +2 -2
  52. package/dist/{chunk-LASA46TQ.js → chunk-HRXCPKN4.js} +2 -2
  53. package/dist/{chunk-EKIQBGAY.js → chunk-IENGGY2C.js} +2 -2
  54. package/dist/{chunk-RAGXUVQW.js → chunk-KVUG7FF7.js} +4 -4
  55. package/dist/{chunk-DEDTFRH2.js → chunk-MUKXANAM.js} +14 -3
  56. package/dist/chunk-MUKXANAM.js.map +1 -0
  57. package/dist/{chunk-UU5LHD6J.js → chunk-NLPH23IQ.js} +2 -2
  58. package/dist/{chunk-A3UPMOJZ.js → chunk-NV2MGIW7.js} +2 -2
  59. package/dist/chunk-O75CRYGF.js +15 -0
  60. package/dist/chunk-O75CRYGF.js.map +1 -0
  61. package/dist/{chunk-PU44GBL4.js → chunk-OUELRE5E.js} +1 -1
  62. package/dist/chunk-OUELRE5E.js.map +1 -0
  63. package/dist/{chunk-J2KFC47S.js → chunk-RFSCIBCB.js} +2 -2
  64. package/dist/{chunk-IXSTQGYV.js → chunk-RREI7CNM.js} +2 -2
  65. package/dist/{chunk-C6XO6ONP.js → chunk-SZL2GGFY.js} +2 -2
  66. package/dist/{chunk-7XRSLMUD.js → chunk-THWT7RJU.js} +2 -2
  67. package/dist/{chunk-H4RWKZE2.js → chunk-TKNTAUA3.js} +2 -2
  68. package/dist/{chunk-7OH7KPF5.js → chunk-TTOYT5RB.js} +2 -2
  69. package/dist/{chunk-UI2UP7XX.js → chunk-U3GQ33JC.js} +36 -7
  70. package/dist/chunk-U3GQ33JC.js.map +1 -0
  71. package/dist/{chunk-C3EJ3UIS.js → chunk-WLGE6KEO.js} +3 -3
  72. package/dist/{chunk-7R37SOT4.js → chunk-Y2XKJJEI.js} +2 -2
  73. package/dist/{cli-A4AIhv9e.d.ts → cli-DrL2Nv4j.d.ts} +5 -5
  74. package/dist/cli.d.ts +7 -7
  75. package/dist/cli.js +30 -30
  76. package/dist/compat/checks.js +2 -2
  77. package/dist/compounding/engine.d.ts +2 -2
  78. package/dist/compounding/engine.js +3 -3
  79. package/dist/compounding/preference-consolidator.d.ts +2 -2
  80. package/dist/compression-optimizer.d.ts +2 -2
  81. package/dist/config.d.ts +2 -2
  82. package/dist/connectors/codex-materialize-runner.d.ts +2 -2
  83. package/dist/connectors/codex-materialize-runner.js +3 -3
  84. package/dist/connectors/codex-materialize.d.ts +2 -2
  85. package/dist/connectors/index.d.ts +2 -2
  86. package/dist/connectors/index.js +5 -5
  87. package/dist/consolidation-provenance-check.d.ts +2 -2
  88. package/dist/consolidation-undo.d.ts +2 -2
  89. package/dist/contradiction/index.d.ts +2 -2
  90. package/dist/conversation-index/backend.d.ts +2 -2
  91. package/dist/conversation-index/backend.js +3 -3
  92. package/dist/conversation-index/chunker.d.ts +2 -2
  93. package/dist/conversation-index/faiss-adapter.d.ts +2 -2
  94. package/dist/conversation-index/faiss-adapter.js +2 -2
  95. package/dist/conversation-index/indexer.d.ts +2 -2
  96. package/dist/conversation-index/search.d.ts +2 -2
  97. package/dist/day-summary.d.ts +2 -2
  98. package/dist/delinearize.d.ts +2 -2
  99. package/dist/direct-answer-wiring.d.ts +2 -2
  100. package/dist/direct-answer.d.ts +2 -2
  101. package/dist/embedding-fallback.d.ts +2 -2
  102. package/dist/enrichment/index.d.ts +2 -2
  103. package/dist/entity-retrieval.d.ts +2 -2
  104. package/dist/entity-retrieval.js +3 -3
  105. package/dist/entity-schema.d.ts +2 -2
  106. package/dist/explicit-capture.d.ts +4 -4
  107. package/dist/extraction-judge-telemetry.d.ts +2 -2
  108. package/dist/extraction-judge-training.d.ts +2 -2
  109. package/dist/extraction-judge.d.ts +2 -2
  110. package/dist/extraction.d.ts +2 -2
  111. package/dist/extraction.js +3 -3
  112. package/dist/fallback-llm.d.ts +2 -2
  113. package/dist/identity-continuity.d.ts +2 -2
  114. package/dist/importance.d.ts +2 -2
  115. package/dist/importers/index.d.ts +2 -2
  116. package/dist/importers/index.js +2 -2
  117. package/dist/index.d.ts +10 -10
  118. package/dist/index.js +41 -41
  119. package/dist/intent.d.ts +2 -2
  120. package/dist/lcm/engine.d.ts +2 -2
  121. package/dist/lcm/index.d.ts +2 -2
  122. package/dist/lcm/tools.d.ts +2 -2
  123. package/dist/lifecycle.d.ts +2 -2
  124. package/dist/live-connectors-runner.d.ts +2 -2
  125. package/dist/local-llm.d.ts +2 -2
  126. package/dist/local-llm.js +2 -2
  127. package/dist/maintenance/memory-governance.d.ts +2 -2
  128. package/dist/maintenance/memory-governance.js +3 -3
  129. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  130. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  131. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  132. package/dist/memory-action-policy.d.ts +2 -2
  133. package/dist/memory-cache.d.ts +2 -2
  134. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -2
  135. package/dist/memory-projection-store.d.ts +2 -2
  136. package/dist/memory-provenance.d.ts +2 -2
  137. package/dist/memory-worth-outcomes.d.ts +2 -2
  138. package/dist/migrate/from-engram.js +2 -2
  139. package/dist/models-json.d.ts +2 -2
  140. package/dist/namespaces/migrate.d.ts +2 -2
  141. package/dist/namespaces/migrate.js +10 -10
  142. package/dist/namespaces/principal.d.ts +2 -2
  143. package/dist/namespaces/search.d.ts +2 -2
  144. package/dist/namespaces/search.js +6 -6
  145. package/dist/namespaces/storage.d.ts +2 -2
  146. package/dist/namespaces/storage.js +3 -3
  147. package/dist/native-knowledge.d.ts +2 -2
  148. package/dist/network/tailscale.js +2 -2
  149. package/dist/operator-toolkit.d.ts +2 -2
  150. package/dist/operator-toolkit.js +12 -12
  151. package/dist/{orchestrator-BEDTiuEO.d.ts → orchestrator-DEQW9j0Z.d.ts} +22 -5
  152. package/dist/orchestrator.d.ts +4 -4
  153. package/dist/orchestrator.js +25 -23
  154. package/dist/patterns-cli.d.ts +2 -2
  155. package/dist/{pipeline-D18UAKlN.d.ts → pipeline-BSTuml0d.d.ts} +1 -1
  156. package/dist/policy-runtime.d.ts +2 -2
  157. package/dist/qmd-recall-cache.d.ts +2 -2
  158. package/dist/qmd.d.ts +5 -2
  159. package/dist/qmd.js +2 -2
  160. package/dist/recall-disclosure-escalation.d.ts +2 -2
  161. package/dist/recall-explain-renderer.d.ts +2 -2
  162. package/dist/recall-explain-renderer.js +3 -3
  163. package/dist/recall-planner-llm.d.ts +2 -2
  164. package/dist/recall-state.d.ts +2 -2
  165. package/dist/recall-tag-filter.d.ts +2 -2
  166. package/dist/recall-xray-cli.d.ts +2 -2
  167. package/dist/recall-xray-cli.js +4 -4
  168. package/dist/recall-xray-renderer.d.ts +2 -2
  169. package/dist/recall-xray-renderer.js +3 -3
  170. package/dist/recall-xray.d.ts +2 -2
  171. package/dist/recall-xray.js +2 -2
  172. package/dist/resolve-auth-token.d.ts +2 -2
  173. package/dist/retrieval-agents.d.ts +2 -2
  174. package/dist/retrieval-tiers.d.ts +2 -2
  175. package/dist/routing/engine.d.ts +2 -2
  176. package/dist/routing/store.d.ts +2 -2
  177. package/dist/runtime/child-process.js +1 -1
  178. package/dist/schemas.d.ts +22 -22
  179. package/dist/search/embed-helper.d.ts +2 -2
  180. package/dist/search/factory.d.ts +2 -2
  181. package/dist/search/factory.js +5 -5
  182. package/dist/search/index.d.ts +2 -2
  183. package/dist/search/index.js +5 -5
  184. package/dist/search/lancedb-backend.d.ts +2 -2
  185. package/dist/search/meilisearch-backend.d.ts +2 -2
  186. package/dist/search/noop-backend.d.ts +2 -2
  187. package/dist/search/orama-backend.d.ts +2 -2
  188. package/dist/search/port.d.ts +2 -2
  189. package/dist/search/remote-backend.d.ts +2 -2
  190. package/dist/{semantic-consolidation-Byut1ufK.d.ts → semantic-consolidation-DKdYzQOg.d.ts} +1 -1
  191. package/dist/semantic-consolidation.d.ts +3 -3
  192. package/dist/semantic-consolidation.js +4 -4
  193. package/dist/semantic-rule-promotion.js +3 -3
  194. package/dist/semantic-rule-verifier.d.ts +2 -2
  195. package/dist/semantic-rule-verifier.js +3 -3
  196. package/dist/session-observer-bands.d.ts +2 -2
  197. package/dist/session-observer-state.d.ts +2 -2
  198. package/dist/shared-context/manager.d.ts +2 -2
  199. package/dist/signal.d.ts +2 -2
  200. package/dist/storage.d.ts +2 -2
  201. package/dist/storage.js +2 -2
  202. package/dist/summarizer.d.ts +2 -2
  203. package/dist/summarizer.js +3 -3
  204. package/dist/summary-snapshot.d.ts +2 -2
  205. package/dist/temporal-supersession.d.ts +2 -2
  206. package/dist/temporal-validity.d.ts +2 -2
  207. package/dist/threading.d.ts +2 -2
  208. package/dist/tier-migration.d.ts +2 -2
  209. package/dist/tier-routing.d.ts +2 -2
  210. package/dist/topics.d.ts +2 -2
  211. package/dist/transcript.d.ts +2 -2
  212. package/dist/transfer/types.d.ts +12 -12
  213. package/dist/{types-BliCnURB.d.ts → types-ByK7T3L6.d.ts} +2 -0
  214. package/dist/{types-BzA1FKbg.d.ts → types-D8yUmSik.d.ts} +2 -1
  215. package/dist/types.d.ts +2 -2
  216. package/dist/types.js +1 -1
  217. package/dist/utility-runtime.d.ts +2 -2
  218. package/dist/verified-recall.js +3 -3
  219. package/package.json +3 -1
  220. package/src/bulk-import/types.ts +2 -0
  221. package/src/extraction-timeout.test.ts +6 -1
  222. package/src/extraction.ts +34 -5
  223. package/src/importers/base.ts +1 -1
  224. package/src/orchestrator-flush.test.ts +640 -42
  225. package/src/orchestrator.ts +389 -70
  226. package/src/qmd.test.ts +35 -0
  227. package/src/qmd.ts +16 -1
  228. package/src/runtime/child-process.test.ts +15 -0
  229. package/src/runtime/child-process.ts +9 -22
  230. package/src/types.ts +1 -0
  231. package/dist/chunk-2BHNQRE5.js.map +0 -1
  232. package/dist/chunk-DEDTFRH2.js.map +0 -1
  233. package/dist/chunk-LUDUFZTV.js.map +0 -1
  234. package/dist/chunk-NNVTUXEB.js +0 -23
  235. package/dist/chunk-NNVTUXEB.js.map +0 -1
  236. package/dist/chunk-PU44GBL4.js.map +0 -1
  237. package/dist/chunk-UI2UP7XX.js.map +0 -1
  238. /package/dist/{chunk-RJGPH2Q3.js.map → chunk-4HYLRROV.js.map} +0 -0
  239. /package/dist/{chunk-3AZDLWDW.js.map → chunk-4HYWWO3W.js.map} +0 -0
  240. /package/dist/{chunk-ISMZIMD3.js.map → chunk-4MNDVDBS.js.map} +0 -0
  241. /package/dist/{chunk-4VTVCWVB.js.map → chunk-5IDVOWBE.js.map} +0 -0
  242. /package/dist/{chunk-BB6FNMMB.js.map → chunk-6DDBW2V4.js.map} +0 -0
  243. /package/dist/{chunk-EDQVAMQI.js.map → chunk-6GIKAUTN.js.map} +0 -0
  244. /package/dist/{chunk-4HFJQCJZ.js.map → chunk-7HYPN2GC.js.map} +0 -0
  245. /package/dist/{chunk-Q6YIJGXJ.js.map → chunk-7OGJQP7T.js.map} +0 -0
  246. /package/dist/{chunk-RW5DGAGO.js.map → chunk-7V36WCUW.js.map} +0 -0
  247. /package/dist/{chunk-FGRV3X3Y.js.map → chunk-ACNU2UBF.js.map} +0 -0
  248. /package/dist/{chunk-52XI77OQ.js.map → chunk-AK4DSORQ.js.map} +0 -0
  249. /package/dist/{chunk-CMZLMIZI.js.map → chunk-BEMWL2FZ.js.map} +0 -0
  250. /package/dist/{chunk-H2NCNXMS.js.map → chunk-CKITWVWJ.js.map} +0 -0
  251. /package/dist/{chunk-AFH2JXSF.js.map → chunk-DM4US77W.js.map} +0 -0
  252. /package/dist/{chunk-ORFGK3XI.js.map → chunk-E6ZDCOHM.js.map} +0 -0
  253. /package/dist/{chunk-SBHQBC37.js.map → chunk-ECMMM2VE.js.map} +0 -0
  254. /package/dist/{chunk-TKWGAOLV.js.map → chunk-EEC4PCG5.js.map} +0 -0
  255. /package/dist/{chunk-BTY5XQG3.js.map → chunk-EGBH5IPJ.js.map} +0 -0
  256. /package/dist/{chunk-YR6GIWWY.js.map → chunk-GQL52GQ5.js.map} +0 -0
  257. /package/dist/{chunk-SHHT4JTC.js.map → chunk-GYITUZFT.js.map} +0 -0
  258. /package/dist/{chunk-77NAFXUD.js.map → chunk-H3HDXD3U.js.map} +0 -0
  259. /package/dist/{chunk-LASA46TQ.js.map → chunk-HRXCPKN4.js.map} +0 -0
  260. /package/dist/{chunk-EKIQBGAY.js.map → chunk-IENGGY2C.js.map} +0 -0
  261. /package/dist/{chunk-RAGXUVQW.js.map → chunk-KVUG7FF7.js.map} +0 -0
  262. /package/dist/{chunk-UU5LHD6J.js.map → chunk-NLPH23IQ.js.map} +0 -0
  263. /package/dist/{chunk-A3UPMOJZ.js.map → chunk-NV2MGIW7.js.map} +0 -0
  264. /package/dist/{chunk-J2KFC47S.js.map → chunk-RFSCIBCB.js.map} +0 -0
  265. /package/dist/{chunk-IXSTQGYV.js.map → chunk-RREI7CNM.js.map} +0 -0
  266. /package/dist/{chunk-C6XO6ONP.js.map → chunk-SZL2GGFY.js.map} +0 -0
  267. /package/dist/{chunk-7XRSLMUD.js.map → chunk-THWT7RJU.js.map} +0 -0
  268. /package/dist/{chunk-H4RWKZE2.js.map → chunk-TKNTAUA3.js.map} +0 -0
  269. /package/dist/{chunk-7OH7KPF5.js.map → chunk-TTOYT5RB.js.map} +0 -0
  270. /package/dist/{chunk-C3EJ3UIS.js.map → chunk-WLGE6KEO.js.map} +0 -0
  271. /package/dist/{chunk-7R37SOT4.js.map → chunk-Y2XKJJEI.js.map} +0 -0
package/src/qmd.ts CHANGED
@@ -42,6 +42,8 @@ export interface QmdClientOptions {
42
42
  qmdSearchStrategy?: QmdSearchStrategy;
43
43
  /** Subprocess fallback command; default "query" keeps LLM expansion. Issue #1335. */
44
44
  qmdSubprocessStrategy?: QmdSubprocessStrategy;
45
+ /** Override automatic qmd fallback probes; defaults to known install paths. */
46
+ qmdFallbackPaths?: string[];
45
47
  /** Per-call daemon search timeout in ms; default 8000. Issue #1335. */
46
48
  qmdDaemonTimeoutMs?: number;
47
49
  }
@@ -1248,6 +1250,7 @@ export class QmdClient implements SearchBackend {
1248
1250
  private readonly qmdIndexName?: string;
1249
1251
  private readonly qmdSearchStrategy: QmdSearchStrategy;
1250
1252
  private readonly qmdSubprocessStrategy: QmdSubprocessStrategy;
1253
+ private readonly qmdFallbackPaths: string[];
1251
1254
  private readonly daemonTimeoutMs: number;
1252
1255
  private readonly qmdRuntimeEnv: QmdRuntimeEnv;
1253
1256
  private qmdPathSource: "auto-path" | "auto-fallback" | "configured" = "auto-path";
@@ -1303,6 +1306,9 @@ export class QmdClient implements SearchBackend {
1303
1306
  : "hybrid";
1304
1307
  // Default "query" keeps `qmd query` (LLM expansion + rerank) per gotcha #7. Issue #1335.
1305
1308
  this.qmdSubprocessStrategy = opts?.qmdSubprocessStrategy === "search" ? "search" : "query";
1309
+ this.qmdFallbackPaths = opts?.qmdFallbackPaths
1310
+ ? opts.qmdFallbackPaths.map((candidate) => candidate.trim()).filter(Boolean)
1311
+ : QMD_FALLBACK_PATHS;
1306
1312
  // Default 8000ms preserves the historical hardcoded daemon timeout. Issue #1335.
1307
1313
  // Floor of 1000ms avoids absurdly small values; callers wanting CPU-only HyDE
1308
1314
  // headroom can raise this (e.g. 20000) without code changes.
@@ -1404,9 +1410,16 @@ export class QmdClient implements SearchBackend {
1404
1410
  }
1405
1411
 
1406
1412
  private async probeCli(): Promise<boolean> {
1413
+ let configuredProbeFailure: string | null = null;
1407
1414
  const markProbeFailure = (err: unknown): void => {
1408
1415
  this.lastCliProbeError = err instanceof Error ? err.message : String(err);
1409
1416
  };
1417
+ const restoreConfiguredProbeFailure = (): void => {
1418
+ if (!this.configuredQmdPath || !configuredProbeFailure) return;
1419
+ this.qmdPath = this.configuredQmdPath;
1420
+ this.qmdPathSource = "configured";
1421
+ this.lastCliProbeError = configuredProbeFailure;
1422
+ };
1410
1423
  const recordProbeSuccess = async (
1411
1424
  result: { stdout: string; stderr: string },
1412
1425
  qmdPath: string,
@@ -1428,6 +1441,7 @@ export class QmdClient implements SearchBackend {
1428
1441
  return true;
1429
1442
  } catch (err) {
1430
1443
  markProbeFailure(err);
1444
+ configuredProbeFailure = this.lastCliProbeError;
1431
1445
  // Do not hard-fail here: fall through to PATH/fallback probing.
1432
1446
  // This keeps recall healthy even when configured path is stale.
1433
1447
  this.logCliProbeWarning(
@@ -1444,7 +1458,7 @@ export class QmdClient implements SearchBackend {
1444
1458
  } catch (err) {
1445
1459
  markProbeFailure(err);
1446
1460
  // Try fallback paths
1447
- for (const fallbackPath of QMD_FALLBACK_PATHS) {
1461
+ for (const fallbackPath of this.qmdFallbackPaths) {
1448
1462
  try {
1449
1463
  const result = await runQmd(["--version"], QMD_PROBE_TIMEOUT_MS, fallbackPath, undefined, this.qmdRuntimeEnv);
1450
1464
  await recordProbeSuccess(result, fallbackPath, "auto-fallback");
@@ -1456,6 +1470,7 @@ export class QmdClient implements SearchBackend {
1456
1470
  }
1457
1471
  }
1458
1472
  this.available = false;
1473
+ restoreConfiguredProbeFailure();
1459
1474
  return false;
1460
1475
  }
1461
1476
  }
@@ -0,0 +1,15 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import { launchProcessSync } from "./child-process.js";
5
+
6
+ test("launchProcessSync executes commands through the shared process wrapper", () => {
7
+ const result = launchProcessSync(
8
+ process.execPath,
9
+ ["-e", "process.stdout.write('ok')"],
10
+ { encoding: "utf8" },
11
+ );
12
+
13
+ assert.equal(result.status, 0);
14
+ assert.equal(result.stdout, "ok");
15
+ });
@@ -1,9 +1,5 @@
1
- import { createRequire } from "node:module";
1
+ import crossSpawn from "cross-spawn";
2
2
 
3
- const require = createRequire(import.meta.url);
4
- const PROCESS_MODULE_NAME = `node:${"child"}_${"process"}`;
5
-
6
- type ProcessModule = Record<string, unknown>;
7
3
  type ProcessOptions = Record<string, unknown>;
8
4
  type ProcessStream = {
9
5
  destroyed?: boolean;
@@ -22,9 +18,12 @@ type ProcessResult = {
22
18
  stderr?: string;
23
19
  };
24
20
 
25
- function loadModule(): ProcessModule {
26
- return require(PROCESS_MODULE_NAME) as ProcessModule;
27
- }
21
+ type SpawnApi = {
22
+ (command: string, args?: readonly string[], options?: ProcessOptions): CommandChildProcess;
23
+ sync: (command: string, args: readonly string[], options: ProcessOptions) => ProcessResult;
24
+ };
25
+
26
+ const spawnApi = crossSpawn as unknown as SpawnApi;
28
27
 
29
28
  export type CommandChildProcess = {
30
29
  exitCode?: number | null;
@@ -43,13 +42,7 @@ export function launchProcess(
43
42
  args: string[],
44
43
  options?: ProcessOptions,
45
44
  ): CommandChildProcess {
46
- const moduleApi = loadModule();
47
- const launch = moduleApi["spawn"] as (
48
- command: string,
49
- args?: readonly string[],
50
- options?: ProcessOptions,
51
- ) => CommandChildProcess;
52
- return launch(command, args, options);
45
+ return spawnApi(command, args, options);
53
46
  }
54
47
 
55
48
  export function launchProcessSync(
@@ -57,11 +50,5 @@ export function launchProcessSync(
57
50
  args: string[],
58
51
  options: ProcessOptions,
59
52
  ): ProcessResult {
60
- const moduleApi = loadModule();
61
- const launchSync = moduleApi["spawnSync"] as (
62
- command: string,
63
- args: readonly string[],
64
- options: ProcessOptions,
65
- ) => ProcessResult;
66
- return launchSync(command, args, options);
53
+ return spawnApi.sync(command, args, options);
67
54
  }
package/src/types.ts CHANGED
@@ -2594,6 +2594,7 @@ export interface ExtractionResult {
2594
2594
  questions: ExtractedQuestion[];
2595
2595
  identityReflection?: string;
2596
2596
  relationships?: ExtractedRelationship[];
2597
+ extractionFailure?: string;
2597
2598
  }
2598
2599
 
2599
2600
  export interface EntityMention {