@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,6 +1,31 @@
1
1
  import { ZodError, core } from "zod";
2
2
  import { isCancel } from "@clack/prompts";
3
3
 
4
+ //#region src/runtime/citty.ts
5
+ async function resolveCitty(value) {
6
+ if (value === void 0) return void 0;
7
+ if (typeof value === "function") return value();
8
+ return value;
9
+ }
10
+ function toAliasArray(alias) {
11
+ if (alias === void 0) return [];
12
+ return Array.isArray(alias) ? alias : [alias];
13
+ }
14
+ function normalizeFlag(value) {
15
+ return value.replace(/^-+/, "").replace(/-/g, "").toLowerCase();
16
+ }
17
+ function flagConsumesValue(token, argsDef) {
18
+ if (token.includes("=")) return false;
19
+ const name = normalizeFlag(token);
20
+ for (const [key, def] of Object.entries(argsDef)) {
21
+ if (def.type !== "string" && def.type !== "enum") continue;
22
+ if (normalizeFlag(key) === name) return true;
23
+ if (toAliasArray(def.alias).some((alias) => normalizeFlag(alias) === name)) return true;
24
+ }
25
+ return false;
26
+ }
27
+
28
+ //#endregion
4
29
  //#region src/core/json-pointer.ts
5
30
  function escapeJsonPointerSegment(key) {
6
31
  if (typeof key === "number") return String(key);
@@ -51,23 +76,46 @@ var ValidationError = class extends MetabaseError {
51
76
  get userMessage() {
52
77
  const issues = this.developerDetail.zodIssues;
53
78
  if (issues.length === 0) return this.message;
54
- return `${this.message}\n${formatZodIssueList(issues)}`;
79
+ return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
55
80
  }
56
81
  };
57
- const MAX_ISSUES_PRINTED = 10;
58
- function formatZodIssueList(issues) {
59
- const head = issues.slice(0, MAX_ISSUES_PRINTED).map(formatZodIssueLine);
60
- const overflow = issues.length - MAX_ISSUES_PRINTED;
61
- if (overflow > 0) head.push(` ... and ${overflow} more`);
62
- return head.join("\n");
63
- }
64
- function formatZodIssueLine(issue) {
65
- return ` ${formatZodIssuePointer(issue.path)}: ${issue.message}`;
82
+ const VALIDATION_MAX_ISSUES = 10;
83
+ const RESPONSE_SHAPE_MAX_ISSUES = 5;
84
+ const VALIDATION_ISSUE_FORMAT = {
85
+ max: VALIDATION_MAX_ISSUES,
86
+ formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
87
+ };
88
+ const RESPONSE_SHAPE_ISSUE_FORMAT = {
89
+ max: RESPONSE_SHAPE_MAX_ISSUES,
90
+ formatIssue: formatZodIssue
91
+ };
92
+ function formatIssueLines(issues, format) {
93
+ const head = issues.slice(0, format.max).map(format.formatIssue);
94
+ const overflow = issues.length - format.max;
95
+ if (overflow > 0) head.push(`... and ${overflow} more`);
96
+ return head.map((line) => ` ${line}`).join("\n");
66
97
  }
67
98
  function formatZodIssuePointer(path) {
68
99
  if (path.length === 0) return "/";
69
100
  return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
70
101
  }
102
+ const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
103
+ var ResponseShapeError = class extends MetabaseError {
104
+ category = "response-shape";
105
+ isRetryable = false;
106
+ exitCode = 1;
107
+ developerDetail;
108
+ constructor(developerDetail) {
109
+ super(formatResponseShapeMessage(developerDetail.zodIssues, developerDetail.serverTag));
110
+ this.name = "ResponseShapeError";
111
+ this.developerDetail = developerDetail;
112
+ }
113
+ };
114
+ function formatResponseShapeMessage(issues, serverTag) {
115
+ const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${serverTag} the response shape was unexpected`;
116
+ if (issues.length === 0) return lead;
117
+ return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
118
+ }
71
119
  var ConfigError = class extends MetabaseError {
72
120
  category = "config";
73
121
  isRetryable = false;
@@ -144,10 +192,14 @@ function errorMessage(value) {
144
192
  }
145
193
 
146
194
  //#endregion
147
- //#region src/runtime/predicates.ts
148
- function isPlainObject(value) {
149
- return typeof value === "object" && value !== null && !Array.isArray(value);
195
+ //#region src/runtime/command-augment.ts
196
+ const augments = new WeakMap();
197
+ function setMetabaseAugment(cmd, augment) {
198
+ augments.set(cmd, augment);
199
+ }
200
+ function getMetabaseAugment(cmd) {
201
+ return augments.get(cmd) ?? null;
150
202
  }
151
203
 
152
204
  //#endregion
153
- export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, isNotFoundError, isPlainObject, toMetabaseError };
205
+ export { AbortError, ChainedRequestError, ConfigError, MetabaseError, NetworkError, ResponseShapeError, TimeoutError, UnknownError, VERBOSE_ENV, ValidationError, errorMessage, escapeJsonPointerSegment, flagConsumesValue, getMetabaseAugment, isNotFoundError, normalizeFlag, resolveCitty, setMetabaseAugment, toAliasArray, toMetabaseError };
@@ -1,23 +1,25 @@
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";
9
- import "./field-B3gvaqpK.mjs";
10
- import "./card-CQxvHeyP.mjs";
11
- import "./validate-CB0bu50i.mjs";
12
- import { Dashboard, DashboardCreateInput, DashboardDetail, dashboardView } from "./dashboard-CnMD04PQ.mjs";
13
- import { preflightDashcardCardReferences, wrapChainedDashboardWriteError } from "./preflight-CvFu0Cct.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 "./field-E0IBy4Uw.mjs";
8
+ import "./card-ezYiriML.mjs";
9
+ import { readBody } from "./body-tcURGnGh.mjs";
10
+ import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
11
+ import "./validate-dPEOnOf8.mjs";
12
+ import { Dashboard, DashboardCreateInput, DashboardDetail, dashboardView } from "./dashboard-B4bn3z6t.mjs";
13
+ import { preflightDashcardCardReferences, wrapChainedDashboardWriteError } from "./preflight-BhsErYz3.mjs";
14
14
 
15
15
  //#region src/commands/dashboard/create.ts
16
16
  var create_default = defineMetabaseCommand({
17
17
  meta: {
18
18
  name: "create",
19
- description: "Create a dashboard from a JSON spec; any positive card_id referenced from dashcards is pre-flight-validated against /api/card/:id (exists, not archived) before the dashboard is created"
19
+ description: "Create a dashboard from JSON"
20
20
  },
21
+ details: "Any positive card_id referenced from dashcards is pre-flight-validated (exists and readable, not archived) before the dashboard is created.",
22
+ capabilities: { minVersion: 58 },
21
23
  args: {
22
24
  ...outputFlags,
23
25
  ...profileFlag,
@@ -44,7 +46,7 @@ var create_default = defineMetabaseCommand({
44
46
  body: createOnly
45
47
  });
46
48
  if (dashcards === void 0 && tabs === void 0) {
47
- renderItem(created, dashboardView, ctx);
49
+ renderSummary(created, dashboardView, `Created dashboard ${created.id} "${created.name}".`, ctx);
48
50
  return;
49
51
  }
50
52
  try {
@@ -55,7 +57,7 @@ var create_default = defineMetabaseCommand({
55
57
  tabs
56
58
  }
57
59
  });
58
- renderItem(updated, dashboardView, ctx);
60
+ renderSummary(updated, dashboardView, `Created dashboard ${updated.id} "${updated.name}".`, ctx);
59
61
  } catch (error) {
60
62
  throw wrapChainedDashboardWriteError(error, created.id);
61
63
  }
@@ -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 { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { Workspace, WorkspaceCreateInput, workspaceView } from "./workspace-DUfqhPm5.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
+ import { Workspace, WorkspaceCreateInput, workspaceView } from "./workspace-D8HtUN0y.mjs";
10
10
 
11
11
  //#region src/commands/workspace/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -14,6 +14,10 @@ var create_default = defineMetabaseCommand({
14
14
  name: "create",
15
15
  description: "Create a workspace"
16
16
  },
17
+ capabilities: {
18
+ minVersion: 62,
19
+ tokenFeature: "workspaces"
20
+ },
17
21
  args: {
18
22
  ...outputFlags,
19
23
  ...profileFlag,
@@ -40,7 +44,9 @@ var create_default = defineMetabaseCommand({
40
44
  method: "POST",
41
45
  body
42
46
  });
43
- renderItem(created, workspaceView, ctx);
47
+ const hasDatabases = (created.databases ?? []).length > 0;
48
+ const hint = hasDatabases ? "" : " No databases yet — run `mb workspace database provision`.";
49
+ renderSummary(created, workspaceView, `Created workspace ${created.id} "${created.name}".${hint}`, ctx);
44
50
  }
45
51
  });
46
52
 
@@ -0,0 +1,52 @@
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 "./field-E0IBy4Uw.mjs";
8
+ import { Card, CardCreateInput, cardView } from "./card-ezYiriML.mjs";
9
+ import { readBody } from "./body-tcURGnGh.mjs";
10
+ import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
11
+ import "./validate-dPEOnOf8.mjs";
12
+ import { CARD_DATASET_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
13
+
14
+ //#region src/commands/card/create.ts
15
+ var create_default = defineMetabaseCommand({
16
+ meta: {
17
+ name: "create",
18
+ description: "Create a card (question, model, or metric) from JSON"
19
+ },
20
+ details: "The JSON body needs `name`, `display` (the visualization — e.g. table, bar, scalar), `dataset_query` (the query powering the card), and `visualization_settings` (`{}` is fine). When `dataset_query` is an MBQL 5 query it is checked against a bundled JSON Schema before sending — fix the reported errors, or pass --skip-validate to send anyway. Native-SQL and legacy queries are sent unchecked. See `mb skills get mbql`.",
21
+ capabilities: { minVersion: 58 },
22
+ args: {
23
+ ...outputFlags,
24
+ ...profileFlag,
25
+ ...connectionFlags,
26
+ ...bodyInputFlags,
27
+ ...skipValidateFlag
28
+ },
29
+ outputSchema: Card,
30
+ examples: [
31
+ "cat card.json | mb card create",
32
+ "mb card create --file card.json",
33
+ "mb card create --body '{\"name\":\"x\",\"display\":\"table\",\"dataset_query\":{...},\"visualization_settings\":{}}'",
34
+ "mb card create --file card.json --skip-validate"
35
+ ],
36
+ async run({ args, ctx, getClient }) {
37
+ const body = await readBody({
38
+ flag: args.body,
39
+ file: args.file
40
+ }, CardCreateInput);
41
+ preflightMbql5Query(body.dataset_query, CARD_DATASET_QUERY_LABELS, { skip: args["skip-validate"] === true });
42
+ const client = await getClient();
43
+ const created = await client.requestParsed(Card, "/api/card", {
44
+ method: "POST",
45
+ body
46
+ });
47
+ renderSummary(created, cardView, `Created card ${created.id} "${created.name}".`, ctx);
48
+ }
49
+ });
50
+
51
+ //#endregion
52
+ export { create_default as default };
@@ -0,0 +1,50 @@
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
+ import "./validate-dPEOnOf8.mjs";
10
+ import { TRANSFORM_SOURCE_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
+ import { Transform, TransformCreateInput, transformView } from "./transform-BKahefz_.mjs";
12
+
13
+ //#region src/commands/transform/create.ts
14
+ var create_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "create",
17
+ description: "Create a transform from JSON"
18
+ },
19
+ details: "The JSON body needs a `name`, a `source` (the query to run — native SQL or MBQL — under `source.query`), and a `target` (the warehouse table to write, with `database`/`schema`/`name`). When `source.query` is an MBQL 5 query it is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass. See `mb skills get mbql`.",
20
+ capabilities: { minVersion: 59 },
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ ...bodyInputFlags,
26
+ ...skipValidateFlag
27
+ },
28
+ outputSchema: Transform,
29
+ examples: [
30
+ "cat transform.json | mb transform create",
31
+ "mb transform create --file transform.json",
32
+ "mb transform create --file transform.json --skip-validate"
33
+ ],
34
+ async run({ args, ctx, getClient }) {
35
+ const body = await readBody({
36
+ flag: args.body,
37
+ file: args.file
38
+ }, TransformCreateInput);
39
+ if (body.source.type === "query") preflightMbql5Query(body.source.query, TRANSFORM_SOURCE_QUERY_LABELS, { skip: args["skip-validate"] === true });
40
+ const client = await getClient();
41
+ const created = await client.requestParsed(Transform, "/api/transform", {
42
+ method: "POST",
43
+ body
44
+ });
45
+ renderSummary(created, transformView, `Created transform ${created.id} "${created.name}".`, ctx);
46
+ }
47
+ });
48
+
49
+ //#endregion
50
+ export { create_default as default };
@@ -0,0 +1,50 @@
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
+ import "./validate-dPEOnOf8.mjs";
10
+ import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
+ import { Measure, MeasureCreateInput, measureView } from "./measure-Bt3InQsA.mjs";
12
+
13
+ //#region src/commands/measure/create.ts
14
+ var create_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "create",
17
+ description: "Create a measure (saved aggregation) from JSON"
18
+ },
19
+ details: "A measure is a reusable, saved aggregation tied to a table. The JSON body needs `name`, `table_id`, and a `definition` (an MBQL query holding exactly one aggregation). An MBQL 5 `definition` is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass. See `mb skills get mbql`.",
20
+ capabilities: { minVersion: 59 },
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ ...bodyInputFlags,
26
+ ...skipValidateFlag
27
+ },
28
+ outputSchema: Measure,
29
+ examples: [
30
+ "cat measure.json | mb measure create",
31
+ "mb measure create --file measure.json",
32
+ "mb measure create --file measure.json --skip-validate"
33
+ ],
34
+ async run({ args, ctx, getClient }) {
35
+ const body = await readBody({
36
+ flag: args.body,
37
+ file: args.file
38
+ }, MeasureCreateInput);
39
+ preflightMbql5Query(body.definition, MEASURE_DEFINITION_LABELS, { skip: args["skip-validate"] === true });
40
+ const client = await getClient();
41
+ const created = await client.requestParsed(Measure, "/api/measure", {
42
+ method: "POST",
43
+ body
44
+ });
45
+ renderSummary(created, measureView, `Created measure ${created.id} "${created.name}".`, ctx);
46
+ }
47
+ });
48
+
49
+ //#endregion
50
+ export { create_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 { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { Snippet, SnippetCreateInput, snippetView } from "./snippet-CSWqkslB.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
+ import { Snippet, SnippetCreateInput, snippetView } from "./snippet-bi_0XbNT.mjs";
10
10
 
11
11
  //#region src/commands/snippet/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -14,6 +14,7 @@ var create_default = defineMetabaseCommand({
14
14
  name: "create",
15
15
  description: "Create a native query snippet from a JSON spec"
16
16
  },
17
+ capabilities: { minVersion: 58 },
17
18
  args: {
18
19
  ...outputFlags,
19
20
  ...profileFlag,
@@ -36,7 +37,7 @@ var create_default = defineMetabaseCommand({
36
37
  method: "POST",
37
38
  body
38
39
  });
39
- renderItem(created, snippetView, ctx);
40
+ renderSummary(created, snippetView, `Created snippet ${created.id} "${created.name}".`, ctx);
40
41
  }
41
42
  });
42
43
 
@@ -0,0 +1,50 @@
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
+ import "./validate-dPEOnOf8.mjs";
10
+ import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
+ import { Segment, SegmentCreateInput, segmentView } from "./segment-DhBmcr_E.mjs";
12
+
13
+ //#region src/commands/segment/create.ts
14
+ var create_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "create",
17
+ description: "Create a segment (saved filter) from JSON"
18
+ },
19
+ details: "A segment is a reusable, saved row filter tied to a table. The JSON body needs `name`, `table_id`, and a `definition` (an MBQL query holding the filter). An MBQL 5 `definition` is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass. See `mb skills get mbql`.",
20
+ capabilities: { minVersion: 58 },
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ ...bodyInputFlags,
26
+ ...skipValidateFlag
27
+ },
28
+ outputSchema: Segment,
29
+ examples: [
30
+ "cat segment.json | mb segment create",
31
+ "mb segment create --file segment.json",
32
+ "mb segment create --file segment.json --skip-validate"
33
+ ],
34
+ async run({ args, ctx, getClient }) {
35
+ const body = await readBody({
36
+ flag: args.body,
37
+ file: args.file
38
+ }, SegmentCreateInput);
39
+ preflightMbql5Query(body.definition, SEGMENT_DEFINITION_LABELS, { skip: args["skip-validate"] === true });
40
+ const client = await getClient();
41
+ const created = await client.requestParsed(Segment, "/api/segment", {
42
+ method: "POST",
43
+ body
44
+ });
45
+ renderSummary(created, segmentView, `Created segment ${created.id} "${created.name}".`, ctx);
46
+ }
47
+ });
48
+
49
+ //#endregion
50
+ export { create_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 { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-BrhOLO4M.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
+ import { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-DjhoJbiV.mjs";
10
10
 
11
11
  //#region src/commands/transform-job/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -14,6 +14,7 @@ var create_default = defineMetabaseCommand({
14
14
  name: "create",
15
15
  description: "Create a transform job"
16
16
  },
17
+ capabilities: { minVersion: 59 },
17
18
  args: {
18
19
  ...outputFlags,
19
20
  ...profileFlag,
@@ -36,7 +37,7 @@ var create_default = defineMetabaseCommand({
36
37
  method: "POST",
37
38
  body
38
39
  });
39
- renderItem(created, transformJobView, ctx);
40
+ renderSummary(created, transformJobView, `Created transform job ${created.id} "${created.name}".`, ctx);
40
41
  }
41
42
  });
42
43
 
@@ -1,10 +1,10 @@
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 { REMOTE_SYNC_PATHS } from "./poll-task-BQe0NvJZ.mjs";
7
- 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 { REMOTE_SYNC_PATHS } from "./poll-task-51WRdugU.mjs";
7
+ import "./poll-4eoh5J0r.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/git-sync/create-branch.ts
@@ -27,6 +27,10 @@ var create_branch_default = defineMetabaseCommand({
27
27
  name: "create-branch",
28
28
  description: "Create a new branch on the git remote and switch git-sync to it"
29
29
  },
30
+ capabilities: {
31
+ minVersion: 60,
32
+ tokenFeature: "remote_sync"
33
+ },
30
34
  args: {
31
35
  ...outputFlags,
32
36
  ...profileFlag,
@@ -47,7 +51,7 @@ var create_branch_default = defineMetabaseCommand({
47
51
  method: "POST",
48
52
  body: { name }
49
53
  });
50
- renderItem(result, createBranchView, ctx);
54
+ renderSummary(result, createBranchView, `Created branch "${name}" and switched git-sync to it.`, ctx);
51
55
  }
52
56
  });
53
57
 
@@ -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 { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { Collection, CollectionCreateInput, collectionView } from "./collection-B3sPXRLs.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
+ import { Collection, CollectionCreateInput, collectionView } from "./collection-Bcy8cWYH.mjs";
10
10
 
11
11
  //#region src/commands/collection/create.ts
12
12
  var create_default = defineMetabaseCommand({
@@ -14,6 +14,7 @@ var create_default = defineMetabaseCommand({
14
14
  name: "create",
15
15
  description: "Create a collection from a JSON spec"
16
16
  },
17
+ capabilities: { minVersion: 58 },
17
18
  args: {
18
19
  ...outputFlags,
19
20
  ...profileFlag,
@@ -36,7 +37,7 @@ var create_default = defineMetabaseCommand({
36
37
  method: "POST",
37
38
  body
38
39
  });
39
- renderItem(created, collectionView, ctx);
40
+ renderSummary(created, collectionView, `Created collection ${created.id} "${created.name}".`, ctx);
40
41
  }
41
42
  });
42
43
 
@@ -1,14 +1,14 @@
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 { defineMetabaseCommand, localUrl, outputFlags, parseJson } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import "./poll-p9Y7-JEQ.mjs";
8
- import "./yaml-ECiog374.mjs";
9
- import "./process-zJeVJZTM.mjs";
10
- import { checkDockerReady, readContainerCredentialsFile, requireWorkspaceContainerLocation } from "./docker-D5FTIoD0.mjs";
11
- import { WorkspaceCredentials } from "./workspace-credentials-4lIxxz4g.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { outputFlags } from "./error-ZsFeevV2.mjs";
3
+ import { defineMetabaseCommand, localUrl, parseJson } from "./runtime-Duawf5lE.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-0_GsapXa.mjs";
6
+ import { parseId } from "./parse-id-0_tOPvfI.mjs";
7
+ import "./poll-4eoh5J0r.mjs";
8
+ import "./yaml-Gv6wRFMF.mjs";
9
+ import "./process-CM7Uu5q_.mjs";
10
+ import { checkDockerReady, readContainerCredentialsFile, requireWorkspaceContainerLocation } from "./docker-Ds252Mwc.mjs";
11
+ import { WorkspaceCredentials } from "./workspace-credentials-8CBMQJFz.mjs";
12
12
  import { z } from "zod";
13
13
 
14
14
  //#region src/commands/workspace/credentials.ts
@@ -55,6 +55,7 @@ var credentials_default = defineMetabaseCommand({
55
55
  name: "credentials",
56
56
  description: "Read the workspace child instance's admin credentials (email + password + API key) from the running container"
57
57
  },
58
+ capabilities: null,
58
59
  args: {
59
60
  ...outputFlags,
60
61
  id: {
@@ -0,0 +1,40 @@
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 { SyncTaskOrIdle, fetchCurrentTask, formatSyncTask, syncTaskIdleView, syncTaskView } from "./poll-task-51WRdugU.mjs";
7
+ import "./poll-4eoh5J0r.mjs";
8
+
9
+ //#region src/commands/git-sync/current-task.ts
10
+ const CurrentTaskResult = SyncTaskOrIdle;
11
+ var current_task_default = defineMetabaseCommand({
12
+ meta: {
13
+ name: "current-task",
14
+ description: "Get the most recent git-sync task (or idle if none)"
15
+ },
16
+ capabilities: {
17
+ minVersion: 60,
18
+ tokenFeature: "remote_sync"
19
+ },
20
+ args: {
21
+ ...outputFlags,
22
+ ...profileFlag,
23
+ ...connectionFlags
24
+ },
25
+ outputSchema: CurrentTaskResult,
26
+ examples: ["mb git-sync current-task", "mb git-sync current-task --json"],
27
+ async run({ ctx, getClient }) {
28
+ const client = await getClient();
29
+ const task = await fetchCurrentTask(client);
30
+ if (task === null) {
31
+ const idle = { status: "idle" };
32
+ renderSummary(idle, syncTaskIdleView, "No git-sync task is running.", ctx);
33
+ return;
34
+ }
35
+ renderSummary(task, syncTaskView, formatSyncTask(task), ctx);
36
+ }
37
+ });
38
+
39
+ //#endregion
40
+ export { current_task_default as default };