@keboola/api-client 43.0.0 → 45.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 (286) hide show
  1. package/AGENTS.md +4 -2
  2. package/API-SURFACE.md +4 -10
  3. package/CHANGELOG.md +53 -0
  4. package/README.md +17 -19
  5. package/dist/{ManagementClientAuthError-DUbXlry2.js → ManagementClientAuthError-BcPYxAWZ.js} +2 -2
  6. package/dist/{ManagementClientAuthError-DUbXlry2.js.map → ManagementClientAuthError-BcPYxAWZ.js.map} +1 -1
  7. package/dist/{ManagementClientAuthError-BFZOtLgj.cjs → ManagementClientAuthError-DHuykEPF.cjs} +2 -2
  8. package/dist/{ManagementClientAuthError-BFZOtLgj.cjs.map → ManagementClientAuthError-DHuykEPF.cjs.map} +1 -1
  9. package/dist/ai/index.cjs +2 -2
  10. package/dist/ai/index.js +2 -2
  11. package/dist/{appLogs-oZvt59mk.cjs → appLogs-BG9ueGxA.cjs} +2 -2
  12. package/dist/{appLogs-oZvt59mk.cjs.map → appLogs-BG9ueGxA.cjs.map} +1 -1
  13. package/dist/{appLogs-DfkItQCO.js → appLogs-CEKz68bE.js} +2 -2
  14. package/dist/{appLogs-DfkItQCO.js.map → appLogs-CEKz68bE.js.map} +1 -1
  15. package/dist/apps/index.cjs +3 -3
  16. package/dist/apps/index.js +3 -3
  17. package/dist/assets/index.cjs +1 -1
  18. package/dist/assets/index.js +1 -1
  19. package/dist/auth/index.cjs +1 -1
  20. package/dist/auth/index.js +1 -1
  21. package/dist/{auth-DUHTJTwS.js → auth-C6cHWIWx.js} +2 -2
  22. package/dist/{auth-DUHTJTwS.js.map → auth-C6cHWIWx.js.map} +1 -1
  23. package/dist/{auth-zfI04oj7.cjs → auth-C9o_0bft.cjs} +2 -2
  24. package/dist/{auth-zfI04oj7.cjs.map → auth-C9o_0bft.cjs.map} +1 -1
  25. package/dist/{authClient-CX4buUMc.js → authClient-CACOwVt0.js} +5 -5
  26. package/dist/{authClient-CX4buUMc.js.map → authClient-CACOwVt0.js.map} +1 -1
  27. package/dist/{authClient-BxqRGR5c.cjs → authClient-DZcAR-eW.cjs} +5 -5
  28. package/dist/{authClient-BxqRGR5c.cjs.map → authClient-DZcAR-eW.cjs.map} +1 -1
  29. package/dist/billing/index.cjs +2 -2
  30. package/dist/billing/index.js +2 -2
  31. package/dist/chat/index.cjs +3 -3
  32. package/dist/chat/index.js +3 -3
  33. package/dist/constants/index.cjs +1 -1
  34. package/dist/constants/index.d.cts +1 -1
  35. package/dist/constants/index.d.ts +1 -1
  36. package/dist/constants/index.js +1 -1
  37. package/dist/{constants-C6xku_Vx.cjs → constants-BDGRQqij.cjs} +1 -2
  38. package/dist/constants-BDGRQqij.cjs.map +1 -0
  39. package/dist/{constants-C2tYAJSj.js → constants-Cifrqsls.js} +1 -2
  40. package/dist/constants-Cifrqsls.js.map +1 -0
  41. package/dist/{createFetchClient-BgihytBn.cjs → createFetchClient-ClWD4ua3.cjs} +71 -25
  42. package/dist/createFetchClient-ClWD4ua3.cjs.map +1 -0
  43. package/dist/{createFetchClient-cgWkwgAQ.js → createFetchClient-DITkTV2k.js} +54 -26
  44. package/dist/createFetchClient-DITkTV2k.js.map +1 -0
  45. package/dist/{createGenericFetchClient-C7Y0YVfc.cjs → createGenericFetchClient-B81Iezpb.cjs} +2 -2
  46. package/dist/{createGenericFetchClient-C7Y0YVfc.cjs.map → createGenericFetchClient-B81Iezpb.cjs.map} +1 -1
  47. package/dist/{createGenericFetchClient-CX9Hn3Aq.js → createGenericFetchClient-KqiJhw8G.js} +2 -2
  48. package/dist/{createGenericFetchClient-CX9Hn3Aq.js.map → createGenericFetchClient-KqiJhw8G.js.map} +1 -1
  49. package/dist/{createOpenapiFetchClient-DY5s-aH6.cjs → createOpenapiFetchClient-CioTX11-.cjs} +2 -2
  50. package/dist/{createOpenapiFetchClient-DY5s-aH6.cjs.map → createOpenapiFetchClient-CioTX11-.cjs.map} +1 -1
  51. package/dist/{createOpenapiFetchClient-BxcLLU_N.js → createOpenapiFetchClient-wq8iGLZM.js} +2 -2
  52. package/dist/{createOpenapiFetchClient-BxcLLU_N.js.map → createOpenapiFetchClient-wq8iGLZM.js.map} +1 -1
  53. package/dist/dataScience/index.cjs +2 -2
  54. package/dist/dataScience/index.d.cts +1 -1
  55. package/dist/dataScience/index.d.ts +1 -1
  56. package/dist/dataScience/index.js +2 -2
  57. package/dist/dataScience/types.d.cts +2 -2
  58. package/dist/dataScience/types.d.ts +2 -2
  59. package/dist/{dataScience-BxRoGfnG.js → dataScience-BwHmDoQb.js} +16 -5
  60. package/dist/dataScience-BwHmDoQb.js.map +1 -0
  61. package/dist/{dataScience-BoS8Xfvx.cjs → dataScience-Hhoqoql_.cjs} +16 -5
  62. package/dist/dataScience-Hhoqoql_.cjs.map +1 -0
  63. package/dist/developerPortal/index.cjs +1 -1
  64. package/dist/developerPortal/index.js +1 -1
  65. package/dist/{developerPortalClient-DFHEsrlt.cjs → developerPortalClient-COm7wJxS.cjs} +3 -3
  66. package/dist/{developerPortalClient-DFHEsrlt.cjs.map → developerPortalClient-COm7wJxS.cjs.map} +1 -1
  67. package/dist/{developerPortalClient-C7s0kpjK.js → developerPortalClient-loKq7X_U.js} +3 -3
  68. package/dist/{developerPortalClient-C7s0kpjK.js.map → developerPortalClient-loKq7X_U.js.map} +1 -1
  69. package/dist/editor/index.cjs +2 -2
  70. package/dist/editor/index.js +2 -2
  71. package/dist/encryption/index.cjs +1 -1
  72. package/dist/encryption/index.d.cts +1 -1
  73. package/dist/encryption/index.d.ts +1 -1
  74. package/dist/encryption/index.js +1 -1
  75. package/dist/encryption/types.d.cts +1 -1
  76. package/dist/encryption/types.d.ts +1 -1
  77. package/dist/import/index.cjs +1 -1
  78. package/dist/import/index.js +1 -1
  79. package/dist/{import-BSYvG3Uy.cjs → import-B5DcJGMI.cjs} +3 -3
  80. package/dist/{import-BSYvG3Uy.cjs.map → import-B5DcJGMI.cjs.map} +1 -1
  81. package/dist/{import-CXBcFVbk.js → import-JlH_QaDd.js} +3 -3
  82. package/dist/{import-CXBcFVbk.js.map → import-JlH_QaDd.js.map} +1 -1
  83. package/dist/{index-CAvT_ahE.d.ts → index-BCgmwncs.d.ts} +6 -2
  84. package/dist/{index-BMiZx-4_.d.cts → index-BKOFRmTB.d.cts} +2 -2
  85. package/dist/{index-CBWfpd-0.d.ts → index-Bf8dr2KQ.d.ts} +2 -2
  86. package/dist/{index-BQZ9njUC.d.ts → index-Bl2EloC0.d.ts} +39 -83
  87. package/dist/{index-B03vhWSX.d.ts → index-CA6QxbhZ.d.ts} +4 -2
  88. package/dist/{index-Cm04GKm9.d.cts → index-CGFGd3tF.d.cts} +39 -83
  89. package/dist/{index-D7of2MMN.d.ts → index-CWPi7lBF.d.ts} +3 -3
  90. package/dist/{index-C7KThHI3.d.cts → index-D9UsQOuT.d.cts} +6 -2
  91. package/dist/{index-CdS-c6sC.d.cts → index-Dd40ojPr.d.cts} +3 -3
  92. package/dist/{index-BUsLHNOA.d.cts → index-DkCXaYsn.d.cts} +2 -2
  93. package/dist/{index-D3HFMfJJ.d.cts → index-DkvrbR2i.d.cts} +4 -2
  94. package/dist/{index-B72LTF-k.d.ts → index-DtuwWYDR.d.ts} +2 -2
  95. package/dist/index.cjs +51 -59
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +2 -2
  98. package/dist/index.d.ts +2 -2
  99. package/dist/index.js +48 -56
  100. package/dist/index.js.map +1 -1
  101. package/dist/{isLoginPageRedirect-CsjF95_P.js → isLoginPageRedirect-CsyRa3_v.js} +2 -2
  102. package/dist/{isLoginPageRedirect-CsjF95_P.js.map → isLoginPageRedirect-CsyRa3_v.js.map} +1 -1
  103. package/dist/{isLoginPageRedirect-c451CoWW.cjs → isLoginPageRedirect-iNbwl3iz.cjs} +2 -2
  104. package/dist/{isLoginPageRedirect-c451CoWW.cjs.map → isLoginPageRedirect-iNbwl3iz.cjs.map} +1 -1
  105. package/dist/{jobStatus-CcNlIy5R.cjs → jobStatus-B0E-MZ9I.cjs} +2 -2
  106. package/dist/{jobStatus-CcNlIy5R.cjs.map → jobStatus-B0E-MZ9I.cjs.map} +1 -1
  107. package/dist/{jobStatus-CDp4r5JQ.js → jobStatus-BJdbZ72V.js} +2 -2
  108. package/dist/{jobStatus-CDp4r5JQ.js.map → jobStatus-BJdbZ72V.js.map} +1 -1
  109. package/dist/kaiAgent/index.cjs +1 -1
  110. package/dist/kaiAgent/index.js +1 -1
  111. package/dist/{kaiAgent-ph4DRKlT.cjs → kaiAgent-BhcUsBDk.cjs} +5 -5
  112. package/dist/{kaiAgent-ph4DRKlT.cjs.map → kaiAgent-BhcUsBDk.cjs.map} +1 -1
  113. package/dist/{kaiAgent-xBpUwLeQ.js → kaiAgent-CUeT53-K.js} +5 -5
  114. package/dist/{kaiAgent-xBpUwLeQ.js.map → kaiAgent-CUeT53-K.js.map} +1 -1
  115. package/dist/{kaiMemory-U0DG-CpY.cjs → kaiMemory-Cf81ghNd.cjs} +2 -2
  116. package/dist/{kaiMemory-U0DG-CpY.cjs.map → kaiMemory-Cf81ghNd.cjs.map} +1 -1
  117. package/dist/{kaiMemory-BAniZZAN.js → kaiMemory-DaOh0zVn.js} +2 -2
  118. package/dist/{kaiMemory-BAniZZAN.js.map → kaiMemory-DaOh0zVn.js.map} +1 -1
  119. package/dist/management/index.cjs +1 -1
  120. package/dist/management/index.d.cts +1 -1
  121. package/dist/management/index.d.ts +1 -1
  122. package/dist/management/index.js +1 -1
  123. package/dist/management/types.d.cts +2 -2
  124. package/dist/management/types.d.ts +2 -2
  125. package/dist/{management-5597SiC7.cjs → management-C5lf9nsU.cjs} +31 -6
  126. package/dist/management-C5lf9nsU.cjs.map +1 -0
  127. package/dist/{management-D46KlXts.js → management-WAtKH6Tu.js} +31 -6
  128. package/dist/management-WAtKH6Tu.js.map +1 -0
  129. package/dist/metastore/index.cjs +1 -1
  130. package/dist/metastore/index.d.cts +1 -1
  131. package/dist/metastore/index.d.ts +1 -1
  132. package/dist/metastore/index.js +1 -1
  133. package/dist/metastore/types.d.cts +1 -1
  134. package/dist/metastore/types.d.ts +1 -1
  135. package/dist/{metastore-_OskcLGz.js → metastore-D0C6uaPX.js} +4 -4
  136. package/dist/{metastore-_OskcLGz.js.map → metastore-D0C6uaPX.js.map} +1 -1
  137. package/dist/{metastore-DwMFlP2d.cjs → metastore-YPHUK3jJ.cjs} +4 -4
  138. package/dist/{metastore-DwMFlP2d.cjs.map → metastore-YPHUK3jJ.cjs.map} +1 -1
  139. package/dist/microsoftGraph/index.cjs +2 -2
  140. package/dist/microsoftGraph/index.js +2 -2
  141. package/dist/{middleware-xhg2r2fE.cjs → middleware-D_p5TctO.cjs} +2 -2
  142. package/dist/{middleware-xhg2r2fE.cjs.map → middleware-D_p5TctO.cjs.map} +1 -1
  143. package/dist/{middleware-Drbo_UIZ.js → middleware-DmR6OhTY.js} +2 -2
  144. package/dist/{middleware-Drbo_UIZ.js.map → middleware-DmR6OhTY.js.map} +1 -1
  145. package/dist/notifications/index.cjs +3 -3
  146. package/dist/notifications/index.js +3 -3
  147. package/dist/oauth/index.cjs +1 -1
  148. package/dist/oauth/index.js +1 -1
  149. package/dist/{oauth-TWwAv-va.js → oauth-Ck_Fe14o.js} +5 -5
  150. package/dist/{oauth-TWwAv-va.js.map → oauth-Ck_Fe14o.js.map} +1 -1
  151. package/dist/{oauth-L0Uic3YA.cjs → oauth-DyUwTqHJ.cjs} +5 -5
  152. package/dist/{oauth-L0Uic3YA.cjs.map → oauth-DyUwTqHJ.cjs.map} +1 -1
  153. package/dist/omnisearch/index.cjs +2 -2
  154. package/dist/omnisearch/index.js +2 -2
  155. package/dist/queryService/index.cjs +1 -1
  156. package/dist/queryService/index.d.cts +1 -1
  157. package/dist/queryService/index.d.ts +1 -1
  158. package/dist/queryService/index.js +1 -1
  159. package/dist/{queryService-Drvy1ztW.js → queryService-Blfz59Ms.js} +6 -6
  160. package/dist/{queryService-Drvy1ztW.js.map → queryService-Blfz59Ms.js.map} +1 -1
  161. package/dist/{queryService-DSww_TJp.cjs → queryService-RlNYw7LG.cjs} +6 -6
  162. package/dist/{queryService-DSww_TJp.cjs.map → queryService-RlNYw7LG.cjs.map} +1 -1
  163. package/dist/queue/index.cjs +1 -1
  164. package/dist/queue/index.d.cts +8 -2
  165. package/dist/queue/index.d.ts +8 -2
  166. package/dist/queue/index.js +1 -1
  167. package/dist/queue/types.d.cts +1 -1
  168. package/dist/queue/types.d.ts +1 -1
  169. package/dist/{queue-DpMvv8C-.cjs → queue-BrgRdtOr.cjs} +5 -5
  170. package/dist/{queue-DpMvv8C-.cjs.map → queue-BrgRdtOr.cjs.map} +1 -1
  171. package/dist/{queue-Ci_f_5TI.js → queue-CNvR-M23.js} +5 -5
  172. package/dist/{queue-Ci_f_5TI.js.map → queue-CNvR-M23.js.map} +1 -1
  173. package/dist/scheduler/index.cjs +3 -3
  174. package/dist/scheduler/index.js +3 -3
  175. package/dist/sdk/configurations/index.d.cts +3 -3
  176. package/dist/sdk/configurations/index.d.ts +3 -3
  177. package/dist/sdk/developerPortal/index.cjs +3 -3
  178. package/dist/sdk/developerPortal/index.js +3 -3
  179. package/dist/sdk/kaiMemory/index.cjs +1 -1
  180. package/dist/sdk/kaiMemory/index.d.cts +1 -1
  181. package/dist/sdk/kaiMemory/index.d.ts +1 -1
  182. package/dist/sdk/kaiMemory/index.js +1 -1
  183. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  184. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  185. package/dist/sdk/queryService/index.cjs +1 -1
  186. package/dist/sdk/queryService/index.d.cts +1 -1
  187. package/dist/sdk/queryService/index.d.ts +1 -1
  188. package/dist/sdk/queryService/index.js +1 -1
  189. package/dist/sdk/semanticLayer/index.cjs +1 -2
  190. package/dist/sdk/semanticLayer/index.d.cts +3 -20
  191. package/dist/sdk/semanticLayer/index.d.ts +3 -20
  192. package/dist/sdk/semanticLayer/index.js +2 -2
  193. package/dist/sdk/semanticLayer/types.d.cts +2 -2
  194. package/dist/sdk/semanticLayer/types.d.ts +2 -2
  195. package/dist/sdk/storage/index.d.cts +1 -1
  196. package/dist/sdk/storage/index.d.ts +1 -1
  197. package/dist/sdk/tag/index.d.cts +2 -2
  198. package/dist/sdk/tag/index.d.ts +2 -2
  199. package/dist/sdk/tag/types.d.cts +1 -1
  200. package/dist/sdk/tag/types.d.ts +1 -1
  201. package/dist/sdk/vault/index.d.cts +1 -1
  202. package/dist/sdk/vault/index.d.ts +1 -1
  203. package/dist/{semanticLayer-D3NDh_QH.cjs → semanticLayer-7BejcMj_.cjs} +10 -84
  204. package/dist/semanticLayer-7BejcMj_.cjs.map +1 -0
  205. package/dist/{semanticLayer-Ddg0LSnt.js → semanticLayer-DvjS_nzo.js} +11 -79
  206. package/dist/semanticLayer-DvjS_nzo.js.map +1 -0
  207. package/dist/{serviceIds-DC-H6ZD9.d.ts → serviceIds-DRcoTnSd.d.cts} +1 -2
  208. package/dist/{serviceIds-DC-H6ZD9.d.cts → serviceIds-DRcoTnSd.d.ts} +1 -2
  209. package/dist/status/index.cjs +1 -1
  210. package/dist/status/index.js +1 -1
  211. package/dist/storage/index.cjs +4 -4
  212. package/dist/storage/index.d.cts +1 -1
  213. package/dist/storage/index.d.ts +1 -1
  214. package/dist/storage/index.js +4 -4
  215. package/dist/storage/types.d.cts +3 -3
  216. package/dist/storage/types.d.ts +3 -3
  217. package/dist/{storage-DAJquqEw.cjs → storage-76Sf_z_H.cjs} +35 -24
  218. package/dist/storage-76Sf_z_H.cjs.map +1 -0
  219. package/dist/{storage-C-lyo_iX.js → storage-RkNaOFJ-.js} +35 -24
  220. package/dist/storage-RkNaOFJ-.js.map +1 -0
  221. package/dist/stream/index.cjs +3 -3
  222. package/dist/stream/index.js +3 -3
  223. package/dist/syncActions/index.cjs +1 -1
  224. package/dist/syncActions/index.js +1 -1
  225. package/dist/{syncActions-BQ8kMgL6.js → syncActions-BvFUa9xV.js} +5 -5
  226. package/dist/{syncActions-BQ8kMgL6.js.map → syncActions-BvFUa9xV.js.map} +1 -1
  227. package/dist/{syncActions-DyxNmbUR.cjs → syncActions-DlNPhZY4.cjs} +5 -5
  228. package/dist/{syncActions-DyxNmbUR.cjs.map → syncActions-DlNPhZY4.cjs.map} +1 -1
  229. package/dist/telemetry/index.cjs +3 -3
  230. package/dist/telemetry/index.js +3 -3
  231. package/dist/{types-DwVSj-Da.d.ts → types-9SEE4icc.d.ts} +29 -2
  232. package/dist/{types-CwZgZqrA.d.ts → types-B-5ya_L5.d.ts} +12 -1
  233. package/dist/{types-DUMal2E-.d.cts → types-BjR8Yodc.d.cts} +29 -2
  234. package/dist/{types-CigD_EF5.d.ts → types-CABWhTa9.d.ts} +4 -8
  235. package/dist/{types-B3i04d_A.d.cts → types-CGm2fQKK.d.cts} +183 -5
  236. package/dist/{types-BgVt8SUY.d.cts → types-CLHaZv9f.d.cts} +17 -13
  237. package/dist/{types-04GTqleJ.d.cts → types-CalDJHCX.d.cts} +3 -3
  238. package/dist/{types-BgHtMe8s.d.cts → types-Ccd9O6ca.d.cts} +3 -3
  239. package/dist/{types-BzPuxmaR.d.cts → types-D1A4mAG0.d.cts} +2 -2
  240. package/dist/{types-C0rVtqz2.d.ts → types-D8pGSkRe.d.ts} +17 -13
  241. package/dist/{types-QSchmyvO.d.ts → types-DVZpKGBJ.d.ts} +3 -3
  242. package/dist/{types-BWmLo73i.d.cts → types-DVt0qlzI.d.cts} +14 -3
  243. package/dist/{types-R3AFJD6r.d.ts → types-DazRtukc.d.ts} +14 -3
  244. package/dist/{types-DyArI_Jq.d.cts → types-DdsYv2WG.d.cts} +4 -8
  245. package/dist/{types-2Do0DZ60.d.ts → types-DxN2siRW.d.ts} +2 -2
  246. package/dist/{types-B3P5yAuI.d.ts → types-Fs4a3mVs.d.ts} +183 -5
  247. package/dist/{types-CAAgCRmE.d.cts → types-tgU8XvPs.d.cts} +12 -1
  248. package/dist/{types-CV7jmgtX.d.ts → types-z82gSTx8.d.ts} +3 -3
  249. package/dist/{validateConnectionStatus-gFsBi5FV.js → validateConnectionStatus-CdTV3gsP.js} +3 -3
  250. package/dist/{validateConnectionStatus-gFsBi5FV.js.map → validateConnectionStatus-CdTV3gsP.js.map} +1 -1
  251. package/dist/{validateConnectionStatus-Ca1uEizv.cjs → validateConnectionStatus-DR-0h35y.cjs} +3 -3
  252. package/dist/{validateConnectionStatus-Ca1uEizv.cjs.map → validateConnectionStatus-DR-0h35y.cjs.map} +1 -1
  253. package/dist/vault/index.cjs +4 -4
  254. package/dist/vault/index.js +4 -4
  255. package/package.json +1 -27
  256. package/surface/dataScience.md +1 -0
  257. package/surface/management.md +2 -0
  258. package/surface/queue.md +7 -7
  259. package/surface/storage.md +7 -7
  260. package/dist/businessWorkspaceApi/index.cjs +0 -3
  261. package/dist/businessWorkspaceApi/index.d.cts +0 -2
  262. package/dist/businessWorkspaceApi/index.d.ts +0 -2
  263. package/dist/businessWorkspaceApi/index.js +0 -2
  264. package/dist/businessWorkspaceApi/types.cjs +0 -0
  265. package/dist/businessWorkspaceApi/types.d.cts +0 -2
  266. package/dist/businessWorkspaceApi/types.d.ts +0 -2
  267. package/dist/businessWorkspaceApi/types.js +0 -1
  268. package/dist/businessWorkspaceApi-DFky1k61.js +0 -61
  269. package/dist/businessWorkspaceApi-DFky1k61.js.map +0 -1
  270. package/dist/businessWorkspaceApi-Uzqu0PJM.cjs +0 -66
  271. package/dist/businessWorkspaceApi-Uzqu0PJM.cjs.map +0 -1
  272. package/dist/businessWorkspaceApiClient-BHDJlHFo.d.cts +0 -529
  273. package/dist/businessWorkspaceApiClient-DI-z1VIH.d.ts +0 -529
  274. package/dist/constants-C2tYAJSj.js.map +0 -1
  275. package/dist/constants-C6xku_Vx.cjs.map +0 -1
  276. package/dist/createFetchClient-BgihytBn.cjs.map +0 -1
  277. package/dist/createFetchClient-cgWkwgAQ.js.map +0 -1
  278. package/dist/dataScience-BoS8Xfvx.cjs.map +0 -1
  279. package/dist/dataScience-BxRoGfnG.js.map +0 -1
  280. package/dist/management-5597SiC7.cjs.map +0 -1
  281. package/dist/management-D46KlXts.js.map +0 -1
  282. package/dist/semanticLayer-D3NDh_QH.cjs.map +0 -1
  283. package/dist/semanticLayer-Ddg0LSnt.js.map +0 -1
  284. package/dist/storage-C-lyo_iX.js.map +0 -1
  285. package/dist/storage-DAJquqEw.cjs.map +0 -1
  286. package/surface/businessWorkspaceApi.md +0 -12
package/AGENTS.md CHANGED
@@ -82,7 +82,7 @@ Two flow-specific factories back the SDK:
82
82
  `session` is **flow-specific** lifecycle machinery:
83
83
 
84
84
  - bearer: `stack.select(baseUrl)` → `auth.authenticate(credential)` → `project.select(projectId)`,
85
- plus `auth.signOut()` / `auth.replace(credential)` / `auth.isAuthenticated()` / `auth.isAuthenticatedAsync()` / `auth.rotate(baseUrl)` / `auth.getHeaders(projectId?)`, `stack.close` and
85
+ plus `auth.signOut()` / `auth.replace(credential)` / `auth.isAuthenticated()` / `auth.isAuthenticatedAsync()` / `auth.rotate(baseUrl)` / `auth.getHeaders(projectId?)` / `auth.getHeadersAsync(projectId?)`, `stack.close` and
86
86
  the two `deactivate`s, and `getState()` / `subscribe(cb)` over the stack-and-project table. Every
87
87
  verb is synchronous — nothing awaits a build; a namespace throws `NotReady` until its fetch lands.
88
88
  The one fetch each entry does own is readable both ways: `stack.getContext(baseUrl?)` /
@@ -167,7 +167,9 @@ Three things follow from that, worth knowing before you hold one:
167
167
  a fetch client (the chat stream). Pass the project whose `api` produced the URL, so the request's
168
168
  headers and its target name the same project. A project id alone does not name a project — two
169
169
  stacks can each have a project 138 — so the active stack decides, falling back to a single project
170
- with that id open elsewhere.
170
+ with that id open elsewhere. `getHeaders` reads the token the fetch clients keep fresh;
171
+ `auth.getHeadersAsync(projectId?)` renews it first once it nears expiry, for a transport that can
172
+ run after the fetch traffic has gone quiet.
171
173
 
172
174
  ⚠️ **One client per stack, per page.** Two `createKeboola()` instances signed in to the same stack
173
175
  share its single-use refresh token: whichever rotates first invalidates the other's, and that one's
package/API-SURFACE.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
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`.
6
6
 
7
- 26 top-level namespaces, 711 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
+ 25 top-level namespaces, 708 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
 
@@ -99,15 +99,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
99
99
  - `getCreditsAndTopUp`
100
100
  - `healthCheck`
101
101
 
102
- ## [`api.businessWorkspaceApi`](./surface/businessWorkspaceApi.md)
103
-
104
- - `createDashboard`
105
- - `deleteDashboard`
106
- - `getDashboard`
107
- - `getDashboards`
108
- - `healthCheck`
109
- - `updateDashboard`
110
-
111
102
  ## [`api.chat`](./surface/chat.md)
112
103
 
113
104
  - `createChat`
@@ -153,6 +144,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
153
144
  ## [`api.dataScience`](./surface/dataScience.md)
154
145
 
155
146
  - `createApp`
147
+ - `createAppPreviewLink`
156
148
  - `deleteApp`
157
149
  - `deleteSandbox`
158
150
  - `getApp`
@@ -263,6 +255,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
263
255
  - `fileStorage.createFileStorageAbs`
264
256
  - `fileStorage.createFileStorageGcs`
265
257
  - `fileStorage.createFileStorageS3`
258
+ - `fileStorage.deleteFileStorage`
266
259
  - `fileStorage.getFileStoragesAbs`
267
260
  - `fileStorage.getFileStoragesGcs`
268
261
  - `fileStorage.getFileStoragesS3`
@@ -272,6 +265,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
272
265
  - `fileStorage.setFileStorageAbsDefault`
273
266
  - `fileStorage.setFileStorageGcsDefault`
274
267
  - `fileStorage.setFileStorageS3Default`
268
+ - `fileStorage.updateFileStorage`
275
269
  - `gcpPartner.setUpBigQuery`
276
270
  - `healthCheck`
277
271
  - `maintainers.addMaintainerUser`
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @keboola/api-client
2
2
 
3
+ ## 45.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - `semanticLayer.deleteModel` sends one `DELETE`; the metastore deletes the model's child objects in the same transaction
8
+ - `SemanticLayerCascadeDeleteError` and the `SemanticModelChildDeleteFailure` type are gone: a model delete either deletes everything or nothing.
9
+ - A `409` `ApiError` means another object holds a `restrict` reference to the model; nothing was deleted.
10
+ - A `404` `ApiError` means the model does not exist or was already deleted.
11
+ - `deleteModel` no longer lists the children first, so it no longer throws `SemanticLayerUnreadableChildrenError`. `listModelChildren` still does.
12
+ - The regenerated metastore schema declares the `409` on `DELETE /repository/{objectType}/{UUID}`.
13
+
14
+ ### Minor Changes
15
+
16
+ - A queue job says whether it succeeded.
17
+ - `QueueJob` gains `isSuccess: boolean | null` — `null` while `isFinished` is `false`, `true` for `success` and `warning`, `false` for `error`, `cancelled` and `terminated`.
18
+ - With a job in hand, read `job.isSuccess`; `jobStatus.queue` stays for callers holding only a status.
19
+
20
+ ## 44.0.0
21
+
22
+ ### Major Changes
23
+
24
+ - Remove the Business Workspace API client
25
+ - `api.businessWorkspaceApi` is gone from the clients `createServiceClients` returns.
26
+ - The `@keboola/api-client/businessWorkspaceApi` and `@keboola/api-client/businessWorkspaceApi/types` subpaths are gone.
27
+ - `ServiceId.BusinessWorkspaceApi` is gone.
28
+
29
+ - Every `files` method addresses a branch: its path is `/v2/storage/branch/{branchId}/files/…` and
30
+ `branchId` is required. Pass `'default'` (or the default branch's id) for what the unbranched call
31
+ used to reach.
32
+ - `getFile`, `getFileContent` and `deleteFile` take `{ branchId, fileId }` instead of a positional id.
33
+ - `getFiles` takes `{ branchId, ...query }`; the input is no longer optional.
34
+ - `addFileTag`, `deleteFileTag` and `prepareFile` take `branchId` in their input.
35
+
36
+ ### Minor Changes
37
+
38
+ - `session.auth.getHeadersAsync(projectId?)` returns the bearer auth headers like `getHeaders`, with the access token renewed first once it nears expiry
39
+ - For a transport that is not a fetch client, so no auth middleware renews its token, such as a chat stream.
40
+ - Pinned to the project it resolves at the call; it throws like `getHeaders` if that project closes or its stack signs out during the renewal.
41
+
42
+ - `dataScience.createAppPreviewLink(appId)` mints a 60-second link that opens a dev-mode app without its own authentication.
43
+
44
+ - `management.fileStorage.deleteFileStorage(id)` removes a file storage of any provider, and
45
+ `management.fileStorage.updateFileStorage(id, body)` changes its `owner` or `region`
46
+
47
+ - Management `storageBackends`: `StorageBackend` gains an optional `isEnabled` (returned by the detail endpoint), and the result of `createSnowflakeStorageBackend` is exported as `CreateSnowflakeStorageBackendResponse`.
48
+
49
+ ### Patch Changes
50
+
51
+ - A failed request's `ApiError` is safe to log, and `readableReason` reads the Query Service's error sentence.
52
+ - `ApiError.request` is a body-less copy of the request: method, URL and headers, with `X-StorageApi-Token`, `X-KBC-ManageApiToken`, `Authorization` and `Cookie` set to `[REDACTED]`. `console.error(err)`, `util.inspect` and `JSON.stringify` never print the credential.
53
+ - `readableReason` returns the body's `exception` when it has no `message`, so a Query Service failure reads e.g. `Authentication failed` rather than `undefined`.
54
+
3
55
  ## 43.0.0
4
56
 
5
57
  ### Minor Changes
@@ -59,6 +111,7 @@
59
111
  `displayName`.
60
112
  - `createAliasTable` runs on the typed client.
61
113
  - `sdk.storage.exportToFile` takes the client method's input object instead of a positional `tableId`.
114
+ - The `GenericFetchClient` type is no longer exported from `@keboola/api-client/storage`.
62
115
  - `setAliasTableFilter` and `removeAliasTableFilter` stay unbranched: the backend serves the alias
63
116
  filter only outside branches.
64
117
 
package/README.md CHANGED
@@ -176,7 +176,6 @@ src/
176
176
  oauth/ # OAuth credentials
177
177
  chat/ # Kai Assistant chat
178
178
  kaiAgent/ # Kai Agent (agentic assistant)
179
- businessWorkspaceApi/ # Business Workspace dashboards
180
179
  ai/ # AI describe/explain/suggest
181
180
  queue/ # Job Queue
182
181
  queryService/ # SQL query service
@@ -212,24 +211,23 @@ src/
212
211
  On the `api` object returned by `createKeboola()` / `createLegacyKeboola()` — once the session reaches `ready` — the following clients are available.
213
212
  Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the generic fetch client.
214
213
 
215
- | Accessor | Service | Key methods |
216
- | -------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
217
- | `api.storage` | Storage API | `buckets.*`, `tables.*`, `files.*`, `branches.*`, `workspaces.*`, `mergeRequests.*`, `jobs.*`, `components.*`, `configurations.*`, `configurationRows.*`, `configurationWorkspaces.*`, `tokens.*`, `getStackInfo()` |
218
- | `api.management` | Management API | `projects.*`, `features.*`, `users.*` |
219
- | `api.vault` | Vault (OpenAPI) | `getVariables()`, `createVariable()`, `deleteVariable()`, `getVariablesByBranchId()`, `getProjectWideVariables()` |
220
- | `api.oauth` | OAuth | `getCredentials()`, `getCredential()`, `createCredential()`, `deleteCredential()` |
221
- | `api.dataScience` | Data Science (OpenAPI) | `getApps()`, `getApp()`, `createApp()`, `patchApp()`, `deleteApp()`, `getAppRuns()`, `getAppRun()`, `getAppLogsTail()`, `getAppLogsDownload()`, `getRuntimes()`, `getSandbox()` |
222
- | `api.editor` | SQL Editor (OpenAPI) | `createSession()`, `getSession()`, `getSessions()`, `getSessionSchema()`, `createQueryJob()`, `tablePreview()`, `tableDefinition()`, `load()`, `unload()` |
223
- | `api.encryption` | Encryption | `encrypt()`, `encryptSecrets()` |
224
- | `api.chat` | Kai Assistant (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `getVotes()`, `submitVote()`, `getUsage()`, `getSuggestions()`, `getAgentSettings()`, `getToolsList()` |
225
- | `api.kaiAgent` | Kai Agent (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `approveToolCall()`, `submitToolOutput()`, `getSuggestions()`, `getAgentSettings()` |
226
- | `api.businessWorkspaceApi` | Business Workspace (OpenAPI) | `healthCheck()`, `getDashboards()`, `getDashboard()`, `createDashboard()`, `updateDashboard()`, `deleteDashboard()` |
227
- | `api.ai` | AI Service (OpenAPI) | `describeConfiguration()`, `describeConfigurationVersion()`, `describeConfigurationMerge()`, `explainError()`, `suggestComponent()`, `feedback()` |
228
- | `api.queue` | Job Queue (OpenAPI) | `getJob()`, `searchJobs()` |
229
- | `api.queryService` | Query Service (OpenAPI) | `createQueryJob()`, `cancelQueryJob()`, `getQueryJob()`, `getQueryResults()`, `getQueryHistory()`, `exportResults()` |
230
- | `api.syncActions` | Sync Actions (OpenAPI) | `sendSyncAction()` + one namespace per component; see [`surface/syncActions.md`](./surface/syncActions.md) |
231
- | `api.telemetry` | Telemetry | `provisioning.*` |
232
- | `api.import` | Import (OpenAPI) | `uploadFile()`, `writeTable()` |
214
+ | Accessor | Service | Key methods |
215
+ | ------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
216
+ | `api.storage` | Storage API | `buckets.*`, `tables.*`, `files.*`, `branches.*`, `workspaces.*`, `mergeRequests.*`, `jobs.*`, `components.*`, `configurations.*`, `configurationRows.*`, `configurationWorkspaces.*`, `tokens.*`, `getStackInfo()` |
217
+ | `api.management` | Management API | `projects.*`, `features.*`, `users.*` |
218
+ | `api.vault` | Vault (OpenAPI) | `getVariables()`, `createVariable()`, `deleteVariable()`, `getVariablesByBranchId()`, `getProjectWideVariables()` |
219
+ | `api.oauth` | OAuth | `getCredentials()`, `getCredential()`, `createCredential()`, `deleteCredential()` |
220
+ | `api.dataScience` | Data Science (OpenAPI) | `getApps()`, `getApp()`, `createApp()`, `patchApp()`, `deleteApp()`, `getAppRuns()`, `getAppRun()`, `getAppLogsTail()`, `getAppLogsDownload()`, `getRuntimes()`, `getSandbox()` |
221
+ | `api.editor` | SQL Editor (OpenAPI) | `createSession()`, `getSession()`, `getSessions()`, `getSessionSchema()`, `createQueryJob()`, `tablePreview()`, `tableDefinition()`, `load()`, `unload()` |
222
+ | `api.encryption` | Encryption | `encrypt()`, `encryptSecrets()` |
223
+ | `api.chat` | Kai Assistant (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `getVotes()`, `submitVote()`, `getUsage()`, `getSuggestions()`, `getAgentSettings()`, `getToolsList()` |
224
+ | `api.kaiAgent` | Kai Agent (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `approveToolCall()`, `submitToolOutput()`, `getSuggestions()`, `getAgentSettings()` |
225
+ | `api.ai` | AI Service (OpenAPI) | `describeConfiguration()`, `describeConfigurationVersion()`, `describeConfigurationMerge()`, `explainError()`, `suggestComponent()`, `feedback()` |
226
+ | `api.queue` | Job Queue (OpenAPI) | `getJob()`, `searchJobs()` |
227
+ | `api.queryService` | Query Service (OpenAPI) | `createQueryJob()`, `cancelQueryJob()`, `getQueryJob()`, `getQueryResults()`, `getQueryHistory()`, `exportResults()` |
228
+ | `api.syncActions` | Sync Actions (OpenAPI) | `sendSyncAction()` + one namespace per component; see [`surface/syncActions.md`](./surface/syncActions.md) |
229
+ | `api.telemetry` | Telemetry | `provisioning.*` |
230
+ | `api.import` | Import (OpenAPI) | `uploadFile()`, `writeTable()` |
233
231
 
234
232
  Additional accessors on the ready client:
235
233
 
@@ -1,4 +1,4 @@
1
- import { g as ApiError } from "./createFetchClient-cgWkwgAQ.js";
1
+ import { p as ApiError } from "./createFetchClient-DITkTV2k.js";
2
2
  //#region src/errors/ManagementClientAuthError.ts
3
3
  var ManagementClientAuthError = class extends ApiError {
4
4
  title;
@@ -13,4 +13,4 @@ var ManagementClientAuthError = class extends ApiError {
13
13
  //#endregion
14
14
  export { ManagementClientAuthError as t };
15
15
 
16
- //# sourceMappingURL=ManagementClientAuthError-DUbXlry2.js.map
16
+ //# sourceMappingURL=ManagementClientAuthError-BcPYxAWZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagementClientAuthError-DUbXlry2.js","names":[],"sources":["../src/errors/ManagementClientAuthError.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"],"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"}
1
+ {"version":3,"file":"ManagementClientAuthError-BcPYxAWZ.js","names":[],"sources":["../src/errors/ManagementClientAuthError.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"],"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"}
@@ -1,4 +1,4 @@
1
- const require_createFetchClient = require("./createFetchClient-BgihytBn.cjs");
1
+ const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
2
2
  //#region src/errors/ManagementClientAuthError.ts
3
3
  var ManagementClientAuthError = class extends require_createFetchClient.ApiError {
4
4
  title;
@@ -18,4 +18,4 @@ Object.defineProperty(exports, "ManagementClientAuthError", {
18
18
  }
19
19
  });
20
20
 
21
- //# sourceMappingURL=ManagementClientAuthError-BFZOtLgj.cjs.map
21
+ //# sourceMappingURL=ManagementClientAuthError-DHuykEPF.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagementClientAuthError-BFZOtLgj.cjs","names":["ApiError"],"sources":["../src/errors/ManagementClientAuthError.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"],"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"}
1
+ {"version":3,"file":"ManagementClientAuthError-DHuykEPF.cjs","names":["ApiError"],"sources":["../src/errors/ManagementClientAuthError.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"],"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"}
package/dist/ai/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-DY5s-aH6.cjs");
3
- const require_auth = require("../auth-zfI04oj7.cjs");
2
+ const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-CioTX11-.cjs");
3
+ const require_auth = require("../auth-C9o_0bft.cjs");
4
4
  //#region src/clients/ai/aiClient.ts
5
5
  const createAiClient = ({ baseUrl, middlewares, auth }) => {
6
6
  const client = require_createOpenapiFetchClient.createOpenapiFetchClient({
package/dist/ai/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-BxcLLU_N.js";
2
- import { t as createAuthHeaders } from "../auth-DUHTJTwS.js";
1
+ import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-wq8iGLZM.js";
2
+ import { t as createAuthHeaders } from "../auth-C6cHWIWx.js";
3
3
  //#region src/clients/ai/aiClient.ts
4
4
  const createAiClient = ({ baseUrl, middlewares, auth }) => {
5
5
  const client = createOpenapiFetchClient({
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
2
2
  const require_isPlainObject = require("./isPlainObject-BB3iy87C.cjs");
3
- const require_createFetchClient = require("./createFetchClient-BgihytBn.cjs");
3
+ const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
4
4
  let zod = require("zod");
5
5
  zod = require_rolldown_runtime.__toESM(zod, 1);
6
6
  let dayjs = require("dayjs");
@@ -150,4 +150,4 @@ Object.defineProperty(exports, "readAppLogsTail", {
150
150
  }
151
151
  });
152
152
 
153
- //# sourceMappingURL=appLogs-oZvt59mk.cjs.map
153
+ //# sourceMappingURL=appLogs-BG9ueGxA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"appLogs-oZvt59mk.cjs","names":["utc","z","record","isPlainObject","isApiError","HttpStatus","parseContentDispositionHeader","HttpHeader"],"sources":["../src/domain/appLogs.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. Shared by the two clients wrapping sandboxes-service —\n * `dataScience` (`/v1`) and `apps` (`/v2`) — which serve the same logs under different paths, so the\n * tail contract (how a line is parsed, where the next poll resumes, and that an idle app is not an\n * error) is defined once here rather than per surface.\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"],"mappings":"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"}
1
+ {"version":3,"file":"appLogs-BG9ueGxA.cjs","names":["utc","z","record","isPlainObject","isApiError","HttpStatus","parseContentDispositionHeader","HttpHeader"],"sources":["../src/domain/appLogs.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. Shared by the two clients wrapping sandboxes-service —\n * `dataScience` (`/v1`) and `apps` (`/v2`) — which serve the same logs under different paths, so the\n * tail contract (how a line is parsed, where the next poll resumes, and that an idle app is not an\n * error) is defined once here rather than per surface.\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"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as isPlainObject } from "./isPlainObject-LYW-03uB.js";
2
- import { f as parseContentDispositionHeader, m as HttpStatus, r as isApiError, s as HttpHeader } from "./createFetchClient-cgWkwgAQ.js";
2
+ import { f as parseContentDispositionHeader, g as HttpStatus, r as isApiError, s as HttpHeader } from "./createFetchClient-DITkTV2k.js";
3
3
  import * as z$1 from "zod";
4
4
  import dayjs from "dayjs";
5
5
  import utc from "dayjs/plugin/utc.js";
@@ -129,4 +129,4 @@ const readAppLogsDownload = async (fetchLogs) => {
129
129
  //#endregion
130
130
  export { readAppLogsDownload as n, readAppLogsTail as r, parseLogLines as t };
131
131
 
132
- //# sourceMappingURL=appLogs-DfkItQCO.js.map
132
+ //# sourceMappingURL=appLogs-CEKz68bE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appLogs-DfkItQCO.js","names":["z","record"],"sources":["../src/domain/appLogs.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. Shared by the two clients wrapping sandboxes-service —\n * `dataScience` (`/v1`) and `apps` (`/v2`) — which serve the same logs under different paths, so the\n * tail contract (how a line is parsed, where the next poll resumes, and that an idle app is not an\n * error) is defined once here rather than per surface.\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"],"mappings":"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"}
1
+ {"version":3,"file":"appLogs-CEKz68bE.js","names":["z","record"],"sources":["../src/domain/appLogs.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. Shared by the two clients wrapping sandboxes-service —\n * `dataScience` (`/v1`) and `apps` (`/v2`) — which serve the same logs under different paths, so the\n * tail contract (how a line is parsed, where the next poll resumes, and that an idle app is not an\n * error) is defined once here rather than per surface.\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"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-DY5s-aH6.cjs");
3
- const require_auth = require("../auth-zfI04oj7.cjs");
4
- const require_appLogs = require("../appLogs-oZvt59mk.cjs");
2
+ const require_createOpenapiFetchClient = require("../createOpenapiFetchClient-CioTX11-.cjs");
3
+ const require_auth = require("../auth-C9o_0bft.cjs");
4
+ const require_appLogs = require("../appLogs-BG9ueGxA.cjs");
5
5
  //#region src/clients/apps/appsClient.ts
6
6
  /**
7
7
  * `/v2` App Deployments — data apps and their immutable deployment history.
@@ -1,6 +1,6 @@
1
- import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-BxcLLU_N.js";
2
- import { t as createAuthHeaders } from "../auth-DUHTJTwS.js";
3
- import { n as readAppLogsDownload, r as readAppLogsTail } from "../appLogs-DfkItQCO.js";
1
+ import { t as createOpenapiFetchClient } from "../createOpenapiFetchClient-wq8iGLZM.js";
2
+ import { t as createAuthHeaders } from "../auth-C6cHWIWx.js";
3
+ import { n as readAppLogsDownload, r as readAppLogsTail } from "../appLogs-CEKz68bE.js";
4
4
  //#region src/clients/apps/appsClient.ts
5
5
  /**
6
6
  * `/v2` App Deployments — data apps and their immutable deployment history.
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_createGenericFetchClient = require("../createGenericFetchClient-C7Y0YVfc.cjs");
2
+ const require_createGenericFetchClient = require("../createGenericFetchClient-B81Iezpb.cjs");
3
3
  const require_assets_schema = require("./schema.cjs");
4
4
  //#region src/clients/assets/assetsClient.ts
5
5
  const createAssetsClient = ({ baseUrl, middlewares }) => {
@@ -1,4 +1,4 @@
1
- import { t as createGenericFetchClient } from "../createGenericFetchClient-CX9Hn3Aq.js";
1
+ import { t as createGenericFetchClient } from "../createGenericFetchClient-KqiJhw8G.js";
2
2
  import { componentTemplatesSchema, publishedPostsSchema } from "./schema.js";
3
3
  //#region src/clients/assets/assetsClient.ts
4
4
  const createAssetsClient = ({ baseUrl, middlewares }) => {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_authClient = require("../authClient-BxqRGR5c.cjs");
2
+ const require_authClient = require("../authClient-DZcAR-eW.cjs");
3
3
  exports.MFA_METHOD = require_authClient.MFA_METHOD;
4
4
  exports.apiLoginResultSchema = require_authClient.apiLoginResultSchema;
5
5
  exports.apiLoginSuccessSchema = require_authClient.apiLoginSuccessSchema;
@@ -1,2 +1,2 @@
1
- import { _ as passwordInputSchema, a as resetInputSchema, c as mfaCodeInputSchema, d as apiLoginResultSchema, f as apiLoginSuccessSchema, g as oidcInputSchema, h as mfaChallengeSchema, i as changeInputSchema, l as mfaWebauthnInputSchema, m as browserLoginSuccessSchema, n as refreshSessionInputSchema, o as resetRequestInputSchema, p as browserLoginResultSchema, r as refreshTokenInputSchema, s as MFA_METHOD, t as createAuthClient, u as totpVerifyInputSchema } from "../authClient-CX4buUMc.js";
1
+ import { _ as passwordInputSchema, a as resetInputSchema, c as mfaCodeInputSchema, d as apiLoginResultSchema, f as apiLoginSuccessSchema, g as oidcInputSchema, h as mfaChallengeSchema, i as changeInputSchema, l as mfaWebauthnInputSchema, m as browserLoginSuccessSchema, n as refreshSessionInputSchema, o as resetRequestInputSchema, p as browserLoginResultSchema, r as refreshTokenInputSchema, s as MFA_METHOD, t as createAuthClient, u as totpVerifyInputSchema } from "../authClient-CACOwVt0.js";
2
2
  export { MFA_METHOD, apiLoginResultSchema, apiLoginSuccessSchema, browserLoginResultSchema, browserLoginSuccessSchema, changeInputSchema, createAuthClient, mfaChallengeSchema, mfaCodeInputSchema, mfaWebauthnInputSchema, oidcInputSchema, passwordInputSchema, refreshSessionInputSchema, refreshTokenInputSchema, resetInputSchema, resetRequestInputSchema, totpVerifyInputSchema };
@@ -1,4 +1,4 @@
1
- import { h as KeboolaHttpHeader, s as HttpHeader } from "./createFetchClient-cgWkwgAQ.js";
1
+ import { _ as KeboolaHttpHeader, s as HttpHeader } from "./createFetchClient-DITkTV2k.js";
2
2
  //#region src/clients/auth.ts
3
3
  const createAuthHeaders = (auth) => {
4
4
  if (auth.type === "sapi-token") return { [KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };
@@ -10,4 +10,4 @@ const createAuthHeaders = (auth) => {
10
10
  //#endregion
11
11
  export { createAuthHeaders as t };
12
12
 
13
- //# sourceMappingURL=auth-DUHTJTwS.js.map
13
+ //# sourceMappingURL=auth-C6cHWIWx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-DUHTJTwS.js","names":[],"sources":["../src/clients/auth.ts"],"sourcesContent":["import { HttpHeader } from '../fetchClient';\nimport { KeboolaHttpHeader } from '../internal';\n\nexport type AuthStrategy =\n | {\n type: 'sapi-token';\n token: string;\n }\n | {\n type: 'bearer';\n token: string;\n projectId: number;\n };\n\nexport const createAuthHeaders = (auth: AuthStrategy): Record<string, string> => {\n if (auth.type === 'sapi-token') return { [KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };\n\n // `auth.token` is the bare token; the `Bearer ` wire prefix is added here (mirroring the\n // management client). In the browser bearer flow the bearer auth middleware stamps the\n // Authorization header on every request, so this value only matters for middleware-less\n // clients (e.g. kai-agent's storage token verification).\n return {\n [HttpHeader.AUTHORIZATION]: `Bearer ${auth.token}`,\n [KeboolaHttpHeader.PROJECT_ID]: auth.projectId.toString(),\n };\n};\n"],"mappings":";;AAcA,MAAa,qBAAqB,SAA+C;CAC/E,IAAI,KAAK,SAAS,cAAc,OAAO,GAAG,kBAAkB,oBAAoB,KAAK,MAAM;CAM3F,OAAO;GACJ,WAAW,gBAAgB,UAAU,KAAK;GAC1C,kBAAkB,aAAa,KAAK,UAAU,SAAS;CAC1D;AACF"}
1
+ {"version":3,"file":"auth-C6cHWIWx.js","names":[],"sources":["../src/clients/auth.ts"],"sourcesContent":["import { HttpHeader } from '../fetchClient';\nimport { KeboolaHttpHeader } from '../internal';\n\nexport type AuthStrategy =\n | {\n type: 'sapi-token';\n token: string;\n }\n | {\n type: 'bearer';\n token: string;\n projectId: number;\n };\n\nexport const createAuthHeaders = (auth: AuthStrategy): Record<string, string> => {\n if (auth.type === 'sapi-token') return { [KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };\n\n // `auth.token` is the bare token; the `Bearer ` wire prefix is added here (mirroring the\n // management client). In the browser bearer flow the bearer auth middleware stamps the\n // Authorization header on every request, so this value only matters for middleware-less\n // clients (e.g. kai-agent's storage token verification).\n return {\n [HttpHeader.AUTHORIZATION]: `Bearer ${auth.token}`,\n [KeboolaHttpHeader.PROJECT_ID]: auth.projectId.toString(),\n };\n};\n"],"mappings":";;AAcA,MAAa,qBAAqB,SAA+C;CAC/E,IAAI,KAAK,SAAS,cAAc,OAAO,GAAG,kBAAkB,oBAAoB,KAAK,MAAM;CAM3F,OAAO;GACJ,WAAW,gBAAgB,UAAU,KAAK;GAC1C,kBAAkB,aAAa,KAAK,UAAU,SAAS;CAC1D;AACF"}
@@ -1,4 +1,4 @@
1
- const require_createFetchClient = require("./createFetchClient-BgihytBn.cjs");
1
+ const require_createFetchClient = require("./createFetchClient-ClWD4ua3.cjs");
2
2
  //#region src/clients/auth.ts
3
3
  const createAuthHeaders = (auth) => {
4
4
  if (auth.type === "sapi-token") return { [require_createFetchClient.KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };
@@ -15,4 +15,4 @@ Object.defineProperty(exports, "createAuthHeaders", {
15
15
  }
16
16
  });
17
17
 
18
- //# sourceMappingURL=auth-zfI04oj7.cjs.map
18
+ //# sourceMappingURL=auth-C9o_0bft.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-zfI04oj7.cjs","names":["KeboolaHttpHeader","HttpHeader"],"sources":["../src/clients/auth.ts"],"sourcesContent":["import { HttpHeader } from '../fetchClient';\nimport { KeboolaHttpHeader } from '../internal';\n\nexport type AuthStrategy =\n | {\n type: 'sapi-token';\n token: string;\n }\n | {\n type: 'bearer';\n token: string;\n projectId: number;\n };\n\nexport const createAuthHeaders = (auth: AuthStrategy): Record<string, string> => {\n if (auth.type === 'sapi-token') return { [KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };\n\n // `auth.token` is the bare token; the `Bearer ` wire prefix is added here (mirroring the\n // management client). In the browser bearer flow the bearer auth middleware stamps the\n // Authorization header on every request, so this value only matters for middleware-less\n // clients (e.g. kai-agent's storage token verification).\n return {\n [HttpHeader.AUTHORIZATION]: `Bearer ${auth.token}`,\n [KeboolaHttpHeader.PROJECT_ID]: auth.projectId.toString(),\n };\n};\n"],"mappings":";;AAcA,MAAa,qBAAqB,SAA+C;CAC/E,IAAI,KAAK,SAAS,cAAc,OAAO,GAAGA,0BAAAA,kBAAkB,oBAAoB,KAAK,MAAM;CAM3F,OAAO;GACJC,0BAAAA,WAAW,gBAAgB,UAAU,KAAK;GAC1CD,0BAAAA,kBAAkB,aAAa,KAAK,UAAU,SAAS;CAC1D;AACF"}
1
+ {"version":3,"file":"auth-C9o_0bft.cjs","names":["KeboolaHttpHeader","HttpHeader"],"sources":["../src/clients/auth.ts"],"sourcesContent":["import { HttpHeader } from '../fetchClient';\nimport { KeboolaHttpHeader } from '../internal';\n\nexport type AuthStrategy =\n | {\n type: 'sapi-token';\n token: string;\n }\n | {\n type: 'bearer';\n token: string;\n projectId: number;\n };\n\nexport const createAuthHeaders = (auth: AuthStrategy): Record<string, string> => {\n if (auth.type === 'sapi-token') return { [KeboolaHttpHeader.STORAGE_API_TOKEN]: auth.token };\n\n // `auth.token` is the bare token; the `Bearer ` wire prefix is added here (mirroring the\n // management client). In the browser bearer flow the bearer auth middleware stamps the\n // Authorization header on every request, so this value only matters for middleware-less\n // clients (e.g. kai-agent's storage token verification).\n return {\n [HttpHeader.AUTHORIZATION]: `Bearer ${auth.token}`,\n [KeboolaHttpHeader.PROJECT_ID]: auth.projectId.toString(),\n };\n};\n"],"mappings":";;AAcA,MAAa,qBAAqB,SAA+C;CAC/E,IAAI,KAAK,SAAS,cAAc,OAAO,GAAGA,0BAAAA,kBAAkB,oBAAoB,KAAK,MAAM;CAM3F,OAAO;GACJC,0BAAAA,WAAW,gBAAgB,UAAU,KAAK;GAC1CD,0BAAAA,kBAAkB,aAAa,KAAK,UAAU,SAAS;CAC1D;AACF"}
@@ -1,7 +1,7 @@
1
- import { h as KeboolaHttpHeader, s as HttpHeader } from "./createFetchClient-cgWkwgAQ.js";
2
- import { t as validateConnectionStatus } from "./validateConnectionStatus-gFsBi5FV.js";
3
- import { t as createGenericFetchClient } from "./createGenericFetchClient-CX9Hn3Aq.js";
4
- import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-BxcLLU_N.js";
1
+ import { _ as KeboolaHttpHeader, s as HttpHeader } from "./createFetchClient-DITkTV2k.js";
2
+ import { t as validateConnectionStatus } from "./validateConnectionStatus-CdTV3gsP.js";
3
+ import { t as createGenericFetchClient } from "./createGenericFetchClient-KqiJhw8G.js";
4
+ import { t as createOpenapiFetchClient } from "./createOpenapiFetchClient-wq8iGLZM.js";
5
5
  import * as z$1 from "zod";
6
6
  //#region src/clients/auth/device/device.ts
7
7
  const createDevice = (client) => {
@@ -531,4 +531,4 @@ const createAuthClient = ({ baseUrl, middlewares }) => {
531
531
  //#endregion
532
532
  export { passwordInputSchema as _, resetInputSchema as a, mfaCodeInputSchema as c, apiLoginResultSchema as d, apiLoginSuccessSchema as f, oidcInputSchema as g, mfaChallengeSchema as h, changeInputSchema as i, mfaWebauthnInputSchema as l, browserLoginSuccessSchema as m, refreshSessionInputSchema as n, resetRequestInputSchema as o, browserLoginResultSchema as p, refreshTokenInputSchema as r, MFA_METHOD as s, createAuthClient as t, totpVerifyInputSchema as u };
533
533
 
534
- //# sourceMappingURL=authClient-CX4buUMc.js.map
534
+ //# sourceMappingURL=authClient-CACOwVt0.js.map