@metabase/cli 0.3.0 → 0.3.1-alpha.fix-transform-test-ee-path.a3ca6dd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-collection-B3Ty8SzB.mjs → add-collection-BEg-1pt8.mjs} +6 -9
- package/dist/{alert-DT-ee7yf.mjs → alert-CBwtJ3lE.mjs} +7 -7
- package/dist/{alerts-Bf2RH_p_.mjs → alerts-Bn9ZhFYK.mjs} +7 -7
- package/dist/{append-DFzQRPMd.mjs → append-F7kfyk0p.mjs} +6 -5
- package/dist/{archive-ByvA49Kz.mjs → archive-2VqBgcyE.mjs} +5 -5
- package/dist/{archive-4tmm946K.mjs → archive-3_KVbxIk.mjs} +4 -4
- package/dist/{archive-Cd29QC0c.mjs → archive-7tZyaUWv.mjs} +4 -4
- package/dist/{archive-Dr9Xnx_Z.mjs → archive-Bonv-Hcf.mjs} +6 -6
- package/dist/{archive-C7w49Grr.mjs → archive-BzEvapLz.mjs} +6 -6
- package/dist/{archive-CwAdlv63.mjs → archive-CAwDiQWt2.mjs} +6 -6
- package/dist/{archive-lQqs13Uz.mjs → archive-CE-RKcle.mjs} +6 -6
- package/dist/{archive-B6eXiyER.mjs → archive-Da3-hnRM.mjs} +4 -4
- package/dist/{archive-gid9Y09v.mjs → archive-IBHOtOMk.mjs} +4 -4
- package/dist/{archive-BxNPHxOY.mjs → archive-TBo05bZZ.mjs} +6 -6
- package/dist/{archive-ChORH5JH.mjs → archive-k79AXZhh.mjs} +4 -4
- package/dist/{auth-Dltxua89.mjs → auth-CLZuUSzL.mjs} +5 -5
- package/dist/{body-Cur4NJt9.mjs → body-Q8iNnt-X.mjs} +3 -3
- package/dist/{branches-DchlyU0i.mjs → branches-CjMIMKse.mjs} +4 -7
- package/dist/{cancel-BMQa5R1Z.mjs → cancel-H4vYr5Jv.mjs} +4 -4
- package/dist/{cancel-task-C5CU1pxU.mjs → cancel-task-p09LCbgs.mjs} +5 -8
- package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
- package/dist/card-DlVb10D3.mjs +24 -0
- package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
- package/dist/{cards-SccWvRQD.mjs → cards-DDG6RObF.mjs} +7 -7
- package/dist/cli.mjs +567 -68
- package/dist/client-toDDqakD.mjs +4093 -0
- package/dist/{collection-CfulNRBG.mjs → collection-BxdPxD38.mjs} +1 -1
- package/dist/{collection-CGoVLvcD.mjs → collection-DYM0p3Xl.mjs} +1 -1
- package/dist/{collection-namespace-GwydWBF3.mjs → collection-namespace-DDI9-HgU.mjs} +2 -2
- package/dist/collection-p_sficxo.mjs +20 -0
- package/dist/content-translation-BrHOrmj9.mjs +5 -0
- package/dist/content-translation-DcTEH_d7.mjs +12 -0
- package/dist/{create-CAWytBE5.mjs → create-BLxdMJgQ.mjs} +5 -5
- package/dist/{create-BNQ_DytP.mjs → create-BPN1cX7b.mjs} +4 -4
- package/dist/{create-CHQx7jq4.mjs → create-BjCpsMQM.mjs} +5 -5
- package/dist/{create-CD008jdE.mjs → create-BovrhBQn.mjs} +12 -8
- package/dist/{create-DV-Ln5Mo.mjs → create-CVCPD-1F.mjs} +4 -4
- package/dist/{create-DJmXXQoq.mjs → create-CVPGOx7u2.mjs} +8 -8
- package/dist/{create-Beh-2uoN.mjs → create-Chs5c8vx.mjs} +6 -6
- package/dist/{create-BOLwWt8Q.mjs → create-D04fl6ec.mjs} +5 -5
- package/dist/{create-C79vErX0.mjs → create-D5mN20oE.mjs} +7 -7
- package/dist/{create-DF4QtgDL.mjs → create-D88Im3X22.mjs} +6 -6
- package/dist/{create-tQbnuz-I.mjs → create-DQfOV9Sm.mjs} +6 -6
- package/dist/{create-CCh_LyW9.mjs → create-DWU4j22P.mjs} +4 -4
- package/dist/create-DjP2yUyn.mjs +34 -0
- package/dist/{create-CAQV2g6V.mjs → create-Dk6Zm3ZH.mjs} +7 -7
- package/dist/{create-zeveFdnd.mjs → create-DkmeJGMy.mjs} +5 -8
- package/dist/{create-i14Wv3Tj.mjs → create-TQr3briq.mjs} +4 -4
- package/dist/{create-branch-CYo6jZth.mjs → create-branch-Bs6BlkgQ.mjs} +5 -9
- package/dist/{csv-B2Jgb1GM.mjs → csv-BsN6FmY-.mjs} +6 -5
- package/dist/{current-task-MpBFGttd.mjs → current-task-cCmLLVcv.mjs} +5 -8
- package/dist/{dashboard-BHJBoaG7.mjs → dashboard-CpIEKEgu.mjs} +10 -10
- package/dist/{dashboard-BCpSq_G-.mjs → dashboard-D0hwTC-f.mjs} +12 -2
- package/dist/{dashboard-CsIFFpzK.mjs → dashboard-DgK81azj.mjs} +1 -1
- package/dist/{database-B19qlLKZ.mjs → database-C3E9PZSx.mjs} +1 -1
- package/dist/{database-C8G6ZKG0.mjs → database-JtHTqSpq.mjs} +1 -1
- package/dist/{db-DsfojyeH.mjs → db-BbvcmfWM.mjs} +7 -7
- package/dist/{delete-B8e01xAG.mjs → delete-C4_rcfNu.mjs} +5 -5
- package/dist/delete-CLdDYdYG.mjs +44 -0
- package/dist/{delete-DFmX7jTp.mjs → delete-D13SLwhr.mjs} +5 -5
- package/dist/{delete-Ob06PPie.mjs → delete-D3-jMLu5.mjs} +5 -5
- package/dist/{delete-BApOjQvl.mjs → delete-DLirF5iq.mjs} +5 -5
- package/dist/{delete-Ck0q4Dzp.mjs → delete-JBjvxdIU.mjs} +5 -5
- package/dist/{delete-runtime-D74s6vhu.mjs → delete-runtime-BKEzJn22.mjs} +1 -2
- package/dist/{delete-table-DuyhGrvA.mjs → delete-table-Gwk7JL5c.mjs} +5 -5
- package/dist/{dependencies-Bj3QrGIm.mjs → dependencies-B7vl9Ovb.mjs} +7 -7
- package/dist/{dirty-DNYoM6Bp.mjs → dirty-CIZeASXG.mjs} +6 -9
- package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
- package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
- package/dist/document-ceJW4VuL.mjs +19 -0
- package/dist/download-B-krJch0.mjs +25 -0
- package/dist/{eid-WTZmDdsr.mjs → eid-C0D92gZW.mjs} +4 -5
- package/dist/{events-Bn7jh5lP.mjs → events-CuLeaey6.mjs} +5 -5
- package/dist/{export-BjfoZRDJ.mjs → export-DeuLpt3x.mjs} +7 -10
- package/dist/{field-Zau6Hc6X.mjs → field-B8Hndt4p.mjs} +5 -5
- package/dist/{field-Cr2DPUG9.mjs → field-CcN4oZy6.mjs} +16 -1
- package/dist/{field-BPsNa-TO.mjs → field-fDtIrY6D.mjs} +1 -1
- package/dist/{fields-CBBa-Prp.mjs → fields-CAchmFh4.mjs} +7 -7
- package/dist/{get-CDJFVvhj.mjs → get-BH3Tgfgf.mjs} +4 -4
- package/dist/{get-CDMGbgrh.mjs → get-BJOxfbDP.mjs} +4 -4
- package/dist/{get-B_xdF1kq.mjs → get-BOjTqIMx.mjs} +6 -6
- package/dist/{get-D_h-G9bn.mjs → get-C1BPEbyl.mjs} +6 -6
- package/dist/{get-Dmj9Ygz1.mjs → get-C8dcHjd6.mjs} +6 -6
- package/dist/{get-DkWO0EI0.mjs → get-CArTALOt.mjs} +6 -6
- package/dist/get-CMCAgpxn.mjs +93 -0
- package/dist/{get-CnbUCzDM.mjs → get-CjDHpz6A.mjs} +4 -4
- package/dist/{get-ByBOq30r.mjs → get-ClNkea9I.mjs} +6 -6
- package/dist/{get-DRvsATp-.mjs → get-CvAMxfPD.mjs} +6 -6
- package/dist/{get-B7sMgsFs.mjs → get-D8qaSSEH.mjs} +4 -4
- package/dist/{get-00lyLv6R.mjs → get-DCvnNk3f.mjs} +6 -6
- package/dist/{get-DY03Azx9.mjs → get-DEwfm3Yl.mjs} +5 -8
- package/dist/{get-C2-Q3iQ5.mjs → get-DXWrGwWH.mjs} +4 -4
- package/dist/get-DbXTkB4u.mjs +32 -0
- package/dist/{get-DYO1kywc.mjs → get-DvF9oooq.mjs} +5 -5
- package/dist/{get-DdsoHaKH.mjs → get-d055CJ1T.mjs} +4 -4
- package/dist/{get-Bz99dAxK.mjs → get-kBTeBtLe.mjs} +6 -6
- package/dist/{get-DmpB6J9g.mjs → get-ohue3YrV2.mjs} +6 -6
- package/dist/{get-run-Cnux9ln0.mjs → get-run-X6zhp0dW.mjs} +6 -6
- package/dist/{get-Dn9ZiSZr.mjs → get-wIZrb7oN.mjs} +6 -6
- package/dist/git-sync-BkTmSgdD.mjs +28 -0
- package/dist/{git-sync-BDnxPrqU.mjs → git-sync-BwBRmEhE.mjs} +18 -1
- package/dist/{git-sync-DxD_ng48.mjs → git-sync-TjX1r_wF.mjs} +1 -1
- package/dist/{group-DBM87IgC.mjs → group-YQQ5GIcP.mjs} +2 -2
- package/dist/{has-remote-changes-C684Redh.mjs → has-remote-changes-zCtdEGs-.mjs} +5 -8
- package/dist/{import-Rmmttboo.mjs → import-DkAy_Xi8.mjs} +7 -10
- package/dist/{input-DH9i67x_.mjs → input-DEvkIjGr.mjs} +1 -1
- package/dist/{is-dirty-DYeJYhBz.mjs → is-dirty-Dfk2Xf-W.mjs} +3 -6
- package/dist/{items-CQlPXBXE.mjs → items-CiSBrc9d.mjs} +7 -7
- package/dist/{key-BEhqIzIQ.mjs → key-PYetuQ13.mjs} +1 -1
- package/dist/library-BPIzb3K_.mjs +81 -0
- package/dist/{library-Bsm5KsFF.mjs → library-FBj2Je-M.mjs} +5 -5
- package/dist/{library-DfYAT2Ep.mjs → library-PGCfm0UA.mjs} +1 -1
- package/dist/list-9CJczyF5.mjs +60 -0
- package/dist/{list-DE9FM957.mjs → list-B6tDzQsv.mjs} +4 -4
- package/dist/{list-BtkWNtvY.mjs → list-BDJkJc8s.mjs} +7 -7
- package/dist/{list-BzVTHOoH.mjs → list-Br0g0oDR.mjs} +6 -6
- package/dist/{list-CNUiF8Z7.mjs → list-C9-2J0Nu.mjs} +6 -6
- package/dist/{list-B4hJuMhA.mjs → list-CGjdrAhT.mjs} +7 -7
- package/dist/{list-BtmsNOEn.mjs → list-CHOJQ1uR.mjs} +4 -4
- package/dist/{list-CKK-s3Ty.mjs → list-CK4S_aDK.mjs} +4 -4
- package/dist/{list-C5Zs8nrb.mjs → list-CYONHM9n.mjs} +6 -6
- package/dist/{list-CQwOgIlj.mjs → list-CrwbvMEG.mjs} +6 -6
- package/dist/{list-BOET6zhP.mjs → list-D6WZmnG_.mjs} +4 -4
- package/dist/{list-DMKDsBRd.mjs → list-DD_tjCmP.mjs} +7 -7
- package/dist/{list-DF2rvoO1.mjs → list-Dqv3nOEe.mjs} +14 -13
- package/dist/{list-CQDprvW0.mjs → list-Hjsg2N8L.mjs} +7 -7
- package/dist/{list-CMpoc2TN.mjs → list-M4Twal0d.mjs} +5 -5
- package/dist/{list-BpFp9Wre.mjs → list-UbzhJFFn.mjs} +4 -4
- package/dist/list-W5y4079U.mjs +35 -0
- package/dist/{list-BP3MPq-M.mjs → list-f5HIVoLN.mjs} +4 -4
- package/dist/{list-B8nAGwP4.mjs → list-uCAP4vmQ.mjs} +6 -6
- package/dist/{login-CGHeSjlP.mjs → login-CIzUMkf3.mjs} +15 -12
- package/dist/{logout-DAxOlbv4.mjs → logout-CRm_AaoF.mjs} +3 -4
- package/dist/{measure-BsYv0p26.mjs → measure-DPXeIN18.mjs} +6 -6
- package/dist/{notification-Fcq1fIPw.mjs → notification-DVrLkjFT.mjs} +1 -1
- package/dist/{parameter-DUKR8NXo.mjs → parameter-Celg0wZa.mjs} +1 -1
- package/dist/{parameter-values-CJTdqd8c.mjs → parameter-values-rOHoy3k0.mjs} +5 -6
- package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
- package/dist/{parse-id-C_jmKFaa.mjs → parse-id-CYZAIB58.mjs} +1 -1
- package/dist/{parse-ref-ibKVB0J4.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
- package/dist/{path-B5gHvrYL.mjs → path-D9_unWc1.mjs} +5 -5
- package/dist/{poll-75SvT7Zv.mjs → poll-CZeXepUQ.mjs} +2 -2
- package/dist/{preflight-YpPQo-sa.mjs → preflight-BIxRV-bm.mjs} +3 -4
- package/dist/{process-DBOOrmET.mjs → process-CTrfxxaC.mjs} +1 -1
- package/dist/{publish-DijrxaCW.mjs → publish-N509vd0U.mjs} +9 -9
- package/dist/{pulse-BmsDenXm.mjs → pulse-Dz0ocv0l.mjs} +1 -1
- package/dist/{pulse-DhG6I9mI.mjs → pulse-x0gFxWfG.mjs} +2 -2
- package/dist/{query-Dc__-KJH.mjs → query-JvMjF22L.mjs} +9 -10
- package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
- package/dist/{query-BbqECzmF.mjs → query-yh5Wkfmc.mjs} +11 -18
- package/dist/{remove-collection-BOnxYvhj.mjs → remove-collection-B0E0dlZt.mjs} +6 -9
- package/dist/{render-CI93iP0I.mjs → render-Tlz6OCMU.mjs} +13 -2
- package/dist/{replace-Cq4CxVa-.mjs → replace-BwbYo6-2.mjs} +6 -5
- package/dist/{rescan-values-Dr_j416g.mjs → rescan-values-BiMPb5Z5.mjs} +6 -6
- package/dist/{run-DdGJ544X.mjs → run-B9aA1aNI.mjs} +26 -14
- package/dist/run-D37ntUQo.mjs +50 -0
- package/dist/{run-C3DkS6NP.mjs → run-Dbh3nvzF.mjs} +6 -6
- package/dist/{runs-CUNWiidL.mjs → runs-BuUzKR-x.mjs} +7 -7
- package/dist/{runtime-DiKyBxOw.mjs → runtime-CwhhhwcB.mjs} +946 -246
- package/dist/{schema-tables-CV386fnC.mjs → schema-tables-9PvvygPu.mjs} +7 -7
- package/dist/{schemas-DM-UqZBQ.mjs → schemas-DqkQI39t.mjs} +5 -5
- package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
- package/dist/{search-DmGScXs8.mjs → search-BjAwR-oP.mjs} +6 -6
- package/dist/{segment-BzUGM2Fr.mjs → segment-1nBcugv8.mjs} +6 -6
- package/dist/{selectors-DGDn0Hto.mjs → selectors-DFNdyhPn.mjs} +3 -3
- package/dist/{send-CVxxEpDB.mjs → send-D4tYN3aN.mjs} +4 -4
- package/dist/{set-DFolTjbd.mjs → set-D_Mh2eVO.mjs} +5 -5
- package/dist/{set-active-BD8L1lPX.mjs → set-active-jY5VZsO8.mjs} +5 -5
- package/dist/{setting-DyhaeICs.mjs → setting-9ULb5wjN.mjs} +4 -4
- package/dist/{setup-BbDQN8fe.mjs → setup-DMaIuuCV.mjs} +4 -4
- package/dist/{signal-CMd0EFUa.mjs → signal-k7cm5N6h.mjs} +11 -2
- package/dist/skill-list-Bucy7UE2.mjs +76 -0
- package/dist/{skills--vK6J-e4.mjs → skills-Dyfqgobg.mjs} +3 -3
- package/dist/skills-PjjRtYqi.mjs +351 -0
- package/dist/snippet-DNoTIGAs.mjs +19 -0
- package/dist/{stash-D0S4JmAz.mjs → stash-C6BEM6_u.mjs} +7 -11
- package/dist/{status-BhswxJL1.mjs → status-DiP093Vm.mjs} +11 -9
- package/dist/{status-hL1am-HV.mjs → status-wAg5ajzM.mjs} +12 -11
- package/dist/stream-McixcoUl.mjs +7 -0
- package/dist/{subscription-_d5fB45F.mjs → subscription-CEeI0pSr.mjs} +6 -6
- package/dist/{subscriptions-s4TF6Ax3.mjs → subscriptions-B9cMNuIS.mjs} +7 -7
- package/dist/{summary-CsPvcUwW.mjs → summary-D0NP2NoT.mjs} +6 -6
- package/dist/{sync-schema-DaZ_MV-u.mjs → sync-schema-BgJ6KEqa.mjs} +7 -7
- package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
- package/dist/{table-DYoC1kPn.mjs → table-9bTG6zSa.mjs} +5 -5
- package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
- package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
- package/dist/timeline-Ck53UgDh.mjs +21 -0
- package/dist/{timeline-event-CNQdCTDg.mjs → timeline-event-POmQ2TD2.mjs} +6 -6
- package/dist/transform-BC39AgQF.mjs +28 -0
- package/dist/{transform-DoTyyXAu.mjs → transform-CtqB1WYo.mjs} +2 -2
- package/dist/{transform-D3QX0jxA.mjs → transform-DiW7bREn.mjs} +68 -5
- package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
- package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
- package/dist/transform-job-D-zUFmZU.mjs +22 -0
- package/dist/{transform-tag-_tgwlsdB.mjs → transform-tag-CP7FRU5G.mjs} +5 -5
- package/dist/transform-test-BjjCQ2xm.mjs +169 -0
- package/dist/transform-test-CKNQS_kC.mjs +16 -0
- package/dist/transform-test-gzDcbypy.mjs +25 -0
- package/dist/{transforms-oU4zizbO.mjs → transforms-DDSNP4eL.mjs} +7 -7
- package/dist/{tree-CH-f3bjP.mjs → tree-CAnMS2dm.mjs} +4 -5
- package/dist/{unpublish-BUl9RU5C.mjs → unpublish-DF1XQMWJ.mjs} +4 -7
- package/dist/{update-BZPllQoR.mjs → update-BS1yiwOO.mjs} +5 -5
- package/dist/{update-CO4m4wH3.mjs → update-Bb89y-0M.mjs} +8 -8
- package/dist/{update-C4YJQFDS.mjs → update-BbiVvdm1.mjs} +7 -7
- package/dist/{update-BCS5FxKr.mjs → update-BcdLQu7-.mjs} +9 -9
- package/dist/{update-cYkvbqK8.mjs → update-BjcWwrPc.mjs} +5 -5
- package/dist/{update-tX9mKBN_.mjs → update-BoJJ6Gel.mjs} +9 -9
- package/dist/{update-CHNSUHK4.mjs → update-C09GGTjN.mjs} +5 -5
- package/dist/{update-BzMDeZiU.mjs → update-C33R41eM.mjs} +7 -7
- package/dist/{update-CmDTljK-.mjs → update-C6KQZMDF.mjs} +7 -7
- package/dist/{update-bD_Jh5-s.mjs → update-CFqdElFO.mjs} +6 -6
- package/dist/{update-CVPAwJaH.mjs → update-CHsXoUJQ.mjs} +6 -6
- package/dist/update-CaJO1rWk.mjs +41 -0
- package/dist/{update-CvOO8TED.mjs → update-CmXGZPCR.mjs} +7 -7
- package/dist/{update-D-NE60AV.mjs → update-DFJSD3_l.mjs} +7 -7
- package/dist/{update-Nfi44RrE.mjs → update-DOeBAoul.mjs} +6 -6
- package/dist/{update-BiFDBcEH.mjs → update-DiowA7ud.mjs} +5 -5
- package/dist/{update-dashcard-C3TuYO_k.mjs → update-dashcard-DSL6Bogg.mjs} +7 -7
- package/dist/{upgrade-DXMV4AyP.mjs → upgrade-CBxr91bH.mjs} +6 -8
- package/dist/upload-C3z5ZaXA.mjs +24 -0
- package/dist/upload-CSHcnonI.mjs +13 -0
- package/dist/upload-DTyF-p8X.mjs +39 -0
- package/dist/upload-Do2PBSeH.mjs +23 -0
- package/dist/{uuid-BJkDWj9p.mjs → uuid-CwEbjDp8.mjs} +3 -4
- package/dist/{validate-BWchyW0V.mjs → validate-EAB-1EkK.mjs} +1 -1
- package/dist/{validate-query-DaGYSmpQ.mjs → validate-query-CQG86147.mjs} +2 -3
- package/dist/{values-Dxf1JEoA.mjs → values-69IZEVXu.mjs} +6 -6
- package/dist/{verify-K96rItG5.mjs → verify-Dg5YBI0l.mjs} +3 -18
- package/dist/{wait-DoMDH226.mjs → wait-DVXEJXd3.mjs} +7 -10
- package/dist/{wait-flags-DWEF9tX4.mjs → wait-flags-CkRgnfww.mjs} +2 -2
- package/dist/{window-BkvrP0gB.mjs → window-DSb1tqSe.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +31 -14
- package/skill-data/dashboard/SKILL.md +2 -2
- package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
- package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
- package/skill-data/document/SKILL.md +4 -1
- package/skill-data/git-sync/SKILL.md +5 -0
- package/skill-data/mbql/SKILL.md +1 -1
- package/skill-data/mbql/references/operators.md +20 -15
- package/skill-data/metadata/SKILL.md +1 -1
- package/skill-data/metadata/references/semantic-types.md +7 -1
- package/skill-data/native-sql/references/template-tags.md +6 -2
- package/skill-data/notification/SKILL.md +7 -1
- package/skill-data/transform/SKILL.md +75 -3
- package/skill-data/transform-test-plan/SKILL.md +171 -0
- package/skill-data/transform-test-plan/references/checklist.md +81 -0
- package/skill-data/transform-test-plan/references/checks.md +259 -0
- package/skill-data/visualization/SKILL.md +11 -3
- package/skill-data/visualization/references/settings.md +6 -4
- package/skills/metabase-cli/SKILL.md +1 -1
- package/dist/card-CHI2bmds.mjs +0 -24
- package/dist/client-BqhzKdLM.mjs +0 -2194
- package/dist/collection-CY0AB99E.mjs +0 -20
- package/dist/document-BbskZPTT.mjs +0 -19
- package/dist/get-CvI--9S_.mjs +0 -80
- package/dist/git-sync-MQQYRYLg.mjs +0 -28
- package/dist/library-ClLgrAXy.mjs +0 -19
- package/dist/list-UhpKG6_m.mjs +0 -98
- package/dist/network-error-CEb9ymDW.mjs +0 -423
- package/dist/predicates-Bkm2IoeX.mjs +0 -170
- package/dist/skills-DTCrMcix.mjs +0 -216
- package/dist/snippet-DRwKb2x7.mjs +0 -19
- package/dist/timeline-xlDbEKWg.mjs +0 -21
- package/dist/transform-Bs0EWijQ.mjs +0 -28
- package/dist/transform-job-BcLChRup.mjs +0 -22
- package/dist/upload-CH632qW6.mjs +0 -46
- package/dist/upload-Dey_8rLf.mjs +0 -13
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { A as ENV_SKILLS_DIR, P as readEnv, Q as ConfigError, at as ValidationError, ot as errorMessage, r as FEATURE_NAMES, s as isFeatureName, st as isFileNotFoundError } from "./cli.mjs";
|
|
2
|
+
import { Z as checkFeatures, n as parseCsv } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
|
+
import { dirname, join, resolve } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { YAMLParseError, parse } from "yaml";
|
|
8
|
+
//#region src/runtime/yaml.ts
|
|
9
|
+
function parseYaml(input, schema, opts = {}) {
|
|
10
|
+
const result = parseYamlResult(input, schema, opts);
|
|
11
|
+
if (!result.ok) throw result.error;
|
|
12
|
+
return result.value;
|
|
13
|
+
}
|
|
14
|
+
function parseYamlResult(input, schema, opts = {}) {
|
|
15
|
+
const sourcePrefix = opts.source ? `${opts.source}: ` : "";
|
|
16
|
+
let raw;
|
|
17
|
+
try {
|
|
18
|
+
raw = parse(input);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
if (error instanceof YAMLParseError) return {
|
|
21
|
+
ok: false,
|
|
22
|
+
error: new ConfigError(`${sourcePrefix}invalid YAML: ${error.message}`)
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
ok: false,
|
|
26
|
+
error: new ConfigError(`${sourcePrefix}invalid YAML: ${errorMessage(error)}`)
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const parsed = schema.safeParse(raw);
|
|
30
|
+
if (!parsed.success) return {
|
|
31
|
+
ok: false,
|
|
32
|
+
error: new ValidationError(`${sourcePrefix}value did not match expected schema`, {
|
|
33
|
+
source: opts.source ?? "<input>",
|
|
34
|
+
zodIssues: parsed.error.issues
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
ok: true,
|
|
39
|
+
value: parsed.data
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/core/skills.ts
|
|
44
|
+
const Frontmatter = z.object({
|
|
45
|
+
name: z.string().min(1),
|
|
46
|
+
description: z.string().default(""),
|
|
47
|
+
hidden: z.boolean().default(false),
|
|
48
|
+
requires: z.array(z.string()).default([])
|
|
49
|
+
}).loose();
|
|
50
|
+
const SkillExtraFile = z.object({
|
|
51
|
+
path: z.string(),
|
|
52
|
+
content: z.string()
|
|
53
|
+
});
|
|
54
|
+
const SkillContent = z.object({
|
|
55
|
+
name: z.string(),
|
|
56
|
+
description: z.string(),
|
|
57
|
+
body: z.string(),
|
|
58
|
+
references: z.array(SkillExtraFile),
|
|
59
|
+
templates: z.array(SkillExtraFile)
|
|
60
|
+
});
|
|
61
|
+
const SKILL_DIR_NAMES = ["skills", "skill-data"];
|
|
62
|
+
const SKILL_MD_FILENAME = "SKILL.md";
|
|
63
|
+
const SKILL_REFERENCES_DIR = "references";
|
|
64
|
+
const SKILL_TEMPLATES_DIR = "templates";
|
|
65
|
+
const FRONTMATTER_PREFIX_BYTES = 8192;
|
|
66
|
+
const FRONTMATTER_FENCE = "---";
|
|
67
|
+
const COMMENT_START = "<!--";
|
|
68
|
+
const COMMENT_END = "-->";
|
|
69
|
+
const MARKER_KEYWORD = "requires";
|
|
70
|
+
const MARKER_OPEN_KEYWORD = `${MARKER_KEYWORD}:`;
|
|
71
|
+
const MARKER_CLOSE_KEYWORD = `/${MARKER_KEYWORD}`;
|
|
72
|
+
const FENCE_RUN = /^(?:`{3,}|~{3,})/;
|
|
73
|
+
function loadAllSkills() {
|
|
74
|
+
return discoverSkills(resolveSkillDirs());
|
|
75
|
+
}
|
|
76
|
+
function loadVisibleSkills() {
|
|
77
|
+
return loadAllSkills().filter((s) => !s.hidden);
|
|
78
|
+
}
|
|
79
|
+
function selectForProfile(skills, profile) {
|
|
80
|
+
if (profile === null) return {
|
|
81
|
+
skills: [...skills],
|
|
82
|
+
unavailable: null
|
|
83
|
+
};
|
|
84
|
+
const available = [];
|
|
85
|
+
const unavailable = [];
|
|
86
|
+
for (const skill of skills) {
|
|
87
|
+
const failure = checkFeatures(skill.requires, profile);
|
|
88
|
+
if (failure === null) available.push(skill);
|
|
89
|
+
else unavailable.push({
|
|
90
|
+
name: skill.name,
|
|
91
|
+
failure
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
skills: available,
|
|
96
|
+
unavailable
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function findSkillByName(all, name) {
|
|
100
|
+
const hit = all.find((s) => s.name === name);
|
|
101
|
+
if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
|
|
102
|
+
return hit;
|
|
103
|
+
}
|
|
104
|
+
function selectSkillsByNames(all, requested) {
|
|
105
|
+
if (requested.length === 0) throw new ConfigError("no skill names provided");
|
|
106
|
+
const byName = new Map(all.map((s) => [s.name, s]));
|
|
107
|
+
const missing = [];
|
|
108
|
+
const found = [];
|
|
109
|
+
for (const name of requested) {
|
|
110
|
+
const hit = byName.get(name);
|
|
111
|
+
if (hit === void 0) {
|
|
112
|
+
missing.push(name);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
found.push(hit);
|
|
116
|
+
}
|
|
117
|
+
if (missing.length > 0) throw new ConfigError(`unknown skill name(s): ${missing.join(", ")} (${availableSkillNames(all)})`);
|
|
118
|
+
return found;
|
|
119
|
+
}
|
|
120
|
+
function availableSkillNames(all) {
|
|
121
|
+
const names = all.filter((s) => !s.hidden).map((s) => s.name);
|
|
122
|
+
return `available: ${names.length === 0 ? "none" : names.join(", ")}`;
|
|
123
|
+
}
|
|
124
|
+
function resolveSkillDirs() {
|
|
125
|
+
const override = readEnv(ENV_SKILLS_DIR);
|
|
126
|
+
if (override !== void 0 && override !== "") {
|
|
127
|
+
if (!isDirectory(override)) throw new ConfigError(`${ENV_SKILLS_DIR} points at ${override}, which is not a directory`);
|
|
128
|
+
return [resolve(override)];
|
|
129
|
+
}
|
|
130
|
+
const root = findPackageRoot();
|
|
131
|
+
if (root === null) return [];
|
|
132
|
+
return SKILL_DIR_NAMES.map((name) => join(root, name)).filter(isDirectory);
|
|
133
|
+
}
|
|
134
|
+
function findPackageRoot() {
|
|
135
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
136
|
+
while (true) {
|
|
137
|
+
for (const name of SKILL_DIR_NAMES) if (isDirectory(join(dir, name))) return dir;
|
|
138
|
+
const parent = dirname(dir);
|
|
139
|
+
if (parent === dir) return null;
|
|
140
|
+
dir = parent;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function discoverSkills(dirs) {
|
|
144
|
+
const skills = [];
|
|
145
|
+
for (const dir of dirs) {
|
|
146
|
+
let entries;
|
|
147
|
+
try {
|
|
148
|
+
entries = readdirSync(dir);
|
|
149
|
+
} catch (error) {
|
|
150
|
+
if (isFileNotFoundError(error)) continue;
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
for (const entryName of entries) {
|
|
154
|
+
const skillDir = join(dir, entryName);
|
|
155
|
+
const fm = readFrontmatterFromSkill(skillDir);
|
|
156
|
+
if (fm === null) continue;
|
|
157
|
+
skills.push({
|
|
158
|
+
name: fm.name,
|
|
159
|
+
description: fm.description,
|
|
160
|
+
hidden: fm.hidden,
|
|
161
|
+
requires: parseFeatureNames(fm.requires, `skill ${fm.name}`),
|
|
162
|
+
dir: skillDir
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
167
|
+
return skills;
|
|
168
|
+
}
|
|
169
|
+
function readFrontmatterFromSkill(skillDir) {
|
|
170
|
+
const skillMd = join(skillDir, SKILL_MD_FILENAME);
|
|
171
|
+
const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
|
|
172
|
+
if (prefix === null) return null;
|
|
173
|
+
return parseFrontmatter(prefix, skillMd);
|
|
174
|
+
}
|
|
175
|
+
function readFilePrefix(path, maxBytes) {
|
|
176
|
+
let fd;
|
|
177
|
+
try {
|
|
178
|
+
fd = openSync(path, "r");
|
|
179
|
+
} catch (error) {
|
|
180
|
+
if (isFileNotFoundError(error)) return null;
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
const buffer = Buffer.alloc(maxBytes);
|
|
185
|
+
const bytesRead = readSync(fd, buffer, 0, maxBytes, 0);
|
|
186
|
+
return buffer.toString("utf8", 0, bytesRead);
|
|
187
|
+
} finally {
|
|
188
|
+
closeSync(fd);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function parseFrontmatter(content, source) {
|
|
192
|
+
const trimmed = content.trimStart();
|
|
193
|
+
if (!trimmed.startsWith(FRONTMATTER_FENCE)) throw new ConfigError(`${source}: missing frontmatter`);
|
|
194
|
+
const afterOpening = trimmed.slice(3);
|
|
195
|
+
const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
|
|
196
|
+
if (closingIndex < 0) throw new ConfigError(`${source}: unterminated frontmatter`);
|
|
197
|
+
return parseYaml(afterOpening.slice(0, closingIndex), Frontmatter, { source });
|
|
198
|
+
}
|
|
199
|
+
function readSkillContent(info, opts) {
|
|
200
|
+
const features = opts.profile === null ? null : opts.profile.features;
|
|
201
|
+
const body = resolveSections(readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8"), features, `skill ${info.name}`);
|
|
202
|
+
if (!opts.includeExtras) return {
|
|
203
|
+
name: info.name,
|
|
204
|
+
description: info.description,
|
|
205
|
+
body,
|
|
206
|
+
references: [],
|
|
207
|
+
templates: []
|
|
208
|
+
};
|
|
209
|
+
const references = collectExtraFiles(info.dir, SKILL_REFERENCES_DIR).map((file) => ({
|
|
210
|
+
path: file.path,
|
|
211
|
+
content: resolveSections(file.content, features, `skill ${info.name} (${file.path})`)
|
|
212
|
+
}));
|
|
213
|
+
return {
|
|
214
|
+
name: info.name,
|
|
215
|
+
description: info.description,
|
|
216
|
+
body,
|
|
217
|
+
references,
|
|
218
|
+
templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
function parseFeatureNames(names, where) {
|
|
222
|
+
const known = [];
|
|
223
|
+
const unknown = [];
|
|
224
|
+
for (const name of names) if (isFeatureName(name)) known.push(name);
|
|
225
|
+
else unknown.push(name);
|
|
226
|
+
if (unknown.length > 0) throw new ConfigError(`${where}: unknown feature in requires: ${unknown.join(", ")} (known: ${FEATURE_NAMES.join(", ")})`);
|
|
227
|
+
return known;
|
|
228
|
+
}
|
|
229
|
+
function resolveSections(text, features, where) {
|
|
230
|
+
const lines = text.split("\n");
|
|
231
|
+
const out = [];
|
|
232
|
+
let open = null;
|
|
233
|
+
let fence = null;
|
|
234
|
+
let collapseBlank = false;
|
|
235
|
+
for (const [index, line] of lines.entries()) {
|
|
236
|
+
const site = {
|
|
237
|
+
where,
|
|
238
|
+
lineNumber: index + 1
|
|
239
|
+
};
|
|
240
|
+
const trimmed = line.trim();
|
|
241
|
+
const opening = fence === null ? fenceRun(trimmed) : null;
|
|
242
|
+
if (fence !== null) {
|
|
243
|
+
if (closesFence(trimmed, fence)) fence = null;
|
|
244
|
+
} else if (opening !== null) fence = opening;
|
|
245
|
+
else {
|
|
246
|
+
const marker = parseMarker(trimmed);
|
|
247
|
+
if (marker === null && mentionsMarker(line)) throw markerError(trimmed, site);
|
|
248
|
+
if (marker !== null) {
|
|
249
|
+
assertOutsideTable(lines, index, where);
|
|
250
|
+
open = marker.kind === "open" ? openSection(marker, open, features, site) : closeSection(open, site);
|
|
251
|
+
collapseBlank = dropMarker(out, line, features);
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (collapseBlank) {
|
|
256
|
+
collapseBlank = false;
|
|
257
|
+
if (trimmed === "") continue;
|
|
258
|
+
}
|
|
259
|
+
if (open === null || open.met) out.push(line);
|
|
260
|
+
}
|
|
261
|
+
if (open !== null) throw new ConfigError(`${where}: requires section opened at line ${open.line} is never closed`);
|
|
262
|
+
return out.join("\n");
|
|
263
|
+
}
|
|
264
|
+
function dropMarker(out, marker, features) {
|
|
265
|
+
if (features === null) {
|
|
266
|
+
out.push(marker);
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return out.length === 0 || out[out.length - 1] === "";
|
|
270
|
+
}
|
|
271
|
+
function assertOutsideTable(lines, index, where) {
|
|
272
|
+
if (isTableRow(lines[index - 1]) || isTableRow(lines[index + 1])) throw new ConfigError(`${where}: a requires marker cannot sit inside a Markdown table (line ${index + 1})`);
|
|
273
|
+
}
|
|
274
|
+
function isTableRow(line) {
|
|
275
|
+
return line !== void 0 && line.trimStart().startsWith("|");
|
|
276
|
+
}
|
|
277
|
+
function fenceRun(trimmed) {
|
|
278
|
+
const match = FENCE_RUN.exec(trimmed);
|
|
279
|
+
return match === null ? null : match[0];
|
|
280
|
+
}
|
|
281
|
+
function closesFence(trimmed, fence) {
|
|
282
|
+
const run = fenceRun(trimmed);
|
|
283
|
+
return run !== null && run.startsWith(fence) && run === trimmed;
|
|
284
|
+
}
|
|
285
|
+
function openSection(marker, open, features, site) {
|
|
286
|
+
const { where, lineNumber } = site;
|
|
287
|
+
if (open !== null) throw new ConfigError(`${where}: nested requires section at line ${lineNumber} (opened at line ${open.line})`);
|
|
288
|
+
const named = parseFeatureNames(marker.names, `${where} line ${lineNumber}`);
|
|
289
|
+
if (named.length === 0) throw new ConfigError(`${where}: requires section at line ${lineNumber} names no feature`);
|
|
290
|
+
return {
|
|
291
|
+
line: lineNumber,
|
|
292
|
+
met: features === null || named.every((name) => features[name])
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function closeSection(open, site) {
|
|
296
|
+
if (open === null) throw new ConfigError(`${site.where}: requires section closed at line ${site.lineNumber} was never opened`);
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
function parseMarker(trimmed) {
|
|
300
|
+
if (!trimmed.startsWith(COMMENT_START) || !trimmed.endsWith(COMMENT_END)) return null;
|
|
301
|
+
const inner = trimmed.slice(4, -3).trim();
|
|
302
|
+
if (inner === MARKER_CLOSE_KEYWORD) return { kind: "close" };
|
|
303
|
+
if (inner.startsWith(MARKER_OPEN_KEYWORD)) return {
|
|
304
|
+
kind: "open",
|
|
305
|
+
names: parseCsv(inner.slice(MARKER_OPEN_KEYWORD.length))
|
|
306
|
+
};
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
function mentionsMarker(line) {
|
|
310
|
+
const at = line.indexOf(COMMENT_START);
|
|
311
|
+
if (at < 0) return false;
|
|
312
|
+
const inner = line.slice(at + 4).trimStart();
|
|
313
|
+
return (inner.startsWith("/") ? inner.slice(1) : inner).startsWith(MARKER_KEYWORD);
|
|
314
|
+
}
|
|
315
|
+
function markerError(trimmed, site) {
|
|
316
|
+
if (trimmed.startsWith(COMMENT_START) && trimmed.endsWith(">")) return new ConfigError(`${site.where}: malformed requires marker at line ${site.lineNumber} (expected \`<!-- requires: a, b -->\` or \`<!-- /requires -->\`)`);
|
|
317
|
+
return new ConfigError(`${site.where}: a requires marker must be on its own line (line ${site.lineNumber})`);
|
|
318
|
+
}
|
|
319
|
+
function collectExtraFiles(skillDir, subdirName) {
|
|
320
|
+
const subdir = join(skillDir, subdirName);
|
|
321
|
+
if (!isDirectory(subdir)) return [];
|
|
322
|
+
const entries = readdirSync(subdir).toSorted();
|
|
323
|
+
const out = [];
|
|
324
|
+
for (const entry of entries) {
|
|
325
|
+
const full = join(subdir, entry);
|
|
326
|
+
if (!isFile(full)) continue;
|
|
327
|
+
out.push({
|
|
328
|
+
path: `${subdirName}/${entry}`,
|
|
329
|
+
content: readFileSync(full, "utf8")
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
return out;
|
|
333
|
+
}
|
|
334
|
+
function isDirectory(path) {
|
|
335
|
+
try {
|
|
336
|
+
return statSync(path).isDirectory();
|
|
337
|
+
} catch (error) {
|
|
338
|
+
if (isFileNotFoundError(error)) return false;
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
function isFile(path) {
|
|
343
|
+
try {
|
|
344
|
+
return statSync(path).isFile();
|
|
345
|
+
} catch (error) {
|
|
346
|
+
if (isFileNotFoundError(error)) return false;
|
|
347
|
+
throw error;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
//#endregion
|
|
351
|
+
export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n, selectForProfile as o, loadAllSkills as r, selectSkillsByNames as s, SkillContent as t };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { t as defineCommandGroup } from "./group-YQQ5GIcP.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-D6WZmnG_.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-DXWrGwWH.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-BPN1cX7b.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-C09GGTjN.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-k79AXZhh.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { snippet_default as default };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-BACcrs0i.mjs";
|
|
1
|
+
import { H as outputFlags, Q as ConfigError, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { l as SyncStashResult } from "./git-sync-BwBRmEhE.mjs";
|
|
4
|
+
import { n as parseWaitFlags, t as gitSyncWaitFlags } from "./wait-flags-CkRgnfww.mjs";
|
|
5
|
+
import { s as syncStashView } from "./git-sync-TjX1r_wF.mjs";
|
|
6
|
+
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-BXeWuARG.mjs";
|
|
8
7
|
//#region src/commands/git-sync/stash.ts
|
|
9
8
|
const DEFAULT_STASH_MESSAGE = "Stashed from mb CLI";
|
|
10
9
|
var stash_default = defineMetabaseCommand({
|
|
@@ -12,10 +11,7 @@ var stash_default = defineMetabaseCommand({
|
|
|
12
11
|
name: "stash",
|
|
13
12
|
description: "Export current Metabase state to a new branch on the git remote"
|
|
14
13
|
},
|
|
15
|
-
|
|
16
|
-
minVersion: 60,
|
|
17
|
-
tokenFeature: "remote_sync"
|
|
18
|
-
},
|
|
14
|
+
requires: ["gitSync.stash"],
|
|
19
15
|
args: {
|
|
20
16
|
...outputFlags,
|
|
21
17
|
...profileFlag,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { r as Collection } from "./collection-
|
|
4
|
-
import {
|
|
5
|
-
import { n as formatSyncTask } from "./sync-task-
|
|
1
|
+
import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { r as Collection } from "./collection-BxdPxD38.mjs";
|
|
4
|
+
import { u as SyncTask } from "./git-sync-BwBRmEhE.mjs";
|
|
5
|
+
import { n as formatSyncTask } from "./sync-task-BXeWuARG.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
//#region src/commands/git-sync/status.ts
|
|
8
8
|
const SyncedCollection = Collection.pick({
|
|
@@ -41,10 +41,12 @@ var status_default = defineMetabaseCommand({
|
|
|
41
41
|
name: "status",
|
|
42
42
|
description: "Show current git-sync state (branch, dirty, current task)"
|
|
43
43
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
requires: [
|
|
45
|
+
"gitSync.branch",
|
|
46
|
+
"gitSync.isDirty",
|
|
47
|
+
"gitSync.currentTask",
|
|
48
|
+
"gitSync.syncedCollections"
|
|
49
|
+
],
|
|
48
50
|
args: {
|
|
49
51
|
...outputFlags,
|
|
50
52
|
...profileFlag,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as renderVersionTag, i as renderUserRole, n as renderTimestamp, r as renderUserName, t as renderAuthMethod } from "./render-CI93iP0I.mjs";
|
|
1
|
+
import { H as outputFlags, U as profileFlag, u as renderItem } from "./cli.mjs";
|
|
2
|
+
import { C as ProbedUser, E as profileAuthMethod, T as ProfileLastFailure, X as summarizeServer, Y as ServerSummary, _ as readProfileRecord, l as resolveProfileName, q as displayUrl, t as defineMetabaseCommand, w as ProfileAuthMethod } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { a as renderUserRole, i as renderUserName, n as renderSkew, o as renderVersionTag, r as renderTimestamp, t as renderAuthMethod } from "./render-Tlz6OCMU.mjs";
|
|
5
4
|
import { z } from "zod";
|
|
6
5
|
//#region src/commands/auth/status.ts
|
|
7
6
|
const AuthStatus = z.object({
|
|
@@ -10,8 +9,7 @@ const AuthStatus = z.object({
|
|
|
10
9
|
url: z.string().nullable(),
|
|
11
10
|
method: ProfileAuthMethod.nullable(),
|
|
12
11
|
user: ProbedUser.nullable(),
|
|
13
|
-
|
|
14
|
-
tokenFeatures: TokenFeatures.nullable(),
|
|
12
|
+
...ServerSummary.shape,
|
|
15
13
|
lastProbedAt: z.iso.datetime().nullable(),
|
|
16
14
|
lastFailure: ProfileLastFailure.nullable()
|
|
17
15
|
});
|
|
@@ -50,6 +48,11 @@ const authStatusView = {
|
|
|
50
48
|
label: "Version",
|
|
51
49
|
format: (value) => renderVersionTag(value)
|
|
52
50
|
},
|
|
51
|
+
{
|
|
52
|
+
key: "skew",
|
|
53
|
+
label: "Skew",
|
|
54
|
+
format: (value) => renderSkew(value)
|
|
55
|
+
},
|
|
53
56
|
{
|
|
54
57
|
key: "lastProbedAt",
|
|
55
58
|
label: "Last probed",
|
|
@@ -62,7 +65,7 @@ var status_default = defineMetabaseCommand({
|
|
|
62
65
|
name: "status",
|
|
63
66
|
description: "Show authentication status for a profile"
|
|
64
67
|
},
|
|
65
|
-
|
|
68
|
+
requires: null,
|
|
66
69
|
args: {
|
|
67
70
|
...outputFlags,
|
|
68
71
|
...profileFlag
|
|
@@ -79,8 +82,7 @@ var status_default = defineMetabaseCommand({
|
|
|
79
82
|
url: null,
|
|
80
83
|
method: null,
|
|
81
84
|
user: null,
|
|
82
|
-
|
|
83
|
-
tokenFeatures: null,
|
|
85
|
+
...summarizeServer(null),
|
|
84
86
|
lastProbedAt: null,
|
|
85
87
|
lastFailure: null
|
|
86
88
|
}, authStatusView, ctx);
|
|
@@ -93,8 +95,7 @@ var status_default = defineMetabaseCommand({
|
|
|
93
95
|
url: displayUrl(record.url),
|
|
94
96
|
method: profileAuthMethod(record),
|
|
95
97
|
user: probe?.user ?? null,
|
|
96
|
-
|
|
97
|
-
tokenFeatures: probe?.tokenFeatures ?? null,
|
|
98
|
+
...summarizeServer(probe),
|
|
98
99
|
lastProbedAt: probe?.at ?? null,
|
|
99
100
|
lastFailure: record.lastFailure
|
|
100
101
|
}, authStatusView, ctx);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-
|
|
1
|
+
import { t as defineCommandGroup } from "./group-YQQ5GIcP.mjs";
|
|
2
2
|
//#region src/commands/subscription/index.ts
|
|
3
3
|
var subscription_default = defineCommandGroup({
|
|
4
4
|
name: "subscription",
|
|
@@ -11,11 +11,11 @@ var subscription_default = defineCommandGroup({
|
|
|
11
11
|
purpose: "the dashboard and dashcards a subscription delivers"
|
|
12
12
|
}],
|
|
13
13
|
subCommands: {
|
|
14
|
-
list: () => import("./list-
|
|
15
|
-
get: () => import("./get-
|
|
16
|
-
create: () => import("./create-
|
|
17
|
-
update: () => import("./update-
|
|
18
|
-
archive: () => import("./archive-
|
|
14
|
+
list: () => import("./list-uCAP4vmQ.mjs").then((mod) => mod.default),
|
|
15
|
+
get: () => import("./get-ohue3YrV2.mjs").then((mod) => mod.default),
|
|
16
|
+
create: () => import("./create-D88Im3X22.mjs").then((mod) => mod.default),
|
|
17
|
+
update: () => import("./update-C33R41eM.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-CAwDiQWt2.mjs").then((mod) => mod.default)
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
//#endregion
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { n as windowList } from "./window-
|
|
5
|
-
import { t as pulseView } from "./pulse-
|
|
6
|
-
import { SubscriptionListEnvelope } from "./list-
|
|
1
|
+
import { B as listFlags, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CYZAIB58.mjs";
|
|
4
|
+
import { n as windowList } from "./window-DSb1tqSe.mjs";
|
|
5
|
+
import { t as pulseView } from "./pulse-x0gFxWfG.mjs";
|
|
6
|
+
import { SubscriptionListEnvelope } from "./list-uCAP4vmQ.mjs";
|
|
7
7
|
//#region src/commands/dashboard/subscriptions.ts
|
|
8
8
|
var subscriptions_default = defineMetabaseCommand({
|
|
9
9
|
meta: {
|
|
@@ -11,7 +11,7 @@ var subscriptions_default = defineMetabaseCommand({
|
|
|
11
11
|
description: "List subscriptions on a dashboard"
|
|
12
12
|
},
|
|
13
13
|
details: "Manage them with `mb subscription create|update|archive`, which take the subscription id printed here.",
|
|
14
|
-
|
|
14
|
+
requires: ["pulse.list"],
|
|
15
15
|
args: {
|
|
16
16
|
...outputFlags,
|
|
17
17
|
...listFlags,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import {
|
|
5
|
-
import { t as fieldSummaryView } from "./field-
|
|
1
|
+
import { H as outputFlags, U as profileFlag, u as renderItem, z as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CYZAIB58.mjs";
|
|
4
|
+
import { s as FieldSummary } from "./field-CcN4oZy6.mjs";
|
|
5
|
+
import { t as fieldSummaryView } from "./field-fDtIrY6D.mjs";
|
|
6
6
|
//#region src/commands/field/summary.ts
|
|
7
7
|
var summary_default = defineMetabaseCommand({
|
|
8
8
|
meta: {
|
|
9
9
|
name: "summary",
|
|
10
10
|
description: "Get the row count and distinct count for a field"
|
|
11
11
|
},
|
|
12
|
-
|
|
12
|
+
requires: ["field.summary"],
|
|
13
13
|
args: {
|
|
14
14
|
...outputFlags,
|
|
15
15
|
...profileFlag,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { a as DatabaseSyncResult } from "./database-
|
|
5
|
-
import { t as databaseSyncResultView } from "./database-
|
|
6
|
-
import { i as waitFlags, n as parseWaitFlags } from "./wait-flags-
|
|
1
|
+
import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-CwhhhwcB.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-CYZAIB58.mjs";
|
|
4
|
+
import { a as DatabaseSyncResult } from "./database-JtHTqSpq.mjs";
|
|
5
|
+
import { t as databaseSyncResultView } from "./database-C3E9PZSx.mjs";
|
|
6
|
+
import { i as waitFlags, n as parseWaitFlags } from "./wait-flags-CkRgnfww.mjs";
|
|
7
7
|
//#region src/commands/db/sync-schema.ts
|
|
8
8
|
var sync_schema_default = defineMetabaseCommand({
|
|
9
9
|
meta: {
|
|
@@ -11,7 +11,7 @@ var sync_schema_default = defineMetabaseCommand({
|
|
|
11
11
|
description: "Trigger a manual schema sync for a database"
|
|
12
12
|
},
|
|
13
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
|
-
|
|
14
|
+
requires: ["database.syncSchema"],
|
|
15
15
|
args: {
|
|
16
16
|
...outputFlags,
|
|
17
17
|
...profileFlag,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f as isSyncTaskFailed, u as SyncTask } from "./git-sync-BwBRmEhE.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region src/commands/git-sync/sync-task.ts
|
|
4
4
|
const SyncTaskIdle = z.object({ status: z.literal("idle") });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-
|
|
1
|
+
import { t as defineCommandGroup } from "./group-YQQ5GIcP.mjs";
|
|
2
2
|
//#region src/commands/table/index.ts
|
|
3
3
|
var table_default = defineCommandGroup({
|
|
4
4
|
name: "table",
|
|
@@ -8,10 +8,10 @@ var table_default = defineCommandGroup({
|
|
|
8
8
|
purpose: "table and column metadata, semantic types, visibility"
|
|
9
9
|
}],
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
fields: () => import("./fields-
|
|
14
|
-
update: () => import("./update-
|
|
11
|
+
list: () => import("./list-BDJkJc8s.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-wIZrb7oN.mjs").then((m) => m.default),
|
|
13
|
+
fields: () => import("./fields-CAchmFh4.mjs").then((m) => m.default),
|
|
14
|
+
update: () => import("./update-CmXGZPCR.mjs").then((m) => m.default)
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
//#endregion
|