@metabase/cli 0.3.1-alpha.support-worktrees.b634907 → 0.3.1-alpha.versioning.9ac5f50

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 (268) hide show
  1. package/dist/{add-collection-CxzzDG4z.mjs → add-collection-Dmd-uNeU.mjs} +6 -10
  2. package/dist/{alert-CQ7Az16h.mjs → alert-D1u2MVZj.mjs} +7 -7
  3. package/dist/{alerts-DmwyyBfW.mjs → alerts-DcBjcfEE.mjs} +7 -8
  4. package/dist/{append-B0avMkvW.mjs → append-B9Htvmab.mjs} +5 -6
  5. package/dist/{archive-CMTHh4-w.mjs → archive-B660RguB.mjs} +4 -5
  6. package/dist/{archive-THcEfy9B.mjs → archive-BNivAYGr.mjs} +5 -6
  7. package/dist/{archive-DCyeRNfV.mjs → archive-BUoYMkxO.mjs} +4 -5
  8. package/dist/{archive-BZEu6UfT.mjs → archive-BVmFGFwG.mjs} +6 -7
  9. package/dist/archive-Bf014rFm.mjs +32 -0
  10. package/dist/{archive-DFofUIEC.mjs → archive-BmsZFOZY.mjs} +4 -5
  11. package/dist/archive-CNif6BKy.mjs +32 -0
  12. package/dist/{archive-BPSNe0Ul.mjs → archive-CgmidYZV.mjs} +4 -5
  13. package/dist/{archive-Cvrkz8F8.mjs → archive-CvU2z5192.mjs} +5 -6
  14. package/dist/{archive-BQ50OZ7y.mjs → archive-DhDQIKR_.mjs} +4 -5
  15. package/dist/{archive-BVblae-p.mjs → archive-bPdDITuY.mjs} +4 -5
  16. package/dist/{auth-BEEkuu4J.mjs → auth-CefYEPP5.mjs} +5 -5
  17. package/dist/{body-DxRSAMNC.mjs → body-C7m9q4cm.mjs} +3 -3
  18. package/dist/{branches-CmWc8NyL.mjs → branches-pz04OjF2.mjs} +4 -8
  19. package/dist/{cancel-DrQqmxvn.mjs → cancel-CNLnv19e.mjs} +4 -5
  20. package/dist/cancel-task-DbnxSh7U.mjs +25 -0
  21. package/dist/card-BRarvKYX.mjs +24 -0
  22. package/dist/{card-CrBGUkGQ.mjs → card-DZxRmver.mjs} +0 -1
  23. package/dist/{card-BEeafd4Y.mjs → card-zyUkr2nS.mjs} +1 -1
  24. package/dist/{cards-M_6X8wCI.mjs → cards-DtYlVoGP.mjs} +5 -6
  25. package/dist/cli.mjs +566 -170
  26. package/dist/{client-DYD8WZYy.mjs → client-Bv7Iwdvh.mjs} +285 -269
  27. package/dist/collection-CKeO8X7U.mjs +20 -0
  28. package/dist/{collection-CJHqsFKP.mjs → collection-DALwHnbz.mjs} +1 -1
  29. package/dist/{collection-BxE7OzcQ.mjs → collection-WFdBeyqa.mjs} +4 -7
  30. package/dist/{collection-namespace-CEoQ7G08.mjs → collection-namespace-CvT0TIZA.mjs} +2 -2
  31. package/dist/{content-translation-C8MlXPOF.mjs → content-translation-D7POzJJ6.mjs} +3 -3
  32. package/dist/{create-CoubLR5o.mjs → create-BEE8uvz2.mjs} +9 -6
  33. package/dist/{create-D0anrINz.mjs → create-Bh2j733n.mjs} +11 -16
  34. package/dist/{create-BupBEwR2.mjs → create-Bwg-5p08.mjs} +8 -13
  35. package/dist/{create-ByuJ6T4k.mjs → create-CGPle4nE.mjs} +7 -8
  36. package/dist/{create-hTc131aX.mjs → create-CGgPnb7L.mjs} +4 -5
  37. package/dist/{create-CY-SzM66.mjs → create-CLgalJUe.mjs} +12 -17
  38. package/dist/{create-C2XFfbjx.mjs → create-CN24yp_W.mjs} +6 -7
  39. package/dist/{create-BLWwN0uw.mjs → create-CuYGZ4gu2.mjs} +5 -6
  40. package/dist/{create-CJ7Am4Gc.mjs → create-DGHILnnk.mjs} +5 -6
  41. package/dist/{create-z-oMrlfT.mjs → create-DYd_o9BD.mjs} +5 -9
  42. package/dist/{create-BqpkCjx4.mjs → create-DhDREiiy.mjs} +4 -5
  43. package/dist/{create-myI6doga.mjs → create-Di4YvIbK.mjs} +5 -6
  44. package/dist/{create-ldrghMd1.mjs → create-DnqnjGGf.mjs} +4 -5
  45. package/dist/{create-C7iooS6W.mjs → create-Ds-DnSBe.mjs} +9 -15
  46. package/dist/{create-BA_tTDEk.mjs → create-JOXq0ULN.mjs} +5 -6
  47. package/dist/create-branch-DWcxC30N.mjs +31 -0
  48. package/dist/{csv-DBNzJiWK.mjs → csv-CUQvcCEk.mjs} +5 -6
  49. package/dist/{current-task-YzemU0Ic.mjs → current-task-D6P0eL21.mjs} +8 -16
  50. package/dist/{dashboard-B1mpfCq_.mjs → dashboard-BudI952R.mjs} +10 -10
  51. package/dist/{db-1tLH3nYI.mjs → db-C7UTd-6P.mjs} +7 -7
  52. package/dist/{delete-CD_-B4Kq.mjs → delete-DSxqbcFE.mjs} +5 -6
  53. package/dist/{delete-QNgBV6eS.mjs → delete-DbZZKcYj.mjs} +6 -11
  54. package/dist/{delete-DjAUp9mk.mjs → delete-Ds-zGh9C.mjs} +5 -6
  55. package/dist/{delete-eAUB7p-f.mjs → delete-Ud6iliGM.mjs} +6 -11
  56. package/dist/{delete-CpKH5ia4.mjs → delete-_IHffP-A.mjs} +5 -6
  57. package/dist/{delete-runtime-b2_ZMSjj.mjs → delete-runtime-BjHL1ryM.mjs} +1 -2
  58. package/dist/{delete-table-DamlxnSO.mjs → delete-table-DtXH6IN5.mjs} +6 -11
  59. package/dist/dependencies-CR1dlq-A.mjs +36 -0
  60. package/dist/dirty-CYxnOnh0.mjs +28 -0
  61. package/dist/document-BoILnE_1.mjs +19 -0
  62. package/dist/{download-C4v7u-AV.mjs → download-DPpmmYQe.mjs} +3 -7
  63. package/dist/{eid-CP35PdEF.mjs → eid-D-BbtWjt.mjs} +4 -6
  64. package/dist/{events-DmbzKIh_.mjs → events-CJEnn8WE.mjs} +5 -6
  65. package/dist/{export-i8D6laBG.mjs → export-BOgyuIOQ.mjs} +13 -29
  66. package/dist/{field-BKn9bt7I.mjs → field-CzHBOPER.mjs} +5 -5
  67. package/dist/{fields-8_p81BqN.mjs → fields-Bwgkrvus.mjs} +5 -6
  68. package/dist/get-B89DUSvw.mjs +31 -0
  69. package/dist/get-BL90QC64.mjs +36 -0
  70. package/dist/get-BLJSCw53.mjs +31 -0
  71. package/dist/{get-BBOfshz1.mjs → get-BOLwso0V.mjs} +6 -7
  72. package/dist/{get-BvW21ujw.mjs → get-BaPadzdM.mjs} +4 -5
  73. package/dist/{get-vvs0qzzM.mjs → get-BfVCLBqc.mjs} +4 -5
  74. package/dist/{get-B0g6VMBC.mjs → get-C1ZdOvMm.mjs} +4 -5
  75. package/dist/{get-N4dOaTsp.mjs → get-CLu4yzMp2.mjs} +5 -6
  76. package/dist/get-COwdtskS.mjs +27 -0
  77. package/dist/{get-CPTbySa7.mjs → get-CWfIiXwL.mjs} +4 -5
  78. package/dist/get-CqQ-pf0q.mjs +89 -0
  79. package/dist/{get-DnCE7K0y.mjs → get-CvIgxPXV.mjs} +5 -6
  80. package/dist/{get-vrccOMBk.mjs → get-D4OTJblo.mjs} +4 -5
  81. package/dist/{get-BbHPFNqr.mjs → get-D8lHwu4-.mjs} +4 -5
  82. package/dist/{get-CWf46UFu.mjs → get-DVi3a2nm.mjs} +6 -7
  83. package/dist/{get-DFkbi5L3.mjs → get-DgnYF7LR.mjs} +4 -5
  84. package/dist/{get-BHGgXqUq.mjs → get-DsKmZfM2.mjs} +4 -5
  85. package/dist/{get-CAzSP-7o.mjs → get-DyyPiiaB.mjs} +4 -5
  86. package/dist/{get-Bds6Izxk.mjs → get-Eqq13YY-.mjs} +4 -5
  87. package/dist/{get-run-4Ng8_awa.mjs → get-run-Iya0Yw9s.mjs} +6 -7
  88. package/dist/{git-sync-DLzJrdMi.mjs → git-sync-BDnxPrqU.mjs} +3 -22
  89. package/dist/git-sync-CdN0Maun.mjs +28 -0
  90. package/dist/{git-sync-LQIVMNxO.mjs → git-sync-DxD_ng48.mjs} +2 -31
  91. package/dist/{group-YN6jj2AN.mjs → group-CmVCLBDz.mjs} +3 -3
  92. package/dist/{has-remote-changes-BXPGI9xG.mjs → has-remote-changes-DfJUMP8F.mjs} +7 -18
  93. package/dist/{import-BoxOkA-G.mjs → import-FEAx-Y5A.mjs} +12 -32
  94. package/dist/{input-DH9i67x_.mjs → input-DFZ_qGW_.mjs} +1 -1
  95. package/dist/is-dirty-BsYjBSXG.mjs +32 -0
  96. package/dist/{items-Cv6iAzrI.mjs → items-D4rstE12.mjs} +10 -18
  97. package/dist/{key-BEhqIzIQ.mjs → key-BmWundO3.mjs} +1 -1
  98. package/dist/{library-fhVn1KDC.mjs → library-CmctxHjv.mjs} +1 -1
  99. package/dist/library-DXB8sm4r.mjs +81 -0
  100. package/dist/{library-CRaOhJnj.mjs → library-uzyHWBap.mjs} +5 -5
  101. package/dist/{list-DOaWCx8S.mjs → list-1DkkU82x.mjs} +17 -25
  102. package/dist/{list-BLJkJp5a.mjs → list-B7tqNV8B.mjs} +4 -5
  103. package/dist/{list-WSJLnunb.mjs → list-BRpPbvyS.mjs} +4 -5
  104. package/dist/{list-BBp9XjYs.mjs → list-BXL8HFr_.mjs} +4 -5
  105. package/dist/{list-L2U1l6R4.mjs → list-Bjj0z5BS.mjs} +6 -7
  106. package/dist/{list-DhrapAcy.mjs → list-BmMi_wPD.mjs} +5 -6
  107. package/dist/list-CC1M_n6Z.mjs +28 -0
  108. package/dist/list-CQy0z7f9.mjs +28 -0
  109. package/dist/{list-BwkfWtP2.mjs → list-D_zvX0ms.mjs} +4 -5
  110. package/dist/{list--2T-GUEF.mjs → list-DeNGm9G4.mjs} +5 -6
  111. package/dist/list-Dgm6TkqR.mjs +38 -0
  112. package/dist/list-DoTiQc3D.mjs +36 -0
  113. package/dist/{list-C8J3n8B8.mjs → list-DrS3ePsv.mjs} +4 -5
  114. package/dist/list-bN0RC14-.mjs +59 -0
  115. package/dist/{list-oAAgU5uE.mjs → list-ndIl9XqV.mjs} +11 -18
  116. package/dist/{list-tutXEQRW.mjs → list-sQcA4g05.mjs} +5 -6
  117. package/dist/{list-9uvk9dIA.mjs → list-squb_ioH.mjs} +4 -5
  118. package/dist/{list-DOZNpX4b.mjs → list-xMfCeuZc.mjs} +5 -6
  119. package/dist/{login-DqWRF3Og.mjs → login-D_1-zE4A.mjs} +15 -13
  120. package/dist/{logout-ChCz1bkf.mjs → logout-DPi2q1Wu.mjs} +3 -5
  121. package/dist/{measure-C5dIdFj1.mjs → measure-CdA8Nl3Z.mjs} +6 -6
  122. package/dist/{notification-DVrLkjFT.mjs → notification-Fcq1fIPw.mjs} +1 -1
  123. package/dist/{parameter-values-Dy4cBs5y.mjs → parameter-values-C6dj6I4g.mjs} +4 -6
  124. package/dist/{parse-enum-D0Jfm_Bz.mjs → parse-enum-B1t8S194.mjs} +1 -1
  125. package/dist/{parse-id-DDCn3VXx.mjs → parse-id-DR8aUSdL.mjs} +1 -1
  126. package/dist/{parse-ref-Wv21Roup.mjs → parse-ref-BJ_Q0tNW.mjs} +3 -7
  127. package/dist/{path-IYhuzjQV.mjs → path-B96DI8u2.mjs} +5 -6
  128. package/dist/{poll-75SvT7Zv.mjs → poll-By46YQ5J.mjs} +2 -2
  129. package/dist/{preflight-HLUVr2Yf.mjs → preflight-Bl1oitm8.mjs} +3 -4
  130. package/dist/{process-DBOOrmET.mjs → process-CcQM4qPv.mjs} +1 -1
  131. package/dist/{publish-CMkCSt8i.mjs → publish-BKJYvxif.mjs} +9 -10
  132. package/dist/{pulse-a-83M4DV.mjs → pulse-DhG6I9mI.mjs} +1 -1
  133. package/dist/{query-tWQAV9pb.mjs → query-BKSM-pbi.mjs} +9 -11
  134. package/dist/{query-Bka77J62.mjs → query-qBHjZQc_.mjs} +7 -10
  135. package/dist/{query-result-E4Q-Gra6.mjs → query-result-DBDwk8TS.mjs} +1 -1
  136. package/dist/{remove-collection-BV9wRQZD.mjs → remove-collection-BWFW7Rn6.mjs} +6 -10
  137. package/dist/{render-DHjCcUXn.mjs → render-DmykmrFB.mjs} +11 -8
  138. package/dist/{replace-mt47dlRV.mjs → replace-BmAqD3zY.mjs} +5 -6
  139. package/dist/{rescan-values-6cRjcpTs.mjs → rescan-values-BrCLrihF.mjs} +4 -5
  140. package/dist/{run-DI_pDxji.mjs → run-CtbzjDKY.mjs} +6 -7
  141. package/dist/{run-BmGmC-GQ.mjs → run-q5Y44Fxj.mjs} +26 -15
  142. package/dist/{runs-9Fu0mug5.mjs → runs-JFlbezkQ.mjs} +7 -8
  143. package/dist/{runtime-CNAZ_FuR.mjs → runtime-BQiGgbgZ.mjs} +851 -361
  144. package/dist/{schema-tables-CLG0mtQb.mjs → schema-tables-Bzx2ShyE.mjs} +5 -6
  145. package/dist/{schemas-Cm5NWy59.mjs → schemas-ww5mU2AS.mjs} +5 -6
  146. package/dist/{search-CljYyf2F.mjs → search-J4RwCof-.mjs} +9 -15
  147. package/dist/{segment-IRzlQggt.mjs → segment-XXTjU0eG.mjs} +6 -6
  148. package/dist/{selectors-D4iOP5uB.mjs → selectors-BAAZMi43.mjs} +3 -3
  149. package/dist/{send-D7DBnQbu.mjs → send-BmpDlw9O.mjs} +4 -5
  150. package/dist/{set-DKN8fuC6.mjs → set-DUWrSza9.mjs} +5 -6
  151. package/dist/{set-active-CkE0Eiqh.mjs → set-active-BiUlbNI5.mjs} +5 -6
  152. package/dist/{setting-CN4l8N-b.mjs → setting-B1KBQN3M.mjs} +4 -4
  153. package/dist/{setup-BpTptmdO.mjs → setup-CVaNVwOd.mjs} +4 -5
  154. package/dist/{signal-CMd0EFUa.mjs → signal-GhGmuHfx.mjs} +11 -2
  155. package/dist/{list-CtZAu4im.mjs → skill-list-DTnDhnL5.mjs} +17 -47
  156. package/dist/{skills-BSAiLI3Z.mjs → skills-BWrAlj9l.mjs} +3 -3
  157. package/dist/{skills-hVKSOCUf.mjs → skills-DkDsSH5F.mjs} +102 -14
  158. package/dist/snippet-CG75L2DS.mjs +19 -0
  159. package/dist/{snippet-BxgvQ09J.mjs → snippet-CyKAgIZl.mjs} +2 -5
  160. package/dist/{snippet-DecHB4Dn.mjs → snippet-oJLaYW9V.mjs} +1 -1
  161. package/dist/{stash-DJs6A6BA.mjs → stash-DMm8YF8V.mjs} +7 -12
  162. package/dist/{status-N_2EaWb7.mjs → status-BzEQjQ_t.mjs} +15 -23
  163. package/dist/{status-DtwBDRtc.mjs → status-ClWsQD6v.mjs} +22 -48
  164. package/dist/{subscription-BnGDp1oy.mjs → subscription-CdFn2hre.mjs} +6 -6
  165. package/dist/{subscriptions-BfFwV__x.mjs → subscriptions-DBda1pE5.mjs} +7 -8
  166. package/dist/{summary-CHiq-4mz.mjs → summary-B4GPiuqD.mjs} +4 -5
  167. package/dist/{sync-schema-DhnM-rpm.mjs → sync-schema-DsIM5g2U.mjs} +5 -6
  168. package/dist/{sync-task-G1K47Nvn.mjs → sync-task-BACcrs0i.mjs} +1 -1
  169. package/dist/{table-BQaiCSNS.mjs → table-D4Alrrwh.mjs} +5 -5
  170. package/dist/timeline-DmM0BuX8.mjs +21 -0
  171. package/dist/{timeline-event-B7H1y8s8.mjs → timeline-event-DWIh3Tdt.mjs} +6 -6
  172. package/dist/transform-BcV_XlSX.mjs +28 -0
  173. package/dist/{transform-CiDOJGBW.mjs → transform-Bk0D0nIs.mjs} +2 -2
  174. package/dist/{transform-BvOEn41C.mjs → transform-DpuG-ON3.mjs} +25 -7
  175. package/dist/{transform-job-50GZHhKH.mjs → transform-job-AaMZRxAq.mjs} +1 -1
  176. package/dist/{transform-job-DRrK28IH.mjs → transform-job-CCguL6LP.mjs} +41 -4
  177. package/dist/transform-job-CjtwBGoM.mjs +22 -0
  178. package/dist/{transform-tag-jBVd6wXd.mjs → transform-tag-CcElGp3C.mjs} +4 -9
  179. package/dist/{transform-tag-Dip51YBa.mjs → transform-tag-DJ3_bksm.mjs} +5 -5
  180. package/dist/{transform-tag-DiXWRCQG.mjs → transform-tag-Dmb4u3-Q.mjs} +1 -1
  181. package/dist/{transforms-C-jYgS6z.mjs → transforms-Dg2MfB2a.mjs} +7 -8
  182. package/dist/tree-BQL0f7YX.mjs +26 -0
  183. package/dist/{unpublish-BokbnLng.mjs → unpublish-DfSvb_Rs.mjs} +4 -8
  184. package/dist/{update-D9OTkZhw.mjs → update-B-hRR8gW.mjs} +5 -6
  185. package/dist/{update-CpLEEbiJ.mjs → update-BCgAyfj_.mjs} +8 -9
  186. package/dist/{update-BCGE5UYC.mjs → update-Bhmli02m.mjs} +6 -7
  187. package/dist/{update-rkbpH0lF.mjs → update-BxIyFtrX.mjs} +5 -6
  188. package/dist/{update-AZSXMJqu.mjs → update-CDo0Orvu.mjs} +9 -15
  189. package/dist/{update-B9DcRSBQ.mjs → update-CKoBDTL7.mjs} +13 -19
  190. package/dist/{update-CfQoYVTc.mjs → update-CiYxcf8M.mjs} +7 -8
  191. package/dist/{update-e7lyQPxq.mjs → update-Cr5zHb0D.mjs} +9 -15
  192. package/dist/{update-CPEU8ZEu.mjs → update-CtDHMxW8.mjs} +6 -7
  193. package/dist/{update-BBQInyiJ.mjs → update-D1QdfpKR.mjs} +6 -7
  194. package/dist/{update-C4PbAYgW.mjs → update-D4qdTlLF.mjs} +5 -6
  195. package/dist/{update-BRXKLeJH.mjs → update-DBGaJDsj.mjs} +5 -6
  196. package/dist/{update-BErxnZrj.mjs → update-Izqip6jY.mjs} +6 -7
  197. package/dist/{update-Bc8s1TL1.mjs → update-NZhIjTCf.mjs} +5 -6
  198. package/dist/{update-dashcard-St-dGcE3.mjs → update-dashcard-D5b971AO.mjs} +5 -6
  199. package/dist/{update-CKL2FtoX.mjs → update-sYLQIUgh.mjs} +6 -7
  200. package/dist/{upgrade-CUoRHfVg.mjs → upgrade-CD1xtsIv.mjs} +6 -9
  201. package/dist/{upload-CD555ui1.mjs → upload-BUd3MG90.mjs} +2 -2
  202. package/dist/upload-DzGTlldn.mjs +13 -0
  203. package/dist/{upload-BPd1Uzxc.mjs → upload-akKFxpVA.mjs} +4 -8
  204. package/dist/{uuid-CFN8LIkP.mjs → uuid-oVdJ62eA.mjs} +3 -5
  205. package/dist/{validate-BWchyW0V.mjs → validate-CWd6l6KZ.mjs} +1 -1
  206. package/dist/{validate-query-Chc43ezW.mjs → validate-query-Boi8-cAP.mjs} +2 -3
  207. package/dist/{values-BL_U-Zdw.mjs → values-DLwZl-P8.mjs} +4 -5
  208. package/dist/{verify-DnBaRmkI.mjs → verify-CH9Tw8yv.mjs} +3 -18
  209. package/dist/{wait-flags-DzytMEG8.mjs → wait-flags-DiQ_kRjZ.mjs} +3 -3
  210. package/dist/{wait-mPoOZxrw.mjs → wait-rfTdQWdi.mjs} +9 -17
  211. package/dist/{window-DSb1tqSe.mjs → window-BkvrP0gB.mjs} +1 -1
  212. package/package.json +1 -1
  213. package/skill-data/core/SKILL.md +24 -16
  214. package/skill-data/data-workflow/references/building-clean-tables.md +6 -2
  215. package/skill-data/data-workflow/references/reusable-definitions.md +11 -3
  216. package/skill-data/document/SKILL.md +4 -1
  217. package/skill-data/git-sync/SKILL.md +6 -91
  218. package/skill-data/mbql/SKILL.md +1 -1
  219. package/skill-data/mbql/references/operators.md +20 -15
  220. package/skill-data/metadata/SKILL.md +1 -1
  221. package/skill-data/metadata/references/semantic-types.md +7 -1
  222. package/skill-data/native-sql/references/template-tags.md +6 -2
  223. package/skill-data/notification/SKILL.md +7 -1
  224. package/skill-data/transform/SKILL.md +13 -11
  225. package/skill-data/visualization/SKILL.md +11 -3
  226. package/skill-data/visualization/references/settings.md +6 -4
  227. package/skills/metabase-cli/SKILL.md +1 -1
  228. package/dist/archive-CqOKKrb2.mjs +0 -38
  229. package/dist/archive-DCjdICg7.mjs +0 -38
  230. package/dist/branch-BSeGrtP7.mjs +0 -28
  231. package/dist/cancel-task-BMQXtjW5.mjs +0 -34
  232. package/dist/card-RlzLDB2z.mjs +0 -24
  233. package/dist/collection-Bhe20ckt.mjs +0 -20
  234. package/dist/create-DwrhcI8r2.mjs +0 -144
  235. package/dist/create-branch-B3BMpF1g.mjs +0 -49
  236. package/dist/delete-D_OgiI4v.mjs +0 -86
  237. package/dist/dependencies-DEx0BsZ3.mjs +0 -41
  238. package/dist/dirty-dC1-Ud0G.mjs +0 -40
  239. package/dist/document-DOJbBWLF.mjs +0 -19
  240. package/dist/export-preflight-B5MvYhm3.mjs +0 -67
  241. package/dist/get-CNEQK0-9.mjs +0 -81
  242. package/dist/get-Cfagmy1i.mjs +0 -42
  243. package/dist/get-DvLuY5Xu.mjs +0 -38
  244. package/dist/get-DwdMvWXU.mjs +0 -44
  245. package/dist/get-jV8G90Zy.mjs +0 -42
  246. package/dist/get-mGEv-kag.mjs +0 -33
  247. package/dist/git-sync-DjoaNmRM.mjs +0 -29
  248. package/dist/is-dirty-Cwxq4_gd.mjs +0 -44
  249. package/dist/library-Cfw6eF35.mjs +0 -19
  250. package/dist/list-5Iojbr_p.mjs +0 -37
  251. package/dist/list-BD4onDqO.mjs +0 -37
  252. package/dist/list-C2yL7-CH.mjs +0 -45
  253. package/dist/list-CbbKip6U.mjs +0 -32
  254. package/dist/list-Dg2XeDON.mjs +0 -47
  255. package/dist/network-error-D6CiOEBw.mjs +0 -431
  256. package/dist/pin-BuZ_kg-u.mjs +0 -62
  257. package/dist/predicates-Bkm2IoeX.mjs +0 -170
  258. package/dist/scope-DsGuWG5w.mjs +0 -11
  259. package/dist/snippet-LlHz3FdJ.mjs +0 -19
  260. package/dist/timeline-C2VW0Ph6.mjs +0 -21
  261. package/dist/transform-DAf0Y02t.mjs +0 -28
  262. package/dist/transform-job-ntiT5Rrh.mjs +0 -22
  263. package/dist/tree-DtyJhD54.mjs +0 -36
  264. package/dist/unpin-DxbXmLtW.mjs +0 -45
  265. package/dist/upload-Dc3QLhZw.mjs +0 -13
  266. package/dist/worktree-ChdDlG3Q.mjs +0 -25
  267. package/dist/worktree-DC0kTxxQ.mjs +0 -20
  268. package/dist/worktree-xAro1xAB.mjs +0 -24
@@ -1,7 +1,7 @@
1
- import { G as listEnvelopeSchema, H as profileFlag, R as connectionFlags, V as outputFlags, f as renderList, z as listFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as parseId } from "./parse-id-DDCn3VXx.mjs";
4
- import { n as windowList } from "./window-DSb1tqSe.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, P as listFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
4
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
5
5
  import { n as TableCompact } from "./table-CeeTJgQb.mjs";
6
6
  import { t as tableView } from "./table-CsIJNPFf.mjs";
7
7
  //#region src/commands/db/schema-tables.ts
@@ -11,8 +11,7 @@ var schema_tables_default = defineMetabaseCommand({
11
11
  name: "schema-tables",
12
12
  description: "List tables in a database schema"
13
13
  },
14
- capabilities: { minVersion: 58 },
15
- worktree: "any",
14
+ requires: ["database.schemaTables"],
16
15
  args: {
17
16
  ...outputFlags,
18
17
  ...listFlags,
@@ -1,7 +1,7 @@
1
- import { G as listEnvelopeSchema, H as profileFlag, R as connectionFlags, V as outputFlags, f as renderList, z as listFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as parseId } from "./parse-id-DDCn3VXx.mjs";
4
- import { n as windowList } from "./window-DSb1tqSe.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, P as listFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
4
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/db/schemas.ts
7
7
  const SchemaName = z.object({ name: z.string() });
@@ -18,8 +18,7 @@ var schemas_default = defineMetabaseCommand({
18
18
  name: "schemas",
19
19
  description: "List schemas in a database"
20
20
  },
21
- capabilities: { minVersion: 58 },
22
- worktree: "any",
21
+ requires: ["database.schemas"],
23
22
  args: {
24
23
  ...outputFlags,
25
24
  ...listFlags,
@@ -1,7 +1,7 @@
1
- import { B as listFlagsWithDefaultLimit, G as listEnvelopeSchema, H as profileFlag, R as connectionFlags, U as worktreeFlag, V as outputFlags, f as renderList } from "./cli.mjs";
2
- import { r as WORKTREE_SCOPE_DETAIL, s as scopeQuery, t as defineMetabaseCommand, u as parseEnumCsv } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as parseId } from "./parse-id-DDCn3VXx.mjs";
4
- import { r as windowServerPage } from "./window-DSb1tqSe.mjs";
1
+ import { F as listFlagsWithDefaultLimit, I as outputFlags, L as profileFlag, N as connectionFlags, o as renderList, z as listEnvelopeSchema } from "./cli.mjs";
2
+ import { i as parseEnumCsv, t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
4
+ import { r as windowServerPage } from "./window-BkvrP0gB.mjs";
5
5
  import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-DFBwUc6d.mjs";
6
6
  //#region src/output/views/search.ts
7
7
  const searchResultView = {
@@ -31,19 +31,17 @@ var search_default = defineMetabaseCommand({
31
31
  name: "search",
32
32
  description: "Search Metabase content (cards, dashboards, collections, …)"
33
33
  },
34
- details: "Ranks content against a query string. To simply enumerate a resource, prefer its `… list` verb. " + WORKTREE_SCOPE_DETAIL,
34
+ details: "Ranks content against a query string. To simply enumerate a resource, prefer its `… list` verb.",
35
35
  skills: [{
36
36
  skill: "core",
37
37
  purpose: "search vs. list"
38
38
  }],
39
- capabilities: { minVersion: 58 },
40
- worktree: "scoped",
39
+ requires: ["search.query"],
41
40
  args: {
42
41
  ...outputFlags,
43
42
  ...listFlagsWithDefaultLimit(DEFAULT_LIMIT),
44
43
  ...profileFlag,
45
44
  ...connectionFlags,
46
- ...worktreeFlag,
47
45
  query: {
48
46
  type: "positional",
49
47
  description: "Search query string",
@@ -72,17 +70,13 @@ var search_default = defineMetabaseCommand({
72
70
  examples: [
73
71
  "mb search orders",
74
72
  "mb search --models card,dashboard --limit 10 --json",
75
- "mb search products --archived",
76
- "mb search orders --worktree feat/transforms"
73
+ "mb search products --archived"
77
74
  ],
78
- async run({ args, ctx, getClient, getWorktree }) {
75
+ async run({ args, ctx, getClient }) {
79
76
  const tableDbIdRaw = args["db-id"];
80
77
  const tableDbId = tableDbIdRaw ? parseId(tableDbIdRaw, "--db-id") : void 0;
81
78
  const models = parseEnumCsv(args.models, SearchModel, "--models");
82
- const client = await getClient();
83
- const scope = await getWorktree();
84
- const { data, total } = await client.search.query({
85
- ...scopeQuery(scope),
79
+ const { data, total } = await (await getClient()).search.query({
86
80
  q: nonEmpty(args.query),
87
81
  models,
88
82
  archived: args.archived ? true : void 0,
@@ -1,4 +1,4 @@
1
- import { t as defineCommandGroup } from "./group-YN6jj2AN.mjs";
1
+ import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
2
2
  //#region src/commands/segment/index.ts
3
3
  var segment_default = defineCommandGroup({
4
4
  name: "segment",
@@ -11,11 +11,11 @@ var segment_default = defineCommandGroup({
11
11
  purpose: "define reusable segments"
12
12
  }],
13
13
  subCommands: {
14
- list: () => import("./list-BLJkJp5a.mjs").then((mod) => mod.default),
15
- get: () => import("./get-B0g6VMBC.mjs").then((mod) => mod.default),
16
- create: () => import("./create-BA_tTDEk.mjs").then((mod) => mod.default),
17
- update: () => import("./update-CKL2FtoX.mjs").then((mod) => mod.default),
18
- archive: () => import("./archive-DFofUIEC.mjs").then((mod) => mod.default)
14
+ list: () => import("./list-B7tqNV8B.mjs").then((mod) => mod.default),
15
+ get: () => import("./get-C1ZdOvMm.mjs").then((mod) => mod.default),
16
+ create: () => import("./create-JOXq0ULN.mjs").then((mod) => mod.default),
17
+ update: () => import("./update-sYLQIUgh.mjs").then((mod) => mod.default),
18
+ archive: () => import("./archive-BmsZFOZY.mjs").then((mod) => mod.default)
19
19
  }
20
20
  });
21
21
  //#endregion
@@ -1,6 +1,6 @@
1
- import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
2
- import { c as parseCsv } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as parseId } from "./parse-id-DDCn3VXx.mjs";
1
+ import { K as ConfigError } from "./cli.mjs";
2
+ import { n as parseCsv } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
4
4
  //#region src/commands/library/selectors.ts
5
5
  const tableSelectorFlags = {
6
6
  "table-ids": {
@@ -1,6 +1,6 @@
1
- import { H as profileFlag, R as connectionFlags, V as outputFlags, p as renderSummary } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as parseId } from "./parse-id-DDCn3VXx.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as parseId } from "./parse-id-DR8aUSdL.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/commands/alert/send.ts
6
6
  const AlertSendResult = z.object({
@@ -23,8 +23,7 @@ var send_default = defineMetabaseCommand({
23
23
  description: "Send a question alert now, off-schedule"
24
24
  },
25
25
  details: "Delivers to every handler on the alert, ignoring its send condition and schedule. Requires the channel to be configured on the server (email needs SMTP set up).",
26
- capabilities: { minVersion: 58 },
27
- worktree: "main-only",
26
+ requires: ["notification.send"],
28
27
  args: {
29
28
  ...outputFlags,
30
29
  ...profileFlag,
@@ -1,9 +1,9 @@
1
- import { H as profileFlag, R as connectionFlags, V as outputFlags, _ as formatScalar, p as renderSummary } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as readBody } from "./body-DxRSAMNC.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary, f as formatScalar } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as readBody } from "./body-C7m9q4cm.mjs";
4
4
  import { r as SettingValue } from "./setting-DTiLCW8g.mjs";
5
5
  import { t as settingValueView } from "./setting-CwRYgHYN.mjs";
6
- import { t as parseSettingKey } from "./key-BEhqIzIQ.mjs";
6
+ import { t as parseSettingKey } from "./key-BmWundO3.mjs";
7
7
  import { z } from "zod";
8
8
  //#region src/commands/setting/set.ts
9
9
  const SettingValueInput = z.unknown().describe("Any JSON value; the setting's own type constraints are enforced server-side");
@@ -12,8 +12,7 @@ var set_default = defineMetabaseCommand({
12
12
  name: "set",
13
13
  description: "Set a setting value (parsed strictly as JSON)"
14
14
  },
15
- capabilities: { minVersion: 58 },
16
- worktree: "main-only",
15
+ requires: ["setting.set"],
17
16
  args: {
18
17
  ...outputFlags,
19
18
  ...profileFlag,
@@ -1,7 +1,7 @@
1
- import { H as profileFlag, R as connectionFlags, V as outputFlags, p as renderSummary } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { n as TransformJobActiveResult } from "./transform-job-DRrK28IH.mjs";
4
- import { t as parseEnumFlag } from "./parse-enum-D0Jfm_Bz.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { n as TransformJobActiveResult } from "./transform-job-CCguL6LP.mjs";
4
+ import { t as parseEnumFlag } from "./parse-enum-B1t8S194.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/transform-job/set-active.ts
7
7
  const ActiveWord = z.enum(["true", "false"]);
@@ -21,8 +21,7 @@ var set_active_default = defineMetabaseCommand({
21
21
  description: "Activate or deactivate every transform job"
22
22
  },
23
23
  details: "Flips the active flag on every transform job at once. Inactive jobs do not run on schedule; manual runs ignore the flag. Requires admin.",
24
- capabilities: { minVersion: 61 },
25
- worktree: "main-only",
24
+ requires: ["transformJob.setActive"],
26
25
  args: {
27
26
  ...outputFlags,
28
27
  ...profileFlag,
@@ -1,4 +1,4 @@
1
- import { t as defineCommandGroup } from "./group-YN6jj2AN.mjs";
1
+ import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
2
2
  //#region src/commands/setting/index.ts
3
3
  var setting_default = defineCommandGroup({
4
4
  name: "setting",
@@ -8,9 +8,9 @@ var setting_default = defineCommandGroup({
8
8
  purpose: "setting get/set JSON value quoting"
9
9
  }],
10
10
  subCommands: {
11
- list: () => import("./list-WSJLnunb.mjs").then((m) => m.default),
12
- get: () => import("./get-DFkbi5L3.mjs").then((m) => m.default),
13
- set: () => import("./set-DKN8fuC6.mjs").then((m) => m.default)
11
+ list: () => import("./list-BRpPbvyS.mjs").then((m) => m.default),
12
+ get: () => import("./get-DgnYF7LR.mjs").then((m) => m.default),
13
+ set: () => import("./set-DUWrSza9.mjs").then((m) => m.default)
14
14
  }
15
15
  });
16
16
  //#endregion
@@ -1,6 +1,6 @@
1
- import { H as profileFlag, R as connectionFlags, V as outputFlags, p as renderSummary } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { t as readBody } from "./body-DxRSAMNC.mjs";
1
+ import { I as outputFlags, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { t as readBody } from "./body-C7m9q4cm.mjs";
4
4
  import { t as bodyInputFlags } from "./body-flags-AqKpN01Y.mjs";
5
5
  import { n as SetupResult, r as SetupResultCompact, t as SetupInput } from "./setup-CO7QV-ao.mjs";
6
6
  //#region src/output/views/setup.ts
@@ -18,8 +18,7 @@ var setup_default = defineMetabaseCommand({
18
18
  name: "setup",
19
19
  description: "Complete the initial Metabase setup wizard with a default user"
20
20
  },
21
- capabilities: { minVersion: 58 },
22
- worktree: "main-only",
21
+ requires: ["setup.create"],
23
22
  args: {
24
23
  ...outputFlags,
25
24
  ...profileFlag,
@@ -1,4 +1,4 @@
1
- import { f as errorMessage, n as AbortError, o as MetabaseError } from "./predicates-Bkm2IoeX.mjs";
1
+ import { J as MetabaseError, W as AbortError, et as errorMessage } from "./cli.mjs";
2
2
  //#region ../client/src/signal.ts
3
3
  function combineAborts(...signals) {
4
4
  return AbortSignal.any(signals.filter((signal) => signal !== void 0));
@@ -12,5 +12,14 @@ function abortReason(signal) {
12
12
  if (reason instanceof Error || typeof reason === "string") return new AbortError(errorMessage(reason) || "aborted");
13
13
  return new AbortError("aborted");
14
14
  }
15
+ function untilAborted(promise, signal) {
16
+ if (signal === void 0) return promise;
17
+ throwIfAborted(signal);
18
+ return new Promise((resolve, reject) => {
19
+ const onAbort = () => reject(abortReason(signal));
20
+ signal.addEventListener("abort", onAbort, { once: true });
21
+ promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
22
+ });
23
+ }
15
24
  //#endregion
16
- export { throwIfAborted as n, combineAborts as t };
25
+ export { throwIfAborted as n, untilAborted as r, combineAborts as t };
@@ -1,9 +1,21 @@
1
- import { G as listEnvelopeSchema, T as warn, V as outputFlags, f as renderList, w as listTruncationNotice, z as listFlags } from "./cli.mjs";
2
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
3
- import { n as windowList } from "./window-DSb1tqSe.mjs";
4
- import { i as loadVisibleSkills } from "./skills-hVKSOCUf.mjs";
1
+ import { b as listTruncationNotice, x as warn } from "./cli.mjs";
2
+ import { tt as RequirementFailure } from "./runtime-BQiGgbgZ.mjs";
5
3
  import { z } from "zod";
6
4
  //#region src/output/skill-list.ts
5
+ const UnavailableSkillJson = z.object({
6
+ name: z.string(),
7
+ failure: RequirementFailure
8
+ });
9
+ const UnavailableSkills = z.array(UnavailableSkillJson).nullable().describe("Skills left out because the profile's server lacks a feature they need, each with the client's account of the first one missing; `null` when nothing was filtered — `--all` was passed, or the profile has no cached server probe to filter by.");
10
+ const unavailableSkillsFlag = { all: {
11
+ type: "boolean",
12
+ description: "Every non-hidden skill, in full, regardless of what the profile's server supports"
13
+ } };
14
+ function skillFilterNotices(unavailable, context) {
15
+ if (context.bypassed) return [];
16
+ if (unavailable === null) return [`Skills are unfiltered: profile "${context.profileName}" has no cached server probe (run \`mb auth login\` to record one).`];
17
+ return unavailable.map((skill) => `Skipped skill "${skill.name}": ${skill.failure.detail} Pass --all to print it anyway.`);
18
+ }
7
19
  const DEFAULT_TERMINAL_WIDTH = 80;
8
20
  const MIN_WRAP_WIDTH = 24;
9
21
  const DESCRIPTION_INDENT = " ";
@@ -54,46 +66,4 @@ function wrapWidth() {
54
66
  return typeof columns === "number" && columns > 0 ? columns : DEFAULT_TERMINAL_WIDTH;
55
67
  }
56
68
  //#endregion
57
- //#region src/commands/skills/list.ts
58
- const SkillSummary = z.object({
59
- name: z.string(),
60
- description: z.string()
61
- });
62
- const SkillListEnvelope = listEnvelopeSchema(SkillSummary);
63
- const skillSummaryView = {
64
- compactPick: SkillSummary,
65
- tableColumns: [{
66
- key: "name",
67
- label: "Name"
68
- }, {
69
- key: "description",
70
- label: "Description"
71
- }]
72
- };
73
- var list_default = defineMetabaseCommand({
74
- meta: {
75
- name: "list",
76
- description: "List CLI-bundled skills — always consult the matching skill before acting on a task; they are the source of truth for every workflow."
77
- },
78
- capabilities: null,
79
- worktree: "any",
80
- args: {
81
- ...outputFlags,
82
- ...listFlags
83
- },
84
- outputSchema: SkillListEnvelope,
85
- examples: ["mb skills list", "mb skills list --json"],
86
- run({ ctx }) {
87
- const envelope = windowList(loadVisibleSkills().map((s) => ({
88
- name: s.name,
89
- description: s.description
90
- })), ctx.range);
91
- if (ctx.format === "json" || ctx.fields !== void 0 || ctx.full) {
92
- renderList(envelope, skillSummaryView, ctx);
93
- return;
94
- }
95
- renderSkillList(envelope.data, ctx.maxBytes);
96
- }
97
- });
98
- //#endregion
99
- export { list_default as default };
69
+ export { unavailableSkillsFlag as i, renderSkillList as n, skillFilterNotices as r, UnavailableSkills as t };
@@ -7,9 +7,9 @@ var skills_default = defineCommand({
7
7
  },
8
8
  default: "list",
9
9
  subCommands: {
10
- list: () => import("./list-CtZAu4im.mjs").then((m) => m.default),
11
- get: () => import("./get-CNEQK0-9.mjs").then((m) => m.default),
12
- path: () => import("./path-IYhuzjQV.mjs").then((m) => m.default)
10
+ list: () => import("./list-bN0RC14-.mjs").then((m) => m.default),
11
+ get: () => import("./get-CqQ-pf0q.mjs").then((m) => m.default),
12
+ path: () => import("./path-B96DI8u2.mjs").then((m) => m.default)
13
13
  }
14
14
  });
15
15
  //#endregion
@@ -1,11 +1,16 @@
1
- import { d as ValidationError, f as errorMessage, i as ConfigError, p as isFileNotFoundError } from "./predicates-Bkm2IoeX.mjs";
2
- import { P as readEnv, k as ENV_SKILLS_DIR } from "./cli.mjs";
1
+ import { $ as ValidationError, K as ConfigError, T as ENV_SKILLS_DIR, et as errorMessage, k as readEnv, pt as isFeatureName, tt as isFileNotFoundError, ut as FEATURE_NAMES } from "./cli.mjs";
2
+ import { Z as checkFeatures, n as parseCsv } from "./runtime-BQiGgbgZ.mjs";
3
3
  import { z } from "zod";
4
4
  import { closeSync, openSync, readFileSync, readSync, readdirSync, statSync } from "node:fs";
5
5
  import { dirname, join, resolve } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { YAMLParseError, parse } from "yaml";
8
8
  //#region src/runtime/yaml.ts
9
+ function parseYaml(input, schema, opts = {}) {
10
+ const result = parseYamlResult(input, schema, opts);
11
+ if (!result.ok) throw result.error;
12
+ return result.value;
13
+ }
9
14
  function parseYamlResult(input, schema, opts = {}) {
10
15
  const sourcePrefix = opts.source ? `${opts.source}: ` : "";
11
16
  let raw;
@@ -39,7 +44,8 @@ function parseYamlResult(input, schema, opts = {}) {
39
44
  const Frontmatter = z.object({
40
45
  name: z.string().min(1),
41
46
  description: z.string().default(""),
42
- hidden: z.boolean().default(false)
47
+ hidden: z.boolean().default(false),
48
+ requires: z.array(z.string()).default([])
43
49
  }).loose();
44
50
  const SkillExtraFile = z.object({
45
51
  path: z.string(),
@@ -58,12 +64,37 @@ const SKILL_REFERENCES_DIR = "references";
58
64
  const SKILL_TEMPLATES_DIR = "templates";
59
65
  const FRONTMATTER_PREFIX_BYTES = 8192;
60
66
  const FRONTMATTER_FENCE = "---";
67
+ const SECTION_OPEN_PREFIX = /^<!--\s*requires:\s*/;
68
+ const MARKER_END = /\s*-->$/;
69
+ const SECTION_OPEN = /^<!--\s*requires:.*-->$/;
70
+ const SECTION_CLOSE = /^<!--\s*\/requires\s*-->$/;
71
+ const SECTION_MARKER_TEXT = /<!--\s*\/?requires\b/;
61
72
  function loadAllSkills() {
62
73
  return discoverSkills(resolveSkillDirs());
63
74
  }
64
75
  function loadVisibleSkills() {
65
76
  return loadAllSkills().filter((s) => !s.hidden);
66
77
  }
78
+ function selectForProfile(skills, profile) {
79
+ if (profile === null) return {
80
+ skills: [...skills],
81
+ unavailable: null
82
+ };
83
+ const available = [];
84
+ const unavailable = [];
85
+ for (const skill of skills) {
86
+ const failure = checkFeatures(skill.requires, profile);
87
+ if (failure === null) available.push(skill);
88
+ else unavailable.push({
89
+ name: skill.name,
90
+ failure
91
+ });
92
+ }
93
+ return {
94
+ skills: available,
95
+ unavailable
96
+ };
97
+ }
67
98
  function findSkillByName(all, name) {
68
99
  const hit = all.find((s) => s.name === name);
69
100
  if (hit === void 0) throw new ConfigError(`unknown skill name: ${name} (${availableSkillNames(all)})`);
@@ -126,6 +157,7 @@ function discoverSkills(dirs) {
126
157
  name: fm.name,
127
158
  description: fm.description,
128
159
  hidden: fm.hidden,
160
+ requires: parseFeatureNames(fm.requires, `skill ${fm.name}`),
129
161
  dir: skillDir
130
162
  });
131
163
  }
@@ -134,9 +166,10 @@ function discoverSkills(dirs) {
134
166
  return skills;
135
167
  }
136
168
  function readFrontmatterFromSkill(skillDir) {
137
- const prefix = readFilePrefix(join(skillDir, SKILL_MD_FILENAME), FRONTMATTER_PREFIX_BYTES);
169
+ const skillMd = join(skillDir, SKILL_MD_FILENAME);
170
+ const prefix = readFilePrefix(skillMd, FRONTMATTER_PREFIX_BYTES);
138
171
  if (prefix === null) return null;
139
- return parseFrontmatter(prefix);
172
+ return parseFrontmatter(prefix, skillMd);
140
173
  }
141
174
  function readFilePrefix(path, maxBytes) {
142
175
  let fd;
@@ -154,18 +187,17 @@ function readFilePrefix(path, maxBytes) {
154
187
  closeSync(fd);
155
188
  }
156
189
  }
157
- function parseFrontmatter(content) {
190
+ function parseFrontmatter(content, source) {
158
191
  const trimmed = content.trimStart();
159
- if (!trimmed.startsWith(FRONTMATTER_FENCE)) return null;
192
+ if (!trimmed.startsWith(FRONTMATTER_FENCE)) throw new ConfigError(`${source}: missing frontmatter`);
160
193
  const afterOpening = trimmed.slice(3);
161
194
  const closingIndex = afterOpening.indexOf(`\n${FRONTMATTER_FENCE}`);
162
- if (closingIndex < 0) return null;
163
- const result = parseYamlResult(afterOpening.slice(0, closingIndex), Frontmatter);
164
- if (!result.ok) return null;
165
- return result.value;
195
+ if (closingIndex < 0) throw new ConfigError(`${source}: unterminated frontmatter`);
196
+ return parseYaml(afterOpening.slice(0, closingIndex), Frontmatter, { source });
166
197
  }
167
198
  function readSkillContent(info, opts) {
168
- const body = readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8");
199
+ const features = opts.profile === null ? null : opts.profile.features;
200
+ const body = resolveSections(readFileSync(join(info.dir, SKILL_MD_FILENAME), "utf8"), features, `skill ${info.name}`);
169
201
  if (!opts.includeExtras) return {
170
202
  name: info.name,
171
203
  description: info.description,
@@ -173,14 +205,70 @@ function readSkillContent(info, opts) {
173
205
  references: [],
174
206
  templates: []
175
207
  };
208
+ const references = collectExtraFiles(info.dir, SKILL_REFERENCES_DIR).map((file) => ({
209
+ path: file.path,
210
+ content: resolveSections(file.content, features, `skill ${info.name} (${file.path})`)
211
+ }));
176
212
  return {
177
213
  name: info.name,
178
214
  description: info.description,
179
215
  body,
180
- references: collectExtraFiles(info.dir, SKILL_REFERENCES_DIR),
216
+ references,
181
217
  templates: collectExtraFiles(info.dir, SKILL_TEMPLATES_DIR)
182
218
  };
183
219
  }
220
+ function parseFeatureNames(names, where) {
221
+ const known = [];
222
+ const unknown = [];
223
+ for (const name of names) if (isFeatureName(name)) known.push(name);
224
+ else unknown.push(name);
225
+ if (unknown.length > 0) throw new ConfigError(`${where}: unknown feature in requires: ${unknown.join(", ")} (known: ${FEATURE_NAMES.join(", ")})`);
226
+ return known;
227
+ }
228
+ function resolveSections(text, features, where) {
229
+ const out = [];
230
+ let open = null;
231
+ let collapseBlank = false;
232
+ for (const [index, line] of text.split("\n").entries()) {
233
+ const lineNumber = index + 1;
234
+ const trimmed = line.trim();
235
+ if (SECTION_OPEN.test(trimmed)) {
236
+ if (open !== null) throw new ConfigError(`${where}: nested requires section at line ${lineNumber} (opened at line ${open.line})`);
237
+ const named = parseFeatureNames(sectionFeatureNames(trimmed), `${where} line ${lineNumber}`);
238
+ if (named.length === 0) throw new ConfigError(`${where}: requires section at line ${lineNumber} names no feature`);
239
+ open = {
240
+ line: lineNumber,
241
+ met: features === null || named.every((name) => features[name])
242
+ };
243
+ collapseBlank = dropMarker(out, line, features);
244
+ continue;
245
+ }
246
+ if (SECTION_CLOSE.test(trimmed)) {
247
+ if (open === null) throw new ConfigError(`${where}: requires section closed at line ${lineNumber} was never opened`);
248
+ collapseBlank = dropMarker(out, line, features);
249
+ open = null;
250
+ continue;
251
+ }
252
+ if (SECTION_MARKER_TEXT.test(line)) throw new ConfigError(`${where}: a requires marker must be on its own line (line ${lineNumber})`);
253
+ if (collapseBlank) {
254
+ collapseBlank = false;
255
+ if (trimmed === "") continue;
256
+ }
257
+ if (open === null || open.met) out.push(line);
258
+ }
259
+ if (open !== null) throw new ConfigError(`${where}: requires section opened at line ${open.line} is never closed`);
260
+ return out.join("\n");
261
+ }
262
+ function dropMarker(out, marker, features) {
263
+ if (features === null) {
264
+ out.push(marker);
265
+ return false;
266
+ }
267
+ return out.length === 0 || out[out.length - 1] === "";
268
+ }
269
+ function sectionFeatureNames(marker) {
270
+ return parseCsv(marker.replace(SECTION_OPEN_PREFIX, "").replace(MARKER_END, ""));
271
+ }
184
272
  function collectExtraFiles(skillDir, subdirName) {
185
273
  const subdir = join(skillDir, subdirName);
186
274
  if (!isDirectory(subdir)) return [];
@@ -213,4 +301,4 @@ function isFile(path) {
213
301
  }
214
302
  }
215
303
  //#endregion
216
- export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n, selectSkillsByNames as o, loadAllSkills as r, SkillContent as t };
304
+ export { readSkillContent as a, loadVisibleSkills as i, findSkillByName as n, selectForProfile as o, loadAllSkills as r, selectSkillsByNames as s, SkillContent as t };
@@ -0,0 +1,19 @@
1
+ import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
2
+ //#region src/commands/snippet/index.ts
3
+ var snippet_default = defineCommandGroup({
4
+ name: "snippet",
5
+ description: "Manage Metabase native query snippets",
6
+ skills: [{
7
+ skill: "core",
8
+ purpose: "native-SQL snippets and body input"
9
+ }],
10
+ subCommands: {
11
+ list: () => import("./list-DoTiQc3D.mjs").then((mod) => mod.default),
12
+ get: () => import("./get-B89DUSvw.mjs").then((mod) => mod.default),
13
+ create: () => import("./create-Bwg-5p08.mjs").then((mod) => mod.default),
14
+ update: () => import("./update-Cr5zHb0D.mjs").then((mod) => mod.default),
15
+ archive: () => import("./archive-Bf014rFm.mjs").then((mod) => mod.default)
16
+ }
17
+ });
18
+ //#endregion
19
+ export { snippet_default as default };
@@ -7,7 +7,6 @@ const Snippet = z.object({
7
7
  content: z.string(),
8
8
  archived: z.boolean(),
9
9
  collection_id: z.number().int().nullable(),
10
- worktree_id: z.number().int().positive().nullable().optional(),
11
10
  creator_id: z.number().int(),
12
11
  entity_id: z.string().nullable(),
13
12
  template_tags: z.record(z.string(), z.unknown()).nullable(),
@@ -19,16 +18,14 @@ const SnippetCompact = Snippet.pick({
19
18
  name: true,
20
19
  description: true,
21
20
  archived: true,
22
- collection_id: true,
23
- worktree_id: true
21
+ collection_id: true
24
22
  }).strip();
25
23
  const snippetName = z.string().regex(/^(?!\s)[^}]*$/, "snippet names cannot include '}' or start with spaces");
26
24
  const SnippetCreateInput = z.object({
27
25
  name: snippetName,
28
26
  content: z.string(),
29
27
  description: z.string().nullable().optional(),
30
- collection_id: z.number().int().positive().nullable().optional(),
31
- worktree_id: z.number().int().positive().nullable().optional()
28
+ collection_id: z.number().int().positive().nullable().optional()
32
29
  }).loose();
33
30
  const SnippetUpdateInput = z.object({
34
31
  name: snippetName.nullable().optional(),
@@ -1,4 +1,4 @@
1
- import { n as SnippetCompact } from "./snippet-BxgvQ09J.mjs";
1
+ import { n as SnippetCompact } from "./snippet-CyKAgIZl.mjs";
2
2
  //#region src/output/views/snippet.ts
3
3
  const snippetView = {
4
4
  compactPick: SnippetCompact,
@@ -1,10 +1,9 @@
1
- import { i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
2
- import { H as profileFlag, R as connectionFlags, V as outputFlags, p as renderSummary } from "./cli.mjs";
3
- import { t as defineMetabaseCommand } from "./runtime-CNAZ_FuR.mjs";
4
- import { l as SyncStashResult } from "./git-sync-DLzJrdMi.mjs";
5
- import { n as parseWaitFlags, t as gitSyncWaitFlags } from "./wait-flags-DzytMEG8.mjs";
6
- import { c as syncStashView } from "./git-sync-LQIVMNxO.mjs";
7
- import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-G1K47Nvn.mjs";
1
+ import { I as outputFlags, K as ConfigError, L as profileFlag, N as connectionFlags, c as renderSummary } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-BQiGgbgZ.mjs";
3
+ import { c as SyncStashResult } from "./git-sync-BDnxPrqU.mjs";
4
+ import { n as parseWaitFlags, t as gitSyncWaitFlags } from "./wait-flags-DiQ_kRjZ.mjs";
5
+ import { s as syncStashView } from "./git-sync-DxD_ng48.mjs";
6
+ import { a as throwIfFailedTask, i as taskPollOptions, n as formatSyncTask } from "./sync-task-BACcrs0i.mjs";
8
7
  //#region src/commands/git-sync/stash.ts
9
8
  const DEFAULT_STASH_MESSAGE = "Stashed from mb CLI";
10
9
  var stash_default = defineMetabaseCommand({
@@ -12,11 +11,7 @@ var stash_default = defineMetabaseCommand({
12
11
  name: "stash",
13
12
  description: "Export current Metabase state to a new branch on the git remote"
14
13
  },
15
- capabilities: {
16
- minVersion: 60,
17
- tokenFeature: "remote_sync"
18
- },
19
- worktree: "main-only",
14
+ requires: ["gitSync.stash"],
20
15
  args: {
21
16
  ...outputFlags,
22
17
  ...profileFlag,