@metabase/cli 0.2.1 → 0.2.2-alpha.extract-api-client.27e2241
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 +4 -1715
- package/dist/add-collection-B3Ty8SzB.mjs +36 -0
- package/dist/alert-DT-ee7yf.mjs +23 -0
- package/dist/alerts-Bf2RH_p_.mjs +43 -0
- package/dist/{append-BgDaYJW9.mjs → append-DFzQRPMd.mjs} +7 -12
- package/dist/{archive-DFCu5hVG.mjs → archive-4tmm946K.mjs} +8 -17
- package/dist/{archive-Bv59HYsU.mjs → archive-B6eXiyER.mjs} +7 -13
- package/dist/{archive-BM9HjJHQ.mjs → archive-BxNPHxOY.mjs} +7 -13
- package/dist/archive-ByvA49Kz.mjs +34 -0
- package/dist/{archive-Oh1iZu2y.mjs → archive-C7w49Grr.mjs} +7 -16
- package/dist/{archive-EoYl-lS-.mjs → archive-Cd29QC0c.mjs} +7 -13
- package/dist/{archive-BZpXnQSu.mjs → archive-ChORH5JH.mjs} +7 -13
- package/dist/archive-CwAdlv63.mjs +33 -0
- package/dist/{archive-BncW2dGw.mjs → archive-Dr9Xnx_Z.mjs} +7 -15
- package/dist/{archive-BCPA0HhV.mjs → archive-gid9Y09v.mjs} +8 -17
- package/dist/{archive-Czzktgho.mjs → archive-lQqs13Uz.mjs} +7 -13
- package/dist/auth-Dltxua89.mjs +19 -0
- package/dist/{body-DKcQw7G5.mjs → body-Cur4NJt9.mjs} +5 -8
- package/dist/{body-flags-CgHgJBRC.mjs → body-flags-AqKpN01Y.mjs} +1 -2
- package/dist/{branches-CCmtr3W8.mjs → branches-DchlyU0i.mjs} +7 -13
- package/dist/{cancel-72y10-Rg.mjs → cancel-BMQa5R1Z.mjs} +5 -12
- package/dist/{cancel-task-CGwdz91O.mjs → cancel-task-C5CU1pxU.mjs} +6 -10
- package/dist/card-CHI2bmds.mjs +24 -0
- package/dist/{card-B8G5jQQT.mjs → card-DZxRmver.mjs} +21 -48
- package/dist/card-zyUkr2nS.mjs +44 -0
- package/dist/cards-SccWvRQD.mjs +34 -0
- package/dist/cli.mjs +675 -81
- package/dist/client-BqhzKdLM.mjs +2194 -0
- package/dist/collection-CGoVLvcD.mjs +58 -0
- package/dist/collection-CY0AB99E.mjs +20 -0
- package/dist/{collection-CFoLPrY5.mjs → collection-CfulNRBG.mjs} +20 -63
- package/dist/{collection-namespace-C7mr_a8H.mjs → collection-namespace-GwydWBF3.mjs} +3 -5
- package/dist/{create-pTnveKkm.mjs → create-BNQ_DytP.mjs} +8 -15
- package/dist/{create-QYctYGSa.mjs → create-BOLwWt8Q.mjs} +9 -17
- package/dist/{create-C_WqoOf5.mjs → create-Beh-2uoN.mjs} +8 -15
- package/dist/{create-C3DThF9E.mjs → create-C79vErX0.mjs} +9 -20
- package/dist/{create-nXlnVzXl.mjs → create-CAQV2g6V.mjs} +9 -16
- package/dist/{create-E7XhC0gJ.mjs → create-CAWytBE5.mjs} +9 -17
- package/dist/{create-CPEOSxIH.mjs → create-CCh_LyW9.mjs} +8 -15
- package/dist/{create-7pbf5Wu0.mjs → create-CD008jdE.mjs} +13 -28
- package/dist/create-CHQx7jq4.mjs +45 -0
- package/dist/create-DF4QtgDL.mjs +44 -0
- package/dist/{create-CaWFrPRU.mjs → create-DJmXXQoq.mjs} +10 -18
- package/dist/{create-Brh8WCa3.mjs → create-DV-Ln5Mo.mjs} +8 -15
- package/dist/create-branch-CYo6jZth.mjs +35 -0
- package/dist/{create-U_XDwsIX.mjs → create-i14Wv3Tj.mjs} +8 -15
- package/dist/{create-BDY38_Kr.mjs → create-tQbnuz-I.mjs} +8 -15
- package/dist/{create-DFyZCXQD.mjs → create-zeveFdnd.mjs} +6 -10
- package/dist/cron-LKRffEC-.mjs +5 -0
- package/dist/{csv-CR2qhmC6.mjs → csv-B2Jgb1GM.mjs} +7 -19
- package/dist/{current-task-MUHaiHIg.mjs → current-task-MpBFGttd.mjs} +7 -12
- package/dist/{dashboard-B-MTpfeS.mjs → dashboard-BCpSq_G-.mjs} +9 -60
- package/dist/dashboard-BHJBoaG7.mjs +33 -0
- package/dist/dashboard-CsIFFpzK.mjs +58 -0
- package/dist/database-B19qlLKZ.mjs +38 -0
- package/dist/database-C8G6ZKG0.mjs +26 -0
- package/dist/db-DsfojyeH.mjs +24 -0
- package/dist/{delete-B58Cng0p.mjs → delete-B8e01xAG.mjs} +6 -11
- package/dist/{delete-CW3dYmuT.mjs → delete-BApOjQvl.mjs} +6 -11
- package/dist/{delete-doa3R-c5.mjs → delete-Ck0q4Dzp.mjs} +6 -11
- package/dist/{delete-BKMOtpjs.mjs → delete-DFmX7jTp.mjs} +6 -11
- package/dist/{delete-BMa26SzX.mjs → delete-Ob06PPie.mjs} +6 -11
- package/dist/{delete-runtime-_YOukDRC.mjs → delete-runtime-D74s6vhu.mjs} +6 -13
- package/dist/{delete-table-D_tjBZPd.mjs → delete-table-DuyhGrvA.mjs} +6 -11
- package/dist/{dependencies-BR_4um7h.mjs → dependencies-Bj3QrGIm.mjs} +10 -13
- package/dist/dirty-DNYoM6Bp.mjs +31 -0
- package/dist/document-BbskZPTT.mjs +19 -0
- package/dist/{document-CL4ML5FN.mjs → document-Cd2mmqCp.mjs} +5 -33
- package/dist/document-D6OybtP2.mjs +29 -0
- package/dist/{eid-DSOk7Khb.mjs → eid-WTZmDdsr.mjs} +12 -54
- package/dist/eid-translation-zEHtr5Oc.mjs +35 -0
- package/dist/{embedding-CKdw8q7p.mjs → embedding-i-KqpefC.mjs} +2 -4
- package/dist/events-Bn7jh5lP.mjs +39 -0
- package/dist/export-BjfoZRDJ.mjs +66 -0
- package/dist/field-BPsNa-TO.mjs +80 -0
- package/dist/{field-DsXTeqBy.mjs → field-Cr2DPUG9.mjs} +2 -81
- package/dist/field-Zau6Hc6X.mjs +18 -0
- package/dist/fields-CBBa-Prp.mjs +34 -0
- package/dist/{get-CHAH_F37.mjs → get-00lyLv6R.mjs} +7 -11
- package/dist/{get-T85qZgnv.mjs → get-B7sMgsFs.mjs} +7 -11
- package/dist/get-B_xdF1kq.mjs +31 -0
- package/dist/{get-DT2MOZ8L.mjs → get-ByBOq30r.mjs} +7 -11
- package/dist/get-Bz99dAxK.mjs +35 -0
- package/dist/get-C2-Q3iQ5.mjs +31 -0
- package/dist/get-CDJFVvhj.mjs +35 -0
- package/dist/get-CDMGbgrh.mjs +31 -0
- package/dist/get-CnbUCzDM.mjs +31 -0
- package/dist/{get-DtvzjfjG.mjs → get-CvI--9S_.mjs} +16 -12
- package/dist/{get-CH_JmPc-.mjs → get-DRvsATp-.mjs} +7 -11
- package/dist/{get-CgZ5qjQx.mjs → get-DY03Azx9.mjs} +6 -10
- package/dist/get-DYO1kywc.mjs +32 -0
- package/dist/{get-BSdOE5J4.mjs → get-D_h-G9bn.mjs} +7 -11
- package/dist/get-DdsoHaKH.mjs +31 -0
- package/dist/{get-DRK5-UdU.mjs → get-DkWO0EI0.mjs} +7 -11
- package/dist/{get-43Smv3RI.mjs → get-Dmj9Ygz1.mjs} +7 -17
- package/dist/get-DmpB6J9g.mjs +31 -0
- package/dist/{get-nZW0W7Ui.mjs → get-Dn9ZiSZr.mjs} +8 -16
- package/dist/{get-run-Cwia6e0d.mjs → get-run-Cnux9ln0.mjs} +7 -11
- package/dist/git-sync-BDnxPrqU.mjs +104 -0
- package/dist/git-sync-DxD_ng48.mjs +136 -0
- package/dist/git-sync-MQQYRYLg.mjs +28 -0
- package/dist/{group-CILtQqCL.mjs → group-DBM87IgC.mjs} +2 -4
- package/dist/has-remote-changes-C684Redh.mjs +35 -0
- package/dist/import-Rmmttboo.mjs +56 -0
- package/dist/{input-DzbvxKYU.mjs → input-DH9i67x_.mjs} +6 -11
- package/dist/{is-dirty-CHbUJ-bh.mjs → is-dirty-DYeJYhBz.mjs} +4 -8
- package/dist/{items-DN63mjpF.mjs → items-CQlPXBXE.mjs} +13 -29
- package/dist/key-BEhqIzIQ.mjs +10 -0
- package/dist/{library-DF2qx50w.mjs → library-Bsm5KsFF.mjs} +6 -9
- package/dist/library-ClLgrAXy.mjs +19 -0
- package/dist/library-DfYAT2Ep.mjs +21 -0
- package/dist/{list-n2PY3OIx.mjs → list-B4hJuMhA.mjs} +11 -27
- package/dist/list-B8nAGwP4.mjs +48 -0
- package/dist/list-BOET6zhP.mjs +36 -0
- package/dist/list-BP3MPq-M.mjs +36 -0
- package/dist/list-BpFp9Wre.mjs +28 -0
- package/dist/list-BtkWNtvY.mjs +34 -0
- package/dist/list-BtmsNOEn.mjs +28 -0
- package/dist/list-BzVTHOoH.mjs +28 -0
- package/dist/list-C5Zs8nrb.mjs +28 -0
- package/dist/list-CKK-s3Ty.mjs +28 -0
- package/dist/list-CMpoc2TN.mjs +70 -0
- package/dist/list-CNUiF8Z7.mjs +28 -0
- package/dist/list-CQDprvW0.mjs +39 -0
- package/dist/{list-C7TqbWG1.mjs → list-CQwOgIlj.mjs} +10 -24
- package/dist/list-DE9FM957.mjs +28 -0
- package/dist/{list-De82cXvn.mjs → list-DF2rvoO1.mjs} +22 -14
- package/dist/list-DMKDsBRd.mjs +38 -0
- package/dist/{list-B3HoSfYj.mjs → list-UhpKG6_m.mjs} +15 -15
- package/dist/{login-jy9rbYev.mjs → login-CGHeSjlP.mjs} +47 -52
- package/dist/{logout-CRbk1SuY.mjs → logout-DAxOlbv4.mjs} +7 -12
- package/dist/measure-4P0bOlZ3.mjs +29 -0
- package/dist/measure-BsYv0p26.mjs +22 -0
- package/dist/{measure-S9WszHre.mjs → measure-CtfjqJFP.mjs} +3 -30
- package/dist/network-error-CEb9ymDW.mjs +423 -0
- package/dist/notification-DaA4bBHW.mjs +138 -0
- package/dist/notification-Fcq1fIPw.mjs +67 -0
- package/dist/{parameter-BZ6y-Gfs.mjs → parameter-DUKR8NXo.mjs} +2 -11
- package/dist/{parameter-values-CcgcG3S5.mjs → parameter-values-CJTdqd8c.mjs} +17 -11
- package/dist/{parse-enum-C_2lGr3g.mjs → parse-enum-D0Jfm_Bz.mjs} +2 -4
- package/dist/{parse-id-CD54Chc5.mjs → parse-id-C_jmKFaa.mjs} +2 -4
- package/dist/{parse-ref-BLgKEEF-.mjs → parse-ref-ibKVB0J4.mjs} +3 -5
- package/dist/{path-CPMr1RJO.mjs → path-B5gHvrYL.mjs} +8 -9
- package/dist/{poll-DVF9EnEb.mjs → poll-75SvT7Zv.mjs} +11 -15
- package/dist/predicates-Bkm2IoeX.mjs +170 -0
- package/dist/preflight-YpPQo-sa.mjs +29 -0
- package/dist/{process-HDPKLS_z.mjs → process-DBOOrmET.mjs} +4 -6
- package/dist/publish-DijrxaCW.mjs +75 -0
- package/dist/pulse-BmsDenXm.mjs +133 -0
- package/dist/pulse-DhG6I9mI.mjs +57 -0
- package/dist/{query-Cxh9hmrP.mjs → query-BbqECzmF.mjs} +20 -44
- package/dist/{query-B3HDIsJ-.mjs → query-Dc__-KJH.mjs} +13 -24
- package/dist/{query-result-Drvjv7DD.mjs → query-result-DBDwk8TS.mjs} +4 -8
- package/dist/remove-collection-BOnxYvhj.mjs +36 -0
- package/dist/{render-CkuFkWlQ.mjs → render-CI93iP0I.mjs} +9 -11
- package/dist/{replace-BwvKDNur.mjs → replace-Cq4CxVa-.mjs} +7 -12
- package/dist/rescan-values-Dr_j416g.mjs +31 -0
- package/dist/revision-message-flag-8TCHYJV6.mjs +8 -0
- package/dist/run-C3DkS6NP.mjs +82 -0
- package/dist/{run-yrpSF6VL.mjs → run-DdGJ544X.mjs} +8 -18
- package/dist/runs-CUNWiidL.mjs +38 -0
- package/dist/runtime-DiKyBxOw.mjs +1007 -0
- package/dist/{schema-tables-ChBYz4mO.mjs → schema-tables-CV386fnC.mjs} +10 -14
- package/dist/{schemas-C2crnVML.mjs → schemas-DM-UqZBQ.mjs} +8 -12
- package/dist/search-DFBwUc6d.mjs +44 -0
- package/dist/{search-DnGEh6sZ.mjs → search-DmGScXs8.mjs} +14 -73
- package/dist/segment-BzUGM2Fr.mjs +22 -0
- package/dist/segment-C_gl5ag6.mjs +29 -0
- package/dist/{segment-BPb1H6DW.mjs → segment-OsrbUDzw.mjs} +3 -30
- package/dist/{selectors-Ll_TRxl5.mjs → selectors-DGDn0Hto.mjs} +4 -6
- package/dist/send-CVxxEpDB.mjs +49 -0
- package/dist/{set-tHsHXRGV.mjs → set-DFolTjbd.mjs} +10 -20
- package/dist/{set-active-qqDoBh_Z.mjs → set-active-BD8L1lPX.mjs} +7 -18
- package/dist/setting-CwRYgHYN.mjs +35 -0
- package/dist/setting-DTiLCW8g.mjs +22 -0
- package/dist/setting-DyhaeICs.mjs +17 -0
- package/dist/setup-BbDQN8fe.mjs +44 -0
- package/dist/setup-CO7QV-ao.mjs +21 -0
- package/dist/signal-CMd0EFUa.mjs +16 -0
- package/dist/{skills-rnvVgau4.mjs → skills--vK6J-e4.mjs} +4 -6
- package/dist/{skills-BKuiGkc1.mjs → skills-DTCrMcix.mjs} +13 -19
- package/dist/{snippet-DWiXNy4T.mjs → snippet-CyKAgIZl.mjs} +3 -32
- package/dist/snippet-DRwKb2x7.mjs +19 -0
- package/dist/snippet-oJLaYW9V.mjs +29 -0
- package/dist/stash-D0S4JmAz.mjs +61 -0
- package/dist/status-BhswxJL1.mjs +85 -0
- package/dist/{status-B5ar0uXc.mjs → status-hL1am-HV.mjs} +6 -8
- package/dist/subscription-_d5fB45F.mjs +22 -0
- package/dist/subscriptions-s4TF6Ax3.mjs +42 -0
- package/dist/summary-BytbDz6e.mjs +7 -0
- package/dist/summary-CsPvcUwW.mjs +31 -0
- package/dist/sync-schema-DaZ_MV-u.mjs +35 -0
- package/dist/sync-task-BACcrs0i.mjs +37 -0
- package/dist/{table-C3RIKiYM.mjs → table-CeeTJgQb.mjs} +4 -38
- package/dist/table-CsIJNPFf.mjs +37 -0
- package/dist/table-DYoC1kPn.mjs +18 -0
- package/dist/{timeline-BCTRThc-.mjs → timeline-CCSU2qOS.mjs} +2 -66
- package/dist/timeline-event-CNQdCTDg.mjs +19 -0
- package/dist/timeline-uDCmwGFT.mjs +66 -0
- package/dist/timeline-xlDbEKWg.mjs +21 -0
- package/dist/transform-Bs0EWijQ.mjs +28 -0
- package/dist/{transform-BVHYzWpK.mjs → transform-D3QX0jxA.mjs} +28 -74
- package/dist/transform-DoTyyXAu.mjs +74 -0
- package/dist/transform-job-50GZHhKH.mjs +37 -0
- package/dist/transform-job-BcLChRup.mjs +22 -0
- package/dist/{transform-job-CjsAXMej.mjs → transform-job-DRrK28IH.mjs} +14 -41
- package/dist/{transform-tag--IBQ-8Ij.mjs → transform-tag-CcElGp3C.mjs} +2 -21
- package/dist/transform-tag-Dmb4u3-Q.mjs +21 -0
- package/dist/transform-tag-_tgwlsdB.mjs +18 -0
- package/dist/{transforms-CLkv3e81.mjs → transforms-oU4zizbO.mjs} +10 -13
- package/dist/{tree-CB2IURsX.mjs → tree-CH-f3bjP.mjs} +6 -10
- package/dist/{unpublish-BkZldbkP.mjs → unpublish-BUl9RU5C.mjs} +7 -18
- package/dist/{update-B1dkPypu.mjs → update-BCS5FxKr.mjs} +11 -19
- package/dist/{update-8bTrglfc.mjs → update-BZPllQoR.mjs} +9 -16
- package/dist/{update-BacyVaLu.mjs → update-BiFDBcEH.mjs} +9 -16
- package/dist/update-BzMDeZiU.mjs +50 -0
- package/dist/{update-B4atxTx0.mjs → update-C4YJQFDS.mjs} +9 -16
- package/dist/{update-CGWTX1Z0.mjs → update-CHNSUHK4.mjs} +9 -16
- package/dist/{update-D7Ia9Qrt.mjs → update-CO4m4wH3.mjs} +10 -21
- package/dist/{update-CO9uCJxV.mjs → update-CVPAwJaH.mjs} +10 -18
- package/dist/{update-BHC3pwzR.mjs → update-CmDTljK-.mjs} +9 -16
- package/dist/{update-iY9WZqy0.mjs → update-CvOO8TED.mjs} +9 -17
- package/dist/{update-Cyxjg496.mjs → update-D-NE60AV.mjs} +9 -16
- package/dist/{update-D80GWpWl.mjs → update-Nfi44RrE.mjs} +10 -18
- package/dist/update-bD_Jh5-s.mjs +51 -0
- package/dist/{update-DajyWtBN.mjs → update-cYkvbqK8.mjs} +9 -16
- package/dist/update-dashcard-C3TuYO_k.mjs +50 -0
- package/dist/{update-BghbOcv6.mjs → update-tX9mKBN_.mjs} +10 -21
- package/dist/{upgrade-CXoNQ4FH.mjs → upgrade-DXMV4AyP.mjs} +37 -44
- package/dist/upload-CH632qW6.mjs +46 -0
- package/dist/upload-DAtxBBms.mjs +13 -0
- package/dist/upload-Dey_8rLf.mjs +13 -0
- package/dist/{uuid-D6dao_q4.mjs → uuid-BJkDWj9p.mjs} +5 -7
- package/dist/validate-BWchyW0V.mjs +1469 -0
- package/dist/{validate-query-D1N30wJ7.mjs → validate-query-DaGYSmpQ.mjs} +4 -5
- package/dist/{values-DIBAgSyz.mjs → values-Dxf1JEoA.mjs} +8 -13
- package/dist/verify-K96rItG5.mjs +89 -0
- package/dist/{wait-CW1OawkI.mjs → wait-DoMDH226.mjs} +10 -18
- package/dist/{wait-flags-DvNU8ahZ.mjs → wait-flags-DWEF9tX4.mjs} +14 -11
- package/dist/window-BkvrP0gB.mjs +64 -0
- package/package.json +5 -35
- package/skill-data/core/SKILL.md +31 -26
- package/skill-data/dashboard/SKILL.md +6 -2
- package/skill-data/document/SKILL.md +2 -2
- package/skill-data/git-sync/SKILL.md +20 -5
- package/skill-data/notification/SKILL.md +157 -0
- package/skill-data/transform/SKILL.md +1 -1
- package/.claude-plugin/marketplace.json +0 -19
- package/dist/add-collection-C8ZTPlIE.mjs +0 -9
- package/dist/add-collection-CUBn11d4.mjs +0 -60
- package/dist/auth-hgAnMUfi.mjs +0 -22
- package/dist/capabilities-DOTcPraV.mjs +0 -684
- package/dist/card-Ct-q_C4S.mjs +0 -26
- package/dist/cards-CYSyvN7Z.mjs +0 -38
- package/dist/cli.d.mts +0 -1
- package/dist/collection-K82kJWdj.mjs +0 -23
- package/dist/command-augment-D9pI9Vbh.mjs +0 -11
- package/dist/create-branch-DPE6itiS.mjs +0 -57
- package/dist/dashboard-B1iRSUBI.mjs +0 -35
- package/dist/database-CIbVSfua.mjs +0 -61
- package/dist/db-eWy7A-H3.mjs +0 -27
- package/dist/dirty-BKCg6oVN.mjs +0 -35
- package/dist/document-CVxhTnUD.mjs +0 -22
- package/dist/events-Dxm7me47.mjs +0 -44
- package/dist/export-Gb_wfZpt.mjs +0 -103
- package/dist/field-BTCw6voJ.mjs +0 -21
- package/dist/fields-hZeq6IF2.mjs +0 -37
- package/dist/get--rGDVyje.mjs +0 -35
- package/dist/get-7Np_G2je.mjs +0 -35
- package/dist/get-CP3lrIYi.mjs +0 -49
- package/dist/get-CuPCE_AG.mjs +0 -35
- package/dist/get-DB6Y9igl.mjs +0 -41
- package/dist/get-DWzMR8sn.mjs +0 -35
- package/dist/get-DZatHVdn.mjs +0 -38
- package/dist/git-sync-Cjrx2meo.mjs +0 -31
- package/dist/has-remote-changes-CIIib71u.mjs +0 -67
- package/dist/import-D9ID9Mz4.mjs +0 -94
- package/dist/is-dirty-DY5Zhsbk.mjs +0 -8
- package/dist/key-BnGRTX8U.mjs +0 -17
- package/dist/list-B1sdMz6m.mjs +0 -31
- package/dist/list-BSxMFDMR.mjs +0 -31
- package/dist/list-BeqcZVSn.mjs +0 -39
- package/dist/list-C0344yqi.mjs +0 -52
- package/dist/list-C5Ir-96z.mjs +0 -49
- package/dist/list-C6YpaUpC.mjs +0 -39
- package/dist/list-CQN2BpaW.mjs +0 -31
- package/dist/list-CY-jpBNE.mjs +0 -31
- package/dist/list-CkTsOOA7.mjs +0 -39
- package/dist/list-CvS68tLn.mjs +0 -31
- package/dist/list-KDHLmoUx.mjs +0 -31
- package/dist/list-MqqHcBvD.mjs +0 -31
- package/dist/measure-CPqisgyf.mjs +0 -25
- package/dist/paginate-CMqbqhMC.mjs +0 -49
- package/dist/poll-task-CpHGQOd5.mjs +0 -194
- package/dist/preflight-xhwEOHAt.mjs +0 -90
- package/dist/prompt-BgkWNgIR.mjs +0 -52
- package/dist/publish-xVPABwE8.mjs +0 -65
- package/dist/remove-collection-_a4uIlLB.mjs +0 -42
- package/dist/requests-qyh002pL.mjs +0 -96
- package/dist/rescan-values-Bd0Joerq.mjs +0 -40
- package/dist/resolve-Ct084wx3.mjs +0 -84
- package/dist/revision-message-flag-CHzX0cqV.mjs +0 -11
- package/dist/run-BfpKUjqL.mjs +0 -135
- package/dist/runs-D_08Ma08.mjs +0 -53
- package/dist/runtime-Ab96yYlM.mjs +0 -1695
- package/dist/segment-DyVTZSIM.mjs +0 -25
- package/dist/setting-B9xSyMf6.mjs +0 -20
- package/dist/setting-Cko6bE_w.mjs +0 -55
- package/dist/setup-CXGcyTuv.mjs +0 -71
- package/dist/snippet-C4h-GMUf.mjs +0 -22
- package/dist/stash-DxmpBS7x.mjs +0 -108
- package/dist/status-D5CR1SrS.mjs +0 -69
- package/dist/summary-BEEJl2O1.mjs +0 -40
- package/dist/sync-schema-B5HDpmrp.mjs +0 -54
- package/dist/table-DHmaW3Ec.mjs +0 -21
- package/dist/timeline-B0R6-dm8.mjs +0 -24
- package/dist/timeline-event-BVDTt-pM.mjs +0 -22
- package/dist/transform-Cq2_muWO.mjs +0 -31
- package/dist/transform-job-BpebgMnq.mjs +0 -25
- package/dist/transform-tag-B1xnFa9w.mjs +0 -21
- package/dist/update-dashcard-DLq7ihNO.mjs +0 -73
- package/dist/upload-D3eiApa0.mjs +0 -16
- package/dist/validate-Cqa14t7o.mjs +0 -1496
- package/dist/verify-DvhZWmS2.mjs +0 -79
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { f as errorMessage, n as AbortError, o as MetabaseError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
//#region ../client/src/signal.ts
|
|
3
|
+
function combineAborts(...signals) {
|
|
4
|
+
return AbortSignal.any(signals.filter((signal) => signal !== void 0));
|
|
5
|
+
}
|
|
6
|
+
function throwIfAborted(...signals) {
|
|
7
|
+
for (const signal of signals) if (signal?.aborted) throw abortReason(signal);
|
|
8
|
+
}
|
|
9
|
+
function abortReason(signal) {
|
|
10
|
+
const reason = signal.reason;
|
|
11
|
+
if (reason instanceof MetabaseError) return reason;
|
|
12
|
+
if (reason instanceof Error || typeof reason === "string") return new AbortError(errorMessage(reason) || "aborted");
|
|
13
|
+
return new AbortError("aborted");
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { throwIfAborted as n, combineAborts as t };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defineCommand } from "citty";
|
|
2
|
-
|
|
3
2
|
//#region src/commands/skills/index.ts
|
|
4
3
|
var skills_default = defineCommand({
|
|
5
4
|
meta: {
|
|
@@ -8,11 +7,10 @@ var skills_default = defineCommand({
|
|
|
8
7
|
},
|
|
9
8
|
default: "list",
|
|
10
9
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
path: () => import("./path-
|
|
10
|
+
list: () => import("./list-UhpKG6_m.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-CvI--9S_.mjs").then((m) => m.default),
|
|
12
|
+
path: () => import("./path-B5gHvrYL.mjs").then((m) => m.default)
|
|
14
13
|
}
|
|
15
14
|
});
|
|
16
|
-
|
|
17
15
|
//#endregion
|
|
18
|
-
export { skills_default as default };
|
|
16
|
+
export { skills_default as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as ValidationError, f as errorMessage, i as ConfigError, p as isFileNotFoundError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { O as readEnv, w as ENV_SKILLS_DIR } from "./cli.mjs";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
4
5
|
import { dirname, join, resolve } from "node:path";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { YAMLParseError, parse } from "yaml";
|
|
7
|
-
|
|
8
8
|
//#region src/runtime/yaml.ts
|
|
9
9
|
function parseYamlResult(input, schema, opts = {}) {
|
|
10
10
|
const sourcePrefix = opts.source ? `${opts.source}: ` : "";
|
|
@@ -34,7 +34,6 @@ function parseYamlResult(input, schema, opts = {}) {
|
|
|
34
34
|
value: parsed.data
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
|
|
38
37
|
//#endregion
|
|
39
38
|
//#region src/core/skills.ts
|
|
40
39
|
const Frontmatter = z.object({
|
|
@@ -57,7 +56,6 @@ const SKILL_DIR_NAMES = ["skills", "skill-data"];
|
|
|
57
56
|
const SKILL_MD_FILENAME = "SKILL.md";
|
|
58
57
|
const SKILL_REFERENCES_DIR = "references";
|
|
59
58
|
const SKILL_TEMPLATES_DIR = "templates";
|
|
60
|
-
const SKILLS_DIR_ENV = "MB_SKILLS_DIR";
|
|
61
59
|
const FRONTMATTER_PREFIX_BYTES = 8192;
|
|
62
60
|
const FRONTMATTER_FENCE = "---";
|
|
63
61
|
function loadAllSkills() {
|
|
@@ -92,9 +90,9 @@ function availableSkillNames(all) {
|
|
|
92
90
|
return `available: ${names.length === 0 ? "none" : names.join(", ")}`;
|
|
93
91
|
}
|
|
94
92
|
function resolveSkillDirs() {
|
|
95
|
-
const override =
|
|
93
|
+
const override = readEnv(ENV_SKILLS_DIR);
|
|
96
94
|
if (override !== void 0 && override !== "") {
|
|
97
|
-
if (!isDirectory(override)) throw new ConfigError(`${
|
|
95
|
+
if (!isDirectory(override)) throw new ConfigError(`${ENV_SKILLS_DIR} points at ${override}, which is not a directory`);
|
|
98
96
|
return [resolve(override)];
|
|
99
97
|
}
|
|
100
98
|
const root = findPackageRoot();
|
|
@@ -102,8 +100,7 @@ function resolveSkillDirs() {
|
|
|
102
100
|
return SKILL_DIR_NAMES.map((name) => join(root, name)).filter(isDirectory);
|
|
103
101
|
}
|
|
104
102
|
function findPackageRoot() {
|
|
105
|
-
|
|
106
|
-
let dir = dirname(here);
|
|
103
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
107
104
|
while (true) {
|
|
108
105
|
for (const name of SKILL_DIR_NAMES) if (isDirectory(join(dir, name))) return dir;
|
|
109
106
|
const parent = dirname(dir);
|
|
@@ -118,7 +115,7 @@ function discoverSkills(dirs) {
|
|
|
118
115
|
try {
|
|
119
116
|
entries = readdirSync(dir);
|
|
120
117
|
} catch (error) {
|
|
121
|
-
if (
|
|
118
|
+
if (isFileNotFoundError(error)) continue;
|
|
122
119
|
throw error;
|
|
123
120
|
}
|
|
124
121
|
for (const entryName of entries) {
|
|
@@ -137,8 +134,7 @@ function discoverSkills(dirs) {
|
|
|
137
134
|
return skills;
|
|
138
135
|
}
|
|
139
136
|
function readFrontmatterFromSkill(skillDir) {
|
|
140
|
-
const
|
|
141
|
-
const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
|
|
137
|
+
const prefix = readFilePrefix(join(skillDir, SKILL_MD_FILENAME), FRONTMATTER_PREFIX_BYTES);
|
|
142
138
|
if (prefix === null) return null;
|
|
143
139
|
return parseFrontmatter(prefix);
|
|
144
140
|
}
|
|
@@ -147,7 +143,7 @@ function readFilePrefix(path, maxBytes) {
|
|
|
147
143
|
try {
|
|
148
144
|
fd = openSync(path, "r");
|
|
149
145
|
} catch (error) {
|
|
150
|
-
if (
|
|
146
|
+
if (isFileNotFoundError(error)) return null;
|
|
151
147
|
throw error;
|
|
152
148
|
}
|
|
153
149
|
try {
|
|
@@ -161,11 +157,10 @@ function readFilePrefix(path, maxBytes) {
|
|
|
161
157
|
function parseFrontmatter(content) {
|
|
162
158
|
const trimmed = content.trimStart();
|
|
163
159
|
if (!trimmed.startsWith(FRONTMATTER_FENCE)) return null;
|
|
164
|
-
const afterOpening = trimmed.slice(
|
|
160
|
+
const afterOpening = trimmed.slice(3);
|
|
165
161
|
const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
|
|
166
162
|
if (closingIndex < 0) return null;
|
|
167
|
-
const
|
|
168
|
-
const result = parseYamlResult(block, Frontmatter);
|
|
163
|
+
const result = parseYamlResult(afterOpening.slice(0, closingIndex), Frontmatter);
|
|
169
164
|
if (!result.ok) return null;
|
|
170
165
|
return result.value;
|
|
171
166
|
}
|
|
@@ -205,7 +200,7 @@ function isDirectory(path) {
|
|
|
205
200
|
try {
|
|
206
201
|
return statSync(path).isDirectory();
|
|
207
202
|
} catch (error) {
|
|
208
|
-
if (
|
|
203
|
+
if (isFileNotFoundError(error)) return false;
|
|
209
204
|
throw error;
|
|
210
205
|
}
|
|
211
206
|
}
|
|
@@ -213,10 +208,9 @@ function isFile(path) {
|
|
|
213
208
|
try {
|
|
214
209
|
return statSync(path).isFile();
|
|
215
210
|
} catch (error) {
|
|
216
|
-
if (
|
|
211
|
+
if (isFileNotFoundError(error)) return false;
|
|
217
212
|
throw error;
|
|
218
213
|
}
|
|
219
214
|
}
|
|
220
|
-
|
|
221
215
|
//#endregion
|
|
222
|
-
export {
|
|
216
|
+
export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n, selectSkillsByNames as o, loadAllSkills as r, SkillContent as t };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/domain/snippet.ts
|
|
2
|
+
//#region ../client/src/domain/snippet.ts
|
|
4
3
|
const Snippet = z.object({
|
|
5
4
|
id: z.number().int(),
|
|
6
5
|
name: z.string(),
|
|
@@ -21,34 +20,7 @@ const SnippetCompact = Snippet.pick({
|
|
|
21
20
|
archived: true,
|
|
22
21
|
collection_id: true
|
|
23
22
|
}).strip();
|
|
24
|
-
const
|
|
25
|
-
compactPick: SnippetCompact,
|
|
26
|
-
tableColumns: [
|
|
27
|
-
{
|
|
28
|
-
key: "id",
|
|
29
|
-
label: "ID"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
key: "name",
|
|
33
|
-
label: "Name"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
key: "description",
|
|
37
|
-
label: "Description"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
key: "collection_id",
|
|
41
|
-
label: "Collection"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
key: "archived",
|
|
45
|
-
label: "Archived"
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
};
|
|
49
|
-
const SNIPPET_NAME_PATTERN = /^(?!\s)[^}]*$/;
|
|
50
|
-
const SNIPPET_NAME_MESSAGE = "snippet names cannot include '}' or start with spaces";
|
|
51
|
-
const snippetName = z.string().regex(SNIPPET_NAME_PATTERN, SNIPPET_NAME_MESSAGE);
|
|
23
|
+
const snippetName = z.string().regex(/^(?!\s)[^}]*$/, "snippet names cannot include '}' or start with spaces");
|
|
52
24
|
const SnippetCreateInput = z.object({
|
|
53
25
|
name: snippetName,
|
|
54
26
|
content: z.string(),
|
|
@@ -62,6 +34,5 @@ const SnippetUpdateInput = z.object({
|
|
|
62
34
|
archived: z.boolean().nullable().optional(),
|
|
63
35
|
collection_id: z.number().int().positive().nullable().optional()
|
|
64
36
|
}).loose();
|
|
65
|
-
|
|
66
37
|
//#endregion
|
|
67
|
-
export {
|
|
38
|
+
export { SnippetUpdateInput as i, SnippetCompact as n, SnippetCreateInput as r, Snippet as t };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
+
//#region src/commands/snippet/index.ts
|
|
3
|
+
var snippet_default = defineCommandGroup({
|
|
4
|
+
name: "snippet",
|
|
5
|
+
description: "Manage Metabase native query snippets",
|
|
6
|
+
skills: [{
|
|
7
|
+
skill: "core",
|
|
8
|
+
purpose: "native-SQL snippets and body input"
|
|
9
|
+
}],
|
|
10
|
+
subCommands: {
|
|
11
|
+
list: () => import("./list-BOET6zhP.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-C2-Q3iQ5.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-BNQ_DytP.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-CHNSUHK4.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-ChORH5JH.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { snippet_default as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { n as SnippetCompact } from "./snippet-CyKAgIZl.mjs";
|
|
2
|
+
//#region src/output/views/snippet.ts
|
|
3
|
+
const snippetView = {
|
|
4
|
+
compactPick: SnippetCompact,
|
|
5
|
+
tableColumns: [
|
|
6
|
+
{
|
|
7
|
+
key: "id",
|
|
8
|
+
label: "ID"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
key: "name",
|
|
12
|
+
label: "Name"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
key: "description",
|
|
16
|
+
label: "Description"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
key: "collection_id",
|
|
20
|
+
label: "Collection"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
key: "archived",
|
|
24
|
+
label: "Archived"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { snippetView as t };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
|
|
2
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
3
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
4
|
+
import { c as SyncStashResult } from "./git-sync-BDnxPrqU.mjs";
|
|
5
|
+
import { n as parseWaitFlags, t as gitSyncWaitFlags } from "./wait-flags-DWEF9tX4.mjs";
|
|
6
|
+
import { s as syncStashView } from "./git-sync-DxD_ng48.mjs";
|
|
7
|
+
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-BACcrs0i.mjs";
|
|
8
|
+
//#region src/commands/git-sync/stash.ts
|
|
9
|
+
const DEFAULT_STASH_MESSAGE = "Stashed from mb CLI";
|
|
10
|
+
var stash_default = defineMetabaseCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: "stash",
|
|
13
|
+
description: "Export current Metabase state to a new branch on the git remote"
|
|
14
|
+
},
|
|
15
|
+
capabilities: {
|
|
16
|
+
minVersion: 60,
|
|
17
|
+
tokenFeature: "remote_sync"
|
|
18
|
+
},
|
|
19
|
+
args: {
|
|
20
|
+
...outputFlags,
|
|
21
|
+
...profileFlag,
|
|
22
|
+
...connectionFlags,
|
|
23
|
+
newBranch: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Branch to create and export to",
|
|
26
|
+
alias: "new-branch",
|
|
27
|
+
required: true
|
|
28
|
+
},
|
|
29
|
+
message: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Commit message",
|
|
32
|
+
alias: "m",
|
|
33
|
+
default: DEFAULT_STASH_MESSAGE
|
|
34
|
+
},
|
|
35
|
+
...gitSyncWaitFlags
|
|
36
|
+
},
|
|
37
|
+
outputSchema: SyncStashResult,
|
|
38
|
+
examples: ["mb git-sync stash --new-branch wip", "mb git-sync stash --new-branch wip -m \"work in progress\" --json"],
|
|
39
|
+
async run({ args, ctx, getClient }) {
|
|
40
|
+
const newBranch = args.newBranch.trim();
|
|
41
|
+
if (newBranch === "") throw new ConfigError("invalid new-branch: must not be blank");
|
|
42
|
+
const message = args.message.trim();
|
|
43
|
+
if (message === "") throw new ConfigError("invalid message: must not be blank");
|
|
44
|
+
const wait = parseWaitFlags(args);
|
|
45
|
+
const params = {
|
|
46
|
+
new_branch: newBranch,
|
|
47
|
+
message
|
|
48
|
+
};
|
|
49
|
+
if (wait.enabled) params.wait = taskPollOptions(wait.schedule);
|
|
50
|
+
const result = await (await getClient()).gitSync.stash(params);
|
|
51
|
+
if (!wait.enabled) {
|
|
52
|
+
renderSummary(result, syncStashView, `Started stash to branch "${newBranch}" (task #${result.task_id}).`, ctx);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const final = result.final ?? null;
|
|
56
|
+
renderSummary(result, syncStashView, final === null || final.status === "successful" ? `Stashed Metabase state to branch "${newBranch}" (task #${result.task_id}).` : formatSyncTask(final), ctx);
|
|
57
|
+
throwIfFailedTask(final, "stash");
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//#endregion
|
|
61
|
+
export { stash_default as default };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { r as Collection } from "./collection-CfulNRBG.mjs";
|
|
4
|
+
import { l as SyncTask } from "./git-sync-BDnxPrqU.mjs";
|
|
5
|
+
import { n as formatSyncTask } from "./sync-task-BACcrs0i.mjs";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
//#region src/commands/git-sync/status.ts
|
|
8
|
+
const SyncedCollection = Collection.pick({
|
|
9
|
+
id: true,
|
|
10
|
+
name: true
|
|
11
|
+
}).strip();
|
|
12
|
+
const SyncStatus = z.object({
|
|
13
|
+
branch: z.string().nullable(),
|
|
14
|
+
is_dirty: z.boolean(),
|
|
15
|
+
current_task: SyncTask.nullable(),
|
|
16
|
+
synced_collections: z.array(SyncedCollection)
|
|
17
|
+
});
|
|
18
|
+
const syncStatusView = {
|
|
19
|
+
compactPick: SyncStatus,
|
|
20
|
+
tableColumns: [
|
|
21
|
+
{
|
|
22
|
+
key: "branch",
|
|
23
|
+
label: "Branch"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "is_dirty",
|
|
27
|
+
label: "Dirty"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: "current_task",
|
|
31
|
+
label: "Current task"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: "synced_collections",
|
|
35
|
+
label: "Synced collections"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
var status_default = defineMetabaseCommand({
|
|
40
|
+
meta: {
|
|
41
|
+
name: "status",
|
|
42
|
+
description: "Show current git-sync state (branch, dirty, current task)"
|
|
43
|
+
},
|
|
44
|
+
capabilities: {
|
|
45
|
+
minVersion: 60,
|
|
46
|
+
tokenFeature: "remote_sync"
|
|
47
|
+
},
|
|
48
|
+
args: {
|
|
49
|
+
...outputFlags,
|
|
50
|
+
...profileFlag,
|
|
51
|
+
...connectionFlags
|
|
52
|
+
},
|
|
53
|
+
outputSchema: SyncStatus,
|
|
54
|
+
examples: ["mb git-sync status", "mb git-sync status --json"],
|
|
55
|
+
async run({ ctx, getClient }) {
|
|
56
|
+
const mb = await getClient();
|
|
57
|
+
const [branch, isDirty, currentTask, collections] = await Promise.all([
|
|
58
|
+
mb.gitSync.branch(),
|
|
59
|
+
mb.gitSync.isDirty(),
|
|
60
|
+
mb.gitSync.currentTask(),
|
|
61
|
+
mb.gitSync.syncedCollections()
|
|
62
|
+
]);
|
|
63
|
+
const syncedCollections = collections.data.map((collection) => ({
|
|
64
|
+
id: collection.id,
|
|
65
|
+
name: collection.name
|
|
66
|
+
}));
|
|
67
|
+
const summary = {
|
|
68
|
+
branch,
|
|
69
|
+
is_dirty: isDirty,
|
|
70
|
+
current_task: currentTask,
|
|
71
|
+
synced_collections: syncedCollections
|
|
72
|
+
};
|
|
73
|
+
const branchPart = branch === null ? "git-sync branch not set" : `Branch ${branch}`;
|
|
74
|
+
const dirtyPart = isDirty ? "Metabase has unsynced local changes" : "in sync with the remote";
|
|
75
|
+
const taskPart = currentTask === null ? "No task running." : formatSyncTask(currentTask);
|
|
76
|
+
const scopePart = formatSyncedCollections(syncedCollections);
|
|
77
|
+
renderSummary(summary, syncStatusView, `${branchPart} — ${dirtyPart}. ${taskPart} ${scopePart}`, ctx);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
function formatSyncedCollections(collections) {
|
|
81
|
+
if (collections.length === 0) return "No collections are marked for sync.";
|
|
82
|
+
return `Synced collections: ${collections.map((collection) => `${collection.name} (${collection.id})`).join(", ")}.`;
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
export { status_default as default };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { outputFlags, profileFlag, renderItem } from "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { F as outputFlags, I as profileFlag, o as renderItem } from "./cli.mjs";
|
|
2
|
+
import { A as ProbedUser, L as TokenFeatures, M as ProfileLastFailure, N as profileAuthMethod, P as ParsedVersion, c as resolveProfileName, j as ProfileAuthMethod, t as defineMetabaseCommand, w as readProfileRecord } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { s as displayUrl } from "./network-error-CEb9ymDW.mjs";
|
|
4
|
+
import { a as renderVersionTag, i as renderUserRole, n as renderTimestamp, r as renderUserName, t as renderAuthMethod } from "./render-CI93iP0I.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
|
|
7
6
|
//#region src/commands/auth/status.ts
|
|
8
7
|
const AuthStatus = z.object({
|
|
9
8
|
profile: z.string(),
|
|
@@ -11,7 +10,7 @@ const AuthStatus = z.object({
|
|
|
11
10
|
url: z.string().nullable(),
|
|
12
11
|
method: ProfileAuthMethod.nullable(),
|
|
13
12
|
user: ProbedUser.nullable(),
|
|
14
|
-
version:
|
|
13
|
+
version: ParsedVersion.nullable(),
|
|
15
14
|
tokenFeatures: TokenFeatures.nullable(),
|
|
16
15
|
lastProbedAt: z.iso.datetime().nullable(),
|
|
17
16
|
lastFailure: ProfileLastFailure.nullable()
|
|
@@ -101,6 +100,5 @@ var status_default = defineMetabaseCommand({
|
|
|
101
100
|
}, authStatusView, ctx);
|
|
102
101
|
}
|
|
103
102
|
});
|
|
104
|
-
|
|
105
103
|
//#endregion
|
|
106
|
-
export { status_default as default };
|
|
104
|
+
export { status_default as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { t as defineCommandGroup } from "./group-DBM87IgC.mjs";
|
|
2
|
+
//#region src/commands/subscription/index.ts
|
|
3
|
+
var subscription_default = defineCommandGroup({
|
|
4
|
+
name: "subscription",
|
|
5
|
+
description: "Manage Metabase dashboard subscriptions (scheduled dashboard delivery)",
|
|
6
|
+
skills: [{
|
|
7
|
+
skill: "notification",
|
|
8
|
+
purpose: "channel schedules, recipients, skip_if_empty, per-subscription filter values"
|
|
9
|
+
}, {
|
|
10
|
+
skill: "dashboard",
|
|
11
|
+
purpose: "the dashboard and dashcards a subscription delivers"
|
|
12
|
+
}],
|
|
13
|
+
subCommands: {
|
|
14
|
+
list: () => import("./list-B8nAGwP4.mjs").then((mod) => mod.default),
|
|
15
|
+
get: () => import("./get-DmpB6J9g.mjs").then((mod) => mod.default),
|
|
16
|
+
create: () => import("./create-DF4QtgDL.mjs").then((mod) => mod.default),
|
|
17
|
+
update: () => import("./update-BzMDeZiU.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-CwAdlv63.mjs").then((mod) => mod.default)
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { subscription_default as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, s as renderList } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-C_jmKFaa.mjs";
|
|
4
|
+
import { n as windowList } from "./window-BkvrP0gB.mjs";
|
|
5
|
+
import { t as pulseView } from "./pulse-DhG6I9mI.mjs";
|
|
6
|
+
import { SubscriptionListEnvelope } from "./list-B8nAGwP4.mjs";
|
|
7
|
+
//#region src/commands/dashboard/subscriptions.ts
|
|
8
|
+
var subscriptions_default = defineMetabaseCommand({
|
|
9
|
+
meta: {
|
|
10
|
+
name: "subscriptions",
|
|
11
|
+
description: "List subscriptions on a dashboard"
|
|
12
|
+
},
|
|
13
|
+
details: "Manage them with `mb subscription create|update|archive`, which take the subscription id printed here.",
|
|
14
|
+
capabilities: { minVersion: 58 },
|
|
15
|
+
args: {
|
|
16
|
+
...outputFlags,
|
|
17
|
+
...listFlags,
|
|
18
|
+
...profileFlag,
|
|
19
|
+
...connectionFlags,
|
|
20
|
+
archived: {
|
|
21
|
+
type: "boolean",
|
|
22
|
+
description: "Show archived subscriptions instead of active ones"
|
|
23
|
+
},
|
|
24
|
+
id: {
|
|
25
|
+
type: "positional",
|
|
26
|
+
description: "Dashboard id",
|
|
27
|
+
required: true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
outputSchema: SubscriptionListEnvelope,
|
|
31
|
+
examples: ["mb dashboard subscriptions 10", "mb dashboard subscriptions 10 --json"],
|
|
32
|
+
async run({ args, ctx, getClient }) {
|
|
33
|
+
const id = parseId(args.id);
|
|
34
|
+
const { data, total } = await (await getClient()).pulse.list({
|
|
35
|
+
dashboard_id: id,
|
|
36
|
+
archived: args.archived || void 0
|
|
37
|
+
});
|
|
38
|
+
renderList(windowList(data, ctx.range, total), pulseView, ctx);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { subscriptions_default as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/commands/alert/summary.ts
|
|
2
|
+
function describeAlert(verb, alert) {
|
|
3
|
+
if (alert.payload === null) return `${verb} alert ${alert.id}.`;
|
|
4
|
+
return `${verb} alert ${alert.id} on card ${alert.payload.card_id}.`;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { describeAlert as t };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, o as renderItem } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-C_jmKFaa.mjs";
|
|
4
|
+
import { a as FieldSummary } from "./field-Cr2DPUG9.mjs";
|
|
5
|
+
import { t as fieldSummaryView } from "./field-BPsNa-TO.mjs";
|
|
6
|
+
//#region src/commands/field/summary.ts
|
|
7
|
+
var summary_default = defineMetabaseCommand({
|
|
8
|
+
meta: {
|
|
9
|
+
name: "summary",
|
|
10
|
+
description: "Get the row count and distinct count for a field"
|
|
11
|
+
},
|
|
12
|
+
capabilities: { minVersion: 58 },
|
|
13
|
+
args: {
|
|
14
|
+
...outputFlags,
|
|
15
|
+
...profileFlag,
|
|
16
|
+
...connectionFlags,
|
|
17
|
+
id: {
|
|
18
|
+
type: "positional",
|
|
19
|
+
description: "Field id",
|
|
20
|
+
required: true
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
outputSchema: FieldSummary,
|
|
24
|
+
examples: ["mb field summary 100", "mb field summary 100 --json"],
|
|
25
|
+
async run({ args, ctx, getClient }) {
|
|
26
|
+
const id = parseId(args.id);
|
|
27
|
+
renderItem(await (await getClient()).field.summary(id), fieldSummaryView, ctx);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
//#endregion
|
|
31
|
+
export { summary_default as default };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { F as outputFlags, I as profileFlag, M as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-C_jmKFaa.mjs";
|
|
4
|
+
import { a as DatabaseSyncResult } from "./database-C8G6ZKG0.mjs";
|
|
5
|
+
import { t as databaseSyncResultView } from "./database-B19qlLKZ.mjs";
|
|
6
|
+
import { i as waitFlags, n as parseWaitFlags } from "./wait-flags-DWEF9tX4.mjs";
|
|
7
|
+
//#region src/commands/db/sync-schema.ts
|
|
8
|
+
var sync_schema_default = defineMetabaseCommand({
|
|
9
|
+
meta: {
|
|
10
|
+
name: "sync-schema",
|
|
11
|
+
description: "Trigger a manual schema sync for a database"
|
|
12
|
+
},
|
|
13
|
+
details: "Queues an async schema sync and returns immediately. Pass --wait to poll the database until its initial_sync_status reports `complete` (a database that has already finished its initial sync returns at once). To wait for a specific newly-materialized transform table to register, prefer `mb transform run <id> --sync`.",
|
|
14
|
+
capabilities: { minVersion: 58 },
|
|
15
|
+
args: {
|
|
16
|
+
...outputFlags,
|
|
17
|
+
...profileFlag,
|
|
18
|
+
...connectionFlags,
|
|
19
|
+
...waitFlags,
|
|
20
|
+
id: {
|
|
21
|
+
type: "positional",
|
|
22
|
+
description: "Database id",
|
|
23
|
+
required: true
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
outputSchema: DatabaseSyncResult,
|
|
27
|
+
examples: ["mb db sync-schema 1", "mb db sync-schema 1 --wait --json"],
|
|
28
|
+
async run({ args, ctx, getClient }) {
|
|
29
|
+
const id = parseId(args.id);
|
|
30
|
+
const wait = parseWaitFlags(args);
|
|
31
|
+
renderSummary(await (await getClient()).database.syncSchema(id, { wait: wait.enabled ? wait.schedule : void 0 }), databaseSyncResultView, wait.enabled ? `Schema sync for database ${id} complete.` : `Schema sync queued for database ${id}.`, ctx);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
//#endregion
|
|
35
|
+
export { sync_schema_default as default };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { d as isSyncTaskFailed, l as SyncTask } from "./git-sync-BDnxPrqU.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/commands/git-sync/sync-task.ts
|
|
4
|
+
const SyncTaskIdle = z.object({ status: z.literal("idle") });
|
|
5
|
+
const SyncTaskOrIdle = z.union([SyncTask, SyncTaskIdle]);
|
|
6
|
+
const syncTaskIdleView = {
|
|
7
|
+
compactPick: SyncTaskIdle,
|
|
8
|
+
tableColumns: [{
|
|
9
|
+
key: "status",
|
|
10
|
+
label: "Status"
|
|
11
|
+
}]
|
|
12
|
+
};
|
|
13
|
+
function taskPollOptions(schedule) {
|
|
14
|
+
return {
|
|
15
|
+
...schedule,
|
|
16
|
+
backoff: "exponential"
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function throwIfFailedTask(final, verb) {
|
|
20
|
+
if (final === null || !isSyncTaskFailed(final.status)) return;
|
|
21
|
+
const detail = final.error_message ? `: ${final.error_message}` : "";
|
|
22
|
+
throw new Error(`git-sync ${verb} ${final.status}${detail}`);
|
|
23
|
+
}
|
|
24
|
+
function formatSyncTask(task) {
|
|
25
|
+
const label = `${task.sync_task_type === "export" ? "Export" : "Import"} task #${task.id}`;
|
|
26
|
+
const detail = task.error_message ? `: ${task.error_message}` : "";
|
|
27
|
+
switch (task.status) {
|
|
28
|
+
case "running": return `${label} is running${task.progress === null ? "" : ` (${Math.round(task.progress * 100)}%)`}.`;
|
|
29
|
+
case "successful": return `${label} succeeded.`;
|
|
30
|
+
case "errored": return `${label} errored${detail}.`;
|
|
31
|
+
case "timed-out": return `${label} timed out${detail}.`;
|
|
32
|
+
case "conflict": return `${label} hit conflicts${detail}.`;
|
|
33
|
+
case "cancelled": return `${label} was cancelled.`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { throwIfFailedTask as a, taskPollOptions as i, formatSyncTask as n, syncTaskIdleView as r, SyncTaskOrIdle as t };
|