@metabase/cli 0.3.1-alpha.transform-tests.3fbcf8b → 0.3.1-alpha.transform-tests.d9ed765

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 (266) hide show
  1. package/dist/{add-collection-C-XJPp3F.mjs → add-collection-v_uw_8VC.mjs} +6 -9
  2. package/dist/{alert-Klz8Bhst.mjs → alert-2MDhiuxT.mjs} +7 -7
  3. package/dist/{alerts-Bp2vByJf.mjs → alerts-BDoIryWj.mjs} +7 -7
  4. package/dist/{append-D16_s1HW.mjs → append-CeHVEN3m.mjs} +5 -5
  5. package/dist/{archive-RzzXt2V0.mjs → archive-B9DiDia8.mjs} +6 -6
  6. package/dist/{archive-nDvHMzTv.mjs → archive-BMQBzQMw.mjs} +4 -4
  7. package/dist/{archive-C9iNjXcI.mjs → archive-BU3VZ1An.mjs} +5 -5
  8. package/dist/{archive-CA-HIfQq.mjs → archive-BopUoNoz.mjs} +4 -4
  9. package/dist/{archive-BOJUGwyL.mjs → archive-BuHy5_kr.mjs} +4 -4
  10. package/dist/{archive-Q_qUuYh8.mjs → archive-CVTpSQ0H.mjs} +6 -6
  11. package/dist/{archive-Dd7ZTibw.mjs → archive-CYaJZhBs.mjs} +4 -4
  12. package/dist/{archive-vzu8ghZZ.mjs → archive-CxzoUCE_.mjs} +6 -6
  13. package/dist/{archive-D4nGMs8A.mjs → archive-D5QNFMmn.mjs} +4 -4
  14. package/dist/{archive-Bj4MjbJY.mjs → archive-IBEbIm_S2.mjs} +6 -6
  15. package/dist/{archive-lDnTIypd.mjs → archive-M2_D7zAj.mjs} +6 -6
  16. package/dist/{auth-kyPQfiND.mjs → auth-DuGPC1Q0.mjs} +5 -5
  17. package/dist/{body-DxRSAMNC.mjs → body-hAwPMqBg.mjs} +3 -3
  18. package/dist/{branches-QixvzIpl.mjs → branches-CIP60haa.mjs} +4 -7
  19. package/dist/{cancel-CPStS4zJ.mjs → cancel-C9hrQ1yg.mjs} +4 -4
  20. package/dist/{cancel-task--cuSISnl.mjs → cancel-task-BeviniVd.mjs} +5 -8
  21. package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
  22. package/dist/card-DqPrL79i.mjs +24 -0
  23. package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
  24. package/dist/{cards-CNbV8aGO.mjs → cards-CvWT-tKQ.mjs} +7 -7
  25. package/dist/cli.mjs +567 -70
  26. package/dist/client-yPhazV6T.mjs +4093 -0
  27. package/dist/collection-BsXk1V41.mjs +20 -0
  28. package/dist/{collection-CfulNRBG.mjs → collection-BxdPxD38.mjs} +1 -1
  29. package/dist/{collection-CGoVLvcD.mjs → collection-DYM0p3Xl.mjs} +1 -1
  30. package/dist/{collection-namespace-CEoQ7G08.mjs → collection-namespace-C5SNf6Yw.mjs} +2 -2
  31. package/dist/{content-translation-CxTabpLF.mjs → content-translation-BNYQ8fJ3.mjs} +3 -3
  32. package/dist/{create-CEP4Jsrd.mjs → create-BVd4Y4py2.mjs} +6 -6
  33. package/dist/{create-ku05K1Oj.mjs → create-BZyLtvg5.mjs} +6 -6
  34. package/dist/{create-UxWtLwXT.mjs → create-BsiUuwSb.mjs} +5 -5
  35. package/dist/{create-WIIp7MVV.mjs → create-C1fVgFBd.mjs} +4 -4
  36. package/dist/{create-M8qXs24L.mjs → create-C4U9DGDG.mjs} +7 -7
  37. package/dist/{create-BTvSwLws.mjs → create-CHn7P-Bz.mjs} +5 -5
  38. package/dist/{create-BikaTHCw.mjs → create-CL4xkZ4j.mjs} +6 -6
  39. package/dist/{create-CYhsYOOJ.mjs → create-CcOTodqT.mjs} +4 -4
  40. package/dist/{create-BGV7ejai.mjs → create-Cmgq35ZB.mjs} +4 -4
  41. package/dist/{create-U15wd8_9.mjs → create-DPb3b69Y.mjs} +4 -4
  42. package/dist/{create-DMLjSEkF.mjs → create-DRyA-nuP.mjs} +5 -5
  43. package/dist/{create-CtDaASGO.mjs → create-DTfaHMNw.mjs} +6 -6
  44. package/dist/{create-BGy4L_yh.mjs → create-Db3QVXRi.mjs} +7 -7
  45. package/dist/{create-BsvpUxJq.mjs → create-DqKDw2zq.mjs} +5 -8
  46. package/dist/{create-CsABLrSI.mjs → create-S0jXAtl2.mjs} +11 -7
  47. package/dist/{create-BMokmmLp2.mjs → create-Z_gzD_p-2.mjs} +8 -8
  48. package/dist/{create-branch-Bkq9rtf7.mjs → create-branch-hYwnfY8X.mjs} +5 -9
  49. package/dist/{csv-GincCch9.mjs → csv-DOEqRG95.mjs} +5 -5
  50. package/dist/{current-task-CbnNWQ7H.mjs → current-task-DVo5aDfA.mjs} +5 -8
  51. package/dist/{dashboard-CKUR8ZpQ.mjs → dashboard-D0hwTC-f.mjs} +11 -2
  52. package/dist/{dashboard-ReNaou5J.mjs → dashboard-D8Yjjwfr.mjs} +10 -10
  53. package/dist/{dashboard-BlbNszi8.mjs → dashboard-DgK81azj.mjs} +1 -1
  54. package/dist/{database-B19qlLKZ.mjs → database-C3E9PZSx.mjs} +1 -1
  55. package/dist/{database-C8G6ZKG0.mjs → database-JtHTqSpq.mjs} +1 -1
  56. package/dist/{db-2hSYsqHk.mjs → db-ntq1NYVT.mjs} +7 -7
  57. package/dist/{delete-Bv3_SIqh.mjs → delete-BQWk6Ogb.mjs} +5 -5
  58. package/dist/{delete-CZqleA9Q.mjs → delete-C2iVm203.mjs} +5 -5
  59. package/dist/{delete-C1YmyeVy.mjs → delete-CPzdQGKf.mjs} +5 -5
  60. package/dist/{delete-DNsY94Ok.mjs → delete-CW8xJwDm.mjs} +5 -5
  61. package/dist/{delete-BEPw7WRT.mjs → delete-CZqaDxkf.mjs} +5 -5
  62. package/dist/{delete-B2wmUpj_.mjs → delete-Qsf-OKkl.mjs} +5 -5
  63. package/dist/{delete-runtime-D74s6vhu.mjs → delete-runtime-BKEzJn22.mjs} +1 -2
  64. package/dist/{delete-table-DySwoEaq.mjs → delete-table-DLufNvzW.mjs} +5 -5
  65. package/dist/{dependencies-ygT6uMu4.mjs → dependencies-BGtd-eIR.mjs} +7 -7
  66. package/dist/{dirty-BkiHZ8gb.mjs → dirty-BiiJ5Ngh.mjs} +6 -9
  67. package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
  68. package/dist/document-BiS-U56S.mjs +19 -0
  69. package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
  70. package/dist/{download-Chr-YNTG.mjs → download-DrcL0yRr.mjs} +3 -6
  71. package/dist/{eid-BvY-YGpN.mjs → eid-Bn3Impnq.mjs} +4 -5
  72. package/dist/{events-B01P0G7C.mjs → events-CfnrXbim.mjs} +5 -5
  73. package/dist/{export-CG23iezf.mjs → export-CFK8cMvK.mjs} +7 -10
  74. package/dist/{field-Cr2DPUG9.mjs → field-CcN4oZy6.mjs} +16 -1
  75. package/dist/{field-DikmNcAt.mjs → field-CeP-41qf.mjs} +5 -5
  76. package/dist/{field-BPsNa-TO.mjs → field-fDtIrY6D.mjs} +1 -1
  77. package/dist/{fields-C9BF3jHL.mjs → fields-B3tJI4X2.mjs} +7 -7
  78. package/dist/{get-B3jvGI0b.mjs → get-3ymehUjQ.mjs} +6 -6
  79. package/dist/{get-gFM8-HHP.mjs → get-B9fPTBEQ.mjs} +5 -8
  80. package/dist/{get-PKhv8WUf.mjs → get-BFh5ctuV.mjs} +6 -6
  81. package/dist/{get-N5EUCDL0.mjs → get-BMZ3UoJz.mjs} +6 -6
  82. package/dist/{get-DZpRq_Fw.mjs → get-Be9oShms.mjs} +4 -4
  83. package/dist/{get-DvqYIBp5.mjs → get-BkTiIo_7.mjs} +4 -4
  84. package/dist/{get-Blbcl76m.mjs → get-C-E-I10i.mjs} +6 -6
  85. package/dist/{get-FJofgEPB.mjs → get-CIlXE4zy.mjs} +6 -6
  86. package/dist/{get-UW0DOjH5.mjs → get-Cqfb4zZM.mjs} +4 -4
  87. package/dist/{get-BtauixMx.mjs → get-Cxvi9pSj.mjs} +6 -6
  88. package/dist/{get-Buxkx-RX.mjs → get-D2Bt3r3M.mjs} +4 -4
  89. package/dist/{get-DdSB-fpR.mjs → get-DJDV3NMU.mjs} +5 -5
  90. package/dist/{get-DY-e5oP7.mjs → get-D_f0INnl.mjs} +6 -6
  91. package/dist/{get-BHpVRSbm.mjs → get-Diozf-D0.mjs} +6 -6
  92. package/dist/{get-C1V7vZse.mjs → get-Dl9WoeCd.mjs} +4 -4
  93. package/dist/{get-C99cjjD0.mjs → get-DlPhNHPX.mjs} +6 -6
  94. package/dist/{get-BYSFFlsd.mjs → get-DnVGJfW42.mjs} +6 -6
  95. package/dist/get-Dx4k6_Qt.mjs +93 -0
  96. package/dist/{get-CkMLxzVy.mjs → get-lRUl1Dnb.mjs} +4 -4
  97. package/dist/{get-CMMXBVff.mjs → get-pGqPQ0Of.mjs} +6 -6
  98. package/dist/{get-run-F7ARJeAD.mjs → get-run-DmtNpSbG.mjs} +6 -6
  99. package/dist/{git-sync-BDnxPrqU.mjs → git-sync-BwBRmEhE.mjs} +18 -1
  100. package/dist/{git-sync-DxD_ng48.mjs → git-sync-TjX1r_wF.mjs} +1 -1
  101. package/dist/git-sync-jvNlPu2I.mjs +28 -0
  102. package/dist/{group-DBM87IgC.mjs → group-YQQ5GIcP.mjs} +2 -2
  103. package/dist/{has-remote-changes-Bwyp8mc-.mjs → has-remote-changes-BS6jOb2-.mjs} +5 -8
  104. package/dist/{import-CPY8aM8d.mjs → import-Cur2I6Yc.mjs} +7 -10
  105. package/dist/{input-DH9i67x_.mjs → input-DEvkIjGr.mjs} +1 -1
  106. package/dist/{is-dirty-0F_UJY7Q.mjs → is-dirty-7Jo0tglq.mjs} +3 -6
  107. package/dist/{items-FUop0zGR.mjs → items-BBJSvqWt.mjs} +7 -7
  108. package/dist/{key-BEhqIzIQ.mjs → key-PYetuQ13.mjs} +1 -1
  109. package/dist/library-BPIzb3K_.mjs +81 -0
  110. package/dist/{library-DpOtb0E0.mjs → library-CpDosMc5.mjs} +5 -5
  111. package/dist/{library-DfYAT2Ep.mjs → library-PGCfm0UA.mjs} +1 -1
  112. package/dist/{list-B-74c1BD.mjs → list--Frwwg4i.mjs} +7 -7
  113. package/dist/{list-BASNYNJr.mjs → list-40V_8T3H.mjs} +4 -4
  114. package/dist/{list-xC99-2X0.mjs → list-BAO7rPNU.mjs} +4 -4
  115. package/dist/{list--B2EUWJg.mjs → list-BAaBsdMk.mjs} +6 -6
  116. package/dist/{list-rQ-6XSua.mjs → list-BCD9lkxc.mjs} +4 -4
  117. package/dist/{list-BQaXU1bp.mjs → list-BuZaFlV-.mjs} +4 -4
  118. package/dist/{list-Beoh2AYD.mjs → list-C7kqJAc8.mjs} +4 -4
  119. package/dist/{list-CGkgypYz.mjs → list-CBGsfTib.mjs} +7 -7
  120. package/dist/{list-Uc1OxV36.mjs → list-CFJyXUsF.mjs} +14 -13
  121. package/dist/{list-DfbsmsHv.mjs → list-CQJoLqy0.mjs} +7 -7
  122. package/dist/{list-DdFViPYS.mjs → list-CVs3TyU7.mjs} +6 -6
  123. package/dist/{list-DMlFbccD.mjs → list-CX2668xz.mjs} +6 -6
  124. package/dist/{list-ba7lI44w.mjs → list-CcyZu5Jp.mjs} +6 -6
  125. package/dist/{list-C2qxVTu7.mjs → list-DPvJihmj.mjs} +7 -7
  126. package/dist/{list-BQrk4Ua4.mjs → list-D_Kv8Ezq.mjs} +7 -7
  127. package/dist/{list-GyP4b_tU.mjs → list-DuZlYCTl.mjs} +5 -5
  128. package/dist/{list-Bqm0F1Y-.mjs → list-_6JwpPXA.mjs} +6 -6
  129. package/dist/{list-lzIKVtE9.mjs → list-bCtszwHJ.mjs} +4 -4
  130. package/dist/list-rojRNBu5.mjs +60 -0
  131. package/dist/{login-D5jt0q9K.mjs → login-BCxYB6ii.mjs} +15 -12
  132. package/dist/{logout-DViy0VzV.mjs → logout-BVEYg9pV.mjs} +3 -4
  133. package/dist/{measure-IPlonpqU.mjs → measure-DYmGuTVW.mjs} +6 -6
  134. package/dist/{notification-Fcq1fIPw.mjs → notification-DVrLkjFT.mjs} +1 -1
  135. package/dist/{parameter-DUKR8NXo.mjs → parameter-Celg0wZa.mjs} +1 -1
  136. package/dist/{parameter-values-CHyOCxmR.mjs → parameter-values-D4qte8qc.mjs} +5 -6
  137. package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
  138. package/dist/{parse-id-CPINxy7h.mjs → parse-id-BSdAXN-r.mjs} +1 -1
  139. package/dist/{parse-ref-ibKVB0J4.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
  140. package/dist/{path-bMZzUOVo.mjs → path-BNZf4ETt.mjs} +5 -5
  141. package/dist/{poll-75SvT7Zv.mjs → poll-CZeXepUQ.mjs} +2 -2
  142. package/dist/{preflight-CoF1Em99.mjs → preflight-BsT-Ik4Z.mjs} +3 -4
  143. package/dist/{process-DBOOrmET.mjs → process-CTrfxxaC.mjs} +1 -1
  144. package/dist/{publish-Cs-OUG6n.mjs → publish-3Qlrs4CC.mjs} +9 -9
  145. package/dist/{pulse-BmsDenXm.mjs → pulse-Dz0ocv0l.mjs} +1 -1
  146. package/dist/{pulse-DhG6I9mI.mjs → pulse-x0gFxWfG.mjs} +2 -2
  147. package/dist/{query-CEdmSEq8.mjs → query-B8MCziCM.mjs} +9 -10
  148. package/dist/{query-CpD46hL6.mjs → query-DxjE4Hq2.mjs} +10 -12
  149. package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
  150. package/dist/{remove-collection-DynsqkwG.mjs → remove-collection-CNWmp8C-.mjs} +6 -9
  151. package/dist/{render-CI93iP0I.mjs → render-MoT089RO.mjs} +13 -2
  152. package/dist/{replace-C6YqqCG9.mjs → replace-DOmUXCyk.mjs} +5 -5
  153. package/dist/{rescan-values-C6PB02uT.mjs → rescan-values-DpU_Ex0F.mjs} +6 -6
  154. package/dist/{run-C7PXBBEl.mjs → run-B8Vys-6V.mjs} +5 -5
  155. package/dist/{run-Cb86sH_c.mjs → run-CCPUWI0V.mjs} +6 -6
  156. package/dist/{run-CpmWoOGp.mjs → run-cyUFpMX3.mjs} +26 -14
  157. package/dist/{runs-CCRszsbB.mjs → runs-92XSK8ij.mjs} +7 -7
  158. package/dist/{runtime-BMJv4VOi.mjs → runtime-DzVkvFHY.mjs} +946 -246
  159. package/dist/{schema-tables-BQdFNy1B.mjs → schema-tables-lMGk2fyi.mjs} +7 -7
  160. package/dist/{schemas-CNAPFh4n.mjs → schemas-C83Q8dYY.mjs} +5 -5
  161. package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
  162. package/dist/{search-BKVV6YtB.mjs → search-D6qBaNsw.mjs} +6 -6
  163. package/dist/{segment-CDoZHSYX.mjs → segment-BFJd2-ck.mjs} +6 -6
  164. package/dist/{selectors-BXbjj36S.mjs → selectors-Dcp25rNo.mjs} +3 -3
  165. package/dist/{send-D2eXL9lt.mjs → send-Be-_KmWr.mjs} +4 -4
  166. package/dist/{set-sHBtSGLi.mjs → set-Bg_4elCb.mjs} +5 -5
  167. package/dist/{set-active-DT61WwV0.mjs → set-active-CtQiMzt7.mjs} +5 -5
  168. package/dist/{setting-dkfKvCxc.mjs → setting-BNEblMco.mjs} +4 -4
  169. package/dist/{setup-TOwWatgm.mjs → setup-DFnxwJGX.mjs} +4 -4
  170. package/dist/{signal-CMd0EFUa.mjs → signal-k7cm5N6h.mjs} +11 -2
  171. package/dist/skill-list-Ro6J0pyV.mjs +76 -0
  172. package/dist/skills-BdrMrbXh.mjs +351 -0
  173. package/dist/{skills-BcOjZldN.mjs → skills-CGYk6b2r.mjs} +3 -3
  174. package/dist/snippet-vMnFtNwi.mjs +19 -0
  175. package/dist/{stash-BgWw2lyu.mjs → stash-C9SZwusp.mjs} +7 -11
  176. package/dist/{status-B14FO8n7.mjs → status-D0n7AuQU.mjs} +12 -11
  177. package/dist/{status-J4pEIm-c.mjs → status-Dj04FCCv.mjs} +11 -9
  178. package/dist/{subscription-B1uuKxM7.mjs → subscription-B5Iax7Ci.mjs} +6 -6
  179. package/dist/{subscriptions-BHIATSN6.mjs → subscriptions-DwvHRO1v.mjs} +7 -7
  180. package/dist/{summary-B1V5TXaZ.mjs → summary-DaA6Twxk.mjs} +6 -6
  181. package/dist/{sync-schema-D1vX-rpv.mjs → sync-schema-BFWKEC3r.mjs} +7 -7
  182. package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
  183. package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
  184. package/dist/{table-CDeO1WbH.mjs → table-DW1dG3Rl.mjs} +5 -5
  185. package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
  186. package/dist/timeline-C0rqHF4p.mjs +21 -0
  187. package/dist/{timeline-event-oGmne082.mjs → timeline-event-D1MUnexK.mjs} +6 -6
  188. package/dist/{transform-DoTyyXAu.mjs → transform-CtqB1WYo.mjs} +2 -2
  189. package/dist/transform-D08iA4H_.mjs +28 -0
  190. package/dist/{transform-D3QX0jxA.mjs → transform-DiW7bREn.mjs} +68 -5
  191. package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
  192. package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
  193. package/dist/transform-job-Me5CeV2z.mjs +22 -0
  194. package/dist/{transform-tag-Bpj8l5Ci.mjs → transform-tag-CbgjSy76.mjs} +5 -5
  195. package/dist/{transform-test-BJOPAwKl.mjs → transform-test-B-gVzODx.mjs} +1 -1
  196. package/dist/transform-test-BB_IFtZS.mjs +163 -0
  197. package/dist/transform-test-CwonhnyQ.mjs +16 -0
  198. package/dist/{transforms-K7Y4ON_q.mjs → transforms-Bhtk_Gil.mjs} +7 -7
  199. package/dist/{tree-CtFtroe4.mjs → tree-DLorrdEm.mjs} +4 -5
  200. package/dist/{unpublish-D7UaaIWA.mjs → unpublish-DOQhmLAx.mjs} +4 -7
  201. package/dist/{update-BvbPpgOL.mjs → update-BF4DWRT5.mjs} +6 -6
  202. package/dist/{update-dRAPKE3c.mjs → update-BeU02D8b.mjs} +6 -6
  203. package/dist/{update-C_wTtrtX.mjs → update-Bpb2V8Gm.mjs} +9 -9
  204. package/dist/{update-DUNJEk8m.mjs → update-CHNSRFKO.mjs} +7 -7
  205. package/dist/{update-BpuZsX9z.mjs → update-CSqPKfTk.mjs} +8 -8
  206. package/dist/{update-bix8NoKq.mjs → update-CTCcgeaY.mjs} +7 -7
  207. package/dist/{update-BlBEKrNE.mjs → update-Ch43eYU-.mjs} +5 -5
  208. package/dist/{update-MWaDj2VX.mjs → update-D2dis8s_.mjs} +8 -8
  209. package/dist/{update-YkB3xWUh.mjs → update-DEULsCgK.mjs} +6 -6
  210. package/dist/{update-B7veBLhx.mjs → update-DTZ07XFM.mjs} +5 -5
  211. package/dist/{update-CGJXd_E3.mjs → update-DWhC3xYc.mjs} +5 -5
  212. package/dist/{update-HqUKBeM2.mjs → update-DeA4gyTG.mjs} +5 -5
  213. package/dist/{update-BicO3Lio.mjs → update-Dq-KEeyS.mjs} +7 -7
  214. package/dist/{update-dashcard-BGqKMqQb.mjs → update-dashcard-CfDqxOlj.mjs} +7 -7
  215. package/dist/{update-3ksm443P.mjs → update-ezD5XTpy.mjs} +7 -7
  216. package/dist/{update-e4ufwrkF.mjs → update-mmeImeUo.mjs} +7 -7
  217. package/dist/{update-D9Nfv864.mjs → update-xjuN7bdu.mjs} +7 -7
  218. package/dist/{upgrade-DkQ1wk4z.mjs → upgrade-DgmbeOoJ.mjs} +6 -8
  219. package/dist/upload-BsPrAjN-.mjs +13 -0
  220. package/dist/{upload-CD555ui1.mjs → upload-Do2PBSeH.mjs} +2 -2
  221. package/dist/{upload-BfGc-L4t.mjs → upload-DzFBdNxM.mjs} +4 -7
  222. package/dist/{uuid-BLBLkWAF.mjs → uuid-DYYGRv9y.mjs} +3 -4
  223. package/dist/{validate-BWchyW0V.mjs → validate-EAB-1EkK.mjs} +1 -1
  224. package/dist/{validate-query-DaGYSmpQ.mjs → validate-query-CQG86147.mjs} +2 -3
  225. package/dist/{values-8CrXBkyg.mjs → values-Dk2CAR4T.mjs} +6 -6
  226. package/dist/{verify-nNVN-0CR.mjs → verify-8TnYrSNm.mjs} +3 -18
  227. package/dist/{wait-YrD7UYFF.mjs → wait-Oz6xFpyA.mjs} +7 -10
  228. package/dist/{wait-flags-CDtMS8FP.mjs → wait-flags-ClJx9LJ9.mjs} +2 -2
  229. package/dist/{window-BkvrP0gB.mjs → window-DSb1tqSe.mjs} +1 -1
  230. package/package.json +1 -1
  231. package/skill-data/core/SKILL.md +29 -13
  232. package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
  233. package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
  234. package/skill-data/document/SKILL.md +4 -1
  235. package/skill-data/git-sync/SKILL.md +5 -0
  236. package/skill-data/mbql/SKILL.md +1 -1
  237. package/skill-data/mbql/references/operators.md +20 -15
  238. package/skill-data/metadata/SKILL.md +1 -1
  239. package/skill-data/metadata/references/semantic-types.md +7 -1
  240. package/skill-data/native-sql/references/template-tags.md +6 -2
  241. package/skill-data/notification/SKILL.md +7 -1
  242. package/skill-data/transform/SKILL.md +25 -7
  243. package/skill-data/transform-test-plan/SKILL.md +171 -0
  244. package/skill-data/transform-test-plan/references/checklist.md +81 -0
  245. package/skill-data/transform-test-plan/references/checks.md +259 -0
  246. package/skill-data/visualization/SKILL.md +11 -3
  247. package/skill-data/visualization/references/settings.md +6 -4
  248. package/skills/metabase-cli/SKILL.md +1 -1
  249. package/dist/card-p2r_szeS.mjs +0 -24
  250. package/dist/client-DynvZqa0.mjs +0 -2282
  251. package/dist/collection-CAM47Der.mjs +0 -20
  252. package/dist/document-DGbDloCb.mjs +0 -19
  253. package/dist/get-B4GltkXP.mjs +0 -80
  254. package/dist/git-sync-IW4T2sKq.mjs +0 -28
  255. package/dist/library-ClLgrAXy.mjs +0 -19
  256. package/dist/list-CvzWE6CS.mjs +0 -98
  257. package/dist/network-error-D6CiOEBw.mjs +0 -431
  258. package/dist/predicates-Bkm2IoeX.mjs +0 -170
  259. package/dist/skills-DTCrMcix.mjs +0 -216
  260. package/dist/snippet-DMdFqvNq.mjs +0 -19
  261. package/dist/timeline-MQFX3Fla.mjs +0 -21
  262. package/dist/transform-CWIqW64R.mjs +0 -28
  263. package/dist/transform-job-DpF2MARE.mjs +0 -22
  264. package/dist/transform-test-BhkpwFqD.mjs +0 -16
  265. package/dist/transform-test-Dhcj7u-U.mjs +0 -142
  266. package/dist/upload-JN6EK96c.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.1-alpha.transform-tests.3fbcf8b";
360
+ var version = "0.3.1-alpha.transform-tests.d9ed765";
179
361
  var description = "Metabase CLI";
180
362
  //#endregion
181
363
  //#region src/runtime/command-augment.ts
@@ -195,37 +377,37 @@ const main = defineCommand({
195
377
  description
196
378
  },
197
379
  subCommands: {
198
- auth: () => import("./auth-kyPQfiND.mjs").then((mod) => mod.default),
199
- db: () => import("./db-2hSYsqHk.mjs").then((mod) => mod.default),
200
- table: () => import("./table-CDeO1WbH.mjs").then((mod) => mod.default),
201
- field: () => import("./field-DikmNcAt.mjs").then((mod) => mod.default),
202
- upload: () => import("./upload-JN6EK96c.mjs").then((mod) => mod.default),
203
- "content-translation": () => import("./content-translation-CxTabpLF.mjs").then((mod) => mod.default),
204
- card: () => import("./card-p2r_szeS.mjs").then((mod) => mod.default),
205
- dashboard: () => import("./dashboard-ReNaou5J.mjs").then((mod) => mod.default),
206
- subscription: () => import("./subscription-B1uuKxM7.mjs").then((mod) => mod.default),
207
- alert: () => import("./alert-Klz8Bhst.mjs").then((mod) => mod.default),
208
- collection: () => import("./collection-CAM47Der.mjs").then((mod) => mod.default),
209
- library: () => import("./library-DpOtb0E0.mjs").then((mod) => mod.default),
210
- document: () => import("./document-DGbDloCb.mjs").then((mod) => mod.default),
211
- transform: () => import("./transform-CWIqW64R.mjs").then((mod) => mod.default),
212
- "transform-job": () => import("./transform-job-DpF2MARE.mjs").then((mod) => mod.default),
213
- "transform-tag": () => import("./transform-tag-Bpj8l5Ci.mjs").then((mod) => mod.default),
214
- "transform-test": () => import("./transform-test-BhkpwFqD.mjs").then((mod) => mod.default),
215
- setting: () => import("./setting-dkfKvCxc.mjs").then((mod) => mod.default),
216
- search: () => import("./search-BKVV6YtB.mjs").then((mod) => mod.default),
217
- "git-sync": () => import("./git-sync-IW4T2sKq.mjs").then((mod) => mod.default),
218
- setup: () => import("./setup-TOwWatgm.mjs").then((mod) => mod.default),
219
- snippet: () => import("./snippet-DMdFqvNq.mjs").then((mod) => mod.default),
220
- segment: () => import("./segment-CDoZHSYX.mjs").then((mod) => mod.default),
221
- measure: () => import("./measure-IPlonpqU.mjs").then((mod) => mod.default),
222
- timeline: () => import("./timeline-MQFX3Fla.mjs").then((mod) => mod.default),
223
- "timeline-event": () => import("./timeline-event-oGmne082.mjs").then((mod) => mod.default),
224
- eid: () => import("./eid-BvY-YGpN.mjs").then((mod) => mod.default),
225
- query: () => import("./query-CEdmSEq8.mjs").then((mod) => mod.default),
226
- uuid: () => import("./uuid-BLBLkWAF.mjs").then((mod) => mod.default),
227
- upgrade: () => import("./upgrade-DkQ1wk4z.mjs").then((mod) => mod.default),
228
- skills: () => import("./skills-BcOjZldN.mjs").then((mod) => mod.default)
380
+ auth: () => import("./auth-DuGPC1Q0.mjs").then((mod) => mod.default),
381
+ db: () => import("./db-ntq1NYVT.mjs").then((mod) => mod.default),
382
+ table: () => import("./table-DW1dG3Rl.mjs").then((mod) => mod.default),
383
+ field: () => import("./field-CeP-41qf.mjs").then((mod) => mod.default),
384
+ upload: () => import("./upload-BsPrAjN-.mjs").then((mod) => mod.default),
385
+ "content-translation": () => import("./content-translation-BNYQ8fJ3.mjs").then((mod) => mod.default),
386
+ card: () => import("./card-DqPrL79i.mjs").then((mod) => mod.default),
387
+ dashboard: () => import("./dashboard-D8Yjjwfr.mjs").then((mod) => mod.default),
388
+ subscription: () => import("./subscription-B5Iax7Ci.mjs").then((mod) => mod.default),
389
+ alert: () => import("./alert-2MDhiuxT.mjs").then((mod) => mod.default),
390
+ collection: () => import("./collection-BsXk1V41.mjs").then((mod) => mod.default),
391
+ library: () => import("./library-CpDosMc5.mjs").then((mod) => mod.default),
392
+ document: () => import("./document-BiS-U56S.mjs").then((mod) => mod.default),
393
+ transform: () => import("./transform-D08iA4H_.mjs").then((mod) => mod.default),
394
+ "transform-job": () => import("./transform-job-Me5CeV2z.mjs").then((mod) => mod.default),
395
+ "transform-tag": () => import("./transform-tag-CbgjSy76.mjs").then((mod) => mod.default),
396
+ "transform-test": () => import("./transform-test-CwonhnyQ.mjs").then((mod) => mod.default),
397
+ setting: () => import("./setting-BNEblMco.mjs").then((mod) => mod.default),
398
+ search: () => import("./search-D6qBaNsw.mjs").then((mod) => mod.default),
399
+ "git-sync": () => import("./git-sync-jvNlPu2I.mjs").then((mod) => mod.default),
400
+ setup: () => import("./setup-DFnxwJGX.mjs").then((mod) => mod.default),
401
+ snippet: () => import("./snippet-vMnFtNwi.mjs").then((mod) => mod.default),
402
+ segment: () => import("./segment-BFJd2-ck.mjs").then((mod) => mod.default),
403
+ measure: () => import("./measure-DYmGuTVW.mjs").then((mod) => mod.default),
404
+ timeline: () => import("./timeline-C0rqHF4p.mjs").then((mod) => mod.default),
405
+ "timeline-event": () => import("./timeline-event-D1MUnexK.mjs").then((mod) => mod.default),
406
+ eid: () => import("./eid-Bn3Impnq.mjs").then((mod) => mod.default),
407
+ query: () => import("./query-B8MCziCM.mjs").then((mod) => mod.default),
408
+ uuid: () => import("./uuid-DYYGRv9y.mjs").then((mod) => mod.default),
409
+ upgrade: () => import("./upgrade-DgmbeOoJ.mjs").then((mod) => mod.default),
410
+ skills: () => import("./skills-CGYk6b2r.mjs").then((mod) => mod.default)
229
411
  }
230
412
  });
231
413
  setMetabaseAugment(main, {
@@ -240,9 +422,22 @@ setMetabaseAugment(main, {
240
422
  }],
241
423
  inputSchema: null,
242
424
  outputSchema: null,
243
- capabilities: null
425
+ requires: null
244
426
  });
245
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
246
441
  //#region src/core/env.ts
247
442
  const LEGACY_PREFIX = "METABASE_";
248
443
  const ENV_URL = "MB_URL";
@@ -381,6 +576,11 @@ function jsonByteLength(value) {
381
576
  return Buffer.byteLength(JSON.stringify(value), "utf8");
382
577
  }
383
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
384
584
  //#region src/output/projection.ts
385
585
  function projectForList(item, view, opts) {
386
586
  const full = opts.format === "text" && opts.fields === void 0 ? false : opts.full;
@@ -514,8 +714,11 @@ function renderSummary(item, view, summaryText, opts) {
514
714
  process.stdout.write(body);
515
715
  }
516
716
  function renderList(envelope, view, opts) {
717
+ renderListWithExtras(envelope, {}, view, opts);
718
+ }
719
+ function renderListWithExtras(envelope, extras, view, opts) {
517
720
  if (opts.format === "json") {
518
- renderJsonEnvelope(envelope, view, opts);
721
+ renderJsonEnvelope(envelope, extras, view, opts);
519
722
  return;
520
723
  }
521
724
  if (envelope.data.length === 0) {
@@ -548,8 +751,11 @@ function projectedEnvelope(envelope, view, opts) {
548
751
  data: envelope.data.map((item) => projectForList(item, view, opts))
549
752
  };
550
753
  }
551
- function renderJsonEnvelope(envelope, view, opts) {
552
- 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);
553
759
  const ordered = {
554
760
  returned: capped.returned,
555
761
  offset: capped.offset,
@@ -558,6 +764,7 @@ function renderJsonEnvelope(envelope, view, opts) {
558
764
  has_more: capped.has_more,
559
765
  next_offset: capped.next_offset,
560
766
  truncated: capped.truncated,
767
+ ...extras,
561
768
  data: capped.data
562
769
  };
563
770
  process.stdout.write(serializeJson(ordered, stdoutPretty()) + "\n");
@@ -627,6 +834,7 @@ function isRouteMissing(handled) {
627
834
  return "kind" in handled && handled.kind === ROUTE_MISSING_KIND;
628
835
  }
629
836
  function remediesFor(handled) {
837
+ if (handled instanceof ProfileRefreshedError) return [];
630
838
  if (isVersionTooOld(handled.developerDetail)) return [DOWNGRADE_REMEDY];
631
839
  if (isRouteMissing(handled)) return [ROUTE_MISSING_REMEDY];
632
840
  return [];
@@ -655,35 +863,320 @@ function writeJsonError(handled, exitCode, verbose) {
655
863
  process.stderr.write(serializeJson(envelope, stderrPretty()) + "\n");
656
864
  }
657
865
  //#endregion
658
- //#region ../client/src/version/capabilities.ts
659
- const Capabilities = z.object({
660
- minVersion: z.number(),
661
- tokenFeature: z.string().optional()
662
- });
663
- const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
664
- function mergeCapabilities(overrides) {
665
- if (overrides === void 0) return BASELINE_CAPABILITIES;
666
- return {
667
- minVersion: overrides.minVersion ?? BASELINE_CAPABILITIES.minVersion,
668
- ...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
669
975
  };
670
976
  }
671
- function checkCapabilities(info, required) {
672
- if (info.version === null) return {
673
- reason: "unknown-version",
674
- detail: "Could not detect Metabase server version. Proceeding without preflight check; failures may produce confusing errors."
675
- };
676
- if (info.version.major < required.minVersion) return {
677
- reason: "version-too-old",
678
- detail: `This operation requires Metabase v${required.minVersion}+ (this server is ${info.version.tag}). Upgrade Metabase to use it.`
679
- };
680
- if (required.tokenFeature !== void 0) {
681
- if (!(info.tokenFeatures?.[required.tokenFeature] === true)) return {
682
- reason: "missing-token-feature",
683
- detail: `This operation requires the '${required.tokenFeature}' premium feature (not enabled on this server).`
684
- };
685
- }
686
- 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];
687
1180
  }
688
1181
  //#endregion
689
1182
  //#region src/runtime/command-help.ts
@@ -709,6 +1202,10 @@ const CommandHelpSkill = z.object({
709
1202
  skill: z.string(),
710
1203
  purpose: z.string()
711
1204
  });
1205
+ const CommandHelpRequires = z.object({
1206
+ methods: z.array(z.enum(METHOD_KEYS)),
1207
+ features: z.array(z.enum(FEATURE_NAMES))
1208
+ });
712
1209
  z.object({
713
1210
  command: z.string(),
714
1211
  description: z.string().nullable(),
@@ -718,7 +1215,7 @@ z.object({
718
1215
  args: z.array(CommandHelpArg),
719
1216
  inputSchema: z.unknown().nullable(),
720
1217
  outputSchema: z.unknown().nullable(),
721
- capabilities: Capabilities.nullable()
1218
+ requires: CommandHelpRequires.nullable()
722
1219
  });
723
1220
  const CommandIndexEntry = z.object({
724
1221
  command: z.string(),
@@ -735,7 +1232,7 @@ const EMPTY_AUGMENT = {
735
1232
  skills: [],
736
1233
  inputSchema: null,
737
1234
  outputSchema: null,
738
- capabilities: null
1235
+ requires: null
739
1236
  };
740
1237
  async function buildHelpEntry(cmd, path) {
741
1238
  const meta = await resolveCitty(cmd.meta);
@@ -749,7 +1246,7 @@ async function buildHelpEntry(cmd, path) {
749
1246
  args: convertArgs(args),
750
1247
  inputSchema: augment.inputSchema ? z.toJSONSchema(augment.inputSchema) : null,
751
1248
  outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
752
- capabilities: augment.capabilities
1249
+ requires: augment.requires
753
1250
  };
754
1251
  if (augment.details !== null) entry.details = augment.details;
755
1252
  return entry;
@@ -1060,4 +1557,4 @@ run().catch((error) => {
1060
1557
  reportError(error);
1061
1558
  });
1062
1559
  //#endregion
1063
- 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 };