@metabase/cli 0.2.1-alpha.trust-system-ca.541e4e0 → 0.2.2-alpha.extract-api-client.27e2241

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 (323) hide show
  1. package/README.md +4 -1715
  2. package/dist/add-collection-B3Ty8SzB.mjs +36 -0
  3. package/dist/alert-DT-ee7yf.mjs +23 -0
  4. package/dist/alerts-Bf2RH_p_.mjs +43 -0
  5. package/dist/{append-Cak5jykn.mjs → append-DFzQRPMd.mjs} +7 -12
  6. package/dist/{archive-BVY_jD_g.mjs → archive-4tmm946K.mjs} +8 -17
  7. package/dist/{archive-CytCvQpn.mjs → archive-B6eXiyER.mjs} +7 -13
  8. package/dist/{archive-op9pJRpg.mjs → archive-BxNPHxOY.mjs} +7 -13
  9. package/dist/archive-ByvA49Kz.mjs +34 -0
  10. package/dist/{archive-DfbI8DRB.mjs → archive-C7w49Grr.mjs} +7 -16
  11. package/dist/{archive-CPgWNCG3.mjs → archive-Cd29QC0c.mjs} +7 -13
  12. package/dist/{archive-BIEnBoE8.mjs → archive-ChORH5JH.mjs} +7 -13
  13. package/dist/archive-CwAdlv63.mjs +33 -0
  14. package/dist/{archive-CaKhG58H.mjs → archive-Dr9Xnx_Z.mjs} +7 -15
  15. package/dist/{archive-CjnCAM61.mjs → archive-gid9Y09v.mjs} +8 -17
  16. package/dist/{archive-BMbx6lt8.mjs → archive-lQqs13Uz.mjs} +7 -13
  17. package/dist/auth-Dltxua89.mjs +19 -0
  18. package/dist/{body-BW_CiL1d.mjs → body-Cur4NJt9.mjs} +5 -8
  19. package/dist/{body-flags-CgHgJBRC.mjs → body-flags-AqKpN01Y.mjs} +1 -2
  20. package/dist/{branches-gVRwKne4.mjs → branches-DchlyU0i.mjs} +7 -13
  21. package/dist/{cancel-CBOJSslz.mjs → cancel-BMQa5R1Z.mjs} +5 -12
  22. package/dist/{cancel-task-Djancczz.mjs → cancel-task-C5CU1pxU.mjs} +6 -10
  23. package/dist/card-CHI2bmds.mjs +24 -0
  24. package/dist/{card-B8G5jQQT.mjs → card-DZxRmver.mjs} +21 -48
  25. package/dist/card-zyUkr2nS.mjs +44 -0
  26. package/dist/cards-SccWvRQD.mjs +34 -0
  27. package/dist/cli.mjs +664 -83
  28. package/dist/client-BqhzKdLM.mjs +2194 -0
  29. package/dist/collection-CGoVLvcD.mjs +58 -0
  30. package/dist/collection-CY0AB99E.mjs +20 -0
  31. package/dist/{collection-C52Ndi_O.mjs → collection-CfulNRBG.mjs} +16 -61
  32. package/dist/{collection-namespace-w1y5D0Uh.mjs → collection-namespace-GwydWBF3.mjs} +3 -5
  33. package/dist/{create-VA58AF6A.mjs → create-BNQ_DytP.mjs} +8 -15
  34. package/dist/{create-CnT-L03B.mjs → create-BOLwWt8Q.mjs} +9 -17
  35. package/dist/{create-BkvdOecg.mjs → create-Beh-2uoN.mjs} +8 -15
  36. package/dist/{create-CvptjYVb.mjs → create-C79vErX0.mjs} +9 -20
  37. package/dist/{create-C_fyIHZU.mjs → create-CAQV2g6V.mjs} +9 -17
  38. package/dist/{create-q2QqkwEN.mjs → create-CAWytBE5.mjs} +9 -17
  39. package/dist/{create-CGsTL5aE.mjs → create-CCh_LyW9.mjs} +8 -15
  40. package/dist/{create-ldvT5L0W.mjs → create-CD008jdE.mjs} +13 -28
  41. package/dist/create-CHQx7jq4.mjs +45 -0
  42. package/dist/create-DF4QtgDL.mjs +44 -0
  43. package/dist/{create-D_eiLBqR.mjs → create-DJmXXQoq.mjs} +10 -18
  44. package/dist/{create-DbHIjWio.mjs → create-DV-Ln5Mo.mjs} +8 -15
  45. package/dist/create-branch-CYo6jZth.mjs +35 -0
  46. package/dist/{create-DZBtbGqj.mjs → create-i14Wv3Tj.mjs} +8 -15
  47. package/dist/{create-CnqGhtuF.mjs → create-tQbnuz-I.mjs} +8 -15
  48. package/dist/{create-BRK8TBzp.mjs → create-zeveFdnd.mjs} +6 -11
  49. package/dist/cron-LKRffEC-.mjs +5 -0
  50. package/dist/{csv-C3O1wTQ8.mjs → csv-B2Jgb1GM.mjs} +7 -19
  51. package/dist/{current-task-CZsZPe0o.mjs → current-task-MpBFGttd.mjs} +7 -12
  52. package/dist/{dashboard-BLihjDXg.mjs → dashboard-BCpSq_G-.mjs} +9 -60
  53. package/dist/dashboard-BHJBoaG7.mjs +33 -0
  54. package/dist/dashboard-CsIFFpzK.mjs +58 -0
  55. package/dist/database-B19qlLKZ.mjs +38 -0
  56. package/dist/database-C8G6ZKG0.mjs +26 -0
  57. package/dist/db-DsfojyeH.mjs +24 -0
  58. package/dist/{delete-BmT5C6eK.mjs → delete-B8e01xAG.mjs} +6 -11
  59. package/dist/{delete-Dkfu4e5K.mjs → delete-BApOjQvl.mjs} +6 -11
  60. package/dist/{delete-JeRzVISE.mjs → delete-Ck0q4Dzp.mjs} +6 -11
  61. package/dist/{delete-cF97pfFX.mjs → delete-DFmX7jTp.mjs} +6 -11
  62. package/dist/{delete-DgI03U43.mjs → delete-Ob06PPie.mjs} +6 -11
  63. package/dist/{delete-runtime-DiqKOEqi.mjs → delete-runtime-D74s6vhu.mjs} +6 -13
  64. package/dist/{delete-table-dnQs_Twm.mjs → delete-table-DuyhGrvA.mjs} +6 -11
  65. package/dist/{dependencies-BsMwFSxP.mjs → dependencies-Bj3QrGIm.mjs} +10 -13
  66. package/dist/dirty-DNYoM6Bp.mjs +31 -0
  67. package/dist/document-BbskZPTT.mjs +19 -0
  68. package/dist/{document-D4zB-5a0.mjs → document-Cd2mmqCp.mjs} +5 -33
  69. package/dist/document-D6OybtP2.mjs +29 -0
  70. package/dist/{eid-60sCZhQV.mjs → eid-WTZmDdsr.mjs} +12 -54
  71. package/dist/eid-translation-zEHtr5Oc.mjs +35 -0
  72. package/dist/{embedding-CKdw8q7p.mjs → embedding-i-KqpefC.mjs} +2 -4
  73. package/dist/events-Bn7jh5lP.mjs +39 -0
  74. package/dist/export-BjfoZRDJ.mjs +66 -0
  75. package/dist/field-BPsNa-TO.mjs +80 -0
  76. package/dist/{field-DsXTeqBy.mjs → field-Cr2DPUG9.mjs} +2 -81
  77. package/dist/field-Zau6Hc6X.mjs +18 -0
  78. package/dist/fields-CBBa-Prp.mjs +34 -0
  79. package/dist/{get-CaosV7j8.mjs → get-00lyLv6R.mjs} +7 -11
  80. package/dist/{get-DxAx-2C0.mjs → get-B7sMgsFs.mjs} +7 -11
  81. package/dist/get-B_xdF1kq.mjs +31 -0
  82. package/dist/{get-B_EinsrO.mjs → get-ByBOq30r.mjs} +7 -11
  83. package/dist/get-Bz99dAxK.mjs +35 -0
  84. package/dist/get-C2-Q3iQ5.mjs +31 -0
  85. package/dist/get-CDJFVvhj.mjs +35 -0
  86. package/dist/get-CDMGbgrh.mjs +31 -0
  87. package/dist/get-CnbUCzDM.mjs +31 -0
  88. package/dist/{get-L8c_h5EP.mjs → get-CvI--9S_.mjs} +16 -12
  89. package/dist/{get-CRXEqpar.mjs → get-DRvsATp-.mjs} +7 -11
  90. package/dist/{get-BNBRMNtC.mjs → get-DY03Azx9.mjs} +6 -11
  91. package/dist/get-DYO1kywc.mjs +32 -0
  92. package/dist/{get-CKnHNxak.mjs → get-D_h-G9bn.mjs} +7 -11
  93. package/dist/get-DdsoHaKH.mjs +31 -0
  94. package/dist/{get-Ct5TnofS.mjs → get-DkWO0EI0.mjs} +7 -11
  95. package/dist/{get-fGOQA0GF.mjs → get-Dmj9Ygz1.mjs} +7 -17
  96. package/dist/get-DmpB6J9g.mjs +31 -0
  97. package/dist/{get-Csa7Dz36.mjs → get-Dn9ZiSZr.mjs} +8 -16
  98. package/dist/{get-run-DqwPQRMJ.mjs → get-run-Cnux9ln0.mjs} +7 -11
  99. package/dist/git-sync-BDnxPrqU.mjs +104 -0
  100. package/dist/git-sync-DxD_ng48.mjs +136 -0
  101. package/dist/git-sync-MQQYRYLg.mjs +28 -0
  102. package/dist/{group-CILtQqCL.mjs → group-DBM87IgC.mjs} +2 -4
  103. package/dist/has-remote-changes-C684Redh.mjs +35 -0
  104. package/dist/import-Rmmttboo.mjs +56 -0
  105. package/dist/{input-D2-H-QKX.mjs → input-DH9i67x_.mjs} +6 -11
  106. package/dist/{is-dirty-B87YMLV2.mjs → is-dirty-DYeJYhBz.mjs} +4 -8
  107. package/dist/{items-DrP1b4Qj.mjs → items-CQlPXBXE.mjs} +13 -29
  108. package/dist/key-BEhqIzIQ.mjs +10 -0
  109. package/dist/{library-bUBWlweP.mjs → library-Bsm5KsFF.mjs} +6 -9
  110. package/dist/library-ClLgrAXy.mjs +19 -0
  111. package/dist/library-DfYAT2Ep.mjs +21 -0
  112. package/dist/{list-B8zgT05M.mjs → list-B4hJuMhA.mjs} +11 -27
  113. package/dist/list-B8nAGwP4.mjs +48 -0
  114. package/dist/list-BOET6zhP.mjs +36 -0
  115. package/dist/list-BP3MPq-M.mjs +36 -0
  116. package/dist/list-BpFp9Wre.mjs +28 -0
  117. package/dist/list-BtkWNtvY.mjs +34 -0
  118. package/dist/list-BtmsNOEn.mjs +28 -0
  119. package/dist/list-BzVTHOoH.mjs +28 -0
  120. package/dist/list-C5Zs8nrb.mjs +28 -0
  121. package/dist/list-CKK-s3Ty.mjs +28 -0
  122. package/dist/list-CMpoc2TN.mjs +70 -0
  123. package/dist/list-CNUiF8Z7.mjs +28 -0
  124. package/dist/list-CQDprvW0.mjs +39 -0
  125. package/dist/{list-DCl7zHCp.mjs → list-CQwOgIlj.mjs} +10 -24
  126. package/dist/list-DE9FM957.mjs +28 -0
  127. package/dist/{list-F_hMRbsa.mjs → list-DF2rvoO1.mjs} +22 -14
  128. package/dist/list-DMKDsBRd.mjs +38 -0
  129. package/dist/{list-TibX1b8i.mjs → list-UhpKG6_m.mjs} +15 -15
  130. package/dist/{login-C5Ug3BVC.mjs → login-CGHeSjlP.mjs} +47 -52
  131. package/dist/{logout-B_N1N2DV.mjs → logout-DAxOlbv4.mjs} +7 -12
  132. package/dist/measure-4P0bOlZ3.mjs +29 -0
  133. package/dist/measure-BsYv0p26.mjs +22 -0
  134. package/dist/{measure-ByY4U3ZK.mjs → measure-CtfjqJFP.mjs} +3 -30
  135. package/dist/network-error-CEb9ymDW.mjs +423 -0
  136. package/dist/notification-DaA4bBHW.mjs +138 -0
  137. package/dist/notification-Fcq1fIPw.mjs +67 -0
  138. package/dist/{parameter-BZ6y-Gfs.mjs → parameter-DUKR8NXo.mjs} +2 -11
  139. package/dist/{parameter-values-ZXKECrJk.mjs → parameter-values-CJTdqd8c.mjs} +17 -11
  140. package/dist/{parse-enum-D5h-JePs.mjs → parse-enum-D0Jfm_Bz.mjs} +2 -4
  141. package/dist/{parse-id-ySsF4nA3.mjs → parse-id-C_jmKFaa.mjs} +2 -4
  142. package/dist/{parse-ref-Ds8VxdKb.mjs → parse-ref-ibKVB0J4.mjs} +3 -5
  143. package/dist/{path-C6ucgeYs.mjs → path-B5gHvrYL.mjs} +8 -9
  144. package/dist/{poll-CgzD9_RH.mjs → poll-75SvT7Zv.mjs} +11 -15
  145. package/dist/predicates-Bkm2IoeX.mjs +170 -0
  146. package/dist/preflight-YpPQo-sa.mjs +29 -0
  147. package/dist/{process-jjR_DX5G.mjs → process-DBOOrmET.mjs} +4 -6
  148. package/dist/{publish-F-QbufXr.mjs → publish-DijrxaCW.mjs} +29 -24
  149. package/dist/pulse-BmsDenXm.mjs +133 -0
  150. package/dist/pulse-DhG6I9mI.mjs +57 -0
  151. package/dist/{query-DX4r0-uz.mjs → query-BbqECzmF.mjs} +20 -44
  152. package/dist/{query-DGBzATpV.mjs → query-Dc__-KJH.mjs} +13 -24
  153. package/dist/{query-result-D5J3Dlpn.mjs → query-result-DBDwk8TS.mjs} +4 -8
  154. package/dist/remove-collection-BOnxYvhj.mjs +36 -0
  155. package/dist/{render-CkuFkWlQ.mjs → render-CI93iP0I.mjs} +9 -11
  156. package/dist/{replace-xlQv9yl_.mjs → replace-Cq4CxVa-.mjs} +7 -12
  157. package/dist/rescan-values-Dr_j416g.mjs +31 -0
  158. package/dist/revision-message-flag-8TCHYJV6.mjs +8 -0
  159. package/dist/run-C3DkS6NP.mjs +82 -0
  160. package/dist/{run-opQkYIaT.mjs → run-DdGJ544X.mjs} +8 -18
  161. package/dist/runs-CUNWiidL.mjs +38 -0
  162. package/dist/runtime-DiKyBxOw.mjs +1007 -0
  163. package/dist/{schema-tables-8FjtkFIt.mjs → schema-tables-CV386fnC.mjs} +10 -14
  164. package/dist/{schemas-L9kMsEJL.mjs → schemas-DM-UqZBQ.mjs} +8 -12
  165. package/dist/search-DFBwUc6d.mjs +44 -0
  166. package/dist/{search-Csbb-u-_.mjs → search-DmGScXs8.mjs} +14 -73
  167. package/dist/segment-BzUGM2Fr.mjs +22 -0
  168. package/dist/segment-C_gl5ag6.mjs +29 -0
  169. package/dist/{segment-eeGhLo7_.mjs → segment-OsrbUDzw.mjs} +3 -30
  170. package/dist/{selectors-D34gXjQa.mjs → selectors-DGDn0Hto.mjs} +4 -6
  171. package/dist/send-CVxxEpDB.mjs +49 -0
  172. package/dist/{set-CfwncOI_.mjs → set-DFolTjbd.mjs} +10 -20
  173. package/dist/{set-active-gP4mjVDY.mjs → set-active-BD8L1lPX.mjs} +7 -18
  174. package/dist/setting-CwRYgHYN.mjs +35 -0
  175. package/dist/setting-DTiLCW8g.mjs +22 -0
  176. package/dist/setting-DyhaeICs.mjs +17 -0
  177. package/dist/setup-BbDQN8fe.mjs +44 -0
  178. package/dist/setup-CO7QV-ao.mjs +21 -0
  179. package/dist/signal-CMd0EFUa.mjs +16 -0
  180. package/dist/{skills-DvSQOPWg.mjs → skills--vK6J-e4.mjs} +4 -6
  181. package/dist/{skills-aRQfUvCq.mjs → skills-DTCrMcix.mjs} +13 -19
  182. package/dist/{snippet-CdjEhVCT.mjs → snippet-CyKAgIZl.mjs} +3 -32
  183. package/dist/snippet-DRwKb2x7.mjs +19 -0
  184. package/dist/snippet-oJLaYW9V.mjs +29 -0
  185. package/dist/stash-D0S4JmAz.mjs +61 -0
  186. package/dist/{status-BsEPyknG.mjs → status-BhswxJL1.mjs} +23 -23
  187. package/dist/{status-D1vtL5eW.mjs → status-hL1am-HV.mjs} +6 -8
  188. package/dist/subscription-_d5fB45F.mjs +22 -0
  189. package/dist/subscriptions-s4TF6Ax3.mjs +42 -0
  190. package/dist/summary-BytbDz6e.mjs +7 -0
  191. package/dist/summary-CsPvcUwW.mjs +31 -0
  192. package/dist/sync-schema-DaZ_MV-u.mjs +35 -0
  193. package/dist/sync-task-BACcrs0i.mjs +37 -0
  194. package/dist/{table-3onHpwcb.mjs → table-CeeTJgQb.mjs} +4 -38
  195. package/dist/table-CsIJNPFf.mjs +37 -0
  196. package/dist/table-DYoC1kPn.mjs +18 -0
  197. package/dist/{timeline-2ShuGr4f.mjs → timeline-CCSU2qOS.mjs} +2 -66
  198. package/dist/timeline-event-CNQdCTDg.mjs +19 -0
  199. package/dist/timeline-uDCmwGFT.mjs +66 -0
  200. package/dist/timeline-xlDbEKWg.mjs +21 -0
  201. package/dist/transform-Bs0EWijQ.mjs +28 -0
  202. package/dist/{transform-DNSMm1dV.mjs → transform-D3QX0jxA.mjs} +28 -74
  203. package/dist/transform-DoTyyXAu.mjs +74 -0
  204. package/dist/transform-job-50GZHhKH.mjs +37 -0
  205. package/dist/transform-job-BcLChRup.mjs +22 -0
  206. package/dist/{transform-job-CvE0MBBo.mjs → transform-job-DRrK28IH.mjs} +14 -41
  207. package/dist/{transform-tag-xdxjlDcD.mjs → transform-tag-CcElGp3C.mjs} +2 -21
  208. package/dist/transform-tag-Dmb4u3-Q.mjs +21 -0
  209. package/dist/transform-tag-_tgwlsdB.mjs +18 -0
  210. package/dist/{transforms-BQkmsPUR.mjs → transforms-oU4zizbO.mjs} +10 -13
  211. package/dist/{tree-CtufTBZY.mjs → tree-CH-f3bjP.mjs} +6 -10
  212. package/dist/{unpublish-CnLXPYR8.mjs → unpublish-BUl9RU5C.mjs} +7 -18
  213. package/dist/{update-BC-MLtiG.mjs → update-BCS5FxKr.mjs} +11 -19
  214. package/dist/{update-CqQj32ol.mjs → update-BZPllQoR.mjs} +9 -16
  215. package/dist/{update-DmQJqGvX.mjs → update-BiFDBcEH.mjs} +9 -16
  216. package/dist/update-BzMDeZiU.mjs +50 -0
  217. package/dist/{update-Dt9-3Tqf.mjs → update-C4YJQFDS.mjs} +9 -16
  218. package/dist/{update-C4P_YtGW.mjs → update-CHNSUHK4.mjs} +9 -16
  219. package/dist/{update-bz-FKwuR.mjs → update-CO4m4wH3.mjs} +10 -21
  220. package/dist/{update-BZxLyBVm.mjs → update-CVPAwJaH.mjs} +10 -18
  221. package/dist/{update-dJ2mlCXm.mjs → update-CmDTljK-.mjs} +9 -16
  222. package/dist/{update-DcYwxb-R.mjs → update-CvOO8TED.mjs} +9 -17
  223. package/dist/{update-QNuvGuS3.mjs → update-D-NE60AV.mjs} +9 -16
  224. package/dist/{update-DshCe-bl.mjs → update-Nfi44RrE.mjs} +10 -18
  225. package/dist/update-bD_Jh5-s.mjs +51 -0
  226. package/dist/{update-D6blsNGY.mjs → update-cYkvbqK8.mjs} +9 -16
  227. package/dist/update-dashcard-C3TuYO_k.mjs +50 -0
  228. package/dist/{update-CE-Z6E8V.mjs → update-tX9mKBN_.mjs} +10 -21
  229. package/dist/{upgrade--_g3bacj.mjs → upgrade-DXMV4AyP.mjs} +37 -44
  230. package/dist/upload-CH632qW6.mjs +46 -0
  231. package/dist/upload-DAtxBBms.mjs +13 -0
  232. package/dist/upload-Dey_8rLf.mjs +13 -0
  233. package/dist/{uuid-DBKkosBq.mjs → uuid-BJkDWj9p.mjs} +5 -7
  234. package/dist/validate-BWchyW0V.mjs +1469 -0
  235. package/dist/{validate-query-tECK019A.mjs → validate-query-DaGYSmpQ.mjs} +4 -5
  236. package/dist/{values-BAhMnVh6.mjs → values-Dxf1JEoA.mjs} +8 -13
  237. package/dist/verify-K96rItG5.mjs +89 -0
  238. package/dist/{wait-BJ_87Yz0.mjs → wait-DoMDH226.mjs} +10 -18
  239. package/dist/{wait-flags-DEn-3mjb.mjs → wait-flags-DWEF9tX4.mjs} +14 -11
  240. package/dist/window-BkvrP0gB.mjs +64 -0
  241. package/package.json +5 -35
  242. package/skill-data/core/SKILL.md +30 -25
  243. package/skill-data/dashboard/SKILL.md +6 -2
  244. package/skill-data/document/SKILL.md +2 -2
  245. package/skill-data/notification/SKILL.md +157 -0
  246. package/skill-data/transform/SKILL.md +1 -1
  247. package/.claude-plugin/marketplace.json +0 -19
  248. package/dist/add-collection-BZAVH5Wk.mjs +0 -60
  249. package/dist/add-collection-DByJYvGO.mjs +0 -9
  250. package/dist/auth-XfuGXI2K.mjs +0 -22
  251. package/dist/capabilities-CSjeWyLV.mjs +0 -684
  252. package/dist/card-B_kiDDil.mjs +0 -26
  253. package/dist/cards-23FtfL4S.mjs +0 -38
  254. package/dist/cli.d.mts +0 -1
  255. package/dist/collection-DNzM3u7n.mjs +0 -23
  256. package/dist/command-augment-D9pI9Vbh.mjs +0 -11
  257. package/dist/create-branch-BtqOfSRb.mjs +0 -57
  258. package/dist/dashboard-kb1oz7Z3.mjs +0 -35
  259. package/dist/database-BOqzcexD.mjs +0 -61
  260. package/dist/db-CHnqeJCo.mjs +0 -27
  261. package/dist/dirty-CN6sGKX3.mjs +0 -35
  262. package/dist/document-Y_DZNi4D.mjs +0 -22
  263. package/dist/events-CSZEAgs0.mjs +0 -44
  264. package/dist/export-CAxUJer6.mjs +0 -103
  265. package/dist/field-DAB2gImv.mjs +0 -21
  266. package/dist/fields-CLWtUlpR.mjs +0 -37
  267. package/dist/get-B22wjDxr.mjs +0 -38
  268. package/dist/get-BIHtWl2x.mjs +0 -35
  269. package/dist/get-B_QKP1vR.mjs +0 -35
  270. package/dist/get-Ca30K5_W.mjs +0 -35
  271. package/dist/get-DTjeTNGb.mjs +0 -49
  272. package/dist/get-DU8V-7S2.mjs +0 -35
  273. package/dist/get-H3X5e5-Y.mjs +0 -41
  274. package/dist/git-sync-BhhdNjq5.mjs +0 -31
  275. package/dist/has-remote-changes-D0ZIBHSk.mjs +0 -67
  276. package/dist/import-BcIcDPl9.mjs +0 -94
  277. package/dist/is-dirty-CXTS25Tk.mjs +0 -8
  278. package/dist/key-GP1gxZZD.mjs +0 -17
  279. package/dist/list-B-_PTqKw.mjs +0 -53
  280. package/dist/list-B8212eUr.mjs +0 -39
  281. package/dist/list-BhCahBEO.mjs +0 -39
  282. package/dist/list-CWQYaCp8.mjs +0 -31
  283. package/dist/list-Cbhx7N_t.mjs +0 -31
  284. package/dist/list-CoXeBm66.mjs +0 -49
  285. package/dist/list-D1pHJX7w.mjs +0 -31
  286. package/dist/list-DhT42e0q.mjs +0 -31
  287. package/dist/list-GeqRHx8g.mjs +0 -31
  288. package/dist/list-MPePXEWe.mjs +0 -31
  289. package/dist/list-TJjExx6e.mjs +0 -31
  290. package/dist/list-TQghfc-u.mjs +0 -39
  291. package/dist/listing-wFZuS5li.mjs +0 -10
  292. package/dist/measure-D9rKeA6Z.mjs +0 -25
  293. package/dist/paginate-FVZUxL4J.mjs +0 -49
  294. package/dist/poll-task-DF9xJl13.mjs +0 -194
  295. package/dist/preflight-Co2grgX_.mjs +0 -90
  296. package/dist/prompt-BSqji7Fo.mjs +0 -52
  297. package/dist/remove-collection-C-msSyas.mjs +0 -42
  298. package/dist/requests-COuEPJxE.mjs +0 -96
  299. package/dist/rescan-values-BC2SVtY6.mjs +0 -40
  300. package/dist/resolve-8iT-dXgX.mjs +0 -91
  301. package/dist/revision-message-flag-vt_V8ACy.mjs +0 -11
  302. package/dist/run-Cg6k3kHo.mjs +0 -135
  303. package/dist/runs-Cbqm1HYG.mjs +0 -53
  304. package/dist/runtime-MGH96fhp.mjs +0 -1695
  305. package/dist/segment-DCeafJwX.mjs +0 -25
  306. package/dist/setting-D5Y9sJha.mjs +0 -20
  307. package/dist/setting-DADuiF5W.mjs +0 -55
  308. package/dist/setup-D9HNfS7W.mjs +0 -71
  309. package/dist/snippet-CwRiMCfE.mjs +0 -22
  310. package/dist/stash-C_k1uZlf.mjs +0 -108
  311. package/dist/summary-h20AjhcO.mjs +0 -40
  312. package/dist/sync-schema-D67cYLhd.mjs +0 -54
  313. package/dist/sync-scope-CKx6xeF6.mjs +0 -55
  314. package/dist/table-CmKFWPvJ.mjs +0 -21
  315. package/dist/timeline-1ZphX3zj.mjs +0 -24
  316. package/dist/timeline-event-C6aKZ4EO.mjs +0 -22
  317. package/dist/transform-CvsBOTqB.mjs +0 -31
  318. package/dist/transform-job-D_8Kp772.mjs +0 -25
  319. package/dist/transform-tag-DhDnvbmq.mjs +0 -21
  320. package/dist/update-dashcard-CQP-qd6a.mjs +0 -73
  321. package/dist/upload-BOFc_eZD.mjs +0 -16
  322. package/dist/validate-Bpqt3ntH.mjs +0 -1496
  323. package/dist/verify-RLb2DoOX.mjs +0 -79
@@ -0,0 +1,28 @@
1
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { n as DocumentCompact } from "./document-Cd2mmqCp.mjs";
5
+ import { t as documentView } from "./document-D6OybtP2.mjs";
6
+ //#region src/commands/document/list.ts
7
+ const DocumentListEnvelope = listEnvelopeSchema(DocumentCompact);
8
+ var list_default = defineMetabaseCommand({
9
+ meta: {
10
+ name: "list",
11
+ description: "List documents"
12
+ },
13
+ capabilities: { minVersion: 58 },
14
+ args: {
15
+ ...outputFlags,
16
+ ...listFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags
19
+ },
20
+ outputSchema: DocumentListEnvelope,
21
+ examples: ["mb document list", "mb document list --json"],
22
+ async run({ ctx, getClient }) {
23
+ const { data, total } = await (await getClient()).document.list();
24
+ renderList(windowList(data, ctx.range, total), documentView, ctx);
25
+ }
26
+ });
27
+ //#endregion
28
+ export { list_default as default };
@@ -0,0 +1,39 @@
1
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { a as DashboardListFilter, n as DashboardCompact } from "./dashboard-BCpSq_G-.mjs";
5
+ import { t as parseEnumFlag } from "./parse-enum-D0Jfm_Bz.mjs";
6
+ import { t as dashboardView } from "./dashboard-CsIFFpzK.mjs";
7
+ //#region src/commands/dashboard/list.ts
8
+ const DashboardListEnvelope = listEnvelopeSchema(DashboardCompact);
9
+ var list_default = defineMetabaseCommand({
10
+ meta: {
11
+ name: "list",
12
+ description: "List dashboards"
13
+ },
14
+ capabilities: { minVersion: 58 },
15
+ args: {
16
+ ...outputFlags,
17
+ ...listFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ filter: {
21
+ type: "string",
22
+ description: `Filter preset: ${DashboardListFilter.options.join("|")}`,
23
+ default: "all"
24
+ }
25
+ },
26
+ outputSchema: DashboardListEnvelope,
27
+ examples: [
28
+ "mb dashboard list",
29
+ "mb dashboard list --json",
30
+ "mb dashboard list --filter archived --json"
31
+ ],
32
+ async run({ args, ctx, getClient }) {
33
+ const filter = parseEnumFlag(args.filter, DashboardListFilter, "filter");
34
+ const { data, total } = await (await getClient()).dashboard.list({ f: filter });
35
+ renderList(windowList(data, ctx.range, total), dashboardView, ctx);
36
+ }
37
+ });
38
+ //#endregion
39
+ export { list_default as default };
@@ -1,17 +1,9 @@
1
- import { connectionFlags, listEnvelopeSchema, outputFlags, profileFlag, renderList } from "./capabilities-CSjeWyLV.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { defineMetabaseCommand, parseEnum } from "./runtime-MGH96fhp.mjs";
4
- import "./field-DsXTeqBy.mjs";
5
- import "./table-3onHpwcb.mjs";
6
- import { Database, DatabaseCompact, databaseView } from "./database-BOqzcexD.mjs";
7
- import { z } from "zod";
8
-
1
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
2
+ import { r as parseEnum, t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { i as DatabaseListInclude, n as DatabaseCompact } from "./database-C8G6ZKG0.mjs";
5
+ import { n as databaseView } from "./database-B19qlLKZ.mjs";
9
6
  //#region src/commands/db/list.ts
10
- const DatabaseListInclude = z.enum(["tables"]);
11
- const DatabaseApiList = z.object({
12
- data: z.array(Database),
13
- total: z.number().int().nonnegative()
14
- }).loose();
15
7
  const DatabaseListEnvelope = listEnvelopeSchema(DatabaseCompact);
16
8
  var list_default = defineMetabaseCommand({
17
9
  meta: {
@@ -21,6 +13,7 @@ var list_default = defineMetabaseCommand({
21
13
  capabilities: { minVersion: 58 },
22
14
  args: {
23
15
  ...outputFlags,
16
+ ...listFlags,
24
17
  ...profileFlag,
25
18
  ...connectionFlags,
26
19
  include: {
@@ -42,19 +35,12 @@ var list_default = defineMetabaseCommand({
42
35
  async run({ args, ctx, getClient }) {
43
36
  const include = parseEnum(args.include, DatabaseListInclude, "--include");
44
37
  const saved = args.saved ? true : void 0;
45
- const client = await getClient();
46
- const response = await client.requestParsed(DatabaseApiList, "/api/database", { query: {
38
+ const { data, total } = await (await getClient()).database.list({
47
39
  include,
48
40
  saved
49
- } });
50
- const envelope = {
51
- data: response.data,
52
- returned: response.data.length,
53
- total: response.total
54
- };
55
- renderList(envelope, databaseView, ctx);
41
+ });
42
+ renderList(windowList(data, ctx.range, total), databaseView, ctx);
56
43
  }
57
44
  });
58
-
59
45
  //#endregion
60
- export { list_default as default };
46
+ export { list_default as default };
@@ -0,0 +1,28 @@
1
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { n as SettingCompact } from "./setting-DTiLCW8g.mjs";
5
+ import { n as settingView } from "./setting-CwRYgHYN.mjs";
6
+ //#region src/commands/setting/list.ts
7
+ const SettingListEnvelope = listEnvelopeSchema(SettingCompact);
8
+ var list_default = defineMetabaseCommand({
9
+ meta: {
10
+ name: "list",
11
+ description: "List all settings (admin)"
12
+ },
13
+ capabilities: { minVersion: 58 },
14
+ args: {
15
+ ...outputFlags,
16
+ ...listFlags,
17
+ ...profileFlag,
18
+ ...connectionFlags
19
+ },
20
+ outputSchema: SettingListEnvelope,
21
+ examples: ["mb setting list", "mb setting list --json"],
22
+ async run({ ctx, getClient }) {
23
+ const { data, total } = await (await getClient()).setting.list();
24
+ renderList(windowList(data, ctx.range, total), settingView, ctx);
25
+ }
26
+ });
27
+ //#endregion
28
+ export { list_default as default };
@@ -1,10 +1,10 @@
1
- import { listEnvelopeSchema, outputFlags, renderList, warn, wrapList } from "./capabilities-CSjeWyLV.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { ParsedVersionSchema, ProbedUser, ProfileAuthMethod, ProfileLastFailure, TokenFeatures, createCredentialRefresher, defineMetabaseCommand, displayUrl, listProfileRecords, profileAuthMethod, resolveRecordCredential, writeProbeFailure, writeProbeResult } from "./runtime-MGH96fhp.mjs";
4
- import { verifyAndProbe } from "./verify-RLb2DoOX.mjs";
5
- import { renderAuthMethod, renderTimestamp, renderUserRole, renderVersionTag } from "./render-CkuFkWlQ.mjs";
1
+ import { F as outputFlags, N as listFlags, R as listEnvelopeSchema, b as warn, s as renderList, t as interruptSignal } from "./cli.mjs";
2
+ import { A as ProbedUser, D as writeProbeFailure, L as TokenFeatures, M as ProfileLastFailure, N as profileAuthMethod, O as writeProbeResult, P as ParsedVersion, S as listProfileRecords, T as resolveRecordCredential, a as createCredentialRefresher, j as ProfileAuthMethod, t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { t as verifyAndProbe } from "./verify-K96rItG5.mjs";
4
+ import { s as displayUrl } from "./network-error-CEb9ymDW.mjs";
5
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
6
+ import { a as renderVersionTag, i as renderUserRole, n as renderTimestamp, t as renderAuthMethod } from "./render-CI93iP0I.mjs";
6
7
  import { z } from "zod";
7
-
8
8
  //#region src/commands/auth/list.ts
9
9
  const AuthProfileStatus = z.enum([
10
10
  "ok",
@@ -20,7 +20,7 @@ const AuthProfile = z.object({
20
20
  authenticated: z.boolean(),
21
21
  status: AuthProfileStatus,
22
22
  user: ProbedUser.nullable(),
23
- version: ParsedVersionSchema.nullable(),
23
+ version: ParsedVersion.nullable(),
24
24
  tokenFeatures: TokenFeatures.nullable(),
25
25
  lastProbedAt: z.iso.datetime().nullable(),
26
26
  lastFailure: ProfileLastFailure.nullable()
@@ -81,14 +81,20 @@ var list_default = defineMetabaseCommand({
81
81
  description: "List configured authentication profiles"
82
82
  },
83
83
  capabilities: { minVersion: 58 },
84
- args: { ...outputFlags },
84
+ args: {
85
+ ...outputFlags,
86
+ ...listFlags
87
+ },
85
88
  outputSchema: AuthProfileListEnvelope,
86
89
  examples: ["mb auth list", "mb auth list --json"],
87
90
  async run({ ctx }) {
88
- const records = await listProfileRecords();
91
+ const window = windowList(await listProfileRecords(), ctx.range);
89
92
  const items = [];
90
- for (const record of records) items.push(await persistAndProject(await verifyOne(record)));
91
- renderList(wrapList(items), authProfileView, ctx);
93
+ for (const record of window.data) items.push(await persistAndProject(await verifyOne(record)));
94
+ renderList({
95
+ ...window,
96
+ data: items
97
+ }, authProfileView, ctx);
92
98
  for (const item of items) if (item.status === "auth-failed" && item.lastFailure !== null) warn(`${item.profile}: ${item.lastFailure.reason}. Run \`mb auth login --profile ${item.profile}\` to update the token.`);
93
99
  }
94
100
  });
@@ -99,7 +105,10 @@ async function verifyOne(record) {
99
105
  url: record.url,
100
106
  verification: { kind: "no-creds" }
101
107
  };
102
- const result = await verifyAndProbe(resolved.url, resolved.credential, createCredentialRefresher(record.name));
108
+ const result = await verifyAndProbe(resolved.url, resolved.credential, {
109
+ refresh: createCredentialRefresher(record.name),
110
+ signal: interruptSignal
111
+ });
103
112
  if (result.ok) return {
104
113
  record,
105
114
  url: resolved.url,
@@ -173,6 +182,5 @@ function statusFromVerification(failure) {
173
182
  if (failure.kind === "network") return "network-error";
174
183
  return "server-error";
175
184
  }
176
-
177
185
  //#endregion
178
- export { list_default as default };
186
+ export { list_default as default };
@@ -0,0 +1,38 @@
1
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, N as listFlags, R as listEnvelopeSchema, s as renderList } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { i as CollectionCompact, l as CollectionListFilter } from "./collection-CfulNRBG.mjs";
5
+ import { t as parseEnumFlag } from "./parse-enum-D0Jfm_Bz.mjs";
6
+ import { n as collectionView } from "./collection-CGoVLvcD.mjs";
7
+ //#region src/commands/collection/list.ts
8
+ const CollectionListEnvelope = listEnvelopeSchema(CollectionCompact);
9
+ var list_default = defineMetabaseCommand({
10
+ meta: {
11
+ name: "list",
12
+ description: "List collections"
13
+ },
14
+ capabilities: { minVersion: 58 },
15
+ args: {
16
+ ...outputFlags,
17
+ ...listFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags,
20
+ filter: {
21
+ type: "string",
22
+ description: `Filter preset: ${CollectionListFilter.options.join("|")}`,
23
+ default: "all"
24
+ }
25
+ },
26
+ outputSchema: CollectionListEnvelope,
27
+ examples: [
28
+ "mb collection list",
29
+ "mb collection list --json",
30
+ "mb collection list --filter archived --json"
31
+ ],
32
+ async run({ args, ctx, getClient }) {
33
+ const filter = parseEnumFlag(args.filter, CollectionListFilter, "filter");
34
+ renderList(windowList((await (await getClient()).collection.list({ filter })).data, ctx.range), collectionView, ctx);
35
+ }
36
+ });
37
+ //#endregion
38
+ export { list_default as default };
@@ -1,9 +1,8 @@
1
- import { listEnvelopeSchema, listTruncationNotice, outputFlags, renderList, warn, wrapList } from "./capabilities-CSjeWyLV.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { defineMetabaseCommand } from "./runtime-MGH96fhp.mjs";
4
- import { loadVisibleSkills } from "./skills-aRQfUvCq.mjs";
1
+ import { F as outputFlags, N as listFlags, R as listEnvelopeSchema, b as warn, s as renderList, y as listTruncationNotice } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-DiKyBxOw.mjs";
3
+ import { n as windowList } from "./window-BkvrP0gB.mjs";
4
+ import { i as loadVisibleSkills } from "./skills-DTCrMcix.mjs";
5
5
  import { z } from "zod";
6
-
7
6
  //#region src/output/skill-list.ts
8
7
  const DEFAULT_TERMINAL_WIDTH = 80;
9
8
  const MIN_WRAP_WIDTH = 24;
@@ -33,8 +32,7 @@ function renderSkillList(rows, maxBytes) {
33
32
  warn(listTruncationNotice(fullBytes));
34
33
  }
35
34
  function renderSkillBlock(row, width) {
36
- const lines = wrapText(row.description, width - DESCRIPTION_INDENT.length);
37
- const body = lines.map((line) => DESCRIPTION_INDENT + line).join("\n");
35
+ const body = wrapText(row.description, width - 2).map((line) => DESCRIPTION_INDENT + line).join("\n");
38
36
  return body === "" ? `${row.name}\n\n` : `${row.name}\n${body}\n\n`;
39
37
  }
40
38
  function wrapText(text, width) {
@@ -55,7 +53,6 @@ function wrapWidth() {
55
53
  const columns = process.stdout.columns;
56
54
  return typeof columns === "number" && columns > 0 ? columns : DEFAULT_TERMINAL_WIDTH;
57
55
  }
58
-
59
56
  //#endregion
60
57
  //#region src/commands/skills/list.ts
61
58
  const SkillSummary = z.object({
@@ -78,21 +75,24 @@ var list_default = defineMetabaseCommand({
78
75
  name: "list",
79
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."
80
77
  },
81
- args: { ...outputFlags },
78
+ capabilities: null,
79
+ args: {
80
+ ...outputFlags,
81
+ ...listFlags
82
+ },
82
83
  outputSchema: SkillListEnvelope,
83
84
  examples: ["mb skills list", "mb skills list --json"],
84
85
  run({ ctx }) {
85
- const items = loadVisibleSkills().map((s) => ({
86
+ const envelope = windowList(loadVisibleSkills().map((s) => ({
86
87
  name: s.name,
87
88
  description: s.description
88
- }));
89
+ })), ctx.range);
89
90
  if (ctx.format === "json" || ctx.fields !== void 0 || ctx.full) {
90
- renderList(wrapList(items), skillSummaryView, ctx);
91
+ renderList(envelope, skillSummaryView, ctx);
91
92
  return;
92
93
  }
93
- renderSkillList(items, ctx.maxBytes);
94
+ renderSkillList(envelope.data, ctx.maxBytes);
94
95
  }
95
96
  });
96
-
97
97
  //#endregion
98
- export { list_default as default };
98
+ export { list_default as default };
@@ -1,16 +1,15 @@
1
- import { ConfigError, connectionFlags, errorMessage, outputFlags, profileFlag, renderSummary, warn } from "./capabilities-CSjeWyLV.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { DEFAULT_PROFILE, OAUTH_SCOPE, ParsedVersionSchema, ProbedUser, consumeKeychainResidualWarning, consumeKeyringDowngradeWarning, defineMetabaseCommand, discoverMetadata, exchangeCode, explicitProfileName, keyringFallbackWarning, normalizeUrl, oauthCredentialFromTokens, readEnvCredentials, registerClient, revokeOAuthCredential, tryDiscoverMetadata, writeOAuthProfile, writeProbeFailure, writeProbeResult, writeProfile } from "./runtime-MGH96fhp.mjs";
4
- import { verifyAndProbe } from "./verify-RLb2DoOX.mjs";
5
- import { EMPTY_CELL, renderUserName, renderUserRole, renderVersionTag } from "./render-CkuFkWlQ.mjs";
6
- import { promptPassword, promptSelect, promptText } from "./prompt-BSqji7Fo.mjs";
7
- import { openBrowser } from "./process-jjR_DX5G.mjs";
8
- import { readInput } from "./input-D2-H-QKX.mjs";
1
+ import { f as errorMessage, i as ConfigError } from "./predicates-Bkm2IoeX.mjs";
2
+ import { F as outputFlags, I as profileFlag, M as connectionFlags, _ as promptSelect, b as warn, c as renderSummary, g as promptPassword, t as interruptSignal, v as promptText } from "./cli.mjs";
3
+ import { A as ProbedUser, D as writeProbeFailure, E as writeOAuthProfile, O as writeProbeResult, P as ParsedVersion, _ as DEFAULT_PROFILE, b as consumeKeyringDowngradeWarning, d as revokeOAuthCredential, f as OAUTH_SCOPE, g as tryDiscoverMetadata, h as registerClient, k as writeProfile, l as OAUTH_CLIENT_NAME, m as exchangeCode, o as explicitProfileName, p as discoverMetadata, s as readEnvCredentials, t as defineMetabaseCommand, u as USER_AGENT, x as keyringFallbackWarning, y as consumeKeychainResidualWarning } from "./runtime-DiKyBxOw.mjs";
4
+ import { t as verifyAndProbe } from "./verify-K96rItG5.mjs";
5
+ import { c as normalizeUrl, p as oauthCredentialFromTokens } from "./network-error-CEb9ymDW.mjs";
6
+ import { r as readInput } from "./input-DH9i67x_.mjs";
7
+ import { a as renderVersionTag, i as renderUserRole, r as renderUserName } from "./render-CI93iP0I.mjs";
8
+ import { t as openBrowser } from "./process-DBOOrmET.mjs";
9
9
  import { z } from "zod";
10
10
  import { createServer } from "node:http";
11
11
  import { createHash, randomBytes } from "node:crypto";
12
-
13
- //#region src/core/auth/callback-server.ts
12
+ //#region ../client/src/auth/callback-server.ts
14
13
  const LOOPBACK_HOST = "127.0.0.1";
15
14
  const CALLBACK_PATH = "/callback";
16
15
  const DEFAULT_TIMEOUT_MS = 3e5;
@@ -26,8 +25,7 @@ function parseCallbackQuery(rawUrl) {
26
25
  }
27
26
  function isCallbackPath(rawUrl) {
28
27
  const queryStart = rawUrl.indexOf("?");
29
- const path = queryStart === -1 ? rawUrl : rawUrl.slice(0, queryStart);
30
- return path === CALLBACK_PATH;
28
+ return (queryStart === -1 ? rawUrl : rawUrl.slice(0, queryStart)) === CALLBACK_PATH;
31
29
  }
32
30
  function escapeHtml(value) {
33
31
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
@@ -45,8 +43,7 @@ function respond(res, status, title, message) {
45
43
  function serverPort(server) {
46
44
  const address = server.address();
47
45
  if (address === null || typeof address === "string") throw new ConfigError("could not determine loopback callback port");
48
- const info = address;
49
- return info.port;
46
+ return address.port;
50
47
  }
51
48
  function startCallbackServer(expectedState, timeoutMs = DEFAULT_TIMEOUT_MS) {
52
49
  return new Promise((resolveServer, rejectServer) => {
@@ -75,7 +72,7 @@ function startCallbackServer(expectedState, timeoutMs = DEFAULT_TIMEOUT_MS) {
75
72
  deliver(new ConfigError("authorization callback missing code"));
76
73
  return;
77
74
  }
78
- respond(res, 200, "Login complete", "Metabase CLI is now authorized.");
75
+ respond(res, 200, "Login complete", "Authorization complete. You can close this window.");
79
76
  deliver({
80
77
  code: query.code,
81
78
  state: query.state
@@ -119,9 +116,8 @@ function startCallbackServer(expectedState, timeoutMs = DEFAULT_TIMEOUT_MS) {
119
116
  });
120
117
  });
121
118
  }
122
-
123
119
  //#endregion
124
- //#region src/core/auth/pkce.ts
120
+ //#region ../client/src/auth/pkce.ts
125
121
  const VERIFIER_BYTES = 32;
126
122
  const STATE_BYTES = 16;
127
123
  function base64Url(buffer) {
@@ -129,40 +125,36 @@ function base64Url(buffer) {
129
125
  }
130
126
  function generatePkce() {
131
127
  const verifier = base64Url(randomBytes(VERIFIER_BYTES));
132
- const challenge = base64Url(createHash("sha256").update(verifier).digest());
133
128
  return {
134
129
  verifier,
135
- challenge
130
+ challenge: base64Url(createHash("sha256").update(verifier).digest())
136
131
  };
137
132
  }
138
133
  function randomState() {
139
134
  return base64Url(randomBytes(STATE_BYTES));
140
135
  }
141
-
142
136
  //#endregion
143
- //#region src/core/auth/oauth-login.ts
144
- const CLIENT_NAME = "Metabase CLI";
137
+ //#region ../client/src/auth/oauth-login.ts
145
138
  function buildAuthorizeUrl(authorizationEndpoint, params) {
146
- const separator = authorizationEndpoint.includes("?") ? "&" : "?";
147
- return `${authorizationEndpoint}${separator}${new URLSearchParams(params).toString()}`;
139
+ return `${authorizationEndpoint}${authorizationEndpoint.includes("?") ? "&" : "?"}${new URLSearchParams(params).toString()}`;
148
140
  }
149
- async function resolveClientId(registrationEndpoint, redirectUri, provided) {
150
- if (provided !== void 0) return provided;
151
- if (registrationEndpoint === void 0) throw new ConfigError("this Metabase has dynamic client registration disabled; pass --client-id with a pre-registered native client");
152
- const registered = await registerClient({
141
+ async function resolveClientId(input, registrationEndpoint, redirectUri) {
142
+ if (input.clientId !== void 0) return input.clientId;
143
+ if (registrationEndpoint === void 0) throw new ConfigError("this Metabase has dynamic client registration disabled; pass clientId with a pre-registered native client");
144
+ return (await registerClient({
153
145
  registrationEndpoint,
154
146
  redirectUri,
155
- clientName: CLIENT_NAME
156
- });
157
- return registered.client_id;
147
+ clientName: input.clientName,
148
+ userAgent: input.userAgent
149
+ })).client_id;
158
150
  }
159
151
  async function oauthLogin(input, deps) {
160
- const metadata = input.metadata ?? await discoverMetadata(input.baseUrl);
152
+ const metadata = input.metadata ?? await discoverMetadata(input.baseUrl, input.userAgent);
161
153
  const pkce = generatePkce();
162
154
  const state = randomState();
163
155
  const server = await startCallbackServer(state, input.timeoutMs);
164
156
  try {
165
- const clientId = await resolveClientId(metadata.registration_endpoint, server.redirectUri, input.clientId);
157
+ const clientId = await resolveClientId(input, metadata.registration_endpoint, server.redirectUri);
166
158
  const authorizeUrl = buildAuthorizeUrl(metadata.authorization_endpoint, {
167
159
  response_type: "code",
168
160
  client_id: clientId,
@@ -180,7 +172,8 @@ async function oauthLogin(input, deps) {
180
172
  code: callback.code,
181
173
  redirectUri: server.redirectUri,
182
174
  clientId,
183
- codeVerifier: pkce.verifier
175
+ codeVerifier: pkce.verifier,
176
+ userAgent: input.userAgent
184
177
  });
185
178
  if (tokens.refresh_token === void 0) throw new ConfigError("token endpoint did not return a refresh token");
186
179
  return oauthCredentialFromTokens(tokens, tokens.refresh_token, clientId, deps.now());
@@ -188,7 +181,6 @@ async function oauthLogin(input, deps) {
188
181
  server.close();
189
182
  }
190
183
  }
191
-
192
184
  //#endregion
193
185
  //#region src/commands/auth/login.ts
194
186
  const LoginResult = z.object({
@@ -196,7 +188,11 @@ const LoginResult = z.object({
196
188
  url: z.string(),
197
189
  authenticated: z.boolean(),
198
190
  user: ProbedUser.nullable(),
199
- version: ParsedVersionSchema.nullable()
191
+ version: ParsedVersion.nullable()
192
+ });
193
+ const VERIFY_STEP_LABEL = Object.freeze({
194
+ user: "current user",
195
+ server: "server properties"
200
196
  });
201
197
  const loginView = {
202
198
  compactPick: LoginResult,
@@ -277,8 +273,7 @@ var login_default = defineMetabaseCommand({
277
273
  }
278
274
  if (!process.stdin.isTTY) throw new ConfigError("interactive login requires a TTY; pass --api-key or set MB_API_KEY for non-interactive login");
279
275
  const metadata = await probeOAuthSupport(url);
280
- const method = await chooseLoginMethod(metadata, args.clientId);
281
- if (method === "apiKey") {
276
+ if (await chooseLoginMethod(metadata, args.clientId) === "apiKey") {
282
277
  const promptedKey = await promptForApiKey();
283
278
  await completeLogin(profileName, url, {
284
279
  kind: "apiKey",
@@ -291,6 +286,8 @@ var login_default = defineMetabaseCommand({
291
286
  }
292
287
  const credential = await oauthLogin({
293
288
  baseUrl: url,
289
+ userAgent: USER_AGENT,
290
+ clientName: OAUTH_CLIENT_NAME,
294
291
  ...metadata !== null && { metadata },
295
292
  ...args.clientId !== void 0 && { clientId: args.clientId }
296
293
  }, {
@@ -303,7 +300,7 @@ var login_default = defineMetabaseCommand({
303
300
  });
304
301
  async function probeOAuthSupport(url) {
305
302
  try {
306
- return await tryDiscoverMetadata(url);
303
+ return await tryDiscoverMetadata(url, USER_AGENT);
307
304
  } catch (error) {
308
305
  if (error instanceof ConfigError) throw error;
309
306
  throw new ConfigError(`could not reach ${url}: ${errorMessage(error)}`);
@@ -316,7 +313,7 @@ async function chooseLoginMethod(metadata, clientId) {
316
313
  return "apiKey";
317
314
  }
318
315
  if (clientId !== void 0) return "oauth";
319
- return promptSelect({
316
+ const method = await promptSelect({
320
317
  message: "How do you want to log in?",
321
318
  choices: [{
322
319
  value: "oauth",
@@ -329,6 +326,8 @@ async function chooseLoginMethod(metadata, clientId) {
329
326
  }],
330
327
  initialValue: "oauth"
331
328
  });
329
+ if (method === "oauth" && metadata.registration_endpoint === void 0) throw new ConfigError("this Metabase has dynamic client registration disabled; pass --client-id with a pre-registered native client");
330
+ return method;
332
331
  }
333
332
  async function promptForApiKey() {
334
333
  return promptPassword({
@@ -349,7 +348,7 @@ async function completeLogin(profileName, url, credential, skipVerify, ctx, pers
349
348
  }, loginView, `Saved credentials for profile "${profileName}" (${url}) without verifying.`, ctx);
350
349
  return;
351
350
  }
352
- const result = await verifyAndProbe(url, credential);
351
+ const result = await verifyAndProbe(url, credential, { signal: interruptSignal });
353
352
  if (!result.ok) {
354
353
  await writeProbeFailure(profileName, {
355
354
  kind: result.kind,
@@ -366,7 +365,7 @@ async function completeLogin(profileName, url, credential, skipVerify, ctx, pers
366
365
  const who = renderUserName(result.user);
367
366
  const role = renderUserRole(result.user);
368
367
  const versionTag = renderVersionTag(result.server.version);
369
- const serverClause = versionTag === EMPTY_CELL ? "" : ` Server ${versionTag}.`;
368
+ const serverClause = versionTag === "—" ? "" : ` Server ${versionTag}.`;
370
369
  renderSummary({
371
370
  profile: profileName,
372
371
  url,
@@ -378,8 +377,7 @@ async function completeLogin(profileName, url, credential, skipVerify, ctx, pers
378
377
  async function revokeUnsavedOAuthCredential(url, credential) {
379
378
  if (credential.kind !== "oauth") return;
380
379
  try {
381
- const revoked = await revokeOAuthCredential(url, credential);
382
- if (!revoked) warn("server does not advertise a revocation endpoint; the unsaved tokens remain valid until they expire");
380
+ if (!await revokeOAuthCredential(url, credential, USER_AGENT)) warn("server does not advertise a revocation endpoint; the unsaved tokens remain valid until they expire");
383
381
  } catch (error) {
384
382
  warn(`could not revoke the unsaved tokens server-side: ${errorMessage(error)}`);
385
383
  }
@@ -399,8 +397,8 @@ function announceAuthorizeUrl(url, opened) {
399
397
  warn(`Open this URL in your browser to finish login:\n ${url}`);
400
398
  }
401
399
  function formatVerifyFailureMessage(profileName, failure) {
402
- const which = failure.which === "user" ? "/api/user/current" : "/api/session/properties";
403
- return `verification failed (${which}): ${failure.message} — credentials were not saved for profile "${profileName}"`;
400
+ const label = VERIFY_STEP_LABEL[failure.which];
401
+ return `verification failed (${failure.endpoint === void 0 ? label : `${label}, ${failure.endpoint}`}): ${failure.message} — credentials were not saved for profile "${profileName}"`;
404
402
  }
405
403
  async function resolveLoginProfile(flagProfile) {
406
404
  const explicit = explicitProfileName(flagProfile);
@@ -432,7 +430,7 @@ async function nonInteractiveApiKey(flagKey, envKey) {
432
430
  }
433
431
  async function promptForUrl() {
434
432
  if (!process.stdin.isTTY) throw new ConfigError("--url is required when stdin is not a TTY (cannot prompt interactively)");
435
- const value = await promptText({
433
+ return normalizeUrl(await promptText({
436
434
  message: "Metabase URL",
437
435
  placeholder: "https://metabase.example.com",
438
436
  validate(input) {
@@ -442,11 +440,8 @@ async function promptForUrl() {
442
440
  } catch (error) {
443
441
  return errorMessage(error);
444
442
  }
445
- return void 0;
446
443
  }
447
- });
448
- return normalizeUrl(value);
444
+ }));
449
445
  }
450
-
451
446
  //#endregion
452
- export { login_default as default };
447
+ export { login_default as default };
@@ -1,9 +1,7 @@
1
- import { errorMessage, outputFlags, profileFlag, renderSummary, warn } from "./capabilities-CSjeWyLV.mjs";
2
- import "./command-augment-D9pI9Vbh.mjs";
3
- import { clearProfile, consumeKeychainResidualWarning, defineMetabaseCommand, readProfileCredential, resolveProfileName, revokeOAuthCredential } from "./runtime-MGH96fhp.mjs";
4
- import { promptConfirm } from "./prompt-BSqji7Fo.mjs";
1
+ import { f as errorMessage } from "./predicates-Bkm2IoeX.mjs";
2
+ import { F as outputFlags, I as profileFlag, b as warn, c as renderSummary, h as promptConfirm } from "./cli.mjs";
3
+ import { C as readProfileCredential, c as resolveProfileName, d as revokeOAuthCredential, t as defineMetabaseCommand, u as USER_AGENT, v as clearProfile, y as consumeKeychainResidualWarning } from "./runtime-DiKyBxOw.mjs";
5
4
  import { z } from "zod";
6
-
7
5
  //#region src/commands/auth/logout.ts
8
6
  const LogoutResult = z.object({
9
7
  profile: z.string(),
@@ -47,11 +45,10 @@ var logout_default = defineMetabaseCommand({
47
45
  async run({ args, ctx }) {
48
46
  const profileName = resolveProfileName(args.profile);
49
47
  if (!args.yes && process.stdin.isTTY === true) {
50
- const ok = await promptConfirm({
48
+ if (!await promptConfirm({
51
49
  message: `Clear stored credentials for profile "${profileName}"?`,
52
50
  initialValue: false
53
- });
54
- if (!ok) {
51
+ })) {
55
52
  renderSummary({
56
53
  profile: profileName,
57
54
  cleared: false,
@@ -65,8 +62,7 @@ var logout_default = defineMetabaseCommand({
65
62
  const residual = consumeKeychainResidualWarning();
66
63
  if (residual !== null) warn(residual);
67
64
  if (resolved !== null && resolved.credential.kind === "oauth") try {
68
- const revoked = await revokeOAuthCredential(resolved.url, resolved.credential);
69
- if (!revoked) warn("server does not advertise a revocation endpoint; tokens remain valid until they expire");
65
+ if (!await revokeOAuthCredential(resolved.url, resolved.credential, USER_AGENT)) warn("server does not advertise a revocation endpoint; tokens remain valid until they expire");
70
66
  } catch (error) {
71
67
  warn(`could not revoke tokens server-side: ${errorMessage(error)}`);
72
68
  }
@@ -78,6 +74,5 @@ var logout_default = defineMetabaseCommand({
78
74
  }, logoutView, message, ctx);
79
75
  }
80
76
  });
81
-
82
77
  //#endregion
83
- export { logout_default as default };
78
+ export { logout_default as default };
@@ -0,0 +1,29 @@
1
+ import { n as MeasureCompact } from "./measure-CtfjqJFP.mjs";
2
+ //#region src/output/views/measure.ts
3
+ const measureView = {
4
+ compactPick: MeasureCompact,
5
+ tableColumns: [
6
+ {
7
+ key: "id",
8
+ label: "ID"
9
+ },
10
+ {
11
+ key: "name",
12
+ label: "Name"
13
+ },
14
+ {
15
+ key: "description",
16
+ label: "Description"
17
+ },
18
+ {
19
+ key: "table_id",
20
+ label: "Table"
21
+ },
22
+ {
23
+ key: "archived",
24
+ label: "Archived"
25
+ }
26
+ ]
27
+ };
28
+ //#endregion
29
+ export { measureView as t };