@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,264 @@
1
+ /**
2
+ * @file Document-route response schemas.
3
+ *
4
+ * Extracted from `schemas/responses.ts` (which was at 435 non-comment
5
+ * LOC after Slice 3, over the workspace's 400 rule). The shapes are
6
+ * unchanged — this is a pure relocation. `responses.ts` re-exports
7
+ * each symbol so existing imports through `import * as R from
8
+ * './responses'` keep working.
9
+ *
10
+ * Field naming follows the wire contract (snake_case). Per-layer
11
+ * per-layer status enums + `last_error` envelope come from the
12
+ * shared `document-status-envelope` module so the same definitions
13
+ * back both `RawDocumentResponseSchema` (full row) and the
14
+ * passport-feed grouped-row schema.
15
+ */
16
+ import { z } from './zod-setup.js';
17
+ import { ExtractionStatusEnumSchema, LastErrorEnvelopeSchema, RawStorageStatusEnumSchema, SemanticIndexStatusEnumSchema, } from './document-status-envelope.js';
18
+ /**
19
+ * Wire shape for `raw_storage_metadata`. Strict allowlist:
20
+ * - `codec`: `{ name, version }` only. AES-GCM internals
21
+ * (`nonce`/`tag`/`key_id`/`encoded_*`) NEVER reach the wire.
22
+ * - `filecoin`: public projection
23
+ * `{ ipfs_cid?, piece_cid?, copy_count, provider_ids,
24
+ * copy_statuses }` (Phase 4 renamed the legacy ambiguous
25
+ * `cid` slot to `ipfs_cid`). The structured internal
26
+ * `copies: [{provider_id, status}]` blob is flattened by
27
+ * `projectFilecoinPublicMetadata` at the formatter; legacy
28
+ * onramp fields (`onramp`, `gateway_url`, `deal_ids`,
29
+ * `onramp_status`, `deal_status`, `retrieval_verified_at`,
30
+ * `last_verified_at`) and the legacy `cid` slot are NOT
31
+ * emitted — the strict schema rejects them at the wire.
32
+ * - `upload_result` (internal upload sidecar) is NOT declared,
33
+ * so any leak fails the response-shape validator.
34
+ *
35
+ * The formatter (`formatPublicRawStorageMetadata`) is the single
36
+ * source of redaction; this schema is the deny-by-default lock at
37
+ * the route boundary. Every nested object is `.strict()` so a
38
+ * formatter regression that lets ANY unknown key through fails the
39
+ * `validateResponse` middleware instead of silently shipping.
40
+ */
41
+ export const PublicRawStorageMetadataSchema = z.object({
42
+ codec: z.object({
43
+ name: z.enum(['none', 'aes_gcm']),
44
+ version: z.number(),
45
+ }).strict().optional(),
46
+ filecoin: z.object({
47
+ ipfs_cid: z.string().optional(),
48
+ piece_cid: z.string().optional(),
49
+ copy_count: z.number().int().nonnegative().optional(),
50
+ provider_ids: z.array(z.string()).optional(),
51
+ copy_statuses: z.array(z.string()).optional(),
52
+ }).strict().optional(),
53
+ }).strict().openapi({
54
+ description: 'Public-facing raw_storage_metadata. STRICTLY allowlisted: codec ' +
55
+ 'emits only name+version (AES-GCM internals never reach the wire); ' +
56
+ 'filecoin emits public fields ' +
57
+ '(ipfs_cid, piece_cid, copy_count, provider_ids, copy_statuses) — ' +
58
+ '`ipfs_cid` is an optional CIDv1 IPFS / CAR-root identity hint ' +
59
+ 'populated by drivers that derive one alongside the PieceCID; the ' +
60
+ 'canonical storage URI stays `filecoin://piece/<piece_cid>` ' +
61
+ 'regardless. The internal structured copies[{provider_id,status}] ' +
62
+ 'shape is flattened at the formatter; upload_result and other ' +
63
+ 'internal sidecars are NEVER emitted. The schema is deny-by-default ' +
64
+ '(`.strict()`) at every level — a formatter regression that lets ' +
65
+ 'unknown keys through fails response-shape validation.',
66
+ });
67
+ /** Wire enum for per-row delete semantics. */
68
+ export const DeleteSemanticsEnumSchema = z.enum(['delete', 'unpin', 'tombstone']).nullable()
69
+ .openapi({
70
+ description: "What AtomicMemory's DELETE call does at the provider boundary " +
71
+ "for this row's storage_provider. `'delete'` = adapter issues the " +
72
+ "provider's removal operation; `'unpin'` = removes AtomicMemory's " +
73
+ "pin but the provider's other peers may continue to serve; " +
74
+ "`'tombstone'` = AtomicMemory stops managing the bytes but the " +
75
+ "decentralized network may still serve. `null` for pointer-only " +
76
+ "rows or providers not registered for cleanup.",
77
+ });
78
+ /**
79
+ * Wire-format shape of a document record. Mirrors `RawDocumentRow`
80
+ * with snake_case keys. `storage_uri` and `storage_provider` are
81
+ * always null until managed-blob storage is configured.
82
+ */
83
+ export const RawDocumentResponseSchema = z.object({
84
+ id: z.string(),
85
+ user_id: z.string(),
86
+ raw_source_id: z.string(),
87
+ external_id: z.string(),
88
+ external_uri: z.string().nullable(),
89
+ display_name: z.string().nullable(),
90
+ mime_type: z.string().nullable(),
91
+ size_bytes: z.number().nullable(),
92
+ content_hash: z.string().nullable(),
93
+ provider_version: z.string().nullable(),
94
+ source_modified_at: z.string().nullable(),
95
+ storage_mode: z.enum(['pointer_only', 'managed_blob', 'inline_small_text']),
96
+ storage_uri: z.string().nullable(),
97
+ storage_provider: z.string().nullable(),
98
+ registration_status: z.enum(['registered', 'registration_failed']),
99
+ raw_storage_status: RawStorageStatusEnumSchema,
100
+ // Public allowlist: `PublicRawStorageMetadata` projects
101
+ // through `formatPublicRawStorageMetadata` so AES-GCM internals,
102
+ // `upload_result`, and any unknown filecoin fields can never reach
103
+ // the wire. Internal structured `copies: [{ provider_id, status }]`
104
+ // flattens to `copy_count` / `provider_ids` / `copy_statuses` via
105
+ // the shared `projectFilecoinPublicMetadata` helper.
106
+ raw_storage_metadata: PublicRawStorageMetadataSchema,
107
+ // Per-row delete-semantics capability. NULL
108
+ // for pointer-only rows and providers the deployment doesn't have
109
+ // registered for cleanup.
110
+ delete_semantics: DeleteSemanticsEnumSchema,
111
+ metadata: z.record(z.string(), z.unknown()),
112
+ created_at: z.string(),
113
+ updated_at: z.string(),
114
+ indexed_content_hash: z.string().nullable(),
115
+ indexed_at: z.string().nullable(),
116
+ // Per-layer status envelope. Sub-schemas in
117
+ // `document-status-envelope.ts`. `'running'` is internal in the
118
+ // synchronous indexer: readers under READ COMMITTED do
119
+ // not observe it because the write lives inside the
120
+ // BEGIN..COMMIT transaction.
121
+ extraction_status: ExtractionStatusEnumSchema,
122
+ semantic_index_status: SemanticIndexStatusEnumSchema,
123
+ last_error: LastErrorEnvelopeSchema,
124
+ // Additive link to the paired `storage_artifacts` row. NULL for
125
+ // pointer-only stubs without `external_uri` and older rows.
126
+ storage_artifact_id: z.string().uuid().nullable(),
127
+ }).openapi({ description: 'Document registry record. snake_case wire format.' });
128
+ export const RegisterDocumentResponseSchema = z.object({
129
+ document: RawDocumentResponseSchema,
130
+ created: z.boolean(),
131
+ }).openapi({
132
+ description: 'Document registration result. `created: true` when a new row was inserted; ' +
133
+ '`false` when an active row with the same (user, source, external_id, version) ' +
134
+ 'already existed.',
135
+ });
136
+ export const ListDocumentsResponseSchema = z.object({
137
+ documents: z.array(RawDocumentResponseSchema),
138
+ count: z.number(),
139
+ }).openapi({ description: 'Paginated document list.' });
140
+ /**
141
+ * Cursor-paginated user-scoped document list. Distinct from
142
+ * `ListDocumentsResponseSchema` (the legacy `/list` shape) because it
143
+ * carries an opaque cursor instead of `count`, matching the
144
+ * "fetch-next-page" UX the document-detail / recovery surfaces
145
+ * need. `next_cursor: null` means the stream is exhausted.
146
+ */
147
+ export const DocumentListRootResponseSchema = z.object({
148
+ documents: z.array(RawDocumentResponseSchema),
149
+ next_cursor: z.string().nullable(),
150
+ }).openapi({ description: 'Cursor-paginated document list.' });
151
+ export const DeleteDocumentResponseSchema = z.object({
152
+ success: z.literal(true),
153
+ already_deleted: z.boolean(),
154
+ }).openapi({
155
+ description: 'Document soft-delete acknowledgement. `already_deleted: true` when the row was ' +
156
+ 'missing or previously tombstoned (idempotent on repeat calls).',
157
+ });
158
+ export const UploadRawDocumentResponseSchema = z.object({
159
+ document_id: z.string(),
160
+ storage_provider: z.string(),
161
+ storage_uri: z.string(),
162
+ // PLAINTEXT content hash — the bytes the caller passed in, not
163
+ // the encoded bytes the adapter stored.
164
+ content_hash: z.string(),
165
+ size_bytes: z.number(),
166
+ // Filecoin uses `'blob_available'` once gateway retrieval is
167
+ // confirmed, immediate providers use `'blob_stored'`, and pending
168
+ // provider acceptances use `'blob_pending'` for the reconciler to
169
+ // promote. `'blob_archival_failed'` is written by the reconciler,
170
+ // never returned from this endpoint.
171
+ raw_storage_status: z.enum(['blob_stored', 'blob_pending', 'blob_available']),
172
+ storage_mode: z.literal('managed_blob'),
173
+ // Public allowlist (same as `RawDocumentResponseSchema`).
174
+ // Internal `upload_result` sidecar + AES-GCM internals NEVER reach
175
+ // the wire; internal `copies: [{ provider_id, status }]` flattens
176
+ // to public scalar `copy_count` / `provider_ids` / `copy_statuses`.
177
+ raw_storage_metadata: PublicRawStorageMetadataSchema,
178
+ // Per-row delete_semantics — resolved from the just-uploaded row's
179
+ // `storage_provider` via the registry.
180
+ delete_semantics: DeleteSemanticsEnumSchema,
181
+ idempotent_skip: z.boolean(),
182
+ }).openapi({
183
+ description: 'Managed-blob upload result. The document row is now ' +
184
+ "`storage_mode='managed_blob'` with `raw_storage_status` set to " +
185
+ "`'blob_stored'` (immediate providers — local_fs, s3), " +
186
+ "`'blob_pending'` (eventual providers awaiting the " +
187
+ "reconciler), or `'blob_available'` (gateway-confirmed " +
188
+ "retrievable on Filecoin). `content_hash` is the SHA-256 of the " +
189
+ 'PLAINTEXT bytes (distinct from `indexed_content_hash` and from ' +
190
+ 'the encoded-byte hash the codec writes under ' +
191
+ '`raw_storage_metadata.codec`, which is internal). ' +
192
+ '`raw_storage_metadata` is the public allowlist ' +
193
+ '(codec name+version + Synapse filecoin allowlist with ' +
194
+ 'flattened copy_count/provider_ids/copy_statuses — internal ' +
195
+ 'sidecars stripped). `delete_semantics` advertises what ' +
196
+ "AtomicMemory's DELETE call will do at the provider boundary for " +
197
+ 'this row. `idempotent_skip: true` when the same bytes were ' +
198
+ 'already attached to this document.',
199
+ });
200
+ export const IndexDocumentResponseSchema = z.object({
201
+ document_id: z.string(),
202
+ indexed_content_hash: z.string(),
203
+ chunks_created: z.number(),
204
+ memories_created: z.number(),
205
+ idempotent_skip: z.boolean(),
206
+ chunker_version: z.string(),
207
+ parser_version: z.string(),
208
+ }).openapi({
209
+ description: 'Text indexing result. `indexed_content_hash` is the SHA-256 ' +
210
+ 'of the indexed text and is stored on the document as ' +
211
+ '`indexed_content_hash` (distinct from the upstream/provider ' +
212
+ '`content_hash`). `idempotent_skip: true` when the input matched the ' +
213
+ 'prior indexed text under the current chunker_version (no fresh ' +
214
+ 'chunks or memories created); otherwise the prior generation was ' +
215
+ 'soft-deleted and the counts reflect the new generation.',
216
+ });
217
+ export const DocumentLimitsResponseSchema = z.object({
218
+ raw_upload_max_bytes: z.number().int().positive(),
219
+ index_max_text_bytes: z.number().int().positive(),
220
+ raw_storage: z.object({
221
+ enabled: z.boolean(),
222
+ mode: z.enum(['pointer_only', 'managed_blob']),
223
+ reason: z.string().optional(),
224
+ // Filecoin lifecycle refactor (Slice 4): when `mode = 'managed_blob'`
225
+ // and an adapter is configured, the active store's
226
+ // `capabilities` surface here. snake_case on the wire; the route
227
+ // formatter is the only camelCase→snake_case mapper. All five
228
+ // capability fields are optional so a `pointer_only` deployment
229
+ // (no store) still validates.
230
+ provider: z.string().optional(),
231
+ addressing: z.enum(['location', 'content']).optional(),
232
+ retrieval_consistency: z.enum(['immediate', 'eventual']).optional(),
233
+ delete_semantics: z.enum(['delete', 'unpin', 'tombstone']).optional(),
234
+ supports_head: z.boolean().optional(),
235
+ supports_get: z.boolean().optional(),
236
+ }),
237
+ }).openapi({
238
+ description: 'Document upload/index limits and raw-storage capability. Public ' +
239
+ 'preflight surface — clients read this to size requests and decide ' +
240
+ 'whether to attempt a managed-blob upload. When a managed-blob ' +
241
+ 'adapter is configured, `raw_storage` additionally advertises the ' +
242
+ "active store's `provider` + capability triple " +
243
+ '(`addressing`, `retrieval_consistency`, `delete_semantics`) so ' +
244
+ 'clients can render honest copy for eventual-provider flows. ' +
245
+ 'No PII, no per-user state.',
246
+ });
247
+ /**
248
+ * failure-transition - response shape for `POST /v1/documents/:id/extraction-failure`
249
+ * and `POST /v1/documents/:id/index-failure`. Both endpoints return the
250
+ * row in its post-transition state so the caller can read back the
251
+ * `extraction_status` / `semantic_index_status` / `last_error` they
252
+ * just persisted without a round-trip to `GET /:id`. `idempotent` is
253
+ * `true` when the call hit the already-failed-row idempotent retry
254
+ * branch (no state change beyond `last_error.occurred_at`/`message`).
255
+ */
256
+ export const DocumentFailureMarkerResponseSchema = z.object({
257
+ document: RawDocumentResponseSchema,
258
+ idempotent: z.boolean(),
259
+ }).openapi({
260
+ description: 'Constrained-transition acknowledgement. The persisted row is ' +
261
+ 'echoed so callers can read back the durable status they just ' +
262
+ 'wrote. `idempotent: true` when the row was already in the ' +
263
+ 'failed state and the call only refreshed `last_error`.',
264
+ });
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @file Shared Phase B status-envelope sub-schemas.
3
+ *
4
+ * The same enum + last_error tuple appears in
5
+ * `RawDocumentResponseSchema` (full document row) AND in
6
+ * `PassportFeedDocumentGroupedRowSchema` (the passport-feed grouped
7
+ * row's per-layer status snapshot). Inlining the literals in both
8
+ * places caused fallow's clone detector to flag a 31-line duplicate;
9
+ * centralising them here keeps the wire contract in one place.
10
+ */
11
+ import { z } from './zod-setup.js';
12
+ export declare const RawStorageStatusEnumSchema: z.ZodEnum<{
13
+ blob_deleted: "blob_deleted";
14
+ blob_tombstoned: "blob_tombstoned";
15
+ blob_stored: "blob_stored";
16
+ blob_pending: "blob_pending";
17
+ blob_available: "blob_available";
18
+ pointer_recorded: "pointer_recorded";
19
+ inline_text_stored: "inline_text_stored";
20
+ raw_storage_failed: "raw_storage_failed";
21
+ blob_archival_failed: "blob_archival_failed";
22
+ }>;
23
+ export declare const ExtractionStatusEnumSchema: z.ZodEnum<{
24
+ pending: "pending";
25
+ not_required: "not_required";
26
+ running: "running";
27
+ complete: "complete";
28
+ unsupported: "unsupported";
29
+ failed: "failed";
30
+ }>;
31
+ export declare const SemanticIndexStatusEnumSchema: z.ZodEnum<{
32
+ pending: "pending";
33
+ not_required: "not_required";
34
+ running: "running";
35
+ complete: "complete";
36
+ failed: "failed";
37
+ stale: "stale";
38
+ }>;
39
+ export declare const LastErrorEnvelopeSchema: z.ZodNullable<z.ZodObject<{
40
+ layer: z.ZodEnum<{
41
+ raw_storage: "raw_storage";
42
+ extraction: "extraction";
43
+ semantic_index: "semantic_index";
44
+ }>;
45
+ code: z.ZodString;
46
+ message: z.ZodString;
47
+ occurred_at: z.ZodString;
48
+ }, z.core.$strip>>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @file Shared Phase B status-envelope sub-schemas.
3
+ *
4
+ * The same enum + last_error tuple appears in
5
+ * `RawDocumentResponseSchema` (full document row) AND in
6
+ * `PassportFeedDocumentGroupedRowSchema` (the passport-feed grouped
7
+ * row's per-layer status snapshot). Inlining the literals in both
8
+ * places caused fallow's clone detector to flag a 31-line duplicate;
9
+ * centralising them here keeps the wire contract in one place.
10
+ */
11
+ import { z } from './zod-setup.js';
12
+ // Filecoin lifecycle refactor (Slice 2): the wire enum tracks the DB
13
+ // CHECK constraint + the `RawStorageStatus` TypeScript union — all
14
+ // three must agree. The Zod response validator (`middleware/
15
+ // validate-response.ts`) reads this schema for every document
16
+ // response, so a row in a Phase-1-reserved state (`blob_pending`)
17
+ // must be acceptable on the wire even before its dedicated UI /
18
+ // recovery flows ship. Slice 4 layers the camelCase→snake_case
19
+ // capability map on top of this schema family on the limits route.
20
+ export const RawStorageStatusEnumSchema = z.enum([
21
+ 'pointer_recorded',
22
+ 'blob_stored',
23
+ 'inline_text_stored',
24
+ 'raw_storage_failed',
25
+ 'blob_deleted',
26
+ 'blob_pending',
27
+ 'blob_available',
28
+ 'blob_archival_failed',
29
+ 'blob_tombstoned',
30
+ ]);
31
+ export const ExtractionStatusEnumSchema = z.enum([
32
+ 'not_required',
33
+ 'pending',
34
+ 'running',
35
+ 'complete',
36
+ 'unsupported',
37
+ 'failed',
38
+ ]);
39
+ export const SemanticIndexStatusEnumSchema = z.enum([
40
+ 'not_required',
41
+ 'pending',
42
+ 'running',
43
+ 'complete',
44
+ 'failed',
45
+ 'stale',
46
+ ]);
47
+ export const LastErrorEnvelopeSchema = z
48
+ .object({
49
+ layer: z.enum(['raw_storage', 'extraction', 'semantic_index']),
50
+ code: z.string(),
51
+ message: z.string(),
52
+ occurred_at: z.string(),
53
+ })
54
+ .nullable();
@@ -0,0 +1,292 @@
1
+ /**
2
+ * @file Zod schemas for /v1/documents/*.
3
+ *
4
+ * Wire format is snake_case (matching /v1/memories/*); each schema
5
+ * `.transform()`s to camelCase for handlers. Covers register
6
+ * (pointer-only at the wire layer), index, raw upload, the
7
+ * constrained-transition bodies, the query schemas in
8
+ * `document-list-schemas.ts`, and the runtime preflight + path-param
9
+ * helpers shared across the routes.
10
+ *
11
+ * Wire-layer mode invariant: `POST /v1/documents` (register) still
12
+ * only accepts `storage_mode='pointer_only'`. The `managed_blob`
13
+ * mode is populated server-side by the post-upload row-promotion in
14
+ * `raw-document-blob-repository.ts:updateRawDocumentBlobStorageWithClient`
15
+ * `inline_small_text` is reserved for a future inline-
16
+ * text path and is rejected with a "not yet supported" message even
17
+ * though the SQL CHECK accepts it.
18
+ */
19
+ import { z } from './zod-setup.js';
20
+ export declare const RegisterDocumentBodySchema: z.ZodPipe<z.ZodObject<{
21
+ user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
22
+ source_site: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
23
+ provider: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
24
+ external_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
25
+ account_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
26
+ external_uri: z.ZodOptional<z.ZodNullable<z.ZodString>>;
27
+ display_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ mime_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
+ size_bytes: z.ZodPipe<z.ZodUnknown, z.ZodTransform<number | undefined, unknown>>;
30
+ content_hash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ provider_version: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ source_modified_at: z.ZodPipe<z.ZodUnknown, z.ZodTransform<Date | undefined, unknown>>;
33
+ storage_mode: z.ZodPipe<z.ZodUnknown, z.ZodTransform<"pointer_only", unknown>>;
34
+ retention_policy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
35
+ consent_policy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
36
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
+ extraction_status: z.ZodOptional<z.ZodEnum<{
38
+ pending: "pending";
39
+ not_required: "not_required";
40
+ unsupported: "unsupported";
41
+ }>>;
42
+ semantic_index_status: z.ZodOptional<z.ZodEnum<{
43
+ pending: "pending";
44
+ not_required: "not_required";
45
+ }>>;
46
+ }, z.core.$strict>, z.ZodTransform<{
47
+ extractionStatus: "pending" | "not_required" | "unsupported" | undefined;
48
+ semanticIndexStatus: "pending" | "not_required" | undefined;
49
+ storageMode: "pointer_only";
50
+ retentionPolicy: Record<string, unknown>;
51
+ consentPolicy: Record<string, unknown>;
52
+ metadata: Record<string, unknown>;
53
+ externalUri: string | null;
54
+ displayName: string | null;
55
+ mimeType: string | null;
56
+ sizeBytes: number | null;
57
+ contentHash: string | null;
58
+ providerVersion: string | null;
59
+ sourceModifiedAt: Date | null;
60
+ userId: string;
61
+ sourceSite: string;
62
+ provider: string;
63
+ externalId: string;
64
+ accountId: string | null;
65
+ }, {
66
+ user_id: string;
67
+ source_site: string;
68
+ provider: string;
69
+ external_id: string;
70
+ size_bytes: number | undefined;
71
+ source_modified_at: Date | undefined;
72
+ storage_mode: "pointer_only";
73
+ account_id?: string | null | undefined;
74
+ external_uri?: string | null | undefined;
75
+ display_name?: string | null | undefined;
76
+ mime_type?: string | null | undefined;
77
+ content_hash?: string | null | undefined;
78
+ provider_version?: string | null | undefined;
79
+ retention_policy?: Record<string, unknown> | undefined;
80
+ consent_policy?: Record<string, unknown> | undefined;
81
+ metadata?: Record<string, unknown> | undefined;
82
+ extraction_status?: "pending" | "not_required" | "unsupported" | undefined;
83
+ semantic_index_status?: "pending" | "not_required" | undefined;
84
+ }>>;
85
+ export type RegisterDocumentBody = z.infer<typeof RegisterDocumentBodySchema>;
86
+ export declare const DocumentIdParamSchema: z.ZodPipe<z.ZodObject<{
87
+ id: z.ZodString;
88
+ }, z.core.$strip>, z.ZodTransform<{
89
+ id: string;
90
+ }, {
91
+ id: string;
92
+ }>>;
93
+ export type DocumentIdParam = z.infer<typeof DocumentIdParamSchema>;
94
+ /**
95
+ * Exported (private-by-convention) so the cursor-list query-schema module
96
+ * (`document-list-schemas.ts`) can reuse the same wire contract for
97
+ * the cursor-paginated routes without re-defining the helper.
98
+ */
99
+ export declare const RequiredQueryString: z.ZodString;
100
+ export declare const DocumentByIdQuerySchema: z.ZodPipe<z.ZodObject<{
101
+ user_id: z.ZodString;
102
+ }, z.core.$strip>, z.ZodTransform<{
103
+ userId: string;
104
+ }, {
105
+ user_id: string;
106
+ }>>;
107
+ export type DocumentByIdQuery = z.infer<typeof DocumentByIdQuerySchema>;
108
+ export declare const ListDocumentsQuerySchema: z.ZodPipe<z.ZodObject<{
109
+ user_id: z.ZodString;
110
+ source_site: z.ZodOptional<z.ZodString>;
111
+ limit: z.ZodOptional<z.ZodString>;
112
+ offset: z.ZodOptional<z.ZodString>;
113
+ }, z.core.$strip>, z.ZodTransform<{
114
+ userId: string;
115
+ sourceSite: string | undefined;
116
+ limit: number;
117
+ offset: number;
118
+ }, {
119
+ user_id: string;
120
+ source_site?: string | undefined;
121
+ limit?: string | undefined;
122
+ offset?: string | undefined;
123
+ }>>;
124
+ export type ListDocumentsQuery = z.infer<typeof ListDocumentsQuerySchema>;
125
+ /**
126
+ * Hard ceiling on the indexed-text body. Deterministic (no env knob)
127
+ * so the wire contract stays predictable: clients can size their
128
+ * extracted-text payloads against a known fixed value.
129
+ *
130
+ * 25 MiB accommodates the webapp manual-upload pipeline, which allows
131
+ * 50 MiB input files and feeds the *extracted* text (typically a
132
+ * fraction of the source size — e.g. a 50 MiB PDF extracts to ≈ 5 MiB
133
+ * of text).
134
+ *
135
+ * status-layer durable-failure contract: the indexer's `semanticValidate`
136
+ * (in `services/document-indexer.ts`) is the authoritative gate for
137
+ * whitespace-only and oversized-text inputs. Both checks fire AFTER
138
+ * the document is loaded and the running CAS lands, so the row is
139
+ * durably marked `semantic_index_status='failed'` + `last_error`
140
+ * before the route returns 413/400. The route's body-parser limit
141
+ * (`INDEX_BODY_PARSER_LIMIT` below) is a defense-in-depth bound that
142
+ * lets a body containing exactly `MAX_INDEX_TEXT_BYTES` of text reach
143
+ * the handler with reasonable JSON-wrapper headroom while still
144
+ * rejecting truly multi-GB request bodies.
145
+ *
146
+ * `IndexDocumentBodySchema` deliberately does NOT refine on whitespace
147
+ * or byte length — those are durable-failure checks owned by the
148
+ * indexer. The schema only enforces structural shape (string fields
149
+ * are present and typed correctly) so callers that send a malformed
150
+ * body (no `user_id`, missing `text`, wrong type) still get a clean
151
+ * pre-document-known 400 with no row touched.
152
+ */
153
+ export declare const MAX_INDEX_TEXT_BYTES: number;
154
+ /**
155
+ * Per-route HTTP body-parser limit for `POST /v1/documents/:id/index`.
156
+ * Adds a 64 KiB headroom on top of `MAX_INDEX_TEXT_BYTES` so a body
157
+ * containing the cap-sized text plus the JSON wrapper
158
+ * (`{"user_id":"<uuid>","text":"…"}`) and modest amounts of escape
159
+ * encoding still fits. Truly huge request bodies (multi-GB scrape
160
+ * dumps, malformed clients, attack payloads) still get rejected by
161
+ * Express's body parser with 413 BEFORE the handler runs.
162
+ *
163
+ * Pathological JSON-escape encodings that double the encoded text
164
+ * size will exceed this cap and surface as 413 from the body-parser
165
+ * — that is the right behavior; the runtime semantic-validation
166
+ * limit is on the parsed UTF-8 string, not the wire-encoded bytes,
167
+ * and a caller can re-encode to fit.
168
+ */
169
+ export declare const INDEX_BODY_PARSER_LIMIT: number;
170
+ export declare const IndexDocumentBodySchema: z.ZodPipe<z.ZodObject<{
171
+ user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
172
+ text: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
173
+ }, z.core.$strip>, z.ZodTransform<{
174
+ userId: string;
175
+ text: string;
176
+ }, {
177
+ user_id: string;
178
+ text: string;
179
+ }>>;
180
+ export type IndexDocumentBody = z.infer<typeof IndexDocumentBodySchema>;
181
+ /**
182
+ * failure-transition - bounded enum of extraction-layer failure codes accepted on
183
+ * `POST /v1/documents/:id/extraction-failure`. The set deliberately
184
+ * mirrors the audit's "things a parser does when it gives up" list;
185
+ * adding a new code requires updating this enum AND the route's
186
+ * `ExtractionErrorCode` SDK type so the wire stays in lockstep.
187
+ */
188
+ declare const ExtractionErrorCodeSchema: z.ZodEnum<{
189
+ unknown: "unknown";
190
+ parser_threw: "parser_threw";
191
+ parser_timeout: "parser_timeout";
192
+ parser_oom: "parser_oom";
193
+ unsupported_encoding: "unsupported_encoding";
194
+ corrupt_input: "corrupt_input";
195
+ }>;
196
+ export type ExtractionErrorCode = z.infer<typeof ExtractionErrorCodeSchema>;
197
+ /**
198
+ * failure-transition - request body for the constrained extraction-failure
199
+ * transition. The route service-truncates / sanitises `error_message`
200
+ * before persisting (see `sanitizeLastErrorMessage` +
201
+ * `MAX_LAST_ERROR_MESSAGE_CHARS` in
202
+ * `src/db/raw-document-status-repository.ts`); the schema enforces
203
+ * upper-bound shape only. Service-owned status fields are NOT
204
+ * accepted - clients can declare *that* extraction failed and *what
205
+ * category*, but cannot put a document into arbitrary status
206
+ * combinations.
207
+ */
208
+ export declare const ExtractionFailureBodySchema: z.ZodPipe<z.ZodObject<{
209
+ user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
210
+ error_code: z.ZodEnum<{
211
+ unknown: "unknown";
212
+ parser_threw: "parser_threw";
213
+ parser_timeout: "parser_timeout";
214
+ parser_oom: "parser_oom";
215
+ unsupported_encoding: "unsupported_encoding";
216
+ corrupt_input: "corrupt_input";
217
+ }>;
218
+ error_message: z.ZodString;
219
+ }, z.core.$strict>, z.ZodTransform<{
220
+ userId: string;
221
+ errorCode: "unknown" | "parser_threw" | "parser_timeout" | "parser_oom" | "unsupported_encoding" | "corrupt_input";
222
+ errorMessage: string;
223
+ }, {
224
+ user_id: string;
225
+ error_code: "unknown" | "parser_threw" | "parser_timeout" | "parser_oom" | "unsupported_encoding" | "corrupt_input";
226
+ error_message: string;
227
+ }>>;
228
+ export type ExtractionFailureBody = z.infer<typeof ExtractionFailureBodySchema>;
229
+ /**
230
+ * failure-transition - bounded enum of semantic-index-layer failure codes
231
+ * accepted on `POST /v1/documents/:id/index-failure`. The
232
+ * `index_text_too_large` code is special: when paired with a row in
233
+ * `extraction_status='pending'`, the route atomically advances
234
+ * extraction to `'complete'` (text-in-hand implies extraction
235
+ * succeeded) AND marks semantic_index `'failed'` so the durable row
236
+ * reflects the upload pipeline's actual sequence.
237
+ */
238
+ declare const IndexErrorCodeSchema: z.ZodEnum<{
239
+ unknown: "unknown";
240
+ index_text_too_large: "index_text_too_large";
241
+ extraction_empty: "extraction_empty";
242
+ }>;
243
+ export type IndexErrorCode = z.infer<typeof IndexErrorCodeSchema>;
244
+ /**
245
+ * failure-transition - request body for the constrained index-failure
246
+ * transition. Service ownership rules match
247
+ * `ExtractionFailureBodySchema`: the message is sanitised + truncated
248
+ * server-side; status fields cannot be smuggled in.
249
+ */
250
+ export declare const IndexFailureBodySchema: z.ZodPipe<z.ZodObject<{
251
+ user_id: z.ZodPipe<z.ZodUnknown & z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>, z.ZodTransform<string, string>>;
252
+ error_code: z.ZodEnum<{
253
+ unknown: "unknown";
254
+ index_text_too_large: "index_text_too_large";
255
+ extraction_empty: "extraction_empty";
256
+ }>;
257
+ error_message: z.ZodString;
258
+ }, z.core.$strict>, z.ZodTransform<{
259
+ userId: string;
260
+ errorCode: "unknown" | "index_text_too_large" | "extraction_empty";
261
+ errorMessage: string;
262
+ }, {
263
+ user_id: string;
264
+ error_code: "unknown" | "index_text_too_large" | "extraction_empty";
265
+ error_message: string;
266
+ }>>;
267
+ export type IndexFailureBody = z.infer<typeof IndexFailureBodySchema>;
268
+ /**
269
+ * Query schema for the raw-upload route. The body is the file bytes
270
+ * themselves (Content-Type: application/octet-stream); identifying
271
+ * fields ride on the query string so we don't have to multipart-parse.
272
+ */
273
+ export declare const UploadRawDocumentQuerySchema: z.ZodPipe<z.ZodObject<{
274
+ user_id: z.ZodString;
275
+ content_type: z.ZodOptional<z.ZodString>;
276
+ }, z.core.$strip>, z.ZodTransform<{
277
+ userId: string;
278
+ contentType: string | undefined;
279
+ }, {
280
+ user_id: string;
281
+ content_type?: string | undefined;
282
+ }>>;
283
+ export type UploadRawDocumentQuery = z.infer<typeof UploadRawDocumentQuerySchema>;
284
+ /**
285
+ * Exported for the cursor-list query-schema module
286
+ * (`document-list-schemas.ts`) so the cursor-paginated routes share
287
+ * the same parse-and-clamp semantics for `limit`. Returns
288
+ * `defaultVal` for missing / non-numeric input; clamps to
289
+ * `[min, max]` otherwise.
290
+ */
291
+ export declare function clampInt(raw: string | undefined, defaultVal: number, min: number, max: number): number;
292
+ export {};