@remnic/core 9.3.660 → 9.3.662

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 (180) hide show
  1. package/dist/access-cli.js +10 -10
  2. package/dist/access-http.d.ts +5 -5
  3. package/dist/access-http.js +10 -10
  4. package/dist/access-mcp.d.ts +5 -5
  5. package/dist/access-mcp.js +9 -9
  6. package/dist/{access-service-D_nbpexW.d.ts → access-service-D0SLB4MH.d.ts} +2 -2
  7. package/dist/access-service.d.ts +5 -5
  8. package/dist/access-service.js +8 -8
  9. package/dist/action-confidence.d.ts +1 -1
  10. package/dist/active-memory-bridge.d.ts +1 -1
  11. package/dist/active-recall.d.ts +1 -1
  12. package/dist/behavior-learner.d.ts +1 -1
  13. package/dist/behavior-signals.d.ts +1 -1
  14. package/dist/bootstrap.d.ts +3 -3
  15. package/dist/briefing.d.ts +1 -1
  16. package/dist/buffer-surprise-report.d.ts +1 -1
  17. package/dist/buffer.d.ts +1 -1
  18. package/dist/calibration.d.ts +1 -1
  19. package/dist/causal-behavior.d.ts +1 -1
  20. package/dist/causal-consolidation.d.ts +1 -1
  21. package/dist/{chunk-7H7J3ZWN.js → chunk-2KDQI363.js} +2 -2
  22. package/dist/{chunk-R2EBP6CM.js → chunk-35HP3TGR.js} +5 -5
  23. package/dist/{chunk-FWIROLS6.js → chunk-44VFF3BB.js} +18 -16
  24. package/dist/chunk-44VFF3BB.js.map +1 -0
  25. package/dist/{chunk-OYXVENIS.js → chunk-4KDLCMLK.js} +3 -3
  26. package/dist/{chunk-MO77TWPS.js → chunk-5AYAZN45.js} +2 -2
  27. package/dist/{chunk-7PCZGNG2.js → chunk-6RHNCKHG.js} +113 -24
  28. package/dist/chunk-6RHNCKHG.js.map +1 -0
  29. package/dist/{chunk-RP2U54GG.js → chunk-DFAXGZKI.js} +2 -2
  30. package/dist/{chunk-6G5JEN55.js → chunk-FZC2WSDB.js} +2 -2
  31. package/dist/{chunk-2EVZ5EN6.js → chunk-HSCJYHYV.js} +6 -6
  32. package/dist/{chunk-B57QYSWN.js → chunk-TGOOJCGA.js} +109 -16
  33. package/dist/chunk-TGOOJCGA.js.map +1 -0
  34. package/dist/{chunk-UNLHHTKN.js → chunk-WOQIHC67.js} +10 -2
  35. package/dist/chunk-WOQIHC67.js.map +1 -0
  36. package/dist/{chunk-5PLUC5OB.js → chunk-WSQG37DV.js} +2 -2
  37. package/dist/{chunk-M3VYPE2H.js → chunk-YNQ6DFSV.js} +1 -1
  38. package/dist/chunk-YNQ6DFSV.js.map +1 -0
  39. package/dist/{chunk-256W7AXC.js → chunk-YYQRVNSV.js} +2 -2
  40. package/dist/{chunk-GRYAECRV.js → chunk-ZJH723NM.js} +2 -2
  41. package/dist/{cli-aYxSuPvP.d.ts → cli-C6twwe84.d.ts} +3 -3
  42. package/dist/cli.d.ts +5 -5
  43. package/dist/cli.js +13 -13
  44. package/dist/compounding/engine.d.ts +1 -1
  45. package/dist/compounding/preference-consolidator.d.ts +1 -1
  46. package/dist/compression-optimizer.d.ts +1 -1
  47. package/dist/config.d.ts +1 -1
  48. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  49. package/dist/connectors/codex-materialize.d.ts +1 -1
  50. package/dist/connectors/index.d.ts +1 -1
  51. package/dist/consolidation-provenance-check.d.ts +1 -1
  52. package/dist/consolidation-undo.d.ts +1 -1
  53. package/dist/contradiction/index.d.ts +1 -1
  54. package/dist/conversation-index/backend.d.ts +1 -1
  55. package/dist/conversation-index/chunker.d.ts +1 -1
  56. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  57. package/dist/conversation-index/indexer.d.ts +1 -1
  58. package/dist/conversation-index/search.d.ts +1 -1
  59. package/dist/day-summary.d.ts +1 -1
  60. package/dist/delinearize.d.ts +1 -1
  61. package/dist/direct-answer-wiring.d.ts +1 -1
  62. package/dist/direct-answer.d.ts +1 -1
  63. package/dist/embedding-fallback.d.ts +1 -1
  64. package/dist/enrichment/index.d.ts +1 -1
  65. package/dist/entity-retrieval.d.ts +1 -1
  66. package/dist/entity-schema.d.ts +1 -1
  67. package/dist/explicit-capture.d.ts +3 -3
  68. package/dist/extraction-judge-telemetry.d.ts +1 -1
  69. package/dist/extraction-judge-training.d.ts +1 -1
  70. package/dist/extraction-judge.d.ts +1 -1
  71. package/dist/extraction.d.ts +1 -1
  72. package/dist/fallback-llm.d.ts +1 -1
  73. package/dist/identity-continuity.d.ts +1 -1
  74. package/dist/importance.d.ts +1 -1
  75. package/dist/index.d.ts +8 -8
  76. package/dist/index.js +15 -15
  77. package/dist/intent.d.ts +1 -1
  78. package/dist/lcm/engine.d.ts +1 -1
  79. package/dist/lcm/index.d.ts +1 -1
  80. package/dist/lcm/tools.d.ts +1 -1
  81. package/dist/lifecycle.d.ts +1 -1
  82. package/dist/live-connectors-runner.d.ts +1 -1
  83. package/dist/local-llm.d.ts +1 -1
  84. package/dist/maintenance/memory-governance.d.ts +1 -1
  85. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  86. package/dist/memory-action-policy.d.ts +1 -1
  87. package/dist/memory-cache.d.ts +1 -1
  88. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  89. package/dist/memory-projection-store.d.ts +1 -1
  90. package/dist/memory-provenance.d.ts +1 -1
  91. package/dist/memory-worth-outcomes.d.ts +1 -1
  92. package/dist/models-json.d.ts +1 -1
  93. package/dist/namespaces/migrate.d.ts +1 -1
  94. package/dist/namespaces/migrate.js +8 -8
  95. package/dist/namespaces/principal.d.ts +1 -1
  96. package/dist/namespaces/search.d.ts +1 -1
  97. package/dist/namespaces/search.js +7 -7
  98. package/dist/namespaces/storage.d.ts +1 -1
  99. package/dist/native-knowledge.d.ts +1 -1
  100. package/dist/operator-toolkit.d.ts +1 -1
  101. package/dist/operator-toolkit.js +9 -9
  102. package/dist/{orchestrator-D1wcmPNj.d.ts → orchestrator-Cg1UkvmO.d.ts} +2 -2
  103. package/dist/orchestrator.d.ts +3 -3
  104. package/dist/orchestrator.js +9 -9
  105. package/dist/patterns-cli.d.ts +1 -1
  106. package/dist/policy-runtime.d.ts +1 -1
  107. package/dist/qmd-recall-cache.d.ts +1 -1
  108. package/dist/qmd.d.ts +50 -2
  109. package/dist/qmd.js +8 -2
  110. package/dist/recall-disclosure-escalation.d.ts +1 -1
  111. package/dist/recall-explain-renderer.d.ts +2 -1
  112. package/dist/recall-planner-llm.d.ts +1 -1
  113. package/dist/recall-state.d.ts +17 -1
  114. package/dist/recall-state.js +1 -1
  115. package/dist/recall-tag-filter.d.ts +1 -1
  116. package/dist/recall-xray-cli.d.ts +1 -1
  117. package/dist/recall-xray-renderer.d.ts +1 -1
  118. package/dist/recall-xray.d.ts +1 -1
  119. package/dist/resolve-auth-token.d.ts +1 -1
  120. package/dist/retrieval-agents.d.ts +1 -1
  121. package/dist/retrieval-tiers.d.ts +1 -1
  122. package/dist/routing/engine.d.ts +1 -1
  123. package/dist/routing/store.d.ts +1 -1
  124. package/dist/search/embed-helper.d.ts +1 -1
  125. package/dist/search/factory.d.ts +1 -1
  126. package/dist/search/factory.js +6 -6
  127. package/dist/search/index.d.ts +1 -1
  128. package/dist/search/index.js +6 -6
  129. package/dist/search/lancedb-backend.d.ts +1 -1
  130. package/dist/search/lancedb-backend.js +2 -2
  131. package/dist/search/meilisearch-backend.d.ts +1 -1
  132. package/dist/search/meilisearch-backend.js +2 -2
  133. package/dist/search/noop-backend.d.ts +1 -1
  134. package/dist/search/orama-backend.d.ts +1 -1
  135. package/dist/search/orama-backend.js +2 -2
  136. package/dist/search/port.d.ts +21 -2
  137. package/dist/search/port.js +1 -1
  138. package/dist/search/remote-backend.d.ts +1 -1
  139. package/dist/{semantic-consolidation-MWOdNtSE.d.ts → semantic-consolidation-BICZvQ3C.d.ts} +1 -1
  140. package/dist/semantic-consolidation.d.ts +2 -2
  141. package/dist/semantic-rule-verifier.d.ts +1 -1
  142. package/dist/session-observer-bands.d.ts +1 -1
  143. package/dist/session-observer-state.d.ts +1 -1
  144. package/dist/shared-context/manager.d.ts +1 -1
  145. package/dist/signal.d.ts +1 -1
  146. package/dist/storage.d.ts +1 -1
  147. package/dist/summarizer.d.ts +1 -1
  148. package/dist/summary-snapshot.d.ts +1 -1
  149. package/dist/temporal-supersession.d.ts +1 -1
  150. package/dist/temporal-validity.d.ts +1 -1
  151. package/dist/threading.d.ts +1 -1
  152. package/dist/tier-migration.d.ts +1 -1
  153. package/dist/tier-routing.d.ts +1 -1
  154. package/dist/topics.d.ts +1 -1
  155. package/dist/transcript.d.ts +1 -1
  156. package/dist/{types-CgcCpUrf.d.ts → types-D96bCB3C.d.ts} +1 -1
  157. package/dist/types.d.ts +1 -1
  158. package/dist/utility-runtime.d.ts +1 -1
  159. package/package.json +3 -2
  160. package/scripts/build-with-heap.mjs +25 -0
  161. package/src/namespaces/search.ts +16 -0
  162. package/src/orchestrator.ts +144 -3
  163. package/src/qmd.ts +137 -18
  164. package/src/recall-state.ts +47 -21
  165. package/src/search/port.ts +25 -0
  166. package/dist/chunk-7PCZGNG2.js.map +0 -1
  167. package/dist/chunk-B57QYSWN.js.map +0 -1
  168. package/dist/chunk-FWIROLS6.js.map +0 -1
  169. package/dist/chunk-M3VYPE2H.js.map +0 -1
  170. package/dist/chunk-UNLHHTKN.js.map +0 -1
  171. /package/dist/{chunk-7H7J3ZWN.js.map → chunk-2KDQI363.js.map} +0 -0
  172. /package/dist/{chunk-R2EBP6CM.js.map → chunk-35HP3TGR.js.map} +0 -0
  173. /package/dist/{chunk-OYXVENIS.js.map → chunk-4KDLCMLK.js.map} +0 -0
  174. /package/dist/{chunk-MO77TWPS.js.map → chunk-5AYAZN45.js.map} +0 -0
  175. /package/dist/{chunk-RP2U54GG.js.map → chunk-DFAXGZKI.js.map} +0 -0
  176. /package/dist/{chunk-6G5JEN55.js.map → chunk-FZC2WSDB.js.map} +0 -0
  177. /package/dist/{chunk-2EVZ5EN6.js.map → chunk-HSCJYHYV.js.map} +0 -0
  178. /package/dist/{chunk-5PLUC5OB.js.map → chunk-WSQG37DV.js.map} +0 -0
  179. /package/dist/{chunk-256W7AXC.js.map → chunk-YYQRVNSV.js.map} +0 -0
  180. /package/dist/{chunk-GRYAECRV.js.map → chunk-ZJH723NM.js.map} +0 -0
package/dist/qmd.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Z as QmdSearchResult, aj as QmdSearchExplain } from './types-CgcCpUrf.js';
1
+ import { Q as QmdSearchResult, aj as QmdSearchExplain } from './types-D96bCB3C.js';
2
2
  import { SearchBackend, SearchExecutionOptions, SearchQueryOptions } from './search/port.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -105,6 +105,7 @@ interface QmdDoctorReport {
105
105
  error?: string;
106
106
  }
107
107
  declare const QMD_SUPPORTED_VERSION = "2.5.3";
108
+ type QmdRuntimeEnv = Record<string, string | undefined>;
108
109
  declare function parseQmdVersion(version: string | null): QmdVersionTuple | null;
109
110
  declare function parseQmdVersionOutput(stdout: string, stderr: string): string | null;
110
111
  declare function compareQmdVersions(left: QmdVersionTuple | null, right: QmdVersionTuple | null): number;
@@ -128,6 +129,37 @@ declare function getQmdPostInstallProbeTargets(qmdPath: string, qmdPathSource: "
128
129
  declare function buildDefaultStructuredSearches(query: string, options?: SearchQueryOptions, strategy?: QmdSearchStrategy): QmdStructuredSearch[];
129
130
  declare function parseQmdExplain(value: unknown): QmdSearchExplain | undefined;
130
131
  declare function getQmdCommandName(args: string[]): string;
132
+ declare class QmdDaemonSession {
133
+ private child;
134
+ private initialized;
135
+ private buffer;
136
+ private startPromise;
137
+ private pendingRequests;
138
+ private readonly qmdPath;
139
+ private readonly runtimeEnv;
140
+ private readonly indexName?;
141
+ constructor(qmdPath: string, runtimeEnv?: QmdRuntimeEnv, indexName?: string);
142
+ /** Spawn the qmd mcp child process and perform MCP handshake. */
143
+ start(): Promise<boolean>;
144
+ /** Call an MCP tool and return the parsed result. */
145
+ callTool(name: string, args: Record<string, unknown>, timeoutMs?: number, signal?: AbortSignal): Promise<unknown>;
146
+ /** Kill stdio process and clear state so the next probe can restart. */
147
+ invalidate(): void;
148
+ /** Kill stdio process and wait briefly for the child handle to close. */
149
+ close(timeoutMs?: number): Promise<void>;
150
+ isActive(): boolean;
151
+ /** True while the process is spawned but the MCP handshake has not yet completed. */
152
+ isLoading(): boolean;
153
+ private sendRequest;
154
+ private sendNotification;
155
+ private handleStdoutData;
156
+ private handleMessage;
157
+ private cleanup;
158
+ }
159
+ declare function retainSharedDaemonSession(qmdPath: string, runtimeEnv?: QmdRuntimeEnv, indexName?: string, cliVersion?: string | null): QmdDaemonSession;
160
+ declare function releaseSharedDaemonSession(session: QmdDaemonSession | null): Promise<void>;
161
+ declare const sharedDaemonSessionCountForTest: () => number;
162
+
131
163
  declare class QmdClient implements SearchBackend {
132
164
  private readonly collection;
133
165
  private readonly maxResults;
@@ -237,6 +269,22 @@ declare class QmdClient implements SearchBackend {
237
269
  private searchViaDaemon;
238
270
  private bm25SearchViaDaemon;
239
271
  private vsearchViaDaemon;
272
+ /**
273
+ * Report a backend degradation to the caller's observer (#1536): an empty
274
+ * result caused by unavailability/loading/timeout is otherwise
275
+ * indistinguishable from "no matches" (CLAUDE.md rule 34). Observer
276
+ * failures are swallowed — observability must never break search.
277
+ */
278
+ private notifyDegradation;
279
+ /**
280
+ * Condense an error into a degradation `detail` string that is safe to
281
+ * serialize on LastRecallSnapshot and expose via last-recall MCP/HTTP
282
+ * surfaces (cursor review on #1544): first line only, path-like tokens
283
+ * redacted (absolute, home-rooted, and Windows drive paths can leak
284
+ * usernames and filesystem layout), capped at 160 chars. The unredacted
285
+ * error still reaches operators via the warn log at the failure site.
286
+ */
287
+ private degradationDetail;
240
288
  private searchViaSubprocess;
241
289
  private bm25SearchViaSubprocess;
242
290
  private vsearchViaSubprocess;
@@ -256,4 +304,4 @@ declare class QmdClient implements SearchBackend {
256
304
  ensureCollection(memoryDir: string, collectionOrExecution?: string | SearchExecutionOptions, execution?: SearchExecutionOptions): Promise<"present" | "missing" | "unknown" | "skipped">;
257
305
  }
258
306
 
259
- export { QMD_SUPPORTED_VERSION, type QmdCapabilities, type QmdChunkStrategy, QmdClient, type QmdClientOptions, type QmdDoctorReport, type QmdSearchStrategy, type QmdStructuredSearch, type QmdStructuredSearchType, type QmdSubprocessStrategy, type QmdVersionStatus, type QmdVersionTuple, buildDefaultStructuredSearches, compareQmdVersions, getQmdCommandName, getQmdPostInstallProbeTargets, parseQmdExplain, parseQmdVersion, parseQmdVersionOutput, resolveQmdCapabilities, shouldAutoUpgradeQmd, versionAtLeast };
307
+ export { QMD_SUPPORTED_VERSION, type QmdCapabilities, type QmdChunkStrategy, QmdClient, type QmdClientOptions, type QmdDoctorReport, type QmdSearchStrategy, type QmdStructuredSearch, type QmdStructuredSearchType, type QmdSubprocessStrategy, type QmdVersionStatus, type QmdVersionTuple, buildDefaultStructuredSearches, compareQmdVersions, getQmdCommandName, getQmdPostInstallProbeTargets, parseQmdExplain, parseQmdVersion, parseQmdVersionOutput, releaseSharedDaemonSession as releaseSharedDaemonSessionForTest, resolveQmdCapabilities, retainSharedDaemonSession as retainSharedDaemonSessionForTest, sharedDaemonSessionCountForTest, shouldAutoUpgradeQmd, versionAtLeast };
package/dist/qmd.js CHANGED
@@ -8,11 +8,14 @@ import {
8
8
  parseQmdExplain,
9
9
  parseQmdVersion,
10
10
  parseQmdVersionOutput,
11
+ releaseSharedDaemonSession,
11
12
  resolveQmdCapabilities,
13
+ retainSharedDaemonSession,
14
+ sharedDaemonSessionCountForTest,
12
15
  shouldAutoUpgradeQmd,
13
16
  versionAtLeast
14
- } from "./chunk-7PCZGNG2.js";
15
- import "./chunk-M3VYPE2H.js";
17
+ } from "./chunk-6RHNCKHG.js";
18
+ import "./chunk-YNQ6DFSV.js";
16
19
  import "./chunk-O75CRYGF.js";
17
20
  import "./chunk-AWJ2FHCF.js";
18
21
  import "./chunk-42JKGUFJ.js";
@@ -30,7 +33,10 @@ export {
30
33
  parseQmdExplain,
31
34
  parseQmdVersion,
32
35
  parseQmdVersionOutput,
36
+ releaseSharedDaemonSession as releaseSharedDaemonSessionForTest,
33
37
  resolveQmdCapabilities,
38
+ retainSharedDaemonSession as retainSharedDaemonSessionForTest,
39
+ sharedDaemonSessionCountForTest,
34
40
  shouldAutoUpgradeQmd,
35
41
  versionAtLeast
36
42
  };
@@ -1,4 +1,4 @@
1
- import { K as RecallDisclosure } from './types-CgcCpUrf.js';
1
+ import { K as RecallDisclosure } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,6 +1,7 @@
1
1
  import { LastRecallSnapshot } from './recall-state.js';
2
- import { R as RecallTierExplain } from './types-CgcCpUrf.js';
2
+ import { R as RecallTierExplain } from './types-D96bCB3C.js';
3
3
  import { RecallXraySnapshot } from './recall-xray.js';
4
+ import './search/port.js';
4
5
  import './types-ByK7T3L6.js';
5
6
  import './index-DJ9QWMw-.js';
6
7
  import './memory-provenance.js';
@@ -1,4 +1,4 @@
1
- import { H as RecallPlanMode, P as PluginConfig } from './types-CgcCpUrf.js';
1
+ import { H as RecallPlanMode, P as PluginConfig } from './types-D96bCB3C.js';
2
2
  import { FallbackLlmClient, FallbackLlmOptions } from './fallback-llm.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,5 @@
1
- import { H as RecallPlanMode, J as IdentityInjectionMode, R as RecallTierExplain } from './types-CgcCpUrf.js';
1
+ import { SearchDegradation } from './search/port.js';
2
+ import { H as RecallPlanMode, J as IdentityInjectionMode, R as RecallTierExplain } from './types-D96bCB3C.js';
2
3
  import './types-ByK7T3L6.js';
3
4
  import './index-DJ9QWMw-.js';
4
5
 
@@ -51,6 +52,14 @@ interface LastRecallSnapshot {
51
52
  * graph-path `recallExplain` operation.
52
53
  */
53
54
  tierExplain?: RecallTierExplain;
55
+ /**
56
+ * Backend degradations observed while serving this recall (issue #1536).
57
+ * Present only when a search backend reported unavailable/loading/timeout
58
+ * during the recall — distinguishing "no matches" from "backend could not
59
+ * answer" (CLAUDE.md rule 34). Deliberately independent of `tierExplain`,
60
+ * which is gated behind `recallDirectAnswerEnabled`.
61
+ */
62
+ backendDegradations?: SearchDegradation[];
54
63
  }
55
64
  interface GraphRecallExpandedEntry {
56
65
  path: string;
@@ -137,6 +146,13 @@ declare class LastRecallStore {
137
146
  * can render which retrieval tier served the query.
138
147
  */
139
148
  tierExplain?: RecallTierExplain;
149
+ /**
150
+ * Backend degradations observed while serving this recall (issue #1536).
151
+ * Passed at record time so the published snapshot is born annotated —
152
+ * a post-record annotation would leave a window where readers see the
153
+ * snapshot without them (codex review on #1544).
154
+ */
155
+ backendDegradations?: SearchDegradation[];
140
156
  }): Promise<void>;
141
157
  /**
142
158
  * Attach a RecallTierExplain block to the existing snapshot for a
@@ -2,7 +2,7 @@ import {
2
2
  LastRecallStore,
3
3
  TierMigrationStatusStore,
4
4
  clampGraphRecallExpandedEntries
5
- } from "./chunk-FWIROLS6.js";
5
+ } from "./chunk-44VFF3BB.js";
6
6
  import "./chunk-SFQ6QNL7.js";
7
7
  import "./chunk-2ODBA7MQ.js";
8
8
  import "./chunk-PZ5AY32C.js";
@@ -1,6 +1,6 @@
1
1
  import { RecallFilterTrace } from './recall-xray.js';
2
2
  import './memory-provenance.js';
3
- import './types-CgcCpUrf.js';
3
+ import './types-D96bCB3C.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
6
6
  import './user-model.js';
@@ -1,5 +1,5 @@
1
1
  import { RecallXrayFormat } from './recall-xray-renderer.js';
2
- import { K as RecallDisclosure } from './types-CgcCpUrf.js';
2
+ import { K as RecallDisclosure } from './types-D96bCB3C.js';
3
3
  import './recall-xray.js';
4
4
  import './memory-provenance.js';
5
5
  import './user-model.js';
@@ -1,6 +1,6 @@
1
1
  import { RecallXraySnapshot } from './recall-xray.js';
2
2
  import './memory-provenance.js';
3
- import './types-CgcCpUrf.js';
3
+ import './types-D96bCB3C.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
6
6
  import './user-model.js';
@@ -1,5 +1,5 @@
1
1
  import { RetrievedMemoryProvenance } from './memory-provenance.js';
2
- import { R as RecallTierExplain, K as RecallDisclosure } from './types-CgcCpUrf.js';
2
+ import { R as RecallTierExplain, K as RecallDisclosure } from './types-D96bCB3C.js';
3
3
  import './user-model.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { a6 as SecretRef, a7 as AgentAccessAuthToken } from './types-CgcCpUrf.js';
1
+ import { a6 as SecretRef, a7 as AgentAccessAuthToken } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { Z as QmdSearchResult } from './types-CgcCpUrf.js';
1
+ import { Q as QmdSearchResult } from './types-D96bCB3C.js';
2
2
  import { QmdClient } from './qmd.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { aq as RetrievalTier } from './types-CgcCpUrf.js';
1
+ import { aq as RetrievalTier } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { M as MemoryCategory } from '../types-CgcCpUrf.js';
1
+ import { M as MemoryCategory } from '../types-D96bCB3C.js';
2
2
  import '../types-ByK7T3L6.js';
3
3
  import '../index-DJ9QWMw-.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { RoutingEngineOptions, RouteRule } from './engine.js';
2
- import '../types-CgcCpUrf.js';
2
+ import '../types-D96bCB3C.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
5
5
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig } from '../types-CgcCpUrf.js';
1
+ import { P as PluginConfig } from '../types-D96bCB3C.js';
2
2
  import { HostEmbeddingProvider } from '../host-embedding-provider.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig } from '../types-CgcCpUrf.js';
1
+ import { P as PluginConfig } from '../types-D96bCB3C.js';
2
2
  import { SearchBackend } from './port.js';
3
3
  import { F as FaissConversationIndexAdapter } from '../faiss-adapter-BHecI1fF.js';
4
4
  import { ConversationQmdRuntime, ConversationIndexBackend } from '../conversation-index/backend.js';
@@ -2,21 +2,21 @@ import {
2
2
  createConversationIndexRuntime,
3
3
  createConversationSearchBackend,
4
4
  createSearchBackend
5
- } from "../chunk-R2EBP6CM.js";
6
- import "../chunk-6G5JEN55.js";
5
+ } from "../chunk-35HP3TGR.js";
6
+ import "../chunk-FZC2WSDB.js";
7
7
  import "../chunk-CYEPCZN5.js";
8
- import "../chunk-GRYAECRV.js";
8
+ import "../chunk-ZJH723NM.js";
9
9
  import "../chunk-JOASJWQR.js";
10
10
  import "../chunk-RN7MUWON.js";
11
- import "../chunk-5PLUC5OB.js";
11
+ import "../chunk-WSQG37DV.js";
12
12
  import "../chunk-Q4CAQGKQ.js";
13
13
  import "../chunk-CINZGPSJ.js";
14
14
  import "../chunk-7OGJQP7T.js";
15
15
  import "../chunk-E6ZDCOHM.js";
16
16
  import "../chunk-OIF36KGD.js";
17
17
  import "../chunk-7DTASS5T.js";
18
- import "../chunk-7PCZGNG2.js";
19
- import "../chunk-M3VYPE2H.js";
18
+ import "../chunk-6RHNCKHG.js";
19
+ import "../chunk-YNQ6DFSV.js";
20
20
  import "../chunk-O75CRYGF.js";
21
21
  import "../chunk-3ONXXHQO.js";
22
22
  import "../chunk-AWJ2FHCF.js";
@@ -7,7 +7,7 @@ export { OramaBackend } from './orama-backend.js';
7
7
  export { EmbedHelper } from './embed-helper.js';
8
8
  export { IndexableDocument, scanMemoryDir } from './document-scanner.js';
9
9
  export { createConversationIndexRuntime, createConversationSearchBackend, createSearchBackend } from './factory.js';
10
- import '../types-CgcCpUrf.js';
10
+ import '../types-D96bCB3C.js';
11
11
  import '../types-ByK7T3L6.js';
12
12
  import '../index-DJ9QWMw-.js';
13
13
  import '../host-embedding-provider.js';
@@ -2,16 +2,16 @@ import {
2
2
  createConversationIndexRuntime,
3
3
  createConversationSearchBackend,
4
4
  createSearchBackend
5
- } from "../chunk-R2EBP6CM.js";
5
+ } from "../chunk-35HP3TGR.js";
6
6
  import {
7
7
  MeilisearchBackend
8
- } from "../chunk-6G5JEN55.js";
8
+ } from "../chunk-FZC2WSDB.js";
9
9
  import {
10
10
  NoopSearchBackend
11
11
  } from "../chunk-CYEPCZN5.js";
12
12
  import {
13
13
  OramaBackend
14
- } from "../chunk-GRYAECRV.js";
14
+ } from "../chunk-ZJH723NM.js";
15
15
  import {
16
16
  RemoteSearchBackend
17
17
  } from "../chunk-JOASJWQR.js";
@@ -20,7 +20,7 @@ import {
20
20
  } from "../chunk-RN7MUWON.js";
21
21
  import {
22
22
  LanceDbBackend
23
- } from "../chunk-5PLUC5OB.js";
23
+ } from "../chunk-WSQG37DV.js";
24
24
  import {
25
25
  scanMemoryDir
26
26
  } from "../chunk-Q4CAQGKQ.js";
@@ -29,8 +29,8 @@ import "../chunk-7OGJQP7T.js";
29
29
  import "../chunk-E6ZDCOHM.js";
30
30
  import "../chunk-OIF36KGD.js";
31
31
  import "../chunk-7DTASS5T.js";
32
- import "../chunk-7PCZGNG2.js";
33
- import "../chunk-M3VYPE2H.js";
32
+ import "../chunk-6RHNCKHG.js";
33
+ import "../chunk-YNQ6DFSV.js";
34
34
  import "../chunk-O75CRYGF.js";
35
35
  import "../chunk-3ONXXHQO.js";
36
36
  import "../chunk-AWJ2FHCF.js";
@@ -1,6 +1,6 @@
1
1
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions, SearchResult } from './port.js';
2
2
  import { EmbedHelper } from './embed-helper.js';
3
- import '../types-CgcCpUrf.js';
3
+ import '../types-D96bCB3C.js';
4
4
  import '../types-ByK7T3L6.js';
5
5
  import '../index-DJ9QWMw-.js';
6
6
  import '../host-embedding-provider.js';
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  LanceDbBackend
3
- } from "../chunk-5PLUC5OB.js";
3
+ } from "../chunk-WSQG37DV.js";
4
4
  import "../chunk-Q4CAQGKQ.js";
5
5
  import "../chunk-CINZGPSJ.js";
6
- import "../chunk-M3VYPE2H.js";
6
+ import "../chunk-YNQ6DFSV.js";
7
7
  import "../chunk-2ODBA7MQ.js";
8
8
  import "../chunk-PVGDJXVK.js";
9
9
  import "../chunk-PZ5AY32C.js";
@@ -1,5 +1,5 @@
1
1
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions, SearchResult } from './port.js';
2
- import '../types-CgcCpUrf.js';
2
+ import '../types-D96bCB3C.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
5
5
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MeilisearchBackend
3
- } from "../chunk-6G5JEN55.js";
3
+ } from "../chunk-FZC2WSDB.js";
4
4
  import "../chunk-Q4CAQGKQ.js";
5
5
  import "../chunk-CINZGPSJ.js";
6
- import "../chunk-M3VYPE2H.js";
6
+ import "../chunk-YNQ6DFSV.js";
7
7
  import "../chunk-2ODBA7MQ.js";
8
8
  import "../chunk-PVGDJXVK.js";
9
9
  import "../chunk-PZ5AY32C.js";
@@ -1,5 +1,5 @@
1
1
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions, SearchResult } from './port.js';
2
- import '../types-CgcCpUrf.js';
2
+ import '../types-D96bCB3C.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions, SearchResult } from './port.js';
2
2
  import { EmbedHelper } from './embed-helper.js';
3
- import '../types-CgcCpUrf.js';
3
+ import '../types-D96bCB3C.js';
4
4
  import '../types-ByK7T3L6.js';
5
5
  import '../index-DJ9QWMw-.js';
6
6
  import '../host-embedding-provider.js';
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  OramaBackend,
3
3
  resolveOramaCollectionDbFilePath
4
- } from "../chunk-GRYAECRV.js";
4
+ } from "../chunk-ZJH723NM.js";
5
5
  import "../chunk-Q4CAQGKQ.js";
6
6
  import "../chunk-CINZGPSJ.js";
7
- import "../chunk-M3VYPE2H.js";
7
+ import "../chunk-YNQ6DFSV.js";
8
8
  import "../chunk-2ODBA7MQ.js";
9
9
  import "../chunk-PVGDJXVK.js";
10
10
  import "../chunk-PZ5AY32C.js";
@@ -1,4 +1,4 @@
1
- import { Z as QmdSearchResult } from '../types-CgcCpUrf.js';
1
+ import { Q as QmdSearchResult } from '../types-D96bCB3C.js';
2
2
  import '../types-ByK7T3L6.js';
3
3
  import '../index-DJ9QWMw-.js';
4
4
 
@@ -15,8 +15,27 @@ interface SearchQueryOptions {
15
15
  query: string;
16
16
  }>;
17
17
  }
18
+ /**
19
+ * A search that returned empty (or partial) results because the backend was
20
+ * unavailable, still loading, or timed out — cases that are otherwise
21
+ * indistinguishable from a genuine "no matches" (issue #1536, CLAUDE.md
22
+ * rule 34).
23
+ */
24
+ interface SearchDegradation {
25
+ backend: "qmd";
26
+ code: "backend_unavailable" | "daemon_timeout" | "daemon_loading" | "subprocess_error" | "deadline_exceeded";
27
+ detail?: string;
28
+ }
18
29
  interface SearchExecutionOptions {
19
30
  signal?: AbortSignal;
31
+ /**
32
+ * Observer invoked when the backend degrades during this call (#1536).
33
+ * Callers that need to distinguish empty-because-degraded from
34
+ * empty-because-no-matches (recall x-ray, fallback decisions) pass a
35
+ * collector here. Observer failures are swallowed by the notifier —
36
+ * observability must never break search.
37
+ */
38
+ onDegradation?: (degradation: SearchDegradation) => void;
20
39
  }
21
40
  declare function resolveEnsureCollectionArgs(collectionOrExecution?: string | SearchExecutionOptions, execution?: SearchExecutionOptions): {
22
41
  collection?: string;
@@ -93,4 +112,4 @@ interface SearchBackend {
93
112
  ensureCollection(memoryDir: string, collection?: string, execution?: SearchExecutionOptions): Promise<"present" | "missing" | "unknown" | "skipped">;
94
113
  }
95
114
 
96
- export { type SearchBackend, type SearchExecutionOptions, type SearchQueryOptions, type SearchResult, resolveEnsureCollectionArgs };
115
+ export { type SearchBackend, type SearchDegradation, type SearchExecutionOptions, type SearchQueryOptions, type SearchResult, resolveEnsureCollectionArgs };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveEnsureCollectionArgs
3
- } from "../chunk-M3VYPE2H.js";
3
+ } from "../chunk-YNQ6DFSV.js";
4
4
  import "../chunk-PZ5AY32C.js";
5
5
  export {
6
6
  resolveEnsureCollectionArgs
@@ -1,5 +1,5 @@
1
1
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions, SearchResult } from './port.js';
2
- import '../types-CgcCpUrf.js';
2
+ import '../types-D96bCB3C.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
5
5
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { P as PluginConfig, g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import { RolloutSummaryInput, MaterializeResult } from './connectors/codex-materialize.js';
3
3
  import { LoggerBackend } from './logger.js';
4
4
  import { SemanticConsolidationLlmOperator } from './consolidation-operator.js';
@@ -1,6 +1,6 @@
1
- import './types-CgcCpUrf.js';
1
+ import './types-D96bCB3C.js';
2
2
  import './connectors/codex-materialize.js';
3
- export { C as ConsolidationCluster, O as OperatorAwareConsolidationResult, S as SemanticConsolidationResult, a as buildConsolidationPrompt, b as buildExtensionsBlockForConsolidation, c as buildOperatorAwareConsolidationPrompt, e as chooseConsolidationOperator, f as findSimilarClusters, m as materializeAfterSemanticConsolidation, p as parseConsolidationResponse, g as parseOperatorAwareConsolidationResponse, r as resolveExtensionsRoot } from './semantic-consolidation-MWOdNtSE.js';
3
+ export { C as ConsolidationCluster, O as OperatorAwareConsolidationResult, S as SemanticConsolidationResult, a as buildConsolidationPrompt, b as buildExtensionsBlockForConsolidation, c as buildOperatorAwareConsolidationPrompt, e as chooseConsolidationOperator, f as findSimilarClusters, m as materializeAfterSemanticConsolidation, p as parseConsolidationResponse, g as parseOperatorAwareConsolidationResponse, r as resolveExtensionsRoot } from './semantic-consolidation-BICZvQ3C.js';
4
4
  export { CONSOLIDATION_OPERATORS, ConsolidationOperator, SemanticConsolidationLlmOperator, isConsolidationOperator, isSemanticConsolidationLlmOperator, isValidDerivedFromEntry } from './consolidation-operator.js';
5
5
  import './types-ByK7T3L6.js';
6
6
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { a1 as SessionObserverBandConfig } from './types-CgcCpUrf.js';
1
+ import { a1 as SessionObserverBandConfig } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { a1 as SessionObserverBandConfig } from './types-CgcCpUrf.js';
1
+ import { a1 as SessionObserverBandConfig } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { P as PluginConfig } from '../types-CgcCpUrf.js';
2
+ import { P as PluginConfig } from '../types-D96bCB3C.js';
3
3
  import '../types-ByK7T3L6.js';
4
4
  import '../index-DJ9QWMw-.js';
5
5
 
package/dist/signal.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ar as SignalScanResult } from './types-CgcCpUrf.js';
1
+ import { ar as SignalScanResult } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
package/dist/storage.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VersioningConfig } from './page-versioning.js';
2
2
  import { ConsolidationOperator } from './consolidation-operator.js';
3
- import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, I as ImportanceScore, i as MemoryLink, j as MemoryFrontmatter, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-CgcCpUrf.js';
3
+ import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, I as ImportanceScore, i as MemoryLink, j as MemoryFrontmatter, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-D96bCB3C.js';
4
4
  import { ProjectedMemoryBrowseOptions, ProjectedMemoryBrowsePage, readProjectedGovernanceRecord } from './memory-projection-store.js';
5
5
  import './types-ByK7T3L6.js';
6
6
  import './index-DJ9QWMw-.js';
@@ -1,5 +1,5 @@
1
1
  import { ModelRegistry } from './model-registry.js';
2
- import { P as PluginConfig, G as GatewayConfig, _ as TranscriptEntry, a0 as HourlySummary } from './types-CgcCpUrf.js';
2
+ import { P as PluginConfig, G as GatewayConfig, _ as TranscriptEntry, a0 as HourlySummary } from './types-D96bCB3C.js';
3
3
  import { TranscriptManager } from './transcript.js';
4
4
  import './types-ByK7T3L6.js';
5
5
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { a0 as HourlySummary } from './types-CgcCpUrf.js';
1
+ import { a0 as HourlySummary } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { j as MemoryFrontmatter } from './types-CgcCpUrf.js';
1
+ import { j as MemoryFrontmatter } from './types-D96bCB3C.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { j as MemoryFrontmatter } from './types-CgcCpUrf.js';
1
+ import { j as MemoryFrontmatter } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { Y as BufferTurn, as as ConversationThread } from './types-CgcCpUrf.js';
1
+ import { Z as BufferTurn, as as ConversationThread } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import { MemoryTier } from './tier-routing.js';
4
4
  import { SearchBackend } from './search/port.js';
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-CgcCpUrf.js';
1
+ import { g as MemoryFile } from './types-D96bCB3C.js';
2
2
  import { LifecycleSignals } from './lifecycle.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile, T as TopicScore } from './types-CgcCpUrf.js';
1
+ import { g as MemoryFile, T as TopicScore } from './types-D96bCB3C.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-CgcCpUrf.js';
1
+ import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-D96bCB3C.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';