@sixb/core 0.1.0 → 0.1.2

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 (1196) hide show
  1. package/README.md +54 -23
  2. package/dist/actions/commit-edits.d.ts +0 -2
  3. package/dist/actions/commit-edits.d.ts.map +1 -1
  4. package/dist/actions/execution.d.ts +21 -0
  5. package/dist/actions/execution.d.ts.map +1 -0
  6. package/dist/actions/index.d.ts +1 -1
  7. package/dist/actions/index.d.ts.map +1 -1
  8. package/dist/actions/index.js +34 -23
  9. package/dist/actions/index.js.map +1 -1
  10. package/dist/actions/registry.d.ts +16 -7
  11. package/dist/actions/registry.d.ts.map +1 -1
  12. package/dist/actions/request.d.ts +3 -2
  13. package/dist/actions/request.d.ts.map +1 -1
  14. package/dist/actions/run-dispatch.d.ts +21 -0
  15. package/dist/actions/run-dispatch.d.ts.map +1 -0
  16. package/dist/actions/types/context.d.ts +2 -2
  17. package/dist/actions/types/context.d.ts.map +1 -1
  18. package/dist/actions/validation.d.ts +1 -1
  19. package/dist/actions/validation.d.ts.map +1 -1
  20. package/dist/actions/worker.js +4 -4
  21. package/dist/actions/worker.js.map +1 -1
  22. package/dist/agents/adapters.d.ts +10 -0
  23. package/dist/agents/adapters.d.ts.map +1 -1
  24. package/dist/agents/authority.d.ts +31 -0
  25. package/dist/agents/authority.d.ts.map +1 -0
  26. package/dist/agents/builders.d.ts +8 -1
  27. package/dist/agents/builders.d.ts.map +1 -1
  28. package/dist/agents/context.js +2 -2
  29. package/dist/agents/dispatch.d.ts.map +1 -1
  30. package/dist/agents/errors.d.ts +16 -1
  31. package/dist/agents/errors.d.ts.map +1 -1
  32. package/dist/agents/execution.d.ts +45 -0
  33. package/dist/agents/execution.d.ts.map +1 -0
  34. package/dist/agents/index.d.ts +10 -10
  35. package/dist/agents/index.d.ts.map +1 -1
  36. package/dist/agents/index.js +81 -14
  37. package/dist/agents/index.js.map +1 -1
  38. package/dist/agents/prompt.d.ts.map +1 -1
  39. package/dist/agents/request.d.ts +6 -2
  40. package/dist/agents/request.d.ts.map +1 -1
  41. package/dist/agents/streams.d.ts +29 -3
  42. package/dist/agents/streams.d.ts.map +1 -1
  43. package/dist/agents/streams.js +22 -3
  44. package/dist/agents/streams.js.map +1 -1
  45. package/dist/agents/tool-definition.d.ts +9 -0
  46. package/dist/agents/tool-definition.d.ts.map +1 -0
  47. package/dist/agents/types.d.ts +64 -0
  48. package/dist/agents/types.d.ts.map +1 -1
  49. package/dist/agents/validation.d.ts +16 -3
  50. package/dist/agents/validation.d.ts.map +1 -1
  51. package/dist/auth/attribution.d.ts +17 -0
  52. package/dist/auth/attribution.d.ts.map +1 -0
  53. package/dist/auth/index.d.ts +1 -0
  54. package/dist/auth/index.d.ts.map +1 -1
  55. package/dist/auth/index.js +9 -5
  56. package/dist/auth/index.js.map +1 -1
  57. package/dist/auth/runtime.d.ts +4 -4
  58. package/dist/auth/runtime.d.ts.map +1 -1
  59. package/dist/authorization/decision.d.ts +24 -11
  60. package/dist/authorization/decision.d.ts.map +1 -1
  61. package/dist/authorization/grant-kinds.d.ts +2 -1
  62. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  63. package/dist/authorization/index.d.ts +1 -1
  64. package/dist/authorization/index.d.ts.map +1 -1
  65. package/dist/authorization/index.js +8 -4
  66. package/dist/authorization/index.js.map +1 -1
  67. package/dist/blob-storage/browser.js +3 -2
  68. package/dist/blob-storage/browser.js.map +1 -1
  69. package/dist/blob-storage/execution.d.ts +16 -0
  70. package/dist/blob-storage/execution.d.ts.map +1 -0
  71. package/dist/blob-storage/index.js +4 -3
  72. package/dist/blob-storage/index.js.map +1 -1
  73. package/dist/blob-storage/validation.d.ts.map +1 -1
  74. package/dist/bootstrap/discovery.d.ts +90 -24
  75. package/dist/bootstrap/discovery.d.ts.map +1 -1
  76. package/dist/bootstrap/index.d.ts +2 -1
  77. package/dist/bootstrap/index.d.ts.map +1 -1
  78. package/dist/bootstrap/index.js +59 -59
  79. package/dist/bootstrap/index.js.map +1 -1
  80. package/dist/broker/in-memory.d.ts.map +1 -1
  81. package/dist/broker/index.js +2 -2
  82. package/dist/broker/types.d.ts +5 -0
  83. package/dist/broker/types.d.ts.map +1 -1
  84. package/dist/chunk-0172wgm9.js +333 -0
  85. package/dist/chunk-0172wgm9.js.map +11 -0
  86. package/dist/chunk-0k4avqr2.js +317 -0
  87. package/dist/chunk-0k4avqr2.js.map +11 -0
  88. package/dist/chunk-0mbx247x.js +2922 -0
  89. package/dist/chunk-0mbx247x.js.map +43 -0
  90. package/dist/chunk-34bqh420.js +1168 -0
  91. package/dist/chunk-34bqh420.js.map +23 -0
  92. package/dist/{chunk-mx84y05q.js → chunk-3j7573mj.js} +2 -2
  93. package/dist/{chunk-mx84y05q.js.map → chunk-3j7573mj.js.map} +2 -2
  94. package/dist/{chunk-45tw90k7.js → chunk-4gz41why.js} +1 -1
  95. package/dist/chunk-4x43bkbp.js +55 -0
  96. package/dist/chunk-4x43bkbp.js.map +11 -0
  97. package/dist/{chunk-xqbtf4wn.js → chunk-57r1cpxx.js} +3 -2
  98. package/dist/{chunk-xqbtf4wn.js.map → chunk-57r1cpxx.js.map} +3 -3
  99. package/dist/chunk-57zpb99z.js +194 -0
  100. package/dist/chunk-57zpb99z.js.map +10 -0
  101. package/dist/{chunk-dhmj53mx.js → chunk-5egfka8j.js} +13 -33
  102. package/dist/chunk-5egfka8j.js.map +15 -0
  103. package/dist/chunk-5gd7tpv6.js +28 -0
  104. package/dist/chunk-5gd7tpv6.js.map +11 -0
  105. package/dist/{chunk-867jxh7c.js → chunk-5sz8ta9r.js} +6 -295
  106. package/dist/chunk-5sz8ta9r.js.map +16 -0
  107. package/dist/chunk-62c7t4jc.js +27 -0
  108. package/dist/chunk-62c7t4jc.js.map +11 -0
  109. package/dist/{chunk-8r8cw2xw.js → chunk-63te770v.js} +40 -5
  110. package/dist/{chunk-8r8cw2xw.js.map → chunk-63te770v.js.map} +3 -3
  111. package/dist/chunk-663csy96.js +34 -0
  112. package/dist/chunk-663csy96.js.map +10 -0
  113. package/dist/{chunk-xz5g49bp.js → chunk-6gjqgd3d.js} +3 -1
  114. package/dist/chunk-6gjqgd3d.js.map +11 -0
  115. package/dist/chunk-7pc8b818.js +128 -0
  116. package/dist/chunk-7pc8b818.js.map +13 -0
  117. package/dist/{chunk-f2b5e2gf.js → chunk-85j5ybfj.js} +18 -3
  118. package/dist/{chunk-f2b5e2gf.js.map → chunk-85j5ybfj.js.map} +3 -3
  119. package/dist/{chunk-vj723r3p.js → chunk-8b55ygje.js} +1 -1
  120. package/dist/chunk-8m5ejdpn.js +33 -0
  121. package/dist/chunk-8m5ejdpn.js.map +10 -0
  122. package/dist/chunk-8ryen3p3.js +118 -0
  123. package/dist/chunk-8ryen3p3.js.map +10 -0
  124. package/dist/chunk-979ww6b3.js +298 -0
  125. package/dist/chunk-979ww6b3.js.map +12 -0
  126. package/dist/{chunk-ya6brh8a.js → chunk-9t8f5xfx.js} +10 -5
  127. package/dist/chunk-9t8f5xfx.js.map +11 -0
  128. package/dist/{chunk-r65yscvk.js → chunk-a31h57d5.js} +131 -13
  129. package/dist/chunk-a31h57d5.js.map +13 -0
  130. package/dist/chunk-bct7hmfc.js +402 -0
  131. package/dist/chunk-bct7hmfc.js.map +14 -0
  132. package/dist/chunk-bh6k3nc6.js +164 -0
  133. package/dist/chunk-bh6k3nc6.js.map +12 -0
  134. package/dist/{chunk-t72dvahb.js → chunk-bhxaq2nn.js} +61 -44
  135. package/dist/chunk-bhxaq2nn.js.map +12 -0
  136. package/dist/{chunk-jdwx7vzs.js → chunk-c6qd89g5.js} +240 -143
  137. package/dist/chunk-c6qd89g5.js.map +15 -0
  138. package/dist/{chunk-2s6sydsh.js → chunk-ckxfnx7f.js} +294 -4
  139. package/dist/chunk-ckxfnx7f.js.map +13 -0
  140. package/dist/chunk-cy0n5dms.js +27 -0
  141. package/dist/chunk-cy0n5dms.js.map +11 -0
  142. package/dist/chunk-dsrkgtnh.js +50 -0
  143. package/dist/chunk-dsrkgtnh.js.map +10 -0
  144. package/dist/{chunk-50kv63vj.js → chunk-dysw7nsm.js} +118 -26
  145. package/dist/chunk-dysw7nsm.js.map +14 -0
  146. package/dist/chunk-ezake7g1.js +32 -0
  147. package/dist/chunk-ezake7g1.js.map +11 -0
  148. package/dist/{chunk-yxss87qa.js → chunk-f2rt4vkh.js} +48 -29
  149. package/dist/chunk-f2rt4vkh.js.map +14 -0
  150. package/dist/{chunk-q4qzq0ea.js → chunk-fmx1sz2h.js} +117 -56
  151. package/dist/chunk-fmx1sz2h.js.map +15 -0
  152. package/dist/chunk-g9t3kdtx.js +90 -0
  153. package/dist/chunk-g9t3kdtx.js.map +10 -0
  154. package/dist/{chunk-c3zd880g.js → chunk-ghteq96b.js} +8 -8
  155. package/dist/{chunk-c3zd880g.js.map → chunk-ghteq96b.js.map} +4 -4
  156. package/dist/chunk-h9kxd41f.js +271 -0
  157. package/dist/chunk-h9kxd41f.js.map +11 -0
  158. package/dist/chunk-htq0qh7z.js +59 -0
  159. package/dist/chunk-htq0qh7z.js.map +11 -0
  160. package/dist/{chunk-dcgrzj1t.js → chunk-jaj13078.js} +121 -9
  161. package/dist/chunk-jaj13078.js.map +38 -0
  162. package/dist/{chunk-t358gywy.js → chunk-k9pts48t.js} +81 -58
  163. package/dist/chunk-k9pts48t.js.map +35 -0
  164. package/dist/chunk-n8herkry.js +3294 -0
  165. package/dist/chunk-n8herkry.js.map +35 -0
  166. package/dist/chunk-nf4r78r4.js +44 -0
  167. package/dist/chunk-nf4r78r4.js.map +10 -0
  168. package/dist/{chunk-2gpr6jsz.js → chunk-nnyp53zt.js} +14 -34
  169. package/dist/chunk-nnyp53zt.js.map +13 -0
  170. package/dist/chunk-nten49ta.js +404 -0
  171. package/dist/chunk-nten49ta.js.map +12 -0
  172. package/dist/chunk-qvybnnpe.js +137 -0
  173. package/dist/chunk-qvybnnpe.js.map +10 -0
  174. package/dist/{chunk-tsk2bxs3.js → chunk-rnshztfq.js} +13 -13
  175. package/dist/{chunk-tsk2bxs3.js.map → chunk-rnshztfq.js.map} +3 -3
  176. package/dist/chunk-sa4340y1.js +607 -0
  177. package/dist/chunk-sa4340y1.js.map +14 -0
  178. package/dist/{chunk-yvef9xwc.js → chunk-st4xgxey.js} +583 -251
  179. package/dist/chunk-st4xgxey.js.map +45 -0
  180. package/dist/{chunk-1vffvydj.js → chunk-t8t39h7v.js} +6 -6
  181. package/dist/chunk-t8t39h7v.js.map +10 -0
  182. package/dist/chunk-t9xghkva.js +28 -0
  183. package/dist/chunk-t9xghkva.js.map +10 -0
  184. package/dist/chunk-vp1vc6ee.js +35 -0
  185. package/dist/chunk-vp1vc6ee.js.map +11 -0
  186. package/dist/{chunk-p6r5g77m.js → chunk-vybf6pkp.js} +1 -1
  187. package/dist/{chunk-wj01s5hr.js → chunk-wtmzkcht.js} +4 -3
  188. package/dist/chunk-wtmzkcht.js.map +11 -0
  189. package/dist/{chunk-v5c085yp.js → chunk-xhy826cz.js} +3 -2
  190. package/dist/chunk-xhy826cz.js.map +10 -0
  191. package/dist/chunk-xkthy56g.js +33 -0
  192. package/dist/chunk-xkthy56g.js.map +11 -0
  193. package/dist/{chunk-aebzcsxr.js → chunk-ys1nse2v.js} +2178 -382
  194. package/dist/chunk-ys1nse2v.js.map +56 -0
  195. package/dist/{chunk-5yny9z0e.js → chunk-z3zp0bj1.js} +1 -1
  196. package/dist/chunk-zcnhxkvd.js +7 -0
  197. package/dist/chunk-zcnhxkvd.js.map +10 -0
  198. package/dist/chunk-zg9yryhz.js +252 -0
  199. package/dist/chunk-zg9yryhz.js.map +12 -0
  200. package/dist/chunk-zqqz8052.js +3 -0
  201. package/dist/{storage/projection-runs/lifecycle.js.map → chunk-zqqz8052.js.map} +1 -1
  202. package/dist/{chunk-4pycxcj3.js → chunk-zqysyfjt.js} +6 -9
  203. package/dist/{chunk-4pycxcj3.js.map → chunk-zqysyfjt.js.map} +3 -3
  204. package/dist/connectors/builders.d.ts +2 -1
  205. package/dist/connectors/builders.d.ts.map +1 -1
  206. package/dist/connectors/connections/authorizations.d.ts +64 -0
  207. package/dist/connectors/connections/authorizations.d.ts.map +1 -0
  208. package/dist/connectors/connections/capability.d.ts +7 -0
  209. package/dist/connectors/connections/capability.d.ts.map +1 -0
  210. package/dist/connectors/connections/command-context.d.ts +23 -0
  211. package/dist/connectors/connections/command-context.d.ts.map +1 -0
  212. package/dist/connectors/connections/contracts.d.ts +127 -0
  213. package/dist/connectors/connections/contracts.d.ts.map +1 -0
  214. package/dist/connectors/connections/credential-codec.d.ts +15 -0
  215. package/dist/connectors/connections/credential-codec.d.ts.map +1 -0
  216. package/dist/connectors/connections/credential-mutations.d.ts +63 -0
  217. package/dist/connectors/connections/credential-mutations.d.ts.map +1 -0
  218. package/dist/connectors/connections/execution.d.ts +20 -0
  219. package/dist/connectors/connections/execution.d.ts.map +1 -0
  220. package/dist/connectors/connections/internal.d.ts +5 -0
  221. package/dist/connectors/connections/internal.d.ts.map +1 -0
  222. package/dist/connectors/connections/internal.js +16 -0
  223. package/dist/connectors/connections/internal.js.map +9 -0
  224. package/dist/connectors/connections/provider-operation.d.ts +7 -0
  225. package/dist/connectors/connections/provider-operation.d.ts.map +1 -0
  226. package/dist/connectors/connections/request.d.ts +84 -0
  227. package/dist/connectors/connections/request.d.ts.map +1 -0
  228. package/dist/connectors/connections/runs.d.ts +51 -0
  229. package/dist/connectors/connections/runs.d.ts.map +1 -0
  230. package/dist/connectors/connections/service.d.ts +52 -0
  231. package/dist/connectors/connections/service.d.ts.map +1 -0
  232. package/dist/connectors/connections/storage-boundary.d.ts +3 -0
  233. package/dist/connectors/connections/storage-boundary.d.ts.map +1 -0
  234. package/dist/connectors/connections/tokens.d.ts +32 -0
  235. package/dist/connectors/connections/tokens.d.ts.map +1 -0
  236. package/dist/connectors/connections/validation.d.ts +27 -0
  237. package/dist/connectors/connections/validation.d.ts.map +1 -0
  238. package/dist/connectors/connections/views.d.ts +7 -0
  239. package/dist/connectors/connections/views.d.ts.map +1 -0
  240. package/dist/connectors/credentials.d.ts +25 -0
  241. package/dist/connectors/credentials.d.ts.map +1 -0
  242. package/dist/connectors/errors.d.ts +35 -3
  243. package/dist/connectors/errors.d.ts.map +1 -1
  244. package/dist/connectors/execution.d.ts +19 -0
  245. package/dist/connectors/execution.d.ts.map +1 -0
  246. package/dist/connectors/index.d.ts +5 -3
  247. package/dist/connectors/index.d.ts.map +1 -1
  248. package/dist/connectors/service.d.ts +23 -0
  249. package/dist/connectors/service.d.ts.map +1 -0
  250. package/dist/connectors/types.d.ts +94 -2
  251. package/dist/connectors/types.d.ts.map +1 -1
  252. package/dist/datasets/builders.d.ts +18 -5
  253. package/dist/datasets/builders.d.ts.map +1 -1
  254. package/dist/datasets/changes.d.ts +18 -0
  255. package/dist/datasets/changes.d.ts.map +1 -0
  256. package/dist/datasets/execution.d.ts +8 -0
  257. package/dist/datasets/execution.d.ts.map +1 -0
  258. package/dist/datasets/index.d.ts +3 -1
  259. package/dist/datasets/index.d.ts.map +1 -1
  260. package/dist/datasets/types.d.ts +2 -0
  261. package/dist/datasets/types.d.ts.map +1 -1
  262. package/dist/datasets/validation.d.ts.map +1 -1
  263. package/dist/error-reporting/capability.d.ts +4 -49
  264. package/dist/error-reporting/capability.d.ts.map +1 -1
  265. package/dist/error-reporting/internal.d.ts +2 -2
  266. package/dist/error-reporting/internal.d.ts.map +1 -1
  267. package/dist/error-reporting/internal.js +10 -4
  268. package/dist/error-reporting/internal.js.map +1 -1
  269. package/dist/error-reporting/reporter.d.ts +4 -1
  270. package/dist/error-reporting/reporter.d.ts.map +1 -1
  271. package/dist/error-reporting/reports.d.ts +64 -0
  272. package/dist/error-reporting/reports.d.ts.map +1 -0
  273. package/dist/error-reporting/types.d.ts +88 -34
  274. package/dist/error-reporting/types.d.ts.map +1 -1
  275. package/dist/errors/catalog.d.ts +141 -0
  276. package/dist/errors/catalog.d.ts.map +1 -0
  277. package/dist/errors/internal.d.ts +68 -0
  278. package/dist/errors/internal.d.ts.map +1 -0
  279. package/dist/errors/internal.js +29 -0
  280. package/dist/errors/internal.js.map +9 -0
  281. package/dist/errors/types.d.ts +20 -0
  282. package/dist/errors/types.d.ts.map +1 -0
  283. package/dist/events/definitions.d.ts +0 -1
  284. package/dist/events/definitions.d.ts.map +1 -1
  285. package/dist/events/execution.d.ts +13 -0
  286. package/dist/events/execution.d.ts.map +1 -0
  287. package/dist/events/index.d.ts +3 -2
  288. package/dist/events/index.d.ts.map +1 -1
  289. package/dist/events/index.js +10 -8
  290. package/dist/events/index.js.map +1 -1
  291. package/dist/events/outbox-dispatcher.d.ts +4 -2
  292. package/dist/events/outbox-dispatcher.d.ts.map +1 -1
  293. package/dist/events/{runtime.d.ts → service.d.ts} +13 -14
  294. package/dist/events/service.d.ts.map +1 -0
  295. package/dist/events/types/pipelines.d.ts +4 -1
  296. package/dist/events/types/pipelines.d.ts.map +1 -1
  297. package/dist/events/types/syncs.d.ts +3 -0
  298. package/dist/events/types/syncs.d.ts.map +1 -1
  299. package/dist/events/types/workflows.d.ts +4 -2
  300. package/dist/events/types/workflows.d.ts.map +1 -1
  301. package/dist/execution/agent.d.ts +42 -0
  302. package/dist/execution/agent.d.ts.map +1 -0
  303. package/dist/execution/agent.js +70 -0
  304. package/dist/execution/agent.js.map +9 -0
  305. package/dist/execution/authorization.d.ts +60 -0
  306. package/dist/execution/authorization.d.ts.map +1 -0
  307. package/dist/execution/dispatch.d.ts +8 -0
  308. package/dist/execution/dispatch.d.ts.map +1 -0
  309. package/dist/execution/durable.d.ts +37 -0
  310. package/dist/execution/durable.d.ts.map +1 -0
  311. package/dist/execution/index.d.ts +2 -0
  312. package/dist/execution/index.d.ts.map +1 -0
  313. package/dist/execution/primitive.d.ts +21 -0
  314. package/dist/execution/primitive.d.ts.map +1 -0
  315. package/dist/execution/primitive.js +88 -0
  316. package/dist/execution/primitive.js.map +10 -0
  317. package/dist/execution/request.d.ts +38 -0
  318. package/dist/execution/request.d.ts.map +1 -0
  319. package/dist/execution/request.js +97 -0
  320. package/dist/execution/request.js.map +10 -0
  321. package/dist/execution/scopes.d.ts +30 -0
  322. package/dist/execution/scopes.d.ts.map +1 -0
  323. package/dist/execution/types.d.ts +111 -0
  324. package/dist/execution/types.d.ts.map +1 -0
  325. package/dist/http/api-routes.d.ts.map +1 -1
  326. package/dist/http/index.js +1 -1
  327. package/dist/index.d.ts +35 -18
  328. package/dist/index.d.ts.map +1 -1
  329. package/dist/index.js +142 -111
  330. package/dist/index.js.map +1 -1
  331. package/dist/json.d.ts +8 -2
  332. package/dist/json.d.ts.map +1 -1
  333. package/dist/lake-storage/definition-updates.d.ts.map +1 -1
  334. package/dist/lake-storage/in-memory.d.ts +15 -1
  335. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  336. package/dist/lake-storage/index.d.ts +3 -1
  337. package/dist/lake-storage/index.d.ts.map +1 -1
  338. package/dist/lake-storage/index.js +15 -7
  339. package/dist/lake-storage/index.js.map +1 -1
  340. package/dist/lake-storage/merge-validation.d.ts +10 -0
  341. package/dist/lake-storage/merge-validation.d.ts.map +1 -0
  342. package/dist/lake-storage/merge.d.ts +32 -0
  343. package/dist/lake-storage/merge.d.ts.map +1 -0
  344. package/dist/lake-storage/types.d.ts +3 -1
  345. package/dist/lake-storage/types.d.ts.map +1 -1
  346. package/dist/logging/execution.d.ts +9 -0
  347. package/dist/logging/execution.d.ts.map +1 -0
  348. package/dist/logging/index.d.ts +1 -1
  349. package/dist/logging/index.d.ts.map +1 -1
  350. package/dist/logging/index.js +8 -8
  351. package/dist/logging/index.js.map +1 -1
  352. package/dist/logging/{runtime.d.ts → service.d.ts} +7 -7
  353. package/dist/logging/{runtime.d.ts.map → service.d.ts.map} +1 -1
  354. package/dist/logging/types.js +2 -2
  355. package/dist/materialization/events.d.ts +1 -0
  356. package/dist/materialization/events.d.ts.map +1 -1
  357. package/dist/materialization/index.d.ts +1 -1
  358. package/dist/materialization/index.d.ts.map +1 -1
  359. package/dist/materialization/index.js +2 -2
  360. package/dist/materialization/model.d.ts +26 -17
  361. package/dist/materialization/model.d.ts.map +1 -1
  362. package/dist/materializer/edits/commit.d.ts +2 -1
  363. package/dist/materializer/edits/commit.d.ts.map +1 -1
  364. package/dist/materializer/edits/load-state.d.ts +1 -1
  365. package/dist/materializer/edits/load-state.d.ts.map +1 -1
  366. package/dist/materializer/edits/operations.d.ts +1 -13
  367. package/dist/materializer/edits/operations.d.ts.map +1 -1
  368. package/dist/materializer/edits/plan.d.ts +2 -1
  369. package/dist/materializer/edits/plan.d.ts.map +1 -1
  370. package/dist/materializer/edits/working-state.d.ts +36 -8
  371. package/dist/materializer/edits/working-state.d.ts.map +1 -1
  372. package/dist/materializer/effective/build-events.d.ts +1 -0
  373. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  374. package/dist/materializer/effective/diff.d.ts +7 -0
  375. package/dist/materializer/effective/diff.d.ts.map +1 -1
  376. package/dist/materializer/effective/load-state.d.ts +0 -2
  377. package/dist/materializer/effective/load-state.d.ts.map +1 -1
  378. package/dist/materializer/effective/resolve.d.ts +17 -2
  379. package/dist/materializer/effective/resolve.d.ts.map +1 -1
  380. package/dist/materializer/execution/commit-lifecycle.d.ts +2 -2
  381. package/dist/materializer/execution/commit-lifecycle.d.ts.map +1 -1
  382. package/dist/materializer/execution/plan-stream.d.ts.map +1 -1
  383. package/dist/materializer/execution/scope.d.ts +26 -0
  384. package/dist/materializer/execution/scope.d.ts.map +1 -0
  385. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  386. package/dist/materializer/execution/work-records.d.ts +6 -5
  387. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  388. package/dist/materializer/index.d.ts +2 -2
  389. package/dist/materializer/index.d.ts.map +1 -1
  390. package/dist/materializer/index.js +30 -18
  391. package/dist/materializer/index.js.map +1 -1
  392. package/dist/materializer/materializer.d.ts +37 -5
  393. package/dist/materializer/materializer.d.ts.map +1 -1
  394. package/dist/materializer/projections/finish-run.d.ts +2 -1
  395. package/dist/materializer/projections/finish-run.d.ts.map +1 -1
  396. package/dist/materializer/projections/replace.d.ts +2 -1
  397. package/dist/materializer/projections/replace.d.ts.map +1 -1
  398. package/dist/materializer/projections/replacement-plan.d.ts +1 -0
  399. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  400. package/dist/materializer/shared/batching.d.ts.map +1 -1
  401. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  402. package/dist/materializer/telemetry/append.d.ts +2 -1
  403. package/dist/materializer/telemetry/append.d.ts.map +1 -1
  404. package/dist/materializer/telemetry/plan.d.ts +7 -1
  405. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  406. package/dist/objects/action/request.d.ts +3 -3
  407. package/dist/objects/action/request.d.ts.map +1 -1
  408. package/dist/objects/context/index.d.ts +1 -1
  409. package/dist/objects/context/index.d.ts.map +1 -1
  410. package/dist/objects/context/types.d.ts +5 -0
  411. package/dist/objects/context/types.d.ts.map +1 -1
  412. package/dist/objects/execution.d.ts +100 -0
  413. package/dist/objects/execution.d.ts.map +1 -0
  414. package/dist/objects/index.js +37 -24
  415. package/dist/objects/index.js.map +1 -1
  416. package/dist/objects/materializer-adapter.d.ts +1 -1
  417. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  418. package/dist/objects/query/executor.d.ts +3 -8
  419. package/dist/objects/query/executor.d.ts.map +1 -1
  420. package/dist/objects/query/index.d.ts +2 -2
  421. package/dist/objects/query/index.d.ts.map +1 -1
  422. package/dist/objects/query/index.js +9 -13
  423. package/dist/objects/query/index.js.map +1 -1
  424. package/dist/objects/query/planner.d.ts +0 -3
  425. package/dist/objects/query/planner.d.ts.map +1 -1
  426. package/dist/objects/sdk/object-handle.d.ts +2 -2
  427. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  428. package/dist/objects/sdk/object-set.d.ts +2 -0
  429. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  430. package/dist/objects/sdk/runtime-query-executor.d.ts +2 -0
  431. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  432. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  433. package/dist/objects/service/action-service.d.ts +3 -2
  434. package/dist/objects/service/action-service.d.ts.map +1 -1
  435. package/dist/objects/service/list-service.d.ts +1 -1
  436. package/dist/objects/telemetry/history.d.ts +2 -0
  437. package/dist/objects/telemetry/history.d.ts.map +1 -1
  438. package/dist/objects/telemetry/write-batch.d.ts.map +1 -1
  439. package/dist/ontology/index.d.ts +1 -1
  440. package/dist/ontology/index.d.ts.map +1 -1
  441. package/dist/ontology/index.js +5 -5
  442. package/dist/ontology/internal.js +7 -6
  443. package/dist/ontology/internal.js.map +3 -3
  444. package/dist/ontology/registry.d.ts +15 -2
  445. package/dist/ontology/registry.d.ts.map +1 -1
  446. package/dist/ontology/validation/normalize.d.ts.map +1 -1
  447. package/dist/pipelines/execution.d.ts +19 -0
  448. package/dist/pipelines/execution.d.ts.map +1 -0
  449. package/dist/pipelines/index.d.ts +1 -0
  450. package/dist/pipelines/index.d.ts.map +1 -1
  451. package/dist/pipelines/index.js +66 -0
  452. package/dist/pipelines/index.js.map +9 -0
  453. package/dist/pipelines/request.d.ts +6 -9
  454. package/dist/pipelines/request.d.ts.map +1 -1
  455. package/dist/pipelines/run-dispatch.d.ts +47 -0
  456. package/dist/pipelines/run-dispatch.d.ts.map +1 -0
  457. package/dist/projections/builders.d.ts +0 -2
  458. package/dist/projections/builders.d.ts.map +1 -1
  459. package/dist/projections/capability.d.ts +7 -0
  460. package/dist/projections/capability.d.ts.map +1 -0
  461. package/dist/projections/execution.d.ts +19 -0
  462. package/dist/projections/execution.d.ts.map +1 -0
  463. package/dist/projections/index.d.ts +3 -1
  464. package/dist/projections/index.d.ts.map +1 -1
  465. package/dist/projections/internal.d.ts +4 -10
  466. package/dist/projections/internal.d.ts.map +1 -1
  467. package/dist/projections/internal.js +42 -6
  468. package/dist/projections/internal.js.map +1 -1
  469. package/dist/projections/ownership.d.ts +2 -2
  470. package/dist/projections/ownership.d.ts.map +1 -1
  471. package/dist/projections/registry.d.ts +21 -11
  472. package/dist/projections/registry.d.ts.map +1 -1
  473. package/dist/projections/revision.d.ts +2 -2
  474. package/dist/projections/revision.d.ts.map +1 -1
  475. package/dist/projections/run-dispatch.d.ts +37 -0
  476. package/dist/projections/run-dispatch.d.ts.map +1 -0
  477. package/dist/projections/run-id.d.ts +3 -0
  478. package/dist/projections/run-id.d.ts.map +1 -0
  479. package/dist/projections/types.d.ts +3 -0
  480. package/dist/projections/types.d.ts.map +1 -1
  481. package/dist/projections/validation.d.ts +2 -2
  482. package/dist/projections/validation.d.ts.map +1 -1
  483. package/dist/queues/in-memory.d.ts +11 -10
  484. package/dist/queues/in-memory.d.ts.map +1 -1
  485. package/dist/queues/index.d.ts +1 -1
  486. package/dist/queues/index.d.ts.map +1 -1
  487. package/dist/queues/index.js +1 -1
  488. package/dist/queues/types.d.ts +52 -42
  489. package/dist/queues/types.d.ts.map +1 -1
  490. package/dist/rules/execution.d.ts +14 -0
  491. package/dist/rules/execution.d.ts.map +1 -0
  492. package/dist/rules/index.d.ts +1 -1
  493. package/dist/rules/index.d.ts.map +1 -1
  494. package/dist/rules/validation.d.ts +1 -2
  495. package/dist/rules/validation.d.ts.map +1 -1
  496. package/dist/runtime/ai-usage.d.ts +8 -0
  497. package/dist/runtime/ai-usage.d.ts.map +1 -0
  498. package/dist/runtime/create.d.ts +7 -5
  499. package/dist/runtime/create.d.ts.map +1 -1
  500. package/dist/runtime/definitions.d.ts +35 -0
  501. package/dist/runtime/definitions.d.ts.map +1 -0
  502. package/dist/runtime/host.d.ts +123 -0
  503. package/dist/runtime/host.d.ts.map +1 -0
  504. package/dist/runtime/index.d.ts +6 -5
  505. package/dist/runtime/index.d.ts.map +1 -1
  506. package/dist/runtime/internal.d.ts +4 -0
  507. package/dist/runtime/internal.d.ts.map +1 -1
  508. package/dist/runtime/internal.js +6 -2
  509. package/dist/runtime/internal.js.map +1 -1
  510. package/dist/runtime/ontology-mutations.d.ts +4 -2
  511. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  512. package/dist/runtime/resolve-definitions.d.ts +42 -0
  513. package/dist/runtime/resolve-definitions.d.ts.map +1 -0
  514. package/dist/runtime/sixb.d.ts +43 -219
  515. package/dist/runtime/sixb.d.ts.map +1 -1
  516. package/dist/runtime/types.d.ts +16 -216
  517. package/dist/runtime/types.d.ts.map +1 -1
  518. package/dist/scheduler/index.d.ts +1 -1
  519. package/dist/scheduler/index.d.ts.map +1 -1
  520. package/dist/scheduler/index.js +3 -6
  521. package/dist/scheduler/index.js.map +1 -1
  522. package/dist/scheduler/runtime.d.ts +7 -2
  523. package/dist/scheduler/runtime.d.ts.map +1 -1
  524. package/dist/schedules/execution.d.ts +6 -0
  525. package/dist/schedules/execution.d.ts.map +1 -0
  526. package/dist/schedules/index.js +9 -7
  527. package/dist/schedules/index.js.map +1 -1
  528. package/dist/schedules/types.d.ts +1 -3
  529. package/dist/schedules/types.d.ts.map +1 -1
  530. package/dist/security/every.d.ts +4 -1
  531. package/dist/security/every.d.ts.map +1 -1
  532. package/dist/security/grants.d.ts +4 -1
  533. package/dist/security/grants.d.ts.map +1 -1
  534. package/dist/security/index.d.ts +3 -1
  535. package/dist/security/index.d.ts.map +1 -1
  536. package/dist/security/registry.d.ts +42 -0
  537. package/dist/security/registry.d.ts.map +1 -0
  538. package/dist/security/types.d.ts +7 -12
  539. package/dist/security/types.d.ts.map +1 -1
  540. package/dist/security/validation.d.ts +2 -0
  541. package/dist/security/validation.d.ts.map +1 -1
  542. package/dist/storage/action-runs/failure.d.ts +7 -0
  543. package/dist/storage/action-runs/failure.d.ts.map +1 -0
  544. package/dist/storage/action-runs/failure.js +14 -0
  545. package/dist/storage/action-runs/failure.js.map +9 -0
  546. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  547. package/dist/storage/action-runs/in-memory.d.ts +3 -1
  548. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  549. package/dist/storage/action-runs/index.d.ts +2 -1
  550. package/dist/storage/action-runs/index.d.ts.map +1 -1
  551. package/dist/storage/action-runs/provider.d.ts +10 -0
  552. package/dist/storage/action-runs/provider.d.ts.map +1 -0
  553. package/dist/storage/action-runs/provider.js +13 -0
  554. package/dist/storage/action-runs/provider.js.map +9 -0
  555. package/dist/storage/action-runs/types.d.ts +37 -18
  556. package/dist/storage/action-runs/types.d.ts.map +1 -1
  557. package/dist/storage/agents/errors.d.ts +1 -1
  558. package/dist/storage/agents/errors.d.ts.map +1 -1
  559. package/dist/storage/agents/in-memory.d.ts +4 -1
  560. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  561. package/dist/storage/agents/index.d.ts +2 -2
  562. package/dist/storage/agents/index.d.ts.map +1 -1
  563. package/dist/storage/agents/provider.d.ts +10 -0
  564. package/dist/storage/agents/provider.d.ts.map +1 -0
  565. package/dist/storage/agents/provider.js +17 -0
  566. package/dist/storage/agents/provider.js.map +9 -0
  567. package/dist/storage/agents/types.d.ts +13 -22
  568. package/dist/storage/agents/types.d.ts.map +1 -1
  569. package/dist/storage/ai-usage/errors.d.ts +8 -0
  570. package/dist/storage/ai-usage/errors.d.ts.map +1 -0
  571. package/dist/storage/ai-usage/in-memory.d.ts +28 -0
  572. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -0
  573. package/dist/storage/ai-usage/index.d.ts +8 -0
  574. package/dist/storage/ai-usage/index.d.ts.map +1 -0
  575. package/dist/storage/ai-usage/record.d.ts +6 -0
  576. package/dist/storage/ai-usage/record.d.ts.map +1 -0
  577. package/dist/storage/ai-usage/types.d.ts +89 -0
  578. package/dist/storage/ai-usage/types.d.ts.map +1 -0
  579. package/dist/storage/ai-usage/usage.d.ts +11 -0
  580. package/dist/storage/ai-usage/usage.d.ts.map +1 -0
  581. package/dist/storage/auth/types.d.ts +1 -0
  582. package/dist/storage/auth/types.d.ts.map +1 -1
  583. package/dist/storage/connector-connections/errors.d.ts +12 -0
  584. package/dist/storage/connector-connections/errors.d.ts.map +1 -0
  585. package/dist/storage/connector-connections/in-memory.d.ts +81 -0
  586. package/dist/storage/connector-connections/in-memory.d.ts.map +1 -0
  587. package/dist/storage/connector-connections/index.d.ts +7 -0
  588. package/dist/storage/connector-connections/index.d.ts.map +1 -0
  589. package/dist/storage/connector-connections/provider/authorizations.d.ts +20 -0
  590. package/dist/storage/connector-connections/provider/authorizations.d.ts.map +1 -0
  591. package/dist/storage/connector-connections/provider/connections.d.ts +17 -0
  592. package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -0
  593. package/dist/storage/connector-connections/provider/runs.d.ts +14 -0
  594. package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -0
  595. package/dist/storage/connector-connections/provider/shared.d.ts +74 -0
  596. package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -0
  597. package/dist/storage/connector-connections/provider.d.ts +49 -0
  598. package/dist/storage/connector-connections/provider.d.ts.map +1 -0
  599. package/dist/storage/connector-connections/provider.js +1025 -0
  600. package/dist/storage/connector-connections/provider.js.map +14 -0
  601. package/dist/storage/connector-connections/types.d.ts +402 -0
  602. package/dist/storage/connector-connections/types.d.ts.map +1 -0
  603. package/dist/storage/executions/errors.d.ts +8 -0
  604. package/dist/storage/executions/errors.d.ts.map +1 -0
  605. package/dist/storage/executions/in-memory.d.ts +21 -0
  606. package/dist/storage/executions/in-memory.d.ts.map +1 -0
  607. package/dist/storage/executions/index.d.ts +5 -0
  608. package/dist/storage/executions/index.d.ts.map +1 -0
  609. package/dist/storage/executions/provider.d.ts +29 -0
  610. package/dist/storage/executions/provider.d.ts.map +1 -0
  611. package/dist/storage/executions/provider.js +208 -0
  612. package/dist/storage/executions/provider.js.map +10 -0
  613. package/dist/storage/executions/run-link.d.ts +24 -0
  614. package/dist/storage/executions/run-link.d.ts.map +1 -0
  615. package/dist/storage/executions/types.d.ts +62 -0
  616. package/dist/storage/executions/types.d.ts.map +1 -0
  617. package/dist/storage/executions/validation.d.ts +13 -0
  618. package/dist/storage/executions/validation.d.ts.map +1 -0
  619. package/dist/storage/in-memory/index.d.ts +20 -5
  620. package/dist/storage/in-memory/index.d.ts.map +1 -1
  621. package/dist/storage/index.d.ts +28 -17
  622. package/dist/storage/index.d.ts.map +1 -1
  623. package/dist/storage/index.js +90 -27
  624. package/dist/storage/index.js.map +1 -1
  625. package/dist/storage/ontology/commits.d.ts +1 -0
  626. package/dist/storage/ontology/commits.d.ts.map +1 -1
  627. package/dist/storage/ontology/in-memory/index.d.ts +1 -0
  628. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  629. package/dist/storage/ontology/in-memory/materializations-state.d.ts +3 -2
  630. package/dist/storage/ontology/in-memory/materializations-state.d.ts.map +1 -1
  631. package/dist/storage/ontology/in-memory/materializations-work.d.ts +2 -2
  632. package/dist/storage/ontology/in-memory/materializations-work.d.ts.map +1 -1
  633. package/dist/storage/ontology/in-memory/materializations.d.ts +3 -1
  634. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  635. package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -2
  636. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  637. package/dist/storage/ontology/index.d.ts +3 -2
  638. package/dist/storage/ontology/index.d.ts.map +1 -1
  639. package/dist/storage/ontology/materializations.d.ts +50 -5
  640. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  641. package/dist/storage/ontology/outbox.d.ts +8 -2
  642. package/dist/storage/ontology/outbox.d.ts.map +1 -1
  643. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  644. package/dist/storage/ontology/provider.d.ts +5 -22
  645. package/dist/storage/ontology/provider.d.ts.map +1 -1
  646. package/dist/storage/ontology/provider.js +6 -7
  647. package/dist/storage/ontology/provider.js.map +1 -1
  648. package/dist/storage/operation-scope.d.ts.map +1 -1
  649. package/dist/storage/operation-scope.js +1 -1
  650. package/dist/storage/pipeline-runs/idempotency.d.ts +3 -0
  651. package/dist/storage/pipeline-runs/idempotency.d.ts.map +1 -0
  652. package/dist/storage/pipeline-runs/in-memory.d.ts +5 -1
  653. package/dist/storage/pipeline-runs/in-memory.d.ts.map +1 -1
  654. package/dist/storage/pipeline-runs/index.d.ts +3 -1
  655. package/dist/storage/pipeline-runs/index.d.ts.map +1 -1
  656. package/dist/storage/pipeline-runs/provider.d.ts +10 -0
  657. package/dist/storage/pipeline-runs/provider.d.ts.map +1 -0
  658. package/dist/storage/pipeline-runs/provider.js +11 -0
  659. package/dist/storage/pipeline-runs/provider.js.map +9 -0
  660. package/dist/storage/pipeline-runs/types.d.ts +30 -14
  661. package/dist/storage/pipeline-runs/types.d.ts.map +1 -1
  662. package/dist/storage/projection-runs/in-memory.d.ts +8 -3
  663. package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
  664. package/dist/storage/projection-runs/index.d.ts +2 -2
  665. package/dist/storage/projection-runs/index.d.ts.map +1 -1
  666. package/dist/storage/projection-runs/lifecycle.d.ts +14 -8
  667. package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
  668. package/dist/storage/projection-runs/provider.d.ts +13 -0
  669. package/dist/storage/projection-runs/provider.d.ts.map +1 -0
  670. package/dist/storage/projection-runs/{lifecycle.js → provider.js} +15 -4
  671. package/dist/storage/projection-runs/provider.js.map +9 -0
  672. package/dist/storage/projection-runs/types.d.ts +28 -11
  673. package/dist/storage/projection-runs/types.d.ts.map +1 -1
  674. package/dist/storage/run-listing.d.ts +8 -9
  675. package/dist/storage/run-listing.d.ts.map +1 -1
  676. package/dist/storage/sync-runs/idempotency.d.ts +3 -0
  677. package/dist/storage/sync-runs/idempotency.d.ts.map +1 -0
  678. package/dist/storage/sync-runs/in-memory.d.ts +5 -1
  679. package/dist/storage/sync-runs/in-memory.d.ts.map +1 -1
  680. package/dist/storage/sync-runs/index.d.ts +3 -1
  681. package/dist/storage/sync-runs/index.d.ts.map +1 -1
  682. package/dist/storage/sync-runs/provider.d.ts +10 -0
  683. package/dist/storage/sync-runs/provider.d.ts.map +1 -0
  684. package/dist/storage/sync-runs/provider.js +11 -0
  685. package/dist/storage/sync-runs/provider.js.map +9 -0
  686. package/dist/storage/sync-runs/types.d.ts +35 -14
  687. package/dist/storage/sync-runs/types.d.ts.map +1 -1
  688. package/dist/storage/types.d.ts +20 -15
  689. package/dist/storage/types.d.ts.map +1 -1
  690. package/dist/storage/webhook-runs/errors.d.ts +3 -0
  691. package/dist/storage/webhook-runs/errors.d.ts.map +1 -1
  692. package/dist/storage/webhook-runs/in-memory.d.ts +13 -1
  693. package/dist/storage/webhook-runs/in-memory.d.ts.map +1 -1
  694. package/dist/storage/webhook-runs/index.d.ts +3 -2
  695. package/dist/storage/webhook-runs/index.d.ts.map +1 -1
  696. package/dist/storage/webhook-runs/provider.d.ts +10 -0
  697. package/dist/storage/webhook-runs/provider.d.ts.map +1 -0
  698. package/dist/storage/webhook-runs/provider.js +11 -0
  699. package/dist/storage/webhook-runs/provider.js.map +9 -0
  700. package/dist/storage/webhook-runs/types.d.ts +37 -11
  701. package/dist/storage/webhook-runs/types.d.ts.map +1 -1
  702. package/dist/storage/workflow-runs/in-memory.d.ts +6 -2
  703. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  704. package/dist/storage/workflow-runs/index.d.ts +2 -1
  705. package/dist/storage/workflow-runs/index.d.ts.map +1 -1
  706. package/dist/storage/workflow-runs/provider.d.ts +19 -0
  707. package/dist/storage/workflow-runs/provider.d.ts.map +1 -0
  708. package/dist/storage/workflow-runs/provider.js +19 -0
  709. package/dist/storage/workflow-runs/provider.js.map +9 -0
  710. package/dist/storage/workflow-runs/types.d.ts +30 -30
  711. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  712. package/dist/syncs/builders.d.ts +11 -3
  713. package/dist/syncs/builders.d.ts.map +1 -1
  714. package/dist/syncs/execution.d.ts +18 -0
  715. package/dist/syncs/execution.d.ts.map +1 -0
  716. package/dist/syncs/index.d.ts +3 -1
  717. package/dist/syncs/index.d.ts.map +1 -1
  718. package/dist/syncs/index.js +65 -0
  719. package/dist/syncs/index.js.map +9 -0
  720. package/dist/syncs/request.d.ts +6 -16
  721. package/dist/syncs/request.d.ts.map +1 -1
  722. package/dist/syncs/run-dispatch.d.ts +47 -0
  723. package/dist/syncs/run-dispatch.d.ts.map +1 -0
  724. package/dist/syncs/sources.d.ts +8 -0
  725. package/dist/syncs/sources.d.ts.map +1 -0
  726. package/dist/syncs/types.d.ts +34 -22
  727. package/dist/syncs/types.d.ts.map +1 -1
  728. package/dist/syncs/validation.d.ts +14 -0
  729. package/dist/syncs/validation.d.ts.map +1 -0
  730. package/dist/testing/action-execution.d.ts +12 -0
  731. package/dist/testing/action-execution.d.ts.map +1 -0
  732. package/dist/testing/agent-execution.d.ts +14 -0
  733. package/dist/testing/agent-execution.d.ts.map +1 -0
  734. package/dist/testing/agent-storage-contract.d.ts +10 -3
  735. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  736. package/dist/testing/ai-usage-storage-contract.d.ts +13 -0
  737. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -0
  738. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  739. package/dist/testing/broker-contract.d.ts.map +1 -1
  740. package/dist/testing/connector-connection-storage-contract.d.ts +16 -0
  741. package/dist/testing/connector-connection-storage-contract.d.ts.map +1 -0
  742. package/dist/testing/execution-storage-contract.d.ts +15 -0
  743. package/dist/testing/execution-storage-contract.d.ts.map +1 -0
  744. package/dist/testing/execution.d.ts +23 -0
  745. package/dist/testing/execution.d.ts.map +1 -0
  746. package/dist/testing/index.d.ts +13 -0
  747. package/dist/testing/index.d.ts.map +1 -1
  748. package/dist/testing/index.js +4270 -1484
  749. package/dist/testing/index.js.map +27 -14
  750. package/dist/testing/lake-merge-storage-contract.d.ts +7 -0
  751. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -0
  752. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  753. package/dist/testing/materializer-fixture.d.ts +2 -2
  754. package/dist/testing/materializer-fixture.d.ts.map +1 -1
  755. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  756. package/dist/testing/ontology-contract-fixture.d.ts +1 -0
  757. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  758. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  759. package/dist/testing/pipeline-execution.d.ts +16 -0
  760. package/dist/testing/pipeline-execution.d.ts.map +1 -0
  761. package/dist/testing/projection-execution.d.ts +20 -0
  762. package/dist/testing/projection-execution.d.ts.map +1 -0
  763. package/dist/testing/projection-run-storage-contract.d.ts +9 -4
  764. package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
  765. package/dist/testing/queues-contract.d.ts.map +1 -1
  766. package/dist/testing/sync-execution.d.ts +16 -0
  767. package/dist/testing/sync-execution.d.ts.map +1 -0
  768. package/dist/testing/webhook-execution.d.ts +12 -0
  769. package/dist/testing/webhook-execution.d.ts.map +1 -0
  770. package/dist/testing/webhook-run-storage-contract.d.ts +11 -0
  771. package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -0
  772. package/dist/testing/workflow-execution.d.ts +23 -0
  773. package/dist/testing/workflow-execution.d.ts.map +1 -0
  774. package/dist/webhooks/index.d.ts +2 -1
  775. package/dist/webhooks/index.d.ts.map +1 -1
  776. package/dist/webhooks/internal.d.ts +2 -0
  777. package/dist/webhooks/internal.d.ts.map +1 -0
  778. package/dist/webhooks/internal.js +150 -0
  779. package/dist/webhooks/internal.js.map +10 -0
  780. package/dist/webhooks/registry.d.ts +18 -4
  781. package/dist/webhooks/registry.d.ts.map +1 -1
  782. package/dist/webhooks/run-admission.d.ts +25 -0
  783. package/dist/webhooks/run-admission.d.ts.map +1 -0
  784. package/dist/webhooks/types.d.ts +8 -5
  785. package/dist/webhooks/types.d.ts.map +1 -1
  786. package/dist/workers/index.js +18 -19
  787. package/dist/workers/index.js.map +4 -4
  788. package/dist/workers/queue-delivery.d.ts +7 -7
  789. package/dist/workers/queue-delivery.d.ts.map +1 -1
  790. package/dist/workers/queue-worker.d.ts +30 -11
  791. package/dist/workers/queue-worker.d.ts.map +1 -1
  792. package/dist/workflows/execution.d.ts +49 -0
  793. package/dist/workflows/execution.d.ts.map +1 -0
  794. package/dist/workflows/failure.d.ts +28 -0
  795. package/dist/workflows/failure.d.ts.map +1 -0
  796. package/dist/workflows/index.d.ts +4 -2
  797. package/dist/workflows/index.d.ts.map +1 -1
  798. package/dist/workflows/index.js +63 -35
  799. package/dist/workflows/index.js.map +1 -1
  800. package/dist/workflows/request.d.ts +2 -1
  801. package/dist/workflows/request.d.ts.map +1 -1
  802. package/dist/workflows/run-dispatch.d.ts +59 -0
  803. package/dist/workflows/run-dispatch.d.ts.map +1 -0
  804. package/dist/workflows/types.d.ts +38 -8
  805. package/dist/workflows/types.d.ts.map +1 -1
  806. package/package.json +107 -5
  807. package/src/actions/commit-edits.ts +0 -3
  808. package/src/actions/execution.ts +83 -0
  809. package/src/actions/index.ts +1 -1
  810. package/src/actions/registry.ts +22 -10
  811. package/src/actions/request.ts +55 -177
  812. package/src/actions/run-dispatch.ts +276 -0
  813. package/src/actions/types/context.ts +2 -4
  814. package/src/actions/validation.ts +2 -2
  815. package/src/agents/adapters.ts +8 -12
  816. package/src/agents/authority.ts +189 -0
  817. package/src/agents/builders.ts +53 -3
  818. package/src/agents/dispatch.ts +1 -6
  819. package/src/agents/errors.ts +24 -0
  820. package/src/agents/execution.ts +254 -0
  821. package/src/agents/index.ts +37 -5
  822. package/src/agents/prompt.ts +17 -5
  823. package/src/agents/request.ts +153 -13
  824. package/src/agents/streams.ts +150 -3
  825. package/src/agents/tool-definition.ts +93 -0
  826. package/src/agents/types.ts +99 -0
  827. package/src/agents/validation.ts +289 -5
  828. package/src/auth/attribution.ts +48 -0
  829. package/src/auth/index.ts +1 -0
  830. package/src/auth/runtime.ts +5 -5
  831. package/src/authorization/decision.ts +75 -14
  832. package/src/authorization/grant-kinds.ts +9 -0
  833. package/src/authorization/index.ts +2 -0
  834. package/src/blob-storage/execution.ts +78 -0
  835. package/src/blob-storage/validation.ts +2 -10
  836. package/src/bootstrap/discovery.ts +88 -268
  837. package/src/bootstrap/index.ts +2 -13
  838. package/src/broker/in-memory.ts +8 -1
  839. package/src/broker/types.ts +5 -0
  840. package/src/connectors/builders.ts +37 -2
  841. package/src/connectors/connections/authorizations.ts +646 -0
  842. package/src/connectors/connections/capability.ts +59 -0
  843. package/src/connectors/connections/command-context.ts +98 -0
  844. package/src/connectors/connections/contracts.ts +208 -0
  845. package/src/connectors/connections/credential-codec.ts +48 -0
  846. package/src/connectors/connections/credential-mutations.ts +574 -0
  847. package/src/connectors/connections/execution.ts +138 -0
  848. package/src/connectors/connections/internal.ts +17 -0
  849. package/src/connectors/connections/provider-operation.ts +41 -0
  850. package/src/connectors/connections/request.ts +447 -0
  851. package/src/connectors/connections/runs.ts +702 -0
  852. package/src/connectors/connections/service.ts +644 -0
  853. package/src/connectors/connections/storage-boundary.ts +13 -0
  854. package/src/connectors/connections/tokens.ts +292 -0
  855. package/src/connectors/connections/validation.ts +316 -0
  856. package/src/connectors/connections/views.ts +37 -0
  857. package/src/connectors/credentials.ts +149 -0
  858. package/src/connectors/errors.ts +111 -3
  859. package/src/connectors/execution.ts +157 -0
  860. package/src/connectors/index.ts +26 -2
  861. package/src/connectors/service.ts +142 -0
  862. package/src/connectors/types.ts +156 -7
  863. package/src/datasets/builders.ts +49 -5
  864. package/src/datasets/changes.ts +13 -0
  865. package/src/datasets/execution.ts +24 -0
  866. package/src/datasets/index.ts +3 -0
  867. package/src/datasets/types.ts +5 -0
  868. package/src/datasets/validation.ts +53 -11
  869. package/src/error-reporting/capability.ts +33 -106
  870. package/src/error-reporting/internal.ts +3 -1
  871. package/src/error-reporting/reporter.ts +19 -3
  872. package/src/error-reporting/reports.ts +172 -0
  873. package/src/error-reporting/types.ts +97 -43
  874. package/src/errors/catalog.ts +149 -0
  875. package/src/errors/internal.ts +322 -0
  876. package/src/errors/types.ts +21 -0
  877. package/src/events/definitions.ts +0 -4
  878. package/src/events/execution.ts +45 -0
  879. package/src/events/index.ts +15 -14
  880. package/src/events/outbox-dispatcher.ts +53 -18
  881. package/src/events/{runtime.ts → service.ts} +19 -23
  882. package/src/events/types/pipelines.ts +4 -1
  883. package/src/events/types/syncs.ts +3 -0
  884. package/src/events/types/workflows.ts +4 -2
  885. package/src/execution/agent.ts +130 -0
  886. package/src/execution/authorization.ts +409 -0
  887. package/src/execution/dispatch.ts +7 -0
  888. package/src/execution/durable.ts +193 -0
  889. package/src/execution/index.ts +12 -0
  890. package/src/execution/primitive.ts +50 -0
  891. package/src/execution/request.ts +109 -0
  892. package/src/execution/scopes.ts +198 -0
  893. package/src/execution/types.ts +113 -0
  894. package/src/http/api-routes.ts +42 -7
  895. package/src/index.ts +127 -10
  896. package/src/json.ts +11 -8
  897. package/src/lake-storage/definition-updates.ts +21 -0
  898. package/src/lake-storage/in-memory.ts +284 -2
  899. package/src/lake-storage/index.ts +14 -0
  900. package/src/lake-storage/merge-validation.ts +117 -0
  901. package/src/lake-storage/merge.ts +35 -0
  902. package/src/lake-storage/types.ts +3 -1
  903. package/src/logging/execution.ts +28 -0
  904. package/src/logging/index.ts +4 -4
  905. package/src/logging/{runtime.ts → service.ts} +7 -7
  906. package/src/materialization/events.ts +1 -0
  907. package/src/materialization/index.ts +2 -0
  908. package/src/materialization/model.ts +30 -18
  909. package/src/materializer/README.md +9 -13
  910. package/src/materializer/edits/commit.ts +85 -28
  911. package/src/materializer/edits/load-state.ts +79 -16
  912. package/src/materializer/edits/operations.ts +72 -36
  913. package/src/materializer/edits/plan.ts +95 -22
  914. package/src/materializer/edits/working-state.ts +86 -55
  915. package/src/materializer/effective/build-events.ts +2 -0
  916. package/src/materializer/effective/diff.ts +22 -0
  917. package/src/materializer/effective/load-state.ts +0 -31
  918. package/src/materializer/effective/resolve.ts +62 -0
  919. package/src/materializer/execution/commit-lifecycle.ts +9 -1
  920. package/src/materializer/execution/plan-stream.ts +33 -9
  921. package/src/materializer/execution/scope.ts +95 -0
  922. package/src/materializer/execution/work-executor.ts +6 -2
  923. package/src/materializer/execution/work-records.ts +39 -6
  924. package/src/materializer/index.ts +9 -1
  925. package/src/materializer/materializer.ts +67 -5
  926. package/src/materializer/projections/finish-run.ts +29 -11
  927. package/src/materializer/projections/replace.ts +55 -22
  928. package/src/materializer/projections/replacement-plan.ts +37 -7
  929. package/src/materializer/shared/batching.ts +4 -1
  930. package/src/materializer/shared/normalize.ts +0 -19
  931. package/src/materializer/telemetry/append.ts +57 -26
  932. package/src/materializer/telemetry/plan.ts +15 -6
  933. package/src/objects/action/request.ts +5 -5
  934. package/src/objects/context/index.ts +1 -0
  935. package/src/objects/context/types.ts +6 -0
  936. package/src/objects/execution.ts +346 -0
  937. package/src/objects/materializer-adapter.ts +1 -23
  938. package/src/objects/query/executor.ts +15 -29
  939. package/src/objects/query/index.ts +1 -2
  940. package/src/objects/query/planner.ts +0 -6
  941. package/src/objects/sdk/object-handle.ts +2 -2
  942. package/src/objects/sdk/object-set.ts +17 -7
  943. package/src/objects/sdk/runtime-query-executor.ts +9 -2
  944. package/src/objects/sdk/telemetry-channel.ts +5 -1
  945. package/src/objects/service/action-service.ts +5 -2
  946. package/src/objects/service/list-service.ts +1 -1
  947. package/src/objects/telemetry/history.ts +8 -3
  948. package/src/objects/telemetry/write-batch.ts +0 -2
  949. package/src/ontology/index.ts +6 -1
  950. package/src/ontology/json-schema.ts +2 -1
  951. package/src/ontology/registry.ts +16 -2
  952. package/src/ontology/validation/normalize.ts +9 -15
  953. package/src/pipelines/execution.ts +105 -0
  954. package/src/pipelines/index.ts +7 -0
  955. package/src/pipelines/request.ts +32 -26
  956. package/src/pipelines/run-dispatch.ts +308 -0
  957. package/src/projections/builders.ts +0 -9
  958. package/src/projections/capability.ts +37 -0
  959. package/src/projections/execution.ts +85 -0
  960. package/src/projections/index.ts +2 -1
  961. package/src/projections/internal.ts +17 -60
  962. package/src/projections/ownership.ts +2 -2
  963. package/src/projections/registry.ts +26 -11
  964. package/src/projections/revision.ts +7 -5
  965. package/src/projections/run-dispatch.ts +497 -0
  966. package/src/projections/run-id.ts +20 -0
  967. package/src/projections/types.ts +12 -0
  968. package/src/projections/validation.ts +3 -3
  969. package/src/queues/in-memory.ts +37 -11
  970. package/src/queues/index.ts +9 -2
  971. package/src/queues/types.ts +70 -45
  972. package/src/rules/execution.ts +49 -0
  973. package/src/rules/index.ts +0 -1
  974. package/src/rules/validation.ts +2 -6
  975. package/src/runtime/ai-usage.ts +17 -0
  976. package/src/runtime/create.ts +28 -68
  977. package/src/runtime/definitions.ts +44 -0
  978. package/src/runtime/host.ts +377 -0
  979. package/src/runtime/index.ts +5 -13
  980. package/src/runtime/internal.ts +12 -0
  981. package/src/runtime/ontology-mutations.ts +5 -3
  982. package/src/runtime/resolve-definitions.ts +238 -0
  983. package/src/runtime/sixb.ts +95 -807
  984. package/src/runtime/types.ts +17 -290
  985. package/src/scheduler/index.ts +1 -1
  986. package/src/scheduler/runtime.ts +37 -6
  987. package/src/schedules/execution.ts +14 -0
  988. package/src/schedules/types.ts +0 -8
  989. package/src/security/every.ts +4 -0
  990. package/src/security/grants.ts +13 -1
  991. package/src/security/index.ts +3 -1
  992. package/src/security/registry.ts +107 -0
  993. package/src/security/types.ts +8 -12
  994. package/src/security/validation.ts +7 -0
  995. package/src/storage/action-runs/failure.ts +64 -0
  996. package/src/storage/action-runs/idempotency.ts +3 -1
  997. package/src/storage/action-runs/in-memory.ts +39 -9
  998. package/src/storage/action-runs/index.ts +3 -0
  999. package/src/storage/action-runs/provider.ts +25 -0
  1000. package/src/storage/action-runs/types.ts +61 -27
  1001. package/src/storage/agents/errors.ts +1 -0
  1002. package/src/storage/agents/in-memory.ts +49 -11
  1003. package/src/storage/agents/index.ts +2 -1
  1004. package/src/storage/agents/provider.ts +27 -0
  1005. package/src/storage/agents/types.ts +19 -19
  1006. package/src/storage/ai-usage/errors.ts +13 -0
  1007. package/src/storage/ai-usage/in-memory.ts +162 -0
  1008. package/src/storage/ai-usage/index.ts +21 -0
  1009. package/src/storage/ai-usage/record.ts +74 -0
  1010. package/src/storage/ai-usage/types.ts +102 -0
  1011. package/src/storage/ai-usage/usage.ts +104 -0
  1012. package/src/storage/auth/types.ts +1 -0
  1013. package/src/storage/connector-connections/errors.ts +24 -0
  1014. package/src/storage/connector-connections/in-memory.ts +1377 -0
  1015. package/src/storage/connector-connections/index.ts +66 -0
  1016. package/src/storage/connector-connections/provider/authorizations.ts +446 -0
  1017. package/src/storage/connector-connections/provider/connections.ts +291 -0
  1018. package/src/storage/connector-connections/provider/runs.ts +369 -0
  1019. package/src/storage/connector-connections/provider/shared.ts +342 -0
  1020. package/src/storage/connector-connections/provider.ts +219 -0
  1021. package/src/storage/connector-connections/types.ts +546 -0
  1022. package/src/storage/executions/errors.ts +21 -0
  1023. package/src/storage/executions/in-memory.ts +75 -0
  1024. package/src/storage/executions/index.ts +16 -0
  1025. package/src/storage/executions/provider.ts +292 -0
  1026. package/src/storage/executions/run-link.ts +70 -0
  1027. package/src/storage/executions/types.ts +49 -0
  1028. package/src/storage/executions/validation.ts +370 -0
  1029. package/src/storage/in-memory/index.ts +50 -16
  1030. package/src/storage/index.ts +155 -15
  1031. package/src/storage/ontology/commits.ts +1 -0
  1032. package/src/storage/ontology/in-memory/index.ts +2 -0
  1033. package/src/storage/ontology/in-memory/materializations-finalization.ts +2 -1
  1034. package/src/storage/ontology/in-memory/materializations-state.ts +10 -0
  1035. package/src/storage/ontology/in-memory/materializations-work.ts +2 -1
  1036. package/src/storage/ontology/in-memory/materializations.ts +131 -9
  1037. package/src/storage/ontology/in-memory/outbox.ts +1 -1
  1038. package/src/storage/ontology/in-memory/shared-state.ts +12 -1
  1039. package/src/storage/ontology/index.ts +6 -0
  1040. package/src/storage/ontology/materializations.ts +50 -4
  1041. package/src/storage/ontology/outbox.ts +13 -2
  1042. package/src/storage/ontology/provider-header-validation.ts +1 -0
  1043. package/src/storage/ontology/provider-work.ts +33 -14
  1044. package/src/storage/ontology/provider.ts +72 -52
  1045. package/src/storage/operation-scope.ts +1 -0
  1046. package/src/storage/pipeline-runs/idempotency.ts +14 -0
  1047. package/src/storage/pipeline-runs/in-memory.ts +88 -8
  1048. package/src/storage/pipeline-runs/index.ts +5 -1
  1049. package/src/storage/pipeline-runs/provider.ts +25 -0
  1050. package/src/storage/pipeline-runs/types.ts +37 -14
  1051. package/src/storage/projection-runs/in-memory.ts +93 -24
  1052. package/src/storage/projection-runs/index.ts +4 -0
  1053. package/src/storage/projection-runs/lifecycle.ts +165 -36
  1054. package/src/storage/projection-runs/provider.ts +34 -0
  1055. package/src/storage/projection-runs/types.ts +34 -11
  1056. package/src/storage/run-listing.ts +22 -13
  1057. package/src/storage/sync-runs/idempotency.ts +18 -0
  1058. package/src/storage/sync-runs/in-memory.ts +92 -9
  1059. package/src/storage/sync-runs/index.ts +5 -1
  1060. package/src/storage/sync-runs/provider.ts +25 -0
  1061. package/src/storage/sync-runs/types.ts +44 -15
  1062. package/src/storage/types.ts +45 -17
  1063. package/src/storage/webhook-runs/errors.ts +14 -0
  1064. package/src/storage/webhook-runs/in-memory.ts +84 -9
  1065. package/src/storage/webhook-runs/index.ts +5 -1
  1066. package/src/storage/webhook-runs/provider.ts +30 -0
  1067. package/src/storage/webhook-runs/types.ts +52 -11
  1068. package/src/storage/workflow-runs/in-memory.ts +91 -55
  1069. package/src/storage/workflow-runs/index.ts +2 -0
  1070. package/src/storage/workflow-runs/provider.ts +70 -0
  1071. package/src/storage/workflow-runs/types.ts +38 -25
  1072. package/src/syncs/builders.ts +33 -15
  1073. package/src/syncs/execution.ts +78 -0
  1074. package/src/syncs/index.ts +14 -0
  1075. package/src/syncs/request.ts +32 -43
  1076. package/src/syncs/run-dispatch.ts +312 -0
  1077. package/src/syncs/sources.ts +20 -0
  1078. package/src/syncs/types.ts +75 -25
  1079. package/src/syncs/validation.ts +77 -0
  1080. package/src/testing/action-execution.ts +61 -0
  1081. package/src/testing/agent-execution.ts +81 -0
  1082. package/src/testing/agent-storage-contract.ts +158 -63
  1083. package/src/testing/ai-usage-storage-contract.ts +528 -0
  1084. package/src/testing/auth-storage-contract.ts +17 -1
  1085. package/src/testing/broker-contract.ts +16 -1
  1086. package/src/testing/connector-connection-storage-contract.ts +1052 -0
  1087. package/src/testing/execution-storage-contract.ts +435 -0
  1088. package/src/testing/execution.ts +48 -0
  1089. package/src/testing/index.ts +56 -0
  1090. package/src/testing/lake-merge-storage-contract.ts +302 -0
  1091. package/src/testing/lake-storage-contract.ts +23 -0
  1092. package/src/testing/materializer-fixture.ts +11 -3
  1093. package/src/testing/materializer-storage-contract.ts +213 -11
  1094. package/src/testing/ontology-contract-fixture.ts +35 -2
  1095. package/src/testing/ontology-storage-contract.ts +75 -14
  1096. package/src/testing/pipeline-execution.ts +64 -0
  1097. package/src/testing/projection-execution.ts +98 -0
  1098. package/src/testing/projection-run-storage-contract.ts +215 -29
  1099. package/src/testing/queues-contract.ts +40 -51
  1100. package/src/testing/sync-execution.ts +61 -0
  1101. package/src/testing/webhook-execution.ts +47 -0
  1102. package/src/testing/webhook-run-storage-contract.ts +240 -0
  1103. package/src/testing/workflow-execution.ts +77 -0
  1104. package/src/webhooks/index.ts +2 -1
  1105. package/src/webhooks/internal.ts +5 -0
  1106. package/src/webhooks/registry.ts +60 -36
  1107. package/src/webhooks/run-admission.ts +172 -0
  1108. package/src/webhooks/types.ts +8 -5
  1109. package/src/workers/queue-delivery.ts +25 -22
  1110. package/src/workers/queue-worker.ts +62 -32
  1111. package/src/workflows/execution.ts +292 -0
  1112. package/src/workflows/failure.ts +63 -0
  1113. package/src/workflows/index.ts +10 -1
  1114. package/src/workflows/request.ts +39 -118
  1115. package/src/workflows/run-dispatch.ts +359 -0
  1116. package/src/workflows/snapshot.ts +1 -10
  1117. package/src/workflows/types.ts +39 -8
  1118. package/dist/actions/runtime.d.ts +0 -11
  1119. package/dist/actions/runtime.d.ts.map +0 -1
  1120. package/dist/agents/runtime.d.ts +0 -41
  1121. package/dist/agents/runtime.d.ts.map +0 -1
  1122. package/dist/chunk-0fygrz37.js +0 -354
  1123. package/dist/chunk-0fygrz37.js.map +0 -17
  1124. package/dist/chunk-0psb6kdw.js +0 -989
  1125. package/dist/chunk-0psb6kdw.js.map +0 -15
  1126. package/dist/chunk-1vffvydj.js.map +0 -10
  1127. package/dist/chunk-2gpr6jsz.js.map +0 -13
  1128. package/dist/chunk-2s6sydsh.js.map +0 -12
  1129. package/dist/chunk-50kv63vj.js.map +0 -12
  1130. package/dist/chunk-590dejbp.js +0 -49
  1131. package/dist/chunk-590dejbp.js.map +0 -10
  1132. package/dist/chunk-867jxh7c.js.map +0 -19
  1133. package/dist/chunk-aebzcsxr.js.map +0 -48
  1134. package/dist/chunk-btpe64e4.js +0 -554
  1135. package/dist/chunk-btpe64e4.js.map +0 -13
  1136. package/dist/chunk-dcgrzj1t.js.map +0 -36
  1137. package/dist/chunk-dhmj53mx.js.map +0 -16
  1138. package/dist/chunk-hsv43v58.js +0 -1390
  1139. package/dist/chunk-hsv43v58.js.map +0 -21
  1140. package/dist/chunk-jdwx7vzs.js.map +0 -14
  1141. package/dist/chunk-k25jm1x5.js +0 -102
  1142. package/dist/chunk-k25jm1x5.js.map +0 -10
  1143. package/dist/chunk-k41ajtz7.js +0 -352
  1144. package/dist/chunk-k41ajtz7.js.map +0 -13
  1145. package/dist/chunk-k6j72mtt.js +0 -9
  1146. package/dist/chunk-k6j72mtt.js.map +0 -10
  1147. package/dist/chunk-nvamz5dv.js +0 -819
  1148. package/dist/chunk-nvamz5dv.js.map +0 -21
  1149. package/dist/chunk-pv1yad91.js +0 -1165
  1150. package/dist/chunk-pv1yad91.js.map +0 -27
  1151. package/dist/chunk-q4qzq0ea.js.map +0 -14
  1152. package/dist/chunk-r65yscvk.js.map +0 -11
  1153. package/dist/chunk-t358gywy.js.map +0 -34
  1154. package/dist/chunk-t72dvahb.js.map +0 -12
  1155. package/dist/chunk-v5c085yp.js.map +0 -10
  1156. package/dist/chunk-wj01s5hr.js.map +0 -11
  1157. package/dist/chunk-wxhdnwh4.js +0 -37
  1158. package/dist/chunk-wxhdnwh4.js.map +0 -10
  1159. package/dist/chunk-xz5g49bp.js.map +0 -11
  1160. package/dist/chunk-ya6brh8a.js.map +0 -11
  1161. package/dist/chunk-yvef9xwc.js.map +0 -44
  1162. package/dist/chunk-yxss87qa.js.map +0 -14
  1163. package/dist/connectors/runtime.d.ts +0 -13
  1164. package/dist/connectors/runtime.d.ts.map +0 -1
  1165. package/dist/events/runtime.d.ts.map +0 -1
  1166. package/dist/objects/contexts.d.ts +0 -45
  1167. package/dist/objects/contexts.d.ts.map +0 -1
  1168. package/dist/objects/helpers.d.ts +0 -7
  1169. package/dist/objects/helpers.d.ts.map +0 -1
  1170. package/dist/runtime/scoped.d.ts +0 -158
  1171. package/dist/runtime/scoped.d.ts.map +0 -1
  1172. package/dist/security/runtime.d.ts +0 -16
  1173. package/dist/security/runtime.d.ts.map +0 -1
  1174. package/dist/storage/webhook-deliveries/in-memory.d.ts +0 -18
  1175. package/dist/storage/webhook-deliveries/in-memory.d.ts.map +0 -1
  1176. package/dist/storage/webhook-deliveries/index.d.ts +0 -3
  1177. package/dist/storage/webhook-deliveries/index.d.ts.map +0 -1
  1178. package/dist/storage/webhook-deliveries/types.d.ts +0 -43
  1179. package/dist/storage/webhook-deliveries/types.d.ts.map +0 -1
  1180. package/dist/workflows/runtime.d.ts +0 -33
  1181. package/dist/workflows/runtime.d.ts.map +0 -1
  1182. package/src/actions/runtime.ts +0 -31
  1183. package/src/agents/runtime.ts +0 -124
  1184. package/src/connectors/runtime.ts +0 -100
  1185. package/src/objects/contexts.ts +0 -64
  1186. package/src/objects/helpers.ts +0 -18
  1187. package/src/runtime/scoped.ts +0 -436
  1188. package/src/security/runtime.ts +0 -101
  1189. package/src/storage/webhook-deliveries/in-memory.ts +0 -108
  1190. package/src/storage/webhook-deliveries/index.ts +0 -9
  1191. package/src/storage/webhook-deliveries/types.ts +0 -41
  1192. package/src/workflows/runtime.ts +0 -68
  1193. /package/dist/{chunk-45tw90k7.js.map → chunk-4gz41why.js.map} +0 -0
  1194. /package/dist/{chunk-vj723r3p.js.map → chunk-8b55ygje.js.map} +0 -0
  1195. /package/dist/{chunk-p6r5g77m.js.map → chunk-vybf6pkp.js.map} +0 -0
  1196. /package/dist/{chunk-5yny9z0e.js.map → chunk-z3zp0bj1.js.map} +0 -0
@@ -0,0 +1,1377 @@
1
+ import { timingSafeEqual } from "node:crypto"
2
+ import { createSixbError, parseSixbFailure, toSixbFailure } from "../../errors/internal"
3
+ import { ConnectorConnectionStorageError } from "./errors"
4
+ import type {
5
+ AttachConnectorConnectionRunAuthorizationInput,
6
+ ClaimConnectorConnectionRunCallbackInput,
7
+ ClaimConnectorConnectionRunCallbackResult,
8
+ ClaimConnectorCredentialMutationInput,
9
+ ClaimConnectorCredentialMutationResult,
10
+ ConnectorAuthorizationAttemptRecord,
11
+ ConnectorAuthorizationKey,
12
+ ConnectorAuthorizationRecord,
13
+ ConnectorConnectionKey,
14
+ ConnectorConnectionRecord,
15
+ ConnectorConnectionRunAwaitingProviderRecord,
16
+ ConnectorConnectionRunAwaitingSelectionRecord,
17
+ ConnectorConnectionRunProcessingRecord,
18
+ ConnectorConnectionRunRecord,
19
+ ConnectorConnectionRunSucceededRecord,
20
+ ConnectorConnectionStorage,
21
+ ConnectorCredentialMutationFence,
22
+ CreateConnectorAuthorizationAttemptInput,
23
+ CreateConnectorAuthorizationInput,
24
+ CreateConnectorConnectionRunInput,
25
+ CreateConnectorConnectionSelectionRunInput,
26
+ FinalizeConnectorReauthorizationInput,
27
+ FinishConnectorConnectionRunInput,
28
+ GetConnectorConnectionInput,
29
+ GetConnectorConnectionRunInput,
30
+ InitializeConnectorAuthorizationAccountsInput,
31
+ ListConnectorConnectionsInput,
32
+ MarkConnectorAuthorizationNeedsReauthorizationInput,
33
+ MarkConnectorCredentialMutationExecutingInput,
34
+ PutConnectorConnectionFromRunInput,
35
+ PutConnectorConnectionFromRunResult,
36
+ PutConnectorConnectionInput,
37
+ PutConnectorConnectionResult,
38
+ RecoverExpiredConnectorCredentialMutationInput,
39
+ ReleaseConnectorCredentialMutationInput,
40
+ RenewConnectorCredentialMutationInput,
41
+ StageConnectorCredentialMutationCredentialsInput,
42
+ StageConnectorCredentialMutationRevocationInput,
43
+ WaitForConnectorConnectionRunSelectionInput,
44
+ } from "./types"
45
+ import { CONNECTOR_CONNECTION_RUN_FAILURE_CODES } from "./types"
46
+
47
+ export interface InMemoryConnectorConnectionStorageSnapshot {
48
+ readonly attempts: Map<string, ConnectorAuthorizationAttemptRecord>
49
+ readonly connectionRuns: Map<string, ConnectorConnectionRunRecord>
50
+ readonly authorizations: Map<string, ConnectorAuthorizationRecord>
51
+ readonly connections: Map<string, ConnectorConnectionRecord>
52
+ }
53
+
54
+ function connectionRunBase(record: ConnectorConnectionRunRecord, updatedAt: Date) {
55
+ return {
56
+ id: record.id,
57
+ projectId: record.projectId,
58
+ connectorId: record.connectorId,
59
+ kind: record.kind,
60
+ owner: structuredClone(record.owner),
61
+ slot: record.slot,
62
+ initiatedByExecutionId: record.initiatedByExecutionId,
63
+ createdAt: new Date(record.createdAt),
64
+ updatedAt: new Date(updatedAt),
65
+ }
66
+ }
67
+
68
+ function expireConnectionRun(
69
+ record: Extract<ConnectorConnectionRunRecord, { readonly status: "waiting" }>,
70
+ now: Date
71
+ ) {
72
+ return {
73
+ ...connectionRunBase(record, now),
74
+ status: "expired" as const,
75
+ ...(record.waitingFor === "account_selection"
76
+ ? { authorizationId: record.authorizationId }
77
+ : {}),
78
+ finishedAt: new Date(now),
79
+ }
80
+ }
81
+
82
+ function failExpiredProcessingRun(record: ConnectorConnectionRunProcessingRecord, now: Date) {
83
+ return {
84
+ ...connectionRunBase(record, now),
85
+ status: "failed" as const,
86
+ ...(record.authorizationId === undefined ? {} : { authorizationId: record.authorizationId }),
87
+ error: toSixbFailure(
88
+ createSixbError(
89
+ "internal.unexpected",
90
+ "[Sixb] Connector callback processing did not complete before its deadline."
91
+ ),
92
+ { allowedCodes: CONNECTOR_CONNECTION_RUN_FAILURE_CODES, at: now }
93
+ ),
94
+ finishedAt: new Date(now),
95
+ }
96
+ }
97
+
98
+ export interface InMemoryConnectorConnectionStorageOptions {
99
+ /** Storage-authoritative clock. Durable implementations should use their database clock. */
100
+ readonly now?: () => Date
101
+ }
102
+
103
+ export class InMemoryConnectorConnectionStorage implements ConnectorConnectionStorage {
104
+ readonly durability = "ephemeral" as const
105
+ private readonly attempts = new Map<string, ConnectorAuthorizationAttemptRecord>()
106
+ private readonly connectionRuns = new Map<string, ConnectorConnectionRunRecord>()
107
+ private readonly authorizations = new Map<string, ConnectorAuthorizationRecord>()
108
+ private readonly connections = new Map<string, ConnectorConnectionRecord>()
109
+
110
+ constructor(private readonly options: InMemoryConnectorConnectionStorageOptions = {}) {}
111
+
112
+ async createAuthorizationAttempt(
113
+ input: CreateConnectorAuthorizationAttemptInput
114
+ ): Promise<ConnectorAuthorizationAttemptRecord> {
115
+ assertPositiveDuration(input.ttlMs, "authorization attempt TTL")
116
+ if (this.attempts.has(input.id)) {
117
+ throw new ConnectorConnectionStorageError(
118
+ "attempt_conflict",
119
+ "[Sixb] Connector authorization attempt already exists."
120
+ )
121
+ }
122
+ if (input.connectionRunId !== undefined) {
123
+ const run = this.connectionRuns.get(input.connectionRunId)
124
+ const existingAttempt = this.findAuthorizationAttemptByConnectionRunId(input.connectionRunId)
125
+ if (
126
+ !run ||
127
+ existingAttempt ||
128
+ run.projectId !== input.projectId ||
129
+ run.connectorId !== input.connectorId ||
130
+ run.status !== "waiting" ||
131
+ run.waitingFor !== "provider_authorization" ||
132
+ run.slot !== input.slot ||
133
+ run.initiatedByExecutionId !== input.initiatedByExecutionId
134
+ ) {
135
+ throw new ConnectorConnectionStorageError(
136
+ "attempt_conflict",
137
+ "[Sixb] Connector authorization attempt does not match its connection run."
138
+ )
139
+ }
140
+ }
141
+ const now = this.now()
142
+ const record: ConnectorAuthorizationAttemptRecord = {
143
+ id: input.id,
144
+ projectId: input.projectId,
145
+ connectorId: input.connectorId,
146
+ owner: structuredClone(input.owner),
147
+ slot: input.slot,
148
+ initiatedByExecutionId: input.initiatedByExecutionId,
149
+ stateHash: input.stateHash,
150
+ codeVerifier: structuredClone(input.codeVerifier),
151
+ redirectUri: input.redirectUri,
152
+ ...(input.connectionRunId === undefined ? {} : { connectionRunId: input.connectionRunId }),
153
+ ...(input.returnTo === undefined ? {} : { returnTo: input.returnTo }),
154
+ ...(input.callbackBindingHash === undefined
155
+ ? {}
156
+ : { callbackBindingHash: input.callbackBindingHash }),
157
+ ...(input.reauthorizationId === undefined
158
+ ? {}
159
+ : { reauthorizationId: input.reauthorizationId }),
160
+ ...(input.reauthorizationRevision === undefined
161
+ ? {}
162
+ : { reauthorizationRevision: input.reauthorizationRevision }),
163
+ ...(input.reauthorizationConnectionIds === undefined
164
+ ? {}
165
+ : { reauthorizationConnectionIds: [...input.reauthorizationConnectionIds] }),
166
+ createdAt: now,
167
+ expiresAt: new Date(now.getTime() + input.ttlMs),
168
+ }
169
+ this.attempts.set(record.id, record)
170
+ return structuredClone(record)
171
+ }
172
+
173
+ async consumeAuthorizationAttempt(
174
+ input: Parameters<ConnectorConnectionStorage["consumeAuthorizationAttempt"]>[0]
175
+ ): Promise<ConnectorAuthorizationAttemptRecord> {
176
+ const record = this.attempts.get(input.id)
177
+ if (record && record.expiresAt.getTime() <= this.now().getTime()) {
178
+ this.attempts.delete(record.id)
179
+ throw invalidAttempt()
180
+ }
181
+ if (
182
+ !record ||
183
+ record.projectId !== input.projectId ||
184
+ record.connectorId !== input.connectorId ||
185
+ record.redirectUri !== input.redirectUri ||
186
+ !safeEqual(record.stateHash, input.stateHash)
187
+ ) {
188
+ throw invalidAttempt()
189
+ }
190
+
191
+ this.attempts.delete(input.id)
192
+ return structuredClone(record)
193
+ }
194
+
195
+ async createConnectionRun(
196
+ input: CreateConnectorConnectionRunInput
197
+ ): Promise<ConnectorConnectionRunRecord> {
198
+ assertPositiveDuration(input.ttlMs, "connection run TTL")
199
+ if (this.connectionRuns.has(input.id)) {
200
+ throw new ConnectorConnectionStorageError(
201
+ "run_conflict",
202
+ "[Sixb] Connector connection run already exists."
203
+ )
204
+ }
205
+ const now = this.now()
206
+ const record: ConnectorConnectionRunAwaitingProviderRecord = {
207
+ id: input.id,
208
+ projectId: input.projectId,
209
+ connectorId: input.connectorId,
210
+ kind: input.kind,
211
+ owner: structuredClone(input.owner),
212
+ slot: input.slot,
213
+ initiatedByExecutionId: input.initiatedByExecutionId,
214
+ status: "waiting",
215
+ waitingFor: "provider_authorization",
216
+ createdAt: now,
217
+ updatedAt: now,
218
+ expiresAt: new Date(now.getTime() + input.ttlMs),
219
+ }
220
+ this.connectionRuns.set(record.id, record)
221
+ return structuredClone(record)
222
+ }
223
+
224
+ async createConnectionSelectionRun(
225
+ input: CreateConnectorConnectionSelectionRunInput
226
+ ): Promise<ConnectorConnectionRunAwaitingSelectionRecord> {
227
+ assertPositiveDuration(input.ttlMs, "connection run TTL")
228
+ if (this.connectionRuns.has(input.id)) {
229
+ throw new ConnectorConnectionStorageError(
230
+ "run_conflict",
231
+ "[Sixb] Connector connection run already exists."
232
+ )
233
+ }
234
+ const authorization = this.authorizations.get(input.authorizationId)
235
+ if (
236
+ !sameAuthorizationScope(authorization, input) ||
237
+ authorization.status !== "active" ||
238
+ authorization.credentialMutation
239
+ ) {
240
+ throw authorizationConflict()
241
+ }
242
+ const now = this.now()
243
+ const record: ConnectorConnectionRunAwaitingSelectionRecord = {
244
+ id: input.id,
245
+ projectId: input.projectId,
246
+ connectorId: input.connectorId,
247
+ kind: "connect",
248
+ owner: structuredClone(input.owner),
249
+ slot: input.slot,
250
+ initiatedByExecutionId: input.initiatedByExecutionId,
251
+ status: "waiting",
252
+ waitingFor: "account_selection",
253
+ authorizationId: input.authorizationId,
254
+ createdAt: now,
255
+ updatedAt: now,
256
+ expiresAt: new Date(now.getTime() + input.ttlMs),
257
+ }
258
+ this.connectionRuns.set(record.id, record)
259
+ return structuredClone(record)
260
+ }
261
+
262
+ async claimConnectionRunCallback(
263
+ input: ClaimConnectorConnectionRunCallbackInput
264
+ ): Promise<ClaimConnectorConnectionRunCallbackResult | null> {
265
+ assertPositiveDuration(input.processingTtlMs, "connection run processing TTL")
266
+ const attempt = this.attempts.get(input.attemptId)
267
+ if (
268
+ !attempt ||
269
+ attempt.projectId !== input.projectId ||
270
+ attempt.connectionRunId === undefined ||
271
+ attempt.returnTo === undefined ||
272
+ attempt.callbackBindingHash === undefined ||
273
+ attempt.redirectUri !== input.redirectUri ||
274
+ !safeEqual(attempt.stateHash, input.stateHash) ||
275
+ !safeEqual(attempt.callbackBindingHash, input.callbackBindingHash)
276
+ ) {
277
+ return null
278
+ }
279
+
280
+ const run = this.connectionRuns.get(attempt.connectionRunId)
281
+ if (
282
+ !run ||
283
+ run.projectId !== input.projectId ||
284
+ run.connectorId !== attempt.connectorId ||
285
+ run.status !== "waiting" ||
286
+ run.waitingFor !== "provider_authorization" ||
287
+ run.slot !== attempt.slot ||
288
+ run.initiatedByExecutionId !== attempt.initiatedByExecutionId
289
+ ) {
290
+ return null
291
+ }
292
+
293
+ const now = this.now()
294
+ this.attempts.delete(attempt.id)
295
+ if (attempt.expiresAt.getTime() <= now.getTime() || run.expiresAt.getTime() <= now.getTime()) {
296
+ const expired = expireConnectionRun(run, now)
297
+ this.connectionRuns.set(run.id, expired)
298
+ return { type: "expired", run: structuredClone(expired), returnTo: attempt.returnTo }
299
+ }
300
+
301
+ const processing: ConnectorConnectionRunProcessingRecord = {
302
+ ...connectionRunBase(run, now),
303
+ status: "running" as const,
304
+ processingId: input.processingId,
305
+ callbackStartedAt: now,
306
+ expiresAt: new Date(now.getTime() + input.processingTtlMs),
307
+ ...(attempt.reauthorizationId === undefined
308
+ ? {}
309
+ : { authorizationId: attempt.reauthorizationId }),
310
+ }
311
+ this.connectionRuns.set(run.id, processing)
312
+ return {
313
+ type: "claimed",
314
+ run: structuredClone(processing),
315
+ attempt: structuredClone(attempt),
316
+ returnTo: attempt.returnTo,
317
+ }
318
+ }
319
+
320
+ async attachConnectionRunAuthorization(
321
+ input: AttachConnectorConnectionRunAuthorizationInput
322
+ ): Promise<ConnectorConnectionRunProcessingRecord | null> {
323
+ const run = this.currentConnectionRun(input.runId)
324
+ const authorization = this.authorizations.get(input.authorizationId)
325
+ if (
326
+ !sameConnectionRunScope(run, input) ||
327
+ run.status !== "running" ||
328
+ run.processingId !== input.processingId ||
329
+ (run.authorizationId !== undefined && run.authorizationId !== input.authorizationId) ||
330
+ !sameAuthorizationScope(authorization, input) ||
331
+ authorization.status !== "pending_selection"
332
+ ) {
333
+ return null
334
+ }
335
+ const updated: ConnectorConnectionRunProcessingRecord = {
336
+ ...run,
337
+ authorizationId: input.authorizationId,
338
+ updatedAt: this.now(),
339
+ }
340
+ this.connectionRuns.set(run.id, updated)
341
+ return structuredClone(updated)
342
+ }
343
+
344
+ async waitForConnectionRunSelection(input: WaitForConnectorConnectionRunSelectionInput) {
345
+ const run = this.currentConnectionRun(input.runId)
346
+ if (
347
+ !sameConnectionRunScope(run, input) ||
348
+ run.status !== "running" ||
349
+ run.kind !== "connect" ||
350
+ run.processingId !== input.processingId ||
351
+ run.authorizationId !== input.authorizationId
352
+ ) {
353
+ return null
354
+ }
355
+ const now = this.now()
356
+ const waiting = {
357
+ ...connectionRunBase(run, now),
358
+ status: "waiting" as const,
359
+ waitingFor: "account_selection" as const,
360
+ authorizationId: input.authorizationId,
361
+ expiresAt: new Date(input.expiresAt),
362
+ }
363
+ this.connectionRuns.set(run.id, waiting)
364
+ return structuredClone(waiting)
365
+ }
366
+
367
+ async finishConnectionRun(
368
+ input: FinishConnectorConnectionRunInput
369
+ ): Promise<ConnectorConnectionRunRecord | null> {
370
+ const run = this.currentConnectionRun(input.runId)
371
+ if (!sameConnectionRunScope(run, input) || run.status !== "running") return null
372
+ if (input.processingId !== run.processingId) return null
373
+ const now = this.now()
374
+ const authorizationId =
375
+ input.status === "succeeded"
376
+ ? input.authorizationId
377
+ : input.status === "failed"
378
+ ? (input.authorizationId ?? run.authorizationId)
379
+ : run.authorizationId
380
+ if (input.status !== "succeeded" && run.kind === "connect" && authorizationId) {
381
+ this.markPendingAuthorizationForCleanup(run.connectorId, authorizationId, now)
382
+ }
383
+ const base = connectionRunBase(run, now)
384
+ const finished: ConnectorConnectionRunRecord =
385
+ input.status === "succeeded"
386
+ ? {
387
+ ...base,
388
+ status: "succeeded",
389
+ authorizationId: input.authorizationId,
390
+ ...(input.cleanupAuthorizationId === undefined
391
+ ? {}
392
+ : { cleanupAuthorizationId: input.cleanupAuthorizationId }),
393
+ connections: structuredClone(input.connections),
394
+ finishedAt: now,
395
+ }
396
+ : input.status === "failed"
397
+ ? {
398
+ ...base,
399
+ status: "failed",
400
+ ...(authorizationId === undefined ? {} : { authorizationId }),
401
+ error: parseSixbFailure(input.error, CONNECTOR_CONNECTION_RUN_FAILURE_CODES),
402
+ finishedAt: now,
403
+ }
404
+ : {
405
+ ...base,
406
+ status: "cancelled",
407
+ ...(authorizationId === undefined ? {} : { authorizationId }),
408
+ finishedAt: now,
409
+ }
410
+ this.connectionRuns.set(run.id, finished)
411
+ return structuredClone(finished)
412
+ }
413
+
414
+ async getConnectionRun(
415
+ input: GetConnectorConnectionRunInput
416
+ ): Promise<ConnectorConnectionRunRecord | null> {
417
+ const run = this.currentConnectionRun(input.runId)
418
+ return sameConnectionRunScope(run, input) ? structuredClone(run) : null
419
+ }
420
+
421
+ async createAuthorization(
422
+ input: CreateConnectorAuthorizationInput
423
+ ): Promise<ConnectorAuthorizationRecord> {
424
+ assertPositiveDuration(input.selectionTtlMs, "account selection TTL")
425
+ if (this.authorizations.has(input.id)) {
426
+ throw new ConnectorConnectionStorageError(
427
+ "authorization_conflict",
428
+ "[Sixb] Connector authorization already exists."
429
+ )
430
+ }
431
+ const now = this.now()
432
+ const record: ConnectorAuthorizationRecord = {
433
+ id: input.id,
434
+ projectId: input.projectId,
435
+ connectorId: input.connectorId,
436
+ authorizedBy: structuredClone(input.authorizedBy),
437
+ credentials: structuredClone(input.credentials),
438
+ ...(input.credentialExpiresAt === undefined
439
+ ? {}
440
+ : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),
441
+ scopes: [...input.scopes],
442
+ accounts: structuredClone(input.accounts),
443
+ status: "pending_selection",
444
+ selectionExpiresAt: new Date(now.getTime() + input.selectionTtlMs),
445
+ revision: 0,
446
+ createdAt: now,
447
+ updatedAt: now,
448
+ }
449
+ this.authorizations.set(record.id, record)
450
+ return structuredClone(record)
451
+ }
452
+
453
+ async initializeAuthorizationAccounts(
454
+ input: InitializeConnectorAuthorizationAccountsInput
455
+ ): Promise<ConnectorAuthorizationRecord | null> {
456
+ const record = this.authorizations.get(input.authorizationId)
457
+ if (
458
+ !sameAuthorizationScope(record, input) ||
459
+ record.revision !== input.expectedRevision ||
460
+ record.status !== "pending_selection" ||
461
+ record.credentialMutation
462
+ ) {
463
+ return null
464
+ }
465
+ const updated: ConnectorAuthorizationRecord = {
466
+ ...record,
467
+ accounts: structuredClone(input.accounts),
468
+ revision: record.revision + 1,
469
+ updatedAt: this.now(),
470
+ }
471
+ this.authorizations.set(record.id, updated)
472
+ return structuredClone(updated)
473
+ }
474
+
475
+ async getAuthorization(
476
+ input: ConnectorAuthorizationKey
477
+ ): Promise<ConnectorAuthorizationRecord | null> {
478
+ const authorization = this.authorizations.get(input.authorizationId)
479
+ return sameAuthorizationScope(authorization, input) ? structuredClone(authorization) : null
480
+ }
481
+
482
+ async getAuthorizationByConnectionId(
483
+ input: ConnectorConnectionKey
484
+ ): Promise<ConnectorAuthorizationRecord | null> {
485
+ const connection = this.connections.get(input.connectionId)
486
+ if (!sameConnectionScope(connection, input)) return null
487
+ const authorization = this.authorizations.get(connection.authorizationId)
488
+ return sameAuthorizationScope(authorization, input) ? structuredClone(authorization) : null
489
+ }
490
+
491
+ async claimCredentialMutation(
492
+ input: ClaimConnectorCredentialMutationInput
493
+ ): Promise<ClaimConnectorCredentialMutationResult | null> {
494
+ assertPositiveDuration(input.leaseDurationMs, "credential mutation lease duration")
495
+ assertPositiveDuration(input.operationTimeoutMs, "credential mutation timeout")
496
+ const now = this.now()
497
+ const record = this.authorizations.get(input.authorizationId)
498
+ if (
499
+ !sameAuthorizationScope(record, input) ||
500
+ record.revision !== input.expectedRevision ||
501
+ !canClaimMutation(record.status, input.mutation.kind)
502
+ ) {
503
+ return null
504
+ }
505
+
506
+ if (record.credentialMutation) {
507
+ const canReplacePrepared =
508
+ record.credentialMutation.phase === "prepared" &&
509
+ record.credentialMutation.expiresAt.getTime() <= now.getTime()
510
+ if (!canReplacePrepared) return null
511
+ }
512
+
513
+ const attached = this.connectedConnectionsForAuthorization(record.id)
514
+ if (
515
+ input.mutation.kind === "reauthorization" &&
516
+ !sameIds(
517
+ attached.map((connection) => connection.id),
518
+ input.expectedConnectionIds ?? []
519
+ )
520
+ ) {
521
+ return null
522
+ }
523
+
524
+ const deadlineAt = new Date(now.getTime() + input.operationTimeoutMs)
525
+ const mutation = {
526
+ ...structuredClone(input.mutation),
527
+ phase: "prepared" as const,
528
+ expiresAt: leaseExpiry(now, input.leaseDurationMs, deadlineAt),
529
+ deadlineAt,
530
+ ...(input.mutation.kind === "reauthorization"
531
+ ? { expectedConnectionIds: [...(input.expectedConnectionIds ?? [])] }
532
+ : {}),
533
+ }
534
+ const startsRevocation =
535
+ input.mutation.kind === "revocation" && record.status !== "revocation_pending"
536
+ const updated: ConnectorAuthorizationRecord = {
537
+ ...record,
538
+ status: input.mutation.kind === "revocation" ? "revocation_pending" : record.status,
539
+ selectionExpiresAt:
540
+ input.mutation.kind === "revocation" ? undefined : record.selectionExpiresAt,
541
+ revision: startsRevocation ? record.revision + 1 : record.revision,
542
+ credentialMutation: mutation,
543
+ updatedAt: now,
544
+ }
545
+ this.authorizations.set(record.id, updated)
546
+
547
+ const disconnected: ConnectorConnectionRecord[] = []
548
+ if (input.mutation.kind === "revocation") {
549
+ for (const connection of attached) {
550
+ const updatedConnection = disconnectConnectionRecord(connection, now)
551
+ this.connections.set(connection.id, updatedConnection)
552
+ disconnected.push(structuredClone(updatedConnection))
553
+ }
554
+ }
555
+ return { authorization: structuredClone(updated), disconnected }
556
+ }
557
+
558
+ async markCredentialMutationExecuting(
559
+ input: MarkConnectorCredentialMutationExecutingInput
560
+ ): Promise<ConnectorAuthorizationRecord | null> {
561
+ const now = this.now()
562
+ const record = this.authorizations.get(input.authorizationId)
563
+ if (
564
+ !matchesMutation(record, input, input.holderId) ||
565
+ record.credentialMutation.phase !== "prepared" ||
566
+ mutationExpired(record, now)
567
+ ) {
568
+ return null
569
+ }
570
+ const updated: ConnectorAuthorizationRecord = {
571
+ ...record,
572
+ credentialMutation: { ...record.credentialMutation, phase: "executing" },
573
+ updatedAt: now,
574
+ }
575
+ this.authorizations.set(record.id, updated)
576
+ return structuredClone(updated)
577
+ }
578
+
579
+ async renewCredentialMutation(
580
+ input: RenewConnectorCredentialMutationInput
581
+ ): Promise<ConnectorAuthorizationRecord | null> {
582
+ assertPositiveDuration(input.leaseDurationMs, "credential mutation lease duration")
583
+ const now = this.now()
584
+ const record = this.authorizations.get(input.authorizationId)
585
+ if (
586
+ !matchesMutation(record, input, input.holderId) ||
587
+ record.credentialMutation.phase === "result_staged" ||
588
+ mutationExpired(record, now)
589
+ ) {
590
+ return null
591
+ }
592
+ const updated: ConnectorAuthorizationRecord = {
593
+ ...record,
594
+ credentialMutation: {
595
+ ...record.credentialMutation,
596
+ expiresAt: leaseExpiry(now, input.leaseDurationMs, record.credentialMutation.deadlineAt),
597
+ },
598
+ }
599
+ this.authorizations.set(record.id, updated)
600
+ return structuredClone(updated)
601
+ }
602
+
603
+ async stageCredentialMutationCredentials(
604
+ input: StageConnectorCredentialMutationCredentialsInput
605
+ ): Promise<ConnectorAuthorizationRecord | null> {
606
+ const now = this.now()
607
+ const record = this.authorizations.get(input.authorizationId)
608
+ if (
609
+ !matchesMutation(record, input, input.holderId) ||
610
+ record.credentialMutation.phase !== "executing" ||
611
+ mutationExpired(record, now) ||
612
+ record.credentialMutation.kind === "revocation"
613
+ ) {
614
+ return null
615
+ }
616
+ const updated: ConnectorAuthorizationRecord = {
617
+ ...record,
618
+ credentialMutation: {
619
+ ...record.credentialMutation,
620
+ phase: "result_staged",
621
+ stagedCredentials: {
622
+ credentials: structuredClone(input.credentials),
623
+ ...(input.credentialExpiresAt === undefined
624
+ ? {}
625
+ : { credentialExpiresAt: new Date(input.credentialExpiresAt) }),
626
+ scopes: [...input.scopes],
627
+ },
628
+ },
629
+ updatedAt: now,
630
+ }
631
+ this.authorizations.set(record.id, updated)
632
+ return structuredClone(updated)
633
+ }
634
+
635
+ async stageCredentialMutationRevocation(
636
+ input: StageConnectorCredentialMutationRevocationInput
637
+ ): Promise<ConnectorAuthorizationRecord | null> {
638
+ const now = this.now()
639
+ const record = this.authorizations.get(input.authorizationId)
640
+ if (
641
+ !matchesMutation(record, input, input.holderId) ||
642
+ record.credentialMutation.phase !== "executing" ||
643
+ record.credentialMutation.kind !== "revocation" ||
644
+ mutationExpired(record, now)
645
+ ) {
646
+ return null
647
+ }
648
+ const updated: ConnectorAuthorizationRecord = {
649
+ ...record,
650
+ credentialMutation: { ...record.credentialMutation, phase: "result_staged" },
651
+ updatedAt: now,
652
+ }
653
+ this.authorizations.set(record.id, updated)
654
+ return structuredClone(updated)
655
+ }
656
+
657
+ async releaseCredentialMutation(
658
+ input: ReleaseConnectorCredentialMutationInput
659
+ ): Promise<boolean> {
660
+ const record = this.authorizations.get(input.authorizationId)
661
+ if (
662
+ !matchesMutation(record, input, input.holderId) ||
663
+ record.credentialMutation.phase === "result_staged"
664
+ ) {
665
+ return false
666
+ }
667
+ this.authorizations.set(record.id, {
668
+ ...record,
669
+ credentialMutation: undefined,
670
+ updatedAt: this.now(),
671
+ })
672
+ return true
673
+ }
674
+
675
+ async recoverExpiredCredentialMutation(
676
+ input: RecoverExpiredConnectorCredentialMutationInput
677
+ ): Promise<ConnectorAuthorizationRecord | null> {
678
+ const record = this.authorizations.get(input.authorizationId)
679
+ if (!sameAuthorizationScope(record, input) || !record.credentialMutation) return null
680
+ if (record.credentialMutation.phase === "result_staged") return structuredClone(record)
681
+
682
+ const now = this.now()
683
+ if (!mutationExpired(record, now)) return null
684
+ const ambiguous = record.credentialMutation.phase === "executing"
685
+ const failClosed = ambiguous && record.credentialMutation.kind !== "revocation"
686
+ const updated: ConnectorAuthorizationRecord = {
687
+ ...record,
688
+ status: failClosed ? "needs_reauthorization" : record.status,
689
+ selectionExpiresAt: failClosed ? undefined : record.selectionExpiresAt,
690
+ revision: failClosed ? record.revision + 1 : record.revision,
691
+ credentialMutation: undefined,
692
+ updatedAt: now,
693
+ }
694
+ this.authorizations.set(record.id, updated)
695
+ return structuredClone(updated)
696
+ }
697
+
698
+ async markNeedsReauthorization(
699
+ input: MarkConnectorAuthorizationNeedsReauthorizationInput
700
+ ): Promise<ConnectorAuthorizationRecord | null> {
701
+ const record = this.authorizations.get(input.authorizationId)
702
+ if (!matchesMutation(record, input)) return null
703
+ const staged = record.credentialMutation.stagedCredentials
704
+ const updated: ConnectorAuthorizationRecord = {
705
+ ...record,
706
+ ...(staged
707
+ ? {
708
+ credentials: structuredClone(staged.credentials),
709
+ credentialExpiresAt:
710
+ staged.credentialExpiresAt === undefined
711
+ ? undefined
712
+ : new Date(staged.credentialExpiresAt),
713
+ scopes: [...staged.scopes],
714
+ }
715
+ : {}),
716
+ status: "needs_reauthorization",
717
+ selectionExpiresAt: undefined,
718
+ revision: record.revision + 1,
719
+ credentialMutation: undefined,
720
+ updatedAt: this.now(),
721
+ }
722
+ this.authorizations.set(record.id, updated)
723
+ return structuredClone(updated)
724
+ }
725
+
726
+ async finalizeRefresh(
727
+ input: ConnectorCredentialMutationFence
728
+ ): Promise<ConnectorAuthorizationRecord | null> {
729
+ const record = this.authorizations.get(input.authorizationId)
730
+ const staged = stagedCredentials(record, input, "refresh")
731
+ if (!record || !staged) return null
732
+ const updated = applyStagedCredentials(record, staged, this.now(), {
733
+ status: "active",
734
+ accounts: record.accounts,
735
+ })
736
+ this.authorizations.set(record.id, updated)
737
+ return structuredClone(updated)
738
+ }
739
+
740
+ async finalizeReauthorization(
741
+ input: FinalizeConnectorReauthorizationInput
742
+ ): Promise<ConnectorAuthorizationRecord | null> {
743
+ const record = this.authorizations.get(input.authorizationId)
744
+ const staged = stagedCredentials(record, input, "reauthorization")
745
+ if (!record || !staged || !record.credentialMutation) return null
746
+ const attached = this.connectedConnectionsForAuthorization(record.id)
747
+ if (
748
+ !sameIds(
749
+ attached.map((connection) => connection.id),
750
+ record.credentialMutation.expectedConnectionIds ?? []
751
+ )
752
+ ) {
753
+ throw new ConnectorConnectionStorageError(
754
+ "authorization_conflict",
755
+ "[Sixb] Connections attached to the connector authorization changed during reauthorization."
756
+ )
757
+ }
758
+ const accountsById = new Map(input.accounts.map((account) => [account.id, account]))
759
+ if (attached.some((connection) => !accountsById.has(connection.account.id))) {
760
+ throw new ConnectorConnectionStorageError(
761
+ "authorization_conflict",
762
+ "[Sixb] Reauthorized connector grant no longer exposes every attached account."
763
+ )
764
+ }
765
+
766
+ const now = this.now()
767
+ const updated = applyStagedCredentials(record, staged, now, {
768
+ status: "active",
769
+ accounts: input.accounts,
770
+ })
771
+ this.authorizations.set(record.id, updated)
772
+ for (const connection of attached) {
773
+ this.connections.set(connection.id, {
774
+ ...connection,
775
+ account: structuredClone(accountsById.get(connection.account.id)!),
776
+ updatedAt: now,
777
+ })
778
+ }
779
+ return structuredClone(updated)
780
+ }
781
+
782
+ async finalizeRevocation(
783
+ input: ConnectorCredentialMutationFence
784
+ ): Promise<ConnectorAuthorizationRecord | null> {
785
+ const record = this.authorizations.get(input.authorizationId)
786
+ if (
787
+ !matchesMutation(record, input) ||
788
+ record.credentialMutation.kind !== "revocation" ||
789
+ record.credentialMutation.phase !== "result_staged"
790
+ ) {
791
+ return null
792
+ }
793
+ const updated: ConnectorAuthorizationRecord = {
794
+ ...record,
795
+ status: "revoked",
796
+ credentials: undefined,
797
+ credentialExpiresAt: undefined,
798
+ scopes: [],
799
+ accounts: [],
800
+ selectionExpiresAt: undefined,
801
+ revision: record.revision + 1,
802
+ credentialMutation: undefined,
803
+ updatedAt: this.now(),
804
+ }
805
+ this.authorizations.set(record.id, updated)
806
+ return structuredClone(updated)
807
+ }
808
+
809
+ async putConnection(input: PutConnectorConnectionInput): Promise<PutConnectorConnectionResult> {
810
+ return this.putConnectionNow(input, this.now())
811
+ }
812
+
813
+ async putConnectionFromRun(
814
+ input: PutConnectorConnectionFromRunInput
815
+ ): Promise<PutConnectorConnectionFromRunResult> {
816
+ const run = this.currentConnectionRun(input.runId)
817
+ if (
818
+ !sameConnectionRunScope(run, input) ||
819
+ run.status !== "waiting" ||
820
+ run.waitingFor !== "account_selection"
821
+ ) {
822
+ throw invalidRun()
823
+ }
824
+ const now = this.now()
825
+ const result = this.putConnectionNow(
826
+ {
827
+ id: input.id,
828
+ projectId: input.projectId,
829
+ connectorId: input.connectorId,
830
+ owner: run.owner,
831
+ slot: run.slot,
832
+ authorizationId: run.authorizationId,
833
+ account: input.account,
834
+ replace: input.replace,
835
+ },
836
+ now
837
+ )
838
+ const succeeded: ConnectorConnectionRunSucceededRecord = {
839
+ ...connectionRunBase(run, now),
840
+ status: "succeeded",
841
+ authorizationId: run.authorizationId,
842
+ ...(result.revocationPendingAuthorizationId === undefined
843
+ ? {}
844
+ : { cleanupAuthorizationId: result.revocationPendingAuthorizationId }),
845
+ connections: [structuredClone(result.connection)],
846
+ finishedAt: now,
847
+ }
848
+ this.connectionRuns.set(run.id, succeeded)
849
+ return { ...result, run: structuredClone(succeeded) }
850
+ }
851
+
852
+ private putConnectionNow(
853
+ input: PutConnectorConnectionInput,
854
+ now: Date
855
+ ): PutConnectorConnectionResult {
856
+ let authorization = this.authorizations.get(input.authorizationId)
857
+ if (
858
+ !sameAuthorizationScope(authorization, input) ||
859
+ !isSelectable(authorization.status) ||
860
+ authorization.credentialMutation?.kind === "reauthorization"
861
+ ) {
862
+ throw authorizationConflict()
863
+ }
864
+ if (
865
+ authorization.status === "pending_selection" &&
866
+ authorization.selectionExpiresAt!.getTime() <= now.getTime()
867
+ ) {
868
+ authorization = {
869
+ ...authorization,
870
+ status: "revocation_pending",
871
+ selectionExpiresAt: undefined,
872
+ revision: authorization.revision + 1,
873
+ updatedAt: now,
874
+ }
875
+ this.authorizations.set(authorization.id, authorization)
876
+ throw authorizationConflict()
877
+ }
878
+ const account = authorization.accounts.find((candidate) => candidate.id === input.account.id)
879
+ if (!account) {
880
+ throw new ConnectorConnectionStorageError(
881
+ "authorization_conflict",
882
+ "[Sixb] Connector connection account is not exposed by its authorization."
883
+ )
884
+ }
885
+ const existing = this.findConnectionRecord(input)
886
+ const sameAccount = existing?.account.id === account.id
887
+ if (existing && !sameAccount && !input.replace) {
888
+ throw new ConnectorConnectionStorageError(
889
+ "connection_conflict",
890
+ `[Sixb] Connector slot '${input.slot}' is already connected to another account; explicit replacement is required.`
891
+ )
892
+ }
893
+ if (!existing && this.connections.has(input.id)) {
894
+ throw new ConnectorConnectionStorageError(
895
+ "connection_conflict",
896
+ "[Sixb] Connector connection id already exists."
897
+ )
898
+ }
899
+
900
+ let revocationPendingAuthorizationId: string | undefined
901
+ if (existing?.status === "connected" && existing.authorizationId !== authorization.id) {
902
+ const previous = this.authorizations.get(existing.authorizationId)
903
+ if (!previous) {
904
+ throw new ConnectorConnectionStorageError(
905
+ "authorization_conflict",
906
+ "[Sixb] Existing connector connection references an unavailable authorization."
907
+ )
908
+ }
909
+ const remaining = this.connectedConnectionsForAuthorization(previous.id).filter(
910
+ (connection) => connection.id !== existing.id
911
+ )
912
+ this.assertConnectionCanMove(existing, previous, remaining.length === 0)
913
+ if (remaining.length === 0) {
914
+ const pending = markAuthorizationRevocationPending(previous, now)
915
+ this.authorizations.set(previous.id, pending)
916
+ revocationPendingAuthorizationId = previous.id
917
+ }
918
+ } else if (existing?.status === "connected") {
919
+ const previous = this.authorizations.get(existing.authorizationId)
920
+ if (previous) this.assertConnectionCanMove(existing, previous, false)
921
+ }
922
+
923
+ const updatedAuthorization: ConnectorAuthorizationRecord =
924
+ authorization.status === "pending_selection"
925
+ ? {
926
+ ...authorization,
927
+ status: "active",
928
+ selectionExpiresAt: undefined,
929
+ revision: authorization.revision + 1,
930
+ updatedAt: now,
931
+ }
932
+ : authorization
933
+ const connection: ConnectorConnectionRecord = existing
934
+ ? {
935
+ ...existing,
936
+ authorizationId: input.authorizationId,
937
+ account: structuredClone(account),
938
+ status: "connected",
939
+ disconnectedAt: undefined,
940
+ updatedAt: now,
941
+ }
942
+ : {
943
+ id: input.id,
944
+ projectId: input.projectId,
945
+ connectorId: input.connectorId,
946
+ owner: structuredClone(input.owner),
947
+ slot: input.slot,
948
+ authorizationId: input.authorizationId,
949
+ account: structuredClone(account),
950
+ status: "connected",
951
+ createdAt: now,
952
+ updatedAt: now,
953
+ }
954
+
955
+ if (updatedAuthorization !== authorization) {
956
+ this.authorizations.set(updatedAuthorization.id, updatedAuthorization)
957
+ }
958
+ this.connections.set(connection.id, connection)
959
+ return {
960
+ connection: structuredClone(connection),
961
+ authorization: structuredClone(updatedAuthorization),
962
+ ...(revocationPendingAuthorizationId === undefined
963
+ ? {}
964
+ : { revocationPendingAuthorizationId }),
965
+ created: existing === undefined,
966
+ replaced: existing !== undefined && !sameAccount,
967
+ }
968
+ }
969
+
970
+ async getConnection(
971
+ input: GetConnectorConnectionInput
972
+ ): Promise<ConnectorConnectionRecord | null> {
973
+ const connection = this.findConnectionRecord(input)
974
+ return connection?.status === "connected" ? structuredClone(connection) : null
975
+ }
976
+
977
+ async getConnectionById(
978
+ input: ConnectorConnectionKey
979
+ ): Promise<ConnectorConnectionRecord | null> {
980
+ const connection = this.connections.get(input.connectionId)
981
+ return sameConnectionScope(connection, input) ? structuredClone(connection) : null
982
+ }
983
+
984
+ async listConnections(
985
+ input: ListConnectorConnectionsInput
986
+ ): Promise<readonly ConnectorConnectionRecord[]> {
987
+ return [...this.connections.values()]
988
+ .filter((connection) => sameConnectionScope(connection, input))
989
+ .map((connection) => structuredClone(connection))
990
+ }
991
+
992
+ async listConnectionsByAuthorization(
993
+ input: ConnectorAuthorizationKey
994
+ ): Promise<readonly ConnectorConnectionRecord[]> {
995
+ const authorization = this.authorizations.get(input.authorizationId)
996
+ if (!sameAuthorizationScope(authorization, input)) return []
997
+ return this.connectedConnectionsForAuthorization(input.authorizationId)
998
+ .filter((connection) => sameConnectionScope(connection, input))
999
+ .map((connection) => structuredClone(connection))
1000
+ }
1001
+
1002
+ async disconnectConnection(input: ConnectorConnectionKey): Promise<{
1003
+ readonly connection: ConnectorConnectionRecord
1004
+ readonly authorization: ConnectorAuthorizationRecord
1005
+ readonly revocationPendingAuthorizationId?: string
1006
+ } | null> {
1007
+ const connection = this.connections.get(input.connectionId)
1008
+ if (
1009
+ !connection ||
1010
+ connection.projectId !== input.projectId ||
1011
+ connection.connectorId !== input.connectorId
1012
+ ) {
1013
+ return null
1014
+ }
1015
+ const authorization = this.authorizations.get(connection.authorizationId)
1016
+ if (!sameAuthorizationScope(authorization, input)) {
1017
+ throw new ConnectorConnectionStorageError(
1018
+ "authorization_conflict",
1019
+ "[Sixb] Connector connection references an unavailable authorization."
1020
+ )
1021
+ }
1022
+ if (connection.status === "disconnected") {
1023
+ return {
1024
+ connection: structuredClone(connection),
1025
+ authorization: structuredClone(authorization),
1026
+ ...(authorization.status === "revocation_pending"
1027
+ ? { revocationPendingAuthorizationId: authorization.id }
1028
+ : {}),
1029
+ }
1030
+ }
1031
+
1032
+ const now = this.now()
1033
+ const remaining = this.connectedConnectionsForAuthorization(authorization.id).filter(
1034
+ (candidate) => candidate.id !== connection.id
1035
+ )
1036
+ this.assertConnectionCanMove(connection, authorization, remaining.length === 0)
1037
+ const disconnected = disconnectConnectionRecord(connection, now)
1038
+ this.connections.set(connection.id, disconnected)
1039
+ const updatedAuthorization =
1040
+ remaining.length === 0
1041
+ ? markAuthorizationRevocationPending(authorization, now)
1042
+ : authorization
1043
+ if (updatedAuthorization !== authorization) {
1044
+ this.authorizations.set(authorization.id, updatedAuthorization)
1045
+ }
1046
+ return {
1047
+ connection: structuredClone(disconnected),
1048
+ authorization: structuredClone(updatedAuthorization),
1049
+ ...(updatedAuthorization.status === "revocation_pending" && remaining.length === 0
1050
+ ? { revocationPendingAuthorizationId: updatedAuthorization.id }
1051
+ : {}),
1052
+ }
1053
+ }
1054
+
1055
+ snapshot(): InMemoryConnectorConnectionStorageSnapshot {
1056
+ return {
1057
+ attempts: structuredClone(this.attempts),
1058
+ connectionRuns: structuredClone(this.connectionRuns),
1059
+ authorizations: structuredClone(this.authorizations),
1060
+ connections: structuredClone(this.connections),
1061
+ }
1062
+ }
1063
+
1064
+ restore(snapshot: InMemoryConnectorConnectionStorageSnapshot): void {
1065
+ replaceMap(this.attempts, snapshot.attempts)
1066
+ replaceMap(this.connectionRuns, snapshot.connectionRuns)
1067
+ replaceMap(this.authorizations, snapshot.authorizations)
1068
+ replaceMap(this.connections, snapshot.connections)
1069
+ }
1070
+
1071
+ private now(): Date {
1072
+ return new Date(this.options.now?.() ?? new Date())
1073
+ }
1074
+
1075
+ private currentConnectionRun(runId: string): ConnectorConnectionRunRecord | undefined {
1076
+ const run = this.connectionRuns.get(runId)
1077
+ if (!run || (run.status !== "waiting" && run.status !== "running")) return run
1078
+
1079
+ const now = this.now()
1080
+ if (run.expiresAt.getTime() > now.getTime()) return run
1081
+
1082
+ if (run.status === "waiting" && run.waitingFor === "provider_authorization") {
1083
+ const attempt = this.findAuthorizationAttemptByConnectionRunId(run.id)
1084
+ if (attempt) this.attempts.delete(attempt.id)
1085
+ }
1086
+ if (run.status === "waiting") {
1087
+ if (run.kind === "connect" && run.waitingFor === "account_selection") {
1088
+ this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)
1089
+ }
1090
+ const expired = expireConnectionRun(run, now)
1091
+ this.connectionRuns.set(run.id, expired)
1092
+ return expired
1093
+ }
1094
+
1095
+ if (run.kind === "connect" && run.authorizationId) {
1096
+ this.markPendingAuthorizationForCleanup(run.connectorId, run.authorizationId, now)
1097
+ }
1098
+ const failed = failExpiredProcessingRun(run, now)
1099
+ this.connectionRuns.set(run.id, failed)
1100
+ return failed
1101
+ }
1102
+
1103
+ private findConnectionRecord(
1104
+ input: GetConnectorConnectionInput
1105
+ ): ConnectorConnectionRecord | undefined {
1106
+ for (const connection of this.connections.values()) {
1107
+ if (
1108
+ connection.projectId === input.projectId &&
1109
+ connection.connectorId === input.connectorId &&
1110
+ connection.owner.type === input.owner.type &&
1111
+ connection.slot === input.slot
1112
+ ) {
1113
+ return connection
1114
+ }
1115
+ }
1116
+ return undefined
1117
+ }
1118
+
1119
+ private findAuthorizationAttemptByConnectionRunId(
1120
+ connectionRunId: string
1121
+ ): ConnectorAuthorizationAttemptRecord | undefined {
1122
+ for (const attempt of this.attempts.values()) {
1123
+ if (attempt.connectionRunId === connectionRunId) return attempt
1124
+ }
1125
+ return undefined
1126
+ }
1127
+
1128
+ private connectionRecordsForAuthorization(authorizationId: string): ConnectorConnectionRecord[] {
1129
+ return [...this.connections.values()].filter(
1130
+ (connection) => connection.authorizationId === authorizationId
1131
+ )
1132
+ }
1133
+
1134
+ private connectedConnectionsForAuthorization(
1135
+ authorizationId: string
1136
+ ): ConnectorConnectionRecord[] {
1137
+ return this.connectionRecordsForAuthorization(authorizationId).filter(
1138
+ (connection) => connection.status === "connected"
1139
+ )
1140
+ }
1141
+
1142
+ private assertConnectionCanMove(
1143
+ _connection: ConnectorConnectionRecord,
1144
+ authorization: ConnectorAuthorizationRecord,
1145
+ removingLastConnection = true
1146
+ ): void {
1147
+ const mutation = authorization.credentialMutation
1148
+ if (mutation?.kind === "reauthorization") {
1149
+ throw new ConnectorConnectionStorageError(
1150
+ "authorization_conflict",
1151
+ "[Sixb] Connections cannot change while their connector authorization is being reauthorized."
1152
+ )
1153
+ }
1154
+ if (removingLastConnection && mutation) {
1155
+ throw new ConnectorConnectionStorageError(
1156
+ "authorization_conflict",
1157
+ "[Sixb] The last connector connection cannot be removed while credentials are being mutated."
1158
+ )
1159
+ }
1160
+ }
1161
+
1162
+ private markPendingAuthorizationForCleanup(
1163
+ connectorId: string,
1164
+ authorizationId: string,
1165
+ now: Date
1166
+ ): void {
1167
+ const authorization = this.authorizations.get(authorizationId)
1168
+ if (
1169
+ !authorization ||
1170
+ authorization.connectorId !== connectorId ||
1171
+ authorization.status !== "pending_selection"
1172
+ ) {
1173
+ return
1174
+ }
1175
+ this.authorizations.set(
1176
+ authorization.id,
1177
+ markAuthorizationRevocationPending(authorization, now)
1178
+ )
1179
+ }
1180
+ }
1181
+
1182
+ function disconnectConnectionRecord(
1183
+ connection: ConnectorConnectionRecord,
1184
+ now: Date
1185
+ ): ConnectorConnectionRecord {
1186
+ return {
1187
+ ...connection,
1188
+ status: "disconnected",
1189
+ disconnectedAt: new Date(now),
1190
+ updatedAt: new Date(now),
1191
+ }
1192
+ }
1193
+
1194
+ function markAuthorizationRevocationPending(
1195
+ authorization: ConnectorAuthorizationRecord,
1196
+ now: Date
1197
+ ): ConnectorAuthorizationRecord {
1198
+ if (authorization.status === "revocation_pending" || authorization.status === "revoked") {
1199
+ return authorization
1200
+ }
1201
+ if (authorization.credentialMutation) {
1202
+ throw new ConnectorConnectionStorageError(
1203
+ "authorization_conflict",
1204
+ "[Sixb] Connector authorization cannot begin revocation while credentials are being mutated."
1205
+ )
1206
+ }
1207
+ return {
1208
+ ...authorization,
1209
+ status: "revocation_pending",
1210
+ selectionExpiresAt: undefined,
1211
+ revision: authorization.revision + 1,
1212
+ updatedAt: new Date(now),
1213
+ }
1214
+ }
1215
+
1216
+ function safeEqual(left: string, right: string): boolean {
1217
+ const leftBytes = Buffer.from(left)
1218
+ const rightBytes = Buffer.from(right)
1219
+ return leftBytes.length === rightBytes.length && timingSafeEqual(leftBytes, rightBytes)
1220
+ }
1221
+
1222
+ function invalidRun(): ConnectorConnectionStorageError {
1223
+ return new ConnectorConnectionStorageError(
1224
+ "run_invalid",
1225
+ "[Sixb] Connector connection run is invalid, expired, or already used."
1226
+ )
1227
+ }
1228
+
1229
+ function replaceMap<TKey, TValue>(target: Map<TKey, TValue>, source: Map<TKey, TValue>): void {
1230
+ target.clear()
1231
+ for (const [key, value] of structuredClone(source)) target.set(key, value)
1232
+ }
1233
+
1234
+ function sameIds(left: readonly string[], right: readonly string[]): boolean {
1235
+ const leftSorted = [...left].sort()
1236
+ const rightSorted = [...right].sort()
1237
+ return (
1238
+ leftSorted.length === rightSorted.length &&
1239
+ leftSorted.every((value, index) => value === rightSorted[index])
1240
+ )
1241
+ }
1242
+
1243
+ function invalidAttempt(): ConnectorConnectionStorageError {
1244
+ return new ConnectorConnectionStorageError(
1245
+ "attempt_invalid",
1246
+ "[Sixb] Connector authorization attempt is invalid, expired, or already used."
1247
+ )
1248
+ }
1249
+
1250
+ function authorizationConflict(): ConnectorConnectionStorageError {
1251
+ return new ConnectorConnectionStorageError(
1252
+ "authorization_conflict",
1253
+ "[Sixb] Connector connection requires a selectable authorization from the same project and connector."
1254
+ )
1255
+ }
1256
+
1257
+ function assertPositiveDuration(value: number, name: string): void {
1258
+ if (!Number.isFinite(value) || value <= 0) {
1259
+ throw new ConnectorConnectionStorageError(
1260
+ "invalid_input",
1261
+ `[Sixb] Connector ${name} must be positive.`
1262
+ )
1263
+ }
1264
+ }
1265
+
1266
+ function sameAuthorizationScope(
1267
+ record: ConnectorAuthorizationRecord | undefined,
1268
+ input: { readonly projectId: string; readonly connectorId: string }
1269
+ ): record is ConnectorAuthorizationRecord {
1270
+ return (
1271
+ record !== undefined &&
1272
+ record.projectId === input.projectId &&
1273
+ record.connectorId === input.connectorId
1274
+ )
1275
+ }
1276
+
1277
+ function sameConnectionScope(
1278
+ record: ConnectorConnectionRecord | undefined,
1279
+ input: { readonly projectId: string; readonly connectorId: string }
1280
+ ): record is ConnectorConnectionRecord {
1281
+ return (
1282
+ record !== undefined &&
1283
+ record.projectId === input.projectId &&
1284
+ record.connectorId === input.connectorId
1285
+ )
1286
+ }
1287
+
1288
+ function sameConnectionRunScope(
1289
+ record: ConnectorConnectionRunRecord | undefined,
1290
+ input: { readonly projectId: string; readonly connectorId: string }
1291
+ ): record is ConnectorConnectionRunRecord {
1292
+ return (
1293
+ record !== undefined &&
1294
+ record.projectId === input.projectId &&
1295
+ record.connectorId === input.connectorId
1296
+ )
1297
+ }
1298
+
1299
+ function canClaimMutation(
1300
+ status: ConnectorAuthorizationRecord["status"],
1301
+ kind: ClaimConnectorCredentialMutationInput["mutation"]["kind"]
1302
+ ): boolean {
1303
+ if (kind === "refresh") return status === "active"
1304
+ if (kind === "reauthorization") {
1305
+ return status === "active" || status === "needs_reauthorization"
1306
+ }
1307
+ return status !== "revoked"
1308
+ }
1309
+
1310
+ function isSelectable(status: ConnectorAuthorizationRecord["status"]): boolean {
1311
+ return status === "pending_selection" || status === "active"
1312
+ }
1313
+
1314
+ function leaseExpiry(now: Date, durationMs: number, deadlineAt: Date): Date {
1315
+ return new Date(Math.min(now.getTime() + durationMs, deadlineAt.getTime()))
1316
+ }
1317
+
1318
+ function mutationExpired(record: ConnectorAuthorizationRecord, now: Date): boolean {
1319
+ return (
1320
+ record.credentialMutation!.expiresAt.getTime() <= now.getTime() ||
1321
+ record.credentialMutation!.deadlineAt.getTime() <= now.getTime()
1322
+ )
1323
+ }
1324
+
1325
+ function matchesMutation(
1326
+ record: ConnectorAuthorizationRecord | undefined,
1327
+ input: ConnectorCredentialMutationFence,
1328
+ holderId?: string
1329
+ ): record is ConnectorAuthorizationRecord & {
1330
+ readonly credentialMutation: NonNullable<ConnectorAuthorizationRecord["credentialMutation"]>
1331
+ } {
1332
+ return (
1333
+ sameAuthorizationScope(record, input) &&
1334
+ record.revision === input.expectedRevision &&
1335
+ record.credentialMutation?.id === input.mutationId &&
1336
+ (holderId === undefined || record.credentialMutation.holderId === holderId)
1337
+ )
1338
+ }
1339
+
1340
+ function stagedCredentials(
1341
+ record: ConnectorAuthorizationRecord | undefined,
1342
+ input: ConnectorCredentialMutationFence,
1343
+ kind: "refresh" | "reauthorization"
1344
+ ) {
1345
+ if (
1346
+ !matchesMutation(record, input) ||
1347
+ record.credentialMutation.kind !== kind ||
1348
+ record.credentialMutation.phase !== "result_staged"
1349
+ ) {
1350
+ return null
1351
+ }
1352
+ return record.credentialMutation.stagedCredentials ?? null
1353
+ }
1354
+
1355
+ function applyStagedCredentials(
1356
+ record: ConnectorAuthorizationRecord,
1357
+ staged: NonNullable<ReturnType<typeof stagedCredentials>>,
1358
+ now: Date,
1359
+ input: {
1360
+ readonly status: "active"
1361
+ readonly accounts: readonly ConnectorAuthorizationRecord["accounts"][number][]
1362
+ }
1363
+ ): ConnectorAuthorizationRecord {
1364
+ return {
1365
+ ...record,
1366
+ credentials: structuredClone(staged.credentials),
1367
+ credentialExpiresAt:
1368
+ staged.credentialExpiresAt === undefined ? undefined : new Date(staged.credentialExpiresAt),
1369
+ scopes: [...staged.scopes],
1370
+ accounts: structuredClone(input.accounts),
1371
+ status: input.status,
1372
+ selectionExpiresAt: undefined,
1373
+ revision: record.revision + 1,
1374
+ credentialMutation: undefined,
1375
+ updatedAt: now,
1376
+ }
1377
+ }