@keboola/api-client 31.0.0 → 33.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/AGENTS.md +91 -7
  2. package/API-SURFACE.md +5 -2
  3. package/CHANGELOG.md +327 -0
  4. package/README.md +45 -19
  5. package/dist/{ManagementClientAuthError-DFhi5yxe.cjs → ManagementClientAuthError-DqeXL8nv.cjs} +2 -2
  6. package/dist/{ManagementClientAuthError-DFhi5yxe.cjs.map → ManagementClientAuthError-DqeXL8nv.cjs.map} +1 -1
  7. package/dist/{ManagementClientAuthError-90pvsej0.js → ManagementClientAuthError-iKbBugKC.js} +2 -2
  8. package/dist/{ManagementClientAuthError-90pvsej0.js.map → ManagementClientAuthError-iKbBugKC.js.map} +1 -1
  9. package/dist/ai/index.cjs +2 -2
  10. package/dist/ai/index.d.cts +2 -2
  11. package/dist/ai/index.d.ts +2 -2
  12. package/dist/ai/index.js +2 -2
  13. package/dist/ai/types.d.cts +1 -1
  14. package/dist/ai/types.d.ts +1 -1
  15. package/dist/{appLogs-CLHhkQJn.js → appLogs-D72eD8vP.js} +2 -2
  16. package/dist/{appLogs-CLHhkQJn.js.map → appLogs-D72eD8vP.js.map} +1 -1
  17. package/dist/{appLogs-BCCi02w6.cjs → appLogs-D8K0VeNM.cjs} +2 -2
  18. package/dist/{appLogs-BCCi02w6.cjs.map → appLogs-D8K0VeNM.cjs.map} +1 -1
  19. package/dist/{appLogs-hQdKt_8J.d.cts → appLogs-Q4A7A_Fc.d.cts} +2 -2
  20. package/dist/{appLogs-BdMG6Cvn.d.ts → appLogs-u0XMZLjS.d.ts} +2 -2
  21. package/dist/apps/index.cjs +3 -3
  22. package/dist/apps/index.d.cts +3 -3
  23. package/dist/apps/index.d.ts +3 -3
  24. package/dist/apps/index.js +3 -3
  25. package/dist/apps/types.d.cts +2 -2
  26. package/dist/apps/types.d.ts +2 -2
  27. package/dist/assets/index.cjs +1 -1
  28. package/dist/assets/index.d.cts +1 -1
  29. package/dist/assets/index.d.ts +1 -1
  30. package/dist/assets/index.js +1 -1
  31. package/dist/auth/index.cjs +1 -1
  32. package/dist/auth/index.d.cts +1 -1
  33. package/dist/auth/index.d.ts +1 -1
  34. package/dist/auth/index.js +1 -1
  35. package/dist/auth/types.d.cts +2 -2
  36. package/dist/auth/types.d.ts +2 -2
  37. package/dist/{auth-DmgTH0uY.cjs → auth-C2_JLisH.cjs} +2 -2
  38. package/dist/{auth-DmgTH0uY.cjs.map → auth-C2_JLisH.cjs.map} +1 -1
  39. package/dist/{auth-CE6Hlc9W.js → auth-CE9rQV3-.js} +2 -2
  40. package/dist/{auth-CE6Hlc9W.js.map → auth-CE9rQV3-.js.map} +1 -1
  41. package/dist/{authClient-XBAUz9g-.js → authClient-DEyqR7GW.js} +43 -9
  42. package/dist/authClient-DEyqR7GW.js.map +1 -0
  43. package/dist/{authClient-BL6h78Q1.d.cts → authClient-DZ_8lvdJ.d.cts} +6 -6
  44. package/dist/{authClient-Bc_bDisO.d.ts → authClient-DwT6xdg5.d.ts} +6 -6
  45. package/dist/{authClient-Cixa8_L1.cjs → authClient-IwQ9Ti0J.cjs} +43 -9
  46. package/dist/authClient-IwQ9Ti0J.cjs.map +1 -0
  47. package/dist/chat/index.cjs +3 -3
  48. package/dist/chat/index.d.cts +2 -7
  49. package/dist/chat/index.d.ts +2 -7
  50. package/dist/chat/index.js +3 -3
  51. package/dist/chat/types.d.cts +1 -1
  52. package/dist/chat/types.d.ts +1 -1
  53. package/dist/{configurations-CujCwDcB.cjs → configurations-Ck-mNB_E.cjs} +2 -2
  54. package/dist/{configurations-CujCwDcB.cjs.map → configurations-Ck-mNB_E.cjs.map} +1 -1
  55. package/dist/{configurations-DCOJONZZ.cjs → configurations-CqwAxiQL.cjs} +5 -1
  56. package/dist/configurations-CqwAxiQL.cjs.map +1 -0
  57. package/dist/{configurations-Byt59bIa.js → configurations-ZwBXilW-.js} +2 -2
  58. package/dist/{configurations-Byt59bIa.js.map → configurations-ZwBXilW-.js.map} +1 -1
  59. package/dist/{configurations-iCbhe0tb.js → configurations-d7SZmw69.js} +5 -1
  60. package/dist/configurations-d7SZmw69.js.map +1 -0
  61. package/dist/constants/index.cjs +2 -1
  62. package/dist/constants/index.d.cts +3 -2
  63. package/dist/constants/index.d.ts +3 -2
  64. package/dist/constants/index.js +2 -2
  65. package/dist/{constants-qeWGfk_7.js → constants-ByEwVtGf.js} +38 -2
  66. package/dist/constants-ByEwVtGf.js.map +1 -0
  67. package/dist/{constants-CkAVvuUq.cjs → constants-lIfSdTzS.cjs} +43 -1
  68. package/dist/constants-lIfSdTzS.cjs.map +1 -0
  69. package/dist/{createFetchClient-B1h3-p65.js → createFetchClient-DdyZMhxO.js} +17 -11
  70. package/dist/createFetchClient-DdyZMhxO.js.map +1 -0
  71. package/dist/{createFetchClient-B9Cv0W9f.cjs → createFetchClient-DvZvD31l.cjs} +22 -10
  72. package/dist/createFetchClient-DvZvD31l.cjs.map +1 -0
  73. package/dist/{createGenericFetchClient-DhpvUSlX.js → createGenericFetchClient-MQeLRiNW.js} +2 -2
  74. package/dist/{createGenericFetchClient-DhpvUSlX.js.map → createGenericFetchClient-MQeLRiNW.js.map} +1 -1
  75. package/dist/{createGenericFetchClient-BWoSkTki.cjs → createGenericFetchClient-qfCZlCTv.cjs} +2 -2
  76. package/dist/{createGenericFetchClient-BWoSkTki.cjs.map → createGenericFetchClient-qfCZlCTv.cjs.map} +1 -1
  77. package/dist/{createOpenapiFetchClient-yirrW6Tg.cjs → createOpenapiFetchClient-C57Ljzi6.cjs} +2 -2
  78. package/dist/{createOpenapiFetchClient-yirrW6Tg.cjs.map → createOpenapiFetchClient-C57Ljzi6.cjs.map} +1 -1
  79. package/dist/{createOpenapiFetchClient-0_oqhdPv.js → createOpenapiFetchClient-E7OIVkYv.js} +2 -2
  80. package/dist/{createOpenapiFetchClient-0_oqhdPv.js.map → createOpenapiFetchClient-E7OIVkYv.js.map} +1 -1
  81. package/dist/{credential-dKxArMic.js → credential-Bxv7yxOZ.js} +7 -4
  82. package/dist/credential-Bxv7yxOZ.js.map +1 -0
  83. package/dist/{credential-D-tX9gP4.cjs → credential-D-X5QQrM.cjs} +7 -4
  84. package/dist/credential-D-X5QQrM.cjs.map +1 -0
  85. package/dist/dataScience/index.cjs +2 -2
  86. package/dist/dataScience/index.d.cts +2 -2
  87. package/dist/dataScience/index.d.ts +2 -2
  88. package/dist/dataScience/index.js +2 -2
  89. package/dist/dataScience/types.d.cts +2 -2
  90. package/dist/dataScience/types.d.ts +2 -2
  91. package/dist/{dataScience-BqNWX-Gr.cjs → dataScience-BPW993AG.cjs} +5 -5
  92. package/dist/{dataScience-BqNWX-Gr.cjs.map → dataScience-BPW993AG.cjs.map} +1 -1
  93. package/dist/{dataScience-jdbSSPYF.js → dataScience-B_TA7wCB.js} +5 -5
  94. package/dist/{dataScience-jdbSSPYF.js.map → dataScience-B_TA7wCB.js.map} +1 -1
  95. package/dist/developerPortal/index.cjs +1 -1
  96. package/dist/developerPortal/index.d.cts +2 -2
  97. package/dist/developerPortal/index.d.ts +2 -2
  98. package/dist/developerPortal/index.js +1 -1
  99. package/dist/developerPortal/types.d.cts +1 -1
  100. package/dist/developerPortal/types.d.ts +1 -1
  101. package/dist/{developerPortalClient-B7lNR5q0.cjs → developerPortalClient-Db2XVB_o.cjs} +3 -3
  102. package/dist/{developerPortalClient-B7lNR5q0.cjs.map → developerPortalClient-Db2XVB_o.cjs.map} +1 -1
  103. package/dist/{developerPortalClient-5ABcxz1U.js → developerPortalClient-jk46sjwP.js} +3 -3
  104. package/dist/{developerPortalClient-5ABcxz1U.js.map → developerPortalClient-jk46sjwP.js.map} +1 -1
  105. package/dist/domain/permissions/index.cjs +63 -1
  106. package/dist/domain/permissions/index.cjs.map +1 -0
  107. package/dist/domain/permissions/index.d.cts +52 -3
  108. package/dist/domain/permissions/index.d.ts +52 -3
  109. package/dist/domain/permissions/index.js +59 -2
  110. package/dist/domain/permissions/index.js.map +1 -0
  111. package/dist/editor/index.cjs +2 -2
  112. package/dist/editor/index.d.cts +2 -2
  113. package/dist/editor/index.d.ts +2 -2
  114. package/dist/editor/index.js +2 -2
  115. package/dist/editor/types.d.cts +1 -1
  116. package/dist/editor/types.d.ts +1 -1
  117. package/dist/emitter-dLF1Fyfg.d.cts +11 -0
  118. package/dist/emitter-dLF1Fyfg.d.ts +11 -0
  119. package/dist/encryption/index.cjs +1 -1
  120. package/dist/encryption/index.d.cts +1 -1
  121. package/dist/encryption/index.d.ts +1 -1
  122. package/dist/encryption/index.js +1 -1
  123. package/dist/encryption/types.d.cts +1 -1
  124. package/dist/encryption/types.d.ts +1 -1
  125. package/dist/import/index.cjs +1 -1
  126. package/dist/import/index.d.cts +3 -3
  127. package/dist/import/index.d.ts +3 -3
  128. package/dist/import/index.js +1 -1
  129. package/dist/{import-CExRbskw.js → import-2nqxQ9Rt.js} +3 -3
  130. package/dist/{import-CExRbskw.js.map → import-2nqxQ9Rt.js.map} +1 -1
  131. package/dist/{import-CXHppAxd.cjs → import-DJilJ6tq.cjs} +3 -3
  132. package/dist/{import-CXHppAxd.cjs.map → import-DJilJ6tq.cjs.map} +1 -1
  133. package/dist/{index-BR2Fu-Wo.d.ts → index-B0V1pJAa.d.ts} +618 -3103
  134. package/dist/{index-7RvXnXmd.d.ts → index-B2OGaUap.d.ts} +6 -6
  135. package/dist/{index-J1I2HlSm.d.ts → index-BjKjp3Rf.d.ts} +5 -5
  136. package/dist/{index-NicJZIzu.d.ts → index-C7gxKoDF.d.cts} +3 -3
  137. package/dist/{index-B6q7HxKJ.d.cts → index-CTd4YY8e.d.cts} +4 -4
  138. package/dist/{index-C9mAoXF6.d.cts → index-CUXEFQ7i.d.cts} +6 -6
  139. package/dist/{index-D_TnbEtp.d.cts → index-CVqk63at.d.ts} +3 -3
  140. package/dist/{index-CMb0ygwb.d.ts → index-C_cxKL1V.d.ts} +3 -3
  141. package/dist/{index-CYMAwD3E.d.ts → index-ChMtULt4.d.ts} +4 -4
  142. package/dist/{index-Cpjh05sx.d.cts → index-DCN2lH0v.d.cts} +4 -4
  143. package/dist/{index-cu8THqZV.d.cts → index-DIVvL54G.d.cts} +618 -3103
  144. package/dist/{index-CwJE18PJ.d.cts → index-DLYAvSWZ.d.cts} +3 -3
  145. package/dist/{index-CW4VC9oN.d.ts → index-DQef014j.d.ts} +4 -4
  146. package/dist/{index-Ds8e0l7-.d.ts → index-DVhTNwvu.d.ts} +7 -3
  147. package/dist/{index-B-frWtGW.d.cts → index-DhVFuQDv.d.cts} +7 -3
  148. package/dist/{index-DeMDxHTz.d.ts → index-GNKwr7EQ.d.ts} +4 -4
  149. package/dist/{index--pxLseaw.d.cts → index-NaYLwG_h.d.cts} +143 -2
  150. package/dist/{index--pxLseaw.d.ts → index-NaYLwG_h.d.ts} +143 -2
  151. package/dist/{index-Daks5CeX.d.ts → index-bB6wvw1f.d.ts} +4 -4
  152. package/dist/{index-BfVv8isU.d.cts → index-exNi3I2Q.d.cts} +4 -4
  153. package/dist/{index-CR9LsDaG.d.cts → index-qOK5FtAH.d.cts} +4 -4
  154. package/dist/{index-BSjfVDTr.d.cts → index-t-a7kYnx.d.cts} +5 -5
  155. package/dist/index.cjs +325 -257
  156. package/dist/index.cjs.map +1 -1
  157. package/dist/index.d.cts +7 -6
  158. package/dist/index.d.ts +7 -6
  159. package/dist/index.js +306 -240
  160. package/dist/index.js.map +1 -1
  161. package/dist/{jobStatus-kQ9JqF8t.cjs → jobStatus-0_Y3Sr4i.cjs} +37 -20
  162. package/dist/jobStatus-0_Y3Sr4i.cjs.map +1 -0
  163. package/dist/{jobStatus-DbMupQEK.js → jobStatus-PSZJMTiA.js} +35 -18
  164. package/dist/jobStatus-PSZJMTiA.js.map +1 -0
  165. package/dist/kaiAgent/index.cjs +3 -0
  166. package/dist/kaiAgent/index.d.cts +2 -0
  167. package/dist/kaiAgent/index.d.ts +2 -0
  168. package/dist/kaiAgent/index.js +2 -0
  169. package/dist/kaiAgent/types.cjs +0 -0
  170. package/dist/kaiAgent/types.d.cts +2 -0
  171. package/dist/kaiAgent/types.d.ts +2 -0
  172. package/dist/kaiAgent/types.js +1 -0
  173. package/dist/kaiAgent-CMVub6Sc.cjs +266 -0
  174. package/dist/kaiAgent-CMVub6Sc.cjs.map +1 -0
  175. package/dist/kaiAgent-CYYn0QJW.js +261 -0
  176. package/dist/kaiAgent-CYYn0QJW.js.map +1 -0
  177. package/dist/kaiAgentClient-B2O0DF4d.d.ts +249 -0
  178. package/dist/kaiAgentClient-iCFR2tRU.d.cts +249 -0
  179. package/dist/management/index.cjs +1 -1
  180. package/dist/management/index.d.cts +1 -1
  181. package/dist/management/index.d.ts +1 -1
  182. package/dist/management/index.js +1 -1
  183. package/dist/management/types.d.cts +1 -1
  184. package/dist/management/types.d.ts +1 -1
  185. package/dist/{management-DlVdxzPw.cjs → management-DGfgKsaA.cjs} +5 -5
  186. package/dist/{management-DlVdxzPw.cjs.map → management-DGfgKsaA.cjs.map} +1 -1
  187. package/dist/{management-Cc8mKfnf.js → management-DNEKhR6a.js} +5 -5
  188. package/dist/{management-Cc8mKfnf.js.map → management-DNEKhR6a.js.map} +1 -1
  189. package/dist/metastore/index.cjs +1 -1
  190. package/dist/metastore/index.d.cts +1 -1
  191. package/dist/metastore/index.d.ts +1 -1
  192. package/dist/metastore/index.js +1 -1
  193. package/dist/metastore/types.d.cts +1 -1
  194. package/dist/metastore/types.d.ts +1 -1
  195. package/dist/{metastore-CNf1412Z.js → metastore-CjwktHvw.js} +4 -4
  196. package/dist/{metastore-CNf1412Z.js.map → metastore-CjwktHvw.js.map} +1 -1
  197. package/dist/{metastore-DbsxqjhS.cjs → metastore-DksEte8P.cjs} +4 -4
  198. package/dist/{metastore-DbsxqjhS.cjs.map → metastore-DksEte8P.cjs.map} +1 -1
  199. package/dist/microsoftGraph/index.cjs +92 -0
  200. package/dist/microsoftGraph/index.cjs.map +1 -0
  201. package/dist/microsoftGraph/index.d.cts +305 -0
  202. package/dist/microsoftGraph/index.d.ts +305 -0
  203. package/dist/microsoftGraph/index.js +90 -0
  204. package/dist/microsoftGraph/index.js.map +1 -0
  205. package/dist/microsoftGraph/types.cjs +0 -0
  206. package/dist/microsoftGraph/types.d.cts +10 -0
  207. package/dist/microsoftGraph/types.d.ts +10 -0
  208. package/dist/microsoftGraph/types.js +1 -0
  209. package/dist/notifications/index.cjs +3 -3
  210. package/dist/notifications/index.d.cts +2 -2
  211. package/dist/notifications/index.d.ts +2 -2
  212. package/dist/notifications/index.js +3 -3
  213. package/dist/notifications/types.d.cts +1 -1
  214. package/dist/notifications/types.d.ts +1 -1
  215. package/dist/oauth/index.cjs +1 -1
  216. package/dist/oauth/index.d.cts +2 -2
  217. package/dist/oauth/index.d.ts +2 -2
  218. package/dist/oauth/index.js +1 -1
  219. package/dist/oauth/types.d.cts +1 -1
  220. package/dist/oauth/types.d.ts +1 -1
  221. package/dist/{oauth-ClksaYRY.js → oauth-Bg5zro5S.js} +5 -5
  222. package/dist/{oauth-ClksaYRY.js.map → oauth-Bg5zro5S.js.map} +1 -1
  223. package/dist/{oauth-DsZgmtPj.cjs → oauth-DFsI1TE5.cjs} +5 -5
  224. package/dist/{oauth-DsZgmtPj.cjs.map → oauth-DFsI1TE5.cjs.map} +1 -1
  225. package/dist/omnisearch/index.cjs +2 -2
  226. package/dist/omnisearch/index.d.cts +2 -2
  227. package/dist/omnisearch/index.d.ts +2 -2
  228. package/dist/omnisearch/index.js +2 -2
  229. package/dist/omnisearch/types.d.cts +1 -1
  230. package/dist/omnisearch/types.d.ts +1 -1
  231. package/dist/{project-5SLw86eZ.d.ts → project-Bh954iOA.d.ts} +2 -2
  232. package/dist/{project-CRrsxSAK.d.cts → project-D25GH8zK.d.cts} +2 -2
  233. package/dist/queryService/index.cjs +1 -1
  234. package/dist/queryService/index.d.cts +1 -1
  235. package/dist/queryService/index.d.ts +1 -1
  236. package/dist/queryService/index.js +1 -1
  237. package/dist/queryService/types.d.cts +1 -1
  238. package/dist/queryService/types.d.ts +1 -1
  239. package/dist/{queryService-DxUUkTcy.cjs → queryService--t_W9PSJ.cjs} +6 -6
  240. package/dist/{queryService-DxUUkTcy.cjs.map → queryService--t_W9PSJ.cjs.map} +1 -1
  241. package/dist/{queryService-BlyAcBxP.js → queryService-DX6zeAs_.js} +6 -6
  242. package/dist/{queryService-BlyAcBxP.js.map → queryService-DX6zeAs_.js.map} +1 -1
  243. package/dist/queue/index.cjs +1 -1
  244. package/dist/queue/index.d.cts +3 -3
  245. package/dist/queue/index.d.ts +3 -3
  246. package/dist/queue/index.js +1 -1
  247. package/dist/queue/types.d.cts +1 -1
  248. package/dist/queue/types.d.ts +1 -1
  249. package/dist/{queue-CpcqeMPz.cjs → queue-D1_TCe0z.cjs} +5 -5
  250. package/dist/{queue-CpcqeMPz.cjs.map → queue-D1_TCe0z.cjs.map} +1 -1
  251. package/dist/{queue-DpZTm7U7.js → queue-DrLUbk98.js} +5 -5
  252. package/dist/{queue-DpZTm7U7.js.map → queue-DrLUbk98.js.map} +1 -1
  253. package/dist/scheduler/index.cjs +3 -3
  254. package/dist/scheduler/index.d.cts +2 -2
  255. package/dist/scheduler/index.d.ts +2 -2
  256. package/dist/scheduler/index.js +3 -3
  257. package/dist/scheduler/types.d.cts +1 -1
  258. package/dist/scheduler/types.d.ts +1 -1
  259. package/dist/schema-D1oxyn1O.d.cts +8760 -0
  260. package/dist/schema-D1oxyn1O.d.ts +8760 -0
  261. package/dist/sdk/configurations/index.cjs +1 -1
  262. package/dist/sdk/configurations/index.d.cts +4 -4
  263. package/dist/sdk/configurations/index.d.ts +4 -4
  264. package/dist/sdk/configurations/index.js +1 -1
  265. package/dist/sdk/developerPortal/index.cjs +5 -5
  266. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  267. package/dist/sdk/developerPortal/index.d.cts +5 -4
  268. package/dist/sdk/developerPortal/index.d.ts +5 -4
  269. package/dist/sdk/developerPortal/index.js +4 -4
  270. package/dist/sdk/queryService/index.cjs +1 -1
  271. package/dist/sdk/queryService/index.d.cts +1 -1
  272. package/dist/sdk/queryService/index.d.ts +1 -1
  273. package/dist/sdk/queryService/index.js +1 -1
  274. package/dist/sdk/semanticLayer/index.cjs +163 -74
  275. package/dist/sdk/semanticLayer/index.cjs.map +1 -1
  276. package/dist/sdk/semanticLayer/index.d.cts +16 -13
  277. package/dist/sdk/semanticLayer/index.d.ts +16 -13
  278. package/dist/sdk/semanticLayer/index.js +158 -75
  279. package/dist/sdk/semanticLayer/index.js.map +1 -1
  280. package/dist/sdk/semanticLayer/types.d.cts +2 -2
  281. package/dist/sdk/semanticLayer/types.d.ts +2 -2
  282. package/dist/sdk/storage/index.d.cts +1 -1
  283. package/dist/sdk/storage/index.d.ts +1 -1
  284. package/dist/sdk/tag/index.d.cts +2 -2
  285. package/dist/sdk/tag/index.d.ts +2 -2
  286. package/dist/sdk/tag/types.d.cts +1 -1
  287. package/dist/sdk/tag/types.d.ts +1 -1
  288. package/dist/sdk/vault/index.d.cts +1 -1
  289. package/dist/sdk/vault/index.d.ts +1 -1
  290. package/dist/serviceIds-fHLDwOg9.d.cts +31 -0
  291. package/dist/serviceIds-fHLDwOg9.d.ts +31 -0
  292. package/dist/status/index.cjs +1 -1
  293. package/dist/status/index.d.cts +1 -1
  294. package/dist/status/index.d.ts +1 -1
  295. package/dist/status/index.js +1 -1
  296. package/dist/storage/index.cjs +4 -4
  297. package/dist/storage/index.d.cts +2 -2
  298. package/dist/storage/index.d.ts +2 -2
  299. package/dist/storage/index.js +4 -4
  300. package/dist/storage/types.d.cts +4 -3
  301. package/dist/storage/types.d.ts +4 -3
  302. package/dist/{storage-CQxu0EY3.js → storage--cVaecFq.js} +150 -161
  303. package/dist/storage--cVaecFq.js.map +1 -0
  304. package/dist/{storage-vnH64B_Q.cjs → storage-DexWot8H.cjs} +150 -161
  305. package/dist/storage-DexWot8H.cjs.map +1 -0
  306. package/dist/store-C9FQCHGe.js +74 -0
  307. package/dist/store-C9FQCHGe.js.map +1 -0
  308. package/dist/store-xS-Cu_VS.cjs +85 -0
  309. package/dist/store-xS-Cu_VS.cjs.map +1 -0
  310. package/dist/stream/index.cjs +3 -3
  311. package/dist/stream/index.d.cts +2 -2
  312. package/dist/stream/index.d.ts +2 -2
  313. package/dist/stream/index.js +3 -3
  314. package/dist/stream/types.d.cts +1 -1
  315. package/dist/stream/types.d.ts +1 -1
  316. package/dist/syncActions/index.cjs +1 -1
  317. package/dist/syncActions/index.d.cts +1 -1
  318. package/dist/syncActions/index.d.ts +1 -1
  319. package/dist/syncActions/index.js +1 -1
  320. package/dist/syncActions/types.d.cts +1 -1
  321. package/dist/syncActions/types.d.ts +1 -1
  322. package/dist/{syncActions-AgFiMjRS.js → syncActions-CkMHM-jB.js} +5 -5
  323. package/dist/{syncActions-AgFiMjRS.js.map → syncActions-CkMHM-jB.js.map} +1 -1
  324. package/dist/{syncActions-DPcAPYgJ.cjs → syncActions-DQq_A9v6.cjs} +5 -5
  325. package/dist/{syncActions-DPcAPYgJ.cjs.map → syncActions-DQq_A9v6.cjs.map} +1 -1
  326. package/dist/telemetry/index.cjs +1 -1
  327. package/dist/telemetry/index.d.cts +2 -2
  328. package/dist/telemetry/index.d.ts +2 -2
  329. package/dist/telemetry/index.js +1 -1
  330. package/dist/{telemetry-BLgaYEvi.cjs → telemetry-CAu1Qt7B.cjs} +3 -3
  331. package/dist/{telemetry-BLgaYEvi.cjs.map → telemetry-CAu1Qt7B.cjs.map} +1 -1
  332. package/dist/{telemetry-CPiGWpLi.js → telemetry-Ca6j0i9w.js} +3 -3
  333. package/dist/{telemetry-CPiGWpLi.js.map → telemetry-Ca6j0i9w.js.map} +1 -1
  334. package/dist/{types-eP06LqcE.d.cts → types-0xa_7cgo.d.cts} +2 -16
  335. package/dist/{types-DLazCdFR.d.cts → types-3p0adMdd.d.cts} +3 -3
  336. package/dist/{types-DWUd__fe.d.ts → types-6ThDkaJw.d.ts} +2 -2
  337. package/dist/{types-Culr5v8R.d.ts → types-6hh_3SZs.d.ts} +3 -3
  338. package/dist/{types-DN7RWWBw.d.ts → types-6ku2LeX6.d.ts} +2 -2
  339. package/dist/{types-DSBNqF1J.d.cts → types-B42HhyB0.d.cts} +2 -2
  340. package/dist/{types-C2p7JYQ3.d.cts → types-B4_MM5Wf.d.cts} +2 -2
  341. package/dist/{types-B2El99VY.d.cts → types-B6JJCta-.d.cts} +2 -2
  342. package/dist/{types-BHCigZFc.d.ts → types-B6lOyHY_.d.ts} +3 -3
  343. package/dist/{types-Bc3-a3DT.d.cts → types-B7O5koJb.d.cts} +2 -2
  344. package/dist/{types-D5VvEdOv.d.ts → types-BHI8Lin9.d.ts} +2 -2
  345. package/dist/{types-DnOGCb-p.d.cts → types-BO3sCD0a.d.cts} +41 -10
  346. package/dist/{types-Bv5vw2dc.d.cts → types-BOnf68s5.d.cts} +2 -2
  347. package/dist/{types-CIybfUJ9.d.cts → types-BS5M67xm.d.cts} +3 -3
  348. package/dist/{types-C0bGZqFI.d.cts → types-BT46XIgn.d.cts} +2 -2
  349. package/dist/types-BUYqdN7B.d.ts +205 -0
  350. package/dist/{types-DdeZK3BO.d.ts → types-BYKHr5bR.d.ts} +2 -2
  351. package/dist/{types-BIAP4CYp.d.cts → types-Be3Wgn1U.d.cts} +2 -2
  352. package/dist/{types-B1S60aS2.d.ts → types-BgVKG4vg.d.ts} +2 -2
  353. package/dist/{types-BJLRgXw0.d.ts → types-C2gzqtjf.d.ts} +2 -2
  354. package/dist/{types-DQOOWgLt.d.cts → types-C35GWNmq.d.ts} +408 -24
  355. package/dist/{types-DMMMQuNt.d.ts → types-C4mr0lop.d.ts} +279 -430
  356. package/dist/{types-CFhAduFK.d.cts → types-CCr1-9Q6.d.cts} +3 -3
  357. package/dist/{types-Dirp9mni.d.ts → types-CHCM9oNk.d.ts} +3 -3
  358. package/dist/types-CNQdtffE.d.ts +3454 -0
  359. package/dist/{types-mXM8MrYS.d.cts → types-CPaluTW7.d.cts} +3 -3
  360. package/dist/{types-RmbvQimP.d.ts → types-CSc8NQCY.d.ts} +41 -10
  361. package/dist/{types-CgF9R0Na.d.ts → types-C_ilZZkQ.d.ts} +2 -2
  362. package/dist/{types-lVXf05pr.d.ts → types-CaMfshWX.d.ts} +2 -2
  363. package/dist/{types-BXnUqdBB.d.cts → types-Ccgbipp4.d.cts} +2 -2
  364. package/dist/types-Cpjk0-ta.d.ts +33557 -0
  365. package/dist/types-CrH4H8M4.d.cts +33557 -0
  366. package/dist/{types-CQd9PuKY.d.cts → types-Cu-0LT4f.d.cts} +2 -2
  367. package/dist/{types-D7YGPUsm.d.ts → types-CxmV36rp.d.cts} +408 -24
  368. package/dist/{types-SX78XZZ0.d.ts → types-D-98DirB.d.ts} +2 -2
  369. package/dist/{types-DG_FlLJt.d.cts → types-D6ocCyGh.d.cts} +279 -430
  370. package/dist/{types-DkoyCUqv.d.ts → types-D7Wgcp0u.d.ts} +2 -2
  371. package/dist/{types-COFrOmuO.d.ts → types-DAzmGzlb.d.ts} +2 -2
  372. package/dist/{types-BdKtW2Ml.d.cts → types-DHI0g51U.d.cts} +2 -2
  373. package/dist/{types-BMsK6T5k.d.ts → types-DHqIJKwx.d.ts} +2 -2
  374. package/dist/types-DONxb2-c.d.cts +205 -0
  375. package/dist/{types-DyIKgbGB.d.ts → types-DTTC70Ac.d.ts} +2 -2
  376. package/dist/{types-B2Al1BNh.d.ts → types-DlvZeert.d.ts} +2 -2
  377. package/dist/{types-uP64XthM.d.cts → types-DqniGeDJ.d.cts} +2 -2
  378. package/dist/types-E3VT-zYz.d.cts +3454 -0
  379. package/dist/{types-CuAoZH8w.d.cts → types-Jt0ipbSm.d.cts} +2 -2
  380. package/dist/{types-Co8WobOo.d.ts → types-Ur37iOqb.d.ts} +3 -3
  381. package/dist/{types-Drk7PEhk.d.ts → types-ZGAWRIBW.d.ts} +2 -2
  382. package/dist/{types-056giLrn.d.cts → types-bY6K3y0O.d.cts} +2 -2
  383. package/dist/{types-BvXODdf5.d.ts → types-k4R8gQ4U.d.ts} +2 -16
  384. package/dist/{types-sTH4KiPc.d.cts → types-sO52qIAA.d.cts} +2 -2
  385. package/dist/{types-By47HWwB.d.cts → types-sp1rJY9E.d.cts} +2 -2
  386. package/dist/{validateConnectionStatus-DVHXGTdi.cjs → validateConnectionStatus-24zqIQ0p.cjs} +2 -2
  387. package/dist/{validateConnectionStatus-DVHXGTdi.cjs.map → validateConnectionStatus-24zqIQ0p.cjs.map} +1 -1
  388. package/dist/{validateConnectionStatus-CBhXmvWC.js → validateConnectionStatus-DhkWg6Eq.js} +2 -2
  389. package/dist/{validateConnectionStatus-CBhXmvWC.js.map → validateConnectionStatus-DhkWg6Eq.js.map} +1 -1
  390. package/dist/vault/index.cjs +4 -4
  391. package/dist/vault/index.d.cts +1 -1
  392. package/dist/vault/index.d.ts +1 -1
  393. package/dist/vault/index.js +4 -4
  394. package/dist/vault/types.d.cts +1 -1
  395. package/dist/vault/types.d.ts +1 -1
  396. package/package.json +55 -3
  397. package/surface/auth.md +2 -2
  398. package/surface/chat.md +1 -1
  399. package/surface/kaiAgent.md +5 -2
  400. package/surface/sdk.md +4 -4
  401. package/surface/storage.md +44 -44
  402. package/dist/authClient-Cixa8_L1.cjs.map +0 -1
  403. package/dist/authClient-XBAUz9g-.js.map +0 -1
  404. package/dist/configurations-DCOJONZZ.cjs.map +0 -1
  405. package/dist/configurations-iCbhe0tb.js.map +0 -1
  406. package/dist/constants-CkAVvuUq.cjs.map +0 -1
  407. package/dist/constants-qeWGfk_7.js.map +0 -1
  408. package/dist/createFetchClient-B1h3-p65.js.map +0 -1
  409. package/dist/createFetchClient-B9Cv0W9f.cjs.map +0 -1
  410. package/dist/createStore-BNiCRQXa.js +0 -148
  411. package/dist/createStore-BNiCRQXa.js.map +0 -1
  412. package/dist/createStore-MQbboXcB.cjs +0 -177
  413. package/dist/createStore-MQbboXcB.cjs.map +0 -1
  414. package/dist/credential-D-tX9gP4.cjs.map +0 -1
  415. package/dist/credential-dKxArMic.js.map +0 -1
  416. package/dist/jobStatus-DbMupQEK.js.map +0 -1
  417. package/dist/jobStatus-kQ9JqF8t.cjs.map +0 -1
  418. package/dist/storage-CQxu0EY3.js.map +0 -1
  419. package/dist/storage-vnH64B_Q.cjs.map +0 -1
  420. package/dist/types-BV74LS5r.d.ts +0 -148
  421. package/dist/types-CIJAtX8q.d.cts +0 -18784
  422. package/dist/types-X-gQF8F8.d.ts +0 -18784
  423. package/dist/types-ca-YNg1r.d.cts +0 -148
@@ -1,5 +1,5 @@
1
- import { l as StorageToken } from "../../types-X-gQF8F8.js";
2
- import { n as hasAdminFeature, r as hasFeature } from "../../project-5SLw86eZ.js";
1
+ import { l as StorageToken } from "../../types-Cpjk0-ta.js";
2
+ import { n as hasAdminFeature, r as hasFeature } from "../../project-Bh954iOA.js";
3
3
  //#region src/domain/permissions/errors.d.ts
4
4
  /**
5
5
  * @module domain/permissions/errors
@@ -59,6 +59,10 @@ declare const isKnownAdminRole: (adminRole: string | null | undefined) => boolea
59
59
  * would admit each new one silently with no test failing. Takes the raw role
60
60
  * string so a caller holding an unparsed `tokens.verify()` response can use it
61
61
  * without fabricating a `StorageToken`. AI-3671.
62
+ *
63
+ * @see ./organization#canWriteKaiSpendCaps — spend caps (AI-3738) are
64
+ * organization-admin only and use that predicate; do not widen this one to
65
+ * cover them.
62
66
  */
63
67
  declare const isKaiSettingsWriterRole: (adminRole: string | null | undefined) => boolean;
64
68
  /**
@@ -74,6 +78,51 @@ declare const assertCanAdminOrShare: (token: StorageToken) => void;
74
78
  declare const assertCanProductionManage: (token: StorageToken) => void;
75
79
  declare const assertCanDevelopOrReview: (token: StorageToken) => void;
76
80
  //#endregion
81
+ //#region src/domain/permissions/organization.d.ts
82
+ /**
83
+ * The raw signal: is this token's admin a member of the organization owning
84
+ * the project?
85
+ *
86
+ * A limited (non-master) token never is — it carries no `admin` block at all
87
+ * despite the hand-authored type declaring it required (AI-3593), hence the
88
+ * optional chain and the `isMasterToken` requirement. Prefer
89
+ * `isOrganizationAdmin` for authorization decisions; this bare signal exists
90
+ * because a few kbc-ui call sites use it with no role conjunction (e.g.
91
+ * `privileges.ts`'s `canManageUsers`/`canUnlinkBucket`), and porting those must
92
+ * not change behaviour.
93
+ */
94
+ declare const isOrganizationMember: (token: StorageToken) => boolean;
95
+ /**
96
+ * May this token administer organization-owned settings on this project?
97
+ *
98
+ * `isOrganizationMember` AND `admin`/`share`. The conjunction — not the bare
99
+ * flag — is the shape kbc-ui already uses wherever org authority gates a
100
+ * project-level *write* (e.g. `privileges.ts`'s `canChangeUserRole` for the
101
+ * SHARE target). Keeping the conjunction means an org member holding a
102
+ * `readOnly` or `guest` token on this particular project still cannot write,
103
+ * matching every existing write-shaped call site.
104
+ */
105
+ declare const isOrganizationAdmin: (token: StorageToken) => boolean;
106
+ declare const assertCanAdministerOrganization: (token: StorageToken) => void;
107
+ /**
108
+ * Whether this token may write Kai's **spend caps** — the project cap, the
109
+ * default per-user limit, and per-user overrides (AI-3738).
110
+ *
111
+ * Strictly stricter than `canWriteKaiSettings` (`./admin`), and deliberately a
112
+ * distinct predicate rather than a widening of it. `canWriteKaiSettings` is
113
+ * `admin`/`share` — the authority to rewrite shared project *config* (a
114
+ * prompt-injection surface). Spend caps commit the organization's money across
115
+ * every project it owns, so per AI-3738 they are organization-admin only: a
116
+ * project admin sees which caps apply and cannot change them. A project whose
117
+ * own admin could raise its own cap has no cap.
118
+ *
119
+ * Lives here rather than beside `canWriteKaiSettings` in `admin.ts` because its
120
+ * rule is org-scoped and `admin.ts` is documented as depending purely on the
121
+ * project role string.
122
+ */
123
+ declare const canWriteKaiSpendCaps: (token: StorageToken) => boolean;
124
+ declare const assertCanWriteKaiSpendCaps: (token: StorageToken) => void;
125
+ //#endregion
77
126
  //#region src/domain/permissions/configurations.d.ts
78
127
  /**
79
128
  * Caller-supplied context for configuration predicates.
@@ -115,5 +164,5 @@ declare const assertCanMigrateFromTemplate: (token: StorageToken, ctx: Configura
115
164
  declare const assertCanPurgeConfiguration: (token: StorageToken, ctx: ConfigurationCtx) => void;
116
165
  declare const assertCanAssignFolder: (token: StorageToken, ctx: ConfigurationCtx) => void;
117
166
  //#endregion
118
- export { ConfigurationCtx, PermissionDeniedError, assertCanAdmin, assertCanAdminOrShare, assertCanAssignFolder, assertCanCopyConfiguration, assertCanCreateConfiguration, assertCanDevelopOrReview, assertCanMigrateFromTemplate, assertCanProductionManage, assertCanPurgeConfiguration, assertCanUpdateConfiguration, assertCanWriteKaiSettings, canAssignFolder, canCopyConfiguration, canCreateConfiguration, canMigrateFromTemplate, canPurgeConfiguration, canUpdateConfiguration, canWriteKaiSettings, hasAdminFeature, hasFeature, isAdmin, isAdminOrShare, isDeveloperOrReviewer, isKaiSettingsWriterRole, isKnownAdminRole, isProductionManager, isReadOnlyRole };
167
+ export { ConfigurationCtx, PermissionDeniedError, assertCanAdmin, assertCanAdminOrShare, assertCanAdministerOrganization, assertCanAssignFolder, assertCanCopyConfiguration, assertCanCreateConfiguration, assertCanDevelopOrReview, assertCanMigrateFromTemplate, assertCanProductionManage, assertCanPurgeConfiguration, assertCanUpdateConfiguration, assertCanWriteKaiSettings, assertCanWriteKaiSpendCaps, canAssignFolder, canCopyConfiguration, canCreateConfiguration, canMigrateFromTemplate, canPurgeConfiguration, canUpdateConfiguration, canWriteKaiSettings, canWriteKaiSpendCaps, hasAdminFeature, hasFeature, isAdmin, isAdminOrShare, isDeveloperOrReviewer, isKaiSettingsWriterRole, isKnownAdminRole, isOrganizationAdmin, isOrganizationMember, isProductionManager, isReadOnlyRole };
119
168
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,60 @@
1
1
  import { n as hasAdminFeature, r as hasFeature } from "../../project-DWwZv66D.js";
2
- import { C as isKnownAdminRole, E as PermissionDeniedError, S as isKaiSettingsWriterRole, T as isReadOnlyRole, _ as assertCanWriteKaiSettings, a as assertCanPurgeConfiguration, b as isAdminOrShare, c as canCopyConfiguration, d as canPurgeConfiguration, f as canUpdateConfiguration, g as assertCanProductionManage, h as assertCanDevelopOrReview, i as assertCanMigrateFromTemplate, l as canCreateConfiguration, m as assertCanAdminOrShare, n as assertCanCopyConfiguration, o as assertCanUpdateConfiguration, p as assertCanAdmin, r as assertCanCreateConfiguration, s as canAssignFolder, t as assertCanAssignFolder, u as canMigrateFromTemplate, v as canWriteKaiSettings, w as isProductionManager, x as isDeveloperOrReviewer, y as isAdmin } from "../../configurations-iCbhe0tb.js";
3
- export { PermissionDeniedError, assertCanAdmin, assertCanAdminOrShare, assertCanAssignFolder, assertCanCopyConfiguration, assertCanCreateConfiguration, assertCanDevelopOrReview, assertCanMigrateFromTemplate, assertCanProductionManage, assertCanPurgeConfiguration, assertCanUpdateConfiguration, assertCanWriteKaiSettings, canAssignFolder, canCopyConfiguration, canCreateConfiguration, canMigrateFromTemplate, canPurgeConfiguration, canUpdateConfiguration, canWriteKaiSettings, hasAdminFeature, hasFeature, isAdmin, isAdminOrShare, isDeveloperOrReviewer, isKaiSettingsWriterRole, isKnownAdminRole, isProductionManager, isReadOnlyRole };
2
+ import { C as isKnownAdminRole, E as PermissionDeniedError, S as isKaiSettingsWriterRole, T as isReadOnlyRole, _ as assertCanWriteKaiSettings, a as assertCanPurgeConfiguration, b as isAdminOrShare, c as canCopyConfiguration, d as canPurgeConfiguration, f as canUpdateConfiguration, g as assertCanProductionManage, h as assertCanDevelopOrReview, i as assertCanMigrateFromTemplate, l as canCreateConfiguration, m as assertCanAdminOrShare, n as assertCanCopyConfiguration, o as assertCanUpdateConfiguration, p as assertCanAdmin, r as assertCanCreateConfiguration, s as canAssignFolder, t as assertCanAssignFolder, u as canMigrateFromTemplate, v as canWriteKaiSettings, w as isProductionManager, x as isDeveloperOrReviewer, y as isAdmin } from "../../configurations-d7SZmw69.js";
3
+ //#region src/domain/permissions/organization.ts
4
+ /**
5
+ * The raw signal: is this token's admin a member of the organization owning
6
+ * the project?
7
+ *
8
+ * A limited (non-master) token never is — it carries no `admin` block at all
9
+ * despite the hand-authored type declaring it required (AI-3593), hence the
10
+ * optional chain and the `isMasterToken` requirement. Prefer
11
+ * `isOrganizationAdmin` for authorization decisions; this bare signal exists
12
+ * because a few kbc-ui call sites use it with no role conjunction (e.g.
13
+ * `privileges.ts`'s `canManageUsers`/`canUnlinkBucket`), and porting those must
14
+ * not change behaviour.
15
+ */
16
+ const isOrganizationMember = (token) => token.isMasterToken && (token.admin?.isOrganizationMember ?? false);
17
+ /**
18
+ * May this token administer organization-owned settings on this project?
19
+ *
20
+ * `isOrganizationMember` AND `admin`/`share`. The conjunction — not the bare
21
+ * flag — is the shape kbc-ui already uses wherever org authority gates a
22
+ * project-level *write* (e.g. `privileges.ts`'s `canChangeUserRole` for the
23
+ * SHARE target). Keeping the conjunction means an org member holding a
24
+ * `readOnly` or `guest` token on this particular project still cannot write,
25
+ * matching every existing write-shaped call site.
26
+ */
27
+ const isOrganizationAdmin = (token) => isOrganizationMember(token) && isAdminOrShare(token);
28
+ const assertCanAdministerOrganization = (token) => {
29
+ if (!isOrganizationAdmin(token)) throw new PermissionDeniedError({
30
+ action: "administer-organization",
31
+ reason: token.isMasterToken ? `role '${token.admin?.role ?? "none"}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not administer organization settings` : "a limited (non-master) token may not administer organization settings"
32
+ });
33
+ };
34
+ /**
35
+ * Whether this token may write Kai's **spend caps** — the project cap, the
36
+ * default per-user limit, and per-user overrides (AI-3738).
37
+ *
38
+ * Strictly stricter than `canWriteKaiSettings` (`./admin`), and deliberately a
39
+ * distinct predicate rather than a widening of it. `canWriteKaiSettings` is
40
+ * `admin`/`share` — the authority to rewrite shared project *config* (a
41
+ * prompt-injection surface). Spend caps commit the organization's money across
42
+ * every project it owns, so per AI-3738 they are organization-admin only: a
43
+ * project admin sees which caps apply and cannot change them. A project whose
44
+ * own admin could raise its own cap has no cap.
45
+ *
46
+ * Lives here rather than beside `canWriteKaiSettings` in `admin.ts` because its
47
+ * rule is org-scoped and `admin.ts` is documented as depending purely on the
48
+ * project role string.
49
+ */
50
+ const canWriteKaiSpendCaps = (token) => isOrganizationAdmin(token);
51
+ const assertCanWriteKaiSpendCaps = (token) => {
52
+ if (!canWriteKaiSpendCaps(token)) throw new PermissionDeniedError({
53
+ action: "write-kai-spend-caps",
54
+ reason: token.isMasterToken ? `role '${token.admin?.role ?? "none"}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not change Kai spend caps` : "a limited (non-master) token may not change Kai spend caps"
55
+ });
56
+ };
57
+ //#endregion
58
+ export { PermissionDeniedError, assertCanAdmin, assertCanAdminOrShare, assertCanAdministerOrganization, assertCanAssignFolder, assertCanCopyConfiguration, assertCanCreateConfiguration, assertCanDevelopOrReview, assertCanMigrateFromTemplate, assertCanProductionManage, assertCanPurgeConfiguration, assertCanUpdateConfiguration, assertCanWriteKaiSettings, assertCanWriteKaiSpendCaps, canAssignFolder, canCopyConfiguration, canCreateConfiguration, canMigrateFromTemplate, canPurgeConfiguration, canUpdateConfiguration, canWriteKaiSettings, canWriteKaiSpendCaps, hasAdminFeature, hasFeature, isAdmin, isAdminOrShare, isDeveloperOrReviewer, isKaiSettingsWriterRole, isKnownAdminRole, isOrganizationAdmin, isOrganizationMember, isProductionManager, isReadOnlyRole };
59
+
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/domain/permissions/organization.ts"],"sourcesContent":["/**\n * @module domain/permissions/organization\n *\n * Organization-scope predicates. Token-only, like `admin.ts`, but these read\n * `StorageToken.admin.isOrganizationMember` rather than the project role\n * string — the two answer different questions and neither implies the other.\n *\n * The upstream field is named `isOrganizationMember`, but in Keboola\n * organization membership *is* organization administration — an org member\n * administers every project the organization owns. kbc-ui already reads it\n * under that meaning (e.g. `BranchProtectionTab.tsx`, `ActivateChatContent.tsx`\n * both assign it to a local `isOrgAdmin`), so `isOrganizationAdmin` below is a\n * rename of the existing reading, not a new semantic.\n *\n * `isOrganizationAdmin` and `canWriteKaiSpendCaps` each have an `assertCan*`\n * pair (`assertCanAdministerOrganization`, `assertCanWriteKaiSpendCaps`)\n * throwing `PermissionDeniedError` with a stable kebab-case `action`, per the\n * conventions in `packages/api-client/AGENTS.md`. `isOrganizationMember` is a\n * raw signal only — nothing asserts on bare membership.\n */\nimport type { StorageToken } from '../../clients/storage/tokens/types';\n\nimport { isAdminOrShare } from './admin';\nimport { PermissionDeniedError } from './errors';\n\n/**\n * The raw signal: is this token's admin a member of the organization owning\n * the project?\n *\n * A limited (non-master) token never is — it carries no `admin` block at all\n * despite the hand-authored type declaring it required (AI-3593), hence the\n * optional chain and the `isMasterToken` requirement. Prefer\n * `isOrganizationAdmin` for authorization decisions; this bare signal exists\n * because a few kbc-ui call sites use it with no role conjunction (e.g.\n * `privileges.ts`'s `canManageUsers`/`canUnlinkBucket`), and porting those must\n * not change behaviour.\n */\nexport const isOrganizationMember = (token: StorageToken): boolean =>\n token.isMasterToken && (token.admin?.isOrganizationMember ?? false);\n\n/**\n * May this token administer organization-owned settings on this project?\n *\n * `isOrganizationMember` AND `admin`/`share`. The conjunction — not the bare\n * flag — is the shape kbc-ui already uses wherever org authority gates a\n * project-level *write* (e.g. `privileges.ts`'s `canChangeUserRole` for the\n * SHARE target). Keeping the conjunction means an org member holding a\n * `readOnly` or `guest` token on this particular project still cannot write,\n * matching every existing write-shaped call site.\n */\nexport const isOrganizationAdmin = (token: StorageToken): boolean =>\n isOrganizationMember(token) && isAdminOrShare(token);\n\nexport const assertCanAdministerOrganization = (token: StorageToken): void => {\n if (!isOrganizationAdmin(token)) {\n throw new PermissionDeniedError({\n action: 'administer-organization',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not administer organization settings`\n : 'a limited (non-master) token may not administer organization settings',\n });\n }\n};\n\n/**\n * Whether this token may write Kai's **spend caps** — the project cap, the\n * default per-user limit, and per-user overrides (AI-3738).\n *\n * Strictly stricter than `canWriteKaiSettings` (`./admin`), and deliberately a\n * distinct predicate rather than a widening of it. `canWriteKaiSettings` is\n * `admin`/`share` — the authority to rewrite shared project *config* (a\n * prompt-injection surface). Spend caps commit the organization's money across\n * every project it owns, so per AI-3738 they are organization-admin only: a\n * project admin sees which caps apply and cannot change them. A project whose\n * own admin could raise its own cap has no cap.\n *\n * Lives here rather than beside `canWriteKaiSettings` in `admin.ts` because its\n * rule is org-scoped and `admin.ts` is documented as depending purely on the\n * project role string.\n */\nexport const canWriteKaiSpendCaps = (token: StorageToken): boolean => isOrganizationAdmin(token);\n\nexport const assertCanWriteKaiSpendCaps = (token: StorageToken): void => {\n if (!canWriteKaiSpendCaps(token)) {\n throw new PermissionDeniedError({\n action: 'write-kai-spend-caps',\n reason: token.isMasterToken\n ? `role '${token.admin?.role ?? 'none'}' with isOrganizationMember=${token.admin?.isOrganizationMember ?? false} may not change Kai spend caps`\n : 'a limited (non-master) token may not change Kai spend caps',\n });\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;AAqCA,MAAa,wBAAwB,UACnC,MAAM,kBAAkB,MAAM,OAAO,wBAAwB;;;;;;;;;;;AAY/D,MAAa,uBAAuB,UAClC,qBAAqB,KAAK,KAAK,eAAe,KAAK;AAErD,MAAa,mCAAmC,UAA8B;CAC5E,IAAI,CAAC,oBAAoB,KAAK,GAC5B,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,6CAC9G;CACN,CAAC;AAEL;;;;;;;;;;;;;;;;;AAkBA,MAAa,wBAAwB,UAAiC,oBAAoB,KAAK;AAE/F,MAAa,8BAA8B,UAA8B;CACvE,IAAI,CAAC,qBAAqB,KAAK,GAC7B,MAAM,IAAI,sBAAsB;EAC9B,QAAQ;EACR,QAAQ,MAAM,gBACV,SAAS,MAAM,OAAO,QAAQ,OAAO,8BAA8B,MAAM,OAAO,wBAAwB,MAAM,kCAC9G;CACN,CAAC;AAEL"}
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-yirrW6Tg.cjs");
3
- const require_auth = require("../auth-DmgTH0uY.cjs");
2
+ const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-C57Ljzi6.cjs");
3
+ const require_auth = require("../auth-C2_JLisH.cjs");
4
4
  //#region src/clients/editor/editorClient.ts
5
5
  const createEditorClient = ({ baseUrl, middlewares, auth }) => {
6
6
  const client = require_createOpenapiFetchClient.createOpenapiFetchClient({
@@ -1,5 +1,5 @@
1
- import { n as ClientInitOptions } from "../types-BdKtW2Ml.cjs";
2
- import { C as components, a as GetSqlSessionTableDdlPath, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody } from "../types-sTH4KiPc.cjs";
1
+ import { n as ClientInitOptions } from "../types-DHI0g51U.cjs";
2
+ import { C as components, a as GetSqlSessionTableDdlPath, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody } from "../types-sO52qIAA.cjs";
3
3
  //#region src/clients/editor/editorClient.d.ts
4
4
  declare const createEditorClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
5
5
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -1,5 +1,5 @@
1
- import { n as ClientInitOptions } from "../types-SX78XZZ0.js";
2
- import { C as components, a as GetSqlSessionTableDdlPath, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody } from "../types-B2Al1BNh.js";
1
+ import { n as ClientInitOptions } from "../types-D-98DirB.js";
2
+ import { C as components, a as GetSqlSessionTableDdlPath, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody } from "../types-DlvZeert.js";
3
3
  //#region src/clients/editor/editorClient.d.ts
4
4
  declare const createEditorClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
5
5
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -1,5 +1,5 @@
1
- import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-0_oqhdPv.js";
2
- import { t as createAuthHeaders } from "../auth-CE6Hlc9W.js";
1
+ import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-E7OIVkYv.js";
2
+ import { t as createAuthHeaders } from "../auth-CE9rQV3-.js";
3
3
  //#region src/clients/editor/editorClient.ts
4
4
  const createEditorClient = ({ baseUrl, middlewares, auth }) => {
5
5
  const client = createOpenapiFetchClient({
@@ -1,2 +1,2 @@
1
- import { S as SqlSession, _ as SessionSchema, a as GetSqlSessionTableDdlPath, b as SessionSchemaDatabase, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, g as Session, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody, v as SessionSchemaBucket, x as SessionSchemaTable, y as SessionSchemaColumn } from "../types-sTH4KiPc.cjs";
1
+ import { S as SqlSession, _ as SessionSchema, a as GetSqlSessionTableDdlPath, b as SessionSchemaDatabase, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, g as Session, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody, v as SessionSchemaBucket, x as SessionSchemaTable, y as SessionSchemaColumn } from "../types-sO52qIAA.cjs";
2
2
  export { CreateSqlSessionBody, GetSqlSessionPath, GetSqlSessionSchemaPath, GetSqlSessionSchemaQuery, GetSqlSessionTableDdlPath, GetSqlSessionTableDdlQuery, GetSqlSessionsQuery, PostSqlRunQueryBody, PostSqlRunQueryPath, PostSqlSessionLoadBody, PostSqlSessionLoadPath, PostSqlSessionUnloadBody, PostSqlSessionUnloadPath, PostSqlTablePreviewBody, PostSqlTablePreviewPath, Session, SessionSchema, SessionSchemaBucket, SessionSchemaColumn, SessionSchemaDatabase, SessionSchemaTable, SqlSession };
@@ -1,2 +1,2 @@
1
- import { S as SqlSession, _ as SessionSchema, a as GetSqlSessionTableDdlPath, b as SessionSchemaDatabase, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, g as Session, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody, v as SessionSchemaBucket, x as SessionSchemaTable, y as SessionSchemaColumn } from "../types-B2Al1BNh.js";
1
+ import { S as SqlSession, _ as SessionSchema, a as GetSqlSessionTableDdlPath, b as SessionSchemaDatabase, c as PostSqlRunQueryBody, d as PostSqlSessionLoadPath, f as PostSqlSessionUnloadBody, g as Session, h as PostSqlTablePreviewPath, i as GetSqlSessionSchemaQuery, l as PostSqlRunQueryPath, m as PostSqlTablePreviewBody, n as GetSqlSessionPath, o as GetSqlSessionTableDdlQuery, p as PostSqlSessionUnloadPath, r as GetSqlSessionSchemaPath, s as GetSqlSessionsQuery, t as CreateSqlSessionBody, u as PostSqlSessionLoadBody, v as SessionSchemaBucket, x as SessionSchemaTable, y as SessionSchemaColumn } from "../types-DlvZeert.js";
2
2
  export { CreateSqlSessionBody, GetSqlSessionPath, GetSqlSessionSchemaPath, GetSqlSessionSchemaQuery, GetSqlSessionTableDdlPath, GetSqlSessionTableDdlQuery, GetSqlSessionsQuery, PostSqlRunQueryBody, PostSqlRunQueryPath, PostSqlSessionLoadBody, PostSqlSessionLoadPath, PostSqlSessionUnloadBody, PostSqlSessionUnloadPath, PostSqlTablePreviewBody, PostSqlTablePreviewPath, Session, SessionSchema, SessionSchemaBucket, SessionSchemaColumn, SessionSchemaDatabase, SessionSchemaTable, SqlSession };
@@ -0,0 +1,11 @@
1
+ //#region src/utils/store/emitter.d.ts
2
+ type Listener<T> = (value: T) => void;
3
+ type Emitter<T> = {
4
+ emit: (event: T) => void;
5
+ subscribe: (listener: Listener<T>) => () => void;
6
+ clear: () => void;
7
+ };
8
+ declare const createEmitter: <T>() => Emitter<T>;
9
+ //#endregion
10
+ export { Listener as n, createEmitter as r, Emitter as t };
11
+ //# sourceMappingURL=emitter-dLF1Fyfg.d.cts.map
@@ -0,0 +1,11 @@
1
+ //#region src/utils/store/emitter.d.ts
2
+ type Listener<T> = (value: T) => void;
3
+ type Emitter<T> = {
4
+ emit: (event: T) => void;
5
+ subscribe: (listener: Listener<T>) => () => void;
6
+ clear: () => void;
7
+ };
8
+ declare const createEmitter: <T>() => Emitter<T>;
9
+ //#endregion
10
+ export { Listener as n, createEmitter as r, Emitter as t };
11
+ //# sourceMappingURL=emitter-dLF1Fyfg.d.ts.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createGenericFetchClient = require("../createGenericFetchClient-BWoSkTki.cjs");
2
+ const require_createGenericFetchClient = require("../createGenericFetchClient-qfCZlCTv.cjs");
3
3
  //#region src/clients/encryption/encryptionClient.ts
4
4
  const createEncryptionClient = ({ baseUrl, middlewares }) => {
5
5
  const client = require_createGenericFetchClient.createGenericFetchClient({
@@ -1,2 +1,2 @@
1
- import { t as createEncryptionClient } from "../index-D_TnbEtp.cjs";
1
+ import { t as createEncryptionClient } from "../index-C7gxKoDF.cjs";
2
2
  export { createEncryptionClient };
@@ -1,2 +1,2 @@
1
- import { t as createEncryptionClient } from "../index-NicJZIzu.js";
1
+ import { t as createEncryptionClient } from "../index-CVqk63at.js";
2
2
  export { createEncryptionClient };
@@ -1,4 +1,4 @@
1
- import { t as createGenericFetchClient } from "../createGenericFetchClient-DhpvUSlX.js";
1
+ import { t as createGenericFetchClient } from "../createGenericFetchClient-MQeLRiNW.js";
2
2
  //#region src/clients/encryption/encryptionClient.ts
3
3
  const createEncryptionClient = ({ baseUrl, middlewares }) => {
4
4
  const client = createGenericFetchClient({
@@ -1,2 +1,2 @@
1
- import { a as EncryptQuery, i as EncryptParamsByScope, n as EncryptBody, o as EncryptionScope, r as EncryptParams, s as ScopedSecrets, t as BranchType } from "../types-CIybfUJ9.cjs";
1
+ import { a as EncryptQuery, i as EncryptParamsByScope, n as EncryptBody, o as EncryptionScope, r as EncryptParams, s as ScopedSecrets, t as BranchType } from "../types-BS5M67xm.cjs";
2
2
  export { BranchType, EncryptBody, EncryptParams, EncryptParamsByScope, EncryptQuery, EncryptionScope, ScopedSecrets };
@@ -1,2 +1,2 @@
1
- import { a as EncryptQuery, i as EncryptParamsByScope, n as EncryptBody, o as EncryptionScope, r as EncryptParams, s as ScopedSecrets, t as BranchType } from "../types-Dirp9mni.js";
1
+ import { a as EncryptQuery, i as EncryptParamsByScope, n as EncryptBody, o as EncryptionScope, r as EncryptParams, s as ScopedSecrets, t as BranchType } from "../types-CHCM9oNk.js";
2
2
  export { BranchType, EncryptBody, EncryptParams, EncryptParamsByScope, EncryptQuery, EncryptionScope, ScopedSecrets };
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_import = require("../import-CXHppAxd.cjs");
2
+ const require_import = require("../import-DJilJ6tq.cjs");
3
3
  exports.createImportClient = require_import.createImportClient;
@@ -1,6 +1,6 @@
1
- import { l as UploadProgress } from "../index-B-frWtGW.cjs";
2
- import { n as ClientInitOptions } from "../types-BdKtW2Ml.cjs";
3
- import { n as WriteTableInput, t as UploadFileInput } from "../types-DSBNqF1J.cjs";
1
+ import { l as UploadProgress } from "../index-DhVFuQDv.cjs";
2
+ import { n as ClientInitOptions } from "../types-DHI0g51U.cjs";
3
+ import { n as WriteTableInput, t as UploadFileInput } from "../types-B42HhyB0.cjs";
4
4
  //#region src/clients/import/importClient.d.ts
5
5
  type Options = {
6
6
  signal?: AbortSignal;
@@ -1,6 +1,6 @@
1
- import { l as UploadProgress } from "../index-Ds8e0l7-.js";
2
- import { n as ClientInitOptions } from "../types-SX78XZZ0.js";
3
- import { n as WriteTableInput, t as UploadFileInput } from "../types-lVXf05pr.js";
1
+ import { l as UploadProgress } from "../index-DVhTNwvu.js";
2
+ import { n as ClientInitOptions } from "../types-D-98DirB.js";
3
+ import { n as WriteTableInput, t as UploadFileInput } from "../types-CaMfshWX.js";
4
4
  //#region src/clients/import/importClient.d.ts
5
5
  type Options = {
6
6
  signal?: AbortSignal;
@@ -1,2 +1,2 @@
1
- import { t as createImportClient } from "../import-CExRbskw.js";
1
+ import { t as createImportClient } from "../import-2nqxQ9Rt.js";
2
2
  export { createImportClient };
@@ -1,5 +1,5 @@
1
- import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-0_oqhdPv.js";
2
- import { t as createAuthHeaders } from "./auth-CE6Hlc9W.js";
1
+ import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-E7OIVkYv.js";
2
+ import { t as createAuthHeaders } from "./auth-CE9rQV3-.js";
3
3
  //#region src/fetchClient/xhrFetch.ts
4
4
  const parseResponseHeaders = (raw) => {
5
5
  const headers = new Headers();
@@ -113,4 +113,4 @@ const createImportClient = ({ baseUrl, middlewares, auth }) => {
113
113
  //#endregion
114
114
  export { createImportClient as t };
115
115
 
116
- //# sourceMappingURL=import-CExRbskw.js.map
116
+ //# sourceMappingURL=import-2nqxQ9Rt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-CExRbskw.js","names":[],"sources":["../src/fetchClient/xhrFetch.ts","../src/clients/import/utils.ts","../src/clients/import/importClient.ts"],"sourcesContent":["import type { FetchFn } from './createFetchClient';\n\nexport type UploadProgress = {\n loaded: number;\n total: number;\n percent: number;\n};\n\nconst parseResponseHeaders = (raw: string) => {\n const headers = new Headers();\n\n for (const line of raw.trim().split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator < 0) continue;\n\n headers.append(line.slice(0, separator).trim(), line.slice(separator + 1).trim());\n }\n\n return headers;\n};\n\nconst createAbortError = () => new DOMException('The operation was aborted.', 'AbortError');\n\n// `new Response(body)` throws for these statuses even when the body is empty.\nconst BODILESS_STATUSES = [204, 205];\n\nconst BODILESS_METHODS = ['GET', 'HEAD'];\n\n/**\n * A `fetch` implementation backed by XHR, for the `fetchFn` escape hatch: `fetch` cannot observe\n * request-body upload progress outside Chromium, `xhr.upload.onprogress` can.\n */\nexport const xhrFetch = (onProgress: (progress: UploadProgress) => void): FetchFn => {\n return async (input, init) => {\n // Node has no XHR, and asking for progress is not worth failing an upload over — the caller\n // simply gets no progress events there.\n if (typeof XMLHttpRequest === 'undefined') return fetch(input, init);\n\n const request = new Request(input, init);\n const body = BODILESS_METHODS.includes(request.method) ? null : await request.blob();\n\n if (request.signal.aborted) throw createAbortError();\n\n const { promise, resolve, reject } = Promise.withResolvers<Response>();\n const xhr = new XMLHttpRequest();\n\n const handleProgress = (event: ProgressEvent) => {\n if (!event.lengthComputable) return;\n\n onProgress({\n loaded: event.loaded,\n total: event.total,\n percent: (event.loaded / event.total) * 100,\n });\n };\n\n const handleLoad = () => {\n resolve(\n new Response(BODILESS_STATUSES.includes(xhr.status) ? null : xhr.response, {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseResponseHeaders(xhr.getAllResponseHeaders()),\n }),\n );\n };\n\n // `TypeError` for parity with `fetch` — `isFetchClientError` keys off it.\n const handleError = () => reject(new TypeError('Failed to fetch'));\n const handleAbort = () => reject(createAbortError());\n\n xhr.open(request.method, request.url, true);\n xhr.responseType = 'blob';\n xhr.withCredentials = request.credentials === 'include';\n\n // The body we send is the one this `Request` serialized, so its `content-type` — multipart\n // boundary included — describes those exact bytes and can be forwarded as-is.\n request.headers.forEach((value, name) => xhr.setRequestHeader(name, value));\n\n xhr.upload.addEventListener('progress', handleProgress);\n xhr.addEventListener('load', handleLoad);\n xhr.addEventListener('error', handleError);\n xhr.addEventListener('abort', handleAbort);\n request.signal.addEventListener('abort', () => xhr.abort(), { once: true });\n\n xhr.send(body);\n\n return promise;\n };\n};\n","/**\n * Every field the importer takes is a form part, named exactly as the spec names it: flags go as\n * `1` when on and are left out when off (so the service applies its own default), and arrays repeat\n * under the `[]`-suffixed name. The payload rides along as the `data` part — `file` is the public\n * API's word for it, not the wire's.\n */\nexport const createFormData = (\n fields: Record<string, string | boolean | string[] | File | null | undefined>,\n) => {\n const formData = new FormData();\n\n for (const [name, value] of Object.entries(fields)) {\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${name}[]`, item);\n }\n } else {\n formData.append(name, value === true ? '1' : value);\n }\n }\n\n return formData;\n};\n","import type { UploadProgress } from '../../fetchClient';\nimport { createOpenapiFetchClient, xhrFetch } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { UploadFileInput, WriteTableInput } from './types';\nimport { createFormData } from './utils';\n\ntype Options = {\n signal?: AbortSignal;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport const createImportClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const uploadFile = async (\n { file, ...fields }: UploadFileInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/upload-file',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const writeTable = async (\n { file, ...fields }: WriteTableInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/write-table',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n uploadFile,\n writeTable,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"import-2nqxQ9Rt.js","names":[],"sources":["../src/fetchClient/xhrFetch.ts","../src/clients/import/utils.ts","../src/clients/import/importClient.ts"],"sourcesContent":["import type { FetchFn } from './createFetchClient';\n\nexport type UploadProgress = {\n loaded: number;\n total: number;\n percent: number;\n};\n\nconst parseResponseHeaders = (raw: string) => {\n const headers = new Headers();\n\n for (const line of raw.trim().split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator < 0) continue;\n\n headers.append(line.slice(0, separator).trim(), line.slice(separator + 1).trim());\n }\n\n return headers;\n};\n\nconst createAbortError = () => new DOMException('The operation was aborted.', 'AbortError');\n\n// `new Response(body)` throws for these statuses even when the body is empty.\nconst BODILESS_STATUSES = [204, 205];\n\nconst BODILESS_METHODS = ['GET', 'HEAD'];\n\n/**\n * A `fetch` implementation backed by XHR, for the `fetchFn` escape hatch: `fetch` cannot observe\n * request-body upload progress outside Chromium, `xhr.upload.onprogress` can.\n */\nexport const xhrFetch = (onProgress: (progress: UploadProgress) => void): FetchFn => {\n return async (input, init) => {\n // Node has no XHR, and asking for progress is not worth failing an upload over — the caller\n // simply gets no progress events there.\n if (typeof XMLHttpRequest === 'undefined') return fetch(input, init);\n\n const request = new Request(input, init);\n const body = BODILESS_METHODS.includes(request.method) ? null : await request.blob();\n\n if (request.signal.aborted) throw createAbortError();\n\n const { promise, resolve, reject } = Promise.withResolvers<Response>();\n const xhr = new XMLHttpRequest();\n\n const handleProgress = (event: ProgressEvent) => {\n if (!event.lengthComputable) return;\n\n onProgress({\n loaded: event.loaded,\n total: event.total,\n percent: (event.loaded / event.total) * 100,\n });\n };\n\n const handleLoad = () => {\n resolve(\n new Response(BODILESS_STATUSES.includes(xhr.status) ? null : xhr.response, {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseResponseHeaders(xhr.getAllResponseHeaders()),\n }),\n );\n };\n\n // `TypeError` for parity with `fetch` — `isFetchClientError` keys off it.\n const handleError = () => reject(new TypeError('Failed to fetch'));\n const handleAbort = () => reject(createAbortError());\n\n xhr.open(request.method, request.url, true);\n xhr.responseType = 'blob';\n xhr.withCredentials = request.credentials === 'include';\n\n // The body we send is the one this `Request` serialized, so its `content-type` — multipart\n // boundary included — describes those exact bytes and can be forwarded as-is.\n request.headers.forEach((value, name) => xhr.setRequestHeader(name, value));\n\n xhr.upload.addEventListener('progress', handleProgress);\n xhr.addEventListener('load', handleLoad);\n xhr.addEventListener('error', handleError);\n xhr.addEventListener('abort', handleAbort);\n request.signal.addEventListener('abort', () => xhr.abort(), { once: true });\n\n xhr.send(body);\n\n return promise;\n };\n};\n","/**\n * Every field the importer takes is a form part, named exactly as the spec names it: flags go as\n * `1` when on and are left out when off (so the service applies its own default), and arrays repeat\n * under the `[]`-suffixed name. The payload rides along as the `data` part — `file` is the public\n * API's word for it, not the wire's.\n */\nexport const createFormData = (\n fields: Record<string, string | boolean | string[] | File | null | undefined>,\n) => {\n const formData = new FormData();\n\n for (const [name, value] of Object.entries(fields)) {\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${name}[]`, item);\n }\n } else {\n formData.append(name, value === true ? '1' : value);\n }\n }\n\n return formData;\n};\n","import type { UploadProgress } from '../../fetchClient';\nimport { createOpenapiFetchClient, xhrFetch } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { UploadFileInput, WriteTableInput } from './types';\nimport { createFormData } from './utils';\n\ntype Options = {\n signal?: AbortSignal;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport const createImportClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const uploadFile = async (\n { file, ...fields }: UploadFileInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/upload-file',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const writeTable = async (\n { file, ...fields }: WriteTableInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/write-table',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n uploadFile,\n writeTable,\n };\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-yirrW6Tg.cjs");
2
- const require_auth = require("./auth-DmgTH0uY.cjs");
1
+ const require_createOpenapiFetchClient = require("./createOpenapiFetchClient-C57Ljzi6.cjs");
2
+ const require_auth = require("./auth-C2_JLisH.cjs");
3
3
  //#region src/fetchClient/xhrFetch.ts
4
4
  const parseResponseHeaders = (raw) => {
5
5
  const headers = new Headers();
@@ -118,4 +118,4 @@ Object.defineProperty(exports, "createImportClient", {
118
118
  }
119
119
  });
120
120
 
121
- //# sourceMappingURL=import-CXHppAxd.cjs.map
121
+ //# sourceMappingURL=import-DJilJ6tq.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-CXHppAxd.cjs","names":["createOpenapiFetchClient","createAuthHeaders"],"sources":["../src/fetchClient/xhrFetch.ts","../src/clients/import/utils.ts","../src/clients/import/importClient.ts"],"sourcesContent":["import type { FetchFn } from './createFetchClient';\n\nexport type UploadProgress = {\n loaded: number;\n total: number;\n percent: number;\n};\n\nconst parseResponseHeaders = (raw: string) => {\n const headers = new Headers();\n\n for (const line of raw.trim().split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator < 0) continue;\n\n headers.append(line.slice(0, separator).trim(), line.slice(separator + 1).trim());\n }\n\n return headers;\n};\n\nconst createAbortError = () => new DOMException('The operation was aborted.', 'AbortError');\n\n// `new Response(body)` throws for these statuses even when the body is empty.\nconst BODILESS_STATUSES = [204, 205];\n\nconst BODILESS_METHODS = ['GET', 'HEAD'];\n\n/**\n * A `fetch` implementation backed by XHR, for the `fetchFn` escape hatch: `fetch` cannot observe\n * request-body upload progress outside Chromium, `xhr.upload.onprogress` can.\n */\nexport const xhrFetch = (onProgress: (progress: UploadProgress) => void): FetchFn => {\n return async (input, init) => {\n // Node has no XHR, and asking for progress is not worth failing an upload over — the caller\n // simply gets no progress events there.\n if (typeof XMLHttpRequest === 'undefined') return fetch(input, init);\n\n const request = new Request(input, init);\n const body = BODILESS_METHODS.includes(request.method) ? null : await request.blob();\n\n if (request.signal.aborted) throw createAbortError();\n\n const { promise, resolve, reject } = Promise.withResolvers<Response>();\n const xhr = new XMLHttpRequest();\n\n const handleProgress = (event: ProgressEvent) => {\n if (!event.lengthComputable) return;\n\n onProgress({\n loaded: event.loaded,\n total: event.total,\n percent: (event.loaded / event.total) * 100,\n });\n };\n\n const handleLoad = () => {\n resolve(\n new Response(BODILESS_STATUSES.includes(xhr.status) ? null : xhr.response, {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseResponseHeaders(xhr.getAllResponseHeaders()),\n }),\n );\n };\n\n // `TypeError` for parity with `fetch` — `isFetchClientError` keys off it.\n const handleError = () => reject(new TypeError('Failed to fetch'));\n const handleAbort = () => reject(createAbortError());\n\n xhr.open(request.method, request.url, true);\n xhr.responseType = 'blob';\n xhr.withCredentials = request.credentials === 'include';\n\n // The body we send is the one this `Request` serialized, so its `content-type` — multipart\n // boundary included — describes those exact bytes and can be forwarded as-is.\n request.headers.forEach((value, name) => xhr.setRequestHeader(name, value));\n\n xhr.upload.addEventListener('progress', handleProgress);\n xhr.addEventListener('load', handleLoad);\n xhr.addEventListener('error', handleError);\n xhr.addEventListener('abort', handleAbort);\n request.signal.addEventListener('abort', () => xhr.abort(), { once: true });\n\n xhr.send(body);\n\n return promise;\n };\n};\n","/**\n * Every field the importer takes is a form part, named exactly as the spec names it: flags go as\n * `1` when on and are left out when off (so the service applies its own default), and arrays repeat\n * under the `[]`-suffixed name. The payload rides along as the `data` part — `file` is the public\n * API's word for it, not the wire's.\n */\nexport const createFormData = (\n fields: Record<string, string | boolean | string[] | File | null | undefined>,\n) => {\n const formData = new FormData();\n\n for (const [name, value] of Object.entries(fields)) {\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${name}[]`, item);\n }\n } else {\n formData.append(name, value === true ? '1' : value);\n }\n }\n\n return formData;\n};\n","import type { UploadProgress } from '../../fetchClient';\nimport { createOpenapiFetchClient, xhrFetch } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { UploadFileInput, WriteTableInput } from './types';\nimport { createFormData } from './utils';\n\ntype Options = {\n signal?: AbortSignal;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport const createImportClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const uploadFile = async (\n { file, ...fields }: UploadFileInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/upload-file',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const writeTable = async (\n { file, ...fields }: WriteTableInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/write-table',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n uploadFile,\n writeTable,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"import-DJilJ6tq.cjs","names":["createOpenapiFetchClient","createAuthHeaders"],"sources":["../src/fetchClient/xhrFetch.ts","../src/clients/import/utils.ts","../src/clients/import/importClient.ts"],"sourcesContent":["import type { FetchFn } from './createFetchClient';\n\nexport type UploadProgress = {\n loaded: number;\n total: number;\n percent: number;\n};\n\nconst parseResponseHeaders = (raw: string) => {\n const headers = new Headers();\n\n for (const line of raw.trim().split(/[\\r\\n]+/)) {\n const separator = line.indexOf(':');\n if (separator < 0) continue;\n\n headers.append(line.slice(0, separator).trim(), line.slice(separator + 1).trim());\n }\n\n return headers;\n};\n\nconst createAbortError = () => new DOMException('The operation was aborted.', 'AbortError');\n\n// `new Response(body)` throws for these statuses even when the body is empty.\nconst BODILESS_STATUSES = [204, 205];\n\nconst BODILESS_METHODS = ['GET', 'HEAD'];\n\n/**\n * A `fetch` implementation backed by XHR, for the `fetchFn` escape hatch: `fetch` cannot observe\n * request-body upload progress outside Chromium, `xhr.upload.onprogress` can.\n */\nexport const xhrFetch = (onProgress: (progress: UploadProgress) => void): FetchFn => {\n return async (input, init) => {\n // Node has no XHR, and asking for progress is not worth failing an upload over — the caller\n // simply gets no progress events there.\n if (typeof XMLHttpRequest === 'undefined') return fetch(input, init);\n\n const request = new Request(input, init);\n const body = BODILESS_METHODS.includes(request.method) ? null : await request.blob();\n\n if (request.signal.aborted) throw createAbortError();\n\n const { promise, resolve, reject } = Promise.withResolvers<Response>();\n const xhr = new XMLHttpRequest();\n\n const handleProgress = (event: ProgressEvent) => {\n if (!event.lengthComputable) return;\n\n onProgress({\n loaded: event.loaded,\n total: event.total,\n percent: (event.loaded / event.total) * 100,\n });\n };\n\n const handleLoad = () => {\n resolve(\n new Response(BODILESS_STATUSES.includes(xhr.status) ? null : xhr.response, {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseResponseHeaders(xhr.getAllResponseHeaders()),\n }),\n );\n };\n\n // `TypeError` for parity with `fetch` — `isFetchClientError` keys off it.\n const handleError = () => reject(new TypeError('Failed to fetch'));\n const handleAbort = () => reject(createAbortError());\n\n xhr.open(request.method, request.url, true);\n xhr.responseType = 'blob';\n xhr.withCredentials = request.credentials === 'include';\n\n // The body we send is the one this `Request` serialized, so its `content-type` — multipart\n // boundary included — describes those exact bytes and can be forwarded as-is.\n request.headers.forEach((value, name) => xhr.setRequestHeader(name, value));\n\n xhr.upload.addEventListener('progress', handleProgress);\n xhr.addEventListener('load', handleLoad);\n xhr.addEventListener('error', handleError);\n xhr.addEventListener('abort', handleAbort);\n request.signal.addEventListener('abort', () => xhr.abort(), { once: true });\n\n xhr.send(body);\n\n return promise;\n };\n};\n","/**\n * Every field the importer takes is a form part, named exactly as the spec names it: flags go as\n * `1` when on and are left out when off (so the service applies its own default), and arrays repeat\n * under the `[]`-suffixed name. The payload rides along as the `data` part — `file` is the public\n * API's word for it, not the wire's.\n */\nexport const createFormData = (\n fields: Record<string, string | boolean | string[] | File | null | undefined>,\n) => {\n const formData = new FormData();\n\n for (const [name, value] of Object.entries(fields)) {\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${name}[]`, item);\n }\n } else {\n formData.append(name, value === true ? '1' : value);\n }\n }\n\n return formData;\n};\n","import type { UploadProgress } from '../../fetchClient';\nimport { createOpenapiFetchClient, xhrFetch } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type { UploadFileInput, WriteTableInput } from './types';\nimport { createFormData } from './utils';\n\ntype Options = {\n signal?: AbortSignal;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport const createImportClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const uploadFile = async (\n { file, ...fields }: UploadFileInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/upload-file',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const writeTable = async (\n { file, ...fields }: WriteTableInput,\n { signal, onProgress }: Options = {},\n ) => {\n const { data } = await client.post(\n '/write-table',\n { body: createFormData({ data: file, ...fields }) },\n { signal, fetchFn: onProgress ? xhrFetch(onProgress) : undefined },\n );\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n uploadFile,\n writeTable,\n };\n};\n"],"mappings":"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"}