@metabase/cli 0.3.1-alpha.support-worktrees.b634907 → 0.3.1-alpha.versioning.9ac5f50

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 (268) hide show
  1. package/dist/{add-collection-CxzzDG4z.mjs → add-collection-Dmd-uNeU.mjs} +6 -10
  2. package/dist/{alert-CQ7Az16h.mjs → alert-D1u2MVZj.mjs} +7 -7
  3. package/dist/{alerts-DmwyyBfW.mjs → alerts-DcBjcfEE.mjs} +7 -8
  4. package/dist/{append-B0avMkvW.mjs → append-B9Htvmab.mjs} +5 -6
  5. package/dist/{archive-CMTHh4-w.mjs → archive-B660RguB.mjs} +4 -5
  6. package/dist/{archive-THcEfy9B.mjs → archive-BNivAYGr.mjs} +5 -6
  7. package/dist/{archive-DCyeRNfV.mjs → archive-BUoYMkxO.mjs} +4 -5
  8. package/dist/{archive-BZEu6UfT.mjs → archive-BVmFGFwG.mjs} +6 -7
  9. package/dist/archive-Bf014rFm.mjs +32 -0
  10. package/dist/{archive-DFofUIEC.mjs → archive-BmsZFOZY.mjs} +4 -5
  11. package/dist/archive-CNif6BKy.mjs +32 -0
  12. package/dist/{archive-BPSNe0Ul.mjs → archive-CgmidYZV.mjs} +4 -5
  13. package/dist/{archive-Cvrkz8F8.mjs → archive-CvU2z5192.mjs} +5 -6
  14. package/dist/{archive-BQ50OZ7y.mjs → archive-DhDQIKR_.mjs} +4 -5
  15. package/dist/{archive-BVblae-p.mjs → archive-bPdDITuY.mjs} +4 -5
  16. package/dist/{auth-BEEkuu4J.mjs → auth-CefYEPP5.mjs} +5 -5
  17. package/dist/{body-DxRSAMNC.mjs → body-C7m9q4cm.mjs} +3 -3
  18. package/dist/{branches-CmWc8NyL.mjs → branches-pz04OjF2.mjs} +4 -8
  19. package/dist/{cancel-DrQqmxvn.mjs → cancel-CNLnv19e.mjs} +4 -5
  20. package/dist/cancel-task-DbnxSh7U.mjs +25 -0
  21. package/dist/card-BRarvKYX.mjs +24 -0
  22. package/dist/{card-CrBGUkGQ.mjs → card-DZxRmver.mjs} +0 -1
  23. package/dist/{card-BEeafd4Y.mjs → card-zyUkr2nS.mjs} +1 -1
  24. package/dist/{cards-M_6X8wCI.mjs → cards-DtYlVoGP.mjs} +5 -6
  25. package/dist/cli.mjs +566 -170
  26. package/dist/{client-DYD8WZYy.mjs → client-Bv7Iwdvh.mjs} +285 -269
  27. package/dist/collection-CKeO8X7U.mjs +20 -0
  28. package/dist/{collection-CJHqsFKP.mjs → collection-DALwHnbz.mjs} +1 -1
  29. package/dist/{collection-BxE7OzcQ.mjs → collection-WFdBeyqa.mjs} +4 -7
  30. package/dist/{collection-namespace-CEoQ7G08.mjs → collection-namespace-CvT0TIZA.mjs} +2 -2
  31. package/dist/{content-translation-C8MlXPOF.mjs → content-translation-D7POzJJ6.mjs} +3 -3
  32. package/dist/{create-CoubLR5o.mjs → create-BEE8uvz2.mjs} +9 -6
  33. package/dist/{create-D0anrINz.mjs → create-Bh2j733n.mjs} +11 -16
  34. package/dist/{create-BupBEwR2.mjs → create-Bwg-5p08.mjs} +8 -13
  35. package/dist/{create-ByuJ6T4k.mjs → create-CGPle4nE.mjs} +7 -8
  36. package/dist/{create-hTc131aX.mjs → create-CGgPnb7L.mjs} +4 -5
  37. package/dist/{create-CY-SzM66.mjs → create-CLgalJUe.mjs} +12 -17
  38. package/dist/{create-C2XFfbjx.mjs → create-CN24yp_W.mjs} +6 -7
  39. package/dist/{create-BLWwN0uw.mjs → create-CuYGZ4gu2.mjs} +5 -6
  40. package/dist/{create-CJ7Am4Gc.mjs → create-DGHILnnk.mjs} +5 -6
  41. package/dist/{create-z-oMrlfT.mjs → create-DYd_o9BD.mjs} +5 -9
  42. package/dist/{create-BqpkCjx4.mjs → create-DhDREiiy.mjs} +4 -5
  43. package/dist/{create-myI6doga.mjs → create-Di4YvIbK.mjs} +5 -6
  44. package/dist/{create-ldrghMd1.mjs → create-DnqnjGGf.mjs} +4 -5
  45. package/dist/{create-C7iooS6W.mjs → create-Ds-DnSBe.mjs} +9 -15
  46. package/dist/{create-BA_tTDEk.mjs → create-JOXq0ULN.mjs} +5 -6
  47. package/dist/create-branch-DWcxC30N.mjs +31 -0
  48. package/dist/{csv-DBNzJiWK.mjs → csv-CUQvcCEk.mjs} +5 -6
  49. package/dist/{current-task-YzemU0Ic.mjs → current-task-D6P0eL21.mjs} +8 -16
  50. package/dist/{dashboard-B1mpfCq_.mjs → dashboard-BudI952R.mjs} +10 -10
  51. package/dist/{db-1tLH3nYI.mjs → db-C7UTd-6P.mjs} +7 -7
  52. package/dist/{delete-CD_-B4Kq.mjs → delete-DSxqbcFE.mjs} +5 -6
  53. package/dist/{delete-QNgBV6eS.mjs → delete-DbZZKcYj.mjs} +6 -11
  54. package/dist/{delete-DjAUp9mk.mjs → delete-Ds-zGh9C.mjs} +5 -6
  55. package/dist/{delete-eAUB7p-f.mjs → delete-Ud6iliGM.mjs} +6 -11
  56. package/dist/{delete-CpKH5ia4.mjs → delete-_IHffP-A.mjs} +5 -6
  57. package/dist/{delete-runtime-b2_ZMSjj.mjs → delete-runtime-BjHL1ryM.mjs} +1 -2
  58. package/dist/{delete-table-DamlxnSO.mjs → delete-table-DtXH6IN5.mjs} +6 -11
  59. package/dist/dependencies-CR1dlq-A.mjs +36 -0
  60. package/dist/dirty-CYxnOnh0.mjs +28 -0
  61. package/dist/document-BoILnE_1.mjs +19 -0
  62. package/dist/{download-C4v7u-AV.mjs → download-DPpmmYQe.mjs} +3 -7
  63. package/dist/{eid-CP35PdEF.mjs → eid-D-BbtWjt.mjs} +4 -6
  64. package/dist/{events-DmbzKIh_.mjs → events-CJEnn8WE.mjs} +5 -6
  65. package/dist/{export-i8D6laBG.mjs → export-BOgyuIOQ.mjs} +13 -29
  66. package/dist/{field-BKn9bt7I.mjs → field-CzHBOPER.mjs} +5 -5
  67. package/dist/{fields-8_p81BqN.mjs → fields-Bwgkrvus.mjs} +5 -6
  68. package/dist/get-B89DUSvw.mjs +31 -0
  69. package/dist/get-BL90QC64.mjs +36 -0
  70. package/dist/get-BLJSCw53.mjs +31 -0
  71. package/dist/{get-BBOfshz1.mjs → get-BOLwso0V.mjs} +6 -7
  72. package/dist/{get-BvW21ujw.mjs → get-BaPadzdM.mjs} +4 -5
  73. package/dist/{get-vvs0qzzM.mjs → get-BfVCLBqc.mjs} +4 -5
  74. package/dist/{get-B0g6VMBC.mjs → get-C1ZdOvMm.mjs} +4 -5
  75. package/dist/{get-N4dOaTsp.mjs → get-CLu4yzMp2.mjs} +5 -6
  76. package/dist/get-COwdtskS.mjs +27 -0
  77. package/dist/{get-CPTbySa7.mjs → get-CWfIiXwL.mjs} +4 -5
  78. package/dist/get-CqQ-pf0q.mjs +89 -0
  79. package/dist/{get-DnCE7K0y.mjs → get-CvIgxPXV.mjs} +5 -6
  80. package/dist/{get-vrccOMBk.mjs → get-D4OTJblo.mjs} +4 -5
  81. package/dist/{get-BbHPFNqr.mjs → get-D8lHwu4-.mjs} +4 -5
  82. package/dist/{get-CWf46UFu.mjs → get-DVi3a2nm.mjs} +6 -7
  83. package/dist/{get-DFkbi5L3.mjs → get-DgnYF7LR.mjs} +4 -5
  84. package/dist/{get-BHGgXqUq.mjs → get-DsKmZfM2.mjs} +4 -5
  85. package/dist/{get-CAzSP-7o.mjs → get-DyyPiiaB.mjs} +4 -5
  86. package/dist/{get-Bds6Izxk.mjs → get-Eqq13YY-.mjs} +4 -5
  87. package/dist/{get-run-4Ng8_awa.mjs → get-run-Iya0Yw9s.mjs} +6 -7
  88. package/dist/{git-sync-DLzJrdMi.mjs → git-sync-BDnxPrqU.mjs} +3 -22
  89. package/dist/git-sync-CdN0Maun.mjs +28 -0
  90. package/dist/{git-sync-LQIVMNxO.mjs → git-sync-DxD_ng48.mjs} +2 -31
  91. package/dist/{group-YN6jj2AN.mjs → group-CmVCLBDz.mjs} +3 -3
  92. package/dist/{has-remote-changes-BXPGI9xG.mjs → has-remote-changes-DfJUMP8F.mjs} +7 -18
  93. package/dist/{import-BoxOkA-G.mjs → import-FEAx-Y5A.mjs} +12 -32
  94. package/dist/{input-DH9i67x_.mjs → input-DFZ_qGW_.mjs} +1 -1
  95. package/dist/is-dirty-BsYjBSXG.mjs +32 -0
  96. package/dist/{items-Cv6iAzrI.mjs → items-D4rstE12.mjs} +10 -18
  97. package/dist/{key-BEhqIzIQ.mjs → key-BmWundO3.mjs} +1 -1
  98. package/dist/{library-fhVn1KDC.mjs → library-CmctxHjv.mjs} +1 -1
  99. package/dist/library-DXB8sm4r.mjs +81 -0
  100. package/dist/{library-CRaOhJnj.mjs → library-uzyHWBap.mjs} +5 -5
  101. package/dist/{list-DOaWCx8S.mjs → list-1DkkU82x.mjs} +17 -25
  102. package/dist/{list-BLJkJp5a.mjs → list-B7tqNV8B.mjs} +4 -5
  103. package/dist/{list-WSJLnunb.mjs → list-BRpPbvyS.mjs} +4 -5
  104. package/dist/{list-BBp9XjYs.mjs → list-BXL8HFr_.mjs} +4 -5
  105. package/dist/{list-L2U1l6R4.mjs → list-Bjj0z5BS.mjs} +6 -7
  106. package/dist/{list-DhrapAcy.mjs → list-BmMi_wPD.mjs} +5 -6
  107. package/dist/list-CC1M_n6Z.mjs +28 -0
  108. package/dist/list-CQy0z7f9.mjs +28 -0
  109. package/dist/{list-BwkfWtP2.mjs → list-D_zvX0ms.mjs} +4 -5
  110. package/dist/{list--2T-GUEF.mjs → list-DeNGm9G4.mjs} +5 -6
  111. package/dist/list-Dgm6TkqR.mjs +38 -0
  112. package/dist/list-DoTiQc3D.mjs +36 -0
  113. package/dist/{list-C8J3n8B8.mjs → list-DrS3ePsv.mjs} +4 -5
  114. package/dist/list-bN0RC14-.mjs +59 -0
  115. package/dist/{list-oAAgU5uE.mjs → list-ndIl9XqV.mjs} +11 -18
  116. package/dist/{list-tutXEQRW.mjs → list-sQcA4g05.mjs} +5 -6
  117. package/dist/{list-9uvk9dIA.mjs → list-squb_ioH.mjs} +4 -5
  118. package/dist/{list-DOZNpX4b.mjs → list-xMfCeuZc.mjs} +5 -6
  119. package/dist/{login-DqWRF3Og.mjs → login-D_1-zE4A.mjs} +15 -13
  120. package/dist/{logout-ChCz1bkf.mjs → logout-DPi2q1Wu.mjs} +3 -5
  121. package/dist/{measure-C5dIdFj1.mjs → measure-CdA8Nl3Z.mjs} +6 -6
  122. package/dist/{notification-DVrLkjFT.mjs → notification-Fcq1fIPw.mjs} +1 -1
  123. package/dist/{parameter-values-Dy4cBs5y.mjs → parameter-values-C6dj6I4g.mjs} +4 -6
  124. package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-B1t8S194.mjs} +1 -1
  125. package/dist/{parse-id-DDCn3VXx.mjs → parse-id-DR8aUSdL.mjs} +1 -1
  126. package/dist/{parse-ref-Wv21Roup.mjs → parse-ref-BJ_Q0tNW.mjs} +3 -7
  127. package/dist/{path-IYhuzjQV.mjs → path-B96DI8u2.mjs} +5 -6
  128. package/dist/{poll-75SvT7Zv.mjs → poll-By46YQ5J.mjs} +2 -2
  129. package/dist/{preflight-HLUVr2Yf.mjs → preflight-Bl1oitm8.mjs} +3 -4
  130. package/dist/{process-DBOOrmET.mjs → process-CcQM4qPv.mjs} +1 -1
  131. package/dist/{publish-CMkCSt8i.mjs → publish-BKJYvxif.mjs} +9 -10
  132. package/dist/{pulse-a-83M4DV.mjs → pulse-DhG6I9mI.mjs} +1 -1
  133. package/dist/{query-tWQAV9pb.mjs → query-BKSM-pbi.mjs} +9 -11
  134. package/dist/{query-Bka77J62.mjs → query-qBHjZQc_.mjs} +7 -10
  135. package/dist/{query-result-E4Q-Gra6.mjs → query-result-DBDwk8TS.mjs} +1 -1
  136. package/dist/{remove-collection-BV9wRQZD.mjs → remove-collection-BWFW7Rn6.mjs} +6 -10
  137. package/dist/{render-DHjCcUXn.mjs → render-DmykmrFB.mjs} +11 -8
  138. package/dist/{replace-mt47dlRV.mjs → replace-BmAqD3zY.mjs} +5 -6
  139. package/dist/{rescan-values-6cRjcpTs.mjs → rescan-values-BrCLrihF.mjs} +4 -5
  140. package/dist/{run-DI_pDxji.mjs → run-CtbzjDKY.mjs} +6 -7
  141. package/dist/{run-BmGmC-GQ.mjs → run-q5Y44Fxj.mjs} +26 -15
  142. package/dist/{runs-9Fu0mug5.mjs → runs-JFlbezkQ.mjs} +7 -8
  143. package/dist/{runtime-CNAZ_FuR.mjs → runtime-BQiGgbgZ.mjs} +851 -361
  144. package/dist/{schema-tables-CLG0mtQb.mjs → schema-tables-Bzx2ShyE.mjs} +5 -6
  145. package/dist/{schemas-Cm5NWy59.mjs → schemas-ww5mU2AS.mjs} +5 -6
  146. package/dist/{search-CljYyf2F.mjs → search-J4RwCof-.mjs} +9 -15
  147. package/dist/{segment-IRzlQggt.mjs → segment-XXTjU0eG.mjs} +6 -6
  148. package/dist/{selectors-D4iOP5uB.mjs → selectors-BAAZMi43.mjs} +3 -3
  149. package/dist/{send-D7DBnQbu.mjs → send-BmpDlw9O.mjs} +4 -5
  150. package/dist/{set-DKN8fuC6.mjs → set-DUWrSza9.mjs} +5 -6
  151. package/dist/{set-active-CkE0Eiqh.mjs → set-active-BiUlbNI5.mjs} +5 -6
  152. package/dist/{setting-CN4l8N-b.mjs → setting-B1KBQN3M.mjs} +4 -4
  153. package/dist/{setup-BpTptmdO.mjs → setup-CVaNVwOd.mjs} +4 -5
  154. package/dist/{signal-CMd0EFUa.mjs → signal-GhGmuHfx.mjs} +11 -2
  155. package/dist/{list-CtZAu4im.mjs → skill-list-DTnDhnL5.mjs} +17 -47
  156. package/dist/{skills-BSAiLI3Z.mjs → skills-BWrAlj9l.mjs} +3 -3
  157. package/dist/{skills-hVKSOCUf.mjs → skills-DkDsSH5F.mjs} +102 -14
  158. package/dist/snippet-CG75L2DS.mjs +19 -0
  159. package/dist/{snippet-BxgvQ09J.mjs → snippet-CyKAgIZl.mjs} +2 -5
  160. package/dist/{snippet-DecHB4Dn.mjs → snippet-oJLaYW9V.mjs} +1 -1
  161. package/dist/{stash-DJs6A6BA.mjs → stash-DMm8YF8V.mjs} +7 -12
  162. package/dist/{status-N_2EaWb7.mjs → status-BzEQjQ_t.mjs} +15 -23
  163. package/dist/{status-DtwBDRtc.mjs → status-ClWsQD6v.mjs} +22 -48
  164. package/dist/{subscription-BnGDp1oy.mjs → subscription-CdFn2hre.mjs} +6 -6
  165. package/dist/{subscriptions-BfFwV__x.mjs → subscriptions-DBda1pE5.mjs} +7 -8
  166. package/dist/{summary-CHiq-4mz.mjs → summary-B4GPiuqD.mjs} +4 -5
  167. package/dist/{sync-schema-DhnM-rpm.mjs → sync-schema-DsIM5g2U.mjs} +5 -6
  168. package/dist/{sync-task-G1K47Nvn.mjs → sync-task-BACcrs0i.mjs} +1 -1
  169. package/dist/{table-BQaiCSNS.mjs → table-D4Alrrwh.mjs} +5 -5
  170. package/dist/timeline-DmM0BuX8.mjs +21 -0
  171. package/dist/{timeline-event-B7H1y8s8.mjs → timeline-event-DWIh3Tdt.mjs} +6 -6
  172. package/dist/transform-BcV_XlSX.mjs +28 -0
  173. package/dist/{transform-CiDOJGBW.mjs → transform-Bk0D0nIs.mjs} +2 -2
  174. package/dist/{transform-BvOEn41C.mjs → transform-DpuG-ON3.mjs} +25 -7
  175. package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
  176. package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
  177. package/dist/transform-job-CjtwBGoM.mjs +22 -0
  178. package/dist/{transform-tag-jBVd6wXd.mjs → transform-tag-CcElGp3C.mjs} +4 -9
  179. package/dist/{transform-tag-Dip51YBa.mjs → transform-tag-DJ3_bksm.mjs} +5 -5
  180. package/dist/{transform-tag-DiXWRCQG.mjs → transform-tag-Dmb4u3-Q.mjs} +1 -1
  181. package/dist/{transforms-C-jYgS6z.mjs → transforms-Dg2MfB2a.mjs} +7 -8
  182. package/dist/tree-BQL0f7YX.mjs +26 -0
  183. package/dist/{unpublish-BokbnLng.mjs → unpublish-DfSvb_Rs.mjs} +4 -8
  184. package/dist/{update-D9OTkZhw.mjs → update-B-hRR8gW.mjs} +5 -6
  185. package/dist/{update-CpLEEbiJ.mjs → update-BCgAyfj_.mjs} +8 -9
  186. package/dist/{update-BCGE5UYC.mjs → update-Bhmli02m.mjs} +6 -7
  187. package/dist/{update-rkbpH0lF.mjs → update-BxIyFtrX.mjs} +5 -6
  188. package/dist/{update-AZSXMJqu.mjs → update-CDo0Orvu.mjs} +9 -15
  189. package/dist/{update-B9DcRSBQ.mjs → update-CKoBDTL7.mjs} +13 -19
  190. package/dist/{update-CfQoYVTc.mjs → update-CiYxcf8M.mjs} +7 -8
  191. package/dist/{update-e7lyQPxq.mjs → update-Cr5zHb0D.mjs} +9 -15
  192. package/dist/{update-CPEU8ZEu.mjs → update-CtDHMxW8.mjs} +6 -7
  193. package/dist/{update-BBQInyiJ.mjs → update-D1QdfpKR.mjs} +6 -7
  194. package/dist/{update-C4PbAYgW.mjs → update-D4qdTlLF.mjs} +5 -6
  195. package/dist/{update-BRXKLeJH.mjs → update-DBGaJDsj.mjs} +5 -6
  196. package/dist/{update-BErxnZrj.mjs → update-Izqip6jY.mjs} +6 -7
  197. package/dist/{update-Bc8s1TL1.mjs → update-NZhIjTCf.mjs} +5 -6
  198. package/dist/{update-dashcard-St-dGcE3.mjs → update-dashcard-D5b971AO.mjs} +5 -6
  199. package/dist/{update-CKL2FtoX.mjs → update-sYLQIUgh.mjs} +6 -7
  200. package/dist/{upgrade-CUoRHfVg.mjs → upgrade-CD1xtsIv.mjs} +6 -9
  201. package/dist/{upload-CD555ui1.mjs → upload-BUd3MG90.mjs} +2 -2
  202. package/dist/upload-DzGTlldn.mjs +13 -0
  203. package/dist/{upload-BPd1Uzxc.mjs → upload-akKFxpVA.mjs} +4 -8
  204. package/dist/{uuid-CFN8LIkP.mjs → uuid-oVdJ62eA.mjs} +3 -5
  205. package/dist/{validate-BWchyW0V.mjs → validate-CWd6l6KZ.mjs} +1 -1
  206. package/dist/{validate-query-Chc43ezW.mjs → validate-query-Boi8-cAP.mjs} +2 -3
  207. package/dist/{values-BL_U-Zdw.mjs → values-DLwZl-P8.mjs} +4 -5
  208. package/dist/{verify-DnBaRmkI.mjs → verify-CH9Tw8yv.mjs} +3 -18
  209. package/dist/{wait-flags-DzytMEG8.mjs → wait-flags-DiQ_kRjZ.mjs} +3 -3
  210. package/dist/{wait-mPoOZxrw.mjs → wait-rfTdQWdi.mjs} +9 -17
  211. package/dist/{window-DSb1tqSe.mjs → window-BkvrP0gB.mjs} +1 -1
  212. package/package.json +1 -1
  213. package/skill-data/core/SKILL.md +24 -16
  214. package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
  215. package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
  216. package/skill-data/document/SKILL.md +4 -1
  217. package/skill-data/git-sync/SKILL.md +6 -91
  218. package/skill-data/mbql/SKILL.md +1 -1
  219. package/skill-data/mbql/references/operators.md +20 -15
  220. package/skill-data/metadata/SKILL.md +1 -1
  221. package/skill-data/metadata/references/semantic-types.md +7 -1
  222. package/skill-data/native-sql/references/template-tags.md +6 -2
  223. package/skill-data/notification/SKILL.md +7 -1
  224. package/skill-data/transform/SKILL.md +13 -11
  225. package/skill-data/visualization/SKILL.md +11 -3
  226. package/skill-data/visualization/references/settings.md +6 -4
  227. package/skills/metabase-cli/SKILL.md +1 -1
  228. package/dist/archive-CqOKKrb2.mjs +0 -38
  229. package/dist/archive-DCjdICg7.mjs +0 -38
  230. package/dist/branch-BSeGrtP7.mjs +0 -28
  231. package/dist/cancel-task-BMQXtjW5.mjs +0 -34
  232. package/dist/card-RlzLDB2z.mjs +0 -24
  233. package/dist/collection-Bhe20ckt.mjs +0 -20
  234. package/dist/create-DwrhcI8r2.mjs +0 -144
  235. package/dist/create-branch-B3BMpF1g.mjs +0 -49
  236. package/dist/delete-D_OgiI4v.mjs +0 -86
  237. package/dist/dependencies-DEx0BsZ3.mjs +0 -41
  238. package/dist/dirty-dC1-Ud0G.mjs +0 -40
  239. package/dist/document-DOJbBWLF.mjs +0 -19
  240. package/dist/export-preflight-B5MvYhm3.mjs +0 -67
  241. package/dist/get-CNEQK0-9.mjs +0 -81
  242. package/dist/get-Cfagmy1i.mjs +0 -42
  243. package/dist/get-DvLuY5Xu.mjs +0 -38
  244. package/dist/get-DwdMvWXU.mjs +0 -44
  245. package/dist/get-jV8G90Zy.mjs +0 -42
  246. package/dist/get-mGEv-kag.mjs +0 -33
  247. package/dist/git-sync-DjoaNmRM.mjs +0 -29
  248. package/dist/is-dirty-Cwxq4_gd.mjs +0 -44
  249. package/dist/library-Cfw6eF35.mjs +0 -19
  250. package/dist/list-5Iojbr_p.mjs +0 -37
  251. package/dist/list-BD4onDqO.mjs +0 -37
  252. package/dist/list-C2yL7-CH.mjs +0 -45
  253. package/dist/list-CbbKip6U.mjs +0 -32
  254. package/dist/list-Dg2XeDON.mjs +0 -47
  255. package/dist/network-error-D6CiOEBw.mjs +0 -431
  256. package/dist/pin-BuZ_kg-u.mjs +0 -62
  257. package/dist/predicates-Bkm2IoeX.mjs +0 -170
  258. package/dist/scope-DsGuWG5w.mjs +0 -11
  259. package/dist/snippet-LlHz3FdJ.mjs +0 -19
  260. package/dist/timeline-C2VW0Ph6.mjs +0 -21
  261. package/dist/transform-DAf0Y02t.mjs +0 -28
  262. package/dist/transform-job-ntiT5Rrh.mjs +0 -22
  263. package/dist/tree-DtyJhD54.mjs +0 -36
  264. package/dist/unpin-DxbXmLtW.mjs +0 -45
  265. package/dist/upload-Dc3QLhZw.mjs +0 -13
  266. package/dist/worktree-ChdDlG3Q.mjs +0 -25
  267. package/dist/worktree-DC0kTxxQ.mjs +0 -20
  268. package/dist/worktree-xAro1xAB.mjs +0 -24
package/dist/cli.mjs CHANGED
@@ -1,10 +1,338 @@
1
1
  #!/usr/bin/env node
2
- import { i as ConfigError, m as toMetabaseError, n as AbortError, t as isPlainObject } from "./predicates-Bkm2IoeX.mjs";
3
2
  import { defineCommand, renderUsage, runMain } from "citty";
4
- import { z } from "zod";
3
+ import { ZodError, core, z } from "zod";
5
4
  import tls from "node:tls";
6
5
  import { confirm, isCancel, password, select, text } from "@clack/prompts";
7
6
  import Table from "cli-table3";
7
+ //#region ../client/src/json-pointer.ts
8
+ function escapeJsonPointerSegment(key) {
9
+ if (typeof key === "number") return String(key);
10
+ return (typeof key === "symbol" ? key.toString() : key).replaceAll("~", "~0").replaceAll("/", "~1");
11
+ }
12
+ //#endregion
13
+ //#region ../client/src/domain/session-properties.ts
14
+ const ServerVersion = z.object({
15
+ tag: z.string(),
16
+ date: z.string().optional(),
17
+ hash: z.string().optional()
18
+ }).loose();
19
+ const TokenFeatures = z.record(z.string(), z.boolean());
20
+ const SessionProperties = z.object({
21
+ version: ServerVersion,
22
+ "token-features": TokenFeatures.optional()
23
+ }).loose();
24
+ //#endregion
25
+ //#region ../client/src/version/features.ts
26
+ const FEATURE_RULES = {
27
+ transforms: { since: 59 },
28
+ transformJobActivation: { since: 61 },
29
+ measures: { since: 59 },
30
+ library: {
31
+ since: 59,
32
+ tokenFeature: "library"
33
+ },
34
+ remoteSync: {
35
+ since: 60,
36
+ tokenFeature: "remote_sync"
37
+ },
38
+ contentTranslation: {
39
+ since: 58,
40
+ tokenFeature: "content_translation"
41
+ },
42
+ transformTargetTableId: { since: 61 },
43
+ transformTargetTableLinkedOnCreate: {
44
+ since: 61,
45
+ until: 61
46
+ },
47
+ transformJobRunIdIsNumeric: { since: 64 },
48
+ libraryChildrenCarryType: { since: 62 },
49
+ collectionItemsTotalOnEmptyPage: { since: 64 },
50
+ invalidMbqlIsBadRequest: { since: 59 },
51
+ boxplotDisplay: { since: 59 },
52
+ nativeTableTemplateTag: { since: 59 },
53
+ smartLinkMeasureModel: { since: 60 },
54
+ dashboardSubscriptionFilters: {
55
+ since: 58,
56
+ tokenFeature: "dashboard_subscription_filters"
57
+ }
58
+ };
59
+ function isFeatureName(name) {
60
+ return Object.hasOwn(FEATURE_RULES, name);
61
+ }
62
+ const FEATURE_NAMES = Object.keys(FEATURE_RULES).filter(isFeatureName);
63
+ const Features = z.record(z.enum(FEATURE_NAMES), z.boolean());
64
+ function evaluateFeatures(effectiveMajor, tokenFeatures) {
65
+ const entries = FEATURE_NAMES.map((name) => [name, ruleHolds(FEATURE_RULES[name], effectiveMajor, tokenFeatures)]);
66
+ return Features.parse(Object.fromEntries(entries));
67
+ }
68
+ function ruleHolds(rule, effectiveMajor, tokenFeatures) {
69
+ return ruleGap(rule, effectiveMajor, tokenFeatures) === null;
70
+ }
71
+ function ruleGap(rule, effectiveMajor, tokenFeatures) {
72
+ if (effectiveMajor < rule.since) return { kind: "version" };
73
+ if (rule.until !== void 0 && effectiveMajor > rule.until) return { kind: "version" };
74
+ if (rule.tokenFeature === void 0) return null;
75
+ return tokenFeatures !== null && tokenFeatures[rule.tokenFeature] === true ? null : {
76
+ kind: "token",
77
+ tokenFeature: rule.tokenFeature
78
+ };
79
+ }
80
+ //#endregion
81
+ //#region ../client/src/version/tag.ts
82
+ const ParsedVersion = z.object({
83
+ tag: z.string(),
84
+ major: z.number().int().nonnegative(),
85
+ patch: z.number().int().nonnegative()
86
+ });
87
+ const Edition = z.enum(["oss", "ee"]);
88
+ const TAG = /^v?([01])\.(\d+)\.(\d+)(?:\.\d+)?(?:-([0-9A-Za-z.-]+))?$/;
89
+ const OSS_EDITION_NUMBER = "0";
90
+ const DEV_BUILD_SUFFIX = "SNAPSHOT";
91
+ function tagParts(tag) {
92
+ const match = TAG.exec(tag);
93
+ if (match === null) return null;
94
+ const [, editionNumber, major, patch, prerelease] = match;
95
+ if (editionNumber === void 0 || major === void 0 || patch === void 0) return null;
96
+ return {
97
+ edition: editionNumber === OSS_EDITION_NUMBER ? "oss" : "ee",
98
+ major: Number(major),
99
+ patch: Number(patch),
100
+ prerelease: prerelease ?? null
101
+ };
102
+ }
103
+ function tryParseTag(tag) {
104
+ const parts = tagParts(tag);
105
+ if (parts === null || parts.prerelease === DEV_BUILD_SUFFIX) return null;
106
+ return {
107
+ tag,
108
+ major: parts.major,
109
+ patch: parts.patch
110
+ };
111
+ }
112
+ function editionFromTag(tag) {
113
+ const parts = tagParts(tag);
114
+ return parts === null ? null : parts.edition;
115
+ }
116
+ //#endregion
117
+ //#region ../client/src/version/profile.ts
118
+ const KNOWN_RANGE = {
119
+ min: 58,
120
+ max: 63
121
+ };
122
+ const Skew = z.enum([
123
+ "supported",
124
+ "newer-than-known",
125
+ "unknown"
126
+ ]);
127
+ z.object({
128
+ version: ParsedVersion.nullable(),
129
+ buildDate: z.string().nullable(),
130
+ hash: z.string().nullable(),
131
+ edition: Edition,
132
+ tokenFeatures: TokenFeatures.nullable(),
133
+ features: Features,
134
+ skew: Skew
135
+ });
136
+ function createServerProfile(info) {
137
+ const placement = place(info.version);
138
+ return {
139
+ version: info.version,
140
+ buildDate: info.date,
141
+ hash: info.hash,
142
+ edition: detectEdition(info),
143
+ tokenFeatures: info.tokenFeatures,
144
+ features: evaluateFeatures(placement.effectiveMajor, info.tokenFeatures),
145
+ skew: placement.skew
146
+ };
147
+ }
148
+ function featureGap(profile, feature) {
149
+ const placement = place(profile.version);
150
+ return ruleGap(FEATURE_RULES[feature], placement.effectiveMajor, profile.tokenFeatures);
151
+ }
152
+ function place(version) {
153
+ if (version === null) return {
154
+ effectiveMajor: KNOWN_RANGE.max + 1,
155
+ skew: "unknown"
156
+ };
157
+ if (version.major > KNOWN_RANGE.max) return {
158
+ effectiveMajor: KNOWN_RANGE.max + 1,
159
+ skew: "newer-than-known"
160
+ };
161
+ return {
162
+ effectiveMajor: version.major,
163
+ skew: "supported"
164
+ };
165
+ }
166
+ function detectEdition(info) {
167
+ if (info.edition !== null) return info.edition;
168
+ return grantsAnyFeature(info.tokenFeatures) ? "ee" : "oss";
169
+ }
170
+ function grantsAnyFeature(tokenFeatures) {
171
+ return tokenFeatures !== null && Object.values(tokenFeatures).some((enabled) => enabled);
172
+ }
173
+ //#endregion
174
+ //#region ../client/src/errors.ts
175
+ var MetabaseError = class extends Error {
176
+ get userMessage() {
177
+ return this.message;
178
+ }
179
+ };
180
+ var NetworkError = class extends MetabaseError {
181
+ category = "network";
182
+ isRetryable = true;
183
+ developerDetail;
184
+ constructor(message, developerDetail) {
185
+ super(message);
186
+ this.name = "NetworkError";
187
+ this.developerDetail = developerDetail;
188
+ }
189
+ };
190
+ var TimeoutError = class extends MetabaseError {
191
+ category = "timeout";
192
+ isRetryable = true;
193
+ developerDetail;
194
+ constructor(message, developerDetail) {
195
+ super(message);
196
+ this.name = "TimeoutError";
197
+ this.developerDetail = developerDetail;
198
+ }
199
+ };
200
+ var ValidationError = class extends MetabaseError {
201
+ category = "validation";
202
+ isRetryable = false;
203
+ developerDetail;
204
+ constructor(message, developerDetail) {
205
+ super(message);
206
+ this.name = "ValidationError";
207
+ this.developerDetail = developerDetail;
208
+ }
209
+ get userMessage() {
210
+ const issues = this.developerDetail.zodIssues;
211
+ if (issues.length === 0) return this.message;
212
+ return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
213
+ }
214
+ };
215
+ const VALIDATION_MAX_ISSUES = 10;
216
+ const RESPONSE_SHAPE_MAX_ISSUES = 5;
217
+ const VALIDATION_ISSUE_FORMAT = {
218
+ max: VALIDATION_MAX_ISSUES,
219
+ formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
220
+ };
221
+ const RESPONSE_SHAPE_ISSUE_FORMAT = {
222
+ max: RESPONSE_SHAPE_MAX_ISSUES,
223
+ formatIssue: formatZodIssue
224
+ };
225
+ function formatIssueLines(issues, format) {
226
+ const head = issues.slice(0, format.max).map(format.formatIssue);
227
+ const overflow = issues.length - format.max;
228
+ if (overflow > 0) head.push(`... and ${overflow} more`);
229
+ return head.map((line) => ` ${line}`).join("\n");
230
+ }
231
+ function formatZodIssuePointer(path) {
232
+ if (path.length === 0) return "/";
233
+ return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
234
+ }
235
+ const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
236
+ var ResponseShapeError = class ResponseShapeError extends MetabaseError {
237
+ category = "response-shape";
238
+ isRetryable = false;
239
+ developerDetail;
240
+ constructor(message, developerDetail) {
241
+ super(message);
242
+ this.name = "ResponseShapeError";
243
+ this.developerDetail = developerDetail;
244
+ }
245
+ static fromZodIssues(developerDetail) {
246
+ return new ResponseShapeError(formatResponseShapeMessage(developerDetail), developerDetail);
247
+ }
248
+ };
249
+ function formatResponseShapeMessage(detail) {
250
+ const { zodIssues: issues, serverTag, serverSkew } = detail;
251
+ const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${describeServer(serverTag, serverSkew)} the response shape was unexpected`;
252
+ if (issues.length === 0) return lead;
253
+ return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
254
+ }
255
+ function describeServer(tag, skew) {
256
+ if (skew === "newer-than-known") return `${tag} (newer than this client supports, up to v${KNOWN_RANGE.max})`;
257
+ return tag;
258
+ }
259
+ var ConfigError = class extends MetabaseError {
260
+ category = "config";
261
+ isRetryable = false;
262
+ developerDetail = null;
263
+ constructor(message) {
264
+ super(message);
265
+ this.name = "ConfigError";
266
+ }
267
+ };
268
+ var InternalError = class extends MetabaseError {
269
+ category = "internal";
270
+ isRetryable = false;
271
+ developerDetail = null;
272
+ constructor(message) {
273
+ super(message);
274
+ this.name = "InternalError";
275
+ }
276
+ };
277
+ var AbortError = class extends MetabaseError {
278
+ category = "abort";
279
+ isRetryable = false;
280
+ developerDetail = null;
281
+ constructor(message = "aborted") {
282
+ super(message);
283
+ this.name = "AbortError";
284
+ }
285
+ };
286
+ var ChainedRequestError = class extends MetabaseError {
287
+ cause;
288
+ constructor(message, cause) {
289
+ super(message);
290
+ this.name = "ChainedRequestError";
291
+ this.cause = cause;
292
+ }
293
+ get category() {
294
+ return this.cause.category;
295
+ }
296
+ get isRetryable() {
297
+ return this.cause.isRetryable;
298
+ }
299
+ get developerDetail() {
300
+ return this.cause.developerDetail;
301
+ }
302
+ };
303
+ var UnknownError = class extends MetabaseError {
304
+ category = "unknown";
305
+ isRetryable = false;
306
+ developerDetail;
307
+ constructor(input) {
308
+ super(input.originalMessage);
309
+ this.name = "UnknownError";
310
+ this.developerDetail = input;
311
+ }
312
+ };
313
+ function toMetabaseError(error) {
314
+ if (error instanceof MetabaseError) return error;
315
+ if (error instanceof ZodError) return new ConfigError(error.issues.map(formatZodIssue).join("; "));
316
+ if (error instanceof Error) return new UnknownError({
317
+ originalMessage: error.message,
318
+ stack: error.stack ?? null
319
+ });
320
+ return new UnknownError({
321
+ originalMessage: String(error),
322
+ stack: null
323
+ });
324
+ }
325
+ function formatZodIssue(issue) {
326
+ const path = core.toDotPath(issue.path);
327
+ return path === "" ? issue.message : `${path}: ${issue.message}`;
328
+ }
329
+ function isFileNotFoundError(value) {
330
+ return value instanceof Error && "code" in value && value.code === "ENOENT";
331
+ }
332
+ function errorMessage(value) {
333
+ return value instanceof Error ? value.message : String(value);
334
+ }
335
+ //#endregion
8
336
  //#region src/runtime/citty.ts
9
337
  async function resolveCitty(value) {
10
338
  if (value === void 0) return;
@@ -32,7 +360,16 @@ function flagConsumesValue(token, argsDef) {
32
360
  //#region src/output/types.ts
33
361
  const DEFAULT_MAX_BYTES = 24576;
34
362
  function listEnvelopeSchema(item) {
363
+ return z.object(listEnvelopeShape(item));
364
+ }
365
+ function listEnvelopeSchemaWithExtras(item, extras) {
35
366
  return z.object({
367
+ ...listEnvelopeShape(item),
368
+ ...extras
369
+ });
370
+ }
371
+ function listEnvelopeShape(item) {
372
+ return {
36
373
  data: z.array(item).describe("The items in this window."),
37
374
  returned: z.number().int().nonnegative().describe("Number of items in `data`; a short window is not proof the walk is over."),
38
375
  offset: z.number().int().nonnegative().describe("Index of the first item in `data` within the full result set."),
@@ -44,7 +381,7 @@ function listEnvelopeSchema(item) {
44
381
  reason: z.literal("max_bytes"),
45
382
  bytes: z.number().int().nonnegative()
46
383
  }).optional().describe("Present when the `--max-bytes` cap cut the output, not when the data ran out; its `bytes` is what the untruncated answer would have measured, so narrow rows with `--fields` rather than raising the cap.")
47
- });
384
+ };
48
385
  }
49
386
  //#endregion
50
387
  //#region src/commands/flags.ts
@@ -99,10 +436,6 @@ const profileFlag = { profile: {
99
436
  description: "Named profile (default: 'default')",
100
437
  alias: "p"
101
438
  } };
102
- const worktreeFlag = { worktree: {
103
- type: "string",
104
- description: "Scope to a git-sync worktree (id or branch); defaults to MB_WORKTREE or the profile's pinned worktree"
105
- } };
106
439
  const connectionFlags = {
107
440
  url: {
108
441
  type: "string",
@@ -127,8 +460,7 @@ const GLOBAL_FLAG_ARGS = {
127
460
  ...outputFlags,
128
461
  ...listFlags,
129
462
  ...profileFlag,
130
- ...connectionFlags,
131
- ...worktreeFlag
463
+ ...connectionFlags
132
464
  };
133
465
  const GLOBAL_FLAG_NAMES = buildGlobalFlagNames();
134
466
  function buildGlobalFlagNames() {
@@ -180,7 +512,7 @@ function trustSystemCa() {
180
512
  //#endregion
181
513
  //#region package.json
182
514
  var name = "@metabase/cli";
183
- var version = "0.3.1-alpha.support-worktrees.b634907";
515
+ var version = "0.3.1-alpha.versioning.9ac5f50";
184
516
  var description = "Metabase CLI";
185
517
  //#endregion
186
518
  //#region src/runtime/command-augment.ts
@@ -200,37 +532,36 @@ const main = defineCommand({
200
532
  description
201
533
  },
202
534
  subCommands: {
203
- auth: () => import("./auth-BEEkuu4J.mjs").then((mod) => mod.default),
204
- db: () => import("./db-1tLH3nYI.mjs").then((mod) => mod.default),
205
- table: () => import("./table-BQaiCSNS.mjs").then((mod) => mod.default),
206
- field: () => import("./field-BKn9bt7I.mjs").then((mod) => mod.default),
207
- upload: () => import("./upload-Dc3QLhZw.mjs").then((mod) => mod.default),
208
- "content-translation": () => import("./content-translation-C8MlXPOF.mjs").then((mod) => mod.default),
209
- card: () => import("./card-RlzLDB2z.mjs").then((mod) => mod.default),
210
- dashboard: () => import("./dashboard-B1mpfCq_.mjs").then((mod) => mod.default),
211
- subscription: () => import("./subscription-BnGDp1oy.mjs").then((mod) => mod.default),
212
- alert: () => import("./alert-CQ7Az16h.mjs").then((mod) => mod.default),
213
- collection: () => import("./collection-Bhe20ckt.mjs").then((mod) => mod.default),
214
- library: () => import("./library-CRaOhJnj.mjs").then((mod) => mod.default),
215
- document: () => import("./document-DOJbBWLF.mjs").then((mod) => mod.default),
216
- transform: () => import("./transform-DAf0Y02t.mjs").then((mod) => mod.default),
217
- "transform-job": () => import("./transform-job-ntiT5Rrh.mjs").then((mod) => mod.default),
218
- "transform-tag": () => import("./transform-tag-Dip51YBa.mjs").then((mod) => mod.default),
219
- setting: () => import("./setting-CN4l8N-b.mjs").then((mod) => mod.default),
220
- search: () => import("./search-CljYyf2F.mjs").then((mod) => mod.default),
221
- "git-sync": () => import("./git-sync-DjoaNmRM.mjs").then((mod) => mod.default),
222
- worktree: () => import("./worktree-DC0kTxxQ.mjs").then((mod) => mod.default),
223
- setup: () => import("./setup-BpTptmdO.mjs").then((mod) => mod.default),
224
- snippet: () => import("./snippet-LlHz3FdJ.mjs").then((mod) => mod.default),
225
- segment: () => import("./segment-IRzlQggt.mjs").then((mod) => mod.default),
226
- measure: () => import("./measure-C5dIdFj1.mjs").then((mod) => mod.default),
227
- timeline: () => import("./timeline-C2VW0Ph6.mjs").then((mod) => mod.default),
228
- "timeline-event": () => import("./timeline-event-B7H1y8s8.mjs").then((mod) => mod.default),
229
- eid: () => import("./eid-CP35PdEF.mjs").then((mod) => mod.default),
230
- query: () => import("./query-tWQAV9pb.mjs").then((mod) => mod.default),
231
- uuid: () => import("./uuid-CFN8LIkP.mjs").then((mod) => mod.default),
232
- upgrade: () => import("./upgrade-CUoRHfVg.mjs").then((mod) => mod.default),
233
- skills: () => import("./skills-BSAiLI3Z.mjs").then((mod) => mod.default)
535
+ auth: () => import("./auth-CefYEPP5.mjs").then((mod) => mod.default),
536
+ db: () => import("./db-C7UTd-6P.mjs").then((mod) => mod.default),
537
+ table: () => import("./table-D4Alrrwh.mjs").then((mod) => mod.default),
538
+ field: () => import("./field-CzHBOPER.mjs").then((mod) => mod.default),
539
+ upload: () => import("./upload-DzGTlldn.mjs").then((mod) => mod.default),
540
+ "content-translation": () => import("./content-translation-D7POzJJ6.mjs").then((mod) => mod.default),
541
+ card: () => import("./card-BRarvKYX.mjs").then((mod) => mod.default),
542
+ dashboard: () => import("./dashboard-BudI952R.mjs").then((mod) => mod.default),
543
+ subscription: () => import("./subscription-CdFn2hre.mjs").then((mod) => mod.default),
544
+ alert: () => import("./alert-D1u2MVZj.mjs").then((mod) => mod.default),
545
+ collection: () => import("./collection-CKeO8X7U.mjs").then((mod) => mod.default),
546
+ library: () => import("./library-uzyHWBap.mjs").then((mod) => mod.default),
547
+ document: () => import("./document-BoILnE_1.mjs").then((mod) => mod.default),
548
+ transform: () => import("./transform-BcV_XlSX.mjs").then((mod) => mod.default),
549
+ "transform-job": () => import("./transform-job-CjtwBGoM.mjs").then((mod) => mod.default),
550
+ "transform-tag": () => import("./transform-tag-DJ3_bksm.mjs").then((mod) => mod.default),
551
+ setting: () => import("./setting-B1KBQN3M.mjs").then((mod) => mod.default),
552
+ search: () => import("./search-J4RwCof-.mjs").then((mod) => mod.default),
553
+ "git-sync": () => import("./git-sync-CdN0Maun.mjs").then((mod) => mod.default),
554
+ setup: () => import("./setup-CVaNVwOd.mjs").then((mod) => mod.default),
555
+ snippet: () => import("./snippet-CG75L2DS.mjs").then((mod) => mod.default),
556
+ segment: () => import("./segment-XXTjU0eG.mjs").then((mod) => mod.default),
557
+ measure: () => import("./measure-CdA8Nl3Z.mjs").then((mod) => mod.default),
558
+ timeline: () => import("./timeline-DmM0BuX8.mjs").then((mod) => mod.default),
559
+ "timeline-event": () => import("./timeline-event-DWIh3Tdt.mjs").then((mod) => mod.default),
560
+ eid: () => import("./eid-D-BbtWjt.mjs").then((mod) => mod.default),
561
+ query: () => import("./query-BKSM-pbi.mjs").then((mod) => mod.default),
562
+ uuid: () => import("./uuid-oVdJ62eA.mjs").then((mod) => mod.default),
563
+ upgrade: () => import("./upgrade-CD1xtsIv.mjs").then((mod) => mod.default),
564
+ skills: () => import("./skills-BWrAlj9l.mjs").then((mod) => mod.default)
234
565
  }
235
566
  });
236
567
  setMetabaseAugment(main, {
@@ -245,8 +576,8 @@ setMetabaseAugment(main, {
245
576
  }],
246
577
  inputSchema: null,
247
578
  outputSchema: null,
248
- capabilities: null,
249
- worktree: "any"
579
+ requires: null,
580
+ capabilities: null
250
581
  });
251
582
  //#endregion
252
583
  //#region src/core/env.ts
@@ -258,7 +589,6 @@ const ENV_VERBOSE = "MB_VERBOSE";
258
589
  const ENV_SKIP_PREFLIGHT = "MB_CLI_SKIP_PREFLIGHT";
259
590
  const ENV_DISABLE_KEYRING = "MB_CLI_DISABLE_KEYRING";
260
591
  const ENV_SKILLS_DIR = "MB_SKILLS_DIR";
261
- const ENV_WORKTREE = "MB_WORKTREE";
262
592
  function legacyNameFor(canonical) {
263
593
  return LEGACY_PREFIX + canonical.slice(3);
264
594
  }
@@ -388,6 +718,11 @@ function jsonByteLength(value) {
388
718
  return Buffer.byteLength(JSON.stringify(value), "utf8");
389
719
  }
390
720
  //#endregion
721
+ //#region ../client/src/predicates.ts
722
+ function isPlainObject(value) {
723
+ return typeof value === "object" && value !== null && !Array.isArray(value);
724
+ }
725
+ //#endregion
391
726
  //#region src/output/projection.ts
392
727
  function projectForList(item, view, opts) {
393
728
  const full = opts.format === "text" && opts.fields === void 0 ? false : opts.full;
@@ -521,8 +856,11 @@ function renderSummary(item, view, summaryText, opts) {
521
856
  process.stdout.write(body);
522
857
  }
523
858
  function renderList(envelope, view, opts) {
859
+ renderListWithExtras(envelope, {}, view, opts);
860
+ }
861
+ function renderListWithExtras(envelope, extras, view, opts) {
524
862
  if (opts.format === "json") {
525
- renderJsonEnvelope(envelope, view, opts);
863
+ renderJsonEnvelope(envelope, extras, view, opts);
526
864
  return;
527
865
  }
528
866
  if (envelope.data.length === 0) {
@@ -555,8 +893,11 @@ function projectedEnvelope(envelope, view, opts) {
555
893
  data: envelope.data.map((item) => projectForList(item, view, opts))
556
894
  };
557
895
  }
558
- function renderJsonEnvelope(envelope, view, opts) {
559
- const capped = capListEnvelope(projectedEnvelope(envelope, view, opts), opts.maxBytes);
896
+ function renderJsonEnvelope(envelope, extras, view, opts) {
897
+ const capped = capListEnvelope({
898
+ ...projectedEnvelope(envelope, view, opts),
899
+ ...extras
900
+ }, opts.maxBytes);
560
901
  const ordered = {
561
902
  returned: capped.returned,
562
903
  offset: capped.offset,
@@ -565,6 +906,7 @@ function renderJsonEnvelope(envelope, view, opts) {
565
906
  has_more: capped.has_more,
566
907
  next_offset: capped.next_offset,
567
908
  truncated: capped.truncated,
909
+ ...extras,
568
910
  data: capped.data
569
911
  };
570
912
  process.stdout.write(serializeJson(ordered, stdoutPretty()) + "\n");
@@ -662,107 +1004,169 @@ function writeJsonError(handled, exitCode, verbose) {
662
1004
  process.stderr.write(serializeJson(envelope, stderrPretty()) + "\n");
663
1005
  }
664
1006
  //#endregion
665
- //#region ../client/src/version/capabilities.ts
666
- const Capabilities = z.object({
1007
+ //#region ../client/src/version/capability-summary.ts
1008
+ const CapabilitySummary = z.object({
667
1009
  minVersion: z.number(),
668
1010
  tokenFeature: z.string().optional()
669
1011
  });
670
- const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
671
- function mergeCapabilities(overrides) {
672
- if (overrides === void 0) return BASELINE_CAPABILITIES;
673
- return {
674
- minVersion: overrides.minVersion ?? BASELINE_CAPABILITIES.minVersion,
675
- ...overrides.tokenFeature === void 0 ? {} : { tokenFeature: overrides.tokenFeature }
676
- };
677
- }
678
- function checkCapabilities(info, required) {
679
- if (info.version === null) return {
680
- reason: "unknown-version",
681
- detail: "Could not detect Metabase server version. Proceeding without preflight check; failures may produce confusing errors."
1012
+ function summarizeCapabilities(features) {
1013
+ const rules = features.map((feature) => FEATURE_RULES[feature]);
1014
+ const minVersion = Math.max(KNOWN_RANGE.min, ...rules.map((rule) => rule.since));
1015
+ const tokenFeatures = [...new Set(rules.flatMap((rule) => rule.tokenFeature === void 0 ? [] : [rule.tokenFeature]))];
1016
+ if (tokenFeatures.length > 1) throw new Error(`a capability summary names one premium feature, got ${tokenFeatures.length}: ${tokenFeatures.join(", ")}`);
1017
+ const [tokenFeature] = tokenFeatures;
1018
+ return tokenFeature === void 0 ? { minVersion } : {
1019
+ minVersion,
1020
+ tokenFeature
682
1021
  };
683
- if (info.version.major < required.minVersion) return {
684
- reason: "version-too-old",
685
- detail: `This operation requires Metabase v${required.minVersion}+ (this server is ${info.version.tag}). Upgrade Metabase to use it.`
686
- };
687
- if (required.tokenFeature !== void 0) {
688
- if (!(info.tokenFeatures?.[required.tokenFeature] === true)) return {
689
- reason: "missing-token-feature",
690
- detail: `This operation requires the '${required.tokenFeature}' premium feature (not enabled on this server).`
691
- };
692
- }
693
- return null;
694
1022
  }
695
1023
  //#endregion
696
- //#region src/core/worktree-scope.ts
697
- const WorktreePolicy = z.enum([
698
- "scoped",
699
- "any",
700
- "main-only"
701
- ]);
702
- const WORKTREE_FLAG = "--worktree";
703
- const ORIGIN_LABEL = Object.freeze({
704
- flag: WORKTREE_FLAG,
705
- env: ENV_WORKTREE,
706
- pin: "the profile pin"
707
- });
708
- const DIGITS = /^\d+$/;
709
- function parseWorktreeRef(raw, label) {
710
- const value = raw.trim();
711
- if (value === "") throw new ConfigError(`invalid ${label}: value must not be blank`);
712
- if (!DIGITS.test(value)) return {
713
- kind: "branch",
714
- branch: value
715
- };
716
- const id = Number(value);
717
- if (id < 1) throw new ConfigError(`invalid ${label}: ${value} (must be ≥ 1)`);
718
- return {
719
- kind: "id",
720
- id
721
- };
722
- }
723
- function formatWorktreeRef(ref) {
724
- return ref.kind === "id" ? String(ref.id) : `"${ref.branch}"`;
725
- }
726
- function resolveScopeSource(input) {
727
- const stated = statedRef(input);
728
- if (stated === null) return input.pin === null ? null : {
729
- ref: {
730
- kind: "id",
731
- id: input.pin.id
732
- },
733
- origin: "pin",
734
- scope: input.pin
735
- };
736
- const pin = input.pin;
737
- if (pin === null) return {
738
- ...stated,
739
- scope: null
740
- };
741
- if (!refMatchesScope(stated.ref, pin)) throw new ConfigError(`profile "${input.profile}" is pinned to worktree ${pin.id} (${pin.branch}); refusing ${ORIGIN_LABEL[stated.origin]} ${formatWorktreeRef(stated.ref)}`);
742
- return {
743
- ...stated,
744
- scope: pin
745
- };
746
- }
747
- function describeScopeSource(source) {
748
- return `${source.scope === null ? `worktree ${formatWorktreeRef(source.ref)}` : `worktree ${source.scope.id} (${source.scope.branch})`} from ${ORIGIN_LABEL[source.origin]}`;
749
- }
750
- function mainOnlyRefusal(command, source) {
751
- return `${command} is not available inside a worktree (scope: ${describeScopeSource(source)}); it changes main-app content. Unpin the profile (\`mb worktree unpin\`) or drop ${ENV_WORKTREE} to run it against the main app.`;
752
- }
753
- function statedRef(input) {
754
- if (input.flag !== void 0 && input.flag !== "") return {
755
- ref: parseWorktreeRef(input.flag, WORKTREE_FLAG),
756
- origin: "flag"
757
- };
758
- if (input.env !== void 0 && input.env !== "") return {
759
- ref: parseWorktreeRef(input.env, ENV_WORKTREE),
760
- origin: "env"
761
- };
762
- return null;
1024
+ //#region ../client/src/version/requirements.ts
1025
+ const METHOD_REQUIREMENTS = {
1026
+ "card.list": [],
1027
+ "card.get": [],
1028
+ "card.create": [],
1029
+ "card.update": [],
1030
+ "card.archive": [],
1031
+ "card.query": [],
1032
+ "card.exportQuery": [],
1033
+ "collection.list": [],
1034
+ "collection.listWithLibrary": [],
1035
+ "collection.get": [],
1036
+ "collection.create": [],
1037
+ "collection.update": [],
1038
+ "collection.archive": [],
1039
+ "collection.itemPages": [],
1040
+ "collection.tree": [],
1041
+ "contentTranslation.download": ["contentTranslation"],
1042
+ "contentTranslation.upload": ["contentTranslation"],
1043
+ "dashboard.list": [],
1044
+ "dashboard.get": [],
1045
+ "dashboard.create": [],
1046
+ "dashboard.update": [],
1047
+ "dashboard.archive": [],
1048
+ "dashboard.updateDashcard": [],
1049
+ "dashboard.checkCardReferences": [],
1050
+ "dashboard.parameterValues": [],
1051
+ "dashboard.searchParameterValues": [],
1052
+ "database.list": [],
1053
+ "database.get": [],
1054
+ "database.schemas": [],
1055
+ "database.schemaTables": [],
1056
+ "database.syncSchema": [],
1057
+ "database.rescanValues": [],
1058
+ "dataset.query": [],
1059
+ "document.list": [],
1060
+ "document.get": [],
1061
+ "document.create": [],
1062
+ "document.update": [],
1063
+ "document.archive": [],
1064
+ "eidTranslation.translate": [],
1065
+ "field.get": [],
1066
+ "field.update": [],
1067
+ "field.summary": [],
1068
+ "field.values": [],
1069
+ "gitSync.currentTask": ["remoteSync"],
1070
+ "gitSync.cancelTask": ["remoteSync"],
1071
+ "gitSync.isDirty": ["remoteSync"],
1072
+ "gitSync.dirty": ["remoteSync"],
1073
+ "gitSync.hasRemoteChanges": ["remoteSync"],
1074
+ "gitSync.import": ["remoteSync"],
1075
+ "gitSync.export": ["remoteSync"],
1076
+ "gitSync.stash": ["remoteSync"],
1077
+ "gitSync.branches": ["remoteSync"],
1078
+ "gitSync.createBranch": ["remoteSync"],
1079
+ "gitSync.setCollectionSynced": ["remoteSync"],
1080
+ "gitSync.syncedCollections": ["remoteSync"],
1081
+ "gitSync.remoteUrl": [],
1082
+ "gitSync.branch": [],
1083
+ "gitSync.waitForTask": ["remoteSync"],
1084
+ "library.get": ["library"],
1085
+ "library.create": ["library"],
1086
+ "library.ensureDataCollectionId": ["library"],
1087
+ "library.publishTables": ["library"],
1088
+ "library.unpublishTables": ["library"],
1089
+ "measure.list": ["measures"],
1090
+ "measure.get": ["measures"],
1091
+ "measure.create": ["measures"],
1092
+ "measure.update": ["measures"],
1093
+ "measure.archive": ["measures"],
1094
+ "notification.list": [],
1095
+ "notification.get": [],
1096
+ "notification.create": [],
1097
+ "notification.update": [],
1098
+ "notification.archive": [],
1099
+ "notification.send": [],
1100
+ "pulse.list": [],
1101
+ "pulse.get": [],
1102
+ "pulse.create": [],
1103
+ "pulse.update": [],
1104
+ "pulse.archive": [],
1105
+ "search.query": [],
1106
+ "segment.list": [],
1107
+ "segment.get": [],
1108
+ "segment.create": [],
1109
+ "segment.update": [],
1110
+ "segment.archive": [],
1111
+ "setting.list": [],
1112
+ "setting.get": [],
1113
+ "setting.set": [],
1114
+ "setup.create": [],
1115
+ "snippet.list": [],
1116
+ "snippet.get": [],
1117
+ "snippet.create": [],
1118
+ "snippet.update": [],
1119
+ "snippet.archive": [],
1120
+ "table.list": [],
1121
+ "table.get": [],
1122
+ "table.update": [],
1123
+ "table.queryMetadata": [],
1124
+ "table.appendCsv": [],
1125
+ "table.replaceCsv": [],
1126
+ "timeline.list": [],
1127
+ "timeline.get": [],
1128
+ "timeline.events": [],
1129
+ "timeline.create": [],
1130
+ "timeline.update": [],
1131
+ "timeline.archive": [],
1132
+ "timeline.delete": [],
1133
+ "timelineEvent.get": [],
1134
+ "timelineEvent.create": [],
1135
+ "timelineEvent.update": [],
1136
+ "timelineEvent.archive": [],
1137
+ "timelineEvent.delete": [],
1138
+ "transform.list": ["transforms"],
1139
+ "transform.get": ["transforms"],
1140
+ "transform.create": ["transforms"],
1141
+ "transform.update": ["transforms"],
1142
+ "transform.delete": ["transforms"],
1143
+ "transform.deleteTable": ["transforms"],
1144
+ "transform.dependencies": ["transforms"],
1145
+ "transform.cancel": ["transforms"],
1146
+ "transform.getRun": ["transforms"],
1147
+ "transform.runPages": ["transforms"],
1148
+ "transform.run": ["transforms"],
1149
+ "transformJob.list": ["transforms"],
1150
+ "transformJob.get": ["transforms"],
1151
+ "transformJob.create": ["transforms"],
1152
+ "transformJob.update": ["transforms"],
1153
+ "transformJob.delete": ["transforms"],
1154
+ "transformJob.run": ["transforms"],
1155
+ "transformJob.transforms": ["transforms"],
1156
+ "transformJob.setActive": ["transformJobActivation", "transforms"],
1157
+ "transformTag.list": ["transforms"],
1158
+ "transformTag.create": ["transforms"],
1159
+ "transformTag.update": ["transforms"],
1160
+ "transformTag.delete": ["transforms"],
1161
+ "upload.createFromCsv": [],
1162
+ "user.current": []
1163
+ };
1164
+ function isMethodKey(key) {
1165
+ return Object.hasOwn(METHOD_REQUIREMENTS, key);
763
1166
  }
764
- function refMatchesScope(ref, scope) {
765
- return ref.kind === "id" ? ref.id === scope.id : ref.branch === scope.branch;
1167
+ const METHOD_KEYS = Object.keys(METHOD_REQUIREMENTS).filter(isMethodKey);
1168
+ function methodRequirements(key) {
1169
+ return METHOD_REQUIREMENTS[key];
766
1170
  }
767
1171
  //#endregion
768
1172
  //#region src/runtime/command-help.ts
@@ -788,6 +1192,10 @@ const CommandHelpSkill = z.object({
788
1192
  skill: z.string(),
789
1193
  purpose: z.string()
790
1194
  });
1195
+ const CommandHelpRequires = z.object({
1196
+ methods: z.array(z.enum(METHOD_KEYS)),
1197
+ features: z.array(z.enum(FEATURE_NAMES))
1198
+ });
791
1199
  z.object({
792
1200
  command: z.string(),
793
1201
  description: z.string().nullable(),
@@ -797,8 +1205,8 @@ z.object({
797
1205
  args: z.array(CommandHelpArg),
798
1206
  inputSchema: z.unknown().nullable(),
799
1207
  outputSchema: z.unknown().nullable(),
800
- capabilities: Capabilities.nullable(),
801
- worktree: WorktreePolicy
1208
+ requires: CommandHelpRequires.nullable(),
1209
+ capabilities: CapabilitySummary.nullable()
802
1210
  });
803
1211
  const CommandIndexEntry = z.object({
804
1212
  command: z.string(),
@@ -815,8 +1223,8 @@ const EMPTY_AUGMENT = {
815
1223
  skills: [],
816
1224
  inputSchema: null,
817
1225
  outputSchema: null,
818
- capabilities: null,
819
- worktree: "any"
1226
+ requires: null,
1227
+ capabilities: null
820
1228
  };
821
1229
  async function buildHelpEntry(cmd, path) {
822
1230
  const meta = await resolveCitty(cmd.meta);
@@ -830,8 +1238,8 @@ async function buildHelpEntry(cmd, path) {
830
1238
  args: convertArgs(args),
831
1239
  inputSchema: augment.inputSchema ? z.toJSONSchema(augment.inputSchema) : null,
832
1240
  outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
833
- capabilities: augment.capabilities,
834
- worktree: augment.worktree
1241
+ requires: augment.requires,
1242
+ capabilities: augment.capabilities
835
1243
  };
836
1244
  if (augment.details !== null) entry.details = augment.details;
837
1245
  return entry;
@@ -1045,14 +1453,12 @@ async function walkCommandPath(root, rawArgs) {
1045
1453
  unknownToken: null
1046
1454
  };
1047
1455
  }
1048
- async function resolveInvocation(root, rawArgs) {
1049
- const { segments, unknownToken } = await walkCommandPath(root, rawArgs);
1050
- const verbs = segments[0] === CLI_NAME ? segments.slice(1) : segments;
1051
- return {
1052
- breadcrumb: segments.length > 0 ? segments.join(" ") : CLI_NAME,
1053
- verbs: verbs.length > 0 ? verbs.join(" ") : null,
1054
- unknownToken
1055
- };
1456
+ async function resolveBreadcrumb(root, rawArgs) {
1457
+ const { segments } = await walkCommandPath(root, rawArgs);
1458
+ return segments.length > 0 ? segments.join(" ") : CLI_NAME;
1459
+ }
1460
+ async function findUnknownCommand(root, rawArgs) {
1461
+ return (await walkCommandPath(root, rawArgs)).unknownToken;
1056
1462
  }
1057
1463
  function skipFlags(rawArgs, start, argsDef) {
1058
1464
  let index = start;
@@ -1108,15 +1514,6 @@ function installInterruptHandler(exit) {
1108
1514
  });
1109
1515
  }
1110
1516
  //#endregion
1111
- //#region src/runtime/verb-chain.ts
1112
- let verbChain = null;
1113
- function setVerbChain(chain) {
1114
- verbChain = chain;
1115
- }
1116
- function readVerbChain() {
1117
- return verbChain;
1118
- }
1119
- //#endregion
1120
1517
  //#region src/cli.ts
1121
1518
  const HELP_FLAGS = /* @__PURE__ */ new Set(["--help", "-h"]);
1122
1519
  const JSON_HELP_FLAG = "--json";
@@ -1126,7 +1523,7 @@ async function run() {
1126
1523
  const rawArgs = hoistGlobalFlags(process.argv.slice(2));
1127
1524
  const wantsJsonHelp = rawArgs.includes(JSON_HELP_FLAG);
1128
1525
  const showUsageWithBreadcrumb = async (cmd, parent) => {
1129
- const { breadcrumb } = await resolveInvocation(main, rawArgs);
1526
+ const breadcrumb = await resolveBreadcrumb(main, rawArgs);
1130
1527
  if (wantsJsonHelp) {
1131
1528
  await showUsageJson(cmd, breadcrumb);
1132
1529
  return;
@@ -1138,12 +1535,11 @@ async function run() {
1138
1535
  return;
1139
1536
  }
1140
1537
  if (!rawArgs.some((arg) => HELP_FLAGS.has(arg))) {
1141
- const { unknownToken, verbs } = await resolveInvocation(main, rawArgs);
1142
- if (unknownToken !== null) {
1143
- reportError(new ConfigError(`unknown command: ${unknownToken}`));
1538
+ const unknown = await findUnknownCommand(main, rawArgs);
1539
+ if (unknown !== null) {
1540
+ reportError(new ConfigError(`unknown command: ${unknown}`));
1144
1541
  return;
1145
1542
  }
1146
- setVerbChain(verbs);
1147
1543
  }
1148
1544
  await runMain(main, {
1149
1545
  showUsage: showUsageWithBreadcrumb,
@@ -1154,4 +1550,4 @@ run().catch((error) => {
1154
1550
  reportError(error);
1155
1551
  });
1156
1552
  //#endregion
1157
- export { ENV_SKIP_PREFLIGHT as A, listFlagsWithDefaultLimit as B, promptText as C, ENV_DISABLE_KEYRING as D, ENV_API_KEY as E, setMetabaseAugment as F, listEnvelopeSchema as G, profileFlag as H, name as I, toAliasArray as J, flagConsumesValue as K, version as L, ENV_WORKTREE as M, consumeLegacyEnvWarnings as N, ENV_PROFILE as O, readEnv as P, connectionFlags as R, promptSelect as S, warn as T, worktreeFlag as U, outputFlags as V, DEFAULT_MAX_BYTES as W, formatScalar as _, parseWorktreeRef as a, promptConfirm as b, checkCapabilities as c, renderItem as d, renderList as f, MALFORMED_CELL as g, writeText as h, mainOnlyRefusal as i, ENV_URL as j, ENV_SKILLS_DIR as k, mergeCapabilities as l, writeJson as m, interruptSignal as n, resolveScopeSource as o, renderSummary as p, normalizeFlag as q, formatWorktreeRef as r, BASELINE_CAPABILITIES as s, readVerbChain as t, reportError as u, renderRows as v, listTruncationNotice as w, promptPassword as x, projectForList as y, listFlags as z };
1553
+ export { ValidationError as $, setMetabaseAugment as A, listEnvelopeSchemaWithExtras as B, ENV_DISABLE_KEYRING as C, ENV_URL as D, ENV_SKIP_PREFLIGHT as E, listFlagsWithDefaultLimit as F, ChainedRequestError as G, normalizeFlag as H, outputFlags as I, MetabaseError as J, ConfigError as K, profileFlag as L, version as M, connectionFlags as N, consumeLegacyEnvWarnings as O, listFlags as P, UnknownError as Q, DEFAULT_MAX_BYTES as R, ENV_API_KEY as S, ENV_SKILLS_DIR as T, toAliasArray as U, flagConsumesValue as V, AbortError as W, ResponseShapeError as X, NetworkError as Y, TimeoutError as Z, promptPassword as _, renderItem as a, featureGap as at, listTruncationNotice as b, renderSummary as c, editionFromTag as ct, MALFORMED_CELL as d, FEATURE_RULES as dt, errorMessage as et, formatScalar as f, Features as ft, promptConfirm as g, escapeJsonPointerSegment as gt, isPlainObject as h, TokenFeatures as ht, reportError as i, createServerProfile as it, name as j, readEnv as k, writeJson as l, tryParseTag as lt, projectForList as m, SessionProperties as mt, methodRequirements as n, KNOWN_RANGE as nt, renderList as o, Edition as ot, renderRows as p, isFeatureName as pt, InternalError as q, summarizeCapabilities as r, Skew as rt, renderListWithExtras as s, ParsedVersion as st, interruptSignal as t, isFileNotFoundError as tt, writeText as u, FEATURE_NAMES as ut, promptSelect as v, ENV_PROFILE as w, warn as x, promptText as y, listEnvelopeSchema as z };