@metabase/cli 0.1.4 → 0.1.6
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/.claude-plugin/marketplace.json +19 -0
- package/README.md +147 -101
- package/dist/{add-collection-CffaBB-Y.mjs → add-collection-BU8r3r2M.mjs} +9 -4
- package/dist/add-collection-C0w6ACQF.mjs +11 -0
- package/dist/{archive-uJrslh9r.mjs → archive-BNinrUak.mjs} +9 -8
- package/dist/{archive-GdGm7l2e.mjs → archive-C1enZgKV.mjs} +8 -7
- package/dist/archive-CDA0KxL8.mjs +40 -0
- package/dist/{archive-BAcEXbT9.mjs → archive-CRhiBpPJ.mjs} +9 -8
- package/dist/{archive-B_B3MQp0.mjs → archive-DMPS8Kih.mjs} +9 -8
- package/dist/archive-lWgqiFAt.mjs +40 -0
- package/dist/auth-CzXb_zB2.mjs +19 -0
- package/dist/{body-D6dHGjMT.mjs → body-DjdFxjpg.mjs} +4 -4
- package/dist/{branches-Bpe40fEd.mjs → branches-B1WRfG7-.mjs} +11 -7
- package/dist/{cancel-BWTY6oYI.mjs → cancel-Dl_Ho056.mjs} +7 -6
- package/dist/{cancel-task--BfiAXfS.mjs → cancel-task-CdigdCaO.mjs} +11 -7
- package/dist/capabilities-7e9MgquN.mjs +29 -0
- package/dist/card-DP4rfoOi.mjs +21 -0
- package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
- package/dist/{cards-CVlFJxYh.mjs → cards-BGiJS675.mjs} +8 -7
- package/dist/cli.mjs +267 -44
- package/dist/collection-tY18ezvn.mjs +21 -0
- package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
- package/dist/create-BNiva__H.mjs +52 -0
- package/dist/{create-izE3EKCt.mjs → create-BTcpaop_.mjs} +9 -8
- package/dist/{create-BykvNpSA.mjs → create-BYlIju0b.mjs} +14 -12
- package/dist/{create-Bu-YhIDL.mjs → create-Be_0Vier.mjs} +10 -9
- package/dist/{create-DYoc9IXW.mjs → create-CHF313Qg.mjs} +13 -9
- package/dist/{create-Cz3_Wxdt.mjs → create-CwGtmwqm.mjs} +14 -12
- package/dist/{create-DP8RrLDi.mjs → create-CzzrbL0u.mjs} +10 -9
- package/dist/{create-BzElku2l.mjs → create-DGth_uOp.mjs} +14 -12
- package/dist/{create-branch-B49UQyCK.mjs → create-branch-DKZkoQ64.mjs} +11 -7
- package/dist/{create-DQVdMT2Y.mjs → create-dhxPxfF3.mjs} +16 -14
- package/dist/{credentials-xKSoP6eh.mjs → credentials-dzeq7ckm.mjs} +12 -10
- package/dist/{current-task-DweHmjlk.mjs → current-task-CCRzm0_7.mjs} +11 -7
- package/dist/dashboard-ChM_Tu0l.mjs +22 -0
- package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
- package/dist/{database-BNlvldUL.mjs → database-CIXwHKjK.mjs} +3 -3
- package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
- package/dist/db-DrQn_i3W.mjs +22 -0
- package/dist/{remove-B3ZEqBF7.mjs → delete-CM3jnAeQ.mjs} +21 -20
- package/dist/{delete-DojHmKeM.mjs → delete-Dimc-2y8.mjs} +9 -8
- package/dist/{delete-DIz9Tgz5.mjs → delete-ZjnV35OJ.mjs} +9 -8
- package/dist/{delete-runtime-BkAdygbs.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
- package/dist/{delete-table-DjN8E3sd.mjs → delete-table-agZJpivt.mjs} +9 -8
- package/dist/{deprovision-_HDcBApz.mjs → deprovision-CwxcIT3k.mjs} +16 -12
- package/dist/{dirty-Co8V0SZ3.mjs → dirty-D4d0yHqj.mjs} +11 -7
- package/dist/{docker-D9sC_37H.mjs → docker-Oq80q3tu.mjs} +4 -4
- package/dist/{translate-CG_Ka0dO.mjs → eid-BXzaQh0o.mjs} +37 -22
- package/dist/error-C9S6PN3-.mjs +190 -0
- package/dist/{export-CVMFxoo1.mjs → export-DTygoXBP.mjs} +17 -16
- package/dist/field-Z6Pcxf4n.mjs +19 -0
- package/dist/{fields-Coha7vKv.mjs → fields-CoQi99gv.mjs} +9 -8
- package/dist/{get-DXv2FkA7.mjs → get-Bzys7vgp.mjs} +8 -7
- package/dist/{get-bNtA7vWe.mjs → get-C2p383Qc.mjs} +8 -7
- package/dist/{get-Br6WayZv.mjs → get-C3HdQ91a.mjs} +8 -7
- package/dist/{get-BOtKerj8.mjs → get-CP3Z3NiH.mjs} +9 -8
- package/dist/{get-BSKoL8ek.mjs → get-C_w1kvN3.mjs} +9 -8
- package/dist/{get-Be6EFh94.mjs → get-CzuzeKSe.mjs} +10 -9
- package/dist/{get-BVTz9B_H.mjs → get-D3SbEQSE.mjs} +10 -9
- package/dist/get-DFxZXaKz.mjs +79 -0
- package/dist/{get-DZrV7v9d.mjs → get-DQTZG_NP.mjs} +8 -7
- package/dist/{get-CJwzbVjc.mjs → get-DSWFjy7O.mjs} +8 -7
- package/dist/{get-BxzCKVC6.mjs → get-Ddr0XLh7.mjs} +8 -7
- package/dist/{get-AOvWo48B.mjs → get-Hc93A0Yz.mjs} +8 -7
- package/dist/{get-C_6K7MSW.mjs → get-lb7q3JYs.mjs} +7 -6
- package/dist/get-run-B7sKdaDU.mjs +38 -0
- package/dist/git-sync-CiGAad76.mjs +28 -0
- package/dist/{has-remote-changes-D6xgsuUr.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
- package/dist/{import-Dv0ORSNw.mjs → import-CiMz4Wz-.mjs} +17 -16
- package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
- package/dist/{is-dirty-WNi8a6O9.mjs → is-dirty-BZOaryxT.mjs} +9 -4
- package/dist/is-dirty-Ume4oV0j.mjs +10 -0
- package/dist/{items-CTcAMknV.mjs → items-BWfvkY-J.mjs} +9 -8
- package/dist/key-C2XG394c.mjs +17 -0
- package/dist/license-Dxarh-gG.mjs +17 -0
- package/dist/{list-FXuSCYpa.mjs → list--OYdUTtu.mjs} +7 -6
- package/dist/{list-8oVMvlLV.mjs → list-2j7GsXsl.mjs} +7 -6
- package/dist/{list-xQmtQPSl.mjs → list-BI4zr8LW.mjs} +10 -8
- package/dist/{list-DhWG5jiW.mjs → list-Brgh-Z2v.mjs} +8 -6
- package/dist/{list-DSs0Q78i.mjs → list-C3hfovHv.mjs} +7 -6
- package/dist/{list-DvUjMQze.mjs → list-CL7eCOQE.mjs} +7 -6
- package/dist/list-Clz5igWg.mjs +44 -0
- package/dist/list-D4sFiqX8.mjs +173 -0
- package/dist/{list-BxdXvGTK.mjs → list-DXH7TlkU.mjs} +9 -7
- package/dist/{list-CocYwmnI.mjs → list-DZ8fNUoQ.mjs} +9 -8
- package/dist/{list-DjhZU-FY.mjs → list-SOG0whQ-.mjs} +7 -6
- package/dist/{list-DI7K3K6k.mjs → list-d58BprgJ.mjs} +7 -6
- package/dist/{list-NiwCL_1X.mjs → list-sD5N3fGk.mjs} +9 -8
- package/dist/{list-CbJeP0Z6.mjs → list-zSO0DMw-.mjs} +10 -6
- package/dist/{login-SXsSH0I1.mjs → login-Bm2AnCez.mjs} +65 -80
- package/dist/{logout-bgOXjxbN.mjs → logout-BlyRJODO.mjs} +8 -7
- package/dist/{logs-BnwVbFuD.mjs → logs-CywPikkL.mjs} +9 -8
- package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
- package/dist/measure-C44EK_xt.mjs +20 -0
- package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
- package/dist/{metadata-Bu2HOmuX.mjs → metadata-B8ZSF9LA.mjs} +10 -9
- package/dist/{metadata-B0WZT3Yb.mjs → metadata-DqiI2q9q.mjs} +9 -8
- package/dist/parse-enum-CrEWOhuY.mjs +11 -0
- package/dist/{parse-id-B3B-0hUA.mjs → parse-id-lk_K-CEF.mjs} +1 -1
- package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
- package/dist/{parse-schemas-DgtVLikM.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
- package/dist/path-AEtZ3mBq.mjs +58 -0
- package/dist/{poll-BCnrcUVf.mjs → poll-DHKDpCiq.mjs} +2 -2
- package/dist/{poll-task-0b1V6G-8.mjs → poll-task-Cooi0lQV.mjs} +3 -20
- package/dist/{preflight-5ACaYnDp.mjs → preflight-aXV5LyDs.mjs} +4 -4
- package/dist/{process-FjsqDwKo.mjs → process-C7V8LJ-j.mjs} +1 -1
- package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
- package/dist/{provision-29Zt62Ft.mjs → provision-UWcNDoDe.mjs} +29 -24
- package/dist/{ps-BMFiRCi4.mjs → ps-CJU0EbrC.mjs} +5 -3
- package/dist/ps-DEroLgbI.mjs +11 -0
- package/dist/{query-DxA353Hy.mjs → query-AaKzYnTY.mjs} +9 -8
- package/dist/{query-aba8MEe_.mjs → query-BlsVNZpD.mjs} +15 -13
- package/dist/{remove-BfgU_CQi.mjs → remove-BFWun0e8.mjs} +9 -8
- package/dist/{remove-collection-Brv72xUe.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
- package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
- package/dist/render-OQn3iRsI.mjs +32 -0
- package/dist/{rescan-values-DIAdjoq7.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
- package/dist/{run-CgXRo0hD.mjs → run-B4Wn43zm.mjs} +10 -9
- package/dist/{runs-DtLRw6xg.mjs → runs-Bbaszr18.mjs} +9 -8
- package/dist/{runtime-Br8L4NPm.mjs → runtime-Dmv5VtUK.mjs} +657 -428
- package/dist/{schema-tables-DiKMY6lx.mjs → schema-tables-CaWinbuK.mjs} +9 -8
- package/dist/{schemas-Bvr8cOzo.mjs → schemas-DUgGpAyB.mjs} +7 -6
- package/dist/{search-BT_TCcTd.mjs → search-BLrBXLUk.mjs} +12 -16
- package/dist/segment-B3Uwwcsm.mjs +20 -0
- package/dist/{set-DtG0KH6P.mjs → set-B8cUbRLD.mjs} +13 -12
- package/dist/{set-CAIkXlPy.mjs → set-DfGsta5O.mjs} +11 -10
- package/dist/{setting-BDOi5fk_.mjs → setting-D2p2MA7f.mjs} +3 -3
- package/dist/{setup-LjTvvlJy.mjs → setup-C9ikBRw_.mjs} +9 -8
- package/dist/skills-CUHIcQS6.mjs +18 -0
- package/dist/skills-CiN1OQ8W.mjs +191 -0
- package/dist/snippet-B7D0uWlz.mjs +20 -0
- package/dist/{start-CXKt0Q7A.mjs → start-3PX3ahjT.mjs} +68 -36
- package/dist/{stash-dRw1UEwg.mjs → stash-EIDcSvpF.mjs} +17 -16
- package/dist/{status-C2niMfrQ.mjs → status-95ElRAu9.mjs} +12 -8
- package/dist/status-B0_MiZEf.mjs +100 -0
- package/dist/status-CEplmC44.mjs +34 -0
- package/dist/{stop-BdedYfwU.mjs → stop-CQ0XGrN8.mjs} +11 -10
- package/dist/{summary-BPDA4K99.mjs → summary-C12LiEuJ.mjs} +8 -7
- package/dist/{sync-schema-D95LLRpf.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
- package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
- package/dist/table-e6h8SLVX.mjs +20 -0
- package/dist/transform-BMYh1lsC.mjs +25 -0
- package/dist/transform-job-Cm7z5TfH.mjs +20 -0
- package/dist/{transform-job-Csr86muI.mjs → transform-job-DeTDPMxt.mjs} +1 -1
- package/dist/{tree-DazZT7dR.mjs → tree-Des2ZG9d.mjs} +6 -5
- package/dist/{update-DE6kjV-f.mjs → update-Bx54nWEI.mjs} +17 -15
- package/dist/{update-bW-i6gjZ.mjs → update-CyIZdbIQ.mjs} +11 -10
- package/dist/{update-djgvzO3K.mjs → update-DBi5U8zb.mjs} +16 -14
- package/dist/{update-CJSDB6S8.mjs → update-DHZubok3.mjs} +18 -14
- package/dist/{update-BBfvArCx.mjs → update-DSgceARZ.mjs} +11 -10
- package/dist/{update-DSWZSfpw.mjs → update-DzAN4SPj.mjs} +15 -13
- package/dist/{update-WyRKlQPh.mjs → update-F6DmZncY.mjs} +11 -10
- package/dist/{update-DTIWJxob.mjs → update-_QfgNa53.mjs} +12 -11
- package/dist/{update-dashcard-BhD5x__K.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
- package/dist/{update-9kVyE3BJ.mjs → update-mYVnoYNV.mjs} +15 -13
- package/dist/{update-659eQR1L.mjs → update-njHe3j-s.mjs} +15 -13
- package/dist/{upgrade-D58rvXHM.mjs → upgrade-iAuvhX-W.mjs} +9 -8
- package/dist/{url-DKkSu2D8.mjs → url-DWaT6WIZ.mjs} +11 -10
- package/dist/{uuid-BF20B59s.mjs → uuid-CMKnS8-z.mjs} +8 -6
- package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
- package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
- package/dist/{values-DyjmpcbT.mjs → values-BfSTAbzc.mjs} +8 -7
- package/dist/verify-D5YtTqqp.mjs +79 -0
- package/dist/{wait-CeUPCgdc.mjs → wait-8yV9_WIo.mjs} +2 -2
- package/dist/{wait-DhkTaV6E.mjs → wait-Bv3Tsnv4.mjs} +12 -8
- package/dist/{wait-flags-BR-yqe7y.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
- package/dist/workspace-CKLZrR7l.mjs +26 -0
- package/dist/{workspace-credentials-Cctumbru.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -41
- package/dist/yaml-YTQiYJ9s.mjs +43 -0
- package/package.json +6 -2
- package/skill-data/core/SKILL.md +177 -0
- package/skill-data/git-sync/SKILL.md +196 -0
- package/skill-data/mbql/SKILL.md +156 -0
- package/skill-data/mbql/references/operators.md +253 -0
- package/skill-data/transform/SKILL.md +197 -0
- package/skill-data/viz/SKILL.md +137 -0
- package/skill-data/viz/references/settings.md +312 -0
- package/skill-data/workspace/SKILL.md +390 -0
- package/skills/metabase-cli/SKILL.md +21 -0
- package/dist/add-collection-CPL1njYZ.mjs +0 -11
- package/dist/api-key-9p1UPnXn.mjs +0 -13
- package/dist/auth-N4w5xtwW.mjs +0 -19
- package/dist/card-4rZRb5bc.mjs +0 -20
- package/dist/collection-Cp_B02I4.mjs +0 -19
- package/dist/command-augment-D9pI9Vbh.mjs +0 -11
- package/dist/create-doyv3SxU.mjs +0 -50
- package/dist/create-ov-De5dO.mjs +0 -125
- package/dist/dashboard-BYBiA-IG.mjs +0 -20
- package/dist/db-CObVU22j.mjs +0 -22
- package/dist/eid-Cr5r-t9B.mjs +0 -13
- package/dist/field-CbljasCH.mjs +0 -18
- package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
- package/dist/get-run-CSrXHDGS.mjs +0 -36
- package/dist/git-sync-BGkS8o5b.mjs +0 -28
- package/dist/is-dirty-BOZ4xz92.mjs +0 -10
- package/dist/key-CCJdVWKc.mjs +0 -12
- package/dist/license-DLLTpFvP.mjs +0 -17
- package/dist/list-BNzdnE1c.mjs +0 -55
- package/dist/measure-B54VtKym.mjs +0 -19
- package/dist/package-D-aVYFKM.mjs +0 -80
- package/dist/ps-C5FOLwL2.mjs +0 -11
- package/dist/segment-C2ui5dSd.mjs +0 -19
- package/dist/snippet-BcgVYsoR.mjs +0 -19
- package/dist/status-BEONmJWv.mjs +0 -32
- package/dist/status-BWep0PFe.mjs +0 -56
- package/dist/table-lCNGbvej.mjs +0 -19
- package/dist/transform-BGAm1s4f.mjs +0 -24
- package/dist/transform-job-cNTJ30pm.mjs +0 -19
- package/dist/workspace-DtcBldk0.mjs +0 -24
- /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
- /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
- /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
- /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
- /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
- /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
- /package/dist/{snippet-Dw0Sjzkr.mjs → snippet-COggaWxx.mjs} +0 -0
- /package/dist/{transform-IEX4Mx3X.mjs → transform-GTW3G-01.mjs} +0 -0
- /package/dist/{workspace-C5q4nbpY.mjs → workspace-BBXJczJK.mjs} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import "./
|
|
8
|
-
import { Table, TableCompact, tableView } from "./table-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderList } from "./render-CfznwleY.mjs";
|
|
6
|
+
import "./field-yomXlkvl.mjs";
|
|
7
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
8
|
+
import { Table, TableCompact, tableView } from "./table-C7a5V6Zn.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/db/schema-tables.ts
|
|
@@ -16,6 +16,7 @@ var schema_tables_default = defineMetabaseCommand({
|
|
|
16
16
|
name: "schema-tables",
|
|
17
17
|
description: "List tables in a database schema"
|
|
18
18
|
},
|
|
19
|
+
capabilities: { minVersion: 58 },
|
|
19
20
|
args: {
|
|
20
21
|
...outputFlags,
|
|
21
22
|
...profileFlag,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderList } from "./render-CfznwleY.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/db/schemas.ts
|
|
@@ -22,6 +22,7 @@ var schemas_default = defineMetabaseCommand({
|
|
|
22
22
|
name: "schemas",
|
|
23
23
|
description: "List schemas in a database"
|
|
24
24
|
},
|
|
25
|
+
capabilities: { minVersion: 58 },
|
|
25
26
|
args: {
|
|
26
27
|
...outputFlags,
|
|
27
28
|
...profileFlag,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand, parseEnumCsv } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderList } from "./render-CfznwleY.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-lk_K-CEF.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/domain/search.ts
|
|
@@ -45,8 +45,7 @@ const SearchResultCompact = SearchResult.pick({
|
|
|
45
45
|
id: true,
|
|
46
46
|
name: true,
|
|
47
47
|
model: true,
|
|
48
|
-
description: true
|
|
49
|
-
archived: true
|
|
48
|
+
description: true
|
|
50
49
|
}).strip();
|
|
51
50
|
const searchResultView = {
|
|
52
51
|
compactPick: SearchResultCompact,
|
|
@@ -62,10 +61,6 @@ const searchResultView = {
|
|
|
62
61
|
{
|
|
63
62
|
key: "name",
|
|
64
63
|
label: "Name"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
key: "archived",
|
|
68
|
-
label: "Archived"
|
|
69
64
|
}
|
|
70
65
|
]
|
|
71
66
|
};
|
|
@@ -85,6 +80,7 @@ var search_default = defineMetabaseCommand({
|
|
|
85
80
|
name: "search",
|
|
86
81
|
description: "Search Metabase content (cards, dashboards, collections, …)"
|
|
87
82
|
},
|
|
83
|
+
capabilities: { minVersion: 58 },
|
|
88
84
|
args: {
|
|
89
85
|
...outputFlags,
|
|
90
86
|
...profileFlag,
|
|
@@ -101,7 +97,7 @@ var search_default = defineMetabaseCommand({
|
|
|
101
97
|
},
|
|
102
98
|
archived: {
|
|
103
99
|
type: "boolean",
|
|
104
|
-
description: "
|
|
100
|
+
description: "Search only archived items (instead of only active ones)",
|
|
105
101
|
default: false
|
|
106
102
|
},
|
|
107
103
|
limit: {
|
|
@@ -109,7 +105,7 @@ var search_default = defineMetabaseCommand({
|
|
|
109
105
|
description: "Max results to return",
|
|
110
106
|
default: String(DEFAULT_LIMIT)
|
|
111
107
|
},
|
|
112
|
-
"
|
|
108
|
+
"db-id": {
|
|
113
109
|
type: "string",
|
|
114
110
|
description: "Restrict to items on a given database id"
|
|
115
111
|
},
|
|
@@ -126,8 +122,8 @@ var search_default = defineMetabaseCommand({
|
|
|
126
122
|
],
|
|
127
123
|
async run({ args, ctx, getClient }) {
|
|
128
124
|
const limit = parseId(args.limit, "--limit");
|
|
129
|
-
const tableDbIdRaw = args["
|
|
130
|
-
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--
|
|
125
|
+
const tableDbIdRaw = args["db-id"];
|
|
126
|
+
const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
|
|
131
127
|
const models = parseEnumCsv(args.models, SearchModel, "--models");
|
|
132
128
|
const client = await getClient();
|
|
133
129
|
const response = await client.requestParsed(SearchApiResponse, "/api/search", { query: {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/segment/index.ts
|
|
4
|
+
var segment_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "segment",
|
|
7
|
+
alias: "segments",
|
|
8
|
+
description: "Manage Metabase segments"
|
|
9
|
+
},
|
|
10
|
+
subCommands: {
|
|
11
|
+
list: () => import("./list-SOG0whQ-.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-Bzys7vgp.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-DGth_uOp.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-njHe3j-s.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-DMPS8Kih.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { segment_default as default };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { outputFlags } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand, keyringFallbackWarning, readEnvLicenseToken, writeLicense } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import { warn } from "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderItem } from "./render-CfznwleY.mjs";
|
|
6
|
+
import { promptPassword } from "./prompt-CFKoys7k.mjs";
|
|
7
|
+
import { readInput } from "./input-cMSEqISy.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
10
|
-
//#region src/commands/license/set.ts
|
|
10
|
+
//#region src/commands/workspace/license/set.ts
|
|
11
11
|
const LicenseSetResult = z.object({ stored: z.literal(true) });
|
|
12
12
|
const licenseSetView = {
|
|
13
13
|
compactPick: LicenseSetResult,
|
|
@@ -21,6 +21,7 @@ var set_default = defineMetabaseCommand({
|
|
|
21
21
|
name: "set",
|
|
22
22
|
description: "Store a Metabase license token"
|
|
23
23
|
},
|
|
24
|
+
capabilities: null,
|
|
24
25
|
args: {
|
|
25
26
|
...outputFlags,
|
|
26
27
|
token: {
|
|
@@ -31,14 +32,14 @@ var set_default = defineMetabaseCommand({
|
|
|
31
32
|
},
|
|
32
33
|
outputSchema: LicenseSetResult,
|
|
33
34
|
examples: [
|
|
34
|
-
"echo $METABASE_LICENSE_TOKEN | mb license set",
|
|
35
|
-
"mb license set < token.txt",
|
|
36
|
-
"mb license set $METABASE_LICENSE_TOKEN"
|
|
35
|
+
"echo $METABASE_LICENSE_TOKEN | mb workspace license set",
|
|
36
|
+
"mb workspace license set < token.txt",
|
|
37
|
+
"mb workspace license set $METABASE_LICENSE_TOKEN"
|
|
37
38
|
],
|
|
38
39
|
async run({ args, ctx }) {
|
|
39
40
|
const token = await resolveToken(args.token);
|
|
40
41
|
const location = await writeLicense(token);
|
|
41
|
-
if (location.backend === "file") warn(
|
|
42
|
+
if (location.backend === "file") warn(keyringFallbackWarning(location, "license"));
|
|
42
43
|
const result = { stored: true };
|
|
43
44
|
renderItem(result, licenseSetView, ctx);
|
|
44
45
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import { readBody } from "./body-
|
|
8
|
-
import { SettingValue, settingValueView } from "./setting-
|
|
9
|
-
import { parseSettingKey } from "./key-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderItem } from "./render-CfznwleY.mjs";
|
|
6
|
+
import "./input-cMSEqISy.mjs";
|
|
7
|
+
import { readBody } from "./body-DjdFxjpg.mjs";
|
|
8
|
+
import { SettingValue, settingValueView } from "./setting-oL97SNeO.mjs";
|
|
9
|
+
import { parseSettingKey, rethrowSettingError } from "./key-C2XG394c.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/setting/set.ts
|
|
@@ -15,6 +15,7 @@ var set_default = defineMetabaseCommand({
|
|
|
15
15
|
name: "set",
|
|
16
16
|
description: "Set a setting value (parsed strictly as JSON)"
|
|
17
17
|
},
|
|
18
|
+
capabilities: { minVersion: 58 },
|
|
18
19
|
args: {
|
|
19
20
|
...outputFlags,
|
|
20
21
|
...profileFlag,
|
|
@@ -54,7 +55,7 @@ var set_default = defineMetabaseCommand({
|
|
|
54
55
|
method: "PUT",
|
|
55
56
|
body: { value },
|
|
56
57
|
expectContentType: "binary"
|
|
57
|
-
});
|
|
58
|
+
}).catch((error) => rethrowSettingError(error, key));
|
|
58
59
|
const item = {
|
|
59
60
|
key,
|
|
60
61
|
value
|
|
@@ -8,9 +8,9 @@ var setting_default = defineCommand({
|
|
|
8
8
|
alias: "settings"
|
|
9
9
|
},
|
|
10
10
|
subCommands: {
|
|
11
|
-
list: () => import("./list-
|
|
12
|
-
get: () => import("./get-
|
|
13
|
-
set: () => import("./set-
|
|
11
|
+
list: () => import("./list-2j7GsXsl.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-D3SbEQSE.mjs").then((m) => m.default),
|
|
13
|
+
set: () => import("./set-DfGsta5O.mjs").then((m) => m.default)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./
|
|
3
|
-
import {
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import
|
|
7
|
-
import { readBody } from "./body-
|
|
8
|
-
import { bodyInputFlags } from "./body-flags-
|
|
1
|
+
import "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
|
|
3
|
+
import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
|
|
4
|
+
import "./capabilities-7e9MgquN.mjs";
|
|
5
|
+
import { renderItem } from "./render-CfznwleY.mjs";
|
|
6
|
+
import "./input-cMSEqISy.mjs";
|
|
7
|
+
import { readBody } from "./body-DjdFxjpg.mjs";
|
|
8
|
+
import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/domain/setup.ts
|
|
@@ -41,6 +41,7 @@ var setup_default = defineMetabaseCommand({
|
|
|
41
41
|
name: "setup",
|
|
42
42
|
description: "Complete the initial Metabase setup wizard with a default user"
|
|
43
43
|
},
|
|
44
|
+
capabilities: { minVersion: 58 },
|
|
44
45
|
args: {
|
|
45
46
|
...outputFlags,
|
|
46
47
|
...profileFlag,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/skills/index.ts
|
|
4
|
+
var skills_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "skills",
|
|
7
|
+
description: "Discover and read CLI-bundled skills (SKILL.md files served from the installed version)"
|
|
8
|
+
},
|
|
9
|
+
default: "list",
|
|
10
|
+
subCommands: {
|
|
11
|
+
list: () => import("./list-Clz5igWg.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-DFxZXaKz.mjs").then((m) => m.default),
|
|
13
|
+
path: () => import("./path-AEtZ3mBq.mjs").then((m) => m.default)
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { skills_default as default };
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { ConfigError, isNotFoundError } from "./command-augment-BH9qgQ5u.mjs";
|
|
2
|
+
import { parseYamlResult } from "./yaml-YTQiYJ9s.mjs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
|
|
5
|
+
import { dirname, join, resolve } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
|
|
8
|
+
//#region src/core/skills.ts
|
|
9
|
+
const Frontmatter = z.object({
|
|
10
|
+
name: z.string().min(1),
|
|
11
|
+
description: z.string().default(""),
|
|
12
|
+
hidden: z.boolean().default(false)
|
|
13
|
+
}).loose();
|
|
14
|
+
const SkillExtraFile = z.object({
|
|
15
|
+
path: z.string(),
|
|
16
|
+
content: z.string()
|
|
17
|
+
});
|
|
18
|
+
const SkillContent = z.object({
|
|
19
|
+
name: z.string(),
|
|
20
|
+
description: z.string(),
|
|
21
|
+
body: z.string(),
|
|
22
|
+
references: z.array(SkillExtraFile),
|
|
23
|
+
templates: z.array(SkillExtraFile)
|
|
24
|
+
});
|
|
25
|
+
const SKILL_DIR_NAMES = ["skills", "skill-data"];
|
|
26
|
+
const SKILL_MD_FILENAME = "SKILL.md";
|
|
27
|
+
const SKILL_REFERENCES_DIR = "references";
|
|
28
|
+
const SKILL_TEMPLATES_DIR = "templates";
|
|
29
|
+
const SKILLS_DIR_ENV = "MB_SKILLS_DIR";
|
|
30
|
+
const FRONTMATTER_PREFIX_BYTES = 8192;
|
|
31
|
+
const FRONTMATTER_FENCE = "---";
|
|
32
|
+
function loadAllSkills() {
|
|
33
|
+
return discoverSkills(resolveSkillDirs());
|
|
34
|
+
}
|
|
35
|
+
function loadVisibleSkills() {
|
|
36
|
+
return loadAllSkills().filter((s) => !s.hidden);
|
|
37
|
+
}
|
|
38
|
+
function findSkillByName(all, name) {
|
|
39
|
+
const hit = all.find((s) => s.name === name);
|
|
40
|
+
if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
|
|
41
|
+
return hit;
|
|
42
|
+
}
|
|
43
|
+
function selectSkillsByNames(all, requested) {
|
|
44
|
+
if (requested.length === 0) throw new ConfigError("no skill names provided");
|
|
45
|
+
const byName = new Map(all.map((s) => [s.name, s]));
|
|
46
|
+
const missing = [];
|
|
47
|
+
const found = [];
|
|
48
|
+
for (const name of requested) {
|
|
49
|
+
const hit = byName.get(name);
|
|
50
|
+
if (hit === void 0) {
|
|
51
|
+
missing.push(name);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
found.push(hit);
|
|
55
|
+
}
|
|
56
|
+
if (missing.length > 0) throw new ConfigError(`unknown skill name(s): ${missing.join(", ")} (${availableSkillNames(all)})`);
|
|
57
|
+
return found;
|
|
58
|
+
}
|
|
59
|
+
function availableSkillNames(all) {
|
|
60
|
+
const names = all.filter((s) => !s.hidden).map((s) => s.name);
|
|
61
|
+
return `available: ${names.length === 0 ? "none" : names.join(", ")}`;
|
|
62
|
+
}
|
|
63
|
+
function resolveSkillDirs() {
|
|
64
|
+
const override = process.env[SKILLS_DIR_ENV];
|
|
65
|
+
if (override !== void 0 && override !== "") {
|
|
66
|
+
if (!isDirectory(override)) throw new ConfigError(`${SKILLS_DIR_ENV} points at ${override}, which is not a directory`);
|
|
67
|
+
return [resolve(override)];
|
|
68
|
+
}
|
|
69
|
+
const root = findPackageRoot();
|
|
70
|
+
if (root === null) return [];
|
|
71
|
+
return SKILL_DIR_NAMES.map((name) => join(root, name)).filter(isDirectory);
|
|
72
|
+
}
|
|
73
|
+
function findPackageRoot() {
|
|
74
|
+
const here = fileURLToPath(import.meta.url);
|
|
75
|
+
let dir = dirname(here);
|
|
76
|
+
while (true) {
|
|
77
|
+
for (const name of SKILL_DIR_NAMES) if (isDirectory(join(dir, name))) return dir;
|
|
78
|
+
const parent = dirname(dir);
|
|
79
|
+
if (parent === dir) return null;
|
|
80
|
+
dir = parent;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function discoverSkills(dirs) {
|
|
84
|
+
const skills = [];
|
|
85
|
+
for (const dir of dirs) {
|
|
86
|
+
let entries;
|
|
87
|
+
try {
|
|
88
|
+
entries = readdirSync(dir);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
if (isNotFoundError(error)) continue;
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
for (const entryName of entries) {
|
|
94
|
+
const skillDir = join(dir, entryName);
|
|
95
|
+
const fm = readFrontmatterFromSkill(skillDir);
|
|
96
|
+
if (fm === null) continue;
|
|
97
|
+
skills.push({
|
|
98
|
+
name: fm.name,
|
|
99
|
+
description: fm.description,
|
|
100
|
+
hidden: fm.hidden,
|
|
101
|
+
dir: skillDir
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
106
|
+
return skills;
|
|
107
|
+
}
|
|
108
|
+
function readFrontmatterFromSkill(skillDir) {
|
|
109
|
+
const skillMd = join(skillDir, SKILL_MD_FILENAME);
|
|
110
|
+
const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
|
|
111
|
+
if (prefix === null) return null;
|
|
112
|
+
return parseFrontmatter(prefix);
|
|
113
|
+
}
|
|
114
|
+
function readFilePrefix(path, maxBytes) {
|
|
115
|
+
let fd;
|
|
116
|
+
try {
|
|
117
|
+
fd = openSync(path, "r");
|
|
118
|
+
} catch (error) {
|
|
119
|
+
if (isNotFoundError(error)) return null;
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const buffer = Buffer.alloc(maxBytes);
|
|
124
|
+
const bytesRead = readSync(fd, buffer, 0, maxBytes, 0);
|
|
125
|
+
return buffer.toString("utf8", 0, bytesRead);
|
|
126
|
+
} finally {
|
|
127
|
+
closeSync(fd);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function parseFrontmatter(content) {
|
|
131
|
+
const trimmed = content.trimStart();
|
|
132
|
+
if (!trimmed.startsWith(FRONTMATTER_FENCE)) return null;
|
|
133
|
+
const afterOpening = trimmed.slice(FRONTMATTER_FENCE.length);
|
|
134
|
+
const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
|
|
135
|
+
if (closingIndex < 0) return null;
|
|
136
|
+
const block = afterOpening.slice(0, closingIndex);
|
|
137
|
+
const result = parseYamlResult(block, Frontmatter);
|
|
138
|
+
if (!result.ok) return null;
|
|
139
|
+
return result.value;
|
|
140
|
+
}
|
|
141
|
+
function readSkillContent(info, opts) {
|
|
142
|
+
const body = readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8");
|
|
143
|
+
if (!opts.includeExtras) return {
|
|
144
|
+
name: info.name,
|
|
145
|
+
description: info.description,
|
|
146
|
+
body,
|
|
147
|
+
references: [],
|
|
148
|
+
templates: []
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
name: info.name,
|
|
152
|
+
description: info.description,
|
|
153
|
+
body,
|
|
154
|
+
references: collectExtraFiles(info.dir, SKILL_REFERENCES_DIR),
|
|
155
|
+
templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function collectExtraFiles(skillDir, subdirName) {
|
|
159
|
+
const subdir = join(skillDir, subdirName);
|
|
160
|
+
if (!isDirectory(subdir)) return [];
|
|
161
|
+
const entries = readdirSync(subdir).toSorted();
|
|
162
|
+
const out = [];
|
|
163
|
+
for (const entry of entries) {
|
|
164
|
+
const full = join(subdir, entry);
|
|
165
|
+
if (!isFile(full)) continue;
|
|
166
|
+
out.push({
|
|
167
|
+
path: `${subdirName}/${entry}`,
|
|
168
|
+
content: readFileSync(full, "utf8")
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return out;
|
|
172
|
+
}
|
|
173
|
+
function isDirectory(path) {
|
|
174
|
+
try {
|
|
175
|
+
return statSync(path).isDirectory();
|
|
176
|
+
} catch (error) {
|
|
177
|
+
if (isNotFoundError(error)) return false;
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function isFile(path) {
|
|
182
|
+
try {
|
|
183
|
+
return statSync(path).isFile();
|
|
184
|
+
} catch (error) {
|
|
185
|
+
if (isNotFoundError(error)) return false;
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
//#endregion
|
|
191
|
+
export { SkillContent, findSkillByName, loadAllSkills, loadVisibleSkills, readSkillContent, selectSkillsByNames };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/snippet/index.ts
|
|
4
|
+
var snippet_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "snippet",
|
|
7
|
+
alias: "snippets",
|
|
8
|
+
description: "Manage Metabase native query snippets"
|
|
9
|
+
},
|
|
10
|
+
subCommands: {
|
|
11
|
+
list: () => import("./list--OYdUTtu.mjs").then((mod) => mod.default),
|
|
12
|
+
get: () => import("./get-Ddr0XLh7.mjs").then((mod) => mod.default),
|
|
13
|
+
create: () => import("./create-Be_0Vier.mjs").then((mod) => mod.default),
|
|
14
|
+
update: () => import("./update-F6DmZncY.mjs").then((mod) => mod.default),
|
|
15
|
+
archive: () => import("./archive-C1enZgKV.mjs").then((mod) => mod.default)
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { snippet_default as default };
|