@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,11 +1,11 @@
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 { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
7
- import "./field-B3gvaqpK.mjs";
8
- import { Table, TableCompact, tableView } from "./table-B-PYcgGb.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import "./field-yomXlkvl.mjs";
7
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
8
+ import { Table, TableCompact, tableView } from "./table-C7a5V6Zn.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/commands/db/schema-tables.ts
@@ -16,6 +16,7 @@ var schema_tables_default = defineMetabaseCommand({
16
16
  name: "schema-tables",
17
17
  description: "List tables in a database schema"
18
18
  },
19
+ capabilities: { minVersion: 58 },
19
20
  args: {
20
21
  ...outputFlags,
21
22
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, wrapList } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/commands/db/schemas.ts
@@ -22,6 +22,7 @@ var schemas_default = defineMetabaseCommand({
22
22
  name: "schemas",
23
23
  description: "List schemas in a database"
24
24
  },
25
+ capabilities: { minVersion: 58 },
25
26
  args: {
26
27
  ...outputFlags,
27
28
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderList } from "./render-DuoDUTVL.mjs";
4
- import "./predicates-CGO17Q15.mjs";
5
- import { connectionFlags, defineMetabaseCommand, listEnvelopeSchema, outputFlags, parseEnumCsv, profileFlag } from "./runtime-Br8L4NPm.mjs";
6
- import { parseId } from "./parse-id-B3B-0hUA.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand, parseEnumCsv } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderList } from "./render-CfznwleY.mjs";
6
+ import { parseId } from "./parse-id-lk_K-CEF.mjs";
7
7
  import { z } from "zod";
8
8
 
9
9
  //#region src/domain/search.ts
@@ -45,8 +45,7 @@ const SearchResultCompact = SearchResult.pick({
45
45
  id: true,
46
46
  name: true,
47
47
  model: true,
48
- description: true,
49
- archived: true
48
+ description: true
50
49
  }).strip();
51
50
  const searchResultView = {
52
51
  compactPick: SearchResultCompact,
@@ -62,10 +61,6 @@ const searchResultView = {
62
61
  {
63
62
  key: "name",
64
63
  label: "Name"
65
- },
66
- {
67
- key: "archived",
68
- label: "Archived"
69
64
  }
70
65
  ]
71
66
  };
@@ -85,6 +80,7 @@ var search_default = defineMetabaseCommand({
85
80
  name: "search",
86
81
  description: "Search Metabase content (cards, dashboards, collections, …)"
87
82
  },
83
+ capabilities: { minVersion: 58 },
88
84
  args: {
89
85
  ...outputFlags,
90
86
  ...profileFlag,
@@ -101,7 +97,7 @@ var search_default = defineMetabaseCommand({
101
97
  },
102
98
  archived: {
103
99
  type: "boolean",
104
- description: "Include archived items",
100
+ description: "Search only archived items (instead of only active ones)",
105
101
  default: false
106
102
  },
107
103
  limit: {
@@ -109,7 +105,7 @@ var search_default = defineMetabaseCommand({
109
105
  description: "Max results to return",
110
106
  default: String(DEFAULT_LIMIT)
111
107
  },
112
- "table-db-id": {
108
+ "db-id": {
113
109
  type: "string",
114
110
  description: "Restrict to items on a given database id"
115
111
  },
@@ -126,8 +122,8 @@ var search_default = defineMetabaseCommand({
126
122
  ],
127
123
  async run({ args, ctx, getClient }) {
128
124
  const limit = parseId(args.limit, "--limit");
129
- const tableDbIdRaw = args["table-db-id"];
130
- const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--table-db-id") : void 0;
125
+ const tableDbIdRaw = args["db-id"];
126
+ const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
131
127
  const models = parseEnumCsv(args.models, SearchModel, "--models");
132
128
  const client = await getClient();
133
129
  const response = await client.requestParsed(SearchApiResponse, "/api/search", { query: {
@@ -0,0 +1,20 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/segment/index.ts
4
+ var segment_default = defineCommand({
5
+ meta: {
6
+ name: "segment",
7
+ alias: "segments",
8
+ description: "Manage Metabase segments"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list-SOG0whQ-.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-Bzys7vgp.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-DGth_uOp.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-njHe3j-s.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-DMPS8Kih.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { segment_default as default };
@@ -1,13 +1,13 @@
1
- import "./package-D-aVYFKM.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-DuoDUTVL.mjs";
4
- import { ConfigError } from "./predicates-CGO17Q15.mjs";
5
- import { readInput } from "./input-BQ-BZA8h.mjs";
6
- import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-Br8L4NPm.mjs";
7
- import { promptPassword } from "./prompt-DgDNy_Pc.mjs";
1
+ import { ConfigError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { outputFlags } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand, keyringFallbackWarning, readEnvLicenseToken, writeLicense } from "./runtime-Dmv5VtUK.mjs";
4
+ import { warn } from "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import { promptPassword } from "./prompt-CFKoys7k.mjs";
7
+ import { readInput } from "./input-cMSEqISy.mjs";
8
8
  import { z } from "zod";
9
9
 
10
- //#region src/commands/license/set.ts
10
+ //#region src/commands/workspace/license/set.ts
11
11
  const LicenseSetResult = z.object({ stored: z.literal(true) });
12
12
  const licenseSetView = {
13
13
  compactPick: LicenseSetResult,
@@ -21,6 +21,7 @@ var set_default = defineMetabaseCommand({
21
21
  name: "set",
22
22
  description: "Store a Metabase license token"
23
23
  },
24
+ capabilities: null,
24
25
  args: {
25
26
  ...outputFlags,
26
27
  token: {
@@ -31,14 +32,14 @@ var set_default = defineMetabaseCommand({
31
32
  },
32
33
  outputSchema: LicenseSetResult,
33
34
  examples: [
34
- "echo $METABASE_LICENSE_TOKEN | mb license set",
35
- "mb license set < token.txt",
36
- "mb license set $METABASE_LICENSE_TOKEN"
35
+ "echo $METABASE_LICENSE_TOKEN | mb workspace license set",
36
+ "mb workspace license set < token.txt",
37
+ "mb workspace license set $METABASE_LICENSE_TOKEN"
37
38
  ],
38
39
  async run({ args, ctx }) {
39
40
  const token = await resolveToken(args.token);
40
41
  const location = await writeLicense(token);
41
- if (location.backend === "file") warn(`warning: OS keychain unavailable; license stored as plaintext at ${location.path}`);
42
+ if (location.backend === "file") warn(keyringFallbackWarning(location, "license"));
42
43
  const result = { stored: true };
43
44
  renderItem(result, licenseSetView, ctx);
44
45
  }
@@ -1,12 +1,12 @@
1
- import "./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 { SettingValue, settingValueView } from "./setting-CTaAeMci.mjs";
9
- import { parseSettingKey } from "./key-CCJdVWKc.mjs";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import "./input-cMSEqISy.mjs";
7
+ import { readBody } from "./body-DjdFxjpg.mjs";
8
+ import { SettingValue, settingValueView } from "./setting-oL97SNeO.mjs";
9
+ import { parseSettingKey, rethrowSettingError } from "./key-C2XG394c.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/setting/set.ts
@@ -15,6 +15,7 @@ var set_default = defineMetabaseCommand({
15
15
  name: "set",
16
16
  description: "Set a setting value (parsed strictly as JSON)"
17
17
  },
18
+ capabilities: { minVersion: 58 },
18
19
  args: {
19
20
  ...outputFlags,
20
21
  ...profileFlag,
@@ -54,7 +55,7 @@ var set_default = defineMetabaseCommand({
54
55
  method: "PUT",
55
56
  body: { value },
56
57
  expectContentType: "binary"
57
- });
58
+ }).catch((error) => rethrowSettingError(error, key));
58
59
  const item = {
59
60
  key,
60
61
  value
@@ -8,9 +8,9 @@ var setting_default = defineCommand({
8
8
  alias: "settings"
9
9
  },
10
10
  subCommands: {
11
- list: () => import("./list-8oVMvlLV.mjs").then((m) => m.default),
12
- get: () => import("./get-BVTz9B_H.mjs").then((m) => m.default),
13
- set: () => import("./set-CAIkXlPy.mjs").then((m) => m.default)
11
+ list: () => import("./list-2j7GsXsl.mjs").then((m) => m.default),
12
+ get: () => import("./get-D3SbEQSE.mjs").then((m) => m.default),
13
+ set: () => import("./set-DfGsta5O.mjs").then((m) => m.default)
14
14
  }
15
15
  });
16
16
 
@@ -1,11 +1,11 @@
1
- import "./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";
1
+ import "./command-augment-BH9qgQ5u.mjs";
2
+ import { connectionFlags, outputFlags, profileFlag } from "./error-C9S6PN3-.mjs";
3
+ import { defineMetabaseCommand } from "./runtime-Dmv5VtUK.mjs";
4
+ import "./capabilities-7e9MgquN.mjs";
5
+ import { renderItem } from "./render-CfznwleY.mjs";
6
+ import "./input-cMSEqISy.mjs";
7
+ import { readBody } from "./body-DjdFxjpg.mjs";
8
+ import { bodyInputFlags } from "./body-flags-D7q87Btw.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/domain/setup.ts
@@ -41,6 +41,7 @@ var setup_default = defineMetabaseCommand({
41
41
  name: "setup",
42
42
  description: "Complete the initial Metabase setup wizard with a default user"
43
43
  },
44
+ capabilities: { minVersion: 58 },
44
45
  args: {
45
46
  ...outputFlags,
46
47
  ...profileFlag,
@@ -0,0 +1,18 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/skills/index.ts
4
+ var skills_default = defineCommand({
5
+ meta: {
6
+ name: "skills",
7
+ description: "Discover and read CLI-bundled skills (SKILL.md files served from the installed version)"
8
+ },
9
+ default: "list",
10
+ subCommands: {
11
+ list: () => import("./list-Clz5igWg.mjs").then((m) => m.default),
12
+ get: () => import("./get-DFxZXaKz.mjs").then((m) => m.default),
13
+ path: () => import("./path-AEtZ3mBq.mjs").then((m) => m.default)
14
+ }
15
+ });
16
+
17
+ //#endregion
18
+ export { skills_default as default };
@@ -0,0 +1,191 @@
1
+ import { ConfigError, isNotFoundError } from "./command-augment-BH9qgQ5u.mjs";
2
+ import { parseYamlResult } from "./yaml-YTQiYJ9s.mjs";
3
+ import { z } from "zod";
4
+ import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
5
+ import { dirname, join, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ //#region src/core/skills.ts
9
+ const Frontmatter = z.object({
10
+ name: z.string().min(1),
11
+ description: z.string().default(""),
12
+ hidden: z.boolean().default(false)
13
+ }).loose();
14
+ const SkillExtraFile = z.object({
15
+ path: z.string(),
16
+ content: z.string()
17
+ });
18
+ const SkillContent = z.object({
19
+ name: z.string(),
20
+ description: z.string(),
21
+ body: z.string(),
22
+ references: z.array(SkillExtraFile),
23
+ templates: z.array(SkillExtraFile)
24
+ });
25
+ const SKILL_DIR_NAMES = ["skills", "skill-data"];
26
+ const SKILL_MD_FILENAME = "SKILL.md";
27
+ const SKILL_REFERENCES_DIR = "references";
28
+ const SKILL_TEMPLATES_DIR = "templates";
29
+ const SKILLS_DIR_ENV = "MB_SKILLS_DIR";
30
+ const FRONTMATTER_PREFIX_BYTES = 8192;
31
+ const FRONTMATTER_FENCE = "---";
32
+ function loadAllSkills() {
33
+ return discoverSkills(resolveSkillDirs());
34
+ }
35
+ function loadVisibleSkills() {
36
+ return loadAllSkills().filter((s) => !s.hidden);
37
+ }
38
+ function findSkillByName(all, name) {
39
+ const hit = all.find((s) => s.name === name);
40
+ if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
41
+ return hit;
42
+ }
43
+ function selectSkillsByNames(all, requested) {
44
+ if (requested.length === 0) throw new ConfigError("no skill names provided");
45
+ const byName = new Map(all.map((s) => [s.name, s]));
46
+ const missing = [];
47
+ const found = [];
48
+ for (const name of requested) {
49
+ const hit = byName.get(name);
50
+ if (hit === void 0) {
51
+ missing.push(name);
52
+ continue;
53
+ }
54
+ found.push(hit);
55
+ }
56
+ if (missing.length > 0) throw new ConfigError(`unknown skill name(s): ${missing.join(", ")} (${availableSkillNames(all)})`);
57
+ return found;
58
+ }
59
+ function availableSkillNames(all) {
60
+ const names = all.filter((s) => !s.hidden).map((s) => s.name);
61
+ return `available: ${names.length === 0 ? "none" : names.join(", ")}`;
62
+ }
63
+ function resolveSkillDirs() {
64
+ const override = process.env[SKILLS_DIR_ENV];
65
+ if (override !== void 0 && override !== "") {
66
+ if (!isDirectory(override)) throw new ConfigError(`${SKILLS_DIR_ENV} points at ${override}, which is not a directory`);
67
+ return [resolve(override)];
68
+ }
69
+ const root = findPackageRoot();
70
+ if (root === null) return [];
71
+ return SKILL_DIR_NAMES.map((name) => join(root, name)).filter(isDirectory);
72
+ }
73
+ function findPackageRoot() {
74
+ const here = fileURLToPath(import.meta.url);
75
+ let dir = dirname(here);
76
+ while (true) {
77
+ for (const name of SKILL_DIR_NAMES) if (isDirectory(join(dir, name))) return dir;
78
+ const parent = dirname(dir);
79
+ if (parent === dir) return null;
80
+ dir = parent;
81
+ }
82
+ }
83
+ function discoverSkills(dirs) {
84
+ const skills = [];
85
+ for (const dir of dirs) {
86
+ let entries;
87
+ try {
88
+ entries = readdirSync(dir);
89
+ } catch (error) {
90
+ if (isNotFoundError(error)) continue;
91
+ throw error;
92
+ }
93
+ for (const entryName of entries) {
94
+ const skillDir = join(dir, entryName);
95
+ const fm = readFrontmatterFromSkill(skillDir);
96
+ if (fm === null) continue;
97
+ skills.push({
98
+ name: fm.name,
99
+ description: fm.description,
100
+ hidden: fm.hidden,
101
+ dir: skillDir
102
+ });
103
+ }
104
+ }
105
+ skills.sort((a, b) => a.name.localeCompare(b.name));
106
+ return skills;
107
+ }
108
+ function readFrontmatterFromSkill(skillDir) {
109
+ const skillMd = join(skillDir, SKILL_MD_FILENAME);
110
+ const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
111
+ if (prefix === null) return null;
112
+ return parseFrontmatter(prefix);
113
+ }
114
+ function readFilePrefix(path, maxBytes) {
115
+ let fd;
116
+ try {
117
+ fd = openSync(path, "r");
118
+ } catch (error) {
119
+ if (isNotFoundError(error)) return null;
120
+ throw error;
121
+ }
122
+ try {
123
+ const buffer = Buffer.alloc(maxBytes);
124
+ const bytesRead = readSync(fd, buffer, 0, maxBytes, 0);
125
+ return buffer.toString("utf8", 0, bytesRead);
126
+ } finally {
127
+ closeSync(fd);
128
+ }
129
+ }
130
+ function parseFrontmatter(content) {
131
+ const trimmed = content.trimStart();
132
+ if (!trimmed.startsWith(FRONTMATTER_FENCE)) return null;
133
+ const afterOpening = trimmed.slice(FRONTMATTER_FENCE.length);
134
+ const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
135
+ if (closingIndex < 0) return null;
136
+ const block = afterOpening.slice(0, closingIndex);
137
+ const result = parseYamlResult(block, Frontmatter);
138
+ if (!result.ok) return null;
139
+ return result.value;
140
+ }
141
+ function readSkillContent(info, opts) {
142
+ const body = readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8");
143
+ if (!opts.includeExtras) return {
144
+ name: info.name,
145
+ description: info.description,
146
+ body,
147
+ references: [],
148
+ templates: []
149
+ };
150
+ return {
151
+ name: info.name,
152
+ description: info.description,
153
+ body,
154
+ references: collectExtraFiles(info.dir, SKILL_REFERENCES_DIR),
155
+ templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
156
+ };
157
+ }
158
+ function collectExtraFiles(skillDir, subdirName) {
159
+ const subdir = join(skillDir, subdirName);
160
+ if (!isDirectory(subdir)) return [];
161
+ const entries = readdirSync(subdir).toSorted();
162
+ const out = [];
163
+ for (const entry of entries) {
164
+ const full = join(subdir, entry);
165
+ if (!isFile(full)) continue;
166
+ out.push({
167
+ path: `${subdirName}/${entry}`,
168
+ content: readFileSync(full, "utf8")
169
+ });
170
+ }
171
+ return out;
172
+ }
173
+ function isDirectory(path) {
174
+ try {
175
+ return statSync(path).isDirectory();
176
+ } catch (error) {
177
+ if (isNotFoundError(error)) return false;
178
+ throw error;
179
+ }
180
+ }
181
+ function isFile(path) {
182
+ try {
183
+ return statSync(path).isFile();
184
+ } catch (error) {
185
+ if (isNotFoundError(error)) return false;
186
+ throw error;
187
+ }
188
+ }
189
+
190
+ //#endregion
191
+ export { SkillContent, findSkillByName, loadAllSkills, loadVisibleSkills, readSkillContent, selectSkillsByNames };
@@ -0,0 +1,20 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/snippet/index.ts
4
+ var snippet_default = defineCommand({
5
+ meta: {
6
+ name: "snippet",
7
+ alias: "snippets",
8
+ description: "Manage Metabase native query snippets"
9
+ },
10
+ subCommands: {
11
+ list: () => import("./list--OYdUTtu.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-Ddr0XLh7.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-Be_0Vier.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-F6DmZncY.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-C1enZgKV.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+
19
+ //#endregion
20
+ export { snippet_default as default };