@remnic/core 9.3.651 → 9.3.652

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 (76) hide show
  1. package/dist/access-cli.js +9 -9
  2. package/dist/access-http.d.ts +3 -2
  3. package/dist/access-http.js +10 -10
  4. package/dist/access-mcp.d.ts +3 -2
  5. package/dist/access-mcp.js +9 -9
  6. package/dist/{access-service-DIZRHQ7Q.d.ts → access-service-CdJFd3_b.d.ts} +23 -2
  7. package/dist/access-service.d.ts +3 -2
  8. package/dist/access-service.js +8 -8
  9. package/dist/bootstrap.d.ts +2 -1
  10. package/dist/{chunk-QT4THOLT.js → chunk-2DGQLOOM.js} +1 -1
  11. package/dist/chunk-2DGQLOOM.js.map +1 -0
  12. package/dist/{chunk-SLYD3AH4.js → chunk-5V3TAB7D.js} +176 -4
  13. package/dist/chunk-5V3TAB7D.js.map +1 -0
  14. package/dist/{chunk-FOVPSMGI.js → chunk-7WEB3FLJ.js} +2 -2
  15. package/dist/{chunk-WJK75OCH.js → chunk-GI45G4BK.js} +2 -2
  16. package/dist/{chunk-76QTEJ2Q.js → chunk-JBHXMCYN.js} +2 -2
  17. package/dist/{chunk-4PTKFBST.js → chunk-JVRPJ7D4.js} +126 -26
  18. package/dist/chunk-JVRPJ7D4.js.map +1 -0
  19. package/dist/{chunk-TQUWNX7C.js → chunk-JX2RINDR.js} +2 -2
  20. package/dist/{chunk-RSS2KWN6.js → chunk-MGGNV3H2.js} +2 -2
  21. package/dist/{chunk-I4COC5XW.js → chunk-PYWNNF2I.js} +47 -9
  22. package/dist/chunk-PYWNNF2I.js.map +1 -0
  23. package/dist/{chunk-5WSDHTBO.js → chunk-TCX4WLKK.js} +7 -4
  24. package/dist/chunk-TCX4WLKK.js.map +1 -0
  25. package/dist/{chunk-RKN5J4RO.js → chunk-WSFNYPAT.js} +6 -6
  26. package/dist/{chunk-LFTLXOFX.js → chunk-WTI35CVJ.js} +2 -2
  27. package/dist/{chunk-6UKL6IXM.js → chunk-YM3LR4LS.js} +5 -5
  28. package/dist/{chunk-MF32AL7N.js → chunk-YOVKPOMD.js} +3 -3
  29. package/dist/{cli-BG4ybtJr.d.ts → cli-DDo7Qgs-.d.ts} +2 -2
  30. package/dist/cli.d.ts +4 -3
  31. package/dist/cli.js +13 -13
  32. package/dist/explicit-capture.d.ts +2 -1
  33. package/dist/index.d.ts +5 -4
  34. package/dist/index.js +14 -14
  35. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  36. package/dist/namespaces/migrate.js +8 -8
  37. package/dist/namespaces/search.d.ts +18 -1
  38. package/dist/namespaces/search.js +7 -7
  39. package/dist/operator-toolkit.js +9 -9
  40. package/dist/{orchestrator-CX-oqwJq.d.ts → orchestrator-8fTZsa0y.d.ts} +2 -0
  41. package/dist/orchestrator.d.ts +2 -1
  42. package/dist/orchestrator.js +8 -8
  43. package/dist/qmd.d.ts +2 -1
  44. package/dist/qmd.js +2 -2
  45. package/dist/schemas.d.ts +22 -22
  46. package/dist/search/factory.js +6 -6
  47. package/dist/search/index.js +6 -6
  48. package/dist/search/lancedb-backend.js +2 -2
  49. package/dist/search/meilisearch-backend.js +2 -2
  50. package/dist/search/orama-backend.js +2 -2
  51. package/dist/search/port.d.ts +6 -0
  52. package/dist/search/port.js +1 -1
  53. package/dist/transfer/types.d.ts +12 -12
  54. package/package.json +1 -1
  55. package/src/access-service-health.test.ts +402 -0
  56. package/src/access-service.ts +274 -2
  57. package/src/namespaces/search.test.ts +258 -3
  58. package/src/namespaces/search.ts +184 -30
  59. package/src/orchestrator.ts +11 -1
  60. package/src/qmd.test.ts +102 -0
  61. package/src/qmd.ts +54 -7
  62. package/src/search/port.ts +6 -0
  63. package/dist/chunk-4PTKFBST.js.map +0 -1
  64. package/dist/chunk-5WSDHTBO.js.map +0 -1
  65. package/dist/chunk-I4COC5XW.js.map +0 -1
  66. package/dist/chunk-QT4THOLT.js.map +0 -1
  67. package/dist/chunk-SLYD3AH4.js.map +0 -1
  68. /package/dist/{chunk-FOVPSMGI.js.map → chunk-7WEB3FLJ.js.map} +0 -0
  69. /package/dist/{chunk-WJK75OCH.js.map → chunk-GI45G4BK.js.map} +0 -0
  70. /package/dist/{chunk-76QTEJ2Q.js.map → chunk-JBHXMCYN.js.map} +0 -0
  71. /package/dist/{chunk-TQUWNX7C.js.map → chunk-JX2RINDR.js.map} +0 -0
  72. /package/dist/{chunk-RSS2KWN6.js.map → chunk-MGGNV3H2.js.map} +0 -0
  73. /package/dist/{chunk-RKN5J4RO.js.map → chunk-WSFNYPAT.js.map} +0 -0
  74. /package/dist/{chunk-LFTLXOFX.js.map → chunk-WTI35CVJ.js.map} +0 -0
  75. /package/dist/{chunk-6UKL6IXM.js.map → chunk-YM3LR4LS.js.map} +0 -0
  76. /package/dist/{chunk-MF32AL7N.js.map → chunk-YOVKPOMD.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-5WSDHTBO.js";
3
+ } from "./chunk-TCX4WLKK.js";
4
4
  import "./chunk-4SKKVWLQ.js";
5
5
  import "./chunk-7HYPN2GC.js";
6
6
  import "./chunk-666A3MOW.js";
@@ -123,7 +123,7 @@ import "./chunk-OADWQ5CR.js";
123
123
  import "./chunk-7WV3F5DQ.js";
124
124
  import {
125
125
  EngramAccessService
126
- } from "./chunk-SLYD3AH4.js";
126
+ } from "./chunk-5V3TAB7D.js";
127
127
  import "./chunk-GDASG7NC.js";
128
128
  import "./chunk-GDB4J2H3.js";
129
129
  import "./chunk-DHGSZ3UD.js";
@@ -137,14 +137,14 @@ import "./chunk-5RIRL3XL.js";
137
137
  import "./chunk-JGSKJHF7.js";
138
138
  import "./chunk-FF4KLI5W.js";
139
139
  import "./chunk-BEMWL2FZ.js";
140
- import "./chunk-4PTKFBST.js";
141
- import "./chunk-6UKL6IXM.js";
142
- import "./chunk-TQUWNX7C.js";
140
+ import "./chunk-JVRPJ7D4.js";
141
+ import "./chunk-YM3LR4LS.js";
142
+ import "./chunk-JX2RINDR.js";
143
143
  import "./chunk-CYEPCZN5.js";
144
- import "./chunk-76QTEJ2Q.js";
144
+ import "./chunk-JBHXMCYN.js";
145
145
  import "./chunk-JOASJWQR.js";
146
146
  import "./chunk-RN7MUWON.js";
147
- import "./chunk-FOVPSMGI.js";
147
+ import "./chunk-7WEB3FLJ.js";
148
148
  import "./chunk-Q4CAQGKQ.js";
149
149
  import "./chunk-CINZGPSJ.js";
150
150
  import "./chunk-ZFXCQPNO.js";
@@ -152,8 +152,8 @@ import "./chunk-7OGJQP7T.js";
152
152
  import "./chunk-E6ZDCOHM.js";
153
153
  import "./chunk-OIF36KGD.js";
154
154
  import "./chunk-7DTASS5T.js";
155
- import "./chunk-I4COC5XW.js";
156
- import "./chunk-QT4THOLT.js";
155
+ import "./chunk-PYWNNF2I.js";
156
+ import "./chunk-2DGQLOOM.js";
157
157
  import "./chunk-BMFZLLNI.js";
158
158
  import "./chunk-CI7RKSRE.js";
159
159
  import "./chunk-6HMYUWXR.js";
@@ -1,5 +1,5 @@
1
1
  import { IncomingMessage } from 'node:http';
2
- import { E as EngramAccessService } from './access-service-DIZRHQ7Q.js';
2
+ import { E as EngramAccessService } from './access-service-CdJFd3_b.js';
3
3
  import { ResolvedIdentity } from './adapters/types.js';
4
4
  import { AdapterRegistry } from './adapters/registry.js';
5
5
  import './storage.js';
@@ -21,7 +21,7 @@ import './user-model.js';
21
21
  import './recall-audit-anomaly.js';
22
22
  import './recall-audit.js';
23
23
  import './explicit-capture.js';
24
- import './orchestrator-CX-oqwJq.js';
24
+ import './orchestrator-8fTZsa0y.js';
25
25
  import './briefing.js';
26
26
  import './buffer.js';
27
27
  import './search/port.js';
@@ -53,6 +53,7 @@ import './conversation-index/backend.js';
53
53
  import './conversation-index/chunker.js';
54
54
  import './faiss-adapter-BHecI1fF.js';
55
55
  import './runtime/child-process.js';
56
+ import './namespaces/search.js';
56
57
  import './shared-context/manager.js';
57
58
  import 'zod';
58
59
  import './compounding/engine.js';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EngramAccessHttpServer
3
- } from "./chunk-MF32AL7N.js";
3
+ } from "./chunk-YOVKPOMD.js";
4
4
  import "./chunk-SEDEKFYQ.js";
5
5
  import "./chunk-RKNJBZ55.js";
6
6
  import "./chunk-J64TK33U.js";
@@ -9,10 +9,10 @@ import "./chunk-42NQ7AVG.js";
9
9
  import "./chunk-TMSXWOBZ.js";
10
10
  import "./chunk-7RXCMVFQ.js";
11
11
  import "./chunk-7WV3F5DQ.js";
12
- import "./chunk-RSS2KWN6.js";
12
+ import "./chunk-MGGNV3H2.js";
13
13
  import "./chunk-T4WDJPEZ.js";
14
14
  import "./chunk-D24OXEPB.js";
15
- import "./chunk-SLYD3AH4.js";
15
+ import "./chunk-5V3TAB7D.js";
16
16
  import "./chunk-GDASG7NC.js";
17
17
  import "./chunk-GDB4J2H3.js";
18
18
  import "./chunk-DHGSZ3UD.js";
@@ -26,14 +26,14 @@ import "./chunk-5RIRL3XL.js";
26
26
  import "./chunk-JGSKJHF7.js";
27
27
  import "./chunk-FF4KLI5W.js";
28
28
  import "./chunk-BEMWL2FZ.js";
29
- import "./chunk-4PTKFBST.js";
30
- import "./chunk-6UKL6IXM.js";
31
- import "./chunk-TQUWNX7C.js";
29
+ import "./chunk-JVRPJ7D4.js";
30
+ import "./chunk-YM3LR4LS.js";
31
+ import "./chunk-JX2RINDR.js";
32
32
  import "./chunk-CYEPCZN5.js";
33
- import "./chunk-76QTEJ2Q.js";
33
+ import "./chunk-JBHXMCYN.js";
34
34
  import "./chunk-JOASJWQR.js";
35
35
  import "./chunk-RN7MUWON.js";
36
- import "./chunk-FOVPSMGI.js";
36
+ import "./chunk-7WEB3FLJ.js";
37
37
  import "./chunk-Q4CAQGKQ.js";
38
38
  import "./chunk-CINZGPSJ.js";
39
39
  import "./chunk-ZFXCQPNO.js";
@@ -41,8 +41,8 @@ import "./chunk-7OGJQP7T.js";
41
41
  import "./chunk-E6ZDCOHM.js";
42
42
  import "./chunk-OIF36KGD.js";
43
43
  import "./chunk-7DTASS5T.js";
44
- import "./chunk-I4COC5XW.js";
45
- import "./chunk-QT4THOLT.js";
44
+ import "./chunk-PYWNNF2I.js";
45
+ import "./chunk-2DGQLOOM.js";
46
46
  import "./chunk-BMFZLLNI.js";
47
47
  import "./chunk-CI7RKSRE.js";
48
48
  import "./chunk-6HMYUWXR.js";
@@ -1,5 +1,5 @@
1
1
  import { Readable, Writable } from 'node:stream';
2
- import { E as EngramAccessService } from './access-service-DIZRHQ7Q.js';
2
+ import { E as EngramAccessService } from './access-service-CdJFd3_b.js';
3
3
  import './storage.js';
4
4
  import './page-versioning.js';
5
5
  import './consolidation-operator.js';
@@ -19,7 +19,7 @@ import './user-model.js';
19
19
  import './recall-audit-anomaly.js';
20
20
  import './recall-audit.js';
21
21
  import './explicit-capture.js';
22
- import './orchestrator-CX-oqwJq.js';
22
+ import './orchestrator-8fTZsa0y.js';
23
23
  import './briefing.js';
24
24
  import './buffer.js';
25
25
  import './search/port.js';
@@ -51,6 +51,7 @@ import './conversation-index/backend.js';
51
51
  import './conversation-index/chunker.js';
52
52
  import './faiss-adapter-BHecI1fF.js';
53
53
  import './runtime/child-process.js';
54
+ import './namespaces/search.js';
54
55
  import './shared-context/manager.js';
55
56
  import 'zod';
56
57
  import './compounding/engine.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  EngramMcpServer
3
- } from "./chunk-RSS2KWN6.js";
3
+ } from "./chunk-MGGNV3H2.js";
4
4
  import "./chunk-T4WDJPEZ.js";
5
5
  import "./chunk-D24OXEPB.js";
6
- import "./chunk-SLYD3AH4.js";
6
+ import "./chunk-5V3TAB7D.js";
7
7
  import "./chunk-GDASG7NC.js";
8
8
  import "./chunk-GDB4J2H3.js";
9
9
  import "./chunk-DHGSZ3UD.js";
@@ -17,14 +17,14 @@ import "./chunk-5RIRL3XL.js";
17
17
  import "./chunk-JGSKJHF7.js";
18
18
  import "./chunk-FF4KLI5W.js";
19
19
  import "./chunk-BEMWL2FZ.js";
20
- import "./chunk-4PTKFBST.js";
21
- import "./chunk-6UKL6IXM.js";
22
- import "./chunk-TQUWNX7C.js";
20
+ import "./chunk-JVRPJ7D4.js";
21
+ import "./chunk-YM3LR4LS.js";
22
+ import "./chunk-JX2RINDR.js";
23
23
  import "./chunk-CYEPCZN5.js";
24
- import "./chunk-76QTEJ2Q.js";
24
+ import "./chunk-JBHXMCYN.js";
25
25
  import "./chunk-JOASJWQR.js";
26
26
  import "./chunk-RN7MUWON.js";
27
- import "./chunk-FOVPSMGI.js";
27
+ import "./chunk-7WEB3FLJ.js";
28
28
  import "./chunk-Q4CAQGKQ.js";
29
29
  import "./chunk-CINZGPSJ.js";
30
30
  import "./chunk-ZFXCQPNO.js";
@@ -32,8 +32,8 @@ import "./chunk-7OGJQP7T.js";
32
32
  import "./chunk-E6ZDCOHM.js";
33
33
  import "./chunk-OIF36KGD.js";
34
34
  import "./chunk-7DTASS5T.js";
35
- import "./chunk-I4COC5XW.js";
36
- import "./chunk-QT4THOLT.js";
35
+ import "./chunk-PYWNNF2I.js";
36
+ import "./chunk-2DGQLOOM.js";
37
37
  import "./chunk-BMFZLLNI.js";
38
38
  import "./chunk-CI7RKSRE.js";
39
39
  import "./chunk-6HMYUWXR.js";
@@ -6,7 +6,7 @@ import { AnomalyDetectorResult } from './recall-audit-anomaly.js';
6
6
  import { ExplicitCaptureInput } from './explicit-capture.js';
7
7
  import { BudgetDecision } from './cross-namespace-budget.js';
8
8
  import { readMemoryGovernanceRunArtifact } from './maintenance/memory-governance.js';
9
- import { O as Orchestrator, I as IntentDebugSnapshot, G as GraphRecallSnapshot, P as PatternReinforcementResult, W as WearablesService } from './orchestrator-CX-oqwJq.js';
9
+ import { O as Orchestrator, I as IntentDebugSnapshot, G as GraphRecallSnapshot, P as PatternReinforcementResult, W as WearablesService } from './orchestrator-8fTZsa0y.js';
10
10
  import { LiveConnectorsRunSummary } from './live-connectors-runner.js';
11
11
  import { LastRecallSnapshot } from './recall-state.js';
12
12
  import { GraphSnapshotRequest, GraphSnapshotResponse } from './graph-snapshot.js';
@@ -179,9 +179,25 @@ interface EngramAccessHealthResponse {
179
179
  defaultNamespace: string;
180
180
  searchBackend: string;
181
181
  qmdEnabled: boolean;
182
+ qmd: EngramAccessQmdHealthResponse;
182
183
  nativeKnowledgeEnabled: boolean;
183
184
  projectionAvailable: boolean;
184
185
  }
186
+ type EngramAccessQmdCollectionState = "present" | "missing" | "unknown" | "skipped";
187
+ interface EngramAccessQmdHealthResponse {
188
+ enabled: boolean;
189
+ active: boolean;
190
+ degraded: boolean;
191
+ mode: "cli" | "daemon" | "fallback" | "disabled" | "not-selected";
192
+ collection: string;
193
+ collectionState: EngramAccessQmdCollectionState;
194
+ installedVersion: string | null;
195
+ supportedVersion: string | null;
196
+ supported: boolean | null;
197
+ upgradeAvailable: boolean | null;
198
+ doctorAvailable: boolean | null;
199
+ debugStatus: string;
200
+ }
185
201
  interface EngramAccessRecallRequest {
186
202
  query: string;
187
203
  sessionKey?: string;
@@ -960,6 +976,11 @@ declare class EngramAccessService {
960
976
  private withIdempotencyLock;
961
977
  private withBudgetLock;
962
978
  health(namespace?: string): Promise<EngramAccessHealthResponse>;
979
+ private qmdCollectionForHealth;
980
+ private qmdHealth;
981
+ private namespaceQmdHealth;
982
+ private qmdCollectionState;
983
+ private qmdProbeAvailable;
963
984
  actionConfidence(request?: EngramAccessActionConfidenceRequest): Promise<EngramAccessActionConfidenceResponse>;
964
985
  daySummary(request: EngramAccessDaySummaryRequest): Promise<DaySummaryResult | null>;
965
986
  /**
@@ -1835,4 +1856,4 @@ declare class EngramAccessService {
1835
1856
  }): Promise<Awaited<ReturnType<WearablesService["transcriptMemories"]>>>;
1836
1857
  }
1837
1858
 
1838
- export { type EngramAccessReviewDispositionRequest as $, type EngramAccessMemoryBrowseRequest as A, type EngramAccessMemoryBrowseResponse as B, type CodingScopedWriteInput as C, type EngramAccessMemoryRecord as D, EngramAccessService as E, type EngramAccessMemoryResponse as F, type EngramAccessMemoryStoreRequest as G, type EngramAccessMemorySummary as H, type EngramAccessObserveMessage as I, type EngramAccessObserveRequest as J, type EngramAccessObserveResponse as K, type EngramAccessOfflineSyncApplyFileContentRequest as L, type EngramAccessOfflineSyncApplyFileContentResponse as M, type EngramAccessOfflineSyncApplyRequest as N, type EngramAccessOfflineSyncApplyResponse as O, type ProcedureStatsConfigSnapshot as P, type EngramAccessOfflineSyncFileContentRequest as Q, type EngramAccessOfflineSyncFileContentResponse as R, type EngramAccessOfflineSyncFilesRequest as S, type EngramAccessOfflineSyncFilesResponse as T, type EngramAccessOfflineSyncSnapshotRequest as U, type EngramAccessOfflineSyncSnapshotResponse as V, type EngramAccessOfflineSyncSnapshotStreamResponse as W, type EngramAccessQualityResponse as X, type EngramAccessRecallExplainRequest as Y, type EngramAccessRecallExplainResponse as Z, type EngramAccessRecallRequest as _, type EngramAccessRecallResponse as a, type EngramAccessReviewDispositionResponse as a0, type EngramAccessReviewQueueResponse as a1, type EngramAccessScopeDebug as a2, type EngramAccessSetCodingContextRequest as a3, type EngramAccessSuggestionSubmitRequest as a4, type EngramAccessTimelineResponse as a5, type EngramAccessTrustZoneBrowseRequest as a6, type EngramAccessTrustZoneBrowseResponse as a7, type EngramAccessTrustZoneDemoSeedRequest as a8, type EngramAccessTrustZoneDemoSeedResponse as a9, type EngramAccessTrustZonePromoteRequest as aa, type EngramAccessTrustZonePromoteResponse as ab, type EngramAccessTrustZoneRecordSummary as ac, type EngramAccessTrustZoneStatusResponse as ad, type EngramAccessWriteEnvelope as ae, type EngramAccessWriteResponse as af, type MemoryScopePlan as ag, shapeMemorySummary as ah, EngramAccessInputError as b, type ProcedureStatsRecent as c, type ProcedureStatsReport as d, type ProcedureStatusCounts as e, computeProcedureStats as f, formatProcedureStatsText as g, ENGRAM_ACCESS_WRITE_SCHEMA_VERSION as h, type EngramAccessActionConfidenceRequest as i, type EngramAccessActionConfidenceResponse as j, type EngramAccessBriefingRequest as k, type EngramAccessBriefingResponse as l, type EngramAccessCapsuleListResponse as m, type EngramAccessDaySummaryRequest as n, type EngramAccessEntityListResponse as o, type EngramAccessEntityResponse as p, type EngramAccessEntitySummary as q, type EngramAccessHealthResponse as r, type EngramAccessLcmCompactionFlushRequest as s, type EngramAccessLcmCompactionFlushResponse as t, type EngramAccessLcmCompactionRecordRequest as u, type EngramAccessLcmCompactionRecordResponse as v, type EngramAccessLcmSearchRequest as w, type EngramAccessLcmSearchResponse as x, type EngramAccessLcmStatusResponse as y, type EngramAccessMaintenanceResponse as z };
1859
+ export { type EngramAccessRecallExplainResponse as $, type EngramAccessMemoryBrowseRequest as A, type EngramAccessMemoryBrowseResponse as B, type CodingScopedWriteInput as C, type EngramAccessMemoryRecord as D, EngramAccessService as E, type EngramAccessMemoryResponse as F, type EngramAccessMemoryStoreRequest as G, type EngramAccessMemorySummary as H, type EngramAccessObserveMessage as I, type EngramAccessObserveRequest as J, type EngramAccessObserveResponse as K, type EngramAccessOfflineSyncApplyFileContentRequest as L, type EngramAccessOfflineSyncApplyFileContentResponse as M, type EngramAccessOfflineSyncApplyRequest as N, type EngramAccessOfflineSyncApplyResponse as O, type ProcedureStatsConfigSnapshot as P, type EngramAccessOfflineSyncFileContentRequest as Q, type EngramAccessOfflineSyncFileContentResponse as R, type EngramAccessOfflineSyncFilesRequest as S, type EngramAccessOfflineSyncFilesResponse as T, type EngramAccessOfflineSyncSnapshotRequest as U, type EngramAccessOfflineSyncSnapshotResponse as V, type EngramAccessOfflineSyncSnapshotStreamResponse as W, type EngramAccessQmdCollectionState as X, type EngramAccessQmdHealthResponse as Y, type EngramAccessQualityResponse as Z, type EngramAccessRecallExplainRequest as _, type EngramAccessRecallResponse as a, type EngramAccessRecallRequest as a0, type EngramAccessReviewDispositionRequest as a1, type EngramAccessReviewDispositionResponse as a2, type EngramAccessReviewQueueResponse as a3, type EngramAccessScopeDebug as a4, type EngramAccessSetCodingContextRequest as a5, type EngramAccessSuggestionSubmitRequest as a6, type EngramAccessTimelineResponse as a7, type EngramAccessTrustZoneBrowseRequest as a8, type EngramAccessTrustZoneBrowseResponse as a9, type EngramAccessTrustZoneDemoSeedRequest as aa, type EngramAccessTrustZoneDemoSeedResponse as ab, type EngramAccessTrustZonePromoteRequest as ac, type EngramAccessTrustZonePromoteResponse as ad, type EngramAccessTrustZoneRecordSummary as ae, type EngramAccessTrustZoneStatusResponse as af, type EngramAccessWriteEnvelope as ag, type EngramAccessWriteResponse as ah, type MemoryScopePlan as ai, shapeMemorySummary as aj, EngramAccessInputError as b, type ProcedureStatsRecent as c, type ProcedureStatsReport as d, type ProcedureStatusCounts as e, computeProcedureStats as f, formatProcedureStatsText as g, ENGRAM_ACCESS_WRITE_SCHEMA_VERSION as h, type EngramAccessActionConfidenceRequest as i, type EngramAccessActionConfidenceResponse as j, type EngramAccessBriefingRequest as k, type EngramAccessBriefingResponse as l, type EngramAccessCapsuleListResponse as m, type EngramAccessDaySummaryRequest as n, type EngramAccessEntityListResponse as o, type EngramAccessEntityResponse as p, type EngramAccessEntitySummary as q, type EngramAccessHealthResponse as r, type EngramAccessLcmCompactionFlushRequest as s, type EngramAccessLcmCompactionFlushResponse as t, type EngramAccessLcmCompactionRecordRequest as u, type EngramAccessLcmCompactionRecordResponse as v, type EngramAccessLcmSearchRequest as w, type EngramAccessLcmSearchResponse as x, type EngramAccessLcmStatusResponse as y, type EngramAccessMaintenanceResponse as z };
@@ -1,13 +1,13 @@
1
1
  import './storage.js';
2
2
  import './types-B1VHaf2w.js';
3
- export { C as CodingScopedWriteInput, h as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, i as EngramAccessActionConfidenceRequest, j as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessCapsuleListResponse, n as EngramAccessDaySummaryRequest, o as EngramAccessEntityListResponse, p as EngramAccessEntityResponse, q as EngramAccessEntitySummary, r as EngramAccessHealthResponse, b as EngramAccessInputError, s as EngramAccessLcmCompactionFlushRequest, t as EngramAccessLcmCompactionFlushResponse, u as EngramAccessLcmCompactionRecordRequest, v as EngramAccessLcmCompactionRecordResponse, w as EngramAccessLcmSearchRequest, x as EngramAccessLcmSearchResponse, y as EngramAccessLcmStatusResponse, z as EngramAccessMaintenanceResponse, A as EngramAccessMemoryBrowseRequest, B as EngramAccessMemoryBrowseResponse, D as EngramAccessMemoryRecord, F as EngramAccessMemoryResponse, G as EngramAccessMemoryStoreRequest, H as EngramAccessMemorySummary, I as EngramAccessObserveMessage, J as EngramAccessObserveRequest, K as EngramAccessObserveResponse, L as EngramAccessOfflineSyncApplyFileContentRequest, M as EngramAccessOfflineSyncApplyFileContentResponse, N as EngramAccessOfflineSyncApplyRequest, O as EngramAccessOfflineSyncApplyResponse, Q as EngramAccessOfflineSyncFileContentRequest, R as EngramAccessOfflineSyncFileContentResponse, S as EngramAccessOfflineSyncFilesRequest, T as EngramAccessOfflineSyncFilesResponse, U as EngramAccessOfflineSyncSnapshotRequest, V as EngramAccessOfflineSyncSnapshotResponse, W as EngramAccessOfflineSyncSnapshotStreamResponse, X as EngramAccessQualityResponse, Y as EngramAccessRecallExplainRequest, Z as EngramAccessRecallExplainResponse, _ as EngramAccessRecallRequest, a as EngramAccessRecallResponse, $ as EngramAccessReviewDispositionRequest, a0 as EngramAccessReviewDispositionResponse, a1 as EngramAccessReviewQueueResponse, a2 as EngramAccessScopeDebug, E as EngramAccessService, a3 as EngramAccessSetCodingContextRequest, a4 as EngramAccessSuggestionSubmitRequest, a5 as EngramAccessTimelineResponse, a6 as EngramAccessTrustZoneBrowseRequest, a7 as EngramAccessTrustZoneBrowseResponse, a8 as EngramAccessTrustZoneDemoSeedRequest, a9 as EngramAccessTrustZoneDemoSeedResponse, aa as EngramAccessTrustZonePromoteRequest, ab as EngramAccessTrustZonePromoteResponse, ac as EngramAccessTrustZoneRecordSummary, ad as EngramAccessTrustZoneStatusResponse, ae as EngramAccessWriteEnvelope, af as EngramAccessWriteResponse, ag as MemoryScopePlan, ah as shapeMemorySummary } from './access-service-DIZRHQ7Q.js';
3
+ export { C as CodingScopedWriteInput, h as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, i as EngramAccessActionConfidenceRequest, j as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessCapsuleListResponse, n as EngramAccessDaySummaryRequest, o as EngramAccessEntityListResponse, p as EngramAccessEntityResponse, q as EngramAccessEntitySummary, r as EngramAccessHealthResponse, b as EngramAccessInputError, s as EngramAccessLcmCompactionFlushRequest, t as EngramAccessLcmCompactionFlushResponse, u as EngramAccessLcmCompactionRecordRequest, v as EngramAccessLcmCompactionRecordResponse, w as EngramAccessLcmSearchRequest, x as EngramAccessLcmSearchResponse, y as EngramAccessLcmStatusResponse, z as EngramAccessMaintenanceResponse, A as EngramAccessMemoryBrowseRequest, B as EngramAccessMemoryBrowseResponse, D as EngramAccessMemoryRecord, F as EngramAccessMemoryResponse, G as EngramAccessMemoryStoreRequest, H as EngramAccessMemorySummary, I as EngramAccessObserveMessage, J as EngramAccessObserveRequest, K as EngramAccessObserveResponse, L as EngramAccessOfflineSyncApplyFileContentRequest, M as EngramAccessOfflineSyncApplyFileContentResponse, N as EngramAccessOfflineSyncApplyRequest, O as EngramAccessOfflineSyncApplyResponse, Q as EngramAccessOfflineSyncFileContentRequest, R as EngramAccessOfflineSyncFileContentResponse, S as EngramAccessOfflineSyncFilesRequest, T as EngramAccessOfflineSyncFilesResponse, U as EngramAccessOfflineSyncSnapshotRequest, V as EngramAccessOfflineSyncSnapshotResponse, W as EngramAccessOfflineSyncSnapshotStreamResponse, X as EngramAccessQmdCollectionState, Y as EngramAccessQmdHealthResponse, Z as EngramAccessQualityResponse, _ as EngramAccessRecallExplainRequest, $ as EngramAccessRecallExplainResponse, a0 as EngramAccessRecallRequest, a as EngramAccessRecallResponse, a1 as EngramAccessReviewDispositionRequest, a2 as EngramAccessReviewDispositionResponse, a3 as EngramAccessReviewQueueResponse, a4 as EngramAccessScopeDebug, E as EngramAccessService, a5 as EngramAccessSetCodingContextRequest, a6 as EngramAccessSuggestionSubmitRequest, a7 as EngramAccessTimelineResponse, a8 as EngramAccessTrustZoneBrowseRequest, a9 as EngramAccessTrustZoneBrowseResponse, aa as EngramAccessTrustZoneDemoSeedRequest, ab as EngramAccessTrustZoneDemoSeedResponse, ac as EngramAccessTrustZonePromoteRequest, ad as EngramAccessTrustZonePromoteResponse, ae as EngramAccessTrustZoneRecordSummary, af as EngramAccessTrustZoneStatusResponse, ag as EngramAccessWriteEnvelope, ah as EngramAccessWriteResponse, ai as MemoryScopePlan, aj as shapeMemorySummary } from './access-service-CdJFd3_b.js';
4
4
  import './recall-explain-renderer.js';
5
5
  import './types-D8yUmSik.js';
6
6
  import './recall-audit-anomaly.js';
7
7
  import './explicit-capture.js';
8
8
  import './cross-namespace-budget.js';
9
9
  import './maintenance/memory-governance.js';
10
- import './orchestrator-CX-oqwJq.js';
10
+ import './orchestrator-8fTZsa0y.js';
11
11
  import './live-connectors-runner.js';
12
12
  import './recall-state.js';
13
13
  import './graph-snapshot.js';
@@ -59,6 +59,7 @@ import './conversation-index/backend.js';
59
59
  import './conversation-index/chunker.js';
60
60
  import './faiss-adapter-BHecI1fF.js';
61
61
  import './runtime/child-process.js';
62
+ import './namespaces/search.js';
62
63
  import './shared-context/manager.js';
63
64
  import 'zod';
64
65
  import './compounding/engine.js';
@@ -3,7 +3,7 @@ import {
3
3
  EngramAccessInputError,
4
4
  EngramAccessService,
5
5
  shapeMemorySummary
6
- } from "./chunk-SLYD3AH4.js";
6
+ } from "./chunk-5V3TAB7D.js";
7
7
  import "./chunk-GDASG7NC.js";
8
8
  import "./chunk-GDB4J2H3.js";
9
9
  import "./chunk-DHGSZ3UD.js";
@@ -17,14 +17,14 @@ import "./chunk-5RIRL3XL.js";
17
17
  import "./chunk-JGSKJHF7.js";
18
18
  import "./chunk-FF4KLI5W.js";
19
19
  import "./chunk-BEMWL2FZ.js";
20
- import "./chunk-4PTKFBST.js";
21
- import "./chunk-6UKL6IXM.js";
22
- import "./chunk-TQUWNX7C.js";
20
+ import "./chunk-JVRPJ7D4.js";
21
+ import "./chunk-YM3LR4LS.js";
22
+ import "./chunk-JX2RINDR.js";
23
23
  import "./chunk-CYEPCZN5.js";
24
- import "./chunk-76QTEJ2Q.js";
24
+ import "./chunk-JBHXMCYN.js";
25
25
  import "./chunk-JOASJWQR.js";
26
26
  import "./chunk-RN7MUWON.js";
27
- import "./chunk-FOVPSMGI.js";
27
+ import "./chunk-7WEB3FLJ.js";
28
28
  import "./chunk-Q4CAQGKQ.js";
29
29
  import "./chunk-CINZGPSJ.js";
30
30
  import "./chunk-ZFXCQPNO.js";
@@ -32,8 +32,8 @@ import "./chunk-7OGJQP7T.js";
32
32
  import "./chunk-E6ZDCOHM.js";
33
33
  import "./chunk-OIF36KGD.js";
34
34
  import "./chunk-7DTASS5T.js";
35
- import "./chunk-I4COC5XW.js";
36
- import "./chunk-QT4THOLT.js";
35
+ import "./chunk-PYWNNF2I.js";
36
+ import "./chunk-2DGQLOOM.js";
37
37
  import "./chunk-BMFZLLNI.js";
38
38
  import "./chunk-CI7RKSRE.js";
39
39
  import "./chunk-6HMYUWXR.js";
@@ -1,5 +1,5 @@
1
1
  import { P as PluginConfig } from './types-D8yUmSik.js';
2
- import { O as Orchestrator } from './orchestrator-CX-oqwJq.js';
2
+ import { O as Orchestrator } from './orchestrator-8fTZsa0y.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './briefing.js';
@@ -44,6 +44,7 @@ import './conversation-index/backend.js';
44
44
  import './conversation-index/chunker.js';
45
45
  import './faiss-adapter-BHecI1fF.js';
46
46
  import './runtime/child-process.js';
47
+ import './namespaces/search.js';
47
48
  import './shared-context/manager.js';
48
49
  import 'zod';
49
50
  import './compounding/engine.js';
@@ -9,4 +9,4 @@ function resolveEnsureCollectionArgs(collectionOrExecution, execution) {
9
9
  export {
10
10
  resolveEnsureCollectionArgs
11
11
  };
12
- //# sourceMappingURL=chunk-QT4THOLT.js.map
12
+ //# sourceMappingURL=chunk-2DGQLOOM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/search/port.ts"],"sourcesContent":["import type { QmdSearchResult } from \"../types.js\";\n\n/** Alias so consumers don't need to reference \"Qmd\" in a backend-agnostic context. */\nexport type SearchResult = QmdSearchResult;\n\nexport interface SearchQueryOptions {\n intent?: string;\n explain?: boolean;\n candidateLimit?: number;\n rerank?: boolean;\n chunkStrategy?: \"auto\" | \"regex\";\n structuredSearches?: Array<{ type: \"lex\" | \"vec\" | \"hyde\"; query: string }>;\n}\n\nexport interface SearchExecutionOptions {\n signal?: AbortSignal;\n}\n\nexport function resolveEnsureCollectionArgs(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions,\n): { collection?: string; execution?: SearchExecutionOptions } {\n if (typeof collectionOrExecution === \"string\") {\n return { collection: collectionOrExecution, execution };\n }\n return { collection: undefined, execution: collectionOrExecution ?? execution };\n}\n\n/**\n * Abstract search backend interface.\n *\n * Implementations:\n * - QmdClient (default, local hybrid BM25+vector+reranking)\n * - OramaBackend (embedded, pure JS, hybrid FTS+vector)\n * - LanceDbBackend (embedded, native Arrow bindings, RRF reranking)\n * - MeilisearchBackend (server-based SDK, hybrid search)\n * - RemoteSearchBackend (HTTP REST adapter)\n * - NoopSearchBackend (graceful degradation)\n *\n * See docs/writing-a-search-backend.md for the implementation guide.\n */\nexport interface SearchBackend {\n // ── Lifecycle ──\n probe(): Promise<boolean>;\n /**\n * Optional non-mutating availability probe for health/readiness checks.\n * Implementations must avoid auto-upgrades, collection creation, daemon\n * startup, or any other runtime-modifying side effects.\n */\n checkAvailability?(execution?: SearchExecutionOptions): Promise<boolean>;\n isAvailable(): boolean;\n debugStatus(): string;\n\n // ── Search ──\n search(\n query: string,\n collection?: string,\n maxResults?: number,\n options?: SearchQueryOptions,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]>;\n searchGlobal(query: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]>;\n bm25Search(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]>;\n vectorSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]>;\n hybridSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]>;\n\n // ── Maintenance ──\n update(execution?: SearchExecutionOptions): Promise<void>;\n updateCollection(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n updateCollectionFromDir?(collection: string, memoryDir: string, execution?: SearchExecutionOptions): Promise<void>;\n /**\n * True when update() refreshes every indexed collection, not just this\n * backend's configured collection. Namespace routers use this to avoid\n * repeating the same expensive global update once per namespace.\n */\n updatesAllCollections?(): boolean;\n /**\n * Optional strict refresh used by callers that must know whether a collection\n * was actually refreshed before writing success markers. Ordinary update\n * calls remain fail-open for migration/maintenance resilience.\n */\n updateCollectionStrict?(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n embed(): Promise<void>;\n embedCollection(collection: string): Promise<void>;\n\n // ── Collection management ──\n /**\n * Optional non-mutating collection probe. Backends that can distinguish a\n * missing collection from a transient probe failure should implement this so\n * callers can avoid auto-creating collections in unsafe layouts.\n */\n checkCollection?(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions,\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n execution?: SearchExecutionOptions,\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n collection?: string,\n execution?: SearchExecutionOptions,\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n}\n"],"mappings":";AAkBO,SAAS,4BACd,uBACA,WAC6D;AAC7D,MAAI,OAAO,0BAA0B,UAAU;AAC7C,WAAO,EAAE,YAAY,uBAAuB,UAAU;AAAA,EACxD;AACA,SAAO,EAAE,YAAY,QAAW,WAAW,yBAAyB,UAAU;AAChF;","names":[]}
@@ -53,7 +53,7 @@ import {
53
53
  } from "./chunk-BEMWL2FZ.js";
54
54
  import {
55
55
  namespaceCollectionName
56
- } from "./chunk-4PTKFBST.js";
56
+ } from "./chunk-JVRPJ7D4.js";
57
57
  import {
58
58
  namespaceIdentityFromToken
59
59
  } from "./chunk-ZFXCQPNO.js";
@@ -111,6 +111,9 @@ import {
111
111
  import {
112
112
  getMemoryProjectionPath
113
113
  } from "./chunk-MB5RSUW6.js";
114
+ import {
115
+ displayErrorDetail
116
+ } from "./chunk-6KYMPV2O.js";
114
117
  import {
115
118
  defaultCapsulesDir
116
119
  } from "./chunk-ZY2MNJR6.js";
@@ -1471,6 +1474,8 @@ var EngramAccessService = class {
1471
1474
  async health(namespace) {
1472
1475
  const resolvedNamespace = this.resolveNamespace(namespace);
1473
1476
  const storage = await this.orchestrator.getStorage(resolvedNamespace);
1477
+ const searchBackend = this.orchestrator.config.searchBackend ?? "qmd";
1478
+ const qmdEnabled = this.orchestrator.config.qmdEnabled === true;
1474
1479
  let projectionAvailable = false;
1475
1480
  try {
1476
1481
  await stat2(getMemoryProjectionPath(storage.dir));
@@ -1483,12 +1488,179 @@ var EngramAccessService = class {
1483
1488
  memoryDir: storage.dir,
1484
1489
  namespacesEnabled: this.orchestrator.config.namespacesEnabled === true,
1485
1490
  defaultNamespace: this.orchestrator.config.defaultNamespace,
1486
- searchBackend: this.orchestrator.config.searchBackend ?? "qmd",
1487
- qmdEnabled: this.orchestrator.config.qmdEnabled === true,
1491
+ searchBackend,
1492
+ qmdEnabled,
1493
+ qmd: await this.qmdHealth(
1494
+ searchBackend,
1495
+ qmdEnabled,
1496
+ resolvedNamespace,
1497
+ this.qmdCollectionForHealth(resolvedNamespace, storage.dir)
1498
+ ),
1488
1499
  nativeKnowledgeEnabled: this.orchestrator.config.nativeKnowledge?.enabled === true,
1489
1500
  projectionAvailable
1490
1501
  };
1491
1502
  }
1503
+ qmdCollectionForHealth(namespace, storageDir) {
1504
+ if (this.orchestrator.config.namespacesEnabled !== true) {
1505
+ return this.orchestrator.config.qmdCollection;
1506
+ }
1507
+ const useLegacyDefaultCollection = namespace === this.orchestrator.config.defaultNamespace && storageDir === this.orchestrator.config.memoryDir;
1508
+ return namespaceCollectionName(this.orchestrator.config.qmdCollection, namespace, {
1509
+ defaultNamespace: this.orchestrator.config.defaultNamespace,
1510
+ useLegacyDefaultCollection
1511
+ });
1512
+ }
1513
+ async qmdHealth(searchBackend, qmdEnabled, namespace, collection) {
1514
+ if (searchBackend !== "qmd" || !qmdEnabled) {
1515
+ return {
1516
+ enabled: qmdEnabled,
1517
+ active: false,
1518
+ degraded: false,
1519
+ mode: searchBackend !== "qmd" ? "not-selected" : "disabled",
1520
+ collection,
1521
+ collectionState: "skipped",
1522
+ installedVersion: null,
1523
+ supportedVersion: null,
1524
+ supported: null,
1525
+ upgradeAvailable: null,
1526
+ doctorAvailable: null,
1527
+ debugStatus: searchBackend !== "qmd" ? `backend=${searchBackend}` : "backend=disabled"
1528
+ };
1529
+ }
1530
+ if (this.orchestrator.config.namespacesEnabled === true) {
1531
+ const namespaceHealth = await this.namespaceQmdHealth(searchBackend, qmdEnabled, namespace, collection);
1532
+ if (namespaceHealth) return namespaceHealth;
1533
+ }
1534
+ const qmd = this.orchestrator.qmd;
1535
+ if (!qmd) {
1536
+ return {
1537
+ enabled: true,
1538
+ active: false,
1539
+ degraded: true,
1540
+ mode: "fallback",
1541
+ collection,
1542
+ collectionState: "unknown",
1543
+ installedVersion: null,
1544
+ supportedVersion: null,
1545
+ supported: null,
1546
+ upgradeAvailable: null,
1547
+ doctorAvailable: null,
1548
+ debugStatus: "backend=unavailable"
1549
+ };
1550
+ }
1551
+ const diagnosticAvailable = await this.qmdProbeAvailable(searchBackend, qmdEnabled);
1552
+ const operationalAvailable = diagnosticAvailable || qmd.isAvailable();
1553
+ const collectionState = diagnosticAvailable ? await this.qmdCollectionState(searchBackend, qmdEnabled, collection) : "unknown";
1554
+ const active = operationalAvailable && collectionState !== "missing";
1555
+ const degraded = searchBackend === "qmd" && qmdEnabled && (!active || !diagnosticAvailable || collectionState === "unknown");
1556
+ const debugStatus = qmd.debugStatus();
1557
+ const versionStatus = "getVersionStatus" in qmd && typeof qmd.getVersionStatus === "function" ? qmd.getVersionStatus() : null;
1558
+ const daemonMode = "isDaemonMode" in qmd && typeof qmd.isDaemonMode === "function" ? qmd.isDaemonMode() === true : false;
1559
+ const mode = searchBackend !== "qmd" ? "not-selected" : !qmdEnabled ? "disabled" : !active ? "fallback" : daemonMode ? "daemon" : "cli";
1560
+ return {
1561
+ enabled: qmdEnabled,
1562
+ active,
1563
+ degraded,
1564
+ mode,
1565
+ collection,
1566
+ collectionState,
1567
+ installedVersion: versionStatus?.installedVersion ?? null,
1568
+ supportedVersion: versionStatus?.supportedVersion ?? null,
1569
+ supported: versionStatus?.supported ?? null,
1570
+ upgradeAvailable: versionStatus?.upgradeAvailable ?? null,
1571
+ doctorAvailable: versionStatus?.capabilities?.doctor ?? null,
1572
+ debugStatus
1573
+ };
1574
+ }
1575
+ async namespaceQmdHealth(searchBackend, qmdEnabled, namespace, fallbackCollection) {
1576
+ if (searchBackend !== "qmd" || !qmdEnabled) return null;
1577
+ const searchHealthForNamespace = this.orchestrator.searchHealthForNamespace;
1578
+ if (typeof searchHealthForNamespace !== "function") return null;
1579
+ const controller = new AbortController();
1580
+ const timer = setTimeout(() => controller.abort(), 2e3);
1581
+ timer.unref?.();
1582
+ try {
1583
+ const health = await searchHealthForNamespace.call(this.orchestrator, namespace, {
1584
+ signal: controller.signal
1585
+ });
1586
+ const active = health.available && health.collectionState !== "missing";
1587
+ const degraded = !active || health.collectionState === "unknown";
1588
+ const mode = !active ? "fallback" : health.daemonMode === true ? "daemon" : "cli";
1589
+ return {
1590
+ enabled: true,
1591
+ active,
1592
+ degraded,
1593
+ mode,
1594
+ collection: health.collection || fallbackCollection,
1595
+ collectionState: health.collectionState,
1596
+ installedVersion: health.installedVersion,
1597
+ supportedVersion: health.supportedVersion,
1598
+ supported: health.supported,
1599
+ upgradeAvailable: health.upgradeAvailable,
1600
+ doctorAvailable: health.doctorAvailable,
1601
+ debugStatus: health.debugStatus
1602
+ };
1603
+ } catch (error) {
1604
+ const detail = displayErrorDetail(error) || "unknown";
1605
+ return {
1606
+ enabled: true,
1607
+ active: false,
1608
+ degraded: true,
1609
+ mode: "fallback",
1610
+ collection: fallbackCollection,
1611
+ collectionState: "unknown",
1612
+ installedVersion: null,
1613
+ supportedVersion: null,
1614
+ supported: null,
1615
+ upgradeAvailable: null,
1616
+ doctorAvailable: null,
1617
+ debugStatus: `backend=namespace-unavailable error=${detail}`
1618
+ };
1619
+ } finally {
1620
+ clearTimeout(timer);
1621
+ }
1622
+ }
1623
+ async qmdCollectionState(searchBackend, qmdEnabled, collection) {
1624
+ if (searchBackend !== "qmd" || !qmdEnabled) return "skipped";
1625
+ const qmd = this.orchestrator.qmd;
1626
+ if (!qmd.isAvailable()) return "unknown";
1627
+ if (!qmd.checkCollection) return "skipped";
1628
+ const controller = new AbortController();
1629
+ const timer = setTimeout(() => controller.abort(), 2e3);
1630
+ timer.unref?.();
1631
+ try {
1632
+ return await qmd.checkCollection(collection, {
1633
+ signal: controller.signal
1634
+ });
1635
+ } catch {
1636
+ return "unknown";
1637
+ } finally {
1638
+ clearTimeout(timer);
1639
+ }
1640
+ }
1641
+ async qmdProbeAvailable(searchBackend, qmdEnabled) {
1642
+ if (searchBackend !== "qmd" || !qmdEnabled) return false;
1643
+ const qmd = this.orchestrator.qmd;
1644
+ if (!qmd) return false;
1645
+ const controller = new AbortController();
1646
+ const timer = setTimeout(() => controller.abort(), 2e3);
1647
+ timer.unref?.();
1648
+ try {
1649
+ return await new Promise((resolve2) => {
1650
+ const onAbort = () => {
1651
+ controller.signal.removeEventListener("abort", onAbort);
1652
+ resolve2(false);
1653
+ };
1654
+ controller.signal.addEventListener("abort", onAbort, { once: true });
1655
+ const probe = typeof qmd.checkAvailability === "function" ? qmd.checkAvailability({ signal: controller.signal }) : qmd.probe();
1656
+ probe.then(resolve2, () => resolve2(false)).finally(() => {
1657
+ controller.signal.removeEventListener("abort", onAbort);
1658
+ });
1659
+ });
1660
+ } finally {
1661
+ clearTimeout(timer);
1662
+ }
1663
+ }
1492
1664
  async actionConfidence(request = {}) {
1493
1665
  return evaluateActionConfidence(request);
1494
1666
  }
@@ -5177,4 +5349,4 @@ export {
5177
5349
  shapeMemorySummary,
5178
5350
  EngramAccessService
5179
5351
  };
5180
- //# sourceMappingURL=chunk-SLYD3AH4.js.map
5352
+ //# sourceMappingURL=chunk-5V3TAB7D.js.map