@metabase/cli 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -32
- package/dist/{add-collection-CXhrMjXU.mjs → add-collection-C-t9SQBk.mjs} +5 -5
- package/dist/add-collection-Dek6kiRI.mjs +11 -0
- package/dist/{archive-BUwiCFnd.mjs → archive-C7dnyzVY.mjs} +9 -7
- package/dist/{archive-Blc1dz8Z.mjs → archive-CaoUUTIb.mjs} +8 -7
- package/dist/{archive-D-Ovk0-E.mjs → archive-D1FX-sbU.mjs} +7 -6
- package/dist/{archive-CQiaCBSj.mjs → archive-DS-KEB4a.mjs} +7 -6
- package/dist/{archive-yTvDRQUZ.mjs → archive-LG8u7ec5.mjs} +7 -6
- package/dist/{archive-BxGSR7El.mjs → archive-qSOcACQo.mjs} +8 -6
- package/dist/{archive-Drt-rWvU.mjs → archive-wNXwIiF0.mjs} +8 -7
- package/dist/auth-Kv2MRkRk.mjs +22 -0
- package/dist/{body-B9XTTDEu.mjs → body-IcJ5kFtk.mjs} +3 -3
- package/dist/{branches-Ct3PK5U3.mjs → branches-BlNCTmFB.mjs} +7 -6
- package/dist/{cancel-tST8Bh0w.mjs → cancel-BnveTPNw.mjs} +6 -5
- package/dist/{cancel-task-BHnzRQKL.mjs → cancel-task-CSVI8Zgl.mjs} +7 -6
- package/dist/{capabilities-BX1rnVuH.mjs → capabilities-N0jo5U7S.mjs} +1 -1
- package/dist/card-Bp58WEUF.mjs +26 -0
- package/dist/{card-wCPcuKSi.mjs → card-DEmcRlNO.mjs} +6 -5
- package/dist/{cards-BySIFsLG.mjs → cards-CMgGA8OZ.mjs} +8 -6
- package/dist/cli.mjs +54 -26
- package/dist/collection-D8TI20Ir.mjs +23 -0
- package/dist/{collection-namespace-D8ohM5gD.mjs → collection-namespace-CsaxEqOb.mjs} +2 -2
- package/dist/command-augment-DdZIfx1V.mjs +11 -0
- package/dist/{create-HZ-9GMLx.mjs → create-AeWNv0v-.mjs} +9 -8
- package/dist/create-B1xfaZJB.mjs +35 -0
- package/dist/{create-DxDD6n1d.mjs → create-B6LQutd0.mjs} +17 -12
- package/dist/{create-C7FPeJqF.mjs → create-B79M8YpX.mjs} +10 -9
- package/dist/{create-DGxZmbxh.mjs → create-Bg_uMu0p.mjs} +9 -8
- package/dist/{create-C43RQYgj.mjs → create-BpkWlgoR.mjs} +18 -12
- package/dist/{create-DnT1Sayk.mjs → create-C7u3umLj.mjs} +9 -8
- package/dist/{create-4mAGsBd0.mjs → create-FZOrCw5k.mjs} +21 -12
- package/dist/{create-fIDFkdox.mjs → create-I5Cv-MBa.mjs} +16 -11
- package/dist/{create-D3cVDtxM.mjs → create-LHqwcVbS.mjs} +16 -11
- package/dist/{create-BDWthCYq.mjs → create-SHKlj0z3.mjs} +9 -8
- package/dist/{create-branch-jPE7nW-E.mjs → create-branch-CGyT99Ny.mjs} +7 -6
- package/dist/{current-task-rW54KJax.mjs → current-task-C-0hw2Ae.mjs} +7 -6
- package/dist/dashboard-C9pQCnX6.mjs +28 -0
- package/dist/{dashboard-B4bn3z6t.mjs → dashboard-DOplbKyQ.mjs} +7 -5
- package/dist/{database-BmsxuRmO.mjs → database-D9fftP-i.mjs} +1 -1
- package/dist/db-DWykmBOh.mjs +28 -0
- package/dist/{delete-BWO6uB4P.mjs → delete--NYYN6wv.mjs} +8 -7
- package/dist/{delete-CeigtfRI.mjs → delete-Do3nn9sl.mjs} +8 -7
- package/dist/{delete-runtime-PzLFavb0.mjs → delete-runtime-B0ha5QR4.mjs} +3 -3
- package/dist/{delete-CBwztF6P.mjs → delete-tCVrYjKD.mjs} +8 -7
- package/dist/{delete-table-BXzvDEPG.mjs → delete-table-CWSGPw0i.mjs} +8 -7
- package/dist/{dependencies-D2N9eqm1.mjs → dependencies-CyFocD8I.mjs} +7 -6
- package/dist/{dirty-DoEZRSGB.mjs → dirty-BXM0YJ_a.mjs} +7 -6
- package/dist/document-DNDm8_Py.mjs +22 -0
- package/dist/{eid-1mROiwJr.mjs → eid-p-zn_1RJ.mjs} +13 -7
- package/dist/{error-D5bZ5BUX.mjs → error-5H_tcfL8.mjs} +2 -2
- package/dist/{export-Bgv5B4_F.mjs → export-B_8wghyo.mjs} +9 -8
- package/dist/field-CFt1-KDR.mjs +21 -0
- package/dist/{fields-VA7tXHJz.mjs → fields-BsufL9kv.mjs} +8 -7
- package/dist/{get-DAsaor0n.mjs → get-4lufgahL.mjs} +7 -6
- package/dist/{get-B8etVxWD.mjs → get-68P-L4ja.mjs} +7 -6
- package/dist/{get-qnGGGRTa.mjs → get-B45uYMAs.mjs} +8 -6
- package/dist/get-B67pe00Z.mjs +36 -0
- package/dist/{get-DvQoDU2m.mjs → get-BJoZkATD.mjs} +7 -6
- package/dist/{get-BgIE_YEg.mjs → get-BTKeO4vE.mjs} +7 -6
- package/dist/{get-RQFSmnpY.mjs → get-C7mq17-2.mjs} +7 -6
- package/dist/{get-CGkhSY5L.mjs → get-CDLa6LiC.mjs} +9 -8
- package/dist/{get-D9o38nK5.mjs → get-CPw0ROO4.mjs} +7 -6
- package/dist/{get-Wj88mnhn.mjs → get-Cl5Ak73C.mjs} +9 -7
- package/dist/{get-CqnCaosn.mjs → get-D3k2JUsa.mjs} +7 -6
- package/dist/{get-C-UeGtgW.mjs → get-DTqBuIf3.mjs} +6 -5
- package/dist/{get-eUYDNALt.mjs → get-DeLnNVQE.mjs} +8 -7
- package/dist/{get-DLRBq8kR.mjs → get-Df_3LCVC.mjs} +7 -6
- package/dist/{get-BtAD26gc.mjs → get-DurjkUKJ.mjs} +7 -6
- package/dist/{get-run-CATz-XMS.mjs → get-run-Dq4qfGfD.mjs} +7 -6
- package/dist/git-sync-ByvjqSiy.mjs +31 -0
- package/dist/group-BNE_RiH5.mjs +28 -0
- package/dist/{has-remote-changes-B6YEMC90.mjs → has-remote-changes-E-4N_O_t.mjs} +7 -6
- package/dist/{import-Bl2Wj9Xf.mjs → import-Dg0j3HCP.mjs} +9 -8
- package/dist/{input-BXWgdKiS.mjs → input-7Sj85_K7.mjs} +1 -1
- package/dist/is-dirty-D7UMN0mt.mjs +10 -0
- package/dist/{is-dirty-D9MoFj0T.mjs → is-dirty-DWw1yBeR.mjs} +4 -4
- package/dist/{items-LjtICjvX.mjs → items-CQtt9X4M.mjs} +9 -8
- package/dist/{key-C8q5oIr5.mjs → key-bltP32Pm.mjs} +1 -1
- package/dist/library-B5AvpACG.mjs +24 -0
- package/dist/{list-ChK06rJh.mjs → list-B1uVWy6A.mjs} +8 -6
- package/dist/{list-DaJk60dd.mjs → list-BAOTQHst.mjs} +6 -5
- package/dist/{list-C410Ptw_.mjs → list-BF-W4jOZ.mjs} +9 -7
- package/dist/{list-DMik04Dh.mjs → list-BFVuPodI.mjs} +6 -5
- package/dist/{list-DfoNv0gb.mjs → list-BHAWYZ1z.mjs} +6 -5
- package/dist/{list-DcjenlTM.mjs → list-BKUvhAs4.mjs} +6 -5
- package/dist/{list-Dq86BAMG.mjs → list-BgUWqZa2.mjs} +8 -7
- package/dist/{list-CfWblVHJ.mjs → list-C4bALfCs.mjs} +7 -6
- package/dist/{list-CoRX8Ruc.mjs → list-C9O2RY5u.mjs} +6 -5
- package/dist/{list-cnqPlJgC.mjs → list-CfqpDTna.mjs} +6 -5
- package/dist/{list-C6U3Ftg8.mjs → list-CvhVYOVl.mjs} +7 -6
- package/dist/{list-B5Q7E2Km.mjs → list-D3TSAqwl.mjs} +6 -5
- package/dist/list-D5Gdz8hi.mjs +100 -0
- package/dist/{list-Bjp9nd0o.mjs → list-DG0FIhTK.mjs} +6 -5
- package/dist/{list-DtrfE0sF.mjs → list-KxQNqp4T.mjs} +8 -7
- package/dist/{login-Cn2UtFUt.mjs → login-Bt6j6yBM.mjs} +10 -9
- package/dist/{logout-_HXgEmqA.mjs → logout-ANkL02p0.mjs} +6 -5
- package/dist/{manifest-DYeLri80.mjs → manifest-BVf8P4bl.mjs} +9 -2
- package/dist/measure-CgFwtL1r.mjs +25 -0
- package/dist/{metadata-8yqT8OZI.mjs → metadata-ClehtgZj.mjs} +9 -8
- package/dist/{metadata-DHODjg1d.mjs → metadata-DplshwI3.mjs} +8 -7
- package/dist/{command-augment-CAur0XOQ.mjs → notice-DyVl5aYB.mjs} +1 -11
- package/dist/parameter-CiJ4CwWE.mjs +118 -0
- package/dist/parameter-values-D4J8Ctu0.mjs +56 -0
- package/dist/{parse-enum-BatHQ-Gs.mjs → parse-enum-BL9i_brN.mjs} +1 -1
- package/dist/{parse-id-DNPeV0Iu.mjs → parse-id-D4LeTUsP.mjs} +1 -1
- package/dist/{parse-ref-CZr1bYIl.mjs → parse-ref-CB_KvF9h.mjs} +1 -1
- package/dist/{path-BflajM08.mjs → path-5nQgdvrs.mjs} +6 -5
- package/dist/{poll-CYkX02Bm.mjs → poll-BpAJpvb-.mjs} +2 -2
- package/dist/{poll-task-oXpl3wzp.mjs → poll-task-TilgciQn.mjs} +2 -2
- package/dist/{preflight-BdJr2amA.mjs → preflight-OfHU3Toi.mjs} +4 -4
- package/dist/{process-DsGf7Mg5.mjs → process-j8UHMHc2.mjs} +1 -1
- package/dist/{prompt-Bc_bHSD0.mjs → prompt-C85xd9HR.mjs} +1 -1
- package/dist/publish-DKiqyDwo.mjs +67 -0
- package/dist/{query-CxTjguwp.mjs → query-BWJ5h1g3.mjs} +19 -13
- package/dist/{query-DWQaN7hO.mjs → query-CQ3xXa9P.mjs} +10 -8
- package/dist/{query-result-L5_NrwQR.mjs → query-result-D6mfoVfQ.mjs} +1 -1
- package/dist/{remove-collection-BwcFi8Fs.mjs → remove-collection-CO-aMzTO.mjs} +9 -8
- package/dist/{rescan-values-B9Qtsd32.mjs → rescan-values-DpL6LGAK.mjs} +9 -8
- package/dist/resolve-Dj2MTBkn.mjs +84 -0
- package/dist/{run-C-vftXCu.mjs → run-DUcdaZs3.mjs} +6 -5
- package/dist/{run-3eFtdI2Z.mjs → run-QYJ-mAaG.mjs} +9 -8
- package/dist/{runs-CpRTkn1W.mjs → runs-DgasTnGd.mjs} +8 -7
- package/dist/{runtime-C1QgWHM7.mjs → runtime-BJtuxWM8.mjs} +5 -3
- package/dist/{schema-tables-rdeupgsu.mjs → schema-tables-ooYjimrV.mjs} +8 -7
- package/dist/{schemas-Cr7RjYqV.mjs → schemas-HjFPzsd-.mjs} +6 -5
- package/dist/{search-D7Yq2MDu.mjs → search-vaT5EwhG.mjs} +11 -5
- package/dist/segment-BPC725mo.mjs +25 -0
- package/dist/{selectors-DPc2ZDdd.mjs → selectors-DlmZpo2L.mjs} +4 -4
- package/dist/{set-X2N6x7pe.mjs → set-CLHJauzG.mjs} +9 -8
- package/dist/{set-active-BoBa3pOw.mjs → set-active-oZOUe9V7.mjs} +6 -5
- package/dist/setting-DHYO-W5g.mjs +20 -0
- package/dist/{setup-C47WUieB.mjs → setup-D1de5Sbc.mjs} +8 -7
- package/dist/{skills-CJ8g8fhQ.mjs → skills-B6gfH0iR.mjs} +1 -1
- package/dist/{skills-Po0YPVU5.mjs → skills-NhgVypJ7.mjs} +3 -3
- package/dist/snippet-DtLmHr2J.mjs +22 -0
- package/dist/{stash-BV4sEp73.mjs → stash-DoRwelwY.mjs} +9 -8
- package/dist/{status-BKF9rRnk.mjs → status-BpMOlfsA.mjs} +8 -7
- package/dist/{status-Cf8c0NON.mjs → status-CmRgHTrV.mjs} +6 -5
- package/dist/{summary-RgLcBcEh.mjs → summary-BEu7pmpq.mjs} +7 -6
- package/dist/{sync-schema-DKEel2Sv.mjs → sync-schema-DTUXubMg.mjs} +11 -10
- package/dist/table-B1iBqmNu.mjs +22 -0
- package/dist/{table-qDD2kApF.mjs → table-DE3i82T_.mjs} +9 -2
- package/dist/transform-BuIooRQh.mjs +31 -0
- package/dist/transform-job-C3yz0krA.mjs +25 -0
- package/dist/transform-tag-CJD6mJUe.mjs +21 -0
- package/dist/{transforms-BOQ9CG0l.mjs → transforms-CWvMpLc9.mjs} +7 -6
- package/dist/{tree-CF8mscd9.mjs → tree-D18vYSe4.mjs} +6 -5
- package/dist/{unpublish-CmaRNjK3.mjs → unpublish-CJbL4ZsC.mjs} +20 -18
- package/dist/{update-Kz4kyqY_.mjs → update-7DacwIvi.mjs} +10 -9
- package/dist/{update-CgQOSuZt.mjs → update-BjjZIe2W.mjs} +10 -9
- package/dist/{update-nwXgVNQa.mjs → update-Bos8nnv0.mjs} +18 -13
- package/dist/{update-BXZBEeUp.mjs → update-BvsvyBw9.mjs} +17 -12
- package/dist/{update-DQPg0_-d.mjs → update-CSxwZ2us.mjs} +11 -10
- package/dist/{update-BuypOaXq.mjs → update-Ck0Kxv8u.mjs} +10 -9
- package/dist/{update-B59h7KmS.mjs → update-DV7IY7IQ.mjs} +10 -9
- package/dist/{update-DERsb0eO.mjs → update-DhOfrW1j.mjs} +19 -13
- package/dist/{update-DR4WkAET.mjs → update-Doia9MP_.mjs} +17 -12
- package/dist/{update-rhfPHALN.mjs → update-Dxa_6H2A.mjs} +22 -13
- package/dist/{update-dashcard-BJVeSGvO.mjs → update-dashcard-CZUWZhal.mjs} +11 -9
- package/dist/{update-DoQpy9SA.mjs → update-mr9todHq.mjs} +10 -9
- package/dist/{upgrade-CNrkJF6s.mjs → upgrade-CBW8V9qZ.mjs} +7 -6
- package/dist/{uuid-Dpl3ALKq.mjs → uuid-D6JVJ-R1.mjs} +10 -5
- package/dist/{validate-VawhJ5Sc.mjs → validate-BqNW4Sk1.mjs} +2 -2
- package/dist/{validate-query-CSV-TTnd.mjs → validate-query-CcZVKYPV.mjs} +3 -3
- package/dist/{values-DMYpkoEH.mjs → values-DBvuGnnA.mjs} +7 -6
- package/dist/{verify-By9ZYzx4.mjs → verify-LIShMNZ2.mjs} +2 -2
- package/dist/{wait-BzIAj8lJ.mjs → wait-DUHze3_B.mjs} +8 -7
- package/dist/{wait-flags-DQrxnlwv.mjs → wait-flags-Ybpt98PK.mjs} +2 -2
- package/package.json +1 -1
- package/skill-data/core/SKILL.md +45 -57
- package/skill-data/data-workflow/SKILL.md +116 -0
- package/skill-data/{data-analysis/SKILL.md → data-workflow/references/answering-questions.md} +7 -13
- package/skill-data/{data-transformation/SKILL.md → data-workflow/references/building-clean-tables.md} +46 -48
- package/skill-data/{semantic-layer/SKILL.md → data-workflow/references/reusable-definitions.md} +29 -54
- package/skill-data/document/SKILL.md +10 -20
- package/skill-data/git-sync/SKILL.md +36 -36
- package/skill-data/mbql/SKILL.md +3 -15
- package/skill-data/mbql/references/operators.md +9 -0
- package/skill-data/transform/SKILL.md +26 -42
- package/skill-data/visualization/SKILL.md +6 -6
- package/skill-data/visualization/references/settings.md +12 -0
- package/skills/metabase-cli/SKILL.md +2 -2
- package/dist/add-collection-Bnuh0d4j.mjs +0 -10
- package/dist/auth-Bkue4Psy.mjs +0 -19
- package/dist/card-faWo9ZWU.mjs +0 -20
- package/dist/collection-DcRz7fmf.mjs +0 -20
- package/dist/dashboard-pXAxJTTx.mjs +0 -21
- package/dist/db-CmHHj5eI.mjs +0 -22
- package/dist/document-DQIhL75C.mjs +0 -19
- package/dist/field-B-UcqFzm.mjs +0 -18
- package/dist/git-sync-CwOvcUI2.mjs +0 -28
- package/dist/is-dirty-MT0BT4CS.mjs +0 -9
- package/dist/list-Cx8JxS2C.mjs +0 -42
- package/dist/measure-BIAoqgcS.mjs +0 -19
- package/dist/publish-CGUkIqSm.mjs +0 -70
- package/dist/segment-BN8sFunv.mjs +0 -19
- package/dist/setting-zZjcOPyE.mjs +0 -17
- package/dist/snippet-DK0ZA8m5.mjs +0 -19
- package/dist/table-COAKXNuj.mjs +0 -21
- package/dist/transform-Bto4U82j.mjs +0 -25
- package/dist/transform-job-_fW1y2tg.mjs +0 -22
- package/dist/transform-tag-C8n1oTr1.mjs +0 -18
- package/skill-data/robot-data-engineer/SKILL.md +0 -142
- /package/dist/{body-flags-D7q87Btw.mjs → body-flags-DWTTxJpP.mjs} +0 -0
- /package/dist/{collection-Deiziuu2.mjs → collection-DrLpA1SO.mjs} +0 -0
- /package/dist/{document-qfwR0r63.mjs → document-1W7NRaO_.mjs} +0 -0
- /package/dist/{field-E0IBy4Uw.mjs → field-CMY_LWUe.mjs} +0 -0
- /package/dist/{measure-JJAdFoqK.mjs → measure-DoJvtCaA.mjs} +0 -0
- /package/dist/{paginate-BexjkjbY.mjs → paginate-FVZUxL4J.mjs} +0 -0
- /package/dist/{render-CkuFkWlQ.mjs → render-BTKnWL0d.mjs} +0 -0
- /package/dist/{revision-message-flag-C7zBeWEt.mjs → revision-message-flag-CHrJgFFx.mjs} +0 -0
- /package/dist/{segment-B9SEv9V_.mjs → segment-TXktTCfU.mjs} +0 -0
- /package/dist/{setting-i0pugNHl.mjs → setting-m46MUtW5.mjs} +0 -0
- /package/dist/{snippet-NNzqlksR.mjs → snippet-CtA2Pkoa.mjs} +0 -0
- /package/dist/{transform-n376akp8.mjs → transform-DEF38FWe.mjs} +0 -0
- /package/dist/{transform-job-C8lIS-7Q.mjs → transform-job-CtixL4An.mjs} +0 -0
- /package/dist/{transform-tag-DB46AhAj.mjs → transform-tag-rsIrckCM.mjs} +0 -0
package/README.md
CHANGED
|
@@ -469,38 +469,7 @@ mb table update 42 --file patch.json
|
|
|
469
469
|
echo '{"description":"Customer dimension"}' | mb table update 42
|
|
470
470
|
```
|
|
471
471
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
Publish tables to a library collection (`POST /api/ee/data-studio/table/publish-tables`), surfacing them as trusted data sources. The selected tables and every upstream table they depend on are set to the target `library-data` collection. Select tables with `--table-ids`, whole databases with `--db-ids`, or schemas with `--schemas` — the filters are combined. Requires the `library` premium feature.
|
|
475
|
-
|
|
476
|
-
```sh
|
|
477
|
-
mb table publish --collection-id 12 --table-ids 1,2,3
|
|
478
|
-
mb table publish --collection-id 12 --db-ids 1 --json
|
|
479
|
-
mb table publish --collection-id 12 --schemas 1:public,1:analytics
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
| Flag | Description |
|
|
483
|
-
| ---------------------- | ----------------------------------------------------------------- |
|
|
484
|
-
| `--collection-id <id>` | Target library collection id (required). |
|
|
485
|
-
| `--table-ids <ids>` | Comma-separated table ids. |
|
|
486
|
-
| `--db-ids <ids>` | Comma-separated database ids. |
|
|
487
|
-
| `--schemas <ids>` | Comma-separated schema ids, each `<db-id>:<schema>` (`1:public`). |
|
|
488
|
-
|
|
489
|
-
### `mb table unpublish`
|
|
490
|
-
|
|
491
|
-
Unpublish tables from the library (`POST /api/ee/data-studio/table/unpublish-tables`). Clears the library collection for the selected tables and every downstream table that depends on them. Same selector flags as `publish` (minus `--collection-id`). Requires the `library` premium feature.
|
|
492
|
-
|
|
493
|
-
```sh
|
|
494
|
-
mb table unpublish --table-ids 1,2,3
|
|
495
|
-
mb table unpublish --db-ids 1 --json
|
|
496
|
-
mb table unpublish --schemas 1:public,1:analytics
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
| Flag | Description |
|
|
500
|
-
| ------------------- | ----------------------------------------------------------------- |
|
|
501
|
-
| `--table-ids <ids>` | Comma-separated table ids. |
|
|
502
|
-
| `--db-ids <ids>` | Comma-separated database ids. |
|
|
503
|
-
| `--schemas <ids>` | Comma-separated schema ids, each `<db-id>:<schema>` (`1:public`). |
|
|
472
|
+
Publish status surfaces on the table itself — `table get`/`table list` carry `is_published` (and `collection_id` under `--full`). Publishing tables to the Library is done with [`mb library publish`](#library).
|
|
504
473
|
|
|
505
474
|
## Fields
|
|
506
475
|
|
|
@@ -660,6 +629,27 @@ mb dashboard cards 1
|
|
|
660
629
|
mb dashboard cards 1 --json
|
|
661
630
|
```
|
|
662
631
|
|
|
632
|
+
#### Dashboard parameters (filters)
|
|
633
|
+
|
|
634
|
+
A dashboard's `parameters` are its filter widgets. They're typed (`Parameter` schema): an invalid `type` is rejected at the CLI boundary with a message that echoes the full allowed enum (`string/=`, `string/contains`, `number/between`, `date/range`, `category`, `id`, `temporal-unit`, …).
|
|
635
|
+
|
|
636
|
+
Read them off the dashboard with `mb dashboard get <id> --fields parameters --json` (or `--full` for the whole record). There is no separate read verb — they're part of the dashboard.
|
|
637
|
+
|
|
638
|
+
Editing replaces the **whole** `parameters` array, so it's a read-modify-write loop: read the current set, modify it, and send it all back via `mb dashboard create`/`mb dashboard update --body '{"parameters":[…]}'`; omitting a parameter deletes it. Each parameter's `id` is a descriptive string you choose (reuse the `slug`, e.g. `order_status`), unique within the dashboard — Metabase stores any non-blank string as-is, so there is no need to generate a random id (use `mb uuid` only if you genuinely want an opaque one). Bind a parameter to a card column through a dashcard's `parameter_mappings`, whose `parameter_id` must match a parameter `id` exactly.
|
|
639
|
+
|
|
640
|
+
### `mb dashboard parameter-values <dashboard-id> <parameter-id>`
|
|
641
|
+
|
|
642
|
+
Fetch the selectable values for one dashboard parameter (`{values, has_more_values}`). Values come from the parameter's static list, its source card, or — for a parameter mapped to a field — the field's live distinct values (chain-filtered).
|
|
643
|
+
|
|
644
|
+
```sh
|
|
645
|
+
mb dashboard parameter-values 1 order_status --json
|
|
646
|
+
mb dashboard parameter-values 1 order_status --query Cam --json
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
| Flag | Description |
|
|
650
|
+
| ------------------ | -------------------------------------------------------------------------------------- |
|
|
651
|
+
| `--query <substr>` | Case-insensitive substring search (first 1000 matches) instead of the full value list. |
|
|
652
|
+
|
|
663
653
|
### `mb dashboard create`
|
|
664
654
|
|
|
665
655
|
The body accepts the same dashboard-level fields as the underlying `POST /api/dashboard` (`name`, `description`, `parameters`, `cache_ttl`, `collection_id`, `collection_position`). It also accepts optional `dashcards` and `tabs`: when either is present, the CLI chains a `PUT /api/dashboard/:id` after the create and returns the updated dashboard with its dashcards/tabs applied. Use a negative `id` on a dashcard to indicate one the server should newly create.
|
|
@@ -991,6 +981,53 @@ mb collection archive 4
|
|
|
991
981
|
mb collection archive 4 --json
|
|
992
982
|
```
|
|
993
983
|
|
|
984
|
+
## Library
|
|
985
|
+
|
|
986
|
+
Curate the Metabase **Library** — a governed subtree (`library-data` "Data" for published tables, `library-metrics` "Metrics" for official metrics, under a `library` root). Tables published to Data appear first when people pick a data source and rank up in search, steering everyone toward trusted, analysis-ready tables. Requires the `library` premium feature (Pro/Enterprise) and admin or data-analyst permission (Curate alone won't publish tables). Publish status surfaces on the table via `is_published` (`table get`/`table list`).
|
|
987
|
+
|
|
988
|
+
### `mb library get`
|
|
989
|
+
|
|
990
|
+
Show the Library and its Data/Metrics collection ids (`GET /api/ee/library/`). Errors if the Library hasn't been created yet.
|
|
991
|
+
|
|
992
|
+
```sh
|
|
993
|
+
mb library get
|
|
994
|
+
mb library get --json
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
### `mb library create`
|
|
998
|
+
|
|
999
|
+
Create the Library subtree (`POST /api/ee/library/`). Idempotent — returns the existing Library when it's already there.
|
|
1000
|
+
|
|
1001
|
+
```sh
|
|
1002
|
+
mb library create
|
|
1003
|
+
mb library create --json
|
|
1004
|
+
```
|
|
1005
|
+
|
|
1006
|
+
### `mb library publish`
|
|
1007
|
+
|
|
1008
|
+
Publish tables (and their upstream dependencies) into the Library's Data collection (`POST /api/ee/data-studio/table/publish-tables`). The target Data collection is resolved automatically and the Library is created if it doesn't exist yet — there's no collection id to pass.
|
|
1009
|
+
|
|
1010
|
+
```sh
|
|
1011
|
+
mb library publish --table-ids 1,2,3
|
|
1012
|
+
mb library publish --db-ids 1 --json
|
|
1013
|
+
mb library publish --schemas 1:public,1:analytics
|
|
1014
|
+
```
|
|
1015
|
+
|
|
1016
|
+
| Flag | Description |
|
|
1017
|
+
| ------------------- | ----------------------------------------------------------------- |
|
|
1018
|
+
| `--table-ids <ids>` | Comma-separated table ids. |
|
|
1019
|
+
| `--db-ids <ids>` | Comma-separated database ids. |
|
|
1020
|
+
| `--schemas <ids>` | Comma-separated schema ids, each `<db-id>:<schema>` (`1:public`). |
|
|
1021
|
+
|
|
1022
|
+
### `mb library unpublish`
|
|
1023
|
+
|
|
1024
|
+
Unpublish tables (and their downstream dependents) from the Library (`POST /api/ee/data-studio/table/unpublish-tables`). Same selector flags as `publish`.
|
|
1025
|
+
|
|
1026
|
+
```sh
|
|
1027
|
+
mb library unpublish --table-ids 1,2,3
|
|
1028
|
+
mb library unpublish --db-ids 1 --json
|
|
1029
|
+
```
|
|
1030
|
+
|
|
994
1031
|
## Documents
|
|
995
1032
|
|
|
996
1033
|
CRUD on `/api/document`. A document is a rich-text page that mixes prose with embedded saved questions (`cardEmbed`) and inline links to Metabase entities (`smartLink`). The body is a [TipTap](https://tiptap.dev/) (ProseMirror) JSON tree stored under `content_type: application/json+vnd.prose-mirror`. The agent-facing format reference lives in the bundled `document` skill (`mb skills get document`). It's a baseline OSS feature — no elevated server version or premium token required.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
2
|
-
import { defineMetabaseCommand } from "./runtime-
|
|
3
|
-
import { renderSummary } from "./capabilities-
|
|
4
|
-
import { parseId } from "./parse-id-
|
|
5
|
-
import { REMOTE_SYNC_PATHS } from "./poll-task-
|
|
1
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
2
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
3
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
4
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
5
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-TilgciQn.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
|
|
8
8
|
//#region src/commands/git-sync/add-collection.ts
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import "./poll-BpAJpvb-.mjs";
|
|
8
|
+
import "./poll-task-TilgciQn.mjs";
|
|
9
|
+
import { SyncSettingsUpdateResult, add_collection_default, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-C-t9SQBk.mjs";
|
|
10
|
+
|
|
11
|
+
export { add_collection_default as default };
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./field-CMY_LWUe.mjs";
|
|
7
|
+
import "./parameter-CiJ4CwWE.mjs";
|
|
8
|
+
import { Card, cardView } from "./card-DEmcRlNO.mjs";
|
|
9
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
8
10
|
|
|
9
11
|
//#region src/commands/card/archive.ts
|
|
10
12
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import { revisionMessageFlag } from "./revision-message-flag-CHrJgFFx.mjs";
|
|
8
|
+
import { Segment, segmentView } from "./segment-TXktTCfU.mjs";
|
|
8
9
|
|
|
9
10
|
//#region src/commands/segment/archive.ts
|
|
10
11
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import { Snippet, snippetView } from "./snippet-CtA2Pkoa.mjs";
|
|
7
8
|
|
|
8
9
|
//#region src/commands/snippet/archive.ts
|
|
9
10
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import { Collection, collectionView } from "./collection-DrLpA1SO.mjs";
|
|
7
8
|
|
|
8
9
|
//#region src/commands/collection/archive.ts
|
|
9
10
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import { Document, documentView } from "./document-1W7NRaO_.mjs";
|
|
7
8
|
|
|
8
9
|
//#region src/commands/document/archive.ts
|
|
9
10
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./parameter-CiJ4CwWE.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
8
|
+
import { Dashboard, dashboardView } from "./dashboard-DOplbKyQ.mjs";
|
|
7
9
|
|
|
8
10
|
//#region src/commands/dashboard/archive.ts
|
|
9
11
|
var archive_default = defineMetabaseCommand({
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
7
|
+
import { Measure, measureView } from "./measure-DoJvtCaA.mjs";
|
|
8
|
+
import { revisionMessageFlag } from "./revision-message-flag-CHrJgFFx.mjs";
|
|
8
9
|
|
|
9
10
|
//#region src/commands/measure/archive.ts
|
|
10
11
|
var archive_default = defineMetabaseCommand({
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
2
|
+
import { defineCommandGroup } from "./group-BNE_RiH5.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/auth/index.ts
|
|
5
|
+
var auth_default = defineCommandGroup({
|
|
6
|
+
name: "auth",
|
|
7
|
+
description: "Authenticate against a Metabase instance",
|
|
8
|
+
defaultCommand: "login",
|
|
9
|
+
skills: [{
|
|
10
|
+
skill: "core",
|
|
11
|
+
purpose: "authentication and named profiles"
|
|
12
|
+
}],
|
|
13
|
+
subCommands: {
|
|
14
|
+
login: () => import("./login-Bt6j6yBM.mjs").then((m) => m.default),
|
|
15
|
+
status: () => import("./status-CmRgHTrV.mjs").then((m) => m.default),
|
|
16
|
+
list: () => import("./list-CvhVYOVl.mjs").then((m) => m.default),
|
|
17
|
+
logout: () => import("./logout-ANkL02p0.mjs").then((m) => m.default)
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { auth_default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
import { parseJson } from "./runtime-
|
|
3
|
-
import { DEFAULT_FLAG_NAME, readInput } from "./input-
|
|
1
|
+
import { ConfigError } from "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { parseJson } from "./runtime-BJtuxWM8.mjs";
|
|
3
|
+
import { DEFAULT_FLAG_NAME, readInput } from "./input-7Sj85_K7.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/body.ts
|
|
6
6
|
async function readBody(sources, schema) {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderList } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./poll-BpAJpvb-.mjs";
|
|
7
|
+
import { REMOTE_SYNC_PATHS } from "./poll-task-TilgciQn.mjs";
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
|
|
9
10
|
//#region src/commands/git-sync/branches.ts
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
6
7
|
import { z } from "zod";
|
|
7
8
|
|
|
8
9
|
//#region src/commands/transform/cancel.ts
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, outputFlags, profileFlag } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderSummary } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./poll-BpAJpvb-.mjs";
|
|
7
|
+
import { REMOTE_SYNC_PATHS, SyncTask, syncTaskView } from "./poll-task-TilgciQn.mjs";
|
|
7
8
|
|
|
8
9
|
//#region src/commands/git-sync/cancel-task.ts
|
|
9
10
|
var cancel_task_default = defineMetabaseCommand({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigError, itemOversizeMessage, listTruncationNotice, warn } from "./
|
|
1
|
+
import { ConfigError, itemOversizeMessage, listTruncationNotice, warn } from "./notice-DyVl5aYB.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import Table from "cli-table3";
|
|
4
4
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
2
|
+
import { defineCommandGroup } from "./group-BNE_RiH5.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/card/index.ts
|
|
5
|
+
var card_default = defineCommandGroup({
|
|
6
|
+
name: "card",
|
|
7
|
+
description: "Manage Metabase cards (questions, models, metrics)",
|
|
8
|
+
skills: [{
|
|
9
|
+
skill: "mbql",
|
|
10
|
+
purpose: "author the dataset_query"
|
|
11
|
+
}, {
|
|
12
|
+
skill: "visualization",
|
|
13
|
+
purpose: "choose display and visualization_settings"
|
|
14
|
+
}],
|
|
15
|
+
subCommands: {
|
|
16
|
+
list: () => import("./list-BF-W4jOZ.mjs").then((mod) => mod.default),
|
|
17
|
+
get: () => import("./get-Cl5Ak73C.mjs").then((mod) => mod.default),
|
|
18
|
+
query: () => import("./query-CQ3xXa9P.mjs").then((mod) => mod.default),
|
|
19
|
+
create: () => import("./create-FZOrCw5k.mjs").then((mod) => mod.default),
|
|
20
|
+
update: () => import("./update-Dxa_6H2A.mjs").then((mod) => mod.default),
|
|
21
|
+
archive: () => import("./archive-C7dnyzVY.mjs").then((mod) => mod.default)
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { card_default as default };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { FieldBaseType, FieldSemanticType } from "./field-
|
|
1
|
+
import { FieldBaseType, FieldSemanticType } from "./field-CMY_LWUe.mjs";
|
|
2
|
+
import { Parameter, ParameterMapping } from "./parameter-CiJ4CwWE.mjs";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
|
|
4
5
|
//#region src/domain/card.ts
|
|
@@ -79,8 +80,8 @@ const CardCreateInput = z.object({
|
|
|
79
80
|
collection_id: z.number().int().positive().nullable().optional(),
|
|
80
81
|
collection_position: z.number().int().positive().nullable().optional(),
|
|
81
82
|
dashboard_id: z.number().int().positive().nullable().optional(),
|
|
82
|
-
parameters: z.array(
|
|
83
|
-
parameter_mappings: z.array(
|
|
83
|
+
parameters: z.array(Parameter).optional(),
|
|
84
|
+
parameter_mappings: z.array(ParameterMapping).optional()
|
|
84
85
|
}).loose();
|
|
85
86
|
const CardUpdateInput = z.object({
|
|
86
87
|
name: z.string().min(1).optional(),
|
|
@@ -99,8 +100,8 @@ const CardUpdateInput = z.object({
|
|
|
99
100
|
cache_ttl: z.number().int().positive().nullable().optional(),
|
|
100
101
|
dashboard_id: z.number().int().positive().nullable().optional(),
|
|
101
102
|
dashboard_tab_id: z.number().int().positive().nullable().optional(),
|
|
102
|
-
parameters: z.array(
|
|
103
|
-
parameter_mappings: z.array(
|
|
103
|
+
parameters: z.array(Parameter).optional(),
|
|
104
|
+
parameter_mappings: z.array(ParameterMapping).optional(),
|
|
104
105
|
result_metadata: z.array(z.unknown()).nullable().optional()
|
|
105
106
|
}).loose();
|
|
106
107
|
const QueryColumn = z.object({
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
1
|
+
import "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-5H_tcfL8.mjs";
|
|
3
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
4
|
+
import { defineMetabaseCommand } from "./runtime-BJtuxWM8.mjs";
|
|
5
|
+
import { renderList } from "./capabilities-N0jo5U7S.mjs";
|
|
6
|
+
import "./parameter-CiJ4CwWE.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-D4LeTUsP.mjs";
|
|
8
|
+
import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-DOplbKyQ.mjs";
|
|
7
9
|
|
|
8
10
|
//#region src/commands/dashboard/cards.ts
|
|
9
11
|
const DashcardListEnvelope = listEnvelopeSchema(DashcardCompact);
|
package/dist/cli.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { ConfigError, flagConsumesValue,
|
|
3
|
-
import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-
|
|
2
|
+
import { ConfigError, flagConsumesValue, normalizeFlag, resolveCitty, toAliasArray } from "./notice-DyVl5aYB.mjs";
|
|
3
|
+
import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-5H_tcfL8.mjs";
|
|
4
|
+
import { getMetabaseAugment, setMetabaseAugment } from "./command-augment-DdZIfx1V.mjs";
|
|
4
5
|
import { defineCommand, renderUsage, runMain } from "citty";
|
|
5
6
|
|
|
6
7
|
//#region src/commands/global-flags.ts
|
|
@@ -58,32 +59,46 @@ const main = defineCommand({
|
|
|
58
59
|
description: package_default.description
|
|
59
60
|
},
|
|
60
61
|
subCommands: {
|
|
61
|
-
auth: () => import("./auth-
|
|
62
|
-
db: () => import("./db-
|
|
63
|
-
table: () => import("./table-
|
|
64
|
-
field: () => import("./field-
|
|
65
|
-
card: () => import("./card-
|
|
66
|
-
dashboard: () => import("./dashboard-
|
|
67
|
-
collection: () => import("./collection-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"transform-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
auth: () => import("./auth-Kv2MRkRk.mjs").then((mod) => mod.default),
|
|
63
|
+
db: () => import("./db-DWykmBOh.mjs").then((mod) => mod.default),
|
|
64
|
+
table: () => import("./table-B1iBqmNu.mjs").then((mod) => mod.default),
|
|
65
|
+
field: () => import("./field-CFt1-KDR.mjs").then((mod) => mod.default),
|
|
66
|
+
card: () => import("./card-Bp58WEUF.mjs").then((mod) => mod.default),
|
|
67
|
+
dashboard: () => import("./dashboard-C9pQCnX6.mjs").then((mod) => mod.default),
|
|
68
|
+
collection: () => import("./collection-D8TI20Ir.mjs").then((mod) => mod.default),
|
|
69
|
+
library: () => import("./library-B5AvpACG.mjs").then((mod) => mod.default),
|
|
70
|
+
document: () => import("./document-DNDm8_Py.mjs").then((mod) => mod.default),
|
|
71
|
+
transform: () => import("./transform-BuIooRQh.mjs").then((mod) => mod.default),
|
|
72
|
+
"transform-job": () => import("./transform-job-C3yz0krA.mjs").then((mod) => mod.default),
|
|
73
|
+
"transform-tag": () => import("./transform-tag-CJD6mJUe.mjs").then((mod) => mod.default),
|
|
74
|
+
setting: () => import("./setting-DHYO-W5g.mjs").then((mod) => mod.default),
|
|
75
|
+
search: () => import("./search-vaT5EwhG.mjs").then((mod) => mod.default),
|
|
76
|
+
"git-sync": () => import("./git-sync-ByvjqSiy.mjs").then((mod) => mod.default),
|
|
77
|
+
setup: () => import("./setup-D1de5Sbc.mjs").then((mod) => mod.default),
|
|
78
|
+
snippet: () => import("./snippet-DtLmHr2J.mjs").then((mod) => mod.default),
|
|
79
|
+
segment: () => import("./segment-BPC725mo.mjs").then((mod) => mod.default),
|
|
80
|
+
measure: () => import("./measure-CgFwtL1r.mjs").then((mod) => mod.default),
|
|
81
|
+
eid: () => import("./eid-p-zn_1RJ.mjs").then((mod) => mod.default),
|
|
82
|
+
query: () => import("./query-BWJ5h1g3.mjs").then((mod) => mod.default),
|
|
83
|
+
uuid: () => import("./uuid-D6JVJ-R1.mjs").then((mod) => mod.default),
|
|
84
|
+
upgrade: () => import("./upgrade-CBW8V9qZ.mjs").then((mod) => mod.default),
|
|
85
|
+
skills: () => import("./skills-NhgVypJ7.mjs").then((mod) => mod.default),
|
|
86
|
+
__manifest: () => import("./manifest-BVf8P4bl.mjs").then((mod) => mod.createManifestCommand(main))
|
|
85
87
|
}
|
|
86
88
|
});
|
|
89
|
+
setMetabaseAugment(main, {
|
|
90
|
+
examples: [],
|
|
91
|
+
details: null,
|
|
92
|
+
skills: [{
|
|
93
|
+
skill: "core",
|
|
94
|
+
purpose: "auth, conventions, and per-resource footguns"
|
|
95
|
+
}, {
|
|
96
|
+
skill: "data-workflow",
|
|
97
|
+
purpose: "guided end-to-end: raw data → clean tables → metrics → answers → dashboards"
|
|
98
|
+
}],
|
|
99
|
+
outputSchema: null,
|
|
100
|
+
capabilities: null
|
|
101
|
+
});
|
|
87
102
|
var main_default = main;
|
|
88
103
|
|
|
89
104
|
//#endregion
|
|
@@ -102,6 +117,8 @@ const CLI_NAME = "mb";
|
|
|
102
117
|
const HELP_FLAG_SPEC = "-h, --help";
|
|
103
118
|
const HELP_FLAG_DESCRIPTION = "Show help for this command";
|
|
104
119
|
const GETTING_STARTED_HINT = `First time? Run \`${CLI_NAME} auth login\` to connect to a Metabase instance.`;
|
|
120
|
+
const SKILLS_HEADER = "AGENT SKILLS";
|
|
121
|
+
const SKILLS_LIST_ITEM = `${CLI_NAME} skills list — every bundled skill`;
|
|
105
122
|
async function showUsage(cmd, parent, breadcrumb) {
|
|
106
123
|
const raw = (await renderUsage(cmd, parent)).replace(ANSI_PATTERN, "");
|
|
107
124
|
const lines = raw.split("\n").map((line) => line.replace(TRAILING_WHITESPACE, ""));
|
|
@@ -114,6 +131,7 @@ async function showUsage(cmd, parent, breadcrumb) {
|
|
|
114
131
|
const augment = getMetabaseAugment(cmd);
|
|
115
132
|
const details = augment?.details ?? null;
|
|
116
133
|
const examples = augment?.examples ?? [];
|
|
134
|
+
const skills = augment?.skills ?? [];
|
|
117
135
|
const transformed = transformBody(lines, {
|
|
118
136
|
cittyName,
|
|
119
137
|
breadcrumb: breadcrumb ?? cittyName,
|
|
@@ -122,6 +140,7 @@ async function showUsage(cmd, parent, breadcrumb) {
|
|
|
122
140
|
const body = withDetails(transformed, details).join("\n").trimEnd();
|
|
123
141
|
const sections = [body];
|
|
124
142
|
if (examples.length > 0) sections.push(renderExamples(examples));
|
|
143
|
+
if (skills.length > 0) sections.push(renderSkillsSection(skills, isRoot));
|
|
125
144
|
if (isRoot) sections.push(GETTING_STARTED_HINT);
|
|
126
145
|
process.stdout.write(sections.join("\n\n") + "\n");
|
|
127
146
|
}
|
|
@@ -173,6 +192,15 @@ function optionLayout(row) {
|
|
|
173
192
|
descStart: flagEnd + gapRemainder
|
|
174
193
|
};
|
|
175
194
|
}
|
|
195
|
+
function renderSkillsSection(skills, includeListPointer) {
|
|
196
|
+
const items = skills.map((p) => `${LINE_PREFIX}mb skills get ${p.skill} — ${p.purpose}`);
|
|
197
|
+
if (includeListPointer) items.push(`${LINE_PREFIX}${SKILLS_LIST_ITEM}`);
|
|
198
|
+
return [
|
|
199
|
+
SKILLS_HEADER,
|
|
200
|
+
"",
|
|
201
|
+
...items
|
|
202
|
+
].join("\n");
|
|
203
|
+
}
|
|
176
204
|
function withDetails(lines, details) {
|
|
177
205
|
if (details === null) return lines;
|
|
178
206
|
const [first, ...rest] = lines;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./command-augment-DdZIfx1V.mjs";
|
|
2
|
+
import { defineCommandGroup } from "./group-BNE_RiH5.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/collection/index.ts
|
|
5
|
+
var collection_default = defineCommandGroup({
|
|
6
|
+
name: "collection",
|
|
7
|
+
description: "Manage Metabase collections",
|
|
8
|
+
skills: [{
|
|
9
|
+
skill: "core",
|
|
10
|
+
purpose: "collection ref forms and the transforms namespace"
|
|
11
|
+
}],
|
|
12
|
+
subCommands: {
|
|
13
|
+
list: () => import("./list-C4bALfCs.mjs").then((mod) => mod.default),
|
|
14
|
+
get: () => import("./get-4lufgahL.mjs").then((mod) => mod.default),
|
|
15
|
+
items: () => import("./items-CQtt9X4M.mjs").then((mod) => mod.default),
|
|
16
|
+
tree: () => import("./tree-D18vYSe4.mjs").then((mod) => mod.default),
|
|
17
|
+
create: () => import("./create-B79M8YpX.mjs").then((mod) => mod.default),
|
|
18
|
+
archive: () => import("./archive-DS-KEB4a.mjs").then((mod) => mod.default)
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { collection_default as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConfigError } from "./
|
|
2
|
-
import { HttpError } from "./runtime-
|
|
1
|
+
import { ConfigError } from "./notice-DyVl5aYB.mjs";
|
|
2
|
+
import { HttpError } from "./runtime-BJtuxWM8.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/transform/collection-namespace.ts
|
|
5
5
|
const TRANSFORMS_NAMESPACE_HINT = "transforms can only be filed in a :transforms-namespace collection. Create one with `mb collection create --body '{\"name\":\"…\"}' --namespace transforms` and pass its id as collection_id, or omit collection_id to leave the transform uncollected.";
|