@keboola/api-client 24.0.0 → 27.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 (485) hide show
  1. package/AGENTS.md +489 -0
  2. package/API-SURFACE.md +129 -57
  3. package/README.md +29 -25
  4. package/dist/{ManagementClientAuthError-C7q1Jd9I.d.ts → ManagementClientAuthError-4J0S5tV-.d.ts} +1 -1
  5. package/dist/{ManagementClientAuthError-BuqHAOBO.d.cts → ManagementClientAuthError-CyDpa4NS.d.cts} +1 -1
  6. package/dist/{adminRoles-Cil1lavB.d.cts → adminRoles-BSUPLfNf.d.cts} +1 -7
  7. package/dist/{adminRoles-Cil1lavB.d.ts → adminRoles-BSUPLfNf.d.ts} +1 -7
  8. package/dist/ai/index.cjs +4 -4
  9. package/dist/ai/index.d.cts +6 -3
  10. package/dist/ai/index.d.ts +6 -3
  11. package/dist/ai/index.js +3 -3
  12. package/dist/ai/types.d.cts +2 -2
  13. package/dist/ai/types.d.ts +2 -2
  14. package/dist/appLogs-BbgAJ5I8.d.cts +7 -0
  15. package/dist/appLogs-BbgAJ5I8.d.ts +7 -0
  16. package/dist/apps/index.cjs +16 -0
  17. package/dist/apps/index.cjs.map +1 -0
  18. package/dist/apps/index.d.cts +249 -0
  19. package/dist/apps/index.d.ts +249 -0
  20. package/dist/apps/index.js +7 -0
  21. package/dist/apps/index.js.map +1 -0
  22. package/dist/apps/types.cjs +4 -0
  23. package/dist/apps/types.cjs.map +1 -0
  24. package/dist/apps/types.d.cts +3 -0
  25. package/dist/apps/types.d.ts +3 -0
  26. package/dist/apps/types.js +3 -0
  27. package/dist/apps/types.js.map +1 -0
  28. package/dist/assets/index.cjs +2 -2
  29. package/dist/assets/index.d.cts +1 -1
  30. package/dist/assets/index.d.ts +1 -1
  31. package/dist/assets/index.js +1 -1
  32. package/dist/auth/index.cjs +17 -13
  33. package/dist/auth/index.d.cts +19 -6
  34. package/dist/auth/index.d.ts +19 -6
  35. package/dist/auth/index.js +2 -2
  36. package/dist/auth/types.d.cts +3 -3
  37. package/dist/auth/types.d.ts +3 -3
  38. package/dist/backends-UNp_e5y9.d.cts +7 -0
  39. package/dist/backends-UNp_e5y9.d.ts +7 -0
  40. package/dist/chat/index.cjs +4 -4
  41. package/dist/chat/index.d.cts +6 -3
  42. package/dist/chat/index.d.ts +6 -3
  43. package/dist/chat/index.js +3 -3
  44. package/dist/chat/types.d.cts +2 -2
  45. package/dist/chat/types.d.ts +2 -2
  46. package/dist/{chunk-LD3JERYP.js → chunk-24YVNNAG.js} +10 -4
  47. package/dist/chunk-24YVNNAG.js.map +1 -0
  48. package/dist/{chunk-CV2JGHBN.js → chunk-255CHZ3U.js} +23 -6
  49. package/dist/chunk-255CHZ3U.js.map +1 -0
  50. package/dist/{chunk-S4JK7DKM.js → chunk-2BCH2U57.js} +11 -5
  51. package/dist/chunk-2BCH2U57.js.map +1 -0
  52. package/dist/{chunk-XHDYLUM4.js → chunk-2BQBKU6E.js} +15 -13
  53. package/dist/chunk-2BQBKU6E.js.map +1 -0
  54. package/dist/{chunk-NVQ6LGDO.cjs → chunk-2JKTV7UG.cjs} +6 -6
  55. package/dist/{chunk-NVQ6LGDO.cjs.map → chunk-2JKTV7UG.cjs.map} +1 -1
  56. package/dist/chunk-3UBGQFBU.js +29 -0
  57. package/dist/chunk-3UBGQFBU.js.map +1 -0
  58. package/dist/chunk-57Q4CY4H.js +190 -0
  59. package/dist/chunk-57Q4CY4H.js.map +1 -0
  60. package/dist/{chunk-EDX5D6UY.js → chunk-5A3AQIXR.js} +3 -3
  61. package/dist/{chunk-EDX5D6UY.js.map → chunk-5A3AQIXR.js.map} +1 -1
  62. package/dist/{chunk-UABYNGBZ.js → chunk-5HEIR4DC.js} +4 -4
  63. package/dist/chunk-5HEIR4DC.js.map +1 -0
  64. package/dist/chunk-5SR2L35Y.cjs +1828 -0
  65. package/dist/chunk-5SR2L35Y.cjs.map +1 -0
  66. package/dist/{chunk-OUSPQ55W.js → chunk-62LG5KPI.js} +29 -7
  67. package/dist/chunk-62LG5KPI.js.map +1 -0
  68. package/dist/{chunk-HMCZUHR7.js → chunk-67P5UI6H.js} +9 -4
  69. package/dist/{chunk-2CFM7K4U.cjs.map → chunk-67P5UI6H.js.map} +1 -1
  70. package/dist/{chunk-HY7J3OD3.cjs → chunk-6PVEHUJL.cjs} +39 -29
  71. package/dist/chunk-6PVEHUJL.cjs.map +1 -0
  72. package/dist/chunk-6XFXU5N4.js +119 -0
  73. package/dist/chunk-6XFXU5N4.js.map +1 -0
  74. package/dist/chunk-6ZQBFK2Y.js +24 -0
  75. package/dist/chunk-6ZQBFK2Y.js.map +1 -0
  76. package/dist/{chunk-AFJGNBVM.cjs → chunk-AJ3SCWUB.cjs} +14 -8
  77. package/dist/chunk-AJ3SCWUB.cjs.map +1 -0
  78. package/dist/{chunk-GF4XZK5N.cjs → chunk-AXYNFDUI.cjs} +4 -4
  79. package/dist/chunk-AXYNFDUI.cjs.map +1 -0
  80. package/dist/{chunk-UP5SEEYZ.js → chunk-B45B4AYG.js} +61 -7
  81. package/dist/chunk-B45B4AYG.js.map +1 -0
  82. package/dist/{chunk-4VVF2PIX.js → chunk-B4T4QCLB.js} +10 -4
  83. package/dist/chunk-B4T4QCLB.js.map +1 -0
  84. package/dist/{chunk-XIIER7QQ.js → chunk-BGJWHTBJ.js} +10 -4
  85. package/dist/chunk-BGJWHTBJ.js.map +1 -0
  86. package/dist/chunk-BVRPZKRE.cjs +147 -0
  87. package/dist/chunk-BVRPZKRE.cjs.map +1 -0
  88. package/dist/chunk-BZB4UVQA.cjs +192 -0
  89. package/dist/chunk-BZB4UVQA.cjs.map +1 -0
  90. package/dist/{chunk-D3ZZQIY2.cjs → chunk-CHRBWCL7.cjs} +8 -8
  91. package/dist/chunk-CHRBWCL7.cjs.map +1 -0
  92. package/dist/{chunk-3PVERYSF.js → chunk-CPZME73I.js} +3 -3
  93. package/dist/{chunk-3PVERYSF.js.map → chunk-CPZME73I.js.map} +1 -1
  94. package/dist/{chunk-D6O5C67S.js → chunk-DVV35AIS.js} +7 -7
  95. package/dist/chunk-DVV35AIS.js.map +1 -0
  96. package/dist/{chunk-CWUQ6ZAO.cjs → chunk-E7GGDLAH.cjs} +25 -8
  97. package/dist/chunk-E7GGDLAH.cjs.map +1 -0
  98. package/dist/{chunk-J3NLKXQ5.cjs → chunk-EQPBR3BE.cjs} +15 -9
  99. package/dist/chunk-EQPBR3BE.cjs.map +1 -0
  100. package/dist/{chunk-SJZ66FD5.js → chunk-ERZEQ5JR.js} +8 -3
  101. package/dist/chunk-ERZEQ5JR.js.map +1 -0
  102. package/dist/{chunk-CWCUQACX.cjs → chunk-ES3ADC2G.cjs} +4 -4
  103. package/dist/{chunk-CWCUQACX.cjs.map → chunk-ES3ADC2G.cjs.map} +1 -1
  104. package/dist/{chunk-2CFM7K4U.cjs → chunk-FEAE6L3K.cjs} +13 -8
  105. package/dist/chunk-FEAE6L3K.cjs.map +1 -0
  106. package/dist/{chunk-IDWGBCSB.cjs → chunk-FVU7WU2H.cjs} +11 -6
  107. package/dist/chunk-FVU7WU2H.cjs.map +1 -0
  108. package/dist/{chunk-3BFPNM2J.js → chunk-FW5GBBKL.js} +11 -5
  109. package/dist/chunk-FW5GBBKL.js.map +1 -0
  110. package/dist/chunk-G2SWCC3X.js +90 -0
  111. package/dist/chunk-G2SWCC3X.js.map +1 -0
  112. package/dist/{chunk-KUYVBCUM.cjs → chunk-G3JHVIDZ.cjs} +63 -8
  113. package/dist/chunk-G3JHVIDZ.cjs.map +1 -0
  114. package/dist/{chunk-KH6BHTXN.js → chunk-HGKDXF35.js} +59 -108
  115. package/dist/chunk-HGKDXF35.js.map +1 -0
  116. package/dist/chunk-HITKHHWN.cjs +174 -0
  117. package/dist/chunk-HITKHHWN.cjs.map +1 -0
  118. package/dist/chunk-HQO572JW.cjs +34 -0
  119. package/dist/chunk-HQO572JW.cjs.map +1 -0
  120. package/dist/{chunk-MMOAH3EH.cjs → chunk-HUQ5ATIL.cjs} +15 -13
  121. package/dist/chunk-HUQ5ATIL.cjs.map +1 -0
  122. package/dist/{chunk-XKIENBIE.js → chunk-HZDVMHU6.js} +10 -4
  123. package/dist/chunk-HZDVMHU6.js.map +1 -0
  124. package/dist/{chunk-7R22VKV7.cjs → chunk-ICWUR5WA.cjs} +13 -7
  125. package/dist/chunk-ICWUR5WA.cjs.map +1 -0
  126. package/dist/{chunk-BR6WZE3O.cjs → chunk-IQFNHQWP.cjs} +9 -4
  127. package/dist/chunk-IQFNHQWP.cjs.map +1 -0
  128. package/dist/{chunk-7Z4MU7ZB.js → chunk-IZ4QM7O4.js} +32 -22
  129. package/dist/chunk-IZ4QM7O4.js.map +1 -0
  130. package/dist/{chunk-UWQUHP3T.cjs → chunk-J5JCXSAS.cjs} +11 -6
  131. package/dist/chunk-J5JCXSAS.cjs.map +1 -0
  132. package/dist/{chunk-LIXSIM3H.cjs → chunk-JI7HLIDL.cjs} +12 -6
  133. package/dist/chunk-JI7HLIDL.cjs.map +1 -0
  134. package/dist/chunk-JWISA775.cjs +92 -0
  135. package/dist/chunk-JWISA775.cjs.map +1 -0
  136. package/dist/chunk-K3BLXPLA.cjs +16 -0
  137. package/dist/{chunk-7RO6PKZ4.cjs.map → chunk-K3BLXPLA.cjs.map} +1 -1
  138. package/dist/{chunk-BZA3FGO6.js → chunk-KATUDT3E.js} +8 -3
  139. package/dist/chunk-KATUDT3E.js.map +1 -0
  140. package/dist/chunk-KGBWWS6I.js +32 -0
  141. package/dist/chunk-KGBWWS6I.js.map +1 -0
  142. package/dist/chunk-KQENBXPS.cjs +34 -0
  143. package/dist/chunk-KQENBXPS.cjs.map +1 -0
  144. package/dist/chunk-KTKJD4DM.js +60 -0
  145. package/dist/chunk-KTKJD4DM.js.map +1 -0
  146. package/dist/chunk-LNZP2O4P.js +169 -0
  147. package/dist/chunk-LNZP2O4P.js.map +1 -0
  148. package/dist/{chunk-2BOG5U7C.js → chunk-LWQP7OWA.js} +3 -3
  149. package/dist/{chunk-2BOG5U7C.js.map → chunk-LWQP7OWA.js.map} +1 -1
  150. package/dist/chunk-N4COL54U.cjs +22 -0
  151. package/dist/chunk-N4COL54U.cjs.map +1 -0
  152. package/dist/chunk-NFJKJGXR.js +397 -0
  153. package/dist/chunk-NFJKJGXR.js.map +1 -0
  154. package/dist/chunk-NH2TQGRL.cjs +28 -0
  155. package/dist/chunk-NH2TQGRL.cjs.map +1 -0
  156. package/dist/{chunk-XMC355U2.js → chunk-NHYL5QPM.js} +17 -3
  157. package/dist/chunk-NHYL5QPM.js.map +1 -0
  158. package/dist/{chunk-WFXW4XU3.js → chunk-ON4ILCHP.js} +899 -555
  159. package/dist/chunk-ON4ILCHP.js.map +1 -0
  160. package/dist/{chunk-T242YFMT.cjs → chunk-PLF4JX5B.cjs} +12 -7
  161. package/dist/chunk-PLF4JX5B.cjs.map +1 -0
  162. package/dist/{chunk-77LILJYX.js → chunk-QNF3L4B7.js} +9 -4
  163. package/dist/chunk-QNF3L4B7.js.map +1 -0
  164. package/dist/{chunk-NVRVPWNY.js → chunk-RBN3ITTM.js} +9 -4
  165. package/dist/chunk-RBN3ITTM.js.map +1 -0
  166. package/dist/{chunk-DRNOCC6W.cjs → chunk-RXYT7EMN.cjs} +31 -8
  167. package/dist/chunk-RXYT7EMN.cjs.map +1 -0
  168. package/dist/chunk-S46FMY4G.cjs +64 -0
  169. package/dist/chunk-S46FMY4G.cjs.map +1 -0
  170. package/dist/chunk-S6BWQKHJ.cjs +116 -0
  171. package/dist/chunk-S6BWQKHJ.cjs.map +1 -0
  172. package/dist/{chunk-3YWQQ3OG.cjs → chunk-SFTI6QFB.cjs} +13 -7
  173. package/dist/chunk-SFTI6QFB.cjs.map +1 -0
  174. package/dist/{chunk-7YXL4FKN.cjs → chunk-SNP577FA.cjs} +12 -6
  175. package/dist/chunk-SNP577FA.cjs.map +1 -0
  176. package/dist/{chunk-PPQF7LTS.cjs → chunk-SUVM3S2T.cjs} +15 -9
  177. package/dist/chunk-SUVM3S2T.cjs.map +1 -0
  178. package/dist/chunk-SYZ5OFNT.js +114 -0
  179. package/dist/chunk-SYZ5OFNT.js.map +1 -0
  180. package/dist/{chunk-FRLSKIUI.cjs → chunk-SZBW4EE2.cjs} +6 -6
  181. package/dist/{chunk-FRLSKIUI.cjs.map → chunk-SZBW4EE2.cjs.map} +1 -1
  182. package/dist/{chunk-G66EP527.js → chunk-TBHJQCAE.js} +9 -4
  183. package/dist/chunk-TBHJQCAE.js.map +1 -0
  184. package/dist/{chunk-EYIPM2XB.cjs → chunk-U3E5YMLO.cjs} +4 -4
  185. package/dist/{chunk-EYIPM2XB.cjs.map → chunk-U3E5YMLO.cjs.map} +1 -1
  186. package/dist/{chunk-34GM6NXB.js → chunk-UVX733BX.js} +10 -4
  187. package/dist/chunk-UVX733BX.js.map +1 -0
  188. package/dist/{chunk-FMS5PNM2.cjs → chunk-V6FT3RTU.cjs} +8 -3
  189. package/dist/chunk-V6FT3RTU.cjs.map +1 -0
  190. package/dist/{chunk-35MODDCL.cjs → chunk-VB56OVFM.cjs} +59 -111
  191. package/dist/chunk-VB56OVFM.cjs.map +1 -0
  192. package/dist/{chunk-5XWVWFTC.js → chunk-WQ7NNIJ3.js} +4 -4
  193. package/dist/{chunk-5XWVWFTC.js.map → chunk-WQ7NNIJ3.js.map} +1 -1
  194. package/dist/{chunk-DHOVQ2TW.js → chunk-WUFODWZV.js} +3 -3
  195. package/dist/{chunk-DHOVQ2TW.js.map → chunk-WUFODWZV.js.map} +1 -1
  196. package/dist/{chunk-3KEVPUSX.cjs → chunk-WUJ53PP7.cjs} +17 -3
  197. package/dist/chunk-WUJ53PP7.cjs.map +1 -0
  198. package/dist/chunk-YDOSWWE4.cjs +419 -0
  199. package/dist/chunk-YDOSWWE4.cjs.map +1 -0
  200. package/dist/chunk-YGEJDWGG.js +19 -0
  201. package/dist/chunk-YGEJDWGG.js.map +1 -0
  202. package/dist/constants/index.cjs +16 -164
  203. package/dist/constants/index.cjs.map +1 -1
  204. package/dist/constants/index.d.cts +14 -1
  205. package/dist/constants/index.d.ts +14 -1
  206. package/dist/constants/index.js +2 -163
  207. package/dist/constants/index.js.map +1 -1
  208. package/dist/createFetchClient-BHAsPDgF.d.cts +86 -0
  209. package/dist/createFetchClient-CFIwc6Lh.d.ts +86 -0
  210. package/dist/{createGenericFetchClient-Df_wFqT8.d.cts → createGenericFetchClient-JcbIIqwF.d.cts} +1 -1
  211. package/dist/{createGenericFetchClient-Sl1DH71J.d.ts → createGenericFetchClient-ZGG5wbAC.d.ts} +1 -1
  212. package/dist/{createOpenapiFetchClient-GZxZgYHd.d.cts → createOpenapiFetchClient-CduEua6F.d.cts} +2 -2
  213. package/dist/{createOpenapiFetchClient-BSy6dVM5.d.ts → createOpenapiFetchClient-wLlVgp3k.d.ts} +2 -2
  214. package/dist/dataScience/index.cjs +6 -5
  215. package/dist/dataScience/index.d.cts +8 -6
  216. package/dist/dataScience/index.d.ts +8 -6
  217. package/dist/dataScience/index.js +4 -3
  218. package/dist/dataScience/types.d.cts +2172 -2
  219. package/dist/dataScience/types.d.ts +2172 -2
  220. package/dist/domain/permissions/index.cjs +3 -3
  221. package/dist/domain/permissions/index.d.cts +5 -4
  222. package/dist/domain/permissions/index.d.ts +5 -4
  223. package/dist/domain/permissions/index.js +1 -1
  224. package/dist/editor/index.cjs +4 -4
  225. package/dist/editor/index.d.cts +6 -3
  226. package/dist/editor/index.d.ts +6 -3
  227. package/dist/editor/index.js +3 -3
  228. package/dist/editor/types.d.cts +2 -2
  229. package/dist/editor/types.d.ts +2 -2
  230. package/dist/encryption/index.cjs +3 -3
  231. package/dist/encryption/index.d.cts +6 -4
  232. package/dist/encryption/index.d.ts +6 -4
  233. package/dist/encryption/index.js +2 -2
  234. package/dist/encryption/types.d.cts +4 -3
  235. package/dist/encryption/types.d.ts +4 -3
  236. package/dist/import/index.cjs +4 -4
  237. package/dist/import/index.d.cts +6 -3
  238. package/dist/import/index.d.ts +6 -3
  239. package/dist/import/index.js +3 -3
  240. package/dist/index.cjs +228 -135
  241. package/dist/index.cjs.map +1 -1
  242. package/dist/index.d.cts +952 -463
  243. package/dist/index.d.ts +952 -463
  244. package/dist/index.js +98 -46
  245. package/dist/index.js.map +1 -1
  246. package/dist/management/index.cjs +5 -5
  247. package/dist/management/index.d.cts +62 -69
  248. package/dist/management/index.d.ts +62 -69
  249. package/dist/management/index.js +3 -3
  250. package/dist/management/types.d.cts +3 -3
  251. package/dist/management/types.d.ts +3 -3
  252. package/dist/metastore/index.cjs +4 -4
  253. package/dist/metastore/index.d.cts +6 -7
  254. package/dist/metastore/index.d.ts +6 -7
  255. package/dist/metastore/index.js +3 -3
  256. package/dist/metastore/types.d.cts +2 -2
  257. package/dist/metastore/types.d.ts +2 -2
  258. package/dist/notifications/index.cjs +5 -5
  259. package/dist/notifications/index.d.cts +4 -3
  260. package/dist/notifications/index.d.ts +4 -3
  261. package/dist/notifications/index.js +4 -4
  262. package/dist/notifications/types.d.cts +2 -2
  263. package/dist/notifications/types.d.ts +2 -2
  264. package/dist/oauth/index.cjs +4 -4
  265. package/dist/oauth/index.d.cts +3 -2
  266. package/dist/oauth/index.d.ts +3 -2
  267. package/dist/oauth/index.js +3 -3
  268. package/dist/oauth/types.d.cts +1 -1
  269. package/dist/oauth/types.d.ts +1 -1
  270. package/dist/omnisearch/index.cjs +14 -0
  271. package/dist/omnisearch/index.cjs.map +1 -0
  272. package/dist/omnisearch/index.d.cts +32 -0
  273. package/dist/omnisearch/index.d.ts +32 -0
  274. package/dist/omnisearch/index.js +5 -0
  275. package/dist/omnisearch/index.js.map +1 -0
  276. package/dist/omnisearch/types.cjs +4 -0
  277. package/dist/omnisearch/types.cjs.map +1 -0
  278. package/dist/omnisearch/types.d.cts +3 -0
  279. package/dist/omnisearch/types.d.ts +3 -0
  280. package/dist/omnisearch/types.js +3 -0
  281. package/dist/omnisearch/types.js.map +1 -0
  282. package/dist/{project-DmC8vKnh.d.ts → project-Dmr-zrQG.d.ts} +2 -2
  283. package/dist/{project-CSJzVylj.d.cts → project-DstzWVMN.d.cts} +2 -2
  284. package/dist/queryService/index.cjs +4 -4
  285. package/dist/queryService/index.d.cts +4 -3
  286. package/dist/queryService/index.d.ts +4 -3
  287. package/dist/queryService/index.js +3 -3
  288. package/dist/queryService/types.d.cts +2 -2
  289. package/dist/queryService/types.d.ts +2 -2
  290. package/dist/queue/index.cjs +4 -4
  291. package/dist/queue/index.d.cts +9 -3
  292. package/dist/queue/index.d.ts +9 -3
  293. package/dist/queue/index.js +3 -3
  294. package/dist/queue/types.d.cts +2 -2
  295. package/dist/queue/types.d.ts +2 -2
  296. package/dist/scheduler/index.cjs +5 -5
  297. package/dist/scheduler/index.d.cts +3 -2
  298. package/dist/scheduler/index.d.ts +3 -2
  299. package/dist/scheduler/index.js +4 -4
  300. package/dist/scheduler/types.d.cts +3 -3
  301. package/dist/scheduler/types.d.ts +3 -3
  302. package/dist/sdk/configurations/index.cjs +3 -3
  303. package/dist/sdk/configurations/index.d.cts +9 -8
  304. package/dist/sdk/configurations/index.d.ts +9 -8
  305. package/dist/sdk/configurations/index.js +2 -2
  306. package/dist/sdk/queryService/index.cjs +16 -0
  307. package/dist/sdk/queryService/index.cjs.map +1 -0
  308. package/dist/sdk/queryService/index.d.cts +35 -0
  309. package/dist/sdk/queryService/index.d.ts +35 -0
  310. package/dist/sdk/queryService/index.js +7 -0
  311. package/dist/sdk/queryService/index.js.map +1 -0
  312. package/dist/sdk/semanticLayer/index.cjs +18 -14
  313. package/dist/sdk/semanticLayer/index.d.cts +26 -11
  314. package/dist/sdk/semanticLayer/index.d.ts +26 -11
  315. package/dist/sdk/semanticLayer/index.js +2 -2
  316. package/dist/sdk/semanticLayer/types.d.cts +26 -6
  317. package/dist/sdk/semanticLayer/types.d.ts +26 -6
  318. package/dist/sdk/storage/index.cjs +12 -11
  319. package/dist/sdk/storage/index.d.cts +9 -8
  320. package/dist/sdk/storage/index.d.ts +9 -8
  321. package/dist/sdk/storage/index.js +2 -1
  322. package/dist/sdk/tag/index.cjs +3 -3
  323. package/dist/sdk/tag/index.d.cts +4 -4
  324. package/dist/sdk/tag/index.d.ts +4 -4
  325. package/dist/sdk/tag/index.js +2 -2
  326. package/dist/sdk/tag/types.d.cts +11 -5
  327. package/dist/sdk/tag/types.d.ts +11 -5
  328. package/dist/sdk/vault/index.cjs +8 -8
  329. package/dist/sdk/vault/index.d.cts +6 -5
  330. package/dist/sdk/vault/index.d.ts +6 -5
  331. package/dist/sdk/vault/index.js +2 -2
  332. package/dist/status/index.cjs +2 -2
  333. package/dist/status/index.d.cts +1 -1
  334. package/dist/status/index.d.ts +1 -1
  335. package/dist/status/index.js +1 -1
  336. package/dist/storage/index.cjs +59 -12
  337. package/dist/storage/index.d.cts +21 -22
  338. package/dist/storage/index.d.ts +21 -22
  339. package/dist/storage/index.js +8 -5
  340. package/dist/storage/types.d.cts +741 -390
  341. package/dist/storage/types.d.ts +741 -390
  342. package/dist/{storageClient-B4OooGB9.d.ts → storageClient-BAid0vi2.d.cts} +482 -250
  343. package/dist/{storageClient-CdFqTbn3.d.cts → storageClient-BX50Attd.d.ts} +482 -250
  344. package/dist/{storageSdk-DA7U-1Hy.d.ts → storageSdk-BS5982c_.d.cts} +23 -16
  345. package/dist/{storageSdk-U45zMbUb.d.cts → storageSdk-BeJcnEIO.d.ts} +23 -16
  346. package/dist/stream/index.cjs +4 -4
  347. package/dist/stream/index.d.cts +4 -3
  348. package/dist/stream/index.d.ts +4 -3
  349. package/dist/stream/index.js +3 -3
  350. package/dist/stream/types.d.cts +2 -2
  351. package/dist/stream/types.d.ts +2 -2
  352. package/dist/syncActions/index.cjs +9 -4
  353. package/dist/syncActions/index.d.cts +55 -80
  354. package/dist/syncActions/index.d.ts +55 -80
  355. package/dist/syncActions/index.js +8 -3
  356. package/dist/syncActions/types.d.cts +387 -25
  357. package/dist/syncActions/types.d.ts +387 -25
  358. package/dist/telemetry/index.cjs +4 -4
  359. package/dist/telemetry/index.d.cts +2 -2
  360. package/dist/telemetry/index.d.ts +2 -2
  361. package/dist/telemetry/index.js +3 -3
  362. package/dist/{types-DbAO-Tgk.d.ts → types-BALUbGA5.d.ts} +10 -2
  363. package/dist/{types-B30y9Lhc.d.ts → types-BCBF_5cU.d.cts} +186 -4
  364. package/dist/{types-B-vmDlWB.d.cts → types-BPKQRahf.d.cts} +3 -3
  365. package/dist/types-BcaALDYY.d.cts +2130 -0
  366. package/dist/{types-BfuVN8Pk.d.cts → types-Bom93Zx2.d.cts} +3 -3
  367. package/dist/types-Bp8d9PJf.d.cts +607 -0
  368. package/dist/types-BsejtGjZ.d.ts +2130 -0
  369. package/dist/{types-DeoA45gz.d.cts → types-BuEkMmKT.d.ts} +491 -308
  370. package/dist/{types-WGZN6XLN.d.cts → types-C5DdOzx8.d.cts} +1 -1
  371. package/dist/{types-D-MuJHwl.d.cts → types-CFeOCzzg.d.cts} +3 -2
  372. package/dist/{types-DpUcInCX.d.ts → types-COti0FGo.d.ts} +3 -3
  373. package/dist/{types-Brc6lq7i.d.ts → types-C_jxWM7A.d.ts} +1 -1
  374. package/dist/{types-CM1zHzgm.d.ts → types-Cffam0Nw.d.ts} +856 -36
  375. package/dist/{types-BieLFMW1.d.cts → types-CfzHhZVG.d.ts} +3 -3
  376. package/dist/{types-DYnHIm7m.d.cts → types-CniF_D1P.d.cts} +3 -3
  377. package/dist/{types-BEnE7LHB.d.cts → types-CwAYn1EJ.d.cts} +10 -2
  378. package/dist/{types-DgSyBwP3.d.cts → types-CxAH36ip.d.cts} +3 -3
  379. package/dist/{types-DwMezEHT.d.ts → types-D2qGShlS.d.ts} +15 -3
  380. package/dist/{types-CSZoV4lM.d.cts → types-D6dnnju2.d.ts} +186 -4
  381. package/dist/{types-CrLjE5xf.d.ts → types-DM1glEQI.d.ts} +3 -3
  382. package/dist/{types-Hj1CaKtV.d.ts → types-DNyZ0z3L.d.cts} +491 -308
  383. package/dist/types-DOc5_aYZ.d.ts +607 -0
  384. package/dist/{types-DHXZZKb3.d.ts → types-Dpwb4dD0.d.ts} +3 -3
  385. package/dist/{types-YzkNUuYo.d.ts → types-DrGnvgkB.d.ts} +3 -3
  386. package/dist/{types-BhlJw2f2.d.ts → types-EZBBpiFU.d.ts} +886 -114
  387. package/dist/{types-DNg4M5JV.d.cts → types-UwuKN9Kx.d.cts} +1 -1
  388. package/dist/{types-DNg4M5JV.d.ts → types-UwuKN9Kx.d.ts} +1 -1
  389. package/dist/{types-BX1xr4CX.d.cts → types-Y1ynT2PH.d.cts} +15 -3
  390. package/dist/{types-DVhcwrwN.d.cts → types-cxk-0ftN.d.cts} +886 -114
  391. package/dist/{types-DeS-oVdn.d.ts → types-ebolWqn1.d.ts} +3 -2
  392. package/dist/{types-gcShAmmi.d.cts → types-f8dUjMX4.d.cts} +1 -1
  393. package/dist/{types-gcShAmmi.d.ts → types-f8dUjMX4.d.ts} +1 -1
  394. package/dist/{types-CiJ5ULtS.d.ts → types-nt7I4XNc.d.cts} +3 -3
  395. package/dist/{types-Cgh3jqrV.d.cts → types-qvle4Ydu.d.cts} +856 -36
  396. package/dist/vault/index.cjs +4 -4
  397. package/dist/vault/index.d.cts +3 -2
  398. package/dist/vault/index.d.ts +3 -2
  399. package/dist/vault/index.js +3 -3
  400. package/dist/vault/types.d.cts +3 -3
  401. package/dist/vault/types.d.ts +3 -3
  402. package/package.json +71 -3
  403. package/surface/ai.md +1 -0
  404. package/surface/apps.md +32 -0
  405. package/surface/auth.md +6 -4
  406. package/surface/chat.md +2 -1
  407. package/surface/dataScience.md +1 -0
  408. package/surface/editor.md +1 -0
  409. package/surface/encryption.md +1 -0
  410. package/surface/import.md +1 -0
  411. package/surface/kaiAgent.md +2 -1
  412. package/surface/management.md +17 -16
  413. package/surface/metastore.md +2 -1
  414. package/surface/notifications.md +1 -0
  415. package/surface/oauth.md +1 -0
  416. package/surface/omnisearch.md +9 -0
  417. package/surface/queryService.md +1 -0
  418. package/surface/queue.md +8 -7
  419. package/surface/scheduler.md +1 -0
  420. package/surface/sdk.md +17 -17
  421. package/surface/storage.md +125 -88
  422. package/surface/stream.md +1 -0
  423. package/surface/syncActions.md +19 -7
  424. package/surface/vault.md +1 -0
  425. package/dist/chunk-34GM6NXB.js.map +0 -1
  426. package/dist/chunk-35MODDCL.cjs.map +0 -1
  427. package/dist/chunk-3BFPNM2J.js.map +0 -1
  428. package/dist/chunk-3FZHFTLG.cjs +0 -12
  429. package/dist/chunk-3FZHFTLG.cjs.map +0 -1
  430. package/dist/chunk-3KEVPUSX.cjs.map +0 -1
  431. package/dist/chunk-3MTY6I2W.js +0 -192
  432. package/dist/chunk-3MTY6I2W.js.map +0 -1
  433. package/dist/chunk-3YWQQ3OG.cjs.map +0 -1
  434. package/dist/chunk-4VVF2PIX.js.map +0 -1
  435. package/dist/chunk-77LILJYX.js.map +0 -1
  436. package/dist/chunk-7R22VKV7.cjs.map +0 -1
  437. package/dist/chunk-7RO6PKZ4.cjs +0 -16
  438. package/dist/chunk-7YXL4FKN.cjs.map +0 -1
  439. package/dist/chunk-7Z4MU7ZB.js.map +0 -1
  440. package/dist/chunk-AFJGNBVM.cjs.map +0 -1
  441. package/dist/chunk-AXEANGGK.js +0 -226
  442. package/dist/chunk-AXEANGGK.js.map +0 -1
  443. package/dist/chunk-BR6WZE3O.cjs.map +0 -1
  444. package/dist/chunk-BZA3FGO6.js.map +0 -1
  445. package/dist/chunk-CV2JGHBN.js.map +0 -1
  446. package/dist/chunk-CWUQ6ZAO.cjs.map +0 -1
  447. package/dist/chunk-D3ZZQIY2.cjs.map +0 -1
  448. package/dist/chunk-D6O5C67S.js.map +0 -1
  449. package/dist/chunk-DRNOCC6W.cjs.map +0 -1
  450. package/dist/chunk-FMS5PNM2.cjs.map +0 -1
  451. package/dist/chunk-G66EP527.js.map +0 -1
  452. package/dist/chunk-GF4XZK5N.cjs.map +0 -1
  453. package/dist/chunk-GM3AKU5T.js +0 -10
  454. package/dist/chunk-GM3AKU5T.js.map +0 -1
  455. package/dist/chunk-HMCZUHR7.js.map +0 -1
  456. package/dist/chunk-HY7J3OD3.cjs.map +0 -1
  457. package/dist/chunk-IDWGBCSB.cjs.map +0 -1
  458. package/dist/chunk-J3NLKXQ5.cjs.map +0 -1
  459. package/dist/chunk-KH6BHTXN.js.map +0 -1
  460. package/dist/chunk-KUYVBCUM.cjs.map +0 -1
  461. package/dist/chunk-L262THNK.cjs +0 -253
  462. package/dist/chunk-L262THNK.cjs.map +0 -1
  463. package/dist/chunk-LD3JERYP.js.map +0 -1
  464. package/dist/chunk-LIXSIM3H.cjs.map +0 -1
  465. package/dist/chunk-MMOAH3EH.cjs.map +0 -1
  466. package/dist/chunk-NVRVPWNY.js.map +0 -1
  467. package/dist/chunk-OUSPQ55W.js.map +0 -1
  468. package/dist/chunk-PPQF7LTS.cjs.map +0 -1
  469. package/dist/chunk-QZKDBVAU.cjs +0 -1482
  470. package/dist/chunk-QZKDBVAU.cjs.map +0 -1
  471. package/dist/chunk-S4JK7DKM.js.map +0 -1
  472. package/dist/chunk-SJZ66FD5.js.map +0 -1
  473. package/dist/chunk-T242YFMT.cjs.map +0 -1
  474. package/dist/chunk-UABYNGBZ.js.map +0 -1
  475. package/dist/chunk-UP5SEEYZ.js.map +0 -1
  476. package/dist/chunk-UWQUHP3T.cjs.map +0 -1
  477. package/dist/chunk-WFXW4XU3.js.map +0 -1
  478. package/dist/chunk-XHDYLUM4.js.map +0 -1
  479. package/dist/chunk-XIIER7QQ.js.map +0 -1
  480. package/dist/chunk-XKIENBIE.js.map +0 -1
  481. package/dist/chunk-XMC355U2.js.map +0 -1
  482. package/dist/chunk-Y44G2VDC.cjs +0 -214
  483. package/dist/chunk-Y44G2VDC.cjs.map +0 -1
  484. package/dist/utils-B_SOM1XR.d.ts +0 -3051
  485. package/dist/utils-DK7uJcmR.d.cts +0 -3051
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkFMS5PNM2_cjs = require('./chunk-FMS5PNM2.cjs');
4
- var chunk7RO6PKZ4_cjs = require('./chunk-7RO6PKZ4.cjs');
5
- var chunkMMOAH3EH_cjs = require('./chunk-MMOAH3EH.cjs');
3
+ var chunkV6FT3RTU_cjs = require('./chunk-V6FT3RTU.cjs');
4
+ var chunkK3BLXPLA_cjs = require('./chunk-K3BLXPLA.cjs');
5
+ var chunkHUQ5ATIL_cjs = require('./chunk-HUQ5ATIL.cjs');
6
6
 
7
7
  // src/clients/scheduler/schedulerClient.ts
8
8
  var createSchedulerClient = ({ baseUrl, middlewares, auth }) => {
9
- const client = chunkMMOAH3EH_cjs.createOpenapiFetchClient({
9
+ const client = chunkHUQ5ATIL_cjs.createOpenapiFetchClient({
10
10
  baseUrl,
11
11
  middlewares,
12
- headers: chunk7RO6PKZ4_cjs.createAuthHeaders(auth)
12
+ headers: chunkK3BLXPLA_cjs.createAuthHeaders(auth)
13
13
  });
14
+ const genericClient = chunkHUQ5ATIL_cjs.createGenericFetchClient({ baseUrl, middlewares });
14
15
  const getSchedules = async (query, signal) => {
15
16
  const { data } = await client.get("/schedules", { query }, { signal });
16
17
  return data;
@@ -41,13 +42,18 @@ var createSchedulerClient = ({ baseUrl, middlewares, auth }) => {
41
42
  );
42
43
  };
43
44
  const deleteSchedulesForConfigurations = async (configurationIds, signal) => {
44
- await chunkFMS5PNM2_cjs.concurrent({
45
+ await chunkV6FT3RTU_cjs.concurrent({
45
46
  items: configurationIds,
46
47
  process: async (configurationId) => deleteSchedulesForConfiguration(configurationId, signal),
47
48
  concurrency: 3
48
49
  });
49
50
  };
51
+ const healthCheck = async (signal) => {
52
+ const { data } = await genericClient.get("/health-check", {}, { signal });
53
+ return data;
54
+ };
50
55
  return {
56
+ healthCheck,
51
57
  getSchedules,
52
58
  activateSchedule,
53
59
  getSchedule,
@@ -59,5 +65,5 @@ var createSchedulerClient = ({ baseUrl, middlewares, auth }) => {
59
65
  };
60
66
 
61
67
  exports.createSchedulerClient = createSchedulerClient;
62
- //# sourceMappingURL=chunk-AFJGNBVM.cjs.map
63
- //# sourceMappingURL=chunk-AFJGNBVM.cjs.map
68
+ //# sourceMappingURL=chunk-AJ3SCWUB.cjs.map
69
+ //# sourceMappingURL=chunk-AJ3SCWUB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/scheduler/schedulerClient.ts"],"names":["createOpenapiFetchClient","createAuthHeaders","createGenericFetchClient","concurrent"],"mappings":";;;;;;;AAaO,IAAM,wBAAwB,CAAC,EAAE,OAAA,EAAS,WAAA,EAAa,MAAK,KAAyB;AAC1F,EAAA,MAAM,SAASA,0CAAA,CAAgC;AAAA,IAC7C,OAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,EAASC,oCAAkB,IAAI;AAAA,GAChC,CAAA;AACD,EAAA,MAAM,aAAA,GAAgBC,0CAAA,CAAyB,EAAE,OAAA,EAAS,aAAa,CAAA;AAEvE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,EAA2B,MAAA,KAAyB;AAC9E,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAI,YAAA,EAAc,EAAE,KAAA,EAAM,EAAG,EAAE,MAAA,EAAQ,CAAA;AACrE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAO,IAAA,EAA4B,MAAA,KAAyB;AACnF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,EAAE,IAAA,EAAK,EAAG,EAAE,MAAA,EAAQ,CAAA;AACrE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,UAAA,EAAwC,MAAA,KAAyB;AAC1F,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,yBAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,UAAA,EAAW,EAAE;AAAA,MACvB,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OAAO,UAAA,EAAwC,MAAA,KAAyB;AAC7F,IAAA,MAAM,MAAA,CAAO,MAAA,CAAO,yBAAA,EAA2B,EAAE,IAAA,EAAM,EAAE,UAAA,EAAW,EAAE,EAAG,EAAE,MAAA,EAAQ,CAAA;AAAA,EACrF,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,OAC3B,UAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,MAAA,CAAO,IAAA,CAAK,sCAAA,EAAwC,EAAE,IAAA,EAAM,EAAE,UAAA,EAAW,EAAE,EAAG,EAAE,MAAA,EAAQ,CAAA;AAAA,EAChG,CAAA;AAEA,EAAA,MAAM,+BAAA,GAAkC,OACtC,eAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,MAAA,CAAO,MAAA;AAAA,MACX,mCAAA;AAAA,MACA,EAAE,IAAA,EAAM,EAAE,eAAA,EAAgB,EAAE;AAAA,MAC5B,EAAE,MAAA;AAAO,KACX;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gCAAA,GAAmC,OACvC,gBAAA,EACA,MAAA,KACG;AACH,IAAA,MAAMC,4BAAA,CAAW;AAAA,MACf,KAAA,EAAO,gBAAA;AAAA,MACP,OAAA,EAAS,OAAO,eAAA,KAAoB,+BAAA,CAAgC,iBAAiB,MAAM,CAAA;AAAA,MAC3F,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,KAAyB;AAClD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,aAAA,CAAc,GAAA,CAAI,eAAA,EAAiB,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAExE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,+BAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-AJ3SCWUB.cjs","sourcesContent":["import { createGenericFetchClient, createOpenapiFetchClient } from '../../fetchClient';\nimport { concurrent } from '../../utils';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n ActivateScheduleBody,\n ConfigurationPath,\n GetSchedulesQuery,\n SchedulePath,\n} from './types';\n\nexport const createSchedulerClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n const genericClient = createGenericFetchClient({ baseUrl, middlewares });\n\n const getSchedules = async (query?: GetSchedulesQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/schedules', { query }, { signal });\n return data;\n };\n\n const activateSchedule = async (body: ActivateScheduleBody, signal?: AbortSignal) => {\n const { data } = await client.post('/schedules', { body }, { signal });\n return data;\n };\n\n const getSchedule = async (scheduleId: SchedulePath['scheduleId'], signal?: AbortSignal) => {\n const { data } = await client.get(\n '/schedules/{scheduleId}',\n { path: { scheduleId } },\n { signal },\n );\n return data;\n };\n\n const deleteSchedule = async (scheduleId: SchedulePath['scheduleId'], signal?: AbortSignal) => {\n await client.delete('/schedules/{scheduleId}', { path: { scheduleId } }, { signal });\n };\n\n const refreshScheduleToken = async (\n scheduleId: SchedulePath['scheduleId'],\n signal?: AbortSignal,\n ) => {\n await client.post('/schedules/{scheduleId}/refreshToken', { path: { scheduleId } }, { signal });\n };\n\n const deleteSchedulesForConfiguration = async (\n configurationId: ConfigurationPath['configurationId'],\n signal?: AbortSignal,\n ) => {\n await client.delete(\n '/configurations/{configurationId}',\n { path: { configurationId } },\n { signal },\n );\n };\n\n const deleteSchedulesForConfigurations = async (\n configurationIds: ConfigurationPath['configurationId'][],\n signal?: AbortSignal,\n ) => {\n await concurrent({\n items: configurationIds,\n process: async (configurationId) => deleteSchedulesForConfiguration(configurationId, signal),\n concurrency: 3,\n });\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getSchedules,\n activateSchedule,\n getSchedule,\n deleteSchedule,\n refreshScheduleToken,\n deleteSchedulesForConfiguration,\n deleteSchedulesForConfigurations,\n };\n};\n"]}
@@ -8,13 +8,13 @@ var hasFeature = (token, ...feature) => {
8
8
  };
9
9
  var hasAdminFeature = (token, ...feature) => {
10
10
  if (feature.length === 0) return false;
11
- const adminFeatureSet = new Set(token.admin.features);
11
+ const adminFeatureSet = new Set(token.admin?.features ?? []);
12
12
  return feature.every((x) => adminFeatureSet.has(x));
13
13
  };
14
14
  var createProject = ({ sapiToken }) => {
15
15
  const { owner, admin } = sapiToken;
16
16
  const projectFeatureSet = new Set(owner.features);
17
- const adminFeatureSet = new Set(admin.features);
17
+ const adminFeatureSet = new Set(admin?.features ?? []);
18
18
  const hasFeature2 = (...feature) => {
19
19
  if (feature.length === 0) return false;
20
20
  return feature.every((x) => projectFeatureSet.has(x));
@@ -39,5 +39,5 @@ var createProject = ({ sapiToken }) => {
39
39
  exports.createProject = createProject;
40
40
  exports.hasAdminFeature = hasAdminFeature;
41
41
  exports.hasFeature = hasFeature;
42
- //# sourceMappingURL=chunk-GF4XZK5N.cjs.map
43
- //# sourceMappingURL=chunk-GF4XZK5N.cjs.map
42
+ //# sourceMappingURL=chunk-AXYNFDUI.cjs.map
43
+ //# sourceMappingURL=chunk-AXYNFDUI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/project.ts"],"names":["hasFeature","hasAdminFeature"],"mappings":";;;AAMO,IAAM,UAAA,GAAa,CAAC,KAAA,EAAA,GAAwB,OAAA,KAA+B;AAChF,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,KAAA,CAAM,MAAM,QAAQ,CAAA;AACtD,EAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,iBAAA,CAAkB,GAAA,CAAI,CAAC,CAAC,CAAA;AACtD;AAEO,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAA,GAAwB,OAAA,KAA+B;AACrF,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,EAAA,MAAM,kBAAkB,IAAI,GAAA,CAAI,MAAM,KAAA,EAAO,QAAA,IAAY,EAAE,CAAA;AAC3D,EAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAC,CAAA;AACpD;AAEO,IAAM,aAAA,GAAgB,CAAC,EAAE,SAAA,EAAU,KAAe;AACvD,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,SAAA;AACzB,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA;AAGhD,EAAA,MAAM,kBAAkB,IAAI,GAAA,CAAI,KAAA,EAAO,QAAA,IAAY,EAAE,CAAA;AAErD,EAAA,MAAMA,WAAAA,GAAa,IAAI,OAAA,KAAsB;AAC3C,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,IAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,iBAAA,CAAkB,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACtD,CAAA;AAEA,EAAA,MAAMC,gBAAAA,GAAkB,IAAI,OAAA,KAAsB;AAChD,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,IAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACpD,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,OAAA,KAA8B;AAChD,IAAA,IAAI,OAAA,KAAY,UAAA,EAAY,OAAO,KAAA,CAAM,WAAA;AACzC,IAAA,IAAI,OAAA,KAAY,WAAA,EAAa,OAAO,KAAA,CAAM,YAAA;AAC1C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,UAAA,EAAAD,WAAAA;AAAA,IACA,eAAA,EAAAC,gBAAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-AXYNFDUI.cjs","sourcesContent":["import type { Backend, StorageToken } from '../clients/storage/tokens/types';\n\ntype Options = {\n sapiToken: StorageToken;\n};\n\nexport const hasFeature = (token: StorageToken, ...feature: string[]): boolean => {\n if (feature.length === 0) return false;\n const projectFeatureSet = new Set(token.owner.features);\n return feature.every((x) => projectFeatureSet.has(x));\n};\n\nexport const hasAdminFeature = (token: StorageToken, ...feature: string[]): boolean => {\n if (feature.length === 0) return false;\n const adminFeatureSet = new Set(token.admin?.features ?? []);\n return feature.every((x) => adminFeatureSet.has(x));\n};\n\nexport const createProject = ({ sapiToken }: Options) => {\n const { owner, admin } = sapiToken;\n const projectFeatureSet = new Set(owner.features);\n // `verify` omits `admin` for a token created via `POST /v2/storage/tokens`, even though the type\n // declares it: an admin-less token holds no admin features, rather than failing to build at all.\n const adminFeatureSet = new Set(admin?.features ?? []);\n\n const hasFeature = (...feature: string[]) => {\n if (feature.length === 0) return false;\n return feature.every((x) => projectFeatureSet.has(x));\n };\n\n const hasAdminFeature = (...feature: string[]) => {\n if (feature.length === 0) return false;\n return feature.every((x) => adminFeatureSet.has(x));\n };\n\n const hasBackend = (backend: Backend): boolean => {\n if (backend === 'bigquery') return owner.hasBigquery;\n if (backend === 'snowflake') return owner.hasSnowflake;\n return false;\n };\n\n return {\n hasFeature,\n hasAdminFeature,\n hasBackend,\n sapiToken,\n };\n};\n\nexport type Project = ReturnType<typeof createProject>;\n"]}
@@ -1,8 +1,28 @@
1
1
  import { generateUUID } from './chunk-T526LPBK.js';
2
- import { concurrent } from './chunk-SJZ66FD5.js';
2
+ import { concurrent } from './chunk-ERZEQ5JR.js';
3
3
  import { z } from 'zod';
4
4
 
5
5
  // src/sdks/semanticLayer/semanticLayerSdk.ts
6
+ var SemanticLayerCascadeDeleteError = class extends AggregateError {
7
+ modelUUID;
8
+ deletedChildren;
9
+ failedChildren;
10
+ constructor({
11
+ modelUUID,
12
+ deletedChildren,
13
+ failedChildren
14
+ }) {
15
+ const total = deletedChildren.length + failedChildren.length;
16
+ super(
17
+ failedChildren.map((failure) => failure.error),
18
+ `The model was kept because ${failedChildren.length} of its ${total} child objects could not be deleted (${deletedChildren.length} deleted).`
19
+ );
20
+ this.name = "SemanticLayerCascadeDeleteError";
21
+ this.modelUUID = modelUUID;
22
+ this.deletedChildren = deletedChildren;
23
+ this.failedChildren = failedChildren;
24
+ }
25
+ };
6
26
  var SEMANTIC_OBJECT_TYPE = {
7
27
  MODEL: "semantic-model",
8
28
  DATASET: "semantic-dataset",
@@ -148,16 +168,47 @@ var createSemanticLayerSdk = ({ metastoreClient }) => {
148
168
  };
149
169
  const deleteModel = async (modelUUID) => {
150
170
  const children = await listModelChildren(modelUUID);
151
- await concurrent({
171
+ const outcomes = await concurrent({
152
172
  items: children,
153
- process: async ({ objectType, objectUUID }) => deleteObject(objectType, objectUUID),
173
+ process: async (child) => {
174
+ try {
175
+ await deleteObject(child.objectType, child.objectUUID);
176
+ return { ok: true, child };
177
+ } catch (error) {
178
+ return { ok: false, child, error };
179
+ }
180
+ },
154
181
  concurrency: WRITE_CONCURRENCY
155
182
  });
183
+ const deletedChildren = [];
184
+ const failedChildren = [];
185
+ for (const outcome of outcomes) {
186
+ if (outcome.ok) deletedChildren.push(outcome.child);
187
+ else failedChildren.push({ ...outcome.child, error: outcome.error });
188
+ }
189
+ if (failedChildren.length > 0) {
190
+ throw new SemanticLayerCascadeDeleteError({ modelUUID, deletedChildren, failedChildren });
191
+ }
156
192
  await metastoreClient.repository.deleteMetaObject({
157
193
  objectType: SEMANTIC_OBJECT_TYPE.MODEL,
158
194
  UUID: modelUUID
159
195
  });
160
196
  };
197
+ const replaceTargetProjects = async (objectType, objectUUID, targetProjectIds) => {
198
+ await metastoreClient.repository.replaceTargetProjects({
199
+ objectType,
200
+ UUID: objectUUID,
201
+ targetProjectIds
202
+ });
203
+ };
204
+ const promoteToOrganizationScope = async (objectType, objectUUID) => {
205
+ const response = await metastoreClient.repository.updateMetaObject({
206
+ objectType,
207
+ UUID: objectUUID,
208
+ scope: "organization"
209
+ });
210
+ return mapObject(response.data);
211
+ };
161
212
  return {
162
213
  // models
163
214
  listModels,
@@ -172,7 +223,10 @@ var createSemanticLayerSdk = ({ metastoreClient }) => {
172
223
  createObjects,
173
224
  createModelTree,
174
225
  updateObject,
175
- deleteObject
226
+ deleteObject,
227
+ // scoping / sharing
228
+ replaceTargetProjects,
229
+ promoteToOrganizationScope
176
230
  };
177
231
  };
178
232
 
@@ -213,6 +267,6 @@ var SEMANTIC_CHILD_OBJECT_SCHEMAS = {
213
267
  "semantic-constraint": semanticConstraintSchema
214
268
  };
215
269
 
216
- export { CONSTRAINT_TYPES, MODEL_CHILD_OBJECT_TYPES, SEMANTIC_CHILD_OBJECT_SCHEMAS, SEMANTIC_OBJECT_TYPE, SQL_DIALECTS, createSemanticLayerSdk, semanticConstraintSchema, semanticDatasetSchema, semanticGlossarySchema, semanticMetricSchema, semanticModelSchema, semanticRelationshipSchema };
217
- //# sourceMappingURL=chunk-UP5SEEYZ.js.map
218
- //# sourceMappingURL=chunk-UP5SEEYZ.js.map
270
+ export { CONSTRAINT_TYPES, MODEL_CHILD_OBJECT_TYPES, SEMANTIC_CHILD_OBJECT_SCHEMAS, SEMANTIC_OBJECT_TYPE, SQL_DIALECTS, SemanticLayerCascadeDeleteError, createSemanticLayerSdk, semanticConstraintSchema, semanticDatasetSchema, semanticGlossarySchema, semanticMetricSchema, semanticModelSchema, semanticRelationshipSchema };
271
+ //# sourceMappingURL=chunk-B45B4AYG.js.map
272
+ //# sourceMappingURL=chunk-B45B4AYG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sdks/semanticLayer/semanticLayerSdk.ts","../src/sdks/semanticLayer/schemas.ts"],"names":[],"mappings":"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","file":"chunk-B45B4AYG.js","sourcesContent":["import { concurrent, generateUUID } from '../../utils';\n\nimport type {\n CreateSemanticObjectMeta,\n MetastoreClient,\n SemanticChildObjectDataMap,\n SemanticChildObjectType,\n SemanticConstraintType,\n SemanticModelChildDeleteFailure,\n SemanticModelChildRef,\n SemanticModelData,\n SemanticObject,\n SemanticObjectMeta,\n SemanticObjectType,\n UpdateSemanticObjectMeta,\n} from './types';\n\n/**\n * Thrown by `deleteModel` when the child cascade partially fails. Every child delete has\n * settled by the time this is thrown — nothing keeps deleting in the background — and the\n * model itself was kept, so the exact remaining state is knowable: `deletedChildren` are gone,\n * `failedChildren` (and the model) still exist. `errors` carries the per-child rejection\n * reasons, AggregateError-style.\n */\nexport class SemanticLayerCascadeDeleteError extends AggregateError {\n readonly modelUUID: string;\n readonly deletedChildren: SemanticModelChildRef[];\n readonly failedChildren: SemanticModelChildDeleteFailure[];\n\n constructor({\n modelUUID,\n deletedChildren,\n failedChildren,\n }: {\n modelUUID: string;\n deletedChildren: SemanticModelChildRef[];\n failedChildren: SemanticModelChildDeleteFailure[];\n }) {\n const total = deletedChildren.length + failedChildren.length;\n super(\n failedChildren.map((failure) => failure.error),\n `The model was kept because ${failedChildren.length} of its ${total} child objects ` +\n `could not be deleted (${deletedChildren.length} deleted).`,\n );\n this.name = 'SemanticLayerCascadeDeleteError';\n this.modelUUID = modelUUID;\n this.deletedChildren = deletedChildren;\n this.failedChildren = failedChildren;\n }\n}\n\nexport const SEMANTIC_OBJECT_TYPE = {\n MODEL: 'semantic-model',\n DATASET: 'semantic-dataset',\n METRIC: 'semantic-metric',\n RELATIONSHIP: 'semantic-relationship',\n GLOSSARY: 'semantic-glossary',\n CONSTRAINT: 'semantic-constraint',\n} as const satisfies Record<string, SemanticObjectType>;\n\n/**\n * `readonly` because this drives `createModelTree`, `listModelChildren` and `deleteModel` —\n * a consumer-side `.push()` would silently change what a cascade delete touches.\n */\nexport const MODEL_CHILD_OBJECT_TYPES: readonly SemanticChildObjectType[] = [\n SEMANTIC_OBJECT_TYPE.DATASET,\n SEMANTIC_OBJECT_TYPE.METRIC,\n SEMANTIC_OBJECT_TYPE.RELATIONSHIP,\n SEMANTIC_OBJECT_TYPE.GLOSSARY,\n SEMANTIC_OBJECT_TYPE.CONSTRAINT,\n] as const;\n\n/**\n * The dialects the metastore accepts, exactly as it spells them. A lowercase value is\n * rejected with `422 value must be one of 'Snowflake', 'BigQuery'`, which surfaces only as a\n * generic \"Validation failed\" — so callers need the real set rather than a bare `string`.\n *\n * `SemanticModelData.sql_dialect` stays `string` for now: narrowing it would break any caller\n * passing a `string` variable, which is a major bump. Validate against this instead.\n */\nexport const SQL_DIALECTS = ['Snowflake', 'BigQuery'] as const;\n\n/** The metastore's constraint kinds. Runtime counterpart to `SemanticConstraintType`. */\nexport const CONSTRAINT_TYPES = [\n 'inequality',\n 'equality',\n 'range',\n 'composition',\n 'exclusion',\n 'temporal',\n 'conditional',\n] as const satisfies readonly SemanticConstraintType[];\n\nconst DEFAULT_BRANCH = 'main';\n\n// The metastore has no bulk endpoint; large semantic-layer inits are written as\n// concurrent single POSTs (the same approach the ai-kit sl-toolkit importer uses).\nconst WRITE_CONCURRENCY = 5;\n\n// The live metastore envelope: `attributes` carries the object's data payload directly,\n// the UUID is the top-level `id`, and revision/branch/audit fields live in `meta`. The\n// legacy wrapper types in clients/metastore/repository/types.ts do not match this shape.\ntype RawSemanticObject<TData> = {\n type: string;\n id: string;\n attributes: TData;\n meta: SemanticObjectMeta;\n};\n\nconst mapObject = <TData>(item: RawSemanticObject<TData>): SemanticObject<TData> => ({\n uuid: item.id,\n data: item.attributes,\n meta: item.meta,\n});\n\nconst deriveOptionalObjectName = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.name === 'string') return data.name;\n if (typeof data.term === 'string') return data.term;\n return undefined;\n};\n\nconst deriveObjectName = (data: Record<string, unknown>) =>\n deriveOptionalObjectName(data) ?? generateUUID();\n\n/**\n * The label a UI shows for an object, as opposed to the identifier it is addressed by.\n *\n * Constraints carry an optional `displayName`; kbc-ui's constraint tables already render\n * `displayName ?? name`, so a confirmation listing what a cascade delete would destroy has to\n * agree with them or it names objects the user can't find on screen.\n *\n * Deliberately **not** used for lookup: `displayName` is optional and not unique, so matching on\n * it would make `findObjectsByName` ambiguous for callers that resolve a write target by name.\n */\nconst deriveObjectLabel = (data: Record<string, unknown>): string | undefined => {\n if (typeof data.displayName === 'string' && data.displayName !== '') return data.displayName;\n return deriveOptionalObjectName(data);\n};\n\ntype Options = {\n metastoreClient: MetastoreClient;\n};\n\nexport const createSemanticLayerSdk = ({ metastoreClient }: Options) => {\n const _listObjects = async <TData extends Record<string, unknown>>(\n objectType: SemanticObjectType,\n signal?: AbortSignal,\n ) => {\n const response = await metastoreClient.repository.getMetaObjects<TData>({ objectType }, signal);\n return (response.data as unknown as RawSemanticObject<TData>[]).map(mapObject);\n };\n\n const listModels = async (signal?: AbortSignal) =>\n _listObjects<SemanticModelData>(SEMANTIC_OBJECT_TYPE.MODEL, signal);\n\n const createModel = async (data: SemanticModelData, meta: CreateSemanticObjectMeta = {}) => {\n const response = await metastoreClient.repository.createMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: data.name,\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const updateModel = async (\n modelUUID: string,\n data: Partial<SemanticModelData>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.updateMetaObject<SemanticModelData>({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(data.name ? { name: data.name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticModelData>);\n };\n\n const listObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await _listObjects<SemanticChildObjectDataMap[T]>(objectType, signal);\n return objects.filter((object) => object.data.modelUUID === modelUUID);\n };\n\n /**\n * Find a model's child objects by their user-facing name.\n *\n * Returns every match rather than resolving to one, because a name is not unique: the caller\n * decides whether that's an error (an agent needs an unambiguous target) or a choice to offer\n * (a UI can render a picker). Glossary entries key on `term`, so both are matched.\n */\n const findObjectsByName = async <T extends SemanticChildObjectType>(\n objectType: T,\n name: string,\n modelUUID: string,\n signal?: AbortSignal,\n ) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.filter((object) => deriveOptionalObjectName(object.data) === name);\n };\n\n const createObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n data: SemanticChildObjectDataMap[T],\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const response = await metastoreClient.repository.createMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n data,\n branch: DEFAULT_BRANCH,\n ...meta,\n // Derived name wins over meta so the metastore name stays in sync with the payload.\n name: deriveObjectName(data),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const createObjects = async <T extends SemanticChildObjectType>(\n objectType: T,\n items: SemanticChildObjectDataMap[T][],\n meta: CreateSemanticObjectMeta = {},\n ) =>\n concurrent({\n items,\n process: async (data) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n // Create a model and all its child objects in one call: the model first (so its\n // UUID exists), then every child concurrently with the modelUUID injected.\n const createModelTree = async (\n model: SemanticModelData,\n children: Partial<{\n [T in SemanticChildObjectType]: Omit<SemanticChildObjectDataMap[T], 'modelUUID'>[];\n }>,\n meta: CreateSemanticObjectMeta = {},\n ) => {\n const createdModel = await createModel(model, meta);\n\n const items = MODEL_CHILD_OBJECT_TYPES.flatMap((objectType) =>\n (children[objectType] ?? []).map((data) => ({\n objectType,\n data: {\n ...data,\n modelUUID: createdModel.uuid,\n } satisfies SemanticChildObjectDataMap[typeof objectType],\n })),\n );\n\n const createdChildren = await concurrent({\n items,\n process: async ({ objectType, data }) => createObject(objectType, data, meta),\n concurrency: WRITE_CONCURRENCY,\n });\n\n return { model: createdModel, children: createdChildren };\n };\n\n const updateObject = async <T extends SemanticChildObjectType>(\n objectType: T,\n objectUUID: string,\n data: Partial<SemanticChildObjectDataMap[T]>,\n meta: UpdateSemanticObjectMeta = {},\n ) => {\n const name = deriveOptionalObjectName(data);\n const response = await metastoreClient.repository.updateMetaObject<\n SemanticChildObjectDataMap[T]\n >({\n objectType,\n UUID: objectUUID,\n data,\n ...meta,\n // Derived rename wins over meta so the metastore name stays in sync with the payload.\n ...(name ? { name } : {}),\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<SemanticChildObjectDataMap[T]>);\n };\n\n const deleteObject = async (objectType: SemanticChildObjectType, objectUUID: string) => {\n await metastoreClient.repository.deleteMetaObject({\n objectType,\n UUID: objectUUID,\n });\n };\n\n /**\n * Every child object of a model, across all five types, flattened.\n *\n * `deleteModel` uses this to find what to remove; callers can use it to say what a delete\n * would destroy *before* asking the user to confirm. Each entry's `name` is the object's\n * display label (a constraint's `displayName` in preference to its `name`, matching what the\n * SL tables render), so a confirmation lists objects as the user sees them on screen.\n *\n * Costs five list requests: the metastore has no per-model filter, so `listObjects`\n * fetches each collection and filters client-side.\n */\n const listModelChildren = async (\n modelUUID: string,\n signal?: AbortSignal,\n ): Promise<SemanticModelChildRef[]> => {\n const childrenByType = await Promise.all(\n MODEL_CHILD_OBJECT_TYPES.map(async (objectType) => {\n const objects = await listObjects(objectType, modelUUID, signal);\n return objects.map((object) => ({\n objectType,\n objectUUID: object.uuid,\n name: deriveObjectLabel(object.data),\n }));\n }),\n );\n\n return childrenByType.flat();\n };\n\n /**\n * Cascade delete: every child object first, the model itself only once its whole tree is\n * gone. Child deletes all settle — a failing child never aborts the others, so no delete\n * runs on detached after this rejects — and a partial failure surfaces as\n * `SemanticLayerCascadeDeleteError`, which says exactly which children were deleted and\n * which survived. The model is kept on any child failure so it never orphans children.\n */\n const deleteModel = async (modelUUID: string) => {\n const children = await listModelChildren(modelUUID);\n\n const outcomes = await concurrent({\n items: children,\n process: async (child) => {\n try {\n await deleteObject(child.objectType, child.objectUUID);\n return { ok: true as const, child };\n } catch (error) {\n return { ok: false as const, child, error };\n }\n },\n concurrency: WRITE_CONCURRENCY,\n });\n\n const deletedChildren: SemanticModelChildRef[] = [];\n const failedChildren: SemanticModelChildDeleteFailure[] = [];\n for (const outcome of outcomes) {\n if (outcome.ok) deletedChildren.push(outcome.child);\n else failedChildren.push({ ...outcome.child, error: outcome.error });\n }\n\n if (failedChildren.length > 0) {\n throw new SemanticLayerCascadeDeleteError({ modelUUID, deletedChildren, failedChildren });\n }\n\n await metastoreClient.repository.deleteMetaObject({\n objectType: SEMANTIC_OBJECT_TYPE.MODEL,\n UUID: modelUUID,\n });\n };\n\n /**\n * Replace the sibling projects granted GET/consumption access to a `targeted`-scope object.\n *\n * Passing an empty array clears every grant, leaving the object visible to its owning project\n * only. A grant conveys read access alone — the target projects can consume the definition but\n * never edit it, which is enforced metastore-side rather than here.\n */\n const replaceTargetProjects = async (\n objectType: SemanticObjectType,\n objectUUID: string,\n targetProjectIds: number[],\n ) => {\n await metastoreClient.repository.replaceTargetProjects({\n objectType,\n UUID: objectUUID,\n targetProjectIds,\n });\n };\n\n /**\n * Step a project-scoped object up to the organization scope, in place.\n *\n * The object keeps its UUID and revision history; the step-up writes a new revision whose\n * `project_id` is null. Requires the caller to hold the organization-admin role for the target\n * organization — a project-admin gets 403 from the metastore, which callers should surface\n * rather than pre-empt (the same person is often both).\n */\n const promoteToOrganizationScope = async (objectType: SemanticObjectType, objectUUID: string) => {\n // Scope ONLY. No `data`, not even `{}`: the metastore's step-up guard rejects a PATCH that\n // also carries name or data, and `Data *JSONData` treats `{}` as present — which 400s with\n // \"A scope change cannot be combined with name or data changes\".\n const response = await metastoreClient.repository.updateMetaObject({\n objectType,\n UUID: objectUUID,\n scope: 'organization',\n });\n\n return mapObject(response.data as unknown as RawSemanticObject<Record<string, unknown>>);\n };\n\n return {\n // models\n listModels,\n createModel,\n updateModel,\n deleteModel,\n listModelChildren,\n\n // child objects (datasets, metrics, relationships, glossary, constraints)\n listObjects,\n findObjectsByName,\n createObject,\n createObjects,\n createModelTree,\n updateObject,\n deleteObject,\n\n // scoping / sharing\n replaceTargetProjects,\n promoteToOrganizationScope,\n };\n};\n","import { z } from 'zod';\n\nimport { CONSTRAINT_TYPES, SQL_DIALECTS } from './semanticLayerSdk';\n\n/**\n * Runtime validators for the semantic-layer payload shapes.\n *\n * These exist because the metastore's validation errors are opaque — a missing or misspelled\n * field surfaces only as a generic \"Validation failed\", and a wrong `sql_dialect` casing as a\n * 422 that names neither the field nor the accepted values. Parsing first turns those into a\n * message that says what is wrong.\n *\n * **Only the fields the SDK types mark as required are declared.** The metastore owns each\n * object type's full schema, so every schema is a `looseObject`: unknown fields pass through\n * untouched rather than being stripped or rejected. Re-declaring the optional fields here\n * would create a second source of truth that silently drops whatever the metastore adds next.\n *\n * The SDK does **not** parse on its own writes — these are for callers that accept untrusted\n * or hand-authored input (an agent's tool call, a form submission) and want to fail early.\n * `modelUUID` is omitted throughout: the SDK injects it, so callers never supply it.\n */\n\nexport const semanticModelSchema = z.looseObject({\n name: z.string().min(1),\n sql_dialect: z.enum(SQL_DIALECTS),\n});\n\nexport const semanticDatasetSchema = z.looseObject({\n name: z.string().min(1),\n tableId: z.string().min(1),\n fqn: z.string().min(1),\n});\n\nexport const semanticMetricSchema = z.looseObject({\n name: z.string().min(1),\n sql: z.string().min(1),\n});\n\nexport const semanticRelationshipSchema = z.looseObject({\n from: z.string().min(1),\n to: z.string().min(1),\n on: z.string().min(1),\n});\n\nexport const semanticGlossarySchema = z.looseObject({\n term: z.string().min(1),\n definition: z.string().min(1),\n});\n\nexport const semanticConstraintSchema = z.looseObject({\n name: z.string().min(1),\n constraintType: z.enum(CONSTRAINT_TYPES),\n metrics: z.array(z.string()),\n rule: z.string().min(1),\n});\n\n/** Keyed by object type so a caller can pick the schema from a `SemanticChildObjectType`. */\nexport const SEMANTIC_CHILD_OBJECT_SCHEMAS = {\n 'semantic-dataset': semanticDatasetSchema,\n 'semantic-metric': semanticMetricSchema,\n 'semantic-relationship': semanticRelationshipSchema,\n 'semantic-glossary': semanticGlossarySchema,\n 'semantic-constraint': semanticConstraintSchema,\n} as const;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { createAbortError } from './chunk-22E6IGXR.js';
2
- import { createAuthHeaders } from './chunk-EDX5D6UY.js';
3
- import { createOpenapiFetchClient } from './chunk-XHDYLUM4.js';
2
+ import { createAuthHeaders } from './chunk-5A3AQIXR.js';
3
+ import { createOpenapiFetchClient, createGenericFetchClient } from './chunk-2BQBKU6E.js';
4
4
 
5
5
  // src/utils/async/collect.ts
6
6
  var collect = async ({
@@ -31,6 +31,7 @@ var createQueueClient = ({ baseUrl, middlewares, auth }) => {
31
31
  middlewares,
32
32
  headers: createAuthHeaders(auth)
33
33
  });
34
+ const genericClient = createGenericFetchClient({ baseUrl, middlewares });
34
35
  const getJob = async (jobId, signal) => {
35
36
  const { data } = await client.get(
36
37
  "/jobs/{jobId}",
@@ -94,7 +95,12 @@ var createQueueClient = ({ baseUrl, middlewares, auth }) => {
94
95
  );
95
96
  return data;
96
97
  };
98
+ const healthCheck = async (signal) => {
99
+ const { data } = await genericClient.get("/health-check", {}, { signal });
100
+ return data;
101
+ };
97
102
  return {
103
+ healthCheck,
98
104
  getJob,
99
105
  searchJobs,
100
106
  searchAllJobs,
@@ -106,5 +112,5 @@ var createQueueClient = ({ baseUrl, middlewares, auth }) => {
106
112
  };
107
113
 
108
114
  export { collect, createQueueClient };
109
- //# sourceMappingURL=chunk-4VVF2PIX.js.map
110
- //# sourceMappingURL=chunk-4VVF2PIX.js.map
115
+ //# sourceMappingURL=chunk-B4T4QCLB.js.map
116
+ //# sourceMappingURL=chunk-B4T4QCLB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/async/collect.ts","../src/clients/queue/queueClient.ts"],"names":[],"mappings":"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","file":"chunk-B4T4QCLB.js","sourcesContent":["import { createAbortError } from '../createAbortError';\n\nexport type CollectOptions<T> = {\n fetchFrom: (offset: number, pageSize?: number, signal?: AbortSignal) => Promise<T[]>;\n pageSize?: number;\n limit?: number;\n signal?: AbortSignal;\n};\n\n/**\n * Collects items from an offset-paginated endpoint — up to `limit` of them, or all of them when\n * `limit` is omitted. Calls `fetchFrom` sequentially with the offset advancing by the number of\n * items received, and hands it `pageSize` so the request and the traversal agree on one value.\n *\n * Traversal ends on a page shorter than `pageSize`, or — when `pageSize` is omitted — only on an\n * empty page. Passing it therefore saves the trailing request, at the cost of stopping early if the\n * endpoint returns fewer items per page than asked for.\n */\nexport const collect = async <T>({\n fetchFrom,\n pageSize,\n limit,\n signal,\n}: CollectOptions<T>): Promise<T[]> => {\n if (signal?.aborted) throw createAbortError(signal.reason);\n if (limit !== undefined && limit < 0) throw new Error('Invalid collect limit');\n if (pageSize !== undefined && pageSize < 1) throw new Error('Invalid collect pageSize');\n\n const items: T[] = [];\n\n if (limit === 0) return items;\n\n let offset = 0;\n\n while (true) {\n const batch = await fetchFrom(offset, pageSize, signal);\n\n items.push(...batch);\n offset += batch.length;\n\n if (limit !== undefined && items.length >= limit) return items.slice(0, limit);\n if (pageSize === undefined ? batch.length === 0 : batch.length < pageSize) return items;\n }\n};\n","import { createGenericFetchClient, createOpenapiFetchClient } from '../../fetchClient';\nimport { collect } from '../../utils';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n CreateJobBody,\n GetQueueJobPath,\n KillJobPath,\n OrchestrationRerunPlanPath,\n SearchAllJobsQuery,\n SearchGroupedJobsQuery,\n SearchJobsQuery,\n} from './types';\n\nexport const createQueueClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n const genericClient = createGenericFetchClient({ baseUrl, middlewares });\n\n const getJob = async (jobId: GetQueueJobPath['jobId'], signal?: AbortSignal) => {\n const { data } = await client.get(\n '/jobs/{jobId}',\n {\n path: { jobId },\n },\n { signal },\n );\n\n return data;\n };\n\n const searchJobs = async (query?: SearchJobsQuery, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/search/jobs',\n {\n query,\n },\n { signal },\n );\n\n return data;\n };\n\n const searchAllJobs = (query: SearchAllJobsQuery, signal?: AbortSignal) => {\n return collect({\n pageSize: query.limit,\n signal,\n fetchFrom: (offset, pageSize, batchSignal) => {\n return searchJobs({ ...query, limit: pageSize, offset }, batchSignal);\n },\n });\n };\n\n const createJob = async (body: CreateJobBody, signal?: AbortSignal) => {\n const { data } = await client.post('/jobs', { body }, { signal });\n\n return data;\n };\n\n const killJob = async (jobId: KillJobPath['jobId'], signal?: AbortSignal) => {\n const { data } = await client.post(\n '/jobs/{jobId}/kill',\n {\n path: { jobId },\n },\n { signal },\n );\n\n return data;\n };\n\n const searchGroupedJobs = async (query: SearchGroupedJobsQuery, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/search/grouped-jobs',\n {\n query,\n },\n { signal },\n );\n\n return data;\n };\n\n const getOrchestrationRerunPlan = async (\n jobId: OrchestrationRerunPlanPath['jobId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/orchestration-rerun-plan/{jobId}',\n {\n path: { jobId },\n },\n { signal },\n );\n\n return data;\n };\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n getJob,\n searchJobs,\n searchAllJobs,\n createJob,\n killJob,\n searchGroupedJobs,\n getOrchestrationRerunPlan,\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { UserError } from './chunk-G3N5KDEY.js';
2
- import { createAuthHeaders } from './chunk-EDX5D6UY.js';
3
- import { createOpenapiFetchClient, ENCRYPTED_VALUE_PREFIX } from './chunk-XHDYLUM4.js';
2
+ import { createAuthHeaders } from './chunk-5A3AQIXR.js';
3
+ import { createOpenapiFetchClient, createGenericFetchClient, ENCRYPTED_VALUE_PREFIX } from './chunk-2BQBKU6E.js';
4
4
 
5
5
  // src/clients/vault/vaultClient.ts
6
6
  var createVaultClient = ({ baseUrl, middlewares, auth }) => {
@@ -9,6 +9,7 @@ var createVaultClient = ({ baseUrl, middlewares, auth }) => {
9
9
  middlewares,
10
10
  headers: createAuthHeaders(auth)
11
11
  });
12
+ const genericClient = createGenericFetchClient({ baseUrl, middlewares });
12
13
  const getVariables = async (query, signal) => {
13
14
  const { data } = await client.get(
14
15
  "/variables",
@@ -46,7 +47,12 @@ var createVaultClient = ({ baseUrl, middlewares, auth }) => {
46
47
  return data;
47
48
  };
48
49
  const getProjectWideVariables = (signal) => getVariablesByBranchId("null", signal);
50
+ const healthCheck = async (signal) => {
51
+ const { data } = await genericClient.get("/health-check", {}, { signal });
52
+ return data;
53
+ };
49
54
  return {
55
+ healthCheck,
50
56
  createVariable,
51
57
  deleteVariable,
52
58
  getProjectWideVariables,
@@ -56,5 +62,5 @@ var createVaultClient = ({ baseUrl, middlewares, auth }) => {
56
62
  };
57
63
 
58
64
  export { createVaultClient };
59
- //# sourceMappingURL=chunk-XIIER7QQ.js.map
60
- //# sourceMappingURL=chunk-XIIER7QQ.js.map
65
+ //# sourceMappingURL=chunk-BGJWHTBJ.js.map
66
+ //# sourceMappingURL=chunk-BGJWHTBJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/vault/vaultClient.ts"],"names":[],"mappings":";;;;;AAeO,IAAM,oBAAoB,CAAC,EAAE,OAAA,EAAS,WAAA,EAAa,MAAK,KAAyB;AACtF,EAAA,MAAM,SAAS,wBAAA,CAAgC;AAAA,IAC7C,OAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,EAAS,kBAAkB,IAAI;AAAA,GAChC,CAAA;AACD,EAAA,MAAM,aAAA,GAAgB,wBAAA,CAAyB,EAAE,OAAA,EAAS,aAAa,CAAA;AAEvE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,EAA0B,MAAA,KAAyB;AAC7E,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,YAAA;AAAA,MACA,EAAE,KAAA,EAAM;AAAA,MACR;AAAA,QACE;AAAA;AACF,KACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OAAO,IAAA,EAAkC,MAAA,KAAyB;AACvF,IAAA,MAAM,MAAA,CAAO,MAAA;AAAA,MACX,mBAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,IAAA;AAAK,OACf;AAAA,MACA,EAAE,MAAA;AAAO,KACX;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OAAO,IAAA,EAA0B,MAAA,KAAyB;AAC/E,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,WAAW,CAAA,IAAK,CAAC,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,sBAAsB,CAAA,EAAG;AACtF,MAAA,MAAM,IAAI,UAAU,2DAA2D,CAAA;AAAA,IACjF;AACA,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,EAAE,IAAA,EAAK,EAAG,EAAE,MAAA,EAAQ,CAAA;AACrE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,OAC7B,QAAA,EACA,MAAA,KACG;AACH,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,qCAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,QAAA;AAAS,OACnB;AAAA,MACA,EAAE,MAAA;AAAO,KACX;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,uBAAA,GAA0B,CAAC,MAAA,KAAyB,sBAAA,CAAuB,QAAQ,MAAM,CAAA;AAE/F,EAAA,MAAM,WAAA,GAAc,OAAO,MAAA,KAAyB;AAClD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,aAAA,CAAc,GAAA,CAAI,eAAA,EAAiB,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAExE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,uBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-BGJWHTBJ.js","sourcesContent":["import { UserError } from '../../errors';\nimport { createGenericFetchClient, createOpenapiFetchClient } from '../../fetchClient';\nimport { ENCRYPTED_VALUE_PREFIX } from '../../internal';\nimport { createAuthHeaders } from '../auth';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n CreateVariableBody,\n DeleteVariablePath,\n GetVariablesByBranchId,\n GetVariablesQuery,\n VariableWithHash,\n} from './types';\n\nexport const createVaultClient = ({ baseUrl, middlewares, auth }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl,\n middlewares,\n headers: createAuthHeaders(auth),\n });\n const genericClient = createGenericFetchClient({ baseUrl, middlewares });\n\n const getVariables = async (query: GetVariablesQuery, signal?: AbortSignal) => {\n const { data } = await client.get(\n '/variables',\n { query },\n {\n signal,\n },\n );\n\n return data as VariableWithHash[];\n };\n\n const deleteVariable = async (hash: DeleteVariablePath['hash'], signal?: AbortSignal) => {\n await client.delete(\n '/variables/{hash}',\n {\n path: { hash },\n },\n { signal },\n );\n };\n\n const createVariable = async (body: CreateVariableBody, signal?: AbortSignal) => {\n if (body.flags.includes('encrypted') && !body.value.startsWith(ENCRYPTED_VALUE_PREFIX)) {\n throw new UserError('Encryption of a value failed. Please contact our support.');\n }\n const { data } = await client.post('/variables', { body }, { signal });\n return data;\n };\n\n const getVariablesByBranchId = async (\n branchId: GetVariablesByBranchId['branchId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/variables/scoped/branch/{branchId}',\n {\n path: { branchId },\n },\n { signal },\n );\n return data as VariableWithHash[];\n };\n\n const getProjectWideVariables = (signal?: AbortSignal) => getVariablesByBranchId('null', signal);\n\n const healthCheck = async (signal?: AbortSignal) => {\n const { data } = await genericClient.get('/health-check', {}, { signal });\n\n return data;\n };\n\n return {\n healthCheck,\n createVariable,\n deleteVariable,\n getProjectWideVariables,\n getVariables,\n getVariablesByBranchId,\n };\n};\n"]}
@@ -0,0 +1,147 @@
1
+ 'use strict';
2
+
3
+ var chunkMRHQJNWF_cjs = require('./chunk-MRHQJNWF.cjs');
4
+ var chunkHUQ5ATIL_cjs = require('./chunk-HUQ5ATIL.cjs');
5
+ var dayjs = require('dayjs');
6
+ var utc = require('dayjs/plugin/utc.js');
7
+ var z = require('zod');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
30
+ var utc__default = /*#__PURE__*/_interopDefault(utc);
31
+ var z__namespace = /*#__PURE__*/_interopNamespace(z);
32
+
33
+ dayjs__default.default.extend(utc__default.default);
34
+ var DEFAULT_LOGS_FILE_NAME = "logs.txt";
35
+ var ISO_TIMESTAMP_REGEX = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z/;
36
+ var LEADING_ISO_TIMESTAMP_REGEX = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)\s?/;
37
+ var TailError = z__namespace.object({
38
+ context: z__namespace.object({
39
+ code: z__namespace.string()
40
+ })
41
+ });
42
+ var NOTHING_RUNNING_CODES = /* @__PURE__ */ new Set(["apps.appNotRunning", "apps.deploymentNotRunning"]);
43
+ var tryParseJsonl = (line) => {
44
+ if (!line.startsWith("{")) return null;
45
+ let parsed;
46
+ try {
47
+ parsed = JSON.parse(line);
48
+ } catch {
49
+ return null;
50
+ }
51
+ if (typeof parsed !== "object" || parsed === null) return null;
52
+ const record = parsed;
53
+ const { timestamp, message } = record;
54
+ if (typeof timestamp !== "string" || typeof message !== "string") return null;
55
+ return {
56
+ timestamp,
57
+ message
58
+ };
59
+ };
60
+ var parsePlainTextLine = (line) => {
61
+ const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);
62
+ if (match) {
63
+ return { timestamp: match[1], message: line.slice(match[0].length) };
64
+ }
65
+ return { timestamp: null, message: line };
66
+ };
67
+ var parseLogLine = (line) => tryParseJsonl(line) ?? parsePlainTextLine(line);
68
+ var toLogEntryFromObject = (raw) => {
69
+ if (typeof raw.message !== "string") return null;
70
+ return {
71
+ timestamp: typeof raw.timestamp === "string" ? raw.timestamp : null,
72
+ message: raw.message
73
+ };
74
+ };
75
+ var parseLogLines = (raw) => {
76
+ if (raw === null || raw === void 0 || raw === "") return [];
77
+ if (Array.isArray(raw)) {
78
+ return raw.flatMap((item) => {
79
+ if (typeof item === "string") return item === "" ? [] : [parseLogLine(item)];
80
+ if (chunkMRHQJNWF_cjs.isPlainObject(item)) {
81
+ const entry = toLogEntryFromObject(item);
82
+ return entry ? [entry] : [];
83
+ }
84
+ return [];
85
+ });
86
+ }
87
+ if (chunkMRHQJNWF_cjs.isPlainObject(raw)) {
88
+ const entry = toLogEntryFromObject(raw);
89
+ return entry ? [entry] : [];
90
+ }
91
+ if (typeof raw !== "string") return [];
92
+ const lines = raw.split("\n");
93
+ const entries = [];
94
+ for (const line of lines) {
95
+ if (line === "") continue;
96
+ entries.push(parseLogLine(line));
97
+ }
98
+ return entries;
99
+ };
100
+ var lastLogTimestamp = (entries) => {
101
+ for (let i = entries.length - 1; i >= 0; i--) {
102
+ const entry = entries[i];
103
+ if (!entry) continue;
104
+ if (entry.timestamp) return entry.timestamp;
105
+ const match = entry.message.match(ISO_TIMESTAMP_REGEX);
106
+ if (match) return match[0];
107
+ }
108
+ return null;
109
+ };
110
+ var calculateNextLogTimestamp = (timestamp) => {
111
+ if (timestamp === null) return null;
112
+ return dayjs__default.default(timestamp).utc().add(1, "second").utc().format();
113
+ };
114
+ var readAppLogsTail = async (fetchTail) => {
115
+ try {
116
+ const { data } = await fetchTail();
117
+ const entries = parseLogLines(data);
118
+ return {
119
+ entries,
120
+ nextLogTimestamp: calculateNextLogTimestamp(lastLogTimestamp(entries))
121
+ };
122
+ } catch (error) {
123
+ if (chunkHUQ5ATIL_cjs.isApiError(error) && error.response.status === chunkHUQ5ATIL_cjs.HttpStatus.BAD_REQUEST) {
124
+ const code = TailError.safeParse(error.data).data?.context?.code;
125
+ if (code !== void 0 && NOTHING_RUNNING_CODES.has(code)) {
126
+ return { entries: [], nextLogTimestamp: null };
127
+ }
128
+ }
129
+ throw error;
130
+ }
131
+ };
132
+ var readAppLogsDownload = async (fetchLogs) => {
133
+ const { data, response } = await fetchLogs();
134
+ const contentDisposition = chunkHUQ5ATIL_cjs.parseContentDispositionHeader(
135
+ response.headers.get(chunkHUQ5ATIL_cjs.HttpHeader.CONTENT_DISPOSITION)
136
+ );
137
+ return {
138
+ logs: data,
139
+ fileName: contentDisposition.filename ?? DEFAULT_LOGS_FILE_NAME
140
+ };
141
+ };
142
+
143
+ exports.parseLogLines = parseLogLines;
144
+ exports.readAppLogsDownload = readAppLogsDownload;
145
+ exports.readAppLogsTail = readAppLogsTail;
146
+ //# sourceMappingURL=chunk-BVRPZKRE.cjs.map
147
+ //# sourceMappingURL=chunk-BVRPZKRE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/appLogs.ts"],"names":["dayjs","utc","z","isPlainObject","isApiError","HttpStatus","parseContentDispositionHeader","HttpHeader"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBAA,sBAAA,CAAM,OAAOC,oBAAG,CAAA;AAOhB,IAAM,sBAAA,GAAyB,UAAA;AAE/B,IAAM,mBAAA,GAAsB,gDAAA;AAC5B,IAAM,2BAAA,GAA8B,sDAAA;AAGpC,IAAM,YAAcC,YAAA,CAAA,MAAA,CAAO;AAAA,EACzB,SAAWA,YAAA,CAAA,MAAA,CAAO;AAAA,IAChB,MAAQA,YAAA,CAAA,MAAA;AAAO,GAChB;AACH,CAAC,CAAA;AAOD,IAAM,wCAAwB,IAAI,GAAA,CAAI,CAAC,oBAAA,EAAsB,2BAA2B,CAAC,CAAA;AAEzF,IAAM,aAAA,GAAgB,CAAC,IAAA,KAAkC;AACvD,EAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,GAAG,GAAG,OAAO,IAAA;AAElC,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EAC1B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,MAAM,OAAO,IAAA;AAE1D,EAAA,MAAM,MAAA,GAAS,MAAA;AACf,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,MAAA;AAE/B,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,OAAO,OAAA,KAAY,UAAU,OAAO,IAAA;AAEzE,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AAEA,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAA2B;AACrD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,2BAA2B,CAAA;AACpD,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,EAAE,SAAA,EAAW,KAAA,CAAM,CAAC,CAAA,EAAI,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,EACtE;AACA,EAAA,OAAO,EAAE,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,IAAA,EAAK;AAC1C,CAAA;AAEO,IAAM,eAAe,CAAC,IAAA,KAC3B,cAAc,IAAI,CAAA,IAAK,mBAAmB,IAAI,CAAA;AAEhD,IAAM,oBAAA,GAAuB,CAAC,GAAA,KAAkD;AAC9E,EAAA,IAAI,OAAO,GAAA,CAAI,OAAA,KAAY,QAAA,EAAU,OAAO,IAAA;AAC5C,EAAA,OAAO;AAAA,IACL,WAAW,OAAO,GAAA,CAAI,SAAA,KAAc,QAAA,GAAW,IAAI,SAAA,GAAY,IAAA;AAAA,IAC/D,SAAS,GAAA,CAAI;AAAA,GACf;AACF,CAAA;AAEO,IAAM,aAAA,GAAgB,CAAC,GAAA,KAA6B;AACzD,EAAA,IAAI,QAAQ,IAAA,IAAQ,GAAA,KAAQ,UAAa,GAAA,KAAQ,EAAA,SAAW,EAAC;AAE7D,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC3B,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA,KAAS,EAAA,GAAK,EAAC,GAAI,CAAC,YAAA,CAAa,IAAI,CAAC,CAAA;AAC3E,MAAA,IAAIC,+BAAA,CAAc,IAAI,CAAA,EAAG;AACvB,QAAA,MAAM,KAAA,GAAQ,qBAAqB,IAAI,CAAA;AACvC,QAAA,OAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAAA,MAC5B;AACA,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAIA,+BAAA,CAAc,GAAG,CAAA,EAAG;AACtB,IAAA,MAAM,KAAA,GAAQ,qBAAqB,GAAG,CAAA;AACtC,IAAA,OAAO,KAAA,GAAQ,CAAC,KAAK,CAAA,GAAI,EAAC;AAAA,EAC5B;AAEA,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,EAAC;AAErC,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC5B,EAAA,MAAM,UAAsB,EAAC;AAC7B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,SAAS,EAAA,EAAI;AACjB,IAAA,OAAA,CAAQ,IAAA,CAAK,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,EACjC;AACA,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,CAAC,OAAA,KAAwB;AACvD,EAAA,KAAA,IAAS,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC5C,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI,KAAA,CAAM,SAAA,EAAW,OAAO,KAAA,CAAM,SAAA;AAGlC,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAA;AACrD,IAAA,IAAI,KAAA,EAAO,OAAO,KAAA,CAAM,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,IAAA;AACT,CAAA;AAEA,IAAM,yBAAA,GAA4B,CAAC,SAAA,KAA6B;AAC9D,EAAA,IAAI,SAAA,KAAc,MAAM,OAAO,IAAA;AAC/B,EAAA,OAAOH,sBAAA,CAAM,SAAS,CAAA,CAAE,GAAA,EAAI,CAAE,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA,CAAE,GAAA,EAAI,CAAE,MAAA,EAAO;AAC9D,CAAA;AAOO,IAAM,eAAA,GAAkB,OAAO,SAAA,KAAkD;AACtF,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,SAAA,EAAU;AACjC,IAAA,MAAM,OAAA,GAAU,cAAc,IAAI,CAAA;AAElC,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,gBAAA,EAAkB,yBAAA,CAA0B,gBAAA,CAAiB,OAAO,CAAC;AAAA,KACvE;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,IAAII,6BAAW,KAAK,CAAA,IAAK,MAAM,QAAA,CAAS,MAAA,KAAWC,6BAAW,WAAA,EAAa;AACzE,MAAA,MAAM,OAAO,SAAA,CAAU,SAAA,CAAU,MAAM,IAAI,CAAA,CAAE,MAAM,OAAA,EAAS,IAAA;AAC5D,MAAA,IAAI,IAAA,KAAS,MAAA,IAAa,qBAAA,CAAsB,GAAA,CAAI,IAAI,CAAA,EAAG;AACzD,QAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAG,kBAAkB,IAAA,EAAK;AAAA,MAC/C;AAAA,IACF;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAGO,IAAM,mBAAA,GAAsB,OAAO,SAAA,KAAkD;AAC1F,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,MAAM,SAAA,EAAU;AAC3C,EAAA,MAAM,kBAAA,GAAqBC,+CAAA;AAAA,IACzB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAIC,4BAAA,CAAW,mBAAmB;AAAA,GACrD;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,IAAA;AAAA,IACN,QAAA,EAAU,mBAAmB,QAAA,IAAY;AAAA,GAC3C;AACF","file":"chunk-BVRPZKRE.cjs","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"]}