@remnic/core 9.25.6 → 9.26.0

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 (220) hide show
  1. package/dist/access-admin-ops-surface.d.ts +2 -2
  2. package/dist/access-admin-ops-surface.js +41 -41
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.d.ts +2 -2
  5. package/dist/access-authorization-probe.js +42 -42
  6. package/dist/access-boundary.d.ts +2 -2
  7. package/dist/access-boundary.js +41 -41
  8. package/dist/access-cli.js +98 -97
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-http-lcm-compaction.d.ts +130 -0
  11. package/dist/access-http-lcm-compaction.js +10 -0
  12. package/dist/access-http.d.ts +2 -2
  13. package/dist/access-http.js +53 -52
  14. package/dist/access-identity-continuity-surface.d.ts +1 -1
  15. package/dist/access-identity-continuity-surface.js +41 -41
  16. package/dist/access-lcm-surface.d.ts +2 -2
  17. package/dist/access-lcm-surface.js +41 -41
  18. package/dist/access-mcp.d.ts +2 -2
  19. package/dist/access-mcp.js +47 -47
  20. package/dist/access-namespace-preflight.js +41 -41
  21. package/dist/access-observe-write-surface.d.ts +2 -2
  22. package/dist/access-observe-write-surface.js +41 -41
  23. package/dist/access-operations-batch.js +43 -43
  24. package/dist/access-operations.d.ts +2 -2
  25. package/dist/access-operations.js +45 -45
  26. package/dist/access-recall-concurrency.d.ts +2 -2
  27. package/dist/access-recall-concurrency.js +41 -41
  28. package/dist/access-recall-response.d.ts +2 -2
  29. package/dist/access-recall-response.js +41 -41
  30. package/dist/access-recall-surface.d.ts +2 -2
  31. package/dist/access-recall-surface.js +41 -41
  32. package/dist/access-schema.d.ts +16 -1
  33. package/dist/access-schema.js +8 -8
  34. package/dist/{access-service-BJQ22URi.d.ts → access-service-DL8FJnTj.d.ts} +2 -2
  35. package/dist/access-service.d.ts +2 -2
  36. package/dist/access-service.js +41 -41
  37. package/dist/access-surface-catalog.d.ts +2 -2
  38. package/dist/adapters/index.js +7 -7
  39. package/dist/adapters/registry.js +3 -3
  40. package/dist/{auto-sync-5OE5QOZB.js → auto-sync-UPTUVE4X.js} +3 -3
  41. package/dist/bootstrap.d.ts +1 -1
  42. package/dist/briefing.js +5 -5
  43. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  44. package/dist/capsule-crypto-YO5QJ6L3.js.map +1 -0
  45. package/dist/causal-behavior.js +2 -2
  46. package/dist/causal-chain.js +2 -2
  47. package/dist/causal-consolidation.js +11 -11
  48. package/dist/causal-retrieval.js +2 -2
  49. package/dist/causal-trajectory.js +1 -1
  50. package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
  51. package/dist/{chunk-BL4JHZSO.js → chunk-2XP3PWL3.js} +40 -40
  52. package/dist/{chunk-AQ2ZQYDI.js → chunk-4KKV7W62.js} +6 -6
  53. package/dist/chunk-4Z4XNEWZ.js +86 -0
  54. package/dist/chunk-4Z4XNEWZ.js.map +1 -0
  55. package/dist/{chunk-32XTXKIA.js → chunk-67DSDRUB.js} +22 -14
  56. package/dist/chunk-67DSDRUB.js.map +1 -0
  57. package/dist/{chunk-2PHX3I5C.js → chunk-6NNNURLK.js} +8 -8
  58. package/dist/{chunk-BLAKS3CP.js → chunk-77CNV7DY.js} +4 -4
  59. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  60. package/dist/{chunk-227UFSEQ.js → chunk-7RZJWZ46.js} +5 -5
  61. package/dist/{chunk-WIGBTWXA.js → chunk-7XXCIO6X.js} +2 -2
  62. package/dist/{chunk-7CPOZH6Y.js → chunk-AJ7QCSIS.js} +2 -2
  63. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  64. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  65. package/dist/{chunk-UMFLAACL.js → chunk-E6EAB4J6.js} +9 -9
  66. package/dist/{chunk-WSEA52RI.js → chunk-EXM2Q555.js} +2 -2
  67. package/dist/{chunk-G6MGAE36.js → chunk-F6LSNPPB.js} +5 -5
  68. package/dist/{chunk-7KXQ44PA.js → chunk-FE5FKTCI.js} +5 -5
  69. package/dist/{chunk-5J7HJ7RT.js → chunk-H2PBM562.js} +2 -2
  70. package/dist/{chunk-OIE242WM.js → chunk-HBVOJNV4.js} +3 -3
  71. package/dist/{chunk-PS5OG75R.js → chunk-IHMXPG4P.js} +2 -2
  72. package/dist/{chunk-3UOSVTFR.js → chunk-JCVQV6QX.js} +11 -11
  73. package/dist/{chunk-P25IPRXP.js → chunk-KGTD2KZJ.js} +28 -8
  74. package/dist/chunk-KGTD2KZJ.js.map +1 -0
  75. package/dist/{chunk-NY6W6CJW.js → chunk-KPWLZBXZ.js} +2 -2
  76. package/dist/{chunk-W33DEUKR.js → chunk-LIIQPDFN.js} +2 -2
  77. package/dist/{chunk-D7MAWMMK.js → chunk-M2KGXXTL.js} +2 -2
  78. package/dist/{chunk-UOURUMBN.js → chunk-MIFF37NN.js} +2 -2
  79. package/dist/{chunk-37VPMR4E.js → chunk-NKDVXEFU.js} +6 -6
  80. package/dist/{chunk-ZPUFQGUF.js → chunk-PQPSZICJ.js} +5 -5
  81. package/dist/{chunk-ES36HTSC.js → chunk-PTN6UAUA.js} +4 -4
  82. package/dist/{chunk-FR75B4UU.js → chunk-PX7VDW7R.js} +408 -721
  83. package/dist/chunk-PX7VDW7R.js.map +1 -0
  84. package/dist/{chunk-S2BBISHU.js → chunk-RYHWZ52A.js} +4 -4
  85. package/dist/{chunk-ZN4UZWMT.js → chunk-SK3EYPKC.js} +2 -2
  86. package/dist/{chunk-TPYZ727G.js → chunk-SN3ZESWQ.js} +6 -6
  87. package/dist/{chunk-BUK2FXOL.js → chunk-TKBDJTXG.js} +4 -4
  88. package/dist/{chunk-4B77XSG5.js → chunk-UV72DEZD.js} +5 -5
  89. package/dist/{chunk-K4DP5KZA.js → chunk-UZK7VVPD.js} +14 -14
  90. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  91. package/dist/{chunk-SSYBI43M.js → chunk-VGEH3STZ.js} +6 -6
  92. package/dist/{chunk-NRV4Y3PM.js → chunk-W4FBGYGK.js} +1 -1
  93. package/dist/{chunk-IR4LGIH6.js → chunk-WMDRLTNA.js} +2 -2
  94. package/dist/{chunk-MU7ZHSZE.js → chunk-WZFAPHIK.js} +2 -2
  95. package/dist/{chunk-JA4HEXV7.js → chunk-XAAIUXJO.js} +2 -2
  96. package/dist/{chunk-VPSAVXHM.js → chunk-XNUBF6RF.js} +7 -7
  97. package/dist/{chunk-3CHQZVAL.js → chunk-Y6E37WRG.js} +5 -5
  98. package/dist/{chunk-E5A6C4A5.js → chunk-YN4AUGNF.js} +48 -48
  99. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  100. package/dist/{chunk-7IGWPXVC.js → chunk-ZHP4SUPB.js} +2 -2
  101. package/dist/{cli-1W7cNjJJ.d.ts → cli-BoouX6LX.d.ts} +2 -2
  102. package/dist/cli.d.ts +3 -3
  103. package/dist/cli.js +75 -74
  104. package/dist/compounding/engine.js +5 -5
  105. package/dist/connectors/codex-materialize-runner.js +5 -5
  106. package/dist/connectors/index.js +5 -5
  107. package/dist/conversation-index/backend.js +2 -2
  108. package/dist/corpus-watermark.js +16 -16
  109. package/dist/dashboard-runtime.js +2 -2
  110. package/dist/entity-retrieval.js +5 -5
  111. package/dist/explicit-capture.d.ts +1 -1
  112. package/dist/extraction.js +3 -3
  113. package/dist/{first-start-migration-BKNGOFED.js → first-start-migration-LEXL3XYL.js} +4 -4
  114. package/dist/index.d.ts +4 -4
  115. package/dist/index.js +177 -176
  116. package/dist/lcm/engine.js +3 -3
  117. package/dist/lcm/index.js +9 -9
  118. package/dist/maintenance/memory-governance.js +6 -6
  119. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  120. package/dist/maintenance/rebuild-memory-projection.js +7 -7
  121. package/dist/mcp-memory-inspector-app.d.ts +2 -2
  122. package/dist/namespaces/migrate.js +15 -15
  123. package/dist/namespaces/search.js +9 -9
  124. package/dist/namespaces/storage.js +5 -5
  125. package/dist/operator-doctor-corpus.js +17 -17
  126. package/dist/operator-toolkit.js +28 -28
  127. package/dist/orchestration/maintenance.js +11 -11
  128. package/dist/{orchestrator-BtA1wC5K.d.ts → orchestrator-CFJ_TG6D.d.ts} +15 -10
  129. package/dist/orchestrator.d.ts +1 -1
  130. package/dist/orchestrator.js +98 -97
  131. package/dist/resume-bundles.js +1 -1
  132. package/dist/search/factory.js +8 -8
  133. package/dist/search/index.js +13 -13
  134. package/dist/search/lancedb-backend.js +2 -2
  135. package/dist/search/meilisearch-backend.js +2 -2
  136. package/dist/search/orama-backend.js +2 -2
  137. package/dist/semantic-consolidation.js +7 -7
  138. package/dist/semantic-rule-promotion.js +5 -5
  139. package/dist/semantic-rule-verifier.js +6 -6
  140. package/dist/session-namespace-bindings.d.ts +27 -0
  141. package/dist/session-namespace-bindings.js +243 -0
  142. package/dist/session-namespace-bindings.js.map +1 -0
  143. package/dist/storage.js +4 -4
  144. package/dist/testing/lifecycle-matrix.d.ts +100 -0
  145. package/dist/testing/lifecycle-matrix.js +149 -0
  146. package/dist/testing/lifecycle-matrix.js.map +1 -0
  147. package/dist/transfer/backup.js +4 -4
  148. package/dist/transfer/capsule-export.js +4 -4
  149. package/dist/transfer/capsule-import.js +3 -3
  150. package/dist/verified-recall.js +6 -6
  151. package/package.json +22 -2
  152. package/src/access-http-lcm-compaction.ts +116 -0
  153. package/src/access-http.test.ts +218 -0
  154. package/src/access-http.ts +8 -8
  155. package/src/access-schema-pi.test.ts +9 -0
  156. package/src/access-schema.ts +29 -4
  157. package/src/access-surface-catalog.test.ts +1 -0
  158. package/src/meetings/recall-exclusion.test.ts +4 -2
  159. package/src/orchestration/generic-recall-paths.ts +119 -0
  160. package/src/orchestration/namespace-read-fanout.ts +0 -12
  161. package/src/orchestration/orchestrator-helpers.ts +0 -35
  162. package/src/orchestration/recall-internal.ts +6 -6
  163. package/src/orchestration/recall-search-pipeline.test.ts +194 -28
  164. package/src/orchestration/recall-search-pipeline.ts +39 -89
  165. package/src/orchestrator.ts +5 -17
  166. package/src/recall-cold-deadline.test.ts +11 -13
  167. package/src/session-namespace-bindings.test.ts +358 -0
  168. package/src/session-namespace-bindings.ts +301 -0
  169. package/src/testing/lifecycle-matrix.ts +17 -7
  170. package/src/testing/subjects/generic-recall-paths.test.ts +157 -0
  171. package/dist/chunk-32XTXKIA.js.map +0 -1
  172. package/dist/chunk-FR75B4UU.js.map +0 -1
  173. package/dist/chunk-P25IPRXP.js.map +0 -1
  174. package/src/recall/archive-scoring.ts +0 -544
  175. /package/dist/{capsule-crypto-7FJQINUR.js.map → access-http-lcm-compaction.js.map} +0 -0
  176. /package/dist/{auto-sync-5OE5QOZB.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
  177. /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
  178. /package/dist/{chunk-BL4JHZSO.js.map → chunk-2XP3PWL3.js.map} +0 -0
  179. /package/dist/{chunk-AQ2ZQYDI.js.map → chunk-4KKV7W62.js.map} +0 -0
  180. /package/dist/{chunk-2PHX3I5C.js.map → chunk-6NNNURLK.js.map} +0 -0
  181. /package/dist/{chunk-BLAKS3CP.js.map → chunk-77CNV7DY.js.map} +0 -0
  182. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  183. /package/dist/{chunk-227UFSEQ.js.map → chunk-7RZJWZ46.js.map} +0 -0
  184. /package/dist/{chunk-WIGBTWXA.js.map → chunk-7XXCIO6X.js.map} +0 -0
  185. /package/dist/{chunk-7CPOZH6Y.js.map → chunk-AJ7QCSIS.js.map} +0 -0
  186. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  187. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  188. /package/dist/{chunk-UMFLAACL.js.map → chunk-E6EAB4J6.js.map} +0 -0
  189. /package/dist/{chunk-WSEA52RI.js.map → chunk-EXM2Q555.js.map} +0 -0
  190. /package/dist/{chunk-G6MGAE36.js.map → chunk-F6LSNPPB.js.map} +0 -0
  191. /package/dist/{chunk-7KXQ44PA.js.map → chunk-FE5FKTCI.js.map} +0 -0
  192. /package/dist/{chunk-5J7HJ7RT.js.map → chunk-H2PBM562.js.map} +0 -0
  193. /package/dist/{chunk-OIE242WM.js.map → chunk-HBVOJNV4.js.map} +0 -0
  194. /package/dist/{chunk-PS5OG75R.js.map → chunk-IHMXPG4P.js.map} +0 -0
  195. /package/dist/{chunk-3UOSVTFR.js.map → chunk-JCVQV6QX.js.map} +0 -0
  196. /package/dist/{chunk-NY6W6CJW.js.map → chunk-KPWLZBXZ.js.map} +0 -0
  197. /package/dist/{chunk-W33DEUKR.js.map → chunk-LIIQPDFN.js.map} +0 -0
  198. /package/dist/{chunk-D7MAWMMK.js.map → chunk-M2KGXXTL.js.map} +0 -0
  199. /package/dist/{chunk-UOURUMBN.js.map → chunk-MIFF37NN.js.map} +0 -0
  200. /package/dist/{chunk-37VPMR4E.js.map → chunk-NKDVXEFU.js.map} +0 -0
  201. /package/dist/{chunk-ZPUFQGUF.js.map → chunk-PQPSZICJ.js.map} +0 -0
  202. /package/dist/{chunk-ES36HTSC.js.map → chunk-PTN6UAUA.js.map} +0 -0
  203. /package/dist/{chunk-S2BBISHU.js.map → chunk-RYHWZ52A.js.map} +0 -0
  204. /package/dist/{chunk-ZN4UZWMT.js.map → chunk-SK3EYPKC.js.map} +0 -0
  205. /package/dist/{chunk-TPYZ727G.js.map → chunk-SN3ZESWQ.js.map} +0 -0
  206. /package/dist/{chunk-BUK2FXOL.js.map → chunk-TKBDJTXG.js.map} +0 -0
  207. /package/dist/{chunk-4B77XSG5.js.map → chunk-UV72DEZD.js.map} +0 -0
  208. /package/dist/{chunk-K4DP5KZA.js.map → chunk-UZK7VVPD.js.map} +0 -0
  209. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  210. /package/dist/{chunk-SSYBI43M.js.map → chunk-VGEH3STZ.js.map} +0 -0
  211. /package/dist/{chunk-NRV4Y3PM.js.map → chunk-W4FBGYGK.js.map} +0 -0
  212. /package/dist/{chunk-IR4LGIH6.js.map → chunk-WMDRLTNA.js.map} +0 -0
  213. /package/dist/{chunk-MU7ZHSZE.js.map → chunk-WZFAPHIK.js.map} +0 -0
  214. /package/dist/{chunk-JA4HEXV7.js.map → chunk-XAAIUXJO.js.map} +0 -0
  215. /package/dist/{chunk-VPSAVXHM.js.map → chunk-XNUBF6RF.js.map} +0 -0
  216. /package/dist/{chunk-3CHQZVAL.js.map → chunk-Y6E37WRG.js.map} +0 -0
  217. /package/dist/{chunk-E5A6C4A5.js.map → chunk-YN4AUGNF.js.map} +0 -0
  218. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  219. /package/dist/{chunk-7IGWPXVC.js.map → chunk-ZHP4SUPB.js.map} +0 -0
  220. /package/dist/{first-start-migration-BKNGOFED.js.map → first-start-migration-LEXL3XYL.js.map} +0 -0
@@ -0,0 +1,86 @@
1
+ // src/access-http-lcm-compaction.ts
2
+ function respondLcmCompactionCapabilitiesHttp(response) {
3
+ response.statusCode = 200;
4
+ response.setHeader("content-type", "application/json; charset=utf-8");
5
+ response.end(JSON.stringify({ lcmCompactionFlushBatch: true }, null, 2));
6
+ }
7
+ async function handleLcmCompactionFlushHttp({
8
+ body,
9
+ service,
10
+ response,
11
+ ensureWriteRateLimitAvailable,
12
+ recordWriteRateLimitHit,
13
+ resolveNamespace,
14
+ defaultNamespace,
15
+ resolveRequestPrincipal,
16
+ respondJson
17
+ }) {
18
+ ensureWriteRateLimitAvailable();
19
+ const requestedNamespaces = body.namespaces;
20
+ if (requestedNamespaces === void 0) {
21
+ const result = await service.lcmCompactionFlush({
22
+ sessionKey: body.sessionKey,
23
+ namespace: resolveNamespace(body.namespace),
24
+ authenticatedPrincipal: resolveRequestPrincipal()
25
+ });
26
+ recordWriteRateLimitHit();
27
+ respondJson(response, 200, result);
28
+ return;
29
+ }
30
+ const resolutionOutcomes = await Promise.allSettled(
31
+ requestedNamespaces.map(async (requestedNamespace) => {
32
+ const namespace = resolveNamespace(requestedNamespace);
33
+ return {
34
+ requestedNamespace,
35
+ namespace,
36
+ effectiveNamespace: namespace ?? defaultNamespace ?? ""
37
+ };
38
+ })
39
+ );
40
+ const uniqueResolvedNamespaces = [];
41
+ const queuedEffectiveNamespaces = /* @__PURE__ */ new Set();
42
+ for (const outcome of resolutionOutcomes) {
43
+ if (outcome.status === "fulfilled" && !queuedEffectiveNamespaces.has(outcome.value.effectiveNamespace)) {
44
+ queuedEffectiveNamespaces.add(outcome.value.effectiveNamespace);
45
+ uniqueResolvedNamespaces.push(outcome.value);
46
+ }
47
+ }
48
+ const serviceOutcomes = await Promise.allSettled(
49
+ uniqueResolvedNamespaces.map(
50
+ ({ namespace }) => service.lcmCompactionFlush({
51
+ sessionKey: body.sessionKey,
52
+ namespace,
53
+ authenticatedPrincipal: resolveRequestPrincipal()
54
+ })
55
+ )
56
+ );
57
+ const serviceOutcomesByEffectiveNamespace = /* @__PURE__ */ new Map();
58
+ for (const [index, resolved] of uniqueResolvedNamespaces.entries()) {
59
+ const serviceOutcome = serviceOutcomes[index];
60
+ if (serviceOutcome !== void 0) {
61
+ serviceOutcomesByEffectiveNamespace.set(resolved.effectiveNamespace, serviceOutcome);
62
+ }
63
+ }
64
+ const results = resolutionOutcomes.map((outcome, index) => {
65
+ const requestedNamespace = requestedNamespaces[index] ?? "";
66
+ if (outcome.status === "rejected") {
67
+ return { status: "rejected", requestedNamespace };
68
+ }
69
+ const serviceOutcome = serviceOutcomesByEffectiveNamespace.get(outcome.value.effectiveNamespace);
70
+ return serviceOutcome?.status === "fulfilled" ? { status: "fulfilled", requestedNamespace, result: serviceOutcome.value } : { status: "rejected", requestedNamespace };
71
+ });
72
+ recordWriteRateLimitHit();
73
+ respondJson(response, 200, {
74
+ enabled: results.every((result) => result.status === "fulfilled" && result.result.enabled !== false),
75
+ flushed: results.every((result) => result.status === "fulfilled" && result.result.flushed !== false),
76
+ sessionKey: body.sessionKey,
77
+ namespaces: requestedNamespaces,
78
+ results: results.map(({ requestedNamespace, ...result }) => ({ ...result, namespace: requestedNamespace }))
79
+ });
80
+ }
81
+
82
+ export {
83
+ respondLcmCompactionCapabilitiesHttp,
84
+ handleLcmCompactionFlushHttp
85
+ };
86
+ //# sourceMappingURL=chunk-4Z4XNEWZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/access-http-lcm-compaction.ts"],"sourcesContent":["import type { ServerResponse } from \"node:http\";\n\nimport type { LcmCompactionFlushRequest } from \"./access-schema.js\";\nimport type { EngramAccessLcmCompactionFlushResponse, EngramAccessService } from \"./access-service.js\";\n\ntype LcmCompactionService = Pick<EngramAccessService, \"lcmCompactionFlush\">;\ntype JsonResponder = (res: ServerResponse, status: number, payload: unknown) => void;\n\nexport interface LcmCompactionFlushHttpOptions {\n body: LcmCompactionFlushRequest;\n service: LcmCompactionService;\n response: ServerResponse;\n ensureWriteRateLimitAvailable: () => void;\n recordWriteRateLimitHit: () => void;\n resolveNamespace: (namespace?: string) => string | undefined;\n defaultNamespace?: string;\n resolveRequestPrincipal: () => string | undefined;\n respondJson: JsonResponder;\n}\n\nexport function respondLcmCompactionCapabilitiesHttp(response: ServerResponse): void {\n response.statusCode = 200;\n response.setHeader(\"content-type\", \"application/json; charset=utf-8\");\n response.end(JSON.stringify({ lcmCompactionFlushBatch: true }, null, 2));\n}\n\nexport async function handleLcmCompactionFlushHttp({\n body,\n service,\n response,\n ensureWriteRateLimitAvailable,\n recordWriteRateLimitHit,\n resolveNamespace,\n defaultNamespace,\n resolveRequestPrincipal,\n respondJson,\n}: LcmCompactionFlushHttpOptions): Promise<void> {\n ensureWriteRateLimitAvailable();\n const requestedNamespaces = body.namespaces;\n if (requestedNamespaces === undefined) {\n const result = await service.lcmCompactionFlush({\n sessionKey: body.sessionKey,\n namespace: resolveNamespace(body.namespace),\n authenticatedPrincipal: resolveRequestPrincipal(),\n });\n recordWriteRateLimitHit();\n respondJson(response, 200, result);\n return;\n }\n const resolutionOutcomes = await Promise.allSettled(\n requestedNamespaces.map(async (requestedNamespace) => {\n const namespace = resolveNamespace(requestedNamespace);\n return {\n requestedNamespace,\n namespace,\n effectiveNamespace: namespace ?? defaultNamespace ?? \"\",\n };\n })\n );\n const uniqueResolvedNamespaces: Array<{\n requestedNamespace: string;\n namespace: string | undefined;\n effectiveNamespace: string;\n }> = [];\n const queuedEffectiveNamespaces = new Set<string>();\n for (const outcome of resolutionOutcomes) {\n if (outcome.status === \"fulfilled\" && !queuedEffectiveNamespaces.has(outcome.value.effectiveNamespace)) {\n queuedEffectiveNamespaces.add(outcome.value.effectiveNamespace);\n uniqueResolvedNamespaces.push(outcome.value);\n }\n }\n const serviceOutcomes = await Promise.allSettled(\n uniqueResolvedNamespaces.map(({ namespace }) =>\n service.lcmCompactionFlush({\n sessionKey: body.sessionKey,\n namespace,\n authenticatedPrincipal: resolveRequestPrincipal(),\n })\n )\n );\n const serviceOutcomesByEffectiveNamespace = new Map<\n string,\n PromiseSettledResult<EngramAccessLcmCompactionFlushResponse>\n >();\n for (const [index, resolved] of uniqueResolvedNamespaces.entries()) {\n const serviceOutcome = serviceOutcomes[index];\n if (serviceOutcome !== undefined) {\n serviceOutcomesByEffectiveNamespace.set(resolved.effectiveNamespace, serviceOutcome);\n }\n }\n type BatchResult =\n | {\n requestedNamespace: string;\n status: \"fulfilled\";\n result: EngramAccessLcmCompactionFlushResponse;\n }\n | { requestedNamespace: string; status: \"rejected\" };\n const results: BatchResult[] = resolutionOutcomes.map((outcome, index) => {\n const requestedNamespace = requestedNamespaces[index] ?? \"\";\n if (outcome.status === \"rejected\") {\n return { status: \"rejected\", requestedNamespace };\n }\n const serviceOutcome = serviceOutcomesByEffectiveNamespace.get(outcome.value.effectiveNamespace);\n return serviceOutcome?.status === \"fulfilled\"\n ? { status: \"fulfilled\", requestedNamespace, result: serviceOutcome.value }\n : { status: \"rejected\", requestedNamespace };\n });\n recordWriteRateLimitHit();\n respondJson(response, 200, {\n enabled: results.every((result) => result.status === \"fulfilled\" && result.result.enabled !== false),\n flushed: results.every((result) => result.status === \"fulfilled\" && result.result.flushed !== false),\n sessionKey: body.sessionKey,\n namespaces: requestedNamespaces,\n results: results.map(({ requestedNamespace, ...result }) => ({ ...result, namespace: requestedNamespace })),\n });\n}\n"],"mappings":";AAoBO,SAAS,qCAAqC,UAAgC;AACnF,WAAS,aAAa;AACtB,WAAS,UAAU,gBAAgB,iCAAiC;AACpE,WAAS,IAAI,KAAK,UAAU,EAAE,yBAAyB,KAAK,GAAG,MAAM,CAAC,CAAC;AACzE;AAEA,eAAsB,6BAA6B;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiD;AAC/C,gCAA8B;AAC9B,QAAM,sBAAsB,KAAK;AACjC,MAAI,wBAAwB,QAAW;AACrC,UAAM,SAAS,MAAM,QAAQ,mBAAmB;AAAA,MAC9C,YAAY,KAAK;AAAA,MACjB,WAAW,iBAAiB,KAAK,SAAS;AAAA,MAC1C,wBAAwB,wBAAwB;AAAA,IAClD,CAAC;AACD,4BAAwB;AACxB,gBAAY,UAAU,KAAK,MAAM;AACjC;AAAA,EACF;AACA,QAAM,qBAAqB,MAAM,QAAQ;AAAA,IACvC,oBAAoB,IAAI,OAAO,uBAAuB;AACpD,YAAM,YAAY,iBAAiB,kBAAkB;AACrD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,oBAAoB,aAAa,oBAAoB;AAAA,MACvD;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,2BAID,CAAC;AACN,QAAM,4BAA4B,oBAAI,IAAY;AAClD,aAAW,WAAW,oBAAoB;AACxC,QAAI,QAAQ,WAAW,eAAe,CAAC,0BAA0B,IAAI,QAAQ,MAAM,kBAAkB,GAAG;AACtG,gCAA0B,IAAI,QAAQ,MAAM,kBAAkB;AAC9D,+BAAyB,KAAK,QAAQ,KAAK;AAAA,IAC7C;AAAA,EACF;AACA,QAAM,kBAAkB,MAAM,QAAQ;AAAA,IACpC,yBAAyB;AAAA,MAAI,CAAC,EAAE,UAAU,MACxC,QAAQ,mBAAmB;AAAA,QACzB,YAAY,KAAK;AAAA,QACjB;AAAA,QACA,wBAAwB,wBAAwB;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,sCAAsC,oBAAI,IAG9C;AACF,aAAW,CAAC,OAAO,QAAQ,KAAK,yBAAyB,QAAQ,GAAG;AAClE,UAAM,iBAAiB,gBAAgB,KAAK;AAC5C,QAAI,mBAAmB,QAAW;AAChC,0CAAoC,IAAI,SAAS,oBAAoB,cAAc;AAAA,IACrF;AAAA,EACF;AAQA,QAAM,UAAyB,mBAAmB,IAAI,CAAC,SAAS,UAAU;AACxE,UAAM,qBAAqB,oBAAoB,KAAK,KAAK;AACzD,QAAI,QAAQ,WAAW,YAAY;AACjC,aAAO,EAAE,QAAQ,YAAY,mBAAmB;AAAA,IAClD;AACA,UAAM,iBAAiB,oCAAoC,IAAI,QAAQ,MAAM,kBAAkB;AAC/F,WAAO,gBAAgB,WAAW,cAC9B,EAAE,QAAQ,aAAa,oBAAoB,QAAQ,eAAe,MAAM,IACxE,EAAE,QAAQ,YAAY,mBAAmB;AAAA,EAC/C,CAAC;AACD,0BAAwB;AACxB,cAAY,UAAU,KAAK;AAAA,IACzB,SAAS,QAAQ,MAAM,CAAC,WAAW,OAAO,WAAW,eAAe,OAAO,OAAO,YAAY,KAAK;AAAA,IACnG,SAAS,QAAQ,MAAM,CAAC,WAAW,OAAO,WAAW,eAAe,OAAO,OAAO,YAAY,KAAK;AAAA,IACnG,YAAY,KAAK;AAAA,IACjB,YAAY;AAAA,IACZ,SAAS,QAAQ,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,OAAO,EAAE,GAAG,QAAQ,WAAW,mBAAmB,EAAE;AAAA,EAC5G,CAAC;AACH;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-V7IZKJI3.js";
4
4
  import {
5
5
  AdapterRegistry
6
- } from "./chunk-JBPKEARU.js";
6
+ } from "./chunk-2QSZNTDO.js";
7
7
  import {
8
8
  WriteRateLimiter
9
9
  } from "./chunk-MKQBXQKU.js";
@@ -16,13 +16,13 @@ import {
16
16
  processChatMessage,
17
17
  sessionBelongsToPrincipal,
18
18
  subscribeChatTranscript
19
- } from "./chunk-VPSAVXHM.js";
19
+ } from "./chunk-XNUBF6RF.js";
20
20
  import {
21
21
  RelayMissionStoreError
22
- } from "./chunk-OIE242WM.js";
22
+ } from "./chunk-HBVOJNV4.js";
23
23
  import {
24
24
  validateRequest
25
- } from "./chunk-P25IPRXP.js";
25
+ } from "./chunk-KGTD2KZJ.js";
26
26
  import {
27
27
  executeResolution,
28
28
  isValidResolutionVerb
@@ -32,15 +32,19 @@ import {
32
32
  listPairs,
33
33
  readPair
34
34
  } from "./chunk-35NN3ZFA.js";
35
+ import {
36
+ handleLcmCompactionFlushHttp,
37
+ respondLcmCompactionCapabilitiesHttp
38
+ } from "./chunk-4Z4XNEWZ.js";
35
39
  import {
36
40
  authorizationProbeNamespaces,
37
41
  probeOperationAuthorization
38
- } from "./chunk-D7MAWMMK.js";
42
+ } from "./chunk-M2KGXXTL.js";
39
43
  import {
40
44
  CorrectionContractError,
41
45
  getOperation,
42
46
  resolveQueryNamespaceWritablePreflight
43
- } from "./chunk-BL4JHZSO.js";
47
+ } from "./chunk-2XP3PWL3.js";
44
48
  import {
45
49
  isTrustZoneName
46
50
  } from "./chunk-JGSKJHF7.js";
@@ -872,6 +876,7 @@ var EngramAccessHttpServer = class {
872
876
  this.respondJson(res, 200, await this.service.health());
873
877
  return;
874
878
  }
879
+ if (req.method === "GET" && pathname === "/engram/v1/capabilities") return respondLcmCompactionCapabilitiesHttp(res);
875
880
  if (req.method === "GET" && pathname === "/engram/v1/authorization") {
876
881
  res.setHeader("cache-control", "no-store");
877
882
  const probe = probeOperationAuthorization(tokenCapabilityStore.getStore(), parsed.searchParams.getAll("op"));
@@ -1451,14 +1456,17 @@ var EngramAccessHttpServer = class {
1451
1456
  if (req.method === "POST" && (pathname === "/engram/v1/lcm/compaction/flush" || pathname === "/remnic/v1/lcm/compaction/flush")) {
1452
1457
  this.enforceTokenOp("lcm_compaction_flush");
1453
1458
  const body = await this.readValidatedBody(req, "lcmCompactionFlush");
1454
- this.ensureWriteRateLimitAvailable(req);
1455
- const response = await this.service.lcmCompactionFlush({
1456
- sessionKey: body.sessionKey,
1457
- namespace: this.resolveNamespace(req, body.namespace),
1458
- authenticatedPrincipal: this.resolveRequestPrincipal(req)
1459
+ await handleLcmCompactionFlushHttp({
1460
+ body,
1461
+ service: this.service,
1462
+ response: res,
1463
+ ensureWriteRateLimitAvailable: () => this.ensureWriteRateLimitAvailable(req),
1464
+ recordWriteRateLimitHit: () => this.recordWriteRateLimitHit(req),
1465
+ resolveNamespace: (namespace) => this.resolveNamespace(req, namespace),
1466
+ defaultNamespace: this.service.configRef?.defaultNamespace,
1467
+ resolveRequestPrincipal: () => this.resolveRequestPrincipal(req),
1468
+ respondJson: this.respondJson.bind(this)
1459
1469
  });
1460
- this.recordWriteRateLimitHit(req);
1461
- this.respondJson(res, 200, response);
1462
1470
  return;
1463
1471
  }
1464
1472
  if (req.method === "POST" && (pathname === "/engram/v1/lcm/compaction/record" || pathname === "/remnic/v1/lcm/compaction/record")) {
@@ -3210,4 +3218,4 @@ export {
3210
3218
  MeetingsInputError,
3211
3219
  EngramAccessHttpServer
3212
3220
  };
3213
- //# sourceMappingURL=chunk-32XTXKIA.js.map
3221
+ //# sourceMappingURL=chunk-67DSDRUB.js.map