@metabase/cli 0.3.1-alpha.support-worktrees.b634907 → 0.3.1-alpha.versioning.9ac5f50
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-CxzzDG4z.mjs → add-collection-Dmd-uNeU.mjs} +6 -10
- package/dist/{alert-CQ7Az16h.mjs → alert-D1u2MVZj.mjs} +7 -7
- package/dist/{alerts-DmwyyBfW.mjs → alerts-DcBjcfEE.mjs} +7 -8
- package/dist/{append-B0avMkvW.mjs → append-B9Htvmab.mjs} +5 -6
- package/dist/{archive-CMTHh4-w.mjs → archive-B660RguB.mjs} +4 -5
- package/dist/{archive-THcEfy9B.mjs → archive-BNivAYGr.mjs} +5 -6
- package/dist/{archive-DCyeRNfV.mjs → archive-BUoYMkxO.mjs} +4 -5
- package/dist/{archive-BZEu6UfT.mjs → archive-BVmFGFwG.mjs} +6 -7
- package/dist/archive-Bf014rFm.mjs +32 -0
- package/dist/{archive-DFofUIEC.mjs → archive-BmsZFOZY.mjs} +4 -5
- package/dist/archive-CNif6BKy.mjs +32 -0
- package/dist/{archive-BPSNe0Ul.mjs → archive-CgmidYZV.mjs} +4 -5
- package/dist/{archive-Cvrkz8F8.mjs → archive-CvU2z5192.mjs} +5 -6
- package/dist/{archive-BQ50OZ7y.mjs → archive-DhDQIKR_.mjs} +4 -5
- package/dist/{archive-BVblae-p.mjs → archive-bPdDITuY.mjs} +4 -5
- package/dist/{auth-BEEkuu4J.mjs → auth-CefYEPP5.mjs} +5 -5
- package/dist/{body-DxRSAMNC.mjs → body-C7m9q4cm.mjs} +3 -3
- package/dist/{branches-CmWc8NyL.mjs → branches-pz04OjF2.mjs} +4 -8
- package/dist/{cancel-DrQqmxvn.mjs → cancel-CNLnv19e.mjs} +4 -5
- package/dist/cancel-task-DbnxSh7U.mjs +25 -0
- package/dist/card-BRarvKYX.mjs +24 -0
- package/dist/{card-CrBGUkGQ.mjs → card-DZxRmver.mjs} +0 -1
- package/dist/{card-BEeafd4Y.mjs → card-zyUkr2nS.mjs} +1 -1
- package/dist/{cards-M_6X8wCI.mjs → cards-DtYlVoGP.mjs} +5 -6
- package/dist/cli.mjs +566 -170
- package/dist/{client-DYD8WZYy.mjs → client-Bv7Iwdvh.mjs} +285 -269
- package/dist/collection-CKeO8X7U.mjs +20 -0
- package/dist/{collection-CJHqsFKP.mjs → collection-DALwHnbz.mjs} +1 -1
- package/dist/{collection-BxE7OzcQ.mjs → collection-WFdBeyqa.mjs} +4 -7
- package/dist/{collection-namespace-CEoQ7G08.mjs → collection-namespace-CvT0TIZA.mjs} +2 -2
- package/dist/{content-translation-C8MlXPOF.mjs → content-translation-D7POzJJ6.mjs} +3 -3
- package/dist/{create-CoubLR5o.mjs → create-BEE8uvz2.mjs} +9 -6
- package/dist/{create-D0anrINz.mjs → create-Bh2j733n.mjs} +11 -16
- package/dist/{create-BupBEwR2.mjs → create-Bwg-5p08.mjs} +8 -13
- package/dist/{create-ByuJ6T4k.mjs → create-CGPle4nE.mjs} +7 -8
- package/dist/{create-hTc131aX.mjs → create-CGgPnb7L.mjs} +4 -5
- package/dist/{create-CY-SzM66.mjs → create-CLgalJUe.mjs} +12 -17
- package/dist/{create-C2XFfbjx.mjs → create-CN24yp_W.mjs} +6 -7
- package/dist/{create-BLWwN0uw.mjs → create-CuYGZ4gu2.mjs} +5 -6
- package/dist/{create-CJ7Am4Gc.mjs → create-DGHILnnk.mjs} +5 -6
- package/dist/{create-z-oMrlfT.mjs → create-DYd_o9BD.mjs} +5 -9
- package/dist/{create-BqpkCjx4.mjs → create-DhDREiiy.mjs} +4 -5
- package/dist/{create-myI6doga.mjs → create-Di4YvIbK.mjs} +5 -6
- package/dist/{create-ldrghMd1.mjs → create-DnqnjGGf.mjs} +4 -5
- package/dist/{create-C7iooS6W.mjs → create-Ds-DnSBe.mjs} +9 -15
- package/dist/{create-BA_tTDEk.mjs → create-JOXq0ULN.mjs} +5 -6
- package/dist/create-branch-DWcxC30N.mjs +31 -0
- package/dist/{csv-DBNzJiWK.mjs → csv-CUQvcCEk.mjs} +5 -6
- package/dist/{current-task-YzemU0Ic.mjs → current-task-D6P0eL21.mjs} +8 -16
- package/dist/{dashboard-B1mpfCq_.mjs → dashboard-BudI952R.mjs} +10 -10
- package/dist/{db-1tLH3nYI.mjs → db-C7UTd-6P.mjs} +7 -7
- package/dist/{delete-CD_-B4Kq.mjs → delete-DSxqbcFE.mjs} +5 -6
- package/dist/{delete-QNgBV6eS.mjs → delete-DbZZKcYj.mjs} +6 -11
- package/dist/{delete-DjAUp9mk.mjs → delete-Ds-zGh9C.mjs} +5 -6
- package/dist/{delete-eAUB7p-f.mjs → delete-Ud6iliGM.mjs} +6 -11
- package/dist/{delete-CpKH5ia4.mjs → delete-_IHffP-A.mjs} +5 -6
- package/dist/{delete-runtime-b2_ZMSjj.mjs → delete-runtime-BjHL1ryM.mjs} +1 -2
- package/dist/{delete-table-DamlxnSO.mjs → delete-table-DtXH6IN5.mjs} +6 -11
- package/dist/dependencies-CR1dlq-A.mjs +36 -0
- package/dist/dirty-CYxnOnh0.mjs +28 -0
- package/dist/document-BoILnE_1.mjs +19 -0
- package/dist/{download-C4v7u-AV.mjs → download-DPpmmYQe.mjs} +3 -7
- package/dist/{eid-CP35PdEF.mjs → eid-D-BbtWjt.mjs} +4 -6
- package/dist/{events-DmbzKIh_.mjs → events-CJEnn8WE.mjs} +5 -6
- package/dist/{export-i8D6laBG.mjs → export-BOgyuIOQ.mjs} +13 -29
- package/dist/{field-BKn9bt7I.mjs → field-CzHBOPER.mjs} +5 -5
- package/dist/{fields-8_p81BqN.mjs → fields-Bwgkrvus.mjs} +5 -6
- package/dist/get-B89DUSvw.mjs +31 -0
- package/dist/get-BL90QC64.mjs +36 -0
- package/dist/get-BLJSCw53.mjs +31 -0
- package/dist/{get-BBOfshz1.mjs → get-BOLwso0V.mjs} +6 -7
- package/dist/{get-BvW21ujw.mjs → get-BaPadzdM.mjs} +4 -5
- package/dist/{get-vvs0qzzM.mjs → get-BfVCLBqc.mjs} +4 -5
- package/dist/{get-B0g6VMBC.mjs → get-C1ZdOvMm.mjs} +4 -5
- package/dist/{get-N4dOaTsp.mjs → get-CLu4yzMp2.mjs} +5 -6
- package/dist/get-COwdtskS.mjs +27 -0
- package/dist/{get-CPTbySa7.mjs → get-CWfIiXwL.mjs} +4 -5
- package/dist/get-CqQ-pf0q.mjs +89 -0
- package/dist/{get-DnCE7K0y.mjs → get-CvIgxPXV.mjs} +5 -6
- package/dist/{get-vrccOMBk.mjs → get-D4OTJblo.mjs} +4 -5
- package/dist/{get-BbHPFNqr.mjs → get-D8lHwu4-.mjs} +4 -5
- package/dist/{get-CWf46UFu.mjs → get-DVi3a2nm.mjs} +6 -7
- package/dist/{get-DFkbi5L3.mjs → get-DgnYF7LR.mjs} +4 -5
- package/dist/{get-BHGgXqUq.mjs → get-DsKmZfM2.mjs} +4 -5
- package/dist/{get-CAzSP-7o.mjs → get-DyyPiiaB.mjs} +4 -5
- package/dist/{get-Bds6Izxk.mjs → get-Eqq13YY-.mjs} +4 -5
- package/dist/{get-run-4Ng8_awa.mjs → get-run-Iya0Yw9s.mjs} +6 -7
- package/dist/{git-sync-DLzJrdMi.mjs → git-sync-BDnxPrqU.mjs} +3 -22
- package/dist/git-sync-CdN0Maun.mjs +28 -0
- package/dist/{git-sync-LQIVMNxO.mjs → git-sync-DxD_ng48.mjs} +2 -31
- package/dist/{group-YN6jj2AN.mjs → group-CmVCLBDz.mjs} +3 -3
- package/dist/{has-remote-changes-BXPGI9xG.mjs → has-remote-changes-DfJUMP8F.mjs} +7 -18
- package/dist/{import-BoxOkA-G.mjs → import-FEAx-Y5A.mjs} +12 -32
- package/dist/{input-DH9i67x_.mjs → input-DFZ_qGW_.mjs} +1 -1
- package/dist/is-dirty-BsYjBSXG.mjs +32 -0
- package/dist/{items-Cv6iAzrI.mjs → items-D4rstE12.mjs} +10 -18
- package/dist/{key-BEhqIzIQ.mjs → key-BmWundO3.mjs} +1 -1
- package/dist/{library-fhVn1KDC.mjs → library-CmctxHjv.mjs} +1 -1
- package/dist/library-DXB8sm4r.mjs +81 -0
- package/dist/{library-CRaOhJnj.mjs → library-uzyHWBap.mjs} +5 -5
- package/dist/{list-DOaWCx8S.mjs → list-1DkkU82x.mjs} +17 -25
- package/dist/{list-BLJkJp5a.mjs → list-B7tqNV8B.mjs} +4 -5
- package/dist/{list-WSJLnunb.mjs → list-BRpPbvyS.mjs} +4 -5
- package/dist/{list-BBp9XjYs.mjs → list-BXL8HFr_.mjs} +4 -5
- package/dist/{list-L2U1l6R4.mjs → list-Bjj0z5BS.mjs} +6 -7
- package/dist/{list-DhrapAcy.mjs → list-BmMi_wPD.mjs} +5 -6
- package/dist/list-CC1M_n6Z.mjs +28 -0
- package/dist/list-CQy0z7f9.mjs +28 -0
- package/dist/{list-BwkfWtP2.mjs → list-D_zvX0ms.mjs} +4 -5
- package/dist/{list--2T-GUEF.mjs → list-DeNGm9G4.mjs} +5 -6
- package/dist/list-Dgm6TkqR.mjs +38 -0
- package/dist/list-DoTiQc3D.mjs +36 -0
- package/dist/{list-C8J3n8B8.mjs → list-DrS3ePsv.mjs} +4 -5
- package/dist/list-bN0RC14-.mjs +59 -0
- package/dist/{list-oAAgU5uE.mjs → list-ndIl9XqV.mjs} +11 -18
- package/dist/{list-tutXEQRW.mjs → list-sQcA4g05.mjs} +5 -6
- package/dist/{list-9uvk9dIA.mjs → list-squb_ioH.mjs} +4 -5
- package/dist/{list-DOZNpX4b.mjs → list-xMfCeuZc.mjs} +5 -6
- package/dist/{login-DqWRF3Og.mjs → login-D_1-zE4A.mjs} +15 -13
- package/dist/{logout-ChCz1bkf.mjs → logout-DPi2q1Wu.mjs} +3 -5
- package/dist/{measure-C5dIdFj1.mjs → measure-CdA8Nl3Z.mjs} +6 -6
- package/dist/{notification-DVrLkjFT.mjs → notification-Fcq1fIPw.mjs} +1 -1
- package/dist/{parameter-values-Dy4cBs5y.mjs → parameter-values-C6dj6I4g.mjs} +4 -6
- package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-B1t8S194.mjs} +1 -1
- package/dist/{parse-id-DDCn3VXx.mjs → parse-id-DR8aUSdL.mjs} +1 -1
- package/dist/{parse-ref-Wv21Roup.mjs → parse-ref-BJ_Q0tNW.mjs} +3 -7
- package/dist/{path-IYhuzjQV.mjs → path-B96DI8u2.mjs} +5 -6
- package/dist/{poll-75SvT7Zv.mjs → poll-By46YQ5J.mjs} +2 -2
- package/dist/{preflight-HLUVr2Yf.mjs → preflight-Bl1oitm8.mjs} +3 -4
- package/dist/{process-DBOOrmET.mjs → process-CcQM4qPv.mjs} +1 -1
- package/dist/{publish-CMkCSt8i.mjs → publish-BKJYvxif.mjs} +9 -10
- package/dist/{pulse-a-83M4DV.mjs → pulse-DhG6I9mI.mjs} +1 -1
- package/dist/{query-tWQAV9pb.mjs → query-BKSM-pbi.mjs} +9 -11
- package/dist/{query-Bka77J62.mjs → query-qBHjZQc_.mjs} +7 -10
- package/dist/{query-result-E4Q-Gra6.mjs → query-result-DBDwk8TS.mjs} +1 -1
- package/dist/{remove-collection-BV9wRQZD.mjs → remove-collection-BWFW7Rn6.mjs} +6 -10
- package/dist/{render-DHjCcUXn.mjs → render-DmykmrFB.mjs} +11 -8
- package/dist/{replace-mt47dlRV.mjs → replace-BmAqD3zY.mjs} +5 -6
- package/dist/{rescan-values-6cRjcpTs.mjs → rescan-values-BrCLrihF.mjs} +4 -5
- package/dist/{run-DI_pDxji.mjs → run-CtbzjDKY.mjs} +6 -7
- package/dist/{run-BmGmC-GQ.mjs → run-q5Y44Fxj.mjs} +26 -15
- package/dist/{runs-9Fu0mug5.mjs → runs-JFlbezkQ.mjs} +7 -8
- package/dist/{runtime-CNAZ_FuR.mjs → runtime-BQiGgbgZ.mjs} +851 -361
- package/dist/{schema-tables-CLG0mtQb.mjs → schema-tables-Bzx2ShyE.mjs} +5 -6
- package/dist/{schemas-Cm5NWy59.mjs → schemas-ww5mU2AS.mjs} +5 -6
- package/dist/{search-CljYyf2F.mjs → search-J4RwCof-.mjs} +9 -15
- package/dist/{segment-IRzlQggt.mjs → segment-XXTjU0eG.mjs} +6 -6
- package/dist/{selectors-D4iOP5uB.mjs → selectors-BAAZMi43.mjs} +3 -3
- package/dist/{send-D7DBnQbu.mjs → send-BmpDlw9O.mjs} +4 -5
- package/dist/{set-DKN8fuC6.mjs → set-DUWrSza9.mjs} +5 -6
- package/dist/{set-active-CkE0Eiqh.mjs → set-active-BiUlbNI5.mjs} +5 -6
- package/dist/{setting-CN4l8N-b.mjs → setting-B1KBQN3M.mjs} +4 -4
- package/dist/{setup-BpTptmdO.mjs → setup-CVaNVwOd.mjs} +4 -5
- package/dist/{signal-CMd0EFUa.mjs → signal-GhGmuHfx.mjs} +11 -2
- package/dist/{list-CtZAu4im.mjs → skill-list-DTnDhnL5.mjs} +17 -47
- package/dist/{skills-BSAiLI3Z.mjs → skills-BWrAlj9l.mjs} +3 -3
- package/dist/{skills-hVKSOCUf.mjs → skills-DkDsSH5F.mjs} +102 -14
- package/dist/snippet-CG75L2DS.mjs +19 -0
- package/dist/{snippet-BxgvQ09J.mjs → snippet-CyKAgIZl.mjs} +2 -5
- package/dist/{snippet-DecHB4Dn.mjs → snippet-oJLaYW9V.mjs} +1 -1
- package/dist/{stash-DJs6A6BA.mjs → stash-DMm8YF8V.mjs} +7 -12
- package/dist/{status-N_2EaWb7.mjs → status-BzEQjQ_t.mjs} +15 -23
- package/dist/{status-DtwBDRtc.mjs → status-ClWsQD6v.mjs} +22 -48
- package/dist/{subscription-BnGDp1oy.mjs → subscription-CdFn2hre.mjs} +6 -6
- package/dist/{subscriptions-BfFwV__x.mjs → subscriptions-DBda1pE5.mjs} +7 -8
- package/dist/{summary-CHiq-4mz.mjs → summary-B4GPiuqD.mjs} +4 -5
- package/dist/{sync-schema-DhnM-rpm.mjs → sync-schema-DsIM5g2U.mjs} +5 -6
- package/dist/{sync-task-G1K47Nvn.mjs → sync-task-BACcrs0i.mjs} +1 -1
- package/dist/{table-BQaiCSNS.mjs → table-D4Alrrwh.mjs} +5 -5
- package/dist/timeline-DmM0BuX8.mjs +21 -0
- package/dist/{timeline-event-B7H1y8s8.mjs → timeline-event-DWIh3Tdt.mjs} +6 -6
- package/dist/transform-BcV_XlSX.mjs +28 -0
- package/dist/{transform-CiDOJGBW.mjs → transform-Bk0D0nIs.mjs} +2 -2
- package/dist/{transform-BvOEn41C.mjs → transform-DpuG-ON3.mjs} +25 -7
- 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-CjtwBGoM.mjs +22 -0
- package/dist/{transform-tag-jBVd6wXd.mjs → transform-tag-CcElGp3C.mjs} +4 -9
- package/dist/{transform-tag-Dip51YBa.mjs → transform-tag-DJ3_bksm.mjs} +5 -5
- package/dist/{transform-tag-DiXWRCQG.mjs → transform-tag-Dmb4u3-Q.mjs} +1 -1
- package/dist/{transforms-C-jYgS6z.mjs → transforms-Dg2MfB2a.mjs} +7 -8
- package/dist/tree-BQL0f7YX.mjs +26 -0
- package/dist/{unpublish-BokbnLng.mjs → unpublish-DfSvb_Rs.mjs} +4 -8
- package/dist/{update-D9OTkZhw.mjs → update-B-hRR8gW.mjs} +5 -6
- package/dist/{update-CpLEEbiJ.mjs → update-BCgAyfj_.mjs} +8 -9
- package/dist/{update-BCGE5UYC.mjs → update-Bhmli02m.mjs} +6 -7
- package/dist/{update-rkbpH0lF.mjs → update-BxIyFtrX.mjs} +5 -6
- package/dist/{update-AZSXMJqu.mjs → update-CDo0Orvu.mjs} +9 -15
- package/dist/{update-B9DcRSBQ.mjs → update-CKoBDTL7.mjs} +13 -19
- package/dist/{update-CfQoYVTc.mjs → update-CiYxcf8M.mjs} +7 -8
- package/dist/{update-e7lyQPxq.mjs → update-Cr5zHb0D.mjs} +9 -15
- package/dist/{update-CPEU8ZEu.mjs → update-CtDHMxW8.mjs} +6 -7
- package/dist/{update-BBQInyiJ.mjs → update-D1QdfpKR.mjs} +6 -7
- package/dist/{update-C4PbAYgW.mjs → update-D4qdTlLF.mjs} +5 -6
- package/dist/{update-BRXKLeJH.mjs → update-DBGaJDsj.mjs} +5 -6
- package/dist/{update-BErxnZrj.mjs → update-Izqip6jY.mjs} +6 -7
- package/dist/{update-Bc8s1TL1.mjs → update-NZhIjTCf.mjs} +5 -6
- package/dist/{update-dashcard-St-dGcE3.mjs → update-dashcard-D5b971AO.mjs} +5 -6
- package/dist/{update-CKL2FtoX.mjs → update-sYLQIUgh.mjs} +6 -7
- package/dist/{upgrade-CUoRHfVg.mjs → upgrade-CD1xtsIv.mjs} +6 -9
- package/dist/{upload-CD555ui1.mjs → upload-BUd3MG90.mjs} +2 -2
- package/dist/upload-DzGTlldn.mjs +13 -0
- package/dist/{upload-BPd1Uzxc.mjs → upload-akKFxpVA.mjs} +4 -8
- package/dist/{uuid-CFN8LIkP.mjs → uuid-oVdJ62eA.mjs} +3 -5
- package/dist/{validate-BWchyW0V.mjs → validate-CWd6l6KZ.mjs} +1 -1
- package/dist/{validate-query-Chc43ezW.mjs → validate-query-Boi8-cAP.mjs} +2 -3
- package/dist/{values-BL_U-Zdw.mjs → values-DLwZl-P8.mjs} +4 -5
- package/dist/{verify-DnBaRmkI.mjs → verify-CH9Tw8yv.mjs} +3 -18
- package/dist/{wait-flags-DzytMEG8.mjs → wait-flags-DiQ_kRjZ.mjs} +3 -3
- package/dist/{wait-mPoOZxrw.mjs → wait-rfTdQWdi.mjs} +9 -17
- package/dist/{window-DSb1tqSe.mjs → window-BkvrP0gB.mjs} +1 -1
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +24 -16
- 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 +6 -91
- 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 +13 -11
- 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/archive-CqOKKrb2.mjs +0 -38
- package/dist/archive-DCjdICg7.mjs +0 -38
- package/dist/branch-BSeGrtP7.mjs +0 -28
- package/dist/cancel-task-BMQXtjW5.mjs +0 -34
- package/dist/card-RlzLDB2z.mjs +0 -24
- package/dist/collection-Bhe20ckt.mjs +0 -20
- package/dist/create-DwrhcI8r2.mjs +0 -144
- package/dist/create-branch-B3BMpF1g.mjs +0 -49
- package/dist/delete-D_OgiI4v.mjs +0 -86
- package/dist/dependencies-DEx0BsZ3.mjs +0 -41
- package/dist/dirty-dC1-Ud0G.mjs +0 -40
- package/dist/document-DOJbBWLF.mjs +0 -19
- package/dist/export-preflight-B5MvYhm3.mjs +0 -67
- package/dist/get-CNEQK0-9.mjs +0 -81
- package/dist/get-Cfagmy1i.mjs +0 -42
- package/dist/get-DvLuY5Xu.mjs +0 -38
- package/dist/get-DwdMvWXU.mjs +0 -44
- package/dist/get-jV8G90Zy.mjs +0 -42
- package/dist/get-mGEv-kag.mjs +0 -33
- package/dist/git-sync-DjoaNmRM.mjs +0 -29
- package/dist/is-dirty-Cwxq4_gd.mjs +0 -44
- package/dist/library-Cfw6eF35.mjs +0 -19
- package/dist/list-5Iojbr_p.mjs +0 -37
- package/dist/list-BD4onDqO.mjs +0 -37
- package/dist/list-C2yL7-CH.mjs +0 -45
- package/dist/list-CbbKip6U.mjs +0 -32
- package/dist/list-Dg2XeDON.mjs +0 -47
- package/dist/network-error-D6CiOEBw.mjs +0 -431
- package/dist/pin-BuZ_kg-u.mjs +0 -62
- package/dist/predicates-Bkm2IoeX.mjs +0 -170
- package/dist/scope-DsGuWG5w.mjs +0 -11
- package/dist/snippet-LlHz3FdJ.mjs +0 -19
- package/dist/timeline-C2VW0Ph6.mjs +0 -21
- package/dist/transform-DAf0Y02t.mjs +0 -28
- package/dist/transform-job-ntiT5Rrh.mjs +0 -22
- package/dist/tree-DtyJhD54.mjs +0 -36
- package/dist/unpin-DxbXmLtW.mjs +0 -45
- package/dist/upload-Dc3QLhZw.mjs +0 -13
- package/dist/worktree-ChdDlG3Q.mjs +0 -25
- package/dist/worktree-DC0kTxxQ.mjs +0 -20
- package/dist/worktree-xAro1xAB.mjs +0 -24
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { n as windowList } from "./window-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, P as listFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
|
|
4
|
+
import { n as windowList } from "./window-BkvrP0gB.mjs";
|
|
5
5
|
import { n as TableCompact } from "./table-CeeTJgQb.mjs";
|
|
6
6
|
import { t as tableView } from "./table-CsIJNPFf.mjs";
|
|
7
7
|
//#region src/commands/db/schema-tables.ts
|
|
@@ -11,8 +11,7 @@ var schema_tables_default = defineMetabaseCommand({
|
|
|
11
11
|
name: "schema-tables",
|
|
12
12
|
description: "List tables in a database schema"
|
|
13
13
|
},
|
|
14
|
-
|
|
15
|
-
worktree: "any",
|
|
14
|
+
requires: ["database.schemaTables"],
|
|
16
15
|
args: {
|
|
17
16
|
...outputFlags,
|
|
18
17
|
...listFlags,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { n as windowList } from "./window-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, P as listFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
|
|
4
|
+
import { n as windowList } from "./window-BkvrP0gB.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/db/schemas.ts
|
|
7
7
|
const SchemaName = z.object({ name: z.string() });
|
|
@@ -18,8 +18,7 @@ var schemas_default = defineMetabaseCommand({
|
|
|
18
18
|
name: "schemas",
|
|
19
19
|
description: "List schemas in a database"
|
|
20
20
|
},
|
|
21
|
-
|
|
22
|
-
worktree: "any",
|
|
21
|
+
requires: ["database.schemas"],
|
|
23
22
|
args: {
|
|
24
23
|
...outputFlags,
|
|
25
24
|
...listFlags,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
4
|
-
import { r as windowServerPage } from "./window-
|
|
1
|
+
import { F as listFlagsWithDefaultLimit, I as outputFlags, L as profileFlag, N as connectionFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
|
|
2
|
+
import { i as parseEnumCsv, t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
|
|
4
|
+
import { r as windowServerPage } from "./window-BkvrP0gB.mjs";
|
|
5
5
|
import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-DFBwUc6d.mjs";
|
|
6
6
|
//#region src/output/views/search.ts
|
|
7
7
|
const searchResultView = {
|
|
@@ -31,19 +31,17 @@ var search_default = defineMetabaseCommand({
|
|
|
31
31
|
name: "search",
|
|
32
32
|
description: "Search Metabase content (cards, dashboards, collections, …)"
|
|
33
33
|
},
|
|
34
|
-
details: "Ranks content against a query string. To simply enumerate a resource, prefer its `… list` verb.
|
|
34
|
+
details: "Ranks content against a query string. To simply enumerate a resource, prefer its `… list` verb.",
|
|
35
35
|
skills: [{
|
|
36
36
|
skill: "core",
|
|
37
37
|
purpose: "search vs. list"
|
|
38
38
|
}],
|
|
39
|
-
|
|
40
|
-
worktree: "scoped",
|
|
39
|
+
requires: ["search.query"],
|
|
41
40
|
args: {
|
|
42
41
|
...outputFlags,
|
|
43
42
|
...listFlagsWithDefaultLimit(DEFAULT_LIMIT),
|
|
44
43
|
...profileFlag,
|
|
45
44
|
...connectionFlags,
|
|
46
|
-
...worktreeFlag,
|
|
47
45
|
query: {
|
|
48
46
|
type: "positional",
|
|
49
47
|
description: "Search query string",
|
|
@@ -72,17 +70,13 @@ var search_default = defineMetabaseCommand({
|
|
|
72
70
|
examples: [
|
|
73
71
|
"mb search orders",
|
|
74
72
|
"mb search --models card,dashboard --limit 10 --json",
|
|
75
|
-
"mb search products --archived"
|
|
76
|
-
"mb search orders --worktree feat/transforms"
|
|
73
|
+
"mb search products --archived"
|
|
77
74
|
],
|
|
78
|
-
async run({ args, ctx, getClient
|
|
75
|
+
async run({ args, ctx, getClient }) {
|
|
79
76
|
const tableDbIdRaw = args["db-id"];
|
|
80
77
|
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
|
|
81
78
|
const models = parseEnumCsv(args.models, SearchModel, "--models");
|
|
82
|
-
const
|
|
83
|
-
const scope = await getWorktree();
|
|
84
|
-
const { data, total } = await client.search.query({
|
|
85
|
-
...scopeQuery(scope),
|
|
79
|
+
const { data, total } = await (await getClient()).search.query({
|
|
86
80
|
q: nonEmpty(args.query),
|
|
87
81
|
models,
|
|
88
82
|
archived: args.archived ? true : void 0,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-
|
|
1
|
+
import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
|
|
2
2
|
//#region src/commands/segment/index.ts
|
|
3
3
|
var segment_default = defineCommandGroup({
|
|
4
4
|
name: "segment",
|
|
@@ -11,11 +11,11 @@ var segment_default = defineCommandGroup({
|
|
|
11
11
|
purpose: "define reusable segments"
|
|
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-B7tqNV8B.mjs").then((mod) => mod.default),
|
|
15
|
+
get: () => import("./get-C1ZdOvMm.mjs").then((mod) => mod.default),
|
|
16
|
+
create: () => import("./create-JOXq0ULN.mjs").then((mod) => mod.default),
|
|
17
|
+
update: () => import("./update-sYLQIUgh.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-BmsZFOZY.mjs").then((mod) => mod.default)
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
1
|
+
import { K as ConfigError } from "./cli.mjs";
|
|
2
|
+
import { n as parseCsv } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
|
|
4
4
|
//#region src/commands/library/selectors.ts
|
|
5
5
|
const tableSelectorFlags = {
|
|
6
6
|
"table-ids": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as parseId } from "./parse-id-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
//#region src/commands/alert/send.ts
|
|
6
6
|
const AlertSendResult = z.object({
|
|
@@ -23,8 +23,7 @@ var send_default = defineMetabaseCommand({
|
|
|
23
23
|
description: "Send a question alert now, off-schedule"
|
|
24
24
|
},
|
|
25
25
|
details: "Delivers to every handler on the alert, ignoring its send condition and schedule. Requires the channel to be configured on the server (email needs SMTP set up).",
|
|
26
|
-
|
|
27
|
-
worktree: "main-only",
|
|
26
|
+
requires: ["notification.send"],
|
|
28
27
|
args: {
|
|
29
28
|
...outputFlags,
|
|
30
29
|
...profileFlag,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as readBody } from "./body-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary, f as formatScalar } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as readBody } from "./body-C7m9q4cm.mjs";
|
|
4
4
|
import { r as SettingValue } from "./setting-DTiLCW8g.mjs";
|
|
5
5
|
import { t as settingValueView } from "./setting-CwRYgHYN.mjs";
|
|
6
|
-
import { t as parseSettingKey } from "./key-
|
|
6
|
+
import { t as parseSettingKey } from "./key-BmWundO3.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
//#region src/commands/setting/set.ts
|
|
9
9
|
const SettingValueInput = z.unknown().describe("Any JSON value; the setting's own type constraints are enforced server-side");
|
|
@@ -12,8 +12,7 @@ var set_default = defineMetabaseCommand({
|
|
|
12
12
|
name: "set",
|
|
13
13
|
description: "Set a setting value (parsed strictly as JSON)"
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
worktree: "main-only",
|
|
15
|
+
requires: ["setting.set"],
|
|
17
16
|
args: {
|
|
18
17
|
...outputFlags,
|
|
19
18
|
...profileFlag,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { n as TransformJobActiveResult } from "./transform-job-
|
|
4
|
-
import { t as parseEnumFlag } from "./parse-enum-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { n as TransformJobActiveResult } from "./transform-job-CCguL6LP.mjs";
|
|
4
|
+
import { t as parseEnumFlag } from "./parse-enum-B1t8S194.mjs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/commands/transform-job/set-active.ts
|
|
7
7
|
const ActiveWord = z.enum(["true", "false"]);
|
|
@@ -21,8 +21,7 @@ var set_active_default = defineMetabaseCommand({
|
|
|
21
21
|
description: "Activate or deactivate every transform job"
|
|
22
22
|
},
|
|
23
23
|
details: "Flips the active flag on every transform job at once. Inactive jobs do not run on schedule; manual runs ignore the flag. Requires admin.",
|
|
24
|
-
|
|
25
|
-
worktree: "main-only",
|
|
24
|
+
requires: ["transformJob.setActive"],
|
|
26
25
|
args: {
|
|
27
26
|
...outputFlags,
|
|
28
27
|
...profileFlag,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as defineCommandGroup } from "./group-
|
|
1
|
+
import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
|
|
2
2
|
//#region src/commands/setting/index.ts
|
|
3
3
|
var setting_default = defineCommandGroup({
|
|
4
4
|
name: "setting",
|
|
@@ -8,9 +8,9 @@ var setting_default = defineCommandGroup({
|
|
|
8
8
|
purpose: "setting get/set JSON value quoting"
|
|
9
9
|
}],
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
set: () => import("./set-
|
|
11
|
+
list: () => import("./list-BRpPbvyS.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-DgnYF7LR.mjs").then((m) => m.default),
|
|
13
|
+
set: () => import("./set-DUWrSza9.mjs").then((m) => m.default)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { t as readBody } from "./body-
|
|
1
|
+
import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { t as readBody } from "./body-C7m9q4cm.mjs";
|
|
4
4
|
import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
|
|
5
5
|
import { n as SetupResult, r as SetupResultCompact, t as SetupInput } from "./setup-CO7QV-ao.mjs";
|
|
6
6
|
//#region src/output/views/setup.ts
|
|
@@ -18,8 +18,7 @@ var setup_default = defineMetabaseCommand({
|
|
|
18
18
|
name: "setup",
|
|
19
19
|
description: "Complete the initial Metabase setup wizard with a default user"
|
|
20
20
|
},
|
|
21
|
-
|
|
22
|
-
worktree: "main-only",
|
|
21
|
+
requires: ["setup.create"],
|
|
23
22
|
args: {
|
|
24
23
|
...outputFlags,
|
|
25
24
|
...profileFlag,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { J as MetabaseError, W as AbortError, et as errorMessage } from "./cli.mjs";
|
|
2
2
|
//#region ../client/src/signal.ts
|
|
3
3
|
function combineAborts(...signals) {
|
|
4
4
|
return AbortSignal.any(signals.filter((signal) => signal !== void 0));
|
|
@@ -12,5 +12,14 @@ function abortReason(signal) {
|
|
|
12
12
|
if (reason instanceof Error || typeof reason === "string") return new AbortError(errorMessage(reason) || "aborted");
|
|
13
13
|
return new AbortError("aborted");
|
|
14
14
|
}
|
|
15
|
+
function untilAborted(promise, signal) {
|
|
16
|
+
if (signal === void 0) return promise;
|
|
17
|
+
throwIfAborted(signal);
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const onAbort = () => reject(abortReason(signal));
|
|
20
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
21
|
+
promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
15
24
|
//#endregion
|
|
16
|
-
export { throwIfAborted as n, combineAborts as t };
|
|
25
|
+
export { throwIfAborted as n, untilAborted as r, combineAborts as t };
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { n as windowList } from "./window-DSb1tqSe.mjs";
|
|
4
|
-
import { i as loadVisibleSkills } from "./skills-hVKSOCUf.mjs";
|
|
1
|
+
import { b as listTruncationNotice, x as warn } from "./cli.mjs";
|
|
2
|
+
import { tt as RequirementFailure } from "./runtime-BQiGgbgZ.mjs";
|
|
5
3
|
import { z } from "zod";
|
|
6
4
|
//#region src/output/skill-list.ts
|
|
5
|
+
const UnavailableSkillJson = z.object({
|
|
6
|
+
name: z.string(),
|
|
7
|
+
failure: RequirementFailure
|
|
8
|
+
});
|
|
9
|
+
const UnavailableSkills = z.array(UnavailableSkillJson).nullable().describe("Skills left out because the profile's server lacks a feature they need, each with the client's account of the first one missing; `null` when nothing was filtered — `--all` was passed, or the profile has no cached server probe to filter by.");
|
|
10
|
+
const unavailableSkillsFlag = { all: {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
description: "Every non-hidden skill, in full, regardless of what the profile's server supports"
|
|
13
|
+
} };
|
|
14
|
+
function skillFilterNotices(unavailable, context) {
|
|
15
|
+
if (context.bypassed) return [];
|
|
16
|
+
if (unavailable === null) return [`Skills are unfiltered: profile "${context.profileName}" has no cached server probe (run \`mb auth login\` to record one).`];
|
|
17
|
+
return unavailable.map((skill) => `Skipped skill "${skill.name}": ${skill.failure.detail} Pass --all to print it anyway.`);
|
|
18
|
+
}
|
|
7
19
|
const DEFAULT_TERMINAL_WIDTH = 80;
|
|
8
20
|
const MIN_WRAP_WIDTH = 24;
|
|
9
21
|
const DESCRIPTION_INDENT = " ";
|
|
@@ -54,46 +66,4 @@ function wrapWidth() {
|
|
|
54
66
|
return typeof columns === "number" && columns > 0 ? columns : DEFAULT_TERMINAL_WIDTH;
|
|
55
67
|
}
|
|
56
68
|
//#endregion
|
|
57
|
-
|
|
58
|
-
const SkillSummary = z.object({
|
|
59
|
-
name: z.string(),
|
|
60
|
-
description: z.string()
|
|
61
|
-
});
|
|
62
|
-
const SkillListEnvelope = listEnvelopeSchema(SkillSummary);
|
|
63
|
-
const skillSummaryView = {
|
|
64
|
-
compactPick: SkillSummary,
|
|
65
|
-
tableColumns: [{
|
|
66
|
-
key: "name",
|
|
67
|
-
label: "Name"
|
|
68
|
-
}, {
|
|
69
|
-
key: "description",
|
|
70
|
-
label: "Description"
|
|
71
|
-
}]
|
|
72
|
-
};
|
|
73
|
-
var list_default = defineMetabaseCommand({
|
|
74
|
-
meta: {
|
|
75
|
-
name: "list",
|
|
76
|
-
description: "List CLI-bundled skills — always consult the matching skill before acting on a task; they are the source of truth for every workflow."
|
|
77
|
-
},
|
|
78
|
-
capabilities: null,
|
|
79
|
-
worktree: "any",
|
|
80
|
-
args: {
|
|
81
|
-
...outputFlags,
|
|
82
|
-
...listFlags
|
|
83
|
-
},
|
|
84
|
-
outputSchema: SkillListEnvelope,
|
|
85
|
-
examples: ["mb skills list", "mb skills list --json"],
|
|
86
|
-
run({ ctx }) {
|
|
87
|
-
const envelope = windowList(loadVisibleSkills().map((s) => ({
|
|
88
|
-
name: s.name,
|
|
89
|
-
description: s.description
|
|
90
|
-
})), ctx.range);
|
|
91
|
-
if (ctx.format === "json" || ctx.fields !== void 0 || ctx.full) {
|
|
92
|
-
renderList(envelope, skillSummaryView, ctx);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
renderSkillList(envelope.data, ctx.maxBytes);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
//#endregion
|
|
99
|
-
export { list_default as default };
|
|
69
|
+
export { unavailableSkillsFlag as i, renderSkillList as n, skillFilterNotices as r, UnavailableSkills as t };
|
|
@@ -7,9 +7,9 @@ var skills_default = defineCommand({
|
|
|
7
7
|
},
|
|
8
8
|
default: "list",
|
|
9
9
|
subCommands: {
|
|
10
|
-
list: () => import("./list-
|
|
11
|
-
get: () => import("./get-
|
|
12
|
-
path: () => import("./path-
|
|
10
|
+
list: () => import("./list-bN0RC14-.mjs").then((m) => m.default),
|
|
11
|
+
get: () => import("./get-CqQ-pf0q.mjs").then((m) => m.default),
|
|
12
|
+
path: () => import("./path-B96DI8u2.mjs").then((m) => m.default)
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
15
|
//#endregion
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { $ as ValidationError, K as ConfigError, T as ENV_SKILLS_DIR, et as errorMessage, k as readEnv, pt as isFeatureName, tt as isFileNotFoundError, ut as FEATURE_NAMES } from "./cli.mjs";
|
|
2
|
+
import { Z as checkFeatures, n as parseCsv } from "./runtime-BQiGgbgZ.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
5
|
import { dirname, join, resolve } from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { YAMLParseError, parse } from "yaml";
|
|
8
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
|
+
}
|
|
9
14
|
function parseYamlResult(input, schema, opts = {}) {
|
|
10
15
|
const sourcePrefix = opts.source ? `${opts.source}: ` : "";
|
|
11
16
|
let raw;
|
|
@@ -39,7 +44,8 @@ function parseYamlResult(input, schema, opts = {}) {
|
|
|
39
44
|
const Frontmatter = z.object({
|
|
40
45
|
name: z.string().min(1),
|
|
41
46
|
description: z.string().default(""),
|
|
42
|
-
hidden: z.boolean().default(false)
|
|
47
|
+
hidden: z.boolean().default(false),
|
|
48
|
+
requires: z.array(z.string()).default([])
|
|
43
49
|
}).loose();
|
|
44
50
|
const SkillExtraFile = z.object({
|
|
45
51
|
path: z.string(),
|
|
@@ -58,12 +64,37 @@ const SKILL_REFERENCES_DIR = "references";
|
|
|
58
64
|
const SKILL_TEMPLATES_DIR = "templates";
|
|
59
65
|
const FRONTMATTER_PREFIX_BYTES = 8192;
|
|
60
66
|
const FRONTMATTER_FENCE = "---";
|
|
67
|
+
const SECTION_OPEN_PREFIX = /^<!--\s*requires:\s*/;
|
|
68
|
+
const MARKER_END = /\s*-->$/;
|
|
69
|
+
const SECTION_OPEN = /^<!--\s*requires:.*-->$/;
|
|
70
|
+
const SECTION_CLOSE = /^<!--\s*\/requires\s*-->$/;
|
|
71
|
+
const SECTION_MARKER_TEXT = /<!--\s*\/?requires\b/;
|
|
61
72
|
function loadAllSkills() {
|
|
62
73
|
return discoverSkills(resolveSkillDirs());
|
|
63
74
|
}
|
|
64
75
|
function loadVisibleSkills() {
|
|
65
76
|
return loadAllSkills().filter((s) => !s.hidden);
|
|
66
77
|
}
|
|
78
|
+
function selectForProfile(skills, profile) {
|
|
79
|
+
if (profile === null) return {
|
|
80
|
+
skills: [...skills],
|
|
81
|
+
unavailable: null
|
|
82
|
+
};
|
|
83
|
+
const available = [];
|
|
84
|
+
const unavailable = [];
|
|
85
|
+
for (const skill of skills) {
|
|
86
|
+
const failure = checkFeatures(skill.requires, profile);
|
|
87
|
+
if (failure === null) available.push(skill);
|
|
88
|
+
else unavailable.push({
|
|
89
|
+
name: skill.name,
|
|
90
|
+
failure
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
skills: available,
|
|
95
|
+
unavailable
|
|
96
|
+
};
|
|
97
|
+
}
|
|
67
98
|
function findSkillByName(all, name) {
|
|
68
99
|
const hit = all.find((s) => s.name === name);
|
|
69
100
|
if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
|
|
@@ -126,6 +157,7 @@ function discoverSkills(dirs) {
|
|
|
126
157
|
name: fm.name,
|
|
127
158
|
description: fm.description,
|
|
128
159
|
hidden: fm.hidden,
|
|
160
|
+
requires: parseFeatureNames(fm.requires, `skill ${fm.name}`),
|
|
129
161
|
dir: skillDir
|
|
130
162
|
});
|
|
131
163
|
}
|
|
@@ -134,9 +166,10 @@ function discoverSkills(dirs) {
|
|
|
134
166
|
return skills;
|
|
135
167
|
}
|
|
136
168
|
function readFrontmatterFromSkill(skillDir) {
|
|
137
|
-
const
|
|
169
|
+
const skillMd = join(skillDir, SKILL_MD_FILENAME);
|
|
170
|
+
const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
|
|
138
171
|
if (prefix === null) return null;
|
|
139
|
-
return parseFrontmatter(prefix);
|
|
172
|
+
return parseFrontmatter(prefix, skillMd);
|
|
140
173
|
}
|
|
141
174
|
function readFilePrefix(path, maxBytes) {
|
|
142
175
|
let fd;
|
|
@@ -154,18 +187,17 @@ function readFilePrefix(path, maxBytes) {
|
|
|
154
187
|
closeSync(fd);
|
|
155
188
|
}
|
|
156
189
|
}
|
|
157
|
-
function parseFrontmatter(content) {
|
|
190
|
+
function parseFrontmatter(content, source) {
|
|
158
191
|
const trimmed = content.trimStart();
|
|
159
|
-
if (!trimmed.startsWith(FRONTMATTER_FENCE))
|
|
192
|
+
if (!trimmed.startsWith(FRONTMATTER_FENCE)) throw new ConfigError(`${source}: missing frontmatter`);
|
|
160
193
|
const afterOpening = trimmed.slice(3);
|
|
161
194
|
const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
|
|
162
|
-
if (closingIndex < 0)
|
|
163
|
-
|
|
164
|
-
if (!result.ok) return null;
|
|
165
|
-
return result.value;
|
|
195
|
+
if (closingIndex < 0) throw new ConfigError(`${source}: unterminated frontmatter`);
|
|
196
|
+
return parseYaml(afterOpening.slice(0, closingIndex), Frontmatter, { source });
|
|
166
197
|
}
|
|
167
198
|
function readSkillContent(info, opts) {
|
|
168
|
-
const
|
|
199
|
+
const features = opts.profile === null ? null : opts.profile.features;
|
|
200
|
+
const body = resolveSections(readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8"), features, `skill ${info.name}`);
|
|
169
201
|
if (!opts.includeExtras) return {
|
|
170
202
|
name: info.name,
|
|
171
203
|
description: info.description,
|
|
@@ -173,14 +205,70 @@ function readSkillContent(info, opts) {
|
|
|
173
205
|
references: [],
|
|
174
206
|
templates: []
|
|
175
207
|
};
|
|
208
|
+
const references = collectExtraFiles(info.dir, SKILL_REFERENCES_DIR).map((file) => ({
|
|
209
|
+
path: file.path,
|
|
210
|
+
content: resolveSections(file.content, features, `skill ${info.name} (${file.path})`)
|
|
211
|
+
}));
|
|
176
212
|
return {
|
|
177
213
|
name: info.name,
|
|
178
214
|
description: info.description,
|
|
179
215
|
body,
|
|
180
|
-
references
|
|
216
|
+
references,
|
|
181
217
|
templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
|
|
182
218
|
};
|
|
183
219
|
}
|
|
220
|
+
function parseFeatureNames(names, where) {
|
|
221
|
+
const known = [];
|
|
222
|
+
const unknown = [];
|
|
223
|
+
for (const name of names) if (isFeatureName(name)) known.push(name);
|
|
224
|
+
else unknown.push(name);
|
|
225
|
+
if (unknown.length > 0) throw new ConfigError(`${where}: unknown feature in requires: ${unknown.join(", ")} (known: ${FEATURE_NAMES.join(", ")})`);
|
|
226
|
+
return known;
|
|
227
|
+
}
|
|
228
|
+
function resolveSections(text, features, where) {
|
|
229
|
+
const out = [];
|
|
230
|
+
let open = null;
|
|
231
|
+
let collapseBlank = false;
|
|
232
|
+
for (const [index, line] of text.split("\n").entries()) {
|
|
233
|
+
const lineNumber = index + 1;
|
|
234
|
+
const trimmed = line.trim();
|
|
235
|
+
if (SECTION_OPEN.test(trimmed)) {
|
|
236
|
+
if (open !== null) throw new ConfigError(`${where}: nested requires section at line ${lineNumber} (opened at line ${open.line})`);
|
|
237
|
+
const named = parseFeatureNames(sectionFeatureNames(trimmed), `${where} line ${lineNumber}`);
|
|
238
|
+
if (named.length === 0) throw new ConfigError(`${where}: requires section at line ${lineNumber} names no feature`);
|
|
239
|
+
open = {
|
|
240
|
+
line: lineNumber,
|
|
241
|
+
met: features === null || named.every((name) => features[name])
|
|
242
|
+
};
|
|
243
|
+
collapseBlank = dropMarker(out, line, features);
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (SECTION_CLOSE.test(trimmed)) {
|
|
247
|
+
if (open === null) throw new ConfigError(`${where}: requires section closed at line ${lineNumber} was never opened`);
|
|
248
|
+
collapseBlank = dropMarker(out, line, features);
|
|
249
|
+
open = null;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (SECTION_MARKER_TEXT.test(line)) throw new ConfigError(`${where}: a requires marker must be on its own line (line ${lineNumber})`);
|
|
253
|
+
if (collapseBlank) {
|
|
254
|
+
collapseBlank = false;
|
|
255
|
+
if (trimmed === "") continue;
|
|
256
|
+
}
|
|
257
|
+
if (open === null || open.met) out.push(line);
|
|
258
|
+
}
|
|
259
|
+
if (open !== null) throw new ConfigError(`${where}: requires section opened at line ${open.line} is never closed`);
|
|
260
|
+
return out.join("\n");
|
|
261
|
+
}
|
|
262
|
+
function dropMarker(out, marker, features) {
|
|
263
|
+
if (features === null) {
|
|
264
|
+
out.push(marker);
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
return out.length === 0 || out[out.length - 1] === "";
|
|
268
|
+
}
|
|
269
|
+
function sectionFeatureNames(marker) {
|
|
270
|
+
return parseCsv(marker.replace(SECTION_OPEN_PREFIX, "").replace(MARKER_END, ""));
|
|
271
|
+
}
|
|
184
272
|
function collectExtraFiles(skillDir, subdirName) {
|
|
185
273
|
const subdir = join(skillDir, subdirName);
|
|
186
274
|
if (!isDirectory(subdir)) return [];
|
|
@@ -213,4 +301,4 @@ function isFile(path) {
|
|
|
213
301
|
}
|
|
214
302
|
}
|
|
215
303
|
//#endregion
|
|
216
|
-
export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n,
|
|
304
|
+
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-CmVCLBDz.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-DoTiQc3D.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-B89DUSvw.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-Bwg-5p08.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-Cr5zHb0D.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-Bf014rFm.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { snippet_default as default };
|
|
@@ -7,7 +7,6 @@ const Snippet = z.object({
|
|
|
7
7
|
content: z.string(),
|
|
8
8
|
archived: z.boolean(),
|
|
9
9
|
collection_id: z.number().int().nullable(),
|
|
10
|
-
worktree_id: z.number().int().positive().nullable().optional(),
|
|
11
10
|
creator_id: z.number().int(),
|
|
12
11
|
entity_id: z.string().nullable(),
|
|
13
12
|
template_tags: z.record(z.string(), z.unknown()).nullable(),
|
|
@@ -19,16 +18,14 @@ const SnippetCompact = Snippet.pick({
|
|
|
19
18
|
name: true,
|
|
20
19
|
description: true,
|
|
21
20
|
archived: true,
|
|
22
|
-
collection_id: true
|
|
23
|
-
worktree_id: true
|
|
21
|
+
collection_id: true
|
|
24
22
|
}).strip();
|
|
25
23
|
const snippetName = z.string().regex(/^(?!\s)[^}]*$/, "snippet names cannot include '}' or start with spaces");
|
|
26
24
|
const SnippetCreateInput = z.object({
|
|
27
25
|
name: snippetName,
|
|
28
26
|
content: z.string(),
|
|
29
27
|
description: z.string().nullable().optional(),
|
|
30
|
-
collection_id: z.number().int().positive().nullable().optional()
|
|
31
|
-
worktree_id: z.number().int().positive().nullable().optional()
|
|
28
|
+
collection_id: z.number().int().positive().nullable().optional()
|
|
32
29
|
}).loose();
|
|
33
30
|
const SnippetUpdateInput = z.object({
|
|
34
31
|
name: snippetName.nullable().optional(),
|
|
@@ -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-G1K47Nvn.mjs";
|
|
1
|
+
import { I as outputFlags, K as ConfigError, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
|
|
2
|
+
import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
|
|
3
|
+
import { c as SyncStashResult } from "./git-sync-BDnxPrqU.mjs";
|
|
4
|
+
import { n as parseWaitFlags, t as gitSyncWaitFlags } from "./wait-flags-DiQ_kRjZ.mjs";
|
|
5
|
+
import { s as syncStashView } from "./git-sync-DxD_ng48.mjs";
|
|
6
|
+
import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-BACcrs0i.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,11 +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
|
-
},
|
|
19
|
-
worktree: "main-only",
|
|
14
|
+
requires: ["gitSync.stash"],
|
|
20
15
|
args: {
|
|
21
16
|
...outputFlags,
|
|
22
17
|
...profileFlag,
|