@metabase/cli 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.claude-plugin/marketplace.json +19 -0
  2. package/README.md +147 -101
  3. package/dist/{add-collection-CffaBB-Y.mjs → add-collection-BU8r3r2M.mjs} +9 -4
  4. package/dist/add-collection-C0w6ACQF.mjs +11 -0
  5. package/dist/{archive-uJrslh9r.mjs → archive-BNinrUak.mjs} +9 -8
  6. package/dist/{archive-GdGm7l2e.mjs → archive-C1enZgKV.mjs} +8 -7
  7. package/dist/archive-CDA0KxL8.mjs +40 -0
  8. package/dist/{archive-BAcEXbT9.mjs → archive-CRhiBpPJ.mjs} +9 -8
  9. package/dist/{archive-B_B3MQp0.mjs → archive-DMPS8Kih.mjs} +9 -8
  10. package/dist/archive-lWgqiFAt.mjs +40 -0
  11. package/dist/auth-CzXb_zB2.mjs +19 -0
  12. package/dist/{body-D6dHGjMT.mjs → body-DjdFxjpg.mjs} +4 -4
  13. package/dist/{branches-Bpe40fEd.mjs → branches-B1WRfG7-.mjs} +11 -7
  14. package/dist/{cancel-BWTY6oYI.mjs → cancel-Dl_Ho056.mjs} +7 -6
  15. package/dist/{cancel-task--BfiAXfS.mjs → cancel-task-CdigdCaO.mjs} +11 -7
  16. package/dist/capabilities-7e9MgquN.mjs +29 -0
  17. package/dist/card-DP4rfoOi.mjs +21 -0
  18. package/dist/{card-CQxvHeyP.mjs → card-DlCAaAPq.mjs} +1 -1
  19. package/dist/{cards-CVlFJxYh.mjs → cards-BGiJS675.mjs} +8 -7
  20. package/dist/cli.mjs +267 -44
  21. package/dist/collection-tY18ezvn.mjs +21 -0
  22. package/dist/{predicates-CGO17Q15.mjs → command-augment-BH9qgQ5u.mjs} +66 -14
  23. package/dist/create-BNiva__H.mjs +52 -0
  24. package/dist/{create-izE3EKCt.mjs → create-BTcpaop_.mjs} +9 -8
  25. package/dist/{create-BykvNpSA.mjs → create-BYlIju0b.mjs} +14 -12
  26. package/dist/{create-Bu-YhIDL.mjs → create-Be_0Vier.mjs} +10 -9
  27. package/dist/{create-DYoc9IXW.mjs → create-CHF313Qg.mjs} +13 -9
  28. package/dist/{create-Cz3_Wxdt.mjs → create-CwGtmwqm.mjs} +14 -12
  29. package/dist/{create-DP8RrLDi.mjs → create-CzzrbL0u.mjs} +10 -9
  30. package/dist/{create-BzElku2l.mjs → create-DGth_uOp.mjs} +14 -12
  31. package/dist/{create-branch-B49UQyCK.mjs → create-branch-DKZkoQ64.mjs} +11 -7
  32. package/dist/{create-DQVdMT2Y.mjs → create-dhxPxfF3.mjs} +16 -14
  33. package/dist/{credentials-xKSoP6eh.mjs → credentials-dzeq7ckm.mjs} +12 -10
  34. package/dist/{current-task-DweHmjlk.mjs → current-task-CCRzm0_7.mjs} +11 -7
  35. package/dist/dashboard-ChM_Tu0l.mjs +22 -0
  36. package/dist/{dashboard-CnMD04PQ.mjs → dashboard-FY5UzJ_Z.mjs} +2 -1
  37. package/dist/{database-BNlvldUL.mjs → database-CIXwHKjK.mjs} +3 -3
  38. package/dist/{database-vvig8k4x.mjs → database-lH-B3G1I.mjs} +1 -1
  39. package/dist/db-DrQn_i3W.mjs +22 -0
  40. package/dist/{remove-B3ZEqBF7.mjs → delete-CM3jnAeQ.mjs} +21 -20
  41. package/dist/{delete-DojHmKeM.mjs → delete-Dimc-2y8.mjs} +9 -8
  42. package/dist/{delete-DIz9Tgz5.mjs → delete-ZjnV35OJ.mjs} +9 -8
  43. package/dist/{delete-runtime-BkAdygbs.mjs → delete-runtime-B6RQo_pw.mjs} +5 -3
  44. package/dist/{delete-table-DjN8E3sd.mjs → delete-table-agZJpivt.mjs} +9 -8
  45. package/dist/{deprovision-_HDcBApz.mjs → deprovision-CwxcIT3k.mjs} +16 -12
  46. package/dist/{dirty-Co8V0SZ3.mjs → dirty-D4d0yHqj.mjs} +11 -7
  47. package/dist/{docker-D9sC_37H.mjs → docker-Oq80q3tu.mjs} +4 -4
  48. package/dist/{translate-CG_Ka0dO.mjs → eid-BXzaQh0o.mjs} +37 -22
  49. package/dist/error-C9S6PN3-.mjs +190 -0
  50. package/dist/{export-CVMFxoo1.mjs → export-DTygoXBP.mjs} +17 -16
  51. package/dist/field-Z6Pcxf4n.mjs +19 -0
  52. package/dist/{fields-Coha7vKv.mjs → fields-CoQi99gv.mjs} +9 -8
  53. package/dist/{get-DXv2FkA7.mjs → get-Bzys7vgp.mjs} +8 -7
  54. package/dist/{get-bNtA7vWe.mjs → get-C2p383Qc.mjs} +8 -7
  55. package/dist/{get-Br6WayZv.mjs → get-C3HdQ91a.mjs} +8 -7
  56. package/dist/{get-BOtKerj8.mjs → get-CP3Z3NiH.mjs} +9 -8
  57. package/dist/{get-BSKoL8ek.mjs → get-C_w1kvN3.mjs} +9 -8
  58. package/dist/{get-Be6EFh94.mjs → get-CzuzeKSe.mjs} +10 -9
  59. package/dist/{get-BVTz9B_H.mjs → get-D3SbEQSE.mjs} +10 -9
  60. package/dist/get-DFxZXaKz.mjs +79 -0
  61. package/dist/{get-DZrV7v9d.mjs → get-DQTZG_NP.mjs} +8 -7
  62. package/dist/{get-CJwzbVjc.mjs → get-DSWFjy7O.mjs} +8 -7
  63. package/dist/{get-BxzCKVC6.mjs → get-Ddr0XLh7.mjs} +8 -7
  64. package/dist/{get-AOvWo48B.mjs → get-Hc93A0Yz.mjs} +8 -7
  65. package/dist/{get-C_6K7MSW.mjs → get-lb7q3JYs.mjs} +7 -6
  66. package/dist/get-run-B7sKdaDU.mjs +38 -0
  67. package/dist/git-sync-CiGAad76.mjs +28 -0
  68. package/dist/{has-remote-changes-D6xgsuUr.mjs → has-remote-changes-BY10-nnE.mjs} +11 -7
  69. package/dist/{import-Dv0ORSNw.mjs → import-CiMz4Wz-.mjs} +17 -16
  70. package/dist/{input-BQ-BZA8h.mjs → input-cMSEqISy.mjs} +7 -4
  71. package/dist/{is-dirty-WNi8a6O9.mjs → is-dirty-BZOaryxT.mjs} +9 -4
  72. package/dist/is-dirty-Ume4oV0j.mjs +10 -0
  73. package/dist/{items-CTcAMknV.mjs → items-BWfvkY-J.mjs} +9 -8
  74. package/dist/key-C2XG394c.mjs +17 -0
  75. package/dist/license-Dxarh-gG.mjs +17 -0
  76. package/dist/{list-FXuSCYpa.mjs → list--OYdUTtu.mjs} +7 -6
  77. package/dist/{list-8oVMvlLV.mjs → list-2j7GsXsl.mjs} +7 -6
  78. package/dist/{list-xQmtQPSl.mjs → list-BI4zr8LW.mjs} +10 -8
  79. package/dist/{list-DhWG5jiW.mjs → list-Brgh-Z2v.mjs} +8 -6
  80. package/dist/{list-DSs0Q78i.mjs → list-C3hfovHv.mjs} +7 -6
  81. package/dist/{list-DvUjMQze.mjs → list-CL7eCOQE.mjs} +7 -6
  82. package/dist/list-Clz5igWg.mjs +44 -0
  83. package/dist/list-D4sFiqX8.mjs +173 -0
  84. package/dist/{list-BxdXvGTK.mjs → list-DXH7TlkU.mjs} +9 -7
  85. package/dist/{list-CocYwmnI.mjs → list-DZ8fNUoQ.mjs} +9 -8
  86. package/dist/{list-DjhZU-FY.mjs → list-SOG0whQ-.mjs} +7 -6
  87. package/dist/{list-DI7K3K6k.mjs → list-d58BprgJ.mjs} +7 -6
  88. package/dist/{list-NiwCL_1X.mjs → list-sD5N3fGk.mjs} +9 -8
  89. package/dist/{list-CbJeP0Z6.mjs → list-zSO0DMw-.mjs} +10 -6
  90. package/dist/{login-SXsSH0I1.mjs → login-Bm2AnCez.mjs} +65 -80
  91. package/dist/{logout-bgOXjxbN.mjs → logout-BlyRJODO.mjs} +8 -7
  92. package/dist/{logs-BnwVbFuD.mjs → logs-CywPikkL.mjs} +9 -8
  93. package/dist/{manifest-CGM7XNLC.mjs → manifest-BBR46KFM.mjs} +15 -15
  94. package/dist/measure-C44EK_xt.mjs +20 -0
  95. package/dist/{measure-BEQfnLdN.mjs → measure-ClESGxIb.mjs} +2 -2
  96. package/dist/{metadata-Bu2HOmuX.mjs → metadata-B8ZSF9LA.mjs} +10 -9
  97. package/dist/{metadata-B0WZT3Yb.mjs → metadata-DqiI2q9q.mjs} +9 -8
  98. package/dist/parse-enum-CrEWOhuY.mjs +11 -0
  99. package/dist/{parse-id-B3B-0hUA.mjs → parse-id-lk_K-CEF.mjs} +1 -1
  100. package/dist/{parse-ref-D1yeDOn8.mjs → parse-ref-BiETXmvm.mjs} +1 -1
  101. package/dist/{parse-schemas-DgtVLikM.mjs → parse-schemas-BqUdWUwq.mjs} +2 -2
  102. package/dist/path-AEtZ3mBq.mjs +58 -0
  103. package/dist/{poll-BCnrcUVf.mjs → poll-DHKDpCiq.mjs} +2 -2
  104. package/dist/{poll-task-0b1V6G-8.mjs → poll-task-Cooi0lQV.mjs} +3 -20
  105. package/dist/{preflight-5ACaYnDp.mjs → preflight-aXV5LyDs.mjs} +4 -4
  106. package/dist/{process-FjsqDwKo.mjs → process-C7V8LJ-j.mjs} +1 -1
  107. package/dist/{prompt-DgDNy_Pc.mjs → prompt-CFKoys7k.mjs} +3 -1
  108. package/dist/{provision-29Zt62Ft.mjs → provision-UWcNDoDe.mjs} +29 -24
  109. package/dist/{ps-BMFiRCi4.mjs → ps-CJU0EbrC.mjs} +5 -3
  110. package/dist/ps-DEroLgbI.mjs +11 -0
  111. package/dist/{query-DxA353Hy.mjs → query-AaKzYnTY.mjs} +9 -8
  112. package/dist/{query-aba8MEe_.mjs → query-BlsVNZpD.mjs} +15 -13
  113. package/dist/{remove-BfgU_CQi.mjs → remove-BFWun0e8.mjs} +9 -8
  114. package/dist/{remove-collection-Brv72xUe.mjs → remove-collection-CoCmrrQs.mjs} +13 -9
  115. package/dist/{render-DuoDUTVL.mjs → render-CfznwleY.mjs} +15 -17
  116. package/dist/render-OQn3iRsI.mjs +32 -0
  117. package/dist/{rescan-values-DIAdjoq7.mjs → rescan-values-C0FDsjT7.mjs} +10 -9
  118. package/dist/{run-CgXRo0hD.mjs → run-B4Wn43zm.mjs} +10 -9
  119. package/dist/{runs-DtLRw6xg.mjs → runs-Bbaszr18.mjs} +9 -8
  120. package/dist/{runtime-Br8L4NPm.mjs → runtime-Dmv5VtUK.mjs} +657 -428
  121. package/dist/{schema-tables-DiKMY6lx.mjs → schema-tables-CaWinbuK.mjs} +9 -8
  122. package/dist/{schemas-Bvr8cOzo.mjs → schemas-DUgGpAyB.mjs} +7 -6
  123. package/dist/{search-BT_TCcTd.mjs → search-BLrBXLUk.mjs} +12 -16
  124. package/dist/segment-B3Uwwcsm.mjs +20 -0
  125. package/dist/{set-DtG0KH6P.mjs → set-B8cUbRLD.mjs} +13 -12
  126. package/dist/{set-CAIkXlPy.mjs → set-DfGsta5O.mjs} +11 -10
  127. package/dist/{setting-BDOi5fk_.mjs → setting-D2p2MA7f.mjs} +3 -3
  128. package/dist/{setup-LjTvvlJy.mjs → setup-C9ikBRw_.mjs} +9 -8
  129. package/dist/skills-CUHIcQS6.mjs +18 -0
  130. package/dist/skills-CiN1OQ8W.mjs +191 -0
  131. package/dist/snippet-B7D0uWlz.mjs +20 -0
  132. package/dist/{start-CXKt0Q7A.mjs → start-3PX3ahjT.mjs} +68 -36
  133. package/dist/{stash-dRw1UEwg.mjs → stash-EIDcSvpF.mjs} +17 -16
  134. package/dist/{status-C2niMfrQ.mjs → status-95ElRAu9.mjs} +12 -8
  135. package/dist/status-B0_MiZEf.mjs +100 -0
  136. package/dist/status-CEplmC44.mjs +34 -0
  137. package/dist/{stop-BdedYfwU.mjs → stop-CQ0XGrN8.mjs} +11 -10
  138. package/dist/{summary-BPDA4K99.mjs → summary-C12LiEuJ.mjs} +8 -7
  139. package/dist/{sync-schema-D95LLRpf.mjs → sync-schema-Ba8M3DiX.mjs} +10 -9
  140. package/dist/{table-B-PYcgGb.mjs → table-C7a5V6Zn.mjs} +1 -1
  141. package/dist/table-e6h8SLVX.mjs +20 -0
  142. package/dist/transform-BMYh1lsC.mjs +25 -0
  143. package/dist/transform-job-Cm7z5TfH.mjs +20 -0
  144. package/dist/{transform-job-Csr86muI.mjs → transform-job-DeTDPMxt.mjs} +1 -1
  145. package/dist/{tree-DazZT7dR.mjs → tree-Des2ZG9d.mjs} +6 -5
  146. package/dist/{update-DE6kjV-f.mjs → update-Bx54nWEI.mjs} +17 -15
  147. package/dist/{update-bW-i6gjZ.mjs → update-CyIZdbIQ.mjs} +11 -10
  148. package/dist/{update-djgvzO3K.mjs → update-DBi5U8zb.mjs} +16 -14
  149. package/dist/{update-CJSDB6S8.mjs → update-DHZubok3.mjs} +18 -14
  150. package/dist/{update-BBfvArCx.mjs → update-DSgceARZ.mjs} +11 -10
  151. package/dist/{update-DSWZSfpw.mjs → update-DzAN4SPj.mjs} +15 -13
  152. package/dist/{update-WyRKlQPh.mjs → update-F6DmZncY.mjs} +11 -10
  153. package/dist/{update-DTIWJxob.mjs → update-_QfgNa53.mjs} +12 -11
  154. package/dist/{update-dashcard-BhD5x__K.mjs → update-dashcard-wpSjv4M7.mjs} +11 -10
  155. package/dist/{update-9kVyE3BJ.mjs → update-mYVnoYNV.mjs} +15 -13
  156. package/dist/{update-659eQR1L.mjs → update-njHe3j-s.mjs} +15 -13
  157. package/dist/{upgrade-D58rvXHM.mjs → upgrade-iAuvhX-W.mjs} +9 -8
  158. package/dist/{url-DKkSu2D8.mjs → url-DWaT6WIZ.mjs} +11 -10
  159. package/dist/{uuid-BF20B59s.mjs → uuid-CMKnS8-z.mjs} +8 -6
  160. package/dist/{validate-CB0bu50i.mjs → validate-dPEOnOf8.mjs} +2 -1
  161. package/dist/{validate-query-CavIA0Q2.mjs → validate-query-Cw6WE5Y8.mjs} +3 -3
  162. package/dist/{values-DyjmpcbT.mjs → values-BfSTAbzc.mjs} +8 -7
  163. package/dist/verify-D5YtTqqp.mjs +79 -0
  164. package/dist/{wait-CeUPCgdc.mjs → wait-8yV9_WIo.mjs} +2 -2
  165. package/dist/{wait-DhkTaV6E.mjs → wait-Bv3Tsnv4.mjs} +12 -8
  166. package/dist/{wait-flags-BR-yqe7y.mjs → wait-flags-Dzq9BGQY.mjs} +20 -9
  167. package/dist/workspace-CKLZrR7l.mjs +26 -0
  168. package/dist/{workspace-credentials-Cctumbru.mjs → workspace-credentials-BXpABsNZ.mjs} +2 -41
  169. package/dist/yaml-YTQiYJ9s.mjs +43 -0
  170. package/package.json +6 -2
  171. package/skill-data/core/SKILL.md +177 -0
  172. package/skill-data/git-sync/SKILL.md +196 -0
  173. package/skill-data/mbql/SKILL.md +156 -0
  174. package/skill-data/mbql/references/operators.md +253 -0
  175. package/skill-data/transform/SKILL.md +197 -0
  176. package/skill-data/viz/SKILL.md +137 -0
  177. package/skill-data/viz/references/settings.md +312 -0
  178. package/skill-data/workspace/SKILL.md +390 -0
  179. package/skills/metabase-cli/SKILL.md +21 -0
  180. package/dist/add-collection-CPL1njYZ.mjs +0 -11
  181. package/dist/api-key-9p1UPnXn.mjs +0 -13
  182. package/dist/auth-N4w5xtwW.mjs +0 -19
  183. package/dist/card-4rZRb5bc.mjs +0 -20
  184. package/dist/collection-Cp_B02I4.mjs +0 -19
  185. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  186. package/dist/create-doyv3SxU.mjs +0 -50
  187. package/dist/create-ov-De5dO.mjs +0 -125
  188. package/dist/dashboard-BYBiA-IG.mjs +0 -20
  189. package/dist/db-CObVU22j.mjs +0 -22
  190. package/dist/eid-Cr5r-t9B.mjs +0 -13
  191. package/dist/field-CbljasCH.mjs +0 -18
  192. package/dist/flag-pair-Fmcdkrfx.mjs +0 -17
  193. package/dist/get-run-CSrXHDGS.mjs +0 -36
  194. package/dist/git-sync-BGkS8o5b.mjs +0 -28
  195. package/dist/is-dirty-BOZ4xz92.mjs +0 -10
  196. package/dist/key-CCJdVWKc.mjs +0 -12
  197. package/dist/license-DLLTpFvP.mjs +0 -17
  198. package/dist/list-BNzdnE1c.mjs +0 -55
  199. package/dist/measure-B54VtKym.mjs +0 -19
  200. package/dist/package-D-aVYFKM.mjs +0 -80
  201. package/dist/ps-C5FOLwL2.mjs +0 -11
  202. package/dist/segment-C2ui5dSd.mjs +0 -19
  203. package/dist/snippet-BcgVYsoR.mjs +0 -19
  204. package/dist/status-BEONmJWv.mjs +0 -32
  205. package/dist/status-BWep0PFe.mjs +0 -56
  206. package/dist/table-lCNGbvej.mjs +0 -19
  207. package/dist/transform-BGAm1s4f.mjs +0 -24
  208. package/dist/transform-job-cNTJ30pm.mjs +0 -19
  209. package/dist/workspace-DtcBldk0.mjs +0 -24
  210. /package/dist/{body-flags-BK7J6Daz.mjs → body-flags-D7q87Btw.mjs} +0 -0
  211. /package/dist/{field-B3gvaqpK.mjs → field-yomXlkvl.mjs} +0 -0
  212. /package/dist/{paginate-CTSfuYiF.mjs → paginate-Dfm9eO9A.mjs} +0 -0
  213. /package/dist/{revision-message-flag-oyq2xrDU.mjs → revision-message-flag-WmsIzUOM.mjs} +0 -0
  214. /package/dist/{segment-BMrUBz94.mjs → segment-Be2v4ilr.mjs} +0 -0
  215. /package/dist/{setting-CTaAeMci.mjs → setting-oL97SNeO.mjs} +0 -0
  216. /package/dist/{snippet-Dw0Sjzkr.mjs → snippet-COggaWxx.mjs} +0 -0
  217. /package/dist/{transform-IEX4Mx3X.mjs → transform-GTW3G-01.mjs} +0 -0
  218. /package/dist/{workspace-C5q4nbpY.mjs → workspace-BBXJczJK.mjs} +0 -0
@@ -1,125 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import "./input-BQ-BZA8h.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-Br8L4NPm.mjs";
7
- import { readBody } from "./body-D6dHGjMT.mjs";
8
- import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { requireBothOrNeither } from "./flag-pair-Fmcdkrfx.mjs";
10
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
11
- import { z } from "zod";
12
-
13
- //#region src/domain/api-key.ts
14
- const ApiKeyCreateInput = z.object({
15
- name: z.string().min(1),
16
- group_id: z.number().int().positive()
17
- }).loose();
18
- const ApiKeyGroup = z.object({
19
- id: z.number().int().nullable(),
20
- name: z.string().nullable()
21
- }).loose();
22
- const ApiKeyUpdatedBy = z.object({
23
- id: z.number().int(),
24
- common_name: z.string().nullable().optional()
25
- }).loose();
26
- const ApiKey = z.object({
27
- id: z.number().int(),
28
- name: z.string(),
29
- group: ApiKeyGroup.nullable().optional(),
30
- unmasked_key: z.string().nullable().optional(),
31
- masked_key: z.string().nullable().optional(),
32
- updated_by: ApiKeyUpdatedBy.nullable().optional(),
33
- created_at: z.string().nullable().optional(),
34
- updated_at: z.string().nullable().optional()
35
- }).loose();
36
- const ApiKeyCompact = ApiKey.pick({
37
- id: true,
38
- name: true,
39
- group: true,
40
- masked_key: true
41
- }).strip();
42
- const apiKeyView = {
43
- compactPick: ApiKeyCompact,
44
- tableColumns: [
45
- {
46
- key: "id",
47
- label: "ID"
48
- },
49
- {
50
- key: "name",
51
- label: "Name"
52
- },
53
- {
54
- key: "group",
55
- label: "Group",
56
- format: (value) => formatGroup(value)
57
- },
58
- {
59
- key: "unmasked_key",
60
- label: "Key"
61
- }
62
- ]
63
- };
64
- function formatGroup(value) {
65
- const parsed = ApiKeyGroup.nullable().safeParse(value);
66
- if (!parsed.success || parsed.data === null) return "";
67
- const { id, name } = parsed.data;
68
- if (name === null && id === null) return "";
69
- if (name === null) return String(id);
70
- return id === null ? name : `${name} (${id})`;
71
- }
72
-
73
- //#endregion
74
- //#region src/commands/api-key/create.ts
75
- var create_default = defineMetabaseCommand({
76
- meta: {
77
- name: "create",
78
- description: "Create a new API key"
79
- },
80
- args: {
81
- ...outputFlags,
82
- ...profileFlag,
83
- ...connectionFlags,
84
- ...bodyInputFlags,
85
- name: {
86
- type: "string",
87
- description: "API key name (alternative to --body / --file)"
88
- },
89
- "group-id": {
90
- type: "string",
91
- description: "Permission group id (alternative to --body / --file)"
92
- }
93
- },
94
- outputSchema: ApiKey,
95
- examples: [
96
- "mb api-key create --name \"deploy-bot\" --group-id 2",
97
- "echo '{\"name\":\"k\",\"group_id\":2}' | mb api-key create",
98
- "mb api-key create --file key.json"
99
- ],
100
- async run({ args, ctx, getClient }) {
101
- const pair = requireBothOrNeither({
102
- name: "--name",
103
- value: args.name
104
- }, {
105
- name: "--group-id",
106
- value: args["group-id"]
107
- });
108
- const body = pair ? ApiKeyCreateInput.parse({
109
- name: pair.first,
110
- group_id: parseId(pair.second, "--group-id")
111
- }) : await readBody({
112
- flag: args.body,
113
- file: args.file
114
- }, ApiKeyCreateInput);
115
- const client = await getClient();
116
- const created = await client.requestParsed(ApiKey, "/api/api-key", {
117
- method: "POST",
118
- body
119
- });
120
- renderItem(created, apiKeyView, ctx);
121
- }
122
- });
123
-
124
- //#endregion
125
- export { create_default as default };
@@ -1,20 +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-BxdXvGTK.mjs").then((mod) => mod.default),
11
- get: () => import("./get-CJwzbVjc.mjs").then((mod) => mod.default),
12
- cards: () => import("./cards-CVlFJxYh.mjs").then((mod) => mod.default),
13
- create: () => import("./create-DQVdMT2Y.mjs").then((mod) => mod.default),
14
- update: () => import("./update-DE6kjV-f.mjs").then((mod) => mod.default),
15
- "update-dashcard": () => import("./update-dashcard-BhD5x__K.mjs").then((mod) => mod.default)
16
- }
17
- });
18
-
19
- //#endregion
20
- 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 Metabase databases",
8
- alias: "database"
9
- },
10
- subCommands: {
11
- list: () => import("./list-CocYwmnI.mjs").then((m) => m.default),
12
- get: () => import("./get-Be6EFh94.mjs").then((m) => m.default),
13
- metadata: () => import("./metadata-Bu2HOmuX.mjs").then((m) => m.default),
14
- schemas: () => import("./schemas-Bvr8cOzo.mjs").then((m) => m.default),
15
- "schema-tables": () => import("./schema-tables-DiKMY6lx.mjs").then((m) => m.default),
16
- "sync-schema": () => import("./sync-schema-D95LLRpf.mjs").then((m) => m.default),
17
- "rescan-values": () => import("./rescan-values-DIAdjoq7.mjs").then((m) => m.default)
18
- }
19
- });
20
-
21
- //#endregion
22
- export { db_default as default };
@@ -1,13 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/eid/index.ts
4
- var eid_default = defineCommand({
5
- meta: {
6
- name: "eid",
7
- description: "Translate Metabase entity ids (string EIDs) to numeric ids"
8
- },
9
- subCommands: { translate: () => import("./translate-CG_Ka0dO.mjs").then((mod) => mod.default) }
10
- });
11
-
12
- //#endregion
13
- export { eid_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: "Inspect Metabase fields"
8
- },
9
- subCommands: {
10
- get: () => import("./get-Br6WayZv.mjs").then((m) => m.default),
11
- values: () => import("./values-DyjmpcbT.mjs").then((m) => m.default),
12
- summary: () => import("./summary-BPDA4K99.mjs").then((m) => m.default),
13
- update: () => import("./update-bW-i6gjZ.mjs").then((m) => m.default)
14
- }
15
- });
16
-
17
- //#endregion
18
- export { field_default as default };
@@ -1,17 +0,0 @@
1
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
2
-
3
- //#region src/commands/flag-pair.ts
4
- function requireBothOrNeither(first, second) {
5
- const firstSet = first.value !== void 0 && first.value !== "";
6
- const secondSet = second.value !== void 0 && second.value !== "";
7
- if (!firstSet && !secondSet) return null;
8
- if (!firstSet) throw new ConfigError(`${first.name} is required when using ${second.name}`);
9
- if (!secondSet) throw new ConfigError(`${second.name} is required when using ${first.name}`);
10
- return {
11
- first: first.value,
12
- second: second.value
13
- };
14
- }
15
-
16
- //#endregion
17
- export { requireBothOrNeither };
@@ -1,36 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
7
- import { TransformRun, transformRunView } from "./transform-IEX4Mx3X.mjs";
8
-
9
- //#region src/commands/transform/get-run.ts
10
- var get_run_default = defineMetabaseCommand({
11
- meta: {
12
- name: "get-run",
13
- description: "Get a transform run by id"
14
- },
15
- args: {
16
- ...outputFlags,
17
- ...profileFlag,
18
- ...connectionFlags,
19
- id: {
20
- type: "positional",
21
- description: "Run id",
22
- required: true
23
- }
24
- },
25
- outputSchema: TransformRun,
26
- examples: ["mb transform get-run 1", "mb transform get-run 1 --json"],
27
- async run({ args, ctx, getClient }) {
28
- const id = parseId(args.id, "run id");
29
- const client = await getClient();
30
- const run = await client.requestParsed(TransformRun, `/api/transform/run/${id}`);
31
- renderItem(run, transformRunView, ctx);
32
- }
33
- });
34
-
35
- //#endregion
36
- export { get_run_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-C2niMfrQ.mjs").then((mod) => mod.default),
11
- "is-dirty": () => import("./is-dirty-BOZ4xz92.mjs").then((mod) => mod.default),
12
- "has-remote-changes": () => import("./has-remote-changes-D6xgsuUr.mjs").then((mod) => mod.default),
13
- dirty: () => import("./dirty-Co8V0SZ3.mjs").then((mod) => mod.default),
14
- "current-task": () => import("./current-task-DweHmjlk.mjs").then((mod) => mod.default),
15
- "cancel-task": () => import("./cancel-task--BfiAXfS.mjs").then((mod) => mod.default),
16
- wait: () => import("./wait-DhkTaV6E.mjs").then((mod) => mod.default),
17
- import: () => import("./import-Dv0ORSNw.mjs").then((mod) => mod.default),
18
- export: () => import("./export-CVMFxoo1.mjs").then((mod) => mod.default),
19
- stash: () => import("./stash-dRw1UEwg.mjs").then((mod) => mod.default),
20
- branches: () => import("./branches-Bpe40fEd.mjs").then((mod) => mod.default),
21
- "create-branch": () => import("./create-branch-B49UQyCK.mjs").then((mod) => mod.default),
22
- "add-collection": () => import("./add-collection-CPL1njYZ.mjs").then((mod) => mod.default),
23
- "remove-collection": () => import("./remove-collection-Brv72xUe.mjs").then((mod) => mod.default)
24
- }
25
- });
26
-
27
- //#endregion
28
- export { git_sync_default as default };
@@ -1,10 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import "./runtime-Br8L4NPm.mjs";
6
- import "./poll-task-0b1V6G-8.mjs";
7
- import "./poll-BCnrcUVf.mjs";
8
- import { IsDirtyResult, is_dirty_default } from "./is-dirty-WNi8a6O9.mjs";
9
-
10
- export { is_dirty_default as default };
@@ -1,12 +0,0 @@
1
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
2
-
3
- //#region src/commands/setting/key.ts
4
- const SETTING_KEY_PATTERN = /^[A-Za-z][A-Za-z0-9_-]*$/;
5
- function parseSettingKey(value) {
6
- const trimmed = value.trim();
7
- if (!SETTING_KEY_PATTERN.test(trimmed)) throw new ConfigError(`invalid setting key: "${value}" (expected kebab-case identifier)`);
8
- return trimmed;
9
- }
10
-
11
- //#endregion
12
- export { parseSettingKey };
@@ -1,17 +0,0 @@
1
- import { defineCommand } from "citty";
2
-
3
- //#region src/commands/license/index.ts
4
- var license_default = defineCommand({
5
- meta: {
6
- name: "license",
7
- description: "Manage the Metabase license token"
8
- },
9
- subCommands: {
10
- set: () => import("./set-DtG0KH6P.mjs").then((m) => m.default),
11
- status: () => import("./status-BEONmJWv.mjs").then((m) => m.default),
12
- remove: () => import("./remove-BfgU_CQi.mjs").then((m) => m.default)
13
- }
14
- });
15
-
16
- //#endregion
17
- export { license_default as default };
@@ -1,55 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { defineMetabaseCommand, listEnvelopeSchema, listProfileNames, originOnly, outputFlags, readProfile, wrapList } from "./runtime-Br8L4NPm.mjs";
6
- import { z } from "zod";
7
-
8
- //#region src/commands/auth/list.ts
9
- const AuthProfile = z.object({
10
- profile: z.string(),
11
- url: z.string().nullable(),
12
- present: z.boolean()
13
- });
14
- const AuthProfileListEnvelope = listEnvelopeSchema(AuthProfile);
15
- const authProfileView = {
16
- compactPick: AuthProfile,
17
- tableColumns: [
18
- {
19
- key: "profile",
20
- label: "Profile"
21
- },
22
- {
23
- key: "url",
24
- label: "URL"
25
- },
26
- {
27
- key: "present",
28
- label: "Authenticated"
29
- }
30
- ]
31
- };
32
- var list_default = defineMetabaseCommand({
33
- meta: {
34
- name: "list",
35
- description: "List configured authentication profiles"
36
- },
37
- args: { ...outputFlags },
38
- outputSchema: AuthProfileListEnvelope,
39
- examples: ["mb auth list", "mb auth list --json"],
40
- async run({ ctx }) {
41
- const names = await listProfileNames();
42
- const items = await Promise.all(names.map(async (name) => {
43
- const profile = await readProfile(name);
44
- return {
45
- profile: name,
46
- url: profile === null ? null : originOnly(profile.url),
47
- present: profile !== null
48
- };
49
- }));
50
- renderList(wrapList(items), authProfileView, ctx);
51
- }
52
- });
53
-
54
- //#endregion
55
- export { list_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: "Inspect Metabase measures"
8
- },
9
- subCommands: {
10
- list: () => import("./list-DvUjMQze.mjs").then((mod) => mod.default),
11
- get: () => import("./get-DZrV7v9d.mjs").then((mod) => mod.default),
12
- create: () => import("./create-Cz3_Wxdt.mjs").then((mod) => mod.default),
13
- update: () => import("./update-DSWZSfpw.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-BAcEXbT9.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { measure_default as default };
@@ -1,80 +0,0 @@
1
- //#region package.json
2
- var name = "@metabase/cli";
3
- var version = "0.1.4";
4
- var description = "Metabase CLI";
5
- var license = "AGPL-3.0";
6
- var repository = {
7
- "type": "git",
8
- "url": "git+https://github.com/metabase/mb-cli.git"
9
- };
10
- var bin = { "mb": "./dist/cli.mjs" };
11
- var files = ["dist"];
12
- var type = "module";
13
- var publishConfig = {
14
- "access": "public",
15
- "registry": "https://registry.npmjs.org/"
16
- };
17
- var scripts = {
18
- "build": "tsdown",
19
- "dev": "tsdown --watch",
20
- "start": "node dist/cli.mjs",
21
- "test": "vitest run --project unit",
22
- "test:watch": "vitest --project unit",
23
- "test:e2e": "vitest run --project e2e",
24
- "test:e2e:watch": "vitest --project e2e",
25
- "e2e:up": "docker compose -f tests/e2e/docker-compose.yml up -d --wait",
26
- "e2e:down": "docker compose -f tests/e2e/docker-compose.yml down -v",
27
- "e2e:bootstrap": "bun tests/e2e/setup/bootstrap.ts",
28
- "e2e:logs": "docker compose -f tests/e2e/docker-compose.yml logs -f metabase",
29
- "typecheck": "tsc --noEmit",
30
- "lint": "oxlint",
31
- "lint:fix": "oxlint --fix",
32
- "format": "oxfmt",
33
- "format:check": "oxfmt --check",
34
- "sync:representations": "bun run scripts/sync-representations.ts",
35
- "prepublishOnly": "tsdown && publint"
36
- };
37
- var dependencies = {
38
- "@clack/prompts": "^0.8.2",
39
- "@napi-rs/keyring": "^1.3.0",
40
- "ajv": "^8.17.1",
41
- "ajv-formats": "^3.0.1",
42
- "citty": "^0.2.2",
43
- "cli-table3": "^0.6.5",
44
- "semver": "^7.8.0",
45
- "yaml": "^2.8.4",
46
- "zod": "^4.0.0"
47
- };
48
- var devDependencies = {
49
- "@types/js-yaml": "^4.0.9",
50
- "@types/node": "^22.10.0",
51
- "@types/semver": "^7.7.1",
52
- "execa": "^9.5.2",
53
- "fast-check": "^4.7.0",
54
- "js-yaml": "^4.1.0",
55
- "oxfmt": "^0.47.0",
56
- "oxlint": "^1.62.0",
57
- "publint": "^0.3.0",
58
- "tsdown": "^0.9.0",
59
- "typescript": "^5.7.2",
60
- "vitest": "^2.1.8"
61
- };
62
- var engines = { "node": ">=20.6" };
63
- var package_default = {
64
- name,
65
- version,
66
- description,
67
- license,
68
- repository,
69
- bin,
70
- files,
71
- type,
72
- publishConfig,
73
- scripts,
74
- dependencies,
75
- devDependencies,
76
- engines
77
- };
78
-
79
- //#endregion
80
- export { package_default };
@@ -1,11 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import "./runtime-Br8L4NPm.mjs";
6
- import "./poll-BCnrcUVf.mjs";
7
- import "./process-FjsqDwKo.mjs";
8
- import "./docker-D9sC_37H.mjs";
9
- import { LocalWorkspace, LocalWorkspaceCompact, LocalWorkspaceListEnvelope, LocalWorkspaceState, localWorkspaceView, ps_default } from "./ps-BMFiRCi4.mjs";
10
-
11
- export { ps_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: "Inspect Metabase segments"
8
- },
9
- subCommands: {
10
- list: () => import("./list-DjhZU-FY.mjs").then((mod) => mod.default),
11
- get: () => import("./get-DXv2FkA7.mjs").then((mod) => mod.default),
12
- create: () => import("./create-BzElku2l.mjs").then((mod) => mod.default),
13
- update: () => import("./update-659eQR1L.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-B_B3MQp0.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { segment_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: "Inspect Metabase native query snippets"
8
- },
9
- subCommands: {
10
- list: () => import("./list-FXuSCYpa.mjs").then((mod) => mod.default),
11
- get: () => import("./get-BxzCKVC6.mjs").then((mod) => mod.default),
12
- create: () => import("./create-Bu-YhIDL.mjs").then((mod) => mod.default),
13
- update: () => import("./update-WyRKlQPh.mjs").then((mod) => mod.default),
14
- archive: () => import("./archive-GdGm7l2e.mjs").then((mod) => mod.default)
15
- }
16
- });
17
-
18
- //#endregion
19
- export { snippet_default as default };
@@ -1,32 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { account, credentials, defineMetabaseCommand, outputFlags } from "./runtime-Br8L4NPm.mjs";
6
- import { z } from "zod";
7
-
8
- //#region src/commands/license/status.ts
9
- const LicenseStatus = z.object({ present: z.boolean() });
10
- const licenseStatusView = {
11
- compactPick: LicenseStatus,
12
- tableColumns: [{
13
- key: "present",
14
- label: "Present"
15
- }]
16
- };
17
- var status_default = defineMetabaseCommand({
18
- meta: {
19
- name: "status",
20
- description: "Show whether a license token is stored (does not reveal value)"
21
- },
22
- args: { ...outputFlags },
23
- outputSchema: LicenseStatus,
24
- examples: ["mb license status", "mb license status --json"],
25
- async run({ ctx }) {
26
- const present = await credentials.has(account.license);
27
- renderItem({ present }, licenseStatusView, ctx);
28
- }
29
- });
30
-
31
- //#endregion
32
- export { status_default as default };
@@ -1,56 +0,0 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { account, credentials, defineMetabaseCommand, originOnly, outputFlags, profileFlag, resolveProfileName } from "./runtime-Br8L4NPm.mjs";
6
- import { z } from "zod";
7
-
8
- //#region src/commands/auth/status.ts
9
- const AuthStatus = z.object({
10
- profile: z.string(),
11
- present: z.boolean(),
12
- url: z.string().nullable()
13
- });
14
- const authStatusView = {
15
- compactPick: AuthStatus,
16
- tableColumns: [
17
- {
18
- key: "profile",
19
- label: "Profile"
20
- },
21
- {
22
- key: "present",
23
- label: "Authenticated"
24
- },
25
- {
26
- key: "url",
27
- label: "URL"
28
- }
29
- ]
30
- };
31
- var status_default = defineMetabaseCommand({
32
- meta: {
33
- name: "status",
34
- description: "Show authentication status for a profile"
35
- },
36
- args: {
37
- ...outputFlags,
38
- ...profileFlag
39
- },
40
- outputSchema: AuthStatus,
41
- examples: ["mb auth status --json", "mb auth status --profile staging"],
42
- async run({ args, ctx }) {
43
- const profileName = resolveProfileName(args.profile);
44
- const [url, apiKey] = await Promise.all([credentials.read(account.profileUrl(profileName)), credentials.read(account.profileApiKey(profileName))]);
45
- const present = url !== null && apiKey !== null;
46
- const payload = {
47
- profile: profileName,
48
- present,
49
- url: url === null ? null : originOnly(url)
50
- };
51
- renderItem(payload, authStatusView, ctx);
52
- }
53
- });
54
-
55
- //#endregion
56
- export { status_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: "Inspect Metabase tables"
8
- },
9
- subCommands: {
10
- list: () => import("./list-NiwCL_1X.mjs").then((m) => m.default),
11
- get: () => import("./get-BSKoL8ek.mjs").then((m) => m.default),
12
- metadata: () => import("./metadata-B0WZT3Yb.mjs").then((m) => m.default),
13
- fields: () => import("./fields-Coha7vKv.mjs").then((m) => m.default),
14
- update: () => import("./update-DTIWJxob.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-DSs0Q78i.mjs").then((mod) => mod.default),
11
- get: () => import("./get-bNtA7vWe.mjs").then((mod) => mod.default),
12
- create: () => import("./create-BykvNpSA.mjs").then((mod) => mod.default),
13
- update: () => import("./update-9kVyE3BJ.mjs").then((mod) => mod.default),
14
- delete: () => import("./delete-DIz9Tgz5.mjs").then((mod) => mod.default),
15
- "delete-table": () => import("./delete-table-DjN8E3sd.mjs").then((mod) => mod.default),
16
- run: () => import("./run-CgXRo0hD.mjs").then((mod) => mod.default),
17
- cancel: () => import("./cancel-BWTY6oYI.mjs").then((mod) => mod.default),
18
- "get-run": () => import("./get-run-CSrXHDGS.mjs").then((mod) => mod.default),
19
- runs: () => import("./runs-DtLRw6xg.mjs").then((mod) => mod.default)
20
- }
21
- });
22
-
23
- //#endregion
24
- export { transform_default as default };