@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,300 @@
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
+ // ---------------------------------------------------------------------------
29
+ // Cleanup-target lookups (active blobs for live cascades).
30
+ // ---------------------------------------------------------------------------
31
+ /**
32
+ * `(storage_provider, storage_uri)` tuples for the *active* managed-blob
33
+ * row of a single document. Caller hands the result to
34
+ * `cleanupManagedBlobs()` *after* the DB transaction commits. Active-only
35
+ * (deleted_at IS NULL) — soft-deleted rows are skipped to avoid
36
+ * double-deleting blobs after a prior cascade.
37
+ */
38
+ export async function listManagedBlobsForDocumentWithClient(client, userId, documentId) {
39
+ const result = await client.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
40
+ FROM raw_documents
41
+ WHERE id = $1
42
+ AND user_id = $2
43
+ AND storage_mode = 'managed_blob'
44
+ AND storage_uri IS NOT NULL
45
+ AND storage_provider IS NOT NULL
46
+ AND deleted_at IS NULL`, [documentId, userId]);
47
+ return result.rows.map(toManagedBlobRef);
48
+ }
49
+ /**
50
+ * Source-scoped sibling of `listManagedBlobsForDocumentWithClient`.
51
+ * Used by `deleteBySource` so source-reset can hand a complete blob
52
+ * list to the post-commit cleanup pass.
53
+ */
54
+ export async function listManagedBlobsBySourceWithClient(client, userId, sourceSite) {
55
+ const result = await client.query(`SELECT d.id, d.storage_provider, d.storage_uri, d.raw_storage_metadata
56
+ FROM raw_documents d
57
+ JOIN raw_sources s ON s.id = d.raw_source_id
58
+ WHERE d.user_id = $1
59
+ AND s.source_site = $2
60
+ AND d.storage_mode = 'managed_blob'
61
+ AND d.storage_uri IS NOT NULL
62
+ AND d.storage_provider IS NOT NULL
63
+ AND d.deleted_at IS NULL`, [userId, sourceSite]);
64
+ return result.rows.map(toManagedBlobRef);
65
+ }
66
+ /**
67
+ * Active managed-blob URIs for a user (`userId` set) or globally
68
+ * (`userId` undefined). Used by `deleteAll`'s pre-hard-delete cleanup
69
+ * hook so the wipe can flush the blob store before dropping the rows.
70
+ */
71
+ export async function listManagedBlobsForUser(pool, userId) {
72
+ const where = userId === undefined ? 'WHERE' : 'WHERE user_id = $1 AND';
73
+ const params = userId === undefined ? [] : [userId];
74
+ const result = await pool.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
75
+ FROM raw_documents
76
+ ${where}
77
+ storage_mode = 'managed_blob'
78
+ AND storage_uri IS NOT NULL
79
+ AND storage_provider IS NOT NULL
80
+ AND deleted_at IS NULL`, params);
81
+ return result.rows.map(toManagedBlobRef);
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // Retry-target lookups (orphan blobs left by a previously-failed cleanup).
85
+ // ---------------------------------------------------------------------------
86
+ /**
87
+ * Retry-safe lookup: managed-blob URIs that need cleanup *for a
88
+ * soft-deleted document* whose prior cleanup pass failed. Consulted by
89
+ * a retry of `DELETE /v1/documents/:id` so it can re-attempt
90
+ * `store.delete()` on the orphan instead of returning
91
+ * `already_deleted=true` while the blob is still present.
92
+ *
93
+ * Filters: `deleted_at IS NOT NULL` (only soft-deleted rows), and
94
+ * `raw_storage_status = 'raw_storage_failed'` (only the rows whose
95
+ * cleanup failed — `blob_deleted` rows are already clean).
96
+ */
97
+ export async function listOrphanedManagedBlobsForDocument(pool, userId, documentId) {
98
+ const result = await pool.query(`SELECT id, storage_provider, storage_uri, raw_storage_metadata
99
+ FROM raw_documents
100
+ WHERE id = $1
101
+ AND user_id = $2
102
+ AND storage_mode = 'managed_blob'
103
+ AND storage_uri IS NOT NULL
104
+ AND storage_provider IS NOT NULL
105
+ AND deleted_at IS NOT NULL
106
+ AND raw_storage_status = 'raw_storage_failed'`, [documentId, userId]);
107
+ return result.rows.map(toManagedBlobRef);
108
+ }
109
+ /**
110
+ * Source-scoped sibling of `listOrphanedManagedBlobsForDocument`. Used
111
+ * by the retry path of `POST /v1/memories/reset-source` so a second
112
+ * reset-by-source after a partially-failed cleanup can still find the
113
+ * orphan blobs to retry on.
114
+ */
115
+ export async function listOrphanedManagedBlobsBySource(pool, userId, sourceSite) {
116
+ const result = await pool.query(`SELECT d.id, d.storage_provider, d.storage_uri, d.raw_storage_metadata
117
+ FROM raw_documents d
118
+ JOIN raw_sources s ON s.id = d.raw_source_id
119
+ WHERE d.user_id = $1
120
+ AND s.source_site = $2
121
+ AND d.storage_mode = 'managed_blob'
122
+ AND d.storage_uri IS NOT NULL
123
+ AND d.storage_provider IS NOT NULL
124
+ AND d.deleted_at IS NOT NULL
125
+ AND d.raw_storage_status = 'raw_storage_failed'`, [userId, sourceSite]);
126
+ return result.rows.map(toManagedBlobRef);
127
+ }
128
+ // the paired artifact-sync implementation superseded the URI-keyed cleanup markers
129
+ // (`markRawStorageDeletedByUri`, `markRawStorageTombstonedByUri`,
130
+ // `markRawStorageFailedByUri`) with the id-keyed paired helpers in
131
+ // `db/raw-doc-artifact-sync.ts`. The id-keyed form is unambiguous
132
+ // when multiple documents share a `storage_uri`.
133
+ // the paired artifact-sync implementation superseded `markCleanupSuccess` with
134
+ // `markCleanupSuccessAndSyncArtifact` in `db/raw-doc-artifact-sync.ts`,
135
+ // which pairs the marker write with the artifact sync in one
136
+ // transaction.
137
+ // ---------------------------------------------------------------------------
138
+ // the managed-upload upload-pipeline α/β/β2/γ helpers.
139
+ // ---------------------------------------------------------------------------
140
+ /**
141
+ * the claim step: short-tx slot claim. Writes `raw_storage_status =
142
+ * 'blob_uploading'` + claim_id + claimed_at + plaintext content_hash +
143
+ * plaintext size_bytes.
144
+ *
145
+ * `clearDurableUri` (rev-fix HIGH 2) selects between the two
146
+ * recovery paths:
147
+ * - `true` (reclaimAndUpload): the row may carry a stale URI /
148
+ * provider / metadata from a prior failed attempt — clear them
149
+ * so a crash before the durable URI-write step cannot leave a finalize-recovery
150
+ * window pointing at the old bytes. `raw_storage_pending_since`
151
+ * is cleared too (the row is leaving the pending state).
152
+ * - `false` (finalize-recovery): preserve `storage_uri`,
153
+ * `storage_provider`, and `raw_storage_metadata`. the finalization step alone
154
+ * promotes the row; β + β2 are skipped because the bytes are
155
+ * already durable on the provider.
156
+ */
157
+ export async function claimUploadSlotWithClient(client, args) {
158
+ if (args.clearDurableUri) {
159
+ const result = await client.query(`UPDATE raw_documents
160
+ SET raw_storage_status = 'blob_uploading',
161
+ raw_storage_claim_id = $1,
162
+ raw_storage_claimed_at = NOW(),
163
+ content_hash = $2,
164
+ size_bytes = $3,
165
+ storage_uri = NULL,
166
+ storage_provider = NULL,
167
+ raw_storage_metadata = '{}'::jsonb,
168
+ raw_storage_pending_since = NULL,
169
+ updated_at = NOW()
170
+ WHERE id = $4 AND user_id = $5 AND deleted_at IS NULL`, [args.claimId, args.contentHash, args.sizeBytes, args.documentId, args.userId]);
171
+ return result.rowCount ?? 0;
172
+ }
173
+ const result = await client.query(`UPDATE raw_documents
174
+ SET raw_storage_status = 'blob_uploading',
175
+ raw_storage_claim_id = $1,
176
+ raw_storage_claimed_at = NOW(),
177
+ content_hash = $2,
178
+ size_bytes = $3,
179
+ updated_at = NOW()
180
+ WHERE id = $4 AND user_id = $5 AND deleted_at IS NULL`, [args.claimId, args.contentHash, args.sizeBytes, args.documentId, args.userId]);
181
+ return result.rowCount ?? 0;
182
+ }
183
+ /**
184
+ * the durable URI-write step: short-tx durable URI record. Writes storage_mode,
185
+ * storage_uri, storage_provider, raw_storage_metadata. Status STAYS
186
+ * `blob_uploading` — the finalization step flips it. Guarded by claim_id so a
187
+ * stale claim's β2 cannot clobber a row another worker has since
188
+ * reclaimed. Returns rowCount; caller compensates with a delete on 0.
189
+ */
190
+ export async function recordUploadResultWithClient(client, args) {
191
+ const result = await client.query(`UPDATE raw_documents
192
+ SET storage_mode = 'managed_blob',
193
+ storage_uri = $1,
194
+ storage_provider = $2,
195
+ raw_storage_metadata = $3::jsonb,
196
+ updated_at = NOW()
197
+ WHERE id = $4 AND user_id = $5
198
+ AND raw_storage_status = 'blob_uploading'
199
+ AND raw_storage_claim_id = $6
200
+ AND deleted_at IS NULL`, [
201
+ args.storageUri,
202
+ args.storageProvider,
203
+ JSON.stringify(args.rawStorageMetadata),
204
+ args.documentId,
205
+ args.userId,
206
+ args.claimId,
207
+ ]);
208
+ return result.rowCount ?? 0;
209
+ }
210
+ /**
211
+ * the finalization step: compare-and-set status flip. Writes the final
212
+ * raw_storage_status, sets pending_since when entering blob_pending,
213
+ * clears the claim, and layer-scopes the last_error clear (drops
214
+ * raw_storage envelopes only). Guarded on claim_id + storage_uri NOT
215
+ * NULL. Returns rowCount.
216
+ */
217
+ export async function finalizeUploadStatusWithClient(client, args) {
218
+ const result = await client.query(`UPDATE raw_documents
219
+ SET raw_storage_status = $1,
220
+ raw_storage_claim_id = NULL,
221
+ raw_storage_claimed_at = NULL,
222
+ raw_storage_pending_since = CASE
223
+ WHEN $1 = 'blob_pending' THEN NOW()
224
+ ELSE NULL
225
+ END,
226
+ last_error = CASE
227
+ WHEN last_error IS NOT NULL AND last_error->>'layer' = 'raw_storage'
228
+ THEN NULL
229
+ ELSE last_error
230
+ END,
231
+ updated_at = NOW()
232
+ WHERE id = $2 AND user_id = $3
233
+ AND raw_storage_status = 'blob_uploading'
234
+ AND raw_storage_claim_id = $4
235
+ AND storage_uri IS NOT NULL
236
+ AND deleted_at IS NULL`, [args.finalStatus, args.documentId, args.userId, args.claimId]);
237
+ return result.rowCount ?? 0;
238
+ }
239
+ /**
240
+ * the provider-write step failure-path: clear an active claim and flip the row to
241
+ * raw_storage_failed with a sanitized last_error envelope. Guarded
242
+ * by claim_id so a stale claim's failure marker cannot overwrite a
243
+ * subsequent successful retry. Returns rowCount.
244
+ */
245
+ export async function failClaimedUploadWithClient(client, args) {
246
+ const result = await client.query(`UPDATE raw_documents
247
+ SET raw_storage_status = 'raw_storage_failed',
248
+ raw_storage_claim_id = NULL,
249
+ raw_storage_claimed_at = NULL,
250
+ last_error = $1::jsonb,
251
+ updated_at = NOW()
252
+ WHERE id = $2 AND user_id = $3 AND raw_storage_claim_id = $4`, [JSON.stringify(args.lastError), args.documentId, args.userId, args.claimId]);
253
+ return result.rowCount ?? 0;
254
+ }
255
+ /**
256
+ * Cleanup-failure marker. Called from a soft-delete cascade after the
257
+ * DB transaction has committed when the post-commit blob delete
258
+ * raised: flips `raw_storage_status` to `raw_storage_failed` on the
259
+ * row backing `storageUri`. The row is *already* soft-deleted
260
+ * (deleted_at set), so the explicit `WHERE deleted_at IS NOT NULL`
261
+ * guards against accidentally clobbering an active row.
262
+ *
263
+ * Intentionally scoped by `storage_uri` (and user) rather than `id` so
264
+ * an orphaned blob can't be associated with the wrong tombstoned doc
265
+ * in case of duplicate URIs (defensive — adapter URIs are unique).
266
+ */
267
+ // the paired artifact-sync implementation superseded `markRawStorageFailedByUri` with the id-keyed
268
+ // paired helper `markCleanupFailedAndSyncArtifact` in
269
+ // `db/raw-doc-artifact-sync.ts`; the URI-keyed form is gone.
270
+ // the managed-upload superseded the legacy single-shot
271
+ // `updateRawDocumentBlobStorageWithClient` helper. The upload service
272
+ // now drives the row's promotion through the α/β/β2/γ helpers above:
273
+ // `claimUploadSlotWithClient` (the claim step) writes plaintext hash + size +
274
+ // claim_id with status='blob_uploading';
275
+ // `recordUploadResultWithClient` (the durable URI-write step) records URI/provider/
276
+ // metadata while status stays 'blob_uploading';
277
+ // `finalizeUploadStatusWithClient` (the finalization step) flips to the final
278
+ // terminal status and clears the claim. The legacy helper would have
279
+ // fought the new split — removed cleanly rather than left as a
280
+ // dead-code attractor.
281
+ // ---------------------------------------------------------------------------
282
+ // Internal mappers
283
+ // ---------------------------------------------------------------------------
284
+ function toManagedBlobRef(row) {
285
+ // `raw_storage_metadata` is a `jsonb` column; pg returns it as
286
+ // a parsed object (or `null` on a row that never set it). The
287
+ // cleanup loop passes this straight through to
288
+ // `RawContentStore.delete` as opaque hints — the adapter is
289
+ // responsible for narrowing/validating its own provider sibling.
290
+ const metadata = row.raw_storage_metadata;
291
+ const rawStorageMetadata = metadata && typeof metadata === 'object' && !Array.isArray(metadata)
292
+ ? metadata
293
+ : {};
294
+ return {
295
+ rawDocumentId: row.id,
296
+ storageProvider: row.storage_provider,
297
+ storageUri: row.storage_uri,
298
+ rawStorageMetadata,
299
+ };
300
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Postgres queries for the document pipeline (Phase 1 — pointer-only).
3
+ *
4
+ * Function-style module mirroring `repository-write.ts`. The split
5
+ * `*WithClient` variants exist so `deleteBySource` can include
6
+ * document soft-deletion inside its existing transaction.
7
+ *
8
+ * Phase 1 contract: callers only ever pass `storageMode = 'pointer_only'`.
9
+ * The CHECK constraint on `raw_documents.storage_mode` accepts
10
+ * `managed_blob` and `inline_small_text` as well, but the service layer
11
+ * rejects them until those phases land. No raw content is ever written
12
+ * by this module — `storage_uri` and `storage_provider` are NEVER set
13
+ * in Phase 1.
14
+ */
15
+ import pg from 'pg';
16
+ import type { ListRawDocumentsInput, RawDocumentRow, RawSourceRow, RegisterRawDocumentInput, UpsertRawSourceInput } from './raw-document-types.js';
17
+ /**
18
+ * Full column set on `raw_documents`. Exported so the Phase D list /
19
+ * recovery / passport-feed repositories (which moved to focused
20
+ * modules to keep this file under the 400 LOC rule) can build their
21
+ * SELECT lists from the same canonical source.
22
+ */
23
+ export declare const RAW_DOCUMENT_COLUMNS = "id, user_id, raw_source_id, external_id, external_uri, display_name, mime_type, size_bytes, content_hash, provider_version, source_modified_at, storage_mode, storage_uri, storage_provider, registration_status, raw_storage_status, raw_storage_metadata, metadata, created_at, updated_at, deleted_at, indexed_content_hash, indexed_at, extraction_status, semantic_index_status, last_error, raw_storage_claim_id, raw_storage_claimed_at, raw_storage_last_checked_at, raw_storage_next_check_at, raw_storage_reconcile_attempts, raw_storage_pending_since, storage_artifact_id";
24
+ /**
25
+ * Idempotently insert (or update) a `raw_sources` row keyed on
26
+ * `(user_id, source_site, provider, COALESCE(account_id, ''))`. Returns
27
+ * the persisted row.
28
+ *
29
+ * On conflict the storage_mode + retention/consent policies are
30
+ * **overwritten** with the input values — those describe the caller's
31
+ * current intent, and silently keeping a stale policy on the existing
32
+ * row would mask configuration drift.
33
+ */
34
+ export declare function upsertRawSource(pool: pg.Pool, input: UpsertRawSourceInput): Promise<RawSourceRow>;
35
+ /**
36
+ * Idempotently register a `raw_documents` row. Returns
37
+ * `{ document, created: true }` when a fresh row was inserted, or
38
+ * `{ document, created: false }` when an active row already existed
39
+ * (matched on `idx_raw_documents_active_unique`).
40
+ *
41
+ * Implemented as a single atomic `INSERT ... ON CONFLICT DO NOTHING
42
+ * RETURNING ...` followed by a fallback SELECT when no row was
43
+ * inserted. Two concurrent calls for the same namespace see exactly
44
+ * one INSERT win and one fallback SELECT — neither caller observes
45
+ * the unique-violation error that the previous find-then-insert
46
+ * pattern could surface.
47
+ *
48
+ * Soft-deleted rows are excluded by the partial unique index, so a
49
+ * re-registration after `softDeleteRawDocument` always inserts a new id.
50
+ */
51
+ export declare function registerRawDocument(pool: pg.Pool, input: RegisterRawDocumentInput): Promise<{
52
+ document: RawDocumentRow;
53
+ created: boolean;
54
+ }>;
55
+ /**
56
+ * Fetch one active document by id, scoped to a user. Returns null when
57
+ * the row is missing, deleted, or owned by a different user.
58
+ */
59
+ export declare function getRawDocumentById(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<RawDocumentRow | null>;
60
+ /**
61
+ * List active documents for a user, optionally filtered by source_site.
62
+ * Limit is clamped to [1, 100]; offset is non-negative.
63
+ */
64
+ export declare function listRawDocuments(pool: pg.Pool, input: ListRawDocumentsInput): Promise<RawDocumentRow[]>;
65
+ /**
66
+ * Soft-delete one document by id, scoped to a user. Returns true when
67
+ * a row transitioned from active to deleted; false when the row was
68
+ * missing, already deleted, or owned by a different user.
69
+ */
70
+ export declare function softDeleteRawDocument(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<boolean>;
71
+ /**
72
+ * Fetch one active document together with its parent source's
73
+ * `source_site`. The Phase 2 indexer uses `source_site` to populate the
74
+ * `memories.source_site` column on derived memories without needing a
75
+ * second round-trip.
76
+ */
77
+ export declare function getDocumentWithSourceSite(q: pg.Pool | pg.PoolClient, userId: string, id: string): Promise<{
78
+ document: RawDocumentRow;
79
+ sourceSite: string;
80
+ } | null>;
81
+ /**
82
+ * Update the indexed-text fingerprint on an active document. Called by
83
+ * the Phase 2 indexer on a successful re-chunk pass so subsequent index
84
+ * calls can short-circuit on byte-identical input.
85
+ *
86
+ * Writes only `indexed_content_hash` + `indexed_at` (and `updated_at`).
87
+ * `content_hash` is reserved for the upstream/provider raw-content
88
+ * fingerprint and must not be touched by the indexer.
89
+ */
90
+ export declare function setRawDocumentIndexedHashWithClient(client: pg.PoolClient | pg.Pool, userId: string, id: string, indexedContentHash: string): Promise<void>;
91
+ /**
92
+ * Soft-delete every active document whose source_site matches.
93
+ * Joins through `raw_sources` so callers don't need to know
94
+ * `raw_source_id`. Used by `deleteBySource` to keep document deletion
95
+ * inside the same transactional reset.
96
+ */
97
+ export declare function deleteDocumentsBySourceWithClient(client: pg.PoolClient, userId: string, sourceSite: string): Promise<number>;
98
+ /**
99
+ * Map a flat Postgres row into the typed `RawDocumentRow` shape.
100
+ * Exported so the Phase D list / recovery / passport-feed
101
+ * repositories can reuse it without re-implementing the column-by-
102
+ * column projection.
103
+ */
104
+ export declare function rowToRawDocument(row: Record<string, unknown>): RawDocumentRow;