@metabase/cli 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +198 -11
- package/dist/{add-collection-CUBn11d4.mjs → add-collection-B-Pf12HY.mjs} +4 -4
- package/dist/add-collection-B2PdVMRy.mjs +9 -0
- package/dist/alert-DGcECcDb.mjs +26 -0
- package/dist/alerts-CRGMX4eB.mjs +49 -0
- package/dist/{append-BgDaYJW9.mjs → append-lL0IaI6U.mjs} +5 -5
- package/dist/{archive-Czzktgho.mjs → archive-3rLXY0nS.mjs} +4 -4
- package/dist/{archive-BCPA0HhV.mjs → archive-BUFc1me2.mjs} +5 -5
- package/dist/{archive-EoYl-lS-.mjs → archive-Baz4OVDd.mjs} +4 -4
- package/dist/{archive-Bv59HYsU.mjs → archive-C9mJGN6J.mjs} +4 -4
- package/dist/{archive-BZpXnQSu.mjs → archive-CUGRnyRV.mjs} +4 -4
- package/dist/{archive-BM9HjJHQ.mjs → archive-D3DErepm.mjs} +4 -4
- package/dist/{archive-BncW2dGw.mjs → archive-D8YrImIU.mjs} +6 -6
- package/dist/{archive-DFCu5hVG.mjs → archive-DihHU042.mjs} +5 -5
- package/dist/archive-DyPsHSFb.mjs +39 -0
- package/dist/{archive-Oh1iZu2y.mjs → archive-ExcEma7q.mjs} +7 -7
- package/dist/archive-hKPQXgXa.mjs +38 -0
- package/dist/{auth-hgAnMUfi.mjs → auth-B8Yb4ZaN.mjs} +5 -5
- package/dist/{body-DKcQw7G5.mjs → body-DXJ2v3GY.mjs} +3 -3
- package/dist/{branches-CCmtr3W8.mjs → branches-ByCzTuiv.mjs} +4 -4
- package/dist/{cancel-72y10-Rg.mjs → cancel-DvehNbDD.mjs} +3 -3
- package/dist/{cancel-task-CGwdz91O.mjs → cancel-task-BM8ADd3Y.mjs} +4 -4
- package/dist/{capabilities-DOTcPraV.mjs → capabilities-1HTHeDa4.mjs} +1 -1
- package/dist/{card-B8G5jQQT.mjs → card-BFRRyTGs.mjs} +3 -3
- package/dist/card-BT7ce7uO.mjs +27 -0
- package/dist/{cards-CYSyvN7Z.mjs → cards-Bz6anDNX.mjs} +6 -6
- package/dist/cli.mjs +43 -28
- package/dist/{collection-CFoLPrY5.mjs → collection-BrrjbPLN.mjs} +4 -2
- package/dist/collection-ahFSJT-e.mjs +23 -0
- package/dist/{collection-namespace-C7mr_a8H.mjs → collection-namespace-8i_CvWsg.mjs} +2 -2
- package/dist/{create-C_WqoOf5.mjs → create--_4GZUNY.mjs} +7 -6
- package/dist/{create-Brh8WCa3.mjs → create-1O1UiTVt.mjs} +6 -6
- package/dist/{create-C3DThF9E.mjs → create-BnNRvoyz.mjs} +11 -11
- package/dist/{create-CPEOSxIH.mjs → create-BynNiG1N.mjs} +6 -6
- package/dist/{create-E7XhC0gJ.mjs → create-CHK9cJcK.mjs} +8 -8
- package/dist/create-COI80Veo.mjs +52 -0
- package/dist/{create-QYctYGSa.mjs → create-CtIOvInN.mjs} +8 -8
- package/dist/{create-7pbf5Wu0.mjs → create-Cy57naL0.mjs} +12 -12
- package/dist/{create-nXlnVzXl.mjs → create-D57tRDrg.mjs} +9 -8
- package/dist/{create-pTnveKkm.mjs → create-D6bXJlBS.mjs} +6 -6
- package/dist/{create-DFyZCXQD.mjs → create-DAj8pyfQ.mjs} +5 -4
- package/dist/create-DOpa2TmH.mjs +53 -0
- package/dist/{create-branch-DPE6itiS.mjs → create-branch-BwqFHYcZ.mjs} +4 -4
- package/dist/{create-BDY38_Kr.mjs → create-qzjhJFP8.mjs} +6 -6
- package/dist/{create-U_XDwsIX.mjs → create-t7z8Eb4T.mjs} +6 -6
- package/dist/{create-CaWFrPRU.mjs → create-yK1-fuX5.mjs} +9 -9
- package/dist/cron-93wjhtrP.mjs +7 -0
- package/dist/{csv-CR2qhmC6.mjs → csv-yoFA1hhv.mjs} +5 -5
- package/dist/{current-task-MUHaiHIg.mjs → current-task-D8Q1uFmk.mjs} +4 -4
- package/dist/{dashboard-B-MTpfeS.mjs → dashboard-BSCXTX4H.mjs} +2 -2
- package/dist/dashboard-C__PiWrv.mjs +36 -0
- package/dist/{database-CIbVSfua.mjs → database-B-xwx5LA.mjs} +1 -1
- package/dist/{db-eWy7A-H3.mjs → db-BiLWl1J9.mjs} +7 -7
- package/dist/{delete-B58Cng0p.mjs → delete-B8dui6O6.mjs} +5 -5
- package/dist/{delete-BKMOtpjs.mjs → delete-BwPgIWV8.mjs} +5 -5
- package/dist/{delete-CW3dYmuT.mjs → delete-CA7IjA5J.mjs} +5 -5
- package/dist/{delete-BMa26SzX.mjs → delete-CawUDFud.mjs} +5 -5
- package/dist/{delete-doa3R-c5.mjs → delete-Dcu3iDkg.mjs} +5 -5
- package/dist/{delete-runtime-_YOukDRC.mjs → delete-runtime-00-R9iJm.mjs} +2 -2
- package/dist/{delete-table-D_tjBZPd.mjs → delete-table-DS0b3i0k.mjs} +5 -5
- package/dist/{dependencies-BR_4um7h.mjs → dependencies-BQVZylqV.mjs} +4 -4
- package/dist/{dirty-BKCg6oVN.mjs → dirty-BqdcrfUz.mjs} +4 -4
- package/dist/document-C9ykHYOG.mjs +22 -0
- package/dist/{eid-DSOk7Khb.mjs → eid-DcCAs-RP.mjs} +5 -5
- package/dist/{events-Dxm7me47.mjs → events-C9PqRUCO.mjs} +4 -4
- package/dist/{export-Gb_wfZpt.mjs → export-CdKR5nPT.mjs} +6 -6
- package/dist/field-P7aJaet9.mjs +21 -0
- package/dist/{fields-hZeq6IF2.mjs → fields-D2czTLKq.mjs} +5 -5
- package/dist/get-4rA8pbRu.mjs +38 -0
- package/dist/{get-CP3lrIYi.mjs → get-75Vdyusm.mjs} +4 -4
- package/dist/{get-nZW0W7Ui.mjs → get-B2vvnMpl.mjs} +5 -5
- package/dist/{get--rGDVyje.mjs → get-B6fSPCfp.mjs} +4 -4
- package/dist/{get-7Np_G2je.mjs → get-BbKC0fTx.mjs} +4 -4
- package/dist/{get-CH_JmPc-.mjs → get-BfFKIfpX.mjs} +5 -4
- package/dist/{get-DZatHVdn.mjs → get-Bpw05IUm.mjs} +7 -7
- package/dist/{get-DtvzjfjG.mjs → get-CJYv3CfV.mjs} +3 -3
- package/dist/{get-DB6Y9igl.mjs → get-CaIYg15K.mjs} +6 -6
- package/dist/get-CvXOGyFj.mjs +36 -0
- package/dist/{get-T85qZgnv.mjs → get-Cvkt6GcQ.mjs} +4 -4
- package/dist/{get-DRK5-UdU.mjs → get-DQ0pb4tT.mjs} +4 -4
- package/dist/{get-43Smv3RI.mjs → get-DXiL39gi.mjs} +6 -6
- package/dist/{get-DWzMR8sn.mjs → get-DXydDRVU.mjs} +4 -4
- package/dist/{get-BSdOE5J4.mjs → get-DZRB5S37.mjs} +4 -4
- package/dist/{get-CgZ5qjQx.mjs → get-Db8YNxId.mjs} +5 -4
- package/dist/{get-DT2MOZ8L.mjs → get-DhS4y0K9.mjs} +4 -4
- package/dist/{get-CuPCE_AG.mjs → get-Dy5f54pV.mjs} +4 -4
- package/dist/{get-run-Cwia6e0d.mjs → get-run-BF5ZBE8o.mjs} +4 -4
- package/dist/{get-CHAH_F37.mjs → get-vGqyjGSW.mjs} +4 -4
- package/dist/git-sync-BzievbUz.mjs +31 -0
- package/dist/{has-remote-changes-CIIib71u.mjs → has-remote-changes-CjDHphUH.mjs} +4 -4
- package/dist/{import-D9ID9Mz4.mjs → import-DzA5Ty9_.mjs} +6 -6
- package/dist/{input-DzbvxKYU.mjs → input-BpXlmJ5J.mjs} +1 -1
- package/dist/{is-dirty-CHbUJ-bh.mjs → is-dirty-4kIyD4oP.mjs} +3 -3
- package/dist/is-dirty-Cv0bdKkX.mjs +8 -0
- package/dist/{items-DN63mjpF.mjs → items-BXH0f1r6.mjs} +6 -6
- package/dist/{key-BnGRTX8U.mjs → key-B9AAqwjq.mjs} +1 -1
- package/dist/{library-DF2qx50w.mjs → library-BFZYsBcz.mjs} +5 -5
- package/dist/list-AyGEaws8.mjs +8 -0
- package/dist/{list-B3HoSfYj.mjs → list-Bar8uQRC.mjs} +3 -3
- package/dist/{list-KDHLmoUx.mjs → list-BiAVv9jX.mjs} +3 -3
- package/dist/{list-BSxMFDMR.mjs → list-Bm1PlZEV.mjs} +3 -3
- package/dist/{list-CQN2BpaW.mjs → list-BtgjcC2w.mjs} +3 -3
- package/dist/{list-n2PY3OIx.mjs → list-By1yYVGq.mjs} +7 -7
- package/dist/{list-De82cXvn.mjs → list-CG3ec9BZ.mjs} +4 -4
- package/dist/{list-C6YpaUpC.mjs → list-CLgkOcmY.mjs} +5 -5
- package/dist/{list-CvS68tLn.mjs → list-CSnpbFML.mjs} +3 -3
- package/dist/list-Cn-VruXD.mjs +8 -0
- package/dist/{list-C5Ir-96z.mjs → list-D7mMcRG5.mjs} +6 -6
- package/dist/{list-BeqcZVSn.mjs → list-DOhVPh95.mjs} +3 -3
- package/dist/{list-CY-jpBNE.mjs → list-DSHteJOl.mjs} +4 -3
- package/dist/{list-C0344yqi.mjs → list-Dl81pkVs.mjs} +6 -5
- package/dist/{list-MqqHcBvD.mjs → list-DwMcwucR.mjs} +3 -3
- package/dist/{list-B1sdMz6m.mjs → list-IxaPXKXu.mjs} +3 -3
- package/dist/list-SiSfX4wl.mjs +73 -0
- package/dist/{list-CkTsOOA7.mjs → list-hKRQUcGB.mjs} +3 -3
- package/dist/list-oRyXsJXs.mjs +50 -0
- package/dist/{list-C7TqbWG1.mjs → list-w61Uovt2.mjs} +5 -5
- package/dist/listing-1G8iFfZe.mjs +10 -0
- package/dist/{login-jy9rbYev.mjs → login-zUCMDLC8.mjs} +7 -7
- package/dist/{logout-CRbk1SuY.mjs → logout-BFh7QHx6.mjs} +3 -3
- package/dist/{measure-CPqisgyf.mjs → measure-DNldT89z.mjs} +6 -6
- package/dist/notification-BR5wehqg.mjs +201 -0
- package/dist/{parameter-values-CcgcG3S5.mjs → parameter-values-BYDFzxNY.mjs} +4 -4
- package/dist/{parse-enum-C_2lGr3g.mjs → parse-enum-D1zTYr_i.mjs} +1 -1
- package/dist/{parse-id-CD54Chc5.mjs → parse-id-waEVK-uR.mjs} +1 -1
- package/dist/{parse-ref-BLgKEEF-.mjs → parse-ref-C3DUXwci.mjs} +1 -1
- package/dist/patch-BpjI9BOz.mjs +20 -0
- package/dist/patch-DrMVqf34.mjs +36 -0
- package/dist/{path-CPMr1RJO.mjs → path-Bvs9IR4k.mjs} +3 -3
- package/dist/{poll-DVF9EnEb.mjs → poll-rqLkEJVP.mjs} +2 -2
- package/dist/{poll-task-CpHGQOd5.mjs → poll-task-CiB1o1wG.mjs} +2 -2
- package/dist/{preflight-xhwEOHAt.mjs → preflight-DJOBTWVq.mjs} +3 -3
- package/dist/{process-HDPKLS_z.mjs → process-BxAUv3Wx.mjs} +1 -1
- package/dist/{prompt-BgkWNgIR.mjs → prompt-DmxSLNrO.mjs} +1 -1
- package/dist/{publish-xVPABwE8.mjs → publish-C1y_vGGw.mjs} +12 -7
- package/dist/pulse-C8q469KD.mjs +186 -0
- package/dist/{query-Cxh9hmrP.mjs → query-B9LlGOZI.mjs} +8 -8
- package/dist/{query-B3HDIsJ-.mjs → query-DpVWKW-y.mjs} +12 -12
- package/dist/{query-result-Drvjv7DD.mjs → query-result-Bvh89K4f.mjs} +1 -1
- package/dist/{remove-collection-_a4uIlLB.mjs → remove-collection-DYQibG6d.mjs} +6 -6
- package/dist/{replace-BwvKDNur.mjs → replace-sHtPBNnA.mjs} +5 -5
- package/dist/{requests-qyh002pL.mjs → requests-Pc0u7PQS.mjs} +2 -2
- package/dist/{rescan-values-Bd0Joerq.mjs → rescan-values-CuPGOzKI.mjs} +6 -6
- package/dist/{resolve-Ct084wx3.mjs → resolve-BiL5scF0.mjs} +22 -15
- package/dist/{run-yrpSF6VL.mjs → run-Ce_gPVcg.mjs} +3 -3
- package/dist/{run-BfpKUjqL.mjs → run-D6jyZ0nv.mjs} +6 -6
- package/dist/{runs-D_08Ma08.mjs → runs-DRxrpAkU.mjs} +5 -5
- package/dist/{runtime-Ab96yYlM.mjs → runtime-CPIHg_Zg.mjs} +105 -101
- package/dist/{schema-tables-ChBYz4mO.mjs → schema-tables-D91DWM5l.mjs} +5 -5
- package/dist/{schemas-C2crnVML.mjs → schemas-OVYRgvz9.mjs} +3 -3
- package/dist/{search-DnGEh6sZ.mjs → search-msFNbxU6.mjs} +3 -3
- package/dist/{segment-DyVTZSIM.mjs → segment-BIKVTq_n.mjs} +6 -6
- package/dist/{selectors-Ll_TRxl5.mjs → selectors-Bsyhe1zP.mjs} +3 -3
- package/dist/send-BeFpVrwD.mjs +60 -0
- package/dist/{set-active-qqDoBh_Z.mjs → set-active-CFWtIWzX.mjs} +3 -3
- package/dist/{set-tHsHXRGV.mjs → set-jRnCLhvc.mjs} +6 -6
- package/dist/{setting-B9xSyMf6.mjs → setting-CApPg0Xr.mjs} +4 -4
- package/dist/{setup-CXGcyTuv.mjs → setup-CruHFQJz.mjs} +5 -5
- package/dist/{skills-rnvVgau4.mjs → skills-CxqkjkdQ.mjs} +3 -3
- package/dist/{skills-BKuiGkc1.mjs → skills-DlFbbaoS.mjs} +1 -1
- package/dist/snippet-DdoeL-7N.mjs +22 -0
- package/dist/{stash-DxmpBS7x.mjs → stash-CR-ESWiX.mjs} +6 -6
- package/dist/{status-B5ar0uXc.mjs → status-BMEdl-_G.mjs} +3 -3
- package/dist/{status-D5CR1SrS.mjs → status-DCIOvsc6.mjs} +26 -10
- package/dist/subscription-BOOBR5Ir.mjs +25 -0
- package/dist/subscriptions-C_1AQpZF.mjs +47 -0
- package/dist/summary-D1fKnwE3.mjs +8 -0
- package/dist/{summary-BEEJl2O1.mjs → summary-WUjzNITU.mjs} +4 -4
- package/dist/{sync-schema-B5HDpmrp.mjs → sync-schema-Cq5LzHHc.mjs} +8 -8
- package/dist/sync-scope-Dh1wBlrg.mjs +55 -0
- package/dist/table-BK56VDw8.mjs +21 -0
- package/dist/{table-C3RIKiYM.mjs → table-fDvuvqoU.mjs} +1 -1
- package/dist/timeline-Dl5pm5tN.mjs +24 -0
- package/dist/{timeline-event-BVDTt-pM.mjs → timeline-event-5JAeGVSI.mjs} +6 -6
- package/dist/transform-ATK6rJBl.mjs +31 -0
- package/dist/transform-job-BezBE6Y8.mjs +25 -0
- package/dist/{transform-job-CjsAXMej.mjs → transform-job-sJmW_En3.mjs} +4 -4
- package/dist/{transform-tag-B1xnFa9w.mjs → transform-tag-GqbcG_6_.mjs} +5 -5
- package/dist/{transforms-CLkv3e81.mjs → transforms-Cosz-Vq3.mjs} +4 -4
- package/dist/{tree-CB2IURsX.mjs → tree-BkXtw0c4.mjs} +3 -3
- package/dist/{unpublish-BkZldbkP.mjs → unpublish-BlGj7omM.mjs} +4 -4
- package/dist/{update-BghbOcv6.mjs → update-BHhEtxwC.mjs} +13 -13
- package/dist/update-C-ChEcI9.mjs +57 -0
- package/dist/{update-BHC3pwzR.mjs → update-C9K1QnOo.mjs} +8 -7
- package/dist/{update-B4atxTx0.mjs → update-CTWsiwme.mjs} +7 -7
- package/dist/{update-BacyVaLu.mjs → update-CXlhrcy8.mjs} +7 -7
- package/dist/update-Cbsgvopz.mjs +56 -0
- package/dist/{update-D7Ia9Qrt.mjs → update-CsYFWkVd.mjs} +12 -12
- package/dist/{update-DajyWtBN.mjs → update-CuKHukZ6.mjs} +7 -7
- package/dist/{update-CGWTX1Z0.mjs → update-CzrbMLZq.mjs} +7 -7
- package/dist/{update-CO9uCJxV.mjs → update-DDVuyquf.mjs} +9 -9
- package/dist/{update-B1dkPypu.mjs → update-DpIzJ8Ts.mjs} +10 -10
- package/dist/{update-iY9WZqy0.mjs → update-DrvAdi-O.mjs} +8 -8
- package/dist/{update-Cyxjg496.mjs → update-Tw0kARao.mjs} +7 -7
- package/dist/{update-D80GWpWl.mjs → update-ZJ5T-SBW.mjs} +9 -9
- package/dist/{update-dashcard-DLq7ihNO.mjs → update-dashcard-Dnfa8_aJ.mjs} +9 -9
- package/dist/{update-8bTrglfc.mjs → update-hoCyoR-u.mjs} +7 -7
- package/dist/{upgrade-CXoNQ4FH.mjs → upgrade-D0HiyTxw.mjs} +4 -4
- package/dist/upload-WT6SywFa.mjs +16 -0
- package/dist/{uuid-D6dao_q4.mjs → uuid-D7NcSTj8.mjs} +2 -2
- package/dist/{validate-Cqa14t7o.mjs → validate-BoY75_M3.mjs} +1 -1
- package/dist/{validate-query-D1N30wJ7.mjs → validate-query-Di0VKMF-.mjs} +2 -2
- package/dist/{values-DIBAgSyz.mjs → values-OBiEVCVH.mjs} +4 -4
- package/dist/{verify-DvhZWmS2.mjs → verify-VEB7TBQ_.mjs} +2 -2
- package/dist/{wait-CW1OawkI.mjs → wait-B9qNlcTe.mjs} +5 -5
- package/dist/{wait-flags-DvNU8ahZ.mjs → wait-flags-D0FEgH6k.mjs} +2 -2
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +6 -4
- package/skill-data/git-sync/SKILL.md +20 -5
- package/skill-data/notification/SKILL.md +157 -0
- package/dist/add-collection-C8ZTPlIE.mjs +0 -9
- package/dist/card-Ct-q_C4S.mjs +0 -26
- package/dist/collection-K82kJWdj.mjs +0 -23
- package/dist/dashboard-B1iRSUBI.mjs +0 -35
- package/dist/document-CVxhTnUD.mjs +0 -22
- package/dist/field-BTCw6voJ.mjs +0 -21
- package/dist/git-sync-Cjrx2meo.mjs +0 -31
- package/dist/is-dirty-DY5Zhsbk.mjs +0 -8
- package/dist/snippet-C4h-GMUf.mjs +0 -22
- package/dist/table-DHmaW3Ec.mjs +0 -21
- package/dist/timeline-B0R6-dm8.mjs +0 -24
- package/dist/transform-Cq2_muWO.mjs +0 -31
- package/dist/transform-job-BpebgMnq.mjs +0 -25
- package/dist/upload-D3eiApa0.mjs +0 -16
- /package/dist/{body-flags-CgHgJBRC.mjs → body-flags-Cbv-Ba6W.mjs} +0 -0
- /package/dist/{document-CL4ML5FN.mjs → document-C7IR6T8c.mjs} +0 -0
- /package/dist/{embedding-CKdw8q7p.mjs → embedding-B0x9CPkU.mjs} +0 -0
- /package/dist/{field-DsXTeqBy.mjs → field-RYBTW2KS.mjs} +0 -0
- /package/dist/{group-CILtQqCL.mjs → group-DfTvzGz-.mjs} +0 -0
- /package/dist/{measure-S9WszHre.mjs → measure-DH3ow2ko.mjs} +0 -0
- /package/dist/{paginate-CMqbqhMC.mjs → paginate-DuDXvUPr.mjs} +0 -0
- /package/dist/{parameter-BZ6y-Gfs.mjs → parameter-hCQ80jnc.mjs} +0 -0
- /package/dist/{render-CkuFkWlQ.mjs → render-rgZBe3rO.mjs} +0 -0
- /package/dist/{revision-message-flag-CHzX0cqV.mjs → revision-message-flag-B4BxzDXJ.mjs} +0 -0
- /package/dist/{segment-BPb1H6DW.mjs → segment-cwIOOF0v.mjs} +0 -0
- /package/dist/{setting-Cko6bE_w.mjs → setting-CDEoJYO0.mjs} +0 -0
- /package/dist/{snippet-DWiXNy4T.mjs → snippet-1xYckIwc.mjs} +0 -0
- /package/dist/{timeline-BCTRThc-.mjs → timeline-BNwnJ3g9.mjs} +0 -0
- /package/dist/{transform-BVHYzWpK.mjs → transform-BkSkCvpx.mjs} +0 -0
- /package/dist/{transform-tag--IBQ-8Ij.mjs → transform-tag-qTjNVfTW.mjs} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import { Timeline, TimelineUpdateInput, timelineView } from "./timeline-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import { Timeline, TimelineUpdateInput, timelineView } from "./timeline-BNwnJ3g9.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/timeline/update.ts
|
|
11
11
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import { Snippet, SnippetUpdateInput, snippetView } from "./snippet-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import { Snippet, SnippetUpdateInput, snippetView } from "./snippet-1xYckIwc.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/snippet/update.ts
|
|
11
11
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import "./validate-
|
|
9
|
-
import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-
|
|
10
|
-
import { Segment, SegmentUpdateInput, segmentView } from "./segment-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import "./validate-BoY75_M3.mjs";
|
|
9
|
+
import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-Di0VKMF-.mjs";
|
|
10
|
+
import { Segment, SegmentUpdateInput, segmentView } from "./segment-cwIOOF0v.mjs";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/segment/update.ts
|
|
13
13
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import "./validate-
|
|
9
|
-
import { TRANSFORM_SOURCE_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-
|
|
10
|
-
import { Transform, TransformUpdateInput, transformView } from "./transform-
|
|
11
|
-
import { enrichTransformCollectionError } from "./collection-namespace-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import "./validate-BoY75_M3.mjs";
|
|
9
|
+
import { TRANSFORM_SOURCE_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-Di0VKMF-.mjs";
|
|
10
|
+
import { Transform, TransformUpdateInput, transformView } from "./transform-BkSkCvpx.mjs";
|
|
11
|
+
import { enrichTransformCollectionError } from "./collection-namespace-8i_CvWsg.mjs";
|
|
12
12
|
|
|
13
13
|
//#region src/commands/transform/update.ts
|
|
14
14
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import { Table, TableUpdateInput, tableView } from "./table-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import "./field-RYBTW2KS.mjs";
|
|
9
|
+
import { Table, TableUpdateInput, tableView } from "./table-fDvuvqoU.mjs";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/table/update.ts
|
|
12
12
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import { Document, DocumentUpdateInput, documentView } from "./document-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import { Document, DocumentUpdateInput, documentView } from "./document-C7IR6T8c.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/document/update.ts
|
|
11
11
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import "./validate-
|
|
9
|
-
import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-
|
|
10
|
-
import { Measure, MeasureUpdateInput, measureView } from "./measure-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import "./validate-BoY75_M3.mjs";
|
|
9
|
+
import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-Di0VKMF-.mjs";
|
|
10
|
+
import { Measure, MeasureUpdateInput, measureView } from "./measure-DH3ow2ko.mjs";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/measure/update.ts
|
|
13
13
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ConfigError, connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { ConfigError, connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import "./embedding-B0x9CPkU.mjs";
|
|
9
|
+
import "./parameter-hCQ80jnc.mjs";
|
|
10
|
+
import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-BSCXTX4H.mjs";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/dashboard/update-dashcard.ts
|
|
13
13
|
var update_dashcard_default = defineMetabaseCommand({
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import "./
|
|
5
|
-
import
|
|
6
|
-
import { readBody } from "./body-
|
|
7
|
-
import { bodyInputFlags } from "./body-flags-
|
|
8
|
-
import { TimelineEvent, TimelineEventUpdateInput, timelineEventView } from "./timeline-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import "./input-BpXlmJ5J.mjs";
|
|
6
|
+
import { readBody } from "./body-DXJ2v3GY.mjs";
|
|
7
|
+
import { bodyInputFlags } from "./body-flags-Cbv-Ba6W.mjs";
|
|
8
|
+
import { TimelineEvent, TimelineEventUpdateInput, timelineEventView } from "./timeline-BNwnJ3g9.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/timeline-event/update.ts
|
|
11
11
|
var update_default = defineMetabaseCommand({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AbortError, NetworkError, TimeoutError, UnknownError, errorMessage, outputFlags, package_default, renderItem, writeText } from "./capabilities-
|
|
1
|
+
import { AbortError, NetworkError, TimeoutError, UnknownError, errorMessage, outputFlags, package_default, renderItem, writeText } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { HttpError, USER_AGENT, combineAborts, defineMetabaseCommand, parseJson, throwIfAborted } from "./runtime-
|
|
4
|
-
import { promptConfirm } from "./prompt-
|
|
5
|
-
import { streamProcess } from "./process-
|
|
3
|
+
import { HttpError, USER_AGENT, combineAborts, defineMetabaseCommand, parseJson, throwIfAborted } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { promptConfirm } from "./prompt-DmxSLNrO.mjs";
|
|
5
|
+
import { streamProcess } from "./process-BxAUv3Wx.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { realpathSync } from "node:fs";
|
|
8
8
|
import { compare, valid } from "semver";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "./command-augment-D9pI9Vbh.mjs";
|
|
2
|
+
import { defineCommandGroup } from "./group-DfTvzGz-.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/upload/index.ts
|
|
5
|
+
var upload_default = defineCommandGroup({
|
|
6
|
+
name: "upload",
|
|
7
|
+
description: "Upload CSV files into Metabase",
|
|
8
|
+
subCommands: {
|
|
9
|
+
csv: () => import("./csv-yoFA1hhv.mjs").then((m) => m.default),
|
|
10
|
+
append: () => import("./append-lL0IaI6U.mjs").then((m) => m.default),
|
|
11
|
+
replace: () => import("./replace-sHtPBNnA.mjs").then((m) => m.default)
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { upload_default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ConfigError, outputFlags, writeJson, writeText } from "./capabilities-
|
|
1
|
+
import { ConfigError, outputFlags, writeJson, writeText } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand, parseInteger } from "./runtime-
|
|
3
|
+
import { defineMetabaseCommand, parseInteger } from "./runtime-CPIHg_Zg.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigError, escapeJsonPointerSegment, isPlainObject } from "./capabilities-
|
|
1
|
+
import { ConfigError, escapeJsonPointerSegment, isPlainObject } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import Ajv2020 from "ajv/dist/2020.js";
|
|
4
4
|
import addFormats from "ajv-formats";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigError, writeJson } from "./capabilities-
|
|
2
|
-
import { assertNotLegacyEnvelopeWrappingMbql5, isMbql5Query, validateQuery } from "./validate-
|
|
1
|
+
import { ConfigError, writeJson } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
+
import { assertNotLegacyEnvelopeWrappingMbql5, isMbql5Query, validateQuery } from "./validate-BoY75_M3.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/validate-query.ts
|
|
5
5
|
const skipValidateFlag = { "skip-validate": {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { connectionFlags, formatScalar, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, formatScalar, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import { FieldValues, fieldValuesView } from "./field-RYBTW2KS.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/commands/field/values.ts
|
|
8
8
|
var values_default = defineMetabaseCommand({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MetabaseError, NetworkError, TimeoutError, errorMessage } from "./capabilities-
|
|
2
|
-
import { HttpError, createClient, probeServer } from "./runtime-
|
|
1
|
+
import { MetabaseError, NetworkError, TimeoutError, errorMessage } from "./capabilities-1HTHeDa4.mjs";
|
|
2
|
+
import { HttpError, createClient, probeServer } from "./runtime-CPIHg_Zg.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/domain/user.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag, renderSummary } from "./capabilities-1HTHeDa4.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
4
|
-
import { parseId } from "./parse-id-
|
|
5
|
-
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS } from "./poll-
|
|
6
|
-
import { SyncTaskOrIdle, formatSyncTask, pollSyncTask, syncTaskIdleView, syncTaskView, throwIfFailedTask } from "./poll-task-
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-CPIHg_Zg.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
5
|
+
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS } from "./poll-rqLkEJVP.mjs";
|
|
6
|
+
import { SyncTaskOrIdle, formatSyncTask, pollSyncTask, syncTaskIdleView, syncTaskView, throwIfFailedTask } from "./poll-task-CiB1o1wG.mjs";
|
|
7
7
|
|
|
8
8
|
//#region src/commands/git-sync/wait.ts
|
|
9
9
|
const WaitResult = SyncTaskOrIdle;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parseId } from "./parse-id-
|
|
2
|
-
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS } from "./poll-
|
|
1
|
+
import { parseId } from "./parse-id-waEVK-uR.mjs";
|
|
2
|
+
import { DEFAULT_INTERVAL_MS, DEFAULT_TIMEOUT_MS } from "./poll-rqLkEJVP.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/wait-flags.ts
|
|
5
5
|
const waitScheduleFlags = {
|
package/package.json
CHANGED
package/skill-data/core/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: core
|
|
3
|
-
description: Foundations for driving Metabase from the terminal with the `mb` CLI — authentication and named profiles, the flag/output/`--json` conventions every command shares, JSON body input, command discovery via `--help` (add `--json` for machine-readable schemas), and the per-resource footguns (db, table, field, upload, card, dashboard, collection, segment, measure, timeline, library, setting, search, eid). Load first for any `mb` task; it routes to the specialized skills for deeper work.
|
|
3
|
+
description: Foundations for driving Metabase from the terminal with the `mb` CLI — authentication and named profiles, the flag/output/`--json` conventions every command shares, JSON body input, command discovery via `--help` (add `--json` for machine-readable schemas), and the per-resource footguns (db, table, field, upload, card, dashboard, collection, segment, measure, timeline, alert, subscription, library, setting, search, eid). Load first for any `mb` task; it routes to the specialized skills for deeper work.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -12,8 +12,8 @@ Top-level command groups (run `mb <group> --help` to discover verbs):
|
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
auth | db | table | field | upload | query | card | dashboard | snippet | segment | measure | collection | library
|
|
15
|
-
document | timeline | timeline-event | transform | transform-job | transform-tag |
|
|
16
|
-
eid | uuid | upgrade | skills
|
|
15
|
+
document | timeline | timeline-event | transform | transform-job | transform-tag | alert | subscription | setting
|
|
16
|
+
search | git-sync | setup | eid | uuid | upgrade | skills
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
The conventions below — auth, flags, output, body input — hold across **every** group. Per-command flags and examples live in each command's `--help`; add `--json` for the machine-readable form with the output JSON Schema. A few flows have their own skills (see "Specialized skills"). When a card needs a query, prefer MBQL over native SQL (portable, pre-flight-validated — load `mbql`); fall back to native SQL when MBQL can't express it.
|
|
@@ -129,6 +129,7 @@ Routine verb shapes (list / get / create / update), every flag, and output schem
|
|
|
129
129
|
- **card.** `dataset_query` is the **flat** `mbql/query` value, not a legacy `{type:"query",query:…}` envelope (→ `mbql`). `--export-format csv|xlsx` streams the raw export (pipe to a file), bypassing the JSON envelope. `archive` is the only delete; unarchive with `update --body '{"archived":false}'`. `visualization_settings` keys are scoped by `display` and aren't pre-flighted — see `visualization`.
|
|
130
130
|
- **dashboard.** Dashcards round-trip through `PUT /api/dashboard/:id` (no per-dashcard endpoint): `update-dashcard <dash-id> <dashcard-id>` patches one safely; `update --body '{"dashcards":[…]}'` replaces the whole set (omitted ids are deleted server-side; negative ids for new cards). `create` accepts the **same** `dashcards` array in its initial body — lay out the whole dashboard in one call: negative ids for new cards, and `card_id:null` plus a `visualization_settings.virtual_card` block (`{display:"text"|"heading"|"link"|…}`) for non-question cards. `create`/`update` pre-flight every positive `card_id` and exit **2** with `{ok:false,errors:[…]}` on a bad ref (non-bypassable). `dashboard get <id>` (or `--full`) hydrates dashcards/tabs; `list` omits them. **The grid is 24 columns wide:** each dashcard's `{col, row, size_x, size_y}` is in grid units — **full-width is `size_x: 24`** (`size_x: 12` is half a row, the usual cause of a card filling only half the width). Keep `col + size_x ≤ 24`, start a full-width stack's `col` at 0, and don't overlap (the server stores collisions as sent — no auto-fix). Layout patterns and per-chart default sizes → the `dashboard` skill; load it before composing any `dashcards` array.
|
|
131
131
|
- **dashboard parameters (filters).** A dashboard's `parameters` array holds its filter widgets; they're part of the dashboard record, so read them with `dashboard get <id> --fields parameters --json` (no separate verb). **Editing replaces the _whole_ array** (like dashcards), so it's a read-modify-write loop: pull the current set with `dashboard get <id> --fields parameters --json`, add/change entries, and send the full array back via `dashboard update --body '{"parameters":[…]}'` (or supply it in `create`). Omitting a parameter deletes it. Each parameter is `{id, type, …}`. **`id` is a descriptive slug-like string you pick (e.g. `order_status`), unique within this dashboard — Metabase stores any non-blank string verbatim. Do NOT invent a random/opaque id by guessing; reuse the `slug`. If you genuinely need an opaque id, mint one with `mb uuid` — never fabricate one.** `type` is a **closed enum**; an unlisted value is a hard parse error that echoes the full allowed set back to you: string ops `string/=` `string/!=` `string/contains` `string/does-not-contain` `string/starts-with` `string/ends-with`; number ops `number/=` `number/!=` `number/between` `number/>=` `number/<=`; date `date/single` `date/range` `date/relative` `date/month-year` `date/quarter-year` `date/all-options`; plus `category`, `id`, `boolean/=`, `temporal-unit`, and bare `number`/`text`/`date`/`boolean`. A parameter only filters a card once it is **mapped**: each dashcard's `parameter_mappings` is `[{parameter_id, target}]` where `parameter_id` must match a parameter's `id` exactly, and `target` is `["dimension", ["field", <field-id>, null]]` for an MBQL card column, `["dimension", ["template-tag", "<tag>"]]` for a native field-filter tag, or `["variable", ["template-tag", "<tag>"]]` for a native raw-value tag. Populate a dropdown with `values_source_type`: `"static-list"` + `values_source_config.values`, or `"card"` + `{card_id, value_field, label_field}`; omit it to pull live distinct values from the mapped field. `dashboard parameter-values <id> <parameter-id> [--query <substr>]` fetches those selectable values (`{values, has_more_values}`); `--query` is a case-insensitive substring search.
|
|
132
|
+
- **alert / subscription are two unrelated systems.** `alert` watches one **card** and fires on a send condition (`/api/notification`: a cron string, `channel/email`-prefixed handlers, typed recipients); `subscription` delivers one **dashboard** on a schedule (`/api/pulse`: structured `schedule_type` + hour/day/frame, bare `email` channels, `{id}|{email}` recipients). The bodies are not interchangeable. Both silently deliver nowhere if the server has no SMTP / Slack app — check `mb setting get 'email-configured?'` (quote it; the `?` is a shell glob) before creating either. Their list-valued fields (`handlers`/`subscriptions`, `channels`/`cards`) **replace wholesale** on update, so adding one recipient is a read-modify-write. `mb card alerts <id>` and `mb dashboard subscriptions <id>` list what's already attached to a card/dashboard; `archive` deactivates rather than deletes. Load the `notification` skill before authoring either body.
|
|
132
133
|
- **snippet `--archived` is a swap, not a union** — list returns _either_ active _or_ archived rows, never both. (Same for `--filter archived` on dashboard/collection.)
|
|
133
134
|
- **segment / measure.** `update` and `archive` require a non-blank `revision_message` (audit-logged); the CLI does not synthesize it on `update`. `archive` defaults to `"Archived via mb CLI"` — override with `--revision-message`. `definition` is a flat MBQL clause (→ `mbql`): segment = a filter, measure = exactly one aggregation.
|
|
134
135
|
- **timeline / timeline-event.** Timelines are collection-scoped event annotations for time-series charts: a timeline's events render only on time-series questions saved in the **same collection** (`collection_id`; null = root) — sub-collections do **not** inherit, and events never draw on dashboard cards, only in the question (and collection) view. To annotate a question's chart, create the timeline in that question's collection, then add events; an event only draws when its `timestamp` falls inside the chart's displayed time range. Event `create` requires `timestamp` (ISO 8601), `timezone` (IANA name), `time_matters` (true = the time of day is significant, false = date-only), and `timeline_id` — the API never auto-creates a default timeline (that's UI-only). There is no `timeline-event list`; enumerate with `timeline events <id>` (`--archived` to include archived). Archiving a timeline cascades `archived` to its events; `delete` is a **hard** delete of the timeline and all its events — prefer `archive`.
|
|
@@ -138,7 +139,7 @@ Routine verb shapes (list / get / create / update), every flag, and output schem
|
|
|
138
139
|
- **transform.** Iterate with `transform update <id>`, never `delete` + `create` (keeps the row, `entity_id`, materialized table, and YAML filename — avoids `_2` suffixes and noisy git history). `transform run` needs `--wait` (or `--sync`, which also waits for the output table to register and returns `target_table_id`) or you get only `{run_id, final:null}`. (→ `transform`.)
|
|
139
140
|
- **setup is one-shot.** `mb setup` walks `/api/setup` for a **fresh** instance only — errors against an already-configured one. Mostly for bootstrapping local / e2e instances.
|
|
140
141
|
- **eid** translates a string entity id → numeric id: `mb eid --model <model> <eid1,eid2> --json`. Entity ids are NanoIDs that can start with `-`, which the positional form misreads as a flag (shell quotes don't help) — for those, use `--body '{"entity_ids":{"card":["-…"]}}'` (the id is a JSON string value, immune to flag parsing).
|
|
141
|
-
- **library.** EE-only (`library` premium feature, v59+). The Library is a curated subtree (`library-data` "Data" + `library-metrics` "Metrics" under a `library` root): tables published to **Data** appear first in data pickers and rank up in search; metrics saved to **Metrics** are prioritized in nav, search, and the query builder — it's how you tell people (and agents) "start from these, they're trusted." `library get` shows the Library and its Data/Metrics collection ids; `library create` provisions it (idempotent). `library publish --table-ids/--db-ids/--schemas` publishes tables into Data — it **resolves the Data collection itself and creates the Library if absent** (no collection id to find); each `--schemas` entry is `<db-id>:<schema>` (e.g. `1:public`), not a bare name. `publish` cascades to upstream FK dependencies, `unpublish` to downstream dependents; both need **admin or data-analyst** (Curate alone won't publish) and exit **403** without write **and** query permission on every affected table. Publish status shows on the table: `table get`/`table list` carry `is_published` (`collection_id` under `--full`). Good candidates are finished, analysis-ready tables — clean/combine via transforms first, then publish the polished result.
|
|
142
|
+
- **library.** EE-only (`library` premium feature, v59+). The Library is a curated subtree (`library-data` "Data" + `library-metrics` "Metrics" under a `library` root): tables published to **Data** appear first in data pickers and rank up in search; metrics saved to **Metrics** are prioritized in nav, search, and the query builder — it's how you tell people (and agents) "start from these, they're trusted." `library get` shows the Library and its Data/Metrics collection ids; `library create` provisions it (idempotent). `library publish --table-ids/--db-ids/--schemas` publishes tables into Data — it **resolves the Data collection itself and creates the Library if absent** (no collection id to find); each `--schemas` entry is `<db-id>:<schema>` (e.g. `1:public`), not a bare name. `publish` cascades to upstream FK dependencies, `unpublish` to downstream dependents; both need **admin or data-analyst** (Curate alone won't publish) and exit **403** without write **and** query permission on every affected table. Publish status shows on the table: `table get`/`table list` carry `is_published` (`collection_id` under `--full`). Good candidates are finished, analysis-ready tables — clean/combine via transforms first, then publish the polished result. Publishing does not put the Data collection in the git-sync scope: on a remote-sync instance, `mb git-sync add-collection <data-collection-id>` is what makes exports carry the published tables' metadata (see the `git-sync` skill).
|
|
142
143
|
- **query / uuid.** `mb query` is the ad-hoc MBQL surface (`--print-schema` → `--dry-run` → run); `mb uuid --count <n>` mints the `lib/uuid` values MBQL clauses need. Both live in `mbql`.
|
|
143
144
|
|
|
144
145
|
## Specialized skills (load on demand)
|
|
@@ -150,6 +151,7 @@ This file is enough for any single-command task. For anything deeper, load the r
|
|
|
150
151
|
- **`visualization`** — choosing a card's `display` and authoring `visualization_settings`. The presentation counterpart to `mbql`.
|
|
151
152
|
- **`dashboard`** — building interactive dashboards: wiring filters (parameters + mappings), linked/cascading filters, cross-filtering, click behavior, series, and tabs. Load beyond a plain card-layout task.
|
|
152
153
|
- **`metadata`** — setting field/table metadata: semantic types, foreign-key targets, dropdown/scan behavior, and column visibility, and the downstream features each unlocks. Load when editing what a column _means_, not its data.
|
|
154
|
+
- **`notification`** — scheduled delivery: question alerts (`mb alert`) and dashboard subscriptions (`mb subscription`). Choosing between them, the two schedule/recipient contracts, channel prerequisites, testing a send.
|
|
153
155
|
- **`transform`** — transform body JSON, create + run-with-wait, run inspection, tags, jobs.
|
|
154
156
|
- **`document`** — Metabase documents (TipTap body, embedding cards).
|
|
155
157
|
- **`git-sync`** — round-tripping content to/from a git remote.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-sync
|
|
3
|
-
description: Round-trip Metabase content (cards, dashboards, transforms, snippets, collections) between an instance and a git remote via `mb git-sync …` — status, dirty / has-remote-changes checks, import, export (with branch guard), branches, stash, add/remove a collection from sync. Load when the user wants to "import the latest changes", "export to git", "git sync", "dirty check", "stash before pulling", "add a collection to sync", or anything `mb git-sync …`.
|
|
3
|
+
description: Round-trip Metabase content (cards, dashboards, transforms, snippets, collections, Library-published table/field metadata) between an instance and a git remote via `mb git-sync …` — status, dirty / has-remote-changes checks, import, export (with branch guard), branches, stash, add/remove a collection from sync. Load when the user wants to "import the latest changes", "export to git", "push my changes to the repo", "open a PR with my Metabase changes", "git sync", "dirty check", "stash before pulling", "add a collection to sync", or anything `mb git-sync …`.
|
|
4
4
|
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# git-sync (representations ↔ instance)
|
|
8
8
|
|
|
9
|
-
Metabase content (cards, dashboards, transforms, snippets, collections, …) can live in a git repo as YAML and round-trip in and out of a Metabase instance via the `git-sync` verbs. The instance is configured with a `remote-sync-*` settings block (URL, branch, token, type read-only/read-write); the CLI drives the sync tasks against `/api/ee/remote-sync/*`. Only collections flagged for sync serialize; everything else is local-only.
|
|
9
|
+
Metabase content (cards, dashboards, transforms, snippets, collections, …) can live in a git repo as YAML and round-trip in and out of a Metabase instance via the `git-sync` verbs. The instance is configured with a `remote-sync-*` settings block (URL, branch, token, type read-only/read-write); the CLI drives the sync tasks against `/api/ee/remote-sync/*`. Only collections flagged for sync serialize; everything else is local-only. Table and field metadata round-trips too, for Library-published tables in a flagged collection — see "Published table metadata" below.
|
|
10
|
+
|
|
11
|
+
The repo and the instance are two ends of the same state; what "push my changes" means depends on where the changes were made. If they were made **in the instance** (CLI verbs against a read-write instance — cards edited, transforms created, tables published, metadata written), "push my changes" / "save this to the repo" / "open a PR with these changes" means driving the instance's export to a branch (`stash` or `create-branch` + `export`) and opening the PR from that branch — not reconstructing the changes as files. If the workflow is **repo-first** (content YAML edited in the repo, the instance imports it), plain `git` against the repo is the way — but only in the serialized layout already there: files in paths or formats the serializer doesn't own are invisible to Metabase and never apply on import.
|
|
10
12
|
|
|
11
13
|
This skill covers the import/export workflow. Flag conventions and auth setup live in `core` (`mb skills get core`). To author content YAML by hand: the per-resource clause and settings shapes mirror the API form — query bodies follow the `mbql` skill, `visualization_settings` follow the `visualization` skill — except the portable YAML uses **name-based** references (e.g. `[Sample Database, PUBLIC, ORDERS, TOTAL]`, and entity-ids for cross-entity FKs) where the API form uses numeric ids. For the on-disk folder layout, model new files on what the synced repo already contains.
|
|
12
14
|
|
|
@@ -126,13 +128,26 @@ mb setting set remote-sync-type '"read-write"' --profile <n>
|
|
|
126
128
|
|
|
127
129
|
(`setting set` parses the value as strict JSON — mind the inner double quotes; see `core`.) The server also rejects switching to `:read-only` while the Remote Sync collection is dirty; export or `--force` import first if you're going the other way.
|
|
128
130
|
|
|
129
|
-
**Verifying the result.**
|
|
131
|
+
**Verifying the result.** `mb git-sync status --profile <n> --json` lists the flagged collections under `synced_collections`, and `mb collection get <id> --json` shows the per-collection `is_remote_synced` flag.
|
|
132
|
+
|
|
133
|
+
## Published table metadata (Library) and sync scope
|
|
134
|
+
|
|
135
|
+
Table and field metadata — table/field descriptions, semantic types (`type/PK`, `type/FK`), FK targets, plus segments and measures on the table — serializes for **Library-published tables only**, under `databases/<db>/schemas/<schema>/tables/<table>/…` in the repo. Eligibility is two-gated: the table must be published (`mb library publish`), **and** the Library collection holding it must itself carry `is_remote_synced: true`. An ordinary warehouse table, or a transform's target table that isn't published, never serializes — a transform's YAML carries only the transform definition (query, target, description), not the output table's field metadata.
|
|
136
|
+
|
|
137
|
+
The classic trap: publish tables, write field metadata, then `git-sync dirty` comes back empty and nothing lands in the repo. That does not mean git-sync can't carry table metadata — it means the Library collection isn't in the sync scope, so nothing was eligible for dirty-tracking when the writes happened. Check the scope (`synced_collections` in `status`), then:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
mb library get --profile <n> --json # Library Data collection id
|
|
141
|
+
mb git-sync add-collection <library-data-id> --profile <n>
|
|
142
|
+
mb git-sync stash --new-branch <branch> -m "..." --profile <n> # or create-branch + export
|
|
143
|
+
```
|
|
130
144
|
|
|
131
|
-
|
|
132
|
-
- The Metabase Admin UI's Remote Sync page renders the per-collection toggles.
|
|
145
|
+
Flagging the collection records it for the next export, which serializes its current content — including already-published tables and their field metadata. `mb library publish` prints a reminder when the target collection is outside the sync scope on an instance with a configured remote.
|
|
133
146
|
|
|
134
147
|
## Don't (git-sync-specific)
|
|
135
148
|
|
|
149
|
+
- Don't turn instance-side changes into hand-written repo files. When the changes were made against the instance, export them (`stash` / `create-branch` + `export`) and PR the exported branch; reconstructing them as YAML by hand — or pushing files in paths/formats the serializer doesn't own — produces content that never applies on import, and pushing behind Metabase's back races its own sync tasks. Hand-editing YAML belongs to the repo-first workflow, in the serialized layout the repo already uses.
|
|
150
|
+
- Don't conclude from an empty `dirty` list that a change type isn't tracked. Dirty-tracking only records changes to _eligible_ objects; the usual cause is scope (the collection isn't flagged — see "Published table metadata"), not capability. Check `synced_collections` in `status` before concluding.
|
|
136
151
|
- Don't run `git-sync import --force` or `git-sync export --force` without explicit user confirmation. Both are lossy — `--force` import discards instance-side work, `--force` export overwrites the remote branch.
|
|
137
152
|
- Don't drive `git-sync` against a Metabase instance that doesn't have remote-sync configured — every verb returns an error pointing at the missing `remote-sync-*` settings. To check: `mb setting get remote-sync-url --profile <n> --json`.
|
|
138
153
|
- Don't author content directly via `card create` / `transform create` and then assume `git-sync export` will commit it cleanly — the instance and repo can drift if you mix direct API writes with sync-tracked changes. If you do, follow direct writes immediately with `git-sync export -m "..."` to keep them in step.
|