@atomicmemory/core 1.0.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 (589) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +201 -0
  3. package/README.md +314 -0
  4. package/dist/app/bind-ephemeral.d.ts +18 -0
  5. package/dist/app/bind-ephemeral.js +22 -0
  6. package/dist/app/cors-headers.d.ts +12 -0
  7. package/dist/app/cors-headers.js +18 -0
  8. package/dist/app/create-app.d.ts +25 -0
  9. package/dist/app/create-app.js +156 -0
  10. package/dist/app/runtime-config-route-snapshot.d.ts +27 -0
  11. package/dist/app/runtime-config-route-snapshot.js +27 -0
  12. package/dist/app/runtime-container.d.ts +281 -0
  13. package/dist/app/runtime-container.js +297 -0
  14. package/dist/app/startup-checks.d.ts +28 -0
  15. package/dist/app/startup-checks.js +45 -0
  16. package/dist/bin.d.ts +17 -0
  17. package/dist/bin.js +128 -0
  18. package/dist/config.d.ts +680 -0
  19. package/dist/config.js +808 -0
  20. package/dist/db/agent-trust-repository.d.ts +49 -0
  21. package/dist/db/agent-trust-repository.js +66 -0
  22. package/dist/db/belief-edges-repository.d.ts +68 -0
  23. package/dist/db/belief-edges-repository.js +124 -0
  24. package/dist/db/claim-repository.d.ts +6 -0
  25. package/dist/db/claim-repository.js +4 -0
  26. package/dist/db/contradictions-repository.d.ts +56 -0
  27. package/dist/db/contradictions-repository.js +88 -0
  28. package/dist/db/document-chunk-repository.d.ts +48 -0
  29. package/dist/db/document-chunk-repository.js +145 -0
  30. package/dist/db/document-chunk-types.d.ts +35 -0
  31. package/dist/db/document-chunk-types.js +9 -0
  32. package/dist/db/document-list-cursor.d.ts +45 -0
  33. package/dist/db/document-list-cursor.js +111 -0
  34. package/dist/db/document-list-repository.d.ts +103 -0
  35. package/dist/db/document-list-repository.js +204 -0
  36. package/dist/db/entity-cards-repository.d.ts +37 -0
  37. package/dist/db/entity-cards-repository.js +46 -0
  38. package/dist/db/entity-values-repository.d.ts +26 -0
  39. package/dist/db/entity-values-repository.js +57 -0
  40. package/dist/db/link-repository.d.ts +30 -0
  41. package/dist/db/link-repository.js +54 -0
  42. package/dist/db/memory-repository.d.ts +163 -0
  43. package/dist/db/memory-repository.js +232 -0
  44. package/dist/db/migrate.d.ts +6 -0
  45. package/dist/db/migrate.js +36 -0
  46. package/dist/db/mmr.d.ts +14 -0
  47. package/dist/db/mmr.js +57 -0
  48. package/dist/db/passport-feed-repository.d.ts +91 -0
  49. package/dist/db/passport-feed-repository.js +198 -0
  50. package/dist/db/pg-episode-store.d.ts +19 -0
  51. package/dist/db/pg-episode-store.js +17 -0
  52. package/dist/db/pg-link-store.d.ts +17 -0
  53. package/dist/db/pg-link-store.js +14 -0
  54. package/dist/db/pg-memory-store.d.ts +68 -0
  55. package/dist/db/pg-memory-store.js +53 -0
  56. package/dist/db/pg-recap-store.d.ts +13 -0
  57. package/dist/db/pg-recap-store.js +19 -0
  58. package/dist/db/pg-representation-store.d.ts +17 -0
  59. package/dist/db/pg-representation-store.js +17 -0
  60. package/dist/db/pg-search-store.d.ts +29 -0
  61. package/dist/db/pg-search-store.js +47 -0
  62. package/dist/db/pool.d.ts +5 -0
  63. package/dist/db/pool.js +21 -0
  64. package/dist/db/ppr.d.ts +56 -0
  65. package/dist/db/ppr.js +178 -0
  66. package/dist/db/query-helpers.d.ts +44 -0
  67. package/dist/db/query-helpers.js +60 -0
  68. package/dist/db/raw-doc-artifact-sync.d.ts +128 -0
  69. package/dist/db/raw-doc-artifact-sync.js +259 -0
  70. package/dist/db/raw-document-blob-repository.d.ts +148 -0
  71. package/dist/db/raw-document-blob-repository.js +300 -0
  72. package/dist/db/raw-document-repository.d.ts +104 -0
  73. package/dist/db/raw-document-repository.js +410 -0
  74. package/dist/db/raw-document-status-repository.d.ts +122 -0
  75. package/dist/db/raw-document-status-repository.js +183 -0
  76. package/dist/db/raw-document-types.d.ts +236 -0
  77. package/dist/db/raw-document-types.js +10 -0
  78. package/dist/db/raw-storage-reconciliation-repository.d.ts +110 -0
  79. package/dist/db/raw-storage-reconciliation-repository.js +200 -0
  80. package/dist/db/reflection-jobs-repository.d.ts +33 -0
  81. package/dist/db/reflection-jobs-repository.js +48 -0
  82. package/dist/db/reflections-repository.d.ts +41 -0
  83. package/dist/db/reflections-repository.js +83 -0
  84. package/dist/db/repository-claims.d.ts +141 -0
  85. package/dist/db/repository-claims.js +376 -0
  86. package/dist/db/repository-deferred-audn.d.ts +33 -0
  87. package/dist/db/repository-deferred-audn.js +69 -0
  88. package/dist/db/repository-document-delete.d.ts +53 -0
  89. package/dist/db/repository-document-delete.js +156 -0
  90. package/dist/db/repository-entities.d.ts +114 -0
  91. package/dist/db/repository-entities.js +317 -0
  92. package/dist/db/repository-entity-attributes.d.ts +41 -0
  93. package/dist/db/repository-entity-attributes.js +65 -0
  94. package/dist/db/repository-entity-graph.d.ts +32 -0
  95. package/dist/db/repository-entity-graph.js +87 -0
  96. package/dist/db/repository-first-mentions.d.ts +41 -0
  97. package/dist/db/repository-first-mentions.js +79 -0
  98. package/dist/db/repository-lessons.d.ts +51 -0
  99. package/dist/db/repository-lessons.js +90 -0
  100. package/dist/db/repository-links.d.ts +26 -0
  101. package/dist/db/repository-links.js +105 -0
  102. package/dist/db/repository-observation.d.ts +26 -0
  103. package/dist/db/repository-observation.js +51 -0
  104. package/dist/db/repository-read.d.ts +56 -0
  105. package/dist/db/repository-read.js +271 -0
  106. package/dist/db/repository-recaps.d.ts +59 -0
  107. package/dist/db/repository-recaps.js +158 -0
  108. package/dist/db/repository-representations.d.ts +48 -0
  109. package/dist/db/repository-representations.js +162 -0
  110. package/dist/db/repository-temporal-state.d.ts +35 -0
  111. package/dist/db/repository-temporal-state.js +46 -0
  112. package/dist/db/repository-tll.d.ts +88 -0
  113. package/dist/db/repository-tll.js +179 -0
  114. package/dist/db/repository-types.d.ts +313 -0
  115. package/dist/db/repository-types.js +142 -0
  116. package/dist/db/repository-user-profiles.d.ts +17 -0
  117. package/dist/db/repository-user-profiles.js +28 -0
  118. package/dist/db/repository-vector-search.d.ts +33 -0
  119. package/dist/db/repository-vector-search.js +373 -0
  120. package/dist/db/repository-wipe.d.ts +34 -0
  121. package/dist/db/repository-wipe.js +94 -0
  122. package/dist/db/repository-write.d.ts +61 -0
  123. package/dist/db/repository-write.js +279 -0
  124. package/dist/db/schema.sql +1355 -0
  125. package/dist/db/storage-artifact-delete-tx.d.ts +56 -0
  126. package/dist/db/storage-artifact-delete-tx.js +123 -0
  127. package/dist/db/storage-artifact-providers.d.ts +21 -0
  128. package/dist/db/storage-artifact-providers.js +21 -0
  129. package/dist/db/storage-artifact-recovery-repository.d.ts +66 -0
  130. package/dist/db/storage-artifact-recovery-repository.js +58 -0
  131. package/dist/db/storage-artifact-repository.d.ts +329 -0
  132. package/dist/db/storage-artifact-repository.js +497 -0
  133. package/dist/db/stores.d.ts +220 -0
  134. package/dist/db/stores.js +12 -0
  135. package/dist/db/summaries-repository.d.ts +74 -0
  136. package/dist/db/summaries-repository.js +125 -0
  137. package/dist/eval/beam-10m-loader.d.ts +98 -0
  138. package/dist/eval/beam-10m-loader.js +128 -0
  139. package/dist/index.d.ts +18 -0
  140. package/dist/index.js +17 -0
  141. package/dist/middleware/require-bearer.d.ts +27 -0
  142. package/dist/middleware/require-bearer.js +60 -0
  143. package/dist/middleware/validate-response.d.ts +33 -0
  144. package/dist/middleware/validate-response.js +55 -0
  145. package/dist/middleware/validate.d.ts +43 -0
  146. package/dist/middleware/validate.js +85 -0
  147. package/dist/routes/agents.d.ts +13 -0
  148. package/dist/routes/agents.js +89 -0
  149. package/dist/routes/document-response-formatters.d.ts +98 -0
  150. package/dist/routes/document-response-formatters.js +243 -0
  151. package/dist/routes/documents.d.ts +74 -0
  152. package/dist/routes/documents.js +425 -0
  153. package/dist/routes/memories.d.ts +29 -0
  154. package/dist/routes/memories.js +725 -0
  155. package/dist/routes/memory-response-formatters.d.ts +179 -0
  156. package/dist/routes/memory-response-formatters.js +210 -0
  157. package/dist/routes/public-raw-storage-metadata.d.ts +54 -0
  158. package/dist/routes/public-raw-storage-metadata.js +56 -0
  159. package/dist/routes/reflect.d.ts +14 -0
  160. package/dist/routes/reflect.js +19 -0
  161. package/dist/routes/response-schema-map.d.ts +14 -0
  162. package/dist/routes/response-schema-map.js +69 -0
  163. package/dist/routes/route-errors.d.ts +12 -0
  164. package/dist/routes/route-errors.js +30 -0
  165. package/dist/routes/storage-error-handlers.d.ts +34 -0
  166. package/dist/routes/storage-error-handlers.js +185 -0
  167. package/dist/routes/storage-response-formatters.d.ts +44 -0
  168. package/dist/routes/storage-response-formatters.js +155 -0
  169. package/dist/routes/storage.d.ts +38 -0
  170. package/dist/routes/storage.js +369 -0
  171. package/dist/routes/upstream-provider-errors.d.ts +19 -0
  172. package/dist/routes/upstream-provider-errors.js +95 -0
  173. package/dist/schemas/agents.d.ts +79 -0
  174. package/dist/schemas/agents.js +126 -0
  175. package/dist/schemas/common.d.ts +110 -0
  176. package/dist/schemas/common.js +190 -0
  177. package/dist/schemas/document-list-responses.d.ts +102 -0
  178. package/dist/schemas/document-list-responses.js +87 -0
  179. package/dist/schemas/document-list-schemas.d.ts +123 -0
  180. package/dist/schemas/document-list-schemas.js +174 -0
  181. package/dist/schemas/document-response-schemas.d.ts +610 -0
  182. package/dist/schemas/document-response-schemas.js +264 -0
  183. package/dist/schemas/document-status-envelope.d.ts +48 -0
  184. package/dist/schemas/document-status-envelope.js +54 -0
  185. package/dist/schemas/documents.d.ts +292 -0
  186. package/dist/schemas/documents.js +449 -0
  187. package/dist/schemas/errors.d.ts +75 -0
  188. package/dist/schemas/errors.js +105 -0
  189. package/dist/schemas/memories.d.ts +378 -0
  190. package/dist/schemas/memories.js +542 -0
  191. package/dist/schemas/openapi.d.ts +24 -0
  192. package/dist/schemas/openapi.js +1038 -0
  193. package/dist/schemas/response-scalars.d.ts +10 -0
  194. package/dist/schemas/response-scalars.js +10 -0
  195. package/dist/schemas/responses.d.ts +536 -0
  196. package/dist/schemas/responses.js +350 -0
  197. package/dist/schemas/search-response-parts.d.ts +97 -0
  198. package/dist/schemas/search-response-parts.js +103 -0
  199. package/dist/schemas/storage-schemas.d.ts +175 -0
  200. package/dist/schemas/storage-schemas.js +277 -0
  201. package/dist/schemas/zod-setup.d.ts +15 -0
  202. package/dist/schemas/zod-setup.js +17 -0
  203. package/dist/server.d.ts +13 -0
  204. package/dist/server.js +57 -0
  205. package/dist/services/abstract-query-policy.d.ts +13 -0
  206. package/dist/services/abstract-query-policy.js +50 -0
  207. package/dist/services/affinity-clustering.d.ts +66 -0
  208. package/dist/services/affinity-clustering.js +125 -0
  209. package/dist/services/agentic-retrieval.d.ts +38 -0
  210. package/dist/services/agentic-retrieval.js +126 -0
  211. package/dist/services/answer-format.d.ts +56 -0
  212. package/dist/services/answer-format.js +118 -0
  213. package/dist/services/answer-rescue.d.ts +72 -0
  214. package/dist/services/answer-rescue.js +177 -0
  215. package/dist/services/answer-verifier.d.ts +24 -0
  216. package/dist/services/answer-verifier.js +73 -0
  217. package/dist/services/api-retry.d.ts +6 -0
  218. package/dist/services/api-retry.js +41 -0
  219. package/dist/services/assistant-turn-filter.d.ts +20 -0
  220. package/dist/services/assistant-turn-filter.js +69 -0
  221. package/dist/services/atomicmem-uri.d.ts +33 -0
  222. package/dist/services/atomicmem-uri.js +86 -0
  223. package/dist/services/audit-events.d.ts +54 -0
  224. package/dist/services/audit-events.js +56 -0
  225. package/dist/services/chunked-extraction.d.ts +21 -0
  226. package/dist/services/chunked-extraction.js +108 -0
  227. package/dist/services/claim-slotting.d.ts +27 -0
  228. package/dist/services/claim-slotting.js +38 -0
  229. package/dist/services/claude-code-llm.d.ts +19 -0
  230. package/dist/services/claude-code-llm.js +96 -0
  231. package/dist/services/composite-dedup.d.ts +50 -0
  232. package/dist/services/composite-dedup.js +153 -0
  233. package/dist/services/composite-grouping.d.ts +41 -0
  234. package/dist/services/composite-grouping.js +111 -0
  235. package/dist/services/composite-staleness.d.ts +20 -0
  236. package/dist/services/composite-staleness.js +50 -0
  237. package/dist/services/conciseness-preference.d.ts +14 -0
  238. package/dist/services/conciseness-preference.js +42 -0
  239. package/dist/services/conflict-policy.d.ts +20 -0
  240. package/dist/services/conflict-policy.js +335 -0
  241. package/dist/services/consensus-extraction.d.ts +39 -0
  242. package/dist/services/consensus-extraction.js +147 -0
  243. package/dist/services/consensus-validation.d.ts +52 -0
  244. package/dist/services/consensus-validation.js +206 -0
  245. package/dist/services/consolidation-service.d.ts +60 -0
  246. package/dist/services/consolidation-service.js +171 -0
  247. package/dist/services/content-detection.d.ts +18 -0
  248. package/dist/services/content-detection.js +25 -0
  249. package/dist/services/contradiction-surfacing.d.ts +62 -0
  250. package/dist/services/contradiction-surfacing.js +111 -0
  251. package/dist/services/cost-telemetry.d.ts +39 -0
  252. package/dist/services/cost-telemetry.js +58 -0
  253. package/dist/services/counter-evidence.d.ts +34 -0
  254. package/dist/services/counter-evidence.js +92 -0
  255. package/dist/services/current-state-ranking.d.ts +21 -0
  256. package/dist/services/current-state-ranking.js +152 -0
  257. package/dist/services/deferred-audn.d.ts +47 -0
  258. package/dist/services/deferred-audn.js +162 -0
  259. package/dist/services/document-chunker.d.ts +50 -0
  260. package/dist/services/document-chunker.js +153 -0
  261. package/dist/services/document-failure-markers.d.ts +91 -0
  262. package/dist/services/document-failure-markers.js +305 -0
  263. package/dist/services/document-indexer.d.ts +122 -0
  264. package/dist/services/document-indexer.js +405 -0
  265. package/dist/services/document-service.d.ts +245 -0
  266. package/dist/services/document-service.js +325 -0
  267. package/dist/services/document-upload-artifact-sync.d.ts +80 -0
  268. package/dist/services/document-upload-artifact-sync.js +162 -0
  269. package/dist/services/document-upload-beta2-recovery.d.ts +72 -0
  270. package/dist/services/document-upload-beta2-recovery.js +94 -0
  271. package/dist/services/document-upload.d.ts +44 -0
  272. package/dist/services/document-upload.js +353 -0
  273. package/dist/services/embedding.d.ts +57 -0
  274. package/dist/services/embedding.js +416 -0
  275. package/dist/services/entity-attribute-extractor.d.ts +34 -0
  276. package/dist/services/entity-attribute-extractor.js +117 -0
  277. package/dist/services/entity-card-synthesis.d.ts +54 -0
  278. package/dist/services/entity-card-synthesis.js +92 -0
  279. package/dist/services/entity-dedup.d.ts +9 -0
  280. package/dist/services/entity-dedup.js +14 -0
  281. package/dist/services/entity-graph.d.ts +17 -0
  282. package/dist/services/entity-graph.js +135 -0
  283. package/dist/services/entropy-gate.d.ts +52 -0
  284. package/dist/services/entropy-gate.js +56 -0
  285. package/dist/services/episode-fetcher.d.ts +47 -0
  286. package/dist/services/episode-fetcher.js +128 -0
  287. package/dist/services/event-anchor-facts.d.ts +8 -0
  288. package/dist/services/event-anchor-facts.js +205 -0
  289. package/dist/services/event-chain-detector.d.ts +52 -0
  290. package/dist/services/event-chain-detector.js +83 -0
  291. package/dist/services/extraction-cache.d.ts +9 -0
  292. package/dist/services/extraction-cache.js +54 -0
  293. package/dist/services/extraction-enrichment.d.ts +9 -0
  294. package/dist/services/extraction-enrichment.js +223 -0
  295. package/dist/services/extraction.d.ts +69 -0
  296. package/dist/services/extraction.js +596 -0
  297. package/dist/services/fact-normalization.d.ts +12 -0
  298. package/dist/services/fact-normalization.js +248 -0
  299. package/dist/services/filecoin-observability.d.ts +127 -0
  300. package/dist/services/filecoin-observability.js +200 -0
  301. package/dist/services/first-mention-service.d.ts +76 -0
  302. package/dist/services/first-mention-service.js +186 -0
  303. package/dist/services/hierarchical-retrieval.d.ts +49 -0
  304. package/dist/services/hierarchical-retrieval.js +50 -0
  305. package/dist/services/ingest-fact-pipeline.d.ts +32 -0
  306. package/dist/services/ingest-fact-pipeline.js +212 -0
  307. package/dist/services/ingest-post-write.d.ts +50 -0
  308. package/dist/services/ingest-post-write.js +117 -0
  309. package/dist/services/ingest-trace.d.ts +32 -0
  310. package/dist/services/ingest-trace.js +60 -0
  311. package/dist/services/input-sanitizer.d.ts +41 -0
  312. package/dist/services/input-sanitizer.js +135 -0
  313. package/dist/services/iterative-retrieval.d.ts +26 -0
  314. package/dist/services/iterative-retrieval.js +139 -0
  315. package/dist/services/keyword-expansion.d.ts +10 -0
  316. package/dist/services/keyword-expansion.js +26 -0
  317. package/dist/services/lesson-service.d.ts +68 -0
  318. package/dist/services/lesson-service.js +178 -0
  319. package/dist/services/literal-extractor.d.ts +16 -0
  320. package/dist/services/literal-extractor.js +74 -0
  321. package/dist/services/literal-list-protection.d.ts +17 -0
  322. package/dist/services/literal-list-protection.js +134 -0
  323. package/dist/services/literal-query-expansion.d.ts +20 -0
  324. package/dist/services/literal-query-expansion.js +181 -0
  325. package/dist/services/llm.d.ts +61 -0
  326. package/dist/services/llm.js +265 -0
  327. package/dist/services/memcell-projection.d.ts +17 -0
  328. package/dist/services/memcell-projection.js +41 -0
  329. package/dist/services/memory-audn.d.ts +43 -0
  330. package/dist/services/memory-audn.js +419 -0
  331. package/dist/services/memory-crud.d.ts +93 -0
  332. package/dist/services/memory-crud.js +255 -0
  333. package/dist/services/memory-ingest.d.ts +21 -0
  334. package/dist/services/memory-ingest.js +249 -0
  335. package/dist/services/memory-lifecycle.d.ts +75 -0
  336. package/dist/services/memory-lifecycle.js +108 -0
  337. package/dist/services/memory-lineage.d.ts +181 -0
  338. package/dist/services/memory-lineage.js +232 -0
  339. package/dist/services/memory-network.d.ts +40 -0
  340. package/dist/services/memory-network.js +75 -0
  341. package/dist/services/memory-search-types.d.ts +25 -0
  342. package/dist/services/memory-search-types.js +10 -0
  343. package/dist/services/memory-search.d.ts +48 -0
  344. package/dist/services/memory-search.js +505 -0
  345. package/dist/services/memory-service-types.d.ts +371 -0
  346. package/dist/services/memory-service-types.js +8 -0
  347. package/dist/services/memory-service.d.ts +152 -0
  348. package/dist/services/memory-service.js +225 -0
  349. package/dist/services/memory-storage.d.ts +33 -0
  350. package/dist/services/memory-storage.js +328 -0
  351. package/dist/services/msr-aggregator.d.ts +38 -0
  352. package/dist/services/msr-aggregator.js +97 -0
  353. package/dist/services/msr-detector.d.ts +35 -0
  354. package/dist/services/msr-detector.js +65 -0
  355. package/dist/services/namespace-retrieval.d.ts +60 -0
  356. package/dist/services/namespace-retrieval.js +180 -0
  357. package/dist/services/observation-date-extraction.d.ts +12 -0
  358. package/dist/services/observation-date-extraction.js +50 -0
  359. package/dist/services/observation-service.d.ts +27 -0
  360. package/dist/services/observation-service.js +84 -0
  361. package/dist/services/packaging-observability.d.ts +29 -0
  362. package/dist/services/packaging-observability.js +146 -0
  363. package/dist/services/query-expansion.d.ts +83 -0
  364. package/dist/services/query-expansion.js +242 -0
  365. package/dist/services/query-keyword-matches.d.ts +6 -0
  366. package/dist/services/query-keyword-matches.js +56 -0
  367. package/dist/services/query-term-visibility.d.ts +28 -0
  368. package/dist/services/query-term-visibility.js +100 -0
  369. package/dist/services/quick-extraction.d.ts +25 -0
  370. package/dist/services/quick-extraction.js +431 -0
  371. package/dist/services/quoted-entity-extraction.d.ts +10 -0
  372. package/dist/services/quoted-entity-extraction.js +161 -0
  373. package/dist/services/raw-storage-reconciler-backoff.d.ts +8 -0
  374. package/dist/services/raw-storage-reconciler-backoff.js +14 -0
  375. package/dist/services/raw-storage-reconciler-scheduler.d.ts +29 -0
  376. package/dist/services/raw-storage-reconciler-scheduler.js +43 -0
  377. package/dist/services/raw-storage-reconciler.d.ts +71 -0
  378. package/dist/services/raw-storage-reconciler.js +278 -0
  379. package/dist/services/recap-builder.d.ts +49 -0
  380. package/dist/services/recap-builder.js +157 -0
  381. package/dist/services/reflect-jobs.d.ts +23 -0
  382. package/dist/services/reflect-jobs.js +36 -0
  383. package/dist/services/reflect-prompts.d.ts +71 -0
  384. package/dist/services/reflect-prompts.js +99 -0
  385. package/dist/services/reflect-retrieval.d.ts +33 -0
  386. package/dist/services/reflect-retrieval.js +30 -0
  387. package/dist/services/reflect.d.ts +49 -0
  388. package/dist/services/reflect.js +84 -0
  389. package/dist/services/relative-temporal.d.ts +14 -0
  390. package/dist/services/relative-temporal.js +163 -0
  391. package/dist/services/relevance-policy.d.ts +37 -0
  392. package/dist/services/relevance-policy.js +109 -0
  393. package/dist/services/rerank.d.ts +32 -0
  394. package/dist/services/rerank.js +118 -0
  395. package/dist/services/reranker.d.ts +20 -0
  396. package/dist/services/reranker.js +99 -0
  397. package/dist/services/retrieval-channel-rules.d.ts +34 -0
  398. package/dist/services/retrieval-channel-rules.js +41 -0
  399. package/dist/services/retrieval-config-overlay.d.ts +36 -0
  400. package/dist/services/retrieval-config-overlay.js +44 -0
  401. package/dist/services/retrieval-format.d.ts +119 -0
  402. package/dist/services/retrieval-format.js +559 -0
  403. package/dist/services/retrieval-policy.d.ts +69 -0
  404. package/dist/services/retrieval-policy.js +275 -0
  405. package/dist/services/retrieval-profiles.d.ts +37 -0
  406. package/dist/services/retrieval-profiles.js +90 -0
  407. package/dist/services/retrieval-side-effects.d.ts +14 -0
  408. package/dist/services/retrieval-side-effects.js +26 -0
  409. package/dist/services/retrieval-trace.d.ts +108 -0
  410. package/dist/services/retrieval-trace.js +147 -0
  411. package/dist/services/rrf-fusion.d.ts +18 -0
  412. package/dist/services/rrf-fusion.js +34 -0
  413. package/dist/services/search-pipeline.d.ts +71 -0
  414. package/dist/services/search-pipeline.js +788 -0
  415. package/dist/services/session-date.d.ts +20 -0
  416. package/dist/services/session-date.js +61 -0
  417. package/dist/services/session-packaging.d.ts +53 -0
  418. package/dist/services/session-packaging.js +182 -0
  419. package/dist/services/session-summary-generator.d.ts +53 -0
  420. package/dist/services/session-summary-generator.js +134 -0
  421. package/dist/services/specialists/cr-specialist.d.ts +52 -0
  422. package/dist/services/specialists/cr-specialist.js +121 -0
  423. package/dist/services/specialists/dispatch.d.ts +53 -0
  424. package/dist/services/specialists/dispatch.js +102 -0
  425. package/dist/services/specialists/ie-ku-specialist.d.ts +37 -0
  426. package/dist/services/specialists/ie-ku-specialist.js +63 -0
  427. package/dist/services/specialists/msr-specialist.d.ts +61 -0
  428. package/dist/services/specialists/msr-specialist.js +162 -0
  429. package/dist/services/specialists/tr-specialist.d.ts +37 -0
  430. package/dist/services/specialists/tr-specialist.js +146 -0
  431. package/dist/services/storage-key-prefix.d.ts +42 -0
  432. package/dist/services/storage-key-prefix.js +45 -0
  433. package/dist/services/storage-put-recovery.d.ts +71 -0
  434. package/dist/services/storage-put-recovery.js +269 -0
  435. package/dist/services/storage-service-errors.d.ts +124 -0
  436. package/dist/services/storage-service-errors.js +189 -0
  437. package/dist/services/storage-service.d.ts +176 -0
  438. package/dist/services/storage-service.js +423 -0
  439. package/dist/services/subject-aware-ranking.d.ts +19 -0
  440. package/dist/services/subject-aware-ranking.js +161 -0
  441. package/dist/services/supplemental-extraction.d.ts +7 -0
  442. package/dist/services/supplemental-extraction.js +116 -0
  443. package/dist/services/tbc-execution.d.ts +49 -0
  444. package/dist/services/tbc-execution.js +284 -0
  445. package/dist/services/temporal-classifier.d.ts +56 -0
  446. package/dist/services/temporal-classifier.js +94 -0
  447. package/dist/services/temporal-endpoint-evidence.d.ts +12 -0
  448. package/dist/services/temporal-endpoint-evidence.js +313 -0
  449. package/dist/services/temporal-fingerprint.d.ts +6 -0
  450. package/dist/services/temporal-fingerprint.js +12 -0
  451. package/dist/services/temporal-format.d.ts +9 -0
  452. package/dist/services/temporal-format.js +21 -0
  453. package/dist/services/temporal-intent.d.ts +39 -0
  454. package/dist/services/temporal-intent.js +78 -0
  455. package/dist/services/temporal-query-constraints.d.ts +16 -0
  456. package/dist/services/temporal-query-constraints.js +107 -0
  457. package/dist/services/temporal-query-expansion.d.ts +14 -0
  458. package/dist/services/temporal-query-expansion.js +131 -0
  459. package/dist/services/temporal-rerank.d.ts +22 -0
  460. package/dist/services/temporal-rerank.js +47 -0
  461. package/dist/services/temporal-result-protection.d.ts +7 -0
  462. package/dist/services/temporal-result-protection.js +60 -0
  463. package/dist/services/temporal-state-write.d.ts +57 -0
  464. package/dist/services/temporal-state-write.js +45 -0
  465. package/dist/services/tiered-context.d.ts +87 -0
  466. package/dist/services/tiered-context.js +214 -0
  467. package/dist/services/tiered-loading.d.ts +88 -0
  468. package/dist/services/tiered-loading.js +263 -0
  469. package/dist/services/timeline-pack.d.ts +36 -0
  470. package/dist/services/timeline-pack.js +50 -0
  471. package/dist/services/timing.d.ts +13 -0
  472. package/dist/services/timing.js +72 -0
  473. package/dist/services/tll-augmentation.d.ts +20 -0
  474. package/dist/services/tll-augmentation.js +125 -0
  475. package/dist/services/tll-retrieval.d.ts +55 -0
  476. package/dist/services/tll-retrieval.js +101 -0
  477. package/dist/services/topic-abstraction.d.ts +36 -0
  478. package/dist/services/topic-abstraction.js +105 -0
  479. package/dist/services/trust-scoring.d.ts +43 -0
  480. package/dist/services/trust-scoring.js +89 -0
  481. package/dist/services/typed-belief-calculus.d.ts +126 -0
  482. package/dist/services/typed-belief-calculus.js +204 -0
  483. package/dist/services/upload-config.d.ts +34 -0
  484. package/dist/services/upload-config.js +23 -0
  485. package/dist/services/upload-decision.d.ts +65 -0
  486. package/dist/services/upload-decision.js +98 -0
  487. package/dist/services/upload-helpers.d.ts +107 -0
  488. package/dist/services/upload-helpers.js +148 -0
  489. package/dist/services/user-profile-builder.d.ts +22 -0
  490. package/dist/services/user-profile-builder.js +109 -0
  491. package/dist/services/voyage-embedding.d.ts +22 -0
  492. package/dist/services/voyage-embedding.js +77 -0
  493. package/dist/services/write-security.d.ts +31 -0
  494. package/dist/services/write-security.js +64 -0
  495. package/dist/storage/artifact-public-redaction.d.ts +34 -0
  496. package/dist/storage/artifact-public-redaction.js +83 -0
  497. package/dist/storage/cleanup.d.ts +103 -0
  498. package/dist/storage/cleanup.js +138 -0
  499. package/dist/storage/codec-factory.d.ts +17 -0
  500. package/dist/storage/codec-factory.js +33 -0
  501. package/dist/storage/codecs/aes-gcm-codec.d.ts +44 -0
  502. package/dist/storage/codecs/aes-gcm-codec.js +108 -0
  503. package/dist/storage/codecs/noop-codec.d.ts +16 -0
  504. package/dist/storage/codecs/noop-codec.js +23 -0
  505. package/dist/storage/factory.d.ts +44 -0
  506. package/dist/storage/factory.js +99 -0
  507. package/dist/storage/filecoin-cid-validation.d.ts +82 -0
  508. package/dist/storage/filecoin-cid-validation.js +122 -0
  509. package/dist/storage/filecoin-public-metadata.d.ts +73 -0
  510. package/dist/storage/filecoin-public-metadata.js +110 -0
  511. package/dist/storage/local-fs-store.d.ts +39 -0
  512. package/dist/storage/local-fs-store.js +145 -0
  513. package/dist/storage/pointer-uri-allowlist.d.ts +38 -0
  514. package/dist/storage/pointer-uri-allowlist.js +70 -0
  515. package/dist/storage/provider-metadata-projection.d.ts +27 -0
  516. package/dist/storage/provider-metadata-projection.js +68 -0
  517. package/dist/storage/providers/filecoin/backend.d.ts +42 -0
  518. package/dist/storage/providers/filecoin/backend.js +250 -0
  519. package/dist/storage/providers/filecoin/config.d.ts +70 -0
  520. package/dist/storage/providers/filecoin/config.js +275 -0
  521. package/dist/storage/providers/filecoin/errors.d.ts +45 -0
  522. package/dist/storage/providers/filecoin/errors.js +56 -0
  523. package/dist/storage/providers/filecoin/filecoin-pin-car.d.ts +78 -0
  524. package/dist/storage/providers/filecoin/filecoin-pin-car.js +155 -0
  525. package/dist/storage/providers/filecoin/filecoin-pin-client.d.ts +92 -0
  526. package/dist/storage/providers/filecoin/filecoin-pin-client.js +199 -0
  527. package/dist/storage/providers/filecoin/filecoin-pin-mapping.d.ts +58 -0
  528. package/dist/storage/providers/filecoin/filecoin-pin-mapping.js +103 -0
  529. package/dist/storage/providers/filecoin/filecoin-pin-timeout.d.ts +30 -0
  530. package/dist/storage/providers/filecoin/filecoin-pin-timeout.js +53 -0
  531. package/dist/storage/providers/filecoin/filecoin-pin-vendor.d.ts +111 -0
  532. package/dist/storage/providers/filecoin/filecoin-pin-vendor.js +87 -0
  533. package/dist/storage/providers/filecoin/hints.d.ts +71 -0
  534. package/dist/storage/providers/filecoin/hints.js +123 -0
  535. package/dist/storage/providers/filecoin/index.d.ts +51 -0
  536. package/dist/storage/providers/filecoin/index.js +103 -0
  537. package/dist/storage/providers/filecoin/ipfs-cid.d.ts +50 -0
  538. package/dist/storage/providers/filecoin/ipfs-cid.js +64 -0
  539. package/dist/storage/providers/filecoin/metadata.d.ts +72 -0
  540. package/dist/storage/providers/filecoin/metadata.js +137 -0
  541. package/dist/storage/providers/filecoin/piece-cid.d.ts +48 -0
  542. package/dist/storage/providers/filecoin/piece-cid.js +57 -0
  543. package/dist/storage/providers/filecoin/provider-client.d.ts +234 -0
  544. package/dist/storage/providers/filecoin/provider-client.js +27 -0
  545. package/dist/storage/providers/filecoin/readiness.d.ts +62 -0
  546. package/dist/storage/providers/filecoin/readiness.js +85 -0
  547. package/dist/storage/providers/filecoin/retriever.d.ts +82 -0
  548. package/dist/storage/providers/filecoin/retriever.js +63 -0
  549. package/dist/storage/providers/filecoin/skeleton-client.d.ts +36 -0
  550. package/dist/storage/providers/filecoin/skeleton-client.js +55 -0
  551. package/dist/storage/providers/filecoin/synapse-client.d.ts +169 -0
  552. package/dist/storage/providers/filecoin/synapse-client.js +343 -0
  553. package/dist/storage/providers/filecoin/synapse-construction.d.ts +26 -0
  554. package/dist/storage/providers/filecoin/synapse-construction.js +47 -0
  555. package/dist/storage/providers/filecoin/synapse-error-mapping.d.ts +23 -0
  556. package/dist/storage/providers/filecoin/synapse-error-mapping.js +49 -0
  557. package/dist/storage/providers/filecoin/synapse-readiness.d.ts +37 -0
  558. package/dist/storage/providers/filecoin/synapse-readiness.js +231 -0
  559. package/dist/storage/providers/filecoin/uri.d.ts +49 -0
  560. package/dist/storage/providers/filecoin/uri.js +84 -0
  561. package/dist/storage/providers/filecoin/verified-fetch-lifecycle.d.ts +77 -0
  562. package/dist/storage/providers/filecoin/verified-fetch-lifecycle.js +196 -0
  563. package/dist/storage/providers/filecoin/verified-fetch-retriever.d.ts +54 -0
  564. package/dist/storage/providers/filecoin/verified-fetch-retriever.js +81 -0
  565. package/dist/storage/providers/filecoin/verified-fetch-vendor.d.ts +71 -0
  566. package/dist/storage/providers/filecoin/verified-fetch-vendor.js +94 -0
  567. package/dist/storage/raw-content-codec.d.ts +89 -0
  568. package/dist/storage/raw-content-codec.js +47 -0
  569. package/dist/storage/raw-content-store-backend-adapter.d.ts +28 -0
  570. package/dist/storage/raw-content-store-backend-adapter.js +67 -0
  571. package/dist/storage/raw-content-store.d.ts +228 -0
  572. package/dist/storage/raw-content-store.js +27 -0
  573. package/dist/storage/s3-store.d.ts +42 -0
  574. package/dist/storage/s3-store.js +181 -0
  575. package/dist/storage/storage-backend-registry.d.ts +58 -0
  576. package/dist/storage/storage-backend-registry.js +56 -0
  577. package/dist/storage/storage-backend.d.ts +82 -0
  578. package/dist/storage/storage-backend.js +14 -0
  579. package/dist/storage/storage-capabilities.d.ts +56 -0
  580. package/dist/storage/storage-capabilities.js +170 -0
  581. package/dist/storage/store-registry.d.ts +67 -0
  582. package/dist/storage/store-registry.js +77 -0
  583. package/dist/vector-math.d.ts +15 -0
  584. package/dist/vector-math.js +31 -0
  585. package/dist/xml-escape.d.ts +5 -0
  586. package/dist/xml-escape.js +7 -0
  587. package/openapi.json +15395 -0
  588. package/openapi.yaml +10794 -0
  589. package/package.json +119 -0
@@ -0,0 +1,259 @@
1
+ /**
2
+ * @file Sync hook keeping `storage_artifacts.status` in lockstep
3
+ * with `raw_documents.raw_storage_status`.
4
+ *
5
+ * Step 7 of the storage-sibling plan. Every existing raw-storage
6
+ * transition (upload finalize, reconciler success/failure, cleanup
7
+ * success/failure) calls this hook after mutating `raw_documents`
8
+ * so the paired `storage_artifacts` row tracks the same lifecycle.
9
+ *
10
+ * v1 keeps `raw_documents` as the source of truth for document-
11
+ * backed uploads — the artifact row is a synchronized projection.
12
+ * The follow-up Webapp Storage UI PR (source plan Phase 8) makes
13
+ * `storage_artifacts` the source of truth and switches the document
14
+ * formatter to a join-projection. Until then, the helper guarantees
15
+ * both rows agree.
16
+ *
17
+ * Status mapping (plan rev 6 §Step 7):
18
+ *
19
+ * pointer_recorded (with external_uri / pointer artifact) → 'stored'
20
+ * pointer_recorded (no artifact linked) → no-op
21
+ * blob_stored → 'stored'
22
+ * blob_pending → 'pending'
23
+ * blob_uploading → 'pending' (transient)
24
+ * blob_available → 'available'
25
+ * blob_archival_failed → 'failed'
26
+ * raw_storage_failed → 'failed'
27
+ * blob_tombstoned → 'deleted'
28
+ * blob_deleted → 'deleted'
29
+ * inline_text_stored → no-op (inline; no artifact)
30
+ */
31
+ import { markArchivalFailedWithClient, promoteToAvailableWithClient, } from './raw-storage-reconciliation-repository.js';
32
+ import { buildLastError } from './raw-document-status-repository.js';
33
+ /**
34
+ * Canonical raw_storage cleanup-failure envelope. Persisted to both
35
+ * `raw_documents.last_error` (via `markCleanupFailedAndSyncArtifact`)
36
+ * and the linked `storage_artifacts.last_error`. The provider's raw
37
+ * exception message is funneled through `buildLastError` so the
38
+ * central `sanitizeLastErrorMessage` cap (1 KiB) and control-char
39
+ * collapse apply uniformly — multi-line stack traces, sensitive
40
+ * URLs in error blobs, and oversized provider envelopes never reach
41
+ * the JSONB column unfiltered. The `storage_provider` field is
42
+ * appended after sanitization so the envelope shape stays
43
+ * additive on top of the canonical `LastError`.
44
+ */
45
+ export function buildRawStorageCleanupFailureEnvelope(message, storageProvider) {
46
+ return {
47
+ ...buildLastError('raw_storage', 'managed_blob_cleanup_failed', message),
48
+ storage_provider: storageProvider,
49
+ };
50
+ }
51
+ const STATUS_MAP = {
52
+ pointer_recorded: 'stored',
53
+ blob_stored: 'stored',
54
+ blob_pending: 'pending',
55
+ blob_uploading: 'pending',
56
+ blob_available: 'available',
57
+ blob_archival_failed: 'failed',
58
+ raw_storage_failed: 'failed',
59
+ blob_tombstoned: 'deleted',
60
+ blob_deleted: 'deleted',
61
+ };
62
+ /**
63
+ * Map a single `raw_documents` row's new status onto its linked
64
+ * `storage_artifacts` row. Resolves the link inside the same query
65
+ * pair (no separate read) so the hook is safe to call inside the
66
+ * existing transactions that wrap the raw-storage transitions.
67
+ *
68
+ * No-op (silently) when:
69
+ * - the document is not linked to an artifact (`storage_artifact_id IS NULL`),
70
+ * - the new raw status maps to no artifact state (e.g. `inline_text_stored`).
71
+ *
72
+ * The function deliberately does NOT scope by `user_id` — the
73
+ * caller has already vouched for the row by holding the row's
74
+ * advisory lock or having authenticated the request that triggered
75
+ * the transition.
76
+ */
77
+ export async function syncArtifactStatusFromRawDocument(client, args) {
78
+ const mapped = STATUS_MAP[args.newRawStatus];
79
+ if (mapped === undefined)
80
+ return;
81
+ const lookup = await client.query(`SELECT storage_artifact_id FROM raw_documents WHERE id = $1`, [args.rawDocumentId]);
82
+ if (lookup.rowCount === 0)
83
+ return;
84
+ const artifactId = lookup.rows[0].storage_artifact_id;
85
+ if (artifactId === null)
86
+ return;
87
+ await applyArtifactTransition(client, artifactId, mapped, args.lastError);
88
+ }
89
+ /**
90
+ * Reconciler paired promote: flip the document to `blob_available`
91
+ * AND sync the artifact in one transaction. Two-row drift is
92
+ * impossible — either both rows commit or both roll back.
93
+ */
94
+ export async function promoteAndSyncArtifact(pool, args) {
95
+ const client = await pool.connect();
96
+ try {
97
+ await client.query('BEGIN');
98
+ const rowCount = await promoteToAvailableWithClient(client, args);
99
+ if (rowCount === 0) {
100
+ await client.query('ROLLBACK');
101
+ return 0;
102
+ }
103
+ await syncArtifactStatusFromRawDocument(client, {
104
+ rawDocumentId: args.rowId,
105
+ newRawStatus: 'blob_available',
106
+ });
107
+ await client.query('COMMIT');
108
+ return rowCount;
109
+ }
110
+ catch (err) {
111
+ await client.query('ROLLBACK').catch(() => undefined);
112
+ throw err;
113
+ }
114
+ finally {
115
+ client.release();
116
+ }
117
+ }
118
+ /**
119
+ * Reconciler paired archival-fail: flip the document to
120
+ * `blob_archival_failed` AND sync the artifact (with the
121
+ * `last_error` envelope) in one transaction.
122
+ */
123
+ export async function markArchivalFailedAndSyncArtifact(pool, args) {
124
+ const client = await pool.connect();
125
+ try {
126
+ await client.query('BEGIN');
127
+ const rowCount = await markArchivalFailedWithClient(client, args);
128
+ if (rowCount === 0) {
129
+ await client.query('ROLLBACK');
130
+ return 0;
131
+ }
132
+ await syncArtifactStatusFromRawDocument(client, {
133
+ rawDocumentId: args.rowId,
134
+ newRawStatus: 'blob_archival_failed',
135
+ lastError: args.lastError,
136
+ });
137
+ await client.query('COMMIT');
138
+ return rowCount;
139
+ }
140
+ catch (err) {
141
+ await client.query('ROLLBACK').catch(() => undefined);
142
+ throw err;
143
+ }
144
+ finally {
145
+ client.release();
146
+ }
147
+ }
148
+ /**
149
+ * Document-keyed paired marker for the cleanup path. Each blob
150
+ * cleanup carries its `rawDocumentId` (see
151
+ * `ManagedBlobRefRow.rawDocumentId`) so the sync never needs to
152
+ * disambiguate by URI. The raw_documents UPDATE is owner-scoped;
153
+ * if zero rows match (cross-user mismatch or already-terminal),
154
+ * the artifact sync is skipped — preventing a mismatched caller
155
+ * from flipping another user's artifact.
156
+ */
157
+ export async function markCleanupSuccessAndSyncArtifact(pool, args) {
158
+ const newRawStatus = args.semantics === 'deleted' ? 'blob_deleted' : 'blob_tombstoned';
159
+ const client = await pool.connect();
160
+ try {
161
+ await client.query('BEGIN');
162
+ const result = await client.query(`UPDATE raw_documents
163
+ SET raw_storage_status = $1, updated_at = NOW()
164
+ WHERE user_id = $2 AND id = $3`, [newRawStatus, args.userId, args.rawDocumentId]);
165
+ if ((result.rowCount ?? 0) === 0) {
166
+ // Cross-user mismatch or row missing — leave the artifact
167
+ // untouched. The link belongs to another user (or no row);
168
+ // mirroring through id-only would clobber theirs.
169
+ await client.query('ROLLBACK');
170
+ return;
171
+ }
172
+ await syncArtifactStatusFromRawDocument(client, {
173
+ rawDocumentId: args.rawDocumentId,
174
+ newRawStatus,
175
+ });
176
+ await client.query('COMMIT');
177
+ }
178
+ catch (err) {
179
+ await client.query('ROLLBACK').catch(() => undefined);
180
+ throw err;
181
+ }
182
+ finally {
183
+ client.release();
184
+ }
185
+ }
186
+ /**
187
+ * Document-keyed paired failure marker. Mirrors
188
+ * `markCleanupSuccessAndSyncArtifact` but for the failure branch
189
+ * (`raw_storage_failed`). Same owner-scope gating.
190
+ *
191
+ * Retry-friendly: the UPDATE matches on `(user_id, id)` only — a row
192
+ * that is ALREADY `raw_storage_failed` is re-marked so a fresh
193
+ * provider error replaces the prior envelope on both
194
+ * `raw_documents.last_error` AND the linked
195
+ * `storage_artifacts.last_error`. Mirrors the failure-marker pattern
196
+ * elsewhere in the codebase, where retries land the newest, most-
197
+ * useful error rather than discarding it. Cross-user mismatches
198
+ * still roll back via the owner-scoped WHERE.
199
+ */
200
+ export async function markCleanupFailedAndSyncArtifact(pool, args) {
201
+ const client = await pool.connect();
202
+ try {
203
+ await client.query('BEGIN');
204
+ const hasError = args.lastError !== undefined;
205
+ const result = await client.query(`UPDATE raw_documents
206
+ SET raw_storage_status = 'raw_storage_failed',
207
+ last_error = CASE WHEN $3::boolean THEN $4::jsonb ELSE last_error END,
208
+ updated_at = NOW()
209
+ WHERE user_id = $1 AND id = $2`, [
210
+ args.userId,
211
+ args.rawDocumentId,
212
+ hasError,
213
+ hasError ? JSON.stringify(args.lastError) : null,
214
+ ]);
215
+ if ((result.rowCount ?? 0) === 0) {
216
+ await client.query('ROLLBACK');
217
+ return;
218
+ }
219
+ await syncArtifactStatusFromRawDocument(client, {
220
+ rawDocumentId: args.rawDocumentId,
221
+ newRawStatus: 'raw_storage_failed',
222
+ lastError: args.lastError,
223
+ });
224
+ await client.query('COMMIT');
225
+ }
226
+ catch (err) {
227
+ await client.query('ROLLBACK').catch(() => undefined);
228
+ throw err;
229
+ }
230
+ finally {
231
+ client.release();
232
+ }
233
+ }
234
+ async function applyArtifactTransition(client, artifactId, mapped, lastError) {
235
+ if (mapped === 'deleted') {
236
+ await client.query(`UPDATE storage_artifacts
237
+ SET status = 'deleted',
238
+ deleted_at = COALESCE(deleted_at, NOW()),
239
+ delete_attempt_id = NULL,
240
+ updated_at = NOW()
241
+ WHERE id = $1`, [artifactId]);
242
+ return;
243
+ }
244
+ if (mapped === 'failed') {
245
+ await client.query(`UPDATE storage_artifacts
246
+ SET status = 'failed',
247
+ last_error = COALESCE($2::jsonb, last_error),
248
+ updated_at = NOW()
249
+ WHERE id = $1`, [artifactId, lastError === undefined ? null : JSON.stringify(lastError)]);
250
+ return;
251
+ }
252
+ // Success transitions clear last_error so a retry path doesn't
253
+ // surface a stale envelope alongside `status='available'`.
254
+ await client.query(`UPDATE storage_artifacts
255
+ SET status = $2,
256
+ last_error = NULL,
257
+ updated_at = NOW()
258
+ WHERE id = $1`, [artifactId, mapped]);
259
+ }
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Phase-3 managed-blob helpers for the document pipeline.
3
+ *
4
+ * Split out of `raw-document-repository.ts` to keep that module under
5
+ * the workspace 400-LOC cap as the managed-blob surface grew. This
6
+ * module owns every read/update that touches the
7
+ * `storage_mode='managed_blob'` slice of `raw_documents`:
8
+ *
9
+ * - Lookups for blob URIs that need cleanup
10
+ * (`listManagedBlobs*`, `listOrphanedManagedBlobs*`).
11
+ * - The post-upload row-promotion helper
12
+ * (`updateRawDocumentBlobStorageWithClient`).
13
+ *
14
+ * Cleanup state-machine markers used to live here as URI-keyed
15
+ * updates; the paired artifact-sync implementation replaced them with the id-keyed paired helpers
16
+ * in `db/raw-doc-artifact-sync.ts`.
17
+ *
18
+ * The base registry CRUD (insert / list / get / soft-delete /
19
+ * source-site lookups) and the indexer hash setter stay in
20
+ * `raw-document-repository.ts` so this module can stay tightly
21
+ * scoped to the managed-blob lifecycle.
22
+ *
23
+ * No row-mapping helpers are needed here — every function returns
24
+ * `(storage_provider, storage_uri)` tuples or executes UPDATEs, so
25
+ * the snake_case → camelCase mapping the registry CRUD needs lives
26
+ * with the registry helpers, not here.
27
+ */
28
+ import pg from 'pg';
29
+ /** Shape returned by every managed-blob lookup in this module.
30
+ * `rawDocumentId` lets the cleanup loop sync the linked
31
+ * `storage_artifacts` row by id — URIs are not globally unique
32
+ * across documents, so id-keyed sync removes the ambiguity.
33
+ * `rawStorageMetadata` carries the provider-specific sidecar so
34
+ * `cleanupManagedBlobs` can pass it as opaque hints to
35
+ * `RawContentStore.delete` (e.g. the Filecoin adapter uses
36
+ * `filecoin.copies[].piece_id` + `data_set_id` to delete a
37
+ * freshly-uploaded piece without relying on the SDK's
38
+ * CID→active-piece lookup). Non-Filecoin adapters ignore it. */
39
+ export interface ManagedBlobRefRow {
40
+ rawDocumentId: string;
41
+ storageProvider: string;
42
+ storageUri: string;
43
+ rawStorageMetadata: Record<string, unknown>;
44
+ }
45
+ /**
46
+ * `(storage_provider, storage_uri)` tuples for the *active* managed-blob
47
+ * row of a single document. Caller hands the result to
48
+ * `cleanupManagedBlobs()` *after* the DB transaction commits. Active-only
49
+ * (deleted_at IS NULL) — soft-deleted rows are skipped to avoid
50
+ * double-deleting blobs after a prior cascade.
51
+ */
52
+ export declare function listManagedBlobsForDocumentWithClient(client: pg.Pool | pg.PoolClient, userId: string, documentId: string): Promise<ManagedBlobRefRow[]>;
53
+ /**
54
+ * Source-scoped sibling of `listManagedBlobsForDocumentWithClient`.
55
+ * Used by `deleteBySource` so source-reset can hand a complete blob
56
+ * list to the post-commit cleanup pass.
57
+ */
58
+ export declare function listManagedBlobsBySourceWithClient(client: pg.PoolClient, userId: string, sourceSite: string): Promise<ManagedBlobRefRow[]>;
59
+ /**
60
+ * Active managed-blob URIs for a user (`userId` set) or globally
61
+ * (`userId` undefined). Used by `deleteAll`'s pre-hard-delete cleanup
62
+ * hook so the wipe can flush the blob store before dropping the rows.
63
+ */
64
+ export declare function listManagedBlobsForUser(pool: pg.Pool, userId?: string): Promise<ManagedBlobRefRow[]>;
65
+ /**
66
+ * Retry-safe lookup: managed-blob URIs that need cleanup *for a
67
+ * soft-deleted document* whose prior cleanup pass failed. Consulted by
68
+ * a retry of `DELETE /v1/documents/:id` so it can re-attempt
69
+ * `store.delete()` on the orphan instead of returning
70
+ * `already_deleted=true` while the blob is still present.
71
+ *
72
+ * Filters: `deleted_at IS NOT NULL` (only soft-deleted rows), and
73
+ * `raw_storage_status = 'raw_storage_failed'` (only the rows whose
74
+ * cleanup failed — `blob_deleted` rows are already clean).
75
+ */
76
+ export declare function listOrphanedManagedBlobsForDocument(pool: pg.Pool, userId: string, documentId: string): Promise<ManagedBlobRefRow[]>;
77
+ /**
78
+ * Source-scoped sibling of `listOrphanedManagedBlobsForDocument`. Used
79
+ * by the retry path of `POST /v1/memories/reset-source` so a second
80
+ * reset-by-source after a partially-failed cleanup can still find the
81
+ * orphan blobs to retry on.
82
+ */
83
+ export declare function listOrphanedManagedBlobsBySource(pool: pg.Pool, userId: string, sourceSite: string): Promise<ManagedBlobRefRow[]>;
84
+ /**
85
+ * the claim step: short-tx slot claim. Writes `raw_storage_status =
86
+ * 'blob_uploading'` + claim_id + claimed_at + plaintext content_hash +
87
+ * plaintext size_bytes.
88
+ *
89
+ * `clearDurableUri` (rev-fix HIGH 2) selects between the two
90
+ * recovery paths:
91
+ * - `true` (reclaimAndUpload): the row may carry a stale URI /
92
+ * provider / metadata from a prior failed attempt — clear them
93
+ * so a crash before the durable URI-write step cannot leave a finalize-recovery
94
+ * window pointing at the old bytes. `raw_storage_pending_since`
95
+ * is cleared too (the row is leaving the pending state).
96
+ * - `false` (finalize-recovery): preserve `storage_uri`,
97
+ * `storage_provider`, and `raw_storage_metadata`. the finalization step alone
98
+ * promotes the row; β + β2 are skipped because the bytes are
99
+ * already durable on the provider.
100
+ */
101
+ export declare function claimUploadSlotWithClient(client: pg.PoolClient, args: {
102
+ userId: string;
103
+ documentId: string;
104
+ claimId: string;
105
+ contentHash: string;
106
+ sizeBytes: number;
107
+ clearDurableUri: boolean;
108
+ }): Promise<number>;
109
+ /**
110
+ * the durable URI-write step: short-tx durable URI record. Writes storage_mode,
111
+ * storage_uri, storage_provider, raw_storage_metadata. Status STAYS
112
+ * `blob_uploading` — the finalization step flips it. Guarded by claim_id so a
113
+ * stale claim's β2 cannot clobber a row another worker has since
114
+ * reclaimed. Returns rowCount; caller compensates with a delete on 0.
115
+ */
116
+ export declare function recordUploadResultWithClient(client: pg.PoolClient | pg.Pool, args: {
117
+ userId: string;
118
+ documentId: string;
119
+ claimId: string;
120
+ storageUri: string;
121
+ storageProvider: string;
122
+ rawStorageMetadata: Record<string, unknown>;
123
+ }): Promise<number>;
124
+ /**
125
+ * the finalization step: compare-and-set status flip. Writes the final
126
+ * raw_storage_status, sets pending_since when entering blob_pending,
127
+ * clears the claim, and layer-scopes the last_error clear (drops
128
+ * raw_storage envelopes only). Guarded on claim_id + storage_uri NOT
129
+ * NULL. Returns rowCount.
130
+ */
131
+ export declare function finalizeUploadStatusWithClient(client: pg.PoolClient | pg.Pool, args: {
132
+ userId: string;
133
+ documentId: string;
134
+ claimId: string;
135
+ finalStatus: 'blob_stored' | 'blob_pending' | 'blob_available';
136
+ }): Promise<number>;
137
+ /**
138
+ * the provider-write step failure-path: clear an active claim and flip the row to
139
+ * raw_storage_failed with a sanitized last_error envelope. Guarded
140
+ * by claim_id so a stale claim's failure marker cannot overwrite a
141
+ * subsequent successful retry. Returns rowCount.
142
+ */
143
+ export declare function failClaimedUploadWithClient(client: pg.PoolClient | pg.Pool, args: {
144
+ userId: string;
145
+ documentId: string;
146
+ claimId: string;
147
+ lastError: Record<string, unknown>;
148
+ }): Promise<number>;