@keboola/api-client 47.0.0 → 49.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 (309) hide show
  1. package/AGENTS.md +10 -4
  2. package/API-SURFACE.md +6 -3
  3. package/CHANGELOG.md +65 -0
  4. package/README.md +1 -1
  5. package/dist/{adminRoles-CvdIUkiC.d.ts → adminRoles-BX1gk3At.d.ts} +2 -2
  6. package/dist/{adminRoles-DGM8SuuF.d.cts → adminRoles-BbxFgfX-.d.cts} +2 -2
  7. package/dist/ai/index.cjs +0 -5
  8. package/dist/ai/index.cjs.map +1 -1
  9. package/dist/ai/index.d.cts +2 -3
  10. package/dist/ai/index.d.ts +2 -3
  11. package/dist/ai/index.js +0 -5
  12. package/dist/ai/index.js.map +1 -1
  13. package/dist/ai/types.d.cts +2 -2
  14. package/dist/ai/types.d.ts +2 -2
  15. package/dist/{appLogs-xW0-JQXg.d.ts → appLogs-DI2Y4imY.d.ts} +2 -2
  16. package/dist/{appLogs-Cxhm2Rkn.d.cts → appLogs-IhRA3xyv.d.cts} +2 -2
  17. package/dist/apps/index.cjs +3 -3
  18. package/dist/apps/index.cjs.map +1 -1
  19. package/dist/apps/index.d.cts +6 -3
  20. package/dist/apps/index.d.ts +6 -3
  21. package/dist/apps/index.js +3 -3
  22. package/dist/apps/index.js.map +1 -1
  23. package/dist/apps/types.d.cts +2 -2
  24. package/dist/apps/types.d.ts +2 -2
  25. package/dist/assets/index.d.cts +1 -1
  26. package/dist/assets/index.d.ts +1 -1
  27. package/dist/auth/index.d.cts +1 -1
  28. package/dist/auth/index.d.ts +1 -1
  29. package/dist/auth/types.d.cts +1 -1
  30. package/dist/auth/types.d.ts +1 -1
  31. package/dist/{authClient-Bso5UaXS.d.ts → authClient-6Aau_4Zt.d.ts} +4 -4
  32. package/dist/{authClient-aud2dUZd.d.cts → authClient-B3P6WtWW.d.cts} +4 -4
  33. package/dist/billing/index.cjs +0 -1
  34. package/dist/billing/index.cjs.map +1 -1
  35. package/dist/billing/index.d.cts +27 -27
  36. package/dist/billing/index.d.ts +27 -27
  37. package/dist/billing/index.js +0 -1
  38. package/dist/billing/index.js.map +1 -1
  39. package/dist/billing/types.d.cts +26 -22
  40. package/dist/billing/types.d.ts +26 -22
  41. package/dist/chat/index.d.cts +2 -2
  42. package/dist/chat/index.d.ts +2 -2
  43. package/dist/chat/types.d.cts +1 -1
  44. package/dist/chat/types.d.ts +1 -1
  45. package/dist/componentsMcp/index.d.cts +1 -1
  46. package/dist/componentsMcp/index.d.ts +1 -1
  47. package/dist/componentsMcp/types.d.cts +1 -1
  48. package/dist/componentsMcp/types.d.ts +1 -1
  49. package/dist/{configurations-DcpUlC8I.js → configurations-B44z6BSO.js} +2 -2
  50. package/dist/{configurations-DcpUlC8I.js.map → configurations-B44z6BSO.js.map} +1 -1
  51. package/dist/{configurations-Chg_JwJ1.js → configurations-CL0ouUMa.js} +3 -3
  52. package/dist/configurations-CL0ouUMa.js.map +1 -0
  53. package/dist/{configurations-BTRHVSRq.cjs → configurations-D9J3jh3g.cjs} +3 -3
  54. package/dist/configurations-D9J3jh3g.cjs.map +1 -0
  55. package/dist/{configurations-D_Rbs0Wl.cjs → configurations-Dkxsa3Uf.cjs} +2 -2
  56. package/dist/{configurations-D_Rbs0Wl.cjs.map → configurations-Dkxsa3Uf.cjs.map} +1 -1
  57. package/dist/constants/index.cjs +4 -1
  58. package/dist/constants/index.d.cts +4 -3
  59. package/dist/constants/index.d.ts +4 -3
  60. package/dist/constants/index.js +2 -2
  61. package/dist/{constants-a0jswUeK.cjs → constants-DErcRkWl.cjs} +95 -2
  62. package/dist/constants-DErcRkWl.cjs.map +1 -0
  63. package/dist/{constants-CA4UN2Xv.js → constants-VpSwBtCb.js} +78 -3
  64. package/dist/constants-VpSwBtCb.js.map +1 -0
  65. package/dist/dataScience/index.d.cts +2 -2
  66. package/dist/dataScience/index.d.ts +2 -2
  67. package/dist/dataScience/types.d.cts +2 -2
  68. package/dist/dataScience/types.d.ts +2 -2
  69. package/dist/developerPortal/index.d.cts +2 -2
  70. package/dist/developerPortal/index.d.ts +2 -2
  71. package/dist/developerPortal/types.d.cts +1 -1
  72. package/dist/developerPortal/types.d.ts +1 -1
  73. package/dist/domain/permissions/index.cjs +8 -43
  74. package/dist/domain/permissions/index.d.cts +7 -3
  75. package/dist/domain/permissions/index.d.ts +7 -3
  76. package/dist/domain/permissions/index.js +3 -39
  77. package/dist/domain/storageTable/index.d.cts +1 -1
  78. package/dist/domain/storageTable/index.d.ts +1 -1
  79. package/dist/editor/index.d.cts +2 -2
  80. package/dist/editor/index.d.ts +2 -2
  81. package/dist/editor/types.d.cts +1 -1
  82. package/dist/editor/types.d.ts +1 -1
  83. package/dist/encryption/index.d.cts +1 -1
  84. package/dist/encryption/index.d.ts +1 -1
  85. package/dist/encryption/types.d.cts +1 -1
  86. package/dist/encryption/types.d.ts +1 -1
  87. package/dist/import/index.d.cts +3 -3
  88. package/dist/import/index.d.ts +3 -3
  89. package/dist/{index-DTysQ_yn.d.cts → index-BM_fXKq5.d.cts} +5 -5
  90. package/dist/{index-XaPb6unB.d.cts → index-BPMr8PQJ.d.ts} +271 -35
  91. package/dist/{index-BnPmXDVP.d.ts → index-BT88-GpA.d.ts} +73 -3
  92. package/dist/{index-x_kS_5x_.d.cts → index-BVjhAkXW.d.cts} +4 -4
  93. package/dist/{index-CkwZ5x7E.d.cts → index-Be2dNJ_N.d.cts} +336 -169
  94. package/dist/{index-C2OAOK0s.d.ts → index-BiZR9BjN.d.ts} +4 -4
  95. package/dist/{index-B_MzjCeE.d.ts → index-C6oPUTWZ.d.ts} +3 -3
  96. package/dist/{index-r6YSe8B-.d.ts → index-CL4iKFic.d.cts} +271 -35
  97. package/dist/{index-URgNfi5L.d.cts → index-CbZQCDkD.d.cts} +3 -3
  98. package/dist/{index-XG5cO-4H.d.cts → index-CrrHvDiX.d.cts} +18 -13
  99. package/dist/{index-ZYvgoqgW.d.cts → index-CtQl-Iqw.d.cts} +4 -4
  100. package/dist/{index-BIP0PoMW.d.ts → index-D6JMbJ9b.d.ts} +18 -13
  101. package/dist/{index-Ds0tViQS.d.cts → index-DGKCTQkb.d.cts} +3 -3
  102. package/dist/{index-BeOd45XE.d.ts → index-DReKz9Zt.d.ts} +4 -4
  103. package/dist/{index-DUB0BwQv.d.cts → index-DYNVbgm8.d.cts} +4 -4
  104. package/dist/{index-DloFSSj3.d.ts → index-DhZTIejy.d.ts} +3 -3
  105. package/dist/{index-BGEuaZqI.d.cts → index-Dkb8CynB.d.cts} +21 -5
  106. package/dist/{index-_Va9wynk.d.ts → index-DorowSay.d.ts} +21 -5
  107. package/dist/{index-8ZjY7YD8.d.cts → index-PqJGDHHl.d.cts} +73 -3
  108. package/dist/{index-HSkjm3QW.d.ts → index-XcnkRVb0.d.ts} +5 -5
  109. package/dist/{index-Dp-a2DdI.d.ts → index-dgu6udMy.d.ts} +4 -4
  110. package/dist/{index-P1vR966i.d.ts → index-fMoM8SeH.d.cts} +4 -4
  111. package/dist/{index-P1vR966i.d.cts → index-fMoM8SeH.d.ts} +4 -4
  112. package/dist/{index-CAWy1qjR.d.ts → index-uGRdAORl.d.ts} +336 -169
  113. package/dist/index.cjs +458 -259
  114. package/dist/index.cjs.map +1 -1
  115. package/dist/index.d.cts +6 -6
  116. package/dist/index.d.ts +6 -6
  117. package/dist/index.js +455 -260
  118. package/dist/index.js.map +1 -1
  119. package/dist/kaiAgent/index.cjs +1 -1
  120. package/dist/kaiAgent/index.d.cts +3 -3
  121. package/dist/kaiAgent/index.d.ts +3 -3
  122. package/dist/kaiAgent/index.js +1 -1
  123. package/dist/kaiAgent/types.d.cts +1 -1
  124. package/dist/kaiAgent/types.d.ts +1 -1
  125. package/dist/{kaiAgent-CBPbMwBh.js → kaiAgent-CYvrS8oZ.js} +12 -3
  126. package/dist/kaiAgent-CYvrS8oZ.js.map +1 -0
  127. package/dist/{kaiAgent-BmfUG8bB.cjs → kaiAgent-N2qbUFZm.cjs} +12 -3
  128. package/dist/kaiAgent-N2qbUFZm.cjs.map +1 -0
  129. package/dist/management/index.cjs +1 -1
  130. package/dist/management/index.d.cts +1 -1
  131. package/dist/management/index.d.ts +1 -1
  132. package/dist/management/index.js +1 -1
  133. package/dist/management/types.cjs +14 -0
  134. package/dist/management/types.cjs.map +1 -0
  135. package/dist/management/types.d.cts +2 -2
  136. package/dist/management/types.d.ts +2 -2
  137. package/dist/management/types.js +12 -1
  138. package/dist/management/types.js.map +1 -0
  139. package/dist/{management-BUGPJ1Bu.cjs → management-B1o6RpKF.cjs} +15 -14
  140. package/dist/management-B1o6RpKF.cjs.map +1 -0
  141. package/dist/{management-DAg2obYt.js → management-C9w3DNhs.js} +15 -14
  142. package/dist/management-C9w3DNhs.js.map +1 -0
  143. package/dist/metastore/index.d.cts +1 -1
  144. package/dist/metastore/index.d.ts +1 -1
  145. package/dist/metastore/types.d.cts +1 -1
  146. package/dist/metastore/types.d.ts +1 -1
  147. package/dist/microsoftGraph/index.d.cts +2 -2
  148. package/dist/microsoftGraph/index.d.ts +2 -2
  149. package/dist/microsoftGraph/types.d.cts +1 -1
  150. package/dist/microsoftGraph/types.d.ts +1 -1
  151. package/dist/{middleware-DU_5pFDW.cjs → middleware-CEP6uu_D.cjs} +4 -4
  152. package/dist/middleware-CEP6uu_D.cjs.map +1 -0
  153. package/dist/{middleware-CWaLMlG1.js → middleware-GOfx8Apu.js} +4 -4
  154. package/dist/middleware-GOfx8Apu.js.map +1 -0
  155. package/dist/notifications/index.d.cts +2 -2
  156. package/dist/notifications/index.d.ts +2 -2
  157. package/dist/notifications/types.d.cts +1 -1
  158. package/dist/notifications/types.d.ts +1 -1
  159. package/dist/oauth/index.d.cts +2 -2
  160. package/dist/oauth/index.d.ts +2 -2
  161. package/dist/oauth/types.d.cts +1 -1
  162. package/dist/oauth/types.d.ts +1 -1
  163. package/dist/omnisearch/index.d.cts +2 -2
  164. package/dist/omnisearch/index.d.ts +2 -2
  165. package/dist/omnisearch/types.d.cts +1 -1
  166. package/dist/omnisearch/types.d.ts +1 -1
  167. package/dist/project-ClH22nzH.js +86 -0
  168. package/dist/project-ClH22nzH.js.map +1 -0
  169. package/dist/{project-BMmfPhXg.d.ts → project-DTfBtIJs.d.ts} +4 -3
  170. package/dist/project-Rh4nXiWh.cjs +139 -0
  171. package/dist/project-Rh4nXiWh.cjs.map +1 -0
  172. package/dist/{project-dxCJbFay.d.cts → project-vOnvjo80.d.cts} +4 -3
  173. package/dist/queryService/index.d.cts +1 -1
  174. package/dist/queryService/index.d.ts +1 -1
  175. package/dist/queryService/types.d.cts +1 -1
  176. package/dist/queryService/types.d.ts +1 -1
  177. package/dist/queue/index.d.cts +3 -3
  178. package/dist/queue/index.d.ts +3 -3
  179. package/dist/queue/types.d.cts +1 -1
  180. package/dist/queue/types.d.ts +1 -1
  181. package/dist/scheduler/index.d.cts +2 -2
  182. package/dist/scheduler/index.d.ts +2 -2
  183. package/dist/scheduler/types.d.cts +1 -1
  184. package/dist/scheduler/types.d.ts +1 -1
  185. package/dist/sdk/configurations/index.cjs +1 -1
  186. package/dist/sdk/configurations/index.d.cts +2 -2
  187. package/dist/sdk/configurations/index.d.ts +2 -2
  188. package/dist/sdk/configurations/index.js +1 -1
  189. package/dist/sdk/developerPortal/index.cjs +1 -1
  190. package/dist/sdk/developerPortal/index.d.cts +3 -3
  191. package/dist/sdk/developerPortal/index.d.ts +3 -3
  192. package/dist/sdk/developerPortal/index.js +1 -1
  193. package/dist/sdk/kaiMemory/index.d.cts +1 -1
  194. package/dist/sdk/kaiMemory/index.d.ts +1 -1
  195. package/dist/sdk/kaiMemory/types.d.cts +1 -1
  196. package/dist/sdk/kaiMemory/types.d.ts +1 -1
  197. package/dist/sdk/queryService/index.d.cts +1 -1
  198. package/dist/sdk/queryService/index.d.ts +1 -1
  199. package/dist/sdk/semanticLayer/index.d.cts +1 -1
  200. package/dist/sdk/semanticLayer/index.d.ts +1 -1
  201. package/dist/sdk/semanticLayer/types.d.cts +1 -1
  202. package/dist/sdk/semanticLayer/types.d.ts +1 -1
  203. package/dist/sdk/tag/index.d.cts +2 -2
  204. package/dist/sdk/tag/index.d.ts +2 -2
  205. package/dist/sdk/tag/types.d.cts +1 -1
  206. package/dist/sdk/tag/types.d.ts +1 -1
  207. package/dist/sdk/vault/index.d.cts +1 -1
  208. package/dist/sdk/vault/index.d.ts +1 -1
  209. package/dist/status/index.d.cts +1 -1
  210. package/dist/status/index.d.ts +1 -1
  211. package/dist/storage/index.cjs +4 -1
  212. package/dist/storage/index.d.cts +3 -3
  213. package/dist/storage/index.d.ts +3 -3
  214. package/dist/storage/index.js +2 -2
  215. package/dist/storage/types.d.cts +6 -6
  216. package/dist/storage/types.d.ts +6 -6
  217. package/dist/{storage-DyR7hDdv.js → storage-CChfKlrb.js} +31 -3
  218. package/dist/storage-CChfKlrb.js.map +1 -0
  219. package/dist/{storage-yovv11k6.cjs → storage-Ci9gXgcw.cjs} +48 -2
  220. package/dist/storage-Ci9gXgcw.cjs.map +1 -0
  221. package/dist/stream/index.d.cts +2 -2
  222. package/dist/stream/index.d.ts +2 -2
  223. package/dist/stream/types.d.cts +1 -1
  224. package/dist/stream/types.d.ts +1 -1
  225. package/dist/syncActions/index.d.cts +2 -2
  226. package/dist/syncActions/index.d.ts +2 -2
  227. package/dist/syncActions/types.d.cts +1 -1
  228. package/dist/syncActions/types.d.ts +1 -1
  229. package/dist/telemetry/index.d.cts +2 -2
  230. package/dist/telemetry/index.d.ts +2 -2
  231. package/dist/telemetry/types.d.cts +1 -1
  232. package/dist/telemetry/types.d.ts +1 -1
  233. package/dist/{types-DHlXKVEM.d.ts → types-0R9-osUJ.d.ts} +3 -3
  234. package/dist/{types-CBrNIgEy.d.ts → types-302-NBaU.d.ts} +3 -3
  235. package/dist/{types-4HmtNuJf.d.ts → types-45O2dU2w.d.ts} +2 -2
  236. package/dist/{types-CZCPdPqv.d.cts → types-BAsYMltG.d.cts} +3 -3
  237. package/dist/{types-BiBBKcin.d.ts → types-BM6rri7-.d.ts} +3 -3
  238. package/dist/{types-BNPvFLgC.d.ts → types-BOT6TgOS.d.ts} +3 -4
  239. package/dist/{types-BiTn_JVW.d.cts → types-BT5e9TSQ.d.ts} +117 -37
  240. package/dist/{types-C2j6Jsie.d.ts → types-BUirSne-.d.ts} +3 -3
  241. package/dist/{types-BoH7NFCh.d.ts → types-BWzt1ju_.d.ts} +3 -3
  242. package/dist/{types-BjEiUOL6.d.ts → types-BXybSjn-.d.ts} +2 -2
  243. package/dist/{types-BIDKSQdc.d.ts → types-BZ--6pIt.d.ts} +169 -31
  244. package/dist/{types-B2ZLjagf.d.ts → types-BjwbzqJd.d.ts} +2 -2
  245. package/dist/{types-B6ozaDkl.d.cts → types-BnmsuDfH.d.cts} +2 -2
  246. package/dist/{types-Bx0TSdwF.d.cts → types-BrpIEj_N.d.ts} +2 -2
  247. package/dist/{types-BG0oWq8u.d.cts → types-C614wC5h.d.cts} +2 -2
  248. package/dist/{types-4CjbcUdD.d.cts → types-CTS2NSIb.d.cts} +2 -2
  249. package/dist/{types-BZBU3mwz.d.cts → types-CY8X39qv.d.cts} +3 -3
  250. package/dist/{types-Cw9UISvM.d.ts → types-CeqZuOEC.d.ts} +2 -2
  251. package/dist/{types-C3IQu1gV.d.ts → types-CfXqFz2e.d.ts} +5 -3
  252. package/dist/{types-BKIcow3B.d.cts → types-ChLWY8aU.d.cts} +2 -2
  253. package/dist/{types-B_3zoXA1.d.cts → types-CjNl7O7f.d.cts} +3 -3
  254. package/dist/{types-BwsE-pFo.d.cts → types-CkJxMoTk.d.cts} +2 -2
  255. package/dist/{types--qQPfxWt.d.cts → types-CpJhWBmH.d.cts} +2 -2
  256. package/dist/{types-DgIzXY-Y.d.ts → types-D2Pb_4FA.d.cts} +2 -2
  257. package/dist/{types-7DBpH7Rf.d.ts → types-D53zBV25.d.ts} +2 -2
  258. package/dist/{types-Dg8a7m7f.d.ts → types-D9ZKJYZk.d.ts} +2 -2
  259. package/dist/{types-BXgINefw.d.ts → types-DODAZKEm.d.ts} +2 -2
  260. package/dist/{types-BBbzWczQ.d.cts → types-DV7K07oX.d.cts} +3 -4
  261. package/dist/{types-TRJiPqJr.d.cts → types-DbXV0g8U.d.cts} +2 -2
  262. package/dist/{types-BcQ3j8xK.d.ts → types-DjadPty5.d.ts} +2 -2
  263. package/dist/{types-DWJVbskE.d.ts → types-DlhNay1n.d.ts} +2 -2
  264. package/dist/{types-DBJ8c3hN.d.cts → types-DmzSFOhK.d.cts} +2 -2
  265. package/dist/{types-B_1plf0y.d.cts → types-DpbrGDRf.d.cts} +2 -2
  266. package/dist/{types-ituiCs8g.d.ts → types-DqOxIujY.d.ts} +2 -2
  267. package/dist/{types-D8w9lyb8.d.cts → types-Duurgaqk.d.cts} +7 -3
  268. package/dist/{types-C7t_6FLh.d.ts → types-Dy6EdWPG.d.ts} +2 -2
  269. package/dist/{types-kbyIaA7p.d.cts → types-HmK8iKp5.d.cts} +3 -3
  270. package/dist/{types-BdF6NDvo.d.cts → types-JZ0Bdlpk.d.cts} +2 -2
  271. package/dist/{types-OkQWmonU.d.cts → types-O6XM48J8.d.cts} +2 -2
  272. package/dist/{types-CEw2IzWk.d.ts → types-RogkWzOu.d.ts} +2 -2
  273. package/dist/{types-C2JMisvL.d.ts → types-TmrPVMhy.d.cts} +117 -37
  274. package/dist/{types-ij6BpTzR.d.ts → types-_zKX6JmD.d.ts} +2 -2
  275. package/dist/{types-L50Y6ATu.d.cts → types-dn6MHur3.d.cts} +5 -3
  276. package/dist/{types-4bSZLxq3.d.cts → types-jN2KmMet.d.cts} +169 -31
  277. package/dist/{types-D51g4h9w.d.cts → types-jfPoUlO8.d.cts} +2 -2
  278. package/dist/{types-CMKIdreQ.d.cts → types-ptynVnkv.d.cts} +3 -3
  279. package/dist/{types-COQOzyac.d.ts → types-tdIo5FpR.d.ts} +7 -3
  280. package/dist/{types-DPDq8C4q.d.cts → types-vvw_H7wp.d.cts} +2 -2
  281. package/dist/vault/index.d.cts +1 -1
  282. package/dist/vault/index.d.ts +1 -1
  283. package/dist/vault/types.d.cts +1 -1
  284. package/dist/vault/types.d.ts +1 -1
  285. package/package.json +1 -1
  286. package/surface/ai.md +0 -1
  287. package/surface/apps.md +7 -7
  288. package/surface/billing.md +2 -2
  289. package/surface/kaiAgent.md +5 -4
  290. package/surface/management.md +3 -1
  291. package/surface/storage.md +3 -2
  292. package/dist/configurations-BTRHVSRq.cjs.map +0 -1
  293. package/dist/configurations-Chg_JwJ1.js.map +0 -1
  294. package/dist/constants-CA4UN2Xv.js.map +0 -1
  295. package/dist/constants-a0jswUeK.cjs.map +0 -1
  296. package/dist/domain/permissions/index.cjs.map +0 -1
  297. package/dist/domain/permissions/index.js.map +0 -1
  298. package/dist/kaiAgent-BmfUG8bB.cjs.map +0 -1
  299. package/dist/kaiAgent-CBPbMwBh.js.map +0 -1
  300. package/dist/management-BUGPJ1Bu.cjs.map +0 -1
  301. package/dist/management-DAg2obYt.js.map +0 -1
  302. package/dist/middleware-CWaLMlG1.js.map +0 -1
  303. package/dist/middleware-DU_5pFDW.cjs.map +0 -1
  304. package/dist/project-BXLFrWJ6.js +0 -45
  305. package/dist/project-BXLFrWJ6.js.map +0 -1
  306. package/dist/project-CpgplgCr.cjs +0 -62
  307. package/dist/project-CpgplgCr.cjs.map +0 -1
  308. package/dist/storage-DyR7hDdv.js.map +0 -1
  309. package/dist/storage-yovv11k6.cjs.map +0 -1
package/AGENTS.md CHANGED
@@ -82,9 +82,12 @@ 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?)` / `auth.getHeadersAsync(projectId?)`, `stack.close` and
85
+ plus `auth.signOut({ baseUrl?, retain? }?)` / `auth.replace(credential)` / `auth.isAuthenticated()` / `auth.isAuthenticatedAsync()` / `auth.rotate(baseUrl)` / `auth.getHeaders(projectId?)` / `auth.getHeadersAsync(projectId?)`, `auth.restoreRetained(baseUrl)`, `stack.close` and
86
86
  the two `deactivate`s, and `getState()` / `subscribe(cb)` over the stack-and-project table. Every
87
- verb is synchronous — nothing awaits a build; a namespace throws `NotReady` until its fetch lands.
87
+ verb changes the table synchronously — nothing awaits a build; a namespace throws `NotReady` until
88
+ its fetch lands. `stack.select`, `project.select` and `auth.signOut` also return a promise that
89
+ resolves once the change is stored: await it before leaving the document, or the reload boots
90
+ from the scope or sign-in it was meant to replace.
88
91
  The one fetch each entry does own is readable both ways: `stack.getContext(baseUrl?)` /
89
92
  `project.getContext(entryId?)` answer from cache (`null` until it lands), and the
90
93
  `getContextAsync` sibling of each awaits it. `retryContext` refetches after a failure. The
@@ -436,7 +439,7 @@ Surfacing — toast vs inline:
436
439
 
437
440
  `@keboola/api-client/domain/permissions` holds token-only capability predicates: `canX` (boolean, safe in any UI condition) paired with `assertCanX` (throws `PermissionDeniedError` before any HTTP round-trip). Catch the error to gate UI without a network call; let it propagate from `useQuery` to surface a "no access" empty state.
438
441
 
439
- Implemented today: `admin.ts` (`isAdmin`, `isProductionManager`, … + matching `assertCan*`, all `(token)`-only), `configurations.ts` (`canCreate/canCopy/canMigrateFromTemplate/canPurge/canAssignFolder` + `assertCan*`, taking a trailing `ctx: ConfigurationCtx`), and `organization.ts` (`isOrganizationMember`, `isOrganizationAdmin`, `canWriteKaiSpendCaps`, all `(token)`-only — reads `StorageToken.admin.isOrganizationMember` rather than the project role string; `assertCanAdministerOrganization`/`assertCanWriteKaiSpendCaps` pair with the latter two, `isOrganizationMember` is a raw signal with no assert). `storage.ts`, `devBranches.ts`, `sandboxes.ts` are still `export {}` placeholders.
442
+ Implemented today: `admin.ts` (`isAdmin`, `isProductionManager`, … + matching `assertCan*`, all `(token)`-only), `configurations.ts` (`canCreate/canCopy/canMigrateFromTemplate/canPurge/canAssignFolder` + `assertCan*`, taking a trailing `ctx: ConfigurationCtx`), and `organization.ts` (`isOrganizationMember`, `isOrganizationAdmin`, `canWriteKaiSpendCaps`, all `(token)`-only — reads `StorageToken.admin.isOrganizationMember` rather than the project role string; `assertCanAdministerOrganization`/`assertCanWriteKaiSpendCaps` pair with the latter two, `isOrganizationMember` is a raw signal with no assert), and `storage.ts` (`canListSharingTargets`, `(token)`-only, no assert — it gates a query; `api.context.project` exposes it). `devBranches.ts`, `sandboxes.ts` are still `export {}` placeholders.
440
443
 
441
444
  ```ts
442
445
  import { PermissionDeniedError } from '@keboola/api-client/domain/permissions';
@@ -488,7 +491,10 @@ api.sdk.tag.* api.sdk.storage.*
488
491
 
489
492
  `api.apps` is the data-apps `/v2` App Deployments surface (apps + deployments); `api.dataScience` is the same service's `/v1` surface, which still owns workspaces (`/sandboxes`, `/runtimes`) and the data-app endpoints the UI has not moved off yet.
490
493
 
491
- **`hasService('data-science')` is not the availability check for `api.apps`, and neither is `api.apps.healthCheck()`.** Both clients resolve off that one service id, so `api.apps` is live on every stack that advertises it — while `/v2` itself is implemented only where sandboxes-service serves it (canary at the time of writing). Nothing cheap discriminates: `apps` is absent from the service index on every stack including canary; the `/v2/*` routes are scaffolded everywhere (unauthenticated they 401, so the route exists); and `healthCheck()` answers 200 everywhere because `GET /v2/` falls through to the same root handler as `GET /`, down to an `apiDocs` pointing at the v1 swagger. The one thing that differs is the implementation: off canary, a real call answers `501 {"error":"This endpoint is not implemented yet."}` — measured on three production stacks (AJDA-3140). So gate a data-apps feature on a real call's 501, or on a stack feature flag once one exists.
494
+ **`api.apps` needs no availability check.** Every stack's sandboxes-service serves `/v2` from the same image as `/v1`, and `api.apps` resolves off the `data-science` service id like `api.dataScience`. When probing a stack by hand, only an authenticated call answers:
495
+
496
+ - `healthCheck()`, `GET /v2/docs/swagger.yaml` and unauthenticated calls answer the same everywhere.
497
+ - A `401` from an authenticated call means a bad or expired token, not a missing API.
492
498
 
493
499
  Clients backing optional stack services (vault, queue, …) throw `ServiceUnavailableError` if absent from the current stack — check `api.context.stack.hasService(...)` before assuming a namespace exists.
494
500
 
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, 725 methods. This index lists method **names** only — full signatures live per namespace under [`surface/`](./surface). Open `surface/<namespace>.md` for the one you need.
7
+ 26 top-level namespaces, 728 methods. This index lists method **names** only — full signatures live per namespace under [`surface/`](./surface). Open `surface/<namespace>.md` for the one you need.
8
8
 
9
9
  ## [`api.ai`](./surface/ai.md)
10
10
 
@@ -13,7 +13,6 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
13
13
  - `describeConfigurationVersion`
14
14
  - `docsQuestion`
15
15
  - `explainError`
16
- - `feedback`
17
16
  - `getComponentDetail`
18
17
  - `healthCheck`
19
18
  - `suggestComponent`
@@ -229,6 +228,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
229
228
  - `updateProjectToolPolicy`
230
229
  - `updateSpendCaps`
231
230
  - `updateUserAgentSettings`
231
+ - `updateUserMemory`
232
232
 
233
233
  ## [`api.management`](./surface/management.md)
234
234
 
@@ -326,7 +326,9 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
326
326
  - `payAsYouGo.getTopUpSetting`
327
327
  - `payAsYouGo.updateStripeCustomer`
328
328
  - `payAsYouGo.updateTopUpSetting`
329
- - `programmaticProjects.confirm`
329
+ - `programmaticProjects.confirmByCookie`
330
+ - `programmaticProjects.confirmByToken`
331
+ - `programmaticProjects.getClaim`
330
332
  - `projects.addProjectFeature`
331
333
  - `projects.addProjectTemplateFeature`
332
334
  - `projects.addProjectUser`
@@ -564,6 +566,7 @@ Every namespace and method reachable from a ready `KeboolaApi` — the `api` hal
564
566
  - `bucketSharing.shareBucketToUsersAsync`
565
567
  - `bucketSharing.shareBucketToUsersPoller`
566
568
  - `bucketSharing.sharedBuckets`
569
+ - `bucketSharing.sharingTargets`
567
570
  - `bucketSharing.unshareBucketAsync`
568
571
  - `bucketSharing.unshareBucketPoller`
569
572
  - `buckets.createBucket`
package/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # @keboola/api-client
2
2
 
3
+ ## 49.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - **Breaking:** `programmaticProjects.confirm` is gone. `confirmByToken(claimToken)` redeems the claim a link carried and `confirmByCookie()` the claim Connection parked in its cookie, both through the OpenAPI client now that the Manage schema carries the endpoint (UT-5890)
8
+
9
+ ### Minor Changes
10
+
11
+ - `App` carries `hasManagedGitRepo`: whether the app's code lives in a Keboola-managed Git repository.
12
+
13
+ - `canListSharingTargets(token)` in `@keboola/api-client/domain/permissions`, exposed as `api.context.project.canListSharingTargets`, tells whether the token may call `api.storage.bucketSharing.sharingTargets()` — the `share` role, or organization membership, as Connection's voter decides.
14
+
15
+ - `Credits` follows the billing spec's corrected `/credits` response (billing-api#225):
16
+ - `marketplaceSubscription` is a top-level key, not one under `stats`; its `vendor` includes `gcp` and its `billingLink` is `null` for `aws` and `gcp`.
17
+ - `stats` and its `componentJobs` are always present, and `stats.workspaceJobs` is a list.
18
+
19
+ - `CreditPurchase` types x402 top-ups: `invoiceTopUpType` may be `'x402'`, and the optional `paymentProvider`, `paymentStatus` (`pending` | `settled` | `expired`) and `externalPaymentId` (the settlement tx hash) describe the payment. `X402_TOP_UP_TYPE` exports the top-up type value, and `X402_PAYMENT_STATUS` and `X402PaymentStatus` the payment-status values.
20
+
21
+ - `ProjectFeature` in `constants` names every project feature the apps gate on, the new `AdminFeature` names the admin features, and `StackFeature` gains `SandboxesPythonSpark`
22
+
23
+ - `ManageErrorCode` in `constants` names the Manage API's string error codes the apps classify on, starting with the programmatic-project ones (UT-5890)
24
+
25
+ - `manageErrorCode(error)` reads the Manage API's string code off an `ApiError`, wherever the backend put it, and `isManageError(error, code)` narrows on one (UT-5890)
26
+
27
+ - `retryAfterSeconds(error)` reads a failed response's `Retry-After` header off an `ApiError`, for the endpoints that answer 429 or 503 with one (UT-5890)
28
+
29
+ - `StackFeature` in `constants` names the stack features the apps gate on, the way `ProjectFeature` already names project features (UT-5890)
30
+
31
+ ### Patch Changes
32
+
33
+ - `resumeApp` wakes the app and clears a failure stop (`disabled`); a stopped app comes back `starting`.
34
+
35
+ - The bearer session's stack-index fetch gives up after 30 seconds, so a stack that never answers errors its context instead of leaving every caller waiting (UT-5890)
36
+
37
+ ## 48.0.0
38
+
39
+ ### Major Changes
40
+
41
+ - - A `StorageAdapter` may answer with a promise, and may offer `withLock` for a critical section shared across documents. **Breaking:** `createPersistor` is `read` / `write` / `modify` / `remove`, plus `transaction(task)`, which hands `task` the same four verbs under the adapter's lock: every write resolves once it has landed and rejects when it could not, writes run in the order they were issued, and `read` waits for the ones in flight. `hydrate`, `persist`, `update`, `clear`, `flush` and `hasPersistedValue` are gone.
42
+ - **Breaking:** `session.auth.signOut` resolves once the sign-out is stored — await it before leaving the document.
43
+ - **Breaking:** `session.auth.signOut` takes one options object, `{ baseUrl?, retain? }`. With `retain`, the stack signs out but keeps its grant; `session.auth.restoreRetained(baseUrl)` signs it back in. `Stack.retained` holds the kept grant with its issue time.
44
+ - **Breaking:** `CredentialType` is renamed `GrantType`. `Grant` is what renews a credential and what persists; `Credential` is the grant with its access token.
45
+
46
+ - Remove `api.ai.feedback()` and the `FeedbackBody` type. The UI no longer sends 👍/👎 feedback on AI-generated content to the AI service.
47
+
48
+ ### Minor Changes
49
+
50
+ - Kai saves a personal note right away by default (AI-4061). The chat shows "Remembered: …" with Undo and Edit; Kai settings → Memory switches back to asking before each save. Company notes still go through approval and a project admin's review. `api.kaiAgent.updateUserMemory(id, content)` edits a note, and user settings carry `memorySaveMode` (`auto` | `ask`).
51
+
52
+ - `Workspace` carries `lastActivityAt`, the last observed use, and `warnAt`, when retention will warn the owner (both ISO 8601, `null` or absent otherwise).
53
+
54
+ - `api.storage.bucketSharing.sharingTargets()` lists the projects and users a bucket can be shared to (`GET /v2/storage/sharing-targets`), and `api.management.programmaticProjects.getClaim()` reads the parked agent-project claim (`GET /manage/programmatic-projects/claim`). Both come from the regenerated Storage and Manage schemas; the Storage regen also adds `lastActivityAt` and `warnAt` to workspaces (UT-5889)
55
+
56
+ ### Patch Changes
57
+
58
+ - The `apps` (`/v2` App Deployments) types are generated from `apps.keboola.com`; the types are unchanged.
59
+ - `suspendApp` sleeps the app; the next visitor wakes it.
60
+ - `getDeployments` lists live deployments; `archived: true` lists the deleted ones instead.
61
+
62
+ - Regenerate the developerPortal, queryService, kaiAgent, componentsMcp, storage and management OpenAPI types against the live services (UT-5860)
63
+
64
+ - `kaiAgent` history types: a stored tool part's `approval.approved` is optional — a call whose approval card was shown keeps only the approval `id`.
65
+
66
+ - `canWriteSemanticLayer` admits the `share` project role, matching the metastore's role mapping (`admin`, `productionManager`, `share` get project-admin). A `share` member now gets the semantic-layer write actions in kbc-ui and Kai's semantic-layer write tools.
67
+
3
68
  ## 47.0.0
4
69
 
5
70
  ### Major Changes
package/README.md CHANGED
@@ -224,7 +224,7 @@ Clients backed by OpenAPI specs are marked with (OpenAPI); the rest use the gene
224
224
  | `api.chat` | Kai Assistant (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `getVotes()`, `submitVote()`, `getUsage()`, `getSuggestions()`, `getAgentSettings()`, `getToolsList()` |
225
225
  | `api.kaiAgent` | Kai Agent (OpenAPI) | `getHistory()`, `getChat()`, `createChat()`, `deleteChat()`, `approveToolCall()`, `submitToolOutput()`, `getSuggestions()`, `getAgentSettings()` |
226
226
  | `api.componentsMcp` | Components MCP (OpenAPI) | `getConnectors()`, `setConnectorCredentials()` |
227
- | `api.ai` | AI Service (OpenAPI) | `describeConfiguration()`, `describeConfigurationVersion()`, `describeConfigurationMerge()`, `explainError()`, `suggestComponent()`, `feedback()` |
227
+ | `api.ai` | AI Service (OpenAPI) | `describeConfiguration()`, `describeConfigurationVersion()`, `describeConfigurationMerge()`, `explainError()`, `suggestComponent()` |
228
228
  | `api.queue` | Job Queue (OpenAPI) | `getJob()`, `searchJobs()` |
229
229
  | `api.queryService` | Query Service (OpenAPI) | `createQueryJob()`, `cancelQueryJob()`, `getQueryJob()`, `getQueryResults()`, `getQueryHistory()`, `exportResults()` |
230
230
  | `api.syncActions` | Sync Actions (OpenAPI) | `sendSyncAction()` + one namespace per component; see [`surface/syncActions.md`](./surface/syncActions.md) |
@@ -1,4 +1,4 @@
1
- import { Lr as paths, l as OpenapiReturnType } from "./index-r6YSe8B-.js";
1
+ import { Lr as paths, l as OpenapiReturnType } from "./index-BPMr8PQJ.js";
2
2
  //#region src/constants/adminRoles.d.ts
3
3
  type SpecAdminRole = NonNullable<NonNullable<OpenapiReturnType<paths['/v2/storage/tokens/verify']['get']>['admin']>['role']>;
4
4
  declare const AdminRole: {
@@ -13,4 +13,4 @@ declare const AdminRole: {
13
13
  type AdminRole = SpecAdminRole;
14
14
  //#endregion
15
15
  export { AdminRole as t };
16
- //# sourceMappingURL=adminRoles-CvdIUkiC.d.ts.map
16
+ //# sourceMappingURL=adminRoles-BX1gk3At.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Lr as paths, l as OpenapiReturnType } from "./index-XaPb6unB.cjs";
1
+ import { Lr as paths, l as OpenapiReturnType } from "./index-CL4iKFic.cjs";
2
2
  //#region src/constants/adminRoles.d.ts
3
3
  type SpecAdminRole = NonNullable<NonNullable<OpenapiReturnType<paths['/v2/storage/tokens/verify']['get']>['admin']>['role']>;
4
4
  declare const AdminRole: {
@@ -13,4 +13,4 @@ declare const AdminRole: {
13
13
  type AdminRole = SpecAdminRole;
14
14
  //#endregion
15
15
  export { AdminRole as t };
16
- //# sourceMappingURL=adminRoles-DGM8SuuF.d.cts.map
16
+ //# sourceMappingURL=adminRoles-BbxFgfX-.d.cts.map
package/dist/ai/index.cjs CHANGED
@@ -28,10 +28,6 @@ const createAiClient = ({ baseUrl, middlewares, auth }) => {
28
28
  const { data } = await client.post("/suggest/component", { body });
29
29
  return data;
30
30
  };
31
- const feedback = async (body) => {
32
- const { data } = await client.post("/feedback", { body });
33
- return data;
34
- };
35
31
  /** Answers a question using the Keboola documentation as a source. */
36
32
  const docsQuestion = async (body) => {
37
33
  const { data } = await client.post("/docs/question", { body });
@@ -53,7 +49,6 @@ const createAiClient = ({ baseUrl, middlewares, auth }) => {
53
49
  explainError,
54
50
  describeConfiguration,
55
51
  suggestComponent,
56
- feedback,
57
52
  docsQuestion,
58
53
  getComponentDetail
59
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders"],"sources":["../../src/clients/ai/aiClient.ts"],"sourcesContent":["import { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n DescribeConfigurationBody,\n DescribeConfigurationMergeBody,\n DescribeConfigurationVersionBody,\n DocsQuestionBody,\n ExplainErrorBody,\n FeedbackBody,\n SuggestComponentBody,\n} from './types';\n\nexport const createAiClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const describeConfigurationVersion = async (body: DescribeConfigurationVersionBody) => {\n const { data } = await client.post('/describe/configuration-version', { body });\n\n return data;\n };\n\n const describeConfigurationMerge = async (body: DescribeConfigurationMergeBody) => {\n const { data } = await client.post('/describe/configuration-merge', { body });\n\n return data;\n };\n\n const explainError = async (body: ExplainErrorBody) => {\n const { data } = await client.post('/explain', { body });\n\n return data;\n };\n\n const describeConfiguration = async (body: DescribeConfigurationBody) => {\n const { data } = await client.post('/describe/configuration', { body });\n\n return data;\n };\n\n const suggestComponent = async (body: SuggestComponentBody) => {\n const { data } = await client.post('/suggest/component', { body });\n\n return data;\n };\n\n const feedback = async (body: FeedbackBody) => {\n const { data } = await client.post('/feedback', { body });\n\n return data;\n };\n\n /** Answers a question using the Keboola documentation as a source. */\n const docsQuestion = async (body: DocsQuestionBody) => {\n const { data } = await client.post('/docs/question', { body });\n\n return data;\n };\n\n /** Retrieves documentation details for a single component. */\n const getComponentDetail = async (componentId: string) => {\n const { data } = await client.get('/docs/components/{componentId}', {\n path: { componentId },\n });\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n describeConfigurationVersion,\n describeConfigurationMerge,\n explainError,\n describeConfiguration,\n suggestComponent,\n feedback,\n docsQuestion,\n getComponentDetail,\n };\n};\n"],"mappings":";;;;AAeA,MAAa,kBAAkB,EAAE,SAAS,aAAa,WAA8B;CACnF,MAAM,SAASA,iCAAAA,yBAAgC;EAC7C;EACA;EACA,SAASC,aAAAA,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,+BAA+B,OAAO,SAA2C;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,mCAAmC,EAAE,KAAK,CAAC;EAE9E,OAAO;CACT;CAEA,MAAM,6BAA6B,OAAO,SAAyC;EACjF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,iCAAiC,EAAE,KAAK,CAAC;EAE5E,OAAO;CACT;CAEA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,YAAY,EAAE,KAAK,CAAC;EAEvD,OAAO;CACT;CAEA,MAAM,wBAAwB,OAAO,SAAoC;EACvE,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,2BAA2B,EAAE,KAAK,CAAC;EAEtE,OAAO;CACT;CAEA,MAAM,mBAAmB,OAAO,SAA+B;EAC7D,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,sBAAsB,EAAE,KAAK,CAAC;EAEjE,OAAO;CACT;CAEA,MAAM,WAAW,OAAO,SAAuB;EAC7C,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,aAAa,EAAE,KAAK,CAAC;EAExD,OAAO;CACT;;CAGA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,kBAAkB,EAAE,KAAK,CAAC;EAE7D,OAAO;CACT;;CAGA,MAAM,qBAAqB,OAAO,gBAAwB;EACxD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,kCAAkC,EAClE,MAAM,EAAE,YAAY,EACtB,CAAC;EAED,OAAO;CACT;CAEA,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders"],"sources":["../../src/clients/ai/aiClient.ts"],"sourcesContent":["import { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n DescribeConfigurationBody,\n DescribeConfigurationMergeBody,\n DescribeConfigurationVersionBody,\n DocsQuestionBody,\n ExplainErrorBody,\n SuggestComponentBody,\n} from './types';\n\nexport const createAiClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const describeConfigurationVersion = async (body: DescribeConfigurationVersionBody) => {\n const { data } = await client.post('/describe/configuration-version', { body });\n\n return data;\n };\n\n const describeConfigurationMerge = async (body: DescribeConfigurationMergeBody) => {\n const { data } = await client.post('/describe/configuration-merge', { body });\n\n return data;\n };\n\n const explainError = async (body: ExplainErrorBody) => {\n const { data } = await client.post('/explain', { body });\n\n return data;\n };\n\n const describeConfiguration = async (body: DescribeConfigurationBody) => {\n const { data } = await client.post('/describe/configuration', { body });\n\n return data;\n };\n\n const suggestComponent = async (body: SuggestComponentBody) => {\n const { data } = await client.post('/suggest/component', { body });\n\n return data;\n };\n\n /** Answers a question using the Keboola documentation as a source. */\n const docsQuestion = async (body: DocsQuestionBody) => {\n const { data } = await client.post('/docs/question', { body });\n\n return data;\n };\n\n /** Retrieves documentation details for a single component. */\n const getComponentDetail = async (componentId: string) => {\n const { data } = await client.get('/docs/components/{componentId}', {\n path: { componentId },\n });\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n describeConfigurationVersion,\n describeConfigurationMerge,\n explainError,\n describeConfiguration,\n suggestComponent,\n docsQuestion,\n getComponentDetail,\n };\n};\n"],"mappings":";;;;AAcA,MAAa,kBAAkB,EAAE,SAAS,aAAa,WAA8B;CACnF,MAAM,SAASA,iCAAAA,yBAAgC;EAC7C;EACA;EACA,SAASC,aAAAA,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,+BAA+B,OAAO,SAA2C;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,mCAAmC,EAAE,KAAK,CAAC;EAE9E,OAAO;CACT;CAEA,MAAM,6BAA6B,OAAO,SAAyC;EACjF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,iCAAiC,EAAE,KAAK,CAAC;EAE5E,OAAO;CACT;CAEA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,YAAY,EAAE,KAAK,CAAC;EAEvD,OAAO;CACT;CAEA,MAAM,wBAAwB,OAAO,SAAoC;EACvE,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,2BAA2B,EAAE,KAAK,CAAC;EAEtE,OAAO;CACT;CAEA,MAAM,mBAAmB,OAAO,SAA+B;EAC7D,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,sBAAsB,EAAE,KAAK,CAAC;EAEjE,OAAO;CACT;;CAGA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,kBAAkB,EAAE,KAAK,CAAC;EAE7D,OAAO;CACT;;CAGA,MAAM,qBAAqB,OAAO,gBAAwB;EACxD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,kCAAkC,EAClE,MAAM,EAAE,YAAY,EACtB,CAAC;EAED,OAAO;CACT;CAEA,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,5 +1,5 @@
1
- import { a as DescribeConfigurationVersionBody, f as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, p as components, r as DescribeConfigurationBody, s as DocsQuestionBody, u as FeedbackBody } from "../types-BBbzWczQ.cjs";
2
- import { n as ClientInitOptions } from "../types-OkQWmonU.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-DV7K07oX.cjs";
2
+ import { n as ClientInitOptions } from "../types-O6XM48J8.cjs";
3
3
  //#region src/clients/ai/aiClient.d.ts
4
4
  declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
5
5
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -25,7 +25,6 @@ declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions
25
25
  components: components['schemas']['SuggestedComponent'][];
26
26
  correlationId: string;
27
27
  }>;
28
- feedback: (body: FeedbackBody) => Promise<never>;
29
28
  docsQuestion: (body: DocsQuestionBody) => Promise<{
30
29
  response: string;
31
30
  metadata: {
@@ -1,5 +1,5 @@
1
- import { a as DescribeConfigurationVersionBody, f as SuggestComponentBody, i as DescribeConfigurationMergeBody, l as ExplainErrorBody, p as components, r as DescribeConfigurationBody, s as DocsQuestionBody, u as FeedbackBody } from "../types-BNPvFLgC.js";
2
- import { n as ClientInitOptions } from "../types-Cw9UISvM.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-BOT6TgOS.js";
2
+ import { n as ClientInitOptions } from "../types-CeqZuOEC.js";
3
3
  //#region src/clients/ai/aiClient.d.ts
4
4
  declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions) => {
5
5
  healthCheck: (signal?: AbortSignal) => Promise<{
@@ -25,7 +25,6 @@ declare const createAiClient: ({ baseUrl, middlewares, auth }: ClientInitOptions
25
25
  components: components['schemas']['SuggestedComponent'][];
26
26
  correlationId: string;
27
27
  }>;
28
- feedback: (body: FeedbackBody) => Promise<never>;
29
28
  docsQuestion: (body: DocsQuestionBody) => Promise<{
30
29
  response: string;
31
30
  metadata: {
package/dist/ai/index.js CHANGED
@@ -27,10 +27,6 @@ const createAiClient = ({ baseUrl, middlewares, auth }) => {
27
27
  const { data } = await client.post("/suggest/component", { body });
28
28
  return data;
29
29
  };
30
- const feedback = async (body) => {
31
- const { data } = await client.post("/feedback", { body });
32
- return data;
33
- };
34
30
  /** Answers a question using the Keboola documentation as a source. */
35
31
  const docsQuestion = async (body) => {
36
32
  const { data } = await client.post("/docs/question", { body });
@@ -52,7 +48,6 @@ const createAiClient = ({ baseUrl, middlewares, auth }) => {
52
48
  explainError,
53
49
  describeConfiguration,
54
50
  suggestComponent,
55
- feedback,
56
51
  docsQuestion,
57
52
  getComponentDetail
58
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/clients/ai/aiClient.ts"],"sourcesContent":["import { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n DescribeConfigurationBody,\n DescribeConfigurationMergeBody,\n DescribeConfigurationVersionBody,\n DocsQuestionBody,\n ExplainErrorBody,\n FeedbackBody,\n SuggestComponentBody,\n} from './types';\n\nexport const createAiClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const describeConfigurationVersion = async (body: DescribeConfigurationVersionBody) => {\n const { data } = await client.post('/describe/configuration-version', { body });\n\n return data;\n };\n\n const describeConfigurationMerge = async (body: DescribeConfigurationMergeBody) => {\n const { data } = await client.post('/describe/configuration-merge', { body });\n\n return data;\n };\n\n const explainError = async (body: ExplainErrorBody) => {\n const { data } = await client.post('/explain', { body });\n\n return data;\n };\n\n const describeConfiguration = async (body: DescribeConfigurationBody) => {\n const { data } = await client.post('/describe/configuration', { body });\n\n return data;\n };\n\n const suggestComponent = async (body: SuggestComponentBody) => {\n const { data } = await client.post('/suggest/component', { body });\n\n return data;\n };\n\n const feedback = async (body: FeedbackBody) => {\n const { data } = await client.post('/feedback', { body });\n\n return data;\n };\n\n /** Answers a question using the Keboola documentation as a source. */\n const docsQuestion = async (body: DocsQuestionBody) => {\n const { data } = await client.post('/docs/question', { body });\n\n return data;\n };\n\n /** Retrieves documentation details for a single component. */\n const getComponentDetail = async (componentId: string) => {\n const { data } = await client.get('/docs/components/{componentId}', {\n path: { componentId },\n });\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n describeConfigurationVersion,\n describeConfigurationMerge,\n explainError,\n describeConfiguration,\n suggestComponent,\n feedback,\n docsQuestion,\n getComponentDetail,\n };\n};\n"],"mappings":";;;AAeA,MAAa,kBAAkB,EAAE,SAAS,aAAa,WAA8B;CACnF,MAAM,SAAS,yBAAgC;EAC7C;EACA;EACA,SAAS,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,+BAA+B,OAAO,SAA2C;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,mCAAmC,EAAE,KAAK,CAAC;EAE9E,OAAO;CACT;CAEA,MAAM,6BAA6B,OAAO,SAAyC;EACjF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,iCAAiC,EAAE,KAAK,CAAC;EAE5E,OAAO;CACT;CAEA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,YAAY,EAAE,KAAK,CAAC;EAEvD,OAAO;CACT;CAEA,MAAM,wBAAwB,OAAO,SAAoC;EACvE,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,2BAA2B,EAAE,KAAK,CAAC;EAEtE,OAAO;CACT;CAEA,MAAM,mBAAmB,OAAO,SAA+B;EAC7D,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,sBAAsB,EAAE,KAAK,CAAC;EAEjE,OAAO;CACT;CAEA,MAAM,WAAW,OAAO,SAAuB;EAC7C,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,aAAa,EAAE,KAAK,CAAC;EAExD,OAAO;CACT;;CAGA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,kBAAkB,EAAE,KAAK,CAAC;EAE7D,OAAO;CACT;;CAGA,MAAM,qBAAqB,OAAO,gBAAwB;EACxD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,kCAAkC,EAClE,MAAM,EAAE,YAAY,EACtB,CAAC;EAED,OAAO;CACT;CAEA,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/clients/ai/aiClient.ts"],"sourcesContent":["import { createOpenapiFetchClient } from '../../fetchClient';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n DescribeConfigurationBody,\n DescribeConfigurationMergeBody,\n DescribeConfigurationVersionBody,\n DocsQuestionBody,\n ExplainErrorBody,\n SuggestComponentBody,\n} from './types';\n\nexport const createAiClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n\n const describeConfigurationVersion = async (body: DescribeConfigurationVersionBody) => {\n const { data } = await client.post('/describe/configuration-version', { body });\n\n return data;\n };\n\n const describeConfigurationMerge = async (body: DescribeConfigurationMergeBody) => {\n const { data } = await client.post('/describe/configuration-merge', { body });\n\n return data;\n };\n\n const explainError = async (body: ExplainErrorBody) => {\n const { data } = await client.post('/explain', { body });\n\n return data;\n };\n\n const describeConfiguration = async (body: DescribeConfigurationBody) => {\n const { data } = await client.post('/describe/configuration', { body });\n\n return data;\n };\n\n const suggestComponent = async (body: SuggestComponentBody) => {\n const { data } = await client.post('/suggest/component', { body });\n\n return data;\n };\n\n /** Answers a question using the Keboola documentation as a source. */\n const docsQuestion = async (body: DocsQuestionBody) => {\n const { data } = await client.post('/docs/question', { body });\n\n return data;\n };\n\n /** Retrieves documentation details for a single component. */\n const getComponentDetail = async (componentId: string) => {\n const { data } = await client.get('/docs/components/{componentId}', {\n path: { componentId },\n });\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await client.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n describeConfigurationVersion,\n describeConfigurationMerge,\n explainError,\n describeConfiguration,\n suggestComponent,\n docsQuestion,\n getComponentDetail,\n };\n};\n"],"mappings":";;;AAcA,MAAa,kBAAkB,EAAE,SAAS,aAAa,WAA8B;CACnF,MAAM,SAAS,yBAAgC;EAC7C;EACA;EACA,SAAS,kBAAkB,IAAI;CACjC,CAAC;CAED,MAAM,+BAA+B,OAAO,SAA2C;EACrF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,mCAAmC,EAAE,KAAK,CAAC;EAE9E,OAAO;CACT;CAEA,MAAM,6BAA6B,OAAO,SAAyC;EACjF,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,iCAAiC,EAAE,KAAK,CAAC;EAE5E,OAAO;CACT;CAEA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,YAAY,EAAE,KAAK,CAAC;EAEvD,OAAO;CACT;CAEA,MAAM,wBAAwB,OAAO,SAAoC;EACvE,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,2BAA2B,EAAE,KAAK,CAAC;EAEtE,OAAO;CACT;CAEA,MAAM,mBAAmB,OAAO,SAA+B;EAC7D,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,sBAAsB,EAAE,KAAK,CAAC;EAEjE,OAAO;CACT;;CAGA,MAAM,eAAe,OAAO,SAA2B;EACrD,MAAM,EAAE,SAAS,MAAM,OAAO,KAAK,kBAAkB,EAAE,KAAK,CAAC;EAE7D,OAAO;CACT;;CAGA,MAAM,qBAAqB,OAAO,gBAAwB;EACxD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,kCAAkC,EAClE,MAAM,EAAE,YAAY,EACtB,CAAC;EAED,OAAO;CACT;CAEA,MAAM,cAAc,OAAO,WAAyB;EAClD,MAAM,EAAE,SAAS,MAAM,OAAO,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC;EAEjE,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1,2 +1,2 @@
1
- import { a as DescribeConfigurationVersionBody, c as ErrorExplanation, d as ObjectDescription, f 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 FeedbackBody } from "../types-BBbzWczQ.cjs";
2
- export { ComponentDocsDetail, ComponentSuggestion, DescribeConfigurationBody, DescribeConfigurationMergeBody, DescribeConfigurationVersionBody, DocsAnswer, DocsQuestionBody, ErrorExplanation, ExplainErrorBody, FeedbackBody, ObjectDescription, SuggestComponentBody };
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-DV7K07oX.cjs";
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 ObjectDescription, f 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 FeedbackBody } from "../types-BNPvFLgC.js";
2
- export { ComponentDocsDetail, ComponentSuggestion, DescribeConfigurationBody, DescribeConfigurationMergeBody, DescribeConfigurationVersionBody, DocsAnswer, DocsQuestionBody, ErrorExplanation, ExplainErrorBody, FeedbackBody, ObjectDescription, SuggestComponentBody };
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-BOT6TgOS.js";
2
+ export { ComponentDocsDetail, ComponentSuggestion, DescribeConfigurationBody, DescribeConfigurationMergeBody, DescribeConfigurationVersionBody, DocsAnswer, DocsQuestionBody, ErrorExplanation, ExplainErrorBody, ObjectDescription, SuggestComponentBody };
@@ -1,4 +1,4 @@
1
- import "./index-r6YSe8B-.js";
1
+ import "./index-BPMr8PQJ.js";
2
2
  //#region src/domain/appLogs.d.ts
3
3
  type LogEntry = {
4
4
  timestamp: string | null;
@@ -7,4 +7,4 @@ type LogEntry = {
7
7
  declare const parseLogLines: (raw: unknown) => LogEntry[];
8
8
  //#endregion
9
9
  export { parseLogLines as n, LogEntry as t };
10
- //# sourceMappingURL=appLogs-xW0-JQXg.d.ts.map
10
+ //# sourceMappingURL=appLogs-DI2Y4imY.d.ts.map
@@ -1,4 +1,4 @@
1
- import "./index-XaPb6unB.cjs";
1
+ import "./index-CL4iKFic.cjs";
2
2
  //#region src/domain/appLogs.d.ts
3
3
  type LogEntry = {
4
4
  timestamp: string | null;
@@ -7,4 +7,4 @@ type LogEntry = {
7
7
  declare const parseLogLines: (raw: unknown) => LogEntry[];
8
8
  //#endregion
9
9
  export { parseLogLines as n, LogEntry as t };
10
- //# sourceMappingURL=appLogs-Cxhm2Rkn.d.cts.map
10
+ //# sourceMappingURL=appLogs-IhRA3xyv.d.cts.map
@@ -47,12 +47,12 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
47
47
  const { data } = await client.post("/apps/{appId}/unpublish", { path: { appId } }, { signal });
48
48
  return data;
49
49
  };
50
- /** Sleeps the app and disarms wake-on-request: visitors get `503` until {@link resumeApp}. */
50
+ /** Sleeps the app now; the next visitor wakes it, as after an idle auto-suspend. */
51
51
  const suspendApp = async (appId, signal) => {
52
52
  const { data } = await client.post("/apps/{appId}/suspend", { path: { appId } }, { signal });
53
53
  return data;
54
54
  };
55
- /** Wakes the app and re-arms wake-on-request. The returned app still reports `starting`. */
55
+ /** Wakes the app now and clears a failure stop (`disabled`). A stopped app comes back `starting`. */
56
56
  const resumeApp = async (appId, signal) => {
57
57
  const { data } = await client.post("/apps/{appId}/resume", { path: { appId } }, { signal });
58
58
  return data;
@@ -95,7 +95,7 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
95
95
  }, writeOptions(options));
96
96
  return data;
97
97
  };
98
- /** Deployment history, newest first. Omitting `query.archived` returns deleted ones too. */
98
+ /** Live deployment history, newest first; `query.archived: true` lists the deleted ones instead. */
99
99
  const getDeployments = async (appId, query = {}, signal) => {
100
100
  const { data } = await client.get("/apps/{appId}/deployments", {
101
101
  path: { appId },
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders","readAppLogsTail","readAppLogsDownload"],"sources":["../../src/clients/apps/appsClient.ts"],"sourcesContent":["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 CredentialId,\n DeploymentId,\n GetAppRunsQuery,\n GetAppsQuery,\n GetDeploymentsQuery,\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 and disarms wake-on-request: visitors get `503` until {@link resumeApp}. */\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 and re-arms wake-on-request. The returned app still reports `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 /** Deployment history, newest first. Omitting `query.archived` returns deleted ones too. */\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 /** 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 /** 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 getAppLogsTail,\n getAppLogsDownload,\n getDeploymentLogsTail,\n getDeploymentLogsDownload,\n getAppGitRepo,\n getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["createOpenapiFetchClient","createAuthHeaders","readAppLogsTail","readAppLogsDownload"],"sources":["../../src/clients/apps/appsClient.ts"],"sourcesContent":["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 CredentialId,\n DeploymentId,\n GetAppRunsQuery,\n GetAppsQuery,\n GetDeploymentsQuery,\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 /** 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 /** 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 getAppLogsTail,\n getAppLogsDownload,\n getDeploymentLogsTail,\n getDeploymentLogsDownload,\n getAppGitRepo,\n getAppGitRepoCredentials,\n getAppGitRepoCredential,\n createAppGitRepoCredential,\n deleteAppGitRepoCredential,\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { n as ClientInitOptions } from "../types-OkQWmonU.cjs";
2
- import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-L50Y6ATu.cjs";
3
- import { t as LogEntry } from "../appLogs-Cxhm2Rkn.cjs";
1
+ import { n as ClientInitOptions } from "../types-O6XM48J8.cjs";
2
+ import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-dn6MHur3.cjs";
3
+ import { t as LogEntry } from "../appLogs-IhRA3xyv.cjs";
4
4
  //#region src/clients/apps/appsClient.d.ts
5
5
  /**
6
6
  * Options every write takes.
@@ -35,6 +35,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
35
35
  configId: string;
36
36
  type?: 'streamlit' | 'python-js' | null;
37
37
  url: string | null;
38
+ hasManagedGitRepo: boolean;
38
39
  production: {
39
40
  desiredDeploymentId?: string | null;
40
41
  actualDeploymentId?: string | null;
@@ -49,6 +50,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
49
50
  configId: string;
50
51
  type?: 'streamlit' | 'python-js' | null;
51
52
  url: string | null;
53
+ hasManagedGitRepo: boolean;
52
54
  production: {
53
55
  desiredDeploymentId?: string | null;
54
56
  actualDeploymentId?: string | null;
@@ -63,6 +65,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
63
65
  configId: string;
64
66
  type?: 'streamlit' | 'python-js' | null;
65
67
  url: string | null;
68
+ hasManagedGitRepo: boolean;
66
69
  production: {
67
70
  desiredDeploymentId?: string | null;
68
71
  actualDeploymentId?: string | null;
@@ -1,6 +1,6 @@
1
- import { n as ClientInitOptions } from "../types-Cw9UISvM.js";
2
- import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-C3IQu1gV.js";
3
- import { t as LogEntry } from "../appLogs-xW0-JQXg.js";
1
+ import { n as ClientInitOptions } from "../types-CeqZuOEC.js";
2
+ import { C as components, S as RunId, b as GetDeploymentsQuery, c as CreateCredentialBody, f as CredentialId, g as DeploymentId, l as CreateDeploymentBody, r as AppId, s as CreateAppBody, t as App, v as GetAppRunsQuery, x as GetLogsTailQuery, y as GetAppsQuery } from "../types-CfXqFz2e.js";
3
+ import { t as LogEntry } from "../appLogs-DI2Y4imY.js";
4
4
  //#region src/clients/apps/appsClient.d.ts
5
5
  /**
6
6
  * Options every write takes.
@@ -35,6 +35,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
35
35
  configId: string;
36
36
  type?: 'streamlit' | 'python-js' | null;
37
37
  url: string | null;
38
+ hasManagedGitRepo: boolean;
38
39
  production: {
39
40
  desiredDeploymentId?: string | null;
40
41
  actualDeploymentId?: string | null;
@@ -49,6 +50,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
49
50
  configId: string;
50
51
  type?: 'streamlit' | 'python-js' | null;
51
52
  url: string | null;
53
+ hasManagedGitRepo: boolean;
52
54
  production: {
53
55
  desiredDeploymentId?: string | null;
54
56
  actualDeploymentId?: string | null;
@@ -63,6 +65,7 @@ declare const createAppsClient: ({ baseUrl, middlewares, auth }: ClientInitOptio
63
65
  configId: string;
64
66
  type?: 'streamlit' | 'python-js' | null;
65
67
  url: string | null;
68
+ hasManagedGitRepo: boolean;
66
69
  production: {
67
70
  desiredDeploymentId?: string | null;
68
71
  actualDeploymentId?: string | null;
@@ -46,12 +46,12 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
46
46
  const { data } = await client.post("/apps/{appId}/unpublish", { path: { appId } }, { signal });
47
47
  return data;
48
48
  };
49
- /** Sleeps the app and disarms wake-on-request: visitors get `503` until {@link resumeApp}. */
49
+ /** Sleeps the app now; the next visitor wakes it, as after an idle auto-suspend. */
50
50
  const suspendApp = async (appId, signal) => {
51
51
  const { data } = await client.post("/apps/{appId}/suspend", { path: { appId } }, { signal });
52
52
  return data;
53
53
  };
54
- /** Wakes the app and re-arms wake-on-request. The returned app still reports `starting`. */
54
+ /** Wakes the app now and clears a failure stop (`disabled`). A stopped app comes back `starting`. */
55
55
  const resumeApp = async (appId, signal) => {
56
56
  const { data } = await client.post("/apps/{appId}/resume", { path: { appId } }, { signal });
57
57
  return data;
@@ -94,7 +94,7 @@ const createAppsClient = ({ baseUrl, middlewares, auth }) => {
94
94
  }, writeOptions(options));
95
95
  return data;
96
96
  };
97
- /** Deployment history, newest first. Omitting `query.archived` returns deleted ones too. */
97
+ /** Live deployment history, newest first; `query.archived: true` lists the deleted ones instead. */
98
98
  const getDeployments = async (appId, query = {}, signal) => {
99
99
  const { data } = await client.get("/apps/{appId}/deployments", {
100
100
  path: { appId },