@metabase/cli 0.1.3 → 0.1.4-alpha.skill-packaging.1c8ec40
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 +427 -394
- package/dist/{add-collection-BOnW3n0Z.mjs → add-collection-B3NhkLRT.mjs} +6 -6
- package/dist/{add-collection-CYzLXtm5.mjs → add-collection-CEvZTea_.mjs} +4 -4
- package/dist/{api-key-PuKAaQ7V.mjs → api-key-BpmnzLLb.mjs} +1 -1
- package/dist/{archive-rMwM-zTz.mjs → archive-BPLLOdfL.mjs} +5 -5
- package/dist/{archive-mnPwvARh.mjs → archive-CazAWIrV.mjs} +4 -4
- package/dist/{archive-BO29HssD.mjs → archive-D596Cq7R.mjs} +5 -5
- package/dist/{archive-TLtE0kDm.mjs → archive-DqPqXMZm.mjs} +5 -5
- package/dist/auth-DJp4QoWI.mjs +19 -0
- package/dist/{body-DyJdyUnm.mjs → body-CVSMGqZk.mjs} +1 -1
- package/dist/{branches-DfmU7c7o.mjs → branches--TavvEK1.mjs} +5 -5
- package/dist/{cancel-CMZDt-Oq.mjs → cancel-BUitag4_.mjs} +4 -4
- package/dist/{cancel-task-CgZTaU3M.mjs → cancel-task-BHcWJUMu.mjs} +5 -5
- package/dist/card-DtUIadDM.mjs +20 -0
- package/dist/{cards-CHbQGafh.mjs → cards-Bir6wRS_.mjs} +4 -4
- package/dist/cli.mjs +30 -27
- package/dist/collection-4-gZeCWg.mjs +19 -0
- package/dist/{create-BCuXOmjv.mjs → create-4OjxTGAe.mjs} +7 -7
- package/dist/{create-DxEFGyTl.mjs → create-BISpvrml.mjs} +7 -7
- package/dist/{create-DSYimCdi.mjs → create-Bi8sqzL-.mjs} +10 -10
- package/dist/{create-CicN3zvl.mjs → create-C1cdoSw5.mjs} +9 -9
- package/dist/{create-9Eixx15H.mjs → create-C3TiMJhQ.mjs} +7 -7
- package/dist/{create-C0rMO9hM.mjs → create-CZZc1KM8.mjs} +10 -10
- package/dist/{create-DmoCeGvG.mjs → create-CxMpPsRO.mjs} +6 -6
- package/dist/{create-BBUS1QQj.mjs → create-Dj-fO-nV.mjs} +9 -9
- package/dist/{create-BwTWnEI9.mjs → create-DuyWlx-S.mjs} +7 -7
- package/dist/{create-branch-CyGWseMj.mjs → create-branch-CH1FmnxS.mjs} +5 -5
- package/dist/{create-8Hv7mPeZ.mjs → create-hYdLOyw_.mjs} +9 -9
- package/dist/{credentials-BsyxKKpn.mjs → credentials-BARfQeBr.mjs} +9 -8
- package/dist/{current-task-Cp2TOV2G.mjs → current-task-TX7rJmon.mjs} +5 -5
- package/dist/dashboard-C-azCGk-.mjs +20 -0
- package/dist/{database-u753FytI.mjs → database-BKfGtTmB.mjs} +3 -3
- package/dist/db-D--IArxI.mjs +22 -0
- package/dist/{delete-_9bnRv2O.mjs → delete-BxUaF8kW.mjs} +5 -5
- package/dist/{delete-QRsN6npe.mjs → delete-DzTd5w_y.mjs} +5 -5
- package/dist/{delete-table-DTLdSkjp.mjs → delete-table-DWfA7uVn.mjs} +5 -5
- package/dist/{deprovision-CRV8Isc3.mjs → deprovision-CadXjs_7.mjs} +9 -9
- package/dist/{dirty-CEH3GeaE.mjs → dirty-an-DQtBG.mjs} +5 -5
- package/dist/{docker-BYQ0FHrT.mjs → docker-C9WQCjkt.mjs} +4 -4
- package/dist/{eid-C4-Vk0tN.mjs → eid-Cz9r5RX5.mjs} +1 -1
- package/dist/{export-D7sASe7p.mjs → export-BHq8ztFL.mjs} +8 -8
- package/dist/field-Do1HcUfq.mjs +18 -0
- package/dist/{fields-BcqomXOj.mjs → fields-B21DeL2I.mjs} +4 -4
- package/dist/{get-Cv5O0Nzp.mjs → get-BAqeeIQ-.mjs} +4 -4
- package/dist/{get-C8mOGKNU.mjs → get-BHCgwPPT.mjs} +6 -6
- package/dist/{get-Cw74jQSg.mjs → get-BPah4iYM.mjs} +4 -4
- package/dist/{get-By8D2ZCD.mjs → get-C4_7ZrIS.mjs} +5 -5
- package/dist/{get-C9ddaeGp.mjs → get-CAYnc9sd.mjs} +4 -4
- package/dist/{get-BRwM-_QR.mjs → get-ChEFd1sT.mjs} +5 -5
- package/dist/{get-B3N93OEi.mjs → get-ChxcxY2D.mjs} +5 -5
- package/dist/{get-BrLtlgsJ.mjs → get-Cy9YIesM.mjs} +3 -3
- package/dist/{get-REcs9xfF.mjs → get-D-zU7VmK.mjs} +4 -4
- package/dist/{get-DVTJi4o0.mjs → get-DFm7pR7F.mjs} +6 -6
- package/dist/get-DWttywn_.mjs +79 -0
- package/dist/{get-DGPgyqzM.mjs → get-RPL4h0It.mjs} +6 -6
- package/dist/{get-DNdDX5ON.mjs → get-dqrzLuwA.mjs} +6 -6
- package/dist/{get-run-DY8GOsfI.mjs → get-run-CG3QFs9T.mjs} +5 -5
- package/dist/git-sync-COKsdLkS.mjs +28 -0
- package/dist/{has-remote-changes-Bw_X8TI6.mjs → has-remote-changes-ecra9BFO.mjs} +5 -5
- package/dist/{import-QVwrtIFF.mjs → import-BzOKkYnp.mjs} +8 -8
- package/dist/{is-dirty-BHucbgY2.mjs → is-dirty-7afLBOtn.mjs} +3 -3
- package/dist/is-dirty-Dnw0AHFw.mjs +10 -0
- package/dist/{items-BrLOFmIa.mjs → items-BEWSuEfe.mjs} +7 -7
- package/dist/{license-B3KaSSS3.mjs → license-D3mFdxAq.mjs} +3 -3
- package/dist/{list-CYYq46ca.mjs → list-B5E7LFDb.mjs} +6 -6
- package/dist/{list-YwqpLfkl.mjs → list-B9mEqMZ5.mjs} +3 -3
- package/dist/{list-g2xt5jvY.mjs → list-BJAC356Q.mjs} +5 -5
- package/dist/{list-W_G0Wupl.mjs → list-BOQWvb8b.mjs} +3 -3
- package/dist/{list-D35m483Y.mjs → list-BZFTuiBr.mjs} +4 -4
- package/dist/{list-Dgaxc0kI.mjs → list-By3t67Y8.mjs} +5 -5
- package/dist/{list-B1_XSq0O.mjs → list-ByPzCM2G.mjs} +3 -3
- package/dist/{list-mSYy6xIm.mjs → list-C8b-KxY6.mjs} +6 -6
- package/dist/{list-wyaVSZpU.mjs → list-CiHlWufc.mjs} +4 -4
- package/dist/{list-ThlZXdtA.mjs → list-D_exD3LP.mjs} +5 -5
- package/dist/{list-B8WxxlSA.mjs → list-DiAyv9l3.mjs} +4 -4
- package/dist/{list-HcYQlqJr.mjs → list-DtSOfMZ2.mjs} +4 -4
- package/dist/list-DwF6on6O.mjs +44 -0
- package/dist/{list-Dygi5MBO.mjs → list-nIxzXqr-.mjs} +3 -3
- package/dist/{login-DVBsPahM.mjs → login-Cka2HZWz.mjs} +5 -5
- package/dist/{logout-CPGsbP2z.mjs → logout-rA25M-oa.mjs} +3 -3
- package/dist/{logs-CDdM2nW-.mjs → logs-B5cGXoDi.mjs} +10 -10
- package/dist/measure-CwJ2o89T.mjs +19 -0
- package/dist/{metadata-Djyv6HKF.mjs → metadata-BEd6s_Qf.mjs} +4 -4
- package/dist/{metadata-CpGxasPK.mjs → metadata-DirWO0cS.mjs} +4 -4
- package/dist/{package-BeJ9DFrO.mjs → package-VV3qWWIQ.mjs} +8 -3
- package/dist/{parse-id-DcoC0Z3o.mjs → parse-id-DbSjfzoU.mjs} +1 -1
- package/dist/{parse-schemas-NgeC8-ba.mjs → parse-schemas-BXTlpoaf.mjs} +1 -1
- package/dist/path-DarsuSkB.mjs +58 -0
- package/dist/{poll-CPn_4eae.mjs → poll-Cd8bRMmZ.mjs} +1 -1
- package/dist/{poll-task-YHJL7Q94.mjs → poll-task-BwKuhZ9P.mjs} +2 -2
- package/dist/{preflight-UP6MOkcY.mjs → preflight-RkDLqtNm.mjs} +1 -1
- package/dist/{provision-Cw4yFtn9.mjs → provision-DBqPA-De.mjs} +12 -12
- package/dist/{ps-CmGyds34.mjs → ps-Cn3lzak-.mjs} +3 -3
- package/dist/{ps-D7kAMsc0.mjs → ps-DIm7IScc.mjs} +6 -6
- package/dist/{query-CWM06uYl.mjs → query-BoOismbH.mjs} +10 -10
- package/dist/{query-DXYFK2Dn.mjs → query-CkNa5Nam.mjs} +7 -7
- package/dist/{remove-DtSkkvp3.mjs → remove-B7NUBOqF.mjs} +3 -3
- package/dist/{remove-BJiq8Bna.mjs → remove-C08c3vne.mjs} +7 -7
- package/dist/{remove-collection-CfdSGSSW.mjs → remove-collection-cFO9M-qV.mjs} +7 -7
- package/dist/{rescan-values-DmZSi8y2.mjs → rescan-values-D1-IyyU7.mjs} +4 -4
- package/dist/{revision-message-flag-CWQbKhdl.mjs → revision-message-flag-oyq2xrDU.mjs} +1 -1
- package/dist/{run-By3Hx4Sv.mjs → run-BCzKf_TV.mjs} +7 -7
- package/dist/{runs-OxCc7uCv.mjs → runs-pVgTv7cK.mjs} +7 -7
- package/dist/{runtime-CqLG3Q3o.mjs → runtime-DPdP0sl1.mjs} +4 -4
- package/dist/{schema-tables-gCfMALFX.mjs → schema-tables-c6K9AkS-.mjs} +4 -4
- package/dist/{schemas-CelnP-JJ.mjs → schemas-s3PRMTwc.mjs} +4 -4
- package/dist/{search-Ccc2XHFA.mjs → search-DsF08cm9.mjs} +6 -6
- package/dist/segment-CvPF5gLG.mjs +19 -0
- package/dist/{set-DQoW10tq.mjs → set-BNQjt8S1.mjs} +8 -8
- package/dist/{set-CwZkyHao.mjs → set-DlfevPxG.mjs} +5 -5
- package/dist/{setting-DrI9j2k_.mjs → setting-Cc5FWSNN.mjs} +3 -3
- package/dist/{setup-flXHfxYc.mjs → setup-CIsvZgEA.mjs} +6 -6
- package/dist/skills-CHU7uuDU.mjs +191 -0
- package/dist/skills-Dws-azxD.mjs +18 -0
- package/dist/snippet-W-TaXdio.mjs +19 -0
- package/dist/{start-B6jtccng.mjs → start-xREv6hev.mjs} +17 -16
- package/dist/{stash-Bhp_hRrV.mjs → stash-ZLbOejYk.mjs} +7 -7
- package/dist/{status-fw5qhKyj.mjs → status-CYWbB67d.mjs} +3 -3
- package/dist/{status-DGw7jG9b.mjs → status-DiXaGNmb.mjs} +3 -3
- package/dist/{status-BxWCQzCv.mjs → status-DjRAgzXl.mjs} +6 -6
- package/dist/{stop-x6EOdIVT.mjs → stop-CWKn_jI8.mjs} +8 -8
- package/dist/{summary-Da1JIhhv.mjs → summary-CIFwiame.mjs} +4 -4
- package/dist/{sync-schema-Do916yAq.mjs → sync-schema-_SRMfBSQ.mjs} +4 -4
- package/dist/table-uhBlfNYj.mjs +19 -0
- package/dist/transform-UJ7T_BSb.mjs +24 -0
- package/dist/transform-job-DXs5apQ1.mjs +19 -0
- package/dist/{translate-CEnaytH7.mjs → translate-DVN_sIVb.mjs} +6 -6
- package/dist/{tree-pWV930zt.mjs → tree-BTZfgldu.mjs} +3 -3
- package/dist/{update-CN3LI4St.mjs → update-Bjd7YRyh.mjs} +10 -10
- package/dist/{update-jLIPP2pF.mjs → update-CCFegz4q.mjs} +12 -12
- package/dist/{update-w3N6O04l.mjs → update-CDdML0mE.mjs} +11 -11
- package/dist/{update-DLMn9cXk.mjs → update-CGYM_wWQ.mjs} +9 -9
- package/dist/{update-C-VOpeVi.mjs → update-CYMsVUQX.mjs} +7 -7
- package/dist/{update-Bd-Hk_z8.mjs → update-D48EYMKn.mjs} +7 -7
- package/dist/{update-CA7f8M_E.mjs → update-D6jptFDw.mjs} +11 -11
- package/dist/{update-CvujE0sT.mjs → update-DSjj9UQb.mjs} +12 -12
- package/dist/{update-BncXiS3T.mjs → update-DjfNbEgo.mjs} +8 -8
- package/dist/{update-Db0rN6W1.mjs → update-ZRF-sYqN.mjs} +13 -13
- package/dist/{update-dashcard-C13FmMd8.mjs → update-dashcard-BfcB6pFx.mjs} +7 -7
- package/dist/{upgrade-Cko0ScCj.mjs → upgrade-Cw_mP31_.mjs} +8 -8
- package/dist/{url-BKzUneYx.mjs → url-DsDSVEnK.mjs} +7 -7
- package/dist/{uuid-D9TBeO2v.mjs → uuid-DbtHyH33.mjs} +5 -5
- package/dist/{validate-CLdliJUz.mjs → validate-CB0bu50i.mjs} +2 -2
- package/dist/{validate-query-C34T9ZUr.mjs → validate-query-CavIA0Q2.mjs} +1 -1
- package/dist/{values-CFO1KoS0.mjs → values-C1JRC3O2.mjs} +4 -4
- package/dist/{wait-CM59nNh3.mjs → wait-Ed4Q7ccW.mjs} +2 -2
- package/dist/{wait-h9MABbYJ.mjs → wait-LRmiGepb.mjs} +6 -6
- package/dist/{wait-flags-6QBmhHw9.mjs → wait-flags-pItBfuzi.mjs} +2 -2
- package/dist/workspace-BozpZKez.mjs +24 -0
- package/dist/{workspace-credentials-Cctumbru.mjs → workspace-credentials-4lIxxz4g.mjs} +2 -41
- package/dist/yaml-ECiog374.mjs +43 -0
- package/package.json +6 -3
- package/skill-data/core/SKILL.md +575 -0
- package/skill-data/git-sync/SKILL.md +196 -0
- package/skill-data/transform/SKILL.md +235 -0
- package/skill-data/workspace/SKILL.md +408 -0
- package/skills/metabase-cli/SKILL.md +42 -0
- package/dist/auth-6xSQV9_O.mjs +0 -19
- package/dist/card-BPRuWt1L.mjs +0 -20
- package/dist/collection-ubrm8jOv.mjs +0 -19
- package/dist/dashboard-DMXwndg8.mjs +0 -20
- package/dist/db-Br0VA1nL.mjs +0 -22
- package/dist/field-DN3Mtvjy.mjs +0 -18
- package/dist/git-sync-C3DyWKLP.mjs +0 -28
- package/dist/is-dirty-YZTcIZmy.mjs +0 -10
- package/dist/measure-C-2Zimtc.mjs +0 -19
- package/dist/segment-ZWbF5Lw8.mjs +0 -19
- package/dist/snippet-C7Y7BV-k.mjs +0 -19
- package/dist/table-BsJDzYMc.mjs +0 -19
- package/dist/transform-BFOkT-X-.mjs +0 -24
- package/dist/transform-job-CvAq4Qdm.mjs +0 -19
- package/dist/workspace-AJjCGa9h.mjs +0 -24
- /package/dist/{delete-runtime-BkAdygbs.mjs → delete-runtime-DfFMWJJ6.mjs} +0 -0
- /package/dist/{process-FjsqDwKo.mjs → process-zJeVJZTM.mjs} +0 -0
- /package/dist/{snippet-Dw0Sjzkr.mjs → snippet-CSWqkslB.mjs} +0 -0
- /package/dist/{transform-IEX4Mx3X.mjs → transform-DR4ejuPM.mjs} +0 -0
- /package/dist/{transform-job-Csr86muI.mjs → transform-job-BrhOLO4M.mjs} +0 -0
- /package/dist/{workspace-C5q4nbpY.mjs → workspace-DUfqhPm5.mjs} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { defineMetabaseCommand, outputFlags } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { defineMetabaseCommand, outputFlags } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import { promptConfirm } from "./prompt-DgDNy_Pc.mjs";
|
|
8
|
-
import "./poll-
|
|
9
|
-
import "./process-
|
|
10
|
-
import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-
|
|
8
|
+
import "./poll-Cd8bRMmZ.mjs";
|
|
9
|
+
import "./process-zJeVJZTM.mjs";
|
|
10
|
+
import { checkDockerReady, containerNameFor, removeContainer, removeVolume, volumeNameFor } from "./docker-C9WQCjkt.mjs";
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
13
|
//#region src/commands/workspace/remove.ts
|
|
@@ -71,7 +71,7 @@ var remove_default = defineMetabaseCommand({
|
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
73
|
outputSchema: RemoveResult,
|
|
74
|
-
examples: ["
|
|
74
|
+
examples: ["mb workspace remove 1 --yes", "mb workspace remove 1 --keep-volume --yes"],
|
|
75
75
|
async run({ args, ctx }) {
|
|
76
76
|
const workspaceId = parseId(args.id);
|
|
77
77
|
const containerName = containerNameFor(workspaceId);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import "./poll-task-
|
|
8
|
-
import "./poll-
|
|
9
|
-
import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
|
+
import "./poll-task-BwKuhZ9P.mjs";
|
|
8
|
+
import "./poll-Cd8bRMmZ.mjs";
|
|
9
|
+
import { SyncSettingsUpdateResult, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-CEvZTea_.mjs";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/git-sync/remove-collection.ts
|
|
12
12
|
var remove_collection_default = defineMetabaseCommand({
|
|
@@ -25,7 +25,7 @@ var remove_collection_default = defineMetabaseCommand({
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
outputSchema: SyncSettingsUpdateResult,
|
|
28
|
-
examples: ["
|
|
28
|
+
examples: ["mb git-sync remove-collection 12", "mb git-sync remove-collection 12 --json --profile prod"],
|
|
29
29
|
async run({ args, ctx, getClient }) {
|
|
30
30
|
const collectionId = parseId(args.id, "id");
|
|
31
31
|
const client = await getClient();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import "./field-B3gvaqpK.mjs";
|
|
8
8
|
import "./table-B-PYcgGb.mjs";
|
|
9
9
|
import { DatabaseSyncResult, databaseSyncResultView } from "./database-vvig8k4x.mjs";
|
|
@@ -27,7 +27,7 @@ var rescan_values_default = defineMetabaseCommand({
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
outputSchema: DatabaseSyncResult,
|
|
30
|
-
examples: ["
|
|
30
|
+
examples: ["mb db rescan-values 1", "mb db rescan-values 1 --json"],
|
|
31
31
|
async run({ args, ctx, getClient }) {
|
|
32
32
|
const id = parseId(args.id);
|
|
33
33
|
const client = await getClient();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/commands/revision-message-flag.ts
|
|
2
|
-
const DEFAULT_ARCHIVE_REVISION_MESSAGE = "Archived via
|
|
2
|
+
const DEFAULT_ARCHIVE_REVISION_MESSAGE = "Archived via mb CLI";
|
|
3
3
|
const revisionMessageFlag = { revisionMessage: {
|
|
4
4
|
type: "string",
|
|
5
5
|
description: "Audit-log message recorded with the change",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { pollUntil } from "./poll-
|
|
8
|
-
import { TransformRun } from "./transform-
|
|
9
|
-
import { parseWaitFlags, waitFlags } from "./wait-flags-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
|
+
import { pollUntil } from "./poll-Cd8bRMmZ.mjs";
|
|
8
|
+
import { TransformRun } from "./transform-DR4ejuPM.mjs";
|
|
9
|
+
import { parseWaitFlags, waitFlags } from "./wait-flags-pItBfuzi.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
|
|
12
12
|
//#region src/commands/transform/run.ts
|
|
@@ -57,7 +57,7 @@ var run_default = defineMetabaseCommand({
|
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
outputSchema: TransformRunResult,
|
|
60
|
-
examples: ["
|
|
60
|
+
examples: ["mb transform run 1", "mb transform run 1 --wait --json"],
|
|
61
61
|
async run({ args, ctx, getClient }) {
|
|
62
62
|
const id = parseId(args.id);
|
|
63
63
|
const wait = parseWaitFlags(args);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderList } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import { collectPaginated } from "./paginate-CTSfuYiF.mjs";
|
|
8
|
-
import { TransformRun, TransformRunCompact, transformRunView } from "./transform-
|
|
8
|
+
import { TransformRun, TransformRunCompact, transformRunView } from "./transform-DR4ejuPM.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/commands/transform/runs.ts
|
|
11
11
|
const TransformRunListEnvelope = listEnvelopeSchema(TransformRunCompact);
|
|
@@ -29,9 +29,9 @@ var runs_default = defineMetabaseCommand({
|
|
|
29
29
|
},
|
|
30
30
|
outputSchema: TransformRunListEnvelope,
|
|
31
31
|
examples: [
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
32
|
+
"mb transform runs",
|
|
33
|
+
"mb transform runs --transform-id 1 --json",
|
|
34
|
+
"mb transform runs --limit 10 --json"
|
|
35
35
|
],
|
|
36
36
|
async run({ args, ctx, getClient }) {
|
|
37
37
|
const transformId = args["transform-id"] === void 0 ? void 0 : parseId(args["transform-id"], "--transform-id");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { package_default } from "./package-
|
|
1
|
+
import { package_default } from "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import { setMetabaseAugment } from "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { AbortError, ConfigError, MetabaseError, NetworkError, TimeoutError, VERBOSE_ENV, ValidationError, errorMessage, isNotFoundError, isPlainObject, toMetabaseError } from "./predicates-CGO17Q15.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
@@ -468,8 +468,8 @@ async function resolveConfig(flags) {
|
|
|
468
468
|
const keyField = pickField(flagKey, env.apiKey, stored?.apiKey);
|
|
469
469
|
if (urlField === null || keyField === null) {
|
|
470
470
|
const rejection = await readRejection(profile);
|
|
471
|
-
if (rejection !== null) throw new ConfigError(`Last login for profile "${profile}" was rejected by ${originOnly(rejection.url)}: ${rejection.reason}. Re-run \`
|
|
472
|
-
throw new ConfigError(`Not authenticated for profile "${profile}". Run \`
|
|
471
|
+
if (rejection !== null) throw new ConfigError(`Last login for profile "${profile}" was rejected by ${originOnly(rejection.url)}: ${rejection.reason}. Re-run \`mb auth login --profile ${profile}\` with valid credentials.`);
|
|
472
|
+
throw new ConfigError(`Not authenticated for profile "${profile}". Run \`mb auth login\`, set ${ENV_URL}/${ENV_API_KEY}, or pass --url/--api-key.`);
|
|
473
473
|
}
|
|
474
474
|
return {
|
|
475
475
|
url: normalizeUrl(urlField.value),
|
|
@@ -483,7 +483,7 @@ async function resolveLicenseToken(flags) {
|
|
|
483
483
|
const env = readEnvLicenseToken();
|
|
484
484
|
const stored = !flag && !env ? await readLicense() : null;
|
|
485
485
|
const value = flag ?? env ?? stored;
|
|
486
|
-
if (!value) throw new ConfigError(`No license token. Pass --token, set ${ENV_LICENSE_TOKEN}, or store one with \`
|
|
486
|
+
if (!value) throw new ConfigError(`No license token. Pass --token, set ${ENV_LICENSE_TOKEN}, or store one with \`mb license set\`.`);
|
|
487
487
|
return value;
|
|
488
488
|
}
|
|
489
489
|
function pickField(flag, env, stored) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderList } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import "./field-B3gvaqpK.mjs";
|
|
8
8
|
import { Table, TableCompact, tableView } from "./table-B-PYcgGb.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
@@ -32,7 +32,7 @@ var schema_tables_default = defineMetabaseCommand({
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
outputSchema: DatabaseSchemaTablesEnvelope,
|
|
35
|
-
examples: ["
|
|
35
|
+
examples: ["mb db schema-tables 1 public", "mb db schema-tables 1 public --json"],
|
|
36
36
|
async run({ args, ctx, getClient }) {
|
|
37
37
|
const id = parseId(args.id);
|
|
38
38
|
const client = await getClient();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderList } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/db/schemas.ts
|
|
@@ -33,7 +33,7 @@ var schemas_default = defineMetabaseCommand({
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
outputSchema: DatabaseSchemaListEnvelope,
|
|
36
|
-
examples: ["
|
|
36
|
+
examples: ["mb db schemas 1", "mb db schemas 1 --json"],
|
|
37
37
|
async run({ args, ctx, getClient }) {
|
|
38
38
|
const id = parseId(args.id);
|
|
39
39
|
const client = await getClient();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderList } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, parseEnumCsv, profileFlag } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
5
|
+
import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, parseEnumCsv, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
|
|
9
9
|
//#region src/domain/search.ts
|
|
@@ -120,9 +120,9 @@ var search_default = defineMetabaseCommand({
|
|
|
120
120
|
},
|
|
121
121
|
outputSchema: SearchListEnvelope,
|
|
122
122
|
examples: [
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
123
|
+
"mb search orders",
|
|
124
|
+
"mb search --models card,dashboard --limit 10 --json",
|
|
125
|
+
"mb search products --archived"
|
|
126
126
|
],
|
|
127
127
|
async run({ args, ctx, getClient }) {
|
|
128
128
|
const limit = parseId(args.limit, "--limit");
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/segment/index.ts
|
|
4
|
+
var segment_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "segment",
|
|
7
|
+
description: "Inspect Metabase segments"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-ByPzCM2G.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-BAqeeIQ-.mjs").then((mod) => mod.default),
|
|
12
|
+
create: () => import("./create-hYdLOyw_.mjs").then((mod) => mod.default),
|
|
13
|
+
update: () => import("./update-CDdML0mE.mjs").then((mod) => mod.default),
|
|
14
|
+
archive: () => import("./archive-BPLLOdfL.mjs").then((mod) => mod.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { segment_default as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
5
|
import "./input-BQ-BZA8h.mjs";
|
|
6
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
7
|
-
import { readBody } from "./body-
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
7
|
+
import { readBody } from "./body-CVSMGqZk.mjs";
|
|
8
8
|
import { SettingValue, settingValueView } from "./setting-CTaAeMci.mjs";
|
|
9
9
|
import { parseSettingKey } from "./key-CCJdVWKc.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
@@ -36,11 +36,11 @@ var set_default = defineMetabaseCommand({
|
|
|
36
36
|
},
|
|
37
37
|
outputSchema: SettingValue,
|
|
38
38
|
examples: [
|
|
39
|
-
`
|
|
40
|
-
`
|
|
41
|
-
`echo '"main"' |
|
|
42
|
-
`
|
|
43
|
-
`
|
|
39
|
+
`mb setting set remote-sync-branch '"main"'`,
|
|
40
|
+
`mb setting set anon-tracking-enabled true`,
|
|
41
|
+
`echo '"main"' | mb setting set remote-sync-branch`,
|
|
42
|
+
`mb setting set remote-sync-branch --file value.json`,
|
|
43
|
+
`mb setting set remote-sync-branch null`
|
|
44
44
|
],
|
|
45
45
|
async run({ args, ctx, getClient }) {
|
|
46
46
|
const key = parseSettingKey(args.key);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem, warn } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import { ConfigError } from "./predicates-CGO17Q15.mjs";
|
|
5
5
|
import { readInput } from "./input-BQ-BZA8h.mjs";
|
|
6
|
-
import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-
|
|
6
|
+
import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-DPdP0sl1.mjs";
|
|
7
7
|
import { promptPassword } from "./prompt-DgDNy_Pc.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
|
|
@@ -31,9 +31,9 @@ var set_default = defineMetabaseCommand({
|
|
|
31
31
|
},
|
|
32
32
|
outputSchema: LicenseSetResult,
|
|
33
33
|
examples: [
|
|
34
|
-
"echo $METABASE_LICENSE_TOKEN |
|
|
35
|
-
"
|
|
36
|
-
"
|
|
34
|
+
"echo $METABASE_LICENSE_TOKEN | mb license set",
|
|
35
|
+
"mb license set < token.txt",
|
|
36
|
+
"mb license set $METABASE_LICENSE_TOKEN"
|
|
37
37
|
],
|
|
38
38
|
async run({ args, ctx }) {
|
|
39
39
|
const token = await resolveToken(args.token);
|
|
@@ -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-B9mEqMZ5.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-Cy9YIesM.mjs").then((m) => m.default),
|
|
13
|
+
set: () => import("./set-BNQjt8S1.mjs").then((m) => m.default)
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import "./predicates-CGO17Q15.mjs";
|
|
5
5
|
import "./input-BQ-BZA8h.mjs";
|
|
6
|
-
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-
|
|
7
|
-
import { readBody } from "./body-
|
|
6
|
+
import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DPdP0sl1.mjs";
|
|
7
|
+
import { readBody } from "./body-CVSMGqZk.mjs";
|
|
8
8
|
import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
|
|
@@ -49,9 +49,9 @@ var setup_default = defineMetabaseCommand({
|
|
|
49
49
|
},
|
|
50
50
|
outputSchema: SetupResult,
|
|
51
51
|
examples: [
|
|
52
|
-
"cat setup.json |
|
|
53
|
-
"
|
|
54
|
-
"
|
|
52
|
+
"cat setup.json | mb setup",
|
|
53
|
+
"mb setup --file setup.json",
|
|
54
|
+
"mb setup --body '{\"token\":\"...\",\"user\":{\"email\":\"a@b.c\",\"password\":\"...\"}}'"
|
|
55
55
|
],
|
|
56
56
|
async run({ args, ctx, getClient }) {
|
|
57
57
|
const body = await readBody({
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { ConfigError, isNotFoundError } from "./predicates-CGO17Q15.mjs";
|
|
2
|
+
import { parseYamlResult } from "./yaml-ECiog374.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,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-DwF6on6O.mjs").then((m) => m.default),
|
|
12
|
+
get: () => import("./get-DWttywn_.mjs").then((m) => m.default),
|
|
13
|
+
path: () => import("./path-DarsuSkB.mjs").then((m) => m.default)
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { skills_default as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineCommand } from "citty";
|
|
2
|
+
|
|
3
|
+
//#region src/commands/snippet/index.ts
|
|
4
|
+
var snippet_default = defineCommand({
|
|
5
|
+
meta: {
|
|
6
|
+
name: "snippet",
|
|
7
|
+
description: "Inspect Metabase native query snippets"
|
|
8
|
+
},
|
|
9
|
+
subCommands: {
|
|
10
|
+
list: () => import("./list-B5E7LFDb.mjs").then((mod) => mod.default),
|
|
11
|
+
get: () => import("./get-ChEFd1sT.mjs").then((mod) => mod.default),
|
|
12
|
+
create: () => import("./create-C3TiMJhQ.mjs").then((mod) => mod.default),
|
|
13
|
+
update: () => import("./update-CGYM_wWQ.mjs").then((mod) => mod.default),
|
|
14
|
+
archive: () => import("./archive-D596Cq7R.mjs").then((mod) => mod.default)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { snippet_default as default };
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import "./package-
|
|
1
|
+
import "./package-VV3qWWIQ.mjs";
|
|
2
2
|
import "./command-augment-D9pI9Vbh.mjs";
|
|
3
3
|
import { renderItem, warn } from "./render-DuoDUTVL.mjs";
|
|
4
4
|
import { ConfigError, errorMessage } from "./predicates-CGO17Q15.mjs";
|
|
5
|
-
import { connectionFlags, createClient, defineMetabaseCommand, localUrl, outputFlags, parseInteger, parseOptionalInteger, profileFlag, resolveLicenseToken } from "./runtime-
|
|
6
|
-
import { parseId } from "./parse-id-
|
|
7
|
-
import { pollUntil } from "./poll-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
5
|
+
import { connectionFlags, createClient, defineMetabaseCommand, localUrl, outputFlags, parseInteger, parseOptionalInteger, profileFlag, resolveLicenseToken } from "./runtime-DPdP0sl1.mjs";
|
|
6
|
+
import { parseId } from "./parse-id-DbSjfzoU.mjs";
|
|
7
|
+
import { pollUntil } from "./poll-Cd8bRMmZ.mjs";
|
|
8
|
+
import "./yaml-ECiog374.mjs";
|
|
9
|
+
import { runProcess } from "./process-zJeVJZTM.mjs";
|
|
10
|
+
import { Workspace } from "./workspace-DUfqhPm5.mjs";
|
|
11
|
+
import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-C9WQCjkt.mjs";
|
|
12
|
+
import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-4lIxxz4g.mjs";
|
|
12
13
|
import { z } from "zod";
|
|
13
14
|
import { stat } from "node:fs/promises";
|
|
14
15
|
import { resolve } from "node:path";
|
|
@@ -180,13 +181,13 @@ var start_default = defineMetabaseCommand({
|
|
|
180
181
|
},
|
|
181
182
|
outputSchema: StartResult,
|
|
182
183
|
examples: [
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
184
|
+
"mb workspace start 1",
|
|
185
|
+
"mb workspace start 1 --wait",
|
|
186
|
+
"mb workspace start 1 --port 3100",
|
|
187
|
+
"mb workspace start 1 --image metabase/metabase-dev:feature-workspaces-v2 --no-pull",
|
|
188
|
+
"mb workspace start 1 --force",
|
|
189
|
+
"mb workspace start 1 --repo /path/to/sync-repo --wait",
|
|
190
|
+
"mb workspace start 1 --repo /path/to/sync-repo --repo-branch dev --repo-mode read-only"
|
|
190
191
|
],
|
|
191
192
|
async run({ args, ctx, getClient, getResolvedConfig }) {
|
|
192
193
|
const workspaceId = parseId(args.id);
|
|
@@ -275,7 +276,7 @@ async function ensureNoExistingContainer(workspaceId, containerName, force) {
|
|
|
275
276
|
await removeContainer(containerName);
|
|
276
277
|
return;
|
|
277
278
|
}
|
|
278
|
-
throw new ConfigError(`container ${containerName} is currently ${status}. Run \`
|
|
279
|
+
throw new ConfigError(`container ${containerName} is currently ${status}. Run \`mb workspace stop ${workspaceId}\` first, or use --force to recreate it.`);
|
|
279
280
|
}
|
|
280
281
|
async function resolveHostPort(requested) {
|
|
281
282
|
if (requested !== null) {
|