@metabase/cli 0.5.5 → 0.5.7-alpha.bryan-rci-6-coverage.6f886fd
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.
- package/dist/{add-collection-lgBkahhW.mjs → add-collection-C7c6Y3T3.mjs} +3 -3
- package/dist/{alert-32mfYFy1.mjs → alert-J0qLs6rc.mjs} +7 -7
- package/dist/{alerts-DWVmtHEJ.mjs → alerts-mjDIdof3.mjs} +6 -6
- package/dist/api-key-Bw2jDvT4.mjs +13 -0
- package/dist/{append-CdzKyHhn.mjs → append-yaTEz2AE.mjs} +4 -4
- package/dist/{archive-BmutUzPS.mjs → archive-B93SkIvs.mjs} +4 -4
- package/dist/{archive-DOXrtANg.mjs → archive-BmU6DnFz.mjs} +4 -4
- package/dist/{archive-24zg3Ckb.mjs → archive-CbtQNK96.mjs} +3 -3
- package/dist/{archive-NhewLr23.mjs → archive-Cg67G-qa.mjs} +3 -3
- package/dist/{archive-BTxrM_x2.mjs → archive-CgcNck0G.mjs} +3 -3
- package/dist/{archive-BZxa5zJk.mjs → archive-DYdHrm6V.mjs} +3 -3
- package/dist/{archive-CHQOH-nm.mjs → archive-Dg9eMYU6.mjs} +3 -3
- package/dist/{archive-DEOq8OqU.mjs → archive-DrCoSvio.mjs} +3 -3
- package/dist/{archive-DbaGJh7E.mjs → archive-DzXi2Frh.mjs} +3 -3
- package/dist/{archive-B4G4EE9n.mjs → archive-P-y61Wi_.mjs} +3 -3
- package/dist/{archive-Uws1E_p8.mjs → archive-VZ0dgYTd.mjs} +5 -5
- package/dist/{archive-B3_fjvid.mjs → archive-rhxBPOrL.mjs} +3 -3
- package/dist/{auth-bVvBp9Tl.mjs → auth-CxN5tDg1.mjs} +5 -5
- package/dist/{branches-CkOAJk1H.mjs → branches-1ZK62u6h.mjs} +3 -3
- package/dist/{breaking-CMpEeieT.mjs → breaking-Bv4wZN9X.mjs} +5 -5
- package/dist/{broken-DFFLXiYc.mjs → broken-BU7MrnHI.mjs} +6 -6
- package/dist/{bulk-discard-values-D4eFBtKc.mjs → bulk-discard-values-6TLs4p2e.mjs} +5 -5
- package/dist/{bulk-edit-CLJeGY2E.mjs → bulk-edit-CYnFA1xm.mjs} +3 -3
- package/dist/{bulk-rescan-values-DsaGKIo_.mjs → bulk-rescan-values-T__5XlPh.mjs} +4 -4
- package/dist/{bulk-sync-schema-CN797vy9.mjs → bulk-sync-schema-V1Tpqvxg.mjs} +4 -4
- package/dist/{cancel-CRpzqIUu.mjs → cancel-RTd-Bg5f.mjs} +3 -3
- package/dist/{cancel-task-CpZcj7HB.mjs → cancel-task-B6GpgrME.mjs} +2 -2
- package/dist/card-BlSUKf2e.mjs +25 -0
- package/dist/{cards-DJMTrFQg.mjs → cards-hYVyzntk.mjs} +4 -4
- package/dist/ci-CPRKvyWe.mjs +9 -0
- package/dist/cli.mjs +43 -39
- package/dist/{client-D2ycdMRO.mjs → client-C_5K9lZA.mjs} +16 -11
- package/dist/collection-CeaSalia.mjs +21 -0
- package/dist/{collection-namespace-C0JcSEwN.mjs → collection-namespace-D0_-6eWp.mjs} +1 -1
- package/dist/{content-translation-7qPz-dIU.mjs → content-translation-Bux3aWnt.mjs} +3 -3
- package/dist/{copy-BeFjqXXc.mjs → copy-B8HnAc11.mjs} +4 -4
- package/dist/{copy-D9-xBYYq.mjs → copy-BAP_y6s1.mjs} +4 -4
- package/dist/{copy-flags-DZ5Cy-Gk.mjs → copy-flags-VQzi7vqf.mjs} +1 -1
- package/dist/{create-cpxnjNMC.mjs → create-B0l5arU2.mjs} +2 -2
- package/dist/{create-Cc07ouKB.mjs → create-BOn7IisH.mjs} +2 -2
- package/dist/{create-DJ0Xrpod.mjs → create-BUPy6vmU.mjs} +2 -2
- package/dist/{create-BfgTvPvI.mjs → create-BWrIVbLC.mjs} +2 -2
- package/dist/{create-ypwRxrcj.mjs → create-BcbdVQr_.mjs} +2 -2
- package/dist/{create-DBSpDnaA.mjs → create-Bckej8a2.mjs} +3 -3
- package/dist/{create-CLQVeQ0w.mjs → create-BfD4GgYA.mjs} +2 -2
- package/dist/{create-Dr-q5oWx2.mjs → create-BmEECHlW2.mjs} +4 -4
- package/dist/{create-Dj5y7xbA.mjs → create-CH2ebn9r.mjs} +4 -4
- package/dist/{create-DIZGUCFE.mjs → create-CUcwiQgH.mjs} +2 -2
- package/dist/{create-Ba8nYAWL.mjs → create-C_5-HH9u.mjs} +3 -3
- package/dist/{create-D4FT8Xj8.mjs → create-CzVYAVbb.mjs} +3 -3
- package/dist/{create-BlYxQv6U.mjs → create-D70fh_7H.mjs} +2 -2
- package/dist/{create-CplN1ey8.mjs → create-DF7jPhn1.mjs} +2 -2
- package/dist/{create-n5cH8Tq-.mjs → create-DNkqcne5.mjs} +2 -2
- package/dist/{create--eZb0G2P.mjs → create-Dd_NNxYT.mjs} +2 -2
- package/dist/{create-DBCOYtqn.mjs → create-DqtqJZa8.mjs} +2 -2
- package/dist/create-Ds6gZXFm.mjs +48 -0
- package/dist/{create-Dt6gdbAH.mjs → create-Z3UZdGTY.mjs} +3 -3
- package/dist/{create-branch-CKQkpU-_.mjs → create-branch-CQyWpIxd.mjs} +2 -2
- package/dist/{create-DHTl3wVv.mjs → create-qCZ9z3II.mjs} +2 -2
- package/dist/{csv-CxWsxJIB.mjs → csv-CFL145Ta.mjs} +4 -4
- package/dist/{current-task-DB7UTh6J.mjs → current-task-l8KZ0nv8.mjs} +2 -2
- package/dist/dashboard-CIOXUaBJ.mjs +35 -0
- package/dist/{data-action-DLj9cgpu.mjs → data-action-Co_Yf1uC.mjs} +23 -5
- package/dist/{data-action-CuvI17XF.mjs → data-action-DAw6WRTH.mjs} +43 -10
- package/dist/data-action-_7UX21i9.mjs +24 -0
- package/dist/{data-app--T695WPM.mjs → data-app-CxQNqhV2.mjs} +10 -10
- package/dist/{data-app-project-DjDDWgUF.mjs → data-app-project-B_zd-YrJ.mjs} +2 -2
- package/dist/{db-CpK3QluZ.mjs → db-DlDWN6UP.mjs} +8 -8
- package/dist/{delete-TcDfZNz2.mjs → delete-3KVEIg6-.mjs} +4 -4
- package/dist/{delete-Bw8CMa_A.mjs → delete-BlLyxBY_.mjs} +4 -4
- package/dist/{delete-AwOJ1x-D.mjs → delete-BmPR3qB0.mjs} +4 -4
- package/dist/{delete-9YIc_L2E.mjs → delete-CcY_tcx4.mjs} +4 -4
- package/dist/{delete-CUzOTiI8.mjs → delete-CfkSkxHN.mjs} +4 -4
- package/dist/{delete-CE19WUPi.mjs → delete-D3D0CTo-.mjs} +3 -3
- package/dist/{delete-DbAOgu73.mjs → delete-Dj0ImrZL.mjs} +4 -4
- package/dist/{delete-trx8NIoh.mjs → delete-DweFD4-0.mjs} +4 -4
- package/dist/{delete-B9GABYEJ.mjs → delete-Eje0xxEa.mjs} +4 -4
- package/dist/{delete-D784J3ur.mjs → delete-YFXRPnnb.mjs} +4 -4
- package/dist/{delete-runtime-DOOy3gzH.mjs → delete-runtime-C05-0fcn.mjs} +1 -1
- package/dist/{delete-table-a8acciQe.mjs → delete-table-BqpeGdMY.mjs} +4 -4
- package/dist/{dependencies-BcPdAMYB.mjs → dependencies-DhA1jbDT.mjs} +5 -5
- package/dist/{dependency-DcM96XJ-.mjs → dependency-BPCRTBKd.mjs} +1 -1
- package/dist/dependency-BPwCXzX4.mjs +15 -0
- package/dist/{dependents-CRZaiOzg.mjs → dependents-4KgDZ4tl.mjs} +6 -6
- package/dist/{dirty-1taTj3G6.mjs → dirty-DWwwmOmi.mjs} +3 -3
- package/dist/{discard-values-DmiWAx4J.mjs → discard-values-6nmAd4kW.mjs} +5 -5
- package/dist/document-CC60L29U.mjs +20 -0
- package/dist/{download-CEvVDGeC.mjs → download-ZCfcKa2L.mjs} +2 -2
- package/dist/{eid-pO_lMTI9.mjs → eid-CjLvyBgT.mjs} +2 -2
- package/dist/{entry-flags-CswcY8bG.mjs → entry-flags-2u45mDJ4.mjs} +1 -1
- package/dist/{events-cGDPEL5_.mjs → events-B_UxJw3Z.mjs} +4 -4
- package/dist/{execute-DHGbJpPr.mjs → execute-Dg94sYQd.mjs} +11 -7
- package/dist/{export-B0NUSP6q.mjs → export-BdLB30iy.mjs} +3 -3
- package/dist/{export-flags-iXfEILf7.mjs → export-flags-DvdxpRMt.mjs} +1 -1
- package/dist/{export-preflight-Bbl1bHpI.mjs → export-preflight-ChaWosZf.mjs} +2 -2
- package/dist/field-ClWwbYtG.mjs +21 -0
- package/dist/{fields-M66PaKdV.mjs → fields-B1cPeIGv.mjs} +4 -4
- package/dist/{filter-flags-ezqqsOQL.mjs → filter-flags-BEz2s28-.mjs} +1 -1
- package/dist/{fks-BvOGzID5.mjs → fks-DgvW6D_7.mjs} +5 -5
- package/dist/{get-Bt2Q516N.mjs → get-B69NUYR0.mjs} +4 -4
- package/dist/{get-ZSLfDowg.mjs → get-B94nj2uY.mjs} +2 -2
- package/dist/{get-Cfg52y7X.mjs → get-BK7nxbPU.mjs} +2 -2
- package/dist/{get-zGreQNnG.mjs → get-BM9AFJAi.mjs} +2 -2
- package/dist/{get-jzChrvn2.mjs → get-BYNEZFNj.mjs} +5 -5
- package/dist/{get-DGlZtzfB.mjs → get-BxrS4Vi8.mjs} +4 -4
- package/dist/{get-CEreA2oN.mjs → get-C_bCGVsR.mjs} +3 -3
- package/dist/{get-SOCVdBIU.mjs → get-Ck2LNXxw.mjs} +3 -3
- package/dist/{get-BL_9fN-q.mjs → get-CmWe9xq9.mjs} +5 -5
- package/dist/{get-DKZLwN3K.mjs → get-D4oXmJTn.mjs} +5 -5
- package/dist/{get-CCLnfOOE.mjs → get-DC1lAsH_.mjs} +3 -3
- package/dist/{get-D-ElxFlQ.mjs → get-DIR9LODa.mjs} +4 -4
- package/dist/{get-0T9zeyCh.mjs → get-DStLX5Ah.mjs} +3 -3
- package/dist/{get-wPkejadn.mjs → get-DckpwiZG.mjs} +4 -4
- package/dist/{get-HtzPLpy2.mjs → get-DkSvigdw.mjs} +3 -3
- package/dist/{get-CJFg7YM5.mjs → get-Dsm_2AXn.mjs} +3 -3
- package/dist/{get-uB7jROcz.mjs → get-DuVVF8xb.mjs} +3 -3
- package/dist/{get-D-8G7EoL.mjs → get-Ljt0QVR0.mjs} +3 -3
- package/dist/{get-B3Ceh_7N.mjs → get-UNjwy8OI.mjs} +3 -3
- package/dist/{get-D7y_z5K7.mjs → get-VrzY4qxg.mjs} +2 -2
- package/dist/{get-BzIQK_mt.mjs → get-jphhROdg.mjs} +3 -3
- package/dist/{get-C3j93ivl.mjs → get-n9udbUQS.mjs} +3 -3
- package/dist/{get-run-BZP_z57v.mjs → get-run-D5vfGnIN.mjs} +4 -4
- package/dist/git-sync-Bc9pf1LL.mjs +29 -0
- package/dist/glossary-CAzA-OIR.mjs +14 -0
- package/dist/{graph-CdKi07zZ.mjs → graph-CvIhSOEe.mjs} +4 -4
- package/dist/{group--6adAsqG.mjs → group-KiKh0UFs.mjs} +1 -1
- package/dist/{has-remote-changes-d_JyzdPX.mjs → has-remote-changes-57yJkr3b.mjs} +2 -2
- package/dist/{import-1bK-qrjV.mjs → import-HHsz_zDq.mjs} +3 -3
- package/dist/{is-dirty-BXwvuTeD.mjs → is-dirty-CxX_4rBC.mjs} +2 -2
- package/dist/{items-Dzh_xylQ.mjs → items-B2NR1_u3.mjs} +3 -3
- package/dist/{library-BA1QssFE.mjs → library-DXvOVBTe.mjs} +5 -5
- package/dist/{list-DuaFmOCz.mjs → list-B44qweQa.mjs} +3 -3
- package/dist/{list-Dn5_L-85.mjs → list-BK4VwtKe.mjs} +3 -3
- package/dist/{list-BWNw-ppI.mjs → list-BTpj7dv4.mjs} +5 -5
- package/dist/{list-B5D3leO9.mjs → list-BU72dCx0.mjs} +3 -3
- package/dist/{list-DHX7-8Ae.mjs → list-BsQHh8w4.mjs} +3 -3
- package/dist/{list-0TtkxraU.mjs → list-Bwi5npRx.mjs} +3 -3
- package/dist/{list-_jHBfq0E.mjs → list-C6A-Eqgv.mjs} +5 -5
- package/dist/{list-DR9dswtK.mjs → list-CNoCRL4D.mjs} +3 -3
- package/dist/{list-D_SfsO_-.mjs → list-CY54buuD.mjs} +4 -4
- package/dist/{list-DQNbHPNQ.mjs → list-CcZAP1sH.mjs} +5 -5
- package/dist/{list-iFtmAfVv.mjs → list-CtW9rAs4.mjs} +3 -3
- package/dist/{list-CdpEUPL-.mjs → list-DEQvaioL.mjs} +5 -5
- package/dist/{list-CvQlMhrb.mjs → list-DJ0_FcgB.mjs} +6 -6
- package/dist/{list-Dv3s_PIu.mjs → list-DJogq3Ez.mjs} +3 -3
- package/dist/{list-Dz2YVD7m.mjs → list-DMbtH6tY.mjs} +3 -3
- package/dist/{list-7qcWFDXR.mjs → list-DQ5BDB52.mjs} +4 -4
- package/dist/{list-B70w2ibG.mjs → list-DhCSllG2.mjs} +3 -3
- package/dist/{list-TzuL_7GA.mjs → list-DiN5mPrk.mjs} +3 -3
- package/dist/{list-2doqGDIF.mjs → list-Dv8U4e-C.mjs} +3 -3
- package/dist/{list-DSi8mf_F.mjs → list-JS7ASJc-.mjs} +4 -4
- package/dist/{list-DDV5PylU.mjs → list-L4_At_o9.mjs} +3 -3
- package/dist/{list-BjpGurur.mjs → list-l09h4Zp6.mjs} +3 -3
- package/dist/{list-B75rzgSi.mjs → list-rA9U_VyF.mjs} +3 -3
- package/dist/{login-LAFw5Xxu.mjs → login-DVLN1666.mjs} +33 -16
- package/dist/{logout-CjYzDvLH.mjs → logout-BiZxbftK.mjs} +2 -2
- package/dist/{measure-DgtOyIoD.mjs → measure-B7Ud8GU1.mjs} +6 -6
- package/dist/{notification-BEJaEZS2.mjs → notification-Bj45MgWm.mjs} +1 -1
- package/dist/{parameter-values-CRwVLpRD.mjs → parameter-values-BwaIYczs.mjs} +3 -3
- package/dist/{parse-id-EXZan40V.mjs → parse-id-BXkvTl89.mjs} +1 -1
- package/dist/{path-BA_GGcGN.mjs → path-BbR0QB1I.mjs} +4 -4
- package/dist/{poll-vxN__4cz.mjs → poll-D5eA9cN2.mjs} +1 -1
- package/dist/{preflight-4iy2qzsh.mjs → preflight-BJ5Bve-N.mjs} +1 -1
- package/dist/process-cDa9fEBe.mjs +144 -0
- package/dist/{publish--I94MMjp.mjs → publish-d_WnLoJD.mjs} +3 -3
- package/dist/{pulse-CPSpum5U.mjs → pulse-DhddeMMG.mjs} +1 -1
- package/dist/{query-O1b4qIr4.mjs → query-DFb-XQNz.mjs} +3 -3
- package/dist/{query-C8w04b4F.mjs → query-Dkod9Tev.mjs} +4 -4
- package/dist/{remapping-BdX4nj-U.mjs → remapping-clW2Rgcz.mjs} +3 -3
- package/dist/{remove-collection-dltKu8LO.mjs → remove-collection-CjRtrkLW.mjs} +3 -3
- package/dist/{render-DK2j4BwQ.mjs → render-C_Oy6cF5.mjs} +1 -1
- package/dist/{replace-BfO6UFZN.mjs → replace-8hEY7br8.mjs} +4 -4
- package/dist/{requirement-check-1fcffJj6.mjs → requirement-check-B7MNfiXv.mjs} +2 -2
- package/dist/{rescan-values-0-c5Gqtx.mjs → rescan-values-0owEJyWj.mjs} +4 -4
- package/dist/{rescan-values-7bbNa7WZ.mjs → rescan-values-DaEu5sVZ.mjs} +3 -3
- package/dist/{run-BS_wUAsi.mjs → run-BlCJ0MYm.mjs} +4 -4
- package/dist/{run-Cf1nJahe.mjs → run-CXv_3NQt.mjs} +3 -3
- package/dist/{run-5b123gPi.mjs → run-Cr7QHB5S.mjs} +6 -6
- package/dist/run-Dc3u_olU.mjs +819 -0
- package/dist/{runs-BJ4uy05c.mjs → runs-624fiVP3.mjs} +5 -5
- package/dist/{runtime-D5yfliIq.mjs → runtime-DsfR_yrb.mjs} +78 -40
- package/dist/{scaffold-aUy3Ik4q.mjs → scaffold-D4Jo6VQc.mjs} +4 -4
- package/dist/{schema-Ds_j3N1I.mjs → schema-DXsx2_Mk.mjs} +2 -2
- package/dist/{schema-tables-BuFF9Psy.mjs → schema-tables-Bat1bYLS.mjs} +5 -5
- package/dist/{schemas-DaDsur6B.mjs → schemas-B8bgnxOA.mjs} +4 -4
- package/dist/{search-CTZzUd_j.mjs → search-BslDGFtS.mjs} +4 -4
- package/dist/{search-BcJgmPU3.mjs → search-fXh_MkLZ.mjs} +4 -4
- package/dist/{segment-zy4VVraQ.mjs → segment-Bb7JTPmv.mjs} +6 -6
- package/dist/{send-D0ikejQU.mjs → send-YnL6iiOt.mjs} +3 -3
- package/dist/{set-CjAaw2ZL.mjs → set-CydWEHNW.mjs} +2 -2
- package/dist/{set-active-BQjKw1wk.mjs → set-active-C-x_A0AY.mjs} +2 -2
- package/dist/{set-bundle-6Qknum1I.mjs → set-bundle-DaHlkEYA.mjs} +5 -5
- package/dist/{set-data-actions-LcWEP4RO.mjs → set-data-actions-C3NwuCSF.mjs} +3 -3
- package/dist/{set-enabled-C8Yww7Yv.mjs → set-enabled-CjUOudzn.mjs} +2 -2
- package/dist/{set-sensitivity-OVcL2PbY.mjs → set-sensitivity-DAodU0MG.mjs} +3 -3
- package/dist/{setting-BsIBFvRP.mjs → setting-Bil7qFf0.mjs} +4 -4
- package/dist/{setup-BxUd_KYl.mjs → setup-B8GRygkY.mjs} +2 -2
- package/dist/{skill-list-BoJITnw8.mjs → skill-list-4LagdTq5.mjs} +1 -1
- package/dist/{skills-CQRgUHI3.mjs → skills-CW1wIl0c.mjs} +3 -3
- package/dist/{skills-BQBerRAk.mjs → skills-DYfZF1GA.mjs} +4 -39
- package/dist/snippet-D9g83-mO.mjs +19 -0
- package/dist/{stash-BGqpcbSW.mjs → stash-T0WRHnFD.mjs} +3 -3
- package/dist/{status-_wPMW1wq.mjs → status-BRMzSa12.mjs} +3 -3
- package/dist/{status-CcOJIgfB.mjs → status-CW1bsfaP.mjs} +2 -2
- package/dist/{subscription-CqUIrnUJ.mjs → subscription-Edc8UK2V.mjs} +6 -6
- package/dist/{subscriptions-BP83ctRX.mjs → subscriptions-DMiWl84r.mjs} +6 -6
- package/dist/{summary-Byz6Y1v-.mjs → summary-CFnwsMoV.mjs} +3 -3
- package/dist/{sync-schema-DQBHc3bt.mjs → sync-schema-COvbx-g4.mjs} +4 -4
- package/dist/{sync-schema-BJ-AtcCq.mjs → sync-schema-VzwA_5tH.mjs} +4 -4
- package/dist/table-CC-rFakp.mjs +26 -0
- package/dist/{table-BNA9Or05.mjs → table-DFbkLSgK.mjs} +1 -1
- package/dist/{table-selector-flags-BpFFoSaT.mjs → table-selector-flags-BhZo8RHH.mjs} +2 -2
- package/dist/timeline-C2ZUL_9F.mjs +21 -0
- package/dist/{timeline-event-BHfAXJrB.mjs → timeline-event-BqM82_7L.mjs} +6 -6
- package/dist/transform-BtB6iOJ9.mjs +28 -0
- package/dist/{transform-DKPtUV54.mjs → transform-CKeLIqoc.mjs} +1 -1
- package/dist/transform-job-I2Q5f0yN.mjs +22 -0
- package/dist/{transform-tag-DZEvmwxY.mjs → transform-tag-CxXDADhM.mjs} +5 -5
- package/dist/transform-test-B6jvvXeh.mjs +16 -0
- package/dist/{transform-test-C49ZTK7M.mjs → transform-test-C0c4zjcf.mjs} +1 -1
- package/dist/{transform-test-Bexa_K89.mjs → transform-test-DHTxBt4k.mjs} +2 -2
- package/dist/{transforms-D1wwWdCY.mjs → transforms-WyRUDM1j.mjs} +5 -5
- package/dist/{transport-BWixD5Ww.mjs → transport-Byycx3RW.mjs} +3 -4
- package/dist/{tree-IymKTTCK.mjs → tree-CMeV4bI8.mjs} +2 -2
- package/dist/{typed-schema-gaIKntyu.mjs → typed-schema-DsGXH-La.mjs} +3 -3
- package/dist/{unpublish-BnP0O_S2.mjs → unpublish-EaVPnnZ5.mjs} +3 -3
- package/dist/{unreferenced-DDkcn8EQ.mjs → unreferenced-BvE7ke0M.mjs} +5 -5
- package/dist/{update-CKrLtJWZ.mjs → update--uKYjq9_.mjs} +4 -4
- package/dist/{update-C_VV1SP8.mjs → update-B8EnadKJ.mjs} +3 -3
- package/dist/{update-CFkOEnUu.mjs → update-BDghcetp.mjs} +3 -3
- package/dist/{update-DL1Iex_M.mjs → update-BPhLIVs9.mjs} +2 -2
- package/dist/{update-DntKWUl2.mjs → update-BSWoKNrf.mjs} +3 -3
- package/dist/{update-BsEG1dRm.mjs → update-Bb1HPTH2.mjs} +4 -4
- package/dist/{update-Cga4lrX5.mjs → update-BgQ9TU63.mjs} +5 -5
- package/dist/{update-gAPjldWw.mjs → update-BtWR4ri9.mjs} +3 -3
- package/dist/{update-ReSzm23m.mjs → update-CFYVJJqw.mjs} +3 -3
- package/dist/{update-D9eA9UOf.mjs → update-CNzu9eG1.mjs} +5 -5
- package/dist/{update-K8FwdJEV.mjs → update-CT9e8m-I.mjs} +3 -3
- package/dist/{update-BAocDvnS.mjs → update-DZPo69an.mjs} +4 -4
- package/dist/{update-Bfws2FN2.mjs → update-Dcwpy8BO.mjs} +3 -3
- package/dist/{update-CgJwzutJ.mjs → update-DjBJQCNg.mjs} +3 -3
- package/dist/{update-C0p1E-hs.mjs → update-DrY4i6eO.mjs} +4 -4
- package/dist/{update-D9fs-PSK.mjs → update-DwGo58Kc.mjs} +4 -4
- package/dist/{update-BemK_tZ_.mjs → update-DyXj5mTv.mjs} +3 -3
- package/dist/{update-dashcard-Bpv45o1_.mjs → update-dashcard-BhT2FBd4.mjs} +3 -3
- package/dist/{update-BiBazvzY.mjs → update-t2zdccd5.mjs} +5 -5
- package/dist/{update-CsH0lSpQ2.mjs → update-wh2EjN242.mjs} +3 -3
- package/dist/{update-CyfLXFKR.mjs → update-xYxKw2UB.mjs} +3 -3
- package/dist/{upgrade-D3aDQZwd.mjs → upgrade-BqBjnjjU.mjs} +3 -4
- package/dist/upload-C0GfBUvp.mjs +13 -0
- package/dist/{upload-BAD_9okY.mjs → upload-D0zRTkyv.mjs} +1 -1
- package/dist/{upload-B8HbBXb8.mjs → upload-kM0-7Bx2.mjs} +3 -3
- package/dist/{uuid-BIDBDPLI.mjs → uuid-DsuYe9z7.mjs} +2 -2
- package/dist/{values-BDekphEw.mjs → values-kLEvyjSy.mjs} +3 -3
- package/dist/{verify-k0WHgc16.mjs → verify-ChvmI4lq.mjs} +3 -3
- package/dist/{verify-CMTrDvAW.mjs → verify-CvYsiaqY.mjs} +3 -3
- package/dist/{verify-BnZqq9Aw.mjs → verify-D27n5y3t.mjs} +3 -3
- package/dist/{wait-C69z8PSw.mjs → wait-DioDMGLJ.mjs} +4 -4
- package/dist/{wait-flags-C3cu_O0w.mjs → wait-flags-Qqvlb3Rv.mjs} +2 -2
- package/dist/{window-D1w7B0vh.mjs → window-BoW2xWwm.mjs} +1 -1
- package/dist/yaml-QoEP-7KU.mjs +38 -0
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +1 -1
- package/skill-data/data-action/SKILL.md +50 -18
- package/skill-data/data-app/SKILL.md +3 -3
- package/skill-data/data-app/template/README.md +6 -2
- package/skill-data/data-app/template/gitignore +1 -1
- package/skill-data/data-app/template/package.json +1 -0
- package/skill-data/data-app-actions/SKILL.md +11 -5
- package/skill-data/mbql/SKILL.md +2 -2
- package/dist/api-key-DJfhPe4x.mjs +0 -13
- package/dist/card-nOX_QJ9u.mjs +0 -25
- package/dist/collection-Cs84x7WB.mjs +0 -21
- package/dist/create-B57Sj0om.mjs +0 -47
- package/dist/dashboard-DeSaOt2Z.mjs +0 -35
- package/dist/data-action-Dpt7pfzd.mjs +0 -24
- package/dist/dependency-_SgcW_fL.mjs +0 -15
- package/dist/document-DB6YGtqX.mjs +0 -20
- package/dist/field-AkNMIQnx.mjs +0 -21
- package/dist/git-sync-DaHnqpYi.mjs +0 -29
- package/dist/glossary-Br_mSh3i.mjs +0 -14
- package/dist/process-BQC3mK2k.mjs +0 -71
- package/dist/signal-BNUlQjpc.mjs +0 -25
- package/dist/snippet-CRLI3fYI.mjs +0 -19
- package/dist/table-nIdBLcz7.mjs +0 -26
- package/dist/timeline-Cw581KRT.mjs +0 -21
- package/dist/transform-job-sCgr8r-t.mjs +0 -22
- package/dist/transform-l1oC8oUS.mjs +0 -28
- package/dist/transform-test-hxkx6M8c.mjs +0 -16
- package/dist/upload-BqJLNCb1.mjs +0 -13
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { d as DashboardUpdateInput, o as DashboardDetail } from "./dashboard-Cwsf-e9T.mjs";
|
|
6
6
|
import { n as dashboardView } from "./dashboard-Bx2sYijR.mjs";
|
|
7
|
-
import { t as preflightDashcardCardReferences } from "./preflight-
|
|
7
|
+
import { t as preflightDashcardCardReferences } from "./preflight-BJ5Bve-N.mjs";
|
|
8
8
|
//#region src/commands/dashboard/update.ts
|
|
9
9
|
var update_default = defineMetabaseCommand({
|
|
10
10
|
meta: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { i as CardDetail, l as CardUpdateInput } from "./card-BJRZ5D5Q.mjs";
|
|
6
6
|
import { n as cardView } from "./card-VipF12MJ.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { h as DashcardPatchInput, m as DashcardDetail } from "./dashboard-Cwsf-e9T.mjs";
|
|
6
6
|
import { r as dashcardView } from "./dashboard-Bx2sYijR.mjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { c as DataActionUpdateInput, r as DataAction } from "./data-action-DAw6WRTH.mjs";
|
|
6
6
|
import { DATA_ACTION_DATASET_QUERY, skipValidateFlag } from "./validate-query-Bf5FhhMI.mjs";
|
|
7
|
-
import { n as dataActionView } from "./data-action-
|
|
7
|
+
import { n as dataActionView } from "./data-action-Co_Yf1uC.mjs";
|
|
8
8
|
//#region src/commands/data-action/update.ts
|
|
9
9
|
var update_default = defineMetabaseCommand({
|
|
10
10
|
meta: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { o as TransformJobUpdateInput, t as TransformJob } from "./transform-job-CDIb3B9o.mjs";
|
|
6
6
|
import { t as transformJobView } from "./transform-job-D18XRLBK.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { c as TimelineUpdateInput, t as Timeline } from "./timeline-DcsCXNUt.mjs";
|
|
6
6
|
import { n as timelineView } from "./timeline-BgWz8DYK.mjs";
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { g as errorMessage, i as AbortError, m as UnknownError, p as TimeoutError, u as NetworkError } from "./predicates-0C0TsWcJ.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { E as USER_AGENT, t as defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import {
|
|
5
|
-
import { n as streamProcess } from "./process-BQC3mK2k.mjs";
|
|
2
|
+
import { Z as parseJson, it as version, m as writeText, o as renderItem, q as HttpError, rt as name, t as interruptSignal, ut as outputFlags, y as promptConfirm } from "./cli.mjs";
|
|
3
|
+
import { E as USER_AGENT, U as combineAborts, W as throwIfAborted, t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
|
+
import { a as streamProcess } from "./process-cDa9fEBe.mjs";
|
|
6
5
|
import { z } from "zod";
|
|
7
6
|
import { realpathSync } from "node:fs";
|
|
8
7
|
import { compare, valid } from "semver";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { t as defineCommandGroup } from "./group-KiKh0UFs.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-CFL145Ta.mjs").then((m) => m.default),
|
|
8
|
+
append: () => import("./append-yaTEz2AE.mjs").then((m) => m.default),
|
|
9
|
+
replace: () => import("./replace-8hEY7br8.mjs").then((m) => m.default)
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
export { upload_default as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as ConfigError, v as isFileNotFoundError } from "./predicates-0C0TsWcJ.mjs";
|
|
2
|
-
import { D as fileNotFoundError } from "./runtime-
|
|
2
|
+
import { D as fileNotFoundError } from "./runtime-DsfR_yrb.mjs";
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import { basename } from "node:path";
|
|
5
5
|
//#region src/runtime/upload.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
3
3
|
import { t as ContentTranslationUploadResult } from "./content-translation-BrHOrmj9.mjs";
|
|
4
|
-
import { n as requireUploadFilePath, t as readCsvFile } from "./upload-
|
|
4
|
+
import { n as requireUploadFilePath, t as readCsvFile } from "./upload-D0zRTkyv.mjs";
|
|
5
5
|
//#region src/output/views/content-translation.ts
|
|
6
6
|
const contentTranslationUploadView = {
|
|
7
7
|
compactPick: ContentTranslationUploadResult,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as ConfigError } from "./predicates-0C0TsWcJ.mjs";
|
|
2
|
-
import { f as writeJson,
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
2
|
+
import { f as writeJson, ht as parseInteger, m as writeText, ut as outputFlags } from "./cli.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
6
|
//#region src/commands/uuid.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, g as formatScalar, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { d as FieldValues } from "./field-C2qOViFZ.mjs";
|
|
5
5
|
import { s as fieldValuesView } from "./field-CT4r6b92.mjs";
|
|
6
6
|
//#region src/commands/field/values.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as createClient } from "./client-
|
|
1
|
+
import { n as createClient } from "./client-C_5K9lZA.mjs";
|
|
2
2
|
import { g as errorMessage, l as MetabaseError, p as TimeoutError, u as NetworkError } from "./predicates-0C0TsWcJ.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { B as probeServer, E as USER_AGENT } from "./runtime-
|
|
3
|
+
import { q as HttpError } from "./cli.mjs";
|
|
4
|
+
import { B as probeServer, E as USER_AGENT } from "./runtime-DsfR_yrb.mjs";
|
|
5
5
|
//#region src/core/auth/verify.ts
|
|
6
6
|
const VERIFY_TIMEOUT_MS = 15e3;
|
|
7
7
|
async function verifyAndProbe(url, credential, options = {}) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as ModerationReview } from "./moderation-review-Bf9bPNQI.mjs";
|
|
5
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
4
4
|
import { t as ModerationReview } from "./moderation-review-Bf9bPNQI.mjs";
|
|
5
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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-
|
|
4
|
-
import { r as parseWaitSchedule } from "./wait-flags-
|
|
1
|
+
import { at as connectionFlags, dt as profileFlag, l as renderSummary, ut as outputFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DsfR_yrb.mjs";
|
|
3
|
+
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-D5eA9cN2.mjs";
|
|
4
|
+
import { r as parseWaitSchedule } from "./wait-flags-Qqvlb3Rv.mjs";
|
|
5
5
|
import { u as syncTaskView } from "./git-sync-D1aKczo6.mjs";
|
|
6
6
|
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask, r as syncTaskIdleView, t as SyncTaskOrIdle } from "./sync-task-Gf86CU9l.mjs";
|
|
7
7
|
//#region src/commands/git-sync/wait.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as interruptSignal } from "./cli.mjs";
|
|
2
|
-
import { t as parseId } from "./parse-id-
|
|
3
|
-
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-
|
|
2
|
+
import { t as parseId } from "./parse-id-BXkvTl89.mjs";
|
|
3
|
+
import { n as DEFAULT_TIMEOUT_MS, t as DEFAULT_INTERVAL_MS } from "./poll-D5eA9cN2.mjs";
|
|
4
4
|
//#region src/commands/wait-flags.ts
|
|
5
5
|
const waitScheduleFlags = {
|
|
6
6
|
timeout: {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { g as errorMessage, h as ValidationError, o as ConfigError } from "./predicates-0C0TsWcJ.mjs";
|
|
2
|
+
import { YAMLParseError, parse } from "yaml";
|
|
3
|
+
//#region src/runtime/yaml.ts
|
|
4
|
+
function parseYaml(input, schema, opts = {}) {
|
|
5
|
+
const result = parseYamlResult(input, schema, opts);
|
|
6
|
+
if (!result.ok) throw result.error;
|
|
7
|
+
return result.value;
|
|
8
|
+
}
|
|
9
|
+
function parseYamlResult(input, schema, opts = {}) {
|
|
10
|
+
const sourcePrefix = opts.source ? `${opts.source}: ` : "";
|
|
11
|
+
let raw;
|
|
12
|
+
try {
|
|
13
|
+
raw = parse(input);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
if (error instanceof YAMLParseError) return {
|
|
16
|
+
ok: false,
|
|
17
|
+
error: new ConfigError(`${sourcePrefix}invalid YAML: ${error.message}`)
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
ok: false,
|
|
21
|
+
error: new ConfigError(`${sourcePrefix}invalid YAML: ${errorMessage(error)}`)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const parsed = schema.safeParse(raw);
|
|
25
|
+
if (!parsed.success) return {
|
|
26
|
+
ok: false,
|
|
27
|
+
error: new ValidationError(`${sourcePrefix}value did not match expected schema`, {
|
|
28
|
+
source: opts.source ?? "<input>",
|
|
29
|
+
zodIssues: parsed.error.issues
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
ok: true,
|
|
34
|
+
value: parsed.data
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { parseYaml as t };
|
package/package.json
CHANGED
package/skill-data/core/SKILL.md
CHANGED
|
@@ -181,7 +181,7 @@ This file is enough for any single-command task. For anything deeper, load the r
|
|
|
181
181
|
<!-- /requires -->
|
|
182
182
|
- **`document`** — Metabase documents (TipTap body, embedding cards).
|
|
183
183
|
<!-- requires: dataActionsWithoutModel -->
|
|
184
|
-
- **`data-action`** —
|
|
184
|
+
- **`data-action`** — writes, as table actions or SQL query actions: enabling, body, parameters, running.
|
|
185
185
|
<!-- /requires -->
|
|
186
186
|
<!-- requires: remoteSync -->
|
|
187
187
|
- **`git-sync`** — round-tripping content to/from a git remote.
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: data-action
|
|
3
|
-
description: Author and run Metabase data actions with the `mb` CLI —
|
|
3
|
+
description: Author and run Metabase data actions with the `mb` CLI — table actions that insert, update or delete one row of a table, and query actions that run a parameterized native SQL write (INSERT, UPDATE, DELETE), filed in a collection and run with values. Covers enabling them on a database, picking the type, the collection they go in, each type's body and parameters, running, and the lifecycle. Triggers — "add a data action", "let users update a row", "a button that inserts a record", "add a record to a table", "run a write query", "a form that saves to the database", "delete rows from Metabase". Inside a data app, start with `data-app-actions`.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
|
|
5
5
|
requires: [dataActionsWithoutModel]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Data actions
|
|
9
9
|
|
|
10
|
-
A **data action**
|
|
10
|
+
A **data action** writes to a database with named inputs. A **table action** (`type: "implicit"`) inserts, updates or deletes one row of a table; a **query action** (`type: "query"`) runs one native SQL statement — `INSERT`, `UPDATE` or `DELETE`. Either lives in a collection, and dashboards, apps and `mb data-action execute` run it with values.
|
|
11
11
|
|
|
12
12
|
Flag conventions and `./.scratch` are in `core`; the native query and its template tags follow `native-sql`. This skill covers what a data action adds.
|
|
13
13
|
|
|
14
|
+
## Pick the type
|
|
15
|
+
|
|
16
|
+
- **Table action** (_Table actions_) for a write of one row by its primary key: insert a row, change some of its columns, delete it. There is no SQL to write.
|
|
17
|
+
- **Query action** (_Query actions_) for anything else: a computed value (`now()`), several rows or tables, rows matched by another column, a table without exactly one primary key, or setting a column to `NULL`.
|
|
18
|
+
|
|
14
19
|
## Check the database first
|
|
15
20
|
|
|
16
21
|
Data actions are off on every database until an admin turns on **Data actions** for it ("Allow data actions that use this database to be run", Admin → Databases → the database). That toggle is the database setting `database-enable-actions`.
|
|
@@ -30,7 +35,7 @@ A data action goes in a data actions collection, a data app collection, or the d
|
|
|
30
35
|
mb collection create --namespace data-actions --body '{"name":"Order actions"}' --json
|
|
31
36
|
```
|
|
32
37
|
|
|
33
|
-
##
|
|
38
|
+
## Query actions
|
|
34
39
|
|
|
35
40
|
Mint one template-tag `id` per tag with `mb uuid --count <n> --format text`.
|
|
36
41
|
|
|
@@ -38,7 +43,6 @@ Mint one template-tag `id` per tag with `mb uuid --count <n> --format text`.
|
|
|
38
43
|
{
|
|
39
44
|
"name": "Set order note",
|
|
40
45
|
"type": "query",
|
|
41
|
-
"database_id": 1,
|
|
42
46
|
"collection_id": 12,
|
|
43
47
|
"dataset_query": {
|
|
44
48
|
"lib/type": "mbql/query",
|
|
@@ -87,12 +91,12 @@ Mint one template-tag `id` per tag with `mb uuid --count <n> --format text`.
|
|
|
87
91
|
}
|
|
88
92
|
```
|
|
89
93
|
|
|
90
|
-
-
|
|
91
|
-
- `
|
|
94
|
+
- Never set `model_id`; `mb data-action create` refuses it.
|
|
95
|
+
- `dataset_query.database` is the database the action writes to (`mb db list`); Metabase takes the action's `database_id` from it. `collection_id` is the data actions collection (here `12`); omit it for the data actions root.
|
|
92
96
|
- A template tag's `id` is a UUID, unique among the tags: the representation schema requires one.
|
|
93
97
|
- One statement, no `;`. `create` and `update` validate `dataset_query` as `native-sql` does.
|
|
94
98
|
|
|
95
|
-
|
|
99
|
+
### Parameters: one per template tag
|
|
96
100
|
|
|
97
101
|
Each `{{name}}` needs a `template-tags` entry and a `parameters` entry, all using the same name:
|
|
98
102
|
|
|
@@ -108,26 +112,54 @@ Each `{{name}}` needs a `template-tags` entry and a `parameters` entry, all usin
|
|
|
108
112
|
- Set `required: true` on every input the statement cannot run without (`WHERE` keys, `NOT NULL` columns).
|
|
109
113
|
- Wrap an optional input in `[[ … ]]` with `required: false`; the clause drops out when no value is given. This makes one action do partial updates: `UPDATE orders SET updated_at = now() [[, note = {{note}}]] [[, status = {{status}}]] WHERE id = {{order_id}}`.
|
|
110
114
|
|
|
115
|
+
## Table actions
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"name": "Add customer",
|
|
120
|
+
"type": "implicit",
|
|
121
|
+
"kind": "row/create",
|
|
122
|
+
"table_id": 7,
|
|
123
|
+
"collection_id": 12
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- `kind` is `row/create`, `row/update` or `row/delete`; `table_id` comes from `mb table list --db-id <id>`. The table needs exactly one primary key, or create answers `An implicit action needs a table with exactly one primary key.`
|
|
128
|
+
- In a data app's collection the table must also be published to the Library (`mb library publish`), or create answers `An implicit action in a data app's collection can write only to a table published to the Library.`
|
|
129
|
+
- The body has no `dataset_query` or `parameters`: Metabase derives the parameters from the table's columns, without sensitive and retired ones. Each parameter `id` is its column name, slugified; `mb data-action get <id> --full --json` lists them.
|
|
130
|
+
|
|
131
|
+
| `kind` | Parameters | Answers |
|
|
132
|
+
| ------------ | -------------------------------------- | ----------------------------------------------------------------------- |
|
|
133
|
+
| `row/create` | every column but an auto-increment key | `{"created-row": {...}}`: the new row's parameter columns, key included |
|
|
134
|
+
| `row/update` | the key and every other column | `{"rows-updated": 1}` |
|
|
135
|
+
| `row/delete` | the key | `{"rows-deleted": 1}` |
|
|
136
|
+
|
|
137
|
+
- `required` marks each `NOT NULL` column without a default, and the key of an update or delete. Execution itself checks only that an update or delete has the key; an insert without a `NOT NULL` column fails in the database.
|
|
138
|
+
- An update writes only the columns given a value. A `null` value is dropped, so an update can't clear a column. A key that matches no row is refused: `Sorry, the row you're trying to update doesn't exist` (or `delete`).
|
|
139
|
+
- `visualization_settings.fields.<parameter id>.hidden: true` hides a parameter: execution refuses a value for it, and a data app's `src/metabase.ts` leaves it out. Hide a column an insert needs only when the same field has a `defaultValue`.
|
|
140
|
+
- A patch (_Lifecycle_) changes a query action's `dataset_query` or a table action's `kind` and `table_id`, never both.
|
|
141
|
+
|
|
111
142
|
## Run it
|
|
112
143
|
|
|
113
144
|
```bash
|
|
114
145
|
mb data-action execute <id> --body '{"parameters":{"order_id":1042,"note":"rush delivery"}}'
|
|
115
146
|
```
|
|
116
147
|
|
|
117
|
-
`parameters` is keyed by parameter `id`.
|
|
148
|
+
`parameters` is keyed by parameter `id`. A query action refuses a missing required value and answers `{"rows-affected": <n>}`; a table action answers as _Table actions_ shows. A run cannot be undone, so confirm with the user before running against data that matters, and test a new action on a row created for the purpose.
|
|
118
149
|
|
|
119
150
|
## Lifecycle
|
|
120
151
|
|
|
121
|
-
| Task
|
|
122
|
-
|
|
|
123
|
-
| Find
|
|
124
|
-
| Inspect
|
|
125
|
-
| Change
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
|
|
130
|
-
|
|
152
|
+
| Task | Command |
|
|
153
|
+
| --------------------- | ---------------------------------------------------------------------------------------- |
|
|
154
|
+
| Find | `mb data-action list` (unarchived only), `mb search --models action <text>` |
|
|
155
|
+
| Inspect | `mb data-action get <id> --full --json` |
|
|
156
|
+
| Change a query action | `mb data-action update <id> --file patch.json` (changed fields only) |
|
|
157
|
+
| Change a table action | `mb data-action update <id> --body '{"kind":"row/update"}'` (or `table_id`) |
|
|
158
|
+
| Move | `mb data-action update <id> --body '{"collection_id":<id>}'` |
|
|
159
|
+
| Archive / restore | `mb data-action archive <id>` / `mb data-action update <id> --body '{"archived":false}'` |
|
|
160
|
+
| Delete | `mb data-action delete <id> --yes` (also removes the dashboard buttons that run it) |
|
|
161
|
+
|
|
162
|
+
Archiving or deleting a collection archives or deletes its data actions. Existing data actions of a model still list, run and archive; leave them as they are.
|
|
131
163
|
|
|
132
164
|
## Don't
|
|
133
165
|
|
|
@@ -39,7 +39,7 @@ mb data-app create --body '{"name":"sales-overview","display_name":"Sales overvi
|
|
|
39
39
|
mb data-app scaffold <repo>/data_apps/sales-overview && cd <repo>/data_apps/sales-overview
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
`scaffold [dir]` takes a **directory**, not the slug: it copies the Vite + React + TypeScript template into a new or empty directory (the current one when omitted) and needs no server. When the instance syncs with a git repository (`mb git-sync status`), the directory is `data_apps/<slug>/` in a local clone of that repository (ask the user for its path, or clone the remote), where an export writes the app's `data_app.yaml` and bundle: an export leaves the source alone and an import ignores it, so the repository keeps the source with the app. `scaffold` needs an empty directory, so scaffold before the app's first export; for an app already in the repository, scaffold into a new directory and copy its files, dotfiles included (`cp -R <dir>/. data_apps/<slug>/`), in beside `data_app.yaml` and `dist/`; check `.gitignore` is there before `npm install`. Without a repository, use any new directory, and once remote sync is set up, move the project (without `node_modules/`, `dist/`, `.env.local` and a hand-written `data_app.yaml`) into `data_apps/<slug>/` before committing its source. Then install the SDK, then the rest:
|
|
42
|
+
`scaffold [dir]` takes a **directory**, not the slug: it copies the Vite + React + TypeScript template into a new or empty directory (the current one when omitted) and needs no server. When the instance syncs with a git repository (`mb git-sync status`), the directory is `data_apps/<slug>/` in a local clone of that repository (ask the user for its path, or clone the remote), where an export writes the app's `data_app.yaml` and bundle: an export leaves the source alone and an import ignores it, so the repository keeps the source with the app. `scaffold` needs an empty directory, so scaffold before the app's first export; for an app already in the repository, scaffold into a new directory and copy its files, dotfiles included (`cp -R <dir>/. data_apps/<slug>/`), in beside `data_app.yaml` and `dist/`; check `.gitignore` is there before `npm install`. Without a repository, use any new directory, and once remote sync is set up, move the project (without `node_modules/`, `build/`, `dist/`, `.env.local` and a hand-written `data_app.yaml`) into `data_apps/<slug>/` before committing its source. Then install the SDK, then the rest:
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
45
|
npm install @metabase/embedding-sdk-react@<major>-beta # <major>: 66 for a version tag v1.66.x (`mb auth status --profile <name> --json | jq -r .version.tag`)
|
|
@@ -112,7 +112,7 @@ npm run typecheck && npm run build
|
|
|
112
112
|
mb data-app set-bundle sales-overview
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
`set-bundle` uploads `
|
|
115
|
+
`set-bundle` uploads `build/index.js`, the file `npm run build` writes (`--bundle` for another path), and replaces the app's bundle, live at once. A new app is on from the start; `mb data-app set-enabled <slug> false` turns it off, which only the user decides. An app turned off opens only in Data Studio → Data apps → the app → Overview; `/apps/<slug>` says "not found", for admins too. Give the user `<metabase-url>/apps/<slug>`.
|
|
116
116
|
|
|
117
117
|
A viewer needs one of their groups assigned to the app (otherwise "You don't have access"), which only the user can do (Data Studio → Data apps → the app → Permissions). A group reaches the app's collection and nothing more, so a viewer also needs data access to the tables its questions read.
|
|
118
118
|
|
|
@@ -133,5 +133,5 @@ A viewer needs one of their groups assigned to the app (otherwise "You don't hav
|
|
|
133
133
|
|
|
134
134
|
- **Turn off:** `mb data-app set-enabled <slug> false`. **Rename:** `mb data-app update <slug> --body '{"display_name":"…"}'` (also `description`, `allowed_hosts`).
|
|
135
135
|
- **Outdated:** an app Data Studio lists as _Outdated_ targets an older data-app contract: it won't open for anyone, and only admins see it, until it's migrated. Tell the user; don't change its code ad hoc.
|
|
136
|
-
- **Move to another instance:** the app, its collection and what the collection holds are git-synced content. `mb git-sync export` (`git-sync`) writes `data_apps/<slug>/` with the bundle, and the collection under `collections/data_apps/`; importing the repository on the other instance recreates them with the same entity IDs, so the same `src/metabase.ts` works there. The first import there creates the app on, like `create`, open to admins until the user assigns groups; later imports keep its on/off state. The import doesn't check that the questions' tables are published on that instance, so the Library content they read goes in the same export: flag the Library root once (`mb git-sync add-collection <library-id>`, `git-sync`), or its metrics, measures and segments stay out of the repository; a data action needs its database's toggle on there too. Once the app is done, commit its source in `data_apps/<slug>/` on the branch you exported to, after the export. Pull the export branch: `git
|
|
136
|
+
- **Move to another instance:** the app, its collection and what the collection holds are git-synced content. `mb git-sync export` (`git-sync`) writes `data_apps/<slug>/` with the bundle, and the collection under `collections/data_apps/`; importing the repository on the other instance recreates them with the same entity IDs, so the same `src/metabase.ts` works there. The first import there creates the app on, like `create`, open to admins until the user assigns groups; later imports keep its on/off state. The import doesn't check that the questions' tables are published on that instance, so the Library content they read goes in the same export: flag the Library root once (`mb git-sync add-collection <library-id>`, `git-sync`), or its metrics, measures and segments stay out of the repository; a data action needs its database's toggle on there too. Once the app is done, commit its source in `data_apps/<slug>/` on the branch you exported to, after the export. Pull the export branch: `git fetch`, `git switch <branch>`, `git pull --ff-only`. Then `git add data_apps/<slug>`, commit and push, and `mb git-sync import` whatever a cached `has-remote-changes` says, or the next export ends in `conflict`. The export writes `data_app.yaml` and `dist/index.js`, the bundle you uploaded; never edit those two, and leave them out of your commits unless the bundle ships through git (below). The template's `.gitignore` keeps `node_modules/`, `build/` and `.env.local` out. A bundle can instead ship through git, from CI say: `npm run build:ci` writes `dist/index.js`, and once that is committed and pushed, the next import loads it. On a read-only synced instance only `set-enabled` works: creating, bundling, updating and deleting an app answer 403, and so does editing its collection; change it where it was built and export again.
|
|
137
137
|
- **Delete:** confirm with the user, then `mb data-app delete <slug> --yes` — it removes the app, its bundle, its collection and the questions and actions in it. The project directory stays: in a synced repository, the next export removes the app's `data_app.yaml`, bundle and collection files; after that export, switch and pull the same way, delete the source in `data_apps/<slug>/` in a commit of your own, push, and import.
|
|
@@ -20,10 +20,14 @@ npm install
|
|
|
20
20
|
```bash
|
|
21
21
|
npm run dev # preview at http://localhost:5174, in the sandbox Metabase runs apps in
|
|
22
22
|
npm run typecheck # type-checks src/ and vite.config.ts
|
|
23
|
-
npm run build # builds
|
|
23
|
+
npm run build # builds build/index.js
|
|
24
24
|
mb data-app typed-schema <slug> --out src/metabase.ts # the app's queries and actions
|
|
25
|
-
mb data-app set-bundle <slug> # makes
|
|
25
|
+
mb data-app set-bundle <slug> # makes build/index.js the app's bundle
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
To ship the bundle through git instead, for example from CI, run
|
|
29
|
+
`npm run build:ci` and commit `dist/index.js`, the file the app's
|
|
30
|
+
`data_app.yaml` names; the next git-sync import loads it.
|
|
31
|
+
|
|
28
32
|
`npm run dev` reads `DATA_APP_MB_URL` and `DATA_APP_MB_API_KEY` from
|
|
29
33
|
`.env.local`; `.env.local.example` lists them.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: data-app-actions
|
|
3
|
-
description: Make a Metabase data app write data — an action in the app's collection, its typed definition in `src/metabase.ts`, and the `useAction` hook from `@metabase/embedding-sdk-react/data-app` behind a form or a button, with inputs typed from each parameter, the server's error shown as it comes, and every affected query refreshed. Triggers — "a form that saves a row", "a button that updates a record", "delete an entry from the app", "submit doesn't refresh the list", "the action fails in the app". Creating the action itself is `data-action`; reads are `data-app-data`.
|
|
3
|
+
description: Make a Metabase data app write data — an action in the app's collection (a table action that inserts, updates or deletes a row, or a SQL query action), its typed definition in `src/metabase.ts`, and the `useAction` hook from `@metabase/embedding-sdk-react/data-app` behind a form or a button, with inputs typed from each parameter, the server's error shown as it comes, and every affected query refreshed. Triggers — "a form that saves a row", "a button that updates a record", "delete an entry from the app", "submit doesn't refresh the list", "the action fails in the app". Creating the action itself is `data-action`; reads are `data-app-data`.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
|
|
5
5
|
requires: [dataApps]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Writes in a data app
|
|
9
9
|
|
|
10
|
-
An **action** is a
|
|
10
|
+
An **action** is a table action, which inserts, updates or deletes one row of a table, or a query action, a saved SQL write (`data-action`). A data app runs only the actions in **the app's collection** (`data-app`, _Create the app_).
|
|
11
11
|
|
|
12
|
-
1. Draft the action as `data-action` describes
|
|
12
|
+
1. Draft the action as `data-action` describes, with `collection_id` the app's collection: the database must allow actions, and a table action's table must be published to the Library, as every table the app reads is. Pick the type as `data-action`, _Pick the type_, says. Show the user the table and kind, or the SQL, and the parameters; create it once they agree.
|
|
13
13
|
2. Regenerate `src/metabase.ts` (`data-app-data`).
|
|
14
14
|
3. Pass `actions.<name>` from it to `useAction`.
|
|
15
15
|
|
|
@@ -29,7 +29,7 @@ const { execute, isExecuting, result, error, reset } = useAction(actions.setOrde
|
|
|
29
29
|
- **Import it from `/data-app`.** The main `@metabase/embedding-sdk-react` entry exports the general SDK `useAction`, which takes raw ids and isn't typed from the definition. Write no generics: the definition types `execute`'s keys and values.
|
|
30
30
|
- `execute(params)` resolves to the response body; on failure it both throws and sets `error`. It resolves to `null` without sending anything while the SDK is still starting, so guard a call that can happen at mount. It never runs on its own and has no `enabled`: return early in the handler to skip it.
|
|
31
31
|
- `isExecuting` is true until it settles: disable the trigger and show progress, so a double click can't send twice.
|
|
32
|
-
- `result` is the last response, `null` before the first call; `
|
|
32
|
+
- `result` is the last response, `null` before the first call; a query action answers `{"rows-affected": <n>}`, a table action `rows-updated`, `rows-deleted` or `created-row` (`data-action`, _Table actions_). `reset()` clears `result` and `error`, for example when the user dismisses a message.
|
|
33
33
|
|
|
34
34
|
## A form
|
|
35
35
|
|
|
@@ -76,9 +76,15 @@ export function NoteForm({ orderId, onSaved }: { orderId: number; onSaved: () =>
|
|
|
76
76
|
| `Date` | `type="date"`, or `datetime-local` when a time is expected |
|
|
77
77
|
| `unknown` | `type="text"`, converted at the call |
|
|
78
78
|
|
|
79
|
+
**Table actions.** The parameter slugs are the table's column names, slugified.
|
|
80
|
+
|
|
81
|
+
- **Insert** (`row/create`): every column but an auto-increment key. `result["created-row"]` holds the new row's parameter columns, its key among them.
|
|
82
|
+
- **Update** (`row/update`): the key and every other column, `required` on each `NOT NULL` one without a default. Start the form from the row's current values, read by the query on screen, and send them all. A `null` is dropped, so an update can't clear a column.
|
|
83
|
+
- **Delete** (`row/delete`): the key only. Ask the viewer to confirm first.
|
|
84
|
+
|
|
79
85
|
**Validation** is `required` on each required parameter and nothing else — no length, range or format checks of your own. Disable submit from the browser's verdict, `form.checkValidity()`, never from hand-rolled checks. Anything stricter comes back from the server.
|
|
80
86
|
|
|
81
|
-
**Errors.** `error` is `{ status?, data: { message?, errors? }, isCancelled }` — read it without a cast. A failing
|
|
87
|
+
**Errors.** `error` is `{ status?, data: { message?, errors? }, isCancelled }` — read it without a cast. A failing query action comes back as a 500 whose `data.message` wraps the driver's text (`Error executing Action: …`): show it as it comes, in a `white-space: pre-wrap` element, since driver messages span lines — never "Something went wrong", `String(error)` or a friendlier paraphrase. A table action's refusals and constraint errors are 400s, shown the same way (`Sorry, the row you're trying to update doesn't exist`). `error.data.errors?.[parameterSlug]`, when present, goes beside its field (`aria-invalid` on the input).
|
|
82
88
|
|
|
83
89
|
## Refresh
|
|
84
90
|
|
package/skill-data/mbql/SKILL.md
CHANGED
|
@@ -49,7 +49,7 @@ An options key the server doesn't know is rejected or silently dropped, never ap
|
|
|
49
49
|
- `filters` are ANDed; OR is `["or", {}, a, b, …]`. Multi-value is `["in", {}, <field>, "a", "b"]` / `["not-in", …]`.
|
|
50
50
|
- Relative dates: `["time-interval", {}, <field>, -30, "day"]`, `["time-interval", {}, <field>, "current", "month"]`. A stated year or date range is absolute: `["between", {}, <field>, "2024-01-01", "2024-12-31"]` (inclusive).
|
|
51
51
|
- `aggregation` is a list of aggregation clauses, `breakout` a list of refs. "only / where X" is a filter; "by / per / over time" is a breakout.
|
|
52
|
-
-
|
|
52
|
+
- An unnamed aggregation is `count`, `sum`, `avg`, …, a breakout keeps its field's name, and a repeat gets a suffix that moves when clauses change: a second `sum` is `sum_2`, a second `ID` breakout (another table's) `ID_2`. When a later stage, a chart setting or a target table reads such a column, set `"name"` in the clause's options: `["sum", {"name": "revenue", "display-name": "Revenue"}, <field>]`, `["field", {"name": "product_id", "source-field": 11}, 12]`.
|
|
53
53
|
- An aggregation can be arithmetic over aggregations: `["/", {"name": "aov"}, ["sum", {}, <field>], ["count", {}]]`.
|
|
54
54
|
- Date arithmetic is `["datetime-diff", {}, a, b, "day"]`.
|
|
55
55
|
|
|
@@ -122,7 +122,7 @@ A later stage reads the previous stage's output by column name, with the column'
|
|
|
122
122
|
]
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
-
The names and base types are the `name` and `base_type` of the columns the earlier stages return: run them once (`mb query … --json`, `data.cols`) and copy both. A breakout keeps its field's name (`CREATED_AT`, even when bucketed)
|
|
125
|
+
The names and base types are the `name` and `base_type` of the columns the earlier stages return: run them once (`mb query … --json`, `data.cols`) and copy both. A breakout keeps its field's name (`CREATED_AT`, even when bucketed) and an aggregation its operator's, unless its options set `name`.
|
|
126
126
|
|
|
127
127
|
**Window:** `offset` sits in `aggregation` and reads another breakout row. Month-over-month against a monthly breakout:
|
|
128
128
|
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group--6adAsqG.mjs";
|
|
2
|
-
//#region src/commands/api-key/index.ts
|
|
3
|
-
var api_key_default = defineCommandGroup({
|
|
4
|
-
name: "api-key",
|
|
5
|
-
description: "Manage Metabase API keys",
|
|
6
|
-
subCommands: {
|
|
7
|
-
list: () => import("./list-Dz2YVD7m.mjs").then((mod) => mod.default),
|
|
8
|
-
create: () => import("./create-cpxnjNMC.mjs").then((mod) => mod.default),
|
|
9
|
-
delete: () => import("./delete-Bw8CMa_A.mjs").then((mod) => mod.default)
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
|
-
export { api_key_default as default };
|
package/dist/card-nOX_QJ9u.mjs
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group--6adAsqG.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-DDV5PylU.mjs").then((mod) => mod.default),
|
|
15
|
-
get: () => import("./get-CEreA2oN.mjs").then((mod) => mod.default),
|
|
16
|
-
query: () => import("./query-C8w04b4F.mjs").then((mod) => mod.default),
|
|
17
|
-
alerts: () => import("./alerts-DWVmtHEJ.mjs").then((mod) => mod.default),
|
|
18
|
-
create: () => import("./create-BfgTvPvI.mjs").then((mod) => mod.default),
|
|
19
|
-
update: () => import("./update-BemK_tZ_.mjs").then((mod) => mod.default),
|
|
20
|
-
verify: () => import("./verify-CMTrDvAW.mjs").then((mod) => mod.default),
|
|
21
|
-
archive: () => import("./archive-BZxa5zJk.mjs").then((mod) => mod.default)
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
//#endregion
|
|
25
|
-
export { card_default as default };
|