@remnic/core 9.3.661 → 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 (38) hide show
  1. package/dist/access-cli.js +5 -5
  2. package/dist/access-http.js +6 -6
  3. package/dist/access-mcp.js +5 -5
  4. package/dist/access-service.js +4 -4
  5. package/dist/{chunk-5G2DNO54.js → chunk-2KDQI363.js} +2 -2
  6. package/dist/{chunk-EMSC4P66.js → chunk-35HP3TGR.js} +2 -2
  7. package/dist/{chunk-7F7LC6HW.js → chunk-4KDLCMLK.js} +3 -3
  8. package/dist/{chunk-RQRKQJYM.js → chunk-5AYAZN45.js} +2 -2
  9. package/dist/{chunk-34NSUPWS.js → chunk-6RHNCKHG.js} +5 -1
  10. package/dist/chunk-6RHNCKHG.js.map +1 -0
  11. package/dist/{chunk-D44FQVCU.js → chunk-DFAXGZKI.js} +2 -2
  12. package/dist/{chunk-4SYURHI6.js → chunk-HSCJYHYV.js} +6 -6
  13. package/dist/{chunk-MHYRRV43.js → chunk-TGOOJCGA.js} +4 -4
  14. package/dist/{chunk-LFZUFZQR.js → chunk-WOQIHC67.js} +2 -2
  15. package/dist/{chunk-BP5O3GYD.js → chunk-YYQRVNSV.js} +2 -2
  16. package/dist/cli.js +9 -9
  17. package/dist/index.js +10 -10
  18. package/dist/namespaces/migrate.js +4 -4
  19. package/dist/namespaces/search.js +3 -3
  20. package/dist/operator-toolkit.js +5 -5
  21. package/dist/orchestrator.js +4 -4
  22. package/dist/qmd.d.ts +33 -1
  23. package/dist/qmd.js +7 -1
  24. package/dist/search/factory.js +2 -2
  25. package/dist/search/index.js +2 -2
  26. package/package.json +3 -2
  27. package/scripts/build-with-heap.mjs +25 -0
  28. package/src/qmd.ts +6 -0
  29. package/dist/chunk-34NSUPWS.js.map +0 -1
  30. /package/dist/{chunk-5G2DNO54.js.map → chunk-2KDQI363.js.map} +0 -0
  31. /package/dist/{chunk-EMSC4P66.js.map → chunk-35HP3TGR.js.map} +0 -0
  32. /package/dist/{chunk-7F7LC6HW.js.map → chunk-4KDLCMLK.js.map} +0 -0
  33. /package/dist/{chunk-RQRKQJYM.js.map → chunk-5AYAZN45.js.map} +0 -0
  34. /package/dist/{chunk-D44FQVCU.js.map → chunk-DFAXGZKI.js.map} +0 -0
  35. /package/dist/{chunk-4SYURHI6.js.map → chunk-HSCJYHYV.js.map} +0 -0
  36. /package/dist/{chunk-MHYRRV43.js.map → chunk-TGOOJCGA.js.map} +0 -0
  37. /package/dist/{chunk-LFZUFZQR.js.map → chunk-WOQIHC67.js.map} +0 -0
  38. /package/dist/{chunk-BP5O3GYD.js.map → chunk-YYQRVNSV.js.map} +0 -0
package/dist/index.js CHANGED
@@ -94,7 +94,7 @@ import {
94
94
  registerTrainingExportAdapter,
95
95
  runBulkImportCliCommand,
96
96
  runWearablesCliCommand
97
- } from "./chunk-4SYURHI6.js";
97
+ } from "./chunk-HSCJYHYV.js";
98
98
  import "./chunk-MC4FJXPA.js";
99
99
  import "./chunk-LQHDIS7L.js";
100
100
  import "./chunk-7F7Z6MOS.js";
@@ -147,8 +147,8 @@ import {
147
147
  parseXrayBudgetFlag,
148
148
  parseXrayCliOptions
149
149
  } from "./chunk-SXYCVRLK.js";
150
- import "./chunk-RQRKQJYM.js";
151
- import "./chunk-BP5O3GYD.js";
150
+ import "./chunk-5AYAZN45.js";
151
+ import "./chunk-YYQRVNSV.js";
152
152
  import {
153
153
  parseStrictCliDate
154
154
  } from "./chunk-3T74IZB3.js";
@@ -192,7 +192,7 @@ import {
192
192
  saveTaxonomy,
193
193
  validateSlug,
194
194
  validateTaxonomy
195
- } from "./chunk-MHYRRV43.js";
195
+ } from "./chunk-TGOOJCGA.js";
196
196
  import {
197
197
  WEARABLE_SOURCE_PREFIX,
198
198
  buildExtractionTurns,
@@ -496,7 +496,7 @@ import "./chunk-HQ6NIBL6.js";
496
496
  import "./chunk-OADWQ5CR.js";
497
497
  import {
498
498
  EngramAccessHttpServer
499
- } from "./chunk-7F7LC6HW.js";
499
+ } from "./chunk-4KDLCMLK.js";
500
500
  import "./chunk-SEDEKFYQ.js";
501
501
  import "./chunk-RKNJBZ55.js";
502
502
  import "./chunk-J64TK33U.js";
@@ -510,7 +510,7 @@ import {
510
510
  } from "./chunk-7WV3F5DQ.js";
511
511
  import {
512
512
  EngramMcpServer
513
- } from "./chunk-5G2DNO54.js";
513
+ } from "./chunk-2KDQI363.js";
514
514
  import {
515
515
  REMNIC_CHATGPT_MEMORY_INSPECTOR_CANONICAL_TOOL,
516
516
  REMNIC_CHATGPT_MEMORY_INSPECTOR_MIME_TYPE,
@@ -531,7 +531,7 @@ import {
531
531
  EngramAccessService,
532
532
  computeProcedureStats,
533
533
  formatProcedureStatsText
534
- } from "./chunk-D44FQVCU.js";
534
+ } from "./chunk-DFAXGZKI.js";
535
535
  import "./chunk-GDASG7NC.js";
536
536
  import "./chunk-GDB4J2H3.js";
537
537
  import {
@@ -566,8 +566,8 @@ import {
566
566
  storagePathHash
567
567
  } from "./chunk-FF4KLI5W.js";
568
568
  import "./chunk-2MXEVL75.js";
569
- import "./chunk-LFZUFZQR.js";
570
- import "./chunk-EMSC4P66.js";
569
+ import "./chunk-WOQIHC67.js";
570
+ import "./chunk-35HP3TGR.js";
571
571
  import {
572
572
  MeilisearchBackend
573
573
  } from "./chunk-FZC2WSDB.js";
@@ -589,7 +589,7 @@ import "./chunk-OIF36KGD.js";
589
589
  import "./chunk-7DTASS5T.js";
590
590
  import {
591
591
  QmdClient
592
- } from "./chunk-34NSUPWS.js";
592
+ } from "./chunk-6RHNCKHG.js";
593
593
  import "./chunk-YNQ6DFSV.js";
594
594
  import "./chunk-BMFZLLNI.js";
595
595
  import {
@@ -2,10 +2,10 @@ import {
2
2
  listNamespaces,
3
3
  runNamespaceMigration,
4
4
  verifyNamespaces
5
- } from "../chunk-BP5O3GYD.js";
5
+ } from "../chunk-YYQRVNSV.js";
6
6
  import "../chunk-TBLGI2LT.js";
7
- import "../chunk-LFZUFZQR.js";
8
- import "../chunk-EMSC4P66.js";
7
+ import "../chunk-WOQIHC67.js";
8
+ import "../chunk-35HP3TGR.js";
9
9
  import "../chunk-FZC2WSDB.js";
10
10
  import "../chunk-CYEPCZN5.js";
11
11
  import "../chunk-ZJH723NM.js";
@@ -19,7 +19,7 @@ import "../chunk-7OGJQP7T.js";
19
19
  import "../chunk-E6ZDCOHM.js";
20
20
  import "../chunk-OIF36KGD.js";
21
21
  import "../chunk-7DTASS5T.js";
22
- import "../chunk-34NSUPWS.js";
22
+ import "../chunk-6RHNCKHG.js";
23
23
  import "../chunk-YNQ6DFSV.js";
24
24
  import "../chunk-O75CRYGF.js";
25
25
  import "../chunk-3ONXXHQO.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  NamespaceSearchRouter,
3
3
  namespaceCollectionName
4
- } from "../chunk-LFZUFZQR.js";
5
- import "../chunk-EMSC4P66.js";
4
+ } from "../chunk-WOQIHC67.js";
5
+ import "../chunk-35HP3TGR.js";
6
6
  import "../chunk-FZC2WSDB.js";
7
7
  import "../chunk-CYEPCZN5.js";
8
8
  import "../chunk-ZJH723NM.js";
@@ -16,7 +16,7 @@ import "../chunk-7OGJQP7T.js";
16
16
  import "../chunk-E6ZDCOHM.js";
17
17
  import "../chunk-OIF36KGD.js";
18
18
  import "../chunk-7DTASS5T.js";
19
- import "../chunk-34NSUPWS.js";
19
+ import "../chunk-6RHNCKHG.js";
20
20
  import "../chunk-YNQ6DFSV.js";
21
21
  import "../chunk-O75CRYGF.js";
22
22
  import "../chunk-3ONXXHQO.js";
@@ -11,8 +11,8 @@ import {
11
11
  summarizeMemoryWorthLegacyCounters,
12
12
  summarizeObservationThroughput,
13
13
  summarizeTierDistribution
14
- } from "./chunk-RQRKQJYM.js";
15
- import "./chunk-BP5O3GYD.js";
14
+ } from "./chunk-5AYAZN45.js";
15
+ import "./chunk-YYQRVNSV.js";
16
16
  import "./chunk-AL4RAJL5.js";
17
17
  import "./chunk-YBPYIAA5.js";
18
18
  import "./chunk-TBLGI2LT.js";
@@ -26,8 +26,8 @@ import "./chunk-PHK3HARR.js";
26
26
  import "./chunk-NDAH7BJ5.js";
27
27
  import "./chunk-Z5LAYHGJ.js";
28
28
  import "./chunk-A7EF2XRO.js";
29
- import "./chunk-LFZUFZQR.js";
30
- import "./chunk-EMSC4P66.js";
29
+ import "./chunk-WOQIHC67.js";
30
+ import "./chunk-35HP3TGR.js";
31
31
  import "./chunk-FZC2WSDB.js";
32
32
  import "./chunk-CYEPCZN5.js";
33
33
  import "./chunk-ZJH723NM.js";
@@ -41,7 +41,7 @@ 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-34NSUPWS.js";
44
+ import "./chunk-6RHNCKHG.js";
45
45
  import "./chunk-YNQ6DFSV.js";
46
46
  import "./chunk-O75CRYGF.js";
47
47
  import "./chunk-3ONXXHQO.js";
@@ -28,7 +28,7 @@ import {
28
28
  sanitizeSessionKeyForFilename,
29
29
  shouldFilterLifecycleRecallCandidate,
30
30
  summarizeGraphShadowComparison
31
- } from "./chunk-MHYRRV43.js";
31
+ } from "./chunk-TGOOJCGA.js";
32
32
  import "./chunk-4SKKVWLQ.js";
33
33
  import "./chunk-7HYPN2GC.js";
34
34
  import "./chunk-666A3MOW.js";
@@ -146,8 +146,8 @@ import "./chunk-5RIRL3XL.js";
146
146
  import "./chunk-JGSKJHF7.js";
147
147
  import "./chunk-FF4KLI5W.js";
148
148
  import "./chunk-2MXEVL75.js";
149
- import "./chunk-LFZUFZQR.js";
150
- import "./chunk-EMSC4P66.js";
149
+ import "./chunk-WOQIHC67.js";
150
+ import "./chunk-35HP3TGR.js";
151
151
  import "./chunk-FZC2WSDB.js";
152
152
  import "./chunk-CYEPCZN5.js";
153
153
  import "./chunk-ZJH723NM.js";
@@ -161,7 +161,7 @@ import "./chunk-7OGJQP7T.js";
161
161
  import "./chunk-E6ZDCOHM.js";
162
162
  import "./chunk-OIF36KGD.js";
163
163
  import "./chunk-7DTASS5T.js";
164
- import "./chunk-34NSUPWS.js";
164
+ import "./chunk-6RHNCKHG.js";
165
165
  import "./chunk-YNQ6DFSV.js";
166
166
  import "./chunk-CI7RKSRE.js";
167
167
  import "./chunk-6HMYUWXR.js";
package/dist/qmd.d.ts CHANGED
@@ -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;
@@ -272,4 +304,4 @@ declare class QmdClient implements SearchBackend {
272
304
  ensureCollection(memoryDir: string, collectionOrExecution?: string | SearchExecutionOptions, execution?: SearchExecutionOptions): Promise<"present" | "missing" | "unknown" | "skipped">;
273
305
  }
274
306
 
275
- 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,10 +8,13 @@ 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-34NSUPWS.js";
17
+ } from "./chunk-6RHNCKHG.js";
15
18
  import "./chunk-YNQ6DFSV.js";
16
19
  import "./chunk-O75CRYGF.js";
17
20
  import "./chunk-AWJ2FHCF.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
  };
@@ -2,7 +2,7 @@ import {
2
2
  createConversationIndexRuntime,
3
3
  createConversationSearchBackend,
4
4
  createSearchBackend
5
- } from "../chunk-EMSC4P66.js";
5
+ } from "../chunk-35HP3TGR.js";
6
6
  import "../chunk-FZC2WSDB.js";
7
7
  import "../chunk-CYEPCZN5.js";
8
8
  import "../chunk-ZJH723NM.js";
@@ -15,7 +15,7 @@ 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-34NSUPWS.js";
18
+ import "../chunk-6RHNCKHG.js";
19
19
  import "../chunk-YNQ6DFSV.js";
20
20
  import "../chunk-O75CRYGF.js";
21
21
  import "../chunk-3ONXXHQO.js";
@@ -2,7 +2,7 @@ import {
2
2
  createConversationIndexRuntime,
3
3
  createConversationSearchBackend,
4
4
  createSearchBackend
5
- } from "../chunk-EMSC4P66.js";
5
+ } from "../chunk-35HP3TGR.js";
6
6
  import {
7
7
  MeilisearchBackend
8
8
  } from "../chunk-FZC2WSDB.js";
@@ -29,7 +29,7 @@ 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-34NSUPWS.js";
32
+ import "../chunk-6RHNCKHG.js";
33
33
  import "../chunk-YNQ6DFSV.js";
34
34
  import "../chunk-O75CRYGF.js";
35
35
  import "../chunk-3ONXXHQO.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.661",
3
+ "version": "9.3.662",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2856,6 +2856,7 @@
2856
2856
  "src",
2857
2857
  "dist",
2858
2858
  "skills",
2859
+ "scripts/build-with-heap.mjs",
2859
2860
  "scripts/ensure-better-sqlite3.mjs",
2860
2861
  "scripts/faiss_index.py",
2861
2862
  "scripts/faiss_requirements.txt"
@@ -2905,7 +2906,7 @@
2905
2906
  "core"
2906
2907
  ],
2907
2908
  "scripts": {
2908
- "build": "tsup",
2909
+ "build": "node ./scripts/build-with-heap.mjs",
2909
2910
  "check-types": "tsc --noEmit",
2910
2911
  "test": "tsx --test 'src/**/*.test.ts'",
2911
2912
  "postinstall": "node ./scripts/ensure-better-sqlite3.mjs"
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ // Runs tsup with deterministic heap headroom for its DTS worker.
3
+ // The DTS build sits near the default V8 heap cliff (see PR #1562):
4
+ // unrelated lockfile refreshes flipped it to ERR_WORKER_OUT_OF_MEMORY.
5
+ // A Node wrapper (not a NODE_OPTIONS= shell prefix) keeps the build
6
+ // script portable to Windows' cmd.exe script shell.
7
+ import { spawnSync } from "node:child_process";
8
+
9
+ const HEAP_DEFAULT = "--max-old-space-size=8192";
10
+ const existing = process.env.NODE_OPTIONS?.trim();
11
+ // Caller-supplied NODE_OPTIONS goes last so V8's last-wins parsing lets
12
+ // callers override the default heap limit.
13
+ const nodeOptions = existing ? `${HEAP_DEFAULT} ${existing}` : HEAP_DEFAULT;
14
+
15
+ const result = spawnSync("tsup", process.argv.slice(2), {
16
+ stdio: "inherit",
17
+ env: { ...process.env, NODE_OPTIONS: nodeOptions },
18
+ // .bin shims are .cmd files on Windows and need a shell to execute.
19
+ shell: process.platform === "win32",
20
+ });
21
+
22
+ if (result.error) {
23
+ console.error(`[build-with-heap] failed to launch tsup: ${result.error.message}`);
24
+ }
25
+ process.exit(result.status ?? 1);
package/src/qmd.ts CHANGED
@@ -1212,6 +1212,12 @@ async function releaseSharedDaemonSession(session: QmdDaemonSession | null): Pro
1212
1212
  }
1213
1213
  }
1214
1214
 
1215
+ // Test-only seams (#1537): lifecycle tests assert the pool reaches zero after
1216
+ // every holder disposes — the property the stop()-teardown fix restores.
1217
+ export const sharedDaemonSessionCountForTest = (): number => SHARED_DAEMON_SESSIONS.size;
1218
+ export { retainSharedDaemonSession as retainSharedDaemonSessionForTest };
1219
+ export { releaseSharedDaemonSession as releaseSharedDaemonSessionForTest };
1220
+
1215
1221
  // ---------------------------------------------------------------------------
1216
1222
  // QmdClient
1217
1223
  // ---------------------------------------------------------------------------