@remnic/core 9.69.98 → 9.69.100

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 (94) hide show
  1. package/dist/access-admin-ops-surface.js +7 -7
  2. package/dist/access-authorization-probe.js +8 -8
  3. package/dist/access-boundary.js +7 -7
  4. package/dist/access-cli.js +23 -23
  5. package/dist/access-extraction-force-flush.js +7 -7
  6. package/dist/access-http-briefing.js +8 -8
  7. package/dist/access-http-query.js +7 -7
  8. package/dist/access-http.js +20 -20
  9. package/dist/access-identity-continuity-surface.js +7 -7
  10. package/dist/access-lcm-surface.js +7 -7
  11. package/dist/access-mcp.js +14 -14
  12. package/dist/access-namespace-preflight.js +7 -7
  13. package/dist/access-observe-write-category.js +4 -4
  14. package/dist/access-observe-write-surface.js +7 -7
  15. package/dist/access-offline-manifest.js +3 -3
  16. package/dist/access-operations-batch.js +8 -8
  17. package/dist/access-operations.js +13 -13
  18. package/dist/access-recall-concurrency.js +7 -7
  19. package/dist/access-recall-response.js +7 -7
  20. package/dist/access-recall-surface.js +7 -7
  21. package/dist/access-schema.js +3 -3
  22. package/dist/access-service.js +7 -7
  23. package/dist/access-surface-catalog.js +9 -9
  24. package/dist/active-recall.js +2 -2
  25. package/dist/{chunk-ETUZFFPU.js → chunk-3E6DGSGZ.js} +1 -1
  26. package/dist/chunk-3E6DGSGZ.js.map +1 -0
  27. package/dist/{chunk-6MWPIWPF.js → chunk-3MK4OYYH.js} +3 -3
  28. package/dist/{chunk-3SNJMRC7.js → chunk-42YP6FMP.js} +4 -4
  29. package/dist/{chunk-ZK4XGNJ3.js → chunk-53X6CL3A.js} +2 -2
  30. package/dist/{chunk-N6GYEWFQ.js → chunk-BCQU44UV.js} +2 -2
  31. package/dist/{chunk-ZNEA255W.js → chunk-GLJNGCCM.js} +2 -2
  32. package/dist/{chunk-UKWQSPUU.js → chunk-HGG63H3A.js} +2 -2
  33. package/dist/{chunk-3RMJLDMS.js → chunk-IAKC3KEJ.js} +4 -4
  34. package/dist/{chunk-JAQXKNQV.js → chunk-JWG43U5K.js} +2 -2
  35. package/dist/{chunk-VQEOBVF2.js → chunk-KJKTDMAD.js} +2 -2
  36. package/dist/chunk-KJKTDMAD.js.map +1 -0
  37. package/dist/{chunk-OYQAYIGE.js → chunk-N4JZ7J2I.js} +4 -4
  38. package/dist/{chunk-LBU623X7.js → chunk-NHFWYPXN.js} +2 -2
  39. package/dist/{chunk-QVYXXOTR.js → chunk-NI5MWLM3.js} +6 -6
  40. package/dist/{chunk-IKWD4VP7.js → chunk-NWBYJ4VH.js} +2 -2
  41. package/dist/{chunk-AWEHMKIO.js → chunk-ORVH5S7R.js} +2 -2
  42. package/dist/{chunk-I7BRU753.js → chunk-PGJYLYPK.js} +3 -3
  43. package/dist/{chunk-4HUMF74S.js → chunk-RA3OID2N.js} +2 -2
  44. package/dist/{chunk-J3GJ23IP.js → chunk-SZIJJGA2.js} +11 -11
  45. package/dist/{chunk-NWXGLTWN.js → chunk-TK7G5ABN.js} +2 -2
  46. package/dist/{chunk-HDOWMJKD.js → chunk-UEU5IURP.js} +2 -2
  47. package/dist/{chunk-ST4IBSPL.js → chunk-UGEFYQWU.js} +2 -2
  48. package/dist/{chunk-FQJ4YXJO.js → chunk-XK6GP7QO.js} +2 -2
  49. package/dist/{chunk-YHDA3DSO.js → chunk-YB5GVH36.js} +2 -2
  50. package/dist/cli.js +21 -21
  51. package/dist/config.js +2 -2
  52. package/dist/deep-recall-http-glue.js +4 -4
  53. package/dist/external-wiki-access.js +8 -8
  54. package/dist/index.js +23 -23
  55. package/dist/memory-browse-operations.js +8 -8
  56. package/dist/offline-sync-snapshot-stream.js +3 -3
  57. package/dist/offline-sync-upload-staging.d.ts +2 -2
  58. package/dist/offline-sync-upload-staging.d.ts.map +1 -1
  59. package/dist/offline-sync-upload-staging.js +1 -1
  60. package/dist/offline-sync.d.ts.map +1 -1
  61. package/dist/offline-sync.js +2 -2
  62. package/dist/operator-toolkit.js +2 -2
  63. package/dist/orchestrator.js +23 -23
  64. package/dist/recall-navigation-operations.js +8 -8
  65. package/dist/recall-navigation.js +7 -7
  66. package/dist/resume-bundles.js +2 -2
  67. package/dist/support-passport/index.js +10 -10
  68. package/package.json +2 -2
  69. package/src/offline-sync-upload-staging.test.ts +324 -0
  70. package/src/offline-sync-upload-staging.ts +2 -1
  71. package/src/offline-sync.ts +1 -6
  72. package/dist/chunk-ETUZFFPU.js.map +0 -1
  73. package/dist/chunk-VQEOBVF2.js.map +0 -1
  74. /package/dist/{chunk-6MWPIWPF.js.map → chunk-3MK4OYYH.js.map} +0 -0
  75. /package/dist/{chunk-3SNJMRC7.js.map → chunk-42YP6FMP.js.map} +0 -0
  76. /package/dist/{chunk-ZK4XGNJ3.js.map → chunk-53X6CL3A.js.map} +0 -0
  77. /package/dist/{chunk-N6GYEWFQ.js.map → chunk-BCQU44UV.js.map} +0 -0
  78. /package/dist/{chunk-ZNEA255W.js.map → chunk-GLJNGCCM.js.map} +0 -0
  79. /package/dist/{chunk-UKWQSPUU.js.map → chunk-HGG63H3A.js.map} +0 -0
  80. /package/dist/{chunk-3RMJLDMS.js.map → chunk-IAKC3KEJ.js.map} +0 -0
  81. /package/dist/{chunk-JAQXKNQV.js.map → chunk-JWG43U5K.js.map} +0 -0
  82. /package/dist/{chunk-OYQAYIGE.js.map → chunk-N4JZ7J2I.js.map} +0 -0
  83. /package/dist/{chunk-LBU623X7.js.map → chunk-NHFWYPXN.js.map} +0 -0
  84. /package/dist/{chunk-QVYXXOTR.js.map → chunk-NI5MWLM3.js.map} +0 -0
  85. /package/dist/{chunk-IKWD4VP7.js.map → chunk-NWBYJ4VH.js.map} +0 -0
  86. /package/dist/{chunk-AWEHMKIO.js.map → chunk-ORVH5S7R.js.map} +0 -0
  87. /package/dist/{chunk-I7BRU753.js.map → chunk-PGJYLYPK.js.map} +0 -0
  88. /package/dist/{chunk-4HUMF74S.js.map → chunk-RA3OID2N.js.map} +0 -0
  89. /package/dist/{chunk-J3GJ23IP.js.map → chunk-SZIJJGA2.js.map} +0 -0
  90. /package/dist/{chunk-NWXGLTWN.js.map → chunk-TK7G5ABN.js.map} +0 -0
  91. /package/dist/{chunk-HDOWMJKD.js.map → chunk-UEU5IURP.js.map} +0 -0
  92. /package/dist/{chunk-ST4IBSPL.js.map → chunk-UGEFYQWU.js.map} +0 -0
  93. /package/dist/{chunk-FQJ4YXJO.js.map → chunk-XK6GP7QO.js.map} +0 -0
  94. /package/dist/{chunk-YHDA3DSO.js.map → chunk-YB5GVH36.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  buildProjectedGovernanceProposedActions,
5
5
  hasGroupedGovernanceActions,
6
6
  shapeMemorySummary
7
- } from "./chunk-QVYXXOTR.js";
7
+ } from "./chunk-NI5MWLM3.js";
8
8
  import "./chunk-W4F3C7N7.js";
9
9
  import "./chunk-MPC7TYTZ.js";
10
10
  import "./chunk-ZHXSOMYH.js";
@@ -36,7 +36,7 @@ import "./chunk-32HO62I4.js";
36
36
  import "./chunk-SOBJ6NEY.js";
37
37
  import "./chunk-QPWUG2S3.js";
38
38
  import "./chunk-R36IBI2M.js";
39
- import "./chunk-ZK4XGNJ3.js";
39
+ import "./chunk-53X6CL3A.js";
40
40
  import "./chunk-E6UNM67F.js";
41
41
  import "./chunk-6WHJ2EAB.js";
42
42
  import "./chunk-AQEJKOKI.js";
@@ -175,13 +175,13 @@ import "./chunk-Z7L72ZHL.js";
175
175
  import "./chunk-4O4TKIXQ.js";
176
176
  import "./chunk-RMMA44HE.js";
177
177
  import "./chunk-SYOIVK7K.js";
178
- import "./chunk-NWXGLTWN.js";
178
+ import "./chunk-TK7G5ABN.js";
179
179
  import "./chunk-MY7B3HYC.js";
180
180
  import "./chunk-353C5UNV.js";
181
181
  import "./chunk-5AYUHSAU.js";
182
182
  import "./chunk-BT7NVCML.js";
183
183
  import "./chunk-PO7NXNGC.js";
184
- import "./chunk-JAQXKNQV.js";
184
+ import "./chunk-JWG43U5K.js";
185
185
  import "./chunk-KQAFEZQX.js";
186
186
  import "./chunk-WEHSQBFR.js";
187
187
  import "./chunk-X7Y7WX73.js";
@@ -192,7 +192,7 @@ import "./chunk-SOAU2OE2.js";
192
192
  import "./chunk-BJMBJZ2Y.js";
193
193
  import "./chunk-UKJAGEXH.js";
194
194
  import "./chunk-FP2373TW.js";
195
- import "./chunk-FQJ4YXJO.js";
195
+ import "./chunk-XK6GP7QO.js";
196
196
  import "./chunk-N7QV3CMX.js";
197
197
  import "./chunk-PAAJWQH5.js";
198
198
  import "./chunk-2JRB3Z5N.js";
@@ -210,9 +210,9 @@ import "./chunk-C7HJ3NEI.js";
210
210
  import "./chunk-N4PYB235.js";
211
211
  import "./chunk-AW4QUFQF.js";
212
212
  import "./chunk-5FVVY2EB.js";
213
- import "./chunk-VQEOBVF2.js";
213
+ import "./chunk-KJKTDMAD.js";
214
214
  import "./chunk-UI3NYK34.js";
215
- import "./chunk-ETUZFFPU.js";
215
+ import "./chunk-3E6DGSGZ.js";
216
216
  import "./chunk-3QH4NT72.js";
217
217
  import "./chunk-KO4X4WRJ.js";
218
218
  import "./chunk-TYT4TEQV.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES
3
- } from "./chunk-ZNEA255W.js";
3
+ } from "./chunk-GLJNGCCM.js";
4
4
  import {
5
5
  SUPPORT_PASSPORT_PUBLIC_HTTP_ROUTES
6
- } from "./chunk-LBU623X7.js";
7
- import "./chunk-QVYXXOTR.js";
6
+ } from "./chunk-NHFWYPXN.js";
7
+ import "./chunk-NI5MWLM3.js";
8
8
  import "./chunk-W4F3C7N7.js";
9
9
  import "./chunk-MPC7TYTZ.js";
10
10
  import "./chunk-ZHXSOMYH.js";
@@ -36,7 +36,7 @@ import "./chunk-32HO62I4.js";
36
36
  import "./chunk-SOBJ6NEY.js";
37
37
  import "./chunk-QPWUG2S3.js";
38
38
  import "./chunk-R36IBI2M.js";
39
- import "./chunk-ZK4XGNJ3.js";
39
+ import "./chunk-53X6CL3A.js";
40
40
  import "./chunk-E6UNM67F.js";
41
41
  import "./chunk-6WHJ2EAB.js";
42
42
  import "./chunk-AQEJKOKI.js";
@@ -175,13 +175,13 @@ import "./chunk-Z7L72ZHL.js";
175
175
  import "./chunk-4O4TKIXQ.js";
176
176
  import "./chunk-RMMA44HE.js";
177
177
  import "./chunk-SYOIVK7K.js";
178
- import "./chunk-NWXGLTWN.js";
178
+ import "./chunk-TK7G5ABN.js";
179
179
  import "./chunk-MY7B3HYC.js";
180
180
  import "./chunk-353C5UNV.js";
181
181
  import "./chunk-5AYUHSAU.js";
182
182
  import "./chunk-BT7NVCML.js";
183
183
  import "./chunk-PO7NXNGC.js";
184
- import "./chunk-JAQXKNQV.js";
184
+ import "./chunk-JWG43U5K.js";
185
185
  import "./chunk-KQAFEZQX.js";
186
186
  import "./chunk-WEHSQBFR.js";
187
187
  import "./chunk-X7Y7WX73.js";
@@ -192,7 +192,7 @@ import "./chunk-SOAU2OE2.js";
192
192
  import "./chunk-BJMBJZ2Y.js";
193
193
  import "./chunk-UKJAGEXH.js";
194
194
  import "./chunk-FP2373TW.js";
195
- import "./chunk-FQJ4YXJO.js";
195
+ import "./chunk-XK6GP7QO.js";
196
196
  import "./chunk-N7QV3CMX.js";
197
197
  import "./chunk-PAAJWQH5.js";
198
198
  import "./chunk-2JRB3Z5N.js";
@@ -210,9 +210,9 @@ import "./chunk-C7HJ3NEI.js";
210
210
  import "./chunk-N4PYB235.js";
211
211
  import "./chunk-AW4QUFQF.js";
212
212
  import "./chunk-5FVVY2EB.js";
213
- import "./chunk-VQEOBVF2.js";
213
+ import "./chunk-KJKTDMAD.js";
214
214
  import "./chunk-UI3NYK34.js";
215
- import "./chunk-ETUZFFPU.js";
215
+ import "./chunk-3E6DGSGZ.js";
216
216
  import "./chunk-3QH4NT72.js";
217
217
  import "./chunk-KO4X4WRJ.js";
218
218
  import "./chunk-TYT4TEQV.js";
@@ -126,9 +126,9 @@ import "./chunk-C7HJ3NEI.js";
126
126
  import "./chunk-N4PYB235.js";
127
127
  import "./chunk-AW4QUFQF.js";
128
128
  import "./chunk-5FVVY2EB.js";
129
- import "./chunk-VQEOBVF2.js";
129
+ import "./chunk-KJKTDMAD.js";
130
130
  import "./chunk-UI3NYK34.js";
131
- import "./chunk-ETUZFFPU.js";
131
+ import "./chunk-3E6DGSGZ.js";
132
132
  import "./chunk-3QH4NT72.js";
133
133
  import "./chunk-KO4X4WRJ.js";
134
134
  import "./chunk-TYT4TEQV.js";
@@ -215,4 +215,4 @@ export {
215
215
  writeSafeFileFromUpload,
216
216
  cleanupOfflineUpload
217
217
  };
218
- //# sourceMappingURL=chunk-ETUZFFPU.js.map
218
+ //# sourceMappingURL=chunk-3E6DGSGZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/offline-sync-upload-staging.ts"],"sourcesContent":["// Offline-sync upload staging: chunked upload spool under\n// `.offline-sync/uploads/` (issue #2033). Extracted from offline-sync.ts so\n// the god-file line-count ratchet does not grow; behavior is unchanged.\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { SYNC_INTERNAL_DIR, setSafeFileMtime } from \"./offline-sync-file-io.js\";\nimport type { OfflineSyncFileTarget } from \"./offline-sync-file-io.js\";\nimport type {\n OfflineSyncFileStagingWriteTarget,\n OfflineSyncFileWriteChunksTarget,\n OfflineSyncFileWriteTarget,\n} from \"./offline-sync.js\";\nimport { type SafeArchiveRoot, resolveSafeArchiveTarget } from \"./transfer/fs-utils.js\";\n\nconst OFFLINE_SYNC_UPLOAD_STAGING_MAX_AGE_MS = 24 * 60 * 60 * 1000;\n\nexport function hashText(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\n/** A staged upload spool returned by writeOfflineUploadChunk; consumed by digest/cleanup/finalize. */\nexport interface OfflineUploadStaging {\n kind: \"single\" | \"chunks\";\n relPath: string;\n filePath: string;\n}\n\nfunction offlineUploadRelPath(options: {\n sourceId: string;\n relPath: string;\n sha256: string;\n bytes: number;\n}): string {\n const key = hashText([options.sourceId, options.relPath, options.sha256, String(options.bytes)].join(\"\\0\"));\n return `${SYNC_INTERNAL_DIR}/uploads/${key}.part`;\n}\n\nasync function offlineUploadPath(\n root: SafeArchiveRoot,\n options: {\n sourceId: string;\n relPath: string;\n sha256: string;\n bytes: number;\n }\n): Promise<OfflineUploadStaging> {\n const relPath = offlineUploadRelPath(options);\n return {\n kind: \"single\",\n relPath,\n filePath: await resolveSafeArchiveTarget(root, relPath),\n };\n}\n\nasync function offlineUploadChunkPath(\n root: SafeArchiveRoot,\n options: {\n sourceId: string;\n relPath: string;\n sha256: string;\n bytes: number;\n offset: number;\n }\n): Promise<OfflineUploadStaging> {\n const uploadRelPath = offlineUploadRelPath(options);\n const relPath = `${uploadRelPath}/${String(options.offset).padStart(20, \"0\")}.part`;\n return {\n kind: \"chunks\",\n relPath,\n filePath: await resolveSafeArchiveTarget(root, relPath),\n };\n}\n\nexport async function writeOfflineUploadChunk(options: {\n root: SafeArchiveRoot;\n sourceId: string;\n relPath: string;\n sha256: string;\n bytes: number;\n offset: number;\n content: Buffer;\n readFile?: (target: OfflineSyncFileTarget) => Promise<Buffer>;\n writeFile?: (target: OfflineSyncFileWriteTarget) => Promise<void>;\n writeStagingFile?: (target: OfflineSyncFileStagingWriteTarget) => Promise<void>;\n}): Promise<OfflineUploadStaging> {\n if ((options.writeFile || options.writeStagingFile) && !options.readFile) {\n throw new Error(\"offline sync upload chunk storage hooks require readFile\");\n }\n const uploadRoot = {\n ...(await offlineUploadPath(options.root, options)),\n kind: \"chunks\" as const,\n };\n if (options.offset === 0) {\n await rm(uploadRoot.filePath, { recursive: true, force: true }).catch(() => {});\n } else {\n const existing = await stat(uploadRoot.filePath).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw error;\n });\n if (!existing || !existing.isDirectory()) {\n throw new Error(`offline sync upload is missing initial chunk for ${options.relPath}`);\n }\n }\n const chunk = await offlineUploadChunkPath(options.root, { ...options, offset: options.offset });\n\n const writeStagingFile = options.writeStagingFile ?? options.writeFile;\n if (writeStagingFile) {\n // Storage-backed services provide these hooks so secure-store deployments\n // keep staged partial uploads encrypted at rest without mutating indexes.\n await writeOfflineUploadContent({\n root: options.root,\n relPath: chunk.relPath,\n filePath: chunk.filePath,\n content: options.content,\n writeFile: writeStagingFile,\n });\n return uploadRoot;\n }\n\n await mkdir(path.dirname(chunk.filePath), { recursive: true });\n const existingChunk = await lstat(chunk.filePath).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw error;\n });\n if (existingChunk?.isSymbolicLink()) {\n throw new Error(`offline sync upload chunk is a symlink: ${chunk.relPath}`);\n }\n await writeFile(chunk.filePath, options.content, { mode: 0o600 });\n return uploadRoot;\n}\n\nexport async function pruneOfflineUploadStaging(root: SafeArchiveRoot): Promise<void> {\n const uploadsRelPath = `${SYNC_INTERNAL_DIR}/uploads`;\n const uploadsPath = await resolveSafeArchiveTarget(root, uploadsRelPath);\n const entries = await readdir(uploadsPath, { withFileTypes: true }).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n throw error;\n });\n const now = Date.now();\n await Promise.all(\n entries.map(async (entry) => {\n if (!/^[a-f0-9]{64}\\.part$/i.test(entry.name)) return;\n const relPath = `${uploadsRelPath}/${entry.name}`;\n const filePath = await resolveSafeArchiveTarget(root, relPath);\n const info = await lstat(filePath).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw error;\n });\n if (!info) return;\n if (now - info.mtimeMs <= OFFLINE_SYNC_UPLOAD_STAGING_MAX_AGE_MS) return;\n await rm(filePath, { recursive: true, force: true });\n })\n );\n}\n\nasync function* readOfflineUploadStagingChunks(options: {\n root: SafeArchiveRoot;\n upload: OfflineUploadStaging;\n readFile?: (target: OfflineSyncFileTarget) => Promise<Buffer>;\n}): AsyncGenerator<Buffer> {\n if (options.upload.kind === \"single\") {\n yield await readOfflineUploadContent({\n root: options.root,\n relPath: options.upload.relPath,\n filePath: options.upload.filePath,\n readFile: options.readFile,\n });\n return;\n }\n\n const entries = await readdir(options.upload.filePath);\n const chunkNames = entries.filter((entry) => /^\\d{20}\\.part$/.test(entry)).sort();\n if (chunkNames.length === 0) {\n throw new Error(`offline sync upload is missing chunks for ${options.upload.relPath}`);\n }\n let expectedOffset = 0;\n for (const chunkName of chunkNames) {\n const offset = Number(chunkName.slice(0, 20));\n if (!Number.isSafeInteger(offset) || offset !== expectedOffset) {\n throw new Error(\n `offline sync upload offset mismatch for ${options.upload.relPath}: expected ${expectedOffset}, got ${offset}`\n );\n }\n const relPath = `${options.upload.relPath}/${chunkName}`;\n const filePath = await resolveSafeArchiveTarget(options.root, relPath);\n const content = await readOfflineUploadContent({\n root: options.root,\n relPath,\n filePath,\n readFile: options.readFile,\n });\n expectedOffset += content.length;\n yield content;\n }\n}\n\nexport async function digestOfflineUploadStagingContent(options: {\n root: SafeArchiveRoot;\n upload: OfflineUploadStaging;\n readFile?: (target: OfflineSyncFileTarget) => Promise<Buffer>;\n}): Promise<{ sha256: string; bytes: number }> {\n const hash = createHash(\"sha256\");\n let bytes = 0;\n for await (const chunk of readOfflineUploadStagingChunks(options)) {\n hash.update(chunk);\n bytes += chunk.length;\n }\n return { sha256: hash.digest(\"hex\"), bytes };\n}\n\nexport async function writeSafeFileFromUpload(\n root: SafeArchiveRoot,\n relPath: string,\n upload: OfflineUploadStaging,\n readFile?: (target: OfflineSyncFileTarget) => Promise<Buffer>,\n writeFileChunks?: (target: OfflineSyncFileWriteChunksTarget) => Promise<void>,\n mtimeMs?: number\n): Promise<void> {\n const target = await resolveSafeArchiveTarget(root, relPath);\n const chunks = readOfflineUploadStagingChunks({ root, upload, readFile });\n if (writeFileChunks) {\n await writeFileChunks({ root: root.abs, path: relPath, filePath: target, chunks });\n await setSafeFileMtime(root, relPath, mtimeMs);\n return;\n }\n\n await mkdir(path.dirname(target), { recursive: true });\n const tmp = path.join(path.dirname(target), `.remnic-sync.${process.pid}.${randomUUID()}.tmp`);\n const handle = await open(tmp, \"w\", 0o600);\n try {\n for await (const chunk of chunks) {\n if (chunk.length > 0) await handle.write(chunk);\n }\n await handle.close();\n const targetStat = await lstat(target).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw error;\n });\n if (targetStat?.isSymbolicLink()) {\n throw new Error(`offline sync target is a symlink: ${relPath}`);\n }\n await rename(tmp, target);\n await setSafeFileMtime(root, relPath, mtimeMs);\n } catch (error) {\n await handle.close().catch(() => {});\n await unlink(tmp).catch(() => {});\n throw error;\n }\n}\n\nexport async function cleanupOfflineUpload(upload: OfflineUploadStaging): Promise<void> {\n if (upload.kind === \"chunks\") {\n await rm(upload.filePath, { recursive: true, force: true });\n return;\n }\n await unlink(upload.filePath).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw error;\n });\n}\n\nasync function readOfflineUploadContent(options: {\n root: SafeArchiveRoot;\n relPath: string;\n filePath: string;\n readFile?: (target: OfflineSyncFileTarget) => Promise<Buffer>;\n}): Promise<Buffer> {\n if (options.readFile) {\n return options.readFile({\n root: options.root.abs,\n path: options.relPath,\n filePath: options.filePath,\n });\n }\n return readFile(options.filePath);\n}\n\nasync function writeOfflineUploadContent(options: {\n root: SafeArchiveRoot;\n relPath: string;\n filePath: string;\n content: Buffer;\n writeFile: (target: OfflineSyncFileWriteTarget) => Promise<void>;\n}): Promise<void> {\n await options.writeFile({\n root: options.root.abs,\n path: options.relPath,\n filePath: options.filePath,\n content: options.content,\n });\n}\n"],"mappings":"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","names":["readFile"]}
@@ -21,7 +21,7 @@ import {
21
21
  defineOperation,
22
22
  parseNamespacePreflightWriteOp,
23
23
  resolveAuthorizedNamespaceWritablePreflight
24
- } from "./chunk-QVYXXOTR.js";
24
+ } from "./chunk-NI5MWLM3.js";
25
25
  import {
26
26
  parseSharedWriteOutputControls
27
27
  } from "./chunk-IFBSZGW3.js";
@@ -36,7 +36,7 @@ import {
36
36
  recallRequestSchema,
37
37
  retainedCategoryAlias,
38
38
  suggestionSubmitRequestSchema
39
- } from "./chunk-JAQXKNQV.js";
39
+ } from "./chunk-JWG43U5K.js";
40
40
  import {
41
41
  enforceNamespaceAllowList,
42
42
  tokenCapabilityStore
@@ -603,4 +603,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
603
603
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
604
604
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
605
605
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
606
- //# sourceMappingURL=chunk-6MWPIWPF.js.map
606
+ //# sourceMappingURL=chunk-3MK4OYYH.js.map
@@ -228,7 +228,7 @@ import {
228
228
  runTimelinePublishCli,
229
229
  screenCandidateFact,
230
230
  summarizeVaultPublish
231
- } from "./chunk-OYQAYIGE.js";
231
+ } from "./chunk-N4JZ7J2I.js";
232
232
  import {
233
233
  RoutingRulesStore
234
234
  } from "./chunk-TBUEE7XF.js";
@@ -367,7 +367,7 @@ import {
367
367
  } from "./chunk-QW27DOHG.js";
368
368
  import {
369
369
  MeetingsInputError
370
- } from "./chunk-J3GJ23IP.js";
370
+ } from "./chunk-SZIJJGA2.js";
371
371
  import {
372
372
  WearablesInputError,
373
373
  describeErrorForOperator
@@ -394,7 +394,7 @@ import {
394
394
  detectPassiveCorrections,
395
395
  renderSessionExperiencePreview,
396
396
  scoreSessionExperienceForPrompt
397
- } from "./chunk-QVYXXOTR.js";
397
+ } from "./chunk-NI5MWLM3.js";
398
398
  import {
399
399
  importCapsule
400
400
  } from "./chunk-ZHXSOMYH.js";
@@ -31096,4 +31096,4 @@ export {
31096
31096
  qmdStartupCollectionChecksWithTimeout,
31097
31097
  Orchestrator
31098
31098
  };
31099
- //# sourceMappingURL=chunk-3SNJMRC7.js.map
31099
+ //# sourceMappingURL=chunk-42YP6FMP.js.map
@@ -2,7 +2,7 @@ import {
2
2
  OFFLINE_SYNC_SNAPSHOT_FORMAT,
3
3
  filterOfflineSyncDeletionRevisions,
4
4
  iterateOfflineSyncSnapshotFileRecords
5
- } from "./chunk-VQEOBVF2.js";
5
+ } from "./chunk-KJKTDMAD.js";
6
6
  import {
7
7
  computeOmittedEmbeddingGenerationPaths,
8
8
  embeddingGenerationMembership
@@ -61,4 +61,4 @@ async function buildEmbeddingAwareSnapshotStream(options) {
61
61
  export {
62
62
  buildEmbeddingAwareSnapshotStream
63
63
  };
64
- //# sourceMappingURL=chunk-ZK4XGNJ3.js.map
64
+ //# sourceMappingURL=chunk-53X6CL3A.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7T4TOGMS.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-QVYXXOTR.js";
6
+ } from "./chunk-NI5MWLM3.js";
7
7
 
8
8
  // src/external-wiki-access.ts
9
9
  import { z } from "zod";
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
26
26
  export {
27
27
  externalWikiSearchOperation
28
28
  };
29
- //# sourceMappingURL=chunk-N6GYEWFQ.js.map
29
+ //# sourceMappingURL=chunk-BCQU44UV.js.map
@@ -2,7 +2,7 @@ import {
2
2
  SupportPassportError,
3
3
  SupportPassportOwnerCreateGrantRequestSchema,
4
4
  getOperation
5
- } from "./chunk-QVYXXOTR.js";
5
+ } from "./chunk-NI5MWLM3.js";
6
6
 
7
7
  // src/support-passport/access-http.ts
8
8
  var OWNER_ROOT = "/engram/v1/support-passport";
@@ -137,4 +137,4 @@ export {
137
137
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
138
138
  handleSupportPassportOwnerHttp
139
139
  };
140
- //# sourceMappingURL=chunk-ZNEA255W.js.map
140
+ //# sourceMappingURL=chunk-GLJNGCCM.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-QVYXXOTR.js";
4
+ } from "./chunk-NI5MWLM3.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-UKWQSPUU.js.map
223
+ //# sourceMappingURL=chunk-HGG63H3A.js.map
@@ -12,20 +12,20 @@ import {
12
12
  } from "./chunk-CZ44FH45.js";
13
13
  import {
14
14
  externalWikiSearchOperation
15
- } from "./chunk-N6GYEWFQ.js";
15
+ } from "./chunk-BCQU44UV.js";
16
16
  import {
17
17
  DECISION_SUBCOMMANDS,
18
18
  DELTA_SUBCOMMANDS,
19
19
  defineOperation,
20
20
  isCodegraphToolName
21
- } from "./chunk-QVYXXOTR.js";
21
+ } from "./chunk-NI5MWLM3.js";
22
22
  import {
23
23
  CorrectionContractError
24
24
  } from "./chunk-QLK3SL7Q.js";
25
25
  import {
26
26
  memoryStoreRequestSchema,
27
27
  retainedCategoryAlias
28
- } from "./chunk-JAQXKNQV.js";
28
+ } from "./chunk-JWG43U5K.js";
29
29
  import {
30
30
  serializeMutations,
31
31
  withHeldFileLock
@@ -1914,4 +1914,4 @@ export {
1914
1914
  codegraphIngestTracesOperation,
1915
1915
  REGISTERED_OPERATIONS
1916
1916
  };
1917
- //# sourceMappingURL=chunk-3RMJLDMS.js.map
1917
+ //# sourceMappingURL=chunk-IAKC3KEJ.js.map
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
14
14
  OFFLINE_SYNC_MAX_MTIME_MS
15
- } from "./chunk-VQEOBVF2.js";
15
+ } from "./chunk-KJKTDMAD.js";
16
16
  import {
17
17
  validateArchiveRelativePath
18
18
  } from "./chunk-GCGJW34D.js";
@@ -563,4 +563,4 @@ export {
563
563
  actionConfidenceRequestSchema,
564
564
  validateRequest
565
565
  };
566
- //# sourceMappingURL=chunk-JAQXKNQV.js.map
566
+ //# sourceMappingURL=chunk-JWG43U5K.js.map
@@ -8,7 +8,7 @@ import {
8
8
  pruneOfflineUploadStaging,
9
9
  writeOfflineUploadChunk,
10
10
  writeSafeFileFromUpload
11
- } from "./chunk-ETUZFFPU.js";
11
+ } from "./chunk-3E6DGSGZ.js";
12
12
  import {
13
13
  applyChangesetEmbeddingGenerations,
14
14
  normalizeChangesetGenerations
@@ -1774,4 +1774,4 @@ export {
1774
1774
  normalizeOfflineSyncState,
1775
1775
  fileStatesFromSnapshot
1776
1776
  };
1777
- //# sourceMappingURL=chunk-VQEOBVF2.js.map
1777
+ //# sourceMappingURL=chunk-KJKTDMAD.js.map