@metabase/cli 0.3.0 → 0.3.1-alpha.fix-transform-test-ee-path.a3ca6dd

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 (269) hide show
  1. package/dist/{add-collection-B3Ty8SzB.mjs → add-collection-BEg-1pt8.mjs} +6 -9
  2. package/dist/{alert-DT-ee7yf.mjs → alert-CBwtJ3lE.mjs} +7 -7
  3. package/dist/{alerts-Bf2RH_p_.mjs → alerts-Bn9ZhFYK.mjs} +7 -7
  4. package/dist/{append-DFzQRPMd.mjs → append-F7kfyk0p.mjs} +6 -5
  5. package/dist/{archive-ByvA49Kz.mjs → archive-2VqBgcyE.mjs} +5 -5
  6. package/dist/{archive-4tmm946K.mjs → archive-3_KVbxIk.mjs} +4 -4
  7. package/dist/{archive-Cd29QC0c.mjs → archive-7tZyaUWv.mjs} +4 -4
  8. package/dist/{archive-Dr9Xnx_Z.mjs → archive-Bonv-Hcf.mjs} +6 -6
  9. package/dist/{archive-C7w49Grr.mjs → archive-BzEvapLz.mjs} +6 -6
  10. package/dist/{archive-CwAdlv63.mjs → archive-CAwDiQWt2.mjs} +6 -6
  11. package/dist/{archive-lQqs13Uz.mjs → archive-CE-RKcle.mjs} +6 -6
  12. package/dist/{archive-B6eXiyER.mjs → archive-Da3-hnRM.mjs} +4 -4
  13. package/dist/{archive-gid9Y09v.mjs → archive-IBHOtOMk.mjs} +4 -4
  14. package/dist/{archive-BxNPHxOY.mjs → archive-TBo05bZZ.mjs} +6 -6
  15. package/dist/{archive-ChORH5JH.mjs → archive-k79AXZhh.mjs} +4 -4
  16. package/dist/{auth-Dltxua89.mjs → auth-CLZuUSzL.mjs} +5 -5
  17. package/dist/{body-Cur4NJt9.mjs → body-Q8iNnt-X.mjs} +3 -3
  18. package/dist/{branches-DchlyU0i.mjs → branches-CjMIMKse.mjs} +4 -7
  19. package/dist/{cancel-BMQa5R1Z.mjs → cancel-H4vYr5Jv.mjs} +4 -4
  20. package/dist/{cancel-task-C5CU1pxU.mjs → cancel-task-p09LCbgs.mjs} +5 -8
  21. package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
  22. package/dist/card-DlVb10D3.mjs +24 -0
  23. package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
  24. package/dist/{cards-SccWvRQD.mjs → cards-DDG6RObF.mjs} +7 -7
  25. package/dist/cli.mjs +567 -68
  26. package/dist/client-toDDqakD.mjs +4093 -0
  27. package/dist/{collection-CfulNRBG.mjs → collection-BxdPxD38.mjs} +1 -1
  28. package/dist/{collection-CGoVLvcD.mjs → collection-DYM0p3Xl.mjs} +1 -1
  29. package/dist/{collection-namespace-GwydWBF3.mjs → collection-namespace-DDI9-HgU.mjs} +2 -2
  30. package/dist/collection-p_sficxo.mjs +20 -0
  31. package/dist/content-translation-BrHOrmj9.mjs +5 -0
  32. package/dist/content-translation-DcTEH_d7.mjs +12 -0
  33. package/dist/{create-CAWytBE5.mjs → create-BLxdMJgQ.mjs} +5 -5
  34. package/dist/{create-BNQ_DytP.mjs → create-BPN1cX7b.mjs} +4 -4
  35. package/dist/{create-CHQx7jq4.mjs → create-BjCpsMQM.mjs} +5 -5
  36. package/dist/{create-CD008jdE.mjs → create-BovrhBQn.mjs} +12 -8
  37. package/dist/{create-DV-Ln5Mo.mjs → create-CVCPD-1F.mjs} +4 -4
  38. package/dist/{create-DJmXXQoq.mjs → create-CVPGOx7u2.mjs} +8 -8
  39. package/dist/{create-Beh-2uoN.mjs → create-Chs5c8vx.mjs} +6 -6
  40. package/dist/{create-BOLwWt8Q.mjs → create-D04fl6ec.mjs} +5 -5
  41. package/dist/{create-C79vErX0.mjs → create-D5mN20oE.mjs} +7 -7
  42. package/dist/{create-DF4QtgDL.mjs → create-D88Im3X22.mjs} +6 -6
  43. package/dist/{create-tQbnuz-I.mjs → create-DQfOV9Sm.mjs} +6 -6
  44. package/dist/{create-CCh_LyW9.mjs → create-DWU4j22P.mjs} +4 -4
  45. package/dist/create-DjP2yUyn.mjs +34 -0
  46. package/dist/{create-CAQV2g6V.mjs → create-Dk6Zm3ZH.mjs} +7 -7
  47. package/dist/{create-zeveFdnd.mjs → create-DkmeJGMy.mjs} +5 -8
  48. package/dist/{create-i14Wv3Tj.mjs → create-TQr3briq.mjs} +4 -4
  49. package/dist/{create-branch-CYo6jZth.mjs → create-branch-Bs6BlkgQ.mjs} +5 -9
  50. package/dist/{csv-B2Jgb1GM.mjs → csv-BsN6FmY-.mjs} +6 -5
  51. package/dist/{current-task-MpBFGttd.mjs → current-task-cCmLLVcv.mjs} +5 -8
  52. package/dist/{dashboard-BHJBoaG7.mjs → dashboard-CpIEKEgu.mjs} +10 -10
  53. package/dist/{dashboard-BCpSq_G-.mjs → dashboard-D0hwTC-f.mjs} +12 -2
  54. package/dist/{dashboard-CsIFFpzK.mjs → dashboard-DgK81azj.mjs} +1 -1
  55. package/dist/{database-B19qlLKZ.mjs → database-C3E9PZSx.mjs} +1 -1
  56. package/dist/{database-C8G6ZKG0.mjs → database-JtHTqSpq.mjs} +1 -1
  57. package/dist/{db-DsfojyeH.mjs → db-BbvcmfWM.mjs} +7 -7
  58. package/dist/{delete-B8e01xAG.mjs → delete-C4_rcfNu.mjs} +5 -5
  59. package/dist/delete-CLdDYdYG.mjs +44 -0
  60. package/dist/{delete-DFmX7jTp.mjs → delete-D13SLwhr.mjs} +5 -5
  61. package/dist/{delete-Ob06PPie.mjs → delete-D3-jMLu5.mjs} +5 -5
  62. package/dist/{delete-BApOjQvl.mjs → delete-DLirF5iq.mjs} +5 -5
  63. package/dist/{delete-Ck0q4Dzp.mjs → delete-JBjvxdIU.mjs} +5 -5
  64. package/dist/{delete-runtime-D74s6vhu.mjs → delete-runtime-BKEzJn22.mjs} +1 -2
  65. package/dist/{delete-table-DuyhGrvA.mjs → delete-table-Gwk7JL5c.mjs} +5 -5
  66. package/dist/{dependencies-Bj3QrGIm.mjs → dependencies-B7vl9Ovb.mjs} +7 -7
  67. package/dist/{dirty-DNYoM6Bp.mjs → dirty-CIZeASXG.mjs} +6 -9
  68. package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
  69. package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
  70. package/dist/document-ceJW4VuL.mjs +19 -0
  71. package/dist/download-B-krJch0.mjs +25 -0
  72. package/dist/{eid-WTZmDdsr.mjs → eid-C0D92gZW.mjs} +4 -5
  73. package/dist/{events-Bn7jh5lP.mjs → events-CuLeaey6.mjs} +5 -5
  74. package/dist/{export-BjfoZRDJ.mjs → export-DeuLpt3x.mjs} +7 -10
  75. package/dist/{field-Zau6Hc6X.mjs → field-B8Hndt4p.mjs} +5 -5
  76. package/dist/{field-Cr2DPUG9.mjs → field-CcN4oZy6.mjs} +16 -1
  77. package/dist/{field-BPsNa-TO.mjs → field-fDtIrY6D.mjs} +1 -1
  78. package/dist/{fields-CBBa-Prp.mjs → fields-CAchmFh4.mjs} +7 -7
  79. package/dist/{get-CDJFVvhj.mjs → get-BH3Tgfgf.mjs} +4 -4
  80. package/dist/{get-CDMGbgrh.mjs → get-BJOxfbDP.mjs} +4 -4
  81. package/dist/{get-B_xdF1kq.mjs → get-BOjTqIMx.mjs} +6 -6
  82. package/dist/{get-D_h-G9bn.mjs → get-C1BPEbyl.mjs} +6 -6
  83. package/dist/{get-Dmj9Ygz1.mjs → get-C8dcHjd6.mjs} +6 -6
  84. package/dist/{get-DkWO0EI0.mjs → get-CArTALOt.mjs} +6 -6
  85. package/dist/get-CMCAgpxn.mjs +93 -0
  86. package/dist/{get-CnbUCzDM.mjs → get-CjDHpz6A.mjs} +4 -4
  87. package/dist/{get-ByBOq30r.mjs → get-ClNkea9I.mjs} +6 -6
  88. package/dist/{get-DRvsATp-.mjs → get-CvAMxfPD.mjs} +6 -6
  89. package/dist/{get-B7sMgsFs.mjs → get-D8qaSSEH.mjs} +4 -4
  90. package/dist/{get-00lyLv6R.mjs → get-DCvnNk3f.mjs} +6 -6
  91. package/dist/{get-DY03Azx9.mjs → get-DEwfm3Yl.mjs} +5 -8
  92. package/dist/{get-C2-Q3iQ5.mjs → get-DXWrGwWH.mjs} +4 -4
  93. package/dist/get-DbXTkB4u.mjs +32 -0
  94. package/dist/{get-DYO1kywc.mjs → get-DvF9oooq.mjs} +5 -5
  95. package/dist/{get-DdsoHaKH.mjs → get-d055CJ1T.mjs} +4 -4
  96. package/dist/{get-Bz99dAxK.mjs → get-kBTeBtLe.mjs} +6 -6
  97. package/dist/{get-DmpB6J9g.mjs → get-ohue3YrV2.mjs} +6 -6
  98. package/dist/{get-run-Cnux9ln0.mjs → get-run-X6zhp0dW.mjs} +6 -6
  99. package/dist/{get-Dn9ZiSZr.mjs → get-wIZrb7oN.mjs} +6 -6
  100. package/dist/git-sync-BkTmSgdD.mjs +28 -0
  101. package/dist/{git-sync-BDnxPrqU.mjs → git-sync-BwBRmEhE.mjs} +18 -1
  102. package/dist/{git-sync-DxD_ng48.mjs → git-sync-TjX1r_wF.mjs} +1 -1
  103. package/dist/{group-DBM87IgC.mjs → group-YQQ5GIcP.mjs} +2 -2
  104. package/dist/{has-remote-changes-C684Redh.mjs → has-remote-changes-zCtdEGs-.mjs} +5 -8
  105. package/dist/{import-Rmmttboo.mjs → import-DkAy_Xi8.mjs} +7 -10
  106. package/dist/{input-DH9i67x_.mjs → input-DEvkIjGr.mjs} +1 -1
  107. package/dist/{is-dirty-DYeJYhBz.mjs → is-dirty-Dfk2Xf-W.mjs} +3 -6
  108. package/dist/{items-CQlPXBXE.mjs → items-CiSBrc9d.mjs} +7 -7
  109. package/dist/{key-BEhqIzIQ.mjs → key-PYetuQ13.mjs} +1 -1
  110. package/dist/library-BPIzb3K_.mjs +81 -0
  111. package/dist/{library-Bsm5KsFF.mjs → library-FBj2Je-M.mjs} +5 -5
  112. package/dist/{library-DfYAT2Ep.mjs → library-PGCfm0UA.mjs} +1 -1
  113. package/dist/list-9CJczyF5.mjs +60 -0
  114. package/dist/{list-DE9FM957.mjs → list-B6tDzQsv.mjs} +4 -4
  115. package/dist/{list-BtkWNtvY.mjs → list-BDJkJc8s.mjs} +7 -7
  116. package/dist/{list-BzVTHOoH.mjs → list-Br0g0oDR.mjs} +6 -6
  117. package/dist/{list-CNUiF8Z7.mjs → list-C9-2J0Nu.mjs} +6 -6
  118. package/dist/{list-B4hJuMhA.mjs → list-CGjdrAhT.mjs} +7 -7
  119. package/dist/{list-BtmsNOEn.mjs → list-CHOJQ1uR.mjs} +4 -4
  120. package/dist/{list-CKK-s3Ty.mjs → list-CK4S_aDK.mjs} +4 -4
  121. package/dist/{list-C5Zs8nrb.mjs → list-CYONHM9n.mjs} +6 -6
  122. package/dist/{list-CQwOgIlj.mjs → list-CrwbvMEG.mjs} +6 -6
  123. package/dist/{list-BOET6zhP.mjs → list-D6WZmnG_.mjs} +4 -4
  124. package/dist/{list-DMKDsBRd.mjs → list-DD_tjCmP.mjs} +7 -7
  125. package/dist/{list-DF2rvoO1.mjs → list-Dqv3nOEe.mjs} +14 -13
  126. package/dist/{list-CQDprvW0.mjs → list-Hjsg2N8L.mjs} +7 -7
  127. package/dist/{list-CMpoc2TN.mjs → list-M4Twal0d.mjs} +5 -5
  128. package/dist/{list-BpFp9Wre.mjs → list-UbzhJFFn.mjs} +4 -4
  129. package/dist/list-W5y4079U.mjs +35 -0
  130. package/dist/{list-BP3MPq-M.mjs → list-f5HIVoLN.mjs} +4 -4
  131. package/dist/{list-B8nAGwP4.mjs → list-uCAP4vmQ.mjs} +6 -6
  132. package/dist/{login-CGHeSjlP.mjs → login-CIzUMkf3.mjs} +15 -12
  133. package/dist/{logout-DAxOlbv4.mjs → logout-CRm_AaoF.mjs} +3 -4
  134. package/dist/{measure-BsYv0p26.mjs → measure-DPXeIN18.mjs} +6 -6
  135. package/dist/{notification-Fcq1fIPw.mjs → notification-DVrLkjFT.mjs} +1 -1
  136. package/dist/{parameter-DUKR8NXo.mjs → parameter-Celg0wZa.mjs} +1 -1
  137. package/dist/{parameter-values-CJTdqd8c.mjs → parameter-values-rOHoy3k0.mjs} +5 -6
  138. package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
  139. package/dist/{parse-id-C_jmKFaa.mjs → parse-id-CYZAIB58.mjs} +1 -1
  140. package/dist/{parse-ref-ibKVB0J4.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
  141. package/dist/{path-B5gHvrYL.mjs → path-D9_unWc1.mjs} +5 -5
  142. package/dist/{poll-75SvT7Zv.mjs → poll-CZeXepUQ.mjs} +2 -2
  143. package/dist/{preflight-YpPQo-sa.mjs → preflight-BIxRV-bm.mjs} +3 -4
  144. package/dist/{process-DBOOrmET.mjs → process-CTrfxxaC.mjs} +1 -1
  145. package/dist/{publish-DijrxaCW.mjs → publish-N509vd0U.mjs} +9 -9
  146. package/dist/{pulse-BmsDenXm.mjs → pulse-Dz0ocv0l.mjs} +1 -1
  147. package/dist/{pulse-DhG6I9mI.mjs → pulse-x0gFxWfG.mjs} +2 -2
  148. package/dist/{query-Dc__-KJH.mjs → query-JvMjF22L.mjs} +9 -10
  149. package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
  150. package/dist/{query-BbqECzmF.mjs → query-yh5Wkfmc.mjs} +11 -18
  151. package/dist/{remove-collection-BOnxYvhj.mjs → remove-collection-B0E0dlZt.mjs} +6 -9
  152. package/dist/{render-CI93iP0I.mjs → render-Tlz6OCMU.mjs} +13 -2
  153. package/dist/{replace-Cq4CxVa-.mjs → replace-BwbYo6-2.mjs} +6 -5
  154. package/dist/{rescan-values-Dr_j416g.mjs → rescan-values-BiMPb5Z5.mjs} +6 -6
  155. package/dist/{run-DdGJ544X.mjs → run-B9aA1aNI.mjs} +26 -14
  156. package/dist/run-D37ntUQo.mjs +50 -0
  157. package/dist/{run-C3DkS6NP.mjs → run-Dbh3nvzF.mjs} +6 -6
  158. package/dist/{runs-CUNWiidL.mjs → runs-BuUzKR-x.mjs} +7 -7
  159. package/dist/{runtime-DiKyBxOw.mjs → runtime-CwhhhwcB.mjs} +946 -246
  160. package/dist/{schema-tables-CV386fnC.mjs → schema-tables-9PvvygPu.mjs} +7 -7
  161. package/dist/{schemas-DM-UqZBQ.mjs → schemas-DqkQI39t.mjs} +5 -5
  162. package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
  163. package/dist/{search-DmGScXs8.mjs → search-BjAwR-oP.mjs} +6 -6
  164. package/dist/{segment-BzUGM2Fr.mjs → segment-1nBcugv8.mjs} +6 -6
  165. package/dist/{selectors-DGDn0Hto.mjs → selectors-DFNdyhPn.mjs} +3 -3
  166. package/dist/{send-CVxxEpDB.mjs → send-D4tYN3aN.mjs} +4 -4
  167. package/dist/{set-DFolTjbd.mjs → set-D_Mh2eVO.mjs} +5 -5
  168. package/dist/{set-active-BD8L1lPX.mjs → set-active-jY5VZsO8.mjs} +5 -5
  169. package/dist/{setting-DyhaeICs.mjs → setting-9ULb5wjN.mjs} +4 -4
  170. package/dist/{setup-BbDQN8fe.mjs → setup-DMaIuuCV.mjs} +4 -4
  171. package/dist/{signal-CMd0EFUa.mjs → signal-k7cm5N6h.mjs} +11 -2
  172. package/dist/skill-list-Bucy7UE2.mjs +76 -0
  173. package/dist/{skills--vK6J-e4.mjs → skills-Dyfqgobg.mjs} +3 -3
  174. package/dist/skills-PjjRtYqi.mjs +351 -0
  175. package/dist/snippet-DNoTIGAs.mjs +19 -0
  176. package/dist/{stash-D0S4JmAz.mjs → stash-C6BEM6_u.mjs} +7 -11
  177. package/dist/{status-BhswxJL1.mjs → status-DiP093Vm.mjs} +11 -9
  178. package/dist/{status-hL1am-HV.mjs → status-wAg5ajzM.mjs} +12 -11
  179. package/dist/stream-McixcoUl.mjs +7 -0
  180. package/dist/{subscription-_d5fB45F.mjs → subscription-CEeI0pSr.mjs} +6 -6
  181. package/dist/{subscriptions-s4TF6Ax3.mjs → subscriptions-B9cMNuIS.mjs} +7 -7
  182. package/dist/{summary-CsPvcUwW.mjs → summary-D0NP2NoT.mjs} +6 -6
  183. package/dist/{sync-schema-DaZ_MV-u.mjs → sync-schema-BgJ6KEqa.mjs} +7 -7
  184. package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
  185. package/dist/{table-DYoC1kPn.mjs → table-9bTG6zSa.mjs} +5 -5
  186. package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
  187. package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
  188. package/dist/timeline-Ck53UgDh.mjs +21 -0
  189. package/dist/{timeline-event-CNQdCTDg.mjs → timeline-event-POmQ2TD2.mjs} +6 -6
  190. package/dist/transform-BC39AgQF.mjs +28 -0
  191. package/dist/{transform-DoTyyXAu.mjs → transform-CtqB1WYo.mjs} +2 -2
  192. package/dist/{transform-D3QX0jxA.mjs → transform-DiW7bREn.mjs} +68 -5
  193. package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
  194. package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
  195. package/dist/transform-job-D-zUFmZU.mjs +22 -0
  196. package/dist/{transform-tag-_tgwlsdB.mjs → transform-tag-CP7FRU5G.mjs} +5 -5
  197. package/dist/transform-test-BjjCQ2xm.mjs +169 -0
  198. package/dist/transform-test-CKNQS_kC.mjs +16 -0
  199. package/dist/transform-test-gzDcbypy.mjs +25 -0
  200. package/dist/{transforms-oU4zizbO.mjs → transforms-DDSNP4eL.mjs} +7 -7
  201. package/dist/{tree-CH-f3bjP.mjs → tree-CAnMS2dm.mjs} +4 -5
  202. package/dist/{unpublish-BUl9RU5C.mjs → unpublish-DF1XQMWJ.mjs} +4 -7
  203. package/dist/{update-BZPllQoR.mjs → update-BS1yiwOO.mjs} +5 -5
  204. package/dist/{update-CO4m4wH3.mjs → update-Bb89y-0M.mjs} +8 -8
  205. package/dist/{update-C4YJQFDS.mjs → update-BbiVvdm1.mjs} +7 -7
  206. package/dist/{update-BCS5FxKr.mjs → update-BcdLQu7-.mjs} +9 -9
  207. package/dist/{update-cYkvbqK8.mjs → update-BjcWwrPc.mjs} +5 -5
  208. package/dist/{update-tX9mKBN_.mjs → update-BoJJ6Gel.mjs} +9 -9
  209. package/dist/{update-CHNSUHK4.mjs → update-C09GGTjN.mjs} +5 -5
  210. package/dist/{update-BzMDeZiU.mjs → update-C33R41eM.mjs} +7 -7
  211. package/dist/{update-CmDTljK-.mjs → update-C6KQZMDF.mjs} +7 -7
  212. package/dist/{update-bD_Jh5-s.mjs → update-CFqdElFO.mjs} +6 -6
  213. package/dist/{update-CVPAwJaH.mjs → update-CHsXoUJQ.mjs} +6 -6
  214. package/dist/update-CaJO1rWk.mjs +41 -0
  215. package/dist/{update-CvOO8TED.mjs → update-CmXGZPCR.mjs} +7 -7
  216. package/dist/{update-D-NE60AV.mjs → update-DFJSD3_l.mjs} +7 -7
  217. package/dist/{update-Nfi44RrE.mjs → update-DOeBAoul.mjs} +6 -6
  218. package/dist/{update-BiFDBcEH.mjs → update-DiowA7ud.mjs} +5 -5
  219. package/dist/{update-dashcard-C3TuYO_k.mjs → update-dashcard-DSL6Bogg.mjs} +7 -7
  220. package/dist/{upgrade-DXMV4AyP.mjs → upgrade-CBxr91bH.mjs} +6 -8
  221. package/dist/upload-C3z5ZaXA.mjs +24 -0
  222. package/dist/upload-CSHcnonI.mjs +13 -0
  223. package/dist/upload-DTyF-p8X.mjs +39 -0
  224. package/dist/upload-Do2PBSeH.mjs +23 -0
  225. package/dist/{uuid-BJkDWj9p.mjs → uuid-CwEbjDp8.mjs} +3 -4
  226. package/dist/{validate-BWchyW0V.mjs → validate-EAB-1EkK.mjs} +1 -1
  227. package/dist/{validate-query-DaGYSmpQ.mjs → validate-query-CQG86147.mjs} +2 -3
  228. package/dist/{values-Dxf1JEoA.mjs → values-69IZEVXu.mjs} +6 -6
  229. package/dist/{verify-K96rItG5.mjs → verify-Dg5YBI0l.mjs} +3 -18
  230. package/dist/{wait-DoMDH226.mjs → wait-DVXEJXd3.mjs} +7 -10
  231. package/dist/{wait-flags-DWEF9tX4.mjs → wait-flags-CkRgnfww.mjs} +2 -2
  232. package/dist/{window-BkvrP0gB.mjs → window-DSb1tqSe.mjs} +1 -1
  233. package/package.json +1 -1
  234. package/skill-data/core/SKILL.md +31 -14
  235. package/skill-data/dashboard/SKILL.md +2 -2
  236. package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
  237. package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
  238. package/skill-data/document/SKILL.md +4 -1
  239. package/skill-data/git-sync/SKILL.md +5 -0
  240. package/skill-data/mbql/SKILL.md +1 -1
  241. package/skill-data/mbql/references/operators.md +20 -15
  242. package/skill-data/metadata/SKILL.md +1 -1
  243. package/skill-data/metadata/references/semantic-types.md +7 -1
  244. package/skill-data/native-sql/references/template-tags.md +6 -2
  245. package/skill-data/notification/SKILL.md +7 -1
  246. package/skill-data/transform/SKILL.md +75 -3
  247. package/skill-data/transform-test-plan/SKILL.md +171 -0
  248. package/skill-data/transform-test-plan/references/checklist.md +81 -0
  249. package/skill-data/transform-test-plan/references/checks.md +259 -0
  250. package/skill-data/visualization/SKILL.md +11 -3
  251. package/skill-data/visualization/references/settings.md +6 -4
  252. package/skills/metabase-cli/SKILL.md +1 -1
  253. package/dist/card-CHI2bmds.mjs +0 -24
  254. package/dist/client-BqhzKdLM.mjs +0 -2194
  255. package/dist/collection-CY0AB99E.mjs +0 -20
  256. package/dist/document-BbskZPTT.mjs +0 -19
  257. package/dist/get-CvI--9S_.mjs +0 -80
  258. package/dist/git-sync-MQQYRYLg.mjs +0 -28
  259. package/dist/library-ClLgrAXy.mjs +0 -19
  260. package/dist/list-UhpKG6_m.mjs +0 -98
  261. package/dist/network-error-CEb9ymDW.mjs +0 -423
  262. package/dist/predicates-Bkm2IoeX.mjs +0 -170
  263. package/dist/skills-DTCrMcix.mjs +0 -216
  264. package/dist/snippet-DRwKb2x7.mjs +0 -19
  265. package/dist/timeline-xlDbEKWg.mjs +0 -21
  266. package/dist/transform-Bs0EWijQ.mjs +0 -28
  267. package/dist/transform-job-BcLChRup.mjs +0 -22
  268. package/dist/upload-CH632qW6.mjs +0 -46
  269. package/dist/upload-Dey_8rLf.mjs +0 -13
package/dist/cli.mjs CHANGED
@@ -1,10 +1,183 @@
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/version/known-range.ts
14
+ const KNOWN_RANGE = {
15
+ min: 58,
16
+ max: 64
17
+ };
18
+ //#endregion
19
+ //#region ../client/src/errors.ts
20
+ var MetabaseError = class extends Error {
21
+ get userMessage() {
22
+ return this.message;
23
+ }
24
+ };
25
+ var NetworkError = class extends MetabaseError {
26
+ category = "network";
27
+ isRetryable = true;
28
+ developerDetail;
29
+ constructor(message, developerDetail) {
30
+ super(message);
31
+ this.name = "NetworkError";
32
+ this.developerDetail = developerDetail;
33
+ }
34
+ };
35
+ var TimeoutError = class extends MetabaseError {
36
+ category = "timeout";
37
+ isRetryable = true;
38
+ developerDetail;
39
+ constructor(message, developerDetail) {
40
+ super(message);
41
+ this.name = "TimeoutError";
42
+ this.developerDetail = developerDetail;
43
+ }
44
+ };
45
+ var ValidationError = class extends MetabaseError {
46
+ category = "validation";
47
+ isRetryable = false;
48
+ developerDetail;
49
+ constructor(message, developerDetail) {
50
+ super(message);
51
+ this.name = "ValidationError";
52
+ this.developerDetail = developerDetail;
53
+ }
54
+ get userMessage() {
55
+ const issues = this.developerDetail.zodIssues;
56
+ if (issues.length === 0) return this.message;
57
+ return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
58
+ }
59
+ };
60
+ const VALIDATION_MAX_ISSUES = 10;
61
+ const RESPONSE_SHAPE_MAX_ISSUES = 5;
62
+ const VALIDATION_ISSUE_FORMAT = {
63
+ max: VALIDATION_MAX_ISSUES,
64
+ formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
65
+ };
66
+ const RESPONSE_SHAPE_ISSUE_FORMAT = {
67
+ max: RESPONSE_SHAPE_MAX_ISSUES,
68
+ formatIssue: formatZodIssue
69
+ };
70
+ function formatIssueLines(issues, format) {
71
+ const head = issues.slice(0, format.max).map(format.formatIssue);
72
+ const overflow = issues.length - format.max;
73
+ if (overflow > 0) head.push(`... and ${overflow} more`);
74
+ return head.map((line) => ` ${line}`).join("\n");
75
+ }
76
+ function formatZodIssuePointer(path) {
77
+ if (path.length === 0) return "/";
78
+ return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
79
+ }
80
+ const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
81
+ var ResponseShapeError = class ResponseShapeError extends MetabaseError {
82
+ category = "response-shape";
83
+ isRetryable = false;
84
+ developerDetail;
85
+ constructor(message, developerDetail) {
86
+ super(message);
87
+ this.name = "ResponseShapeError";
88
+ this.developerDetail = developerDetail;
89
+ }
90
+ static fromZodIssues(developerDetail) {
91
+ return new ResponseShapeError(formatResponseShapeMessage(developerDetail), developerDetail);
92
+ }
93
+ };
94
+ function formatResponseShapeMessage(detail) {
95
+ const { zodIssues: issues, serverTag, serverSkew } = detail;
96
+ const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${describeServer(serverTag, serverSkew)} the response shape was unexpected`;
97
+ if (issues.length === 0) return lead;
98
+ return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
99
+ }
100
+ function describeServer(tag, skew) {
101
+ if (skew === "newer-than-known") return `${tag} (newer than this client supports, up to v${KNOWN_RANGE.max})`;
102
+ return tag;
103
+ }
104
+ var ConfigError = class extends MetabaseError {
105
+ category = "config";
106
+ isRetryable = false;
107
+ developerDetail = null;
108
+ constructor(message) {
109
+ super(message);
110
+ this.name = "ConfigError";
111
+ }
112
+ };
113
+ var InternalError = class extends MetabaseError {
114
+ category = "internal";
115
+ isRetryable = false;
116
+ developerDetail = null;
117
+ constructor(message) {
118
+ super(message);
119
+ this.name = "InternalError";
120
+ }
121
+ };
122
+ var AbortError = class extends MetabaseError {
123
+ category = "abort";
124
+ isRetryable = false;
125
+ developerDetail = null;
126
+ constructor(message = "aborted") {
127
+ super(message);
128
+ this.name = "AbortError";
129
+ }
130
+ };
131
+ var ChainedRequestError = class extends MetabaseError {
132
+ cause;
133
+ constructor(message, cause) {
134
+ super(message);
135
+ this.name = "ChainedRequestError";
136
+ this.cause = cause;
137
+ }
138
+ get category() {
139
+ return this.cause.category;
140
+ }
141
+ get isRetryable() {
142
+ return this.cause.isRetryable;
143
+ }
144
+ get developerDetail() {
145
+ return this.cause.developerDetail;
146
+ }
147
+ };
148
+ var UnknownError = class extends MetabaseError {
149
+ category = "unknown";
150
+ isRetryable = false;
151
+ developerDetail;
152
+ constructor(input) {
153
+ super(input.originalMessage);
154
+ this.name = "UnknownError";
155
+ this.developerDetail = input;
156
+ }
157
+ };
158
+ function toMetabaseError(error) {
159
+ if (error instanceof MetabaseError) return error;
160
+ if (error instanceof ZodError) return new ConfigError(error.issues.map(formatZodIssue).join("; "));
161
+ if (error instanceof Error) return new UnknownError({
162
+ originalMessage: error.message,
163
+ stack: error.stack ?? null
164
+ });
165
+ return new UnknownError({
166
+ originalMessage: String(error),
167
+ stack: null
168
+ });
169
+ }
170
+ function formatZodIssue(issue) {
171
+ const path = core.toDotPath(issue.path);
172
+ return path === "" ? issue.message : `${path}: ${issue.message}`;
173
+ }
174
+ function isFileNotFoundError(value) {
175
+ return value instanceof Error && "code" in value && value.code === "ENOENT";
176
+ }
177
+ function errorMessage(value) {
178
+ return value instanceof Error ? value.message : String(value);
179
+ }
180
+ //#endregion
8
181
  //#region src/runtime/citty.ts
9
182
  async function resolveCitty(value) {
10
183
  if (value === void 0) return;
@@ -32,7 +205,16 @@ function flagConsumesValue(token, argsDef) {
32
205
  //#region src/output/types.ts
33
206
  const DEFAULT_MAX_BYTES = 24576;
34
207
  function listEnvelopeSchema(item) {
208
+ return z.object(listEnvelopeShape(item));
209
+ }
210
+ function listEnvelopeSchemaWithExtras(item, extras) {
35
211
  return z.object({
212
+ ...listEnvelopeShape(item),
213
+ ...extras
214
+ });
215
+ }
216
+ function listEnvelopeShape(item) {
217
+ return {
36
218
  data: z.array(item).describe("The items in this window."),
37
219
  returned: z.number().int().nonnegative().describe("Number of items in `data`; a short window is not proof the walk is over."),
38
220
  offset: z.number().int().nonnegative().describe("Index of the first item in `data` within the full result set."),
@@ -44,7 +226,7 @@ function listEnvelopeSchema(item) {
44
226
  reason: z.literal("max_bytes"),
45
227
  bytes: z.number().int().nonnegative()
46
228
  }).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
- });
229
+ };
48
230
  }
49
231
  //#endregion
50
232
  //#region src/commands/flags.ts
@@ -175,7 +357,7 @@ function trustSystemCa() {
175
357
  //#endregion
176
358
  //#region package.json
177
359
  var name = "@metabase/cli";
178
- var version = "0.3.0";
360
+ var version = "0.3.1-alpha.fix-transform-test-ee-path.a3ca6dd";
179
361
  var description = "Metabase CLI";
180
362
  //#endregion
181
363
  //#region src/runtime/command-augment.ts
@@ -195,35 +377,37 @@ const main = defineCommand({
195
377
  description
196
378
  },
197
379
  subCommands: {
198
- auth: () => import("./auth-Dltxua89.mjs").then((mod) => mod.default),
199
- db: () => import("./db-DsfojyeH.mjs").then((mod) => mod.default),
200
- table: () => import("./table-DYoC1kPn.mjs").then((mod) => mod.default),
201
- field: () => import("./field-Zau6Hc6X.mjs").then((mod) => mod.default),
202
- upload: () => import("./upload-Dey_8rLf.mjs").then((mod) => mod.default),
203
- card: () => import("./card-CHI2bmds.mjs").then((mod) => mod.default),
204
- dashboard: () => import("./dashboard-BHJBoaG7.mjs").then((mod) => mod.default),
205
- subscription: () => import("./subscription-_d5fB45F.mjs").then((mod) => mod.default),
206
- alert: () => import("./alert-DT-ee7yf.mjs").then((mod) => mod.default),
207
- collection: () => import("./collection-CY0AB99E.mjs").then((mod) => mod.default),
208
- library: () => import("./library-Bsm5KsFF.mjs").then((mod) => mod.default),
209
- document: () => import("./document-BbskZPTT.mjs").then((mod) => mod.default),
210
- transform: () => import("./transform-Bs0EWijQ.mjs").then((mod) => mod.default),
211
- "transform-job": () => import("./transform-job-BcLChRup.mjs").then((mod) => mod.default),
212
- "transform-tag": () => import("./transform-tag-_tgwlsdB.mjs").then((mod) => mod.default),
213
- setting: () => import("./setting-DyhaeICs.mjs").then((mod) => mod.default),
214
- search: () => import("./search-DmGScXs8.mjs").then((mod) => mod.default),
215
- "git-sync": () => import("./git-sync-MQQYRYLg.mjs").then((mod) => mod.default),
216
- setup: () => import("./setup-BbDQN8fe.mjs").then((mod) => mod.default),
217
- snippet: () => import("./snippet-DRwKb2x7.mjs").then((mod) => mod.default),
218
- segment: () => import("./segment-BzUGM2Fr.mjs").then((mod) => mod.default),
219
- measure: () => import("./measure-BsYv0p26.mjs").then((mod) => mod.default),
220
- timeline: () => import("./timeline-xlDbEKWg.mjs").then((mod) => mod.default),
221
- "timeline-event": () => import("./timeline-event-CNQdCTDg.mjs").then((mod) => mod.default),
222
- eid: () => import("./eid-WTZmDdsr.mjs").then((mod) => mod.default),
223
- query: () => import("./query-Dc__-KJH.mjs").then((mod) => mod.default),
224
- uuid: () => import("./uuid-BJkDWj9p.mjs").then((mod) => mod.default),
225
- upgrade: () => import("./upgrade-DXMV4AyP.mjs").then((mod) => mod.default),
226
- skills: () => import("./skills--vK6J-e4.mjs").then((mod) => mod.default)
380
+ auth: () => import("./auth-CLZuUSzL.mjs").then((mod) => mod.default),
381
+ db: () => import("./db-BbvcmfWM.mjs").then((mod) => mod.default),
382
+ table: () => import("./table-9bTG6zSa.mjs").then((mod) => mod.default),
383
+ field: () => import("./field-B8Hndt4p.mjs").then((mod) => mod.default),
384
+ upload: () => import("./upload-CSHcnonI.mjs").then((mod) => mod.default),
385
+ "content-translation": () => import("./content-translation-DcTEH_d7.mjs").then((mod) => mod.default),
386
+ card: () => import("./card-DlVb10D3.mjs").then((mod) => mod.default),
387
+ dashboard: () => import("./dashboard-CpIEKEgu.mjs").then((mod) => mod.default),
388
+ subscription: () => import("./subscription-CEeI0pSr.mjs").then((mod) => mod.default),
389
+ alert: () => import("./alert-CBwtJ3lE.mjs").then((mod) => mod.default),
390
+ collection: () => import("./collection-p_sficxo.mjs").then((mod) => mod.default),
391
+ library: () => import("./library-FBj2Je-M.mjs").then((mod) => mod.default),
392
+ document: () => import("./document-ceJW4VuL.mjs").then((mod) => mod.default),
393
+ transform: () => import("./transform-BC39AgQF.mjs").then((mod) => mod.default),
394
+ "transform-job": () => import("./transform-job-D-zUFmZU.mjs").then((mod) => mod.default),
395
+ "transform-tag": () => import("./transform-tag-CP7FRU5G.mjs").then((mod) => mod.default),
396
+ "transform-test": () => import("./transform-test-CKNQS_kC.mjs").then((mod) => mod.default),
397
+ setting: () => import("./setting-9ULb5wjN.mjs").then((mod) => mod.default),
398
+ search: () => import("./search-BjAwR-oP.mjs").then((mod) => mod.default),
399
+ "git-sync": () => import("./git-sync-BkTmSgdD.mjs").then((mod) => mod.default),
400
+ setup: () => import("./setup-DMaIuuCV.mjs").then((mod) => mod.default),
401
+ snippet: () => import("./snippet-DNoTIGAs.mjs").then((mod) => mod.default),
402
+ segment: () => import("./segment-1nBcugv8.mjs").then((mod) => mod.default),
403
+ measure: () => import("./measure-DPXeIN18.mjs").then((mod) => mod.default),
404
+ timeline: () => import("./timeline-Ck53UgDh.mjs").then((mod) => mod.default),
405
+ "timeline-event": () => import("./timeline-event-POmQ2TD2.mjs").then((mod) => mod.default),
406
+ eid: () => import("./eid-C0D92gZW.mjs").then((mod) => mod.default),
407
+ query: () => import("./query-JvMjF22L.mjs").then((mod) => mod.default),
408
+ uuid: () => import("./uuid-CwEbjDp8.mjs").then((mod) => mod.default),
409
+ upgrade: () => import("./upgrade-CBxr91bH.mjs").then((mod) => mod.default),
410
+ skills: () => import("./skills-Dyfqgobg.mjs").then((mod) => mod.default)
227
411
  }
228
412
  });
229
413
  setMetabaseAugment(main, {
@@ -238,9 +422,22 @@ setMetabaseAugment(main, {
238
422
  }],
239
423
  inputSchema: null,
240
424
  outputSchema: null,
241
- capabilities: null
425
+ requires: null
242
426
  });
243
427
  //#endregion
428
+ //#region src/core/profile-refreshed-error.ts
429
+ var ProfileRefreshedError = class extends MetabaseError {
430
+ category;
431
+ isRetryable = false;
432
+ developerDetail;
433
+ constructor(cause, note) {
434
+ super(`${cause.userMessage}\n${note}`);
435
+ this.name = "ProfileRefreshedError";
436
+ this.category = cause.category;
437
+ this.developerDetail = cause.developerDetail;
438
+ }
439
+ };
440
+ //#endregion
244
441
  //#region src/core/env.ts
245
442
  const LEGACY_PREFIX = "METABASE_";
246
443
  const ENV_URL = "MB_URL";
@@ -379,6 +576,11 @@ function jsonByteLength(value) {
379
576
  return Buffer.byteLength(JSON.stringify(value), "utf8");
380
577
  }
381
578
  //#endregion
579
+ //#region ../client/src/predicates.ts
580
+ function isPlainObject(value) {
581
+ return typeof value === "object" && value !== null && !Array.isArray(value);
582
+ }
583
+ //#endregion
382
584
  //#region src/output/projection.ts
383
585
  function projectForList(item, view, opts) {
384
586
  const full = opts.format === "text" && opts.fields === void 0 ? false : opts.full;
@@ -512,8 +714,11 @@ function renderSummary(item, view, summaryText, opts) {
512
714
  process.stdout.write(body);
513
715
  }
514
716
  function renderList(envelope, view, opts) {
717
+ renderListWithExtras(envelope, {}, view, opts);
718
+ }
719
+ function renderListWithExtras(envelope, extras, view, opts) {
515
720
  if (opts.format === "json") {
516
- renderJsonEnvelope(envelope, view, opts);
721
+ renderJsonEnvelope(envelope, extras, view, opts);
517
722
  return;
518
723
  }
519
724
  if (envelope.data.length === 0) {
@@ -546,8 +751,11 @@ function projectedEnvelope(envelope, view, opts) {
546
751
  data: envelope.data.map((item) => projectForList(item, view, opts))
547
752
  };
548
753
  }
549
- function renderJsonEnvelope(envelope, view, opts) {
550
- const capped = capListEnvelope(projectedEnvelope(envelope, view, opts), opts.maxBytes);
754
+ function renderJsonEnvelope(envelope, extras, view, opts) {
755
+ const capped = capListEnvelope({
756
+ ...projectedEnvelope(envelope, view, opts),
757
+ ...extras
758
+ }, opts.maxBytes);
551
759
  const ordered = {
552
760
  returned: capped.returned,
553
761
  offset: capped.offset,
@@ -556,6 +764,7 @@ function renderJsonEnvelope(envelope, view, opts) {
556
764
  has_more: capped.has_more,
557
765
  next_offset: capped.next_offset,
558
766
  truncated: capped.truncated,
767
+ ...extras,
559
768
  data: capped.data
560
769
  };
561
770
  process.stdout.write(serializeJson(ordered, stdoutPretty()) + "\n");
@@ -625,6 +834,7 @@ function isRouteMissing(handled) {
625
834
  return "kind" in handled && handled.kind === ROUTE_MISSING_KIND;
626
835
  }
627
836
  function remediesFor(handled) {
837
+ if (handled instanceof ProfileRefreshedError) return [];
628
838
  if (isVersionTooOld(handled.developerDetail)) return [DOWNGRADE_REMEDY];
629
839
  if (isRouteMissing(handled)) return [ROUTE_MISSING_REMEDY];
630
840
  return [];
@@ -653,35 +863,320 @@ function writeJsonError(handled, exitCode, verbose) {
653
863
  process.stderr.write(serializeJson(envelope, stderrPretty()) + "\n");
654
864
  }
655
865
  //#endregion
656
- //#region ../client/src/version/capabilities.ts
657
- const Capabilities = z.object({
658
- minVersion: z.number(),
659
- tokenFeature: z.string().optional()
660
- });
661
- const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
662
- function mergeCapabilities(overrides) {
663
- if (overrides === void 0) return BASELINE_CAPABILITIES;
664
- return {
665
- minVersion: overrides.minVersion ?? BASELINE_CAPABILITIES.minVersion,
666
- ...overrides.tokenFeature === void 0 ? {} : { tokenFeature: overrides.tokenFeature }
866
+ //#region ../client/src/version/features.ts
867
+ const FEATURE_RULES = {
868
+ transforms: { since: 59 },
869
+ transformJobActivation: { since: 61 },
870
+ measures: { since: 59 },
871
+ library: {
872
+ since: 59,
873
+ tokenFeature: "library"
874
+ },
875
+ remoteSync: {
876
+ since: 60,
877
+ tokenFeature: "remote_sync"
878
+ },
879
+ remoteSyncExportPreflight: {
880
+ since: 63,
881
+ tokenFeature: "remote_sync"
882
+ },
883
+ contentTranslation: {
884
+ since: 58,
885
+ tokenFeature: "content_translation"
886
+ },
887
+ contentVerification: {
888
+ since: 58,
889
+ tokenFeature: "content_verification"
890
+ },
891
+ transformTargetTableId: { since: 61 },
892
+ transformTargetTableLinkedOnCreate: {
893
+ since: 61,
894
+ until: 61
895
+ },
896
+ transformJobRunIdIsNumeric: { since: 64 },
897
+ transformCheckpointReset: { since: 60 },
898
+ fieldDataSensitivity: { since: 64 },
899
+ transformDagRuns: { since: 64 },
900
+ unifiedTransformRuns: { since: 64 },
901
+ transformTests: {
902
+ since: 65,
903
+ tokenFeature: "transforms-testing"
904
+ },
905
+ libraryChildrenCarryType: { since: 62 },
906
+ collectionItemsTotalOnEmptyPage: { since: 64 },
907
+ invalidMbqlIsBadRequest: { since: 59 },
908
+ boxplotDisplay: { since: 59 },
909
+ nativeTableTemplateTag: { since: 59 },
910
+ smartLinkMeasureModel: { since: 60 },
911
+ dashboardSubscriptionFilters: {
912
+ since: 58,
913
+ tokenFeature: "dashboard_subscription_filters"
914
+ },
915
+ dependencyGraph: {
916
+ since: 58,
917
+ tokenFeature: "dependencies"
918
+ },
919
+ dependencyItemListings: {
920
+ since: 59,
921
+ tokenFeature: "dependencies"
922
+ },
923
+ dependencyKebabCaseFilters: { since: 60 },
924
+ tableListAccessFilters: { since: 59 },
925
+ tableListTransformTargets: { since: 60 },
926
+ tableUnusedFilter: {
927
+ since: 58,
928
+ tokenFeature: "dependencies"
929
+ },
930
+ tableDataLayerTiers: { since: 59 },
931
+ bulkTableEdit: { since: 59 },
932
+ erd: {
933
+ since: 62,
934
+ tokenFeature: "schema-viewer"
935
+ },
936
+ documentCopy: { since: 59 },
937
+ transformInspector: {
938
+ since: 60,
939
+ tokenFeature: "transforms-python"
940
+ },
941
+ pythonLibrary: {
942
+ since: 58,
943
+ tokenFeature: "transforms-python"
944
+ },
945
+ pythonTestRun: {
946
+ since: 60,
947
+ tokenFeature: "transforms-python"
948
+ },
949
+ sourceReplacement: {
950
+ since: 60,
951
+ tokenFeature: "dependencies"
952
+ },
953
+ metricDefinitionQuery: { since: 60 },
954
+ metricDimensionListing: { since: 64 }
955
+ };
956
+ function isFeatureName(name) {
957
+ return Object.hasOwn(FEATURE_RULES, name);
958
+ }
959
+ const FEATURE_NAMES = Object.keys(FEATURE_RULES).filter(isFeatureName);
960
+ const Features = z.record(z.enum(FEATURE_NAMES), z.boolean());
961
+ function evaluateFeatures(effectiveMajor, tokenFeatures) {
962
+ const entries = FEATURE_NAMES.map((name) => [name, ruleHolds(FEATURE_RULES[name], effectiveMajor, tokenFeatures)]);
963
+ return Features.parse(Object.fromEntries(entries));
964
+ }
965
+ function ruleHolds(rule, effectiveMajor, tokenFeatures) {
966
+ return ruleGap(rule, effectiveMajor, tokenFeatures) === null;
967
+ }
968
+ function ruleGap(rule, effectiveMajor, tokenFeatures) {
969
+ if (effectiveMajor < rule.since) return { kind: "version" };
970
+ if (rule.until !== void 0 && effectiveMajor > rule.until) return { kind: "version" };
971
+ if (rule.tokenFeature === void 0) return null;
972
+ return tokenFeatures !== null && tokenFeatures[rule.tokenFeature] === true ? null : {
973
+ kind: "token",
974
+ tokenFeature: rule.tokenFeature
667
975
  };
668
976
  }
669
- function checkCapabilities(info, required) {
670
- if (info.version === null) return {
671
- reason: "unknown-version",
672
- detail: "Could not detect Metabase server version. Proceeding without preflight check; failures may produce confusing errors."
673
- };
674
- if (info.version.major < required.minVersion) return {
675
- reason: "version-too-old",
676
- detail: `This operation requires Metabase v${required.minVersion}+ (this server is ${info.version.tag}). Upgrade Metabase to use it.`
677
- };
678
- if (required.tokenFeature !== void 0) {
679
- if (!(info.tokenFeatures?.[required.tokenFeature] === true)) return {
680
- reason: "missing-token-feature",
681
- detail: `This operation requires the '${required.tokenFeature}' premium feature (not enabled on this server).`
682
- };
683
- }
684
- return null;
977
+ //#endregion
978
+ //#region ../client/src/version/requirements.ts
979
+ const METHOD_REQUIREMENTS = {
980
+ "card.list": [],
981
+ "card.get": [],
982
+ "card.create": [],
983
+ "card.update": [],
984
+ "card.archive": [],
985
+ "card.query": [],
986
+ "card.exportQuery": [],
987
+ "card.queryMetadata": [],
988
+ "collection.list": [],
989
+ "collection.listWithLibrary": [],
990
+ "collection.get": [],
991
+ "collection.create": [],
992
+ "collection.update": [],
993
+ "collection.archive": [],
994
+ "collection.itemPages": [],
995
+ "collection.tree": [],
996
+ "contentTranslation.download": ["contentTranslation"],
997
+ "contentTranslation.upload": ["contentTranslation"],
998
+ "dashboard.list": [],
999
+ "dashboard.get": [],
1000
+ "dashboard.create": [],
1001
+ "dashboard.update": [],
1002
+ "dashboard.archive": [],
1003
+ "dashboard.copy": [],
1004
+ "dashboard.updateDashcard": [],
1005
+ "dashboard.checkCardReferences": [],
1006
+ "dashboard.parameterValues": [],
1007
+ "dashboard.searchParameterValues": [],
1008
+ "database.list": [],
1009
+ "database.get": [],
1010
+ "database.schemas": [],
1011
+ "database.schemaTables": [],
1012
+ "database.syncSchema": [],
1013
+ "database.rescanValues": [],
1014
+ "dataset.query": [],
1015
+ "dataset.native": [],
1016
+ "dataset.queryMetadata": [],
1017
+ "dataset.exportQuery": [],
1018
+ "dependency.breakingPages": ["dependencyItemListings"],
1019
+ "dependency.broken": ["dependencyItemListings"],
1020
+ "dependency.dependents": ["dependencyItemListings"],
1021
+ "dependency.graph": ["dependencyGraph"],
1022
+ "dependency.unreferencedPages": ["dependencyItemListings"],
1023
+ "document.list": [],
1024
+ "document.get": [],
1025
+ "document.create": [],
1026
+ "document.update": [],
1027
+ "document.archive": [],
1028
+ "document.copy": ["documentCopy"],
1029
+ "eidTranslation.translate": [],
1030
+ "erd.get": ["erd"],
1031
+ "field.get": [],
1032
+ "field.update": [],
1033
+ "field.search": [],
1034
+ "field.remapping": [],
1035
+ "field.summary": [],
1036
+ "field.values": [],
1037
+ "gitSync.currentTask": ["remoteSync"],
1038
+ "gitSync.cancelTask": ["remoteSync"],
1039
+ "gitSync.isDirty": ["remoteSync"],
1040
+ "gitSync.dirty": ["remoteSync"],
1041
+ "gitSync.hasRemoteChanges": ["remoteSync"],
1042
+ "gitSync.import": ["remoteSync"],
1043
+ "gitSync.export": ["remoteSync"],
1044
+ "gitSync.exportPreflight": ["remoteSyncExportPreflight"],
1045
+ "gitSync.stash": ["remoteSync"],
1046
+ "gitSync.branches": ["remoteSync"],
1047
+ "gitSync.createBranch": ["remoteSync"],
1048
+ "gitSync.setCollectionSynced": ["remoteSync"],
1049
+ "gitSync.syncedCollections": ["remoteSync"],
1050
+ "gitSync.remoteUrl": [],
1051
+ "gitSync.branch": [],
1052
+ "gitSync.waitForTask": ["remoteSync"],
1053
+ "glossary.list": [],
1054
+ "glossary.create": [],
1055
+ "glossary.update": [],
1056
+ "glossary.delete": [],
1057
+ "library.get": ["library"],
1058
+ "library.create": ["library"],
1059
+ "library.ensureDataCollectionId": ["library"],
1060
+ "library.publishTables": ["library"],
1061
+ "library.unpublishTables": ["library"],
1062
+ "metric.query": ["metricDefinitionQuery"],
1063
+ "metric.breakoutValues": ["metricDefinitionQuery"],
1064
+ "metric.dimensions": ["metricDimensionListing"],
1065
+ "measure.list": ["measures"],
1066
+ "measure.get": ["measures"],
1067
+ "measure.create": ["measures"],
1068
+ "measure.update": ["measures"],
1069
+ "measure.archive": ["measures"],
1070
+ "moderationReview.create": ["contentVerification"],
1071
+ "notification.list": [],
1072
+ "notification.get": [],
1073
+ "notification.create": [],
1074
+ "notification.update": [],
1075
+ "notification.archive": [],
1076
+ "notification.send": [],
1077
+ "permission.graph": [],
1078
+ "permission.databaseGraph": [],
1079
+ "permission.groupGraph": [],
1080
+ "pulse.list": [],
1081
+ "pulse.get": [],
1082
+ "pulse.create": [],
1083
+ "pulse.update": [],
1084
+ "pulse.archive": [],
1085
+ "replacement.checkReplaceSource": ["sourceReplacement"],
1086
+ "replacement.replaceSource": ["sourceReplacement"],
1087
+ "replacement.replaceModelWithTransform": ["sourceReplacement"],
1088
+ "replacement.listRuns": ["sourceReplacement"],
1089
+ "replacement.getRun": ["sourceReplacement"],
1090
+ "replacement.cancelRun": ["sourceReplacement"],
1091
+ "revision.list": [],
1092
+ "revision.revert": [],
1093
+ "search.query": [],
1094
+ "segment.list": [],
1095
+ "segment.get": [],
1096
+ "segment.create": [],
1097
+ "segment.update": [],
1098
+ "segment.archive": [],
1099
+ "setting.list": [],
1100
+ "setting.get": [],
1101
+ "setting.set": [],
1102
+ "setup.create": [],
1103
+ "snippet.list": [],
1104
+ "snippet.get": [],
1105
+ "snippet.create": [],
1106
+ "snippet.update": [],
1107
+ "snippet.archive": [],
1108
+ "table.list": [],
1109
+ "table.get": [],
1110
+ "table.update": [],
1111
+ "table.queryMetadata": [],
1112
+ "table.fks": [],
1113
+ "table.syncSchema": [],
1114
+ "table.rescanValues": [],
1115
+ "table.bulkEdit": ["bulkTableEdit"],
1116
+ "table.appendCsv": [],
1117
+ "table.replaceCsv": [],
1118
+ "timeline.list": [],
1119
+ "timeline.get": [],
1120
+ "timeline.events": [],
1121
+ "timeline.create": [],
1122
+ "timeline.update": [],
1123
+ "timeline.archive": [],
1124
+ "timeline.delete": [],
1125
+ "timelineEvent.get": [],
1126
+ "timelineEvent.create": [],
1127
+ "timelineEvent.update": [],
1128
+ "timelineEvent.archive": [],
1129
+ "timelineEvent.delete": [],
1130
+ "transform.list": ["transforms"],
1131
+ "transform.get": ["transforms"],
1132
+ "transform.create": ["transforms"],
1133
+ "transform.update": ["transforms"],
1134
+ "transform.delete": ["transforms"],
1135
+ "transform.deleteTable": ["transforms"],
1136
+ "transform.dependencies": ["transforms"],
1137
+ "transform.cancel": ["transforms"],
1138
+ "transform.getRun": ["transforms"],
1139
+ "transform.runPages": ["transforms"],
1140
+ "transform.runSummaryPages": ["unifiedTransformRuns", "transforms"],
1141
+ "transform.resetCheckpoint": ["transformCheckpointReset", "transforms"],
1142
+ "transform.runDag": ["transformDagRuns", "transforms"],
1143
+ "transform.dagTransforms": ["transformDagRuns", "transforms"],
1144
+ "transform.run": ["transforms"],
1145
+ "transformDagRun.transformRuns": ["transformDagRuns", "transforms"],
1146
+ "transformDagRun.cancel": ["transformDagRuns", "transforms"],
1147
+ "transformInspector.discover": ["transformInspector"],
1148
+ "transformInspector.lens": ["transformInspector"],
1149
+ "transformInspector.query": ["transformInspector"],
1150
+ "transformJob.list": ["transforms"],
1151
+ "transformJob.get": ["transforms"],
1152
+ "transformJob.create": ["transforms"],
1153
+ "transformJob.update": ["transforms"],
1154
+ "transformJob.delete": ["transforms"],
1155
+ "transformJob.run": ["transforms"],
1156
+ "transformJob.transforms": ["transforms"],
1157
+ "transformJob.setActive": ["transformJobActivation", "transforms"],
1158
+ "transformPython.getLibrary": ["pythonLibrary"],
1159
+ "transformPython.updateLibrary": ["pythonLibrary"],
1160
+ "transformPython.testRun": ["pythonTestRun"],
1161
+ "transformTag.list": ["transforms"],
1162
+ "transformTag.create": ["transforms"],
1163
+ "transformTag.update": ["transforms"],
1164
+ "transformTag.delete": ["transforms"],
1165
+ "transformTest.list": ["transformTests"],
1166
+ "transformTest.get": ["transformTests"],
1167
+ "transformTest.create": ["transformTests"],
1168
+ "transformTest.update": ["transformTests"],
1169
+ "transformTest.delete": ["transformTests"],
1170
+ "transformTest.run": ["transformTests"],
1171
+ "upload.createFromCsv": [],
1172
+ "user.current": []
1173
+ };
1174
+ function isMethodKey(key) {
1175
+ return Object.hasOwn(METHOD_REQUIREMENTS, key);
1176
+ }
1177
+ const METHOD_KEYS = Object.keys(METHOD_REQUIREMENTS).filter(isMethodKey);
1178
+ function methodRequirements(key) {
1179
+ return METHOD_REQUIREMENTS[key];
685
1180
  }
686
1181
  //#endregion
687
1182
  //#region src/runtime/command-help.ts
@@ -707,6 +1202,10 @@ const CommandHelpSkill = z.object({
707
1202
  skill: z.string(),
708
1203
  purpose: z.string()
709
1204
  });
1205
+ const CommandHelpRequires = z.object({
1206
+ methods: z.array(z.enum(METHOD_KEYS)),
1207
+ features: z.array(z.enum(FEATURE_NAMES))
1208
+ });
710
1209
  z.object({
711
1210
  command: z.string(),
712
1211
  description: z.string().nullable(),
@@ -716,7 +1215,7 @@ z.object({
716
1215
  args: z.array(CommandHelpArg),
717
1216
  inputSchema: z.unknown().nullable(),
718
1217
  outputSchema: z.unknown().nullable(),
719
- capabilities: Capabilities.nullable()
1218
+ requires: CommandHelpRequires.nullable()
720
1219
  });
721
1220
  const CommandIndexEntry = z.object({
722
1221
  command: z.string(),
@@ -733,7 +1232,7 @@ const EMPTY_AUGMENT = {
733
1232
  skills: [],
734
1233
  inputSchema: null,
735
1234
  outputSchema: null,
736
- capabilities: null
1235
+ requires: null
737
1236
  };
738
1237
  async function buildHelpEntry(cmd, path) {
739
1238
  const meta = await resolveCitty(cmd.meta);
@@ -747,7 +1246,7 @@ async function buildHelpEntry(cmd, path) {
747
1246
  args: convertArgs(args),
748
1247
  inputSchema: augment.inputSchema ? z.toJSONSchema(augment.inputSchema) : null,
749
1248
  outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
750
- capabilities: augment.capabilities
1249
+ requires: augment.requires
751
1250
  };
752
1251
  if (augment.details !== null) entry.details = augment.details;
753
1252
  return entry;
@@ -1058,4 +1557,4 @@ run().catch((error) => {
1058
1557
  reportError(error);
1059
1558
  });
1060
1559
  //#endregion
1061
- export { name as A, normalizeFlag as B, ENV_PROFILE as C, consumeLegacyEnvWarnings as D, ENV_URL as E, outputFlags as F, profileFlag as I, DEFAULT_MAX_BYTES as L, connectionFlags as M, listFlags as N, readEnv as O, listFlagsWithDefaultLimit as P, listEnvelopeSchema as R, ENV_DISABLE_KEYRING as S, ENV_SKIP_PREFLIGHT as T, toAliasArray as V, promptSelect as _, reportError as a, warn as b, renderSummary as c, MALFORMED_CELL as d, formatScalar as f, promptPassword as g, promptConfirm as h, mergeCapabilities as i, version as j, setMetabaseAugment as k, writeJson as l, projectForList as m, BASELINE_CAPABILITIES as n, renderItem as o, renderRows as p, checkCapabilities as r, renderList as s, interruptSignal as t, writeText as u, promptText as v, ENV_SKILLS_DIR as w, ENV_API_KEY as x, listTruncationNotice as y, flagConsumesValue as z };
1560
+ export { InternalError as $, ENV_SKILLS_DIR as A, listFlags as B, promptSelect as C, ENV_API_KEY as D, warn as E, ProfileRefreshedError as F, listEnvelopeSchema as G, outputFlags as H, setMetabaseAugment as I, normalizeFlag as J, listEnvelopeSchemaWithExtras as K, name as L, ENV_URL as M, consumeLegacyEnvWarnings as N, ENV_DISABLE_KEYRING as O, readEnv as P, ConfigError as Q, version as R, promptPassword as S, listTruncationNotice as T, profileFlag as U, listFlagsWithDefaultLimit as V, DEFAULT_MAX_BYTES as W, AbortError as X, toAliasArray as Y, ChainedRequestError as Z, formatScalar as _, Features as a, ValidationError as at, isPlainObject as b, ruleGap as c, KNOWN_RANGE as ct, renderList as d, MetabaseError as et, renderListWithExtras as f, MALFORMED_CELL as g, writeText as h, FEATURE_RULES as i, UnknownError as it, ENV_SKIP_PREFLIGHT as j, ENV_PROFILE as k, reportError as l, escapeJsonPointerSegment as lt, writeJson as m, methodRequirements as n, ResponseShapeError as nt, evaluateFeatures as o, errorMessage as ot, renderSummary as p, flagConsumesValue as q, FEATURE_NAMES as r, TimeoutError as rt, isFeatureName as s, isFileNotFoundError as st, interruptSignal as t, NetworkError as tt, renderItem as u, renderRows as v, promptText as w, promptConfirm as x, projectForList as y, connectionFlags as z };