@metabase/cli 0.1.5 → 0.1.6

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 (217) hide show
  1. package/README.md +115 -102
  2. package/dist/{add-collection-C_iovi9i.mjs → add-collection-BU8r3r2M.mjs} +9 -4
  3. package/dist/add-collection-C0w6ACQF.mjs +11 -0
  4. package/dist/{archive-Dvzrmdbk.mjs → archive-BNinrUak.mjs} +9 -8
  5. package/dist/{archive-WaEW85NB.mjs → archive-C1enZgKV.mjs} +8 -7
  6. package/dist/archive-CDA0KxL8.mjs +40 -0
  7. package/dist/{archive-BKPO8lEO.mjs → archive-CRhiBpPJ.mjs} +9 -8
  8. package/dist/{archive-DdaP94H3.mjs → archive-DMPS8Kih.mjs} +9 -8
  9. package/dist/archive-lWgqiFAt.mjs +40 -0
  10. package/dist/auth-CzXb_zB2.mjs +19 -0
  11. package/dist/{body-XtR7-uCO.mjs → body-DjdFxjpg.mjs} +4 -4
  12. package/dist/{branches-XUY4JY-X.mjs → branches-B1WRfG7-.mjs} +11 -7
  13. package/dist/{cancel-BrUVO_ax.mjs → cancel-Dl_Ho056.mjs} +7 -6
  14. package/dist/{cancel-task-oXheTOB6.mjs → cancel-task-CdigdCaO.mjs} +11 -7
  15. package/dist/capabilities-7e9MgquN.mjs +29 -0
  16. package/dist/card-DP4rfoOi.mjs +21 -0
  17. package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
  18. package/dist/{cards-CONTTAG9.mjs → cards-BGiJS675.mjs} +8 -7
  19. package/dist/cli.mjs +264 -44
  20. package/dist/collection-tY18ezvn.mjs +21 -0
  21. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  22. package/dist/create-BNiva__H.mjs +52 -0
  23. package/dist/{create-Ca9lIDwP.mjs → create-BTcpaop_.mjs} +9 -8
  24. package/dist/{create-V-q2rU0T.mjs → create-BYlIju0b.mjs} +14 -12
  25. package/dist/{create-DZxUeqdf.mjs → create-Be_0Vier.mjs} +10 -9
  26. package/dist/{create-kYpjobrq.mjs → create-CHF313Qg.mjs} +13 -9
  27. package/dist/{create-swbIXdo5.mjs → create-CwGtmwqm.mjs} +14 -12
  28. package/dist/{create-Dq25vsMu.mjs → create-CzzrbL0u.mjs} +10 -9
  29. package/dist/{create-Le3Bqn7b.mjs → create-DGth_uOp.mjs} +14 -12
  30. package/dist/{create-branch-D5u14AxL.mjs → create-branch-DKZkoQ64.mjs} +11 -7
  31. package/dist/{create-Cs2xntFG.mjs → create-dhxPxfF3.mjs} +16 -14
  32. package/dist/{credentials-BIQ1cEzM.mjs → credentials-dzeq7ckm.mjs} +12 -11
  33. package/dist/{current-task-DCq7rk9V.mjs → current-task-CCRzm0_7.mjs} +11 -7
  34. package/dist/dashboard-ChM_Tu0l.mjs +22 -0
  35. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
  36. package/dist/{database-BSvzYlRe.mjs → database-CIXwHKjK.mjs} +3 -3
  37. package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
  38. package/dist/db-DrQn_i3W.mjs +22 -0
  39. package/dist/{remove-C6bS0Z6w.mjs → delete-CM3jnAeQ.mjs} +21 -20
  40. package/dist/{delete-CUx6RT9e.mjs → delete-Dimc-2y8.mjs} +9 -8
  41. package/dist/{delete-VTAS9EUt.mjs → delete-ZjnV35OJ.mjs} +9 -8
  42. package/dist/{delete-runtime-DfFMWJJ6.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
  43. package/dist/{delete-table-DzUneMKe.mjs → delete-table-agZJpivt.mjs} +9 -8
  44. package/dist/{deprovision-CpJfGgCt.mjs → deprovision-CwxcIT3k.mjs} +16 -12
  45. package/dist/{dirty-nkAOXxgC.mjs → dirty-D4d0yHqj.mjs} +11 -7
  46. package/dist/{docker-D5FTIoD0.mjs → docker-Oq80q3tu.mjs} +4 -4
  47. package/dist/{translate-Cqsd0Px5.mjs → eid-BXzaQh0o.mjs} +37 -22
  48. package/dist/error-C9S6PN3-.mjs +190 -0
  49. package/dist/{export-BWvY7X_G.mjs → export-DTygoXBP.mjs} +17 -16
  50. package/dist/field-Z6Pcxf4n.mjs +19 -0
  51. package/dist/{fields-dH16G5UV.mjs → fields-CoQi99gv.mjs} +9 -8
  52. package/dist/{get-BnBRKHr7.mjs → get-Bzys7vgp.mjs} +8 -7
  53. package/dist/{get-B7i_nYJB.mjs → get-C2p383Qc.mjs} +8 -7
  54. package/dist/{get-D96QEU49.mjs → get-C3HdQ91a.mjs} +8 -7
  55. package/dist/{get-DNN1X2gN.mjs → get-CP3Z3NiH.mjs} +9 -8
  56. package/dist/{get-CACaBFLt.mjs → get-C_w1kvN3.mjs} +9 -8
  57. package/dist/{get-D8e_RzZ0.mjs → get-CzuzeKSe.mjs} +10 -9
  58. package/dist/{get-C6SR3A9t.mjs → get-D3SbEQSE.mjs} +10 -9
  59. package/dist/{get-7macOPAI.mjs → get-DFxZXaKz.mjs} +7 -7
  60. package/dist/{get-DAWofnzK.mjs → get-DQTZG_NP.mjs} +8 -7
  61. package/dist/{get-BcqxMVC1.mjs → get-DSWFjy7O.mjs} +8 -7
  62. package/dist/{get-R7OaVL_t.mjs → get-Ddr0XLh7.mjs} +8 -7
  63. package/dist/{get-B08K82JV.mjs → get-Hc93A0Yz.mjs} +8 -7
  64. package/dist/{get-CKxlhMy1.mjs → get-lb7q3JYs.mjs} +7 -6
  65. package/dist/get-run-B7sKdaDU.mjs +38 -0
  66. package/dist/git-sync-CiGAad76.mjs +28 -0
  67. package/dist/{has-remote-changes-BAnIXQXU.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
  68. package/dist/{import-CfdPEMng.mjs → import-CiMz4Wz-.mjs} +17 -16
  69. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  70. package/dist/{is-dirty-CZWcG0vj.mjs → is-dirty-BZOaryxT.mjs} +9 -4
  71. package/dist/is-dirty-Ume4oV0j.mjs +10 -0
  72. package/dist/{items-DqwahOKf.mjs → items-BWfvkY-J.mjs} +9 -8
  73. package/dist/key-C2XG394c.mjs +17 -0
  74. package/dist/license-Dxarh-gG.mjs +17 -0
  75. package/dist/{list-vF4EneaE.mjs → list--OYdUTtu.mjs} +7 -6
  76. package/dist/{list-yxVAE1S7.mjs → list-2j7GsXsl.mjs} +7 -6
  77. package/dist/{list-D41gfkKb.mjs → list-BI4zr8LW.mjs} +10 -8
  78. package/dist/{list-BpNU1neq.mjs → list-Brgh-Z2v.mjs} +8 -6
  79. package/dist/{list-ViT2KWhv.mjs → list-C3hfovHv.mjs} +7 -6
  80. package/dist/{list-CQkDqphl.mjs → list-CL7eCOQE.mjs} +7 -6
  81. package/dist/{list-L63TpX1t.mjs → list-Clz5igWg.mjs} +7 -7
  82. package/dist/list-D4sFiqX8.mjs +173 -0
  83. package/dist/{list-oftHLFbE.mjs → list-DXH7TlkU.mjs} +9 -7
  84. package/dist/{list-BqNMpIXy.mjs → list-DZ8fNUoQ.mjs} +9 -8
  85. package/dist/{list-Bkd7Nbds.mjs → list-SOG0whQ-.mjs} +7 -6
  86. package/dist/{list-J277Qtki.mjs → list-d58BprgJ.mjs} +7 -6
  87. package/dist/{list-DJcGwJ4W.mjs → list-sD5N3fGk.mjs} +9 -8
  88. package/dist/{list-DBOYoJtA.mjs → list-zSO0DMw-.mjs} +10 -6
  89. package/dist/{login-D1nZwgKv.mjs → login-Bm2AnCez.mjs} +65 -80
  90. package/dist/{logout-DD4q5whi.mjs → logout-BlyRJODO.mjs} +8 -7
  91. package/dist/{logs-Ci3mJE2z.mjs → logs-CywPikkL.mjs} +9 -8
  92. package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
  93. package/dist/measure-C44EK_xt.mjs +20 -0
  94. package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
  95. package/dist/{metadata-BDat-jN9.mjs → metadata-B8ZSF9LA.mjs} +10 -9
  96. package/dist/{metadata-29_qlqbz.mjs → metadata-DqiI2q9q.mjs} +9 -8
  97. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  98. package/dist/{parse-id-CysSaCbf.mjs → parse-id-lk_K-CEF.mjs} +1 -1
  99. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
  100. package/dist/{parse-schemas-B10n01ez.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
  101. package/dist/{path-DLByFMMA.mjs → path-AEtZ3mBq.mjs} +7 -7
  102. package/dist/{poll-p9Y7-JEQ.mjs → poll-DHKDpCiq.mjs} +2 -2
  103. package/dist/{poll-task-BQe0NvJZ.mjs → poll-task-Cooi0lQV.mjs} +3 -20
  104. package/dist/{preflight-CvFu0Cct.mjs → preflight-aXV5LyDs.mjs} +4 -4
  105. package/dist/{process-zJeVJZTM.mjs → process-C7V8LJ-j.mjs} +1 -1
  106. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  107. package/dist/{provision-BP-b4Are.mjs → provision-UWcNDoDe.mjs} +29 -24
  108. package/dist/{ps-BxQdpkr5.mjs → ps-CJU0EbrC.mjs} +5 -3
  109. package/dist/ps-DEroLgbI.mjs +11 -0
  110. package/dist/{query-CFH4nBlK.mjs → query-AaKzYnTY.mjs} +9 -8
  111. package/dist/{query-C7zTlFJA.mjs → query-BlsVNZpD.mjs} +15 -13
  112. package/dist/{remove-BuWxx3hY.mjs → remove-BFWun0e8.mjs} +9 -8
  113. package/dist/{remove-collection-Bc4roCq0.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
  114. package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
  115. package/dist/render-OQn3iRsI.mjs +32 -0
  116. package/dist/{rescan-values-DabyRYQ_.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
  117. package/dist/{run-Cl-9RtC4.mjs → run-B4Wn43zm.mjs} +10 -9
  118. package/dist/{runs-BH6s1Zao.mjs → runs-Bbaszr18.mjs} +9 -8
  119. package/dist/{runtime-CDu6fykq.mjs → runtime-Dmv5VtUK.mjs} +657 -428
  120. package/dist/{schema-tables-i58wp_p3.mjs → schema-tables-CaWinbuK.mjs} +9 -8
  121. package/dist/{schemas-_m8RYRl9.mjs → schemas-DUgGpAyB.mjs} +7 -6
  122. package/dist/{search-DObOsjbP.mjs → search-BLrBXLUk.mjs} +12 -16
  123. package/dist/segment-B3Uwwcsm.mjs +20 -0
  124. package/dist/{set-CJA9dpK6.mjs → set-B8cUbRLD.mjs} +13 -12
  125. package/dist/{set-CwVWeAsi.mjs → set-DfGsta5O.mjs} +11 -10
  126. package/dist/{setting-Czy4ws6h.mjs → setting-D2p2MA7f.mjs} +3 -3
  127. package/dist/{setup-DqBOe3HZ.mjs → setup-C9ikBRw_.mjs} +9 -8
  128. package/dist/{skills-C2rTVj0n.mjs → skills-CUHIcQS6.mjs} +3 -3
  129. package/dist/{skills-CHU7uuDU.mjs → skills-CiN1OQ8W.mjs} +2 -2
  130. package/dist/snippet-B7D0uWlz.mjs +20 -0
  131. package/dist/{start-CfruN4wF.mjs → start-3PX3ahjT.mjs} +68 -37
  132. package/dist/{stash-CWuXKSZq.mjs → stash-EIDcSvpF.mjs} +17 -16
  133. package/dist/{status-D-RYZB9G.mjs → status-95ElRAu9.mjs} +12 -8
  134. package/dist/status-B0_MiZEf.mjs +100 -0
  135. package/dist/status-CEplmC44.mjs +34 -0
  136. package/dist/{stop-D8Hr4cKX.mjs → stop-CQ0XGrN8.mjs} +11 -10
  137. package/dist/{summary-Lt2XLBK9.mjs → summary-C12LiEuJ.mjs} +8 -7
  138. package/dist/{sync-schema-BDElSynU.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
  139. package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
  140. package/dist/table-e6h8SLVX.mjs +20 -0
  141. package/dist/transform-BMYh1lsC.mjs +25 -0
  142. package/dist/transform-job-Cm7z5TfH.mjs +20 -0
  143. package/dist/{transform-job-BrhOLO4M.mjs → transform-job-DeTDPMxt.mjs} +1 -1
  144. package/dist/{tree-DfvjDjmk.mjs → tree-Des2ZG9d.mjs} +6 -5
  145. package/dist/{update-CqnDMNtZ.mjs → update-Bx54nWEI.mjs} +17 -15
  146. package/dist/{update-D9Z8cL7h.mjs → update-CyIZdbIQ.mjs} +11 -10
  147. package/dist/{update-CVxOxmt6.mjs → update-DBi5U8zb.mjs} +16 -14
  148. package/dist/{update-BYduslhn.mjs → update-DHZubok3.mjs} +18 -14
  149. package/dist/{update-BgcroYkF.mjs → update-DSgceARZ.mjs} +11 -10
  150. package/dist/{update-zp7pCBZH.mjs → update-DzAN4SPj.mjs} +15 -13
  151. package/dist/{update-qnFY5IuC.mjs → update-F6DmZncY.mjs} +11 -10
  152. package/dist/{update-B0bjPqKC.mjs → update-_QfgNa53.mjs} +12 -11
  153. package/dist/{update-dashcard-CQ3kmmss.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
  154. package/dist/{update-DzgXF082.mjs → update-mYVnoYNV.mjs} +15 -13
  155. package/dist/{update-DuA8-cCq.mjs → update-njHe3j-s.mjs} +15 -13
  156. package/dist/{upgrade-CIgTr2CG.mjs → upgrade-iAuvhX-W.mjs} +9 -8
  157. package/dist/{url-B5MgZXzg.mjs → url-DWaT6WIZ.mjs} +11 -10
  158. package/dist/{uuid-CJz9TmHI.mjs → uuid-CMKnS8-z.mjs} +8 -6
  159. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  160. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
  161. package/dist/{values-BXN6tx1i.mjs → values-BfSTAbzc.mjs} +8 -7
  162. package/dist/verify-D5YtTqqp.mjs +79 -0
  163. package/dist/{wait-BFqBlg0y.mjs → wait-8yV9_WIo.mjs} +2 -2
  164. package/dist/{wait-tDp9ZOou.mjs → wait-Bv3Tsnv4.mjs} +12 -8
  165. package/dist/{wait-flags-CN-e9zNq.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
  166. package/dist/workspace-CKLZrR7l.mjs +26 -0
  167. package/dist/{workspace-credentials-4lIxxz4g.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -2
  168. package/dist/{yaml-ECiog374.mjs → yaml-YTQiYJ9s.mjs} +1 -1
  169. package/package.json +2 -1
  170. package/skill-data/core/SKILL.md +55 -453
  171. package/skill-data/git-sync/SKILL.md +1 -1
  172. package/skill-data/mbql/SKILL.md +156 -0
  173. package/skill-data/mbql/references/operators.md +253 -0
  174. package/skill-data/transform/SKILL.md +2 -40
  175. package/skill-data/viz/SKILL.md +137 -0
  176. package/skill-data/viz/references/settings.md +312 -0
  177. package/skill-data/workspace/SKILL.md +45 -63
  178. package/skills/metabase-cli/SKILL.md +5 -26
  179. package/dist/add-collection-ucsyAMkV.mjs +0 -11
  180. package/dist/api-key-BENHbTbV.mjs +0 -13
  181. package/dist/auth-DICRtJDy.mjs +0 -19
  182. package/dist/card-l-UmrUIo.mjs +0 -20
  183. package/dist/collection-oV0olVY-.mjs +0 -19
  184. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  185. package/dist/create-CrUq6sib.mjs +0 -125
  186. package/dist/create-D3Z878yr.mjs +0 -50
  187. package/dist/dashboard-hbKDd36X.mjs +0 -20
  188. package/dist/db-qVK6NsdB.mjs +0 -22
  189. package/dist/eid-CDFXX_6H.mjs +0 -13
  190. package/dist/field-C0LE7RQI.mjs +0 -18
  191. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  192. package/dist/get-run-CwFuR4Uw.mjs +0 -36
  193. package/dist/git-sync-DV7YjniX.mjs +0 -28
  194. package/dist/is-dirty-LxVbm2C5.mjs +0 -10
  195. package/dist/key-CCJdVWKc.mjs +0 -12
  196. package/dist/license-Cb6ewEJO.mjs +0 -17
  197. package/dist/list-DV6CONhp.mjs +0 -55
  198. package/dist/measure-XhJuL77y.mjs +0 -19
  199. package/dist/package-DFUprkSZ.mjs +0 -85
  200. package/dist/ps-Bk6unzaX.mjs +0 -11
  201. package/dist/segment-DfxZdJmR.mjs +0 -19
  202. package/dist/snippet-BCY4KHBU.mjs +0 -19
  203. package/dist/status-1oUnw803.mjs +0 -56
  204. package/dist/status-J9HIDcA5.mjs +0 -32
  205. package/dist/table-BwX3Ib5f.mjs +0 -19
  206. package/dist/transform-iaAi37V0.mjs +0 -24
  207. package/dist/transform-job-Bemonf82.mjs +0 -19
  208. package/dist/workspace-BBsT0H0g.mjs +0 -24
  209. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  210. /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
  211. /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
  212. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
  213. /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
  214. /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
  215. /package/dist/{snippet-CSWqkslB.mjs → snippet-COggaWxx.mjs} +0 -0
  216. /package/dist/{transform-DR4ejuPM.mjs → transform-GTW3G-01.mjs} +0 -0
  217. /package/dist/{workspace-DUfqhPm5.mjs → workspace-BBXJczJK.mjs} +0 -0
@@ -1,66 +1,21 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-DuoDUTVL.mjs";
4
- import { ConfigError, MetabaseError, errorMessage } from "./predicates-CGO17Q15.mjs";
5
- import { readInput } from "./input-BQ-BZA8h.mjs";
6
- import { DEFAULT_PROFILE, HttpError, clearRejection, connectionFlags, createClient, defineMetabaseCommand, explicitProfileName, normalizeUrl, outputFlags, profileFlag, readEnvCredentials, recordRejection, writeProfile } from "./runtime-CDu6fykq.mjs";
7
- import { promptPassword, promptText } from "./prompt-DgDNy_Pc.mjs";
1
+ import { ConfigError, errorMessage } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { DEFAULT_PROFILE, ParsedVersionSchema, ProbedUser, defineMetabaseCommand, explicitProfileName, keyringFallbackWarning, normalizeUrl, readEnvCredentials, writeProbeFailure, writeProbeResult, writeProfile } from "./runtime-Dmv5VtUK.mjs";
4
+ import { verifyAndProbe } from "./verify-D5YtTqqp.mjs";
5
+ import { warn } from "./capabilities-7e9MgquN.mjs";
6
+ import { renderItem } from "./render-CfznwleY.mjs";
7
+ import { renderUserName, renderUserRole, renderVersionTag } from "./render-OQn3iRsI.mjs";
8
+ import { promptPassword, promptText } from "./prompt-CFKoys7k.mjs";
9
+ import { readInput } from "./input-cMSEqISy.mjs";
8
10
  import { z } from "zod";
9
11
 
10
- //#region src/domain/user.ts
11
- const CurrentUser = z.object({
12
- id: z.number().int(),
13
- email: z.email()
14
- }).loose();
15
- const CurrentUserCompact = CurrentUser.pick({
16
- id: true,
17
- email: true
18
- }).strip();
19
-
20
- //#endregion
21
- //#region src/core/auth/verify.ts
22
- const VERIFY_TIMEOUT_MS = 15e3;
23
- async function verifyCredentials(url, apiKey) {
24
- const client = createClient({
25
- url,
26
- apiKey
27
- });
28
- try {
29
- const user = await client.requestParsed(CurrentUser, "/api/user/current", {
30
- timeoutMs: VERIFY_TIMEOUT_MS,
31
- retries: 0
32
- });
33
- return {
34
- ok: true,
35
- user
36
- };
37
- } catch (error) {
38
- return failure(error);
39
- }
40
- }
41
- function failure(error) {
42
- if (error instanceof HttpError) return {
43
- ok: false,
44
- status: error.status,
45
- message: error.userMessage
46
- };
47
- if (error instanceof MetabaseError) return {
48
- ok: false,
49
- message: error.userMessage
50
- };
51
- return {
52
- ok: false,
53
- message: errorMessage(error)
54
- };
55
- }
56
-
57
- //#endregion
58
12
  //#region src/commands/auth/login.ts
59
13
  const LoginResult = z.object({
60
14
  profile: z.string(),
61
15
  url: z.string(),
62
16
  authenticated: z.boolean(),
63
- email: z.string().nullable()
17
+ user: ProbedUser.nullable(),
18
+ version: ParsedVersionSchema.nullable()
64
19
  });
65
20
  const loginView = {
66
21
  compactPick: LoginResult,
@@ -75,12 +30,23 @@ const loginView = {
75
30
  },
76
31
  {
77
32
  key: "authenticated",
78
- label: "Status",
33
+ label: "Authenticated",
79
34
  format: (value) => value === true ? "credentials verified" : "saved without verification"
80
35
  },
81
36
  {
82
- key: "email",
83
- label: "Logged in as"
37
+ key: "user",
38
+ label: "Logged in as",
39
+ format: (value) => renderUserName(value)
40
+ },
41
+ {
42
+ key: "user",
43
+ label: "Role",
44
+ format: (value) => renderUserRole(value)
45
+ },
46
+ {
47
+ key: "version",
48
+ label: "Version",
49
+ format: (value) => renderVersionTag(value)
84
50
  }
85
51
  ]
86
52
  };
@@ -89,6 +55,8 @@ var login_default = defineMetabaseCommand({
89
55
  name: "login",
90
56
  description: "Set Metabase credentials for a profile"
91
57
  },
58
+ details: "API-key auth only. The key is read from --api-key, $METABASE_API_KEY, or piped stdin (first non-empty wins); the URL from --url or $METABASE_URL. Both are prompted when stdin is a TTY.",
59
+ capabilities: { minVersion: 58 },
92
60
  args: {
93
61
  ...outputFlags,
94
62
  ...profileFlag,
@@ -111,44 +79,61 @@ var login_default = defineMetabaseCommand({
111
79
  if (args.apiKey) warn("warning: --api-key is visible in shell history and process listings — pipe the key on stdin or set METABASE_API_KEY instead");
112
80
  const url = await resolveUrl(args.url, env.url);
113
81
  const apiKey = await resolveApiKey(args.apiKey, env.apiKey);
114
- let email = null;
115
- let authenticated = false;
116
- if (!args["skip-verify"]) {
117
- const result = await verifyCredentials(url, apiKey);
118
- if (!result.ok) {
119
- await recordRejection(profileName, {
120
- reason: result.message,
121
- url
122
- });
123
- throw new ConfigError(`verification failed: ${result.message} — credentials were not saved for profile "${profileName}"`);
124
- }
125
- email = result.user.email;
126
- authenticated = true;
82
+ if (args["skip-verify"]) {
83
+ const location$1 = await writeProfile({
84
+ url,
85
+ apiKey
86
+ }, profileName);
87
+ if (location$1.backend === "file") warn(keyringFallbackWarning(location$1, "credentials"));
88
+ renderItem({
89
+ profile: profileName,
90
+ url,
91
+ authenticated: false,
92
+ user: null,
93
+ version: null
94
+ }, loginView, ctx);
95
+ return;
96
+ }
97
+ const result = await verifyAndProbe(url, apiKey);
98
+ if (!result.ok) {
99
+ await writeProbeFailure(profileName, {
100
+ kind: result.kind,
101
+ reason: result.message
102
+ });
103
+ throw new ConfigError(formatVerifyFailureMessage(profileName, result));
127
104
  }
128
105
  const location = await writeProfile({
129
106
  url,
130
107
  apiKey
131
108
  }, profileName);
132
- await clearRejection(profileName);
133
- if (location.backend === "file") warn(`warning: OS keychain unavailable; credentials stored as plaintext at ${location.path}`);
109
+ if (location.backend === "file") warn(keyringFallbackWarning(location, "credentials"));
110
+ await writeProbeResult(profileName, {
111
+ user: result.user,
112
+ server: result.server
113
+ });
134
114
  renderItem({
135
115
  profile: profileName,
136
116
  url,
137
- authenticated,
138
- email
117
+ authenticated: true,
118
+ user: result.user,
119
+ version: result.server.version
139
120
  }, loginView, ctx);
140
121
  }
141
122
  });
123
+ function formatVerifyFailureMessage(profileName, failure) {
124
+ const which = failure.which === "user" ? "/api/user/current" : "/api/session/properties";
125
+ return `verification failed (${which}): ${failure.message} — credentials were not saved for profile "${profileName}"`;
126
+ }
142
127
  async function resolveLoginProfile(flagProfile) {
143
128
  const explicit = explicitProfileName(flagProfile);
144
129
  if (explicit !== null) return explicit;
145
130
  if (!process.stdin.isTTY) return DEFAULT_PROFILE;
146
- return promptText({
131
+ const entered = (await promptText({
147
132
  message: "Profile name",
148
133
  placeholder: DEFAULT_PROFILE,
149
- initialValue: DEFAULT_PROFILE,
150
- validate: (input) => input ? void 0 : "Profile name is required"
151
- });
134
+ defaultValue: DEFAULT_PROFILE
135
+ })).trim();
136
+ return entered === "" ? DEFAULT_PROFILE : entered;
152
137
  }
153
138
  async function resolveUrl(flagUrl, envUrl) {
154
139
  if (flagUrl) return normalizeUrl(flagUrl);
@@ -1,9 +1,9 @@
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 { clearProfile, clearRejection, defineMetabaseCommand, outputFlags, profileFlag, resolveProfileName } from "./runtime-CDu6fykq.mjs";
6
- import { promptConfirm } from "./prompt-DgDNy_Pc.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { clearProfile, defineMetabaseCommand, resolveProfileName } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { promptConfirm } from "./prompt-CFKoys7k.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/commands/auth/logout.ts
@@ -34,6 +34,7 @@ var logout_default = defineMetabaseCommand({
34
34
  name: "logout",
35
35
  description: "Clear stored credentials for a profile"
36
36
  },
37
+ capabilities: null,
37
38
  args: {
38
39
  ...outputFlags,
39
40
  ...profileFlag,
@@ -61,7 +62,7 @@ var logout_default = defineMetabaseCommand({
61
62
  return;
62
63
  }
63
64
  }
64
- const [cleared] = await Promise.all([clearProfile(profileName), clearRejection(profileName)]);
65
+ const cleared = await clearProfile(profileName);
65
66
  renderItem({
66
67
  profile: profileName,
67
68
  cleared,
@@ -1,11 +1,11 @@
1
- import "./package-DFUprkSZ.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
4
- import { defineMetabaseCommand, outputFlags, parseInteger } from "./runtime-CDu6fykq.mjs";
5
- import { parseId } from "./parse-id-CysSaCbf.mjs";
6
- import "./poll-p9Y7-JEQ.mjs";
7
- import "./process-zJeVJZTM.mjs";
8
- import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-D5FTIoD0.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { outputFlags } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand, parseInteger } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
6
+ import "./poll-DHKDpCiq.mjs";
7
+ import "./process-C7V8LJ-j.mjs";
8
+ import { checkDockerReady, containerLifecycleStatus, containerNameFor, streamLogs } from "./docker-Oq80q3tu.mjs";
9
9
 
10
10
  //#region src/commands/workspace/logs.ts
11
11
  const DEFAULT_TAIL = 200;
@@ -14,6 +14,7 @@ var logs_default = defineMetabaseCommand({
14
14
  name: "logs",
15
15
  description: "Stream the local container's logs (passthrough to `docker logs`)"
16
16
  },
17
+ capabilities: null,
17
18
  args: {
18
19
  ...outputFlags,
19
20
  id: {
@@ -1,6 +1,6 @@
1
- import { getMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
2
- import { writeJson } from "./render-DuoDUTVL.mjs";
3
- import "./predicates-CGO17Q15.mjs";
1
+ import { getMetabaseAugment, resolveCitty, toAliasArray } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { Capabilities } from "./capabilities-7e9MgquN.mjs";
3
+ import { writeJson } from "./render-CfznwleY.mjs";
4
4
  import { defineCommand } from "citty";
5
5
  import { z } from "zod";
6
6
 
@@ -26,9 +26,11 @@ const ManifestArg = z.object({
26
26
  const ManifestEntry = z.object({
27
27
  command: z.string(),
28
28
  description: z.string(),
29
+ details: z.string().optional(),
29
30
  examples: z.array(z.string()),
30
31
  args: z.array(ManifestArg),
31
- outputSchema: z.unknown().nullable()
32
+ outputSchema: z.unknown().nullable(),
33
+ capabilities: Capabilities.nullable()
32
34
  });
33
35
  const Manifest = z.object({
34
36
  version: z.literal(1),
@@ -53,13 +55,17 @@ async function walk(cmd, path) {
53
55
  }
54
56
  const args = await resolveCitty(cmd.args) ?? {};
55
57
  const augment = getMetabaseAugment(cmd);
56
- return [{
58
+ if (augment === null) return [];
59
+ const entry = {
57
60
  command: path.join(" "),
58
61
  description: readDescription(meta),
59
- examples: augment ? Array.from(augment.examples) : [],
62
+ examples: Array.from(augment.examples),
60
63
  args: convertArgs(args),
61
- outputSchema: augment?.outputSchema ? z.toJSONSchema(augment.outputSchema) : null
62
- }];
64
+ outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
65
+ capabilities: augment.capabilities
66
+ };
67
+ if (augment.details !== null) entry.details = augment.details;
68
+ return [entry];
63
69
  }
64
70
  function readDescription(meta) {
65
71
  if (meta === void 0) return "";
@@ -87,17 +93,11 @@ function readOptions(def) {
87
93
  return [...def.options];
88
94
  }
89
95
  function readAlias(def) {
90
- if (!("alias" in def) || def.alias === void 0) return [];
91
- return Array.isArray(def.alias) ? def.alias : [def.alias];
96
+ return "alias" in def ? toAliasArray(def.alias) : [];
92
97
  }
93
98
  function isPrimitiveDefault(value) {
94
99
  return typeof value === "string" || typeof value === "boolean" || typeof value === "number";
95
100
  }
96
- async function resolveCitty(value) {
97
- if (value === void 0) return void 0;
98
- if (typeof value === "function") return value();
99
- return value;
100
- }
101
101
 
102
102
  //#endregion
103
103
  //#region src/commands/manifest.ts
@@ -0,0 +1,20 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/measure/index.ts
4
+ var measure_default = defineCommand({
5
+ meta: {
6
+ name: "measure",
7
+ alias: "measures",
8
+ description: "Manage Metabase measures"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-CL7eCOQE.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-DQTZG_NP.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-CwGtmwqm.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-DzAN4SPj.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-CRhiBpPJ.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { measure_default as default };
@@ -10,8 +10,8 @@ const Measure = z.object({
10
10
  definition: z.unknown(),
11
11
  creator_id: z.number().int(),
12
12
  entity_id: z.string().nullable(),
13
- dimensions: z.array(z.unknown()).nullable(),
14
- dimension_mappings: z.array(z.unknown()).nullable(),
13
+ dimensions: z.array(z.unknown()).nullish(),
14
+ dimension_mappings: z.array(z.unknown()).nullish(),
15
15
  definition_description: z.string().nullable().optional(),
16
16
  result_column_name: z.string().nullable().optional(),
17
17
  created_at: z.string(),
@@ -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 { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import "./field-B3gvaqpK.mjs";
8
- import "./table-B-PYcgGb.mjs";
9
- import { Database, databaseView } from "./database-vvig8k4x.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import "./field-yomXlkvl.mjs";
7
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
8
+ import "./table-C7a5V6Zn.mjs";
9
+ import { Database, databaseView } from "./database-lH-B3G1I.mjs";
10
10
 
11
11
  //#region src/commands/db/metadata.ts
12
12
  var metadata_default = defineMetabaseCommand({
@@ -14,6 +14,7 @@ var metadata_default = defineMetabaseCommand({
14
14
  name: "metadata",
15
15
  description: "Get a database with its tables and fields hydrated"
16
16
  },
17
+ capabilities: { minVersion: 58 },
17
18
  args: {
18
19
  ...outputFlags,
19
20
  ...profileFlag,
@@ -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 { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-CDu6fykq.mjs";
6
- import { parseId } from "./parse-id-CysSaCbf.mjs";
7
- import "./field-B3gvaqpK.mjs";
8
- import { TableQueryMetadata, tableView } from "./table-B-PYcgGb.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import "./field-yomXlkvl.mjs";
7
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
8
+ import { TableQueryMetadata, tableView } from "./table-C7a5V6Zn.mjs";
9
9
 
10
10
  //#region src/commands/table/metadata.ts
11
11
  var metadata_default = defineMetabaseCommand({
@@ -13,6 +13,7 @@ var metadata_default = defineMetabaseCommand({
13
13
  name: "metadata",
14
14
  description: "Get a table with its fields, FKs, and dimensions hydrated"
15
15
  },
16
+ capabilities: { minVersion: 58 },
16
17
  args: {
17
18
  ...outputFlags,
18
19
  ...profileFlag,
@@ -0,0 +1,11 @@
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+
3
+ //#region src/commands/parse-enum.ts
4
+ function parseEnumFlag(value, schema, name) {
5
+ const result = schema.safeParse(value);
6
+ if (result.success) return result.data;
7
+ throw new ConfigError(`invalid ${name}: "${value}" (expected one of: ${schema.options.join(", ")})`);
8
+ }
9
+
10
+ //#endregion
11
+ export { parseEnumFlag };
@@ -1,4 +1,4 @@
1
- import { parseInteger } from "./runtime-CDu6fykq.mjs";
1
+ import { parseInteger } from "./runtime-Dmv5VtUK.mjs";
2
2
 
3
3
  //#region src/commands/parse-id.ts
4
4
  function parseId(value, name = "id") {
@@ -1,4 +1,4 @@
1
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
2
 
3
3
  //#region src/commands/collection/parse-ref.ts
4
4
  const SPECIAL_TOKENS = new Set(["root", "trash"]);
@@ -1,5 +1,5 @@
1
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
2
- import { parseCsv } from "./runtime-CDu6fykq.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { parseCsv } from "./runtime-Dmv5VtUK.mjs";
3
3
 
4
4
  //#region src/commands/workspace/database/parse-schemas.ts
5
5
  function parseSchemasCsv(raw) {
@@ -1,10 +1,10 @@
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 { defineMetabaseCommand, listEnvelopeSchema, outputFlags, wrapList } from "./runtime-CDu6fykq.mjs";
6
- import "./yaml-ECiog374.mjs";
7
- import { findSkillByName, loadAllSkills, loadVisibleSkills } from "./skills-CHU7uuDU.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { listEnvelopeSchema, outputFlags, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import "./yaml-YTQiYJ9s.mjs";
7
+ import { findSkillByName, loadAllSkills, loadVisibleSkills } from "./skills-CiN1OQ8W.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/skills/path.ts
@@ -1,5 +1,5 @@
1
- import { TimeoutError } from "./predicates-CGO17Q15.mjs";
2
- import { combineAborts, throwIfAborted } from "./runtime-CDu6fykq.mjs";
1
+ import { TimeoutError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { combineAborts, throwIfAborted } from "./runtime-Dmv5VtUK.mjs";
3
3
  import { setTimeout } from "node:timers/promises";
4
4
 
5
5
  //#region src/runtime/poll.ts
@@ -1,5 +1,5 @@
1
- import { parseJsonOrPlain } from "./runtime-CDu6fykq.mjs";
2
- import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS, pollUntil } from "./poll-p9Y7-JEQ.mjs";
1
+ import { parseJsonOrPlain } from "./runtime-Dmv5VtUK.mjs";
2
+ import { pollUntil } from "./poll-DHKDpCiq.mjs";
3
3
  import { z } from "zod";
4
4
 
5
5
  //#region src/domain/git-sync.ts
@@ -144,23 +144,6 @@ const syncTaskIdleView = {
144
144
  label: "Status"
145
145
  }]
146
146
  };
147
- const pollFlags = {
148
- wait: {
149
- type: "boolean",
150
- description: "Poll the resulting task until it reaches a terminal status",
151
- default: true
152
- },
153
- timeout: {
154
- type: "string",
155
- description: "Polling timeout in ms (used with --wait)",
156
- default: String(DEFAULT_TIMEOUT_MS)
157
- },
158
- interval: {
159
- type: "string",
160
- description: "Polling interval in ms (used with --wait)",
161
- default: String(DEFAULT_INTERVAL_MS)
162
- }
163
- };
164
147
  function isTerminal(status) {
165
148
  return TERMINAL_STATUSES.has(status);
166
149
  }
@@ -192,4 +175,4 @@ function throwIfFailedTask(final, verb) {
192
175
  }
193
176
 
194
177
  //#endregion
195
- export { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, SyncTask, SyncTaskOrIdle, fetchCurrentTask, fetchOptionalParsed, pollFlags, pollSyncTask, syncDirtyItemView, syncTaskIdleView, syncTaskView, throwIfFailedTask };
178
+ export { REMOTE_SYNC_PATHS, SyncDirtyItem, SyncDirtyItemCompact, SyncTask, SyncTaskOrIdle, fetchCurrentTask, fetchOptionalParsed, pollSyncTask, syncDirtyItemView, syncTaskIdleView, syncTaskView, throwIfFailedTask };
@@ -1,7 +1,7 @@
1
- import { writeJson } from "./render-DuoDUTVL.mjs";
2
- import { ChainedRequestError, ConfigError, MetabaseError } from "./predicates-CGO17Q15.mjs";
3
- import { HttpError } from "./runtime-CDu6fykq.mjs";
4
- import { Card } from "./card-CQxvHeyP.mjs";
1
+ import { ChainedRequestError, ConfigError, MetabaseError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { HttpError } from "./runtime-Dmv5VtUK.mjs";
3
+ import { writeJson } from "./render-CfznwleY.mjs";
4
+ import { Card } from "./card-DlCAaAPq.mjs";
5
5
  import { z } from "zod";
6
6
 
7
7
  //#region src/commands/dashboard/preflight.ts
@@ -1,4 +1,4 @@
1
- import { isNotFoundError } from "./predicates-CGO17Q15.mjs";
1
+ import { isNotFoundError } from "./command-augment-BH9qgQ5u.mjs";
2
2
  import { spawn } from "node:child_process";
3
3
 
4
4
  //#region src/runtime/process.ts
@@ -1,4 +1,4 @@
1
- import { AbortError, ConfigError } from "./predicates-CGO17Q15.mjs";
1
+ import { AbortError, ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
2
  import { confirm, isCancel, password, text } from "@clack/prompts";
3
3
 
4
4
  //#region src/output/prompt.ts
@@ -6,8 +6,10 @@ async function promptText(opts) {
6
6
  requireTty(opts.message);
7
7
  const value = await text({
8
8
  message: opts.message,
9
+ defaultValue: "",
9
10
  ...opts.placeholder !== void 0 && { placeholder: opts.placeholder },
10
11
  ...opts.initialValue !== void 0 && { initialValue: opts.initialValue },
12
+ ...opts.defaultValue !== void 0 && { defaultValue: opts.defaultValue },
11
13
  ...opts.validate !== void 0 && { validate: opts.validate }
12
14
  });
13
15
  if (isCancel(value)) throw new AbortError();
@@ -1,17 +1,17 @@
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 "./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 { parseId } from "./parse-id-CysSaCbf.mjs";
10
- import "./poll-p9Y7-JEQ.mjs";
11
- import { parseWaitFlags, waitFlags } from "./wait-flags-CN-e9zNq.mjs";
12
- import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-DUfqhPm5.mjs";
13
- import { waitForDatabaseProvisioned } from "./wait-BFqBlg0y.mjs";
14
- import { parseSchemasCsv } from "./parse-schemas-B10n01ez.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import "./input-cMSEqISy.mjs";
7
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
8
+ import { readBody } from "./body-DjdFxjpg.mjs";
9
+ import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
10
+ import "./poll-DHKDpCiq.mjs";
11
+ import { parseWaitFlags, waitFlags } from "./wait-flags-Dzq9BGQY.mjs";
12
+ import { Workspace, WorkspaceProvisionInput, workspaceView } from "./workspace-BBXJczJK.mjs";
13
+ import { waitForDatabaseProvisioned } from "./wait-8yV9_WIo.mjs";
14
+ import { parseSchemasCsv } from "./parse-schemas-BqUdWUwq.mjs";
15
15
 
16
16
  //#region src/commands/workspace/database/provision.ts
17
17
  var provision_default = defineMetabaseCommand({
@@ -19,16 +19,16 @@ var provision_default = defineMetabaseCommand({
19
19
  name: "provision",
20
20
  description: "Provision a database into a workspace"
21
21
  },
22
+ capabilities: {
23
+ minVersion: 62,
24
+ tokenFeature: "workspaces"
25
+ },
22
26
  args: {
23
27
  ...outputFlags,
24
28
  ...profileFlag,
25
29
  ...connectionFlags,
26
30
  ...bodyInputFlags,
27
31
  ...waitFlags,
28
- "database-id": {
29
- type: "string",
30
- description: "Database id (alternative to --body / --file)"
31
- },
32
32
  schemas: {
33
33
  type: "string",
34
34
  description: "Comma-separated input schemas (alternative to --body / --file)"
@@ -37,23 +37,28 @@ var provision_default = defineMetabaseCommand({
37
37
  type: "positional",
38
38
  description: "Workspace id",
39
39
  required: true
40
+ },
41
+ "db-id": {
42
+ type: "positional",
43
+ description: "Database id (alternative to --body / --file)",
44
+ required: false
40
45
  }
41
46
  },
42
47
  outputSchema: Workspace,
43
48
  examples: [
44
- "mb workspace database provision 1 --database-id 5 --schemas analytics,github",
45
- "mb workspace database provision 1 --database-id 5 --schemas analytics --wait",
49
+ "mb workspace database provision 1 5 --schemas analytics,github",
50
+ "mb workspace database provision 1 5 --schemas analytics --wait",
46
51
  "mb workspace database provision 1 --file provision.json"
47
52
  ],
48
53
  async run({ args, ctx, getClient }) {
49
54
  const workspaceId = parseId(args.id);
50
- const databaseIdFlag = args["database-id"];
55
+ const databaseIdArg = args["db-id"];
51
56
  const schemasFlag = args.schemas;
52
57
  const wait = parseWaitFlags(args);
53
58
  let body;
54
- if (databaseIdFlag !== void 0 && databaseIdFlag !== "") {
55
- const databaseId = parseId(databaseIdFlag, "--database-id");
56
- if (schemasFlag === void 0 || schemasFlag === "") throw new ConfigError("--schemas is required when using --database-id");
59
+ if (databaseIdArg !== void 0 && databaseIdArg !== "") {
60
+ const databaseId = parseId(databaseIdArg, "db-id");
61
+ if (schemasFlag === void 0 || schemasFlag === "") throw new ConfigError("--schemas is required when providing a db-id");
57
62
  const input_schemas = parseSchemasCsv(schemasFlag);
58
63
  body = WorkspaceProvisionInput.parse({
59
64
  database_id: databaseId,