@metabase/cli 0.4.0-alpha.release-65-integration-branch.31ca6bb → 0.4.1-alpha.fix-transform-test-ee-path.b41b46c

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 (290) hide show
  1. package/dist/{add-collection-B-Kczwcj.mjs → add-collection-CcjydN8e.mjs} +3 -3
  2. package/dist/{alert-Ne0ivd5m.mjs → alert-DBTU8iHe.mjs} +7 -7
  3. package/dist/{alerts-Fakzg9iP.mjs → alerts-DsgnumqY.mjs} +6 -6
  4. package/dist/{append-DCDVqPmR.mjs → append-DUFn3_Og.mjs} +4 -4
  5. package/dist/{archive-DCCkQTjQ.mjs → archive-BEzfnrwM.mjs} +3 -3
  6. package/dist/{archive-CGmvQht4.mjs → archive-BTfOiOnx.mjs} +5 -5
  7. package/dist/{archive-CL8wqAzm.mjs → archive-Bxl1oeJr.mjs} +3 -3
  8. package/dist/{archive-BbNqts-V.mjs → archive-CC6THE3k.mjs} +3 -3
  9. package/dist/{archive-CpCSY4RT.mjs → archive-CI-WE7dA.mjs} +5 -5
  10. package/dist/{archive-CSdktxvW.mjs → archive-CWs273rN.mjs} +5 -5
  11. package/dist/{archive-C93UR4Uc.mjs → archive-CcPTctIo.mjs} +3 -3
  12. package/dist/{archive-DCE087yD.mjs → archive-DVgglC0F.mjs} +4 -4
  13. package/dist/{archive-DIZu7o4C.mjs → archive-DjQkD1WI.mjs} +4 -4
  14. package/dist/{archive-DEef7eB8.mjs → archive-jwyopr47.mjs} +3 -3
  15. package/dist/{archive-BNJit8eD.mjs → archive-sfqadV_a.mjs} +3 -3
  16. package/dist/{auth-Bx4QQhqt.mjs → auth-IQKgyb_x.mjs} +5 -5
  17. package/dist/{body-CB2eDFFb.mjs → body-CT1cQrhp.mjs} +3 -3
  18. package/dist/{branch-flag-pFQPNYKr.mjs → branch-flag-Czh8JT1G.mjs} +1 -1
  19. package/dist/{branches-B6ilUG-7.mjs → branches-ByUeNOBP.mjs} +3 -3
  20. package/dist/{breaking-Dg3-8yDF.mjs → breaking-BKR88YVq.mjs} +6 -6
  21. package/dist/{broken-BNBD4Eo3.mjs → broken-DeS3_Cg2.mjs} +8 -8
  22. package/dist/{bulk-discard-values-DfKXuZpR.mjs → bulk-discard-values-DY7svs0d.mjs} +5 -5
  23. package/dist/{bulk-edit-oUCfDQ_M.mjs → bulk-edit-3EfcsqCu.mjs} +4 -4
  24. package/dist/{bulk-rescan-values-B8pNlXUH.mjs → bulk-rescan-values-BpwnC_WY.mjs} +4 -4
  25. package/dist/{bulk-sync-schema-tRp7jBJt.mjs → bulk-sync-schema-Dwbs0TsG.mjs} +4 -4
  26. package/dist/{cancel-Bl4BMkwI.mjs → cancel-Nz4jJ-Ey.mjs} +3 -3
  27. package/dist/{cancel-task-CWWo7vLf.mjs → cancel-task-CX_qYiJ0.mjs} +2 -2
  28. package/dist/{card-P5mBknsl.mjs → card-Bv4ZN0oV.mjs} +12 -2
  29. package/dist/{card-CQNUT9pm.mjs → card-DSrgU7lT.mjs} +1 -1
  30. package/dist/card-DmQO85ej.mjs +25 -0
  31. package/dist/{cards-BIUYdSIR.mjs → cards-FUW8-5PO.mjs} +4 -4
  32. package/dist/cli.mjs +69 -58
  33. package/dist/{client-BHIFvEg2.mjs → client-5y-BaV3d.mjs} +13 -560
  34. package/dist/collection-BPVrTfTv.mjs +21 -0
  35. package/dist/{collection-D3KXhvnc.mjs → collection-BgPYl2c5.mjs} +1 -1
  36. package/dist/{collection-BG3Ksea-.mjs → collection-DPiztU_l.mjs} +1 -1
  37. package/dist/{collection-namespace-ZQePD67z.mjs → collection-namespace-Q_up_tSg.mjs} +2 -2
  38. package/dist/{content-translation-BRdNdAmn.mjs → content-translation-CSkaKlqa.mjs} +3 -3
  39. package/dist/{copy-CbDfVZRC.mjs → copy-WlNBviDZ.mjs} +6 -6
  40. package/dist/{copy-BMEaYmTb.mjs → copy-fikpWJO4.mjs} +4 -4
  41. package/dist/{copy-flags-anRhAvB5.mjs → copy-flags-j38p0var.mjs} +2 -2
  42. package/dist/{create-CBSsW8Hm.mjs → create-9sPJd45D.mjs} +6 -6
  43. package/dist/{create-c2zR9y4J.mjs → create-BI73JzZN.mjs} +4 -4
  44. package/dist/{create-SqmOf6WQ.mjs → create-BmCz5lro.mjs} +6 -6
  45. package/dist/{create-zpJIRn9j.mjs → create-C0MNevKK.mjs} +5 -5
  46. package/dist/{create-5cDaZcRL.mjs → create-C4dDHOzR.mjs} +3 -3
  47. package/dist/{create-BEN-2XFK.mjs → create-CC89lXeE.mjs} +3 -3
  48. package/dist/{create-C7O9tPL2.mjs → create-CEezFRTJ.mjs} +5 -5
  49. package/dist/{create-D_pNX7d0.mjs → create-CLLcjbzq.mjs} +3 -3
  50. package/dist/{create-C8hsOv_D.mjs → create-CO6gBV7I.mjs} +6 -6
  51. package/dist/{create-CG6WWY6k.mjs → create-COv2mYmk.mjs} +4 -4
  52. package/dist/{create-C3TmU1Bi.mjs → create-CYqqBKhE.mjs} +4 -4
  53. package/dist/{create-D2Shlb7t.mjs → create-Ci7o6-Fk.mjs} +3 -3
  54. package/dist/create-DQM_AB3I.mjs +34 -0
  55. package/dist/{create-R0Q-nRlq.mjs → create-DdnC7PkI.mjs} +4 -4
  56. package/dist/{create-DVEqry26.mjs → create-Dp1597uC.mjs} +4 -4
  57. package/dist/{create-xt4ff6fP.mjs → create-DqGen4jU.mjs} +3 -3
  58. package/dist/{create-branch-Cb3CWojg.mjs → create-branch-Cflee_NY.mjs} +2 -2
  59. package/dist/{create-BTQB1lqX.mjs → create-yLNBBrwG.mjs} +4 -4
  60. package/dist/{csv-CRNOhy4X.mjs → csv-CX1wws5-.mjs} +4 -4
  61. package/dist/{current-task-DFo1ZJ51.mjs → current-task-BTnORR7t.mjs} +3 -3
  62. package/dist/dashboard-c_wOMtS9.mjs +35 -0
  63. package/dist/{database-BT7DVgSr.mjs → database-D-CRyRIv.mjs} +1 -1
  64. package/dist/{database-Kq2AL5jH.mjs → database-MlUPpitM.mjs} +1 -1
  65. package/dist/{dataset-BmvCxGoE.mjs → dataset-p5oNPQgL.mjs} +1 -1
  66. package/dist/{db-C8lj73Dz.mjs → db-DNevs1XU.mjs} +7 -7
  67. package/dist/{delete-D_ZNoYVv.mjs → delete-BJ18ifIG.mjs} +4 -4
  68. package/dist/{delete-CYgNpHl7.mjs → delete-CCUYbNae.mjs} +4 -4
  69. package/dist/delete-CZTG4wI2.mjs +44 -0
  70. package/dist/{delete-qwdN0N7e.mjs → delete-Ch797MmM.mjs} +4 -4
  71. package/dist/{delete-My8TX-B2.mjs → delete-ChmqxYa7.mjs} +4 -4
  72. package/dist/{delete-I4eFpsed.mjs → delete-D5Jy83V-.mjs} +4 -4
  73. package/dist/{delete-HWeQtc4M.mjs → delete-dfrM_M6T.mjs} +4 -4
  74. package/dist/{delete-runtime-BbmRg_in.mjs → delete-runtime-Cc7TASG7.mjs} +1 -1
  75. package/dist/{delete-table-BCvjX7bh.mjs → delete-table-0xxoSknN.mjs} +4 -4
  76. package/dist/{dependencies-BAE4YPXX.mjs → dependencies-GvzMLOS2.mjs} +5 -5
  77. package/dist/{dependency-zElFM-os.mjs → dependency-BZxbh7qe.mjs} +2 -2
  78. package/dist/dependency-D6DMbPVm.mjs +15 -0
  79. package/dist/{dependency-DzLH3J8P.mjs → dependency-DaGeVAHF.mjs} +2 -2
  80. package/dist/{dependents-Dv6tLdSs.mjs → dependents-BRqKb0Pu.mjs} +9 -9
  81. package/dist/{dirty-CZORg0i0.mjs → dirty-Bq2cf5AG.mjs} +3 -3
  82. package/dist/{discard-values-DKnP-JHr.mjs → discard-values-k5-ePxWl.mjs} +5 -5
  83. package/dist/{document-C18b5rM6.mjs → document-BsaKF8UR.mjs} +1 -1
  84. package/dist/{document-DFCj1Az_.mjs → document-COQzVLjW.mjs} +1 -1
  85. package/dist/document-DCqe5MO9.mjs +20 -0
  86. package/dist/{download-BImtTll0.mjs → download-Dpbarf8I.mjs} +2 -2
  87. package/dist/{eid-D0FxhT9H.mjs → eid-BEc1p_um.mjs} +4 -4
  88. package/dist/{entity-DWp9WJbU.mjs → entity-c_Br4SFc.mjs} +2 -2
  89. package/dist/{entry-flags-3sDWwa90.mjs → entry-flags-z8cZTfaQ.mjs} +4 -4
  90. package/dist/{events-BzCjVA3-.mjs → events-DBpOpy2y.mjs} +4 -4
  91. package/dist/{export-CjqjDnaZ.mjs → export-F-R_vF48.mjs} +5 -5
  92. package/dist/{export-flags-BETJHNcw.mjs → export-flags-QbLI0sKz.mjs} +3 -3
  93. package/dist/{export-preflight-DzvIP6TB.mjs → export-preflight-0BvDa8Oz.mjs} +3 -3
  94. package/dist/field-CcCQ0goz.mjs +21 -0
  95. package/dist/{fields-C-au1eLO.mjs → fields-DOdrazv2.mjs} +4 -4
  96. package/dist/{filter-flags-BIFcA2TT.mjs → filter-flags-DiUgZ6vZ.mjs} +4 -5
  97. package/dist/{fks-83QIm8xb.mjs → fks-41Ig_ZQ2.mjs} +5 -5
  98. package/dist/{get-C9sq2boy.mjs → get-2l2CbHc6.mjs} +3 -3
  99. package/dist/{get-Z36_0HX_.mjs → get-B8hREA2A.mjs} +4 -4
  100. package/dist/{get-CkXc0Xld.mjs → get-BAV-KpLU.mjs} +5 -5
  101. package/dist/{get-Dvr_69L7.mjs → get-BVaN-tgY.mjs} +3 -3
  102. package/dist/{get-BMHbEGbr.mjs → get-Bby33eun.mjs} +4 -4
  103. package/dist/{get-DXBXhPrU.mjs → get-BjJdy_Iw.mjs} +5 -5
  104. package/dist/{get-D_v1IAL1.mjs → get-BlLUy1G0.mjs} +3 -3
  105. package/dist/{get-YPDWhgm_2.mjs → get-CPhMYZDP.mjs} +4 -4
  106. package/dist/{get-BTCOzSkl.mjs → get-CVJFF8Lb.mjs} +3 -3
  107. package/dist/{get-BawLhSwW.mjs → get-CfeNeyGE.mjs} +3 -3
  108. package/dist/{get-D7h7uH4k.mjs → get-CjK2GzFn.mjs} +5 -5
  109. package/dist/{get-CqNEVAX_2.mjs → get-D1c-C-_Q2.mjs} +3 -3
  110. package/dist/{get-Cggv6yLC.mjs → get-DaxwG0AP.mjs} +4 -4
  111. package/dist/{get-C-R_Fdsi.mjs → get-DwUB0K2G.mjs} +3 -3
  112. package/dist/{get-DkzO3G5p.mjs → get-Dwp_BfIp.mjs} +5 -5
  113. package/dist/get-DxpDAUz4.mjs +32 -0
  114. package/dist/{get-NOMvMvYJ.mjs → get-OKOOd2yb.mjs} +3 -3
  115. package/dist/{get-BjqqFG2m.mjs → get-TbBkN-jS.mjs} +3 -3
  116. package/dist/{get-DTTsPd-c.mjs → get-YinpF0y5.mjs} +4 -4
  117. package/dist/{get-C73V2KsB.mjs → get-aC5jUA1y.mjs} +5 -5
  118. package/dist/{get-run-v1QHn-Mx.mjs → get-run-PeXiUJwf.mjs} +4 -4
  119. package/dist/git-sync-CO199xCu.mjs +29 -0
  120. package/dist/{glossary-BlNCrYbw.mjs → glossary-CdW6RFId.mjs} +1 -1
  121. package/dist/{glossary-LmZWwCNP.mjs → glossary-Del97Jqg.mjs} +1 -1
  122. package/dist/glossary-LdAlftZW.mjs +14 -0
  123. package/dist/{graph-B6OliqnW.mjs → graph-M7V_js_w.mjs} +6 -6
  124. package/dist/{group-bpD_KcjA.mjs → group-D4w87fXL.mjs} +1 -1
  125. package/dist/{has-remote-changes-iTRCU9j0.mjs → has-remote-changes-D7uABGR0.mjs} +2 -2
  126. package/dist/{import-CdSs5CtT.mjs → import-CABYSyWS.mjs} +5 -5
  127. package/dist/{input-D8qW-KtR.mjs → input-DjHsV-kD.mjs} +1 -1
  128. package/dist/{is-dirty-B5fj9NeS.mjs → is-dirty-DpQBXuVa.mjs} +2 -2
  129. package/dist/{items-BxWnNEh7.mjs → items-BqUCPf-J.mjs} +6 -6
  130. package/dist/{key-BynJSK9u.mjs → key-BTaxFn_7.mjs} +1 -1
  131. package/dist/{library-Ck0EK5bi.mjs → library-C4M8TF2N.mjs} +1 -1
  132. package/dist/{library-BHHgurW0.mjs → library-DDrpsgMv.mjs} +5 -5
  133. package/dist/{library-BOv5SY24.mjs → library-DmkpcZPb.mjs} +1 -1
  134. package/dist/{list-CPWgBkPa.mjs → list-BFAc460G.mjs} +4 -4
  135. package/dist/{list-hN_Tu2T6.mjs → list-BQXq0A65.mjs} +6 -6
  136. package/dist/{list-DFJt2-fY.mjs → list-BXRUiZuH.mjs} +4 -4
  137. package/dist/{list-DA9KsA0o.mjs → list-BygxQkq7.mjs} +5 -5
  138. package/dist/{list-CNC-XHbN.mjs → list-C9H24xr5.mjs} +6 -6
  139. package/dist/{list-By9XJRiv.mjs → list-CEU9UXaZ.mjs} +3 -3
  140. package/dist/{list-Dzzt6Yee.mjs → list-CHUwj_Qh.mjs} +3 -3
  141. package/dist/{list-DbXnSL2x.mjs → list-CLRezReA.mjs} +5 -5
  142. package/dist/{list-DW4-u7eO.mjs → list-CONZkA9i.mjs} +5 -5
  143. package/dist/list-CQJABPGk.mjs +35 -0
  144. package/dist/{list-DE9gYY3I.mjs → list-CZF_gQnI.mjs} +3 -3
  145. package/dist/{list-ZHLsjxXg.mjs → list-D0MlsdSX.mjs} +4 -4
  146. package/dist/{list-zyKxxNvn.mjs → list-D217irjK.mjs} +3 -3
  147. package/dist/{list-BTgAbqeS.mjs → list-DO767sO1.mjs} +4 -4
  148. package/dist/{list-e7yvJYMw.mjs → list-Dd9o6Tut.mjs} +3 -3
  149. package/dist/{list-DUcnAb1h.mjs → list-Hiq5T4Bt.mjs} +3 -3
  150. package/dist/{list-BPMOLrwn.mjs → list-ISpYiawJ.mjs} +5 -5
  151. package/dist/{list-Bop1NTbU.mjs → list-aHFBopQd.mjs} +6 -6
  152. package/dist/{list-BTcEm4td.mjs → list-glgnTw7w.mjs} +3 -3
  153. package/dist/{list-Cpa0Se7M.mjs → list-yDJq3wNs.mjs} +5 -5
  154. package/dist/{login-B7nGQDZK.mjs → login-DCWam2ec.mjs} +6 -6
  155. package/dist/{logout-pZffAh1G.mjs → logout-CmrJqhkc.mjs} +2 -2
  156. package/dist/{measure-AtnrCTCC.mjs → measure-c_VUyXFN.mjs} +6 -6
  157. package/dist/{notification-DOYdl0ao.mjs → notification-Cuuwoksm.mjs} +1 -1
  158. package/dist/{parameter-values-CxTkEjCs.mjs → parameter-values-CnwWZrJ_.mjs} +3 -3
  159. package/dist/{parse-enum-CLIXMsd8.mjs → parse-enum-BPKULOSw.mjs} +1 -1
  160. package/dist/{parse-id-7ja3HUdB.mjs → parse-id-aMXePsUP.mjs} +1 -1
  161. package/dist/{parse-ref-Cw5fa4FI.mjs → parse-ref-8bVX_9IN.mjs} +1 -1
  162. package/dist/{parse-text-T0lTXzTZ.mjs → parse-text-Bm6eUa-p.mjs} +1 -1
  163. package/dist/{path-DM4vyihl.mjs → path-CGbz-QSr.mjs} +4 -4
  164. package/dist/{poll-Dz4tUm2f.mjs → poll-DFZRtTA_.mjs} +2 -2
  165. package/dist/{preflight-DaZ2z2C1.mjs → preflight-ChJ0pemy.mjs} +3 -3
  166. package/dist/{process-D0HdqZ3r.mjs → process-B3Di_HtV.mjs} +1 -1
  167. package/dist/{publish-C0HCL04a.mjs → publish-7ke00CtK.mjs} +4 -4
  168. package/dist/{pulse-D1uh8UIU.mjs → pulse-CIza18rO.mjs} +1 -1
  169. package/dist/{query-BC-C6efK.mjs → query-8M7ZN2Ca.mjs} +6 -6
  170. package/dist/{query-CAFPlqfi.mjs → query-DNa-fGS7.mjs} +10 -11
  171. package/dist/{remapping-CgA6UJGU.mjs → remapping-Cy1CEown.mjs} +4 -4
  172. package/dist/{remove-collection-DoctJa9g.mjs → remove-collection-B2CL66No.mjs} +3 -3
  173. package/dist/{render-Bvm9mta6.mjs → render-ColPG5G7.mjs} +2 -2
  174. package/dist/{replace-CaFJd9fO.mjs → replace-COC3ggyx.mjs} +4 -4
  175. package/dist/{rescan-values-7VOGCLMe.mjs → rescan-values-DUX58myu.mjs} +4 -4
  176. package/dist/{rescan-values-sJRwcHsk.mjs → rescan-values-DXzXTw9a.mjs} +5 -5
  177. package/dist/{run-COHDQ5J4.mjs → run-C5wf-lug.mjs} +3 -3
  178. package/dist/run-C_nqwWmC.mjs +63 -0
  179. package/dist/{run-RXpFlDAB.mjs → run-T2a4m1x9.mjs} +7 -7
  180. package/dist/{runs-CUYdCKiE.mjs → runs-Datc76Wu.mjs} +5 -5
  181. package/dist/{runtime-B8RtMb4B.mjs → runtime-C3AL15Dp.mjs} +2 -2
  182. package/dist/{schema-tables-CO5qyZBe.mjs → schema-tables-CR2S5mNc.mjs} +5 -5
  183. package/dist/{schemas-CzHHgDdF.mjs → schemas-OrGjEuVc.mjs} +4 -4
  184. package/dist/{search-Cc9vHNae.mjs → search-BEXBlfak.mjs} +5 -5
  185. package/dist/{search-BWb052_b.mjs → search-CJYSB5eP.mjs} +5 -5
  186. package/dist/{segment-C_rsUkHK.mjs → segment-Tt8GaRnc.mjs} +6 -6
  187. package/dist/{send-C-3bkpni.mjs → send-uNLODakO.mjs} +3 -3
  188. package/dist/{set-BDkT37OT.mjs → set-DRp3F4wz.mjs} +4 -4
  189. package/dist/{set-active-CDJTfQEc.mjs → set-active-CAt6ieXS.mjs} +3 -3
  190. package/dist/{set-sensitivity-DVrINHde.mjs → set-sensitivity--Qq2RXVE.mjs} +4 -4
  191. package/dist/{setting-CoLzd08x.mjs → setting-DMqvipRp.mjs} +4 -4
  192. package/dist/{setup-C4F4XYbU.mjs → setup-B2PC1NVz.mjs} +3 -3
  193. package/dist/{signal-CxWeLszu.mjs → signal-0Yt8JTMn.mjs} +1 -1
  194. package/dist/{skill-list-BgihWuPf.mjs → skill-list-Cyx1935Q.mjs} +2 -2
  195. package/dist/{skills-BWEFRpUj.mjs → skills-D7wu2iff.mjs} +3 -3
  196. package/dist/{skills-4qDjKRSk.mjs → skills-Dlp0MK6g.mjs} +2 -2
  197. package/dist/snippet-D-5bKT_U.mjs +19 -0
  198. package/dist/{stash-CZ1x0rox.mjs → stash-CHeQPI8Z.mjs} +4 -4
  199. package/dist/{status-BM6eYW7I.mjs → status-Bdt5XWrQ.mjs} +3 -3
  200. package/dist/{status-gqpPZvue.mjs → status-gTN3G-rs.mjs} +4 -4
  201. package/dist/{subscription-pSuO241O.mjs → subscription-C9alueg1.mjs} +6 -6
  202. package/dist/{subscriptions-n5zJ9rYZ.mjs → subscriptions-DJKbcxDy.mjs} +6 -6
  203. package/dist/{summary-DvIf2EiO.mjs → summary-kaC0aINr.mjs} +3 -3
  204. package/dist/{sync-schema-Cc21crxQ.mjs → sync-schema-C29bGCtt.mjs} +4 -4
  205. package/dist/{sync-schema-D1t8rhdQ.mjs → sync-schema-CyKovAb9.mjs} +6 -6
  206. package/dist/{sync-task-CXFoqlpF.mjs → sync-task-BAMOf6_t.mjs} +3 -2
  207. package/dist/table-8c-V5afO.mjs +26 -0
  208. package/dist/{table-CxvaDiIZ.mjs → table-BFIOH6Pb.mjs} +1 -1
  209. package/dist/{table-selector-flags-BVZvnhUa.mjs → table-selector-flags-CSoedTgm.mjs} +2 -2
  210. package/dist/{text-DaNkPRwt.mjs → text-CdtEI6l6.mjs} +1 -1
  211. package/dist/timeline-BetOmLYk.mjs +21 -0
  212. package/dist/{timeline-event-jn1SOKd4.mjs → timeline-event-DN3y8vwW.mjs} +6 -6
  213. package/dist/{transform-CNBIV7No.mjs → transform-D4z70PIN.mjs} +1 -1
  214. package/dist/transform-job-DALBzYVV.mjs +22 -0
  215. package/dist/transform-p-6_thIh.mjs +28 -0
  216. package/dist/{transform-tag-C0jzV6Dk.mjs → transform-tag-CIKnNaQH.mjs} +5 -5
  217. package/dist/transform-test-BjjCQ2xm.mjs +169 -0
  218. package/dist/transform-test-C5Havg4o.mjs +16 -0
  219. package/dist/transform-test-DHGKeuHa.mjs +32 -0
  220. package/dist/{transforms-DwTy_Quh.mjs → transforms-BQjwZKTN.mjs} +5 -5
  221. package/dist/transport-DuU3fLui.mjs +313 -0
  222. package/dist/{tree-p2j6IVy-.mjs → tree-C21CG5rm.mjs} +3 -3
  223. package/dist/{unpublish-B-961jX1.mjs → unpublish-C7MRZTmS.mjs} +3 -3
  224. package/dist/{unreferenced-Dxy-aYI7.mjs → unreferenced-BJUIC_Ct.mjs} +6 -6
  225. package/dist/{update-CHkVN69L.mjs → update-9b4JHJWR.mjs} +4 -4
  226. package/dist/{update-MD1Kwq1P.mjs → update-B2F22ryV.mjs} +4 -4
  227. package/dist/update-BQben_Xm.mjs +41 -0
  228. package/dist/{update-BnIEN390.mjs → update-BXFGGYT8.mjs} +5 -5
  229. package/dist/{update-BGeaPntx.mjs → update-C0QcHFIP.mjs} +5 -5
  230. package/dist/{update-CYGYUCFQ.mjs → update-CBcJTZo6.mjs} +4 -4
  231. package/dist/{update-DXxJHC8y.mjs → update-CCHTQjsP.mjs} +6 -6
  232. package/dist/{update-CKqL9PmU.mjs → update-CVO8Srng.mjs} +5 -5
  233. package/dist/{update-D4TGE6FS.mjs → update-CYy-r_Jq.mjs} +5 -5
  234. package/dist/{update-D7xi-0bU.mjs → update-CZ2eSAV5.mjs} +4 -4
  235. package/dist/{update-CALlEgIC.mjs → update-CuYvtXQY.mjs} +4 -4
  236. package/dist/{update-DK77vtFF.mjs → update-D6oHLn1g.mjs} +6 -6
  237. package/dist/{update-DiJK0uRG.mjs → update-DDH6FTe6.mjs} +8 -8
  238. package/dist/{update-BFYRBbRu.mjs → update-DEnsF5zT.mjs} +5 -5
  239. package/dist/{update-qDZvnwvf.mjs → update-DX1s6KnO.mjs} +7 -7
  240. package/dist/{update-DKDQTlnV.mjs → update-Duxk_-dC.mjs} +5 -5
  241. package/dist/{update-hvO4VpfZ.mjs → update-EpHReUGk.mjs} +7 -7
  242. package/dist/{update-tltXCUwR.mjs → update-IEVAFvpi.mjs} +4 -4
  243. package/dist/{update-dashcard-DuTjOh14.mjs → update-dashcard-C4ZndfvP.mjs} +4 -4
  244. package/dist/{upgrade-Ca-Ss5jb.mjs → upgrade-o2DpB66j.mjs} +4 -4
  245. package/dist/upload-BqNErDXE.mjs +13 -0
  246. package/dist/{upload-t6dkccqn.mjs → upload-CEtKrueq.mjs} +3 -3
  247. package/dist/{upload-C2fhpKkP.mjs → upload-DJB7DMA1.mjs} +2 -2
  248. package/dist/{uuid-BMlJZT8z.mjs → uuid-D9oozo8p.mjs} +2 -2
  249. package/dist/{validate-D7e110oU.mjs → validate-D_iikPkc.mjs} +1 -1
  250. package/dist/{validate-query-BzbZmenf.mjs → validate-query-BEYjmSv2.mjs} +3 -7
  251. package/dist/{values-CXN4xTTh.mjs → values-De8aGDiJ.mjs} +3 -3
  252. package/dist/{verify-k-JB-k3D.mjs → verify-DKmz4xJs.mjs} +3 -3
  253. package/dist/{verify-CPVfwKSu.mjs → verify-DVjaammv.mjs} +3 -3
  254. package/dist/{verify-t-CEmvoG.mjs → verify-ob8JSLxv.mjs} +3 -3
  255. package/dist/{wait-KSkq7kKW.mjs → wait-BN_MzTng.mjs} +5 -5
  256. package/dist/{wait-flags-KX7NHdj4.mjs → wait-flags-DQlX2yM_.mjs} +2 -2
  257. package/dist/{window-CI_QD04s.mjs → window-2ybHqui2.mjs} +1 -1
  258. package/package.json +1 -1
  259. package/skill-data/core/SKILL.md +7 -1
  260. package/skill-data/native-sql/SKILL.md +1 -1
  261. package/skill-data/transform/SKILL.md +63 -1
  262. package/skill-data/transform-test-plan/SKILL.md +82 -0
  263. package/skill-data/transform-test-plan/references/checklist.md +32 -0
  264. package/skill-data/transform-test-plan/references/checks.md +156 -0
  265. package/dist/archive-55sDfnHf.mjs +0 -32
  266. package/dist/card-CQD4D8mw.mjs +0 -25
  267. package/dist/collection-CuaTd10G.mjs +0 -21
  268. package/dist/create-BJG630xB.mjs +0 -48
  269. package/dist/dashboard-D11YAa7I.mjs +0 -35
  270. package/dist/data-action-BiHjjVjc.mjs +0 -24
  271. package/dist/data-action-DZxVB_hD.mjs +0 -85
  272. package/dist/data-action-R9qxJDPA.mjs +0 -40
  273. package/dist/delete-09O7BTNw.mjs +0 -44
  274. package/dist/dependency-CIam7zmr.mjs +0 -15
  275. package/dist/document-uxz96Lah.mjs +0 -20
  276. package/dist/execute-BhHbkBqf.mjs +0 -45
  277. package/dist/field-fBpiGiqr.mjs +0 -21
  278. package/dist/get-DGmE5fmp.mjs +0 -31
  279. package/dist/git-sync-VAqASCQ5.mjs +0 -29
  280. package/dist/glossary-Brnk2PBi.mjs +0 -14
  281. package/dist/list-DgsM9YQX.mjs +0 -28
  282. package/dist/query-BKtMP5eH.mjs +0 -13
  283. package/dist/snippet-CYd8D9SK.mjs +0 -19
  284. package/dist/table-Dc0dLfyg.mjs +0 -26
  285. package/dist/timeline-BqU5sOb6.mjs +0 -21
  286. package/dist/transform-BUIlFqpv.mjs +0 -28
  287. package/dist/transform-job-DsbY9mme.mjs +0 -22
  288. package/dist/update-CuQy2g51.mjs +0 -52
  289. package/dist/upload-Dw7mVr9u.mjs +0 -13
  290. package/skill-data/data-action/SKILL.md +0 -125
@@ -0,0 +1,156 @@
1
+ # Check catalog
2
+
3
+ Every check the plan can derive, grouped by theme. Per entry: **when it applies** (the declared property that switches it on — blank means always), **assert** (the expectation shape), and **fixtures** (what the input cast must contain for the check to have teeth).
4
+
5
+ Expectation SQL names the transform's **target table** and its **declared input tables** under their real names; both are rewritten to the run's temp tables, so per-row recomputation joins against inputs are writable. Anything else you name is refused (`transform-test.unremapped-reference`), so no check can read a real table.
6
+
7
+ Ids (G1, A2, …) are for cross-referencing within the plan documents only — never surface them to the user bare.
8
+
9
+ Throughout, `<target>` stands for the transform's target table as written in the transform's own definition, and `<input>` for a declared input table.
10
+
11
+ `IS DISTINCT FROM` is the null-safe inequality; MySQL spells it `NOT (a <=> b)`, and where neither parses, `a <> b OR (a IS NULL) <> (b IS NULL)`.
12
+
13
+ ## Grain & keys
14
+
15
+ **G1 — Declared grain.** Every output table states "one row per X"; the declaration anchors every other check.
16
+
17
+ - Applies: always. Elicit or detect (GROUP BY keys; the join's driving table).
18
+ - Assert: nothing directly — G1 is the plan's opening move. A table with no statable grain, or a grain stated inconsistently between docs and SQL, is a finding before any SQL runs.
19
+ - Fixtures: the grain declaration decides the cast's row structure.
20
+
21
+ **G2 — Grain-key uniqueness.** The grain key stays a key; doubles as the fan-out guard for every enriching join.
22
+
23
+ - Applies: always — one-big-table, rollups, and stars all have a grain.
24
+ - Assert (`empty`): `SELECT <grain cols>, COUNT(*) FROM <target> GROUP BY <grain cols> HAVING COUNT(*) > 1`. NULL grain values form their own bucket.
25
+ - Fixtures: a parent with ≥2 children on every join (I4) is what makes this check able to fail.
26
+
27
+ ## Additivity & reconciliation
28
+
29
+ **A1 — Measure additivity classification.** Additive / semi-additive (balances) / non-additive (ratios, rates, unit prices) decides which aggregations are valid tests.
30
+
31
+ - Applies: every numeric measure; per-column declaration.
32
+ - Assert: routes the measure — additive → A2; semi-additive → sum across non-time slices only (a test summing a balance over time is a bug in the plan); non-additive → A3 recomputation, never reconciled by summing.
33
+ - Fixtures: none directly; one coverage-matrix axis (measure × valid aggregation set).
34
+
35
+ **A2 — Conservation reconciliation.** Row counts and additive-measure sums tie from input to output; catches dropped rows and join double-counting at once.
36
+
37
+ - Applies: per declared tie (which input, which declared exclusions).
38
+ - Assert (`empty`): independent scalar subqueries compared with `IS DISTINCT FROM`, returning the mismatched pair: `SELECT (SELECT SUM(t.m) FROM <target> t) AS output_sum, (SELECT SUM(s.m) FROM <input> s) AS input_sum WHERE (…) IS DISTINCT FROM (…)`. Never reconcile via a fact-to-fact join — cardinality is uncontrollable and wrong results are silent.
39
+ - Fixtures: amounts chosen so partial survival is visible (distinct values, odd cents).
40
+
41
+ **A3 — Derived-measure recomputation.** Averages, lags, ratios, rounded presentations recompute from their components per row.
42
+
43
+ - Applies: every derived column, with its declared rule (rounding, business-day adjustment, NULL handling).
44
+ - Assert (`empty`): `SELECT <key> FROM <target> t WHERE t.<derived> IS DISTINCT FROM <recomputation from inputs or sibling columns>`.
45
+ - Fixtures: component values whose derivation is non-trivial (a NULL in the AVG, a negative lag).
46
+
47
+ **A4 — Stored aggregates on entity tables.** Lifetime/rollup stats carried on an entity-grain table (`lifetime_orders`, `review_count`, `first_order_date`) equal recomputation from detail — per row _and_ in total.
48
+
49
+ - Applies: columns detected as correlated aggregates over a detail table.
50
+ - Assert (`empty`), two per column: per-row — `WHERE t.<agg> IS DISTINCT FROM (SELECT COUNT(*)/SUM(…)/MIN(…) FROM <detail> d WHERE d.<fk> = t.<key>)`; total — the A2 scalar-pair shape. Totals alone cancel offsetting per-row errors; the per-row form is the one that catches them.
51
+ - Fixtures: an entity with several detail rows and an entity with none (I3/I4).
52
+
53
+ **A5 — Rollup consistency.** A layered rollup always agrees with its base.
54
+
55
+ - Applies: any transform reading another transform's output. The base is a declared input like any other, faked with rows taken from the base transform's own expected output.
56
+ - Assert (`empty`): every rollup measure equals the corresponding aggregation over the base (A2 shape); group-set equality both directions — `SELECT <group> FROM <target> EXCEPT SELECT DISTINCT <group col> FROM <base>` and the reverse, filtered by the declared zero-group policy.
57
+ - Fixtures: a group with no contributing rows pins the zero-group policy.
58
+
59
+ ## Fact-table type
60
+
61
+ **F2 — Fact-table type bundle.** Transaction / periodic snapshot / accumulating snapshot each carry a distinct invariant set.
62
+
63
+ - Applies: per fact-shaped output, always classified; **transaction** needs nothing beyond G2 + A2 (sparsity is legitimate).
64
+ - Periodic snapshot, if declared _dense_: `COUNT(*) = |entities| × |periods|` (or the declared subset); per-entity gap detection in the period series; inactive-period representation (zero vs NULL) pinned in the expected rows. If sparse, density checks off — the one yes/no flips the whole set.
65
+ - Accumulating snapshot: milestone dates monotone in pipeline order where set (`WHERE <later> < <earlier>` per adjacent pair); unset-milestone default (NULL vs sentinel) pinned in the expected rows; completion flags ∈ {0,1} and consistent with their date's set-ness; lags via A3.
66
+ - Fixtures (accumulating): occurrences at every completion stage — none, some, all milestones.
67
+
68
+ ## Conformance & domains
69
+
70
+ **C1 — Denormalized-copy agreement.** Every copied attribute agrees with the owning table's value for that key.
71
+
72
+ - Applies: columns declared as copies (detect: `<entity>_<attr>` naming; any column functionally dependent on a non-grain key). Each such column must be a declared copy (this check), a stored aggregate (A4), or it's a smuggled coarser-grain fact — a finding: it double-counts under summation.
73
+ - Assert (`empty`): `SELECT t.<key>, t.<copy>, d.<attr> FROM <target> t JOIN <owning input> d ON t.<key> = d.<key> WHERE t.<copy> IS DISTINCT FROM d.<attr>`.
74
+ - Scope: in a test, the copies are produced by the very join under test, so this join-form is near- tautological — the C4 functional-dependency form plus expected-row cell pinning carries the test. The join-form against an independently materialized owning table is the _drift_ check, which belongs to whatever screens the deployed tables.
75
+ - Fixtures: copies with distinct values per entity so a crossed join is visible.
76
+
77
+ **C2 — Closed-domain screen.** A categorical column's values stay inside the declared enumeration.
78
+
79
+ - Applies: per column declared closed (detect from profiling; confirm the set and whether NULL is a member).
80
+ - Assert (`empty`): `SELECT <key>, <col> FROM <target> WHERE <col> IS NOT NULL AND <col> NOT IN (<domain>)`.
81
+ - Fixtures: every domain value represented where practical; one out-of-domain input row if the source can produce one (I5).
82
+
83
+ **C3 — Referential integrity / orphan policy.** Every FK resolves, or the declared orphan handling is pinned.
84
+
85
+ - Applies: per join, conditioned on the declared response — drop / keep-with-NULLs / default row; tolerated or forbidden.
86
+ - Assert, forbidden (`empty`): `SELECT t.<fk> FROM <target> t LEFT JOIN <dim input> d ON t.<fk> = d.<key> WHERE t.<fk> IS NOT NULL AND d.<key> IS NULL`. Tolerated: not an expectation — pin the orphan's pass-through as a row in the `equals` (NULL in the copied attributes), and record the tolerance with its warehouse count in the plan. Default-row convention adds: distinct unknown keys must not collapse into one output row.
87
+ - Fixtures: one orphan row (I5). Without it the join direction is untested — an inner join silently dropping unmatched rows is the classic bug this catches.
88
+
89
+ **C4 — Many-to-one consistency.** Each declared many-to-one edge holds within the output (product → one category; zip → one state).
90
+
91
+ - Applies: per declared edge; where an owning table is in scope, C1 subsumes it — this is the one-big-table variant with nothing to join against.
92
+ - Assert (`empty`): `SELECT t.<many>, COUNT(DISTINCT t.<one>) FROM <target> t GROUP BY t.<many> HAVING COUNT(DISTINCT t.<one>) > 1`.
93
+ - Fixtures: a violating input row if the source can produce one (I5), pinning the transform's behavior on dirty input.
94
+
95
+ ## Temporal & version history
96
+
97
+ **T1 — Change handling per attribute.** How the model treats a changed source attribute decides the temporal fixtures.
98
+
99
+ - Applies: detect effective/end/current housekeeping columns.
100
+ - Present → version-history battery (`empty` each): per durable key exactly one current row; `effective < end` per row; intervals contiguous and non-overlapping; current row's end = the declared far-future default; fact rows join the version whose interval contains the fact date.
101
+ - Absent → confirm overwrite-everywhere as a stated assumption (history is silently rewritten in rollups), and derive the propagation probe: change an attribute in an input, run, assert the output regrouped.
102
+ - Fixtures: a before/after change pair; for version history, an entity with ≥2 versions and a fact row dated inside each interval.
103
+
104
+ **T2 — Date-pair ordering.** Business-guaranteed orderings asserted; known violations recorded.
105
+
106
+ - Applies: per declared date pair (ordered ≤ shipped ≤ delivered; signup ≤ first order), each classified guaranteed vs. tolerated-violated.
107
+ - Assert: guaranteed (`empty`) — `SELECT <key>, <earlier>, <later> FROM <target> WHERE <later> < <earlier>`. Tolerated — pin the violating row's downstream arithmetic (a negative lag inside an average) in the expected rows, and record the real-data count in the plan.
108
+ - Fixtures: one violating row for every tolerated ordering.
109
+
110
+ **T3 — Volatile columns.** Values that change across runs can't be pinned.
111
+
112
+ - Applies: columns derived from `now()`/`current_date` (age), run metadata (load timestamps, batch ids).
113
+ - Assert: leave the column out of the `equals` `columns` list — an undeclared column never enters the comparison. Separately assert its form where warranted (`empty`): `WHERE age NOT BETWEEN 0 AND 120`. The stable source column (`birth_date`) stays exact in the expected rows.
114
+ - Fixtures: none special; the split is the point — omit the volatile, pin the stable.
115
+
116
+ ## Screens & severity
117
+
118
+ **Q1 — Range / sign screens.** Each measure's declared bounds hold.
119
+
120
+ - Applies: per bounded measure; bounds from business meaning plus profiling (derived bounds are free: a sum of non-negatives is non-negative).
121
+ - Assert (`empty`): `SELECT <key>, <col> FROM <target> WHERE <col> < <lo> OR <col> > <hi>` (one-sided where only one bound exists).
122
+ - Fixtures: boundary values where the bound is business-set.
123
+
124
+ **Q2 — Null policy, three ways.** Measures, descriptive attributes, and FKs carry independent null policies; never presume one from another.
125
+
126
+ - Applies: per column, asked separately — "count of nothing": 0 or NULL? empty date: NULL or sentinel? FK: see C3.
127
+ - Assert: declared non-null columns get `WHERE <col> IS NULL` (`empty`). Otherwise the policy is enforced by the expected-row cell of a zero-case fixture row — NULL vs 0 vs empty is invisible until a fixture forces the choice into a cell.
128
+ - Fixtures: the zero-case row (I3) is the enforcement mechanism.
129
+
130
+ **Q3 — Naming & the tolerated oddity.** Every expectation declares its meaning.
131
+
132
+ - Applies: always, every expectation.
133
+ - Convention: the expectation's `name` states the invariant in plain words, because a failure leads with it. Each `empty` SQL opens with 1–3 comment lines naming the invariant and the failure modes it catches. Budget cuts drop business-rule checks first, then cross-table structure checks, never single-column screens.
134
+ - A forbidden condition is an `empty` expectation. A tolerated one is pinned in the expected rows and recorded in the plan's known-quirks list with its warehouse count. Never author an expectation designed to fire.
135
+
136
+ ## Input modeling (fixture-design rules)
137
+
138
+ **I1 — Profiling-derived partitions.** Fixture edges and tolerated non-ties cite profiled reality with counts; the plan's known-quirks section carries each tolerated oddity with its reason and count.
139
+
140
+ **I2 — Shared fixture cast.** One small human-named cast per transform, every row a named edge, documented as a story table (row → attributes → purpose) in the plan. Where one transform's output is another's input, derive the faked rows from the first's expected output so the two tests tell one story.
141
+
142
+ **I3 — Zero-case partitions.** For every outer join and aggregation relation: one entity with zero matches. Its expected row pins the absence representation (Q2) and the join direction (C3) — the all-clean cast is the single most common cause of vacuous tests. When the schema distinguishes states the profiled data never exhibits (a literal zero in a source that only has NULLs and positives), fixture the missing state — nothing else forces it onto an expected cell.
143
+
144
+ **I4 — Multiplicity partitions.** Every aggregation gets a >1-member group and an exactly-1 group (the 0 case is I3); every join gets a parent with ≥2 children. Expected values then differ from any single row's, so copy-through bugs can't pass.
145
+
146
+ **I5 — Dirty-input pinning.** Per screenable defect the source can carry (orphan FK, out-of-domain value, duplicate natural key, hierarchy violation, ordering violation): one fixture row exhibiting it, an expected row pinning the transform's response (drop / pass-through / default), and — where the defect is forbidden — the matching `empty` expectation. Which duplicate survives a dedupe is invisible until a conflicting-duplicate fixture pins it.
147
+
148
+ **I6 — Mutation probes.** Run at plan-validation time, not on every run: corrupt one expected cell → `cell-mismatches` must name that exact column; perturb one input cell → exactly the declared output cells move. Both guard against vacuous tests: an `empty` expectation that only selects output rows passes against an empty output.
149
+
150
+ ## Plan-level artifacts
151
+
152
+ **P1 — Coverage matrix.** Output columns (with the table's grain) × check classes; cells name the covering expectation or expected-row cell, or state `gap: <reason>`; shared-attribute columns scanned across transforms for agreement obligations (C1).
153
+
154
+ **P2 — Hand-derived expected rows.** From the fixture story and business meaning, arithmetic recorded in the plan; never captured from output; every fixture row's fate appears in some expected cell.
155
+
156
+ **P3 — Live-bug handling.** A check failing against a deployed transform is a real finding: never soften the test to green; quantify the damage at fixture and warehouse scale. Then fix now, or record the red in the plan with the minimal fix body, per the session's terms. A stored test has no red-by-design state, so a deferred fix must be visible in the plan or the test reads as broken.
@@ -1,32 +0,0 @@
1
- import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-B8RtMb4B.mjs";
3
- import { t as parseId } from "./parse-id-7ja3HUdB.mjs";
4
- import { t as DataAction } from "./data-action-DZxVB_hD.mjs";
5
- import { n as dataActionView } from "./data-action-R9qxJDPA.mjs";
6
- //#region src/commands/data-action/archive.ts
7
- var archive_default = defineMetabaseCommand({
8
- meta: {
9
- name: "archive",
10
- description: "Archive (soft-delete) a data action by id"
11
- },
12
- requires: ["dataAction.archive"],
13
- args: {
14
- ...outputFlags,
15
- ...profileFlag,
16
- ...connectionFlags,
17
- id: {
18
- type: "positional",
19
- description: "Data action id",
20
- required: true
21
- }
22
- },
23
- outputSchema: DataAction,
24
- examples: ["mb data-action archive 1"],
25
- async run({ args, ctx, getClient }) {
26
- const id = parseId(args.id);
27
- const updated = await (await getClient()).dataAction.archive(id);
28
- renderSummary(updated, dataActionView, `Archived data action ${updated.id} "${updated.name}".`, ctx);
29
- }
30
- });
31
- //#endregion
32
- export { archive_default as default };
@@ -1,25 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/card/index.ts
3
- var card_default = defineCommandGroup({
4
- name: "card",
5
- description: "Manage Metabase cards (questions, models, metrics)",
6
- skills: [{
7
- skill: "mbql",
8
- purpose: "author the dataset_query"
9
- }, {
10
- skill: "visualization",
11
- purpose: "choose display and visualization_settings"
12
- }],
13
- subCommands: {
14
- list: () => import("./list-Bop1NTbU.mjs").then((mod) => mod.default),
15
- get: () => import("./get-CkXc0Xld.mjs").then((mod) => mod.default),
16
- query: () => import("./query-BC-C6efK.mjs").then((mod) => mod.default),
17
- alerts: () => import("./alerts-Fakzg9iP.mjs").then((mod) => mod.default),
18
- create: () => import("./create-C8hsOv_D.mjs").then((mod) => mod.default),
19
- update: () => import("./update-hvO4VpfZ.mjs").then((mod) => mod.default),
20
- verify: () => import("./verify-CPVfwKSu.mjs").then((mod) => mod.default),
21
- archive: () => import("./archive-CSdktxvW.mjs").then((mod) => mod.default)
22
- }
23
- });
24
- //#endregion
25
- export { card_default as default };
@@ -1,21 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/collection/index.ts
3
- var collection_default = defineCommandGroup({
4
- name: "collection",
5
- description: "Manage Metabase collections",
6
- skills: [{
7
- skill: "core",
8
- purpose: "collection ref forms and the transforms namespace"
9
- }],
10
- subCommands: {
11
- list: () => import("./list-hN_Tu2T6.mjs").then((mod) => mod.default),
12
- get: () => import("./get-D7h7uH4k.mjs").then((mod) => mod.default),
13
- items: () => import("./items-BxWnNEh7.mjs").then((mod) => mod.default),
14
- tree: () => import("./tree-p2j6IVy-.mjs").then((mod) => mod.default),
15
- create: () => import("./create-SqmOf6WQ.mjs").then((mod) => mod.default),
16
- update: () => import("./update-DiJK0uRG.mjs").then((mod) => mod.default),
17
- archive: () => import("./archive-CGmvQht4.mjs").then((mod) => mod.default)
18
- }
19
- });
20
- //#endregion
21
- export { collection_default as default };
@@ -1,48 +0,0 @@
1
- import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-B8RtMb4B.mjs";
3
- import { t as readBody } from "./body-CB2eDFFb.mjs";
4
- import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
5
- import { r as DataActionCreateInput, t as DataAction } from "./data-action-DZxVB_hD.mjs";
6
- import { n as DATA_ACTION_DATASET_QUERY_LABELS, o as preflightMbql5Query, s as skipValidateFlag } from "./validate-query-BzbZmenf.mjs";
7
- import { n as dataActionView } from "./data-action-R9qxJDPA.mjs";
8
- //#region src/commands/data-action/create.ts
9
- var create_default = defineMetabaseCommand({
10
- meta: {
11
- name: "create",
12
- description: "Create a data action from JSON"
13
- },
14
- details: "A data action is a parameterized native query that writes to a database, filed in a collection. The JSON body needs `name`, `type: \"query\"`, `database_id`, a native `dataset_query` whose `{{tag}}` placeholders are its inputs, and `parameters` targeting those tags; `collection_id` picks the collection (omit for the root). Data actions must be enabled on the database. An MBQL 5 `dataset_query` is checked against a bundled JSON Schema before sending; pass --skip-validate to bypass.",
15
- skills: [{
16
- skill: "data-action",
17
- purpose: "author a data action and its parameters"
18
- }, {
19
- skill: "native-sql",
20
- purpose: "the native query and its template tags"
21
- }],
22
- requires: ["dataAction.create"],
23
- args: {
24
- ...outputFlags,
25
- ...profileFlag,
26
- ...connectionFlags,
27
- ...bodyInputFlags,
28
- ...skipValidateFlag
29
- },
30
- inputSchema: DataActionCreateInput,
31
- outputSchema: DataAction,
32
- examples: [
33
- "cat data-action.json | mb data-action create",
34
- "mb data-action create --file data-action.json",
35
- "mb data-action create --file data-action.json --skip-validate"
36
- ],
37
- async run({ args, ctx, getClient }) {
38
- const body = await readBody({
39
- flag: args.body,
40
- file: args.file
41
- }, DataActionCreateInput);
42
- preflightMbql5Query(body.dataset_query, DATA_ACTION_DATASET_QUERY_LABELS, { skip: args["skip-validate"] === true });
43
- const created = await (await getClient()).dataAction.create(body);
44
- renderSummary(created, dataActionView, `Created data action ${created.id} "${created.name}".`, ctx);
45
- }
46
- });
47
- //#endregion
48
- export { create_default as default };
@@ -1,35 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/dashboard/index.ts
3
- var dashboard_default = defineCommandGroup({
4
- name: "dashboard",
5
- description: "Manage Metabase dashboards",
6
- skills: [
7
- {
8
- skill: "dashboard",
9
- purpose: "wiring filters, linked filters, cross-filtering, click behavior, tabs"
10
- },
11
- {
12
- skill: "visualization",
13
- purpose: "dashcard display and visualization_settings"
14
- },
15
- {
16
- skill: "core",
17
- purpose: "the 24-column dashcard grid layout"
18
- }
19
- ],
20
- subCommands: {
21
- list: () => import("./list-ZHLsjxXg.mjs").then((mod) => mod.default),
22
- get: () => import("./get-C9sq2boy.mjs").then((mod) => mod.default),
23
- cards: () => import("./cards-BIUYdSIR.mjs").then((mod) => mod.default),
24
- "parameter-values": () => import("./parameter-values-CxTkEjCs.mjs").then((mod) => mod.default),
25
- subscriptions: () => import("./subscriptions-n5zJ9rYZ.mjs").then((mod) => mod.default),
26
- create: () => import("./create-C3TmU1Bi.mjs").then((mod) => mod.default),
27
- update: () => import("./update-D4TGE6FS.mjs").then((mod) => mod.default),
28
- "update-dashcard": () => import("./update-dashcard-DuTjOh14.mjs").then((mod) => mod.default),
29
- copy: () => import("./copy-BMEaYmTb.mjs").then((mod) => mod.default),
30
- verify: () => import("./verify-k-JB-k3D.mjs").then((mod) => mod.default),
31
- archive: () => import("./archive-DCCkQTjQ.mjs").then((mod) => mod.default)
32
- }
33
- });
34
- //#endregion
35
- export { dashboard_default as default };
@@ -1,24 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/data-action/index.ts
3
- var data_action_default = defineCommandGroup({
4
- name: "data-action",
5
- description: "Manage Metabase data actions",
6
- skills: [{
7
- skill: "data-action",
8
- purpose: "author and run data actions"
9
- }, {
10
- skill: "native-sql",
11
- purpose: "the data action's native query and its template tags"
12
- }],
13
- subCommands: {
14
- list: () => import("./list-DgsM9YQX.mjs").then((mod) => mod.default),
15
- get: () => import("./get-DGmE5fmp.mjs").then((mod) => mod.default),
16
- create: () => import("./create-BJG630xB.mjs").then((mod) => mod.default),
17
- update: () => import("./update-CuQy2g51.mjs").then((mod) => mod.default),
18
- archive: () => import("./archive-55sDfnHf.mjs").then((mod) => mod.default),
19
- delete: () => import("./delete-09O7BTNw.mjs").then((mod) => mod.default),
20
- execute: () => import("./execute-BhHbkBqf.mjs").then((mod) => mod.default)
21
- }
22
- });
23
- //#endregion
24
- export { data_action_default as default };
@@ -1,85 +0,0 @@
1
- import { t as DatasetQuery } from "./query-BKtMP5eH.mjs";
2
- import { z } from "zod";
3
- //#region ../client/src/domain/data-action.ts
4
- const DataActionParameter = z.object({
5
- id: z.string(),
6
- type: z.string(),
7
- name: z.string().optional(),
8
- slug: z.string().optional(),
9
- target: z.unknown().optional(),
10
- required: z.boolean().optional()
11
- }).loose();
12
- const DataActionBase = z.object({
13
- id: z.number().int(),
14
- name: z.string(),
15
- description: z.string().nullable(),
16
- type: z.string(),
17
- model_id: z.number().int().nullable(),
18
- database_id: z.number().int().nullable().optional(),
19
- dataset_query: z.unknown().optional(),
20
- parameters: z.array(DataActionParameter).nullable(),
21
- visualization_settings: z.unknown(),
22
- archived: z.boolean(),
23
- public_uuid: z.string().nullable(),
24
- entity_id: z.string().nullable(),
25
- creator_id: z.number().int(),
26
- created_at: z.string(),
27
- updated_at: z.string()
28
- }).loose();
29
- const DataAction = DataActionBase.extend({ collection_id: z.number().int().nullable() });
30
- function withoutCollection(wire) {
31
- return {
32
- ...wire,
33
- collection_id: null
34
- };
35
- }
36
- /** The shape every data action endpoint answers on a server with `features`, read as `DataAction`. */
37
- function dataActionSchema(features) {
38
- return features.dataActionCollections ? DataAction : DataActionBase.transform(withoutCollection);
39
- }
40
- const DataActionCompact = DataAction.pick({
41
- id: true,
42
- name: true,
43
- type: true,
44
- collection_id: true,
45
- database_id: true,
46
- archived: true
47
- }).strip();
48
- const DataActionParameterInput = z.object({
49
- id: z.string().min(1),
50
- type: z.string().min(1),
51
- name: z.string().optional(),
52
- slug: z.string().optional(),
53
- target: z.unknown(),
54
- required: z.boolean().optional()
55
- }).loose();
56
- const DataActionCreateInput = z.object({
57
- name: z.string().min(1),
58
- type: z.literal("query"),
59
- database_id: z.number().int().positive(),
60
- dataset_query: DatasetQuery,
61
- parameters: z.array(DataActionParameterInput).optional(),
62
- collection_id: z.number().int().positive().nullable().optional(),
63
- description: z.string().nullable().optional(),
64
- visualization_settings: z.unknown().optional()
65
- }).strict();
66
- const DataActionUpdateInput = z.object({
67
- name: z.string().min(1).optional(),
68
- database_id: z.number().int().positive().optional(),
69
- dataset_query: DatasetQuery.optional(),
70
- parameters: z.array(DataActionParameterInput).optional(),
71
- collection_id: z.number().int().positive().nullable().optional(),
72
- description: z.string().nullable().optional(),
73
- visualization_settings: z.unknown().optional(),
74
- archived: z.boolean().optional()
75
- }).strict();
76
- const DataActionParameterValue = z.union([
77
- z.string(),
78
- z.number(),
79
- z.boolean(),
80
- z.null()
81
- ]);
82
- const DataActionExecuteInput = z.object({ parameters: z.record(z.string(), DataActionParameterValue) }).strict();
83
- const DataActionExecuteResult = z.object({ "rows-affected": z.number().int() }).loose();
84
- //#endregion
85
- export { DataActionExecuteResult as a, DataActionExecuteInput as i, DataActionCompact as n, DataActionUpdateInput as o, DataActionCreateInput as r, dataActionSchema as s, DataAction as t };
@@ -1,40 +0,0 @@
1
- import { a as DataActionExecuteResult, n as DataActionCompact } from "./data-action-DZxVB_hD.mjs";
2
- //#region src/output/views/data-action.ts
3
- const dataActionView = {
4
- compactPick: DataActionCompact,
5
- tableColumns: [
6
- {
7
- key: "id",
8
- label: "ID"
9
- },
10
- {
11
- key: "name",
12
- label: "Name"
13
- },
14
- {
15
- key: "type",
16
- label: "Type"
17
- },
18
- {
19
- key: "collection_id",
20
- label: "Collection"
21
- },
22
- {
23
- key: "database_id",
24
- label: "Database"
25
- },
26
- {
27
- key: "archived",
28
- label: "Archived"
29
- }
30
- ]
31
- };
32
- const dataActionExecuteResultView = {
33
- compactPick: DataActionExecuteResult,
34
- tableColumns: [{
35
- key: "rows-affected",
36
- label: "Rows affected"
37
- }]
38
- };
39
- //#endregion
40
- export { dataActionView as n, dataActionExecuteResultView as t };
@@ -1,44 +0,0 @@
1
- import { H as connectionFlags, J as profileFlag, q as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-B8RtMb4B.mjs";
3
- import { t as parseId } from "./parse-id-7ja3HUdB.mjs";
4
- import { n as confirmAndDelete, t as DeleteResult } from "./delete-runtime-BbmRg_in.mjs";
5
- //#region src/commands/data-action/delete.ts
6
- var delete_default = defineMetabaseCommand({
7
- meta: {
8
- name: "delete",
9
- description: "Delete a data action by id"
10
- },
11
- requires: ["dataAction.delete"],
12
- args: {
13
- ...outputFlags,
14
- ...profileFlag,
15
- ...connectionFlags,
16
- yes: {
17
- type: "boolean",
18
- description: "Skip confirmation",
19
- default: false
20
- },
21
- id: {
22
- type: "positional",
23
- description: "Data action id",
24
- required: true
25
- }
26
- },
27
- outputSchema: DeleteResult,
28
- examples: ["mb data-action delete 1 --yes", "mb data-action delete 1"],
29
- async run({ args, ctx, getClient }) {
30
- const id = parseId(args.id);
31
- const client = await getClient();
32
- await confirmAndDelete({
33
- id,
34
- yes: args.yes,
35
- promptMessage: `Delete data action ${id}?`,
36
- successMessage: `Deleted data action ${id}.`,
37
- abortMessage: `Aborted; data action ${id} was not deleted.`,
38
- deleteResource: () => client.dataAction.delete(id),
39
- ctx
40
- });
41
- }
42
- });
43
- //#endregion
44
- export { delete_default as default };
@@ -1,15 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/dependency/index.ts
3
- var dependency_default = defineCommandGroup({
4
- name: "dependency",
5
- description: "Trace what Metabase content depends on and what depends on it",
6
- subCommands: {
7
- graph: () => import("./graph-B6OliqnW.mjs").then((m) => m.default),
8
- dependents: () => import("./dependents-Dv6tLdSs.mjs").then((m) => m.default),
9
- broken: () => import("./broken-BNBD4Eo3.mjs").then((m) => m.default),
10
- unreferenced: () => import("./unreferenced-Dxy-aYI7.mjs").then((m) => m.default),
11
- breaking: () => import("./breaking-Dg3-8yDF.mjs").then((m) => m.default)
12
- }
13
- });
14
- //#endregion
15
- export { dependency_default as default };
@@ -1,20 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/document/index.ts
3
- var document_default = defineCommandGroup({
4
- name: "document",
5
- description: "Manage Metabase documents",
6
- skills: [{
7
- skill: "document",
8
- purpose: "author the ProseMirror document body"
9
- }],
10
- subCommands: {
11
- list: () => import("./list-DW4-u7eO.mjs").then((mod) => mod.default),
12
- get: () => import("./get-DXBXhPrU.mjs").then((mod) => mod.default),
13
- create: () => import("./create-zpJIRn9j.mjs").then((mod) => mod.default),
14
- update: () => import("./update-DK77vtFF.mjs").then((mod) => mod.default),
15
- copy: () => import("./copy-CbDfVZRC.mjs").then((mod) => mod.default),
16
- archive: () => import("./archive-CpCSY4RT.mjs").then((mod) => mod.default)
17
- }
18
- });
19
- //#endregion
20
- export { document_default as default };
@@ -1,45 +0,0 @@
1
- import { H as connectionFlags, J as profileFlag, p as renderSummary, q as outputFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-B8RtMb4B.mjs";
3
- import { t as parseId } from "./parse-id-7ja3HUdB.mjs";
4
- import { t as readBody } from "./body-CB2eDFFb.mjs";
5
- import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
6
- import { a as DataActionExecuteResult, i as DataActionExecuteInput } from "./data-action-DZxVB_hD.mjs";
7
- import { t as dataActionExecuteResultView } from "./data-action-R9qxJDPA.mjs";
8
- //#region src/commands/data-action/execute.ts
9
- var execute_default = defineMetabaseCommand({
10
- meta: {
11
- name: "execute",
12
- description: "Run a data action by id"
13
- },
14
- details: "The JSON body is `{\"parameters\": {...}}`, keyed by the data action's parameter ids. The data action writes to its database, so a run cannot be undone by the CLI.",
15
- skills: [{
16
- skill: "data-action",
17
- purpose: "the parameter values a data action takes"
18
- }],
19
- requires: ["dataAction.execute"],
20
- args: {
21
- ...outputFlags,
22
- ...profileFlag,
23
- ...connectionFlags,
24
- ...bodyInputFlags,
25
- id: {
26
- type: "positional",
27
- description: "Data action id",
28
- required: true
29
- }
30
- },
31
- inputSchema: DataActionExecuteInput,
32
- outputSchema: DataActionExecuteResult,
33
- examples: ["mb data-action execute 1 --body '{\"parameters\":{\"id\":1,\"note\":\"rush\"}}'", "mb data-action execute 1 --file values.json"],
34
- async run({ args, ctx, getClient }) {
35
- const id = parseId(args.id);
36
- const body = await readBody({
37
- flag: args.body,
38
- file: args.file
39
- }, DataActionExecuteInput);
40
- const result = await (await getClient()).dataAction.execute(id, body);
41
- renderSummary(result, dataActionExecuteResultView, `Ran data action ${id}; ${result["rows-affected"]} rows affected.`, ctx);
42
- }
43
- });
44
- //#endregion
45
- export { execute_default as default };
@@ -1,21 +0,0 @@
1
- import { t as defineCommandGroup } from "./group-bpD_KcjA.mjs";
2
- //#region src/commands/field/index.ts
3
- var field_default = defineCommandGroup({
4
- name: "field",
5
- description: "Manage Metabase fields",
6
- skills: [{
7
- skill: "metadata",
8
- purpose: "semantic types, FK targets, visibility, dropdown behavior"
9
- }],
10
- subCommands: {
11
- get: () => import("./get-NOMvMvYJ.mjs").then((m) => m.default),
12
- values: () => import("./values-CXN4xTTh.mjs").then((m) => m.default),
13
- summary: () => import("./summary-DvIf2EiO.mjs").then((m) => m.default),
14
- update: () => import("./update-CHkVN69L.mjs").then((m) => m.default),
15
- search: () => import("./search-Cc9vHNae.mjs").then((m) => m.default),
16
- remapping: () => import("./remapping-CgA6UJGU.mjs").then((m) => m.default),
17
- "set-sensitivity": () => import("./set-sensitivity-DVrINHde.mjs").then((m) => m.default)
18
- }
19
- });
20
- //#endregion
21
- export { field_default as default };