@metabase/cli 0.1.8 → 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 (207) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/README.md +26 -236
  3. package/dist/{add-collection-CwrbKmC1.mjs → add-collection-CoP-6FZR.mjs} +5 -5
  4. package/dist/add-collection-EPp89tcs.mjs +10 -0
  5. package/dist/{archive-DqUtqRut.mjs → archive-BY8nrgnq.mjs} +5 -6
  6. package/dist/{archive-BzvqQd34.mjs → archive-BeslLaal.mjs} +5 -6
  7. package/dist/{archive-BpKZsGAm.mjs → archive-Blt0TxxA.mjs} +6 -7
  8. package/dist/{archive-ZnnJc2iT.mjs → archive-BxwGVDpd.mjs} +6 -7
  9. package/dist/{archive-BAjGIzhn.mjs → archive-C17qIvFW.mjs} +6 -7
  10. package/dist/{archive-BO3DOWI4.mjs → archive-CPLXsrzD.mjs} +5 -6
  11. package/dist/auth-CCUDM9Sv.mjs +19 -0
  12. package/dist/{body-DDYKoyMt.mjs → body-2jl-YSxT.mjs} +2 -2
  13. package/dist/{branches-DjiGsjAz.mjs → branches-Vlu44J51.mjs} +5 -6
  14. package/dist/{cancel-BwtDQ2MR.mjs → cancel-D0aBPUhs.mjs} +4 -5
  15. package/dist/{cancel-task-uJp18RvR.mjs → cancel-task-DoL2bqs1.mjs} +5 -6
  16. package/dist/{render-0_GsapXa.mjs → capabilities-7L9GVMd_.mjs} +45 -4
  17. package/dist/{card-ezYiriML.mjs → card-DnIeMmUn.mjs} +18 -2
  18. package/dist/card-UwczcLjq.mjs +20 -0
  19. package/dist/{cards-z68PANDD.mjs → cards-6MTreYAo.mjs} +5 -6
  20. package/dist/cli.mjs +23 -34
  21. package/dist/{collection-Bcy8cWYH.mjs → collection-BPTlcFw5.mjs} +8 -2
  22. package/dist/collection-Cexywhlj.mjs +20 -0
  23. package/dist/collection-namespace-BdqQJb7j.mjs +12 -0
  24. package/dist/{create-4EAGYVyp.mjs → create-BWD8H6yw.mjs} +12 -10
  25. package/dist/{create-GVfCQU3B.mjs → create-BZRA7nPu.mjs} +7 -8
  26. package/dist/{create-7JOWFxqu.mjs → create-BsOdn1Q1.mjs} +10 -11
  27. package/dist/{create-CQ4Vg4Ge.mjs → create-C_Z3IDrW.mjs} +9 -10
  28. package/dist/{create-Dd_Gyg_F.mjs → create-DNYFXAsy.mjs} +7 -8
  29. package/dist/{create-BzK59YlR.mjs → create-DcoF52Kx.mjs} +11 -12
  30. package/dist/{create-branch-CdWGiREu.mjs → create-branch-40Xm4DN7.mjs} +5 -6
  31. package/dist/create-dVmIemXi.mjs +52 -0
  32. package/dist/{create-DHWfmO2L.mjs → create-k59K2qf1.mjs} +9 -10
  33. package/dist/{current-task-nPs-iCLi.mjs → current-task-BN_XEFSX.mjs} +5 -6
  34. package/dist/dashboard-B_CuVbMX.mjs +21 -0
  35. package/dist/{database-BXiue1in.mjs → database-Dsv4QBs0.mjs} +20 -10
  36. package/dist/db-DULi5MOr.mjs +22 -0
  37. package/dist/{delete-Do1agSiL.mjs → delete-DEFgs5LE.mjs} +6 -7
  38. package/dist/{delete-runtime-uuYbd4k2.mjs → delete-runtime-DVb-Pkzp.mjs} +2 -2
  39. package/dist/{delete-CJqLgr6w.mjs → delete-tPjicYO4.mjs} +6 -7
  40. package/dist/{delete-table-ZiJDpMFT.mjs → delete-table-CDj19Qn6.mjs} +6 -7
  41. package/dist/{dirty-BnTG7w7v.mjs → dirty-DGCa6W1F.mjs} +5 -6
  42. package/dist/{eid-CwQ_smOD.mjs → eid-3v5MAKNA.mjs} +6 -7
  43. package/dist/{error-CTVL5CdB.mjs → error-BndUmcwS.mjs} +1 -1
  44. package/dist/{export-DR2cC4rL.mjs → export-BIZ-UR_M.mjs} +7 -8
  45. package/dist/field-CfrrLetM.mjs +18 -0
  46. package/dist/{fields-Ck31lDz9.mjs → fields-9lOrO8UH.mjs} +6 -7
  47. package/dist/{get-BFJ3VBPa.mjs → get-6Cj360cH.mjs} +5 -6
  48. package/dist/{get-CyG_P55z.mjs → get-BIH72g0v.mjs} +6 -7
  49. package/dist/{get-CICzGFSW.mjs → get-BSJN5TwW.mjs} +6 -7
  50. package/dist/{get-DyArILlF.mjs → get-BYSj7tMP.mjs} +5 -6
  51. package/dist/{get-DauAF3sm.mjs → get-Bk81meka.mjs} +5 -6
  52. package/dist/{get-GWRprk7k.mjs → get-BpWjLkKT.mjs} +5 -7
  53. package/dist/{get-F338MOK-.mjs → get-BuM6QPjZ.mjs} +5 -6
  54. package/dist/{get-C71ypFQk.mjs → get-CHaIVT6Y.mjs} +5 -6
  55. package/dist/{get-pO0wiy1e.mjs → get-CRa-h69C.mjs} +5 -6
  56. package/dist/{get-BPOd0Rm8.mjs → get-DFe2WoJ2.mjs} +5 -6
  57. package/dist/{get-DxqzDKKK.mjs → get-DlGlnciR.mjs} +5 -6
  58. package/dist/{get-BNKsNCcx.mjs → get-LI2xsRoT.mjs} +5 -6
  59. package/dist/{get-run-DhM_PyVy.mjs → get-run-hCZaw8-h.mjs} +5 -6
  60. package/dist/{get-BZiu-u-9.mjs → get-w-WqpjKy.mjs} +7 -8
  61. package/dist/git-sync-BpRstrZo.mjs +28 -0
  62. package/dist/{has-remote-changes-Ca0exJmb.mjs → has-remote-changes-DcpW1_KX.mjs} +5 -6
  63. package/dist/{import-DjclIzGP.mjs → import-CTQT1atq.mjs} +7 -8
  64. package/dist/{is-dirty-Cke0a1ie.mjs → is-dirty-DGrmt1ss.mjs} +4 -4
  65. package/dist/is-dirty-DuWCgrz2.mjs +9 -0
  66. package/dist/{items-BSpapmCU.mjs → items-Kr0oN2V7.mjs} +7 -8
  67. package/dist/{list-CEE9yKNp.mjs → list-Bz2ej0Cl.mjs} +4 -5
  68. package/dist/{list-V5IuMr_5.mjs → list-CCtYVgPN.mjs} +4 -5
  69. package/dist/{list-Brt4oKO7.mjs → list-CLvlEVQo.mjs} +6 -7
  70. package/dist/{list-Br77Mw6U.mjs → list-Ccj8-vb5.mjs} +5 -6
  71. package/dist/{list-Fjjtpghb.mjs → list-Cj3v4Lgv.mjs} +6 -7
  72. package/dist/{list-bVlCwg8g.mjs → list-Cl_O4_U4.mjs} +4 -5
  73. package/dist/{list-BRXGDSMo.mjs → list-D2D5Mw1E.mjs} +5 -6
  74. package/dist/{list-DUyWON1F.mjs → list-DNmekF2B.mjs} +4 -5
  75. package/dist/{list-fIV-P6wP.mjs → list-DaESiI72.mjs} +4 -5
  76. package/dist/{list-DWWGcUTg.mjs → list-DzKKdfCI.mjs} +5 -7
  77. package/dist/{list-BI1PfPjn.mjs → list-jcgK0thu.mjs} +5 -6
  78. package/dist/{list-D1qhCQn0.mjs → list-tklIxo38.mjs} +6 -7
  79. package/dist/{list-DmO4ADQq.mjs → list-zRQsvrH6.mjs} +4 -5
  80. package/dist/{login-BJGhZLgZ.mjs → login-BMKBmgeQ.mjs} +9 -10
  81. package/dist/{logout-BAGLqtnV.mjs → logout-C5pod937.mjs} +4 -5
  82. package/dist/{manifest-BNh0Lw6p.mjs → manifest-Cmu--CG5.mjs} +1 -2
  83. package/dist/measure-BkwFsP44.mjs +19 -0
  84. package/dist/{metadata-B-GOcWqL.mjs → metadata-CG4VZ5NW.mjs} +6 -7
  85. package/dist/{metadata-DJAdsOoh.mjs → metadata-DIEbyQeS.mjs} +7 -8
  86. package/dist/{parse-id-D1LTTt9L.mjs → parse-id-Boqc4wn4.mjs} +1 -1
  87. package/dist/{path-D5kX-msX.mjs → path-ur3NsMFr.mjs} +4 -6
  88. package/dist/{poll-DxpnK1wW.mjs → poll-BMjCkDaj.mjs} +1 -1
  89. package/dist/{poll-task-D8mG49IN.mjs → poll-task-CiRA0ER9.mjs} +2 -2
  90. package/dist/{preflight-Df_FqJ6o.mjs → preflight-CSqcIlbX.mjs} +3 -3
  91. package/dist/{query-zWFRDH3T.mjs → query-B8JzsQ_I.mjs} +7 -8
  92. package/dist/{query-OIuumiXN.mjs → query-CG0rEMS-.mjs} +11 -12
  93. package/dist/{query-result-ABPLz6I4.mjs → query-result-B4kTRid7.mjs} +1 -1
  94. package/dist/{remove-collection-BxmiXWKz.mjs → remove-collection-Clwz3EHQ.mjs} +7 -8
  95. package/dist/{rescan-values-M7g81KIl.mjs → rescan-values-DuHBnFjK.mjs} +8 -11
  96. package/dist/run-JXRivkfH.mjs +136 -0
  97. package/dist/{runs-CqfJIuh_.mjs → runs-FxgbXvax.mjs} +6 -7
  98. package/dist/{runtime-B40L_bj8.mjs → runtime-Ck8KKQe-.mjs} +11 -78
  99. package/dist/{schema-tables-CjBRF0_0.mjs → schema-tables-izDPI4f5.mjs} +6 -7
  100. package/dist/{schemas-GIIbek2O.mjs → schemas-CyzplnXl.mjs} +4 -5
  101. package/dist/{search-h78uOYec.mjs → search-BeuoOEQV.mjs} +4 -5
  102. package/dist/segment-ChYmSM0p.mjs +19 -0
  103. package/dist/{set-BRDxcLcQ.mjs → set-ClzB_5Jk.mjs} +7 -8
  104. package/dist/{setting-mKzZJpQY.mjs → setting-CBJVEx7_.mjs} +3 -3
  105. package/dist/{setup-WTIT2WbM.mjs → setup-vKXEUMM7.mjs} +6 -7
  106. package/dist/skills-1Z5Wj7Kp.mjs +18 -0
  107. package/dist/{skills-BkregMyb.mjs → skills-BDPVoBWU.mjs} +33 -2
  108. package/dist/snippet-De70ayL1.mjs +19 -0
  109. package/dist/{stash-DxoAJzcK.mjs → stash-DLtVf4_D.mjs} +7 -8
  110. package/dist/{status-B1dc3bbQ.mjs → status-AnPzI1f7.mjs} +4 -5
  111. package/dist/{status-D0Ukfodl.mjs → status-DHFYn9kO.mjs} +6 -7
  112. package/dist/{summary-3qOMUcEX.mjs → summary-DDed1LOz.mjs} +5 -6
  113. package/dist/sync-schema-BGQVq2JA.mjs +55 -0
  114. package/dist/table-C_bP2ao-.mjs +19 -0
  115. package/dist/{table-qDD2kApF.mjs → table-CkWja2UH.mjs} +1 -1
  116. package/dist/transform-B4RZfm6A.mjs +24 -0
  117. package/dist/{transform-BKahefz_.mjs → transform-DyWCoiO-.mjs} +1 -0
  118. package/dist/transform-job-C4pZcrIF.mjs +19 -0
  119. package/dist/{tree-DsnIPFyE.mjs → tree-BlYgJOn9.mjs} +4 -5
  120. package/dist/{update-Baya6OkO.mjs → update-B0z-2zqC.mjs} +12 -13
  121. package/dist/{update-BEtl9LpG.mjs → update-BHtliIr_.mjs} +8 -9
  122. package/dist/{update-CLsqoEJ8.mjs → update-CdfAogO2.mjs} +8 -9
  123. package/dist/{update-DPouQi4U.mjs → update-CgOPxKXK.mjs} +13 -11
  124. package/dist/{update-UaPqSfPN.mjs → update-CilTW98H.mjs} +10 -11
  125. package/dist/{update-DWn-nLPo.mjs → update-CoVvsU-I.mjs} +8 -9
  126. package/dist/{update-CZEd_Eej.mjs → update-DBN7yfAk.mjs} +9 -10
  127. package/dist/{update-BRLcnSwK.mjs → update-DqSG5_Ie.mjs} +10 -11
  128. package/dist/{update-BsgHRoZ8.mjs → update-DykqQLfo.mjs} +11 -12
  129. package/dist/{update-dashcard-DK9X91ha.mjs → update-dashcard-DZ8oV8up.mjs} +8 -9
  130. package/dist/{upgrade-UqdvTikR.mjs → upgrade-B8sEEQdQ.mjs} +34 -7
  131. package/dist/{uuid-BWCaWG4O.mjs → uuid-lLVnEoBN.mjs} +3 -4
  132. package/dist/{validate-dPEOnOf8.mjs → validate-B62TRDGV.mjs} +1 -1
  133. package/dist/{validate-query-CYvOP8Ld.mjs → validate-query-BpiN1CFu.mjs} +2 -2
  134. package/dist/{values-D_wycrcr.mjs → values-oD72EtRq.mjs} +5 -6
  135. package/dist/{verify-D7hb6VMy.mjs → verify-Bg6F0oFN.mjs} +1 -1
  136. package/dist/{wait-B5IpNFCG.mjs → wait-BtzuqQC3.mjs} +6 -7
  137. package/dist/{wait-flags-CNIeSq0_.mjs → wait-flags-DyFfZeav.mjs} +2 -2
  138. package/package.json +1 -1
  139. package/skill-data/core/SKILL.md +19 -32
  140. package/skill-data/git-sync/SKILL.md +8 -63
  141. package/skill-data/mbql/SKILL.md +95 -28
  142. package/skill-data/mbql/references/operators.md +13 -13
  143. package/skill-data/transform/SKILL.md +18 -7
  144. package/skills/metabase-cli/SKILL.md +1 -1
  145. package/dist/add-collection-DxtuNxeP.mjs +0 -11
  146. package/dist/auth-B9B4pUaH.mjs +0 -19
  147. package/dist/capabilities-7e9MgquN.mjs +0 -29
  148. package/dist/card-D54unw6r.mjs +0 -20
  149. package/dist/collection-B5kIKRTL.mjs +0 -20
  150. package/dist/create-6XE7GYxk.mjs +0 -45
  151. package/dist/create-C8gA-XP2.mjs +0 -54
  152. package/dist/credentials-CFA9iGZG.mjs +0 -88
  153. package/dist/dashboard-lw6IFfOs.mjs +0 -21
  154. package/dist/database-BPT6BrmF.mjs +0 -17
  155. package/dist/db-CBCj8sBg.mjs +0 -22
  156. package/dist/delete-CiV6f69N.mjs +0 -104
  157. package/dist/deprovision-C-qEnh-P.mjs +0 -67
  158. package/dist/docker-B-QQWThD.mjs +0 -515
  159. package/dist/field-DJmQ2pul.mjs +0 -18
  160. package/dist/git-sync-rmjYOGFK.mjs +0 -28
  161. package/dist/is-dirty-DFGgGLDi.mjs +0 -10
  162. package/dist/license-j0tDQLKI.mjs +0 -17
  163. package/dist/list-evetBTcH.mjs +0 -36
  164. package/dist/logs-jx5b_YDk.mjs +0 -60
  165. package/dist/measure-BfgxqewH.mjs +0 -19
  166. package/dist/parse-schemas-DDK9nXuh.mjs +0 -12
  167. package/dist/process-CM7Uu5q_.mjs +0 -105
  168. package/dist/provision-BJd6zO1D.mjs +0 -83
  169. package/dist/ps-CpyHEvv7.mjs +0 -11
  170. package/dist/ps-dEqRGeB3.mjs +0 -80
  171. package/dist/remove-BNQ1c6hB.mjs +0 -64
  172. package/dist/run-DTsx8bLb.mjs +0 -96
  173. package/dist/segment-CoElN2b-.mjs +0 -19
  174. package/dist/set-Dclba9xF.mjs +0 -68
  175. package/dist/skills-tMYd5d9v.mjs +0 -18
  176. package/dist/snippet-B84H3tfp.mjs +0 -19
  177. package/dist/start-B7ByBicB.mjs +0 -414
  178. package/dist/status-DAzD1Cn_.mjs +0 -34
  179. package/dist/stop-Cvexagxh.mjs +0 -87
  180. package/dist/sync-schema-CrmVX1cy.mjs +0 -44
  181. package/dist/table-B0fRQv91.mjs +0 -19
  182. package/dist/transform-K_kp6Rdm.mjs +0 -24
  183. package/dist/transform-job-CuNN8zgv.mjs +0 -19
  184. package/dist/update-hiJdbbsb.mjs +0 -78
  185. package/dist/url-LMJZRDv4.mjs +0 -56
  186. package/dist/wait-DHjXk3jD.mjs +0 -19
  187. package/dist/workspace-Bt8n3ojY.mjs +0 -25
  188. package/dist/workspace-D8HtUN0y.mjs +0 -72
  189. package/dist/workspace-credentials-8CBMQJFz.mjs +0 -100
  190. package/dist/yaml-Gv6wRFMF.mjs +0 -43
  191. package/skill-data/workspace/SKILL.md +0 -390
  192. /package/dist/{body-flags-D7q87Btw.mjs → body-flags-D78h_-Ua.mjs} +0 -0
  193. /package/dist/{dashboard-B4bn3z6t.mjs → dashboard-FY5UzJ_Z.mjs} +0 -0
  194. /package/dist/{field-E0IBy4Uw.mjs → field-MGxpNQUH.mjs} +0 -0
  195. /package/dist/{input-cMSEqISy.mjs → input-xewHccej.mjs} +0 -0
  196. /package/dist/{key-vkNkH82H.mjs → key-C2XG394c.mjs} +0 -0
  197. /package/dist/{measure-Bt3InQsA.mjs → measure-ClESGxIb.mjs} +0 -0
  198. /package/dist/{paginate-BexjkjbY.mjs → paginate-Dfm9eO9A.mjs} +0 -0
  199. /package/dist/{parse-enum-CrEWOhuY.mjs → parse-enum-Dr7ACrTR.mjs} +0 -0
  200. /package/dist/{parse-ref-DKag6a6I.mjs → parse-ref-BiETXmvm.mjs} +0 -0
  201. /package/dist/{prompt-CFKoys7k.mjs → prompt-u4WhE4T5.mjs} +0 -0
  202. /package/dist/{render-khznBlla.mjs → render-BQHJhSP1.mjs} +0 -0
  203. /package/dist/{revision-message-flag-DY29-cgz.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
  204. /package/dist/{segment-DhBmcr_E.mjs → segment-Be2v4ilr.mjs} +0 -0
  205. /package/dist/{setting-BzCng1Ub.mjs → setting-oL97SNeO.mjs} +0 -0
  206. /package/dist/{snippet-bi_0XbNT.mjs → snippet-xh42tYly.mjs} +0 -0
  207. /package/dist/{transform-job-DjhoJbiV.mjs → transform-job-DpDGoqQt.mjs} +0 -0
@@ -1,7 +1,25 @@
1
1
  import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
- import { isPlainObject, itemOversizeMessage, listTruncationNotice, warn } from "./capabilities-7e9MgquN.mjs";
2
+ import { z } from "zod";
3
3
  import Table from "cli-table3";
4
4
 
5
+ //#region src/runtime/predicates.ts
6
+ function isPlainObject(value) {
7
+ return typeof value === "object" && value !== null && !Array.isArray(value);
8
+ }
9
+
10
+ //#endregion
11
+ //#region src/output/notice.ts
12
+ function warn(message) {
13
+ process.stderr.write(message + "\n");
14
+ }
15
+ function listTruncationNotice(bytes) {
16
+ return `… cut at ${bytes} bytes; rerun with --max-bytes 0`;
17
+ }
18
+ function itemOversizeMessage(bytes, maxBytes) {
19
+ return `output is ${bytes} bytes, over the ${maxBytes}-byte --max-bytes cap; narrow with --fields, or pass --max-bytes 0 to disable`;
20
+ }
21
+
22
+ //#endregion
5
23
  //#region src/output/cap.ts
6
24
  function capListEnvelope(envelope, maxBytes) {
7
25
  if (maxBytes <= 0) return envelope;
@@ -160,7 +178,7 @@ function renderList(envelope, view, opts) {
160
178
  if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
161
179
  }
162
180
  function renderProjectedTable(envelope, view, fields, maxBytes) {
163
- const projectedItems = envelope.data.map((item) => applyProjection(item, view, false, fields));
181
+ const projectedItems = projectListItems(envelope.data, view, false, fields);
164
182
  const capped = capListEnvelope({
165
183
  ...envelope,
166
184
  data: projectedItems
@@ -169,8 +187,23 @@ function renderProjectedTable(envelope, view, fields, maxBytes) {
169
187
  process.stdout.write(renderRows(fields, rows) + "\n");
170
188
  if (capped.truncated !== void 0) warn(listTruncationNotice(capped.truncated.bytes));
171
189
  }
190
+ function projectListItems(items, view, full, fields) {
191
+ try {
192
+ return items.map((item) => applyProjection(item, view, full, fields));
193
+ } catch (error) {
194
+ throw enrichListFieldPathError(error, fields);
195
+ }
196
+ }
197
+ function enrichListFieldPathError(error, fields) {
198
+ if (fields === void 0 || !(error instanceof ConfigError) || !error.message.startsWith("unknown field path")) return error;
199
+ const prefix = "data.";
200
+ const culprit = fields.find((field) => field === "data" || field.startsWith(prefix));
201
+ if (culprit === void 0) return error;
202
+ const suggestion = culprit.startsWith(prefix) ? culprit.slice(prefix.length) : "<field>";
203
+ return new ConfigError(`${error.message} — on list commands --fields paths are relative to each item in \`data\`, not the envelope. Drop the \`data.\` prefix (e.g. use \`${suggestion}\` instead of \`${culprit}\`).`);
204
+ }
172
205
  function renderJsonEnvelope(envelope, view, opts) {
173
- const projectedItems = envelope.data.map((item) => applyProjection(item, view, opts.full, opts.fields));
206
+ const projectedItems = projectListItems(envelope.data, view, opts.full, opts.fields);
174
207
  const projectedEnvelope = {
175
208
  ...envelope,
176
209
  data: projectedItems
@@ -207,4 +240,12 @@ function assertItemWithinMaxBytes(body, maxBytes) {
207
240
  }
208
241
 
209
242
  //#endregion
210
- export { formatScalar, renderItem, renderList, renderRows, renderSummary, writeJson, writeText };
243
+ //#region src/runtime/capabilities.ts
244
+ const Capabilities = z.object({
245
+ minVersion: z.number(),
246
+ tokenFeature: z.string().optional()
247
+ });
248
+ const BASELINE_CAPABILITIES = Object.freeze({ minVersion: 58 });
249
+
250
+ //#endregion
251
+ export { BASELINE_CAPABILITIES, Capabilities, formatScalar, isPlainObject, renderItem, renderList, renderRows, renderSummary, warn, writeJson, writeText };
@@ -1,4 +1,4 @@
1
- import { FieldBaseType, FieldSemanticType } from "./field-E0IBy4Uw.mjs";
1
+ import { FieldBaseType, FieldSemanticType } from "./field-MGxpNQUH.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/domain/card.ts
@@ -120,8 +120,24 @@ const CardQueryResult = z.object({
120
120
  error: z.string().nullable().optional(),
121
121
  error_type: z.string().nullable().optional()
122
122
  }).loose();
123
+ const QueryColumnCompact = QueryColumn.pick({
124
+ name: true,
125
+ display_name: true,
126
+ base_type: true,
127
+ semantic_type: true
128
+ }).strip();
129
+ const CardQueryDataCompact = z.object({
130
+ rows: z.array(z.unknown()),
131
+ cols: z.array(QueryColumnCompact)
132
+ }).strip();
133
+ const CardQueryResultCompact = CardQueryResult.pick({
134
+ status: true,
135
+ row_count: true,
136
+ error: true,
137
+ error_type: true
138
+ }).strip().extend({ data: CardQueryDataCompact.optional() });
123
139
  const cardQueryView = {
124
- compactPick: CardQueryResult,
140
+ compactPick: CardQueryResultCompact,
125
141
  tableColumns: [{
126
142
  key: "status",
127
143
  label: "Status"
@@ -0,0 +1,20 @@
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-Cj3v4Lgv.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-BIH72g0v.mjs").then((mod) => mod.default),
12
+ query: () => import("./query-B8JzsQ_I.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-BsOdn1Q1.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-DykqQLfo.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-BxwGVDpd.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { card_default as default };
@@ -1,10 +1,9 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderList } from "./render-0_GsapXa.mjs";
6
- import { parseId } from "./parse-id-D1LTTt9L.mjs";
7
- import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-B4bn3z6t.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderList } from "./capabilities-7L9GVMd_.mjs";
5
+ import { parseId } from "./parse-id-Boqc4wn4.mjs";
6
+ import { DashboardDetail, DashcardCompact, dashcardView } from "./dashboard-FY5UzJ_Z.mjs";
8
7
 
9
8
  //#region src/commands/dashboard/cards.ts
10
9
  const DashcardListEnvelope = listEnvelopeSchema(DashcardCompact);
package/dist/cli.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { ConfigError, flagConsumesValue, getMetabaseAugment, normalizeFlag, resolveCitty, toAliasArray } from "./command-augment-BH9qgQ5u.mjs";
3
- import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-CTVL5CdB.mjs";
3
+ import { connectionFlags, outputFlags, package_default, profileFlag, reportError } from "./error-BndUmcwS.mjs";
4
4
  import { defineCommand, renderUsage, runMain } from "citty";
5
5
 
6
6
  //#region src/commands/global-flags.ts
@@ -58,29 +58,28 @@ const main = defineCommand({
58
58
  description: package_default.description
59
59
  },
60
60
  subCommands: {
61
- auth: () => import("./auth-B9B4pUaH.mjs").then((mod) => mod.default),
62
- db: () => import("./db-CBCj8sBg.mjs").then((mod) => mod.default),
63
- table: () => import("./table-B0fRQv91.mjs").then((mod) => mod.default),
64
- field: () => import("./field-DJmQ2pul.mjs").then((mod) => mod.default),
65
- card: () => import("./card-D54unw6r.mjs").then((mod) => mod.default),
66
- dashboard: () => import("./dashboard-lw6IFfOs.mjs").then((mod) => mod.default),
67
- collection: () => import("./collection-B5kIKRTL.mjs").then((mod) => mod.default),
68
- transform: () => import("./transform-K_kp6Rdm.mjs").then((mod) => mod.default),
69
- "transform-job": () => import("./transform-job-CuNN8zgv.mjs").then((mod) => mod.default),
70
- setting: () => import("./setting-mKzZJpQY.mjs").then((mod) => mod.default),
71
- search: () => import("./search-h78uOYec.mjs").then((mod) => mod.default),
72
- "git-sync": () => import("./git-sync-rmjYOGFK.mjs").then((mod) => mod.default),
73
- workspace: () => import("./workspace-Bt8n3ojY.mjs").then((mod) => mod.default),
74
- setup: () => import("./setup-WTIT2WbM.mjs").then((mod) => mod.default),
75
- snippet: () => import("./snippet-B84H3tfp.mjs").then((mod) => mod.default),
76
- segment: () => import("./segment-CoElN2b-.mjs").then((mod) => mod.default),
77
- measure: () => import("./measure-BfgxqewH.mjs").then((mod) => mod.default),
78
- eid: () => import("./eid-CwQ_smOD.mjs").then((mod) => mod.default),
79
- query: () => import("./query-OIuumiXN.mjs").then((mod) => mod.default),
80
- uuid: () => import("./uuid-BWCaWG4O.mjs").then((mod) => mod.default),
81
- upgrade: () => import("./upgrade-UqdvTikR.mjs").then((mod) => mod.default),
82
- skills: () => import("./skills-tMYd5d9v.mjs").then((mod) => mod.default),
83
- __manifest: () => import("./manifest-BNh0Lw6p.mjs").then((mod) => mod.createManifestCommand(main))
61
+ auth: () => import("./auth-CCUDM9Sv.mjs").then((mod) => mod.default),
62
+ db: () => import("./db-DULi5MOr.mjs").then((mod) => mod.default),
63
+ table: () => import("./table-C_bP2ao-.mjs").then((mod) => mod.default),
64
+ field: () => import("./field-CfrrLetM.mjs").then((mod) => mod.default),
65
+ card: () => import("./card-UwczcLjq.mjs").then((mod) => mod.default),
66
+ dashboard: () => import("./dashboard-B_CuVbMX.mjs").then((mod) => mod.default),
67
+ collection: () => import("./collection-Cexywhlj.mjs").then((mod) => mod.default),
68
+ transform: () => import("./transform-B4RZfm6A.mjs").then((mod) => mod.default),
69
+ "transform-job": () => import("./transform-job-C4pZcrIF.mjs").then((mod) => mod.default),
70
+ setting: () => import("./setting-CBJVEx7_.mjs").then((mod) => mod.default),
71
+ search: () => import("./search-BeuoOEQV.mjs").then((mod) => mod.default),
72
+ "git-sync": () => import("./git-sync-BpRstrZo.mjs").then((mod) => mod.default),
73
+ setup: () => import("./setup-vKXEUMM7.mjs").then((mod) => mod.default),
74
+ snippet: () => import("./snippet-De70ayL1.mjs").then((mod) => mod.default),
75
+ segment: () => import("./segment-ChYmSM0p.mjs").then((mod) => mod.default),
76
+ measure: () => import("./measure-BkwFsP44.mjs").then((mod) => mod.default),
77
+ eid: () => import("./eid-3v5MAKNA.mjs").then((mod) => mod.default),
78
+ query: () => import("./query-CG0rEMS-.mjs").then((mod) => mod.default),
79
+ uuid: () => import("./uuid-lLVnEoBN.mjs").then((mod) => mod.default),
80
+ upgrade: () => import("./upgrade-B8sEEQdQ.mjs").then((mod) => mod.default),
81
+ skills: () => import("./skills-1Z5Wj7Kp.mjs").then((mod) => mod.default),
82
+ __manifest: () => import("./manifest-Cmu--CG5.mjs").then((mod) => mod.createManifestCommand(main))
84
83
  }
85
84
  });
86
85
  var main_default = main;
@@ -97,7 +96,6 @@ const OPTIONS_HEADER = "OPTIONS";
97
96
  const LINE_PREFIX = " ";
98
97
  const COLUMN_GAP = " ";
99
98
  const COMMAND_PLACEHOLDER = "<command> [options]";
100
- const MANIFEST_COMMAND = "__manifest";
101
99
  const CLI_NAME = "mb";
102
100
  const HELP_FLAG_SPEC = "-h, --help";
103
101
  const HELP_FLAG_DESCRIPTION = "Show help for this command";
@@ -111,7 +109,6 @@ async function showUsage(cmd, parent, breadcrumb) {
111
109
  const cittyName = parentMeta?.name ? `${parentMeta.name} ${cmdName}` : cmdName;
112
110
  const hasSubCommands = Boolean(cmd.subCommands);
113
111
  const isRoot = parent === void 0 && hasSubCommands;
114
- const isManifest = cmdName === MANIFEST_COMMAND;
115
112
  const augment = getMetabaseAugment(cmd);
116
113
  const details = augment?.details ?? null;
117
114
  const examples = augment?.examples ?? [];
@@ -124,7 +121,6 @@ async function showUsage(cmd, parent, breadcrumb) {
124
121
  const sections = [body];
125
122
  if (examples.length > 0) sections.push(renderExamples(examples));
126
123
  if (isRoot) sections.push(GETTING_STARTED_HINT);
127
- if (!isManifest) sections.push(renderSchemaHint());
128
124
  process.stdout.write(sections.join("\n\n") + "\n");
129
125
  }
130
126
  function transformBody(lines, rewrite) {
@@ -193,13 +189,6 @@ function renderExamples(examples) {
193
189
  ...examples.map((example) => `${LINE_PREFIX}${example}`)
194
190
  ].join("\n");
195
191
  }
196
- function renderSchemaHint() {
197
- return [
198
- "SCHEMA",
199
- "",
200
- `${LINE_PREFIX}${CLI_NAME} ${MANIFEST_COMMAND} # machine-readable command manifest (flags, output, examples)`
201
- ].join("\n");
202
- }
203
192
  async function walkCommandPath(root, rawArgs) {
204
193
  const rootMeta = await resolveCitty(root.meta);
205
194
  const segments = rootMeta?.name === void 0 ? [] : [rootMeta.name];
@@ -11,7 +11,13 @@ const CollectionType = z.enum([
11
11
  "library-metrics",
12
12
  "tenant-specific-root-collection"
13
13
  ]);
14
- const CollectionNamespace = z.string().min(1);
14
+ const CollectionNamespace = z.enum([
15
+ "transforms",
16
+ "snippets",
17
+ "analytics",
18
+ "shared-tenant-collection",
19
+ "tenant-specific"
20
+ ]);
15
21
  const COLLECTION_ITEM_FILTER_MODELS = [
16
22
  "card",
17
23
  "dataset",
@@ -160,4 +166,4 @@ const CollectionCreateInput = z.object({
160
166
  }).loose();
161
167
 
162
168
  //#endregion
163
- export { COLLECTION_ITEM_FILTER_MODELS, COLLECTION_PINNED_STATES, Collection, CollectionCompact, CollectionCreateInput, CollectionItem, CollectionItemCompact, CollectionItemFilterModel, CollectionPinnedState, CollectionTreeNode, collectionItemView, collectionView };
169
+ export { COLLECTION_ITEM_FILTER_MODELS, COLLECTION_PINNED_STATES, Collection, CollectionCompact, CollectionCreateInput, CollectionItem, CollectionItemCompact, CollectionItemFilterModel, CollectionNamespace, CollectionPinnedState, CollectionTreeNode, collectionItemView, collectionView };
@@ -0,0 +1,20 @@
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-jcgK0thu.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-Bk81meka.mjs").then((mod) => mod.default),
12
+ items: () => import("./items-Kr0oN2V7.mjs").then((mod) => mod.default),
13
+ tree: () => import("./tree-BlYgJOn9.mjs").then((mod) => mod.default),
14
+ create: () => import("./create-dVmIemXi.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-BeslLaal.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { collection_default as default };
@@ -0,0 +1,12 @@
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { HttpError } from "./runtime-Ck8KKQe-.mjs";
3
+
4
+ //#region src/commands/transform/collection-namespace.ts
5
+ const TRANSFORMS_NAMESPACE_HINT = "transforms can only be filed in a :transforms-namespace collection. Create one with `mb collection create --body '{\"name\":\"…\"}' --namespace transforms` and pass its id as collection_id, or omit collection_id to leave the transform uncollected.";
6
+ function enrichTransformCollectionError(error) {
7
+ if (error instanceof HttpError && error.status === 400 && /:transforms namespace/i.test(error.message)) return new ConfigError(`${error.message} — ${TRANSFORMS_NAMESPACE_HINT}`);
8
+ return error;
9
+ }
10
+
11
+ //#endregion
12
+ export { enrichTransformCollectionError };
@@ -1,14 +1,14 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import { readBody } from "./body-DDYKoyMt.mjs";
8
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
- import "./validate-dPEOnOf8.mjs";
10
- import { TRANSFORM_SOURCE_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
- import { Transform, TransformCreateInput, transformView } from "./transform-BKahefz_.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import "./validate-B62TRDGV.mjs";
9
+ import { TRANSFORM_SOURCE_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-BpiN1CFu.mjs";
10
+ import { Transform, TransformCreateInput, transformView } from "./transform-DyWCoiO-.mjs";
11
+ import { enrichTransformCollectionError } from "./collection-namespace-BdqQJb7j.mjs";
12
12
 
13
13
  //#region src/commands/transform/create.ts
14
14
  var create_default = defineMetabaseCommand({
@@ -41,6 +41,8 @@ var create_default = defineMetabaseCommand({
41
41
  const created = await client.requestParsed(Transform, "/api/transform", {
42
42
  method: "POST",
43
43
  body
44
+ }).catch((error) => {
45
+ throw enrichTransformCollectionError(error);
44
46
  });
45
47
  renderSummary(created, transformView, `Created transform ${created.id} "${created.name}".`, ctx);
46
48
  }
@@ -1,12 +1,11 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import { readBody } from "./body-DDYKoyMt.mjs";
8
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
- import { Snippet, SnippetCreateInput, snippetView } from "./snippet-bi_0XbNT.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import { Snippet, SnippetCreateInput, snippetView } from "./snippet-xh42tYly.mjs";
10
9
 
11
10
  //#region src/commands/snippet/create.ts
12
11
  var create_default = defineMetabaseCommand({
@@ -1,15 +1,14 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import "./field-E0IBy4Uw.mjs";
8
- import { Card, CardCreateInput, cardView } from "./card-ezYiriML.mjs";
9
- import { readBody } from "./body-DDYKoyMt.mjs";
10
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
11
- import "./validate-dPEOnOf8.mjs";
12
- import { CARD_DATASET_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import "./field-MGxpNQUH.mjs";
7
+ import { Card, CardCreateInput, cardView } from "./card-DnIeMmUn.mjs";
8
+ import { readBody } from "./body-2jl-YSxT.mjs";
9
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
10
+ import "./validate-B62TRDGV.mjs";
11
+ import { CARD_DATASET_QUERY_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-BpiN1CFu.mjs";
13
12
 
14
13
  //#region src/commands/card/create.ts
15
14
  var create_default = defineMetabaseCommand({
@@ -1,14 +1,13 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import { readBody } from "./body-DDYKoyMt.mjs";
8
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
- import "./validate-dPEOnOf8.mjs";
10
- import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
- import { Segment, SegmentCreateInput, segmentView } from "./segment-DhBmcr_E.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import "./validate-B62TRDGV.mjs";
9
+ import { SEGMENT_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-BpiN1CFu.mjs";
10
+ import { Segment, SegmentCreateInput, segmentView } from "./segment-Be2v4ilr.mjs";
12
11
 
13
12
  //#region src/commands/segment/create.ts
14
13
  var create_default = defineMetabaseCommand({
@@ -1,12 +1,11 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import { readBody } from "./body-DDYKoyMt.mjs";
8
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
- import { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-DjhoJbiV.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import { TransformJob, TransformJobCreateInput, transformJobView } from "./transform-job-DpDGoqQt.mjs";
10
9
 
11
10
  //#region src/commands/transform-job/create.ts
12
11
  var create_default = defineMetabaseCommand({
@@ -1,16 +1,15 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import "./field-E0IBy4Uw.mjs";
8
- import "./card-ezYiriML.mjs";
9
- import { readBody } from "./body-DDYKoyMt.mjs";
10
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
11
- import "./validate-dPEOnOf8.mjs";
12
- import { Dashboard, DashboardCreateInput, DashboardDetail, dashboardView } from "./dashboard-B4bn3z6t.mjs";
13
- import { preflightDashcardCardReferences, wrapChainedDashboardWriteError } from "./preflight-Df_FqJ6o.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import "./field-MGxpNQUH.mjs";
7
+ import "./card-DnIeMmUn.mjs";
8
+ import { readBody } from "./body-2jl-YSxT.mjs";
9
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
10
+ import "./validate-B62TRDGV.mjs";
11
+ import { Dashboard, DashboardCreateInput, DashboardDetail, dashboardView } from "./dashboard-FY5UzJ_Z.mjs";
12
+ import { preflightDashcardCardReferences, wrapChainedDashboardWriteError } from "./preflight-CSqcIlbX.mjs";
14
13
 
15
14
  //#region src/commands/dashboard/create.ts
16
15
  var create_default = defineMetabaseCommand({
@@ -1,10 +1,9 @@
1
1
  import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import { REMOTE_SYNC_PATHS } from "./poll-task-D8mG49IN.mjs";
7
- import "./poll-DxpnK1wW.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./poll-BMjCkDaj.mjs";
6
+ import { REMOTE_SYNC_PATHS } from "./poll-task-CiRA0ER9.mjs";
8
7
  import { z } from "zod";
9
8
 
10
9
  //#region src/commands/git-sync/create-branch.ts
@@ -0,0 +1,52 @@
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import { parseEnumFlag } from "./parse-enum-Dr7ACrTR.mjs";
9
+ import { Collection, CollectionCreateInput, CollectionNamespace, collectionView } from "./collection-BPTlcFw5.mjs";
10
+
11
+ //#region src/commands/collection/create.ts
12
+ var create_default = defineMetabaseCommand({
13
+ meta: {
14
+ name: "create",
15
+ description: "Create a collection from a JSON spec"
16
+ },
17
+ details: "Body keys: `name` (required), `description`, `parent_id`, `authority_level`, `namespace`. Most collections use the default namespace (omit it). Pass `namespace: \"transforms\"` (or `--namespace transforms`) to create the kind of collection a transform's `collection_id` can point at — a regular collection is rejected there.",
18
+ capabilities: { minVersion: 58 },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ ...bodyInputFlags,
24
+ namespace: {
25
+ type: "string",
26
+ description: `Collection namespace: ${CollectionNamespace.options.join("|")} (omit for a normal collection)`
27
+ }
28
+ },
29
+ outputSchema: Collection,
30
+ examples: [
31
+ "cat collection.json | mb collection create",
32
+ "mb collection create --file collection.json",
33
+ "mb collection create --body '{\"name\":\"My Collection\",\"parent_id\":4}'",
34
+ "mb collection create --body '{\"name\":\"ETL\"}' --namespace transforms"
35
+ ],
36
+ async run({ args, ctx, getClient }) {
37
+ const body = await readBody({
38
+ flag: args.body,
39
+ file: args.file
40
+ }, CollectionCreateInput);
41
+ if (typeof args.namespace === "string" && args.namespace !== "") body.namespace = parseEnumFlag(args.namespace, CollectionNamespace, "namespace");
42
+ const client = await getClient();
43
+ const created = await client.requestParsed(Collection, "/api/collection", {
44
+ method: "POST",
45
+ body
46
+ });
47
+ renderSummary(created, collectionView, `Created collection ${created.id} "${created.name}".`, ctx);
48
+ }
49
+ });
50
+
51
+ //#endregion
52
+ export { create_default as default };
@@ -1,14 +1,13 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import "./input-cMSEqISy.mjs";
7
- import { readBody } from "./body-DDYKoyMt.mjs";
8
- import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
- import "./validate-dPEOnOf8.mjs";
10
- import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-CYvOP8Ld.mjs";
11
- import { Measure, MeasureCreateInput, measureView } from "./measure-Bt3InQsA.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./input-xewHccej.mjs";
6
+ import { readBody } from "./body-2jl-YSxT.mjs";
7
+ import { bodyInputFlags } from "./body-flags-D78h_-Ua.mjs";
8
+ import "./validate-B62TRDGV.mjs";
9
+ import { MEASURE_DEFINITION_LABELS, preflightMbql5Query, skipValidateFlag } from "./validate-query-BpiN1CFu.mjs";
10
+ import { Measure, MeasureCreateInput, measureView } from "./measure-ClESGxIb.mjs";
12
11
 
13
12
  //#region src/commands/measure/create.ts
14
13
  var create_default = defineMetabaseCommand({
@@ -1,10 +1,9 @@
1
1
  import "./command-augment-BH9qgQ5u.mjs";
2
- import { connectionFlags, outputFlags, profileFlag } from "./error-CTVL5CdB.mjs";
3
- import { defineMetabaseCommand } from "./runtime-B40L_bj8.mjs";
4
- import "./capabilities-7e9MgquN.mjs";
5
- import { renderSummary } from "./render-0_GsapXa.mjs";
6
- import { SyncTaskOrIdle, fetchCurrentTask, formatSyncTask, syncTaskIdleView, syncTaskView } from "./poll-task-D8mG49IN.mjs";
7
- import "./poll-DxpnK1wW.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-BndUmcwS.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Ck8KKQe-.mjs";
4
+ import { renderSummary } from "./capabilities-7L9GVMd_.mjs";
5
+ import "./poll-BMjCkDaj.mjs";
6
+ import { SyncTaskOrIdle, fetchCurrentTask, formatSyncTask, syncTaskIdleView, syncTaskView } from "./poll-task-CiRA0ER9.mjs";
8
7
 
9
8
  //#region src/commands/git-sync/current-task.ts
10
9
  const CurrentTaskResult = SyncTaskOrIdle;
@@ -0,0 +1,21 @@
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-Ccj8-vb5.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-LI2xsRoT.mjs").then((mod) => mod.default),
12
+ cards: () => import("./cards-6MTreYAo.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-DcoF52Kx.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-B0z-2zqC.mjs").then((mod) => mod.default),
15
+ "update-dashcard": () => import("./update-dashcard-DZ8oV8up.mjs").then((mod) => mod.default),
16
+ archive: () => import("./archive-BY8nrgnq.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { dashboard_default as default };