@metabase/cli 0.1.8-alpha.drop-workspaces.75fe1d5 → 0.1.9

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.
Files changed (158) hide show
  1. package/README.md +24 -12
  2. package/dist/{add-collection-CLLtJ4hp.mjs → add-collection-CoP-6FZR.mjs} +5 -5
  3. package/dist/add-collection-EPp89tcs.mjs +10 -0
  4. package/dist/{archive-BiAxoJ1m.mjs → archive-BY8nrgnq.mjs} +4 -4
  5. package/dist/{archive-Dzug49jS.mjs → archive-BeslLaal.mjs} +5 -5
  6. package/dist/{archive-CXZ1Mg97.mjs → archive-Blt0TxxA.mjs} +4 -4
  7. package/dist/{archive-CcXT7XDi.mjs → archive-BxwGVDpd.mjs} +5 -5
  8. package/dist/{archive-BLySelYN.mjs → archive-C17qIvFW.mjs} +4 -4
  9. package/dist/{archive-BxvnYXN2.mjs → archive-CPLXsrzD.mjs} +4 -4
  10. package/dist/auth-CCUDM9Sv.mjs +19 -0
  11. package/dist/{body-CibAG3Gn.mjs → body-2jl-YSxT.mjs} +1 -1
  12. package/dist/{branches-CqYNkMew.mjs → branches-Vlu44J51.mjs} +5 -5
  13. package/dist/{cancel-PLvMQNzN.mjs → cancel-D0aBPUhs.mjs} +4 -4
  14. package/dist/{cancel-task-dnxyQrhZ.mjs → cancel-task-DoL2bqs1.mjs} +5 -5
  15. package/dist/{capabilities-Dj3NgPHg.mjs → capabilities-7L9GVMd_.mjs} +17 -2
  16. package/dist/{card-BtPiKjbB.mjs → card-DnIeMmUn.mjs} +17 -1
  17. package/dist/card-UwczcLjq.mjs +20 -0
  18. package/dist/{cards-DUCwTT1X.mjs → cards-6MTreYAo.mjs} +4 -4
  19. package/dist/cli.mjs +23 -33
  20. package/dist/{collection-B3sPXRLs.mjs → collection-BPTlcFw5.mjs} +8 -2
  21. package/dist/collection-Cexywhlj.mjs +20 -0
  22. package/dist/collection-namespace-BdqQJb7j.mjs +12 -0
  23. package/dist/{create-VB2v6CFw.mjs → create-BWD8H6yw.mjs} +10 -7
  24. package/dist/{create-BGtmOc5Z.mjs → create-BZRA7nPu.mjs} +4 -4
  25. package/dist/{create-Btltf94v.mjs → create-BsOdn1Q1.mjs} +7 -7
  26. package/dist/{create-CrEv9lPi.mjs → create-C_Z3IDrW.mjs} +6 -6
  27. package/dist/{create-Di0_His2.mjs → create-DNYFXAsy.mjs} +4 -4
  28. package/dist/{create-CJ7GFRnZ.mjs → create-DcoF52Kx.mjs} +7 -7
  29. package/dist/{create-branch-DbD4Mr3v.mjs → create-branch-40Xm4DN7.mjs} +5 -5
  30. package/dist/create-dVmIemXi.mjs +52 -0
  31. package/dist/{create-DbD1wgnN.mjs → create-k59K2qf1.mjs} +6 -6
  32. package/dist/{current-task-C8gML78R.mjs → current-task-BN_XEFSX.mjs} +5 -5
  33. package/dist/dashboard-B_CuVbMX.mjs +21 -0
  34. package/dist/{database-_Td7rG4o.mjs → database-Dsv4QBs0.mjs} +19 -9
  35. package/dist/db-DULi5MOr.mjs +22 -0
  36. package/dist/{delete-DnorVsnc.mjs → delete-DEFgs5LE.mjs} +5 -5
  37. package/dist/{delete-runtime-Bo7v-0au.mjs → delete-runtime-DVb-Pkzp.mjs} +1 -1
  38. package/dist/{delete-C_H6NNKT.mjs → delete-tPjicYO4.mjs} +5 -5
  39. package/dist/{delete-table-B-UwOkQ8.mjs → delete-table-CDj19Qn6.mjs} +5 -5
  40. package/dist/{dirty-Q8VNL_QG.mjs → dirty-DGCa6W1F.mjs} +5 -5
  41. package/dist/{eid-CQO-WWqZ.mjs → eid-3v5MAKNA.mjs} +4 -4
  42. package/dist/{error-BYn4eqJH.mjs → error-BndUmcwS.mjs} +1 -1
  43. package/dist/{export-DaTZ6gvj.mjs → export-BIZ-UR_M.mjs} +7 -7
  44. package/dist/field-CfrrLetM.mjs +18 -0
  45. package/dist/{fields-CrFLg4ED.mjs → fields-9lOrO8UH.mjs} +4 -4
  46. package/dist/{get-yM_8b0OQ.mjs → get-6Cj360cH.mjs} +4 -4
  47. package/dist/{get-DljOZz2K.mjs → get-BIH72g0v.mjs} +5 -5
  48. package/dist/{get-DzK1a7SS.mjs → get-BSJN5TwW.mjs} +4 -4
  49. package/dist/{get-C1sugXm_.mjs → get-BYSj7tMP.mjs} +3 -3
  50. package/dist/{get-BSIQndJI.mjs → get-Bk81meka.mjs} +4 -4
  51. package/dist/{get-rQxZzRkA.mjs → get-BpWjLkKT.mjs} +3 -3
  52. package/dist/{get-D188icmF.mjs → get-BuM6QPjZ.mjs} +4 -4
  53. package/dist/{get-BeFkBriz.mjs → get-CHaIVT6Y.mjs} +4 -4
  54. package/dist/{get-Cgdc7hCr.mjs → get-CRa-h69C.mjs} +4 -4
  55. package/dist/{get-C03uSHdF.mjs → get-DFe2WoJ2.mjs} +5 -5
  56. package/dist/{get-BzHRPRpv.mjs → get-DlGlnciR.mjs} +4 -4
  57. package/dist/{get-QoJ4HbKQ.mjs → get-LI2xsRoT.mjs} +4 -4
  58. package/dist/{get-run-Dzu_f6Hi.mjs → get-run-hCZaw8-h.mjs} +5 -5
  59. package/dist/{get-FqlK_kjE.mjs → get-w-WqpjKy.mjs} +5 -5
  60. package/dist/git-sync-BpRstrZo.mjs +28 -0
  61. package/dist/{has-remote-changes-CH6m9DG_.mjs → has-remote-changes-DcpW1_KX.mjs} +5 -5
  62. package/dist/{import-Ct_wFwN3.mjs → import-CTQT1atq.mjs} +7 -7
  63. package/dist/{is-dirty-BZZx74du.mjs → is-dirty-DGrmt1ss.mjs} +4 -4
  64. package/dist/is-dirty-DuWCgrz2.mjs +9 -0
  65. package/dist/{items-DZwlhSEL.mjs → items-Kr0oN2V7.mjs} +5 -5
  66. package/dist/{list-CY2snf4x.mjs → list-Bz2ej0Cl.mjs} +3 -3
  67. package/dist/{list-CgQVYt5R.mjs → list-CCtYVgPN.mjs} +3 -3
  68. package/dist/{list-CQpckqCa.mjs → list-CLvlEVQo.mjs} +4 -4
  69. package/dist/{list-BmaG3xeR.mjs → list-Ccj8-vb5.mjs} +3 -3
  70. package/dist/{list-BYmhSHzh.mjs → list-Cj3v4Lgv.mjs} +4 -4
  71. package/dist/{list-D81pxMKm.mjs → list-Cl_O4_U4.mjs} +4 -4
  72. package/dist/{list-seY6unmL.mjs → list-D2D5Mw1E.mjs} +4 -4
  73. package/dist/{list-B3Ovx70Y.mjs → list-DNmekF2B.mjs} +3 -3
  74. package/dist/{list-CnFLhMYE.mjs → list-DaESiI72.mjs} +3 -3
  75. package/dist/{list-9XlzunAC.mjs → list-DzKKdfCI.mjs} +4 -4
  76. package/dist/{list-DoqLo7A0.mjs → list-jcgK0thu.mjs} +4 -4
  77. package/dist/{list-BGGAF_6C.mjs → list-tklIxo38.mjs} +4 -4
  78. package/dist/{list-BIhaOrA5.mjs → list-zRQsvrH6.mjs} +3 -3
  79. package/dist/{login-DYTNx7yh.mjs → login-BMKBmgeQ.mjs} +4 -4
  80. package/dist/{logout-DZ8y8HOD.mjs → logout-C5pod937.mjs} +3 -3
  81. package/dist/{manifest-B_OfG-Ss.mjs → manifest-Cmu--CG5.mjs} +1 -1
  82. package/dist/measure-BkwFsP44.mjs +19 -0
  83. package/dist/{metadata-HFNA8q0S.mjs → metadata-CG4VZ5NW.mjs} +4 -4
  84. package/dist/{metadata-9C7IqqPO.mjs → metadata-DIEbyQeS.mjs} +5 -5
  85. package/dist/{parse-id-sz7USsM2.mjs → parse-id-Boqc4wn4.mjs} +1 -1
  86. package/dist/{path-CQtJFQoD.mjs → path-ur3NsMFr.mjs} +3 -3
  87. package/dist/{poll-DO11tBiL.mjs → poll-BMjCkDaj.mjs} +1 -1
  88. package/dist/{poll-task-DnzX7GX_.mjs → poll-task-CiRA0ER9.mjs} +2 -2
  89. package/dist/{preflight-B-LRcq3c.mjs → preflight-CSqcIlbX.mjs} +3 -3
  90. package/dist/{query-77r-viQY.mjs → query-B8JzsQ_I.mjs} +6 -6
  91. package/dist/{query-CsN3tsch.mjs → query-CG0rEMS-.mjs} +8 -8
  92. package/dist/{query-result-PoQE05Pe.mjs → query-result-B4kTRid7.mjs} +1 -1
  93. package/dist/{remove-collection-DoUP8olH.mjs → remove-collection-Clwz3EHQ.mjs} +7 -7
  94. package/dist/{rescan-values-B0Aubnud.mjs → rescan-values-DuHBnFjK.mjs} +6 -8
  95. package/dist/run-JXRivkfH.mjs +136 -0
  96. package/dist/{runs-C3t03bls.mjs → runs-FxgbXvax.mjs} +5 -5
  97. package/dist/{runtime-DHJQOqZu.mjs → runtime-Ck8KKQe-.mjs} +3 -3
  98. package/dist/{schema-tables-D7df6z1V.mjs → schema-tables-izDPI4f5.mjs} +4 -4
  99. package/dist/{schemas-DT3v9JRw.mjs → schemas-CyzplnXl.mjs} +4 -4
  100. package/dist/{search-B3EvSZce.mjs → search-BeuoOEQV.mjs} +4 -4
  101. package/dist/segment-ChYmSM0p.mjs +19 -0
  102. package/dist/{set-zEPevfIf.mjs → set-ClzB_5Jk.mjs} +4 -4
  103. package/dist/{setting-fWAwsQKm.mjs → setting-CBJVEx7_.mjs} +3 -3
  104. package/dist/{setup-SjStGgMi.mjs → setup-vKXEUMM7.mjs} +4 -4
  105. package/dist/skills-1Z5Wj7Kp.mjs +18 -0
  106. package/dist/snippet-De70ayL1.mjs +19 -0
  107. package/dist/{stash-CLN-okHt.mjs → stash-DLtVf4_D.mjs} +7 -7
  108. package/dist/{status-CIyVMUXh.mjs → status-AnPzI1f7.mjs} +3 -3
  109. package/dist/{status-B0YQmlXV.mjs → status-DHFYn9kO.mjs} +6 -6
  110. package/dist/{summary-DBhVgNU4.mjs → summary-DDed1LOz.mjs} +4 -4
  111. package/dist/sync-schema-BGQVq2JA.mjs +55 -0
  112. package/dist/table-C_bP2ao-.mjs +19 -0
  113. package/dist/transform-B4RZfm6A.mjs +24 -0
  114. package/dist/{transform-DyJb0bV0.mjs → transform-DyWCoiO-.mjs} +1 -0
  115. package/dist/transform-job-C4pZcrIF.mjs +19 -0
  116. package/dist/{tree-2qvtbIdj.mjs → tree-BlYgJOn9.mjs} +4 -4
  117. package/dist/{update-Cw0oHpsm.mjs → update-B0z-2zqC.mjs} +8 -8
  118. package/dist/{update-B93L5MJR.mjs → update-BHtliIr_.mjs} +5 -5
  119. package/dist/{update-CiIYqtRb.mjs → update-CdfAogO2.mjs} +5 -5
  120. package/dist/{update-CWgm0WZQ.mjs → update-CgOPxKXK.mjs} +11 -8
  121. package/dist/{update-YxMDkgY6.mjs → update-CilTW98H.mjs} +7 -7
  122. package/dist/{update-BA0wgxkx.mjs → update-CoVvsU-I.mjs} +5 -5
  123. package/dist/{update-DWwBv7XP.mjs → update-DBN7yfAk.mjs} +5 -5
  124. package/dist/{update-D5fs9raK.mjs → update-DqSG5_Ie.mjs} +7 -7
  125. package/dist/{update-DdI9epnQ.mjs → update-DykqQLfo.mjs} +8 -8
  126. package/dist/{update-dashcard-BA65Gjah.mjs → update-dashcard-DZ8oV8up.mjs} +5 -5
  127. package/dist/{upgrade-82Zo6-n6.mjs → upgrade-B8sEEQdQ.mjs} +3 -3
  128. package/dist/{uuid-B2xU0Ibp.mjs → uuid-lLVnEoBN.mjs} +3 -3
  129. package/dist/{validate-CqVB_3_p.mjs → validate-B62TRDGV.mjs} +1 -1
  130. package/dist/{validate-query-BUTNK00f.mjs → validate-query-BpiN1CFu.mjs} +2 -2
  131. package/dist/{values-Cs6sJEid.mjs → values-oD72EtRq.mjs} +4 -4
  132. package/dist/{verify-D8wLpHse.mjs → verify-Bg6F0oFN.mjs} +1 -1
  133. package/dist/{wait-CW6jJWmY.mjs → wait-BtzuqQC3.mjs} +6 -6
  134. package/dist/{wait-flags-Dl-xi5yx.mjs → wait-flags-DyFfZeav.mjs} +2 -2
  135. package/package.json +1 -1
  136. package/skill-data/core/SKILL.md +5 -5
  137. package/skill-data/mbql/SKILL.md +94 -29
  138. package/skill-data/mbql/references/operators.md +13 -13
  139. package/skill-data/transform/SKILL.md +9 -8
  140. package/dist/add-collection-CRm-ILtk.mjs +0 -10
  141. package/dist/auth-9zbMAJJT.mjs +0 -19
  142. package/dist/card-pT87DhqA.mjs +0 -20
  143. package/dist/collection-DR2bXpGN.mjs +0 -20
  144. package/dist/create-C9GnQVhD.mjs +0 -44
  145. package/dist/dashboard-D4uKuH7K.mjs +0 -21
  146. package/dist/db-UVZmfVwk.mjs +0 -22
  147. package/dist/field-BYKXbj6M.mjs +0 -18
  148. package/dist/git-sync-CbvqlHaK.mjs +0 -28
  149. package/dist/is-dirty-B2h2xG28.mjs +0 -9
  150. package/dist/measure-RIucuF-O.mjs +0 -19
  151. package/dist/run-CBuzp0Oj.mjs +0 -95
  152. package/dist/segment-CvxcX3iJ.mjs +0 -19
  153. package/dist/skills-zSDzVgBI.mjs +0 -18
  154. package/dist/snippet-DTwXkIqY.mjs +0 -19
  155. package/dist/sync-schema-CvRI0jtk.mjs +0 -43
  156. package/dist/table-CTTjXzo3.mjs +0 -19
  157. package/dist/transform-CWNrL2gg.mjs +0 -24
  158. package/dist/transform-job-C--GBO9Q.mjs +0 -19
@@ -56,11 +56,12 @@ Notes:
56
56
  - `<db-id>` comes from `mb database list --profile <name> --json`. Database ids are per-instance.
57
57
  - Target `schema` is the schema the result table is written into (e.g. `public`).
58
58
  - `--wait` on `transform run` polls until status is `succeeded` or `failed`. Without it you only get `{message: "Transform run started", run_id, final: null}` and have to poll yourself.
59
- - The `--json` envelope is shape-stable: `{message, run_id, final}`. `final` is always present — `null` when `--wait` is omitted or the run never started, otherwise a full `TransformRun` object with `status` and `message`. On a failed run (`final.status` ∈ {`failed`, `timeout`, `canceled`}) the CLI exits 1 and writes a one-line summary `transform run <id> failed` to stderr; the failure detail lives only in `final.message` on stdout, so `jq -r '.final.message'` is where to look.
59
+ - `--sync` implies `--wait`, then waits until the run's output table is registered — the run registers it itself, no `db sync-schema` needed — adding `target_table_id` to the envelope. Use it when you'll build MBQL on the output (see "Inspect").
60
+ - The `--json` envelope is shape-stable: `{message, run_id, final}` (plus `target_table_id` under `--sync` — a number, or `null` if the table didn't register before the timeout). `final` is always present — `null` when `--wait` is omitted or the run never started, otherwise a full `TransformRun` object with `status` and `message`. On a failed run (`final.status` ∈ {`failed`, `timeout`, `canceled`}) the CLI exits 1 and writes a one-line summary `transform run <id> failed` to stderr; the failure detail lives only in `final.message` on stdout, so `jq -r '.final.message'` is where to look.
60
61
  - The heredoc with single-quoted `'EOF'` prevents shell from interpolating any `$vars` inside the SQL.
61
62
  - `transform create --json` returns the agent-facing compact projection: `{id, name, description, source_type, target: {type, database, schema, name}, target_db_id}`. Read `target.schema`/`target.name` directly off the create output — no follow-up `transform get` needed to verify where the transform will write.
62
63
  - If a transform with the same `name` already has a YAML representation on disk under the configured remote-sync repo, `create` mints a `_2` suffix on the exported filename (the new transform gets a fresh `entity_id`; the prior one isn't touched). For "iterate on the same concept" workflows, prefer `transform update <id>` — see "Iterating on a failing transform" below.
63
- - **`collection_id` only accepts a collection in the `:transforms` namespace.** Transforms aren't filed next to cards and dashboards — passing a normal analytics collection id (the kind a dashboard lives in) fails create/update with `collection_id: A Transform can only go in Collections in the :transforms namespace.` Omit `collection_id` to leave the transform uncollected (the common case), or pass a collection created in the transforms namespace. Cards and dashboards you build **on top of** the transform's output table go in ordinary collections as usual — so "put the transform and its dashboard in collection X" generally means *X holds the dashboard + cards; the transform stays in the transforms namespace.*
64
+ - **`collection_id` only accepts a collection in the `:transforms` namespace.** Transforms aren't filed next to cards and dashboards — passing a normal analytics collection id (the kind a dashboard lives in) fails create/update with `collection_id: A Transform can only go in Collections in the :transforms namespace.` Omit `collection_id` to leave the transform uncollected (the common case), or create one with `mb collection create --body '{"name":"…"}' --namespace transforms --json` and pass the returned `id`. Cards and dashboards you build **on top of** the transform's output table go in ordinary collections as usual — so "put the transform and its dashboard in collection X" generally means _X holds the dashboard + cards; the transform stays in the transforms namespace._
64
65
 
65
66
  ## Inspect
66
67
 
@@ -69,16 +70,16 @@ mb transform list --profile <name> --json
69
70
  mb transform get <id> --profile <name> --full --json # full transform incl. last run summary
70
71
  ```
71
72
 
72
- After a run, the materialized table physically exists in the warehouse, but Metabase doesn't know about it yet. **Native SQL** (a native `card`, or `mb query` against `<schema>.<name>`) reads it immediately — native runs straight against the warehouse. **MBQL and the Metabase UI cannot reference it until the instance syncs**, because they address tables and columns by numeric id and a brand-new table has none. To build MBQL cards on a fresh output table:
73
+ After a run the table physically exists in the warehouse, but Metabase addresses tables/columns by numeric id, so **MBQL and the UI can't reference a brand-new table until the instance syncs** (native SQL — a native `card` or `mb query` against `<schema>.<name>` — reads it immediately). Run and register in one step with `--sync`:
73
74
 
74
75
  ```bash
75
- mb database sync-schema <db-id> --profile <name> --json # async — returns {status:"ok"} at once
76
- # poll until the new table appears (sync is not instant):
77
- mb database schema-tables <db-id> <schema> --profile <name> --json --fields id,name
78
- mb table get <table-id> --include fields --profile <name> --json # then grab the field ids
76
+ TABLE_ID=$(mb transform run <id> --sync --profile <name> --json | jq -r '.target_table_id')
77
+ mb table get "$TABLE_ID" --include fields --profile <name> --json # field ids for MBQL
79
78
  ```
80
79
 
81
- Columns and types are inferred from the result set; if you change the SELECT shape, drop the table first (`transform delete-table <id>`) or the next run will fail on a column-mismatch error. A changed shape also needs a re-sync before MBQL sees the new/renamed columns.
80
+ `--sync` runs the transform and polls until its output table is registered, returning the id as `target_table_id` — the run registers the table itself, so no `db sync-schema` is needed. On `target_table_id: null` (still syncing when the poll timed out; exit 0) re-poll `mb transform get <id> --full --json` until the `target_table_id` / `table` linkage lands.
81
+
82
+ Columns and types are inferred from the result set; change the SELECT shape and the next run fails on a column mismatch — drop the table first (`transform delete-table <id>`). A changed shape also needs a re-run with `--sync` before MBQL sees the new/renamed columns.
82
83
 
83
84
  ## Inspect runs and cancel an in-flight run
84
85
 
@@ -1,10 +0,0 @@
1
- import "./command-augment-BH9qgQ5u.mjs";
2
- import "./error-BYn4eqJH.mjs";
3
- import "./runtime-DHJQOqZu.mjs";
4
- import "./capabilities-Dj3NgPHg.mjs";
5
- import "./parse-id-sz7USsM2.mjs";
6
- import "./poll-task-DnzX7GX_.mjs";
7
- import "./poll-DO11tBiL.mjs";
8
- import { SyncSettingsUpdateResult, add_collection_default, setCollectionRemoteSynced, syncSettingsUpdateView } from "./add-collection-CLLtJ4hp.mjs";
9
-
10
- export { add_collection_default as default };
@@ -1,19 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/auth/index.ts
4
- var auth_default = defineCommand({
5
- meta: {
6
- name: "auth",
7
- description: "Authenticate against a Metabase instance"
8
- },
9
- default: "login",
10
- subCommands: {
11
- login: () => import("./login-DYTNx7yh.mjs").then((m) => m.default),
12
- status: () => import("./status-CIyVMUXh.mjs").then((m) => m.default),
13
- list: () => import("./list-seY6unmL.mjs").then((m) => m.default),
14
- logout: () => import("./logout-DZ8y8HOD.mjs").then((m) => m.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { auth_default as default };
@@ -1,20 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/card/index.ts
4
- var card_default = defineCommand({
5
- meta: {
6
- name: "card",
7
- description: "Manage Metabase cards (questions, models, metrics)"
8
- },
9
- subCommands: {
10
- list: () => import("./list-BYmhSHzh.mjs").then((mod) => mod.default),
11
- get: () => import("./get-DljOZz2K.mjs").then((mod) => mod.default),
12
- query: () => import("./query-77r-viQY.mjs").then((mod) => mod.default),
13
- create: () => import("./create-Btltf94v.mjs").then((mod) => mod.default),
14
- update: () => import("./update-DdI9epnQ.mjs").then((mod) => mod.default),
15
- archive: () => import("./archive-CcXT7XDi.mjs").then((mod) => mod.default)
16
- }
17
- });
18
-
19
- //#endregion
20
- export { card_default as default };
@@ -1,20 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/collection/index.ts
4
- var collection_default = defineCommand({
5
- meta: {
6
- name: "collection",
7
- description: "Manage Metabase collections"
8
- },
9
- subCommands: {
10
- list: () => import("./list-DoqLo7A0.mjs").then((mod) => mod.default),
11
- get: () => import("./get-BSIQndJI.mjs").then((mod) => mod.default),
12
- items: () => import("./items-DZwlhSEL.mjs").then((mod) => mod.default),
13
- tree: () => import("./tree-2qvtbIdj.mjs").then((mod) => mod.default),
14
- create: () => import("./create-C9GnQVhD.mjs").then((mod) => mod.default),
15
- archive: () => import("./archive-Dzug49jS.mjs").then((mod) => mod.default)
16
- }
17
- });
18
-
19
- //#endregion
20
- export { collection_default as default };
@@ -1,44 +0,0 @@
1
- import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-BYn4eqJH.mjs";
3
- import { defineMetabaseCommand } from "./runtime-DHJQOqZu.mjs";
4
- import { renderSummary } from "./capabilities-Dj3NgPHg.mjs";
5
- import "./input-xewHccej.mjs";
6
- import { readBody } from "./body-CibAG3Gn.mjs";
7
- import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
- import { Collection, CollectionCreateInput, collectionView } from "./collection-B3sPXRLs.mjs";
9
-
10
- //#region src/commands/collection/create.ts
11
- var create_default = defineMetabaseCommand({
12
- meta: {
13
- name: "create",
14
- description: "Create a collection from a JSON spec"
15
- },
16
- capabilities: { minVersion: 58 },
17
- args: {
18
- ...outputFlags,
19
- ...profileFlag,
20
- ...connectionFlags,
21
- ...bodyInputFlags
22
- },
23
- outputSchema: Collection,
24
- examples: [
25
- "cat collection.json | mb collection create",
26
- "mb collection create --file collection.json",
27
- "mb collection create --body '{\"name\":\"My Collection\",\"parent_id\":4}'"
28
- ],
29
- async run({ args, ctx, getClient }) {
30
- const body = await readBody({
31
- flag: args.body,
32
- file: args.file
33
- }, CollectionCreateInput);
34
- const client = await getClient();
35
- const created = await client.requestParsed(Collection, "/api/collection", {
36
- method: "POST",
37
- body
38
- });
39
- renderSummary(created, collectionView, `Created collection ${created.id} "${created.name}".`, ctx);
40
- }
41
- });
42
-
43
- //#endregion
44
- export { create_default as default };
@@ -1,21 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/dashboard/index.ts
4
- var dashboard_default = defineCommand({
5
- meta: {
6
- name: "dashboard",
7
- description: "Manage Metabase dashboards"
8
- },
9
- subCommands: {
10
- list: () => import("./list-BmaG3xeR.mjs").then((mod) => mod.default),
11
- get: () => import("./get-QoJ4HbKQ.mjs").then((mod) => mod.default),
12
- cards: () => import("./cards-DUCwTT1X.mjs").then((mod) => mod.default),
13
- create: () => import("./create-CJ7GFRnZ.mjs").then((mod) => mod.default),
14
- update: () => import("./update-Cw0oHpsm.mjs").then((mod) => mod.default),
15
- "update-dashcard": () => import("./update-dashcard-BA65Gjah.mjs").then((mod) => mod.default),
16
- archive: () => import("./archive-BiAxoJ1m.mjs").then((mod) => mod.default)
17
- }
18
- });
19
-
20
- //#endregion
21
- export { dashboard_default as default };
@@ -1,22 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/db/index.ts
4
- var db_default = defineCommand({
5
- meta: {
6
- name: "db",
7
- description: "Inspect and sync Metabase databases",
8
- alias: "database"
9
- },
10
- subCommands: {
11
- list: () => import("./list-BGGAF_6C.mjs").then((m) => m.default),
12
- get: () => import("./get-FqlK_kjE.mjs").then((m) => m.default),
13
- metadata: () => import("./metadata-9C7IqqPO.mjs").then((m) => m.default),
14
- schemas: () => import("./schemas-DT3v9JRw.mjs").then((m) => m.default),
15
- "schema-tables": () => import("./schema-tables-D7df6z1V.mjs").then((m) => m.default),
16
- "sync-schema": () => import("./sync-schema-CvRI0jtk.mjs").then((m) => m.default),
17
- "rescan-values": () => import("./rescan-values-B0Aubnud.mjs").then((m) => m.default)
18
- }
19
- });
20
-
21
- //#endregion
22
- export { db_default as default };
@@ -1,18 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/field/index.ts
4
- var field_default = defineCommand({
5
- meta: {
6
- name: "field",
7
- description: "Manage Metabase fields"
8
- },
9
- subCommands: {
10
- get: () => import("./get-yM_8b0OQ.mjs").then((m) => m.default),
11
- values: () => import("./values-Cs6sJEid.mjs").then((m) => m.default),
12
- summary: () => import("./summary-DBhVgNU4.mjs").then((m) => m.default),
13
- update: () => import("./update-CiIYqtRb.mjs").then((m) => m.default)
14
- }
15
- });
16
-
17
- //#endregion
18
- export { field_default as default };
@@ -1,28 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/git-sync/index.ts
4
- var git_sync_default = defineCommand({
5
- meta: {
6
- name: "git-sync",
7
- description: "Sync Metabase content with a git remote"
8
- },
9
- subCommands: {
10
- status: () => import("./status-B0YQmlXV.mjs").then((mod) => mod.default),
11
- "is-dirty": () => import("./is-dirty-B2h2xG28.mjs").then((mod) => mod.default),
12
- "has-remote-changes": () => import("./has-remote-changes-CH6m9DG_.mjs").then((mod) => mod.default),
13
- dirty: () => import("./dirty-Q8VNL_QG.mjs").then((mod) => mod.default),
14
- "current-task": () => import("./current-task-C8gML78R.mjs").then((mod) => mod.default),
15
- "cancel-task": () => import("./cancel-task-dnxyQrhZ.mjs").then((mod) => mod.default),
16
- wait: () => import("./wait-CW6jJWmY.mjs").then((mod) => mod.default),
17
- import: () => import("./import-Ct_wFwN3.mjs").then((mod) => mod.default),
18
- export: () => import("./export-DaTZ6gvj.mjs").then((mod) => mod.default),
19
- stash: () => import("./stash-CLN-okHt.mjs").then((mod) => mod.default),
20
- branches: () => import("./branches-CqYNkMew.mjs").then((mod) => mod.default),
21
- "create-branch": () => import("./create-branch-DbD4Mr3v.mjs").then((mod) => mod.default),
22
- "add-collection": () => import("./add-collection-CRm-ILtk.mjs").then((mod) => mod.default),
23
- "remove-collection": () => import("./remove-collection-DoUP8olH.mjs").then((mod) => mod.default)
24
- }
25
- });
26
-
27
- //#endregion
28
- export { git_sync_default as default };
@@ -1,9 +0,0 @@
1
- import "./command-augment-BH9qgQ5u.mjs";
2
- import "./error-BYn4eqJH.mjs";
3
- import "./runtime-DHJQOqZu.mjs";
4
- import "./capabilities-Dj3NgPHg.mjs";
5
- import "./poll-task-DnzX7GX_.mjs";
6
- import "./poll-DO11tBiL.mjs";
7
- import { IsDirtyResult, is_dirty_default } from "./is-dirty-BZZx74du.mjs";
8
-
9
- export { is_dirty_default as default };
@@ -1,19 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/measure/index.ts
4
- var measure_default = defineCommand({
5
- meta: {
6
- name: "measure",
7
- description: "Manage Metabase measures"
8
- },
9
- subCommands: {
10
- list: () => import("./list-BIhaOrA5.mjs").then((mod) => mod.default),
11
- get: () => import("./get-BzHRPRpv.mjs").then((mod) => mod.default),
12
- create: () => import("./create-DbD1wgnN.mjs").then((mod) => mod.default),
13
- update: () => import("./update-YxMDkgY6.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-CXZ1Mg97.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { measure_default as default };
@@ -1,95 +0,0 @@
1
- import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-BYn4eqJH.mjs";
3
- import { defineMetabaseCommand } from "./runtime-DHJQOqZu.mjs";
4
- import { renderSummary } from "./capabilities-Dj3NgPHg.mjs";
5
- import { parseId } from "./parse-id-sz7USsM2.mjs";
6
- import { pollUntil } from "./poll-DO11tBiL.mjs";
7
- import { parseWaitFlags, waitFlags } from "./wait-flags-Dl-xi5yx.mjs";
8
- import { TransformRun } from "./transform-DyJb0bV0.mjs";
9
- import { z } from "zod";
10
-
11
- //#region src/commands/transform/run.ts
12
- const RUN_TERMINAL_STATUSES = new Set([
13
- "succeeded",
14
- "failed",
15
- "timeout",
16
- "canceled"
17
- ]);
18
- const RUN_FAILURE_STATUSES = new Set([
19
- "failed",
20
- "timeout",
21
- "canceled"
22
- ]);
23
- const TransformRunKickoff = z.object({
24
- message: z.string(),
25
- run_id: z.number().int().positive().nullable()
26
- });
27
- const TransformRunResult = z.object({
28
- message: z.string(),
29
- run_id: z.number().int().positive().nullable(),
30
- final: TransformRun.nullable()
31
- });
32
- const transformRunResultView = {
33
- compactPick: TransformRunResult,
34
- tableColumns: [{
35
- key: "run_id",
36
- label: "Run ID"
37
- }, {
38
- key: "message",
39
- label: "Message"
40
- }]
41
- };
42
- var run_default = defineMetabaseCommand({
43
- meta: {
44
- name: "run",
45
- description: "Trigger a transform run by id"
46
- },
47
- capabilities: { minVersion: 59 },
48
- args: {
49
- ...outputFlags,
50
- ...profileFlag,
51
- ...connectionFlags,
52
- ...waitFlags,
53
- id: {
54
- type: "positional",
55
- description: "Transform id",
56
- required: true
57
- }
58
- },
59
- outputSchema: TransformRunResult,
60
- examples: ["mb transform run 1", "mb transform run 1 --wait --json"],
61
- async run({ args, ctx, getClient }) {
62
- const id = parseId(args.id);
63
- const wait = parseWaitFlags(args);
64
- const client = await getClient();
65
- const kickoff = await client.requestParsed(TransformRunKickoff, `/api/transform/${id}/run`, { method: "POST" });
66
- if (!wait.enabled) {
67
- const started = kickoff.run_id === null ? kickoff.message : `Started run ${kickoff.run_id} for transform ${id}.`;
68
- renderSummary({
69
- message: kickoff.message,
70
- run_id: kickoff.run_id,
71
- final: null
72
- }, transformRunResultView, started, ctx);
73
- return;
74
- }
75
- if (kickoff.run_id === null) {
76
- renderSummary({
77
- message: kickoff.message,
78
- run_id: null,
79
- final: null
80
- }, transformRunResultView, kickoff.message, ctx);
81
- throw new Error(`transform run did not start: ${kickoff.message}`);
82
- }
83
- const runId = kickoff.run_id;
84
- const final = await pollUntil(async () => client.requestParsed(TransformRun, `/api/transform/run/${runId}`), (run) => RUN_TERMINAL_STATUSES.has(run.status), wait.schedule);
85
- renderSummary({
86
- message: kickoff.message,
87
- run_id: runId,
88
- final
89
- }, transformRunResultView, `Run ${runId} of transform ${id} ${final.status}.`, ctx);
90
- if (RUN_FAILURE_STATUSES.has(final.status)) throw new Error(`transform run ${runId} ${final.status}`);
91
- }
92
- });
93
-
94
- //#endregion
95
- export { run_default as default };
@@ -1,19 +0,0 @@
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: "Manage Metabase segments"
8
- },
9
- subCommands: {
10
- list: () => import("./list-B3Ovx70Y.mjs").then((mod) => mod.default),
11
- get: () => import("./get-BeFkBriz.mjs").then((mod) => mod.default),
12
- create: () => import("./create-CrEv9lPi.mjs").then((mod) => mod.default),
13
- update: () => import("./update-D5fs9raK.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-BLySelYN.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { segment_default as default };
@@ -1,18 +0,0 @@
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-9XlzunAC.mjs").then((m) => m.default),
12
- get: () => import("./get-rQxZzRkA.mjs").then((m) => m.default),
13
- path: () => import("./path-CQtJFQoD.mjs").then((m) => m.default)
14
- }
15
- });
16
-
17
- //#endregion
18
- export { skills_default as default };
@@ -1,19 +0,0 @@
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: "Manage Metabase native query snippets"
8
- },
9
- subCommands: {
10
- list: () => import("./list-CY2snf4x.mjs").then((mod) => mod.default),
11
- get: () => import("./get-D188icmF.mjs").then((mod) => mod.default),
12
- create: () => import("./create-BGtmOc5Z.mjs").then((mod) => mod.default),
13
- update: () => import("./update-B93L5MJR.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-BxvnYXN2.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { snippet_default as default };
@@ -1,43 +0,0 @@
1
- import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-BYn4eqJH.mjs";
3
- import { defineMetabaseCommand } from "./runtime-DHJQOqZu.mjs";
4
- import { renderSummary } from "./capabilities-Dj3NgPHg.mjs";
5
- import "./field-MGxpNQUH.mjs";
6
- import { parseId } from "./parse-id-sz7USsM2.mjs";
7
- import "./table-CkWja2UH.mjs";
8
- import { DatabaseSyncResult, databaseSyncResultView } from "./database-_Td7rG4o.mjs";
9
- import { z } from "zod";
10
-
11
- //#region src/commands/db/sync-schema.ts
12
- const SyncSchemaApiResponse = z.object({ status: z.literal("ok") });
13
- var sync_schema_default = defineMetabaseCommand({
14
- meta: {
15
- name: "sync-schema",
16
- description: "Trigger a manual schema sync for a database"
17
- },
18
- capabilities: { minVersion: 58 },
19
- args: {
20
- ...outputFlags,
21
- ...profileFlag,
22
- ...connectionFlags,
23
- id: {
24
- type: "positional",
25
- description: "Database id",
26
- required: true
27
- }
28
- },
29
- outputSchema: DatabaseSyncResult,
30
- examples: ["mb db sync-schema 1", "mb db sync-schema 1 --json"],
31
- async run({ args, ctx, getClient }) {
32
- const id = parseId(args.id);
33
- const client = await getClient();
34
- const response = await client.requestParsed(SyncSchemaApiResponse, `/api/database/${id}/sync_schema`, { method: "POST" });
35
- renderSummary({
36
- id,
37
- status: response.status
38
- }, databaseSyncResultView, `Schema sync queued for database ${id}.`, ctx);
39
- }
40
- });
41
-
42
- //#endregion
43
- export { sync_schema_default as default };
@@ -1,19 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/table/index.ts
4
- var table_default = defineCommand({
5
- meta: {
6
- name: "table",
7
- description: "Manage Metabase tables"
8
- },
9
- subCommands: {
10
- list: () => import("./list-CQpckqCa.mjs").then((m) => m.default),
11
- get: () => import("./get-DzK1a7SS.mjs").then((m) => m.default),
12
- metadata: () => import("./metadata-HFNA8q0S.mjs").then((m) => m.default),
13
- fields: () => import("./fields-CrFLg4ED.mjs").then((m) => m.default),
14
- update: () => import("./update-DWwBv7XP.mjs").then((m) => m.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { table_default as default };
@@ -1,24 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/transform/index.ts
4
- var transform_default = defineCommand({
5
- meta: {
6
- name: "transform",
7
- description: "Manage Metabase transforms"
8
- },
9
- subCommands: {
10
- list: () => import("./list-D81pxMKm.mjs").then((mod) => mod.default),
11
- get: () => import("./get-C03uSHdF.mjs").then((mod) => mod.default),
12
- create: () => import("./create-VB2v6CFw.mjs").then((mod) => mod.default),
13
- update: () => import("./update-CWgm0WZQ.mjs").then((mod) => mod.default),
14
- delete: () => import("./delete-C_H6NNKT.mjs").then((mod) => mod.default),
15
- "delete-table": () => import("./delete-table-B-UwOkQ8.mjs").then((mod) => mod.default),
16
- run: () => import("./run-CBuzp0Oj.mjs").then((mod) => mod.default),
17
- cancel: () => import("./cancel-PLvMQNzN.mjs").then((mod) => mod.default),
18
- "get-run": () => import("./get-run-Dzu_f6Hi.mjs").then((mod) => mod.default),
19
- runs: () => import("./runs-C3t03bls.mjs").then((mod) => mod.default)
20
- }
21
- });
22
-
23
- //#endregion
24
- export { transform_default as default };
@@ -1,19 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/transform-job/index.ts
4
- var transform_job_default = defineCommand({
5
- meta: {
6
- name: "transform-job",
7
- description: "Manage Metabase transform jobs"
8
- },
9
- subCommands: {
10
- list: () => import("./list-CnFLhMYE.mjs").then((mod) => mod.default),
11
- get: () => import("./get-Cgdc7hCr.mjs").then((mod) => mod.default),
12
- create: () => import("./create-Di0_His2.mjs").then((mod) => mod.default),
13
- update: () => import("./update-BA0wgxkx.mjs").then((mod) => mod.default),
14
- delete: () => import("./delete-DnorVsnc.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { transform_job_default as default };