@remnic/core 9.3.515 → 9.3.517

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 (97) hide show
  1. package/dist/access-cli.js +11 -11
  2. package/dist/access-http.d.ts +2 -1
  3. package/dist/access-http.js +5 -5
  4. package/dist/access-mcp.d.ts +1 -1
  5. package/dist/access-mcp.js +4 -4
  6. package/dist/access-schema.js +2 -2
  7. package/dist/{access-service-qrrIrC-0.d.ts → access-service-CZfksQuS.d.ts} +6 -2
  8. package/dist/access-service.d.ts +1 -1
  9. package/dist/access-service.js +2 -2
  10. package/dist/{chunk-NJ3MJQZX.js → chunk-2I5JGH3M.js} +2 -2
  11. package/dist/{chunk-NJ3MJQZX.js.map → chunk-2I5JGH3M.js.map} +1 -1
  12. package/dist/{chunk-O27WNHTT.js → chunk-5UHVGNZD.js} +2 -2
  13. package/dist/{chunk-3Q4H3OBR.js → chunk-5V456VRV.js} +6 -6
  14. package/dist/{chunk-3Q4H3OBR.js.map → chunk-5V456VRV.js.map} +1 -1
  15. package/dist/{chunk-EDBEWFJO.js → chunk-6BR7L222.js} +2 -2
  16. package/dist/{chunk-D6WE5MTW.js → chunk-FCOQXV3T.js} +6 -6
  17. package/dist/{chunk-RCTS5CKK.js → chunk-FK556DDH.js} +2 -2
  18. package/dist/{chunk-RCTS5CKK.js.map → chunk-FK556DDH.js.map} +1 -1
  19. package/dist/{chunk-A52AKD7C.js → chunk-FUC4LZMD.js} +2 -2
  20. package/dist/chunk-FUC4LZMD.js.map +1 -0
  21. package/dist/{chunk-FER4WARO.js → chunk-HC6EKOID.js} +20 -7
  22. package/dist/chunk-HC6EKOID.js.map +1 -0
  23. package/dist/{chunk-PIRJPV5T.js → chunk-JNANKJLN.js} +2 -2
  24. package/dist/chunk-JNANKJLN.js.map +1 -0
  25. package/dist/{chunk-7MV5CWTE.js → chunk-KXULCVOC.js} +6 -6
  26. package/dist/chunk-KXULCVOC.js.map +1 -0
  27. package/dist/{chunk-TVRN5QKH.js → chunk-PCI747N2.js} +3 -3
  28. package/dist/{chunk-TVRN5QKH.js.map → chunk-PCI747N2.js.map} +1 -1
  29. package/dist/{chunk-BLZAVUD2.js → chunk-QVJ4NWL2.js} +2 -2
  30. package/dist/chunk-QVJ4NWL2.js.map +1 -0
  31. package/dist/{chunk-EIPUHVKE.js → chunk-SML26KED.js} +7 -7
  32. package/dist/{chunk-JYIKKAK3.js → chunk-TTGZV5R3.js} +3 -3
  33. package/dist/{chunk-R26QUUQN.js → chunk-YDMVYYD2.js} +52 -11
  34. package/dist/chunk-YDMVYYD2.js.map +1 -0
  35. package/dist/{chunk-L7S47WZT.js → chunk-YNXOKMJP.js} +2 -2
  36. package/dist/chunk-YNXOKMJP.js.map +1 -0
  37. package/dist/{chunk-4Q73JBSM.js → chunk-ZEY4KYRQ.js} +38 -11
  38. package/dist/chunk-ZEY4KYRQ.js.map +1 -0
  39. package/dist/{cli-X4NJoqSe.d.ts → cli-CPe_2KB1.d.ts} +1 -1
  40. package/dist/cli.d.ts +2 -2
  41. package/dist/cli.js +16 -16
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.js +17 -17
  44. package/dist/mcp-memory-inspector-app.d.ts +1 -1
  45. package/dist/namespaces/migrate.js +9 -9
  46. package/dist/namespaces/search.d.ts +1 -1
  47. package/dist/namespaces/search.js +8 -8
  48. package/dist/offline-sync.d.ts +4 -0
  49. package/dist/offline-sync.js +1 -1
  50. package/dist/operator-toolkit.d.ts +3 -1
  51. package/dist/operator-toolkit.js +10 -10
  52. package/dist/orchestrator.js +9 -9
  53. package/dist/qmd.d.ts +1 -1
  54. package/dist/qmd.js +1 -1
  55. package/dist/search/factory.js +7 -7
  56. package/dist/search/index.js +7 -7
  57. package/dist/search/lancedb-backend.d.ts +1 -1
  58. package/dist/search/lancedb-backend.js +1 -1
  59. package/dist/search/meilisearch-backend.d.ts +1 -1
  60. package/dist/search/meilisearch-backend.js +1 -1
  61. package/dist/search/noop-backend.d.ts +1 -1
  62. package/dist/search/noop-backend.js +1 -1
  63. package/dist/search/orama-backend.d.ts +1 -1
  64. package/dist/search/orama-backend.js +1 -1
  65. package/dist/search/port.d.ts +1 -1
  66. package/dist/search/remote-backend.d.ts +1 -1
  67. package/dist/search/remote-backend.js +1 -1
  68. package/package.json +1 -1
  69. package/src/access-http.ts +14 -0
  70. package/src/access-service-namespace.test.ts +9 -9
  71. package/src/access-service.ts +4 -4
  72. package/src/namespaces/search.test.ts +20 -1
  73. package/src/namespaces/search.ts +10 -4
  74. package/src/offline-sync.test.ts +128 -18
  75. package/src/offline-sync.ts +41 -7
  76. package/src/operator-toolkit.ts +4 -1
  77. package/src/orchestrator.ts +68 -10
  78. package/src/qmd.ts +5 -2
  79. package/src/search/lancedb-backend.ts +4 -1
  80. package/src/search/meilisearch-backend.ts +4 -1
  81. package/src/search/noop-backend.ts +1 -1
  82. package/src/search/orama-backend.ts +4 -1
  83. package/src/search/port.ts +4 -1
  84. package/src/search/remote-backend.ts +1 -1
  85. package/dist/chunk-4Q73JBSM.js.map +0 -1
  86. package/dist/chunk-7MV5CWTE.js.map +0 -1
  87. package/dist/chunk-A52AKD7C.js.map +0 -1
  88. package/dist/chunk-BLZAVUD2.js.map +0 -1
  89. package/dist/chunk-FER4WARO.js.map +0 -1
  90. package/dist/chunk-L7S47WZT.js.map +0 -1
  91. package/dist/chunk-PIRJPV5T.js.map +0 -1
  92. package/dist/chunk-R26QUUQN.js.map +0 -1
  93. /package/dist/{chunk-O27WNHTT.js.map → chunk-5UHVGNZD.js.map} +0 -0
  94. /package/dist/{chunk-EDBEWFJO.js.map → chunk-6BR7L222.js.map} +0 -0
  95. /package/dist/{chunk-D6WE5MTW.js.map → chunk-FCOQXV3T.js.map} +0 -0
  96. /package/dist/{chunk-EIPUHVKE.js.map → chunk-SML26KED.js.map} +0 -0
  97. /package/dist/{chunk-JYIKKAK3.js.map → chunk-TTGZV5R3.js.map} +0 -0
@@ -202,7 +202,7 @@ var OramaBackend = class {
202
202
  }
203
203
  await this.persistDbForCollection(db, collection);
204
204
  }
205
- async ensureCollection(_memoryDir) {
205
+ async ensureCollection(_memoryDir, _execution) {
206
206
  try {
207
207
  await this.ensureModules();
208
208
  await this.ensureDb();
@@ -332,4 +332,4 @@ export {
332
332
  resolveOramaCollectionDbFilePath,
333
333
  OramaBackend
334
334
  };
335
- //# sourceMappingURL=chunk-BLZAVUD2.js.map
335
+ //# sourceMappingURL=chunk-QVJ4NWL2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/search/orama-backend.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { log } from \"../logger.js\";\nimport type { SearchBackend, SearchExecutionOptions, SearchQueryOptions, SearchResult } from \"./port.js\";\nimport type { EmbedHelper } from \"./embed-helper.js\";\nimport { scanMemoryDir } from \"./document-scanner.js\";\nimport { isSearchAborted, throwIfSearchAborted } from \"./abort.js\";\n\nexport interface OramaBackendOptions {\n dbPath: string;\n collection: string;\n embedHelper: EmbedHelper;\n memoryDir: string;\n embeddingDimension: number;\n}\n\nconst ORAMA_COLLECTION_FILENAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\n\nfunction pathIsInside(parent: string, child: string): boolean {\n const relative = path.relative(parent, child);\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative));\n}\n\nexport function resolveOramaCollectionDbFilePath(dbPath: string, collection: string): string {\n if (!ORAMA_COLLECTION_FILENAME_PATTERN.test(collection)) {\n throw new Error(\n `Invalid Orama collection name ${JSON.stringify(collection)}. ` +\n \"Collection names must match [A-Za-z0-9][A-Za-z0-9._-]*.\",\n );\n }\n const resolvedDbPath = path.resolve(dbPath);\n const filePath = path.resolve(resolvedDbPath, `${collection}.msp`);\n if (!pathIsInside(resolvedDbPath, filePath)) {\n throw new Error(\n `Invalid Orama collection path for ${JSON.stringify(collection)}: resolved outside dbPath.`,\n );\n }\n return filePath;\n}\n\n/**\n * Orama search backend — embedded hybrid FTS+vector, pure JS.\n *\n * Uses @orama/orama for full-text search with optional vector support.\n * Persists data to JSON files via @orama/plugin-data-persistence.\n */\nexport class OramaBackend implements SearchBackend {\n private readonly dbPath: string;\n private readonly collection: string;\n private readonly embedHelper: EmbedHelper;\n private readonly memoryDir: string;\n private readonly embeddingDimension: number;\n private available = false;\n private db: any = null;\n private oramaModule: any = null;\n private persistModule: any = null;\n\n constructor(opts: OramaBackendOptions) {\n this.dbPath = opts.dbPath;\n this.collection = opts.collection;\n this.embedHelper = opts.embedHelper;\n this.memoryDir = opts.memoryDir;\n this.embeddingDimension = opts.embeddingDimension;\n }\n\n async probe(): Promise<boolean> {\n try {\n await this.ensureModules();\n await this.ensureDb();\n this.available = true;\n return true;\n } catch (err) {\n log.debug(`OramaBackend probe failed: ${err}`);\n this.available = false;\n return false;\n }\n }\n\n isAvailable(): boolean {\n return this.available;\n }\n\n debugStatus(): string {\n return `backend=orama available=${this.available} dbPath=${this.dbPath}`;\n }\n\n async search(\n query: string,\n _collection?: string,\n maxResults?: number,\n _options?: SearchQueryOptions,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]> {\n return this.hybridSearch(query, _collection, maxResults, execution);\n }\n\n async searchGlobal(query: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n const limit = maxResults ?? 10;\n if (!this.available) return [];\n try {\n throwIfSearchAborted(execution, \"OramaBackend global search aborted\");\n const files = await this.listDbFiles();\n const allResults: SearchResult[] = [];\n for (const file of files) {\n throwIfSearchAborted(execution, \"OramaBackend global search aborted\");\n const db = await this.loadDbFromFile(file);\n if (!db) continue;\n const results = await this.searchDb(db, query, \"hybrid\", limit, execution);\n allResults.push(...results);\n }\n allResults.sort((a, b) => b.score - a.score);\n return allResults.slice(0, limit);\n } catch (err) {\n log.debug(`OramaBackend searchGlobal failed: ${err}`);\n return [];\n }\n }\n\n async bm25Search(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const db = await this.ensureDbForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!db) return [];\n return this.searchDb(db, query, \"fulltext\", maxResults ?? 10, execution);\n }\n\n async vectorSearch(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const db = await this.ensureDbForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!db) return [];\n return this.searchDb(db, query, \"vector\", maxResults ?? 10, execution);\n }\n\n async hybridSearch(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const db = await this.ensureDbForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!db) return [];\n return this.searchDb(db, query, \"hybrid\", maxResults ?? 10, execution);\n }\n\n async update(execution?: SearchExecutionOptions): Promise<void> {\n await this.updateCollection(this.collection, execution);\n }\n\n async updateCollection(collection: string, execution?: SearchExecutionOptions): Promise<void> {\n if (isSearchAborted(execution)) return;\n const db = await this.ensureDbForCollection(collection);\n if (isSearchAborted(execution)) return;\n if (!db) return;\n const { search: oramaSearch, insert, remove, count } = this.oramaModule;\n\n const docs = await scanMemoryDir(this.memoryDir);\n if (isSearchAborted(execution)) return;\n const docMap = new Map(docs.map((d) => [d.docid, d]));\n const { update: oramaUpdate } = this.oramaModule;\n\n // Get existing docs to diff — map user doc ID → { internalId, vector }\n const existingDocs = new Map<string, { internalId: string; vector?: number[] }>();\n const existingCount = await count(db);\n if (existingCount > 0) {\n const allHits = await oramaSearch(db, { term: \"\", limit: existingCount + 100 });\n for (const hit of allHits.hits) {\n if (isSearchAborted(execution)) return;\n if (!docMap.has(hit.document.id)) {\n await remove(db, hit.id);\n } else {\n existingDocs.set(hit.document.id, {\n internalId: hit.id,\n vector: hit.document.vector,\n });\n }\n }\n }\n\n // Insert new docs, update existing ones (preserving vectors since update is remove+insert)\n for (const doc of docs) {\n if (isSearchAborted(execution)) return;\n const existing = existingDocs.get(doc.docid);\n if (existing) {\n const payload: Record<string, unknown> = {\n id: doc.docid,\n path: doc.path,\n content: doc.content,\n snippet: doc.snippet,\n };\n if (existing.vector && existing.vector.length > 0) {\n payload.vector = existing.vector;\n }\n try {\n await oramaUpdate(db, existing.internalId, payload);\n } catch {\n // Update failed — skip and continue with remaining docs\n }\n } else {\n try {\n await insert(db, {\n id: doc.docid,\n path: doc.path,\n content: doc.content,\n snippet: doc.snippet,\n });\n } catch {\n // Duplicate id edge case — skip\n }\n }\n }\n\n if (isSearchAborted(execution)) return;\n await this.persistDbForCollection(db, collection);\n }\n\n async embed(): Promise<void> {\n await this.embedCollection(this.collection);\n }\n\n async embedCollection(collection: string): Promise<void> {\n if (!this.embedHelper.isAvailable()) return;\n\n const db = await this.ensureDbForCollection(collection);\n if (!db) return;\n const { search: oramaSearch, update: oramaUpdate, count } = this.oramaModule;\n\n const existingCount = await count(db);\n if (existingCount === 0) return;\n\n // Find docs without vectors\n const allHits = await oramaSearch(db, { term: \"\", limit: existingCount + 100 });\n const needsEmbed = allHits.hits.filter((h: any) => !h.document.vector || h.document.vector.length === 0);\n\n if (needsEmbed.length === 0) return;\n\n const texts = needsEmbed.map((h: any) => h.document.content as string);\n const vectors = await this.embedHelper.embedBatch(texts);\n\n for (let i = 0; i < needsEmbed.length; i++) {\n const vec = vectors[i];\n if (!vec) continue;\n // Orama update is remove+insert — must include all fields to avoid data loss\n const doc = needsEmbed[i].document;\n await oramaUpdate(db, needsEmbed[i].id, {\n id: doc.id,\n path: doc.path,\n content: doc.content,\n snippet: doc.snippet,\n vector: vec,\n });\n }\n\n await this.persistDbForCollection(db, collection);\n }\n\n async ensureCollection(\n _memoryDir: string,\n _execution?: SearchExecutionOptions,\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\"> {\n try {\n await this.ensureModules();\n await this.ensureDb();\n return \"present\";\n } catch {\n return \"missing\";\n }\n }\n\n private async ensureModules(): Promise<void> {\n if (this.oramaModule && this.persistModule) return;\n this.oramaModule = await import(\"@orama/orama\");\n this.persistModule = await import(\"@orama/plugin-data-persistence\");\n }\n\n private async ensureDb(): Promise<any> {\n if (this.db) return this.db;\n await this.ensureModules();\n\n await mkdir(this.dbPath, { recursive: true });\n const filePath = this.dbFilePath(this.collection);\n\n try {\n const raw = await readFile(filePath, \"utf-8\");\n this.db = await this.persistModule.restore(\"json\", raw);\n return this.db;\n } catch {\n // No existing DB — create fresh\n }\n\n const { create } = this.oramaModule;\n const schema: Record<string, string> = {\n id: \"string\",\n path: \"string\",\n content: \"string\",\n snippet: \"string\",\n };\n if (this.embedHelper.isAvailable()) {\n schema.vector = `vector[${this.embeddingDimension}]`;\n }\n this.db = await create({ schema });\n return this.db;\n }\n\n private async ensureDbForCollection(collection: string): Promise<any> {\n // For the default collection, use the cached instance\n if (collection === this.collection) return this.ensureDb();\n\n await this.ensureModules();\n await mkdir(this.dbPath, { recursive: true });\n const filePath = this.dbFilePath(collection);\n\n try {\n const raw = await readFile(filePath, \"utf-8\");\n return await this.persistModule.restore(\"json\", raw);\n } catch {\n // No existing DB — create fresh\n }\n\n const { create } = this.oramaModule;\n const schema: Record<string, string> = {\n id: \"string\",\n path: \"string\",\n content: \"string\",\n snippet: \"string\",\n };\n if (this.embedHelper.isAvailable()) {\n schema.vector = `vector[${this.embeddingDimension}]`;\n }\n return await create({ schema });\n }\n\n private async persistDbForCollection(db: any, collection: string): Promise<void> {\n const data = await this.persistModule.persist(db, \"json\");\n const filePath = this.dbFilePath(collection);\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, data, \"utf-8\");\n }\n\n private dbFilePath(collection: string): string {\n return resolveOramaCollectionDbFilePath(this.dbPath, collection);\n }\n\n private async listDbFiles(): Promise<string[]> {\n try {\n const entries = await readdir(this.dbPath);\n return entries\n .filter((e) => e.endsWith(\".msp\"))\n .map((e) => path.join(this.dbPath, e));\n } catch {\n return [];\n }\n }\n\n private async loadDbFromFile(filePath: string): Promise<any> {\n try {\n await this.ensureModules();\n const raw = await readFile(filePath, \"utf-8\");\n return await this.persistModule.restore(\"json\", raw);\n } catch {\n return null;\n }\n }\n\n private async searchDb(\n db: any,\n query: string,\n mode: \"fulltext\" | \"vector\" | \"hybrid\",\n limit: number,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]> {\n const { search: oramaSearch } = this.oramaModule;\n\n try {\n throwIfSearchAborted(execution, `OramaBackend ${mode} search aborted`);\n let searchParams: any;\n\n if (mode === \"fulltext\") {\n searchParams = { term: query, limit };\n } else if (mode === \"vector\") {\n const vec = await this.embedHelper.embed(query, { signal: execution?.signal });\n throwIfSearchAborted(execution, `OramaBackend ${mode} search aborted`);\n if (!vec) {\n // Fall back to fulltext if no embeddings available\n searchParams = { term: query, limit };\n } else {\n searchParams = { mode: \"vector\", vector: { value: vec, property: \"vector\" }, limit };\n }\n } else {\n // hybrid\n const vec = await this.embedHelper.embed(query, { signal: execution?.signal });\n throwIfSearchAborted(execution, `OramaBackend ${mode} search aborted`);\n if (!vec) {\n searchParams = { term: query, limit };\n } else {\n searchParams = { mode: \"hybrid\", term: query, vector: { value: vec, property: \"vector\" }, limit };\n }\n }\n\n throwIfSearchAborted(execution, `OramaBackend ${mode} search aborted`);\n const result = await oramaSearch(db, searchParams);\n throwIfSearchAborted(execution, `OramaBackend ${mode} search aborted`);\n return (result.hits ?? []).map((hit: any) => ({\n docid: hit.document?.id ?? \"\",\n path: hit.document?.path ?? \"\",\n snippet: hit.document?.snippet ?? hit.document?.content?.slice(0, 200) ?? \"\",\n score: hit.score ?? 0,\n }));\n } catch (err) {\n log.debug(`OramaBackend search (${mode}) failed: ${err}`);\n return [];\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  LanceDbBackend
3
- } from "./chunk-A52AKD7C.js";
3
+ } from "./chunk-FUC4LZMD.js";
4
4
  import {
5
5
  MeilisearchBackend
6
- } from "./chunk-RCTS5CKK.js";
6
+ } from "./chunk-FK556DDH.js";
7
7
  import {
8
8
  NoopSearchBackend
9
- } from "./chunk-NJ3MJQZX.js";
9
+ } from "./chunk-2I5JGH3M.js";
10
10
  import {
11
11
  OramaBackend
12
- } from "./chunk-BLZAVUD2.js";
12
+ } from "./chunk-QVJ4NWL2.js";
13
13
  import {
14
14
  RemoteSearchBackend
15
- } from "./chunk-PIRJPV5T.js";
15
+ } from "./chunk-JNANKJLN.js";
16
16
  import {
17
17
  EmbedHelper
18
18
  } from "./chunk-ONPLNAPX.js";
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-ORFGK3XI.js";
25
25
  import {
26
26
  QmdClient
27
- } from "./chunk-TVRN5QKH.js";
27
+ } from "./chunk-PCI747N2.js";
28
28
  import {
29
29
  log
30
30
  } from "./chunk-2ODBA7MQ.js";
@@ -163,4 +163,4 @@ export {
163
163
  createConversationSearchBackend,
164
164
  createConversationIndexRuntime
165
165
  };
166
- //# sourceMappingURL=chunk-EIPUHVKE.js.map
166
+ //# sourceMappingURL=chunk-SML26KED.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-D24OXEPB.js";
12
12
  import {
13
13
  EngramAccessInputError
14
- } from "./chunk-3Q4H3OBR.js";
14
+ } from "./chunk-5V456VRV.js";
15
15
  import {
16
16
  projectTagProjectId
17
17
  } from "./chunk-EDQVAMQI.js";
@@ -26,7 +26,7 @@ import {
26
26
  } from "./chunk-JUC24CTX.js";
27
27
  import {
28
28
  validateRequest
29
- } from "./chunk-O27WNHTT.js";
29
+ } from "./chunk-5UHVGNZD.js";
30
30
 
31
31
  // src/access-mcp.ts
32
32
  import { readFile } from "fs/promises";
@@ -2859,4 +2859,4 @@ ${body}`;
2859
2859
  export {
2860
2860
  EngramMcpServer
2861
2861
  };
2862
- //# sourceMappingURL=chunk-JYIKKAK3.js.map
2862
+ //# sourceMappingURL=chunk-TTGZV5R3.js.map
@@ -230,14 +230,14 @@ import {
230
230
  } from "./chunk-A2Z6UCWT.js";
231
231
  import {
232
232
  NamespaceSearchRouter
233
- } from "./chunk-7MV5CWTE.js";
233
+ } from "./chunk-KXULCVOC.js";
234
234
  import {
235
235
  createConversationIndexRuntime,
236
236
  createSearchBackend
237
- } from "./chunk-EIPUHVKE.js";
237
+ } from "./chunk-SML26KED.js";
238
238
  import {
239
239
  NoopSearchBackend
240
- } from "./chunk-NJ3MJQZX.js";
240
+ } from "./chunk-2I5JGH3M.js";
241
241
  import {
242
242
  NamespaceStorageRouter
243
243
  } from "./chunk-CHBI22MI.js";
@@ -249,7 +249,7 @@ import {
249
249
  } from "./chunk-HENLZHIT.js";
250
250
  import {
251
251
  parseQmdExplain
252
- } from "./chunk-TVRN5QKH.js";
252
+ } from "./chunk-PCI747N2.js";
253
253
  import {
254
254
  isAboveImportanceThreshold,
255
255
  scoreImportance
@@ -1038,6 +1038,39 @@ async function raceRecallAbort(promise, signal, message = "recall aborted") {
1038
1038
  }
1039
1039
  }
1040
1040
  var COMPACTION_SIGNAL_MAX_AGE_MS = 60 * 60 * 1e3;
1041
+ var DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS = 1e4;
1042
+ function qmdStartupCollectionCheckTimeoutMs() {
1043
+ const raw = process.env.REMNIC_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS ?? process.env.ENGRAM_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
1044
+ if (raw === void 0) return DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
1045
+ const parsed = Number(raw);
1046
+ return Number.isFinite(parsed) && parsed >= 1e3 ? Math.floor(parsed) : DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
1047
+ }
1048
+ async function qmdStartupCollectionCheckWithTimeout(promise, controller, label) {
1049
+ const timeoutMs = qmdStartupCollectionCheckTimeoutMs();
1050
+ let timer;
1051
+ let settled = false;
1052
+ const timeoutPromise = new Promise((resolve) => {
1053
+ timer = setTimeout(() => {
1054
+ if (settled) return;
1055
+ controller.abort();
1056
+ log.warn(
1057
+ `QMD startup collection check for ${label} timed out after ${timeoutMs}ms; keeping search enabled fail-open`
1058
+ );
1059
+ resolve("unknown");
1060
+ }, timeoutMs);
1061
+ timer.unref?.();
1062
+ });
1063
+ const checkedPromise = promise.catch((err) => {
1064
+ log.warn(
1065
+ `QMD startup collection check for ${label} failed; keeping search enabled fail-open: ${err}`
1066
+ );
1067
+ return "unknown";
1068
+ }).finally(() => {
1069
+ settled = true;
1070
+ if (timer) clearTimeout(timer);
1071
+ });
1072
+ return await Promise.race([checkedPromise, timeoutPromise]);
1073
+ }
1041
1074
  function defaultWorkspaceDir() {
1042
1075
  return path2.join(os.homedir(), ".openclaw", "workspace");
1043
1076
  }
@@ -2316,12 +2349,20 @@ var Orchestrator = class _Orchestrator {
2316
2349
  log.info(`Search backend: available ${this.qmd.debugStatus()}`);
2317
2350
  const namespaces = this.config.namespacesEnabled ? this.configuredNamespaces() : [this.config.defaultNamespace];
2318
2351
  const states = await Promise.all(
2319
- namespaces.map(async (namespace) => ({
2320
- namespace,
2321
- state: this.config.namespacesEnabled ? await this.namespaceSearchRouter.ensureNamespaceCollection(
2352
+ namespaces.map(async (namespace) => {
2353
+ const collectionCheckAbort = new AbortController();
2354
+ const state = await qmdStartupCollectionCheckWithTimeout(
2355
+ this.config.namespacesEnabled ? this.namespaceSearchRouter.ensureNamespaceCollection(
2356
+ namespace,
2357
+ { signal: collectionCheckAbort.signal }
2358
+ ) : this.qmd.ensureCollection(this.config.memoryDir, {
2359
+ signal: collectionCheckAbort.signal
2360
+ }),
2361
+ collectionCheckAbort,
2322
2362
  namespace
2323
- ) : await this.qmd.ensureCollection(this.config.memoryDir)
2324
- }))
2363
+ );
2364
+ return { namespace, state };
2365
+ })
2325
2366
  );
2326
2367
  const defaultState = states.find(
2327
2368
  (entry) => entry.namespace === this.config.defaultNamespace
@@ -2574,7 +2615,7 @@ var Orchestrator = class _Orchestrator {
2574
2615
  const states = await Promise.all(
2575
2616
  namespaces.map(async (namespace) => ({
2576
2617
  namespace,
2577
- state: this.config.namespacesEnabled ? await this.namespaceSearchRouter.ensureNamespaceCollection(namespace) : await this.qmd.ensureCollection(this.config.memoryDir)
2618
+ state: this.config.namespacesEnabled ? await this.namespaceSearchRouter.ensureNamespaceCollection(namespace, { signal }) : await this.qmd.ensureCollection(this.config.memoryDir, { signal })
2578
2619
  }))
2579
2620
  );
2580
2621
  if (signal?.aborted) {
@@ -12357,4 +12398,4 @@ export {
12357
12398
  resolvePersistedMemoryRelativePath,
12358
12399
  Orchestrator
12359
12400
  };
12360
- //# sourceMappingURL=chunk-R26QUUQN.js.map
12401
+ //# sourceMappingURL=chunk-YDMVYYD2.js.map