@metabase/cli 0.3.1 → 0.3.2-alpha.fix-transform-test-ee-path.041c793
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-CYDUm_XO.mjs → add-collection-73X1DmCM.mjs} +6 -9
- package/dist/{alert-ClyhtxIz.mjs → alert-BB38lWSL.mjs} +7 -7
- package/dist/{alerts-Dt3D1gcz.mjs → alerts-DxyzqLSU.mjs} +7 -7
- package/dist/{append-Bl_Ensmr.mjs → append-CHme1Enm.mjs} +5 -5
- package/dist/{archive-DSMqHRr1.mjs → archive-BGiDxu8O.mjs} +4 -4
- package/dist/{archive-D3a3Wgz0.mjs → archive-BMyvyf62.mjs} +4 -4
- package/dist/{archive-BdHXQg4I.mjs → archive-C4Y2B58q.mjs} +4 -4
- package/dist/{archive-CWceyy8x.mjs → archive-CP5Hlqjw.mjs} +5 -5
- package/dist/{archive-BOyKhNOz.mjs → archive-Cq3fnc0v2.mjs} +6 -6
- package/dist/{archive-DVGDg8mP.mjs → archive-CqKqNdUh.mjs} +6 -6
- package/dist/{archive-DDru3vdy.mjs → archive-Czo5T0Lp.mjs} +4 -4
- package/dist/{archive-nKD3mOB8.mjs → archive-DBcxZwLd.mjs} +6 -6
- package/dist/{archive-CNblz55j.mjs → archive-DKFPJ9j3.mjs} +6 -6
- package/dist/{archive-BJZ7Dace.mjs → archive-DPL1qOuL.mjs} +6 -6
- package/dist/{archive-DiGxCojL.mjs → archive-eS-XA74p.mjs} +4 -4
- package/dist/{auth-aCksg8q2.mjs → auth-6YyB0HNB.mjs} +5 -5
- package/dist/{body-DxRSAMNC.mjs → body-OjAWKVaU.mjs} +3 -3
- package/dist/{branches-_0VWR2Zm.mjs → branches-D5YLVFDK.mjs} +4 -7
- package/dist/{cancel-ctpVE8uC.mjs → cancel-DeRIq1YJ.mjs} +4 -4
- package/dist/{cancel-task-FtxBka-M.mjs → cancel-task-CqExODVm.mjs} +5 -8
- package/dist/card-BMSqofd7.mjs +24 -0
- package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
- package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
- package/dist/{cards-DHOWAvfv.mjs → cards-B813G9I5.mjs} +7 -7
- package/dist/cli.mjs +572 -69
- package/dist/client-cJ7aw0Gt.mjs +4092 -0
- package/dist/collection-BfNg7tEg.mjs +20 -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-CEoQ7G08.mjs → collection-namespace-CVzDgJV0.mjs} +2 -2
- package/dist/{content-translation-DNKerjS3.mjs → content-translation-QKWt9l76.mjs} +3 -3
- package/dist/{create-e650zxzX.mjs → create-4UnoQvsy.mjs} +5 -5
- package/dist/{create-DaYRnK5P.mjs → create-BJad6MR82.mjs} +8 -8
- package/dist/{create-CcLchJAN.mjs → create-BLiB2xqo.mjs} +7 -7
- package/dist/{create-C9vy4ZG6.mjs → create-BWp6L_dW.mjs} +5 -5
- package/dist/{create-C78g8Crb.mjs → create-Bef5eBCA.mjs} +5 -5
- package/dist/{create-F4Lf09xq.mjs → create-CMV3qlzJ.mjs} +4 -4
- package/dist/{create-DmvoibX8.mjs → create-CWGsiFvU.mjs} +4 -4
- package/dist/{create-C3IaXXty.mjs → create-CoFg1p6m.mjs} +4 -4
- package/dist/{create-CEydRMWS.mjs → create-CvIeb1NU.mjs} +7 -7
- package/dist/{create-vlrlY-2E.mjs → create-CvpeAcFc.mjs} +4 -4
- package/dist/{create-wJR4CxHA.mjs → create-D50TxVTk.mjs} +5 -8
- package/dist/{create-CLG2-bso.mjs → create-DEBgYRlM.mjs} +6 -6
- package/dist/{create-7ddYK4TA.mjs → create-DJm0YuLW.mjs} +6 -6
- package/dist/{create-BdPVWYSi.mjs → create-DmKwDQCY2.mjs} +6 -6
- package/dist/{create-branch-B8C7jl-J.mjs → create-branch-BN5iH-GM.mjs} +5 -9
- package/dist/{create-DIVhBIyE.mjs → create-bvpl6Fn5.mjs} +11 -7
- package/dist/create-uanpKsPo.mjs +34 -0
- package/dist/{csv-BLPJtlSC.mjs → csv-BhuX9fwh.mjs} +5 -5
- package/dist/{current-task-C-ldJbWE.mjs → current-task-BMt2NeqV.mjs} +5 -8
- package/dist/{dashboard-CtO_3EfC.mjs → dashboard-Ct_ajSYI.mjs} +10 -10
- package/dist/{dashboard-CKUR8ZpQ.mjs → dashboard-D0hwTC-f.mjs} +11 -2
- package/dist/{dashboard-BlbNszi8.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-xXselnBq.mjs → db-B_LW2VE-.mjs} +7 -7
- package/dist/{delete-ZJJyqsRh.mjs → delete-BOcPK_H9.mjs} +5 -5
- package/dist/{delete-BZZHw6pm.mjs → delete-CowGO4rh.mjs} +5 -5
- package/dist/{delete-D6WxgWRp.mjs → delete-D0f7VatX.mjs} +5 -5
- package/dist/{delete-BwSPQy7m.mjs → delete-D2bUV6uo.mjs} +5 -5
- package/dist/delete-DZ_ICQug.mjs +44 -0
- package/dist/{delete-BZwAOQxG.mjs → delete-Ur7b11no.mjs} +5 -5
- package/dist/{delete-runtime-D74s6vhu.mjs → delete-runtime-BKEzJn22.mjs} +1 -2
- package/dist/{delete-table-CJktZE3w.mjs → delete-table-Dd8X573t.mjs} +5 -5
- package/dist/{dependencies-BdqIqEIy.mjs → dependencies-XDVLBwko.mjs} +7 -7
- package/dist/{dirty-BW2As2wS.mjs → dirty-k-JmGLsS.mjs} +6 -9
- package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
- package/dist/document-BW9iow8R.mjs +19 -0
- package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
- package/dist/{download-mfFJ9oRS.mjs → download-CQjPIYDO.mjs} +3 -6
- package/dist/{eid-DZ-4t2xe.mjs → eid-CNTKDgwj.mjs} +4 -5
- package/dist/{events-D6yFmXP1.mjs → events-BshWlkDp.mjs} +5 -5
- package/dist/{export-DYZjz1WP.mjs → export-Dq6ecU8h.mjs} +7 -10
- package/dist/{field-BJ54wmIX.mjs → field-Bo2ISMO4.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-FUWCgPOa.mjs → fields-CVctqn5G.mjs} +7 -7
- package/dist/{get-BraVQ1FJ.mjs → get-7xTeNGAo.mjs} +6 -6
- package/dist/{get-LAew34ID.mjs → get-8b5Sh50q.mjs} +6 -6
- package/dist/{get-CWnriw33.mjs → get-B4RgW-VT.mjs} +6 -6
- package/dist/{get-C_5AbfpO.mjs → get-BD81MHl_.mjs} +4 -4
- package/dist/{get-ByZJf9nO.mjs → get-Bl3OmlBP.mjs} +5 -5
- package/dist/get-BtTetWzm.mjs +32 -0
- package/dist/{get-_ggLr1tY.mjs → get-BvSA_mmf.mjs} +6 -6
- package/dist/{get-DhkltKIV.mjs → get-BvgEF--n.mjs} +4 -4
- package/dist/{get-DYaQpixt.mjs → get-C5sWciaE.mjs} +6 -6
- package/dist/get-CO6X4nZH.mjs +93 -0
- package/dist/{get-DVyesErX.mjs → get-CTPvdcud.mjs} +6 -6
- package/dist/{get-DMECsioX.mjs → get-CrpwxWOV.mjs} +4 -4
- package/dist/{get-Ba2HRdrx.mjs → get-D4oGhZWX.mjs} +6 -6
- package/dist/{get-CsN7NBI0.mjs → get-Df6cGHCM.mjs} +4 -4
- package/dist/{get-BWl3vzsf.mjs → get-DfMVlz64.mjs} +6 -6
- package/dist/{get-C5q49Dgx.mjs → get-Dr-U321T2.mjs} +6 -6
- package/dist/{get-DAOSGt5Z.mjs → get-Dw7jAno3.mjs} +6 -6
- package/dist/{get-DRJtsS1_.mjs → get-PWhOdz1z.mjs} +4 -4
- package/dist/{get-CQ0-fFWP.mjs → get-RslzBaXx.mjs} +5 -8
- package/dist/{get-run-oH4dRCBx.mjs → get-run-CZdDqfUj.mjs} +6 -6
- package/dist/{get-DCutQeiV.mjs → get-wjIgUlNl.mjs} +4 -4
- package/dist/git-sync-BmoRk0UV.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-CnmyIw_7.mjs → has-remote-changes-i-3MVxat.mjs} +5 -8
- package/dist/{import-B7Si-bSI.mjs → import-DWEKejya.mjs} +7 -10
- package/dist/{input-DH9i67x_.mjs → input-DEvkIjGr.mjs} +1 -1
- package/dist/{is-dirty-BOH_VEA8.mjs → is-dirty-C5ipqd4v.mjs} +3 -6
- package/dist/{items-DouHkWev.mjs → items-hKJ2ZDwy.mjs} +7 -7
- package/dist/{key-BEhqIzIQ.mjs → key-PYetuQ13.mjs} +1 -1
- package/dist/{library-1J_4Dicw.mjs → library-B7_04UVK.mjs} +5 -5
- package/dist/library-BPIzb3K_.mjs +81 -0
- package/dist/{library-DfYAT2Ep.mjs → library-PGCfm0UA.mjs} +1 -1
- package/dist/{list-BK_6VNm_.mjs → list-1vdClKSE.mjs} +4 -4
- package/dist/{list-DWLGpMvr.mjs → list-6myofqMv.mjs} +7 -7
- package/dist/{list-DhViDVx_.mjs → list-B-9QOX9Y.mjs} +6 -6
- package/dist/{list-aKUk-a1Y.mjs → list-Bs7_Rysg.mjs} +7 -7
- package/dist/list-CHuhMXet.mjs +35 -0
- package/dist/{list-DptEWB5Y.mjs → list-CLZU_EOf.mjs} +4 -4
- package/dist/{list-B2Ddf4W0.mjs → list-Cen-7uTo.mjs} +5 -5
- package/dist/{list-D2IYZ6lk.mjs → list-CgH-H-O6.mjs} +6 -6
- package/dist/{list-BeMYIeiI.mjs → list-CjNXskB4.mjs} +7 -7
- package/dist/{list-C1bAtgO1.mjs → list-CmFh1GQ_.mjs} +4 -4
- package/dist/{list-Cy0w4Fap.mjs → list-D6tTvYUP.mjs} +4 -4
- package/dist/{list-C7UvO3Uw.mjs → list-DI820W6w.mjs} +6 -6
- package/dist/{list-D25ofn4v.mjs → list-DKZnQ4Ts.mjs} +7 -7
- package/dist/{list-C0zJ2ehz.mjs → list-DKcC4cm0.mjs} +6 -6
- package/dist/{list-qs9wAtC3.mjs → list-DfRqNH1N.mjs} +4 -4
- package/dist/list-DjwnsyXM.mjs +60 -0
- package/dist/{list-sDpy4nDU.mjs → list-VNC-_E59.mjs} +6 -6
- package/dist/{list-DJK9_BEF.mjs → list-eKDT1XXk.mjs} +14 -13
- package/dist/{list-BXlTYsYA.mjs → list-oX2SMzxZ.mjs} +4 -4
- package/dist/{login-BmyCAfRV.mjs → login-DumZaWXK.mjs} +18 -15
- package/dist/{logout-DUR32q0V.mjs → logout-BsXPRc-3.mjs} +3 -4
- package/dist/{measure-DdVp-8jw.mjs → measure-BFxkbAoa.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-CBR-cBev.mjs → parameter-values-CoF9Hx1p.mjs} +5 -6
- package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
- package/dist/{parse-id-B3YwNojT.mjs → parse-id-DmFJgpY6.mjs} +1 -1
- package/dist/{parse-ref-ibKVB0J4.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
- package/dist/{path-D8BQmEhL.mjs → path-BQ4lRDyN.mjs} +5 -5
- package/dist/{poll-75SvT7Zv.mjs → poll-CZeXepUQ.mjs} +2 -2
- package/dist/{preflight-CoF1Em99.mjs → preflight-BTQe4swo.mjs} +3 -4
- package/dist/{process-DBOOrmET.mjs → process-CTrfxxaC.mjs} +1 -1
- package/dist/{publish-Cb7XrQ3X.mjs → publish-CFB2Cc5A.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-D35B588l.mjs → query-BJbUnAHf.mjs} +10 -12
- package/dist/query-CV2KCS5O.mjs +114 -0
- package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
- package/dist/{remove-collection-DJem6V26.mjs → remove-collection-D3yvKH3e.mjs} +6 -9
- package/dist/{render-CI93iP0I.mjs → render-BJRCs7rA.mjs} +13 -2
- package/dist/{replace-CtsWICrD.mjs → replace-uj4WTqx_.mjs} +5 -5
- package/dist/{rescan-values-CaXUL6z5.mjs → rescan-values-CzxQU318.mjs} +6 -6
- package/dist/{run-CM-Amtbf.mjs → run-B2f_omHu.mjs} +26 -14
- package/dist/run-DlO1J1Sx.mjs +50 -0
- package/dist/{run-BeLm17F4.mjs → run-yX2dtmE5.mjs} +6 -6
- package/dist/{runs-DFG63zgr.mjs → runs-DzUO45wU.mjs} +7 -7
- package/dist/{runtime-z8rra6-I.mjs → runtime-arKqJqIT.mjs} +994 -252
- package/dist/{schema-tables-COAHkIcy.mjs → schema-tables-DZCNzuQ6.mjs} +7 -7
- package/dist/{schemas-BX5BATiV.mjs → schemas-2ejqaVsG.mjs} +5 -5
- package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
- package/dist/{search-CPvvmhdt.mjs → search-DcihauDZ.mjs} +6 -6
- package/dist/{segment-C62L6BI3.mjs → segment-BQT2poPG.mjs} +6 -6
- package/dist/{selectors-P4QnrORk.mjs → selectors-BzestDld.mjs} +3 -3
- package/dist/{send-PZh5IKF8.mjs → send-DMxoLFo7.mjs} +4 -4
- package/dist/{set-DbCtUoFd.mjs → set-CDmiD0vv.mjs} +5 -5
- package/dist/{set-active-DL4QzWDO.mjs → set-active-RrvWR9NY.mjs} +5 -5
- package/dist/{setting-BlRcZbhC.mjs → setting-BiBLCcxz.mjs} +4 -4
- package/dist/{setup-D_SLaC-3.mjs → setup-DYsTzkWO.mjs} +4 -4
- package/dist/{signal-CMd0EFUa.mjs → signal-k7cm5N6h.mjs} +11 -2
- package/dist/skill-list-D9_1Pmt7.mjs +76 -0
- package/dist/skills-BPHXUfeL.mjs +351 -0
- package/dist/{skills-D991LB1M.mjs → skills-C3bxxC6a.mjs} +3 -3
- package/dist/snippet-BtfxE60H.mjs +19 -0
- package/dist/{stash-DyBxFoP6.mjs → stash-DdheS0Ad.mjs} +7 -11
- package/dist/{status-cfDHqK2Q.mjs → status-BuIzXRX1.mjs} +12 -11
- package/dist/{status-DUsiogz5.mjs → status-CXouQJ31.mjs} +11 -9
- package/dist/{subscription-Bn0AU7GN.mjs → subscription-CJ8Igs1U.mjs} +6 -6
- package/dist/{subscriptions-DwqjCVlc.mjs → subscriptions-D0NpGvCQ.mjs} +7 -7
- package/dist/{summary-BGwSNzf4.mjs → summary-D04S8gGj.mjs} +6 -6
- package/dist/{sync-schema-dtkDOAKe.mjs → sync-schema-DrA5zkdl.mjs} +7 -7
- package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
- package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
- package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
- package/dist/{table-BJoEAoCU.mjs → table-Dntbz7Q2.mjs} +5 -5
- package/dist/timeline-8jwsldo3.mjs +21 -0
- package/dist/{timeline-event-BsF7YqzZ.mjs → timeline-event-BbB1xEdI.mjs} +6 -6
- 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-B-1YAbvy.mjs +22 -0
- package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
- package/dist/transform-m6s4kkWU.mjs +28 -0
- package/dist/{transform-tag-VM9R7Q_M.mjs → transform-tag-PjryheLF.mjs} +5 -5
- package/dist/transform-test-BjjCQ2xm.mjs +169 -0
- package/dist/transform-test-DSTkKKNC.mjs +16 -0
- package/dist/transform-test-gzDcbypy.mjs +25 -0
- package/dist/{transforms-BjACGbBp.mjs → transforms-CijX3VE7.mjs} +7 -7
- package/dist/{tree-BwS6JAmk.mjs → tree-Cmb3O6rH.mjs} +4 -5
- package/dist/{unpublish-DWdPnENY.mjs → unpublish-DkP_AcK5.mjs} +4 -7
- package/dist/{update-DKEHY-gt.mjs → update-8UmD1prT.mjs} +7 -7
- package/dist/{update-C1FBVLfC.mjs → update-BFyRBc-H.mjs} +8 -8
- package/dist/{update-tLIhVIPp.mjs → update-BrXGg3QO.mjs} +8 -8
- package/dist/{update-DCjAjihm.mjs → update-C91m9YAR.mjs} +6 -6
- package/dist/{update-BpPaacCF.mjs → update-COcx61Ur.mjs} +6 -6
- package/dist/update-Ci8YL4_2.mjs +41 -0
- package/dist/{update-BR_vkkd1.mjs → update-CtLbFCd_.mjs} +5 -5
- package/dist/{update-DTmRHBik.mjs → update-D6Zzvc7F.mjs} +7 -7
- package/dist/{update-cqR1U6DU.mjs → update-D8htjzNJ.mjs} +5 -5
- package/dist/{update-B2CF2DK4.mjs → update-D9kOTr0n.mjs} +6 -6
- package/dist/{update-C4y3iQsv.mjs → update-DPTio6i1.mjs} +7 -7
- package/dist/{update-DsZttiSC.mjs → update-DlWB9s0v.mjs} +5 -5
- package/dist/{update-BCT9qpVr.mjs → update-DubrpPbz.mjs} +5 -5
- package/dist/{update-3idz42uD.mjs → update-Dz47cKBk.mjs} +7 -7
- package/dist/{update-DkviXwSg.mjs → update-FCP5Lop2.mjs} +7 -7
- package/dist/{update-DlTaD1x3.mjs → update-KSHnb6vB.mjs} +9 -9
- package/dist/{update-dashcard-DlE_bb2F.mjs → update-dashcard-BlibHa5o.mjs} +7 -7
- package/dist/{upgrade-mNV7XuJG.mjs → upgrade-EwL6wPSY.mjs} +6 -8
- package/dist/upload-BZshRJIM.mjs +13 -0
- package/dist/{upload-CEGVxmYB.mjs → upload-D0KaTqUE.mjs} +4 -7
- package/dist/{upload-CD555ui1.mjs → upload-Do2PBSeH.mjs} +2 -2
- package/dist/{uuid-C4hqn3kA.mjs → uuid-DjKLDIVE.mjs} +10 -7
- package/dist/{validate-query-DaGYSmpQ.mjs → validate-query-D6_ad-Gi.mjs} +3 -4
- package/dist/{validate-BWchyW0V.mjs → validate-xR_MHBNR.mjs} +69 -23
- package/dist/{values-C0O3eNaW.mjs → values-Dc9612_L.mjs} +6 -6
- package/dist/{verify-DfTjYF7s.mjs → verify-DVN1eqXZ.mjs} +3 -18
- package/dist/{wait-WZmFenN_.mjs → wait-C-ovOTAZ.mjs} +7 -10
- package/dist/{wait-flags-BbfDSP8R.mjs → wait-flags-BQNmuvIj.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 -15
- package/skill-data/dashboard/SKILL.md +1 -1
- 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 +84 -115
- package/skill-data/mbql/references/operators.md +77 -231
- package/skill-data/metadata/SKILL.md +1 -1
- package/skill-data/metadata/references/semantic-types.md +7 -1
- package/skill-data/native-sql/SKILL.md +8 -9
- package/skill-data/native-sql/references/template-tags.md +27 -27
- package/skill-data/notification/SKILL.md +7 -1
- package/skill-data/transform/SKILL.md +76 -4
- 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 +260 -0
- package/skill-data/visualization/SKILL.md +13 -6
- package/skill-data/visualization/references/settings.md +13 -11
- package/skills/metabase-cli/SKILL.md +1 -1
- package/dist/card-CGCXbdmD.mjs +0 -24
- package/dist/client-mKuHg_sc.mjs +0 -2218
- package/dist/collection-D8Tk8i3a.mjs +0 -20
- package/dist/document-KbcHhzFz.mjs +0 -19
- package/dist/get-BC8J8BXB.mjs +0 -80
- package/dist/git-sync-Dik8nKfw.mjs +0 -28
- package/dist/library-ClLgrAXy.mjs +0 -19
- package/dist/list-CW5PdYCX.mjs +0 -98
- package/dist/network-error-D6CiOEBw.mjs +0 -431
- package/dist/predicates-Bkm2IoeX.mjs +0 -170
- package/dist/query-C256WBYG.mjs +0 -87
- package/dist/skills-DTCrMcix.mjs +0 -216
- package/dist/snippet-DTDO55Cg.mjs +0 -19
- package/dist/timeline-DcXPshcT.mjs +0 -21
- package/dist/transform-Dsf_wHAj.mjs +0 -28
- package/dist/transform-job-B1yLv5l-.mjs +0 -22
- package/dist/upload-DsYCf5kB.mjs +0 -13
package/dist/cli.mjs
CHANGED
|
@@ -1,10 +1,184 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as ConfigError, m as toMetabaseError, n as AbortError, t as isPlainObject } from "./predicates-Bkm2IoeX.mjs";
|
|
3
2
|
import { defineCommand, renderUsage, runMain } from "citty";
|
|
4
|
-
import { z } from "zod";
|
|
3
|
+
import { ZodError, core, z } from "zod";
|
|
5
4
|
import tls from "node:tls";
|
|
6
5
|
import { confirm, isCancel, password, select, text } from "@clack/prompts";
|
|
7
6
|
import Table from "cli-table3";
|
|
7
|
+
//#region ../client/src/json-pointer.ts
|
|
8
|
+
function escapeJsonPointerSegment(key) {
|
|
9
|
+
if (typeof key === "number") return String(key);
|
|
10
|
+
return (typeof key === "symbol" ? key.toString() : key).replaceAll("~", "~0").replaceAll("/", "~1");
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region ../client/src/version/known-range.ts
|
|
14
|
+
const KNOWN_RANGE = {
|
|
15
|
+
min: 58,
|
|
16
|
+
max: 64
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region ../client/src/errors.ts
|
|
20
|
+
var MetabaseError = class extends Error {
|
|
21
|
+
get userMessage() {
|
|
22
|
+
return this.message;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
var NetworkError = class extends MetabaseError {
|
|
26
|
+
category = "network";
|
|
27
|
+
isRetryable = true;
|
|
28
|
+
developerDetail;
|
|
29
|
+
constructor(message, developerDetail) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.name = "NetworkError";
|
|
32
|
+
this.developerDetail = developerDetail;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var TimeoutError = class extends MetabaseError {
|
|
36
|
+
category = "timeout";
|
|
37
|
+
isRetryable = true;
|
|
38
|
+
developerDetail;
|
|
39
|
+
constructor(message, developerDetail) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = "TimeoutError";
|
|
42
|
+
this.developerDetail = developerDetail;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
var ValidationError = class extends MetabaseError {
|
|
46
|
+
category = "validation";
|
|
47
|
+
isRetryable = false;
|
|
48
|
+
developerDetail;
|
|
49
|
+
constructor(message, developerDetail) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.name = "ValidationError";
|
|
52
|
+
this.developerDetail = developerDetail;
|
|
53
|
+
}
|
|
54
|
+
get userMessage() {
|
|
55
|
+
const issues = this.developerDetail.zodIssues;
|
|
56
|
+
if (issues.length === 0) return this.message;
|
|
57
|
+
return `${this.message}\n${formatIssueLines(issues, VALIDATION_ISSUE_FORMAT)}`;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const VALIDATION_MAX_ISSUES = 10;
|
|
61
|
+
const RESPONSE_SHAPE_MAX_ISSUES = 5;
|
|
62
|
+
const VALIDATION_ISSUE_FORMAT = {
|
|
63
|
+
max: VALIDATION_MAX_ISSUES,
|
|
64
|
+
formatIssue: (issue) => `${formatZodIssuePointer(issue.path)}: ${issue.message}`
|
|
65
|
+
};
|
|
66
|
+
const RESPONSE_SHAPE_ISSUE_FORMAT = {
|
|
67
|
+
max: RESPONSE_SHAPE_MAX_ISSUES,
|
|
68
|
+
formatIssue: formatZodIssue
|
|
69
|
+
};
|
|
70
|
+
function formatIssueLines(issues, format) {
|
|
71
|
+
const head = issues.slice(0, format.max).map(format.formatIssue);
|
|
72
|
+
const overflow = issues.length - format.max;
|
|
73
|
+
if (overflow > 0) head.push(`... and ${overflow} more`);
|
|
74
|
+
return head.map((line) => ` ${line}`).join("\n");
|
|
75
|
+
}
|
|
76
|
+
function formatZodIssuePointer(path) {
|
|
77
|
+
if (path.length === 0) return "/";
|
|
78
|
+
return path.map((key) => `/${escapeJsonPointerSegment(key)}`).join("");
|
|
79
|
+
}
|
|
80
|
+
const RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION = "Metabase returned unexpected response shape";
|
|
81
|
+
var ResponseShapeError = class ResponseShapeError extends MetabaseError {
|
|
82
|
+
category = "response-shape";
|
|
83
|
+
isRetryable = false;
|
|
84
|
+
developerDetail;
|
|
85
|
+
constructor(message, developerDetail) {
|
|
86
|
+
super(message);
|
|
87
|
+
this.name = "ResponseShapeError";
|
|
88
|
+
this.developerDetail = developerDetail;
|
|
89
|
+
}
|
|
90
|
+
static fromZodIssues(developerDetail) {
|
|
91
|
+
return new ResponseShapeError(formatResponseShapeMessage(developerDetail), developerDetail);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
function formatResponseShapeMessage(detail) {
|
|
95
|
+
const { zodIssues: issues, serverTag, serverSkew } = detail;
|
|
96
|
+
const lead = serverTag === null ? RESPONSE_SHAPE_LEAD_UNKNOWN_VERSION : `On Metabase ${describeServer(serverTag, serverSkew)} the response shape was unexpected`;
|
|
97
|
+
if (issues.length === 0) return lead;
|
|
98
|
+
return `${lead}:\n${formatIssueLines(issues, RESPONSE_SHAPE_ISSUE_FORMAT)}`;
|
|
99
|
+
}
|
|
100
|
+
function describeServer(tag, skew) {
|
|
101
|
+
if (skew === "newer-than-known") return `${tag} (newer than this client supports, up to v${KNOWN_RANGE.max})`;
|
|
102
|
+
if (skew === "development") return `development build ${tag} (newer than every release)`;
|
|
103
|
+
return tag;
|
|
104
|
+
}
|
|
105
|
+
var ConfigError = class extends MetabaseError {
|
|
106
|
+
category = "config";
|
|
107
|
+
isRetryable = false;
|
|
108
|
+
developerDetail = null;
|
|
109
|
+
constructor(message) {
|
|
110
|
+
super(message);
|
|
111
|
+
this.name = "ConfigError";
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
var InternalError = class extends MetabaseError {
|
|
115
|
+
category = "internal";
|
|
116
|
+
isRetryable = false;
|
|
117
|
+
developerDetail = null;
|
|
118
|
+
constructor(message) {
|
|
119
|
+
super(message);
|
|
120
|
+
this.name = "InternalError";
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var AbortError = class extends MetabaseError {
|
|
124
|
+
category = "abort";
|
|
125
|
+
isRetryable = false;
|
|
126
|
+
developerDetail = null;
|
|
127
|
+
constructor(message = "aborted") {
|
|
128
|
+
super(message);
|
|
129
|
+
this.name = "AbortError";
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
var ChainedRequestError = class extends MetabaseError {
|
|
133
|
+
cause;
|
|
134
|
+
constructor(message, cause) {
|
|
135
|
+
super(message);
|
|
136
|
+
this.name = "ChainedRequestError";
|
|
137
|
+
this.cause = cause;
|
|
138
|
+
}
|
|
139
|
+
get category() {
|
|
140
|
+
return this.cause.category;
|
|
141
|
+
}
|
|
142
|
+
get isRetryable() {
|
|
143
|
+
return this.cause.isRetryable;
|
|
144
|
+
}
|
|
145
|
+
get developerDetail() {
|
|
146
|
+
return this.cause.developerDetail;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
var UnknownError = class extends MetabaseError {
|
|
150
|
+
category = "unknown";
|
|
151
|
+
isRetryable = false;
|
|
152
|
+
developerDetail;
|
|
153
|
+
constructor(input) {
|
|
154
|
+
super(input.originalMessage);
|
|
155
|
+
this.name = "UnknownError";
|
|
156
|
+
this.developerDetail = input;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
function toMetabaseError(error) {
|
|
160
|
+
if (error instanceof MetabaseError) return error;
|
|
161
|
+
if (error instanceof ZodError) return new ConfigError(error.issues.map(formatZodIssue).join("; "));
|
|
162
|
+
if (error instanceof Error) return new UnknownError({
|
|
163
|
+
originalMessage: error.message,
|
|
164
|
+
stack: error.stack ?? null
|
|
165
|
+
});
|
|
166
|
+
return new UnknownError({
|
|
167
|
+
originalMessage: String(error),
|
|
168
|
+
stack: null
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function formatZodIssue(issue) {
|
|
172
|
+
const path = core.toDotPath(issue.path);
|
|
173
|
+
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
174
|
+
}
|
|
175
|
+
function isFileNotFoundError(value) {
|
|
176
|
+
return value instanceof Error && "code" in value && value.code === "ENOENT";
|
|
177
|
+
}
|
|
178
|
+
function errorMessage(value) {
|
|
179
|
+
return value instanceof Error ? value.message : String(value);
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
8
182
|
//#region src/runtime/citty.ts
|
|
9
183
|
async function resolveCitty(value) {
|
|
10
184
|
if (value === void 0) return;
|
|
@@ -32,7 +206,16 @@ function flagConsumesValue(token, argsDef) {
|
|
|
32
206
|
//#region src/output/types.ts
|
|
33
207
|
const DEFAULT_MAX_BYTES = 24576;
|
|
34
208
|
function listEnvelopeSchema(item) {
|
|
209
|
+
return z.object(listEnvelopeShape(item));
|
|
210
|
+
}
|
|
211
|
+
function listEnvelopeSchemaWithExtras(item, extras) {
|
|
35
212
|
return z.object({
|
|
213
|
+
...listEnvelopeShape(item),
|
|
214
|
+
...extras
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function listEnvelopeShape(item) {
|
|
218
|
+
return {
|
|
36
219
|
data: z.array(item).describe("The items in this window."),
|
|
37
220
|
returned: z.number().int().nonnegative().describe("Number of items in `data`; a short window is not proof the walk is over."),
|
|
38
221
|
offset: z.number().int().nonnegative().describe("Index of the first item in `data` within the full result set."),
|
|
@@ -44,7 +227,7 @@ function listEnvelopeSchema(item) {
|
|
|
44
227
|
reason: z.literal("max_bytes"),
|
|
45
228
|
bytes: z.number().int().nonnegative()
|
|
46
229
|
}).optional().describe("Present when the `--max-bytes` cap cut the output, not when the data ran out; its `bytes` is what the untruncated answer would have measured, so narrow rows with `--fields` rather than raising the cap.")
|
|
47
|
-
}
|
|
230
|
+
};
|
|
48
231
|
}
|
|
49
232
|
//#endregion
|
|
50
233
|
//#region src/commands/flags.ts
|
|
@@ -175,7 +358,7 @@ function trustSystemCa() {
|
|
|
175
358
|
//#endregion
|
|
176
359
|
//#region package.json
|
|
177
360
|
var name = "@metabase/cli";
|
|
178
|
-
var version = "0.3.
|
|
361
|
+
var version = "0.3.2-alpha.fix-transform-test-ee-path.041c793";
|
|
179
362
|
var description = "Metabase CLI";
|
|
180
363
|
//#endregion
|
|
181
364
|
//#region src/runtime/command-augment.ts
|
|
@@ -195,36 +378,37 @@ const main = defineCommand({
|
|
|
195
378
|
description
|
|
196
379
|
},
|
|
197
380
|
subCommands: {
|
|
198
|
-
auth: () => import("./auth-
|
|
199
|
-
db: () => import("./db-
|
|
200
|
-
table: () => import("./table-
|
|
201
|
-
field: () => import("./field-
|
|
202
|
-
upload: () => import("./upload-
|
|
203
|
-
"content-translation": () => import("./content-translation-
|
|
204
|
-
card: () => import("./card-
|
|
205
|
-
dashboard: () => import("./dashboard-
|
|
206
|
-
subscription: () => import("./subscription-
|
|
207
|
-
alert: () => import("./alert-
|
|
208
|
-
collection: () => import("./collection-
|
|
209
|
-
library: () => import("./library-
|
|
210
|
-
document: () => import("./document-
|
|
211
|
-
transform: () => import("./transform-
|
|
212
|
-
"transform-job": () => import("./transform-job-
|
|
213
|
-
"transform-tag": () => import("./transform-tag-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
381
|
+
auth: () => import("./auth-6YyB0HNB.mjs").then((mod) => mod.default),
|
|
382
|
+
db: () => import("./db-B_LW2VE-.mjs").then((mod) => mod.default),
|
|
383
|
+
table: () => import("./table-Dntbz7Q2.mjs").then((mod) => mod.default),
|
|
384
|
+
field: () => import("./field-Bo2ISMO4.mjs").then((mod) => mod.default),
|
|
385
|
+
upload: () => import("./upload-BZshRJIM.mjs").then((mod) => mod.default),
|
|
386
|
+
"content-translation": () => import("./content-translation-QKWt9l76.mjs").then((mod) => mod.default),
|
|
387
|
+
card: () => import("./card-BMSqofd7.mjs").then((mod) => mod.default),
|
|
388
|
+
dashboard: () => import("./dashboard-Ct_ajSYI.mjs").then((mod) => mod.default),
|
|
389
|
+
subscription: () => import("./subscription-CJ8Igs1U.mjs").then((mod) => mod.default),
|
|
390
|
+
alert: () => import("./alert-BB38lWSL.mjs").then((mod) => mod.default),
|
|
391
|
+
collection: () => import("./collection-BfNg7tEg.mjs").then((mod) => mod.default),
|
|
392
|
+
library: () => import("./library-B7_04UVK.mjs").then((mod) => mod.default),
|
|
393
|
+
document: () => import("./document-BW9iow8R.mjs").then((mod) => mod.default),
|
|
394
|
+
transform: () => import("./transform-m6s4kkWU.mjs").then((mod) => mod.default),
|
|
395
|
+
"transform-job": () => import("./transform-job-B-1YAbvy.mjs").then((mod) => mod.default),
|
|
396
|
+
"transform-tag": () => import("./transform-tag-PjryheLF.mjs").then((mod) => mod.default),
|
|
397
|
+
"transform-test": () => import("./transform-test-DSTkKKNC.mjs").then((mod) => mod.default),
|
|
398
|
+
setting: () => import("./setting-BiBLCcxz.mjs").then((mod) => mod.default),
|
|
399
|
+
search: () => import("./search-DcihauDZ.mjs").then((mod) => mod.default),
|
|
400
|
+
"git-sync": () => import("./git-sync-BmoRk0UV.mjs").then((mod) => mod.default),
|
|
401
|
+
setup: () => import("./setup-DYsTzkWO.mjs").then((mod) => mod.default),
|
|
402
|
+
snippet: () => import("./snippet-BtfxE60H.mjs").then((mod) => mod.default),
|
|
403
|
+
segment: () => import("./segment-BQT2poPG.mjs").then((mod) => mod.default),
|
|
404
|
+
measure: () => import("./measure-BFxkbAoa.mjs").then((mod) => mod.default),
|
|
405
|
+
timeline: () => import("./timeline-8jwsldo3.mjs").then((mod) => mod.default),
|
|
406
|
+
"timeline-event": () => import("./timeline-event-BbB1xEdI.mjs").then((mod) => mod.default),
|
|
407
|
+
eid: () => import("./eid-CNTKDgwj.mjs").then((mod) => mod.default),
|
|
408
|
+
query: () => import("./query-CV2KCS5O.mjs").then((mod) => mod.default),
|
|
409
|
+
uuid: () => import("./uuid-DjKLDIVE.mjs").then((mod) => mod.default),
|
|
410
|
+
upgrade: () => import("./upgrade-EwL6wPSY.mjs").then((mod) => mod.default),
|
|
411
|
+
skills: () => import("./skills-C3bxxC6a.mjs").then((mod) => mod.default)
|
|
228
412
|
}
|
|
229
413
|
});
|
|
230
414
|
setMetabaseAugment(main, {
|
|
@@ -239,9 +423,22 @@ setMetabaseAugment(main, {
|
|
|
239
423
|
}],
|
|
240
424
|
inputSchema: null,
|
|
241
425
|
outputSchema: null,
|
|
242
|
-
|
|
426
|
+
requires: null
|
|
243
427
|
});
|
|
244
428
|
//#endregion
|
|
429
|
+
//#region src/core/profile-refreshed-error.ts
|
|
430
|
+
var ProfileRefreshedError = class extends MetabaseError {
|
|
431
|
+
category;
|
|
432
|
+
isRetryable = false;
|
|
433
|
+
developerDetail;
|
|
434
|
+
constructor(cause, note) {
|
|
435
|
+
super(`${cause.userMessage}\n${note}`);
|
|
436
|
+
this.name = "ProfileRefreshedError";
|
|
437
|
+
this.category = cause.category;
|
|
438
|
+
this.developerDetail = cause.developerDetail;
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
//#endregion
|
|
245
442
|
//#region src/core/env.ts
|
|
246
443
|
const LEGACY_PREFIX = "METABASE_";
|
|
247
444
|
const ENV_URL = "MB_URL";
|
|
@@ -380,6 +577,11 @@ function jsonByteLength(value) {
|
|
|
380
577
|
return Buffer.byteLength(JSON.stringify(value), "utf8");
|
|
381
578
|
}
|
|
382
579
|
//#endregion
|
|
580
|
+
//#region ../client/src/predicates.ts
|
|
581
|
+
function isPlainObject(value) {
|
|
582
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
583
|
+
}
|
|
584
|
+
//#endregion
|
|
383
585
|
//#region src/output/projection.ts
|
|
384
586
|
function projectForList(item, view, opts) {
|
|
385
587
|
const full = opts.format === "text" && opts.fields === void 0 ? false : opts.full;
|
|
@@ -513,8 +715,11 @@ function renderSummary(item, view, summaryText, opts) {
|
|
|
513
715
|
process.stdout.write(body);
|
|
514
716
|
}
|
|
515
717
|
function renderList(envelope, view, opts) {
|
|
718
|
+
renderListWithExtras(envelope, {}, view, opts);
|
|
719
|
+
}
|
|
720
|
+
function renderListWithExtras(envelope, extras, view, opts) {
|
|
516
721
|
if (opts.format === "json") {
|
|
517
|
-
renderJsonEnvelope(envelope, view, opts);
|
|
722
|
+
renderJsonEnvelope(envelope, extras, view, opts);
|
|
518
723
|
return;
|
|
519
724
|
}
|
|
520
725
|
if (envelope.data.length === 0) {
|
|
@@ -547,8 +752,11 @@ function projectedEnvelope(envelope, view, opts) {
|
|
|
547
752
|
data: envelope.data.map((item) => projectForList(item, view, opts))
|
|
548
753
|
};
|
|
549
754
|
}
|
|
550
|
-
function renderJsonEnvelope(envelope, view, opts) {
|
|
551
|
-
const capped = capListEnvelope(
|
|
755
|
+
function renderJsonEnvelope(envelope, extras, view, opts) {
|
|
756
|
+
const capped = capListEnvelope({
|
|
757
|
+
...projectedEnvelope(envelope, view, opts),
|
|
758
|
+
...extras
|
|
759
|
+
}, opts.maxBytes);
|
|
552
760
|
const ordered = {
|
|
553
761
|
returned: capped.returned,
|
|
554
762
|
offset: capped.offset,
|
|
@@ -557,6 +765,7 @@ function renderJsonEnvelope(envelope, view, opts) {
|
|
|
557
765
|
has_more: capped.has_more,
|
|
558
766
|
next_offset: capped.next_offset,
|
|
559
767
|
truncated: capped.truncated,
|
|
768
|
+
...extras,
|
|
560
769
|
data: capped.data
|
|
561
770
|
};
|
|
562
771
|
process.stdout.write(serializeJson(ordered, stdoutPretty()) + "\n");
|
|
@@ -626,6 +835,7 @@ function isRouteMissing(handled) {
|
|
|
626
835
|
return "kind" in handled && handled.kind === ROUTE_MISSING_KIND;
|
|
627
836
|
}
|
|
628
837
|
function remediesFor(handled) {
|
|
838
|
+
if (handled instanceof ProfileRefreshedError) return [];
|
|
629
839
|
if (isVersionTooOld(handled.developerDetail)) return [DOWNGRADE_REMEDY];
|
|
630
840
|
if (isRouteMissing(handled)) return [ROUTE_MISSING_REMEDY];
|
|
631
841
|
return [];
|
|
@@ -654,35 +864,324 @@ function writeJsonError(handled, exitCode, verbose) {
|
|
|
654
864
|
process.stderr.write(serializeJson(envelope, stderrPretty()) + "\n");
|
|
655
865
|
}
|
|
656
866
|
//#endregion
|
|
657
|
-
//#region ../client/src/version/
|
|
658
|
-
const
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
867
|
+
//#region ../client/src/version/features.ts
|
|
868
|
+
const FEATURE_RULES = {
|
|
869
|
+
transforms: { since: 59 },
|
|
870
|
+
transformJobActivation: { since: 61 },
|
|
871
|
+
measures: { since: 59 },
|
|
872
|
+
library: {
|
|
873
|
+
since: 59,
|
|
874
|
+
tokenFeature: "library"
|
|
875
|
+
},
|
|
876
|
+
remoteSync: {
|
|
877
|
+
since: 60,
|
|
878
|
+
tokenFeature: "remote_sync"
|
|
879
|
+
},
|
|
880
|
+
remoteSyncExportPreflight: {
|
|
881
|
+
since: 63,
|
|
882
|
+
tokenFeature: "remote_sync"
|
|
883
|
+
},
|
|
884
|
+
contentTranslation: {
|
|
885
|
+
since: 58,
|
|
886
|
+
tokenFeature: "content_translation"
|
|
887
|
+
},
|
|
888
|
+
contentVerification: {
|
|
889
|
+
since: 58,
|
|
890
|
+
tokenFeature: "content_verification"
|
|
891
|
+
},
|
|
892
|
+
transformTargetTableId: { since: 61 },
|
|
893
|
+
transformTargetTableLinkedOnCreate: {
|
|
894
|
+
since: 61,
|
|
895
|
+
until: 61
|
|
896
|
+
},
|
|
897
|
+
transformJobRunIdIsNumeric: { since: 64 },
|
|
898
|
+
transformCheckpointReset: { since: 60 },
|
|
899
|
+
fieldDataSensitivity: { since: 64 },
|
|
900
|
+
transformDagRuns: { since: 64 },
|
|
901
|
+
unifiedTransformRuns: { since: 64 },
|
|
902
|
+
transformTests: {
|
|
903
|
+
since: 65,
|
|
904
|
+
tokenFeature: "transforms-testing"
|
|
905
|
+
},
|
|
906
|
+
libraryChildrenCarryType: { since: 62 },
|
|
907
|
+
collectionItemsTotalOnEmptyPage: { since: 64 },
|
|
908
|
+
invalidMbqlIsBadRequest: { since: 59 },
|
|
909
|
+
boxplotDisplay: { since: 59 },
|
|
910
|
+
nativeTableTemplateTag: { since: 59 },
|
|
911
|
+
smartLinkMeasureModel: { since: 60 },
|
|
912
|
+
dashboardSubscriptionFilters: {
|
|
913
|
+
since: 58,
|
|
914
|
+
tokenFeature: "dashboard_subscription_filters"
|
|
915
|
+
},
|
|
916
|
+
dependencyGraph: {
|
|
917
|
+
since: 58,
|
|
918
|
+
tokenFeature: "dependencies"
|
|
919
|
+
},
|
|
920
|
+
dependencyItemListings: {
|
|
921
|
+
since: 59,
|
|
922
|
+
tokenFeature: "dependencies"
|
|
923
|
+
},
|
|
924
|
+
dependencyKebabCaseFilters: { since: 60 },
|
|
925
|
+
tableListAccessFilters: { since: 59 },
|
|
926
|
+
tableListTransformTargets: { since: 60 },
|
|
927
|
+
tableUnusedFilter: {
|
|
928
|
+
since: 58,
|
|
929
|
+
tokenFeature: "dependencies"
|
|
930
|
+
},
|
|
931
|
+
tableDataLayerTiers: { since: 59 },
|
|
932
|
+
bulkTableEdit: { since: 59 },
|
|
933
|
+
erd: {
|
|
934
|
+
since: 62,
|
|
935
|
+
tokenFeature: "schema-viewer"
|
|
936
|
+
},
|
|
937
|
+
documentCopy: { since: 59 },
|
|
938
|
+
transformInspector: {
|
|
939
|
+
since: 60,
|
|
940
|
+
tokenFeature: "transforms-python"
|
|
941
|
+
},
|
|
942
|
+
pythonLibrary: {
|
|
943
|
+
since: 58,
|
|
944
|
+
tokenFeature: "transforms-python"
|
|
945
|
+
},
|
|
946
|
+
pythonTestRun: {
|
|
947
|
+
since: 60,
|
|
948
|
+
tokenFeature: "transforms-python"
|
|
949
|
+
},
|
|
950
|
+
sourceReplacement: {
|
|
951
|
+
since: 60,
|
|
952
|
+
tokenFeature: "dependencies"
|
|
953
|
+
},
|
|
954
|
+
metricDefinitionQuery: { since: 60 },
|
|
955
|
+
metricDimensionListing: { since: 64 },
|
|
956
|
+
oauthFullAccessScope: { since: 63 }
|
|
957
|
+
};
|
|
958
|
+
function isFeatureName(name) {
|
|
959
|
+
return Object.hasOwn(FEATURE_RULES, name);
|
|
960
|
+
}
|
|
961
|
+
const FEATURE_NAMES = Object.keys(FEATURE_RULES).filter(isFeatureName);
|
|
962
|
+
const Features = z.record(z.enum(FEATURE_NAMES), z.boolean());
|
|
963
|
+
function evaluateFeatures(major, tokenFeatures) {
|
|
964
|
+
const entries = FEATURE_NAMES.map((name) => [name, ruleHolds(FEATURE_RULES[name], major, tokenFeatures)]);
|
|
965
|
+
return Features.parse(Object.fromEntries(entries));
|
|
966
|
+
}
|
|
967
|
+
function ruleHolds(rule, major, tokenFeatures) {
|
|
968
|
+
return ruleGap(rule, major, tokenFeatures) === null;
|
|
969
|
+
}
|
|
970
|
+
function ruleGap(rule, major, tokenFeatures) {
|
|
971
|
+
if (!versionHolds(rule, major)) return { kind: "version" };
|
|
972
|
+
if (rule.tokenFeature === void 0) return null;
|
|
973
|
+
return tokenFeatures !== null && tokenFeatures[rule.tokenFeature] === true ? null : {
|
|
974
|
+
kind: "token",
|
|
975
|
+
tokenFeature: rule.tokenFeature
|
|
668
976
|
};
|
|
669
977
|
}
|
|
670
|
-
function
|
|
671
|
-
if (
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
978
|
+
function versionHolds(rule, major) {
|
|
979
|
+
if (major === "development") return rule.until === void 0;
|
|
980
|
+
return major >= rule.since && (rule.until === void 0 || major <= rule.until);
|
|
981
|
+
}
|
|
982
|
+
//#endregion
|
|
983
|
+
//#region ../client/src/version/requirements.ts
|
|
984
|
+
const METHOD_REQUIREMENTS = {
|
|
985
|
+
"card.list": [],
|
|
986
|
+
"card.get": [],
|
|
987
|
+
"card.create": [],
|
|
988
|
+
"card.update": [],
|
|
989
|
+
"card.archive": [],
|
|
990
|
+
"card.query": [],
|
|
991
|
+
"card.exportQuery": [],
|
|
992
|
+
"card.queryMetadata": [],
|
|
993
|
+
"collection.list": [],
|
|
994
|
+
"collection.listWithLibrary": [],
|
|
995
|
+
"collection.get": [],
|
|
996
|
+
"collection.create": [],
|
|
997
|
+
"collection.update": [],
|
|
998
|
+
"collection.archive": [],
|
|
999
|
+
"collection.itemPages": [],
|
|
1000
|
+
"collection.tree": [],
|
|
1001
|
+
"contentTranslation.download": ["contentTranslation"],
|
|
1002
|
+
"contentTranslation.upload": ["contentTranslation"],
|
|
1003
|
+
"dashboard.list": [],
|
|
1004
|
+
"dashboard.get": [],
|
|
1005
|
+
"dashboard.create": [],
|
|
1006
|
+
"dashboard.update": [],
|
|
1007
|
+
"dashboard.archive": [],
|
|
1008
|
+
"dashboard.copy": [],
|
|
1009
|
+
"dashboard.updateDashcard": [],
|
|
1010
|
+
"dashboard.checkCardReferences": [],
|
|
1011
|
+
"dashboard.parameterValues": [],
|
|
1012
|
+
"dashboard.searchParameterValues": [],
|
|
1013
|
+
"database.list": [],
|
|
1014
|
+
"database.get": [],
|
|
1015
|
+
"database.schemas": [],
|
|
1016
|
+
"database.schemaTables": [],
|
|
1017
|
+
"database.syncSchema": [],
|
|
1018
|
+
"database.rescanValues": [],
|
|
1019
|
+
"dataset.query": [],
|
|
1020
|
+
"dataset.native": [],
|
|
1021
|
+
"dataset.queryMetadata": [],
|
|
1022
|
+
"dataset.exportQuery": [],
|
|
1023
|
+
"dependency.breakingPages": ["dependencyItemListings"],
|
|
1024
|
+
"dependency.broken": ["dependencyItemListings"],
|
|
1025
|
+
"dependency.dependents": ["dependencyItemListings"],
|
|
1026
|
+
"dependency.graph": ["dependencyGraph"],
|
|
1027
|
+
"dependency.unreferencedPages": ["dependencyItemListings"],
|
|
1028
|
+
"document.list": [],
|
|
1029
|
+
"document.get": [],
|
|
1030
|
+
"document.create": [],
|
|
1031
|
+
"document.update": [],
|
|
1032
|
+
"document.archive": [],
|
|
1033
|
+
"document.copy": ["documentCopy"],
|
|
1034
|
+
"eidTranslation.translate": [],
|
|
1035
|
+
"erd.get": ["erd"],
|
|
1036
|
+
"field.get": [],
|
|
1037
|
+
"field.update": [],
|
|
1038
|
+
"field.search": [],
|
|
1039
|
+
"field.remapping": [],
|
|
1040
|
+
"field.summary": [],
|
|
1041
|
+
"field.values": [],
|
|
1042
|
+
"gitSync.currentTask": ["remoteSync"],
|
|
1043
|
+
"gitSync.cancelTask": ["remoteSync"],
|
|
1044
|
+
"gitSync.isDirty": ["remoteSync"],
|
|
1045
|
+
"gitSync.dirty": ["remoteSync"],
|
|
1046
|
+
"gitSync.hasRemoteChanges": ["remoteSync"],
|
|
1047
|
+
"gitSync.import": ["remoteSync"],
|
|
1048
|
+
"gitSync.export": ["remoteSync"],
|
|
1049
|
+
"gitSync.exportPreflight": ["remoteSyncExportPreflight"],
|
|
1050
|
+
"gitSync.stash": ["remoteSync"],
|
|
1051
|
+
"gitSync.branches": ["remoteSync"],
|
|
1052
|
+
"gitSync.createBranch": ["remoteSync"],
|
|
1053
|
+
"gitSync.setCollectionSynced": ["remoteSync"],
|
|
1054
|
+
"gitSync.syncedCollections": ["remoteSync"],
|
|
1055
|
+
"gitSync.remoteUrl": [],
|
|
1056
|
+
"gitSync.branch": [],
|
|
1057
|
+
"gitSync.waitForTask": ["remoteSync"],
|
|
1058
|
+
"glossary.list": [],
|
|
1059
|
+
"glossary.create": [],
|
|
1060
|
+
"glossary.update": [],
|
|
1061
|
+
"glossary.delete": [],
|
|
1062
|
+
"library.get": ["library"],
|
|
1063
|
+
"library.create": ["library"],
|
|
1064
|
+
"library.ensureDataCollectionId": ["library"],
|
|
1065
|
+
"library.publishTables": ["library"],
|
|
1066
|
+
"library.unpublishTables": ["library"],
|
|
1067
|
+
"metric.query": ["metricDefinitionQuery"],
|
|
1068
|
+
"metric.breakoutValues": ["metricDefinitionQuery"],
|
|
1069
|
+
"metric.dimensions": ["metricDimensionListing"],
|
|
1070
|
+
"measure.list": ["measures"],
|
|
1071
|
+
"measure.get": ["measures"],
|
|
1072
|
+
"measure.create": ["measures"],
|
|
1073
|
+
"measure.update": ["measures"],
|
|
1074
|
+
"measure.archive": ["measures"],
|
|
1075
|
+
"moderationReview.create": ["contentVerification"],
|
|
1076
|
+
"notification.list": [],
|
|
1077
|
+
"notification.get": [],
|
|
1078
|
+
"notification.create": [],
|
|
1079
|
+
"notification.update": [],
|
|
1080
|
+
"notification.archive": [],
|
|
1081
|
+
"notification.send": [],
|
|
1082
|
+
"permission.graph": [],
|
|
1083
|
+
"permission.databaseGraph": [],
|
|
1084
|
+
"permission.groupGraph": [],
|
|
1085
|
+
"pulse.list": [],
|
|
1086
|
+
"pulse.get": [],
|
|
1087
|
+
"pulse.create": [],
|
|
1088
|
+
"pulse.update": [],
|
|
1089
|
+
"pulse.archive": [],
|
|
1090
|
+
"replacement.checkReplaceSource": ["sourceReplacement"],
|
|
1091
|
+
"replacement.replaceSource": ["sourceReplacement"],
|
|
1092
|
+
"replacement.replaceModelWithTransform": ["sourceReplacement"],
|
|
1093
|
+
"replacement.listRuns": ["sourceReplacement"],
|
|
1094
|
+
"replacement.getRun": ["sourceReplacement"],
|
|
1095
|
+
"replacement.cancelRun": ["sourceReplacement"],
|
|
1096
|
+
"revision.list": [],
|
|
1097
|
+
"revision.revert": [],
|
|
1098
|
+
"search.query": [],
|
|
1099
|
+
"segment.list": [],
|
|
1100
|
+
"segment.get": [],
|
|
1101
|
+
"segment.create": [],
|
|
1102
|
+
"segment.update": [],
|
|
1103
|
+
"segment.archive": [],
|
|
1104
|
+
"setting.list": [],
|
|
1105
|
+
"setting.get": [],
|
|
1106
|
+
"setting.set": [],
|
|
1107
|
+
"setup.create": [],
|
|
1108
|
+
"snippet.list": [],
|
|
1109
|
+
"snippet.get": [],
|
|
1110
|
+
"snippet.create": [],
|
|
1111
|
+
"snippet.update": [],
|
|
1112
|
+
"snippet.archive": [],
|
|
1113
|
+
"table.list": [],
|
|
1114
|
+
"table.get": [],
|
|
1115
|
+
"table.update": [],
|
|
1116
|
+
"table.queryMetadata": [],
|
|
1117
|
+
"table.fks": [],
|
|
1118
|
+
"table.syncSchema": [],
|
|
1119
|
+
"table.rescanValues": [],
|
|
1120
|
+
"table.bulkEdit": ["bulkTableEdit"],
|
|
1121
|
+
"table.appendCsv": [],
|
|
1122
|
+
"table.replaceCsv": [],
|
|
1123
|
+
"timeline.list": [],
|
|
1124
|
+
"timeline.get": [],
|
|
1125
|
+
"timeline.events": [],
|
|
1126
|
+
"timeline.create": [],
|
|
1127
|
+
"timeline.update": [],
|
|
1128
|
+
"timeline.archive": [],
|
|
1129
|
+
"timeline.delete": [],
|
|
1130
|
+
"timelineEvent.get": [],
|
|
1131
|
+
"timelineEvent.create": [],
|
|
1132
|
+
"timelineEvent.update": [],
|
|
1133
|
+
"timelineEvent.archive": [],
|
|
1134
|
+
"timelineEvent.delete": [],
|
|
1135
|
+
"transform.list": ["transforms"],
|
|
1136
|
+
"transform.get": ["transforms"],
|
|
1137
|
+
"transform.create": ["transforms"],
|
|
1138
|
+
"transform.update": ["transforms"],
|
|
1139
|
+
"transform.delete": ["transforms"],
|
|
1140
|
+
"transform.deleteTable": ["transforms"],
|
|
1141
|
+
"transform.dependencies": ["transforms"],
|
|
1142
|
+
"transform.cancel": ["transforms"],
|
|
1143
|
+
"transform.getRun": ["transforms"],
|
|
1144
|
+
"transform.runPages": ["transforms"],
|
|
1145
|
+
"transform.runSummaryPages": ["unifiedTransformRuns", "transforms"],
|
|
1146
|
+
"transform.resetCheckpoint": ["transformCheckpointReset", "transforms"],
|
|
1147
|
+
"transform.runDag": ["transformDagRuns", "transforms"],
|
|
1148
|
+
"transform.dagTransforms": ["transformDagRuns", "transforms"],
|
|
1149
|
+
"transform.run": ["transforms"],
|
|
1150
|
+
"transformDagRun.transformRuns": ["transformDagRuns", "transforms"],
|
|
1151
|
+
"transformDagRun.cancel": ["transformDagRuns", "transforms"],
|
|
1152
|
+
"transformInspector.discover": ["transformInspector"],
|
|
1153
|
+
"transformInspector.lens": ["transformInspector"],
|
|
1154
|
+
"transformInspector.query": ["transformInspector"],
|
|
1155
|
+
"transformJob.list": ["transforms"],
|
|
1156
|
+
"transformJob.get": ["transforms"],
|
|
1157
|
+
"transformJob.create": ["transforms"],
|
|
1158
|
+
"transformJob.update": ["transforms"],
|
|
1159
|
+
"transformJob.delete": ["transforms"],
|
|
1160
|
+
"transformJob.run": ["transforms"],
|
|
1161
|
+
"transformJob.transforms": ["transforms"],
|
|
1162
|
+
"transformJob.setActive": ["transformJobActivation", "transforms"],
|
|
1163
|
+
"transformPython.getLibrary": ["pythonLibrary"],
|
|
1164
|
+
"transformPython.updateLibrary": ["pythonLibrary"],
|
|
1165
|
+
"transformPython.testRun": ["pythonTestRun"],
|
|
1166
|
+
"transformTag.list": ["transforms"],
|
|
1167
|
+
"transformTag.create": ["transforms"],
|
|
1168
|
+
"transformTag.update": ["transforms"],
|
|
1169
|
+
"transformTag.delete": ["transforms"],
|
|
1170
|
+
"transformTest.list": ["transformTests"],
|
|
1171
|
+
"transformTest.get": ["transformTests"],
|
|
1172
|
+
"transformTest.create": ["transformTests"],
|
|
1173
|
+
"transformTest.update": ["transformTests"],
|
|
1174
|
+
"transformTest.delete": ["transformTests"],
|
|
1175
|
+
"transformTest.run": ["transformTests"],
|
|
1176
|
+
"upload.createFromCsv": [],
|
|
1177
|
+
"user.current": []
|
|
1178
|
+
};
|
|
1179
|
+
function isMethodKey(key) {
|
|
1180
|
+
return Object.hasOwn(METHOD_REQUIREMENTS, key);
|
|
1181
|
+
}
|
|
1182
|
+
const METHOD_KEYS = Object.keys(METHOD_REQUIREMENTS).filter(isMethodKey);
|
|
1183
|
+
function methodRequirements(key) {
|
|
1184
|
+
return METHOD_REQUIREMENTS[key];
|
|
686
1185
|
}
|
|
687
1186
|
//#endregion
|
|
688
1187
|
//#region src/runtime/command-help.ts
|
|
@@ -708,6 +1207,10 @@ const CommandHelpSkill = z.object({
|
|
|
708
1207
|
skill: z.string(),
|
|
709
1208
|
purpose: z.string()
|
|
710
1209
|
});
|
|
1210
|
+
const CommandHelpRequires = z.object({
|
|
1211
|
+
methods: z.array(z.enum(METHOD_KEYS)),
|
|
1212
|
+
features: z.array(z.enum(FEATURE_NAMES))
|
|
1213
|
+
});
|
|
711
1214
|
z.object({
|
|
712
1215
|
command: z.string(),
|
|
713
1216
|
description: z.string().nullable(),
|
|
@@ -717,7 +1220,7 @@ z.object({
|
|
|
717
1220
|
args: z.array(CommandHelpArg),
|
|
718
1221
|
inputSchema: z.unknown().nullable(),
|
|
719
1222
|
outputSchema: z.unknown().nullable(),
|
|
720
|
-
|
|
1223
|
+
requires: CommandHelpRequires.nullable()
|
|
721
1224
|
});
|
|
722
1225
|
const CommandIndexEntry = z.object({
|
|
723
1226
|
command: z.string(),
|
|
@@ -734,7 +1237,7 @@ const EMPTY_AUGMENT = {
|
|
|
734
1237
|
skills: [],
|
|
735
1238
|
inputSchema: null,
|
|
736
1239
|
outputSchema: null,
|
|
737
|
-
|
|
1240
|
+
requires: null
|
|
738
1241
|
};
|
|
739
1242
|
async function buildHelpEntry(cmd, path) {
|
|
740
1243
|
const meta = await resolveCitty(cmd.meta);
|
|
@@ -748,7 +1251,7 @@ async function buildHelpEntry(cmd, path) {
|
|
|
748
1251
|
args: convertArgs(args),
|
|
749
1252
|
inputSchema: augment.inputSchema ? z.toJSONSchema(augment.inputSchema) : null,
|
|
750
1253
|
outputSchema: augment.outputSchema ? z.toJSONSchema(augment.outputSchema) : null,
|
|
751
|
-
|
|
1254
|
+
requires: augment.requires
|
|
752
1255
|
};
|
|
753
1256
|
if (augment.details !== null) entry.details = augment.details;
|
|
754
1257
|
return entry;
|
|
@@ -1059,4 +1562,4 @@ run().catch((error) => {
|
|
|
1059
1562
|
reportError(error);
|
|
1060
1563
|
});
|
|
1061
1564
|
//#endregion
|
|
1062
|
-
export {
|
|
1565
|
+
export { InternalError as $, ENV_SKILLS_DIR as A, listFlags as B, promptSelect as C, ENV_API_KEY as D, warn as E, ProfileRefreshedError as F, listEnvelopeSchema as G, outputFlags as H, setMetabaseAugment as I, normalizeFlag as J, listEnvelopeSchemaWithExtras as K, name as L, ENV_URL as M, consumeLegacyEnvWarnings as N, ENV_DISABLE_KEYRING as O, readEnv as P, ConfigError as Q, version as R, promptPassword as S, listTruncationNotice as T, profileFlag as U, listFlagsWithDefaultLimit as V, DEFAULT_MAX_BYTES as W, AbortError as X, toAliasArray as Y, ChainedRequestError as Z, formatScalar as _, Features as a, ValidationError as at, isPlainObject as b, ruleGap as c, KNOWN_RANGE as ct, renderList as d, MetabaseError as et, renderListWithExtras as f, MALFORMED_CELL as g, writeText as h, FEATURE_RULES as i, UnknownError as it, ENV_SKIP_PREFLIGHT as j, ENV_PROFILE as k, reportError as l, escapeJsonPointerSegment as lt, writeJson as m, methodRequirements as n, ResponseShapeError as nt, evaluateFeatures as o, errorMessage as ot, renderSummary as p, flagConsumesValue as q, FEATURE_NAMES as r, TimeoutError as rt, isFeatureName as s, isFileNotFoundError as st, interruptSignal as t, NetworkError as tt, renderItem as u, renderRows as v, promptText as w, promptConfirm as x, projectForList as y, connectionFlags as z };
|