@keboola/api-client 56.0.0 → 57.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 (345) hide show
  1. package/AGENTS.md +110 -229
  2. package/API-SURFACE.md +10 -2
  3. package/CHANGELOG.md +45 -0
  4. package/README.md +20 -133
  5. package/dist/{ManagementSessionMintError-Bc9bc7Ai.cjs → ManagementSessionMintError-BCOLLaJi.cjs} +3 -2
  6. package/dist/ManagementSessionMintError-BCOLLaJi.cjs.map +1 -0
  7. package/dist/{ManagementSessionMintError-BMHDcEqV.js → ManagementSessionMintError-KUX3utTV.js} +3 -2
  8. package/dist/ManagementSessionMintError-KUX3utTV.js.map +1 -0
  9. package/dist/{adminRoles-CUB0JddB.d.ts → adminRoles-CnfGDvjN.d.ts} +2 -2
  10. package/dist/{adminRoles-BFOPSedO.d.cts → adminRoles-D6AS9Bzx.d.cts} +2 -2
  11. package/dist/ai/index.d.cts +2 -2
  12. package/dist/ai/index.d.ts +2 -2
  13. package/dist/ai/types.d.cts +1 -1
  14. package/dist/ai/types.d.ts +1 -1
  15. package/dist/apps/index.cjs +1 -1
  16. package/dist/apps/index.d.cts +2 -2
  17. package/dist/apps/index.d.ts +2 -2
  18. package/dist/apps/index.js +1 -1
  19. package/dist/apps/types.d.cts +2 -2
  20. package/dist/apps/types.d.ts +2 -2
  21. package/dist/{apps-C1x5IKNQ.cjs → apps-BA9JRLAZ.cjs} +55 -1
  22. package/dist/apps-BA9JRLAZ.cjs.map +1 -0
  23. package/dist/{apps-BN7fWtSm.js → apps-DDcguJ1i.js} +55 -1
  24. package/dist/apps-DDcguJ1i.js.map +1 -0
  25. package/dist/assets/index.d.cts +1 -1
  26. package/dist/assets/index.d.ts +1 -1
  27. package/dist/auth/index.cjs +1 -1
  28. package/dist/auth/index.d.cts +1 -1
  29. package/dist/auth/index.d.ts +1 -1
  30. package/dist/auth/index.js +1 -1
  31. package/dist/auth/types.d.cts +2 -2
  32. package/dist/auth/types.d.ts +2 -2
  33. package/dist/{authClient-B_Mb4Vzs.js → authClient-BKGpJI5L.js} +13 -2
  34. package/dist/authClient-BKGpJI5L.js.map +1 -0
  35. package/dist/{authClient-C9QqhT2M.cjs → authClient-C3KG9hXw.cjs} +17 -6
  36. package/dist/authClient-C3KG9hXw.cjs.map +1 -0
  37. package/dist/{authClient-Dgyb0EFi.d.ts → authClient-CbWpMmdX.d.ts} +7 -4
  38. package/dist/{authClient-DOetdp2k.d.cts → authClient-UKeopxZZ.d.cts} +7 -4
  39. package/dist/billing/index.d.cts +1 -1
  40. package/dist/billing/index.d.ts +1 -1
  41. package/dist/billing/types.d.cts +1 -1
  42. package/dist/billing/types.d.ts +1 -1
  43. package/dist/chat/index.d.cts +2 -2
  44. package/dist/chat/index.d.ts +2 -2
  45. package/dist/chat/types.d.cts +1 -1
  46. package/dist/chat/types.d.ts +1 -1
  47. package/dist/componentsMcp/index.d.cts +1 -1
  48. package/dist/componentsMcp/index.d.ts +1 -1
  49. package/dist/componentsMcp/types.d.cts +1 -1
  50. package/dist/componentsMcp/types.d.ts +1 -1
  51. package/dist/constants/index.cjs +2 -2
  52. package/dist/constants/index.d.cts +3 -3
  53. package/dist/constants/index.d.ts +3 -3
  54. package/dist/constants/index.js +2 -2
  55. package/dist/{constants-HccvU5kx.js → constants-CxEaHCyt.js} +4 -3
  56. package/dist/constants-CxEaHCyt.js.map +1 -0
  57. package/dist/{constants-V9hAyPTo.cjs → constants-fiyOLyZE.cjs} +4 -3
  58. package/dist/constants-fiyOLyZE.cjs.map +1 -0
  59. package/dist/dataScience/index.d.cts +3 -3
  60. package/dist/dataScience/index.d.ts +3 -3
  61. package/dist/dataScience/types.d.cts +1 -1
  62. package/dist/dataScience/types.d.ts +1 -1
  63. package/dist/developerPortal/index.cjs +1 -1
  64. package/dist/developerPortal/index.d.cts +3 -3
  65. package/dist/developerPortal/index.d.ts +3 -3
  66. package/dist/developerPortal/index.js +1 -1
  67. package/dist/developerPortal/types.d.cts +2 -2
  68. package/dist/developerPortal/types.d.ts +2 -2
  69. package/dist/{developerPortalClient-CzCJ5sE3.js → developerPortalClient-3Q7049-4.js} +19 -1
  70. package/dist/developerPortalClient-3Q7049-4.js.map +1 -0
  71. package/dist/{developerPortalClient-BcK9F-Fs.cjs → developerPortalClient-Cj9bStCS.cjs} +19 -1
  72. package/dist/developerPortalClient-Cj9bStCS.cjs.map +1 -0
  73. package/dist/domain/permissions/index.d.cts +1 -1
  74. package/dist/domain/permissions/index.d.ts +1 -1
  75. package/dist/editor/index.d.cts +2 -2
  76. package/dist/editor/index.d.ts +2 -2
  77. package/dist/editor/types.d.cts +1 -1
  78. package/dist/editor/types.d.ts +1 -1
  79. package/dist/{emitter-raKkIqRp.d.ts → emitter-yaYzJOdh.d.cts} +1 -2
  80. package/dist/{emitter-raKkIqRp.d.cts → emitter-yaYzJOdh.d.ts} +1 -2
  81. package/dist/encryption/index.d.cts +1 -1
  82. package/dist/encryption/index.d.ts +1 -1
  83. package/dist/encryption/types.d.cts +1 -1
  84. package/dist/encryption/types.d.ts +1 -1
  85. package/dist/import/index.d.cts +3 -3
  86. package/dist/import/index.d.ts +3 -3
  87. package/dist/{index-DcKc3_Y1.d.cts → index-9p4O-clX.d.cts} +2033 -72
  88. package/dist/{index-DcKc3_Y1.d.ts → index-9p4O-clX.d.ts} +2033 -72
  89. package/dist/{index-CLqZfRpv.d.cts → index-B-HCh7LL.d.cts} +3 -3
  90. package/dist/{index-CxoJuIzB.d.cts → index-B0e42GnK.d.cts} +4 -3
  91. package/dist/{index-Bgu3hnMO.d.ts → index-BbXGsspe.d.ts} +4 -4
  92. package/dist/{index-B7Ogo2SK.d.ts → index-Bg9BWpIY.d.ts} +4 -3
  93. package/dist/{index-DPhGNQC5.d.cts → index-BgEu7wGk.d.cts} +2559 -7319
  94. package/dist/{index-C_A0JS9s.d.ts → index-Btft3BFn.d.ts} +29 -3
  95. package/dist/{index-DXNRd61K.d.cts → index-ByaAn_lm.d.cts} +4 -4
  96. package/dist/{index-A8udJCGv.d.ts → index-C92Ct6K5.d.ts} +178 -4
  97. package/dist/{index-B30dBBBH.d.ts → index-CBq59Aif.d.ts} +3 -3
  98. package/dist/{index-DAb1g6je.d.cts → index-CGUPsu_R.d.cts} +29 -3
  99. package/dist/{index-CLxvW_pn.d.ts → index-CIA6-x2Q.d.ts} +4 -4
  100. package/dist/{index-B2YNTI4p.d.ts → index-CeWVf3d1.d.ts} +4 -4
  101. package/dist/{index-GlHJ4j3a.d.ts → index-Cj0l_DL_.d.ts} +2559 -7319
  102. package/dist/{index-BUZ-vTRt.d.ts → index-Ck0UPKMM.d.ts} +2 -2
  103. package/dist/{index-B-HhOTVk.d.cts → index-D0ACg_Pp.d.cts} +7 -4
  104. package/dist/{index-Dx02AUpZ.d.cts → index-D8nMnVp1.d.cts} +4 -4
  105. package/dist/{index-24GpnYhn.d.cts → index-DENUPo51.d.cts} +2 -2
  106. package/dist/{index-RHYdFrfn.d.cts → index-DGjxLWZ-.d.cts} +3 -3
  107. package/dist/{index-BH1jo-bb.d.ts → index-Dse6Psvc.d.ts} +7 -4
  108. package/dist/{index-BaJ-GMa7.d.ts → index-DxcaEIhU.d.ts} +3 -3
  109. package/dist/{index-CpidrJQc.d.cts → index-OCEoQ1Y-.d.cts} +4 -4
  110. package/dist/{index-DxbqDi_0.d.cts → index-jR69kGUZ.d.cts} +178 -4
  111. package/dist/index.cjs +615 -867
  112. package/dist/index.cjs.map +1 -1
  113. package/dist/index.d.cts +9 -9
  114. package/dist/index.d.ts +9 -9
  115. package/dist/index.js +611 -860
  116. package/dist/index.js.map +1 -1
  117. package/dist/kaiAgent/index.cjs +1 -1
  118. package/dist/kaiAgent/index.d.cts +2 -2
  119. package/dist/kaiAgent/index.d.ts +2 -2
  120. package/dist/kaiAgent/index.js +1 -1
  121. package/dist/kaiAgent/types.d.cts +2 -2
  122. package/dist/kaiAgent/types.d.ts +2 -2
  123. package/dist/{kaiAgent-De2T6G4G.cjs → kaiAgent-Q00g6S1v.cjs} +16 -1
  124. package/dist/kaiAgent-Q00g6S1v.cjs.map +1 -0
  125. package/dist/{kaiAgent-D0MoKqXe.js → kaiAgent-aqylPZHY.js} +16 -1
  126. package/dist/kaiAgent-aqylPZHY.js.map +1 -0
  127. package/dist/management/index.cjs +1 -1
  128. package/dist/management/index.d.cts +1 -1
  129. package/dist/management/index.d.ts +1 -1
  130. package/dist/management/index.js +1 -1
  131. package/dist/management/types.d.cts +1 -1
  132. package/dist/management/types.d.ts +1 -1
  133. package/dist/{management-BlMQnPNS.js → management-CIK5-Aq5.js} +14 -7
  134. package/dist/management-CIK5-Aq5.js.map +1 -0
  135. package/dist/{management-dIMrTTpI.cjs → management-Dqrc516s.cjs} +14 -7
  136. package/dist/management-Dqrc516s.cjs.map +1 -0
  137. package/dist/{metaObject-qWyZAD-5.d.ts → metaObject-AQ7wKDOu.d.ts} +2 -2
  138. package/dist/{metaObject-BsBMgWRt.d.cts → metaObject-I35_krxf.d.cts} +2 -2
  139. package/dist/metastore/index.d.cts +1 -1
  140. package/dist/metastore/index.d.ts +1 -1
  141. package/dist/metastore/types.d.cts +1 -1
  142. package/dist/metastore/types.d.ts +1 -1
  143. package/dist/microsoftGraph/index.d.cts +3 -3
  144. package/dist/microsoftGraph/index.d.ts +3 -3
  145. package/dist/microsoftGraph/types.d.cts +2 -2
  146. package/dist/microsoftGraph/types.d.ts +2 -2
  147. package/dist/{middleware-DxGv7DG8.js → middleware-DWmhthX0.js} +2 -2
  148. package/dist/middleware-DWmhthX0.js.map +1 -0
  149. package/dist/{middleware-vIaPDtQI.cjs → middleware-DYdDD4O6.cjs} +2 -2
  150. package/dist/middleware-DYdDD4O6.cjs.map +1 -0
  151. package/dist/notifications/index.d.cts +2 -2
  152. package/dist/notifications/index.d.ts +2 -2
  153. package/dist/notifications/types.d.cts +1 -1
  154. package/dist/notifications/types.d.ts +1 -1
  155. package/dist/oauth/index.d.cts +2 -2
  156. package/dist/oauth/index.d.ts +2 -2
  157. package/dist/oauth/types.d.cts +1 -1
  158. package/dist/oauth/types.d.ts +1 -1
  159. package/dist/omnisearch/index.d.cts +2 -2
  160. package/dist/omnisearch/index.d.ts +2 -2
  161. package/dist/omnisearch/types.d.cts +1 -1
  162. package/dist/omnisearch/types.d.ts +1 -1
  163. package/dist/{project-CmV1OhK4.d.ts → project-DwRvx_zN.d.ts} +3 -3
  164. package/dist/{project-F6eHCACz.d.cts → project-ERH0FTGW.d.cts} +3 -3
  165. package/dist/queryService/index.cjs +1 -1
  166. package/dist/queryService/index.d.cts +1 -1
  167. package/dist/queryService/index.d.ts +1 -1
  168. package/dist/queryService/index.js +1 -1
  169. package/dist/queryService/types.d.cts +1 -1
  170. package/dist/queryService/types.d.ts +1 -1
  171. package/dist/{queryService-C3BQ6GKW.cjs → queryService-CECWubS0.cjs} +2 -2
  172. package/dist/{queryService-C3BQ6GKW.cjs.map → queryService-CECWubS0.cjs.map} +1 -1
  173. package/dist/{queryService-DQHtHy2-.js → queryService-CIxb_mcP.js} +2 -2
  174. package/dist/{queryService-DQHtHy2-.js.map → queryService-CIxb_mcP.js.map} +1 -1
  175. package/dist/queue/index.cjs +1 -1
  176. package/dist/queue/index.d.cts +11 -4
  177. package/dist/queue/index.d.ts +11 -4
  178. package/dist/queue/index.js +1 -1
  179. package/dist/queue/types.d.cts +1 -1
  180. package/dist/queue/types.d.ts +1 -1
  181. package/dist/{queue-6cywDnA-.js → queue-BBihD5qQ.js} +2 -2
  182. package/dist/{queue-6cywDnA-.js.map → queue-BBihD5qQ.js.map} +1 -1
  183. package/dist/{queue-J2uXzXR9.cjs → queue-PmTfoniJ.cjs} +2 -2
  184. package/dist/{queue-J2uXzXR9.cjs.map → queue-PmTfoniJ.cjs.map} +1 -1
  185. package/dist/scheduler/index.d.cts +2 -2
  186. package/dist/scheduler/index.d.ts +2 -2
  187. package/dist/scheduler/types.d.cts +1 -1
  188. package/dist/scheduler/types.d.ts +1 -1
  189. package/dist/{schema-DLmBEgPM.d.cts → schema-CqzWi5cO.d.cts} +14 -4
  190. package/dist/{schema-DLmBEgPM.d.ts → schema-CqzWi5cO.d.ts} +14 -4
  191. package/dist/sdk/configurations/index.d.cts +2 -3
  192. package/dist/sdk/configurations/index.d.ts +2 -3
  193. package/dist/sdk/dataAppServer/index.cjs +3 -3
  194. package/dist/sdk/dataAppServer/index.d.cts +1 -1
  195. package/dist/sdk/dataAppServer/index.d.ts +1 -1
  196. package/dist/sdk/dataAppServer/index.js +3 -3
  197. package/dist/sdk/developerPortal/index.cjs +3 -3
  198. package/dist/sdk/developerPortal/index.cjs.map +1 -1
  199. package/dist/sdk/developerPortal/index.d.cts +178 -4
  200. package/dist/sdk/developerPortal/index.d.ts +178 -4
  201. package/dist/sdk/developerPortal/index.js +3 -3
  202. package/dist/sdk/developerPortal/index.js.map +1 -1
  203. package/dist/sdk/kaiMemory/index.d.cts +1 -1
  204. package/dist/sdk/kaiMemory/index.d.ts +1 -1
  205. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  206. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  207. package/dist/sdk/queryService/index.d.cts +1 -1
  208. package/dist/sdk/queryService/index.d.ts +1 -1
  209. package/dist/sdk/securityPolicy/index.d.cts +2 -2
  210. package/dist/sdk/securityPolicy/index.d.ts +2 -2
  211. package/dist/sdk/securityPolicy/types.d.cts +1 -1
  212. package/dist/sdk/securityPolicy/types.d.ts +1 -1
  213. package/dist/sdk/semanticLayer/index.d.cts +1 -1
  214. package/dist/sdk/semanticLayer/index.d.ts +1 -1
  215. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  216. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  217. package/dist/sdk/tag/index.d.cts +3 -3
  218. package/dist/sdk/tag/index.d.ts +3 -3
  219. package/dist/sdk/tag/types.d.cts +1 -1
  220. package/dist/sdk/tag/types.d.ts +1 -1
  221. package/dist/sdk/vault/index.d.cts +1 -1
  222. package/dist/sdk/vault/index.d.ts +1 -1
  223. package/dist/status/index.d.cts +1 -1
  224. package/dist/status/index.d.ts +1 -1
  225. package/dist/storage/index.cjs +5 -5
  226. package/dist/storage/index.d.cts +2 -3
  227. package/dist/storage/index.d.ts +2 -3
  228. package/dist/storage/index.js +3 -3
  229. package/dist/storage/types.d.cts +5 -5
  230. package/dist/storage/types.d.ts +5 -5
  231. package/dist/{storage-jLhVrKZh.cjs → storage-chxoWtAL.cjs} +44 -56
  232. package/dist/storage-chxoWtAL.cjs.map +1 -0
  233. package/dist/{storage-Bw-HSnPp.js → storage-o9teEKl_.js} +42 -54
  234. package/dist/storage-o9teEKl_.js.map +1 -0
  235. package/dist/{store-2OyH1XOP.cjs → store-7xlVu4qF.cjs} +3 -14
  236. package/dist/store-7xlVu4qF.cjs.map +1 -0
  237. package/dist/{store-HP0zRcLz.js → store-DDUzPeCm.js} +3 -14
  238. package/dist/store-DDUzPeCm.js.map +1 -0
  239. package/dist/stream/index.d.cts +2 -2
  240. package/dist/stream/index.d.ts +2 -2
  241. package/dist/stream/types.d.cts +1 -1
  242. package/dist/stream/types.d.ts +1 -1
  243. package/dist/syncActions/index.d.cts +2 -2
  244. package/dist/syncActions/index.d.ts +2 -2
  245. package/dist/syncActions/types.d.cts +1 -1
  246. package/dist/syncActions/types.d.ts +1 -1
  247. package/dist/telemetry/index.d.cts +2 -2
  248. package/dist/telemetry/index.d.ts +2 -2
  249. package/dist/telemetry/types.d.cts +1 -1
  250. package/dist/telemetry/types.d.ts +1 -1
  251. package/dist/{transientRetries-BORv47mH.js → transientRetries-dssygpwU.js} +2 -2
  252. package/dist/{transientRetries-BORv47mH.js.map → transientRetries-dssygpwU.js.map} +1 -1
  253. package/dist/{transientRetries-CBorl4Ue.cjs → transientRetries-yVaQgKqP.cjs} +2 -2
  254. package/dist/{transientRetries-CBorl4Ue.cjs.map → transientRetries-yVaQgKqP.cjs.map} +1 -1
  255. package/dist/{types-LOf_GCej.d.cts → types-B1kernzE.d.cts} +2 -2
  256. package/dist/{types-Cvbcjdgf.d.ts → types-BBmS7-IS.d.ts} +151 -4
  257. package/dist/{types-DaRxZt3v.d.ts → types-BJyWTgXX.d.ts} +2 -2
  258. package/dist/{types-CnKiVVb8.d.ts → types-BPNFTA63.d.cts} +21 -7
  259. package/dist/{types-BJRRAQ9R.d.cts → types-BPSExpye.d.cts} +244 -4
  260. package/dist/{types-Cg_66Toy.d.ts → types-BiXonOK6.d.ts} +2 -2
  261. package/dist/{types-CNDemlfn.d.cts → types-BimRBONo.d.cts} +3 -3
  262. package/dist/{types-CrXoqs8E.d.cts → types-BuEC58u3.d.cts} +2 -2
  263. package/dist/{types-BnkHyxdp.d.ts → types-BzHyi99r.d.cts} +5 -3
  264. package/dist/{types-2CMPwArl.d.ts → types-C4T_2JdN.d.cts} +40 -27
  265. package/dist/{types-lZRyNwOH.d.ts → types-C53aKnWt.d.ts} +2 -2
  266. package/dist/{types-6oLbURTK.d.cts → types-CEjgqmr2.d.cts} +2 -2
  267. package/dist/{types-BEEGI4aq.d.ts → types-CGtpwTJk.d.ts} +2 -2
  268. package/dist/{types-B_yv00AL.d.ts → types-CH1uguug.d.cts} +2 -163
  269. package/dist/{types-DMEl2iet.d.ts → types-CP8-CssY.d.ts} +2 -2
  270. package/dist/{types-DgAMVyiT.d.ts → types-CPQ6RkiZ.d.ts} +244 -4
  271. package/dist/{types-EdL0Eb0B.d.ts → types-CPwofeyq.d.ts} +3 -3
  272. package/dist/{types-CFuT8zr3.d.cts → types-CQAEOq-K.d.cts} +2 -2
  273. package/dist/{types-DslO1S5E.d.cts → types-CVWoP_PC.d.cts} +3 -3
  274. package/dist/{types-BqJycQNM.d.cts → types-CbM2MApW.d.cts} +2 -2
  275. package/dist/{types-BDGkMVWf.d.cts → types-CbOfT6lb.d.ts} +21 -7
  276. package/dist/{types-B6OG1lLf.d.cts → types-CcPpqVhm.d.cts} +2 -2
  277. package/dist/{types-D2J3SaoY.d.ts → types-CeqpzbBH.d.ts} +2 -2
  278. package/dist/{types-C_JO7FI9.d.cts → types-CjJYZaMO.d.cts} +2 -2
  279. package/dist/{types-D0Gqu-Xz.d.cts → types-CjP8RcFN.d.cts} +2 -2
  280. package/dist/{types-CUovU--e.d.ts → types-CjfsPtwk.d.ts} +2 -2
  281. package/dist/{types-DPFG6AAA.d.ts → types-CnSBLcZB.d.ts} +163 -3
  282. package/dist/{types-D4knWlwr.d.ts → types-CsXLdnfV.d.ts} +2 -2
  283. package/dist/{types-C3Kf_ggm.d.cts → types-CzAh5-0z.d.cts} +2 -2
  284. package/dist/{types-D6Fbf_y3.d.ts → types-D0F_c5KI.d.ts} +4 -4
  285. package/dist/{types-DykEfF2N.d.cts → types-D3L3CqKl.d.cts} +151 -4
  286. package/dist/{types--mz2z0Zm.d.cts → types-D4oIei5M.d.cts} +163 -3
  287. package/dist/{types-Cm1iOHE5.d.cts → types-D6ilG8sC.d.cts} +3 -3
  288. package/dist/{types-DtS7qAdz.d.cts → types-DEGkXcw2.d.ts} +5 -3
  289. package/dist/{types-DQguGTlM.d.cts → types-DEhAcO1Z.d.cts} +2 -2
  290. package/dist/{types-CuYaiy4R.d.cts → types-DaIfg9Mb.d.cts} +4 -4
  291. package/dist/{types-ByKSM08P.d.ts → types-DhofEmWy.d.ts} +2 -2
  292. package/dist/{types-B5FgsIiY.d.ts → types-Dp61pYgP.d.ts} +3 -3
  293. package/dist/{types-BhGr9OQ4.d.ts → types-Dteot3tT.d.ts} +757 -112
  294. package/dist/{types-3ZE32k8V.d.cts → types-K-JISUUI.d.cts} +757 -112
  295. package/dist/{types-CjqFLXVx.d.cts → types-TywAc1ow.d.ts} +40 -27
  296. package/dist/{types-DiXeO0yB.d.ts → types-UBpth6_9.d.ts} +2 -2
  297. package/dist/{types-D0BOES7q.d.cts → types-Vw-tduOH.d.ts} +2 -163
  298. package/dist/{types-CF5ZROX5.d.cts → types-ZyLTqgpa.d.cts} +2 -2
  299. package/dist/{types-BmcZyKgM.d.cts → types-aylD1zQz.d.cts} +3 -3
  300. package/dist/{types-CbPO9cGq.d.cts → types-fYY4q7dC.d.cts} +2 -2
  301. package/dist/{types-Foy0RnqF.d.ts → types-jYn3e3Du.d.ts} +3 -3
  302. package/dist/{types-p6UYqJo_.d.ts → types-qXqJRPHj.d.ts} +2 -2
  303. package/dist/{types-B452bFfS.d.ts → types-r-Qa3y8e.d.ts} +2 -2
  304. package/dist/{types-DhE7iY90.d.ts → types-z82j5aNW.d.ts} +3 -3
  305. package/dist/{collectByCursor-2-8SuJ-8.js → validateConnectionStatus-DgJwuEy9.js} +32 -22
  306. package/dist/validateConnectionStatus-DgJwuEy9.js.map +1 -0
  307. package/dist/{collectByCursor-D58__WD1.cjs → validateConnectionStatus-DpYRsU-e.cjs} +37 -21
  308. package/dist/validateConnectionStatus-DpYRsU-e.cjs.map +1 -0
  309. package/dist/vault/index.d.cts +1 -1
  310. package/dist/vault/index.d.ts +1 -1
  311. package/dist/vault/types.d.cts +1 -1
  312. package/dist/vault/types.d.ts +1 -1
  313. package/package.json +2 -2
  314. package/surface/apps.md +8 -3
  315. package/surface/auth.md +3 -2
  316. package/surface/chat.md +3 -3
  317. package/surface/dataScience.md +2 -2
  318. package/surface/kaiAgent.md +4 -3
  319. package/surface/management.md +4 -4
  320. package/surface/queue.md +7 -7
  321. package/surface/storage.md +27 -26
  322. package/dist/ManagementSessionMintError-BMHDcEqV.js.map +0 -1
  323. package/dist/ManagementSessionMintError-Bc9bc7Ai.cjs.map +0 -1
  324. package/dist/apps-BN7fWtSm.js.map +0 -1
  325. package/dist/apps-C1x5IKNQ.cjs.map +0 -1
  326. package/dist/authClient-B_Mb4Vzs.js.map +0 -1
  327. package/dist/authClient-C9QqhT2M.cjs.map +0 -1
  328. package/dist/collectByCursor-2-8SuJ-8.js.map +0 -1
  329. package/dist/collectByCursor-D58__WD1.cjs.map +0 -1
  330. package/dist/constants-HccvU5kx.js.map +0 -1
  331. package/dist/constants-V9hAyPTo.cjs.map +0 -1
  332. package/dist/developerPortalClient-BcK9F-Fs.cjs.map +0 -1
  333. package/dist/developerPortalClient-CzCJ5sE3.js.map +0 -1
  334. package/dist/index-C6FI_Lc7.d.ts +0 -10
  335. package/dist/index-CmtqbTse.d.cts +0 -10
  336. package/dist/kaiAgent-D0MoKqXe.js.map +0 -1
  337. package/dist/kaiAgent-De2T6G4G.cjs.map +0 -1
  338. package/dist/management-BlMQnPNS.js.map +0 -1
  339. package/dist/management-dIMrTTpI.cjs.map +0 -1
  340. package/dist/middleware-DxGv7DG8.js.map +0 -1
  341. package/dist/middleware-vIaPDtQI.cjs.map +0 -1
  342. package/dist/storage-Bw-HSnPp.js.map +0 -1
  343. package/dist/storage-jLhVrKZh.cjs.map +0 -1
  344. package/dist/store-2OyH1XOP.cjs.map +0 -1
  345. package/dist/store-HP0zRcLz.js.map +0 -1
package/README.md CHANGED
@@ -14,133 +14,28 @@ npm install @keboola/api-client
14
14
 
15
15
  ## Quick Start
16
16
 
17
- The SDK exposes two flow-specific factories — pick the one that matches how you authenticate.
18
- **Both return `{ api, session }`** and work the same in browser and Node:
19
-
20
- - `createLegacyKeboola()` — legacy **Storage API token** (SAPI) flow.
21
- - `createKeboola()` — **bearer / OAuth** flow.
22
-
23
- `session` is the lifecycle — you drive it to _ready_. `api` is the product surface, gated by state:
24
-
25
- | Tier | Live once… | Example |
26
- | --------------------------------------------- | --------------------------------------- | ---------------------------------- |
27
- | `api.auth.*` | a `baseUrl` is configured | `api.auth.login.withPassword(...)` |
28
- | `api.management.*` | the management realm authenticates | `api.management.projects.*` |
29
- | `api.storage` / `api.queue` / `api.stack` / … | the async storage build reaches `ready` | `api.storage.getStackInfo()` |
30
-
31
- Touching a product namespace before _ready_ throws a `KeboolaError`. `session.isStorageReady()` and
32
- `session.subscribe(cb)` observe the transition; the `…Async` verbs below await it for you.
33
-
34
- > Options are identical for both factories: `{ baseUrl?, middlewares?, clientServiceUrls? }`. There is
35
- > **no built-in token persistence** — a browser app that must survive a reload re-authenticates on boot;
36
- > a Node process keeps the credential wherever it already stores secrets.
37
-
38
- ### Legacy (SAPI token) — Node
39
-
40
- You already hold a Storage API token (env var, secret store). One step to _ready_:
41
-
42
- ```typescript
43
- import { createLegacyKeboola } from '@keboola/api-client';
44
-
45
- const { api, session } = createLegacyKeboola({ baseUrl: process.env.KEBOOLA_STACK_URL! });
46
- await session.authenticateStorageAsync(process.env.KEBOOLA_STORAGE_TOKEN!);
47
-
48
- const stack = api.stack; // synchronous once ready
49
- const token = await api.storage.tokens.verify();
50
- ```
51
-
52
- Optionally add the management realm with `session.authenticateManagement(manageToken)` → `api.management.*`.
53
-
54
- ### Legacy (SAPI token) — Browser
55
-
56
- Identical calls; the token is whatever the host hands the app (e.g. kbc-ui's boot payload). Use the
57
- fire-and-forget `authenticateStorage` and observe readiness instead of awaiting:
58
-
59
- ```typescript
60
- import { createLegacyKeboola } from '@keboola/api-client';
61
-
62
- const { api, session } = createLegacyKeboola({ baseUrl });
63
- session.authenticateStorage(sapiToken);
64
- session.subscribe((snapshot) => {
65
- if (snapshot.storage === 'ready') {
66
- /* render the app — api.storage.* is now live */
67
- }
68
- });
69
- ```
70
-
71
- > **React:** don't wire this by hand — `LegacyAuthProvider` + `useProjectApi()` from
72
- > [`@keboola/api-client-react`](../api-client-react) drive the singleton session to ready and hand you `api`.
73
-
74
- ### Bearer (OAuth) — Browser
75
-
76
- Interactive login, then a project:
77
-
78
17
  ```typescript
79
18
  import { createKeboola } from '@keboola/api-client';
80
19
 
81
- const { session, getStackApi, getProjectApi } = createKeboola({ defaultBaseUrl: baseUrl });
82
-
83
- // `auth` is live from construction: a stack is always active
84
- const result = await getStackApi().auth.login.withPassword({ email, password });
85
- if (result.mfaRequired) {
86
- // result is an MFA challenge — verify via getStackApi().auth.mfa.* to obtain the LoginSuccess
87
- }
88
-
89
- session.auth.authenticate({ type: 'token', ...result }); // → `management` is now live
90
- const api = getProjectApi(projectId); // projectId from your project picker
20
+ const { session, stackApi, projectApi } = createKeboola({ defaultBaseUrl: baseUrl });
21
+ const result = await stackApi.auth.login.withPassword({ email, password });
22
+ if (!result.mfaRequired) session.auth.authenticate({ type: 'token', ...result });
91
23
 
92
- const buckets = await api.storage.buckets.getBuckets({ branchId: 'default' });
93
- const other = getProjectApi(otherProjectId); // another project, the same sign-in
24
+ const buckets = await projectApi(projectId).storage.buckets.getBuckets({ branchId: 'default' });
94
25
  ```
95
26
 
96
- > **React:** `StackApiProvider` + `useStackApi()` serve the sign-in; `ProjectApiProvider` +
97
- > `useProjectApi()` the project the app is in.
98
-
99
- ### Bearer (OAuth) — Node
100
-
101
- Same shape. Either run `api.auth.login.withPassword(...)` headlessly, or, if you already hold a
102
- credential, hand a `LoginSuccess`-shaped object straight to `session.authenticate`:
103
-
104
- ```typescript
105
- import { createKeboola } from '@keboola/api-client';
106
-
107
- const { api, session } = createKeboola({ defaultBaseUrl: process.env.KEBOOLA_STACK_URL! });
108
-
109
- session.authenticate({
110
- mfaRequired: false,
111
- accessToken: process.env.KBC_ACCESS_TOKEN!,
112
- refreshToken: process.env.KBC_REFRESH_TOKEN!,
113
- tokenType: 'Bearer',
114
- expiresIn: 3600,
115
- sessionId: '',
116
- user: { id: 0, email: '', name: '' },
117
- });
118
- await session.setProjectAsync(Number(process.env.KBC_PROJECT_ID));
119
-
120
- const stackInfo = await api.storage.getStackInfo();
121
- ```
122
-
123
- > The SDK refreshes the access token in-band; persisting the rotated refresh token across process
124
- > restarts is the caller's responsibility (there is no storage adapter).
125
-
126
- ### Single-service client (when you only need one service)
127
-
128
- For a single service — including a **browser SPA that only talks to Storage** — use the per-service
129
- factory. It needs only `baseUrl` + `auth` and skips the stack-info round-trip. Reach for a full client
130
- above only when you need multiple stack services.
27
+ Holding only a Storage API token, use the per-service clients:
131
28
 
132
29
  ```typescript
133
30
  import { createStorageClient } from '@keboola/api-client/storage';
134
31
 
135
- const storage = createStorageClient({
136
- baseUrl: 'https://connection.keboola.com',
137
- auth: { type: 'sapi-token', token: 'your-storage-token' },
138
- });
139
-
140
- const stackInfo = await storage.getStackInfo();
141
- const token = await storage.tokens.verify();
32
+ const storage = createStorageClient({ baseUrl, auth: { type: 'sapi-token', token } });
33
+ const tables = await storage.tables.getTables();
142
34
  ```
143
35
 
36
+ Sessions, expiry, persistence, and a token's other services:
37
+ [`AGENTS.md` → Getting a client](./AGENTS.md#getting-a-client).
38
+
144
39
  ### Type imports
145
40
 
146
41
  ```typescript
@@ -156,10 +51,9 @@ import type { VariableWithHash } from '@keboola/api-client/vault/types';
156
51
  src/
157
52
  index.ts # package entry — re-exports keboola/ factories, errors, utils
158
53
  keboola/
159
- bearer/keboola.ts # createKeboola() — bearer/OAuth flow → { session, getStackApi, getProjectApi }
160
- bearer/context.ts # per-stack index, fetched once (pending→ready|errored)
161
- legacy/keboola.ts # createLegacyKeboola() — SAPI-token flow → { api, session }
162
- createApi.ts # flow-agnostic, state-gating `api` proxy
54
+ keboola.ts # createKeboola() — bearer/OAuth flow → { session, stackApi, projectApi }
55
+ context.ts # per-stack index, fetched once (pending→ready|errored)
56
+ types.ts # options, and the `StackApi` / `ProjectApi` types
163
57
  internal.ts # HTTP headers, prefixes
164
58
  fetchClient/
165
59
  createFetchClient/ # Core fetch wrapper, middleware composition
@@ -210,7 +104,7 @@ src/
210
104
 
211
105
  ## Service Clients
212
106
 
213
- On the `api` object returned by `createKeboola()` / `createLegacyKeboola()` — once the session reaches `ready` — the following clients are available.
107
+ On a `ProjectApi` from `createKeboola(...).projectApi(projectId)`, the following clients are available.
214
108
  Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the generic fetch client.
215
109
 
216
110
  | Accessor | Service | Key methods |
@@ -234,24 +128,17 @@ Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the gene
234
128
 
235
129
  Additional accessors on the ready client:
236
130
 
237
- | Accessor | Purpose |
238
- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
239
- | `api.stack` | Stack info: `hasFeature()`, `hasService()`, `getServiceUrl()`, `hasComponent()`, `getComponent()`, `services`, `features`, `components` |
240
- | `api.baseUrl` | Canonical stack URL every request is built on |
241
- | `api.serviceMeta` | Service availability metadata from the registry |
242
- | `api.sdk.tag` | Tag SDK: `getTags()`, `getTagsByObjectId()`, `createTag()`, `updateTag()`, `deleteTag()`, `assignTags()`, `unassignTags()`, `createAndAssignTag()` |
131
+ | Accessor | Purpose |
132
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
133
+ | `api.stack` | Stack info: `hasFeature()`, `hasService()`, `getServiceUrl()`, `hasComponent()`, `getComponent()`, `services`, `features`, `components` |
134
+ | `api.baseUrl` | Canonical stack URL every request is built on |
135
+ | `api.sdk.tag` | Tag SDK: `getTags()`, `getTagsByObjectId()`, `createTag()`, `updateTag()`, `deleteTag()`, `assignTags()`, `unassignTags()`, `createAndAssignTag()` |
243
136
 
244
137
  ## Entry Points
245
138
 
246
139
  ```typescript
247
140
  // Main entry — SDK factories + all exports
248
- import {
249
- createKeboola,
250
- createLegacyKeboola,
251
- isApiError,
252
- concurrent,
253
- poll,
254
- } from '@keboola/api-client';
141
+ import { createKeboola, isApiError, concurrent, poll } from '@keboola/api-client';
255
142
 
256
143
  // Per-client imports — individual client factories
257
144
  import { createStorageClient } from '@keboola/api-client/storage';
@@ -15,7 +15,8 @@ var ManagementClientAuthError = class extends require_createFetchClient.ApiError
15
15
  * The Manage client has no credential of its own and could not mint a session token from the
16
16
  * login cookie.
17
17
  *
18
- * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.
18
+ * - Only a `management-token` client with `mintSessionToken` (control-ui) mints; a bearer client
19
+ * never raises it.
19
20
  * - The login page in place of the token: the session expired, or there is no cookie (off the
20
21
  * stack host).
21
22
  */
@@ -42,4 +43,4 @@ Object.defineProperty(exports, "ManagementSessionMintError", {
42
43
  }
43
44
  });
44
45
 
45
- //# sourceMappingURL=ManagementSessionMintError-Bc9bc7Ai.cjs.map
46
+ //# sourceMappingURL=ManagementSessionMintError-BCOLLaJi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagementSessionMintError-BCOLLaJi.cjs","names":["ApiError"],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only a `management-token` client with `mintSessionToken` (control-ui) mints; a bearer client\n * never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+CA,0BAAAA,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;;ACFA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
@@ -15,7 +15,8 @@ var ManagementClientAuthError = class extends ApiError {
15
15
  * The Manage client has no credential of its own and could not mint a session token from the
16
16
  * login cookie.
17
17
  *
18
- * - Only the legacy (SAPI) entry point mints; a bearer client never raises it.
18
+ * - Only a `management-token` client with `mintSessionToken` (control-ui) mints; a bearer client
19
+ * never raises it.
19
20
  * - The login page in place of the token: the session expired, or there is no cookie (off the
20
21
  * stack host).
21
22
  */
@@ -31,4 +32,4 @@ var ManagementSessionMintError = class extends ManagementClientAuthError {
31
32
  };
32
33
  export { ManagementClientAuthError as n, ManagementSessionMintError as t };
33
34
 
34
- //# sourceMappingURL=ManagementSessionMintError-BMHDcEqV.js.map
35
+ //# sourceMappingURL=ManagementSessionMintError-KUX3utTV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManagementSessionMintError-KUX3utTV.js","names":[],"sources":["../src/errors/ManagementClientAuthError.ts","../src/errors/ManagementSessionMintError.ts"],"sourcesContent":["import type { ApiResponse } from '../fetchClient/createFetchClient/types';\n\nimport { ApiError } from './ApiError';\n\nexport class ManagementClientAuthError extends ApiError {\n title: string;\n message: string;\n constructor(title: string, message: string, res: ApiResponse) {\n super(res);\n this.name = 'ManagementClientAuthError';\n this.title = title;\n this.message = message;\n }\n}\n","import { ManagementClientAuthError } from './ManagementClientAuthError';\n\n/**\n * The Manage client has no credential of its own and could not mint a session token from the\n * login cookie.\n *\n * - Only a `management-token` client with `mintSessionToken` (control-ui) mints; a bearer client\n * never raises it.\n * - The login page in place of the token: the session expired, or there is no cookie (off the\n * stack host).\n */\nexport class ManagementSessionMintError extends ManagementClientAuthError {\n constructor({ title, message, response, request, data }: ManagementClientAuthError) {\n super(title, message, { response, request, data });\n this.name = 'ManagementSessionMintError';\n }\n}\n"],"mappings":";;AAIA,IAAa,4BAAb,cAA+C,SAAS;CACtD;CACA;CACA,YAAY,OAAe,SAAiB,KAAkB;EAC5D,MAAM,GAAG;EACT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;CACjB;AACF;;;;;;;;;;;ACFA,IAAa,6BAAb,cAAgD,0BAA0B;CACxE,YAAY,EAAE,OAAO,SAAS,UAAU,SAAS,QAAmC;EAClF,MAAM,OAAO,SAAS;GAAE;GAAU;GAAS;EAAK,CAAC;EACjD,KAAK,OAAO;CACd;AACF"}
@@ -1,4 +1,4 @@
1
- import { Rr as paths, l as OpenapiReturnType } from "./index-DcKc3_Y1.js";
1
+ import { Rr as paths, l as OpenapiReturnType } from "./index-9p4O-clX.js";
2
2
  type SpecAdminRole = NonNullable<NonNullable<OpenapiReturnType<paths['/v2/storage/tokens/verify']['get']>['admin']>['role']>;
3
3
  declare const AdminRole: {
4
4
  readonly Admin: 'admin';
@@ -11,4 +11,4 @@ declare const AdminRole: {
11
11
  };
12
12
  type AdminRole = SpecAdminRole;
13
13
  export { AdminRole as t };
14
- //# sourceMappingURL=adminRoles-CUB0JddB.d.ts.map
14
+ //# sourceMappingURL=adminRoles-CnfGDvjN.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Rr as paths, l as OpenapiReturnType } from "./index-DcKc3_Y1.cjs";
1
+ import { Rr as paths, l as OpenapiReturnType } from "./index-9p4O-clX.cjs";
2
2
  type SpecAdminRole = NonNullable<NonNullable<OpenapiReturnType<paths['/v2/storage/tokens/verify']['get']>['admin']>['role']>;
3
3
  declare const AdminRole: {
4
4
  readonly Admin: 'admin';
@@ -11,4 +11,4 @@ declare const AdminRole: {
11
11
  };
12
12
  type AdminRole = SpecAdminRole;
13
13
  export { AdminRole as t };
14
- //# sourceMappingURL=adminRoles-BFOPSedO.d.cts.map
14
+ //# sourceMappingURL=adminRoles-D6AS9Bzx.d.cts.map
@@ -1,5 +1,5 @@
1
- import { a as DescribeConfigurationVersionBody, d as SuggestComponentBody, f as components, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, r as DescribeConfigurationBody, s as DocsQuestionBody } from "../types-D0BOES7q.cjs";
2
- import { n as ClientInitOptions } from "../types-BqJycQNM.cjs";
1
+ import { a as DescribeConfigurationVersionBody, d as SuggestComponentBody, f as components, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, r as DescribeConfigurationBody, s as DocsQuestionBody } from "../types-CH1uguug.cjs";
2
+ import { n as ClientInitOptions } from "../types-CbM2MApW.cjs";
3
3
  declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
4
4
  healthCheck: (signal?: AbortSignal) => Promise<{
5
5
  status: 'ok';
@@ -1,5 +1,5 @@
1
- import { a as DescribeConfigurationVersionBody, d as SuggestComponentBody, f as components, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, r as DescribeConfigurationBody, s as DocsQuestionBody } from "../types-B_yv00AL.js";
2
- import { n as ClientInitOptions } from "../types-DMEl2iet.js";
1
+ import { a as DescribeConfigurationVersionBody, d as SuggestComponentBody, f as components, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, r as DescribeConfigurationBody, s as DocsQuestionBody } from "../types-Vw-tduOH.js";
2
+ import { n as ClientInitOptions } from "../types-CP8-CssY.js";
3
3
  declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
4
4
  healthCheck: (signal?: AbortSignal) => Promise<{
5
5
  status: 'ok';
@@ -1,2 +1,2 @@
1
- import { a as DescribeConfigurationVersionBody, c as ErrorExplanation, d as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, n as ComponentSuggestion, o as DocsAnswer, r as DescribeConfigurationBody, s as DocsQuestionBody, t as ComponentDocsDetail, u as ObjectDescription } from "../types-D0BOES7q.cjs";
1
+ import { a as DescribeConfigurationVersionBody, c as ErrorExplanation, d as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, n as ComponentSuggestion, o as DocsAnswer, r as DescribeConfigurationBody, s as DocsQuestionBody, t as ComponentDocsDetail, u as ObjectDescription } from "../types-CH1uguug.cjs";
2
2
  export { ComponentDocsDetail, ComponentSuggestion, DescribeConfigurationBody, DescribeConfigurationMergeBody, DescribeConfigurationVersionBody, DocsAnswer, DocsQuestionBody, ErrorExplanation, ExplainErrorBody, ObjectDescription, SuggestComponentBody };
@@ -1,2 +1,2 @@
1
- import { a as DescribeConfigurationVersionBody, c as ErrorExplanation, d as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, n as ComponentSuggestion, o as DocsAnswer, r as DescribeConfigurationBody, s as DocsQuestionBody, t as ComponentDocsDetail, u as ObjectDescription } from "../types-B_yv00AL.js";
1
+ import { a as DescribeConfigurationVersionBody, c as ErrorExplanation, d as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, n as ComponentSuggestion, o as DocsAnswer, r as DescribeConfigurationBody, s as DocsQuestionBody, t as ComponentDocsDetail, u as ObjectDescription } from "../types-Vw-tduOH.js";
2
2
  export { ComponentDocsDetail, ComponentSuggestion, DescribeConfigurationBody, DescribeConfigurationMergeBody, DescribeConfigurationVersionBody, DocsAnswer, DocsQuestionBody, ErrorExplanation, ExplainErrorBody, ObjectDescription, SuggestComponentBody };
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_apps = require("../apps-C1x5IKNQ.cjs");
2
+ const require_apps = require("../apps-BA9JRLAZ.cjs");
3
3
  exports.createAppsClient = require_apps.createAppsClient;
4
4
  exports.parseLogLines = require_apps.parseLogLines;
@@ -1,3 +1,3 @@
1
- import { T as parseLogLines } from "../types-3ZE32k8V.cjs";
2
- import { t as createAppsClient } from "../index-DAb1g6je.cjs";
1
+ import { j as parseLogLines } from "../types-K-JISUUI.cjs";
2
+ import { t as createAppsClient } from "../index-CGUPsu_R.cjs";
3
3
  export { createAppsClient, parseLogLines };
@@ -1,3 +1,3 @@
1
- import { T as parseLogLines } from "../types-BhGr9OQ4.js";
2
- import { t as createAppsClient } from "../index-C_A0JS9s.js";
1
+ import { j as parseLogLines } from "../types-Dteot3tT.js";
2
+ import { t as createAppsClient } from "../index-Btft3BFn.js";
3
3
  export { createAppsClient, parseLogLines };
@@ -1 +1 @@
1
- export { t as createAppsClient, n as parseLogLines } from "../apps-BN7fWtSm.js";
1
+ export { t as createAppsClient, n as parseLogLines } from "../apps-DDcguJ1i.js";
@@ -1,2 +1,2 @@
1
- import { C as RunId, S as GetLogsTailQuery, _ as DeploymentRunState, a as AppRun, b as GetAppsQuery, c as CreateCredentialBody, d as Credential, f as CredentialId, g as DeploymentId, h as DeploymentBuildState, i as AppPassword, l as CreateDeploymentBody, m as Deployment, n as AppGitRepo, o as AppState, p as CredentialList, r as AppId, s as CreateAppBody, t as App, u as CreatedCredential, v as GetAppGitEntrypointsQuery, w as LogEntry, x as GetDeploymentsQuery, y as GetAppRunsQuery } from "../types-3ZE32k8V.cjs";
2
- export { App, AppGitRepo, AppId, AppPassword, AppRun, AppState, CreateAppBody, CreateCredentialBody, CreateDeploymentBody, CreatedCredential, Credential, CredentialId, CredentialList, Deployment, DeploymentBuildState, DeploymentId, DeploymentRunState, GetAppGitEntrypointsQuery, GetAppRunsQuery, GetAppsQuery, GetDeploymentsQuery, GetLogsTailQuery, type LogEntry, RunId };
1
+ import { A as LogEntry, C as GetAppGitEntrypointsQuery, D as GetDraftsQuery, E as GetDeploymentsQuery, O as GetLogsTailQuery, S as DraftRunState, T as GetAppsQuery, _ as DeploymentId, a as AppRun, b as DraftId, c as CreateCredentialBody, d as CreatedCredential, f as Credential, g as DeploymentBuildState, h as Deployment, i as AppPassword, k as RunId, l as CreateDeploymentBody, m as CredentialList, n as AppGitRepo, o as AppState, p as CredentialId, r as AppId, s as CreateAppBody, t as App, u as CreateDraftBody, v as DeploymentRunState, w as GetAppRunsQuery, x as DraftPreviewLink, y as Draft } from "../types-K-JISUUI.cjs";
2
+ export { App, AppGitRepo, AppId, AppPassword, AppRun, AppState, CreateAppBody, CreateCredentialBody, CreateDeploymentBody, CreateDraftBody, CreatedCredential, Credential, CredentialId, CredentialList, Deployment, DeploymentBuildState, DeploymentId, DeploymentRunState, Draft, DraftId, DraftPreviewLink, DraftRunState, GetAppGitEntrypointsQuery, GetAppRunsQuery, GetAppsQuery, GetDeploymentsQuery, GetDraftsQuery, GetLogsTailQuery, type LogEntry, RunId };
@@ -1,2 +1,2 @@
1
- import { C as RunId, S as GetLogsTailQuery, _ as DeploymentRunState, a as AppRun, b as GetAppsQuery, c as CreateCredentialBody, d as Credential, f as CredentialId, g as DeploymentId, h as DeploymentBuildState, i as AppPassword, l as CreateDeploymentBody, m as Deployment, n as AppGitRepo, o as AppState, p as CredentialList, r as AppId, s as CreateAppBody, t as App, u as CreatedCredential, v as GetAppGitEntrypointsQuery, w as LogEntry, x as GetDeploymentsQuery, y as GetAppRunsQuery } from "../types-BhGr9OQ4.js";
2
- export { App, AppGitRepo, AppId, AppPassword, AppRun, AppState, CreateAppBody, CreateCredentialBody, CreateDeploymentBody, CreatedCredential, Credential, CredentialId, CredentialList, Deployment, DeploymentBuildState, DeploymentId, DeploymentRunState, GetAppGitEntrypointsQuery, GetAppRunsQuery, GetAppsQuery, GetDeploymentsQuery, GetLogsTailQuery, type LogEntry, RunId };
1
+ import { A as LogEntry, C as GetAppGitEntrypointsQuery, D as GetDraftsQuery, E as GetDeploymentsQuery, O as GetLogsTailQuery, S as DraftRunState, T as GetAppsQuery, _ as DeploymentId, a as AppRun, b as DraftId, c as CreateCredentialBody, d as CreatedCredential, f as Credential, g as DeploymentBuildState, h as Deployment, i as AppPassword, k as RunId, l as CreateDeploymentBody, m as CredentialList, n as AppGitRepo, o as AppState, p as CredentialId, r as AppId, s as CreateAppBody, t as App, u as CreateDraftBody, v as DeploymentRunState, w as GetAppRunsQuery, x as DraftPreviewLink, y as Draft } from "../types-Dteot3tT.js";
2
+ export { App, AppGitRepo, AppId, AppPassword, AppRun, AppState, CreateAppBody, CreateCredentialBody, CreateDeploymentBody, CreateDraftBody, CreatedCredential, Credential, CredentialId, CredentialList, Deployment, DeploymentBuildState, DeploymentId, DeploymentRunState, Draft, DraftId, DraftPreviewLink, DraftRunState, GetAppGitEntrypointsQuery, GetAppRunsQuery, GetAppsQuery, GetDeploymentsQuery, GetDraftsQuery, GetLogsTailQuery, type LogEntry, RunId };
@@ -259,6 +259,55 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
259
259
  } }, { signal });
260
260
  return data;
261
261
  };
262
+ /**
263
+ * Starts a draft that live-syncs an existing branch of the app's Git repository on its own host.
264
+ *
265
+ * - `400` when `body.gitBranch` does not exist; a draft never creates a branch.
266
+ * - `409` until the app has been deployed once.
267
+ * - Not idempotent: a retried request starts a second draft.
268
+ */
269
+ const createDraft = async (appId, body, options = {}) => {
270
+ const { data } = await client.post("/apps/{appId}/drafts", {
271
+ path: { appId },
272
+ body
273
+ }, writeOptions(options));
274
+ return data;
275
+ };
276
+ /** Live drafts, newest first. */
277
+ const getDrafts = async (appId, query = {}, signal) => {
278
+ const { data } = await client.get("/apps/{appId}/drafts", {
279
+ path: { appId },
280
+ query
281
+ }, { signal });
282
+ return data;
283
+ };
284
+ const getDraft = async (appId, draftId, signal) => {
285
+ const { data } = await client.get("/apps/{appId}/drafts/{draftId}", { path: {
286
+ appId,
287
+ draftId
288
+ } }, { signal });
289
+ return data;
290
+ };
291
+ /** Stops and removes the draft; its Git branch is untouched. */
292
+ const deleteDraft = async (appId, draftId, signal) => {
293
+ await client.delete("/apps/{appId}/drafts/{draftId}", { path: {
294
+ appId,
295
+ draftId
296
+ } }, { signal });
297
+ };
298
+ /**
299
+ * A 60-second link that opens the draft's own `url` without the app's authentication.
300
+ *
301
+ * - `400` while the draft has no `url` yet; retry once it reports one.
302
+ * - `503` on a stack without preview links.
303
+ */
304
+ const createDraftPreviewLink = async (appId, draftId, signal) => {
305
+ const { data } = await client.post("/apps/{appId}/drafts/{draftId}/preview-link", { path: {
306
+ appId,
307
+ draftId
308
+ } }, { signal });
309
+ return data;
310
+ };
262
311
  /** Serving container's log. `query.since` and `query.lines` are mutually exclusive. */
263
312
  const getAppLogsTail = (appId, { query, signal } = {}) => readAppLogsTail(() => client.get("/apps/{appId}/logs/tail", {
264
313
  path: { appId },
@@ -347,6 +396,11 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
347
396
  getDeployment,
348
397
  deleteDeployment,
349
398
  promoteDeployment,
399
+ createDraft,
400
+ getDrafts,
401
+ getDraft,
402
+ deleteDraft,
403
+ createDraftPreviewLink,
350
404
  getAppLogsTail,
351
405
  getAppLogsDownload,
352
406
  getDeploymentLogsTail,
@@ -373,4 +427,4 @@ Object.defineProperty(exports, "parseLogLines", {
373
427
  }
374
428
  });
375
429
 
376
- //# sourceMappingURL=apps-C1x5IKNQ.cjs.map
430
+ //# sourceMappingURL=apps-BA9JRLAZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps-BA9JRLAZ.cjs","names":["utc","z","record","isPlainObject","isApiError","HttpStatus","parseContentDispositionHeader","HttpHeader","createOpenapiFetchClient","createAuthHeaders"],"sources":["../src/domain/appLogs.ts","../src/clients/apps/appsClient.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc.js';\nimport * as z from 'zod';\n\nimport {\n type ApiResponse,\n HttpHeader,\n isApiError,\n parseContentDispositionHeader,\n} from '../fetchClient';\nimport { HttpStatus } from '../internal';\nimport { isPlainObject } from '../utils/isPlainObject';\n\n/**\n * Reading a data app's container output, as the `apps` client serves it.\n *\n * - The tail contract lives here: how a line is parsed, where the next poll resumes, and that an\n * idle app is not an error.\n */\n\ndayjs.extend(utc);\n\nexport type LogEntry = {\n timestamp: string | null;\n message: string;\n};\n\nconst DEFAULT_LOGS_FILE_NAME = 'logs.txt';\n\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z/;\nconst LEADING_ISO_TIMESTAMP_REGEX = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z)\\s?/;\n\n/** The error envelope sandboxes-service returns; the tail branches on its `code`. */\nconst TailError = z.object({\n context: z.object({\n code: z.string(),\n }),\n});\n\n/**\n * There is nothing to read right now, reported per scope: an app whose serving member is asleep\n * answers `apps.appNotRunning`, a deployment that isn't running answers `apps.deploymentNotRunning` —\n * the normal state of a staged or retired one, since a deployment only runs while it is production.\n */\nconst NOTHING_RUNNING_CODES = new Set(['apps.appNotRunning', 'apps.deploymentNotRunning']);\n\nconst tryParseJsonl = (line: string): LogEntry | null => {\n if (!line.startsWith('{')) return null;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(line);\n } catch {\n return null;\n }\n\n if (typeof parsed !== 'object' || parsed === null) return null;\n\n const record = parsed as Record<string, unknown>;\n const { timestamp, message } = record;\n\n if (typeof timestamp !== 'string' || typeof message !== 'string') return null;\n\n return {\n timestamp,\n message,\n };\n};\n\nconst parsePlainTextLine = (line: string): LogEntry => {\n const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);\n if (match) {\n return { timestamp: match[1]!, message: line.slice(match[0].length) };\n }\n return { timestamp: null, message: line };\n};\n\nexport const parseLogLine = (line: string): LogEntry =>\n tryParseJsonl(line) ?? parsePlainTextLine(line);\n\nconst toLogEntryFromObject = (raw: Record<string, unknown>): LogEntry | null => {\n if (typeof raw.message !== 'string') return null;\n return {\n timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : null,\n message: raw.message,\n };\n};\n\nexport const parseLogLines = (raw: unknown): LogEntry[] => {\n if (raw === null || raw === undefined || raw === '') return [];\n\n if (Array.isArray(raw)) {\n return raw.flatMap((item) => {\n if (typeof item === 'string') return item === '' ? [] : [parseLogLine(item)];\n if (isPlainObject(item)) {\n const entry = toLogEntryFromObject(item);\n return entry ? [entry] : [];\n }\n return [];\n });\n }\n\n if (isPlainObject(raw)) {\n const entry = toLogEntryFromObject(raw);\n return entry ? [entry] : [];\n }\n\n if (typeof raw !== 'string') return [];\n\n const lines = raw.split('\\n');\n const entries: LogEntry[] = [];\n for (const line of lines) {\n if (line === '') continue;\n entries.push(parseLogLine(line));\n }\n return entries;\n};\n\nexport const lastLogTimestamp = (entries: LogEntry[]) => {\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (!entry) continue;\n if (entry.timestamp) return entry.timestamp;\n\n // A plain-text line may carry a timestamp embedded mid-line (legacy format).\n const match = entry.message.match(ISO_TIMESTAMP_REGEX);\n if (match) return match[0];\n }\n return null;\n};\n\nconst calculateNextLogTimestamp = (timestamp: string | null) => {\n if (timestamp === null) return null;\n return dayjs(timestamp).utc().add(1, 'second').utc().format();\n};\n\n/**\n * The tail plus the timestamp a follow-up poll resumes from. A {@link NOTHING_RUNNING_CODES} `400`\n * reads as an empty tail rather than an error — an idle app between visits, or a deployment that is\n * not the one currently serving, has no logs to stream and that is its normal condition.\n */\nexport const readAppLogsTail = async (fetchTail: () => Promise<ApiResponse<string>>) => {\n try {\n const { data } = await fetchTail();\n const entries = parseLogLines(data);\n\n return {\n entries,\n nextLogTimestamp: calculateNextLogTimestamp(lastLogTimestamp(entries)),\n };\n } catch (error) {\n if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST) {\n const code = TailError.safeParse(error.data).data?.context?.code;\n if (code !== undefined && NOTHING_RUNNING_CODES.has(code)) {\n return { entries: [], nextLogTimestamp: null };\n }\n }\n throw error;\n }\n};\n\n/** The whole log as a file download, named by the service's `Content-Disposition` where it sets one. */\nexport const readAppLogsDownload = async (fetchLogs: () => Promise<ApiResponse<string>>) => {\n const { data, response } = await fetchLogs();\n const contentDisposition = parseContentDispositionHeader(\n response.headers.get(HttpHeader.CONTENT_DISPOSITION),\n );\n\n return {\n logs: data,\n fileName: contentDisposition.filename ?? DEFAULT_LOGS_FILE_NAME,\n };\n};\n","import { readAppLogsDownload, readAppLogsTail } from '../../domain/appLogs';\nimport { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n App,\n AppId,\n CreateAppBody,\n CreateCredentialBody,\n CreateDeploymentBody,\n CreateDraftBody,\n CredentialId,\n DeploymentId,\n DraftId,\n GetAppGitEntrypointsQuery,\n GetAppRunsQuery,\n GetAppsQuery,\n GetDeploymentsQuery,\n GetDraftsQuery,\n GetLogsTailQuery,\n RunId,\n} from './types';\n\n/**\n * Options every write takes.\n *\n * - No `idempotencyKey`: the service ignores it, so a retried create may duplicate.\n */\ntype WriteOptions = {\n signal?: AbortSignal;\n};\n\ntype LogsTailOptions = {\n query?: GetLogsTailQuery;\n signal?: AbortSignal;\n};\n\n/**\n * `/v2` App Deployments — data apps and their immutable deployment history.\n *\n * - `/v1` of the same service is the `dataScience` client.\n * - `baseUrl` must already end in `/v2`; `createServiceClients` composes it.\n * - `POST /apps/{appId}/activity` is absent: it needs a Manage token with `apps:proxy` scope.\n */\nexport const createAppsClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const writeOptions = ({ signal }: WriteOptions) => ({ signal });\n\n /** Service metadata — the `/v2` surface has no `/health-check`. */\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/', {}, { signal });\n\n return data;\n };\n\n const getApps = async (query: GetAppsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps', { query }, { signal });\n\n return data;\n };\n\n const getApp = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * Reserves the app and its Storage configuration only.\n *\n * - `parameters` and `authorization.app_proxy` are written afterwards via the Storage API.\n */\n const createApp = async (body: CreateAppBody, options: WriteOptions = {}) => {\n const { data } = await client.post('/apps', { body }, writeOptions(options));\n\n return data;\n };\n\n const deleteApp = async (appId: AppId, signal?: AbortSignal) => {\n await client.delete('/apps/{appId}', { path: { appId } }, { signal });\n };\n\n /** Drops production routing (URL 404s). A no-op returns the app unchanged, not an error. */\n const unpublishApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/unpublish', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Sleeps the app now; the next visitor wakes it, as after an idle auto-suspend. */\n const suspendApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/suspend', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Wakes the app now and clears a failure stop (`disabled`). A stopped app comes back `starting`. */\n const resumeApp = async (appId: AppId, signal?: AbortSignal): Promise<App> => {\n const { data } = await client.post('/apps/{appId}/resume', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** `null` until the first deployment or {@link resetAppPassword} mints one. */\n const getAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/password', { path: { appId } }, { signal });\n\n return data;\n };\n\n /** Replaces any existing password. Read it back with {@link getAppPassword}. */\n const resetAppPassword = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/apps/{appId}/password/reset',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /** App-wide runs, newest first — where a failed deployment's `failureReason` lives. */\n const getAppRuns = async (appId: AppId, query: GetAppRunsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/runs', { path: { appId }, query }, { signal });\n\n return data;\n };\n\n const getAppRun = async (appId: AppId, runId: RunId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/runs/{runId}',\n { path: { appId, runId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Deploys the current config version as a new immutable deployment.\n *\n * - Promotes it unless `body.promote` is `false`; a staged release never runs until promoted.\n * - Returns synchronously; readiness does not.\n */\n const createDeployment = async (\n appId: AppId,\n body?: CreateDeploymentBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/deployments',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n /** Live deployment history, newest first; `query.archived: true` lists the deleted ones instead. */\n const getDeployments = async (\n appId: AppId,\n query: GetDeploymentsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n const getDeployment = async (appId: AppId, deploymentId: DeploymentId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /** Deletes the deployment, keeping its row as `archived`. `409` while it is production. */\n const deleteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/deployments/{deploymentId}',\n { path: { appId, deploymentId } },\n { signal },\n );\n };\n\n /**\n * Makes this deployment production; also the rollback.\n *\n * - Routing switches once it serves; `desired`/`actualDeploymentId` differ until then.\n */\n const promoteDeployment = async (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ): Promise<App> => {\n const { data } = await client.post(\n '/apps/{appId}/deployments/{deploymentId}/promote',\n { path: { appId, deploymentId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * Starts a draft that live-syncs an existing branch of the app's Git repository on its own host.\n *\n * - `400` when `body.gitBranch` does not exist; a draft never creates a branch.\n * - `409` until the app has been deployed once.\n * - Not idempotent: a retried request starts a second draft.\n */\n const createDraft = async (appId: AppId, body: CreateDraftBody, options: WriteOptions = {}) => {\n const { data } = await client.post(\n '/apps/{appId}/drafts',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n /** Live drafts, newest first. */\n const getDrafts = async (appId: AppId, query: GetDraftsQuery = {}, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/drafts',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n const getDraft = async (appId: AppId, draftId: DraftId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/drafts/{draftId}',\n { path: { appId, draftId } },\n { signal },\n );\n\n return data;\n };\n\n /** Stops and removes the draft; its Git branch is untouched. */\n const deleteDraft = async (appId: AppId, draftId: DraftId, signal?: AbortSignal) => {\n await client.delete('/apps/{appId}/drafts/{draftId}', { path: { appId, draftId } }, { signal });\n };\n\n /**\n * A 60-second link that opens the draft's own `url` without the app's authentication.\n *\n * - `400` while the draft has no `url` yet; retry once it reports one.\n * - `503` on a stack without preview links.\n */\n const createDraftPreviewLink = async (appId: AppId, draftId: DraftId, signal?: AbortSignal) => {\n const { data } = await client.post(\n '/apps/{appId}/drafts/{draftId}/preview-link',\n { path: { appId, draftId } },\n { signal },\n );\n\n return data;\n };\n\n /** Serving container's log. `query.since` and `query.lines` are mutually exclusive. */\n const getAppLogsTail = (appId: AppId, { query, signal }: LogsTailOptions = {}) =>\n readAppLogsTail(() =>\n client.get('/apps/{appId}/logs/tail', { path: { appId }, query }, { signal }),\n );\n\n const getAppLogsDownload = (appId: AppId, signal?: AbortSignal) =>\n readAppLogsDownload(() =>\n client.get('/apps/{appId}/logs/download', { path: { appId } }, { signal }),\n );\n\n const getDeploymentLogsTail = (\n appId: AppId,\n deploymentId: DeploymentId,\n { query, signal }: LogsTailOptions = {},\n ) =>\n readAppLogsTail(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/tail',\n { path: { appId, deploymentId }, query },\n { signal },\n ),\n );\n\n const getDeploymentLogsDownload = (\n appId: AppId,\n deploymentId: DeploymentId,\n signal?: AbortSignal,\n ) =>\n readAppLogsDownload(() =>\n client.get(\n '/apps/{appId}/deployments/{deploymentId}/logs/download',\n { path: { appId, deploymentId } },\n { signal },\n ),\n );\n\n /** `409` when the app has no Git repository configured. */\n const getAppGitRepo = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/git-repo', { path: { appId } }, { signal });\n\n return data;\n };\n\n /**\n * The branches of the app's repository, read with the credentials in its saved configuration.\n *\n * - The request carries no credentials: changes to the Git settings count only once saved.\n * - `409` when the app has no Git repository, or the saved credentials cannot read it.\n */\n const getAppGitRepoBranches = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/branches',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n /**\n * The Streamlit entrypoint candidates in the repository root, read like `getAppGitRepoBranches`.\n *\n * - `query.ref` omitted means the saved branch, then the repository default.\n */\n const getAppGitRepoEntrypoints = async (\n appId: AppId,\n query: GetAppGitEntrypointsQuery = {},\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/entrypoints',\n { path: { appId }, query },\n { signal },\n );\n\n return data;\n };\n\n /** Per app, not per deployment. */\n const getAppGitRepoCredentials = async (appId: AppId, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n const getAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n\n return data;\n };\n\n /** An `http_token` credential's `secret` is returned only here. */\n const createAppGitRepoCredential = async (\n appId: AppId,\n body: CreateCredentialBody,\n options: WriteOptions = {},\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/git-repo/credentials',\n { path: { appId }, body },\n writeOptions(options),\n );\n\n return data;\n };\n\n const deleteAppGitRepoCredential = async (\n appId: AppId,\n credentialId: CredentialId,\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/apps/{appId}/git-repo/credentials/{credentialId}',\n { path: { appId, credentialId } },\n { signal },\n );\n };\n\n return {\n healthCheck,\n getApps,\n getApp,\n createApp,\n deleteApp,\n unpublishApp,\n suspendApp,\n resumeApp,\n getAppPassword,\n resetAppPassword,\n getAppRuns,\n getAppRun,\n createDeployment,\n getDeployments,\n getDeployment,\n deleteDeployment,\n promoteDeployment,\n createDraft,\n getDrafts,\n getDraft,\n deleteDraft,\n createDraftPreviewLink,\n getAppLogsTail,\n getAppLogsDownload,\n getDeploymentLogsTail,\n getDeploymentLogsDownload,\n getAppGitRepo,\n getAppGitRepoBranches,\n getAppGitRepoEntrypoints,\n getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
@@ -255,6 +255,55 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
255
255
  } }, { signal });
256
256
  return data;
257
257
  };
258
+ /**
259
+ * Starts a draft that live-syncs an existing branch of the app's Git repository on its own host.
260
+ *
261
+ * - `400` when `body.gitBranch` does not exist; a draft never creates a branch.
262
+ * - `409` until the app has been deployed once.
263
+ * - Not idempotent: a retried request starts a second draft.
264
+ */
265
+ const createDraft = async (appId, body, options = {}) => {
266
+ const { data } = await client.post("/apps/{appId}/drafts", {
267
+ path: { appId },
268
+ body
269
+ }, writeOptions(options));
270
+ return data;
271
+ };
272
+ /** Live drafts, newest first. */
273
+ const getDrafts = async (appId, query = {}, signal) => {
274
+ const { data } = await client.get("/apps/{appId}/drafts", {
275
+ path: { appId },
276
+ query
277
+ }, { signal });
278
+ return data;
279
+ };
280
+ const getDraft = async (appId, draftId, signal) => {
281
+ const { data } = await client.get("/apps/{appId}/drafts/{draftId}", { path: {
282
+ appId,
283
+ draftId
284
+ } }, { signal });
285
+ return data;
286
+ };
287
+ /** Stops and removes the draft; its Git branch is untouched. */
288
+ const deleteDraft = async (appId, draftId, signal) => {
289
+ await client.delete("/apps/{appId}/drafts/{draftId}", { path: {
290
+ appId,
291
+ draftId
292
+ } }, { signal });
293
+ };
294
+ /**
295
+ * A 60-second link that opens the draft's own `url` without the app's authentication.
296
+ *
297
+ * - `400` while the draft has no `url` yet; retry once it reports one.
298
+ * - `503` on a stack without preview links.
299
+ */
300
+ const createDraftPreviewLink = async (appId, draftId, signal) => {
301
+ const { data } = await client.post("/apps/{appId}/drafts/{draftId}/preview-link", { path: {
302
+ appId,
303
+ draftId
304
+ } }, { signal });
305
+ return data;
306
+ };
258
307
  /** Serving container's log. `query.since` and `query.lines` are mutually exclusive. */
259
308
  const getAppLogsTail = (appId, { query, signal } = {}) => readAppLogsTail(() => client.get("/apps/{appId}/logs/tail", {
260
309
  path: { appId },
@@ -343,6 +392,11 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
343
392
  getDeployment,
344
393
  deleteDeployment,
345
394
  promoteDeployment,
395
+ createDraft,
396
+ getDrafts,
397
+ getDraft,
398
+ deleteDraft,
399
+ createDraftPreviewLink,
346
400
  getAppLogsTail,
347
401
  getAppLogsDownload,
348
402
  getDeploymentLogsTail,
@@ -358,4 +412,4 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
358
412
  };
359
413
  export { parseLogLines as n, createAppsClient as t };
360
414
 
361
- //# sourceMappingURL=apps-BN7fWtSm.js.map
415
+ //# sourceMappingURL=apps-DDcguJ1i.js.map