@metabase/cli 0.5.0 → 0.5.2

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 (313) hide show
  1. package/dist/{add-collection-COtKcy6Y.mjs → add-collection-C0BQHjJd.mjs} +5 -5
  2. package/dist/{alert-DMlSjPEv.mjs → alert-mXHOt00T.mjs} +7 -7
  3. package/dist/{alerts-s3al16NZ.mjs → alerts-CyB1Z7AU.mjs} +6 -6
  4. package/dist/{append-CbGmdeLw.mjs → append-DeHhUAeY.mjs} +4 -4
  5. package/dist/{archive-DvbaSglr.mjs → archive-B1MA5MZp.mjs} +5 -5
  6. package/dist/{archive-CnDriekB.mjs → archive-Bi-Sfq5T.mjs} +5 -5
  7. package/dist/{archive-BFmx4B91.mjs → archive-CCKxZEuq.mjs} +5 -5
  8. package/dist/{archive-BZCYIBhQ.mjs → archive-CDSAXKKB.mjs} +5 -5
  9. package/dist/{archive-5EY9UJU_.mjs → archive-CfNLlebd.mjs} +6 -6
  10. package/dist/archive-CjVd1fJ5.mjs +32 -0
  11. package/dist/{archive-Ce4eArrs.mjs → archive-CpvpGZlz.mjs} +3 -3
  12. package/dist/{archive-DDO2XX0E.mjs → archive-DRMXvkiI.mjs} +4 -4
  13. package/dist/{archive-a05W75XH.mjs → archive-DfDqPgtk.mjs} +3 -3
  14. package/dist/{archive-DzSdJVqE.mjs → archive-DpgtAdEa.mjs} +5 -5
  15. package/dist/{archive-C_UHeanE.mjs → archive-HCVTRXI2.mjs} +3 -3
  16. package/dist/{archive-DW7x0IFB.mjs → archive-qy0CFo1s2.mjs} +5 -5
  17. package/dist/{auth-DOz7KW5E.mjs → auth-_cdypXeX.mjs} +5 -5
  18. package/dist/{body-Di7940x_.mjs → body-C0VnEiRV.mjs} +2 -2
  19. package/dist/{branch-flag-CfJ8vwgu.mjs → branch-flag-CPTQ4wXp.mjs} +1 -1
  20. package/dist/{branches-BC-vlk6i.mjs → branches-C7mNYAky.mjs} +3 -3
  21. package/dist/{breaking-ByrjsFjq.mjs → breaking-BindR3ZW.mjs} +6 -6
  22. package/dist/{broken-DLSk1T88.mjs → broken-SoXfkx7d.mjs} +8 -8
  23. package/dist/{bulk-discard-values-VKGj8c7z.mjs → bulk-discard-values-D_d5_1w5.mjs} +5 -5
  24. package/dist/{bulk-edit-CpuleeCQ.mjs → bulk-edit-Cce05vb_.mjs} +5 -5
  25. package/dist/{bulk-rescan-values-DeGwiqLS.mjs → bulk-rescan-values-DIQN4VT_.mjs} +5 -5
  26. package/dist/{bulk-sync-schema-BKVhauW1.mjs → bulk-sync-schema-DLWf5dCl.mjs} +5 -5
  27. package/dist/{cancel-qKj45001.mjs → cancel-rnd6UI-6.mjs} +3 -3
  28. package/dist/{cancel-task-nmBBd1Ky.mjs → cancel-task-acq1GT6Z.mjs} +4 -4
  29. package/dist/{card-DSrgU7lT.mjs → card-3NmUiU5F.mjs} +1 -1
  30. package/dist/card-BnL92zoT.mjs +25 -0
  31. package/dist/{card-Bv4ZN0oV.mjs → card-QR3zEu6E.mjs} +39 -26
  32. package/dist/{cards-Bq73s48q.mjs → cards-DmzPtx81.mjs} +6 -6
  33. package/dist/cli.mjs +200 -49
  34. package/dist/{client-BmURNkkW.mjs → client-D-Aw6JLk.mjs} +202 -618
  35. package/dist/{collection-C03LXnCT.mjs → collection-D5vt2IJ_.mjs} +1 -1
  36. package/dist/{collection-zrZoJfgR.mjs → collection-DNmFKALA.mjs} +12 -3
  37. package/dist/collection-DRHGwFSL.mjs +21 -0
  38. package/dist/{collection-namespace-DaDzK31i.mjs → collection-namespace-Dl8_7xII.mjs} +1 -1
  39. package/dist/{content-translation-BlG41YrA.mjs → content-translation-DxT1OMnP.mjs} +3 -3
  40. package/dist/{copy-DTiYs_a2.mjs → copy-BTdTiDQo.mjs} +6 -6
  41. package/dist/{copy-DOKlVa7H.mjs → copy-CyFf3e2Y.mjs} +6 -6
  42. package/dist/{copy-flags-BhGWC5kS.mjs → copy-flags-CTM91pxH.mjs} +2 -2
  43. package/dist/{create-DraZzrLO.mjs → create-B3QZpifA.mjs} +7 -7
  44. package/dist/{create-B5BwdPwT.mjs → create-B6dABrs7.mjs} +6 -6
  45. package/dist/create-BH6zpwKD.mjs +34 -0
  46. package/dist/{create-BpwZJZxb.mjs → create-Bg3WTMMU.mjs} +5 -5
  47. package/dist/{create-JaFhqysM.mjs → create-BwIOlpLc.mjs} +5 -5
  48. package/dist/{create-BKKNIe93.mjs → create-C3rabvE_.mjs} +5 -5
  49. package/dist/{create-Duj_2YIF.mjs → create-Ce5YVusp.mjs} +4 -4
  50. package/dist/create-Ch-NbeMr.mjs +48 -0
  51. package/dist/{create-Cob0gLsA.mjs → create-CuJJd7Rh.mjs} +5 -5
  52. package/dist/{create-1rLk8b5q.mjs → create-D6NLpIzV.mjs} +3 -3
  53. package/dist/{create-B1bX6ngX.mjs → create-DeCPAYJi.mjs} +4 -4
  54. package/dist/{create-d0trLAzB.mjs → create-DeiBnRRz.mjs} +6 -6
  55. package/dist/{create-C0kz0oYc.mjs → create-DiG165B2.mjs} +5 -5
  56. package/dist/{create-B1QDNU1x.mjs → create-Dn8V5siS.mjs} +6 -6
  57. package/dist/{create-BXX_n64u.mjs → create-DsCydgm22.mjs} +5 -5
  58. package/dist/{create-vOw8gmBU.mjs → create-GU8_GNbN.mjs} +3 -3
  59. package/dist/{create-branch-B5jB4tKk.mjs → create-branch-C4Ql9G2g.mjs} +4 -4
  60. package/dist/{create-DUytP2Y1.mjs → create-qtTB8rIE.mjs} +4 -4
  61. package/dist/{create-DPggIXfn.mjs → create-roJbQOmm.mjs} +4 -4
  62. package/dist/{csv-DfExp9H_.mjs → csv-DmuyyLdz.mjs} +4 -4
  63. package/dist/{current-task-CbXIH_RA.mjs → current-task-C2PPBVVv.mjs} +4 -4
  64. package/dist/dashboard-Bq1pae4N.mjs +35 -0
  65. package/dist/{dashboard-Phz3XpRM.mjs → dashboard-Chjy5GKR.mjs} +52 -5
  66. package/dist/{dashboard-XSTr9QCr.mjs → dashboard-D5E3fMKh.mjs} +1 -1
  67. package/dist/data-action-BZ2PvlaP.mjs +24 -0
  68. package/dist/data-action-DZxVB_hD.mjs +85 -0
  69. package/dist/data-action-R9qxJDPA.mjs +40 -0
  70. package/dist/{database-BdKkae1m.mjs → database-CxykzTAA.mjs} +14 -3
  71. package/dist/{database-DoNoZ8Yc.mjs → database-D8XzgJEz.mjs} +19 -2
  72. package/dist/{dataset-DZgJm5hP.mjs → dataset-DIQLAp2P.mjs} +5 -4
  73. package/dist/db-BgKKN1-4.mjs +25 -0
  74. package/dist/{delete-DJ7SNXiH.mjs → delete-5ZOvFr-7.mjs} +4 -4
  75. package/dist/delete-B3aylPHD.mjs +44 -0
  76. package/dist/{delete-hwPqKXeY.mjs → delete-CH32Ew4m.mjs} +4 -4
  77. package/dist/{delete-D0xFMRRq.mjs → delete-CS6hsBnd.mjs} +4 -4
  78. package/dist/{delete-hcw_4pBG.mjs → delete-DeqGTuwO.mjs} +4 -4
  79. package/dist/{delete-9xHRd2CG.mjs → delete-DiZg2wit.mjs} +4 -4
  80. package/dist/delete-DtIbkF42.mjs +44 -0
  81. package/dist/{delete-B4BfGfiJ.mjs → delete-_XC6R-Jn.mjs} +4 -4
  82. package/dist/{delete-runtime-DkgYUQ_n.mjs → delete-runtime-DRGveT8H.mjs} +1 -1
  83. package/dist/{delete-table-DhTMft7u.mjs → delete-table-BEuMlqw1.mjs} +4 -4
  84. package/dist/{dependencies-B8H2gA04.mjs → dependencies-DD48u9i3.mjs} +5 -5
  85. package/dist/dependency-6kfpR8Ga.mjs +15 -0
  86. package/dist/{dependency-tQBxYjFX.mjs → dependency-CaC6XuTY.mjs} +2 -2
  87. package/dist/{dependency-Dc33mjgd.mjs → dependency-Dxvb2Znu.mjs} +2 -2
  88. package/dist/{dependents-B2GcS5kB.mjs → dependents-ByfHs8pO.mjs} +9 -9
  89. package/dist/{dirty-Cz2rUd6S.mjs → dirty-DsrGfLit.mjs} +5 -5
  90. package/dist/{discard-values-QWuWGaVK.mjs → discard-values-BfpwwC62.mjs} +5 -5
  91. package/dist/document-C0mZEg5w.mjs +20 -0
  92. package/dist/{document-wfWbV0B_.mjs → document-DVIu3Vj4.mjs} +1 -1
  93. package/dist/{document-BDobDiap.mjs → document-UMG6me2P.mjs} +1 -1
  94. package/dist/{download-Dw15fUMy.mjs → download-kpgGtfpw.mjs} +2 -2
  95. package/dist/{eid-Ex4G-ZlN.mjs → eid-Tp-ACZ4O.mjs} +4 -5
  96. package/dist/{eid-translation-zEHtr5Oc.mjs → eid-translation-Ba92VOHe.mjs} +1 -0
  97. package/dist/{entity-DBKPaMr5.mjs → entity-DjDkaMkB.mjs} +2 -2
  98. package/dist/{entry-flags-DgY3IXFe.mjs → entry-flags-nhBrUS6p.mjs} +4 -4
  99. package/dist/{events-BibJ4ya0.mjs → events-Dm9-ofXu.mjs} +6 -6
  100. package/dist/execute-BL0dAlrp.mjs +45 -0
  101. package/dist/{export-U8MdaatW.mjs → export-CIW-dHft.mjs} +24 -12
  102. package/dist/{export-flags-BrfeyE8D.mjs → export-flags-CpukgETM.mjs} +14 -6
  103. package/dist/{export-preflight-A28L45au.mjs → export-preflight-BMlz3Hp9.mjs} +5 -5
  104. package/dist/field-BUkyWiWk.mjs +21 -0
  105. package/dist/{field-wmN6raOG.mjs → field-BVz4AS3f.mjs} +1 -1
  106. package/dist/{field-5nivEfd6.mjs → field-DoWQUl7V.mjs} +58 -45
  107. package/dist/{fields-i1TFa_th.mjs → fields-CcerFaiu.mjs} +6 -6
  108. package/dist/{filter-flags-Bm3vuSM-.mjs → filter-flags-DhE4olyf.mjs} +5 -4
  109. package/dist/{fks-Dcfn3-73.mjs → fks-CYfBesHV.mjs} +6 -6
  110. package/dist/{get-D0NZ0ZO1.mjs → get--E7UvR-v.mjs} +5 -5
  111. package/dist/{get-Dz3dNirC.mjs → get-B0RQPTV-2.mjs} +5 -5
  112. package/dist/{get-CCLWWqTD.mjs → get-BFloqjrN.mjs} +4 -4
  113. package/dist/{get-B4_3DID6.mjs → get-BLnQ2aut.mjs} +5 -5
  114. package/dist/{get-DqYn9mez.mjs → get-BaiyMem3.mjs} +4 -4
  115. package/dist/{get-CobILQ_7.mjs → get-Be7yjY9v.mjs} +6 -6
  116. package/dist/get-BvEHWLGL.mjs +32 -0
  117. package/dist/get-CEJE9Rmp.mjs +31 -0
  118. package/dist/{get-EKBYludD.mjs → get-CRfrkxqc.mjs} +3 -3
  119. package/dist/{get-DPZUIPjv.mjs → get-CZgAr8rM.mjs} +5 -5
  120. package/dist/{get-BKDTRMNU.mjs → get-Cj3-w_Nu.mjs} +5 -5
  121. package/dist/{get-BCdtCwaG.mjs → get-CmxYFUuR.mjs} +3 -3
  122. package/dist/{get-Cwj1Q-at.mjs → get-DHSuVxrH.mjs} +5 -5
  123. package/dist/{get-C3ojRVJ_.mjs → get-DKbGKa6F.mjs} +4 -4
  124. package/dist/{get-HFQSttF3.mjs → get-DRhcS76J.mjs} +5 -5
  125. package/dist/{get-BiPSePQc.mjs → get-Dp45rXRS.mjs} +3 -3
  126. package/dist/{get-DUwX-RU82.mjs → get-HzDQViDP2.mjs} +5 -5
  127. package/dist/{get-CcwRn8Y2.mjs → get-LRTRu85E.mjs} +5 -5
  128. package/dist/{get-IjoHBExI.mjs → get-RCDF-hEq.mjs} +5 -5
  129. package/dist/{get-CVpIQb8v.mjs → get-eNRULmE5.mjs} +5 -5
  130. package/dist/{get-hAoJtVCK.mjs → get-p2sZvp7v.mjs} +3 -3
  131. package/dist/{get-run-B2SnsZSY.mjs → get-run-C3AHKn3-.mjs} +4 -4
  132. package/dist/git-sync-CNTB5jvI.mjs +29 -0
  133. package/dist/{git-sync-Ch1V1fEK.mjs → git-sync-D1aKczo6.mjs} +15 -8
  134. package/dist/{git-sync-COokpYgc.mjs → git-sync-DP4wQFzm.mjs} +18 -1
  135. package/dist/glossary-B9Eo4hXc.mjs +14 -0
  136. package/dist/{glossary-wnuxoE_I.mjs → glossary-BkGmCI4X.mjs} +1 -1
  137. package/dist/{glossary-6LLpItof.mjs → glossary-QN-hHfOT.mjs} +1 -1
  138. package/dist/{graph-CHlfxVy1.mjs → graph-BGOYocJc.mjs} +6 -6
  139. package/dist/{group-B3X3LTcU.mjs → group-81zoQcEP.mjs} +1 -1
  140. package/dist/{has-remote-changes-DCMpqGgE.mjs → has-remote-changes-DxsRvZsw.mjs} +4 -4
  141. package/dist/{import-C7MZhKo6.mjs → import-izn2_OsW.mjs} +7 -7
  142. package/dist/{is-dirty-DpLyHebS.mjs → is-dirty-DHYYRl6Y.mjs} +2 -2
  143. package/dist/{items-1ME_eg27.mjs → items-mIoZBqUc.mjs} +6 -6
  144. package/dist/{key-DMtgTOwN.mjs → key-BYEv4Wgq.mjs} +2 -2
  145. package/dist/{library-D2ogEIfI.mjs → library-5I0TlXmf.mjs} +5 -5
  146. package/dist/{library-fWEv38OB.mjs → library-DKIqzyUk.mjs} +2 -2
  147. package/dist/{library-CP-9yepy.mjs → library-wUiD2jbw.mjs} +1 -1
  148. package/dist/{list-BUwDGyIu.mjs → list-B6TYzXyW.mjs} +5 -5
  149. package/dist/{list-Ud7F0XdU.mjs → list-B8FPpgct.mjs} +3 -3
  150. package/dist/{list-B0h-j1E7.mjs → list-BEBAq1xc.mjs} +5 -5
  151. package/dist/{list-OXiXtdiM.mjs → list-BKhJfFyB.mjs} +5 -5
  152. package/dist/{list-STy8UHs2.mjs → list-BxIulkp3.mjs} +6 -6
  153. package/dist/{list-CQi3AgS5.mjs → list-C-f-G-cC.mjs} +5 -5
  154. package/dist/{list-dCi6OaIE.mjs → list-C1dEh2yq.mjs} +6 -6
  155. package/dist/{list-DkCadZ2E.mjs → list-C3CXHKTW.mjs} +5 -5
  156. package/dist/{list-LMlJ4uAY.mjs → list-C6roDyBd.mjs} +6 -6
  157. package/dist/{list-CJ5FyCnL.mjs → list-CT7AOXTS.mjs} +4 -4
  158. package/dist/{list-BUZ91ctZ.mjs → list-CTlIVHeG.mjs} +5 -5
  159. package/dist/list-CmOTwt_z.mjs +35 -0
  160. package/dist/list-CpxEOoqw.mjs +48 -0
  161. package/dist/{list-DzP7YXdZ.mjs → list-CuEPFHrk.mjs} +3 -3
  162. package/dist/{list-DBAEy3Rx.mjs → list-D8jiz8YP.mjs} +3 -3
  163. package/dist/{list-NINy7ybI.mjs → list-DV4wojtv.mjs} +4 -4
  164. package/dist/{list-BXcDPU5d.mjs → list-DVnPzc5m.mjs} +6 -6
  165. package/dist/list-NeImhwLD.mjs +28 -0
  166. package/dist/{list-CVh8DHOO.mjs → list-OWPg67JC.mjs} +5 -5
  167. package/dist/{list-C9996vbS.mjs → list-O_nmgwSj.mjs} +3 -3
  168. package/dist/{list-C1oEpUZG.mjs → list-jT5ndEGr.mjs} +3 -3
  169. package/dist/{login-BMON3Fft.mjs → login-DOW1mr40.mjs} +15 -8
  170. package/dist/{logout-Cx934GzW.mjs → logout-BQ8wywf7.mjs} +2 -2
  171. package/dist/{measure-CUqJtDNm.mjs → measure-Bz-bGn-Z.mjs} +6 -6
  172. package/dist/{moderation-review-BdqEH6N1.mjs → moderation-review-Bf9bPNQI.mjs} +1 -1
  173. package/dist/{notification-CCZ9mrOw.mjs → notification-W2SVssyY.mjs} +1 -1
  174. package/dist/{parameter-Celg0wZa.mjs → parameter-DvRQMKd2.mjs} +6 -6
  175. package/dist/{parameter-values-DCrU02Az.mjs → parameter-values-B7rr6fcy.mjs} +21 -7
  176. package/dist/{parse-enum-Do5Cptbv.mjs → parse-enum-DAcTzG1q.mjs} +1 -1
  177. package/dist/{parse-id-oCbmouCn.mjs → parse-id-5BZGQ9Vd.mjs} +1 -1
  178. package/dist/{parse-ref-Df8gusl4.mjs → parse-ref-ByXc-pls.mjs} +1 -1
  179. package/dist/{parse-text-CVrP7GmZ.mjs → parse-text-FgX60vIg.mjs} +1 -1
  180. package/dist/{path-DTuSDGd6.mjs → path-CHQguAPa.mjs} +4 -4
  181. package/dist/{poll-BKo5dK0l.mjs → poll-CgtcJopL.mjs} +2 -2
  182. package/dist/{preflight-UeYuGDPr.mjs → preflight-ChTKhB8Y.mjs} +2 -2
  183. package/dist/{process-BpmZXbcw.mjs → process-aqXm5QgC.mjs} +1 -1
  184. package/dist/{publish-D3GwLC-K.mjs → publish-CaoFOucS.mjs} +4 -4
  185. package/dist/{pulse-Dz0ocv0l.mjs → pulse-CC81N2_0.mjs} +1 -1
  186. package/dist/{pulse-DzVPfb5J.mjs → pulse-JPrq6NFP.mjs} +2 -2
  187. package/dist/{query-Ct697cY-.mjs → query-0u1WR1bV.mjs} +13 -12
  188. package/dist/query-BKtMP5eH.mjs +13 -0
  189. package/dist/{query-B1Cp9EO6.mjs → query-CzDBwAZD.mjs} +17 -7
  190. package/dist/{remapping-RsoPWE7c.mjs → remapping-CodmT28F.mjs} +5 -5
  191. package/dist/{remove-collection-BJo3Wd9K.mjs → remove-collection-DfUsf6Dd.mjs} +5 -5
  192. package/dist/{render-C_ev6qoW.mjs → render-DP6UoZNT.mjs} +2 -2
  193. package/dist/{replace-BSAGp3cR.mjs → replace-qWiUOgmn.mjs} +4 -4
  194. package/dist/{requirement-check-T3bjQ0Mr.mjs → requirement-check-sfmyH2PH.mjs} +2 -2
  195. package/dist/{rescan-values-rpro4Kw2.mjs → rescan-values-BcrhdSj_.mjs} +5 -5
  196. package/dist/{rescan-values-CE62_2dc.mjs → rescan-values-BuDmeda3.mjs} +5 -5
  197. package/dist/{run-BI1QO9Kn.mjs → run-BBRnFayr.mjs} +7 -7
  198. package/dist/{run-B3BRodEp.mjs → run-BG_5lR0x.mjs} +4 -4
  199. package/dist/run-DXXD-CnS.mjs +63 -0
  200. package/dist/{runs-CUseZezf.mjs → runs-CovgMSwy.mjs} +5 -5
  201. package/dist/{runtime-C5Ha6Ou8.mjs → runtime-Cmes70jO.mjs} +63 -80
  202. package/dist/{schema-tables-C7YkyRh0.mjs → schema-tables-CjKl8jr5.mjs} +6 -6
  203. package/dist/{schemas-Bj5sJ9uB.mjs → schemas-CAGvBAD_.mjs} +4 -4
  204. package/dist/{search-BAXg-EJw.mjs → search-1et9tv_s.mjs} +22 -4
  205. package/dist/{search-BsAwK7Rk.mjs → search-DFU6FHRd.mjs} +6 -6
  206. package/dist/{search-CB1A4HWx.mjs → search-OpYS2Ub4.mjs} +21 -6
  207. package/dist/{segment-BEjaeLc5.mjs → segment-D-SKpFzF.mjs} +6 -6
  208. package/dist/{send-Dfh8d1gG.mjs → send-DNu83_3E.mjs} +3 -3
  209. package/dist/{set-DA8dKyzi.mjs → set-CGYZcLVo.mjs} +4 -4
  210. package/dist/{set-active-AyjKtBD-.mjs → set-active-32IaLx1O.mjs} +4 -4
  211. package/dist/set-data-actions-DRhgAfhE.mjs +46 -0
  212. package/dist/{set-sensitivity-D0613dHA.mjs → set-sensitivity-D_i3XEe8.mjs} +6 -6
  213. package/dist/{setting-B-bxCkC0.mjs → setting-BBn9Lv9J.mjs} +4 -4
  214. package/dist/{setup-Bvvqlz9d.mjs → setup-8d7Uplhy.mjs} +3 -3
  215. package/dist/{signal-Dm4N0Bcc.mjs → signal-D8MH3LMN.mjs} +1 -1
  216. package/dist/{skill-list-DkuCf0k4.mjs → skill-list-D2FhhYS3.mjs} +1 -1
  217. package/dist/{skills-DlDCTGVE.mjs → skills-BZGd_9d3.mjs} +2 -2
  218. package/dist/{skills-DxrO7HUz.mjs → skills-BeIDC-_H.mjs} +3 -3
  219. package/dist/snippet-CpZ5cJ_y.mjs +19 -0
  220. package/dist/{stash-j9JPv3ns.mjs → stash-Dyc1xZ8u.mjs} +6 -6
  221. package/dist/{status-DcbvbRc5.mjs → status-CQZwl1PX.mjs} +3 -3
  222. package/dist/{status-DxNcrfnI.mjs → status-lCN8unWe.mjs} +37 -16
  223. package/dist/{subscription-CSR2t-xK.mjs → subscription-CEFxmtGH.mjs} +6 -6
  224. package/dist/{subscriptions--0YvW40u.mjs → subscriptions-AU14uznL.mjs} +6 -6
  225. package/dist/{summary-Dslv78-r.mjs → summary-Do9IBOQM.mjs} +5 -5
  226. package/dist/{sync-schema-Dgij5ICd.mjs → sync-schema-B3nyoKZl.mjs} +5 -5
  227. package/dist/{sync-schema-BSJiokQf.mjs → sync-schema-_gw9RQyF.mjs} +6 -6
  228. package/dist/{sync-task-a1zyF1Qb.mjs → sync-task-DNKG9Bk4.mjs} +4 -3
  229. package/dist/{table-Uvu1roSx.mjs → table-BDsqRU7a.mjs} +3 -3
  230. package/dist/{table-zAdW5_3H.mjs → table-CF7zW9cI.mjs} +33 -20
  231. package/dist/table-Cb_Uvw8m.mjs +26 -0
  232. package/dist/{table-selector-flags-B9OiA3Z1.mjs → table-selector-flags-CHfrVpYQ.mjs} +3 -3
  233. package/dist/{text-821Rn8M9.mjs → text-C2VwKF9D.mjs} +1 -1
  234. package/dist/{timeline-uDCmwGFT.mjs → timeline-BgWz8DYK.mjs} +1 -1
  235. package/dist/{timeline-CCSU2qOS.mjs → timeline-DcsCXNUt.mjs} +5 -1
  236. package/dist/{timeline-event-CSzx8EDP.mjs → timeline-event-B-nGnoVL.mjs} +6 -6
  237. package/dist/timeline-x0s_3sfc.mjs +21 -0
  238. package/dist/{transform-BKX6tl3i.mjs → transform-CWGJB8N_.mjs} +1 -1
  239. package/dist/{transform-job-AaMZRxAq.mjs → transform-job-BBZ5L46v.mjs} +1 -1
  240. package/dist/{transform-job-CCguL6LP.mjs → transform-job-ClX8e5iO.mjs} +2 -1
  241. package/dist/transform-job-Dlx2c6II.mjs +22 -0
  242. package/dist/transform-kP11Mv9_.mjs +28 -0
  243. package/dist/{transform-tag-DHg7j15d.mjs → transform-tag-dKCqQPTd.mjs} +5 -5
  244. package/dist/transform-test-Bexa_K89.mjs +173 -0
  245. package/dist/transform-test-C49ZTK7M.mjs +32 -0
  246. package/dist/transform-test-jFuzVhlT.mjs +16 -0
  247. package/dist/{transforms-DwxPfMiG.mjs → transforms-DRAws1f4.mjs} +5 -5
  248. package/dist/transport-Ck4anhoc.mjs +416 -0
  249. package/dist/{tree-COFmA20J.mjs → tree-Ddsj298M.mjs} +3 -3
  250. package/dist/{unpublish-BQClh4U7.mjs → unpublish-BMfjQ8UV.mjs} +3 -3
  251. package/dist/{unreferenced-DKc0zZDl.mjs → unreferenced-DRQrvH5r.mjs} +6 -6
  252. package/dist/{update-CMRWXoZ2.mjs → update-0AoF6QJ_.mjs} +4 -4
  253. package/dist/{update-BVFfoopT.mjs → update-6sfqiInZ.mjs} +5 -5
  254. package/dist/{update-MxvqmZ3z.mjs → update-8eXJso_l.mjs} +6 -6
  255. package/dist/{update-BNwjjMk6.mjs → update-BCC1Igr2.mjs} +5 -5
  256. package/dist/{update-CFfr1ZdL.mjs → update-BIL0JPqm.mjs} +4 -4
  257. package/dist/{update-BVMgrMy7.mjs → update-BQLTaw3z.mjs} +6 -6
  258. package/dist/{update-CPmPnEvm.mjs → update-Bpsdi6kM.mjs} +6 -6
  259. package/dist/{update-kM3TDlEp.mjs → update-BtfUX9CN.mjs} +8 -8
  260. package/dist/{update-myfBF5qV.mjs → update-C19B1Sry.mjs} +6 -6
  261. package/dist/{update-Ca8LSZer.mjs → update-C1VwtJWu.mjs} +5 -5
  262. package/dist/update-C1x90FSH.mjs +52 -0
  263. package/dist/{update-C9HK3i8s.mjs → update-CGpiLu7N.mjs} +8 -8
  264. package/dist/{update-Dwr3n7_n.mjs → update-CnxzmPRG.mjs} +7 -7
  265. package/dist/update-D1aKeWfo.mjs +41 -0
  266. package/dist/{update-Bgy2amR0.mjs → update-DlFHoUxe.mjs} +6 -6
  267. package/dist/{update-DJwu8UT2.mjs → update-DpP1EEC0.mjs} +6 -6
  268. package/dist/{update-B-wcIl8T.mjs → update-DrT10fxQ.mjs} +6 -6
  269. package/dist/{update-B8jQTspb.mjs → update-_hHnM1Hx.mjs} +7 -8
  270. package/dist/{update-dashcard-C8QN2Qcu.mjs → update-dashcard-CDI0Tnxy.mjs} +7 -7
  271. package/dist/{update-BBLbEPEP.mjs → update-pXVhyiFo.mjs} +6 -6
  272. package/dist/{upgrade-BBOEVIRa.mjs → upgrade-Cfouv1Ii.mjs} +4 -4
  273. package/dist/upload-Cqv-In6j.mjs +13 -0
  274. package/dist/{upload-CoBd4qBp.mjs → upload-DIEcI5iM.mjs} +3 -3
  275. package/dist/{upload-CxpXpjCf.mjs → upload-DnLXgUA-.mjs} +3 -3
  276. package/dist/{uuid-DW30GY7B.mjs → uuid-D0sH5txV.mjs} +2 -2
  277. package/dist/{validate-n85yMraN.mjs → validate-BQ7vI8_x.mjs} +1 -1
  278. package/dist/{validate-query-BwXvFFYi.mjs → validate-query-YtH3d5BP.mjs} +7 -3
  279. package/dist/{values-B6eFE4K5.mjs → values-BFPO6y5o.mjs} +5 -5
  280. package/dist/{verify-DnU-wXIs.mjs → verify-7fW020r_.mjs} +3 -3
  281. package/dist/{verify-BSq7x66g.mjs → verify-C-StvB4f.mjs} +5 -5
  282. package/dist/{verify-Dp8tUbP3.mjs → verify-CuGs0X3C.mjs} +5 -5
  283. package/dist/{verify-flags-CMpRkMPa.mjs → verify-flags-DEVMB9w0.mjs} +1 -1
  284. package/dist/{wait-D6Tw4ZxO.mjs → wait-Cvt8xO0h.mjs} +6 -6
  285. package/dist/{wait-flags-BRUzMI6S.mjs → wait-flags-BnZ-dfE2.mjs} +2 -2
  286. package/dist/{window-BqMFpWMh.mjs → window-CfK_j6m1.mjs} +1 -1
  287. package/package.json +1 -1
  288. package/skill-data/core/SKILL.md +11 -5
  289. package/skill-data/data-action/SKILL.md +136 -0
  290. package/skill-data/git-sync/SKILL.md +3 -3
  291. package/skill-data/native-sql/SKILL.md +1 -1
  292. package/skill-data/transform/SKILL.md +64 -2
  293. package/skill-data/transform-test-plan/SKILL.md +82 -0
  294. package/skill-data/transform-test-plan/references/checklist.md +32 -0
  295. package/skill-data/transform-test-plan/references/checks.md +156 -0
  296. package/dist/card-Buc-X4Mh.mjs +0 -25
  297. package/dist/collection-D-sS0AFw.mjs +0 -21
  298. package/dist/dashboard-DH_soSQp.mjs +0 -35
  299. package/dist/db-C82M3Gpg.mjs +0 -24
  300. package/dist/dependency-CLznxtLE.mjs +0 -15
  301. package/dist/document-WhSEyI-3.mjs +0 -20
  302. package/dist/embedding-i-KqpefC.mjs +0 -9
  303. package/dist/field-qF1KRJYB.mjs +0 -21
  304. package/dist/git-sync-BlgB_-8-.mjs +0 -29
  305. package/dist/glossary-BvVxqjxJ.mjs +0 -14
  306. package/dist/input-sRdxNc3T.mjs +0 -61
  307. package/dist/list-BoVeF8QA.mjs +0 -38
  308. package/dist/snippet-B7Kau5U8.mjs +0 -19
  309. package/dist/table-qjgz2eek.mjs +0 -26
  310. package/dist/timeline-CNkrY3e3.mjs +0 -21
  311. package/dist/transform-Y86R7_2F.mjs +0 -28
  312. package/dist/transform-job-Cg_1jzWI.mjs +0 -22
  313. package/dist/upload-fcim1xtK.mjs +0 -13
@@ -0,0 +1,52 @@
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
+ import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
+ import { o as DataActionUpdateInput, t as DataAction } from "./data-action-DZxVB_hD.mjs";
7
+ import { n as DATA_ACTION_DATASET_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-YtH3d5BP.mjs";
8
+ import { n as dataActionView } from "./data-action-R9qxJDPA.mjs";
9
+ //#region src/commands/data-action/update.ts
10
+ var update_default = defineMetabaseCommand({
11
+ meta: {
12
+ name: "update",
13
+ description: "Update a data action by id"
14
+ },
15
+ details: "The JSON body carries only the fields to change. A new MBQL 5 `dataset_query` is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass.",
16
+ skills: [{
17
+ skill: "data-action",
18
+ purpose: "the fields of a data action"
19
+ }],
20
+ requires: ["dataAction.update"],
21
+ args: {
22
+ ...outputFlags,
23
+ ...profileFlag,
24
+ ...connectionFlags,
25
+ ...bodyInputFlags,
26
+ ...skipValidateFlag,
27
+ id: {
28
+ type: "positional",
29
+ description: "Data action id",
30
+ required: true
31
+ }
32
+ },
33
+ inputSchema: DataActionUpdateInput,
34
+ outputSchema: DataAction,
35
+ examples: [
36
+ "cat patch.json | mb data-action update 1",
37
+ "mb data-action update 1 --file patch.json",
38
+ "mb data-action update 1 --body '{\"name\":\"Rename an order\"}'"
39
+ ],
40
+ async run({ args, ctx, getClient }) {
41
+ const id = parseId(args.id);
42
+ const body = await readBody({
43
+ flag: args.body,
44
+ file: args.file
45
+ }, DataActionUpdateInput);
46
+ if (body.dataset_query !== void 0) preflightMbql5Query(body.dataset_query, DATA_ACTION_DATASET_QUERY_LABELS, { skip: args["skip-validate"] === true });
47
+ const updated = await (await getClient()).dataAction.update(id, body);
48
+ renderSummary(updated, dataActionView, `Updated data action ${updated.id} "${updated.name}".`, ctx);
49
+ }
50
+ });
51
+ //#endregion
52
+ export { update_default as default };
@@ -1,18 +1,18 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { c as DashboardUpdateInput, o as DashboardDetail } from "./dashboard-Phz3XpRM.mjs";
7
- import { n as dashboardView } from "./dashboard-XSTr9QCr.mjs";
8
- import { t as preflightDashcardCardReferences } from "./preflight-UeYuGDPr.mjs";
6
+ import { l as DashboardUpdateInput, o as DashboardDetail } from "./dashboard-Chjy5GKR.mjs";
7
+ import { n as dashboardView } from "./dashboard-D5E3fMKh.mjs";
8
+ import { t as preflightDashcardCardReferences } from "./preflight-ChTKhB8Y.mjs";
9
9
  //#region src/commands/dashboard/update.ts
10
10
  var update_default = defineMetabaseCommand({
11
11
  meta: {
12
12
  name: "update",
13
13
  description: "Update a dashboard (and optionally its dashcards/tabs) by id"
14
14
  },
15
- details: "Every dashcard must include card_id (a card id, or null for a virtual card). Any positive card_id is pre-flight-validated (exists and readable, not archived) before the PUT.",
15
+ details: "Every dashcard must include card_id (a card id, or null for a virtual card). Any positive card_id is pre-flight-validated (exists and readable, not archived) before the PUT. dashcards and tabs each replace the whole list. A body with dashcards and no tabs keeps the current tabs, and on a dashboard with several tabs every dashcard then needs its dashboard_tab_id. Send tabs to change them, or [] with every dashboard_tab_id null to remove them all.",
16
16
  skills: [{
17
17
  skill: "dashboard",
18
18
  purpose: "wiring filters, cross-filtering, click behavior, tabs"
@@ -1,12 +1,12 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
6
  import { f as TransformUpdateInput, t as Transform } from "./transform-DiW7bREn.mjs";
7
- import { a as preflightMbql5Query, i as TRANSFORM_SOURCE_QUERY_LABELS, o as skipValidateFlag } from "./validate-query-BwXvFFYi.mjs";
8
- import { n as transformView } from "./transform-BKX6tl3i.mjs";
9
- import { t as enrichTransformCollectionError } from "./collection-namespace-DaDzK31i.mjs";
7
+ import { a as TRANSFORM_SOURCE_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-YtH3d5BP.mjs";
8
+ import { n as transformView } from "./transform-CWGJB8N_.mjs";
9
+ import { t as enrichTransformCollectionError } from "./collection-namespace-Dl8_7xII.mjs";
10
10
  //#region src/commands/transform/update.ts
11
11
  var update_default = defineMetabaseCommand({
12
12
  meta: {
@@ -0,0 +1,41 @@
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
+ import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
+ import { a as TransformTestUpdateInput, t as TransformTest } from "./transform-test-Bexa_K89.mjs";
7
+ import { n as transformTestView } from "./transform-test-C49ZTK7M.mjs";
8
+ //#region src/commands/transform-test/update.ts
9
+ var update_default = defineMetabaseCommand({
10
+ meta: {
11
+ name: "update",
12
+ description: "Update a transform test from JSON"
13
+ },
14
+ details: "Only the fields the body carries are patched. `inputs` and `expectations` replace what is stored rather than merging into it. The body is closed at every level: a test read back with `get --full` has to shed `id`, `entity_id`, `creator_id`, `created_at` and `updated_at` before it can be sent.",
15
+ requires: ["transformTest.update"],
16
+ args: {
17
+ ...outputFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ ...bodyInputFlags,
21
+ id: {
22
+ type: "positional",
23
+ description: "Transform test id",
24
+ required: true
25
+ }
26
+ },
27
+ inputSchema: TransformTestUpdateInput,
28
+ outputSchema: TransformTest,
29
+ examples: ["cat patch.json | mb transform-test update 1", "mb transform-test update 1 --file patch.json"],
30
+ async run({ args, ctx, getClient }) {
31
+ const id = parseId(args.id);
32
+ const body = await readBody({
33
+ flag: args.body,
34
+ file: args.file
35
+ }, TransformTestUpdateInput);
36
+ const updated = await (await getClient()).transformTest.update(id, body);
37
+ renderSummary(updated, transformTestView, `Updated transform test ${updated.id}.`, ctx);
38
+ }
39
+ });
40
+ //#endregion
41
+ export { update_default as default };
@@ -1,9 +1,9 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { i as GlossaryUpdateInput, t as Glossary } from "./glossary-6LLpItof.mjs";
5
- import { t as glossaryView } from "./glossary-wnuxoE_I.mjs";
6
- import { n as readEntryInput, t as entryFlags } from "./entry-flags-DgY3IXFe.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { i as GlossaryUpdateInput, t as Glossary } from "./glossary-QN-hHfOT.mjs";
5
+ import { t as glossaryView } from "./glossary-BkGmCI4X.mjs";
6
+ import { n as readEntryInput, t as entryFlags } from "./entry-flags-nhBrUS6p.mjs";
7
7
  //#region src/commands/glossary/update.ts
8
8
  var update_default = defineMetabaseCommand({
9
9
  meta: {
@@ -1,10 +1,10 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { o as TransformJobUpdateInput, t as TransformJob } from "./transform-job-CCguL6LP.mjs";
7
- import { t as transformJobView } from "./transform-job-AaMZRxAq.mjs";
6
+ import { o as TransformJobUpdateInput, t as TransformJob } from "./transform-job-ClX8e5iO.mjs";
7
+ import { t as transformJobView } from "./transform-job-BBZ5L46v.mjs";
8
8
  //#region src/commands/transform-job/update.ts
9
9
  var update_default = defineMetabaseCommand({
10
10
  meta: {
@@ -1,10 +1,10 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { i as TimelineEvent, s as TimelineEventUpdateInput } from "./timeline-CCSU2qOS.mjs";
7
- import { t as timelineEventView } from "./timeline-uDCmwGFT.mjs";
6
+ import { i as TimelineEvent, s as TimelineEventUpdateInput } from "./timeline-DcsCXNUt.mjs";
7
+ import { t as timelineEventView } from "./timeline-BgWz8DYK.mjs";
8
8
  //#region src/commands/timeline-event/update.ts
9
9
  var update_default = defineMetabaseCommand({
10
10
  meta: {
@@ -1,12 +1,11 @@
1
- import { Ct as ResponseShapeError, W as chainRequestFailure, bt as MetabaseError, c as renderSummary, ct as profileFlag, nt as connectionFlags, q as isBlank, st as outputFlags, vt as ConfigError } from "./cli.mjs";
2
- import { Q as parseInteger, t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { r as givenValue } from "./input-sRdxNc3T.mjs";
5
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { G as chainRequestFailure, J as isBlank, Ot as ResponseShapeError, St as ConfigError, Tt as MetabaseError, c as renderSummary, ct as outputFlags, ft as parseInteger, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { O as givenValue, t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
6
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
7
- import { g as CollectionUpdateInput, r as Collection } from "./collection-zrZoJfgR.mjs";
8
- import { t as parseEnumFlag } from "./parse-enum-Do5Cptbv.mjs";
9
- import { n as collectionView } from "./collection-C03LXnCT.mjs";
6
+ import { g as CollectionUpdateInput, r as Collection } from "./collection-DNmFKALA.mjs";
7
+ import { t as parseEnumFlag } from "./parse-enum-DAcTzG1q.mjs";
8
+ import { n as collectionView } from "./collection-D5vt2IJ_.mjs";
10
9
  import { z } from "zod";
11
10
  //#region src/commands/collection/update-flags.ts
12
11
  const ROOT_PARENT = "root";
@@ -1,10 +1,10 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { d as DashcardPatchInput, l as Dashcard } from "./dashboard-Phz3XpRM.mjs";
7
- import { r as dashcardView } from "./dashboard-XSTr9QCr.mjs";
6
+ import { f as DashcardDetail, p as DashcardPatchInput } from "./dashboard-Chjy5GKR.mjs";
7
+ import { r as dashcardView } from "./dashboard-D5E3fMKh.mjs";
8
8
  //#region src/commands/dashboard/update-dashcard.ts
9
9
  var update_dashcard_default = defineMetabaseCommand({
10
10
  meta: {
@@ -29,7 +29,7 @@ var update_dashcard_default = defineMetabaseCommand({
29
29
  }
30
30
  },
31
31
  inputSchema: DashcardPatchInput,
32
- outputSchema: Dashcard,
32
+ outputSchema: DashcardDetail,
33
33
  examples: [
34
34
  "mb dashboard update-dashcard 1 5 --body '{\"row\":2,\"col\":0}'",
35
35
  "mb dashboard update-dashcard 1 5 --body '{\"size_x\":12,\"size_y\":4}'",
@@ -1,10 +1,10 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as readBody } from "./body-Di7940x_.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as readBody } from "./body-C0VnEiRV.mjs";
5
5
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { a as FieldDetail, g as hasDataSensitivity, l as FieldUpdateInput } from "./field-5nivEfd6.mjs";
7
- import { c as fieldView, l as fieldWithDataSensitivityView } from "./field-wmN6raOG.mjs";
6
+ import { _ as hasDataSensitivity, a as FieldDetail, l as FieldUpdateInput } from "./field-DoWQUl7V.mjs";
7
+ import { c as fieldView, l as fieldWithDataSensitivityView } from "./field-BVz4AS3f.mjs";
8
8
  //#region src/commands/field/update.ts
9
9
  var update_default = defineMetabaseCommand({
10
10
  meta: {
@@ -1,7 +1,7 @@
1
- import { Dt as errorMessage, Tt as UnknownError, U as HttpError, X as parseJson, _t as AbortError, a as renderItem, d as writeText, et as name, g as promptConfirm, st as outputFlags, t as interruptSignal, tt as version, wt as TimeoutError, xt as NetworkError } from "./cli.mjs";
2
- import { T as USER_AGENT, t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { n as throwIfAborted, t as combineAborts } from "./signal-Dm4N0Bcc.mjs";
4
- import { n as streamProcess } from "./process-BpmZXbcw.mjs";
1
+ import { At as UnknownError, Et as NetworkError, Mt as errorMessage, W as HttpError, Z as parseJson, _ as promptConfirm, a as renderItem, ct as outputFlags, f as writeText, kt as TimeoutError, nt as version, t as interruptSignal, tt as name, xt as AbortError } from "./cli.mjs";
2
+ import { T as USER_AGENT, t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
3
+ import { n as throwIfAborted, t as combineAborts } from "./signal-D8MH3LMN.mjs";
4
+ import { n as streamProcess } from "./process-aqXm5QgC.mjs";
5
5
  import { z } from "zod";
6
6
  import { realpathSync } from "node:fs";
7
7
  import { compare, valid } from "semver";
@@ -0,0 +1,13 @@
1
+ import { t as defineCommandGroup } from "./group-81zoQcEP.mjs";
2
+ //#region src/commands/upload/index.ts
3
+ var upload_default = defineCommandGroup({
4
+ name: "upload",
5
+ description: "Upload CSV files into Metabase",
6
+ subCommands: {
7
+ csv: () => import("./csv-DmuyyLdz.mjs").then((m) => m.default),
8
+ append: () => import("./append-DeHhUAeY.mjs").then((m) => m.default),
9
+ replace: () => import("./replace-qWiUOgmn.mjs").then((m) => m.default)
10
+ }
11
+ });
12
+ //#endregion
13
+ export { upload_default as default };
@@ -1,7 +1,7 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
3
3
  import { t as ContentTranslationUploadResult } from "./content-translation-BrHOrmj9.mjs";
4
- import { n as requireUploadFilePath, t as readCsvFile } from "./upload-CxpXpjCf.mjs";
4
+ import { n as requireUploadFilePath, t as readCsvFile } from "./upload-DnLXgUA-.mjs";
5
5
  //#region src/output/views/content-translation.ts
6
6
  const contentTranslationUploadView = {
7
7
  compactPick: ContentTranslationUploadResult,
@@ -1,7 +1,7 @@
1
- import { kt as isFileNotFoundError, vt as ConfigError } from "./cli.mjs";
2
- import { n as fileNotFoundError } from "./input-sRdxNc3T.mjs";
3
- import { basename } from "node:path";
1
+ import { Pt as isFileNotFoundError, St as ConfigError } from "./cli.mjs";
2
+ import { D as fileNotFoundError } from "./runtime-Cmes70jO.mjs";
4
3
  import { readFile } from "node:fs/promises";
4
+ import { basename } from "node:path";
5
5
  //#region src/runtime/upload.ts
6
6
  function requireUploadFilePath(file) {
7
7
  if (typeof file !== "string" || file.trim() === "") throw new ConfigError("provide the CSV file to upload with --file <path>");
@@ -1,5 +1,5 @@
1
- import { d as writeText, st as outputFlags, u as writeJson, vt as ConfigError } from "./cli.mjs";
2
- import { Q as parseInteger, t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
1
+ import { St as ConfigError, ct as outputFlags, d as writeJson, f as writeText, ft as parseInteger } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
5
5
  //#region src/commands/uuid.ts
@@ -1,4 +1,4 @@
1
- import { J as isPlainObject, Mt as escapeJsonPointerSegment, vt as ConfigError } from "./cli.mjs";
1
+ import { Lt as escapeJsonPointerSegment, St as ConfigError, Y as isPlainObject } from "./cli.mjs";
2
2
  import { z } from "zod";
3
3
  import Ajv2020 from "ajv/dist/2020.js";
4
4
  import addFormats from "ajv-formats";
@@ -1,5 +1,5 @@
1
- import { u as writeJson, vt as ConfigError } from "./cli.mjs";
2
- import { a as validateQuery, i as isMbql5Query, n as assertNotLegacyEnvelopeWrappingMbql5 } from "./validate-n85yMraN.mjs";
1
+ import { St as ConfigError, d as writeJson } from "./cli.mjs";
2
+ import { a as validateQuery, i as isMbql5Query, n as assertNotLegacyEnvelopeWrappingMbql5 } from "./validate-BQ7vI8_x.mjs";
3
3
  //#region src/commands/validate-query.ts
4
4
  const skipValidateFlag = { "skip-validate": {
5
5
  type: "boolean",
@@ -9,6 +9,10 @@ const CARD_DATASET_QUERY_LABELS = {
9
9
  contextLabel: "card.dataset_query validation failed",
10
10
  bodyNoun: "dataset_query"
11
11
  };
12
+ const DATA_ACTION_DATASET_QUERY_LABELS = {
13
+ contextLabel: "dataAction.dataset_query validation failed",
14
+ bodyNoun: "dataset_query"
15
+ };
12
16
  const TRANSFORM_SOURCE_QUERY_LABELS = {
13
17
  contextLabel: "transform.source.query validation failed",
14
18
  bodyNoun: "source.query"
@@ -31,4 +35,4 @@ function preflightMbql5Query(query, labels, options) {
31
35
  throw new ConfigError(`${labels.contextLabel}: ${outcome.errors.length} error(s) — fix them, or pass --skip-validate to send anyway`);
32
36
  }
33
37
  //#endregion
34
- export { preflightMbql5Query as a, TRANSFORM_SOURCE_QUERY_LABELS as i, MEASURE_DEFINITION_LABELS as n, skipValidateFlag as o, SEGMENT_DEFINITION_LABELS as r, CARD_DATASET_QUERY_LABELS as t };
38
+ export { TRANSFORM_SOURCE_QUERY_LABELS as a, SEGMENT_DEFINITION_LABELS as i, DATA_ACTION_DATASET_QUERY_LABELS as n, preflightMbql5Query as o, MEASURE_DEFINITION_LABELS as r, skipValidateFlag as s, CARD_DATASET_QUERY_LABELS as t };
@@ -1,8 +1,8 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, p as formatScalar, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { u as FieldValues } from "./field-5nivEfd6.mjs";
5
- import { s as fieldValuesView } from "./field-wmN6raOG.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, m as formatScalar, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { u as FieldValues } from "./field-DoWQUl7V.mjs";
5
+ import { s as fieldValuesView } from "./field-BVz4AS3f.mjs";
6
6
  //#region src/commands/field/values.ts
7
7
  var values_default = defineMetabaseCommand({
8
8
  meta: {
@@ -1,6 +1,6 @@
1
- import { n as createClient } from "./client-BmURNkkW.mjs";
2
- import { Dt as errorMessage, U as HttpError, bt as MetabaseError, wt as TimeoutError, xt as NetworkError } from "./cli.mjs";
3
- import { I as probeServer, T as USER_AGENT } from "./runtime-C5Ha6Ou8.mjs";
1
+ import { n as createClient } from "./client-D-Aw6JLk.mjs";
2
+ import { Et as NetworkError, Mt as errorMessage, Tt as MetabaseError, W as HttpError, kt as TimeoutError } from "./cli.mjs";
3
+ import { B as probeServer, T as USER_AGENT } from "./runtime-Cmes70jO.mjs";
4
4
  //#region src/core/auth/verify.ts
5
5
  const VERIFY_TIMEOUT_MS = 15e3;
6
6
  async function verifyAndProbe(url, credential, options = {}) {
@@ -1,8 +1,8 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as ModerationReview } from "./moderation-review-BdqEH6N1.mjs";
5
- import { i as moderationReviewView, n as verifyFlags, r as describeReview, t as reviewInput } from "./verify-flags-CMpRkMPa.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as ModerationReview } from "./moderation-review-Bf9bPNQI.mjs";
5
+ import { i as moderationReviewView, n as verifyFlags, r as describeReview, t as reviewInput } from "./verify-flags-DEVMB9w0.mjs";
6
6
  //#region src/commands/card/verify.ts
7
7
  var verify_default = defineMetabaseCommand({
8
8
  meta: {
@@ -1,8 +1,8 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
4
- import { t as ModerationReview } from "./moderation-review-BdqEH6N1.mjs";
5
- import { i as moderationReviewView, n as verifyFlags, r as describeReview, t as reviewInput } from "./verify-flags-CMpRkMPa.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
4
+ import { t as ModerationReview } from "./moderation-review-Bf9bPNQI.mjs";
5
+ import { i as moderationReviewView, n as verifyFlags, r as describeReview, t as reviewInput } from "./verify-flags-DEVMB9w0.mjs";
6
6
  //#region src/commands/dashboard/verify.ts
7
7
  var verify_default = defineMetabaseCommand({
8
8
  meta: {
@@ -1,4 +1,4 @@
1
- import { n as ModerationReviewCompact } from "./moderation-review-BdqEH6N1.mjs";
1
+ import { n as ModerationReviewCompact } from "./moderation-review-Bf9bPNQI.mjs";
2
2
  //#region src/output/views/moderation-review.ts
3
3
  const moderationReviewView = {
4
4
  compactPick: ModerationReviewCompact,
@@ -1,9 +1,9 @@
1
- import { c as renderSummary, ct as profileFlag, nt as connectionFlags, st as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-C5Ha6Ou8.mjs";
3
- import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-BKo5dK0l.mjs";
4
- import { r as parseWaitSchedule } from "./wait-flags-BRUzMI6S.mjs";
5
- import { u as syncTaskView } from "./git-sync-Ch1V1fEK.mjs";
6
- import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-a1zyF1Qb.mjs";
1
+ import { c as renderSummary, ct as outputFlags, lt as profileFlag, rt as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-Cmes70jO.mjs";
3
+ import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-CgtcJopL.mjs";
4
+ import { r as parseWaitSchedule } from "./wait-flags-BnZ-dfE2.mjs";
5
+ import { u as syncTaskView } from "./git-sync-D1aKczo6.mjs";
6
+ import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-DNKG9Bk4.mjs";
7
7
  //#region src/commands/git-sync/wait.ts
8
8
  const WaitResult = SyncTaskOrIdle;
9
9
  var wait_default = defineMetabaseCommand({
@@ -1,6 +1,6 @@
1
1
  import { t as interruptSignal } from "./cli.mjs";
2
- import { t as parseId } from "./parse-id-oCbmouCn.mjs";
3
- import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-BKo5dK0l.mjs";
2
+ import { t as parseId } from "./parse-id-5BZGQ9Vd.mjs";
3
+ import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-CgtcJopL.mjs";
4
4
  //#region src/commands/wait-flags.ts
5
5
  const waitScheduleFlags = {
6
6
  timeout: {
@@ -1,4 +1,4 @@
1
- import { h as projectForList } from "./cli.mjs";
1
+ import { g as projectForList } from "./cli.mjs";
2
2
  //#region src/output/window.ts
3
3
  const MAX_REQUEST_PAGE_SIZE = 200;
4
4
  function windowList(items, range, serverTotal) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metabase/cli",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Metabase CLI",
5
5
  "license": "AGPL-3.0",
6
6
  "repository": {
@@ -12,8 +12,8 @@ Top-level command groups (run `mb <group> --help` to discover verbs):
12
12
 
13
13
  ```
14
14
  auth | db | table | field | upload | content-translation | query | card | dashboard | snippet | segment | measure | collection | library
15
- document | glossary | timeline | timeline-event | transform | transform-job | transform-tag | alert | subscription | setting
16
- search | dependency | git-sync | setup | eid | uuid | upgrade | skills
15
+ document | glossary | timeline | timeline-event | transform | transform-job | transform-tag | transform-test | alert | subscription | setting
16
+ search | dependency | git-sync | data-action | setup | eid | uuid | upgrade | skills
17
17
  ```
18
18
 
19
19
  The conventions below — auth, flags, output, body input — hold across **every** group. Per-command flags and examples live in each command's `--help`; add `--json` for the machine-readable form with the output JSON Schema. A few flows have their own skills (see "Specialized skills"). When a card needs a query, prefer MBQL over native SQL (portable, pre-flight-validated — load `mbql`); fall back to native SQL when MBQL can't express it.
@@ -124,7 +124,7 @@ mb transform --help --json | jq -r '.commands[].command' # verbs under "transfo
124
124
 
125
125
  ## Resource quirks worth memorizing
126
126
 
127
- Routine verb shapes (list / get / create / update), every flag, and output schemas live in each command's `--help` (add `--json` for output schemas). Below is only what help does _not_ tell you: footguns and non-obvious behaviors.
127
+ What `--help` doesn't say: footguns and non-obvious behaviors.
128
128
 
129
129
  - **db traversal: the hydration ladder.** Start with `database get <db-id> --include tables` — the compact table map (id, name, schema, description per table), one call that fits most databases. Pick the relevant tables, then `table fields <table-id>` per table (bounded: fields are per-table). `--include tables.fields` is the full rollup — small databases only. Hundreds of tables? Traverse by schema (`database schemas <db-id>` → `database schema-tables <db-id> <schema>`) or look tables up by name (`search <term> --models table --db-id <db-id> --limit 10`). `db sync-schema` / `rescan-values` queue async work and return `{status:"ok"}` at once; `sync-schema --wait` blocks until `initial_sync_status: complete`.
130
130
  - **table fields.** `table get` never returns fields on its own — pass `--include fields` (compact; the underlying query_metadata response also carries FK targets and dimensions, visible under `--full`) or use `table fields <id>` (list envelope). `table update` patches table-level metadata only; physical columns aren't editable.
@@ -134,7 +134,7 @@ Routine verb shapes (list / get / create / update), every flag, and output schem
134
134
  - **content-translation.** Admin-only, and separate from Remote Sync. `content-translation download > translations.csv` streams the complete active dictionary; `content-translation upload --file translations.csv` replaces every active translation with the file's contents. Always upload the canonical complete CSV, never a partial patch. An empty dictionary downloads as Metabase's four-row sample dictionary — don't re-upload it as real translations. Metabase limits dictionaries to 1.5 MiB.
135
135
  <!-- /requires -->
136
136
  - **card.** `dataset_query` is the `mbql/query` object itself (→ `mbql`). `--export-format csv|xlsx` streams the raw export (pipe to a file), bypassing the JSON envelope. `archive` is the only delete; unarchive with `update --body '{"archived":false}'`. `visualization_settings` keys are scoped by `display` and aren't pre-flighted — see `visualization`.
137
- - **dashboard.** Dashcards round-trip through `PUT /api/dashboard/:id` (no per-dashcard endpoint): `update-dashcard <dash-id> <dashcard-id>` patches one safely; `update --body '{"dashcards":[…]}'` replaces the whole set (omitted ids are deleted server-side; negative ids for new cards). Every dashcard must include `card_id`, including existing rows; use `card_id:null` plus a `visualization_settings.virtual_card` block (`{display:"text"|"heading"|"link"|…}`) for non-question cards. `create` accepts the **same** `dashcards` array in its initial body, so lay out the whole dashboard in one call. `create`/`update` pre-flight every positive `card_id` and exit **2** with `{ok:false,errors:[…]}` on a bad ref (non-bypassable). `dashboard get <id>` (or `--full`) hydrates dashcards/tabs; `list` omits them. **The grid is 24 columns wide:** each dashcard's `{col, row, size_x, size_y}` is in grid units — **full-width is `size_x: 24`**. Keep `col + size_x ≤ 24`, start a full-width stack's `col` at 0, and don't overlap (the server stores collisions as sent — no auto-fix). Layout patterns and per-chart default sizes → the `dashboard` skill; load it before composing any `dashcards` array.
137
+ - **dashboard.** Dashcards round-trip through `PUT /api/dashboard/:id` (no per-dashcard endpoint): `update-dashcard <dash-id> <dashcard-id>` patches one safely; `update --body '{"dashcards":[…]}'` replaces the whole set (omitted ids are deleted server-side; negative ids for new cards). Every dashcard, existing ones included, needs `card_id`; use `card_id:null` plus a `visualization_settings.virtual_card` block (`{display:"text"|"heading"|"link"|…}`) for non-question cards. `create` takes the **same** `dashcards` array, so lay out the whole dashboard in one call. `create`/`update` pre-flight every positive `card_id` and exit **2** with `{ok:false,errors:[…]}` on a bad ref (non-bypassable). `dashboard get <id>` (or `--full`) hydrates dashcards/tabs; `list` omits them. **The grid is 24 columns wide:** each dashcard's `{col, row, size_x, size_y}` is in grid units — **full-width is `size_x: 24`**. Keep `col + size_x ≤ 24`, start a full-width stack's `col` at 0, and don't overlap (the server stores collisions as sent). Load the `dashboard` skill (layout patterns, per-chart default sizes) before composing any `dashcards` array.
138
138
  - **dashboard parameters (filters).** A dashboard's `parameters` array holds its filter widgets; they're part of the dashboard record, so read them with `dashboard get <id> --fields parameters --json` (no separate verb). **Editing replaces the _whole_ array** (like dashcards), so it's a read-modify-write loop and omitting a parameter deletes it. A parameter only filters a card once it is **mapped** onto that dashcard's `parameter_mappings` — an unmapped parameter is an inert widget. `type` is a **closed enum**; an unlisted value is a hard parse error that echoes the full allowed set back to you. `dashboard parameter-values <id> <parameter-id> [--query <substr>]` fetches a widget's selectable values (`{values, has_more_values}`; `--query` is a case-insensitive substring search). Parameter types, ids, mapping targets, and value sources → the `dashboard` skill; load it before authoring a `parameters` array.
139
139
  <!-- requires: contentVerification -->
140
140
  - **verify.** `card verify <id>` / `dashboard verify <id>` (admins only) mark it verified (rank boost, `search --verified`). `--remove` (or a card query edit) withdraws it; `--text` adds a note; `get <id> --fields moderation_reviews` reads it. Verify only what you checked and the user approved.
@@ -174,9 +174,15 @@ This file is enough for any single-command task. For anything deeper, load the r
174
174
  - **`notification`** — scheduled delivery: question alerts (`mb alert`) and dashboard subscriptions (`mb subscription`). Choosing between them, the two schedule/recipient contracts, channel prerequisites, testing a send.
175
175
  <!-- requires: transforms -->
176
176
  - **`transform`** — transform body JSON, create + run-with-wait, run inspection, tags, jobs.
177
+ <!-- /requires -->
178
+ <!-- requires: transformTests -->
179
+ - **`transform-test-plan`** — planning transform tests.
177
180
  <!-- /requires -->
178
181
  - **`document`** — Metabase documents (TipTap body, embedding cards).
179
- <!-- requires: remoteSync -->
182
+ <!-- requires: dataActionsWithoutModel -->
183
+ - **`data-action`** — saved SQL writes: enabling, body, parameters, running.
184
+ <!-- /requires -->
185
+ <!-- requires: remoteSync -->
180
186
  - **`git-sync`** — round-tripping content to/from a git remote.
181
187
  <!-- /requires -->
182
188
  - **`data-workflow`** — the guided, end-to-end data workflow: investigate raw data, build clean analysis-ready tables, define reusable segments/measures/metrics, answer questions, build dashboards. **Start here when the user states a goal rather than a single verb** — "make sense of my data", "build a data model", "be my data analyst". It detects where the data is and routes to the right stage.