@abloatai/transaction 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (723) hide show
  1. package/CONVENTIONS.md +83 -0
  2. package/README.md +48 -0
  3. package/dist/ablo.d.ts +90 -0
  4. package/dist/ablo.d.ts.map +1 -0
  5. package/dist/ablo.js +34 -0
  6. package/dist/ablo.js.map +1 -0
  7. package/dist/ai-sdk/coordinatedTool.d.ts +123 -0
  8. package/dist/ai-sdk/coordinatedTool.d.ts.map +1 -0
  9. package/dist/ai-sdk/coordinatedTool.js +135 -0
  10. package/dist/ai-sdk/coordinatedTool.js.map +1 -0
  11. package/dist/ai-sdk/index.d.ts +2 -0
  12. package/dist/ai-sdk/index.d.ts.map +1 -0
  13. package/dist/ai-sdk/index.js +2 -0
  14. package/dist/ai-sdk/index.js.map +1 -0
  15. package/dist/auth/apiKey.d.ts +154 -0
  16. package/dist/auth/apiKey.d.ts.map +1 -0
  17. package/dist/auth/apiKey.js +408 -0
  18. package/dist/auth/apiKey.js.map +1 -0
  19. package/dist/auth/bootstrapScope.d.ts +16 -0
  20. package/dist/auth/bootstrapScope.d.ts.map +1 -0
  21. package/dist/auth/bootstrapScope.js +2 -0
  22. package/dist/auth/bootstrapScope.js.map +1 -0
  23. package/dist/auth/browserCredentialSafety.d.ts +7 -0
  24. package/dist/auth/browserCredentialSafety.d.ts.map +1 -0
  25. package/dist/auth/browserCredentialSafety.js +29 -0
  26. package/dist/auth/browserCredentialSafety.js.map +1 -0
  27. package/dist/auth/capability.d.ts +241 -0
  28. package/dist/auth/capability.d.ts.map +1 -0
  29. package/dist/auth/capability.js +253 -0
  30. package/dist/auth/capability.js.map +1 -0
  31. package/dist/auth/capabilityLifecycle.d.ts +47 -0
  32. package/dist/auth/capabilityLifecycle.d.ts.map +1 -0
  33. package/dist/auth/capabilityLifecycle.js +108 -0
  34. package/dist/auth/capabilityLifecycle.js.map +1 -0
  35. package/dist/auth/credentialEndpoint.d.ts +10 -0
  36. package/dist/auth/credentialEndpoint.d.ts.map +1 -0
  37. package/dist/auth/credentialEndpoint.js +58 -0
  38. package/dist/auth/credentialEndpoint.js.map +1 -0
  39. package/dist/auth/credentialEndpointProtocol.d.ts +24 -0
  40. package/dist/auth/credentialEndpointProtocol.d.ts.map +1 -0
  41. package/dist/auth/credentialEndpointProtocol.js +34 -0
  42. package/dist/auth/credentialEndpointProtocol.js.map +1 -0
  43. package/dist/auth/credentialKind.d.ts +4 -0
  44. package/dist/auth/credentialKind.d.ts.map +1 -0
  45. package/dist/auth/credentialKind.js +15 -0
  46. package/dist/auth/credentialKind.js.map +1 -0
  47. package/dist/auth/credentialPolicy.d.ts +141 -0
  48. package/dist/auth/credentialPolicy.d.ts.map +1 -0
  49. package/dist/auth/credentialPolicy.js +113 -0
  50. package/dist/auth/credentialPolicy.js.map +1 -0
  51. package/dist/auth/credentialResult.d.ts +7 -0
  52. package/dist/auth/credentialResult.d.ts.map +1 -0
  53. package/dist/auth/credentialResult.js +9 -0
  54. package/dist/auth/credentialResult.js.map +1 -0
  55. package/dist/auth/credentialSource.d.ts +31 -0
  56. package/dist/auth/credentialSource.d.ts.map +1 -0
  57. package/dist/auth/credentialSource.js +56 -0
  58. package/dist/auth/credentialSource.js.map +1 -0
  59. package/dist/auth/hostedEndpoints.d.ts +22 -0
  60. package/dist/auth/hostedEndpoints.d.ts.map +1 -0
  61. package/dist/auth/hostedEndpoints.js +22 -0
  62. package/dist/auth/hostedEndpoints.js.map +1 -0
  63. package/dist/auth/identity.d.ts +62 -0
  64. package/dist/auth/identity.d.ts.map +1 -0
  65. package/dist/auth/identity.js +224 -0
  66. package/dist/auth/identity.js.map +1 -0
  67. package/dist/auth/index.d.ts +189 -0
  68. package/dist/auth/index.d.ts.map +1 -0
  69. package/dist/auth/index.js +312 -0
  70. package/dist/auth/index.js.map +1 -0
  71. package/dist/auth/schemas.d.ts +41 -0
  72. package/dist/auth/schemas.d.ts.map +1 -0
  73. package/dist/auth/schemas.js +69 -0
  74. package/dist/auth/schemas.js.map +1 -0
  75. package/dist/auth/sessionMint.d.ts +29 -0
  76. package/dist/auth/sessionMint.d.ts.map +1 -0
  77. package/dist/auth/sessionMint.js +92 -0
  78. package/dist/auth/sessionMint.js.map +1 -0
  79. package/dist/auth/token.d.ts +4 -0
  80. package/dist/auth/token.d.ts.map +1 -0
  81. package/dist/auth/token.js +4 -0
  82. package/dist/auth/token.js.map +1 -0
  83. package/dist/batching/index.d.ts +56 -0
  84. package/dist/batching/index.d.ts.map +1 -0
  85. package/dist/batching/index.js +148 -0
  86. package/dist/batching/index.js.map +1 -0
  87. package/dist/coordination/awaitClaimGrant.d.ts +57 -0
  88. package/dist/coordination/awaitClaimGrant.d.ts.map +1 -0
  89. package/dist/coordination/awaitClaimGrant.js +138 -0
  90. package/dist/coordination/awaitClaimGrant.js.map +1 -0
  91. package/dist/coordination/claimHeartbeatLoop.d.ts +85 -0
  92. package/dist/coordination/claimHeartbeatLoop.d.ts.map +1 -0
  93. package/dist/coordination/claimHeartbeatLoop.js +109 -0
  94. package/dist/coordination/claimHeartbeatLoop.js.map +1 -0
  95. package/dist/coordination/claimMeta.d.ts +50 -0
  96. package/dist/coordination/claimMeta.d.ts.map +1 -0
  97. package/dist/coordination/claimMeta.js +53 -0
  98. package/dist/coordination/claimMeta.js.map +1 -0
  99. package/dist/coordination/events.d.ts +75 -0
  100. package/dist/coordination/events.d.ts.map +1 -0
  101. package/dist/coordination/events.js +8 -0
  102. package/dist/coordination/events.js.map +1 -0
  103. package/dist/coordination/index.d.ts +20 -0
  104. package/dist/coordination/index.d.ts.map +1 -0
  105. package/dist/coordination/index.js +46 -0
  106. package/dist/coordination/index.js.map +1 -0
  107. package/dist/coordination/locator.d.ts +106 -0
  108. package/dist/coordination/locator.d.ts.map +1 -0
  109. package/dist/coordination/locator.js +110 -0
  110. package/dist/coordination/locator.js.map +1 -0
  111. package/dist/coordination/schema.d.ts +1332 -0
  112. package/dist/coordination/schema.d.ts.map +1 -0
  113. package/dist/coordination/schema.js +1137 -0
  114. package/dist/coordination/schema.js.map +1 -0
  115. package/dist/coordination/targetConflict.d.ts +3 -0
  116. package/dist/coordination/targetConflict.d.ts.map +1 -0
  117. package/dist/coordination/targetConflict.js +74 -0
  118. package/dist/coordination/targetConflict.js.map +1 -0
  119. package/dist/coordination/trace.d.ts +79 -0
  120. package/dist/coordination/trace.d.ts.map +1 -0
  121. package/dist/coordination/trace.js +139 -0
  122. package/dist/coordination/trace.js.map +1 -0
  123. package/dist/docs/catalog.d.ts +73 -0
  124. package/dist/docs/catalog.d.ts.map +1 -0
  125. package/dist/docs/catalog.js +231 -0
  126. package/dist/docs/catalog.js.map +1 -0
  127. package/dist/docs/index.d.ts +11 -0
  128. package/dist/docs/index.d.ts.map +1 -0
  129. package/dist/docs/index.js +11 -0
  130. package/dist/docs/index.js.map +1 -0
  131. package/dist/durableWrites.d.ts +63 -0
  132. package/dist/durableWrites.d.ts.map +1 -0
  133. package/dist/durableWrites.js +72 -0
  134. package/dist/durableWrites.js.map +1 -0
  135. package/dist/environment.d.ts +106 -0
  136. package/dist/environment.d.ts.map +1 -0
  137. package/dist/environment.js +109 -0
  138. package/dist/environment.js.map +1 -0
  139. package/dist/errorCodes.d.ts +411 -0
  140. package/dist/errorCodes.d.ts.map +1 -0
  141. package/dist/errorCodes.js +500 -0
  142. package/dist/errorCodes.js.map +1 -0
  143. package/dist/errors.d.ts +429 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +687 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/footprint.d.ts +112 -0
  148. package/dist/footprint.d.ts.map +1 -0
  149. package/dist/footprint.js +0 -0
  150. package/dist/footprint.js.map +1 -0
  151. package/dist/headlessClient.d.ts +10 -0
  152. package/dist/headlessClient.d.ts.map +1 -0
  153. package/dist/headlessClient.js +114 -0
  154. package/dist/headlessClient.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +21 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/keys/index.d.ts +88 -0
  160. package/dist/keys/index.d.ts.map +1 -0
  161. package/dist/keys/index.js +208 -0
  162. package/dist/keys/index.js.map +1 -0
  163. package/dist/log/syncDeltaRow.d.ts +159 -0
  164. package/dist/log/syncDeltaRow.d.ts.map +1 -0
  165. package/dist/log/syncDeltaRow.js +96 -0
  166. package/dist/log/syncDeltaRow.js.map +1 -0
  167. package/dist/logger.d.ts +17 -0
  168. package/dist/logger.d.ts.map +1 -0
  169. package/dist/logger.js +8 -0
  170. package/dist/logger.js.map +1 -0
  171. package/dist/observability.d.ts +54 -0
  172. package/dist/observability.d.ts.map +1 -0
  173. package/dist/observability.js +20 -0
  174. package/dist/observability.js.map +1 -0
  175. package/dist/policy/types.d.ts +218 -0
  176. package/dist/policy/types.d.ts.map +1 -0
  177. package/dist/policy/types.js +127 -0
  178. package/dist/policy/types.js.map +1 -0
  179. package/dist/resources/functionalUpdate.d.ts +80 -0
  180. package/dist/resources/functionalUpdate.d.ts.map +1 -0
  181. package/dist/resources/functionalUpdate.js +88 -0
  182. package/dist/resources/functionalUpdate.js.map +1 -0
  183. package/dist/resources/httpResources.d.ts +449 -0
  184. package/dist/resources/httpResources.d.ts.map +1 -0
  185. package/dist/resources/httpResources.js +8 -0
  186. package/dist/resources/httpResources.js.map +1 -0
  187. package/dist/resources/modelOperations.d.ts +380 -0
  188. package/dist/resources/modelOperations.d.ts.map +1 -0
  189. package/dist/resources/modelOperations.js +13 -0
  190. package/dist/resources/modelOperations.js.map +1 -0
  191. package/dist/resources/mutationOptions.d.ts +67 -0
  192. package/dist/resources/mutationOptions.d.ts.map +1 -0
  193. package/dist/resources/mutationOptions.js +10 -0
  194. package/dist/resources/mutationOptions.js.map +1 -0
  195. package/dist/resources/where.d.ts +102 -0
  196. package/dist/resources/where.d.ts.map +1 -0
  197. package/dist/resources/where.js +116 -0
  198. package/dist/resources/where.js.map +1 -0
  199. package/dist/resources/writeOptionsSchema.d.ts +48 -0
  200. package/dist/resources/writeOptionsSchema.d.ts.map +1 -0
  201. package/dist/resources/writeOptionsSchema.js +74 -0
  202. package/dist/resources/writeOptionsSchema.js.map +1 -0
  203. package/dist/schema/coordination.d.ts +113 -0
  204. package/dist/schema/coordination.d.ts.map +1 -0
  205. package/dist/schema/coordination.js +134 -0
  206. package/dist/schema/coordination.js.map +1 -0
  207. package/dist/schema/ddl.d.ts +98 -0
  208. package/dist/schema/ddl.d.ts.map +1 -0
  209. package/dist/schema/ddl.js +492 -0
  210. package/dist/schema/ddl.js.map +1 -0
  211. package/dist/schema/ddlLock.d.ts +36 -0
  212. package/dist/schema/ddlLock.d.ts.map +1 -0
  213. package/dist/schema/ddlLock.js +47 -0
  214. package/dist/schema/ddlLock.js.map +1 -0
  215. package/dist/schema/diff.d.ts +226 -0
  216. package/dist/schema/diff.d.ts.map +1 -0
  217. package/dist/schema/diff.js +290 -0
  218. package/dist/schema/diff.js.map +1 -0
  219. package/dist/schema/field.d.ts +121 -0
  220. package/dist/schema/field.d.ts.map +1 -0
  221. package/dist/schema/field.js +266 -0
  222. package/dist/schema/field.js.map +1 -0
  223. package/dist/schema/fieldRef.d.ts +58 -0
  224. package/dist/schema/fieldRef.d.ts.map +1 -0
  225. package/dist/schema/fieldRef.js +26 -0
  226. package/dist/schema/fieldRef.js.map +1 -0
  227. package/dist/schema/generate.d.ts +20 -0
  228. package/dist/schema/generate.d.ts.map +1 -0
  229. package/dist/schema/generate.js +87 -0
  230. package/dist/schema/generate.js.map +1 -0
  231. package/dist/schema/index.d.ts +43 -0
  232. package/dist/schema/index.d.ts.map +1 -0
  233. package/dist/schema/index.js +81 -0
  234. package/dist/schema/index.js.map +1 -0
  235. package/dist/schema/loadStrategy.d.ts +46 -0
  236. package/dist/schema/loadStrategy.d.ts.map +1 -0
  237. package/dist/schema/loadStrategy.js +47 -0
  238. package/dist/schema/loadStrategy.js.map +1 -0
  239. package/dist/schema/model.d.ts +380 -0
  240. package/dist/schema/model.d.ts.map +1 -0
  241. package/dist/schema/model.js +124 -0
  242. package/dist/schema/model.js.map +1 -0
  243. package/dist/schema/openapi.d.ts +59 -0
  244. package/dist/schema/openapi.d.ts.map +1 -0
  245. package/dist/schema/openapi.js +508 -0
  246. package/dist/schema/openapi.js.map +1 -0
  247. package/dist/schema/queries.d.ts +202 -0
  248. package/dist/schema/queries.d.ts.map +1 -0
  249. package/dist/schema/queries.js +144 -0
  250. package/dist/schema/queries.js.map +1 -0
  251. package/dist/schema/relation.d.ts +205 -0
  252. package/dist/schema/relation.d.ts.map +1 -0
  253. package/dist/schema/relation.js +105 -0
  254. package/dist/schema/relation.js.map +1 -0
  255. package/dist/schema/residency.d.ts +30 -0
  256. package/dist/schema/residency.d.ts.map +1 -0
  257. package/dist/schema/residency.js +26 -0
  258. package/dist/schema/residency.js.map +1 -0
  259. package/dist/schema/roles.d.ts +250 -0
  260. package/dist/schema/roles.d.ts.map +1 -0
  261. package/dist/schema/roles.js +231 -0
  262. package/dist/schema/roles.js.map +1 -0
  263. package/dist/schema/schema.d.ts +352 -0
  264. package/dist/schema/schema.d.ts.map +1 -0
  265. package/dist/schema/schema.js +326 -0
  266. package/dist/schema/schema.js.map +1 -0
  267. package/dist/schema/select.d.ts +41 -0
  268. package/dist/schema/select.d.ts.map +1 -0
  269. package/dist/schema/select.js +91 -0
  270. package/dist/schema/select.js.map +1 -0
  271. package/dist/schema/serialize.d.ts +116 -0
  272. package/dist/schema/serialize.d.ts.map +1 -0
  273. package/dist/schema/serialize.js +278 -0
  274. package/dist/schema/serialize.js.map +1 -0
  275. package/dist/schema/sugar.d.ts +110 -0
  276. package/dist/schema/sugar.d.ts.map +1 -0
  277. package/dist/schema/sugar.js +84 -0
  278. package/dist/schema/sugar.js.map +1 -0
  279. package/dist/schema/tenancy.d.ts +140 -0
  280. package/dist/schema/tenancy.d.ts.map +1 -0
  281. package/dist/schema/tenancy.js +191 -0
  282. package/dist/schema/tenancy.js.map +1 -0
  283. package/dist/server/adapter.d.ts +174 -0
  284. package/dist/server/adapter.d.ts.map +1 -0
  285. package/dist/server/adapter.js +19 -0
  286. package/dist/server/adapter.js.map +1 -0
  287. package/dist/server/commit.d.ts +108 -0
  288. package/dist/server/commit.d.ts.map +1 -0
  289. package/dist/server/commit.js +2 -0
  290. package/dist/server/commit.js.map +1 -0
  291. package/dist/server/index.d.ts +15 -0
  292. package/dist/server/index.d.ts.map +1 -0
  293. package/dist/server/index.js +3 -0
  294. package/dist/server/index.js.map +1 -0
  295. package/dist/server/readConfig.d.ts +81 -0
  296. package/dist/server/readConfig.d.ts.map +1 -0
  297. package/dist/server/readConfig.js +9 -0
  298. package/dist/server/readConfig.js.map +1 -0
  299. package/dist/server/storageMode.d.ts +24 -0
  300. package/dist/server/storageMode.d.ts.map +1 -0
  301. package/dist/server/storageMode.js +18 -0
  302. package/dist/server/storageMode.js.map +1 -0
  303. package/dist/source/adapter.d.ts +84 -0
  304. package/dist/source/adapter.d.ts.map +1 -0
  305. package/dist/source/adapter.js +25 -0
  306. package/dist/source/adapter.js.map +1 -0
  307. package/dist/source/adapters/drizzle.d.ts +49 -0
  308. package/dist/source/adapters/drizzle.d.ts.map +1 -0
  309. package/dist/source/adapters/drizzle.js +220 -0
  310. package/dist/source/adapters/drizzle.js.map +1 -0
  311. package/dist/source/adapters/kysely.d.ts +43 -0
  312. package/dist/source/adapters/kysely.d.ts.map +1 -0
  313. package/dist/source/adapters/kysely.js +206 -0
  314. package/dist/source/adapters/kysely.js.map +1 -0
  315. package/dist/source/adapters/kyselyMutationCore.d.ts +77 -0
  316. package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -0
  317. package/dist/source/adapters/kyselyMutationCore.js +126 -0
  318. package/dist/source/adapters/kyselyMutationCore.js.map +1 -0
  319. package/dist/source/adapters/memory.d.ts +14 -0
  320. package/dist/source/adapters/memory.d.ts.map +1 -0
  321. package/dist/source/adapters/memory.js +131 -0
  322. package/dist/source/adapters/memory.js.map +1 -0
  323. package/dist/source/adapters/prisma.d.ts +64 -0
  324. package/dist/source/adapters/prisma.d.ts.map +1 -0
  325. package/dist/source/adapters/prisma.js +203 -0
  326. package/dist/source/adapters/prisma.js.map +1 -0
  327. package/dist/source/conformance.d.ts +38 -0
  328. package/dist/source/conformance.d.ts.map +1 -0
  329. package/dist/source/conformance.js +216 -0
  330. package/dist/source/conformance.js.map +1 -0
  331. package/dist/source/connector.d.ts +96 -0
  332. package/dist/source/connector.d.ts.map +1 -0
  333. package/dist/source/connector.js +267 -0
  334. package/dist/source/connector.js.map +1 -0
  335. package/dist/source/connectorProtocol.d.ts +155 -0
  336. package/dist/source/connectorProtocol.d.ts.map +1 -0
  337. package/dist/source/connectorProtocol.js +164 -0
  338. package/dist/source/connectorProtocol.js.map +1 -0
  339. package/dist/source/contract.d.ts +196 -0
  340. package/dist/source/contract.d.ts.map +1 -0
  341. package/dist/source/contract.js +165 -0
  342. package/dist/source/contract.js.map +1 -0
  343. package/dist/source/drizzle.d.ts +2 -0
  344. package/dist/source/drizzle.d.ts.map +1 -0
  345. package/dist/source/drizzle.js +2 -0
  346. package/dist/source/drizzle.js.map +1 -0
  347. package/dist/source/factory.d.ts +93 -0
  348. package/dist/source/factory.d.ts.map +1 -0
  349. package/dist/source/factory.js +287 -0
  350. package/dist/source/factory.js.map +1 -0
  351. package/dist/source/idempotency.d.ts +62 -0
  352. package/dist/source/idempotency.d.ts.map +1 -0
  353. package/dist/source/idempotency.js +145 -0
  354. package/dist/source/idempotency.js.map +1 -0
  355. package/dist/source/index.d.ts +24 -0
  356. package/dist/source/index.d.ts.map +1 -0
  357. package/dist/source/index.js +29 -0
  358. package/dist/source/index.js.map +1 -0
  359. package/dist/source/kysely.d.ts +3 -0
  360. package/dist/source/kysely.d.ts.map +1 -0
  361. package/dist/source/kysely.js +3 -0
  362. package/dist/source/kysely.js.map +1 -0
  363. package/dist/source/migrations.d.ts +22 -0
  364. package/dist/source/migrations.d.ts.map +1 -0
  365. package/dist/source/migrations.js +104 -0
  366. package/dist/source/migrations.js.map +1 -0
  367. package/dist/source/next.d.ts +33 -0
  368. package/dist/source/next.d.ts.map +1 -0
  369. package/dist/source/next.js +26 -0
  370. package/dist/source/next.js.map +1 -0
  371. package/dist/source/pushQueue.d.ts +135 -0
  372. package/dist/source/pushQueue.d.ts.map +1 -0
  373. package/dist/source/pushQueue.js +257 -0
  374. package/dist/source/pushQueue.js.map +1 -0
  375. package/dist/source/signing.d.ts +93 -0
  376. package/dist/source/signing.d.ts.map +1 -0
  377. package/dist/source/signing.js +163 -0
  378. package/dist/source/signing.js.map +1 -0
  379. package/dist/source/types.d.ts +402 -0
  380. package/dist/source/types.d.ts.map +1 -0
  381. package/dist/source/types.js +60 -0
  382. package/dist/source/types.js.map +1 -0
  383. package/dist/syncLog/contract.d.ts +21 -0
  384. package/dist/syncLog/contract.d.ts.map +1 -0
  385. package/dist/syncLog/contract.js +20 -0
  386. package/dist/syncLog/contract.js.map +1 -0
  387. package/dist/syncLog/index.d.ts +2 -0
  388. package/dist/syncLog/index.d.ts.map +1 -0
  389. package/dist/syncLog/index.js +2 -0
  390. package/dist/syncLog/index.js.map +1 -0
  391. package/dist/testing/fixtures/httpResponses.d.ts +74 -0
  392. package/dist/testing/fixtures/httpResponses.d.ts.map +1 -0
  393. package/dist/testing/fixtures/httpResponses.js +102 -0
  394. package/dist/testing/fixtures/httpResponses.js.map +1 -0
  395. package/dist/transactionLayer.d.ts +110 -0
  396. package/dist/transactionLayer.d.ts.map +1 -0
  397. package/dist/transactionLayer.js +25 -0
  398. package/dist/transactionLayer.js.map +1 -0
  399. package/dist/transactions/settlement/commitEnvelope.d.ts +144 -0
  400. package/dist/transactions/settlement/commitEnvelope.d.ts.map +1 -0
  401. package/dist/transactions/settlement/commitEnvelope.js +162 -0
  402. package/dist/transactions/settlement/commitEnvelope.js.map +1 -0
  403. package/dist/transactions/settlement/httpCommitEnvelope.d.ts +54 -0
  404. package/dist/transactions/settlement/httpCommitEnvelope.d.ts.map +1 -0
  405. package/dist/transactions/settlement/httpCommitEnvelope.js +208 -0
  406. package/dist/transactions/settlement/httpCommitEnvelope.js.map +1 -0
  407. package/dist/transactions/settlement/idempotencyKey.d.ts +11 -0
  408. package/dist/transactions/settlement/idempotencyKey.d.ts.map +1 -0
  409. package/dist/transactions/settlement/idempotencyKey.js +10 -0
  410. package/dist/transactions/settlement/idempotencyKey.js.map +1 -0
  411. package/dist/transactions/settlement/pendingWrite.d.ts +113 -0
  412. package/dist/transactions/settlement/pendingWrite.d.ts.map +1 -0
  413. package/dist/transactions/settlement/pendingWrite.js +21 -0
  414. package/dist/transactions/settlement/pendingWrite.js.map +1 -0
  415. package/dist/transport/commitFrames.d.ts +91 -0
  416. package/dist/transport/commitFrames.d.ts.map +1 -0
  417. package/dist/transport/commitFrames.js +135 -0
  418. package/dist/transport/commitFrames.js.map +1 -0
  419. package/dist/transport/connectionManager.d.ts +216 -0
  420. package/dist/transport/connectionManager.d.ts.map +1 -0
  421. package/dist/transport/connectionManager.js +674 -0
  422. package/dist/transport/connectionManager.js.map +1 -0
  423. package/dist/transport/credentialLifecycle.d.ts +178 -0
  424. package/dist/transport/credentialLifecycle.d.ts.map +1 -0
  425. package/dist/transport/credentialLifecycle.js +324 -0
  426. package/dist/transport/credentialLifecycle.js.map +1 -0
  427. package/dist/transport/heartbeat.d.ts +66 -0
  428. package/dist/transport/heartbeat.d.ts.map +1 -0
  429. package/dist/transport/heartbeat.js +94 -0
  430. package/dist/transport/heartbeat.js.map +1 -0
  431. package/dist/transport/httpClient.d.ts +143 -0
  432. package/dist/transport/httpClient.d.ts.map +1 -0
  433. package/dist/transport/httpClient.js +150 -0
  434. package/dist/transport/httpClient.js.map +1 -0
  435. package/dist/transport/httpFeed.d.ts +4 -0
  436. package/dist/transport/httpFeed.d.ts.map +1 -0
  437. package/dist/transport/httpFeed.js +94 -0
  438. package/dist/transport/httpFeed.js.map +1 -0
  439. package/dist/transport/httpOptions.d.ts +34 -0
  440. package/dist/transport/httpOptions.d.ts.map +1 -0
  441. package/dist/transport/httpOptions.js +13 -0
  442. package/dist/transport/httpOptions.js.map +1 -0
  443. package/dist/transport/httpTransport.d.ts +68 -0
  444. package/dist/transport/httpTransport.d.ts.map +1 -0
  445. package/dist/transport/httpTransport.js +1433 -0
  446. package/dist/transport/httpTransport.js.map +1 -0
  447. package/dist/transport/networkProbe.d.ts +85 -0
  448. package/dist/transport/networkProbe.d.ts.map +1 -0
  449. package/dist/transport/networkProbe.js +208 -0
  450. package/dist/transport/networkProbe.js.map +1 -0
  451. package/dist/transport/wsFrameHandlers.d.ts +129 -0
  452. package/dist/transport/wsFrameHandlers.d.ts.map +1 -0
  453. package/dist/transport/wsFrameHandlers.js +429 -0
  454. package/dist/transport/wsFrameHandlers.js.map +1 -0
  455. package/dist/transport/wsTransport.d.ts +575 -0
  456. package/dist/transport/wsTransport.d.ts.map +1 -0
  457. package/dist/transport/wsTransport.js +1024 -0
  458. package/dist/transport/wsTransport.js.map +1 -0
  459. package/dist/types/assertExact.d.ts +18 -0
  460. package/dist/types/assertExact.d.ts.map +1 -0
  461. package/dist/types/assertExact.js +2 -0
  462. package/dist/types/assertExact.js.map +1 -0
  463. package/dist/types/global.d.ts +108 -0
  464. package/dist/types/global.d.ts.map +1 -0
  465. package/dist/types/global.js +41 -0
  466. package/dist/types/global.js.map +1 -0
  467. package/dist/types/index.d.ts +206 -0
  468. package/dist/types/index.d.ts.map +1 -0
  469. package/dist/types/index.js +57 -0
  470. package/dist/types/index.js.map +1 -0
  471. package/dist/types/modelData.d.ts +11 -0
  472. package/dist/types/modelData.d.ts.map +1 -0
  473. package/dist/types/modelData.js +10 -0
  474. package/dist/types/modelData.js.map +1 -0
  475. package/dist/types/participant.d.ts +21 -0
  476. package/dist/types/participant.d.ts.map +1 -0
  477. package/dist/types/participant.js +11 -0
  478. package/dist/types/participant.js.map +1 -0
  479. package/dist/types/streams.d.ts +545 -0
  480. package/dist/types/streams.d.ts.map +1 -0
  481. package/dist/types/streams.js +12 -0
  482. package/dist/types/streams.js.map +1 -0
  483. package/dist/utils/asyncIterator.d.ts +35 -0
  484. package/dist/utils/asyncIterator.d.ts.map +1 -0
  485. package/dist/utils/asyncIterator.js +136 -0
  486. package/dist/utils/asyncIterator.js.map +1 -0
  487. package/dist/utils/duration.d.ts +51 -0
  488. package/dist/utils/duration.d.ts.map +1 -0
  489. package/dist/utils/duration.js +78 -0
  490. package/dist/utils/duration.js.map +1 -0
  491. package/dist/utils/json.d.ts +58 -0
  492. package/dist/utils/json.d.ts.map +1 -0
  493. package/dist/utils/json.js +277 -0
  494. package/dist/utils/json.js.map +1 -0
  495. package/dist/webhooks/events.d.ts +44 -0
  496. package/dist/webhooks/events.d.ts.map +1 -0
  497. package/dist/webhooks/events.js +43 -0
  498. package/dist/webhooks/events.js.map +1 -0
  499. package/dist/webhooks/index.d.ts +9 -0
  500. package/dist/webhooks/index.d.ts.map +1 -0
  501. package/dist/webhooks/index.js +9 -0
  502. package/dist/webhooks/index.js.map +1 -0
  503. package/dist/wire/accountResponses.d.ts +463 -0
  504. package/dist/wire/accountResponses.d.ts.map +1 -0
  505. package/dist/wire/accountResponses.js +294 -0
  506. package/dist/wire/accountResponses.js.map +1 -0
  507. package/dist/wire/auth.d.ts +57 -0
  508. package/dist/wire/auth.d.ts.map +1 -0
  509. package/dist/wire/auth.js +71 -0
  510. package/dist/wire/auth.js.map +1 -0
  511. package/dist/wire/bootstrapReason.d.ts +10 -0
  512. package/dist/wire/bootstrapReason.d.ts.map +1 -0
  513. package/dist/wire/bootstrapReason.js +9 -0
  514. package/dist/wire/bootstrapReason.js.map +1 -0
  515. package/dist/wire/claimEvent.d.ts +70 -0
  516. package/dist/wire/claimEvent.d.ts.map +1 -0
  517. package/dist/wire/claimEvent.js +74 -0
  518. package/dist/wire/claimEvent.js.map +1 -0
  519. package/dist/wire/claims.d.ts +475 -0
  520. package/dist/wire/claims.d.ts.map +1 -0
  521. package/dist/wire/claims.js +326 -0
  522. package/dist/wire/claims.js.map +1 -0
  523. package/dist/wire/commit.d.ts +604 -0
  524. package/dist/wire/commit.d.ts.map +1 -0
  525. package/dist/wire/commit.js +322 -0
  526. package/dist/wire/commit.js.map +1 -0
  527. package/dist/wire/delta.d.ts +251 -0
  528. package/dist/wire/delta.d.ts.map +1 -0
  529. package/dist/wire/delta.js +148 -0
  530. package/dist/wire/delta.js.map +1 -0
  531. package/dist/wire/errorEnvelope.d.ts +73 -0
  532. package/dist/wire/errorEnvelope.d.ts.map +1 -0
  533. package/dist/wire/errorEnvelope.js +124 -0
  534. package/dist/wire/errorEnvelope.js.map +1 -0
  535. package/dist/wire/feedCursor.d.ts +61 -0
  536. package/dist/wire/feedCursor.d.ts.map +1 -0
  537. package/dist/wire/feedCursor.js +83 -0
  538. package/dist/wire/feedCursor.js.map +1 -0
  539. package/dist/wire/feedEvent.d.ts +264 -0
  540. package/dist/wire/feedEvent.d.ts.map +1 -0
  541. package/dist/wire/feedEvent.js +66 -0
  542. package/dist/wire/feedEvent.js.map +1 -0
  543. package/dist/wire/frames.d.ts +195 -0
  544. package/dist/wire/frames.d.ts.map +1 -0
  545. package/dist/wire/frames.js +51 -0
  546. package/dist/wire/frames.js.map +1 -0
  547. package/dist/wire/inboundFrames.d.ts +490 -0
  548. package/dist/wire/inboundFrames.d.ts.map +1 -0
  549. package/dist/wire/inboundFrames.js +117 -0
  550. package/dist/wire/inboundFrames.js.map +1 -0
  551. package/dist/wire/index.d.ts +55 -0
  552. package/dist/wire/index.d.ts.map +1 -0
  553. package/dist/wire/index.js +84 -0
  554. package/dist/wire/index.js.map +1 -0
  555. package/dist/wire/listEnvelope.d.ts +38 -0
  556. package/dist/wire/listEnvelope.d.ts.map +1 -0
  557. package/dist/wire/listEnvelope.js +43 -0
  558. package/dist/wire/listEnvelope.js.map +1 -0
  559. package/dist/wire/modelMutations.d.ts +32 -0
  560. package/dist/wire/modelMutations.d.ts.map +1 -0
  561. package/dist/wire/modelMutations.js +53 -0
  562. package/dist/wire/modelMutations.js.map +1 -0
  563. package/dist/wire/modelResponses.d.ts +79 -0
  564. package/dist/wire/modelResponses.d.ts.map +1 -0
  565. package/dist/wire/modelResponses.js +44 -0
  566. package/dist/wire/modelResponses.js.map +1 -0
  567. package/dist/wire/modelShape.d.ts +79 -0
  568. package/dist/wire/modelShape.d.ts.map +1 -0
  569. package/dist/wire/modelShape.js +75 -0
  570. package/dist/wire/modelShape.js.map +1 -0
  571. package/dist/wire/protocol.d.ts +39 -0
  572. package/dist/wire/protocol.d.ts.map +1 -0
  573. package/dist/wire/protocol.js +39 -0
  574. package/dist/wire/protocol.js.map +1 -0
  575. package/dist/wire/protocolVersion.d.ts +74 -0
  576. package/dist/wire/protocolVersion.d.ts.map +1 -0
  577. package/dist/wire/protocolVersion.js +84 -0
  578. package/dist/wire/protocolVersion.js.map +1 -0
  579. package/package.json +187 -0
  580. package/src/ablo.ts +139 -0
  581. package/src/ai-sdk/coordinatedTool.ts +214 -0
  582. package/src/ai-sdk/index.ts +7 -0
  583. package/src/auth/apiKey.ts +540 -0
  584. package/src/auth/bootstrapScope.ts +15 -0
  585. package/src/auth/browserCredentialSafety.ts +48 -0
  586. package/src/auth/capability.ts +326 -0
  587. package/src/auth/capabilityLifecycle.ts +174 -0
  588. package/src/auth/credentialEndpoint.ts +79 -0
  589. package/src/auth/credentialEndpointProtocol.ts +51 -0
  590. package/src/auth/credentialKind.ts +20 -0
  591. package/src/auth/credentialPolicy.ts +244 -0
  592. package/src/auth/credentialResult.ts +23 -0
  593. package/src/auth/credentialSource.ts +99 -0
  594. package/src/auth/hostedEndpoints.ts +24 -0
  595. package/src/auth/identity.ts +330 -0
  596. package/src/auth/index.ts +592 -0
  597. package/src/auth/schemas.ts +94 -0
  598. package/src/auth/sessionMint.ts +126 -0
  599. package/src/auth/token.ts +4 -0
  600. package/src/batching/index.ts +200 -0
  601. package/src/coordination/awaitClaimGrant.ts +243 -0
  602. package/src/coordination/claimHeartbeatLoop.ts +165 -0
  603. package/src/coordination/claimMeta.ts +56 -0
  604. package/src/coordination/events.ts +86 -0
  605. package/src/coordination/index.ts +181 -0
  606. package/src/coordination/locator.ts +200 -0
  607. package/src/coordination/schema.ts +1346 -0
  608. package/src/coordination/targetConflict.ts +85 -0
  609. package/src/coordination/trace.ts +173 -0
  610. package/src/docs/catalog.ts +274 -0
  611. package/src/docs/index.ts +18 -0
  612. package/src/durableWrites.ts +134 -0
  613. package/src/environment.ts +132 -0
  614. package/src/errorCodes.ts +1591 -0
  615. package/src/errors.ts +918 -0
  616. package/src/footprint.ts +0 -0
  617. package/src/headlessClient.ts +161 -0
  618. package/src/index.ts +52 -0
  619. package/src/keys/index.ts +254 -0
  620. package/src/log/syncDeltaRow.ts +119 -0
  621. package/src/logger.ts +22 -0
  622. package/src/observability.ts +85 -0
  623. package/src/policy/types.ts +292 -0
  624. package/src/resources/functionalUpdate.ts +151 -0
  625. package/src/resources/httpResources.ts +520 -0
  626. package/src/resources/modelOperations.ts +444 -0
  627. package/src/resources/mutationOptions.ts +66 -0
  628. package/src/resources/where.ts +160 -0
  629. package/src/resources/writeOptionsSchema.ts +91 -0
  630. package/src/schema/coordination.ts +161 -0
  631. package/src/schema/ddl.ts +593 -0
  632. package/src/schema/ddlLock.ts +53 -0
  633. package/src/schema/diff.ts +489 -0
  634. package/src/schema/field.ts +321 -0
  635. package/src/schema/fieldRef.ts +88 -0
  636. package/src/schema/generate.ts +95 -0
  637. package/src/schema/index.ts +278 -0
  638. package/src/schema/loadStrategy.ts +52 -0
  639. package/src/schema/model.ts +476 -0
  640. package/src/schema/openapi.ts +658 -0
  641. package/src/schema/queries.ts +273 -0
  642. package/src/schema/relation.ts +291 -0
  643. package/src/schema/residency.ts +30 -0
  644. package/src/schema/roles.ts +325 -0
  645. package/src/schema/schema.ts +825 -0
  646. package/src/schema/select.ts +115 -0
  647. package/src/schema/serialize.ts +373 -0
  648. package/src/schema/sugar.ts +194 -0
  649. package/src/schema/tenancy.ts +221 -0
  650. package/src/server/adapter.ts +203 -0
  651. package/src/server/commit.ts +109 -0
  652. package/src/server/index.ts +26 -0
  653. package/src/server/readConfig.ts +82 -0
  654. package/src/server/storageMode.ts +20 -0
  655. package/src/source/adapter.ts +85 -0
  656. package/src/source/adapters/drizzle.ts +291 -0
  657. package/src/source/adapters/kysely.ts +346 -0
  658. package/src/source/adapters/kyselyMutationCore.ts +220 -0
  659. package/src/source/adapters/memory.ts +154 -0
  660. package/src/source/adapters/prisma.ts +282 -0
  661. package/src/source/conformance.ts +287 -0
  662. package/src/source/connector.ts +394 -0
  663. package/src/source/connectorProtocol.ts +189 -0
  664. package/src/source/contract.ts +221 -0
  665. package/src/source/drizzle.ts +1 -0
  666. package/src/source/factory.ts +444 -0
  667. package/src/source/idempotency.ts +189 -0
  668. package/src/source/index.ts +182 -0
  669. package/src/source/kysely.ts +2 -0
  670. package/src/source/migrations.ts +109 -0
  671. package/src/source/next.ts +38 -0
  672. package/src/source/pushQueue.ts +368 -0
  673. package/src/source/signing.ts +279 -0
  674. package/src/source/types.ts +502 -0
  675. package/src/syncLog/contract.ts +32 -0
  676. package/src/syncLog/index.ts +1 -0
  677. package/src/testing/fixtures/httpResponses.ts +155 -0
  678. package/src/transactionLayer.ts +122 -0
  679. package/src/transactions/settlement/commitEnvelope.ts +192 -0
  680. package/src/transactions/settlement/httpCommitEnvelope.ts +250 -0
  681. package/src/transactions/settlement/idempotencyKey.ts +11 -0
  682. package/src/transactions/settlement/pendingWrite.ts +24 -0
  683. package/src/transport/commitFrames.ts +225 -0
  684. package/src/transport/connectionManager.ts +856 -0
  685. package/src/transport/credentialLifecycle.ts +389 -0
  686. package/src/transport/heartbeat.ts +118 -0
  687. package/src/transport/httpClient.ts +354 -0
  688. package/src/transport/httpFeed.ts +111 -0
  689. package/src/transport/httpOptions.ts +41 -0
  690. package/src/transport/httpTransport.ts +1976 -0
  691. package/src/transport/networkProbe.ts +249 -0
  692. package/src/transport/wsFrameHandlers.ts +619 -0
  693. package/src/transport/wsTransport.ts +1491 -0
  694. package/src/types/assertExact.ts +17 -0
  695. package/src/types/global.ts +123 -0
  696. package/src/types/index.ts +270 -0
  697. package/src/types/modelData.ts +11 -0
  698. package/src/types/participant.ts +22 -0
  699. package/src/types/streams.ts +702 -0
  700. package/src/utils/asyncIterator.ts +141 -0
  701. package/src/utils/duration.ts +88 -0
  702. package/src/utils/json.ts +281 -0
  703. package/src/webhooks/events.ts +96 -0
  704. package/src/webhooks/index.ts +12 -0
  705. package/src/wire/accountResponses.ts +328 -0
  706. package/src/wire/auth.ts +86 -0
  707. package/src/wire/bootstrapReason.ts +10 -0
  708. package/src/wire/claimEvent.ts +85 -0
  709. package/src/wire/claims.ts +370 -0
  710. package/src/wire/commit.ts +379 -0
  711. package/src/wire/delta.ts +173 -0
  712. package/src/wire/errorEnvelope.ts +133 -0
  713. package/src/wire/feedCursor.ts +91 -0
  714. package/src/wire/feedEvent.ts +74 -0
  715. package/src/wire/frames.ts +77 -0
  716. package/src/wire/inboundFrames.ts +182 -0
  717. package/src/wire/index.ts +328 -0
  718. package/src/wire/listEnvelope.ts +51 -0
  719. package/src/wire/modelMutations.ts +55 -0
  720. package/src/wire/modelResponses.ts +48 -0
  721. package/src/wire/modelShape.ts +83 -0
  722. package/src/wire/protocol.ts +39 -0
  723. package/src/wire/protocolVersion.ts +97 -0
@@ -0,0 +1,29 @@
1
+ import { AbloAuthenticationError } from '../errors.js';
2
+ import { classifyCredentialKind } from './credentialKind.js';
3
+ import { credentialToken, } from './credentialResult.js';
4
+ export function assertBrowserSafety(input) {
5
+ if (!input.dangerouslyAllowBrowser &&
6
+ typeof window !== 'undefined' &&
7
+ typeof input.apiKey === 'string' &&
8
+ classifyCredentialKind(input.apiKey) === 'secret') {
9
+ throwBrowserSecretError();
10
+ }
11
+ }
12
+ export function protectBrowserCredentialProvider(provider, dangerouslyAllowBrowser) {
13
+ return async () => {
14
+ const result = await provider();
15
+ const token = credentialToken(result);
16
+ if (!dangerouslyAllowBrowser &&
17
+ typeof window !== 'undefined' &&
18
+ token !== null &&
19
+ classifyCredentialKind(token) === 'secret') {
20
+ throwBrowserSecretError();
21
+ }
22
+ return result;
23
+ };
24
+ }
25
+ function throwBrowserSecretError() {
26
+ throw new AbloAuthenticationError('A secret `sk_` credential reached the browser. Keep it server-side and ' +
27
+ 'configure the browser with `authEndpoint` instead.', { code: 'browser_apikey_blocked' });
28
+ }
29
+ //# sourceMappingURL=browserCredentialSafety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserCredentialSafety.js","sourceRoot":"","sources":["../../src/auth/browserCredentialSafety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,mBAAmB,CAAC,KAGnC;IACC,IACE,CAAC,KAAK,CAAC,uBAAuB;QAC9B,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EACjD,CAAC;QACD,uBAAuB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAA4B,EAC5B,uBAA4C;IAE5C,OAAO,KAAK,IAAuC,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,IACE,CAAC,uBAAuB;YACxB,OAAO,MAAM,KAAK,WAAW;YAC7B,KAAK,KAAK,IAAI;YACd,sBAAsB,CAAC,KAAK,CAAC,KAAK,QAAQ,EAC1C,CAAC;YACD,uBAAuB,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,MAAM,IAAI,uBAAuB,CAC/B,yEAAyE;QACvE,oDAAoD,EACtD,EAAE,IAAI,EAAE,wBAAwB,EAAE,CACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Capability — the one definition of what a credential may do.
3
+ *
4
+ * A grant is declared once, in the vocabulary a developer writes:
5
+ *
6
+ * can: { documents: ['read', 'update'] }
7
+ *
8
+ * Everything downstream derives from that declaration: the wire spelling
9
+ * (`documents.update`) stored on the key row, the typed `can` a schema narrows
10
+ * to its own models, the request body the mint route parses, the pattern the
11
+ * published contract advertises, and the scope block echoed back on the minted
12
+ * session.
13
+ *
14
+ * Before this module the same grant was spelled five times — a literal union in
15
+ * the resource types, a `z.array(z.string())` on the wire, a hand-rolled
16
+ * field-by-field parser in the mint route, an object literal in the response
17
+ * type, and a hand-written `model.verb` array at each caller that mints without
18
+ * the SDK. Nothing failed when they drifted; the drift surfaced as
19
+ * `capability_scope_denied` on a grant the caller believed it held.
20
+ *
21
+ * Two axes decide blast radius. VERBS come from `can`; ROWS come from
22
+ * `syncGroups`. They belong to one grant, which is why they are declared
23
+ * together here rather than meeting for the first time on the wire.
24
+ */
25
+ import { z } from 'zod';
26
+ /**
27
+ * The verbs a grant can name — the whole vocabulary, in one place. Every other
28
+ * spelling of an operation in the system derives from this enum: the SDK's
29
+ * `can` values, the wire's `model.verb` pattern, and the JSON Schema the
30
+ * published contract advertises.
31
+ */
32
+ export declare const capabilityOperationSchema: z.ZodEnum<{
33
+ update: "update";
34
+ create: "create";
35
+ delete: "delete";
36
+ read: "read";
37
+ }>;
38
+ export type CapabilityOperation = z.infer<typeof capabilityOperationSchema>;
39
+ /**
40
+ * One granted operation in its wire spelling: `<model>.<verb>`, lowercased.
41
+ *
42
+ * The template literal derives both halves — the verb set from
43
+ * {@link capabilityOperationSchema}, the pattern in the published contract from
44
+ * the template — so tightening the verb vocabulary can never leave a stale
45
+ * regex or a stale doc behind. The model half is the name the server matches
46
+ * against a model's registered aliases (type name, schema key, or table name),
47
+ * so it stays permissive here and is resolved at the gate.
48
+ */
49
+ export declare const grantedOperationSchema: z.ZodTemplateLiteral<`${string}.update` | `${string}.create` | `${string}.delete` | `${string}.read`>;
50
+ export type GrantedOperation = z.infer<typeof grantedOperationSchema>;
51
+ /**
52
+ * The declared grant, per model — the runtime shape of `can`. Model keys are
53
+ * free-form at runtime because the server resolves them against the schema it
54
+ * has; {@link CapabilityCan} narrows them to a known schema's models at the
55
+ * type level.
56
+ */
57
+ export declare const capabilityCanSchema: z.ZodRecord<z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodEnum<{
58
+ update: "update";
59
+ create: "create";
60
+ delete: "delete";
61
+ read: "read";
62
+ }>>>>;
63
+ export type NonEmptyCapabilityOperations = readonly [
64
+ CapabilityOperation,
65
+ ...CapabilityOperation[]
66
+ ];
67
+ /**
68
+ * `can`, narrowed to one schema's model names. A projection of
69
+ * {@link capabilityCanSchema} — the value type is the operation enum, the key
70
+ * domain is the schema's models, so `can: { tasks: ['update'] }` fails to
71
+ * compile against a schema with no `tasks` model.
72
+ */
73
+ export type CapabilityCan<S> = {
74
+ [K in keyof S & string]: Readonly<Record<K, NonEmptyCapabilityOperations>> & Partial<Record<Exclude<keyof S & string, K>, NonEmptyCapabilityOperations>>;
75
+ }[keyof S & string];
76
+ /**
77
+ * Public authoring type for a reusable grant. It accepts the `Schema` itself,
78
+ * so callers can use TypeScript's `satisfies` operator without reaching into
79
+ * `schema.models`.
80
+ */
81
+ export type CapabilityGrant<S extends {
82
+ readonly models: Readonly<Record<string, unknown>>;
83
+ }> = CapabilityCan<S['models']>;
84
+ /**
85
+ * Bind the canonical `can` Zod contract to one schema's model keys.
86
+ *
87
+ * The wire parser cannot know a tenant's models until a schema is selected.
88
+ * This projection keeps the same operation/value contract and rejects keys
89
+ * outside that selected schema.
90
+ */
91
+ export declare function capabilityCanSchemaFor<const S extends Readonly<Record<string, unknown>>>(models: S): z.ZodRecord<z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodEnum<{
92
+ update: "update";
93
+ create: "create";
94
+ delete: "delete";
95
+ read: "read";
96
+ }>>>>;
97
+ /**
98
+ * Read-your-writes expansion: append `<model>.read` for every model the grant
99
+ * can write.
100
+ *
101
+ * A scoped agent that may update a row must be able to read it, or the read
102
+ * gate (query / bootstrap / entity self-heal / delta fan-out) starves the very
103
+ * writes the grant allows. The write verbs stay the source of truth; reads are
104
+ * derived and deduped, and models the grant cannot write stay unreadable —
105
+ * that is the read-side blast-radius reduction.
106
+ *
107
+ * It lives beside the declaration, so it applies wherever a grant is built,
108
+ * rather than only at whichever mint the callers happen to share. The server
109
+ * applies it again at the mint chokepoint for callers that post raw JSON; the
110
+ * function is idempotent, so the second application is a no-op.
111
+ */
112
+ export declare function expandReadYourWrites(operations: readonly GrantedOperation[]): GrantedOperation[];
113
+ /**
114
+ * The parts of a model definition a grant can name. Structural, so both the
115
+ * SDK (which holds a `Schema`) and the mint route (which holds the tenant's
116
+ * pushed artifact) derive names from the same rule.
117
+ */
118
+ export interface CapabilityModelShape {
119
+ readonly typename?: string;
120
+ readonly tableName?: string;
121
+ }
122
+ /**
123
+ * Schema key → the wire name a grant must be minted with.
124
+ *
125
+ * THE derivation. A model whose type name is overridden — schema key
126
+ * `documents`, type name `Document` — has to mint `document.update`, not
127
+ * `documents.update`, and a caller who works that out by hand gets it wrong
128
+ * once and learns at `capability_scope_denied`. Callers pass their schema's
129
+ * models, never a map they assembled themselves.
130
+ */
131
+ export declare function modelWireNames(models: Readonly<Record<string, CapabilityModelShape>>): Record<string, string>;
132
+ /**
133
+ * Every name the enforcement gates accept for a model, lowercased. Three
134
+ * vocabularies name one logical model — the wire type name (`lineitem`), the
135
+ * schema key (`lineItems`), and the table name (`line_items`) — so a grant
136
+ * minted in any of them is honored, and the mint can tell a real model from a
137
+ * typo without guessing which vocabulary the caller used.
138
+ */
139
+ export declare function capabilityModelAliases(models: Readonly<Record<string, CapabilityModelShape>>): Set<string>;
140
+ /**
141
+ * The granted operations whose model half names nothing in the schema.
142
+ *
143
+ * A grant is checked against the schema at MINT, the way a write to an unpushed
144
+ * model already fails with `server_execute_unknown_model` — so a typo in
145
+ * `lineitem.update` is a rejected mint rather than a credential that looks
146
+ * healthy and is denied on its first write. Without this the `model` half is a
147
+ * hole: an opaque string nothing validates until enforcement time.
148
+ */
149
+ export declare function unresolvableOperations(operations: readonly GrantedOperation[], aliases: ReadonlySet<string>): GrantedOperation[];
150
+ /**
151
+ * Serializes a declared `can` into the wire allowlist — the ONE translation
152
+ * from what a developer writes to what the server stores and enforces.
153
+ *
154
+ * `wireNames` comes from {@link modelWireNames} over the client's own schema.
155
+ * It is required rather than optional: an omitted map silently mints the schema
156
+ * key verbatim, which is right for most models and wrong for every model with
157
+ * a type-name override — the kind of default that is correct until it isn't.
158
+ */
159
+ export declare function grantedOperations(can: Readonly<Record<string, readonly CapabilityOperation[] | undefined>>, wireNames: Readonly<Record<string, string>>): GrantedOperation[];
160
+ /**
161
+ * The grant at rest: what the credential ended up with, on both axes, plus the
162
+ * participant it acts as. The mint echoes this block, the key row stores it,
163
+ * and the gates read it — so a session's reported scope and its enforced scope
164
+ * are the same shape by construction.
165
+ */
166
+ export declare const capabilityScopeSchema: z.ZodObject<{
167
+ organizationId: z.ZodString;
168
+ syncGroups: z.ZodArray<z.ZodString>;
169
+ operations: z.ZodArray<z.ZodTemplateLiteral<`${string}.update` | `${string}.create` | `${string}.delete` | `${string}.read`>>;
170
+ participantKind: z.ZodEnum<{
171
+ user: "user";
172
+ agent: "agent";
173
+ system: "system";
174
+ }>;
175
+ participantId: z.ZodString;
176
+ }, z.core.$strip>;
177
+ export type CapabilityScope = z.infer<typeof capabilityScopeSchema>;
178
+ /**
179
+ * What `POST /v1/capabilities` answers with — **201**, the credential is minted.
180
+ *
181
+ * This is the first call any non-TypeScript client makes, and until it had a
182
+ * schema the published contract described it as `{ type: 'object' }`: a caller
183
+ * working from the reference could see that a capability could be minted and
184
+ * not where the token was in the reply.
185
+ *
186
+ * `scope` echoes what was MINTED, not what was asked. A `wideScope` mint stores
187
+ * the org-wide default and read-your-writes widens the verb axis, so a client
188
+ * that assumed its request came back verbatim would report a scope narrower
189
+ * than the one being enforced.
190
+ *
191
+ * `userMeta` is the caller's own blob, echoed. Ablo has no view into their user
192
+ * directory — the API key is what is trusted — so this is deliberately open.
193
+ */
194
+ export declare const capabilityMintResponseSchema: z.ZodObject<{
195
+ capabilityId: z.ZodString;
196
+ token: z.ZodString;
197
+ expiresAt: z.ZodISODateTime;
198
+ organizationId: z.ZodString;
199
+ scope: z.ZodObject<{
200
+ organizationId: z.ZodString;
201
+ syncGroups: z.ZodArray<z.ZodString>;
202
+ operations: z.ZodArray<z.ZodTemplateLiteral<`${string}.update` | `${string}.create` | `${string}.delete` | `${string}.read`>>;
203
+ participantKind: z.ZodEnum<{
204
+ user: "user";
205
+ agent: "agent";
206
+ system: "system";
207
+ }>;
208
+ participantId: z.ZodString;
209
+ }, z.core.$strip>;
210
+ userMeta: z.ZodRecord<z.ZodString, z.ZodUnknown>;
211
+ }, z.core.$strip>;
212
+ export type CapabilityMintResponse = z.infer<typeof capabilityMintResponseSchema>;
213
+ /**
214
+ * `POST /v1/capabilities` — mint a capability for a participant.
215
+ *
216
+ * Where an ephemeral key is a session for a person, a capability is a scoped,
217
+ * revocable grant for an agent or a system. Narrow by default: an agent or
218
+ * system capability must name its `operations` unless the caller explicitly
219
+ * asks for `wideScope`, which is itself privileged.
220
+ *
221
+ * This is the parsed body — the mint route validates against it rather than
222
+ * reading fields one at a time, so the shape and the validation rules cannot
223
+ * drift from each other or from the published contract.
224
+ */
225
+ export declare const capabilityRequestSchema: z.ZodObject<{
226
+ participantKind: z.ZodEnum<{
227
+ user: "user";
228
+ agent: "agent";
229
+ system: "system";
230
+ }>;
231
+ participantId: z.ZodOptional<z.ZodString>;
232
+ organizationId: z.ZodOptional<z.ZodString>;
233
+ syncGroups: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"default">, z.core.$ZodBranded<z.ZodTemplateLiteral<`${string}:${string}`>, "SyncGroup", "out">]>>>>;
234
+ operations: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodTemplateLiteral<`${string}.update` | `${string}.create` | `${string}.delete` | `${string}.read`>>>>;
235
+ ttlSeconds: z.ZodNumber;
236
+ label: z.ZodOptional<z.ZodString>;
237
+ wideScope: z.ZodOptional<z.ZodBoolean>;
238
+ userMeta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
239
+ }, z.core.$strip>;
240
+ export type CapabilityRequest = z.infer<typeof capabilityRequestSchema>;
241
+ //# sourceMappingURL=capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/auth/capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Capability — the one definition of what a credential may do.
3
+ *
4
+ * A grant is declared once, in the vocabulary a developer writes:
5
+ *
6
+ * can: { documents: ['read', 'update'] }
7
+ *
8
+ * Everything downstream derives from that declaration: the wire spelling
9
+ * (`documents.update`) stored on the key row, the typed `can` a schema narrows
10
+ * to its own models, the request body the mint route parses, the pattern the
11
+ * published contract advertises, and the scope block echoed back on the minted
12
+ * session.
13
+ *
14
+ * Before this module the same grant was spelled five times — a literal union in
15
+ * the resource types, a `z.array(z.string())` on the wire, a hand-rolled
16
+ * field-by-field parser in the mint route, an object literal in the response
17
+ * type, and a hand-written `model.verb` array at each caller that mints without
18
+ * the SDK. Nothing failed when they drifted; the drift surfaced as
19
+ * `capability_scope_denied` on a grant the caller believed it held.
20
+ *
21
+ * Two axes decide blast radius. VERBS come from `can`; ROWS come from
22
+ * `syncGroups`. They belong to one grant, which is why they are declared
23
+ * together here rather than meeting for the first time on the wire.
24
+ */
25
+ import { z } from 'zod';
26
+ import { participantKindSchema } from '../coordination/schema.js';
27
+ import { syncGroupInputSchema } from '../schema/roles.js';
28
+ import { authTokenSchema } from './token.js';
29
+ /**
30
+ * The verbs a grant can name — the whole vocabulary, in one place. Every other
31
+ * spelling of an operation in the system derives from this enum: the SDK's
32
+ * `can` values, the wire's `model.verb` pattern, and the JSON Schema the
33
+ * published contract advertises.
34
+ */
35
+ export const capabilityOperationSchema = z.enum(['read', 'create', 'update', 'delete']);
36
+ /**
37
+ * One granted operation in its wire spelling: `<model>.<verb>`, lowercased.
38
+ *
39
+ * The template literal derives both halves — the verb set from
40
+ * {@link capabilityOperationSchema}, the pattern in the published contract from
41
+ * the template — so tightening the verb vocabulary can never leave a stale
42
+ * regex or a stale doc behind. The model half is the name the server matches
43
+ * against a model's registered aliases (type name, schema key, or table name),
44
+ * so it stays permissive here and is resolved at the gate.
45
+ */
46
+ export const grantedOperationSchema = z.templateLiteral([
47
+ z.string().regex(/^[^.\s]+$/),
48
+ '.',
49
+ capabilityOperationSchema,
50
+ ]);
51
+ /**
52
+ * The declared grant, per model — the runtime shape of `can`. Model keys are
53
+ * free-form at runtime because the server resolves them against the schema it
54
+ * has; {@link CapabilityCan} narrows them to a known schema's models at the
55
+ * type level.
56
+ */
57
+ export const capabilityCanSchema = z.record(z.string().min(1), z.array(capabilityOperationSchema).min(1).readonly()).refine((can) => Object.keys(can).length > 0, {
58
+ message: 'can must grant at least one operation',
59
+ });
60
+ /**
61
+ * Bind the canonical `can` Zod contract to one schema's model keys.
62
+ *
63
+ * The wire parser cannot know a tenant's models until a schema is selected.
64
+ * This projection keeps the same operation/value contract and rejects keys
65
+ * outside that selected schema.
66
+ */
67
+ export function capabilityCanSchemaFor(models) {
68
+ const modelNames = new Set(Object.keys(models));
69
+ return capabilityCanSchema.superRefine((can, ctx) => {
70
+ for (const model of Object.keys(can)) {
71
+ if (!modelNames.has(model)) {
72
+ ctx.addIssue({
73
+ code: 'custom',
74
+ path: [model],
75
+ message: `Model "${model}" is not declared by this schema.`,
76
+ });
77
+ }
78
+ }
79
+ });
80
+ }
81
+ /**
82
+ * Read-your-writes expansion: append `<model>.read` for every model the grant
83
+ * can write.
84
+ *
85
+ * A scoped agent that may update a row must be able to read it, or the read
86
+ * gate (query / bootstrap / entity self-heal / delta fan-out) starves the very
87
+ * writes the grant allows. The write verbs stay the source of truth; reads are
88
+ * derived and deduped, and models the grant cannot write stay unreadable —
89
+ * that is the read-side blast-radius reduction.
90
+ *
91
+ * It lives beside the declaration, so it applies wherever a grant is built,
92
+ * rather than only at whichever mint the callers happen to share. The server
93
+ * applies it again at the mint chokepoint for callers that post raw JSON; the
94
+ * function is idempotent, so the second application is a no-op.
95
+ */
96
+ export function expandReadYourWrites(operations) {
97
+ const out = new Set(operations);
98
+ for (const op of operations) {
99
+ const [model] = op.split('.');
100
+ if (model)
101
+ out.add(`${model}.read`);
102
+ }
103
+ return [...out];
104
+ }
105
+ /**
106
+ * Schema key → the wire name a grant must be minted with.
107
+ *
108
+ * THE derivation. A model whose type name is overridden — schema key
109
+ * `documents`, type name `Document` — has to mint `document.update`, not
110
+ * `documents.update`, and a caller who works that out by hand gets it wrong
111
+ * once and learns at `capability_scope_denied`. Callers pass their schema's
112
+ * models, never a map they assembled themselves.
113
+ */
114
+ export function modelWireNames(models) {
115
+ return Object.fromEntries(Object.entries(models).map(([key, def]) => [key, def.typename ?? key]));
116
+ }
117
+ /**
118
+ * Every name the enforcement gates accept for a model, lowercased. Three
119
+ * vocabularies name one logical model — the wire type name (`lineitem`), the
120
+ * schema key (`lineItems`), and the table name (`line_items`) — so a grant
121
+ * minted in any of them is honored, and the mint can tell a real model from a
122
+ * typo without guessing which vocabulary the caller used.
123
+ */
124
+ export function capabilityModelAliases(models) {
125
+ const aliases = new Set();
126
+ for (const [key, def] of Object.entries(models)) {
127
+ aliases.add(key.toLowerCase());
128
+ if (def.typename)
129
+ aliases.add(def.typename.toLowerCase());
130
+ if (def.tableName)
131
+ aliases.add(def.tableName.toLowerCase());
132
+ }
133
+ return aliases;
134
+ }
135
+ /**
136
+ * The granted operations whose model half names nothing in the schema.
137
+ *
138
+ * A grant is checked against the schema at MINT, the way a write to an unpushed
139
+ * model already fails with `server_execute_unknown_model` — so a typo in
140
+ * `lineitem.update` is a rejected mint rather than a credential that looks
141
+ * healthy and is denied on its first write. Without this the `model` half is a
142
+ * hole: an opaque string nothing validates until enforcement time.
143
+ */
144
+ export function unresolvableOperations(operations, aliases) {
145
+ // The model half holds no dot (see `grantedOperationSchema`), so the first
146
+ // separator is the only one.
147
+ return operations.filter((op) => !aliases.has(op.slice(0, op.indexOf('.'))));
148
+ }
149
+ /**
150
+ * Serializes a declared `can` into the wire allowlist — the ONE translation
151
+ * from what a developer writes to what the server stores and enforces.
152
+ *
153
+ * `wireNames` comes from {@link modelWireNames} over the client's own schema.
154
+ * It is required rather than optional: an omitted map silently mints the schema
155
+ * key verbatim, which is right for most models and wrong for every model with
156
+ * a type-name override — the kind of default that is correct until it isn't.
157
+ */
158
+ export function grantedOperations(can, wireNames) {
159
+ const declared = Object.entries(can).flatMap(([model, ops]) => {
160
+ const wireName = (wireNames[model] ?? model).toLowerCase();
161
+ return (ops ?? []).map((op) => `${wireName}.${op}`);
162
+ });
163
+ return expandReadYourWrites(declared);
164
+ }
165
+ /**
166
+ * The grant at rest: what the credential ended up with, on both axes, plus the
167
+ * participant it acts as. The mint echoes this block, the key row stores it,
168
+ * and the gates read it — so a session's reported scope and its enforced scope
169
+ * are the same shape by construction.
170
+ */
171
+ export const capabilityScopeSchema = z.object({
172
+ organizationId: z.string().min(1),
173
+ /**
174
+ * The ROW axis — which sync groups this credential may act within. Read back
175
+ * as plain strings rather than the branded form the request enforces: this is
176
+ * what the key row already holds, including rows minted before that gate.
177
+ */
178
+ syncGroups: z.array(z.string()),
179
+ /** The VERB axis — the allowlist as minted, after read-your-writes. */
180
+ operations: z.array(grantedOperationSchema),
181
+ participantKind: participantKindSchema,
182
+ participantId: z.string().min(1),
183
+ });
184
+ /**
185
+ * What `POST /v1/capabilities` answers with — **201**, the credential is minted.
186
+ *
187
+ * This is the first call any non-TypeScript client makes, and until it had a
188
+ * schema the published contract described it as `{ type: 'object' }`: a caller
189
+ * working from the reference could see that a capability could be minted and
190
+ * not where the token was in the reply.
191
+ *
192
+ * `scope` echoes what was MINTED, not what was asked. A `wideScope` mint stores
193
+ * the org-wide default and read-your-writes widens the verb axis, so a client
194
+ * that assumed its request came back verbatim would report a scope narrower
195
+ * than the one being enforced.
196
+ *
197
+ * `userMeta` is the caller's own blob, echoed. Ablo has no view into their user
198
+ * directory — the API key is what is trusted — so this is deliberately open.
199
+ */
200
+ export const capabilityMintResponseSchema = z.object({
201
+ capabilityId: z.string().min(1),
202
+ token: authTokenSchema,
203
+ expiresAt: z.iso.datetime(),
204
+ organizationId: z.string().min(1),
205
+ scope: capabilityScopeSchema,
206
+ userMeta: z.record(z.string(), z.unknown()),
207
+ });
208
+ /**
209
+ * `POST /v1/capabilities` — mint a capability for a participant.
210
+ *
211
+ * Where an ephemeral key is a session for a person, a capability is a scoped,
212
+ * revocable grant for an agent or a system. Narrow by default: an agent or
213
+ * system capability must name its `operations` unless the caller explicitly
214
+ * asks for `wideScope`, which is itself privileged.
215
+ *
216
+ * This is the parsed body — the mint route validates against it rather than
217
+ * reading fields one at a time, so the shape and the validation rules cannot
218
+ * drift from each other or from the published contract.
219
+ */
220
+ export const capabilityRequestSchema = z.object({
221
+ participantKind: participantKindSchema,
222
+ participantId: z.string().min(1).optional(),
223
+ /**
224
+ * Mint into another organization. Reserved for a platform secret carrying
225
+ * `ephemeral:mint-any-org`; ordinary tenant keys may omit only.
226
+ */
227
+ organizationId: z.string().min(1).optional(),
228
+ /**
229
+ * The ROW axis. Validated as the engine's branded sync-group form
230
+ * (`default` or `<namespace>:<id>`): a malformed group stored on the key row
231
+ * would subscribe the connection to NOTHING and fail silently at fan-out
232
+ * time, so it is rejected loudly at the boundary.
233
+ */
234
+ syncGroups: z.array(syncGroupInputSchema).readonly().optional(),
235
+ /** The VERB axis, as `model.verb` — e.g. `tasks.update`. */
236
+ operations: z.array(grantedOperationSchema).readonly().optional(),
237
+ ttlSeconds: z.number().int().positive(),
238
+ label: z.string().min(1).optional(),
239
+ /**
240
+ * Opt out of narrow-by-default scoping. Without it, agent and system
241
+ * capabilities require non-empty `operations`; with it, the caller must
242
+ * additionally hold an admin/owner role or present a secret key.
243
+ */
244
+ wideScope: z.boolean().optional(),
245
+ /**
246
+ * Caller-attested identity for the end user this capability acts for — the
247
+ * on-behalf-of pattern. Ablo does not validate it and has no view into the
248
+ * caller's user directory; the API key is what is trusted, and this blob is
249
+ * echoed back to the client.
250
+ */
251
+ userMeta: z.record(z.string(), z.unknown()).optional(),
252
+ });
253
+ //# sourceMappingURL=capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/auth/capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import type { RotateSessionParams, SessionRevocation, SessionRotation } from '../resources/httpResources.js';
3
+ export declare const sessionRevocationResponseSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ deleted: z.ZodLiteral<true>;
6
+ activeSessionsClosed: z.ZodNumber;
7
+ }, z.core.$strip>;
8
+ export declare const capabilityRotationRequestSchema: z.ZodObject<{
9
+ graceSeconds: z.ZodOptional<z.ZodNumber>;
10
+ ttlSeconds: z.ZodOptional<z.ZodNumber>;
11
+ }, z.core.$strip>;
12
+ export declare const capabilityRotationResponseSchema: z.ZodObject<{
13
+ capabilityId: z.ZodString;
14
+ token: z.ZodString;
15
+ expiresAt: z.ZodNullable<z.ZodISODateTime>;
16
+ organizationId: z.ZodString;
17
+ scope: z.ZodObject<{
18
+ organizationId: z.ZodString;
19
+ syncGroups: z.ZodArray<z.ZodString>;
20
+ operations: z.ZodArray<z.ZodTemplateLiteral<`${string}.update` | `${string}.create` | `${string}.delete` | `${string}.read`>>;
21
+ participantKind: z.ZodEnum<{
22
+ user: "user";
23
+ agent: "agent";
24
+ system: "system";
25
+ }>;
26
+ participantId: z.ZodString;
27
+ }, z.core.$strip>;
28
+ rotatedFrom: z.ZodObject<{
29
+ capabilityId: z.ZodString;
30
+ expiresAt: z.ZodISODateTime;
31
+ }, z.core.$strip>;
32
+ }, z.core.$strip>;
33
+ interface CapabilityLifecycleContext {
34
+ readonly apiKey: string;
35
+ readonly baseUrl: string;
36
+ readonly fetch?: typeof fetch;
37
+ readonly timeoutMs?: number;
38
+ }
39
+ export interface RevokeCapabilityRequest extends CapabilityLifecycleContext {
40
+ readonly id: string;
41
+ }
42
+ export interface RotateCapabilityRequest extends CapabilityLifecycleContext, RotateSessionParams {
43
+ }
44
+ export declare function revokeCapability(options: RevokeCapabilityRequest): Promise<SessionRevocation>;
45
+ export declare function rotateCapability(options: RotateCapabilityRequest): Promise<SessionRotation>;
46
+ export {};
47
+ //# sourceMappingURL=capabilityLifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilityLifecycle.d.ts","sourceRoot":"","sources":["../../src/auth/capabilityLifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAChB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,+BAA+B;;;;iBAI1C,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;iBAG1C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;iBAU3C,CAAC;AAEH,UAAU,0BAA0B;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,0BAA0B;IACzE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBACf,SAAQ,0BAA0B,EAChC,mBAAmB;CAAG;AAwE1B,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAiC1B"}