@metabase/cli 0.1.5 → 0.1.7

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 (228) hide show
  1. package/README.md +128 -115
  2. package/dist/add-collection-C9BdVBs2.mjs +11 -0
  3. package/dist/{add-collection-C_iovi9i.mjs → add-collection-DQjTlDNF.mjs} +12 -5
  4. package/dist/archive-B3qiL-kK.mjs +40 -0
  5. package/dist/{archive-DdaP94H3.mjs → archive-BXzghEQX.mjs} +10 -9
  6. package/dist/{archive-WaEW85NB.mjs → archive-CBGKzEAl.mjs} +9 -8
  7. package/dist/{archive-BKPO8lEO.mjs → archive-CuVk8iwN.mjs} +10 -9
  8. package/dist/archive-DTN9tLGT.mjs +40 -0
  9. package/dist/{archive-Dvzrmdbk.mjs → archive-De8jzzq7.mjs} +10 -9
  10. package/dist/auth-D9eAyVoG.mjs +19 -0
  11. package/dist/{body-XtR7-uCO.mjs → body-tcURGnGh.mjs} +4 -4
  12. package/dist/{branches-XUY4JY-X.mjs → branches-CIGkjXIk.mjs} +11 -7
  13. package/dist/{cancel-BrUVO_ax.mjs → cancel-pPsvgJ0Z.mjs} +9 -8
  14. package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-BLGE4UlL.mjs} +12 -8
  15. package/dist/capabilities-7e9MgquN.mjs +29 -0
  16. package/dist/card-DDDrWcDU.mjs +20 -0
  17. package/dist/{card-CQxvHeyP.mjs → card-ezYiriML.mjs} +1 -1
  18. package/dist/{cards-CONTTAG9.mjs → cards-Dq3nx_9n.mjs} +8 -7
  19. package/dist/cli.mjs +264 -44
  20. package/dist/collection-DkEvCDar.mjs +20 -0
  21. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  22. package/dist/{create-Cs2xntFG.mjs → create-9DBTkbMq.mjs} +18 -16
  23. package/dist/{create-kYpjobrq.mjs → create-B1dyuL9Y.mjs} +16 -10
  24. package/dist/create-BIphz0kO.mjs +52 -0
  25. package/dist/create-BcgoukG4.mjs +50 -0
  26. package/dist/create-BdPoSk_7.mjs +50 -0
  27. package/dist/{create-DZxUeqdf.mjs → create-BrUqxreg.mjs} +11 -10
  28. package/dist/create-DHscDhRd.mjs +50 -0
  29. package/dist/{create-Dq25vsMu.mjs → create-aPaUEGdr.mjs} +11 -10
  30. package/dist/{create-branch-D5u14AxL.mjs → create-branch-DGoc9CUU.mjs} +12 -8
  31. package/dist/{create-Ca9lIDwP.mjs → create-w3mQg9n4.mjs} +11 -10
  32. package/dist/{credentials-BIQ1cEzM.mjs → credentials-qryRLUed.mjs} +12 -11
  33. package/dist/current-task-DZM28rnr.mjs +40 -0
  34. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-B4bn3z6t.mjs} +2 -1
  35. package/dist/dashboard-BLf1RZlk.mjs +21 -0
  36. package/dist/{database-vvig8k4x.mjs → database-BXiue1in.mjs} +1 -1
  37. package/dist/{database-BSvzYlRe.mjs → database-Ce1gOJF7.mjs} +3 -3
  38. package/dist/db-CWTFe_FZ.mjs +22 -0
  39. package/dist/{delete-VTAS9EUt.mjs → delete-BPaFdHZP.mjs} +11 -8
  40. package/dist/{delete-CUx6RT9e.mjs → delete-BrJOotpW.mjs} +11 -8
  41. package/dist/{remove-C6bS0Z6w.mjs → delete-FFj1xQWO.mjs} +25 -20
  42. package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-uuYbd4k2.mjs} +9 -7
  43. package/dist/{delete-table-DzUneMKe.mjs → delete-table-CNupWUO0.mjs} +11 -8
  44. package/dist/{deprovision-CpJfGgCt.mjs → deprovision-BNr9fPDY.mjs} +18 -12
  45. package/dist/{dirty-nkAOXxgC.mjs → dirty-BCkNOY8c.mjs} +11 -7
  46. package/dist/{docker-D5FTIoD0.mjs → docker-Ds252Mwc.mjs} +4 -4
  47. package/dist/{translate-Cqsd0Px5.mjs → eid-CLY5X0Uw.mjs} +43 -23
  48. package/dist/error-ZsFeevV2.mjs +191 -0
  49. package/dist/{export-BWvY7X_G.mjs → export-CgHgWW3I.mjs} +20 -18
  50. package/dist/{field-B3gvaqpK.mjs → field-E0IBy4Uw.mjs} +12 -3
  51. package/dist/field-LL6W_c-c.mjs +18 -0
  52. package/dist/{fields-dH16G5UV.mjs → fields-RkRWU-u9.mjs} +9 -8
  53. package/dist/{get-D96QEU49.mjs → get-42tJ7BNp.mjs} +8 -7
  54. package/dist/{get-C6SR3A9t.mjs → get-B8l4t4Pz.mjs} +10 -9
  55. package/dist/{get-BnBRKHr7.mjs → get-B9kwSs6U.mjs} +8 -7
  56. package/dist/{get-7macOPAI.mjs → get-Bo4Cpd_c.mjs} +7 -7
  57. package/dist/{get-BcqxMVC1.mjs → get-C9O_aEGo.mjs} +8 -7
  58. package/dist/{get-CKxlhMy1.mjs → get-CRvbChoX.mjs} +8 -7
  59. package/dist/{get-B7i_nYJB.mjs → get-CTDqioaj.mjs} +8 -7
  60. package/dist/{get-D8e_RzZ0.mjs → get-CiZrZJLt.mjs} +10 -9
  61. package/dist/{get-B08K82JV.mjs → get-CvmqPN30.mjs} +8 -7
  62. package/dist/{get-CACaBFLt.mjs → get-DmzgSgrl.mjs} +9 -8
  63. package/dist/{get-R7OaVL_t.mjs → get-DsqGHNHN.mjs} +8 -7
  64. package/dist/get-run-CBwcRc8E.mjs +38 -0
  65. package/dist/{get-DNN1X2gN.mjs → get-sMpa-X4E.mjs} +9 -8
  66. package/dist/{get-DAWofnzK.mjs → get-y17zJMnU.mjs} +8 -7
  67. package/dist/git-sync-CrWTo3YX.mjs +28 -0
  68. package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-CfRidwXT.mjs} +13 -8
  69. package/dist/{import-CfdPEMng.mjs → import-BZV0Z2KR.mjs} +21 -18
  70. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  71. package/dist/is-dirty-CPzOnnH6.mjs +10 -0
  72. package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-hKcB4OH9.mjs} +9 -4
  73. package/dist/{items-DqwahOKf.mjs → items-C94eW2Yd.mjs} +10 -9
  74. package/dist/key-vkNkH82H.mjs +17 -0
  75. package/dist/license-B37055sr.mjs +17 -0
  76. package/dist/{list-L63TpX1t.mjs → list-B0V7FeL2.mjs} +7 -7
  77. package/dist/{list-Bkd7Nbds.mjs → list-BFlzLGlw.mjs} +7 -6
  78. package/dist/{list-yxVAE1S7.mjs → list-BJXaGk-z.mjs} +7 -6
  79. package/dist/{list-BqNMpIXy.mjs → list-BS_Bxejg.mjs} +9 -8
  80. package/dist/{list-J277Qtki.mjs → list-BmHoYJr7.mjs} +7 -6
  81. package/dist/list-C-oZe1_p.mjs +173 -0
  82. package/dist/{list-ViT2KWhv.mjs → list-CF1pMN4S.mjs} +7 -6
  83. package/dist/{list-BpNU1neq.mjs → list-CU6sOfI-.mjs} +9 -7
  84. package/dist/{list-oftHLFbE.mjs → list-CqN4gvCk.mjs} +9 -7
  85. package/dist/{list-DBOYoJtA.mjs → list-DUXdt0XI.mjs} +10 -6
  86. package/dist/{list-D41gfkKb.mjs → list-DfDZr55C.mjs} +10 -8
  87. package/dist/{list-vF4EneaE.mjs → list-DrINpVLM.mjs} +7 -6
  88. package/dist/{list-DJcGwJ4W.mjs → list-DuSoEk_J.mjs} +9 -8
  89. package/dist/{list-CQkDqphl.mjs → list-HS15y_WN.mjs} +7 -6
  90. package/dist/login-enh9Yimb.mjs +181 -0
  91. package/dist/{logout-DD4q5whi.mjs → logout-BWLPLDh8.mjs} +13 -11
  92. package/dist/{logs-Ci3mJE2z.mjs → logs-Cu3QtvPs.mjs} +9 -8
  93. package/dist/{manifest-CGM7XNLC.mjs → manifest-BNh0Lw6p.mjs} +15 -15
  94. package/dist/{measure-BEQfnLdN.mjs → measure-Bt3InQsA.mjs} +2 -2
  95. package/dist/measure-CDlEPFtB.mjs +19 -0
  96. package/dist/{metadata-BDat-jN9.mjs → metadata-BTTEBWdS.mjs} +10 -9
  97. package/dist/{metadata-29_qlqbz.mjs → metadata-D2TxboMm.mjs} +9 -8
  98. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  99. package/dist/{parse-id-CysSaCbf.mjs → parse-id-0_tOPvfI.mjs} +1 -1
  100. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-DKag6a6I.mjs} +1 -1
  101. package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-D-qVLl4z.mjs} +2 -2
  102. package/dist/{path-DLByFMMA.mjs → path-C8GrBdgT.mjs} +7 -7
  103. package/dist/{poll-p9Y7-JEQ.mjs → poll-4eoh5J0r.mjs} +2 -2
  104. package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-51WRdugU.mjs} +19 -20
  105. package/dist/{preflight-CvFu0Cct.mjs → preflight-BhsErYz3.mjs} +4 -4
  106. package/dist/{process-zJeVJZTM.mjs → process-CM7Uu5q_.mjs} +1 -1
  107. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  108. package/dist/provision-Chf86BF0.mjs +83 -0
  109. package/dist/{ps-BxQdpkr5.mjs → ps-CEYtsKBj.mjs} +5 -3
  110. package/dist/ps-CIDwaubS.mjs +11 -0
  111. package/dist/{query-C7zTlFJA.mjs → query-BBCAF-tG.mjs} +17 -14
  112. package/dist/{query-CFH4nBlK.mjs → query-DYVBnu9d.mjs} +12 -9
  113. package/dist/query-result-ABPLz6I4.mjs +19 -0
  114. package/dist/{remove-BuWxx3hY.mjs → remove-2yInufA6.mjs} +14 -12
  115. package/dist/remove-collection-CBAHz0Dk.mjs +44 -0
  116. package/dist/{render-DuoDUTVL.mjs → render-0_GsapXa.mjs} +51 -23
  117. package/dist/render-khznBlla.mjs +32 -0
  118. package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-cfTSNQZo.mjs} +12 -11
  119. package/dist/{run-Cl-9RtC4.mjs → run-qgdEJv-I.mjs} +17 -15
  120. package/dist/{runs-BH6s1Zao.mjs → runs-BFIIH4GL.mjs} +9 -8
  121. package/dist/{runtime-CDu6fykq.mjs → runtime-Duawf5lE.mjs} +653 -428
  122. package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-C2xM3dho.mjs} +9 -8
  123. package/dist/{schemas-_m8RYRl9.mjs → schemas-BP7xiktH.mjs} +7 -6
  124. package/dist/{search-DObOsjbP.mjs → search-DYP3lOlq.mjs} +12 -16
  125. package/dist/segment-B6HnNGDs.mjs +19 -0
  126. package/dist/{set-CwVWeAsi.mjs → set-DpRQqdo7.mjs} +13 -11
  127. package/dist/{set-CJA9dpK6.mjs → set-Tt-ioa4L.mjs} +14 -13
  128. package/dist/setting-DUa96KF3.mjs +17 -0
  129. package/dist/{setup-DqBOe3HZ.mjs → setup-BPlllnim.mjs} +10 -9
  130. package/dist/{skills-CHU7uuDU.mjs → skills-BkregMyb.mjs} +2 -2
  131. package/dist/{skills-C2rTVj0n.mjs → skills-SqbPo0BI.mjs} +3 -3
  132. package/dist/snippet-dJ68tGsl.mjs +19 -0
  133. package/dist/{start-CfruN4wF.mjs → start-DJZA67WF.mjs} +70 -38
  134. package/dist/{stash-CWuXKSZq.mjs → stash-C89zNKxo.mjs} +21 -18
  135. package/dist/{status-D-RYZB9G.mjs → status-B1EJ_jv0.mjs} +16 -9
  136. package/dist/status-BNvFPemM.mjs +100 -0
  137. package/dist/status-D5wSqYV_.mjs +34 -0
  138. package/dist/{stop-D8Hr4cKX.mjs → stop-5rCLmkCQ.mjs} +16 -11
  139. package/dist/{summary-Lt2XLBK9.mjs → summary-Cihbx0Qs.mjs} +8 -7
  140. package/dist/{sync-schema-BDElSynU.mjs → sync-schema-C3odu0ZH.mjs} +12 -11
  141. package/dist/table-J2f0STnB.mjs +19 -0
  142. package/dist/{table-B-PYcgGb.mjs → table-qDD2kApF.mjs} +1 -1
  143. package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DjhoJbiV.mjs} +1 -1
  144. package/dist/transform-job-OW4SDhsQ.mjs +19 -0
  145. package/dist/transform-q1LYWQtW.mjs +24 -0
  146. package/dist/{tree-DfvjDjmk.mjs → tree-mvq9gM9w.mjs} +7 -6
  147. package/dist/{update-DzgXF082.mjs → update-BoIiuC70.mjs} +16 -14
  148. package/dist/{update-qnFY5IuC.mjs → update-C0jP0AKT.mjs} +12 -11
  149. package/dist/{update-zp7pCBZH.mjs → update-CbBnHz42.mjs} +16 -14
  150. package/dist/{update-B0bjPqKC.mjs → update-CtOo3LsX.mjs} +13 -12
  151. package/dist/{update-CVxOxmt6.mjs → update-DCrOQ1PW.mjs} +17 -15
  152. package/dist/{update-BYduslhn.mjs → update-DEZayTb4.mjs} +20 -15
  153. package/dist/{update-BgcroYkF.mjs → update-DwRxdflw.mjs} +12 -11
  154. package/dist/{update-D9Z8cL7h.mjs → update-Rr4usmCo.mjs} +12 -11
  155. package/dist/{update-DuA8-cCq.mjs → update-VvKMnwsM.mjs} +16 -14
  156. package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-DFvIz8Qj.mjs} +12 -11
  157. package/dist/{update-CqnDMNtZ.mjs → update-tRparnUs.mjs} +18 -16
  158. package/dist/{upgrade-CIgTr2CG.mjs → upgrade-D-Rl_fH9.mjs} +16 -29
  159. package/dist/{url-B5MgZXzg.mjs → url-BB6jeNQj.mjs} +11 -10
  160. package/dist/{uuid-CJz9TmHI.mjs → uuid-BSVUk8u2.mjs} +8 -6
  161. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  162. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-CYvOP8Ld.mjs} +3 -3
  163. package/dist/values-D1RJE4H6.mjs +45 -0
  164. package/dist/verify-A7BWfBPZ.mjs +79 -0
  165. package/dist/{wait-BFqBlg0y.mjs → wait-B17I_pWy.mjs} +2 -2
  166. package/dist/{wait-tDp9ZOou.mjs → wait-DK5QDZ8n.mjs} +14 -10
  167. package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-DlfbIXHw.mjs} +20 -9
  168. package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-8CBMQJFz.mjs} +2 -2
  169. package/dist/workspace-ri6r3zWo.mjs +25 -0
  170. package/dist/{yaml-ECiog374.mjs → yaml-Gv6wRFMF.mjs} +1 -1
  171. package/package.json +2 -1
  172. package/skill-data/core/SKILL.md +55 -453
  173. package/skill-data/git-sync/SKILL.md +1 -1
  174. package/skill-data/mbql/SKILL.md +156 -0
  175. package/skill-data/mbql/references/operators.md +253 -0
  176. package/skill-data/transform/SKILL.md +2 -40
  177. package/skill-data/viz/SKILL.md +137 -0
  178. package/skill-data/viz/references/settings.md +312 -0
  179. package/skill-data/workspace/SKILL.md +45 -63
  180. package/skills/metabase-cli/SKILL.md +5 -26
  181. package/dist/add-collection-ucsyAMkV.mjs +0 -11
  182. package/dist/api-key-BENHbTbV.mjs +0 -13
  183. package/dist/auth-DICRtJDy.mjs +0 -19
  184. package/dist/card-l-UmrUIo.mjs +0 -20
  185. package/dist/collection-oV0olVY-.mjs +0 -19
  186. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  187. package/dist/create-CrUq6sib.mjs +0 -125
  188. package/dist/create-D3Z878yr.mjs +0 -50
  189. package/dist/create-Le3Bqn7b.mjs +0 -48
  190. package/dist/create-V-q2rU0T.mjs +0 -48
  191. package/dist/create-swbIXdo5.mjs +0 -48
  192. package/dist/current-task-DCq7rk9V.mjs +0 -36
  193. package/dist/dashboard-hbKDd36X.mjs +0 -20
  194. package/dist/db-qVK6NsdB.mjs +0 -22
  195. package/dist/eid-CDFXX_6H.mjs +0 -13
  196. package/dist/field-C0LE7RQI.mjs +0 -18
  197. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  198. package/dist/get-run-CwFuR4Uw.mjs +0 -36
  199. package/dist/git-sync-DV7YjniX.mjs +0 -28
  200. package/dist/is-dirty-LxVbm2C5.mjs +0 -10
  201. package/dist/key-CCJdVWKc.mjs +0 -12
  202. package/dist/license-Cb6ewEJO.mjs +0 -17
  203. package/dist/list-DV6CONhp.mjs +0 -55
  204. package/dist/login-D1nZwgKv.mjs +0 -192
  205. package/dist/measure-XhJuL77y.mjs +0 -19
  206. package/dist/package-DFUprkSZ.mjs +0 -85
  207. package/dist/provision-BP-b4Are.mjs +0 -77
  208. package/dist/ps-Bk6unzaX.mjs +0 -11
  209. package/dist/remove-collection-Bc4roCq0.mjs +0 -38
  210. package/dist/segment-DfxZdJmR.mjs +0 -19
  211. package/dist/setting-Czy4ws6h.mjs +0 -18
  212. package/dist/snippet-BCY4KHBU.mjs +0 -19
  213. package/dist/status-1oUnw803.mjs +0 -56
  214. package/dist/status-J9HIDcA5.mjs +0 -32
  215. package/dist/table-BwX3Ib5f.mjs +0 -19
  216. package/dist/transform-iaAi37V0.mjs +0 -24
  217. package/dist/transform-job-Bemonf82.mjs +0 -19
  218. package/dist/values-BXN6tx1i.mjs +0 -36
  219. package/dist/workspace-BBsT0H0g.mjs +0 -24
  220. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  221. /package/dist/{collection-B3sPXRLs.mjs → collection-Bcy8cWYH.mjs} +0 -0
  222. /package/dist/{paginate-CTSfuYiF.mjs → paginate-BexjkjbY.mjs} +0 -0
  223. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-DY29-cgz.mjs} +0 -0
  224. /package/dist/{segment-BMrUBz94.mjs → segment-DhBmcr_E.mjs} +0 -0
  225. /package/dist/{setting-CTaAeMci.mjs → setting-BzCng1Ub.mjs} +0 -0
  226. /package/dist/{snippet-CSWqkslB.mjs → snippet-bi_0XbNT.mjs} +0 -0
  227. /package/dist/{transform-DR4ejuPM.mjs → transform-BKahefz_.mjs} +0 -0
  228. /package/dist/{workspace-DUfqhPm5.mjs → workspace-D8HtUN0y.mjs} +0 -0
@@ -1,11 +1,11 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import "./field-B3gvaqpK.mjs";
8
- import { Table, TableCompact, tableView } from "./table-B-PYcgGb.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-0_GsapXa.mjs";
6
+ import "./field-E0IBy4Uw.mjs";
7
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
8
+ import { Table, TableCompact, tableView } from "./table-qDD2kApF.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/commands/db/schema-tables.ts
@@ -16,6 +16,7 @@ var schema_tables_default = defineMetabaseCommand({
16
16
  name: "schema-tables",
17
17
  description: "List tables in a database schema"
18
18
  },
19
+ capabilities: { minVersion: 58 },
19
20
  args: {
20
21
  ...outputFlags,
21
22
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/commands/db/schemas.ts
@@ -22,6 +22,7 @@ var schemas_default = defineMetabaseCommand({
22
22
  name: "schemas",
23
23
  description: "List schemas in a database"
24
24
  },
25
+ capabilities: { minVersion: 58 },
25
26
  args: {
26
27
  ...outputFlags,
27
28
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, parseEnumCsv, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand, parseEnumCsv } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/domain/search.ts
@@ -45,8 +45,7 @@ const SearchResultCompact = SearchResult.pick({
45
45
  id: true,
46
46
  name: true,
47
47
  model: true,
48
- description: true,
49
- archived: true
48
+ description: true
50
49
  }).strip();
51
50
  const searchResultView = {
52
51
  compactPick: SearchResultCompact,
@@ -62,10 +61,6 @@ const searchResultView = {
62
61
  {
63
62
  key: "name",
64
63
  label: "Name"
65
- },
66
- {
67
- key: "archived",
68
- label: "Archived"
69
64
  }
70
65
  ]
71
66
  };
@@ -85,6 +80,7 @@ var search_default = defineMetabaseCommand({
85
80
  name: "search",
86
81
  description: "Search Metabase content (cards, dashboards, collections, …)"
87
82
  },
83
+ capabilities: { minVersion: 58 },
88
84
  args: {
89
85
  ...outputFlags,
90
86
  ...profileFlag,
@@ -101,7 +97,7 @@ var search_default = defineMetabaseCommand({
101
97
  },
102
98
  archived: {
103
99
  type: "boolean",
104
- description: "Include archived items",
100
+ description: "Search only archived items (instead of only active ones)",
105
101
  default: false
106
102
  },
107
103
  limit: {
@@ -109,7 +105,7 @@ var search_default = defineMetabaseCommand({
109
105
  description: "Max results to return",
110
106
  default: String(DEFAULT_LIMIT)
111
107
  },
112
- "table-db-id": {
108
+ "db-id": {
113
109
  type: "string",
114
110
  description: "Restrict to items on a given database id"
115
111
  },
@@ -126,8 +122,8 @@ var search_default = defineMetabaseCommand({
126
122
  ],
127
123
  async run({ args, ctx, getClient }) {
128
124
  const limit = parseId(args.limit, "--limit");
129
- const tableDbIdRaw = args["table-db-id"];
130
- const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--table-db-id") : void 0;
125
+ const tableDbIdRaw = args["db-id"];
126
+ const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
131
127
  const models = parseEnumCsv(args.models, SearchModel, "--models");
132
128
  const client = await getClient();
133
129
  const response = await client.requestParsed(SearchApiResponse, "/api/search", { query: {
@@ -0,0 +1,19 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/segment/index.ts
4
+ var segment_default = defineCommand({
5
+ meta: {
6
+ name: "segment",
7
+ description: "Manage Metabase segments"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-BFlzLGlw.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-B9kwSs6U.mjs").then((mod) => mod.default),
12
+ create: () => import("./create-DHscDhRd.mjs").then((mod) => mod.default),
13
+ update: () => import("./update-VvKMnwsM.mjs").then((mod) => mod.default),
14
+ archive: () => import("./archive-BXzghEQX.mjs").then((mod) => mod.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { segment_default as default };
@@ -1,12 +1,12 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import "./input-BQ-BZA8h.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
7
- import { readBody } from "./body-XtR7-uCO.mjs";
8
- import { SettingValue, settingValueView } from "./setting-CTaAeMci.mjs";
9
- import { parseSettingKey } from "./key-CCJdVWKc.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { formatScalar, renderSummary } from "./render-0_GsapXa.mjs";
6
+ import "./input-cMSEqISy.mjs";
7
+ import { readBody } from "./body-tcURGnGh.mjs";
8
+ import { SettingValue, settingValueView } from "./setting-BzCng1Ub.mjs";
9
+ import { parseSettingKey, rethrowSettingError } from "./key-vkNkH82H.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/setting/set.ts
@@ -15,6 +15,7 @@ var set_default = defineMetabaseCommand({
15
15
  name: "set",
16
16
  description: "Set a setting value (parsed strictly as JSON)"
17
17
  },
18
+ capabilities: { minVersion: 58 },
18
19
  args: {
19
20
  ...outputFlags,
20
21
  ...profileFlag,
@@ -54,12 +55,13 @@ var set_default = defineMetabaseCommand({
54
55
  method: "PUT",
55
56
  body: { value },
56
57
  expectContentType: "binary"
57
- });
58
+ }).catch((error) => rethrowSettingError(error, key));
58
59
  const item = {
59
60
  key,
60
61
  value
61
62
  };
62
- renderItem(item, settingValueView, ctx);
63
+ const message = value === null ? `Cleared "${key}".` : `Set "${key}" to ${formatScalar(value)}.`;
64
+ renderSummary(item, settingValueView, message, ctx);
63
65
  }
64
66
  });
65
67
 
@@ -1,13 +1,13 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-DuoDUTVL.mjs";
4
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
5
- import { readInput } from "./input-BQ-BZA8h.mjs";
6
- import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-CDu6fykq.mjs";
7
- import { promptPassword } from "./prompt-DgDNy_Pc.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { outputFlags } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand, keyringFallbackWarning, readEnvLicenseToken, writeLicense } from "./runtime-Duawf5lE.mjs";
4
+ import { warn } from "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import { promptPassword } from "./prompt-CFKoys7k.mjs";
7
+ import { readInput } from "./input-cMSEqISy.mjs";
8
8
  import { z } from "zod";
9
9
 
10
- //#region src/commands/license/set.ts
10
+ //#region src/commands/workspace/license/set.ts
11
11
  const LicenseSetResult = z.object({ stored: z.literal(true) });
12
12
  const licenseSetView = {
13
13
  compactPick: LicenseSetResult,
@@ -21,6 +21,7 @@ var set_default = defineMetabaseCommand({
21
21
  name: "set",
22
22
  description: "Store a Metabase license token"
23
23
  },
24
+ capabilities: null,
24
25
  args: {
25
26
  ...outputFlags,
26
27
  token: {
@@ -31,16 +32,16 @@ var set_default = defineMetabaseCommand({
31
32
  },
32
33
  outputSchema: LicenseSetResult,
33
34
  examples: [
34
- "echo $METABASE_LICENSE_TOKEN | mb license set",
35
- "mb license set < token.txt",
36
- "mb license set $METABASE_LICENSE_TOKEN"
35
+ "echo $METABASE_LICENSE_TOKEN | mb workspace license set",
36
+ "mb workspace license set < token.txt",
37
+ "mb workspace license set $METABASE_LICENSE_TOKEN"
37
38
  ],
38
39
  async run({ args, ctx }) {
39
40
  const token = await resolveToken(args.token);
40
41
  const location = await writeLicense(token);
41
- if (location.backend === "file") warn(`warning: OS keychain unavailable; license stored as plaintext at ${location.path}`);
42
+ if (location.backend === "file") warn(keyringFallbackWarning(location, "license"));
42
43
  const result = { stored: true };
43
- renderItem(result, licenseSetView, ctx);
44
+ renderSummary(result, licenseSetView, "License token stored.", ctx);
44
45
  }
45
46
  });
46
47
  async function resolveToken(positional) {
@@ -0,0 +1,17 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/setting/index.ts
4
+ var setting_default = defineCommand({
5
+ meta: {
6
+ name: "setting",
7
+ description: "Inspect and update Metabase settings"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-BJXaGk-z.mjs").then((m) => m.default),
11
+ get: () => import("./get-B8l4t4Pz.mjs").then((m) => m.default),
12
+ set: () => import("./set-DpRQqdo7.mjs").then((m) => m.default)
13
+ }
14
+ });
15
+
16
+ //#endregion
17
+ export { setting_default as default };
@@ -1,11 +1,11 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import "./input-BQ-BZA8h.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
7
- import { readBody } from "./body-XtR7-uCO.mjs";
8
- import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import "./input-cMSEqISy.mjs";
7
+ import { readBody } from "./body-tcURGnGh.mjs";
8
+ import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/domain/setup.ts
@@ -41,6 +41,7 @@ var setup_default = defineMetabaseCommand({
41
41
  name: "setup",
42
42
  description: "Complete the initial Metabase setup wizard with a default user"
43
43
  },
44
+ capabilities: { minVersion: 58 },
44
45
  args: {
45
46
  ...outputFlags,
46
47
  ...profileFlag,
@@ -63,7 +64,7 @@ var setup_default = defineMetabaseCommand({
63
64
  method: "POST",
64
65
  body
65
66
  });
66
- renderItem(result, setupResultView, ctx);
67
+ renderSummary(result, setupResultView, "Metabase setup complete.", ctx);
67
68
  }
68
69
  });
69
70
 
@@ -1,5 +1,5 @@
1
- import { ConfigError, isNotFoundError } from "./predicates-CGO17Q15.mjs";
2
- import { parseYamlResult } from "./yaml-ECiog374.mjs";
1
+ import { ConfigError, isNotFoundError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { parseYamlResult } from "./yaml-Gv6wRFMF.mjs";
3
3
  import { z } from "zod";
4
4
  import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
5
5
  import { dirname, join, resolve } from "node:path";
@@ -8,9 +8,9 @@ var skills_default = defineCommand({
8
8
  },
9
9
  default: "list",
10
10
  subCommands: {
11
- list: () => import("./list-L63TpX1t.mjs").then((m) => m.default),
12
- get: () => import("./get-7macOPAI.mjs").then((m) => m.default),
13
- path: () => import("./path-DLByFMMA.mjs").then((m) => m.default)
11
+ list: () => import("./list-B0V7FeL2.mjs").then((m) => m.default),
12
+ get: () => import("./get-Bo4Cpd_c.mjs").then((m) => m.default),
13
+ path: () => import("./path-C8GrBdgT.mjs").then((m) => m.default)
14
14
  }
15
15
  });
16
16
 
@@ -0,0 +1,19 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/snippet/index.ts
4
+ var snippet_default = defineCommand({
5
+ meta: {
6
+ name: "snippet",
7
+ description: "Manage Metabase native query snippets"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-DrINpVLM.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-DsqGHNHN.mjs").then((mod) => mod.default),
12
+ create: () => import("./create-BrUqxreg.mjs").then((mod) => mod.default),
13
+ update: () => import("./update-C0jP0AKT.mjs").then((mod) => mod.default),
14
+ archive: () => import("./archive-CBGKzEAl.mjs").then((mod) => mod.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { snippet_default as default };
@@ -1,18 +1,18 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-DuoDUTVL.mjs";
4
- import { ConfigError, errorMessage } from "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, createClient, defineMetabaseCommand, localUrl, outputFlags, parseInteger, parseOptionalInteger, profileFlag, resolveLicenseToken } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import { pollUntil } from "./poll-p9Y7-JEQ.mjs";
8
- import "./yaml-ECiog374.mjs";
9
- import { runProcess } from "./process-zJeVJZTM.mjs";
10
- import { Workspace } from "./workspace-DUfqhPm5.mjs";
11
- import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-D5FTIoD0.mjs";
12
- import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-4lIxxz4g.mjs";
1
+ import { ConfigError, errorMessage } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { createClient, defineMetabaseCommand, localUrl, parseInteger, parseOptionalInteger, resolveLicenseToken } from "./runtime-Duawf5lE.mjs";
4
+ import { warn } from "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
+ import { pollUntil } from "./poll-4eoh5J0r.mjs";
8
+ import "./yaml-Gv6wRFMF.mjs";
9
+ import { runProcess } from "./process-CM7Uu5q_.mjs";
10
+ import { Workspace } from "./workspace-D8HtUN0y.mjs";
11
+ import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-Ds252Mwc.mjs";
12
+ import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-8CBMQJFz.mjs";
13
13
  import { z } from "zod";
14
- import { stat } from "node:fs/promises";
15
14
  import { resolve } from "node:path";
15
+ import { stat } from "node:fs/promises";
16
16
  import { createServer } from "node:net";
17
17
 
18
18
  //#region src/core/http/probe.ts
@@ -53,7 +53,10 @@ async function findFreePort(start) {
53
53
 
54
54
  //#endregion
55
55
  //#region src/commands/workspace/start.ts
56
- const DEFAULT_IMAGE = "metabase/metabase-dev:feature-workspaces-v2";
56
+ const ENTERPRISE_IMAGE = "metabase/metabase-enterprise";
57
+ const ENTERPRISE_HEAD_IMAGE = "metabase/metabase-enterprise-head";
58
+ const LATEST_TAG = "latest";
59
+ const WORKSPACES_MIN_VERSION = 62;
57
60
  const DEFAULT_HOST_PORT = 3e3;
58
61
  const DEFAULT_READY_TIMEOUT_MS = 24e4;
59
62
  const HEALTH_INTERVAL_MS = 2e3;
@@ -122,6 +125,10 @@ var start_default = defineMetabaseCommand({
122
125
  name: "start",
123
126
  description: "Start a local Docker container that serves as the workspace's dev instance"
124
127
  },
128
+ capabilities: {
129
+ minVersion: WORKSPACES_MIN_VERSION,
130
+ tokenFeature: "workspaces"
131
+ },
125
132
  args: {
126
133
  ...outputFlags,
127
134
  ...profileFlag,
@@ -137,8 +144,7 @@ var start_default = defineMetabaseCommand({
137
144
  },
138
145
  image: {
139
146
  type: "string",
140
- description: `Docker image to run (default: ${DEFAULT_IMAGE})`,
141
- default: DEFAULT_IMAGE
147
+ description: `Docker image to run. Default: ${ENTERPRISE_IMAGE}:${LATEST_TAG} once Metabase v${WORKSPACES_MIN_VERSION} is released, otherwise ${ENTERPRISE_HEAD_IMAGE}:${LATEST_TAG}.`
142
148
  },
143
149
  wait: {
144
150
  type: "boolean",
@@ -184,12 +190,12 @@ var start_default = defineMetabaseCommand({
184
190
  "mb workspace start 1",
185
191
  "mb workspace start 1 --wait",
186
192
  "mb workspace start 1 --port 3100",
187
- "mb workspace start 1 --image metabase/metabase-dev:feature-workspaces-v2 --no-pull",
193
+ "mb workspace start 1 --image metabase/metabase-enterprise:latest --no-pull",
188
194
  "mb workspace start 1 --force",
189
195
  "mb workspace start 1 --repo /path/to/sync-repo --wait",
190
196
  "mb workspace start 1 --repo /path/to/sync-repo --repo-branch dev --repo-mode read-only"
191
197
  ],
192
- async run({ args, ctx, getClient, getResolvedConfig }) {
198
+ async run({ args, ctx, getClient, getResolvedConfig, getServerInfo }) {
193
199
  const workspaceId = parseId(args.id);
194
200
  const containerName = containerNameFor(workspaceId);
195
201
  const requestedPort = parseOptionalInteger(args.port, {
@@ -203,9 +209,11 @@ var start_default = defineMetabaseCommand({
203
209
  const client = await getClient();
204
210
  const resolved = await getResolvedConfig();
205
211
  const licenseToken = await resolveLicenseToken({});
212
+ const serverInfo = await getServerInfo();
213
+ const image = args.image ?? resolveDefaultImage(serverInfo?.version ?? null);
206
214
  await checkDockerReady();
207
215
  await ensureNoExistingContainer(workspaceId, containerName, args.force);
208
- const pullPromise = args.pull ? pullImage(args.image) : Promise.resolve();
216
+ const pullPromise = args.pull ? pullImage(image) : Promise.resolve();
209
217
  const workspace = await client.requestParsed(Workspace, `/api/ee/workspace-manager/${workspaceId}`);
210
218
  assertAllDatabasesProvisioned(workspace);
211
219
  const hostPort = await resolveHostPort(requestedPort);
@@ -218,44 +226,46 @@ var start_default = defineMetabaseCommand({
218
226
  mode: args["repo-mode"]
219
227
  })
220
228
  ]);
221
- const credentials = generateWorkspaceCredentials(workspaceId);
222
- const configWithCredentials = injectCredentialsIntoConfig(parentConfigYaml, credentials);
223
- const configYaml = repoOptions !== null ? injectRepoSettingsIntoConfig(configWithCredentials, repoOptions.repo) : configWithCredentials;
224
- const credentialsJson = buildCredentialsJson(credentials);
229
+ const bundle = assembleBootBundle(parentConfigYaml, workspaceId, repoOptions);
225
230
  await pullPromise;
226
231
  await runWorkspaceContainer({
227
232
  workspaceId,
228
233
  workspaceName: workspace.name,
229
234
  profile: resolved.profile,
230
235
  parentUrl: resolved.url,
231
- image: args.image,
236
+ image,
232
237
  hostPort,
233
- configYaml,
234
- credentialsJson,
238
+ configYaml: bundle.configYaml,
239
+ credentialsJson: bundle.credentialsJson,
235
240
  licenseToken,
236
241
  bindMounts: repoOptions === null ? [] : [repoOptions.bindMount]
237
242
  });
238
- await waitForConfigConsumed(workspaceId, readyTimeoutMs);
239
- try {
240
- await scrubContainerConfig(workspaceId);
241
- } catch (error) {
242
- warn(`could not scrub in-container config.yml: ${errorMessage(error)}`);
243
- }
244
- const needsHealth = args.wait || metadataJson !== null;
245
- if (needsHealth) await waitForHealth(hostPort, readyTimeoutMs);
246
- if (metadataJson !== null) await importMetadataIntoChild(hostPort, credentials, metadataJson, readyTimeoutMs);
243
+ const state = await finalizeContainer({
244
+ workspaceId,
245
+ hostPort,
246
+ credentials: bundle.credentials,
247
+ metadataJson,
248
+ wait: args.wait,
249
+ timeoutMs: readyTimeoutMs
250
+ });
247
251
  const result = {
248
252
  workspace_id: workspaceId,
249
253
  workspace_name: workspace.name,
250
254
  container_name: containerName,
251
- state: needsHealth ? "running" : "starting",
255
+ state,
252
256
  host_port: hostPort,
253
257
  url: localUrl(hostPort),
254
- image: args.image
258
+ image
255
259
  };
256
- renderItem(result, startResultView, ctx);
260
+ const message = result.state === "running" ? `Workspace ${workspaceId} "${workspace.name}" is running at ${result.url}.` : `Workspace ${workspaceId} "${workspace.name}" is starting — container is up, instance still booting. Check \`mb workspace ps\` or rerun with --wait.`;
261
+ renderSummary(result, startResultView, message, ctx);
257
262
  }
258
263
  });
264
+ function resolveDefaultImage(version) {
265
+ const isReleased = version !== null && version.major >= WORKSPACES_MIN_VERSION;
266
+ const repo = isReleased ? ENTERPRISE_IMAGE : ENTERPRISE_HEAD_IMAGE;
267
+ return `${repo}:${LATEST_TAG}`;
268
+ }
259
269
  function assertAllDatabasesProvisioned(workspace) {
260
270
  const databases = workspace.databases ?? [];
261
271
  if (databases.length === 0) throw new ConfigError(`workspace ${workspace.id} has no databases — provision at least one before starting`);
@@ -301,6 +311,28 @@ async function fetchMetadataJson(client, workspaceId) {
301
311
  });
302
312
  return new Uint8Array(await response.arrayBuffer());
303
313
  }
314
+ function assembleBootBundle(parentConfigYaml, workspaceId, repoOptions) {
315
+ const credentials = generateWorkspaceCredentials(workspaceId);
316
+ const withCredentials = injectCredentialsIntoConfig(parentConfigYaml, credentials);
317
+ const configYaml = repoOptions !== null ? injectRepoSettingsIntoConfig(withCredentials, repoOptions.repo) : withCredentials;
318
+ return {
319
+ configYaml,
320
+ credentialsJson: buildCredentialsJson(credentials),
321
+ credentials
322
+ };
323
+ }
324
+ async function finalizeContainer(input) {
325
+ await waitForConfigConsumed(input.workspaceId, input.timeoutMs);
326
+ try {
327
+ await scrubContainerConfig(input.workspaceId);
328
+ } catch (error) {
329
+ warn(`could not scrub in-container config.yml: ${errorMessage(error)}`);
330
+ }
331
+ const reachedHealth = input.wait || input.metadataJson !== null;
332
+ if (reachedHealth) await waitForHealth(input.hostPort, input.timeoutMs);
333
+ if (input.metadataJson !== null) await importMetadataIntoChild(input.hostPort, input.credentials, input.metadataJson, input.timeoutMs);
334
+ return reachedHealth ? "running" : "starting";
335
+ }
304
336
  async function waitForHealth(hostPort, timeoutMs) {
305
337
  const url = `${localUrl(hostPort)}/api/health`;
306
338
  await pollUntil(() => probeHealth(url, HEALTH_PROBE_TIMEOUT_MS), (probe) => probe.ready, {
@@ -1,11 +1,12 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import { REMOTE_SYNC_PATHS, SyncTask, pollFlags, pollSyncTask, throwIfFailedTask } from "./poll-task-BQe0NvJZ.mjs";
8
- import "./poll-p9Y7-JEQ.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderSummary } from "./render-0_GsapXa.mjs";
6
+ import "./parse-id-0_tOPvfI.mjs";
7
+ import { REMOTE_SYNC_PATHS, SyncTask, formatSyncTask, pollSyncTask, throwIfFailedTask } from "./poll-task-51WRdugU.mjs";
8
+ import "./poll-4eoh5J0r.mjs";
9
+ import { gitSyncWaitFlags, parseWaitFlags } from "./wait-flags-DlfbIXHw.mjs";
9
10
  import { z } from "zod";
10
11
 
11
12
  //#region src/commands/git-sync/stash.ts
@@ -43,6 +44,10 @@ var stash_default = defineMetabaseCommand({
43
44
  name: "stash",
44
45
  description: "Export current Metabase state to a new branch on the git remote"
45
46
  },
47
+ capabilities: {
48
+ minVersion: 60,
49
+ tokenFeature: "remote_sync"
50
+ },
46
51
  args: {
47
52
  ...outputFlags,
48
53
  ...profileFlag,
@@ -59,7 +64,7 @@ var stash_default = defineMetabaseCommand({
59
64
  alias: "m",
60
65
  default: DEFAULT_STASH_MESSAGE
61
66
  },
62
- ...pollFlags
67
+ ...gitSyncWaitFlags
63
68
  },
64
69
  outputSchema: SyncStashResult,
65
70
  examples: ["mb git-sync stash --new-branch wip", "mb git-sync stash --new-branch wip -m \"work in progress\" --json"],
@@ -68,8 +73,7 @@ var stash_default = defineMetabaseCommand({
68
73
  if (newBranch === "") throw new ConfigError("invalid new-branch: must not be blank");
69
74
  const message = args.message.trim();
70
75
  if (message === "") throw new ConfigError("invalid message: must not be blank");
71
- const timeoutMs = parseId(args.timeout, "timeout");
72
- const intervalMs = parseId(args.interval, "interval");
76
+ const wait = parseWaitFlags(args);
73
77
  const body = {
74
78
  new_branch: newBranch,
75
79
  message
@@ -79,26 +83,25 @@ var stash_default = defineMetabaseCommand({
79
83
  method: "POST",
80
84
  body
81
85
  });
82
- if (!args.wait) {
86
+ if (!wait.enabled) {
83
87
  const result$1 = {
84
88
  status: kickoff.status,
85
89
  message: kickoff.message,
86
90
  task_id: kickoff.task_id
87
91
  };
88
- renderItem(result$1, syncStashView, ctx);
92
+ renderSummary(result$1, syncStashView, `Started stash to branch "${newBranch}" (task #${kickoff.task_id}).`, ctx);
89
93
  return;
90
94
  }
91
- const final = await pollSyncTask(client, {
92
- timeoutMs,
93
- intervalMs
94
- });
95
+ const final = await pollSyncTask(client, wait.schedule);
95
96
  const result = {
96
97
  status: kickoff.status,
97
98
  message: kickoff.message,
98
99
  task_id: kickoff.task_id,
99
100
  final
100
101
  };
101
- renderItem(result, syncStashView, ctx);
102
+ const succeeded = final === null || final.status === "successful";
103
+ const text = succeeded ? `Stashed Metabase state to branch "${newBranch}" (task #${kickoff.task_id}).` : formatSyncTask(final);
104
+ renderSummary(result, syncStashView, text, ctx);
102
105
  throwIfFailedTask(final, "stash");
103
106
  }
104
107
  });