@keboola/api-client 49.0.0 → 51.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 (564) hide show
  1. package/AGENTS.md +109 -95
  2. package/API-SURFACE.md +13 -31
  3. package/CHANGELOG.md +54 -0
  4. package/README.md +33 -29
  5. package/dist/{ManagementSessionMintError-Cu9beG7j.cjs → ManagementSessionMintError-ByOulHQH.cjs} +4 -6
  6. package/dist/{ManagementSessionMintError-Cu9beG7j.cjs.map → ManagementSessionMintError-ByOulHQH.cjs.map} +1 -1
  7. package/dist/{ManagementSessionMintError-4Pkn5Oob.js → ManagementSessionMintError-DNMbYauw.js} +4 -6
  8. package/dist/{ManagementSessionMintError-4Pkn5Oob.js.map → ManagementSessionMintError-DNMbYauw.js.map} +1 -1
  9. package/dist/{QueryJobError-ZZZ043Nm.js → QueryJobError-Iq9O90Uh.js} +2 -3
  10. package/dist/{QueryJobError-ZZZ043Nm.js.map → QueryJobError-Iq9O90Uh.js.map} +1 -1
  11. package/dist/{QueryJobError-irGiP5zh.cjs → QueryJobError-Oy0fl4aw.cjs} +2 -3
  12. package/dist/{QueryJobError-irGiP5zh.cjs.map → QueryJobError-Oy0fl4aw.cjs.map} +1 -1
  13. package/dist/{QueueJobError-8bThS_Mc.js → QueueJobError-BJNUINXW.js} +2 -3
  14. package/dist/{QueueJobError-8bThS_Mc.js.map → QueueJobError-BJNUINXW.js.map} +1 -1
  15. package/dist/{QueueJobError-6qSEizWo.cjs → QueueJobError-DruZK3tc.cjs} +2 -3
  16. package/dist/{QueueJobError-6qSEizWo.cjs.map → QueueJobError-DruZK3tc.cjs.map} +1 -1
  17. package/dist/{SyncActionError-CoZFsdUk.js → SyncActionError-DuGcDbkd.js} +2 -3
  18. package/dist/{SyncActionError-CoZFsdUk.js.map → SyncActionError-DuGcDbkd.js.map} +1 -1
  19. package/dist/{SyncActionError-BG0zwchi.cjs → SyncActionError-mbpVg63X.cjs} +2 -3
  20. package/dist/{SyncActionError-BG0zwchi.cjs.map → SyncActionError-mbpVg63X.cjs.map} +1 -1
  21. package/dist/{UserError-By_Zckmc.js → UserError-BxoOJJ_u.js} +2 -3
  22. package/dist/{UserError-By_Zckmc.js.map → UserError-BxoOJJ_u.js.map} +1 -1
  23. package/dist/{UserError-CSGO1qII.cjs → UserError-D4P9Tbhf.cjs} +2 -3
  24. package/dist/{UserError-CSGO1qII.cjs.map → UserError-D4P9Tbhf.cjs.map} +1 -1
  25. package/dist/{ValidationError-D65QU0uq.cjs → ValidationError-BXcFX4nD.cjs} +2 -3
  26. package/dist/{ValidationError-D65QU0uq.cjs.map → ValidationError-BXcFX4nD.cjs.map} +1 -1
  27. package/dist/{ValidationError-DjhtNMfZ.js → ValidationError-BsdFDGY2.js} +2 -3
  28. package/dist/{ValidationError-DjhtNMfZ.js.map → ValidationError-BsdFDGY2.js.map} +1 -1
  29. package/dist/{configurations-CL0ouUMa.js → admin-CbMOsfgs.js} +5 -53
  30. package/dist/admin-CbMOsfgs.js.map +1 -0
  31. package/dist/{configurations-D9J3jh3g.cjs → admin-Di-MmGFP.cjs} +4 -124
  32. package/dist/admin-Di-MmGFP.cjs.map +1 -0
  33. package/dist/{adminRoles-BX1gk3At.d.ts → adminRoles-DAwl657q.d.ts} +2 -4
  34. package/dist/{adminRoles-CO7J5qAy.cjs → adminRoles-DnFpO_2W.cjs} +2 -3
  35. package/dist/{adminRoles-CO7J5qAy.cjs.map → adminRoles-DnFpO_2W.cjs.map} +1 -1
  36. package/dist/{adminRoles-BbxFgfX-.d.cts → adminRoles-FFyl7Dyx.d.cts} +2 -4
  37. package/dist/{adminRoles-B40yBcmq.js → adminRoles-asa-MhDD.js} +2 -3
  38. package/dist/{adminRoles-B40yBcmq.js.map → adminRoles-asa-MhDD.js.map} +1 -1
  39. package/dist/ai/index.cjs +3 -4
  40. package/dist/ai/index.d.cts +2 -4
  41. package/dist/ai/index.d.ts +2 -4
  42. package/dist/ai/index.js +3 -4
  43. package/dist/ai/types.d.cts +1 -1
  44. package/dist/ai/types.d.ts +1 -1
  45. package/dist/{appLogs-DI2Y4imY.d.ts → appLogs-CTvZAihm.d.ts} +2 -4
  46. package/dist/{appLogs-IhRA3xyv.d.cts → appLogs-CnLNMH7M.d.cts} +2 -4
  47. package/dist/{appLogs-Cix2KWra.cjs → appLogs-CoAWQGxs.cjs} +5 -6
  48. package/dist/{appLogs-Cix2KWra.cjs.map → appLogs-CoAWQGxs.cjs.map} +1 -1
  49. package/dist/{appLogs-KslK7qHr.js → appLogs-DFcPwVk8.js} +4 -5
  50. package/dist/{appLogs-KslK7qHr.js.map → appLogs-DFcPwVk8.js.map} +1 -1
  51. package/dist/apps/index.cjs +28 -5
  52. package/dist/apps/index.cjs.map +1 -1
  53. package/dist/apps/index.d.cts +22 -5
  54. package/dist/apps/index.d.ts +22 -5
  55. package/dist/apps/index.js +28 -5
  56. package/dist/apps/index.js.map +1 -1
  57. package/dist/apps/types.d.cts +3 -3
  58. package/dist/apps/types.d.ts +3 -3
  59. package/dist/assets/index.cjs +2 -3
  60. package/dist/assets/index.d.cts +1 -3
  61. package/dist/assets/index.d.ts +1 -3
  62. package/dist/assets/index.js +2 -3
  63. package/dist/assets/schema.cjs +2 -3
  64. package/dist/assets/schema.d.cts +0 -2
  65. package/dist/assets/schema.d.ts +0 -2
  66. package/dist/assets/schema.js +1 -2
  67. package/dist/auth/index.cjs +1 -1
  68. package/dist/auth/index.d.cts +1 -1
  69. package/dist/auth/index.d.ts +1 -1
  70. package/dist/auth/index.js +1 -2
  71. package/dist/auth/types.d.cts +1 -1
  72. package/dist/auth/types.d.ts +1 -1
  73. package/dist/{auth-C8Pjl0Mu.cjs → auth-CvB4MukT.cjs} +3 -4
  74. package/dist/{auth-C8Pjl0Mu.cjs.map → auth-CvB4MukT.cjs.map} +1 -1
  75. package/dist/{auth-4coY1uwo.js → auth-DYfQMQCs.js} +3 -4
  76. package/dist/{auth-4coY1uwo.js.map → auth-DYfQMQCs.js.map} +1 -1
  77. package/dist/{authClient-DfkKlc-2.cjs → authClient-DcKBpMcU.cjs} +66 -85
  78. package/dist/{authClient-DfkKlc-2.cjs.map → authClient-DcKBpMcU.cjs.map} +1 -1
  79. package/dist/{authClient-6Aau_4Zt.d.ts → authClient-Df3U4q_6.d.cts} +4 -16
  80. package/dist/{authClient-B3P6WtWW.d.cts → authClient-JtMVJWXY.d.ts} +4 -16
  81. package/dist/{authClient-2e8ZmzSP.js → authClient-oB5ydxWp.js} +66 -85
  82. package/dist/{authClient-2e8ZmzSP.js.map → authClient-oB5ydxWp.js.map} +1 -1
  83. package/dist/{backends-DKBz5OxE.d.ts → backends-BHotIdL0.d.cts} +1 -3
  84. package/dist/{backends-DKBz5OxE.d.cts → backends-BHotIdL0.d.ts} +1 -3
  85. package/dist/billing/index.cjs +3 -4
  86. package/dist/billing/index.d.cts +1 -3
  87. package/dist/billing/index.d.ts +1 -3
  88. package/dist/billing/index.js +3 -4
  89. package/dist/billing/types.d.cts +1 -5
  90. package/dist/billing/types.d.ts +1 -5
  91. package/dist/chat/index.cjs +4 -5
  92. package/dist/chat/index.d.cts +3 -5
  93. package/dist/chat/index.d.ts +3 -5
  94. package/dist/chat/index.js +4 -5
  95. package/dist/chat/suggestions.cjs +1 -2
  96. package/dist/chat/suggestions.d.cts +1 -1
  97. package/dist/chat/suggestions.d.ts +1 -1
  98. package/dist/chat/suggestions.js +1 -2
  99. package/dist/chat/types.cjs +1 -2
  100. package/dist/chat/types.d.cts +1 -1
  101. package/dist/chat/types.d.ts +1 -1
  102. package/dist/chat/types.js +1 -2
  103. package/dist/{collectByOffset-DQsqtmJg.cjs → collectByOffset-DgxJ3zT9.cjs} +3 -4
  104. package/dist/{collectByOffset-DQsqtmJg.cjs.map → collectByOffset-DgxJ3zT9.cjs.map} +1 -1
  105. package/dist/{collectByOffset-2XzJqmvr.js → collectByOffset-i8Tdoze7.js} +3 -4
  106. package/dist/{collectByOffset-2XzJqmvr.js.map → collectByOffset-i8Tdoze7.js.map} +1 -1
  107. package/dist/{componentId-D4jp6a13.cjs → componentId-C8ZTXXDo.cjs} +2 -3
  108. package/dist/{componentId-D4jp6a13.cjs.map → componentId-C8ZTXXDo.cjs.map} +1 -1
  109. package/dist/{componentId-DmHwHG5V.js → componentId-b_qBbJEM.js} +2 -3
  110. package/dist/{componentId-DmHwHG5V.js.map → componentId-b_qBbJEM.js.map} +1 -1
  111. package/dist/componentsMcp/index.cjs +1 -1
  112. package/dist/componentsMcp/index.d.cts +1 -1
  113. package/dist/componentsMcp/index.d.ts +1 -1
  114. package/dist/componentsMcp/index.js +1 -2
  115. package/dist/componentsMcp/types.d.cts +1 -1
  116. package/dist/componentsMcp/types.d.ts +1 -1
  117. package/dist/{componentsMcp-pG-PcQrg.cjs → componentsMcp-BaHy5iLr.cjs} +5 -7
  118. package/dist/{componentsMcp-pG-PcQrg.cjs.map → componentsMcp-BaHy5iLr.cjs.map} +1 -1
  119. package/dist/{componentsMcp-CHobIsuU.js → componentsMcp-BrB4js6b.js} +5 -7
  120. package/dist/{componentsMcp-CHobIsuU.js.map → componentsMcp-BrB4js6b.js.map} +1 -1
  121. package/dist/{concurrent-BacWxPwi.js → concurrent-BtsT10Xe.js} +2 -3
  122. package/dist/{concurrent-BacWxPwi.js.map → concurrent-BtsT10Xe.js.map} +1 -1
  123. package/dist/{concurrent-CdVfR1N5.cjs → concurrent-DnTV_ppY.cjs} +2 -3
  124. package/dist/{concurrent-CdVfR1N5.cjs.map → concurrent-DnTV_ppY.cjs.map} +1 -1
  125. package/dist/configurations-Cd6Nsox-.js +49 -0
  126. package/dist/configurations-Cd6Nsox-.js.map +1 -0
  127. package/dist/configurations-WI8H4zLk.cjs +120 -0
  128. package/dist/configurations-WI8H4zLk.cjs.map +1 -0
  129. package/dist/constants/index.cjs +3 -3
  130. package/dist/constants/index.d.cts +4 -4
  131. package/dist/constants/index.d.ts +4 -4
  132. package/dist/constants/index.js +3 -3
  133. package/dist/{constants-VpSwBtCb.js → constants-BMSHGwOR.js} +46 -52
  134. package/dist/constants-BMSHGwOR.js.map +1 -0
  135. package/dist/{constants-DErcRkWl.cjs → constants-DhFQWQgy.cjs} +45 -51
  136. package/dist/constants-DhFQWQgy.cjs.map +1 -0
  137. package/dist/{createAbortError-RendOpo7.cjs → createAbortError-Dzc9yObN.cjs} +2 -3
  138. package/dist/{createAbortError-RendOpo7.cjs.map → createAbortError-Dzc9yObN.cjs.map} +1 -1
  139. package/dist/{createAbortError-BxupOt-6.js → createAbortError-c6ekCpRy.js} +2 -3
  140. package/dist/{createAbortError-BxupOt-6.js.map → createAbortError-c6ekCpRy.js.map} +1 -1
  141. package/dist/{createFetchClient-lZ_93Yrb.cjs → createFetchClient-DEkUH662.cjs} +6 -10
  142. package/dist/{createFetchClient-lZ_93Yrb.cjs.map → createFetchClient-DEkUH662.cjs.map} +1 -1
  143. package/dist/{createFetchClient-CkHdS_IG.js → createFetchClient-DlGCbltR.js} +5 -9
  144. package/dist/{createFetchClient-CkHdS_IG.js.map → createFetchClient-DlGCbltR.js.map} +1 -1
  145. package/dist/{createGenericFetchClient-MOx97wi-.cjs → createGenericFetchClient-2oU-PXVo.cjs} +3 -4
  146. package/dist/{createGenericFetchClient-MOx97wi-.cjs.map → createGenericFetchClient-2oU-PXVo.cjs.map} +1 -1
  147. package/dist/createGenericFetchClient-wGxemBwR.js +6 -0
  148. package/dist/{createGenericFetchClient-CQdNcPC3.js.map → createGenericFetchClient-wGxemBwR.js.map} +1 -1
  149. package/dist/createOpenapiFetchClient-Bhz62MUE.js +6 -0
  150. package/dist/{createOpenapiFetchClient-DXiMv9WL.js.map → createOpenapiFetchClient-Bhz62MUE.js.map} +1 -1
  151. package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs → createOpenapiFetchClient-DL9w7vU-.cjs} +3 -4
  152. package/dist/{createOpenapiFetchClient-DHYo_k3t.cjs.map → createOpenapiFetchClient-DL9w7vU-.cjs.map} +1 -1
  153. package/dist/dataScience/index.cjs +2 -2
  154. package/dist/dataScience/index.d.cts +2 -2
  155. package/dist/dataScience/index.d.ts +2 -2
  156. package/dist/dataScience/index.js +2 -2
  157. package/dist/dataScience/types.d.cts +2 -2
  158. package/dist/dataScience/types.d.ts +2 -2
  159. package/dist/{dataScience-AwPMeGfz.js → dataScience-CXmkEOAi.js} +7 -9
  160. package/dist/{dataScience-AwPMeGfz.js.map → dataScience-CXmkEOAi.js.map} +1 -1
  161. package/dist/{dataScience-BjS1p8WO.cjs → dataScience-CufjHPSd.cjs} +7 -9
  162. package/dist/{dataScience-BjS1p8WO.cjs.map → dataScience-CufjHPSd.cjs.map} +1 -1
  163. package/dist/{dedupe-OSnnst2u.cjs → dedupe-Bf0gl9TJ.cjs} +2 -3
  164. package/dist/{dedupe-OSnnst2u.cjs.map → dedupe-Bf0gl9TJ.cjs.map} +1 -1
  165. package/dist/{dedupe-Cky1gSUu.js → dedupe-Bu0d2i_w.js} +2 -3
  166. package/dist/{dedupe-Cky1gSUu.js.map → dedupe-Bu0d2i_w.js.map} +1 -1
  167. package/dist/developerPortal/index.cjs +1 -1
  168. package/dist/developerPortal/index.d.cts +2 -2
  169. package/dist/developerPortal/index.d.ts +2 -2
  170. package/dist/developerPortal/index.js +1 -2
  171. package/dist/developerPortal/types.d.cts +1 -1
  172. package/dist/developerPortal/types.d.ts +1 -1
  173. package/dist/{developerPortalClient-DUerKw-7.cjs → developerPortalClient-BfRxYrWj.cjs} +9 -15
  174. package/dist/{developerPortalClient-DUerKw-7.cjs.map → developerPortalClient-BfRxYrWj.cjs.map} +1 -1
  175. package/dist/{developerPortalClient-Bb2suezr.js → developerPortalClient-D9XOYwWF.js} +9 -15
  176. package/dist/{developerPortalClient-Bb2suezr.js.map → developerPortalClient-D9XOYwWF.js.map} +1 -1
  177. package/dist/domain/permissions/index.cjs +18 -17
  178. package/dist/domain/permissions/index.d.cts +1 -11
  179. package/dist/domain/permissions/index.d.ts +1 -11
  180. package/dist/domain/permissions/index.js +3 -2
  181. package/dist/domain/storageTable/index.cjs +403 -9
  182. package/dist/domain/storageTable/index.cjs.map +1 -0
  183. package/dist/domain/storageTable/index.d.cts +189 -2
  184. package/dist/domain/storageTable/index.d.ts +189 -2
  185. package/dist/domain/storageTable/index.js +395 -1
  186. package/dist/domain/storageTable/index.js.map +1 -0
  187. package/dist/editor/index.cjs +3 -4
  188. package/dist/editor/index.d.cts +2 -4
  189. package/dist/editor/index.d.ts +2 -4
  190. package/dist/editor/index.js +3 -4
  191. package/dist/editor/types.d.cts +1 -1
  192. package/dist/editor/types.d.ts +1 -1
  193. package/dist/{emitter-dLF1Fyfg.d.ts → emitter-raKkIqRp.d.cts} +1 -3
  194. package/dist/{emitter-dLF1Fyfg.d.cts → emitter-raKkIqRp.d.ts} +1 -3
  195. package/dist/encryption/index.cjs +2 -3
  196. package/dist/encryption/index.d.cts +1 -1
  197. package/dist/encryption/index.d.ts +1 -1
  198. package/dist/encryption/index.js +2 -3
  199. package/dist/encryption/types.d.cts +1 -1
  200. package/dist/encryption/types.d.ts +1 -1
  201. package/dist/generateUUID-DE9sNyJF.js +5 -0
  202. package/dist/{generateUUID-Dr8l-aoc.js.map → generateUUID-DE9sNyJF.js.map} +1 -1
  203. package/dist/{generateUUID-C6qKBPIv.cjs → generateUUID-DbSTmvVP.cjs} +2 -3
  204. package/dist/{generateUUID-C6qKBPIv.cjs.map → generateUUID-DbSTmvVP.cjs.map} +1 -1
  205. package/dist/import/index.cjs +1 -1
  206. package/dist/import/index.d.cts +3 -5
  207. package/dist/import/index.d.ts +3 -5
  208. package/dist/import/index.js +1 -2
  209. package/dist/{import-BahNYv91.cjs → import-CABlFMQX.cjs} +6 -9
  210. package/dist/{import-BahNYv91.cjs.map → import-CABlFMQX.cjs.map} +1 -1
  211. package/dist/{import-FWy_wQZ1.js → import-CT1Ce5Rp.js} +6 -9
  212. package/dist/{import-FWy_wQZ1.js.map → import-CT1Ce5Rp.js.map} +1 -1
  213. package/dist/index-24GpnYhn.d.cts +150 -0
  214. package/dist/{index-BT88-GpA.d.ts → index-AA3MRfRn.d.cts} +4 -16
  215. package/dist/{index-C6oPUTWZ.d.ts → index-BDPxm9qu.d.ts} +3 -7
  216. package/dist/index-BUZ-vTRt.d.ts +150 -0
  217. package/dist/{index-XcnkRVb0.d.ts → index-BZDxWvZW.d.ts} +5 -7
  218. package/dist/index-BfAcp7O2.d.ts +10 -0
  219. package/dist/index-BsT_cBJd.d.ts +15117 -0
  220. package/dist/index-C1ndNdrN.d.cts +10 -0
  221. package/dist/{index-BiZR9BjN.d.ts → index-CbSh3KFw.d.cts} +4 -12
  222. package/dist/{index-BM_fXKq5.d.cts → index-ClIV2Lch.d.cts} +5 -7
  223. package/dist/{index-DReKz9Zt.d.ts → index-CuI8OI9E.d.ts} +4 -13
  224. package/dist/{index-BPMr8PQJ.d.ts → index-D1mduJne.d.cts} +2 -52
  225. package/dist/{index-CL4iKFic.d.cts → index-D1mduJne.d.ts} +1 -51
  226. package/dist/{index-DorowSay.d.ts → index-DIPMzH--.d.ts} +5 -9
  227. package/dist/{index-CbZQCDkD.d.cts → index-DQagqTVa.d.cts} +3 -7
  228. package/dist/{index-dgu6udMy.d.ts → index-DVBQgFg0.d.ts} +4 -6
  229. package/dist/{index-CrrHvDiX.d.cts → index-Day1Yr5s.d.ts} +8 -7
  230. package/dist/{index-Dkb8CynB.d.cts → index-Db266tLz.d.cts} +5 -9
  231. package/dist/{index-BVjhAkXW.d.cts → index-DgGpQsAT.d.cts} +4 -6
  232. package/dist/{index-PqJGDHHl.d.cts → index-DjSthn8d.d.ts} +4 -16
  233. package/dist/{index-DhZTIejy.d.ts → index-lTrNMlj6.d.ts} +3 -5
  234. package/dist/{index-DYNVbgm8.d.cts → index-m9-mN8Gg.d.ts} +4 -12
  235. package/dist/index-qJ2IjXIM.d.cts +15117 -0
  236. package/dist/{index-CtQl-Iqw.d.cts → index-xX8-Stoq.d.cts} +4 -13
  237. package/dist/{index-D6JMbJ9b.d.ts → index-xhzuWloV.d.cts} +8 -7
  238. package/dist/{index-DGKCTQkb.d.cts → index-z-2okomN.d.cts} +3 -5
  239. package/dist/index.cjs +433 -1055
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +9 -8
  242. package/dist/index.d.ts +9 -8
  243. package/dist/index.js +429 -1052
  244. package/dist/index.js.map +1 -1
  245. package/dist/{isLoginPageRedirect-r0Opgc1n.cjs → isLoginPageRedirect-CoUxJi2x.cjs} +3 -4
  246. package/dist/{isLoginPageRedirect-r0Opgc1n.cjs.map → isLoginPageRedirect-CoUxJi2x.cjs.map} +1 -1
  247. package/dist/{isLoginPageRedirect-B4QKSiSa.js → isLoginPageRedirect-D-lqF_kZ.js} +3 -4
  248. package/dist/{isLoginPageRedirect-B4QKSiSa.js.map → isLoginPageRedirect-D-lqF_kZ.js.map} +1 -1
  249. package/dist/{isPlainObject-LYW-03uB.js → isPlainObject-BxsT8_t2.js} +2 -3
  250. package/dist/{isPlainObject-LYW-03uB.js.map → isPlainObject-BxsT8_t2.js.map} +1 -1
  251. package/dist/{isPlainObject-BB3iy87C.cjs → isPlainObject-CcvQt0qB.cjs} +2 -3
  252. package/dist/{isPlainObject-BB3iy87C.cjs.map → isPlainObject-CcvQt0qB.cjs.map} +1 -1
  253. package/dist/kaiAgent/index.cjs +1 -1
  254. package/dist/kaiAgent/index.d.cts +2 -2
  255. package/dist/kaiAgent/index.d.ts +2 -2
  256. package/dist/kaiAgent/index.js +1 -2
  257. package/dist/kaiAgent/types.d.cts +1 -1
  258. package/dist/kaiAgent/types.d.ts +1 -1
  259. package/dist/{kaiAgent-N2qbUFZm.cjs → kaiAgent-CDhg0MAw.cjs} +16 -7
  260. package/dist/kaiAgent-CDhg0MAw.cjs.map +1 -0
  261. package/dist/{kaiAgent-CYvrS8oZ.js → kaiAgent-CYU1Uda8.js} +16 -7
  262. package/dist/kaiAgent-CYU1Uda8.js.map +1 -0
  263. package/dist/{kaiMemory-Qch09f-m.cjs → kaiMemory-CkLQfJXD.cjs} +6 -9
  264. package/dist/{kaiMemory-Qch09f-m.cjs.map → kaiMemory-CkLQfJXD.cjs.map} +1 -1
  265. package/dist/{kaiMemory-C9di17bd.js → kaiMemory-oir_qCo_.js} +6 -9
  266. package/dist/{kaiMemory-C9di17bd.js.map → kaiMemory-oir_qCo_.js.map} +1 -1
  267. package/dist/management/index.cjs +1 -1
  268. package/dist/management/index.d.cts +1 -1
  269. package/dist/management/index.d.ts +1 -1
  270. package/dist/management/index.js +1 -2
  271. package/dist/management/types.cjs +1 -2
  272. package/dist/management/types.d.cts +2 -2
  273. package/dist/management/types.d.ts +2 -2
  274. package/dist/management/types.js +1 -2
  275. package/dist/{management-B1o6RpKF.cjs → management-BEGOEQxM.cjs} +26 -45
  276. package/dist/management-BEGOEQxM.cjs.map +1 -0
  277. package/dist/{management-C9w3DNhs.js → management-BcGHyxAP.js} +26 -45
  278. package/dist/management-BcGHyxAP.js.map +1 -0
  279. package/dist/metastore/index.cjs +1 -1
  280. package/dist/metastore/index.d.cts +1 -1
  281. package/dist/metastore/index.d.ts +1 -1
  282. package/dist/metastore/index.js +1 -2
  283. package/dist/metastore/types.d.cts +1 -1
  284. package/dist/metastore/types.d.ts +1 -1
  285. package/dist/{metastore-Ywq08DBz.js → metastore-CGsgxjng.js} +7 -10
  286. package/dist/{metastore-Ywq08DBz.js.map → metastore-CGsgxjng.js.map} +1 -1
  287. package/dist/{metastore-BXHg33ku.cjs → metastore-DeRQ2VIv.cjs} +7 -10
  288. package/dist/{metastore-BXHg33ku.cjs.map → metastore-DeRQ2VIv.cjs.map} +1 -1
  289. package/dist/microsoftGraph/index.cjs +5 -8
  290. package/dist/microsoftGraph/index.cjs.map +1 -1
  291. package/dist/microsoftGraph/index.d.cts +3 -7
  292. package/dist/microsoftGraph/index.d.ts +3 -7
  293. package/dist/microsoftGraph/index.js +5 -8
  294. package/dist/microsoftGraph/index.js.map +1 -1
  295. package/dist/microsoftGraph/types.d.cts +2 -4
  296. package/dist/microsoftGraph/types.d.ts +2 -4
  297. package/dist/{middleware-GOfx8Apu.js → middleware-8zaJWcyU.js} +3 -5
  298. package/dist/middleware-8zaJWcyU.js.map +1 -0
  299. package/dist/{middleware-CEP6uu_D.cjs → middleware-B9RNuLfD.cjs} +3 -5
  300. package/dist/middleware-B9RNuLfD.cjs.map +1 -0
  301. package/dist/notifications/index.cjs +5 -6
  302. package/dist/notifications/index.d.cts +2 -4
  303. package/dist/notifications/index.d.ts +2 -4
  304. package/dist/notifications/index.js +5 -6
  305. package/dist/notifications/types.d.cts +1 -1
  306. package/dist/notifications/types.d.ts +1 -1
  307. package/dist/oauth/index.cjs +1 -1
  308. package/dist/oauth/index.d.cts +2 -4
  309. package/dist/oauth/index.d.ts +2 -4
  310. package/dist/oauth/index.js +1 -2
  311. package/dist/oauth/types.d.cts +1 -1
  312. package/dist/oauth/types.d.ts +1 -1
  313. package/dist/{oauth-DKZPuUlt.cjs → oauth-B5Biqz21.cjs} +7 -9
  314. package/dist/{oauth-DKZPuUlt.cjs.map → oauth-B5Biqz21.cjs.map} +1 -1
  315. package/dist/{oauth-GXmZ9agP.js → oauth-ByCdISsV.js} +7 -9
  316. package/dist/{oauth-GXmZ9agP.js.map → oauth-ByCdISsV.js.map} +1 -1
  317. package/dist/omnisearch/index.cjs +3 -4
  318. package/dist/omnisearch/index.d.cts +2 -4
  319. package/dist/omnisearch/index.d.ts +2 -4
  320. package/dist/omnisearch/index.js +3 -4
  321. package/dist/omnisearch/types.d.cts +1 -1
  322. package/dist/omnisearch/types.d.ts +1 -1
  323. package/dist/{project-ClH22nzH.js → project-DmuC0bMK.js} +6 -9
  324. package/dist/{project-ClH22nzH.js.map → project-DmuC0bMK.js.map} +1 -1
  325. package/dist/{project-Rh4nXiWh.cjs → project-Onf-IcPW.cjs} +9 -12
  326. package/dist/{project-Rh4nXiWh.cjs.map → project-Onf-IcPW.cjs.map} +1 -1
  327. package/dist/{project-DTfBtIJs.d.ts → project-UHZGFmmG.d.cts} +5 -9
  328. package/dist/{project-vOnvjo80.d.cts → project-iBm4cIIR.d.ts} +5 -9
  329. package/dist/queryService/index.cjs +1 -1
  330. package/dist/queryService/index.d.cts +1 -1
  331. package/dist/queryService/index.d.ts +1 -1
  332. package/dist/queryService/index.js +1 -2
  333. package/dist/queryService/types.d.cts +1 -1
  334. package/dist/queryService/types.d.ts +1 -1
  335. package/dist/{queryService-CzK53q94.cjs → queryService-Cg-eMysa.cjs} +9 -11
  336. package/dist/{queryService-CzK53q94.cjs.map → queryService-Cg-eMysa.cjs.map} +1 -1
  337. package/dist/{queryService-C-pZha5p.js → queryService-x8kq8Z2-.js} +9 -11
  338. package/dist/{queryService-C-pZha5p.js.map → queryService-x8kq8Z2-.js.map} +1 -1
  339. package/dist/queue/index.cjs +1 -1
  340. package/dist/queue/index.d.cts +4 -5
  341. package/dist/queue/index.d.ts +4 -5
  342. package/dist/queue/index.js +1 -2
  343. package/dist/queue/types.d.cts +1 -1
  344. package/dist/queue/types.d.ts +1 -1
  345. package/dist/{queue-D6-x4OGF.js → queue-BiIs9fX4.js} +9 -11
  346. package/dist/{queue-D6-x4OGF.js.map → queue-BiIs9fX4.js.map} +1 -1
  347. package/dist/{queue-BJvDWriM.cjs → queue-CBi9Q8vp.cjs} +9 -11
  348. package/dist/{queue-BJvDWriM.cjs.map → queue-CBi9Q8vp.cjs.map} +1 -1
  349. package/dist/{rolldown-runtime-VH7oDXx4.cjs → rolldown-runtime-CmQyd0Gu.cjs} +1 -2
  350. package/dist/scheduler/index.cjs +5 -6
  351. package/dist/scheduler/index.d.cts +2 -4
  352. package/dist/scheduler/index.d.ts +2 -4
  353. package/dist/scheduler/index.js +5 -6
  354. package/dist/scheduler/types.d.cts +1 -1
  355. package/dist/scheduler/types.d.ts +1 -1
  356. package/dist/{schema-BUyMwQnM.d.cts → schema-DLmBEgPM.d.cts} +1 -3
  357. package/dist/{schema-BUyMwQnM.d.ts → schema-DLmBEgPM.d.ts} +1 -3
  358. package/dist/schemaGuidedMerge-C8CqrNGe.cjs +55 -0
  359. package/dist/schemaGuidedMerge-C8CqrNGe.cjs.map +1 -0
  360. package/dist/schemaGuidedMerge-DFNqj9Nz.js +44 -0
  361. package/dist/schemaGuidedMerge-DFNqj9Nz.js.map +1 -0
  362. package/dist/sdk/configurations/index.cjs +634 -2
  363. package/dist/sdk/configurations/index.cjs.map +1 -0
  364. package/dist/sdk/configurations/index.d.cts +1030 -4
  365. package/dist/sdk/configurations/index.d.ts +1030 -4
  366. package/dist/sdk/configurations/index.js +633 -1
  367. package/dist/sdk/configurations/index.js.map +1 -0
  368. package/dist/sdk/developerPortal/index.cjs +9 -13
  369. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  370. package/dist/sdk/developerPortal/index.d.cts +4 -6
  371. package/dist/sdk/developerPortal/index.d.ts +4 -6
  372. package/dist/sdk/developerPortal/index.js +9 -13
  373. package/dist/sdk/developerPortal/index.js.map +1 -1
  374. package/dist/sdk/kaiMemory/index.cjs +1 -1
  375. package/dist/sdk/kaiMemory/index.d.cts +1 -3
  376. package/dist/sdk/kaiMemory/index.d.ts +1 -3
  377. package/dist/sdk/kaiMemory/index.js +1 -2
  378. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  379. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  380. package/dist/sdk/queryService/index.cjs +3 -4
  381. package/dist/sdk/queryService/index.d.cts +1 -1
  382. package/dist/sdk/queryService/index.d.ts +1 -1
  383. package/dist/sdk/queryService/index.js +3 -4
  384. package/dist/sdk/semanticLayer/index.cjs +1 -1
  385. package/dist/sdk/semanticLayer/index.d.cts +1 -7
  386. package/dist/sdk/semanticLayer/index.d.ts +1 -7
  387. package/dist/sdk/semanticLayer/index.js +1 -2
  388. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  389. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  390. package/dist/sdk/storage/index.cjs +3 -6
  391. package/dist/sdk/storage/index.cjs.map +1 -1
  392. package/dist/sdk/storage/index.d.cts +0 -6
  393. package/dist/sdk/storage/index.d.ts +0 -6
  394. package/dist/sdk/storage/index.js +3 -6
  395. package/dist/sdk/storage/index.js.map +1 -1
  396. package/dist/sdk/tag/index.cjs +1 -1
  397. package/dist/sdk/tag/index.d.cts +3 -5
  398. package/dist/sdk/tag/index.d.ts +3 -5
  399. package/dist/sdk/tag/index.js +1 -2
  400. package/dist/sdk/tag/types.d.cts +1 -1
  401. package/dist/sdk/tag/types.d.ts +1 -1
  402. package/dist/sdk/vault/index.cjs +3 -5
  403. package/dist/sdk/vault/index.cjs.map +1 -1
  404. package/dist/sdk/vault/index.d.cts +1 -1
  405. package/dist/sdk/vault/index.d.ts +1 -1
  406. package/dist/sdk/vault/index.js +3 -5
  407. package/dist/sdk/vault/index.js.map +1 -1
  408. package/dist/{semanticLayer-DvjS_nzo.js → semanticLayer-BdPW_wLo.js} +9 -14
  409. package/dist/{semanticLayer-DvjS_nzo.js.map → semanticLayer-BdPW_wLo.js.map} +1 -1
  410. package/dist/{semanticLayer-7BejcMj_.cjs → semanticLayer-djom-J78.cjs} +9 -14
  411. package/dist/{semanticLayer-7BejcMj_.cjs.map → semanticLayer-djom-J78.cjs.map} +1 -1
  412. package/dist/status/index.cjs +2 -3
  413. package/dist/status/index.d.cts +1 -3
  414. package/dist/status/index.d.ts +1 -3
  415. package/dist/status/index.js +2 -3
  416. package/dist/status/types.d.cts +0 -2
  417. package/dist/status/types.d.ts +0 -2
  418. package/dist/storage/index.cjs +9 -9
  419. package/dist/storage/index.d.cts +3 -2
  420. package/dist/storage/index.d.ts +3 -2
  421. package/dist/storage/index.js +9 -9
  422. package/dist/storage/types.d.cts +6 -6
  423. package/dist/storage/types.d.ts +6 -6
  424. package/dist/{storage-CChfKlrb.js → storage-BpOLWT6h.js} +54 -89
  425. package/dist/{storage-CChfKlrb.js.map → storage-BpOLWT6h.js.map} +1 -1
  426. package/dist/{storage-Ci9gXgcw.cjs → storage-KJ5Ki_ma.cjs} +53 -88
  427. package/dist/{storage-Ci9gXgcw.cjs.map → storage-KJ5Ki_ma.cjs.map} +1 -1
  428. package/dist/{store-xS-Cu_VS.cjs → store-2OyH1XOP.cjs} +3 -5
  429. package/dist/{store-xS-Cu_VS.cjs.map → store-2OyH1XOP.cjs.map} +1 -1
  430. package/dist/{store-C9FQCHGe.js → store-HP0zRcLz.js} +3 -5
  431. package/dist/{store-C9FQCHGe.js.map → store-HP0zRcLz.js.map} +1 -1
  432. package/dist/stream/index.cjs +4 -5
  433. package/dist/stream/index.d.cts +2 -4
  434. package/dist/stream/index.d.ts +2 -4
  435. package/dist/stream/index.js +4 -5
  436. package/dist/stream/types.d.cts +1 -1
  437. package/dist/stream/types.d.ts +1 -1
  438. package/dist/{suggestions-BH3x7xU7.d.ts → suggestions-xhIjrlvi.d.cts} +1 -3
  439. package/dist/{suggestions-BH3x7xU7.d.cts → suggestions-xhIjrlvi.d.ts} +1 -3
  440. package/dist/syncActions/index.cjs +1 -1
  441. package/dist/syncActions/index.d.cts +2 -2
  442. package/dist/syncActions/index.d.ts +2 -2
  443. package/dist/syncActions/index.js +1 -2
  444. package/dist/syncActions/types.d.cts +2 -2
  445. package/dist/syncActions/types.d.ts +2 -2
  446. package/dist/{syncActions-C1rE4R3f.cjs → syncActions-BcX3jm2E.cjs} +74 -187
  447. package/dist/syncActions-BcX3jm2E.cjs.map +1 -0
  448. package/dist/{syncActions-DM8vP7p3.js → syncActions-giPLTfje.js} +73 -186
  449. package/dist/syncActions-giPLTfje.js.map +1 -0
  450. package/dist/{tag-DHS_soa7.cjs → tag-A5z4tJn1.cjs} +5 -7
  451. package/dist/{tag-DHS_soa7.cjs.map → tag-A5z4tJn1.cjs.map} +1 -1
  452. package/dist/{tag-hh-1nhNr.js → tag-BwjbG3tT.js} +5 -7
  453. package/dist/{tag-hh-1nhNr.js.map → tag-BwjbG3tT.js.map} +1 -1
  454. package/dist/telemetry/index.cjs +4 -5
  455. package/dist/telemetry/index.d.cts +2 -4
  456. package/dist/telemetry/index.d.ts +2 -4
  457. package/dist/telemetry/index.js +4 -5
  458. package/dist/telemetry/types.d.cts +1 -1
  459. package/dist/telemetry/types.d.ts +1 -1
  460. package/dist/{transientRetries-B4iusp69.js → transientRetries-BKqmb85B.js} +13 -22
  461. package/dist/{transientRetries-B4iusp69.js.map → transientRetries-BKqmb85B.js.map} +1 -1
  462. package/dist/{transientRetries-DdJfH9QK.cjs → transientRetries-CM7rAEXQ.cjs} +13 -22
  463. package/dist/{transientRetries-DdJfH9QK.cjs.map → transientRetries-CM7rAEXQ.cjs.map} +1 -1
  464. package/dist/{types-DODAZKEm.d.ts → types--Rp5wvaz.d.ts} +2 -6
  465. package/dist/{types-JZ0Bdlpk.d.cts → types-1IBnjBVJ.d.cts} +2 -6
  466. package/dist/{types-BZ--6pIt.d.ts → types-37vwxse4.d.cts} +2 -6
  467. package/dist/{types-RogkWzOu.d.ts → types-6T04_qUf.d.ts} +2 -6
  468. package/dist/{types-TmrPVMhy.d.cts → types-B0e-no6u.d.ts} +18 -38
  469. package/dist/{types-ptynVnkv.d.cts → types-B1qe1etN.d.cts} +3 -7
  470. package/dist/{types-BXybSjn-.d.ts → types-B3ri-iiC.d.ts} +2 -26
  471. package/dist/{types-Duurgaqk.d.cts → types-B8k1DqlU.d.ts} +129 -10
  472. package/dist/{types-BOT6TgOS.d.ts → types-BE8abIig.d.cts} +2 -6
  473. package/dist/{types-BrpIEj_N.d.ts → types-BWMOK6eL.d.cts} +2 -6
  474. package/dist/{types-D53zBV25.d.ts → types-Bat0SIZA.d.cts} +16 -97
  475. package/dist/{types-Dy6EdWPG.d.ts → types-Bdl7EFMc.d.ts} +2 -6
  476. package/dist/{types-_zKX6JmD.d.ts → types-BiDdBXSm.d.ts} +2 -8
  477. package/dist/{types-dn6MHur3.d.cts → types-BrEVh0WE.d.cts} +253 -10
  478. package/dist/{types-BnmsuDfH.d.cts → types-BuclMPeY.d.cts} +2 -26
  479. package/dist/{types-302-NBaU.d.ts → types-C9okze_R.d.ts} +3 -7
  480. package/dist/{types-BT5e9TSQ.d.ts → types-CPWjRdnj.d.cts} +18 -38
  481. package/dist/{types-C614wC5h.d.cts → types-CRubbBcU.d.cts} +2 -6
  482. package/dist/{types-DlhNay1n.d.ts → types-CWcdaq-K.d.ts} +2 -6
  483. package/dist/{types-D9ZKJYZk.d.ts → types-CcGp6O3B.d.cts} +3 -7
  484. package/dist/{types-45O2dU2w.d.ts → types-Cr5lyI99.d.ts} +2 -6
  485. package/dist/{types-CY8X39qv.d.cts → types-CxEJ77m3.d.cts} +3 -7
  486. package/dist/{types-DmzSFOhK.d.cts → types-D-tJt0hQ.d.cts} +2 -6
  487. package/dist/{types-BjwbzqJd.d.ts → types-D6lre27s.d.ts} +2 -8
  488. package/dist/{types-0R9-osUJ.d.ts → types-DHMxPJZq.d.cts} +2 -6
  489. package/dist/{types-jN2KmMet.d.cts → types-DJzTVMu1.d.ts} +2 -6
  490. package/dist/{types-CfXqFz2e.d.ts → types-DKSUG2dZ.d.ts} +253 -10
  491. package/dist/{types-CpJhWBmH.d.cts → types-DNgazFnF.d.cts} +2 -8
  492. package/dist/{types-DjadPty5.d.ts → types-DRCttnIN.d.ts} +2 -6
  493. package/dist/{types-CeqZuOEC.d.ts → types-DUpVIuk7.d.ts} +2 -6
  494. package/dist/{types-DqOxIujY.d.ts → types-DeyXJzWz.d.cts} +2 -6
  495. package/dist/{types-O6XM48J8.d.cts → types-Dryq2GGE.d.cts} +2 -6
  496. package/dist/{types-CjNl7O7f.d.cts → types-DschSZHf.d.cts} +3 -5
  497. package/dist/{types-BUirSne-.d.ts → types-DtOfhDzz.d.ts} +3 -5
  498. package/dist/{types-CkJxMoTk.d.cts → types-Du5o-tud.d.ts} +16 -97
  499. package/dist/{types-ChLWY8aU.d.cts → types-DwbTiyhZ.d.cts} +2 -6
  500. package/dist/{types-HmK8iKp5.d.cts → types-E8tzafsk.d.cts} +3 -7
  501. package/dist/{types-DpbrGDRf.d.cts → types-LconaX98.d.cts} +2 -6
  502. package/dist/{types-tdIo5FpR.d.ts → types-PZzNANiS.d.cts} +129 -10
  503. package/dist/{types-CTS2NSIb.d.cts → types-YpOm4yXE.d.cts} +2 -8
  504. package/dist/{types-DbXV0g8U.d.cts → types-ZZwdKCBl.d.ts} +2 -6
  505. package/dist/{types-jfPoUlO8.d.cts → types-eFi8xJIM.d.cts} +2 -6
  506. package/dist/{types-DV7K07oX.d.cts → types-inG9y3dP.d.ts} +2 -6
  507. package/dist/{types-BM6rri7-.d.ts → types-ir7T2a9a.d.ts} +3 -7
  508. package/dist/{types-BAsYMltG.d.cts → types-jjOulnni.d.ts} +2 -6
  509. package/dist/{types-vvw_H7wp.d.cts → types-wYrC2boT.d.ts} +3 -7
  510. package/dist/{types-BWzt1ju_.d.ts → types-xzt_2H63.d.ts} +3 -7
  511. package/dist/{types-D2Pb_4FA.d.cts → types-zPY-XGnM.d.ts} +2 -6
  512. package/dist/{validateConnectionStatus-BalWEyRk.cjs → validateConnectionStatus-BjemGI1e.cjs} +5 -7
  513. package/dist/{validateConnectionStatus-BalWEyRk.cjs.map → validateConnectionStatus-BjemGI1e.cjs.map} +1 -1
  514. package/dist/{validateConnectionStatus-DyrYpn0G.js → validateConnectionStatus-DYwWeWVo.js} +5 -7
  515. package/dist/{validateConnectionStatus-DyrYpn0G.js.map → validateConnectionStatus-DYwWeWVo.js.map} +1 -1
  516. package/dist/vault/index.cjs +7 -8
  517. package/dist/vault/index.d.cts +1 -1
  518. package/dist/vault/index.d.ts +1 -1
  519. package/dist/vault/index.js +7 -8
  520. package/dist/vault/types.d.cts +1 -1
  521. package/dist/vault/types.d.ts +1 -1
  522. package/package.json +7 -7
  523. package/surface/apps.md +12 -10
  524. package/surface/chat.md +1 -1
  525. package/surface/dataScience.md +1 -1
  526. package/surface/editor.md +5 -5
  527. package/surface/kaiAgent.md +5 -4
  528. package/surface/management.md +1 -1
  529. package/surface/queue.md +3 -3
  530. package/surface/sdk.md +0 -6
  531. package/surface/stack.md +11 -0
  532. package/surface/storage.md +2 -2
  533. package/surface/stream.md +6 -6
  534. package/surface/syncActions.md +1 -2
  535. package/dist/configurations-B44z6BSO.js +0 -718
  536. package/dist/configurations-B44z6BSO.js.map +0 -1
  537. package/dist/configurations-CL0ouUMa.js.map +0 -1
  538. package/dist/configurations-D9J3jh3g.cjs.map +0 -1
  539. package/dist/configurations-Dkxsa3Uf.cjs +0 -735
  540. package/dist/configurations-Dkxsa3Uf.cjs.map +0 -1
  541. package/dist/constants-DErcRkWl.cjs.map +0 -1
  542. package/dist/constants-VpSwBtCb.js.map +0 -1
  543. package/dist/createGenericFetchClient-CQdNcPC3.js +0 -7
  544. package/dist/createOpenapiFetchClient-DXiMv9WL.js +0 -7
  545. package/dist/generateUUID-Dr8l-aoc.js +0 -6
  546. package/dist/index-Be2dNJ_N.d.cts +0 -23582
  547. package/dist/index-BfqkgPGI.d.cts +0 -34
  548. package/dist/index-BfqkgPGI.d.ts +0 -34
  549. package/dist/index-fMoM8SeH.d.cts +0 -199
  550. package/dist/index-fMoM8SeH.d.ts +0 -199
  551. package/dist/index-uGRdAORl.d.ts +0 -23582
  552. package/dist/kaiAgent-CYvrS8oZ.js.map +0 -1
  553. package/dist/kaiAgent-N2qbUFZm.cjs.map +0 -1
  554. package/dist/management-B1o6RpKF.cjs.map +0 -1
  555. package/dist/management-C9w3DNhs.js.map +0 -1
  556. package/dist/middleware-CEP6uu_D.cjs.map +0 -1
  557. package/dist/middleware-GOfx8Apu.js.map +0 -1
  558. package/dist/storageTable-BNOR2FCh.cjs +0 -442
  559. package/dist/storageTable-BNOR2FCh.cjs.map +0 -1
  560. package/dist/storageTable-BldTNyEk.js +0 -395
  561. package/dist/storageTable-BldTNyEk.js.map +0 -1
  562. package/dist/syncActions-C1rE4R3f.cjs.map +0 -1
  563. package/dist/syncActions-DM8vP7p3.js.map +0 -1
  564. package/surface/context.md +0 -40
package/AGENTS.md CHANGED
@@ -26,10 +26,10 @@ the working tree to diff, so discard afterwards. See
26
26
 
27
27
  ## Getting a client
28
28
 
29
- **React (the common case).** In `apps/kbc-ui` and other React apps, use `useApiClient()` from [`@keboola/api-client-react`](../api-client-react/AGENTS.md) — it returns the flow-agnostic `api` (auth + management + product namespaces). At startup an auth provider (`LegacyAuthProvider` for SAPI, `AuthProvider` for bearer) drives the module-load singleton's `session` to ready and renders a fallback until then; `ApiClientProvider` propagates that `api` to the tree. Don't create a client per component.
29
+ **React (the common case).** In `apps/kbc-ui` and other React apps, use the hooks from [`@keboola/api-client-react`](../api-client-react/AGENTS.md): `useProjectApi()` for one project's `ProjectApi` (auth + management + product namespaces), `useStackApi()` for the `StackApi` that is there before a project (sign-in, the account, the project list). `StackApiProvider` and `ProjectApiProvider` propagate them; a `ProjectApiProvider` provides its stack too. Don't create a client per component.
30
30
 
31
31
  ```ts
32
- const api = useApiClient();
32
+ const api = useProjectApi();
33
33
  const { data } = useQuery({
34
34
  queryKey: storageApiKey.getTable(id),
35
35
  queryFn: ({ signal }) => api.storage.tables.getTable({ branchId, tableId: id }, signal),
@@ -38,8 +38,8 @@ const { data } = useQuery({
38
38
 
39
39
  **Scripts / CLIs / non-React.** Create one directly — pick the smallest that covers you:
40
40
 
41
- - **`createStorageClient`** — Storage-only. Needs only `baseUrl` + `token`, skipping the stack-info round-trip. Start here when in doubt; upgrading later is mechanical, downgrading is not. (React apps still get their client via `ApiClientProvider` + `useApiClient()` — see above; this section is about the non-React/single-service case.)
42
- - **`createLegacyKeboola` / `createKeboola`** — full SDK across all stack services. `createLegacyKeboola` returns `{ api, session }` and `createKeboola` returns `{ session, getActiveApi, getApi }`; drive the `session` to ready, then use the product surface. Bootstrap (`getStackInfo` + `tokens.verify()` to discover services against the actual stack) runs while the storage build resolves, after which `api.context` is synchronous. Every stack service — including `metastore` — is resolved from the stack's advertised service URLs. See the lifecycle section below for the per-flow `session` verbs. The token-less public clients `createAssetsClient` / `createStatusClient` are **not** part of this — import them directly from `@keboola/api-client/assets` and `@keboola/api-client/status`.
41
+ - **`createStorageClient`** — Storage-only. Needs only `baseUrl` + `token`, skipping the stack-info round-trip. Start here when in doubt; upgrading later is mechanical, downgrading is not. (React apps still get their client via `ProjectApiProvider` + `useProjectApi()` — see above; this section is about the non-React/single-service case.)
42
+ - **`createLegacyKeboola` / `createKeboola`** — full SDK across all stack services. `createLegacyKeboola` returns `{ api, session }` and `createKeboola` returns `{ session, getStackApi, getProjectApi }`; drive the `session` to ready, then use the product surface. Bootstrap (`getStackInfo`, to discover services against the actual stack) runs while the storage build resolves, after which `api.stack` is synchronous. The verified token and the dev branches are the consumer's to fetch (`api.storage.tokens.verify()`, `api.storage.branches.getDevBranches()`) and derive with `createProject` / `createDefaultBranch` — kbc-ui holds them in TanStack queries (`useProject` reads the token). Every stack service — including `metastore` — is resolved from the stack's advertised service URLs. See the lifecycle section below for the per-flow `session` verbs. The token-less public clients `createAssetsClient` / `createStatusClient` are **not** part of this — import them directly from `@keboola/api-client/assets` and `@keboola/api-client/status`.
43
43
 
44
44
  **`clients/` also holds clients for third-party APIs the platform talks to directly** (`microsoftGraph` today): a vendor API is still HTTP that must run through the shared fetch client, its middleware chain and its error guards, so it gets a client here rather than a hand-rolled `fetch` in the consuming app. They differ from stack clients in three ways, and a new one should follow the same rules: **never** registered in `createServiceClients.ts` (they are not stack services, so they must not appear on `api.*`), they default their own `baseUrl` (a vendor's host and version prefix are part of its API contract, not something we discover or configure), and they carry no `healthCheck` (we don't own the service's liveness). Consumers construct them directly from the sub-path, like the token-less clients above.
45
45
 
@@ -60,7 +60,7 @@ import { createLegacyKeboola } from '@keboola/api-client';
60
60
 
61
61
  const { api, session } = createLegacyKeboola({ baseUrl: process.env.KEBOOLA_STACK_URL! });
62
62
  await session.authenticateStorageAsync(process.env.KEBOOLA_STORAGE_TOKEN!);
63
- const stack = api.context.stack; // synchronous — the storage build has resolved
63
+ const stack = api.stack; // synchronous — the storage build has resolved
64
64
  const buckets = await api.storage.buckets.getBuckets();
65
65
  ```
66
66
 
@@ -68,31 +68,34 @@ const buckets = await api.storage.buckets.getBuckets();
68
68
 
69
69
  Two flow-specific factories back the SDK:
70
70
 
71
- - `createKeboola({ defaultBaseUrl, … })` — the **bearer (OAuth)** flow. Returns `{ session, getActiveApi, getApi }`;
72
- `getActiveApi()` is the scoped product surface, `getApi(projectId)` a pinned one (see below).
71
+ - `createKeboola({ defaultBaseUrl, … })` — the **bearer (OAuth)** flow. Returns
72
+ `{ session, getStackApi, getProjectApi }`; `getStackApi()` is the active stack's surface,
73
+ `getProjectApi(projectId)` one project's (see below).
73
74
  - `createLegacyKeboola(opts?)` — the **legacy (SAPI-token)** flow. Returns `{ api, session }`.
74
75
 
75
76
  `api` is the same **flow-agnostic** product surface for both — a state-gating proxy:
76
77
 
77
78
  - **`api.auth.*`** — auth-service client, live once a `baseUrl` is configured.
78
79
  - **`api.management.*`** — management client, live once the management realm authenticates.
79
- - **`api.storage` / `api.queue` / `api.context` / `api.sdk` / …** — product namespaces, live only once
80
- the async storage build reaches `ready` (throw `KeboolaError` (`NotReady`) before that).
80
+ - **`api.storage` / `api.queue` / `api.stack` / `api.sdk` / …** — product namespaces. Under the
81
+ legacy flow, live once the async storage build reaches `ready`; under bearer, `api.storage` is live
82
+ from the sign-in on and the rest once the stack index lands (throw `KeboolaError` (`NotReady`)
83
+ before that).
81
84
 
82
85
  `session` is **flow-specific** lifecycle machinery:
83
86
 
84
- - bearer: `stack.select(baseUrl)` → `auth.authenticate(credential)` → `project.select(projectId)`,
85
- plus `auth.signOut({ baseUrl?, retain? }?)` / `auth.replace(credential)` / `auth.isAuthenticated()` / `auth.isAuthenticatedAsync()` / `auth.rotate(baseUrl)` / `auth.getHeaders(projectId?)` / `auth.getHeadersAsync(projectId?)`, `auth.restoreRetained(baseUrl)`, `stack.close` and
86
- the two `deactivate`s, and `getState()` / `subscribe(cb)` over the stack-and-project table. Every
87
- verb changes the table synchronously — nothing awaits a build; a namespace throws `NotReady` until
88
- its fetch lands. `stack.select`, `project.select` and `auth.signOut` also return a promise that
89
- resolves once the change is stored: await it before leaving the document, or the reload boots
90
- from the scope or sign-in it was meant to replace.
91
- The one fetch each entry does own is readable both ways: `stack.getContext(baseUrl?)` /
92
- `project.getContext(entryId?)` answer from cache (`null` until it lands), and the
93
- `getContextAsync` sibling of each awaits it. `retryContext` refetches after a failure. The
94
- project trio keys by `${baseUrl}#${projectId}` — a row on any stack — where `getApi` and
95
- `auth.getHeaders` take a bare project id and address the active stack.
87
+ - bearer: `stack.select(baseUrl)` → `auth.authenticate(credential)`, plus
88
+ `auth.signOut({ baseUrl?, retain? }?)` / `auth.replace(credential)` / `auth.isAuthenticated()` /
89
+ `auth.isAuthenticatedAsync()` / `auth.getHeadersAsync(projectId)` /
90
+ `auth.restoreRetained(baseUrl)`, and `getState()` / `subscribe(cb)` over the stack table. Every verb changes the table synchronously —
91
+ nothing awaits a build; `api.stack` throws `NotReady` until the stack index lands.
92
+ `stack.select` and `auth.signOut` also return a promise that resolves once the change is stored:
93
+ await it before leaving the document, or the reload boots from the stack or sign-in it was meant
94
+ to replace.
95
+ That one fetch is readable both ways: `stack.getContext(baseUrl?)` answers from cache (`null`
96
+ until it lands), and `stack.getContextAsync` awaits it, fetching again after a failure.
97
+ **The table knows no project.** `active` is a stack's `baseUrl`; which project the app is in is
98
+ the app's to keep (kbc-ui: the URL's `:projectId`), and it names it to `getProjectApi`.
96
99
  - legacy: `setBaseUrl`, `authenticateStorage(sapiToken)` / `authenticateStorageAsync(sapiToken)`
97
100
  (awaits the build), `authenticateManagement(manageToken)`, `isStorageReady()`, `subscribe(cb)`
98
101
  (fires on config **and** storage-build transitions) and `debug()`.
@@ -104,24 +107,25 @@ await session.authenticateStorageAsync(token);
104
107
  const buckets = await api.storage.buckets.getBuckets(defaultBranchId);
105
108
 
106
109
  // Bearer (OAuth) login flow (browser)
107
- const { session, getActiveApi } = createKeboola({ defaultBaseUrl: baseUrl }); // `auth` is live now
108
- const result = await getActiveApi().auth.login.withPassword({ email, password });
110
+ // `auth` is live from here on
111
+ const { session, getStackApi, getProjectApi } = createKeboola({ defaultBaseUrl: baseUrl });
112
+ const result = await getStackApi().auth.login.withPassword({ email, password });
109
113
  if (!result.mfaRequired) session.auth.authenticate({ type: 'token', ...result });
110
- session.project.select(projectId); // → the scope `getActiveApi()` addresses
114
+ const api = getProjectApi(projectId); // → every product namespace, for the project the app is in
111
115
  ```
112
116
 
113
117
  ### Several projects at once (bearer)
114
118
 
115
119
  One credential reaches every project on its stack — project scope is one header, `X-KBC-ProjectId` —
116
- so `getApi(projectId)` hands out a product surface per project, off the client already in hand:
120
+ so `getProjectApi(projectId)` hands out a product surface per project, off the client already in
121
+ hand:
117
122
 
118
123
  ```ts
119
- const { session, getActiveApi, getApi } = createKeboola({ defaultBaseUrl: baseUrl });
124
+ const { session, getProjectApi } = createKeboola({ defaultBaseUrl: baseUrl });
120
125
  session.auth.authenticate(credential);
121
- session.project.select(42);
122
126
 
123
- const api = getActiveApi(); // the scoped project, 42
124
- const other = getApi(7); // project 7, opened by the call
127
+ const api = getProjectApi(42);
128
+ const other = getProjectApi(7);
125
129
 
126
130
  const [mine, theirs] = await Promise.all([
127
131
  api.storage.buckets.getBuckets({ branchId: 'default' }),
@@ -129,50 +133,48 @@ const [mine, theirs] = await Promise.all([
129
133
  ]);
130
134
  ```
131
135
 
132
- Both return the same `KeboolaApi`, and both are synchronous and lazy: the surface resolves per
133
- property read, so a namespace throws `KeboolaError` (`NotReady`) until that project's context fetch
134
- lands, exactly as the scoped one does.
136
+ Both are synchronous and lazy: the surface resolves per property read, so `stack` throws
137
+ `KeboolaError` (`NotReady`) until the stack index lands.
135
138
 
136
- **The method is the lifetime, and that is the whole difference:**
139
+ **Two handles, two lifetimes:**
137
140
 
138
- - **`getActiveApi()` follows the scope.** It re-points when `session.project.select` moves, so a
139
- component holding it sees the new project. This is the handle an app is centred on, and what
140
- `ApiClientProvider` propagates to `useApiClient()`.
141
- - **`getApi(7)` is pinned.** It never re-points, and it stops working when project 7 closes — by
142
- `session.project.close(7)`, or by a sign-out, which closes every project on the stack. A handle
143
- held across either throws `No project "…"` on its next read rather than quietly serving whoever
144
- signed in after. Ask for a fresh one.
141
+ - **`getStackApi()` is the active stack's `StackApi`.** `auth`, `management`, `baseUrl` and `stack`
142
+ follow `session.stack.select`; it has no project namespace. It is what an app uses before there is
143
+ a project — sign-in, the project picker.
144
+ - **`getProjectApi(7)` is one project's `ProjectApi`, pinned.** It never re-points, and it lives as
145
+ long as the sign-in it was built under. A handle held across a sign-out throws on its next read
146
+ rather than quietly serving whoever signed in after. Ask for a fresh one.
145
147
 
146
- Three things follow from that, worth knowing before you hold one:
148
+ Worth knowing before you hold one:
147
149
 
148
- - **`getApi(7)` opens project 7**, which starts its context fetch and persists the row — so the
149
- project comes back on reload, alongside the scoped one. **Close it when you are done with it**
150
- (`session.project.close(7)`), or the set only grows and every reload re-fetches all of it. The
151
- open is attempted, not required: asked for before the sign-in lands, the handle comes back
152
- anyway and its reads throw until the row exists. It resolves against the **active stack at call
153
- time** and pins the result; nothing follows a later `session.stack.select`.
150
+ - **`getProjectApi(7)` holds no state.** Nothing is written to the table or persisted, so there is
151
+ nothing to close; the app keeps which project it is in. Asked for before the sign-in lands, the
152
+ handle comes back anyway and its reads throw `NotAuthenticated` until one does. It resolves
153
+ against the **active stack at call time** and pins the result; nothing follows a later
154
+ `session.stack.select`.
154
155
  - **One credential, one refresh loop.** Every handle shares the stack's auth middleware, which reads
155
156
  the credential live, so a rotation happens once and serves all of them. `auth` and `management`
156
157
  answer for the stack the handle's project sits on, not for whatever stack is active.
157
158
  - **A project you cannot reach fails the request, not the session.** Connection answers a denied or
158
159
  nonexistent project with the same `invalid_token` 401 as a revoked token — collapsed deliberately,
159
- so scope cannot be probed. So a 401 is never read as expiry: the project's row goes `errored` and
160
- the sign-in stands. **The refresh is the only oracle** — the server refusing the refresh token is
160
+ so scope cannot be probed. So a 401 is never read as expiry: the request fails and the sign-in
161
+ stands. **The refresh is the only oracle** — the server refusing the refresh token is
161
162
  the one unambiguous report of a dead credential, and that is where the sign-out happens
162
163
  (`rotateOnce` in `credentials.ts`). A cookie credential's refresh is the same oracle: the server
163
164
  refusing its session signs it out. `onExpired` on `createKeboola` reports that sign-out, once per
164
165
  sign-in and never for one the caller made, so an app can leave the document.
165
- - **Memoised per project** — `getApi(7) === getApi(7)`, which is what React `key`s and hook deps
166
- need. A sign-out drops everything built for that stack's projects, so a reopened project is built
167
- from scratch rather than from what the previous sign-in left behind.
168
-
169
- `session.auth.getHeaders(projectId?)` takes the same optional argument, for a transport that is not
170
- a fetch client (the chat stream). Pass the project whose `api` produced the URL, so the request's
166
+ - **Memoised per project** — `getProjectApi(7) === getProjectApi(7)`, which is what React `key`s and
167
+ hook deps need. A sign-out drops everything built for that stack's projects, so the next sign-in's
168
+ handle is built from scratch rather than from what the previous sign-in left behind.
169
+ - **A project's token is not on the handle.** `api.storage.tokens.verify()` answers for the project
170
+ the handle names; derive the features with `createProject` and keep it where the app keeps state.
171
+
172
+ `session.auth.getHeadersAsync(projectId)` takes the same argument, for a transport that is not a
173
+ fetch client (the chat stream). Pass the project whose `api` produced the URL, so the request's
171
174
  headers and its target name the same project. A project id alone does not name a project — two
172
- stacks can each have a project 138 — so the active stack decides, falling back to a single project
173
- with that id open elsewhere. `getHeaders` reads the token the fetch clients keep fresh;
174
- `auth.getHeadersAsync(projectId?)` renews it first once it nears expiry, for a transport that can
175
- run after the fetch traffic has gone quiet.
175
+ stacks can each have a project 138 — so it resolves on the active stack, as `getProjectApi` does.
176
+ It renews the token first once it nears expiry, for a transport that can run after the fetch
177
+ traffic has gone quiet.
176
178
 
177
179
  ⚠️ **One client per stack, per page.** Two `createKeboola()` instances signed in to the same stack
178
180
  share its single-use refresh token: whichever rotates first invalidates the other's, and that one's
@@ -187,9 +189,9 @@ two-phase rotation and replay detection on the server. Whichever instance rotate
187
189
  the other's token, whose next refresh 401s and signs it out. This is a functional break, not a style
188
190
  preference, and it does not depend on a `storage` adapter being configured.
189
191
 
190
- In React, `useApiClient()` returns `api`; `AuthProvider` (bearer) / `LegacyAuthProvider` (legacy) own
191
- driving the `session` to ready and gate on a `fallback`. See
192
- [`@keboola/api-client-react`](../api-client-react/AGENTS.md).
192
+ In React, `useStackApi()` and `useProjectApi()` read what `StackApiProvider` and
193
+ `ProjectApiProvider` provide; `LegacyAuthProvider` drives a SAPI session to ready and gates on a
194
+ `fallback`. See [`@keboola/api-client-react`](../api-client-react/AGENTS.md).
193
195
 
194
196
  **Persisting the bearer session.** `createKeboola` accepts a `storage` adapter (bearer only). Omit it
195
197
  and the session is in-memory (lost on reload); pass a storage adapter to make it durable:
@@ -200,17 +202,17 @@ import { createLocalStorage } from '@keboola/api-client';
200
202
  // `defaultBaseUrl` is active from here on, until `resume()` or `stack.select` moves it.
201
203
  const { session } = createKeboola({ defaultBaseUrl, storage: createLocalStorage() });
202
204
 
203
- // The stored stack and project become active again; with nothing stored, the default stays.
205
+ // The stored stack becomes active again; with nothing stored, the default stays.
204
206
  // Resolves `restored | empty | expired | unreachable` — `expired` means a stored credential was refused.
205
207
  const status = await session.resume();
206
208
  ```
207
209
 
208
- Every credential change (login, project switch, token rotation, sign-out) is written back under one
209
- fixed key, and what it holds is the whole table rather than a single session: `current` — the scoped
210
- stack and project — plus a `stacks` array, each entry carrying its own credential and the projects
211
- open under it. Only the durable part of a credential is written: a token credential's rotating
212
- refresh token, and a cookie one's session id, which renews nothing without the HttpOnly session
213
- cookie the browser keeps. An access token or user identity is never written.
210
+ Every change (login, stack switch, token rotation, sign-out) is written back under one fixed key,
211
+ and what it holds is the whole table rather than a single session: `current` — the active stack —
212
+ plus a `stacks` array, each entry carrying its own credential. Only the durable part of a
213
+ credential is written: a token credential's rotating refresh token, and a cookie one's session id,
214
+ which renews nothing without the HttpOnly session cookie the browser keeps. An access token or user
215
+ identity is never written.
214
216
 
215
217
  **Token or cookie is the login's choice, and the credential carries it.** A browser-mode login
216
218
  (`login.withPassword({ …, browserMode: true })`) answers with no refresh token; stored as a `cookie`
@@ -219,12 +221,11 @@ works only from the stack's own origin, so localhost and previews log in in API
219
221
  `token` credential. One client takes either kind, renews each by its own grant, and restores a
220
222
  persisted grant of either kind.
221
223
 
222
- **A stack is always active**, so `session.stack.getActive()` never returns `null` and the active
223
- stack cannot be closed. Call `resume()` once on startup: persistence starts only after it settles,
224
+ **A stack is always active**, so `session.stack.getActive()` never returns `null`. Call `resume()` once on startup: persistence starts only after it settles,
224
225
  and a second call returns the same promise. The caller wins over the stored session — once it
225
- has selected a stack or project, or signed in or out, the resume leaves the scope where it is, and a
226
- stack already signed in or out keeps that sign-in. Leaving a project is `project.deactivate()`; switching stacks
227
- keeps every other stack's credential.
226
+ has selected a stack, or signed in or out, the resume leaves the active stack where it is, and a
227
+ stack already signed in or out keeps that sign-in. Switching stacks keeps every other stack's
228
+ credential.
228
229
  Adapters: `createLocalStorage` / `createSessionStorage` (browser, memory fallback on Node/SSR),
229
230
  `createMemoryStorage`, `createNullStorage`. In Node, supply your own adapter or default to memory.
230
231
 
@@ -238,9 +239,9 @@ on every refresh) and server-revocable, so a leaked snapshot has limited, revoca
238
239
  genuinely secure option — keeping the refresh token out of JS entirely behind a BFF
239
240
  (backend-for-frontend) with an HttpOnly cookie — is out of scope for now.
240
241
 
241
- `createStorageClient` exposes the same Storage surface as `api.storage.*` but no lifecycle and no `context` helpers (`baseUrl` / `stack` / `project` / `defaultBranch`). Per-service factories (`@keboola/api-client/storage`, `@keboola/api-client/management`, …) also exist for standalone single-service use.
242
+ `createStorageClient` exposes the same Storage surface as `api.storage.*` but no lifecycle and no `context` helpers (`baseUrl` / `stack`). Per-service factories (`@keboola/api-client/storage`, `@keboola/api-client/management`, …) also exist for standalone single-service use.
242
243
 
243
- **Need the stack URL? Use `api.context.baseUrl`, not `api.context.stack.host`.** `baseUrl` is the absolute URL the client is configured against and builds every request on, canonical form (no trailing slash). `stack.host` is a bare hostname the stack reports about itself in its index response — no scheme, and not what routes a request, so the two can legitimately differ on a proxied or custom-domain deployment.
244
+ **Need the stack URL? Use `api.baseUrl`, not `api.stack.host`.** `baseUrl` is the absolute URL the client is configured against and builds every request on, canonical form (no trailing slash). `stack.host` is a bare hostname the stack reports about itself in its index response — no scheme, and not what routes a request, so the two can legitimately differ on a proxied or custom-domain deployment.
244
245
 
245
246
  Import paths:
246
247
 
@@ -265,22 +266,35 @@ Never reach below `clients/` to `fetchClient` directly — all HTTP must flow th
265
266
 
266
267
  ## Writing a configuration safely (agents / Node)
267
268
 
268
- When a caller writes a component configuration on a user's behalf — an agent-generated payload, a BE/Node process, a script — go through `api.sdk.configuration`, **never** `api.storage.configurations.createConfiguration` directly. The SDK method carries the config-write business logic that would otherwise have to be re-implemented (and kept in sync) per consumer:
269
+ When a caller writes a component configuration on a user's behalf — an agent-generated payload, a BE/Node process, a script — go through the configuration SDK, **never** `api.storage.configurations.createConfiguration` directly. The SDK method carries the config-write business logic that would otherwise have to be re-implemented (and kept in sync) per consumer:
269
270
 
270
271
  1. **Validate** — parses `configuration` against the component's registered **input schema** (a deep-partial of the runnable schema) from `sdks/configurations/registry.ts`.
271
272
  2. **Encrypt** — hands every `#`-prefixed secret field to the encryption service (a remote call) and writes back the ciphertext, so a **plaintext secret is never sent to Storage**.
272
273
  3. **Write** — only then calls Storage.
273
274
 
274
- `api.sdk.configuration` is auto-wired (storage + encryption + project context) by `createKeboola` / `createLegacyKeboola`, so a Node consumer constructs nothing by hand:
275
+ `createConfigurationSdk` (`@keboola/api-client/sdk/configurations`) takes the storage and encryption clients plus the project context the permission guard reads — the verified token as `createProject` builds it, and the default branch as `createDefaultBranch` builds it. It is not on `api.sdk`: the token is the consumer's to fetch.
275
276
 
276
277
  ```ts
277
- import { createLegacyKeboola } from '@keboola/api-client';
278
+ import { createDefaultBranch, createLegacyKeboola, createProject } from '@keboola/api-client';
279
+ import { createConfigurationSdk } from '@keboola/api-client/sdk/configurations';
278
280
 
279
281
  const { api, session } = createLegacyKeboola({ baseUrl });
280
282
  await session.authenticateStorageAsync(sapiToken); // → ready
283
+ const [token, devBranches] = await Promise.all([
284
+ api.storage.tokens.verify(),
285
+ api.storage.branches.getDevBranches(),
286
+ ]);
287
+ const configuration = createConfigurationSdk({
288
+ storageClient: api.storage,
289
+ encryptionClient: api.encryption,
290
+ context: {
291
+ project: createProject({ sapiToken: token }),
292
+ defaultBranch: createDefaultBranch({ devBranches }),
293
+ },
294
+ });
281
295
 
282
296
  // componentId must be a registered id; `#`-prefixed fields are encrypted before the write.
283
- const result = await api.sdk.configuration.createConfiguration({
297
+ const result = await configuration.createConfiguration({
284
298
  componentId: 'keboola.ex-db-mysql',
285
299
  name: 'Orders DB',
286
300
  configuration: {
@@ -439,7 +453,7 @@ Surfacing — toast vs inline:
439
453
 
440
454
  `@keboola/api-client/domain/permissions` holds token-only capability predicates: `canX` (boolean, safe in any UI condition) paired with `assertCanX` (throws `PermissionDeniedError` before any HTTP round-trip). Catch the error to gate UI without a network call; let it propagate from `useQuery` to surface a "no access" empty state.
441
455
 
442
- Implemented today: `admin.ts` (`isAdmin`, `isProductionManager`, … + matching `assertCan*`, all `(token)`-only), `configurations.ts` (`canCreate/canCopy/canMigrateFromTemplate/canPurge/canAssignFolder` + `assertCan*`, taking a trailing `ctx: ConfigurationCtx`), and `organization.ts` (`isOrganizationMember`, `isOrganizationAdmin`, `canWriteKaiSpendCaps`, all `(token)`-only — reads `StorageToken.admin.isOrganizationMember` rather than the project role string; `assertCanAdministerOrganization`/`assertCanWriteKaiSpendCaps` pair with the latter two, `isOrganizationMember` is a raw signal with no assert), and `storage.ts` (`canListSharingTargets`, `(token)`-only, no assert — it gates a query; `api.context.project` exposes it). `devBranches.ts`, `sandboxes.ts` are still `export {}` placeholders.
456
+ Implemented today: `admin.ts` (`isAdmin`, `isProductionManager`, … + matching `assertCan*`, all `(token)`-only), `configurations.ts` (`canCreate/canCopy/canMigrateFromTemplate/canPurge/canAssignFolder` + `assertCan*`, taking a trailing `ctx: ConfigurationCtx`), and `organization.ts` (`isOrganizationMember`, `isOrganizationAdmin`, `canWriteKaiSpendCaps`, all `(token)`-only — reads `StorageToken.admin.isOrganizationMember` rather than the project role string; `assertCanAdministerOrganization`/`assertCanWriteKaiSpendCaps` pair with the latter two, `isOrganizationMember` is a raw signal with no assert), and `storage.ts` (`canListSharingTargets`, `(token)`-only, no assert — it gates a query; `createProject` exposes it). `devBranches.ts`, `sandboxes.ts` are still `export {}` placeholders.
443
457
 
444
458
  ```ts
445
459
  import { PermissionDeniedError } from '@keboola/api-client/domain/permissions';
@@ -457,13 +471,13 @@ try {
457
471
 
458
472
  ## What NOT to Do
459
473
 
460
- | Anti-pattern | Why it's wrong | Replacement |
461
- | ------------------------------------------------ | ------------------------------------------ | ------------------------------------------------- |
462
- | `fetch('/api/...')` directly | Bypasses auth, middleware, and type safety | `useApiClient()` + `api.*` methods |
463
- | `import axios from 'axios'` | Not installed; circumvents the SDK layer | `useApiClient()` from `@keboola/api-client-react` |
464
- | `import { Api } from '@/api'` | Legacy hand-rolled client being removed | `useApiClient()` + typed service client |
465
- | Importing from `@keboola/api-client/fetchClient` | Internal transport layer, not public API | Use the `clients/` or `sdks/` layer |
466
- | `enabled: false` for conditional queries | Does not narrow `data` type | `queryFn: !ready ? skipToken : ...` |
474
+ | Anti-pattern | Why it's wrong | Replacement |
475
+ | ------------------------------------------------ | ------------------------------------------ | -------------------------------------------------- |
476
+ | `fetch('/api/...')` directly | Bypasses auth, middleware, and type safety | `useProjectApi()` + `api.*` methods |
477
+ | `import axios from 'axios'` | Not installed; circumvents the SDK layer | `useProjectApi()` from `@keboola/api-client-react` |
478
+ | `import { Api } from '@/api'` | Legacy hand-rolled client being removed | `useProjectApi()` + typed service client |
479
+ | Importing from `@keboola/api-client/fetchClient` | Internal transport layer, not public API | Use the `clients/` or `sdks/` layer |
480
+ | `enabled: false` for conditional queries | Does not narrow `data` type | `queryFn: !ready ? skipToken : ...` |
467
481
 
468
482
  The `fetch()`, `axios`, and legacy `@/api` bans are mechanically enforced by oxlint — see `apps/kbc-ui/oxlint.config.ts`.
469
483
 
@@ -475,9 +489,9 @@ The `fetch()`, `axios`, and legacy `@/api` bans are mechanically enforced by oxl
475
489
 
476
490
  ## Service Discovery
477
491
 
478
- **Authoritative surface index: [`API-SURFACE.md`](./API-SURFACE.md)** — a compact list of every namespace and method **name** (no signatures), generated from the `KeboolaApi` type by `scripts/gen-surface.mjs`. Read it to confirm a namespace/method exists before calling it — don't guess. For the **full resolved signature**, open the per-namespace detail file it links to, [`surface/<namespace>.md`](./surface) (e.g. `surface/storage.md`) — split per namespace so you load only the slice you need rather than every signature at once. A CI drift check (`surface:check`, wired into the package's `ci-checks`) fails if either goes stale; regenerate with `pnpm --filter @keboola/api-client surface`.
492
+ **Authoritative surface index: [`API-SURFACE.md`](./API-SURFACE.md)** — a compact list of every namespace and method **name** (no signatures), generated from the `ProjectApi` type by `scripts/gen-surface.mjs`. Read it to confirm a namespace/method exists before calling it — don't guess. For the **full resolved signature**, open the per-namespace detail file it links to, [`surface/<namespace>.md`](./surface) (e.g. `surface/storage.md`) — split per namespace so you load only the slice you need rather than every signature at once. A CI drift check (`surface:check`, wired into the package's `ci-checks`) fails if either goes stale; regenerate with `pnpm --filter @keboola/api-client surface`.
479
493
 
480
- The full namespace set is the `KeboolaApi` type in `src/keboola/createApi.ts`. Quick top-level reference (see the index for the complete, current list):
494
+ The full namespace set is the `ProjectApi` type in `src/keboola/createApi.ts`. Quick top-level reference (see the index for the complete, current list):
481
495
 
482
496
  ```
483
497
  api.storage.* api.management.* api.vault.*
@@ -496,7 +510,7 @@ api.sdk.tag.* api.sdk.storage.*
496
510
  - `healthCheck()`, `GET /v2/docs/swagger.yaml` and unauthenticated calls answer the same everywhere.
497
511
  - A `401` from an authenticated call means a bad or expired token, not a missing API.
498
512
 
499
- Clients backing optional stack services (vault, queue, …) throw `ServiceUnavailableError` if absent from the current stack — check `api.context.stack.hasService(...)` before assuming a namespace exists.
513
+ Clients backing optional stack services (vault, queue, …) throw `ServiceUnavailableError` if absent from the current stack — check `api.stack.hasService(...)` before assuming a namespace exists.
500
514
 
501
515
  **Liveness: every service client exposes a root-level `healthCheck()`.** It resolves with the service's payload when up and throws like any other call when not, and it needs no session — every one of these endpoints answers unauthenticated, so a probe works before login and is indifferent to whether a token rides along. Probe a service that way rather than by calling a real endpoint and interpreting the failure. **A 200 means up and a throw means down — that is the whole contract.** The payload is incidental, so **never hand-roll a response type** to make it look useful. Adding a client means adding its `healthCheck` too, and which client you probe through follows from the spec:
502
516
 
@@ -511,9 +525,9 @@ Don't invent a shape for the second case. These specs are uneven and, where pres
511
525
 
512
526
  `apps-api.keboola.com` (the Developer Portal / `components.keboola.com` backend) authenticates with its
513
527
  **own Cognito pool**, issuing a token trio — `token` (id), `accessToken`, `refreshToken` — not a
514
- Connection storage token. `createKeboola`'s session cannot drive it: driving to ready runs
515
- `tokens.verify()` against Connection, and `session.project.select` is meaningless. So it is not registered in
516
- `createServiceClients.ts` and never appears on the `api` proxy — `api.developerPortal` does not exist.
528
+ Connection storage token. `createKeboola`'s session cannot drive it: its credential and its stack
529
+ index are Connection's. So it is not registered in `createServiceClients.ts` and never appears on
530
+ the `api` proxy — `api.developerPortal` does not exist.
517
531
 
518
532
  Two layers, as everywhere else in this package:
519
533
 
@@ -569,7 +583,7 @@ import { fixtures, getTable, listTables, tableFixtures } from '@keboola/api-fixt
569
583
  import type { Table, TableDetail } from '@keboola/api-fixtures';
570
584
  ```
571
585
 
572
- To mock the client itself, mock at the module boundary with `vi.mock` against `@keboola/api-client` or the `useApiClient` hook.
586
+ To mock the client itself, mock at the module boundary with `vi.mock` against `@keboola/api-client` or the `useProjectApi` hook.
573
587
 
574
588
  ## Authoring types — the generated schema is the source
575
589
 
package/API-SURFACE.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  <!-- GENERATED FILE — do not edit by hand. Run `pnpm --filter @keboola/api-client surface` to regenerate. -->
4
4
 
5
- Every namespace and method reachable from a ready `KeboolaApi` — the `api` half of a keboola client (`createKeboola(...).api` / `createLegacyKeboola(...).api`, or `useApiClient()`). Generated from the TypeScript type checker — see `scripts/gen-surface.mjs`.
5
+ Every namespace and method reachable from a ready `ProjectApi` — one project's api (`createKeboola(...).getProjectApi(id)` / `createLegacyKeboola(...).api`, or `useProjectApi()`). Generated from the TypeScript type checker — see `scripts/gen-surface.mjs`.
6
6
 
7
- 26 top-level namespaces, 728 methods. This index lists method **names** only — full signatures live per namespace under [`surface/`](./surface). Open `surface/<namespace>.md` for the one you need.
7
+ 26 top-level namespaces, 710 methods. This index lists method **names** only — full signatures live per namespace under [`surface/`](./surface). Open `surface/<namespace>.md` for the one you need.
8
8
 
9
9
  ## [`api.ai`](./surface/ai.md)
10
10
 
@@ -27,8 +27,10 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
27
27
  - `deleteDeployment`
28
28
  - `getApp`
29
29
  - `getAppGitRepo`
30
+ - `getAppGitRepoBranches`
30
31
  - `getAppGitRepoCredential`
31
32
  - `getAppGitRepoCredentials`
33
+ - `getAppGitRepoEntrypoints`
32
34
  - `getAppLogsDownload`
33
35
  - `getAppLogsTail`
34
36
  - `getAppPassword`
@@ -123,31 +125,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
123
125
  - `healthCheck`
124
126
  - `setConnectorCredentials`
125
127
 
126
- ## [`api.context`](./surface/context.md)
127
-
128
- - `defaultBranch.getType`
129
- - `defaultBranch.isDefault`
130
- - `defaultBranch.isDev`
131
- - `project.hasAdminFeature`
132
- - `project.hasBackend`
133
- - `project.hasFeature`
134
- - `st.createBucket`
135
- - `st.createDefaultBucket`
136
- - `st.createDefaultConfigBucket`
137
- - `st.createDefaultConfigTable`
138
- - `st.createDefaultCsvImportTable`
139
- - `st.createTable`
140
- - `st.parse`
141
- - `st.parseBucket`
142
- - `st.safeCreateDefaultBucket`
143
- - `st.safeParse`
144
- - `st.safeParseBucket`
145
- - `stack.getComponent`
146
- - `stack.getServiceUrl`
147
- - `stack.hasComponent`
148
- - `stack.hasFeature`
149
- - `stack.hasService`
150
-
151
128
  ## [`api.dataScience`](./surface/dataScience.md)
152
129
 
153
130
  - `createApp`
@@ -227,6 +204,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
227
204
  - `updateAgentSettings`
228
205
  - `updateProjectToolPolicy`
229
206
  - `updateSpendCaps`
207
+ - `updateTurnCredential`
230
208
  - `updateUserAgentSettings`
231
209
  - `updateUserMemory`
232
210
 
@@ -481,9 +459,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
481
459
 
482
460
  ## [`api.sdk`](./surface/sdk.md)
483
461
 
484
- - `configuration.createConfiguration`
485
- - `configuration.getConfiguration`
486
- - `configuration.updateConfiguration`
487
462
  - `kaiMemory.createItem`
488
463
  - `kaiMemory.deleteUnreadableItem`
489
464
  - `kaiMemory.getItems`
@@ -526,6 +501,14 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
526
501
  - `vault.setVariablesGroup`
527
502
  - `vault.updateVariable`
528
503
 
504
+ ## [`api.stack`](./surface/stack.md)
505
+
506
+ - `getComponent`
507
+ - `getServiceUrl`
508
+ - `hasComponent`
509
+ - `hasFeature`
510
+ - `hasService`
511
+
529
512
  ## [`api.storage`](./surface/storage.md)
530
513
 
531
514
  - `branches.createDevBranchAsync`
@@ -780,7 +763,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
780
763
  - `genericExtractor.performFunction`
781
764
  - `genericExtractor.testRequest`
782
765
  - `git.getBranches`
783
- - `git.getEntrypoints`
784
766
  - `googleAnalytics.getProfilesProperties`
785
767
  - `googleAnalytics.getPropertiesMetadata`
786
768
  - `googleDrive.createFile`
package/CHANGELOG.md CHANGED
@@ -1,5 +1,59 @@
1
1
  # @keboola/api-client
2
2
 
3
+ ## 51.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - `App.production` carries `desiredConfigVersion`, `actualConfigVersion` and `desiredCreatedAt`: the config versions of the desired and actual production deployments, and when the desired one was created.
8
+
9
+ - `session.auth.getHeadersAsync(projectId, { refreshThreshold })` renews the bearer token once it has used that share of its lifetime; without it, renewal stays near expiry.
10
+
11
+ - `api.kaiAgent.updateTurnCredential(chatId)` gives a chat's running Kai turn the credential the client now authenticates with, for a bearer token that rotated mid-turn.
12
+
13
+ ## 50.0.0
14
+
15
+ ### Major Changes
16
+
17
+ - The SDK no longer fetches a project's state. `api.baseUrl` and `api.stack` replace `api.context`; the verified token and the dev branches are the consumer's to fetch (`api.storage.tokens.verify()`, `api.storage.branches.getDevBranches()`) and derive with the exported `createProject` / `createDefaultBranch`.
18
+ - **Breaking:** `api.context` is gone. `api.baseUrl` is the canonical stack URL — on a bearer handle readable before a sign-in; `api.stack` is the parsed stack index, `NotReady` until it lands. The `ClientContext` type is replaced by `Stack`.
19
+ - **Breaking:** the project context (`sapiToken`, `defaultBranch`) is gone, with `session.project.getContext` / `getContextAsync` / `retryContext` and the `context` status on a project row. `api.sdk.configuration` is gone — build it with `createConfigurationSdk` from `@keboola/api-client/sdk/configurations`, handing it the project and default branch.
20
+ - **Breaking:** the bearer session knows no project; which one the app is in is the app's to keep. `getState().active` is the active stack's `baseUrl`. `session.project` (`select`, `deactivate`, `close`), `getState().projects` and the `ProjectEntry` and `ActiveLocation` types are gone, and `resume()` restores the stack alone.
21
+ - **Breaking:** the flat `KeboolaApi` splits in two. `StackApi` (`auth`, `management`, `baseUrl`, `stack`) is what is there before a project; `ProjectApi` is a `StackApi` plus every project namespace. `createKeboola` returns `getStackApi()` — the active stack, re-pointed by `session.stack.select` — and `getProjectApi(projectId)` in place of `getActiveApi` / `getApi`; `createLegacyKeboola(...).api` is a `ProjectApi`.
22
+ - **Breaking:** `getProjectApi(projectId)` writes and persists nothing, lives as long as the sign-in it was built under, and throws `NotAuthenticated` before one lands. A handle read after its sign-in ended throws `KeboolaError` (`SignInEnded`).
23
+ - **Breaking:** `auth.getHeadersAsync(projectId)` requires the project, resolved on the active stack. The synchronous `auth.getHeaders` is gone.
24
+ - **Breaking:** `session.stack.close`, `session.stack.retryContext`, `session.auth.rotate` and the `StackActive` error type are gone. A stack, once opened, stays in the table; `stack.getContextAsync` fetches a failed stack index again.
25
+ - The persisted session still writes `current.projectId: null` and an empty `projects` per stack, so an older build reading it does not sign out.
26
+ - **Breaking:** `@keboola/api-client-react` replaces `ApiClientProvider` / `useApiClient` with `StackApiProvider` / `useStackApi` and `ProjectApiProvider` / `useProjectApi`; a `ProjectApiProvider` provides its stack too. `useStack` and `useProject` are gone; `useStackApi().stack` reads the stack.
27
+ - **Breaking:** `createLegacyKeboola`'s storage build reads the stack index only; it no longer verifies the SAPI token, so a ready session does not mean a live token. Verify it with `api.storage.tokens.verify()` where a dead token must be caught.
28
+ - **Breaking:** the storage client no longer re-verifies the token after a bucket or feature write, and `isStorageTokenMutatingRequest` is no longer exported; the predicate moved to kbc-ui beside its refresh middleware.
29
+ - `api.storage` under the bearer flow is live from the sign-in on.
30
+
31
+ - Data apps list git branches and entrypoints from the app's saved configuration; `syncActions.git` serves only dbt
32
+ - `apps.getAppGitRepoBranches(appId)` and `apps.getAppGitRepoEntrypoints(appId, { ref? })` call `GET /apps/{appId}/git-repo/branches` and `/entrypoints`. The service reads the saved Git settings and decrypts their credentials, so changes count only once saved.
33
+ - `syncActions.git.getBranches` takes only dbt component ids and `public`, `password` or `organization` auth (`GitAuth`). `organization` is sent as `authType: organization`, the same key as data apps.
34
+ - `syncActions.git.getEntrypoints`, the `sshKey` auth, the `GitComponentId` and `DataAppComponentId` types and the `DATA_APP_ENTRYPOINTS` / `DATA_APP_GIT_REPOSITORY` sync actions are gone; `DbtComponentId` names the accepted ids.
35
+
36
+ - `api.kaiAgent.createChat`, `prepareChat` and `getHistory` accept only `client: 'kbc-ui'`.
37
+ - A history row's `client` is still typed `'kbc-ui' | 'business-chat' | null`; no row holds `business-chat`.
38
+ - `getHistory`'s `client` filters nothing: every listed chat is Kai's.
39
+
40
+ ### Minor Changes
41
+
42
+ - `management.projects.addProjectFeature` returns the API's `warnings` (`ProjectWithFeatureWarnings`), and `ProjectFeature.BigqueryPolicyTags` names the `bigquery-policy-tags` feature.
43
+
44
+ ### Patch Changes
45
+
46
+ - `AdminFeature.CanManageMaintainers` names the `can-manage-maintainers` admin feature.
47
+
48
+ - `storageTable` decodes every bucket name the parser accepts into a bucket that serializes back without throwing.
49
+ - A `c-` or `{branchId}-` prefix is stripped only when the rest is a valid name on its own.
50
+ - Otherwise the prefix stays in `baseName` — `c-_foo` and `c-` keep their full name as the display name.
51
+
52
+ - Runtime dependencies require their latest patch and minor releases.
53
+ - `@keboola/design`: `@rjsf/*` 6.11, `pele` 1.10, `react-resizable-panels` 4.15, `tailwind-merge` 3.7, `vega-lite` 6.5, `@tanstack/react-virtual` 3.14.22, plus patch releases of `dompurify`, `sonner`, `react-day-picker`, `node-diff3` and `@lezer/highlight`.
54
+ - `@keboola/api-client`: `qs` 6.16.1.
55
+ - `@keboola/codemirror-lang-sql`: `@lezer/highlight` 1.2.5.
56
+
3
57
  ## 49.0.0
4
58
 
5
59
  ### Major Changes