@remnic/core 9.45.4 → 9.45.5
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.
- package/dist/access-admin-ops-surface.d.ts +5 -5
- package/dist/access-admin-ops-surface.js +20 -19
- package/dist/access-authorization-probe.d.ts +5 -5
- package/dist/access-authorization-probe.js +21 -20
- package/dist/access-boundary.d.ts +5 -5
- package/dist/access-boundary.js +20 -19
- package/dist/access-cli.js +60 -58
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.d.ts +5 -5
- package/dist/access-extraction-force-flush.js +20 -19
- package/dist/access-http-lcm-compaction.d.ts +5 -5
- package/dist/access-http-lifecycle-flush.d.ts +5 -5
- package/dist/access-http-offline-stream.d.ts +5 -5
- package/dist/access-http-offline-stream.js +1 -1
- package/dist/access-http-query.js +20 -19
- package/dist/access-http.d.ts +5 -6
- package/dist/access-http.js +32 -31
- package/dist/access-identity-continuity-surface.d.ts +4 -4
- package/dist/access-identity-continuity-surface.js +20 -19
- package/dist/access-lcm-surface.d.ts +5 -5
- package/dist/access-lcm-surface.js +20 -19
- package/dist/access-mcp.d.ts +5 -5
- package/dist/access-mcp.js +26 -25
- package/dist/access-namespace-preflight.js +20 -19
- package/dist/access-observe-write-surface.d.ts +5 -5
- package/dist/access-observe-write-surface.js +20 -19
- package/dist/access-offline-manifest.d.ts +4 -4
- package/dist/access-operations-batch.js +21 -20
- package/dist/access-operations.d.ts +8 -8
- package/dist/access-operations.js +25 -24
- package/dist/access-recall-concurrency.d.ts +5 -5
- package/dist/access-recall-concurrency.js +20 -19
- package/dist/access-recall-response.d.ts +5 -5
- package/dist/access-recall-response.js +20 -19
- package/dist/access-recall-surface.d.ts +5 -5
- package/dist/access-recall-surface.js +20 -19
- package/dist/access-schema.d.ts +84 -84
- package/dist/{access-service-CsU-ljFD.d.ts → access-service-CNN89xyn.d.ts} +3 -3
- package/dist/access-service-helpers.d.ts +5 -5
- package/dist/access-service.d.ts +5 -5
- package/dist/access-service.js +20 -19
- package/dist/access-surface-catalog.d.ts +5 -5
- package/dist/access-wearables-meetings-surface.d.ts +2 -2
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/bootstrap.d.ts +4 -4
- package/dist/briefing.d.ts +1 -1
- package/dist/briefing.js +3 -2
- package/dist/buffer.d.ts +1 -1
- package/dist/buffer.js +4 -4
- package/dist/causal-consolidation.js +4 -3
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-7SHJHPTY.js → chunk-2FSTB6BJ.js} +2 -2
- package/dist/{chunk-ULVR5KG7.js → chunk-2X2T2UVE.js} +2 -2
- package/dist/{chunk-QVSBTCVP.js → chunk-3COYXTGM.js} +2 -2
- package/dist/{chunk-XTAUXTDO.js → chunk-4FBVAGV3.js} +2 -2
- package/dist/{chunk-R5RFK3CB.js → chunk-5QJQHBLE.js} +2 -2
- package/dist/{chunk-YMAQDHQM.js → chunk-6ISC4AVB.js} +2 -2
- package/dist/{chunk-7CITSYSH.js → chunk-7T4TOGMS.js} +2 -2
- package/dist/{chunk-ZMAYKGPN.js → chunk-7YQ6ESEA.js} +12 -41
- package/dist/chunk-7YQ6ESEA.js.map +1 -0
- package/dist/{chunk-TYISDI6B.js → chunk-A4IJCD2Z.js} +2 -2
- package/dist/{chunk-JH6BPLOP.js → chunk-AC5OWJLV.js} +4 -4
- package/dist/{chunk-CLB32OHM.js → chunk-AMAUBUKY.js} +2 -2
- package/dist/{chunk-WGP57SR3.js → chunk-CK5KOVHW.js} +3 -2
- package/dist/{chunk-WGP57SR3.js.map → chunk-CK5KOVHW.js.map} +1 -1
- package/dist/{chunk-XSFHWBQO.js → chunk-CX4ZUMC6.js} +7 -61
- package/dist/{chunk-XSFHWBQO.js.map → chunk-CX4ZUMC6.js.map} +1 -1
- package/dist/{chunk-UQWIKLQK.js → chunk-DAJPRXBR.js} +6 -6
- package/dist/{chunk-U2VLVBBH.js → chunk-E5XQIWAL.js} +2 -2
- package/dist/{chunk-NTOIP2E6.js → chunk-ERZ2R42X.js} +2 -2
- package/dist/{chunk-5CEECY6P.js → chunk-FIK3CQNA.js} +3 -3
- package/dist/{chunk-EJHEWCGQ.js → chunk-FR27HBBA.js} +2 -2
- package/dist/{chunk-FZP32336.js → chunk-FUCYDRE5.js} +43 -21
- package/dist/chunk-FUCYDRE5.js.map +1 -0
- package/dist/{chunk-P7NGM24P.js → chunk-GFCVUY6G.js} +2 -2
- package/dist/{chunk-DYVMXPCF.js → chunk-GODSPTOT.js} +41 -41
- package/dist/{chunk-AJQ57VV3.js → chunk-GRUYA45P.js} +4 -4
- package/dist/chunk-GRUYA45P.js.map +1 -0
- package/dist/{chunk-2MRHJNWL.js → chunk-GUAL4PQH.js} +2 -2
- package/dist/{chunk-EITZHSX6.js → chunk-HC3PBX23.js} +2 -2
- package/dist/{chunk-NUEQKLNB.js → chunk-JZH4LWHB.js} +2 -2
- package/dist/{chunk-7RZJWZ46.js → chunk-LEPOP46W.js} +5 -5
- package/dist/{chunk-TQ4GD737.js → chunk-LPYDOLSM.js} +2 -2
- package/dist/{chunk-TN76AKO3.js → chunk-MO4HSXHZ.js} +2 -2
- package/dist/{chunk-WQIHRA5F.js → chunk-N3LL5NEU.js} +2 -2
- package/dist/{chunk-D3I2MCN7.js → chunk-NEF7LR5J.js} +3 -3
- package/dist/{chunk-C26TE27X.js → chunk-QR6G5KF4.js} +3 -3
- package/dist/{chunk-ZI32MKDW.js → chunk-QUENPGWZ.js} +18 -21
- package/dist/chunk-QUENPGWZ.js.map +1 -0
- package/dist/{chunk-5SNZSWWR.js → chunk-QVJPH7SH.js} +21 -21
- package/dist/{chunk-MDISBSYA.js → chunk-R3KHKU7M.js} +2 -2
- package/dist/{chunk-2QSZNTDO.js → chunk-RKNJBZ55.js} +4 -4
- package/dist/{chunk-KXEFRMCF.js → chunk-RNHVVMFN.js} +2 -2
- package/dist/{chunk-QCECHYZL.js → chunk-RVO6TCTU.js} +6 -6
- package/dist/chunk-S2HLHAZ4.js +16 -0
- package/dist/chunk-S2HLHAZ4.js.map +1 -0
- package/dist/{chunk-ZFGZ6PZ2.js → chunk-UW66OZTD.js} +2 -2
- package/dist/{chunk-BGHFOD5A.js → chunk-V2TNYF6Q.js} +3 -3
- package/dist/chunk-VL35ZFSZ.js +102 -0
- package/dist/chunk-VL35ZFSZ.js.map +1 -0
- package/dist/{chunk-Y7HRYCNW.js → chunk-W2V7UESE.js} +2 -2
- package/dist/{chunk-DSUAAZZX.js → chunk-WZ3TOIDW.js} +2 -2
- package/dist/{chunk-7YERSTN7.js → chunk-XAGYS7X6.js} +7 -7
- package/dist/{chunk-VOUOLGIP.js → chunk-YRFAYOFQ.js} +11 -13
- package/dist/chunk-YRFAYOFQ.js.map +1 -0
- package/dist/{chunk-6NNNURLK.js → chunk-Z54EM5YZ.js} +4 -4
- package/dist/{cli-BBHDtG36.d.ts → cli-BHBswmUa.d.ts} +3 -3
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +43 -42
- package/dist/compounding/engine.d.ts +1 -1
- package/dist/compounding/engine.js +3 -2
- package/dist/connectors/codex-materialize-runner.js +3 -2
- package/dist/connectors/index.js +3 -2
- package/dist/consolidation-provenance-check.d.ts +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +1 -1
- package/dist/convergence-refresh.js +5 -4
- package/dist/conversation-index/backend.js +2 -2
- package/dist/corpus-watermark.js +12 -11
- package/dist/entity-retrieval.d.ts +1 -1
- package/dist/entity-retrieval.js +3 -2
- package/dist/explicit-capture.d.ts +4 -4
- package/dist/external-wiki-access.d.ts +5 -5
- package/dist/external-wiki-access.js +23 -22
- package/dist/external-wiki-cli.js +4 -90
- package/dist/external-wiki-cli.js.map +1 -1
- package/dist/external-wiki-mcp-tools.d.ts +5 -5
- package/dist/external-wiki-search.js +2 -2
- package/dist/external-wiki.d.ts +1 -5
- package/dist/external-wiki.js +1 -3
- package/dist/extraction.js +8 -7
- package/dist/{first-start-migration-F2QJD66E.js → first-start-migration-ZSHEFEI3.js} +10 -12
- package/dist/{first-start-migration-F2QJD66E.js.map → first-start-migration-ZSHEFEI3.js.map} +1 -1
- package/dist/index.d.ts +688 -687
- package/dist/index.js +81 -78
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.js +2 -2
- package/dist/maintenance/memory-governance.js +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +1 -1
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -2
- package/dist/maintenance/rebuild-memory-projection.d.ts +1 -1
- package/dist/maintenance/rebuild-memory-projection.js +4 -3
- package/dist/{maintenance-D2mveyCd.d.ts → maintenance-CoRikzIt.d.ts} +1 -1
- package/dist/mcp-memory-inspector-app.d.ts +5 -5
- package/dist/memory-snapshot.d.ts +10 -0
- package/dist/memory-snapshot.js +8 -0
- package/dist/memory-snapshot.js.map +1 -0
- package/dist/memory-worth-outcomes.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +1 -1
- package/dist/namespaces/migrate.js +11 -10
- package/dist/namespaces/search.js +7 -7
- package/dist/namespaces/storage.d.ts +1 -1
- package/dist/namespaces/storage.js +3 -2
- package/dist/operator-doctor-corpus.js +13 -12
- package/dist/operator-toolkit.d.ts +1 -1
- package/dist/operator-toolkit.js +17 -16
- package/dist/orchestration/compression-guideline-coordinator.d.ts +1 -1
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +8 -7
- package/dist/{orchestrator-DJYlwiUv.d.ts → orchestrator-BJeq7Pw1.d.ts} +3 -3
- package/dist/orchestrator.d.ts +4 -4
- package/dist/orchestrator.js +61 -59
- package/dist/qmd.js +4 -4
- package/dist/schemas.d.ts +76 -76
- package/dist/search/factory.js +6 -6
- package/dist/search/index.js +8 -8
- package/dist/semantic-consolidation.js +4 -3
- package/dist/semantic-rule-promotion.js +3 -2
- package/dist/semantic-rule-verifier.js +3 -2
- package/dist/{service-BeDxSqE-.d.ts → service-DWC4tq7p.d.ts} +1 -1
- package/dist/shared-context/manager.d.ts +8 -8
- package/dist/source-agent-qualifier.js +7 -6
- package/dist/{storage-DfjxusTE.d.ts → storage-DPGjB-8e.d.ts} +4 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +2 -1
- package/dist/temporal-supersession.d.ts +1 -1
- package/dist/tier-migration.d.ts +1 -1
- package/dist/tier-migration.js +1 -1
- package/dist/transfer/types.d.ts +66 -66
- package/dist/verified-recall.js +3 -2
- package/package.json +2 -2
- package/src/access-http-offline-stream.ts +1 -0
- package/src/access-http.ts +0 -57
- package/src/access-operations-batch.ts +1 -1
- package/src/access-service-observe-lcm-parity.test.ts +45 -20
- package/src/access-service.ts +3 -4
- package/src/external-wiki-cli.ts +28 -20
- package/src/external-wiki-search.test.ts +68 -2
- package/src/external-wiki.ts +12 -38
- package/src/index.ts +1 -5
- package/src/maintenance/first-start-migration.ts +11 -11
- package/src/memory-snapshot.ts +15 -0
- package/src/storage-contract/cache-coherence.test.ts +99 -0
- package/src/storage-fact-hash-index-defer.test.ts +14 -7
- package/src/storage.ts +47 -48
- package/src/testing/subjects/first-start-tier-migration.test.ts +75 -0
- package/src/tier-migration.ts +10 -12
- package/dist/chunk-AJQ57VV3.js.map +0 -1
- package/dist/chunk-FZP32336.js.map +0 -1
- package/dist/chunk-VOUOLGIP.js.map +0 -1
- package/dist/chunk-ZI32MKDW.js.map +0 -1
- package/dist/chunk-ZMAYKGPN.js.map +0 -1
- /package/dist/{chunk-7SHJHPTY.js.map → chunk-2FSTB6BJ.js.map} +0 -0
- /package/dist/{chunk-ULVR5KG7.js.map → chunk-2X2T2UVE.js.map} +0 -0
- /package/dist/{chunk-QVSBTCVP.js.map → chunk-3COYXTGM.js.map} +0 -0
- /package/dist/{chunk-XTAUXTDO.js.map → chunk-4FBVAGV3.js.map} +0 -0
- /package/dist/{chunk-R5RFK3CB.js.map → chunk-5QJQHBLE.js.map} +0 -0
- /package/dist/{chunk-YMAQDHQM.js.map → chunk-6ISC4AVB.js.map} +0 -0
- /package/dist/{chunk-7CITSYSH.js.map → chunk-7T4TOGMS.js.map} +0 -0
- /package/dist/{chunk-TYISDI6B.js.map → chunk-A4IJCD2Z.js.map} +0 -0
- /package/dist/{chunk-JH6BPLOP.js.map → chunk-AC5OWJLV.js.map} +0 -0
- /package/dist/{chunk-CLB32OHM.js.map → chunk-AMAUBUKY.js.map} +0 -0
- /package/dist/{chunk-UQWIKLQK.js.map → chunk-DAJPRXBR.js.map} +0 -0
- /package/dist/{chunk-U2VLVBBH.js.map → chunk-E5XQIWAL.js.map} +0 -0
- /package/dist/{chunk-NTOIP2E6.js.map → chunk-ERZ2R42X.js.map} +0 -0
- /package/dist/{chunk-5CEECY6P.js.map → chunk-FIK3CQNA.js.map} +0 -0
- /package/dist/{chunk-EJHEWCGQ.js.map → chunk-FR27HBBA.js.map} +0 -0
- /package/dist/{chunk-P7NGM24P.js.map → chunk-GFCVUY6G.js.map} +0 -0
- /package/dist/{chunk-DYVMXPCF.js.map → chunk-GODSPTOT.js.map} +0 -0
- /package/dist/{chunk-2MRHJNWL.js.map → chunk-GUAL4PQH.js.map} +0 -0
- /package/dist/{chunk-EITZHSX6.js.map → chunk-HC3PBX23.js.map} +0 -0
- /package/dist/{chunk-NUEQKLNB.js.map → chunk-JZH4LWHB.js.map} +0 -0
- /package/dist/{chunk-7RZJWZ46.js.map → chunk-LEPOP46W.js.map} +0 -0
- /package/dist/{chunk-TQ4GD737.js.map → chunk-LPYDOLSM.js.map} +0 -0
- /package/dist/{chunk-TN76AKO3.js.map → chunk-MO4HSXHZ.js.map} +0 -0
- /package/dist/{chunk-WQIHRA5F.js.map → chunk-N3LL5NEU.js.map} +0 -0
- /package/dist/{chunk-D3I2MCN7.js.map → chunk-NEF7LR5J.js.map} +0 -0
- /package/dist/{chunk-C26TE27X.js.map → chunk-QR6G5KF4.js.map} +0 -0
- /package/dist/{chunk-5SNZSWWR.js.map → chunk-QVJPH7SH.js.map} +0 -0
- /package/dist/{chunk-MDISBSYA.js.map → chunk-R3KHKU7M.js.map} +0 -0
- /package/dist/{chunk-2QSZNTDO.js.map → chunk-RKNJBZ55.js.map} +0 -0
- /package/dist/{chunk-KXEFRMCF.js.map → chunk-RNHVVMFN.js.map} +0 -0
- /package/dist/{chunk-QCECHYZL.js.map → chunk-RVO6TCTU.js.map} +0 -0
- /package/dist/{chunk-ZFGZ6PZ2.js.map → chunk-UW66OZTD.js.map} +0 -0
- /package/dist/{chunk-BGHFOD5A.js.map → chunk-V2TNYF6Q.js.map} +0 -0
- /package/dist/{chunk-Y7HRYCNW.js.map → chunk-W2V7UESE.js.map} +0 -0
- /package/dist/{chunk-DSUAAZZX.js.map → chunk-WZ3TOIDW.js.map} +0 -0
- /package/dist/{chunk-7YERSTN7.js.map → chunk-XAGYS7X6.js.map} +0 -0
- /package/dist/{chunk-6NNNURLK.js.map → chunk-Z54EM5YZ.js.map} +0 -0
|
@@ -112,9 +112,16 @@ function normalizeCatalogPath(target, config, base) {
|
|
|
112
112
|
return null;
|
|
113
113
|
}
|
|
114
114
|
const pagesDir = path.posix.normalize(config.pagesDir);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
let relative;
|
|
116
|
+
if (base === "index") {
|
|
117
|
+
const baseDir = path.posix.dirname(config.indexFile);
|
|
118
|
+
const rootRelativeTarget = path.posix.normalize(path.posix.join(baseDir, withoutFragment));
|
|
119
|
+
relative = path.posix.relative(pagesDir, rootRelativeTarget);
|
|
120
|
+
} else {
|
|
121
|
+
const pagesPrefix = pagesDir === "." ? "" : `${pagesDir}/`;
|
|
122
|
+
const stripped = pagesPrefix.length > 0 && withoutFragment.startsWith(pagesPrefix) ? withoutFragment.slice(pagesPrefix.length) : withoutFragment;
|
|
123
|
+
relative = path.posix.normalize(stripped);
|
|
124
|
+
}
|
|
118
125
|
if (relative === ".." || relative.startsWith("../") || path.posix.isAbsolute(relative) || relative === "." || !relative.toLowerCase().endsWith(".md")) {
|
|
119
126
|
return null;
|
|
120
127
|
}
|
|
@@ -305,47 +312,11 @@ async function readExternalWikiPage(config, relativePath, maxBytes = DEFAULT_MAX
|
|
|
305
312
|
bytes: page.bytes
|
|
306
313
|
};
|
|
307
314
|
}
|
|
308
|
-
async function runExternalWikiCliCommand(roots, rest, io) {
|
|
309
|
-
const { searchExternalWikis } = await import("./external-wiki-search.js");
|
|
310
|
-
const query = rest.filter((a) => !a.startsWith("-")).join(" ").trim();
|
|
311
|
-
if (!query) {
|
|
312
|
-
io.stderr.write("external-wiki: provide a search query\n");
|
|
313
|
-
return 1;
|
|
314
|
-
}
|
|
315
|
-
const enabled = roots.filter((r) => r.enabled !== false);
|
|
316
|
-
if (enabled.length === 0) {
|
|
317
|
-
io.stderr.write("external-wiki: no enabled wiki roots configured\n");
|
|
318
|
-
return 1;
|
|
319
|
-
}
|
|
320
|
-
try {
|
|
321
|
-
const result = await searchExternalWikis(enabled, { query });
|
|
322
|
-
if (result.hits.length === 0) {
|
|
323
|
-
io.stdout.write("No results.\n");
|
|
324
|
-
return 0;
|
|
325
|
-
}
|
|
326
|
-
for (const hit of result.hits) {
|
|
327
|
-
io.stdout.write(`[${hit.wikiId}] ${hit.path} (score ${hit.score})
|
|
328
|
-
${hit.snippet}
|
|
329
|
-
|
|
330
|
-
`);
|
|
331
|
-
}
|
|
332
|
-
if (result.degradedWikiIds.length > 0) {
|
|
333
|
-
io.stderr.write(`Warning: degraded roots: ${result.degradedWikiIds.join(", ")}
|
|
334
|
-
`);
|
|
335
|
-
}
|
|
336
|
-
return 0;
|
|
337
|
-
} catch (error) {
|
|
338
|
-
io.stderr.write(`external-wiki: ${error instanceof Error ? error.message : "search failed"}
|
|
339
|
-
`);
|
|
340
|
-
return 1;
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
315
|
|
|
344
316
|
export {
|
|
345
317
|
validateExternalWikiLayout,
|
|
346
318
|
parseExternalWikiCatalog,
|
|
347
319
|
loadExternalWikiCatalog,
|
|
348
|
-
readExternalWikiPage
|
|
349
|
-
runExternalWikiCliCommand
|
|
320
|
+
readExternalWikiPage
|
|
350
321
|
};
|
|
351
|
-
//# sourceMappingURL=chunk-
|
|
322
|
+
//# sourceMappingURL=chunk-7YQ6ESEA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/external-wiki.ts"],"sourcesContent":["import { constants } from \"node:fs\";\nimport { open, opendir, realpath, stat } from \"node:fs/promises\";\nimport type { FileHandle } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { ExternalWikiRoot } from \"./external-wiki-config.js\";\n\nconst DEFAULT_MAX_INDEX_BYTES = 1_048_576;\nconst DEFAULT_MAX_PAGE_BYTES = 1_048_576;\nconst DEFAULT_MAX_CATALOG_ENTRIES = 10_000;\nconst DEFAULT_MAX_DIRECTORY_DEPTH = 32;\nconst MAX_READ_BYTES = 16_777_216;\nconst MAX_CATALOG_ENTRIES = 100_000;\nconst MAX_DIRECTORY_DEPTH = 128;\nconst MIN_VISITED_ENTRIES = 100;\nconst MAX_VISITED_ENTRIES = 1_000_000;\n\nexport type { ExternalWikiRoot } from \"./external-wiki-config.js\";\n\nexport interface ExternalWikiLayout {\n rootDir: string;\n pagesDir: string;\n indexFile: string;\n indexPresent: boolean;\n rawDir?: string;\n outputsDir?: string;\n}\n\nexport interface ExternalWikiCatalogEntry {\n title: string;\n path: string;\n indexBlurb?: string;\n indexLine?: number;\n}\n\nexport interface ExternalWikiCatalog {\n wikiId: string;\n indexPresent: boolean;\n entries: ExternalWikiCatalogEntry[];\n}\n\nexport interface ExternalWikiCatalogLimits {\n maxIndexBytes?: number;\n maxEntries?: number;\n maxDepth?: number;\n}\n\nexport interface ExternalWikiPage {\n wikiId: string;\n path: string;\n title: string;\n content: string;\n bytes: number;\n}\n\nfunction assertPositiveInteger(value: number, keyName: string, maximum?: number): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new Error(`${keyName} must be a positive integer`);\n }\n if (maximum !== undefined && value > maximum) {\n throw new Error(`${keyName} must be at most ${maximum}`);\n }\n}\n\nfunction isInside(baseDir: string, candidate: string): boolean {\n const relative = path.relative(baseDir, candidate);\n return relative === \"\" || (relative !== \"..\" && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));\n}\n\nfunction resolveInside(baseDir: string, relativePath: string, keyName: string): string {\n const resolved = path.resolve(baseDir, relativePath);\n if (!isInside(baseDir, resolved) || resolved === baseDir) {\n throw new Error(`${keyName} must stay within ${baseDir}`);\n }\n return resolved;\n}\n\nasync function requireDirectory(candidate: string, rootDir: string, description: string): Promise<string> {\n let canonical: string;\n try {\n canonical = await realpath(candidate);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new Error(`${description} does not exist: ${candidate}`);\n }\n throw error;\n }\n if (!isInside(rootDir, canonical)) throw new Error(`${description} escapes rootDir`);\n if (!(await stat(canonical)).isDirectory()) throw new Error(`${description} is not a directory`);\n return canonical;\n}\n\nasync function optionalDirectory(rootDir: string, name: \"raw\" | \"outputs\"): Promise<string | undefined> {\n const candidate = path.join(rootDir, name);\n let canonical: string;\n try {\n canonical = await realpath(candidate);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return undefined;\n throw error;\n }\n if (!isInside(rootDir, canonical)) throw new Error(`${name} directory escapes rootDir`);\n if (!(await stat(canonical)).isDirectory()) throw new Error(`${name} path is not a directory`);\n return canonical;\n}\n\nasync function optionalIndexFile(candidate: string, rootDir: string): Promise<string | undefined> {\n let canonical: string;\n try {\n canonical = await realpath(candidate);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return undefined;\n throw error;\n }\n if (!isInside(rootDir, canonical)) throw new Error(\"catalog index escapes rootDir\");\n if (!(await stat(canonical)).isFile()) throw new Error(\"catalog index is not a file\");\n return canonical;\n}\n\nexport async function validateExternalWikiLayout(config: ExternalWikiRoot): Promise<ExternalWikiLayout> {\n let rootDir: string;\n try {\n rootDir = await realpath(config.rootDir);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new Error(`external wiki root does not exist: ${config.rootDir}`);\n }\n throw error;\n }\n if (!(await stat(rootDir)).isDirectory()) throw new Error(\"external wiki root is not a directory\");\n\n const pagesDir = await requireDirectory(\n resolveInside(rootDir, config.pagesDir, \"pages directory\"),\n rootDir,\n \"pages directory\"\n );\n const configuredIndexFile = resolveInside(rootDir, config.indexFile, \"catalog index\");\n const canonicalIndexFile = await optionalIndexFile(configuredIndexFile, rootDir);\n const [rawDir, outputsDir] = await Promise.all([\n optionalDirectory(rootDir, \"raw\"),\n optionalDirectory(rootDir, \"outputs\"),\n ]);\n\n return {\n rootDir,\n pagesDir,\n indexFile: canonicalIndexFile ?? configuredIndexFile,\n indexPresent: canonicalIndexFile !== undefined,\n ...(rawDir === undefined ? {} : { rawDir }),\n ...(outputsDir === undefined ? {} : { outputsDir }),\n };\n}\n\ntype CatalogPathBase = \"index\" | \"pages\";\n\nfunction normalizeCatalogPath(target: string, config: ExternalWikiRoot, base: CatalogPathBase): string | null {\n let decoded: string;\n try {\n decoded = decodeURIComponent(target.trim());\n } catch {\n return null;\n }\n const withoutFragment = decoded.split(/[?#]/, 1)[0] ?? \"\";\n if (\n withoutFragment.length === 0 ||\n withoutFragment.startsWith(\"/\") ||\n withoutFragment.includes(\"\\\\\") ||\n /^[a-z][a-z0-9+.-]*:/i.test(withoutFragment)\n ) {\n return null;\n }\n\n const pagesDir = path.posix.normalize(config.pagesDir);\n let relative: string;\n if (base === \"index\") {\n const baseDir = path.posix.dirname(config.indexFile);\n const rootRelativeTarget = path.posix.normalize(path.posix.join(baseDir, withoutFragment));\n relative = path.posix.relative(pagesDir, rootRelativeTarget);\n } else {\n const pagesPrefix = pagesDir === \".\" ? \"\" : `${pagesDir}/`;\n const stripped = pagesPrefix.length > 0 && withoutFragment.startsWith(pagesPrefix)\n ? withoutFragment.slice(pagesPrefix.length)\n : withoutFragment;\n relative = path.posix.normalize(stripped);\n }\n if (\n relative === \"..\" ||\n relative.startsWith(\"../\") ||\n path.posix.isAbsolute(relative) ||\n relative === \".\" ||\n !relative.toLowerCase().endsWith(\".md\")\n ) {\n return null;\n }\n return relative;\n}\n\nfunction catalogBlurb(line: string, matchEnd: number): string | undefined {\n const blurb = line\n .slice(matchEnd)\n .trim()\n .replace(/^[-:|]\\s*/, \"\")\n .trim();\n return blurb.length === 0 ? undefined : blurb;\n}\n\nexport function parseExternalWikiCatalog(\n content: string,\n config: ExternalWikiRoot,\n limits: Pick<ExternalWikiCatalogLimits, \"maxEntries\"> = {}\n): ExternalWikiCatalogEntry[] {\n const maxEntries = limits.maxEntries ?? DEFAULT_MAX_CATALOG_ENTRIES;\n assertPositiveInteger(maxEntries, \"maxEntries\", MAX_CATALOG_ENTRIES);\n const entries: ExternalWikiCatalogEntry[] = [];\n const seenPaths = new Set<string>();\n\n for (const [lineIndex, line] of content.split(/\\r?\\n/).entries()) {\n const markdownMatch = /\\[([^\\]]+)]\\(([^)\\s]+)(?:\\s+\"[^\"]*\")?\\)/.exec(line);\n const wikiMatch = /\\[\\[([^\\]|]+)(?:\\|([^\\]]+))?]]/.exec(line);\n let target: string;\n let title: string;\n let matchEnd: number;\n let pathBase: CatalogPathBase;\n if (markdownMatch) {\n title = markdownMatch[1]?.trim() ?? \"\";\n target = markdownMatch[2]?.trim() ?? \"\";\n matchEnd = (markdownMatch.index ?? 0) + markdownMatch[0].length;\n pathBase = \"index\";\n } else if (wikiMatch) {\n const wikiTarget = wikiMatch[1]?.trim() ?? \"\";\n title = wikiMatch[2]?.trim() || humanizePagePath(wikiTarget);\n target = wikiTarget.toLowerCase().endsWith(\".md\") ? wikiTarget : `${wikiTarget}.md`;\n matchEnd = (wikiMatch.index ?? 0) + wikiMatch[0].length;\n pathBase = \"pages\";\n } else {\n continue;\n }\n\n const pagePath = normalizeCatalogPath(target, config, pathBase);\n if (!pagePath || title.length === 0 || seenPaths.has(pagePath)) continue;\n if (entries.length >= maxEntries) {\n throw new Error(`catalog contains more than ${maxEntries} entries`);\n }\n seenPaths.add(pagePath);\n const indexBlurb = catalogBlurb(line, matchEnd);\n entries.push({\n title,\n path: pagePath,\n ...(indexBlurb === undefined ? {} : { indexBlurb }),\n indexLine: lineIndex + 1,\n });\n }\n return entries;\n}\n\ninterface BoundedUtf8Read {\n content: string;\n bytes: number;\n}\n\nasync function canonicalOpenedFile(handle: FileHandle, filePath: string, displayPath: string): Promise<string> {\n if (process.platform === \"linux\") {\n const descriptorPath = await realpath(`/proc/self/fd/${handle.fd}`).catch(() => undefined);\n if (descriptorPath !== undefined) return descriptorPath;\n }\n\n let canonical: string;\n try {\n canonical = await realpath(filePath);\n } catch {\n throw new Error(`${displayPath} changed while being opened`);\n }\n const [openedStat, pathStat] = await Promise.all([handle.stat(), stat(canonical)]);\n if (openedStat.dev !== pathStat.dev || openedStat.ino !== pathStat.ino) {\n throw new Error(`${displayPath} changed while being opened`);\n }\n return canonical;\n}\n\nasync function readBoundedUtf8(\n filePath: string,\n allowedRoot: string,\n maxBytes: number,\n displayPath: string\n): Promise<BoundedUtf8Read> {\n assertPositiveInteger(maxBytes, \"maxBytes\", MAX_READ_BYTES);\n const handle = await open(filePath, constants.O_RDONLY | constants.O_NOFOLLOW);\n try {\n const openedStat = await handle.stat();\n if (!openedStat.isFile()) throw new Error(`${displayPath} is not a file`);\n const canonical = await canonicalOpenedFile(handle, filePath, displayPath);\n if (!isInside(allowedRoot, canonical)) {\n throw new Error(`${displayPath} escapes configured root`);\n }\n const buffer = Buffer.allocUnsafe(maxBytes + 1);\n const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);\n if (bytesRead > maxBytes) throw new Error(`${displayPath} exceeds ${maxBytes} bytes`);\n let content: string;\n try {\n content = new TextDecoder(\"utf-8\", { fatal: true }).decode(buffer.subarray(0, bytesRead));\n } catch {\n throw new Error(`${displayPath} is not valid UTF-8`);\n }\n return { content, bytes: bytesRead };\n } finally {\n await handle.close();\n }\n}\n\nfunction humanizePagePath(pagePath: string): string {\n const stem = path.posix.basename(pagePath, path.posix.extname(pagePath));\n const words = stem.replace(/[-_]+/g, \" \").trim();\n return words.length === 0 ? stem : `${words[0]?.toUpperCase() ?? \"\"}${words.slice(1)}`;\n}\n\nasync function listMarkdownPages(\n pagesDir: string,\n maxEntries: number,\n maxDepth: number\n): Promise<ExternalWikiCatalogEntry[]> {\n assertPositiveInteger(maxEntries, \"maxEntries\", MAX_CATALOG_ENTRIES);\n assertPositiveInteger(maxDepth, \"maxDepth\", MAX_DIRECTORY_DEPTH);\n const paths: string[] = [];\n const maxVisitedEntries = Math.min(MAX_VISITED_ENTRIES, Math.max(MIN_VISITED_ENTRIES, maxEntries * 100));\n let visitedEntries = 0;\n const walk = async (directory: string, relativeDirectory: string, depth: number): Promise<void> => {\n if (depth > maxDepth) throw new Error(`pages directory exceeds maxDepth ${maxDepth}`);\n const dir = await opendir(directory);\n for await (const entry of dir) {\n visitedEntries += 1;\n if (visitedEntries > maxVisitedEntries) {\n throw new Error(`pages directory contains more than ${maxVisitedEntries} filesystem entries`);\n }\n const relativePath = relativeDirectory ? path.posix.join(relativeDirectory, entry.name) : entry.name;\n if (entry.isDirectory()) {\n await walk(path.join(directory, entry.name), relativePath, depth + 1);\n } else if (entry.isFile() && entry.name.toLowerCase().endsWith(\".md\")) {\n if (paths.length >= maxEntries) {\n throw new Error(`pages directory contains more than ${maxEntries} markdown files`);\n }\n paths.push(relativePath);\n }\n }\n };\n await walk(pagesDir, \"\", 1);\n return paths\n .sort((left, right) => left.localeCompare(right))\n .map((pagePath) => ({\n title: humanizePagePath(pagePath),\n path: pagePath,\n }));\n}\n\nfunction assertWikiEnabled(config: ExternalWikiRoot): void {\n if (!config.enabled) throw new Error(`external wiki \"${config.id}\" is disabled`);\n}\n\nexport async function loadExternalWikiCatalog(\n config: ExternalWikiRoot,\n limits: ExternalWikiCatalogLimits = {}\n): Promise<ExternalWikiCatalog> {\n assertWikiEnabled(config);\n const maxIndexBytes = limits.maxIndexBytes ?? DEFAULT_MAX_INDEX_BYTES;\n const maxEntries = limits.maxEntries ?? DEFAULT_MAX_CATALOG_ENTRIES;\n const maxDepth = limits.maxDepth ?? DEFAULT_MAX_DIRECTORY_DEPTH;\n assertPositiveInteger(maxEntries, \"maxEntries\", MAX_CATALOG_ENTRIES);\n assertPositiveInteger(maxDepth, \"maxDepth\", MAX_DIRECTORY_DEPTH);\n const layout = await validateExternalWikiLayout(config);\n const entries = layout.indexPresent\n ? parseExternalWikiCatalog(\n (await readBoundedUtf8(layout.indexFile, layout.rootDir, maxIndexBytes, config.indexFile)).content,\n config,\n { maxEntries }\n )\n : await listMarkdownPages(layout.pagesDir, maxEntries, maxDepth);\n return { wikiId: config.id, indexPresent: layout.indexPresent, entries };\n}\n\nfunction normalizePagePath(relativePath: string): string {\n if (relativePath.includes(\"\\\\\")) {\n throw new Error(\"page path must use POSIX separators\");\n }\n const normalized = path.posix.normalize(relativePath);\n if (normalized === \".\" || normalized === \"..\" || normalized.startsWith(\"../\") || normalized.startsWith(\"/\")) {\n throw new Error(\"page path must stay within the pages directory\");\n }\n if (!normalized.toLowerCase().endsWith(\".md\")) {\n throw new Error(\"page path must end in .md\");\n }\n return normalized;\n}\n\nfunction pageTitle(content: string, pagePath: string): string {\n const heading = /^#\\s+(.+?)\\s*$/m.exec(content)?.[1]?.trim();\n return heading && heading.length > 0 ? heading : humanizePagePath(pagePath);\n}\n\nexport async function readExternalWikiPage(\n config: ExternalWikiRoot,\n relativePath: string,\n maxBytes = DEFAULT_MAX_PAGE_BYTES\n): Promise<ExternalWikiPage> {\n assertWikiEnabled(config);\n const pagePath = normalizePagePath(relativePath);\n const layout = await validateExternalWikiLayout(config);\n const candidate = resolveInside(layout.pagesDir, pagePath, \"page path\");\n let canonical: string;\n try {\n canonical = await realpath(candidate);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new Error(`external wiki page does not exist: ${pagePath}`);\n }\n throw error;\n }\n if (!isInside(layout.pagesDir, canonical)) {\n throw new Error(\"page path must stay within the pages directory\");\n }\n if (!(await stat(canonical)).isFile()) throw new Error(`external wiki page is not a file: ${pagePath}`);\n const page = await readBoundedUtf8(canonical, layout.pagesDir, maxBytes, pagePath);\n return {\n wikiId: config.id,\n path: pagePath,\n title: pageTitle(page.content, pagePath),\n content: page.content,\n bytes: page.bytes,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FUCYDRE5.js";
|
|
4
4
|
import {
|
|
5
5
|
composeMemoryEnvelope
|
|
6
6
|
} from "./chunk-CGASUJVP.js";
|
|
@@ -546,4 +546,4 @@ export {
|
|
|
546
546
|
setSemanticRulePromotionTestHooks,
|
|
547
547
|
promoteSemanticRuleFromMemory
|
|
548
548
|
};
|
|
549
|
-
//# sourceMappingURL=chunk-
|
|
549
|
+
//# sourceMappingURL=chunk-A4IJCD2Z.js.map
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
} from "./chunk-666A3MOW.js";
|
|
10
10
|
import {
|
|
11
11
|
rebuildMemoryLifecycleLedger
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5QJQHBLE.js";
|
|
13
13
|
import {
|
|
14
14
|
planNamespaceMaintenance,
|
|
15
15
|
runNamespaceMaintenanceBatchPlan
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-2FSTB6BJ.js";
|
|
17
17
|
import {
|
|
18
18
|
rebuildMemoryProjection
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-FIK3CQNA.js";
|
|
20
20
|
import {
|
|
21
21
|
activityDayWindow,
|
|
22
22
|
activityDigestPath,
|
|
@@ -1714,4 +1714,4 @@ export {
|
|
|
1714
1714
|
ActivitySyncScheduler,
|
|
1715
1715
|
MaintenanceScheduler
|
|
1716
1716
|
};
|
|
1717
|
-
//# sourceMappingURL=chunk-
|
|
1717
|
+
//# sourceMappingURL=chunk-AC5OWJLV.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FUCYDRE5.js";
|
|
4
4
|
import {
|
|
5
5
|
keyring_exports,
|
|
6
6
|
secureStoreDir
|
|
@@ -388,4 +388,4 @@ export {
|
|
|
388
388
|
resolveNamespaceStorageRoot,
|
|
389
389
|
NamespaceStorageRouter
|
|
390
390
|
};
|
|
391
|
-
//# sourceMappingURL=chunk-
|
|
391
|
+
//# sourceMappingURL=chunk-AMAUBUKY.js.map
|
|
@@ -49,7 +49,8 @@ async function respondOfflineSnapshotStream(response, snapshot, requestId) {
|
|
|
49
49
|
schemaVersion: snapshot.schemaVersion,
|
|
50
50
|
createdAt: snapshot.createdAt,
|
|
51
51
|
sourceId: snapshot.sourceId,
|
|
52
|
-
includeTranscripts: snapshot.includeTranscripts
|
|
52
|
+
includeTranscripts: snapshot.includeTranscripts,
|
|
53
|
+
deletions: snapshot.deletions
|
|
53
54
|
}, snapshot.files, requestId);
|
|
54
55
|
}
|
|
55
56
|
async function respondOfflineManifestStream(response, manifest, requestId) {
|
|
@@ -65,4 +66,4 @@ export {
|
|
|
65
66
|
respondOfflineSnapshotStream,
|
|
66
67
|
respondOfflineManifestStream
|
|
67
68
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-CK5KOVHW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/access-http-offline-stream.ts"],"sourcesContent":["import type { ServerResponse } from \"node:http\";\nimport type { OfflineSyncManifestStreamResponse } from \"./access-offline-manifest.js\";\nimport type { EngramAccessOfflineSyncSnapshotStreamResponse } from \"./access-service.js\";\n\nasync function respondOfflineNdjsonStream(\n response: ServerResponse,\n header: unknown,\n files: AsyncIterable<unknown>,\n requestId?: string,\n): Promise<void> {\n response.statusCode = 200;\n response.setHeader(\"content-type\", \"application/x-ndjson; charset=utf-8\");\n response.setHeader(\"cache-control\", \"no-store\");\n if (requestId) response.setHeader(\"x-request-id\", requestId);\n const waitForDrainOrClose = async (): Promise<boolean> => {\n const { promise, resolve, reject } = Promise.withResolvers<boolean>();\n const cleanup = () => {\n response.off(\"drain\", onDrain);\n response.off(\"close\", onClose);\n response.off(\"error\", onError);\n };\n const onDrain = () => {\n cleanup();\n resolve(true);\n };\n const onClose = () => {\n cleanup();\n resolve(false);\n };\n const onError = (error: Error) => {\n cleanup();\n reject(error);\n };\n response.once(\"drain\", onDrain);\n response.once(\"close\", onClose);\n response.once(\"error\", onError);\n return promise;\n };\n const writeLine = async (payload: unknown): Promise<boolean> => {\n if (response.destroyed || response.writableEnded) return false;\n if (response.write(`${JSON.stringify(payload)}\\n`)) return true;\n if (response.destroyed || response.writableEnded) return false;\n return waitForDrainOrClose();\n };\n if (!await writeLine(header)) return;\n for await (const file of files) {\n if (!await writeLine({ type: \"file\", file })) return;\n }\n if (!response.destroyed && !response.writableEnded) response.end();\n}\n\nexport async function respondOfflineSnapshotStream(\n response: ServerResponse,\n snapshot: EngramAccessOfflineSyncSnapshotStreamResponse,\n requestId?: string,\n): Promise<void> {\n await respondOfflineNdjsonStream(response, {\n type: \"snapshot\",\n namespace: snapshot.namespace,\n format: snapshot.format,\n schemaVersion: snapshot.schemaVersion,\n createdAt: snapshot.createdAt,\n sourceId: snapshot.sourceId,\n includeTranscripts: snapshot.includeTranscripts,\n }, snapshot.files, requestId);\n}\n\nexport async function respondOfflineManifestStream(\n response: ServerResponse,\n manifest: OfflineSyncManifestStreamResponse,\n requestId?: string,\n): Promise<void> {\n await respondOfflineNdjsonStream(response, {\n type: \"manifest\",\n namespace: manifest.namespace,\n format: manifest.format,\n schemaVersion: manifest.schemaVersion,\n }, manifest.files, requestId);\n}\n"],"mappings":";AAIA,eAAe,2BACb,UACA,QACA,OACA,WACe;AACf,WAAS,aAAa;AACtB,WAAS,UAAU,gBAAgB,qCAAqC;AACxE,WAAS,UAAU,iBAAiB,UAAU;AAC9C,MAAI,UAAW,UAAS,UAAU,gBAAgB,SAAS;AAC3D,QAAM,sBAAsB,YAA8B;AACxD,UAAM,EAAE,SAAS,SAAS,OAAO,IAAI,QAAQ,cAAuB;AACpE,UAAM,UAAU,MAAM;AACpB,eAAS,IAAI,SAAS,OAAO;AAC7B,eAAS,IAAI,SAAS,OAAO;AAC7B,eAAS,IAAI,SAAS,OAAO;AAAA,IAC/B;AACA,UAAM,UAAU,MAAM;AACpB,cAAQ;AACR,cAAQ,IAAI;AAAA,IACd;AACA,UAAM,UAAU,MAAM;AACpB,cAAQ;AACR,cAAQ,KAAK;AAAA,IACf;AACA,UAAM,UAAU,CAAC,UAAiB;AAChC,cAAQ;AACR,aAAO,KAAK;AAAA,IACd;AACA,aAAS,KAAK,SAAS,OAAO;AAC9B,aAAS,KAAK,SAAS,OAAO;AAC9B,aAAS,KAAK,SAAS,OAAO;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,YAAY,OAAO,YAAuC;AAC9D,QAAI,SAAS,aAAa,SAAS,cAAe,QAAO;AACzD,QAAI,SAAS,MAAM,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,CAAI,EAAG,QAAO;AAC3D,QAAI,SAAS,aAAa,SAAS,cAAe,QAAO;AACzD,WAAO,oBAAoB;AAAA,EAC7B;AACA,MAAI,CAAC,MAAM,UAAU,MAAM,EAAG;AAC9B,mBAAiB,QAAQ,OAAO;AAC9B,QAAI,CAAC,MAAM,UAAU,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAG;AAAA,EAChD;AACA,MAAI,CAAC,SAAS,aAAa,CAAC,SAAS,cAAe,UAAS,IAAI;AACnE;AAEA,eAAsB,6BACpB,UACA,UACA,WACe;AACf,QAAM,2BAA2B,UAAU;AAAA,IACzC,MAAM;AAAA,IACN,WAAW,SAAS;AAAA,IACpB,QAAQ,SAAS;AAAA,IACjB,eAAe,SAAS;AAAA,IACxB,WAAW,SAAS;AAAA,IACpB,UAAU,SAAS;AAAA,IACnB,oBAAoB,SAAS;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/access-http-offline-stream.ts"],"sourcesContent":["import type { ServerResponse } from \"node:http\";\nimport type { OfflineSyncManifestStreamResponse } from \"./access-offline-manifest.js\";\nimport type { EngramAccessOfflineSyncSnapshotStreamResponse } from \"./access-service.js\";\n\nasync function respondOfflineNdjsonStream(\n response: ServerResponse,\n header: unknown,\n files: AsyncIterable<unknown>,\n requestId?: string,\n): Promise<void> {\n response.statusCode = 200;\n response.setHeader(\"content-type\", \"application/x-ndjson; charset=utf-8\");\n response.setHeader(\"cache-control\", \"no-store\");\n if (requestId) response.setHeader(\"x-request-id\", requestId);\n const waitForDrainOrClose = async (): Promise<boolean> => {\n const { promise, resolve, reject } = Promise.withResolvers<boolean>();\n const cleanup = () => {\n response.off(\"drain\", onDrain);\n response.off(\"close\", onClose);\n response.off(\"error\", onError);\n };\n const onDrain = () => {\n cleanup();\n resolve(true);\n };\n const onClose = () => {\n cleanup();\n resolve(false);\n };\n const onError = (error: Error) => {\n cleanup();\n reject(error);\n };\n response.once(\"drain\", onDrain);\n response.once(\"close\", onClose);\n response.once(\"error\", onError);\n return promise;\n };\n const writeLine = async (payload: unknown): Promise<boolean> => {\n if (response.destroyed || response.writableEnded) return false;\n if (response.write(`${JSON.stringify(payload)}\\n`)) return true;\n if (response.destroyed || response.writableEnded) return false;\n return waitForDrainOrClose();\n };\n if (!await writeLine(header)) return;\n for await (const file of files) {\n if (!await writeLine({ type: \"file\", file })) return;\n }\n if (!response.destroyed && !response.writableEnded) response.end();\n}\n\nexport async function respondOfflineSnapshotStream(\n response: ServerResponse,\n snapshot: EngramAccessOfflineSyncSnapshotStreamResponse,\n requestId?: string,\n): Promise<void> {\n await respondOfflineNdjsonStream(response, {\n type: \"snapshot\",\n namespace: snapshot.namespace,\n format: snapshot.format,\n schemaVersion: snapshot.schemaVersion,\n createdAt: snapshot.createdAt,\n sourceId: snapshot.sourceId,\n includeTranscripts: snapshot.includeTranscripts,\n deletions: snapshot.deletions,\n }, snapshot.files, requestId);\n}\n\nexport async function respondOfflineManifestStream(\n response: ServerResponse,\n manifest: OfflineSyncManifestStreamResponse,\n requestId?: string,\n): Promise<void> {\n await respondOfflineNdjsonStream(response, {\n type: \"manifest\",\n namespace: manifest.namespace,\n format: manifest.format,\n schemaVersion: manifest.schemaVersion,\n }, manifest.files, requestId);\n}\n"],"mappings":";AAIA,eAAe,2BACb,UACA,QACA,OACA,WACe;AACf,WAAS,aAAa;AACtB,WAAS,UAAU,gBAAgB,qCAAqC;AACxE,WAAS,UAAU,iBAAiB,UAAU;AAC9C,MAAI,UAAW,UAAS,UAAU,gBAAgB,SAAS;AAC3D,QAAM,sBAAsB,YAA8B;AACxD,UAAM,EAAE,SAAS,SAAS,OAAO,IAAI,QAAQ,cAAuB;AACpE,UAAM,UAAU,MAAM;AACpB,eAAS,IAAI,SAAS,OAAO;AAC7B,eAAS,IAAI,SAAS,OAAO;AAC7B,eAAS,IAAI,SAAS,OAAO;AAAA,IAC/B;AACA,UAAM,UAAU,MAAM;AACpB,cAAQ;AACR,cAAQ,IAAI;AAAA,IACd;AACA,UAAM,UAAU,MAAM;AACpB,cAAQ;AACR,cAAQ,KAAK;AAAA,IACf;AACA,UAAM,UAAU,CAAC,UAAiB;AAChC,cAAQ;AACR,aAAO,KAAK;AAAA,IACd;AACA,aAAS,KAAK,SAAS,OAAO;AAC9B,aAAS,KAAK,SAAS,OAAO;AAC9B,aAAS,KAAK,SAAS,OAAO;AAC9B,WAAO;AAAA,EACT;AACA,QAAM,YAAY,OAAO,YAAuC;AAC9D,QAAI,SAAS,aAAa,SAAS,cAAe,QAAO;AACzD,QAAI,SAAS,MAAM,GAAG,KAAK,UAAU,OAAO,CAAC;AAAA,CAAI,EAAG,QAAO;AAC3D,QAAI,SAAS,aAAa,SAAS,cAAe,QAAO;AACzD,WAAO,oBAAoB;AAAA,EAC7B;AACA,MAAI,CAAC,MAAM,UAAU,MAAM,EAAG;AAC9B,mBAAiB,QAAQ,OAAO;AAC9B,QAAI,CAAC,MAAM,UAAU,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAG;AAAA,EAChD;AACA,MAAI,CAAC,SAAS,aAAa,CAAC,SAAS,cAAe,UAAS,IAAI;AACnE;AAEA,eAAsB,6BACpB,UACA,UACA,WACe;AACf,QAAM,2BAA2B,UAAU;AAAA,IACzC,MAAM;AAAA,IACN,WAAW,SAAS;AAAA,IACpB,QAAQ,SAAS;AAAA,IACjB,eAAe,SAAS;AAAA,IACxB,WAAW,SAAS;AAAA,IACpB,UAAU,SAAS;AAAA,IACnB,oBAAoB,SAAS;AAAA,IAC7B,WAAW,SAAS;AAAA,EACtB,GAAG,SAAS,OAAO,SAAS;AAC9B;AAEA,eAAsB,6BACpB,UACA,UACA,WACe;AACf,QAAM,2BAA2B,UAAU;AAAA,IACzC,MAAM;AAAA,IACN,WAAW,SAAS;AAAA,IACpB,QAAQ,SAAS;AAAA,IACjB,eAAe,SAAS;AAAA,EAC1B,GAAG,SAAS,OAAO,SAAS;AAC9B;","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-V7IZKJI3.js";
|
|
4
4
|
import {
|
|
5
5
|
AdapterRegistry
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RKNJBZ55.js";
|
|
7
7
|
import {
|
|
8
8
|
WriteRateLimiter
|
|
9
9
|
} from "./chunk-MKQBXQKU.js";
|
|
@@ -21,10 +21,10 @@ import {
|
|
|
21
21
|
processChatMessage,
|
|
22
22
|
sessionBelongsToPrincipal,
|
|
23
23
|
subscribeChatTranscript
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-4FBVAGV3.js";
|
|
25
25
|
import {
|
|
26
26
|
RelayMissionStoreError
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-V2TNYF6Q.js";
|
|
28
28
|
import {
|
|
29
29
|
validateRequest
|
|
30
30
|
} from "./chunk-NIS256NW.js";
|
|
@@ -46,16 +46,16 @@ import {
|
|
|
46
46
|
import {
|
|
47
47
|
respondOfflineManifestStream,
|
|
48
48
|
respondOfflineSnapshotStream
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-CK5KOVHW.js";
|
|
50
50
|
import {
|
|
51
51
|
authorizationProbeNamespaces,
|
|
52
52
|
probeOperationAuthorization
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-3COYXTGM.js";
|
|
54
54
|
import {
|
|
55
55
|
CorrectionContractError,
|
|
56
56
|
getOperation,
|
|
57
57
|
resolveQueryNamespaceWritablePreflight
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-QUENPGWZ.js";
|
|
59
59
|
import {
|
|
60
60
|
isTrustZoneName
|
|
61
61
|
} from "./chunk-JGSKJHF7.js";
|
|
@@ -2797,60 +2797,6 @@ var EngramAccessHttpServer = class {
|
|
|
2797
2797
|
}
|
|
2798
2798
|
res.end(body);
|
|
2799
2799
|
}
|
|
2800
|
-
async respondOfflineSnapshotStream(res, snapshot) {
|
|
2801
|
-
res.statusCode = 200;
|
|
2802
|
-
res.setHeader("content-type", "application/x-ndjson; charset=utf-8");
|
|
2803
|
-
res.setHeader("cache-control", "no-store");
|
|
2804
|
-
const cid = correlationIdStore.getStore();
|
|
2805
|
-
if (cid) {
|
|
2806
|
-
res.setHeader("x-request-id", cid);
|
|
2807
|
-
}
|
|
2808
|
-
const waitForDrainOrClose = async () => new Promise((resolve, reject) => {
|
|
2809
|
-
const cleanup = () => {
|
|
2810
|
-
res.off("drain", onDrain);
|
|
2811
|
-
res.off("close", onClose);
|
|
2812
|
-
res.off("error", onError);
|
|
2813
|
-
};
|
|
2814
|
-
const onDrain = () => {
|
|
2815
|
-
cleanup();
|
|
2816
|
-
resolve(true);
|
|
2817
|
-
};
|
|
2818
|
-
const onClose = () => {
|
|
2819
|
-
cleanup();
|
|
2820
|
-
resolve(false);
|
|
2821
|
-
};
|
|
2822
|
-
const onError = (error) => {
|
|
2823
|
-
cleanup();
|
|
2824
|
-
reject(error);
|
|
2825
|
-
};
|
|
2826
|
-
res.once("drain", onDrain);
|
|
2827
|
-
res.once("close", onClose);
|
|
2828
|
-
res.once("error", onError);
|
|
2829
|
-
});
|
|
2830
|
-
const writeLine = async (payload) => {
|
|
2831
|
-
if (res.destroyed || res.writableEnded) return false;
|
|
2832
|
-
if (res.write(`${JSON.stringify(payload)}
|
|
2833
|
-
`)) return true;
|
|
2834
|
-
if (res.destroyed || res.writableEnded) return false;
|
|
2835
|
-
return waitForDrainOrClose();
|
|
2836
|
-
};
|
|
2837
|
-
if (!await writeLine({
|
|
2838
|
-
type: "snapshot",
|
|
2839
|
-
namespace: snapshot.namespace,
|
|
2840
|
-
format: snapshot.format,
|
|
2841
|
-
schemaVersion: snapshot.schemaVersion,
|
|
2842
|
-
createdAt: snapshot.createdAt,
|
|
2843
|
-
sourceId: snapshot.sourceId,
|
|
2844
|
-
includeTranscripts: snapshot.includeTranscripts,
|
|
2845
|
-
deletions: snapshot.deletions
|
|
2846
|
-
})) return;
|
|
2847
|
-
for await (const file of snapshot.files) {
|
|
2848
|
-
if (!await writeLine({ type: "file", file })) return;
|
|
2849
|
-
}
|
|
2850
|
-
if (!res.destroyed && !res.writableEnded) {
|
|
2851
|
-
res.end();
|
|
2852
|
-
}
|
|
2853
|
-
}
|
|
2854
2800
|
respondBinary(res, status, body, headers = {}) {
|
|
2855
2801
|
res.statusCode = status;
|
|
2856
2802
|
res.setHeader("content-type", "application/octet-stream");
|
|
@@ -3288,4 +3234,4 @@ export {
|
|
|
3288
3234
|
MeetingsInputError,
|
|
3289
3235
|
EngramAccessHttpServer
|
|
3290
3236
|
};
|
|
3291
|
-
//# sourceMappingURL=chunk-
|
|
3237
|
+
//# sourceMappingURL=chunk-CX4ZUMC6.js.map
|