@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,343 @@
1
+ /**
2
+ * @file Synapse-driver implementation of `FilecoinProviderClient`.
3
+ *
4
+ * Wraps a constructed `Synapse` instance and translates the
5
+ * AtomicMemory-shaped boundary onto the SDK surface:
6
+ *
7
+ * - `put` → `synapse.storage.upload`
8
+ * - `get` → `synapse.storage.download`
9
+ * - `head` → `findDataSets` + `createContext` + `pieceStatus`
10
+ * - `delete` → `findDataSets` + `createContext` + `deletePiece`
11
+ * - `verify` → `get` + plaintext SHA-256 comparison
12
+ *
13
+ * Vendor types (`UploadResult`, `PieceCID`, `Hash`, ...) stay inside
14
+ * this file; the boundary surface (`FilecoinPutResult`, etc.) is
15
+ * the only shape that escapes the provider package.
16
+ *
17
+ * Sanitization: every Synapse error caught here is replaced with
18
+ * `FilecoinProviderError` + a stable `errorCode`. Raw vendor
19
+ * messages, wallet addresses, payment-rail state, and signed
20
+ * requests do not survive the boundary.
21
+ */
22
+ import { createHash } from 'node:crypto';
23
+ import { FilecoinProviderError } from './errors.js';
24
+ import { wrapSynapseDeleteError, wrapSynapseDownloadError, wrapSynapseHeadError, wrapSynapseStorageInfoError, wrapSynapseUploadError, } from './synapse-error-mapping.js';
25
+ import { synapseCheckReadiness } from './synapse-readiness.js';
26
+ import { formatPieceUri, parsePieceUri } from './uri.js';
27
+ export class SynapseFilecoinProviderClient {
28
+ synapse;
29
+ options;
30
+ provider = 'filecoin';
31
+ driver = 'synapse';
32
+ constructor(synapse, options = {}) {
33
+ this.synapse = synapse;
34
+ this.options = options;
35
+ }
36
+ async put(input) {
37
+ const effectiveTimeoutMs = input.timeoutMs ?? this.options.uploadTimeoutMs ?? null;
38
+ const controller = effectiveTimeoutMs ? new AbortController() : undefined;
39
+ const timer = controller && effectiveTimeoutMs
40
+ ? setTimeout(() => controller.abort(), effectiveTimeoutMs)
41
+ : undefined;
42
+ try {
43
+ const result = await this.callSynapseUpload(input, controller?.signal);
44
+ return mapUploadResult(result);
45
+ }
46
+ finally {
47
+ if (timer)
48
+ clearTimeout(timer);
49
+ }
50
+ }
51
+ async callSynapseUpload(input, signal) {
52
+ const options = {
53
+ ...(this.options.copies !== null && this.options.copies !== undefined
54
+ ? { copies: this.options.copies }
55
+ : {}),
56
+ ...(this.options.providerIds && this.options.providerIds.length > 0
57
+ ? { providerIds: this.options.providerIds.map((id) => BigInt(id)) }
58
+ : {}),
59
+ ...(this.options.dataSetMetadata
60
+ ? { metadata: this.options.dataSetMetadata }
61
+ : {}),
62
+ ...(input.pieceMetadata ? { pieceMetadata: input.pieceMetadata } : {}),
63
+ ...(signal ? { signal } : {}),
64
+ };
65
+ try {
66
+ // `Buffer` IS a `Uint8Array` at runtime; cast for the SDK's
67
+ // narrower parameter type.
68
+ return await this.synapse.storage.upload(input.body, options);
69
+ }
70
+ catch (err) {
71
+ throw wrapSynapseUploadError(err, signal);
72
+ }
73
+ }
74
+ async get(input) {
75
+ const pieceCid = parsePieceUri(input.storageUri);
76
+ const effectiveTimeoutMs = input.timeoutMs ?? this.options.retrievalTimeoutMs ?? null;
77
+ const controller = effectiveTimeoutMs ? new AbortController() : undefined;
78
+ const timer = controller && effectiveTimeoutMs
79
+ ? setTimeout(() => controller.abort(), effectiveTimeoutMs)
80
+ : undefined;
81
+ try {
82
+ const bytes = await this.callSynapseDownload(pieceCid, controller?.signal);
83
+ return {
84
+ body: Buffer.from(bytes),
85
+ providerMetadata: { piece_cid: pieceCid },
86
+ };
87
+ }
88
+ finally {
89
+ if (timer)
90
+ clearTimeout(timer);
91
+ }
92
+ }
93
+ async callSynapseDownload(pieceCid, signal) {
94
+ const opts = {
95
+ pieceCid,
96
+ ...(this.options.withCdn !== undefined ? { withCDN: this.options.withCdn } : {}),
97
+ ...(signal ? { signal } : {}),
98
+ };
99
+ try {
100
+ return await this.synapse.storage.download(opts);
101
+ }
102
+ catch (err) {
103
+ throw wrapSynapseDownloadError(err, signal);
104
+ }
105
+ }
106
+ async head(input) {
107
+ const pieceCid = parsePieceUri(input.storageUri);
108
+ try {
109
+ const status = await this.locatePieceStatus(pieceCid, input.dataSetId);
110
+ if (status === null) {
111
+ return {
112
+ exists: false,
113
+ proven: false,
114
+ providerMetadata: { piece_cid: pieceCid },
115
+ };
116
+ }
117
+ return {
118
+ exists: true,
119
+ proven: status.dataSetLastProven !== null,
120
+ providerMetadata: buildHeadMetadata(pieceCid, status),
121
+ };
122
+ }
123
+ catch (err) {
124
+ throw wrapSynapseHeadError(err);
125
+ }
126
+ }
127
+ async delete(input) {
128
+ const pieceCid = parsePieceUri(input.storageUri);
129
+ try {
130
+ const context = await this.locateContext(pieceCid, input.dataSetId);
131
+ if (context === null) {
132
+ // Piece not found in any data set the signer owns — treat
133
+ // as already-removed under tombstone semantics. The
134
+ // reconciler/cleanup path is idempotent on this.
135
+ return { deleted: false, semantics: 'tombstone' };
136
+ }
137
+ // Prefer the explicit per-copy `piece_id` from the upload
138
+ // sidecar when the caller supplied it. Synapse's
139
+ // `deletePiece({ piece: pieceCid })` resolves the piece via
140
+ // PDP active-piece lookup, which cannot complete for
141
+ // freshly-uploaded calibration pieces before proof lands.
142
+ // `BigInt(pieceId)` short-circuits the lookup and deletes
143
+ // by id directly. CID fallback stays for callers (and
144
+ // legacy rows) that don't carry the sidecar piece_id yet.
145
+ const pieceForDelete = input.pieceId !== undefined
146
+ ? toPieceIdBigIntOrThrow(input.pieceId)
147
+ : pieceCid;
148
+ const txHash = await context.deletePiece({ piece: pieceForDelete });
149
+ return { deleted: true, semantics: 'tombstone', txHash };
150
+ }
151
+ catch (err) {
152
+ throw wrapSynapseDeleteError(err);
153
+ }
154
+ }
155
+ async checkReadiness(network) {
156
+ return synapseCheckReadiness(this.synapse, this.readinessOptions(), network);
157
+ }
158
+ /**
159
+ * Non-mutating SDK read of the service-advertised minimum
160
+ * upload size in bytes. Exposed for preflight/sizing callers
161
+ * (e.g. the live calibration smoke test) that need to size
162
+ * payloads against the provider's real contract rather than a
163
+ * baked-in constant. Errors map onto
164
+ * `filecoin_storage_info_failed`; vendor strings stay inside.
165
+ */
166
+ async getServiceMinUploadBytes() {
167
+ try {
168
+ const info = await this.synapse.storage.getStorageInfo();
169
+ return info.serviceParameters.minUploadSize;
170
+ }
171
+ catch (err) {
172
+ throw wrapSynapseStorageInfoError(err);
173
+ }
174
+ }
175
+ readinessOptions() {
176
+ return {
177
+ providerIds: this.options.providerIds ?? [],
178
+ minUploadBytes: this.options.minUploadBytes ?? null,
179
+ maxUploadBytes: this.options.maxUploadBytes ?? null,
180
+ ...(this.options.withCdn !== undefined ? { withCdn: this.options.withCdn } : {}),
181
+ };
182
+ }
183
+ async verify(input) {
184
+ let body;
185
+ try {
186
+ const got = await this.get({
187
+ storageUri: input.storageUri,
188
+ ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
189
+ });
190
+ body = got.body;
191
+ }
192
+ catch (err) {
193
+ if (err instanceof FilecoinProviderError) {
194
+ return { verified: false, reason: err.errorCode };
195
+ }
196
+ return { verified: false, reason: 'filecoin_verify_failed' };
197
+ }
198
+ const actualHash = createHash('sha256').update(body).digest('hex');
199
+ if (actualHash === input.expectedContentHash) {
200
+ return { verified: true };
201
+ }
202
+ return { verified: false, reason: 'content_hash_mismatch' };
203
+ }
204
+ /**
205
+ * Resolve the StorageContext that holds `pieceCid`. When the
206
+ * caller supplied `dataSetIdHint`, build a context for that
207
+ * specific data set; otherwise iterate the signer's data sets via
208
+ * `findDataSets` and probe each with `pieceStatus`. Returns the
209
+ * first context whose `pieceStatus` is non-null.
210
+ */
211
+ async locateContext(pieceCid, dataSetIdHint) {
212
+ if (dataSetIdHint !== undefined) {
213
+ const dataSetId = toBigIntOrThrow(dataSetIdHint, 'filecoin_invalid_data_set_id');
214
+ const context = await this.synapse.storage.createContext({ dataSetId });
215
+ const status = await context.pieceStatus({ pieceCid });
216
+ return status === null ? null : context;
217
+ }
218
+ const dataSets = await this.synapse.storage.findDataSets();
219
+ for (const info of dataSets) {
220
+ if (info.isLive === false)
221
+ continue;
222
+ const context = await this.synapse.storage.createContext({ dataSetId: info.dataSetId });
223
+ const status = await context.pieceStatus({ pieceCid });
224
+ if (status !== null)
225
+ return context;
226
+ }
227
+ return null;
228
+ }
229
+ /**
230
+ * Variant of `locateContext` that returns the `PieceStatus`
231
+ * directly. Used by `head` so the caller doesn't have to issue a
232
+ * second `pieceStatus` call to read the status it already
233
+ * located.
234
+ */
235
+ async locatePieceStatus(pieceCid, dataSetIdHint) {
236
+ if (dataSetIdHint !== undefined) {
237
+ const dataSetId = toBigIntOrThrow(dataSetIdHint, 'filecoin_invalid_data_set_id');
238
+ const context = await this.synapse.storage.createContext({ dataSetId });
239
+ return context.pieceStatus({ pieceCid });
240
+ }
241
+ const dataSets = await this.synapse.storage.findDataSets();
242
+ for (const info of dataSets) {
243
+ if (info.isLive === false)
244
+ continue;
245
+ const context = await this.synapse.storage.createContext({ dataSetId: info.dataSetId });
246
+ const status = await context.pieceStatus({ pieceCid });
247
+ if (status !== null)
248
+ return status;
249
+ }
250
+ return null;
251
+ }
252
+ }
253
+ /**
254
+ * Project the Synapse `UploadResult` onto the AtomicMemory
255
+ * `FilecoinPutResult` boundary. The transformation is total —
256
+ * every input field maps to a documented output field; vendor
257
+ * types (`PieceCID`, `bigint`) are stringified at the boundary so
258
+ * the result is JSON-safe.
259
+ */
260
+ function mapUploadResult(result) {
261
+ const pieceCid = stringifyPieceCid(result.pieceCid);
262
+ return {
263
+ pieceCid,
264
+ storageUri: formatPieceUri(pieceCid),
265
+ sizeBytes: result.size,
266
+ copies: result.copies.map(toCopySnapshot),
267
+ failedAttempts: result.failedAttempts.map(toFailedAttempt),
268
+ complete: result.complete,
269
+ requestedCopies: result.requestedCopies,
270
+ };
271
+ }
272
+ function stringifyPieceCid(pieceCid) {
273
+ // `PieceCID` is a `Link` from `multiformats`; its `.toString()`
274
+ // emits the canonical base32 representation. Defensive in case a
275
+ // future SDK release introduces a different runtime shape.
276
+ if (typeof pieceCid === 'string')
277
+ return pieceCid;
278
+ if (pieceCid && typeof pieceCid.toString === 'function') {
279
+ return pieceCid.toString();
280
+ }
281
+ throw new FilecoinProviderError('filecoin_invalid_piece_cid', 'Synapse upload returned an unserializable PieceCID.');
282
+ }
283
+ function toCopySnapshot(copy) {
284
+ return {
285
+ providerId: copy.providerId.toString(),
286
+ dataSetId: copy.dataSetId.toString(),
287
+ pieceId: copy.pieceId.toString(),
288
+ role: copy.role,
289
+ };
290
+ }
291
+ function toFailedAttempt(attempt) {
292
+ return {
293
+ providerId: attempt.providerId.toString(),
294
+ role: attempt.role,
295
+ errorCode: 'filecoin_copy_failed',
296
+ explicit: attempt.explicit,
297
+ };
298
+ }
299
+ /**
300
+ * Build the head-result metadata returned to the adapter. Synapse's
301
+ * `PieceStatus.retrievalUrl` is intentionally NOT included: it is
302
+ * an arbitrary provider URL whose public exposure / persistence
303
+ * would violate the plan's CDN/SSRF rule (no arbitrary provider
304
+ * URLs on public or persisted paths). The bounded fields below are
305
+ * all derived state (`piece_cid`, proof timestamps, challenge-
306
+ * window flags) that the reconciler can act on without ever
307
+ * needing the URL.
308
+ */
309
+ function buildHeadMetadata(pieceCid, status) {
310
+ const meta = { piece_cid: pieceCid };
311
+ if (status.dataSetLastProven !== null && status.dataSetLastProven !== undefined) {
312
+ meta['data_set_last_proven_at'] = status.dataSetLastProven.toISOString();
313
+ }
314
+ if (status.inChallengeWindow !== undefined) {
315
+ meta['in_challenge_window'] = status.inChallengeWindow;
316
+ }
317
+ if (status.isProofOverdue !== undefined) {
318
+ meta['proof_overdue'] = status.isProofOverdue;
319
+ }
320
+ return meta;
321
+ }
322
+ function toBigIntOrThrow(value, errorCode) {
323
+ try {
324
+ return BigInt(value);
325
+ }
326
+ catch {
327
+ throw new FilecoinProviderError(errorCode, `Filecoin id '${value}' is not a valid bigint.`);
328
+ }
329
+ }
330
+ /**
331
+ * Strict positive-decimal-bigint parser for the `piece_id` field
332
+ * accepted by `delete`. The hint reader at the adapter layer
333
+ * already filters malformed values, but defense-in-depth: a
334
+ * caller passing the value directly (bypassing hints) still gets
335
+ * a sanitized rejection. The error message is fixed — the
336
+ * rejected value NEVER leaks across the boundary.
337
+ */
338
+ function toPieceIdBigIntOrThrow(value) {
339
+ if (!/^[1-9][0-9]*$/.test(value)) {
340
+ throw new FilecoinProviderError('filecoin_invalid_piece_id', 'FilecoinDeleteInput.pieceId must be a positive decimal bigint string.');
341
+ }
342
+ return BigInt(value);
343
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file Construct a `Synapse` instance from a parsed
3
+ * `FilecoinProviderConfig`. Owns the viem-account + chain wiring
4
+ * so the rest of the provider module can stay vendor-agnostic.
5
+ *
6
+ * Boundary rule: this is the ONE place that imports
7
+ * `@filoz/synapse-sdk` / `@filoz/synapse-core/chains` / `viem`.
8
+ * Other provider files depend on the constructed `Synapse`
9
+ * instance via `synapse-client.ts`, not on these packages.
10
+ *
11
+ * Construction is synchronous — `Synapse.create` does not perform
12
+ * network I/O until the first `storage.upload` / `storage.download`
13
+ * / readiness call. Tests inject a fake `Synapse`-shaped object
14
+ * directly into `SynapseFilecoinProviderClient`; the production
15
+ * factory path runs through this module.
16
+ */
17
+ import { Synapse } from '@filoz/synapse-sdk';
18
+ import type { FilecoinProviderConfig } from './config.js';
19
+ /**
20
+ * Build a `Synapse` instance from validated provider config.
21
+ * Wraps account / chain construction in `FilecoinProviderError`
22
+ * so the boundary stays clean even when viem rejects the key
23
+ * (which `parseFilecoinPrivateKey` already syntactically blocked,
24
+ * but defense-in-depth costs nothing).
25
+ */
26
+ export declare function buildSynapse(config: FilecoinProviderConfig): Synapse;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @file Construct a `Synapse` instance from a parsed
3
+ * `FilecoinProviderConfig`. Owns the viem-account + chain wiring
4
+ * so the rest of the provider module can stay vendor-agnostic.
5
+ *
6
+ * Boundary rule: this is the ONE place that imports
7
+ * `@filoz/synapse-sdk` / `@filoz/synapse-core/chains` / `viem`.
8
+ * Other provider files depend on the constructed `Synapse`
9
+ * instance via `synapse-client.ts`, not on these packages.
10
+ *
11
+ * Construction is synchronous — `Synapse.create` does not perform
12
+ * network I/O until the first `storage.upload` / `storage.download`
13
+ * / readiness call. Tests inject a fake `Synapse`-shaped object
14
+ * directly into `SynapseFilecoinProviderClient`; the production
15
+ * factory path runs through this module.
16
+ */
17
+ import { Synapse, calibration, mainnet } from '@filoz/synapse-sdk';
18
+ import { privateKeyToAccount } from 'viem/accounts';
19
+ import { FilecoinProviderError } from './errors.js';
20
+ /**
21
+ * Build a `Synapse` instance from validated provider config.
22
+ * Wraps account / chain construction in `FilecoinProviderError`
23
+ * so the boundary stays clean even when viem rejects the key
24
+ * (which `parseFilecoinPrivateKey` already syntactically blocked,
25
+ * but defense-in-depth costs nothing).
26
+ */
27
+ export function buildSynapse(config) {
28
+ const account = toAccount(config.privateKey);
29
+ const chain = config.network === 'mainnet' ? mainnet : calibration;
30
+ return Synapse.create({
31
+ account,
32
+ chain,
33
+ source: config.source,
34
+ withCDN: config.withCdn,
35
+ });
36
+ }
37
+ function toAccount(privateKeyHex) {
38
+ try {
39
+ return privateKeyToAccount(privateKeyHex);
40
+ }
41
+ catch {
42
+ // `parseFilecoinPrivateKey` already enforces `^0x[a-fA-F0-9]{64}$`
43
+ // at config-load time. If viem still rejects, surface as a
44
+ // sanitized provider error — NEVER include the key value.
45
+ throw new FilecoinProviderError('filecoin_invalid_private_key', 'RAW_STORAGE_FILECOIN_PRIVATE_KEY failed account derivation.');
46
+ }
47
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file Vendor → boundary error mapping for `SynapseFilecoinProviderClient`.
3
+ *
4
+ * Each helper replaces a raw `@filoz/synapse-sdk` error with a
5
+ * sanitized `FilecoinProviderError` carrying a closed-set
6
+ * `errorCode`. The vendor `message` string NEVER reaches the
7
+ * boundary — it could embed wallet addresses, balances, signed
8
+ * requests, RPC URLs, or other operator-internal data that the
9
+ * provider package promises not to leak. The replacement message
10
+ * is a fixed, hand-written sentence whose ONLY variability is the
11
+ * stable `errorCode`.
12
+ *
13
+ * Lives in its own module so `synapse-client.ts` stays under the
14
+ * workspace 400-LOC cap. The boundary surface here is consumed
15
+ * only by `synapse-client.ts`; nothing else in the provider
16
+ * package depends on these helpers.
17
+ */
18
+ import { FilecoinProviderError } from './errors.js';
19
+ export declare function wrapSynapseUploadError(err: unknown, signal: AbortSignal | undefined): FilecoinProviderError;
20
+ export declare function wrapSynapseDownloadError(err: unknown, signal: AbortSignal | undefined): FilecoinProviderError;
21
+ export declare function wrapSynapseHeadError(err: unknown): FilecoinProviderError;
22
+ export declare function wrapSynapseDeleteError(err: unknown): FilecoinProviderError;
23
+ export declare function wrapSynapseStorageInfoError(err: unknown): FilecoinProviderError;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @file Vendor → boundary error mapping for `SynapseFilecoinProviderClient`.
3
+ *
4
+ * Each helper replaces a raw `@filoz/synapse-sdk` error with a
5
+ * sanitized `FilecoinProviderError` carrying a closed-set
6
+ * `errorCode`. The vendor `message` string NEVER reaches the
7
+ * boundary — it could embed wallet addresses, balances, signed
8
+ * requests, RPC URLs, or other operator-internal data that the
9
+ * provider package promises not to leak. The replacement message
10
+ * is a fixed, hand-written sentence whose ONLY variability is the
11
+ * stable `errorCode`.
12
+ *
13
+ * Lives in its own module so `synapse-client.ts` stays under the
14
+ * workspace 400-LOC cap. The boundary surface here is consumed
15
+ * only by `synapse-client.ts`; nothing else in the provider
16
+ * package depends on these helpers.
17
+ */
18
+ import { FilecoinProviderError } from './errors.js';
19
+ export function wrapSynapseUploadError(err, signal) {
20
+ if (signal?.aborted) {
21
+ return new FilecoinProviderError('filecoin_upload_timeout', 'Synapse upload aborted by RAW_STORAGE_FILECOIN_UPLOAD_TIMEOUT_MS.');
22
+ }
23
+ if (err instanceof FilecoinProviderError)
24
+ return err;
25
+ return new FilecoinProviderError('filecoin_upload_failed', 'Synapse upload failed; vendor error suppressed at the provider boundary.');
26
+ }
27
+ export function wrapSynapseDownloadError(err, signal) {
28
+ if (signal?.aborted) {
29
+ return new FilecoinProviderError('filecoin_download_timeout', 'Synapse download aborted by RAW_STORAGE_FILECOIN_RETRIEVAL_TIMEOUT_MS.');
30
+ }
31
+ if (err instanceof FilecoinProviderError)
32
+ return err;
33
+ return new FilecoinProviderError('filecoin_download_failed', 'Synapse download failed; vendor error suppressed at the provider boundary.');
34
+ }
35
+ export function wrapSynapseHeadError(err) {
36
+ if (err instanceof FilecoinProviderError)
37
+ return err;
38
+ return new FilecoinProviderError('filecoin_head_failed', 'Synapse pieceStatus failed; vendor error suppressed at the provider boundary.');
39
+ }
40
+ export function wrapSynapseDeleteError(err) {
41
+ if (err instanceof FilecoinProviderError)
42
+ return err;
43
+ return new FilecoinProviderError('filecoin_delete_failed', 'Synapse deletePiece failed; vendor error suppressed at the provider boundary.');
44
+ }
45
+ export function wrapSynapseStorageInfoError(err) {
46
+ if (err instanceof FilecoinProviderError)
47
+ return err;
48
+ return new FilecoinProviderError('filecoin_storage_info_failed', 'Synapse getStorageInfo failed; vendor error suppressed at the provider boundary.');
49
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @file Real Synapse-backed readiness probes.
3
+ *
4
+ * Lives in its own module to keep `synapse-client.ts` under the
5
+ * workspace 400-LOC cap. Exports `synapseCheckReadiness(synapse,
6
+ * options, network)` which runs the non-mutating probes
7
+ * documented in `FILECOIN_READINESS_REQUIRED_CHECKS` and returns
8
+ * the closed-shape check list `FilecoinProviderClient.checkReadiness`
9
+ * promises.
10
+ *
11
+ * All probes are non-mutating SDK reads:
12
+ * - `storage.getStorageInfo()` — pricing / providers / allowances / service bounds
13
+ * - `storage.getUploadCosts()` — canonical "ready to upload at this size" probe
14
+ * - `storage.findDataSets()` — owned data-set inventory (no creation)
15
+ * - `client.getChainId()` — connected-chain id
16
+ *
17
+ * Sanitization rule: NO call inside this module ever lets a wallet
18
+ * address, balance numeric, allowance numeric, provider auth payload,
19
+ * or raw vendor error message escape. Every check carries a stable
20
+ * `errorCode` from the closed set documented inline below.
21
+ */
22
+ import type { FilecoinReadinessCheck, FilecoinReadinessNetwork } from './provider-client.js';
23
+ import type { SynapseLike } from './synapse-client.js';
24
+ export interface ReadinessProbeOptions {
25
+ readonly providerIds: ReadonlyArray<string>;
26
+ readonly minUploadBytes: number | null;
27
+ readonly maxUploadBytes: number | null;
28
+ readonly withCdn?: boolean;
29
+ }
30
+ /**
31
+ * Run the documented Synapse readiness probes. Returns the closed-
32
+ * shape check list in `FILECOIN_READINESS_REQUIRED_CHECKS` order.
33
+ * All calls are non-mutating: `getStorageInfo()`,
34
+ * `getUploadCosts()`, `findDataSets()`, `client.getChainId()`. No
35
+ * upload, no data-set creation, no payment side-effects.
36
+ */
37
+ export declare function synapseCheckReadiness(synapse: SynapseLike, options: ReadinessProbeOptions, network: FilecoinReadinessNetwork): Promise<ReadonlyArray<FilecoinReadinessCheck>>;