@metabase/cli 0.3.1-alpha.versioning.9ac5f50 → 0.3.2-alpha.fix-transform-test-ee-path.041c793

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 (251) hide show
  1. package/dist/{add-collection-Dmd-uNeU.mjs → add-collection-73X1DmCM.mjs} +5 -5
  2. package/dist/{alert-D1u2MVZj.mjs → alert-BB38lWSL.mjs} +7 -7
  3. package/dist/{alerts-DcBjcfEE.mjs → alerts-DxyzqLSU.mjs} +6 -6
  4. package/dist/{append-B9Htvmab.mjs → append-CHme1Enm.mjs} +4 -4
  5. package/dist/{archive-BUoYMkxO.mjs → archive-BGiDxu8O.mjs} +3 -3
  6. package/dist/{archive-Bf014rFm.mjs → archive-BMyvyf62.mjs} +3 -3
  7. package/dist/{archive-BmsZFOZY.mjs → archive-C4Y2B58q.mjs} +3 -3
  8. package/dist/{archive-BNivAYGr.mjs → archive-CP5Hlqjw.mjs} +4 -4
  9. package/dist/{archive-CvU2z5192.mjs → archive-Cq3fnc0v2.mjs} +5 -5
  10. package/dist/{archive-B660RguB.mjs → archive-CqKqNdUh.mjs} +5 -5
  11. package/dist/{archive-CgmidYZV.mjs → archive-Czo5T0Lp.mjs} +3 -3
  12. package/dist/{archive-BVmFGFwG.mjs → archive-DBcxZwLd.mjs} +5 -5
  13. package/dist/{archive-DhDQIKR_.mjs → archive-DKFPJ9j3.mjs} +5 -5
  14. package/dist/{archive-CNif6BKy.mjs → archive-DPL1qOuL.mjs} +5 -5
  15. package/dist/{archive-bPdDITuY.mjs → archive-eS-XA74p.mjs} +3 -3
  16. package/dist/{auth-CefYEPP5.mjs → auth-6YyB0HNB.mjs} +5 -5
  17. package/dist/{body-C7m9q4cm.mjs → body-OjAWKVaU.mjs} +3 -3
  18. package/dist/{branches-pz04OjF2.mjs → branches-D5YLVFDK.mjs} +3 -3
  19. package/dist/{cancel-CNLnv19e.mjs → cancel-DeRIq1YJ.mjs} +3 -3
  20. package/dist/{cancel-task-DbnxSh7U.mjs → cancel-task-CqExODVm.mjs} +4 -4
  21. package/dist/card-BMSqofd7.mjs +24 -0
  22. package/dist/{card-zyUkr2nS.mjs → card-CEkp1mcI.mjs} +1 -1
  23. package/dist/{card-DZxRmver.mjs → card-voh1k4hl.mjs} +14 -11
  24. package/dist/{cards-DtYlVoGP.mjs → cards-B813G9I5.mjs} +6 -6
  25. package/dist/cli.mjs +223 -211
  26. package/dist/{client-Bv7Iwdvh.mjs → client-cJ7aw0Gt.mjs} +1788 -72
  27. package/dist/collection-BfNg7tEg.mjs +20 -0
  28. package/dist/{collection-WFdBeyqa.mjs → collection-BxdPxD38.mjs} +1 -1
  29. package/dist/{collection-DALwHnbz.mjs → collection-DYM0p3Xl.mjs} +1 -1
  30. package/dist/{collection-namespace-CvT0TIZA.mjs → collection-namespace-CVzDgJV0.mjs} +2 -2
  31. package/dist/{content-translation-D7POzJJ6.mjs → content-translation-QKWt9l76.mjs} +3 -3
  32. package/dist/{create-JOXq0ULN.mjs → create-4UnoQvsy.mjs} +4 -4
  33. package/dist/{create-CLgalJUe.mjs → create-BJad6MR82.mjs} +7 -7
  34. package/dist/{create-Bh2j733n.mjs → create-BLiB2xqo.mjs} +6 -6
  35. package/dist/{create-DGHILnnk.mjs → create-BWp6L_dW.mjs} +4 -4
  36. package/dist/{create-Di4YvIbK.mjs → create-Bef5eBCA.mjs} +4 -4
  37. package/dist/{create-CGgPnb7L.mjs → create-CMV3qlzJ.mjs} +3 -3
  38. package/dist/{create-Ds-DnSBe.mjs → create-CWGsiFvU.mjs} +3 -3
  39. package/dist/{create-DhDREiiy.mjs → create-CoFg1p6m.mjs} +3 -3
  40. package/dist/{create-CGPle4nE.mjs → create-CvIeb1NU.mjs} +6 -6
  41. package/dist/{create-Bwg-5p08.mjs → create-CvpeAcFc.mjs} +3 -3
  42. package/dist/{create-DYd_o9BD.mjs → create-D50TxVTk.mjs} +4 -4
  43. package/dist/{create-DnqnjGGf.mjs → create-DEBgYRlM.mjs} +5 -5
  44. package/dist/{create-CN24yp_W.mjs → create-DJm0YuLW.mjs} +3 -3
  45. package/dist/{create-CuYGZ4gu2.mjs → create-DmKwDQCY2.mjs} +5 -5
  46. package/dist/{create-branch-DWcxC30N.mjs → create-branch-BN5iH-GM.mjs} +4 -4
  47. package/dist/{create-BEE8uvz2.mjs → create-bvpl6Fn5.mjs} +6 -6
  48. package/dist/create-uanpKsPo.mjs +34 -0
  49. package/dist/{csv-CUQvcCEk.mjs → csv-BhuX9fwh.mjs} +4 -4
  50. package/dist/{current-task-D6P0eL21.mjs → current-task-BMt2NeqV.mjs} +4 -4
  51. package/dist/{dashboard-BudI952R.mjs → dashboard-Ct_ajSYI.mjs} +10 -10
  52. package/dist/{dashboard-CKUR8ZpQ.mjs → dashboard-D0hwTC-f.mjs} +11 -2
  53. package/dist/{dashboard-BlbNszi8.mjs → dashboard-DgK81azj.mjs} +1 -1
  54. package/dist/{database-B19qlLKZ.mjs → database-C3E9PZSx.mjs} +1 -1
  55. package/dist/{database-C8G6ZKG0.mjs → database-JtHTqSpq.mjs} +1 -1
  56. package/dist/{db-C7UTd-6P.mjs → db-B_LW2VE-.mjs} +7 -7
  57. package/dist/{delete-Ud6iliGM.mjs → delete-BOcPK_H9.mjs} +4 -4
  58. package/dist/{delete-_IHffP-A.mjs → delete-CowGO4rh.mjs} +4 -4
  59. package/dist/{delete-Ds-zGh9C.mjs → delete-D0f7VatX.mjs} +4 -4
  60. package/dist/{delete-DbZZKcYj.mjs → delete-D2bUV6uo.mjs} +4 -4
  61. package/dist/delete-DZ_ICQug.mjs +44 -0
  62. package/dist/{delete-DSxqbcFE.mjs → delete-Ur7b11no.mjs} +4 -4
  63. package/dist/{delete-runtime-BjHL1ryM.mjs → delete-runtime-BKEzJn22.mjs} +1 -1
  64. package/dist/{delete-table-DtXH6IN5.mjs → delete-table-Dd8X573t.mjs} +4 -4
  65. package/dist/{dependencies-CR1dlq-A.mjs → dependencies-XDVLBwko.mjs} +6 -6
  66. package/dist/{dirty-CYxnOnh0.mjs → dirty-k-JmGLsS.mjs} +5 -5
  67. package/dist/{document-Cd2mmqCp.mjs → document-BHpLJbKU.mjs} +5 -0
  68. package/dist/document-BW9iow8R.mjs +19 -0
  69. package/dist/{document-D6OybtP2.mjs → document-CA0Q6lqu.mjs} +1 -1
  70. package/dist/{download-DPpmmYQe.mjs → download-CQjPIYDO.mjs} +2 -2
  71. package/dist/{eid-D-BbtWjt.mjs → eid-CNTKDgwj.mjs} +3 -3
  72. package/dist/{events-CJEnn8WE.mjs → events-BshWlkDp.mjs} +4 -4
  73. package/dist/{export-BOgyuIOQ.mjs → export-Dq6ecU8h.mjs} +6 -6
  74. package/dist/{field-CzHBOPER.mjs → field-Bo2ISMO4.mjs} +5 -5
  75. package/dist/{field-Cr2DPUG9.mjs → field-CcN4oZy6.mjs} +16 -1
  76. package/dist/{field-BPsNa-TO.mjs → field-fDtIrY6D.mjs} +1 -1
  77. package/dist/{fields-Bwgkrvus.mjs → fields-CVctqn5G.mjs} +6 -6
  78. package/dist/{get-BLJSCw53.mjs → get-7xTeNGAo.mjs} +5 -5
  79. package/dist/{get-DyyPiiaB.mjs → get-8b5Sh50q.mjs} +5 -5
  80. package/dist/{get-DVi3a2nm.mjs → get-B4RgW-VT.mjs} +5 -5
  81. package/dist/{get-BaPadzdM.mjs → get-BD81MHl_.mjs} +3 -3
  82. package/dist/{get-CvIgxPXV.mjs → get-Bl3OmlBP.mjs} +4 -4
  83. package/dist/get-BtTetWzm.mjs +32 -0
  84. package/dist/{get-BfVCLBqc.mjs → get-BvSA_mmf.mjs} +5 -5
  85. package/dist/{get-DsKmZfM2.mjs → get-BvgEF--n.mjs} +3 -3
  86. package/dist/{get-D8lHwu4-.mjs → get-C5sWciaE.mjs} +5 -5
  87. package/dist/{get-CqQ-pf0q.mjs → get-CO6X4nZH.mjs} +16 -12
  88. package/dist/{get-CWfIiXwL.mjs → get-CTPvdcud.mjs} +5 -5
  89. package/dist/{get-C1ZdOvMm.mjs → get-CrpwxWOV.mjs} +3 -3
  90. package/dist/{get-BOLwso0V.mjs → get-D4oGhZWX.mjs} +3 -3
  91. package/dist/{get-B89DUSvw.mjs → get-Df6cGHCM.mjs} +3 -3
  92. package/dist/{get-BL90QC64.mjs → get-DfMVlz64.mjs} +5 -5
  93. package/dist/{get-CLu4yzMp2.mjs → get-Dr-U321T2.mjs} +5 -5
  94. package/dist/{get-D4OTJblo.mjs → get-Dw7jAno3.mjs} +5 -5
  95. package/dist/{get-DgnYF7LR.mjs → get-PWhOdz1z.mjs} +3 -3
  96. package/dist/{get-COwdtskS.mjs → get-RslzBaXx.mjs} +4 -4
  97. package/dist/{get-run-Iya0Yw9s.mjs → get-run-CZdDqfUj.mjs} +5 -5
  98. package/dist/{get-Eqq13YY-.mjs → get-wjIgUlNl.mjs} +3 -3
  99. package/dist/git-sync-BmoRk0UV.mjs +28 -0
  100. package/dist/{git-sync-BDnxPrqU.mjs → git-sync-BwBRmEhE.mjs} +18 -1
  101. package/dist/{git-sync-DxD_ng48.mjs → git-sync-TjX1r_wF.mjs} +1 -1
  102. package/dist/{group-CmVCLBDz.mjs → group-YQQ5GIcP.mjs} +2 -3
  103. package/dist/{has-remote-changes-DfJUMP8F.mjs → has-remote-changes-i-3MVxat.mjs} +4 -4
  104. package/dist/{import-FEAx-Y5A.mjs → import-DWEKejya.mjs} +6 -6
  105. package/dist/{input-DFZ_qGW_.mjs → input-DEvkIjGr.mjs} +1 -1
  106. package/dist/{is-dirty-BsYjBSXG.mjs → is-dirty-C5ipqd4v.mjs} +2 -2
  107. package/dist/{items-D4rstE12.mjs → items-hKJ2ZDwy.mjs} +6 -6
  108. package/dist/{key-BmWundO3.mjs → key-PYetuQ13.mjs} +1 -1
  109. package/dist/{library-uzyHWBap.mjs → library-B7_04UVK.mjs} +5 -5
  110. package/dist/{library-DXB8sm4r.mjs → library-BPIzb3K_.mjs} +1 -1
  111. package/dist/{library-CmctxHjv.mjs → library-PGCfm0UA.mjs} +1 -1
  112. package/dist/{list-DrS3ePsv.mjs → list-1vdClKSE.mjs} +3 -3
  113. package/dist/{list-xMfCeuZc.mjs → list-6myofqMv.mjs} +6 -6
  114. package/dist/{list-squb_ioH.mjs → list-B-9QOX9Y.mjs} +5 -5
  115. package/dist/{list-ndIl9XqV.mjs → list-Bs7_Rysg.mjs} +6 -6
  116. package/dist/list-CHuhMXet.mjs +35 -0
  117. package/dist/{list-CQy0z7f9.mjs → list-CLZU_EOf.mjs} +3 -3
  118. package/dist/{list-DeNGm9G4.mjs → list-Cen-7uTo.mjs} +4 -4
  119. package/dist/{list-Bjj0z5BS.mjs → list-CgH-H-O6.mjs} +3 -3
  120. package/dist/{list-BmMi_wPD.mjs → list-CjNXskB4.mjs} +6 -6
  121. package/dist/{list-DoTiQc3D.mjs → list-CmFh1GQ_.mjs} +3 -3
  122. package/dist/{list-D_zvX0ms.mjs → list-D6tTvYUP.mjs} +3 -3
  123. package/dist/{list-CC1M_n6Z.mjs → list-DI820W6w.mjs} +5 -5
  124. package/dist/{list-Dgm6TkqR.mjs → list-DKZnQ4Ts.mjs} +6 -6
  125. package/dist/{list-sQcA4g05.mjs → list-DKcC4cm0.mjs} +5 -5
  126. package/dist/{list-BRpPbvyS.mjs → list-DfRqNH1N.mjs} +3 -3
  127. package/dist/{list-bN0RC14-.mjs → list-DjwnsyXM.mjs} +11 -10
  128. package/dist/{list-BXL8HFr_.mjs → list-VNC-_E59.mjs} +5 -5
  129. package/dist/{list-1DkkU82x.mjs → list-eKDT1XXk.mjs} +5 -5
  130. package/dist/{list-B7tqNV8B.mjs → list-oX2SMzxZ.mjs} +3 -3
  131. package/dist/{login-D_1-zE4A.mjs → login-DumZaWXK.mjs} +9 -9
  132. package/dist/{logout-DPi2q1Wu.mjs → logout-BsXPRc-3.mjs} +2 -2
  133. package/dist/{measure-CdA8Nl3Z.mjs → measure-BFxkbAoa.mjs} +6 -6
  134. package/dist/{notification-Fcq1fIPw.mjs → notification-DVrLkjFT.mjs} +1 -1
  135. package/dist/{parameter-DUKR8NXo.mjs → parameter-Celg0wZa.mjs} +1 -1
  136. package/dist/{parameter-values-C6dj6I4g.mjs → parameter-values-CoF9Hx1p.mjs} +4 -4
  137. package/dist/{parse-enum-B1t8S194.mjs → parse-enum-Dc0dMZ3P.mjs} +1 -1
  138. package/dist/{parse-id-DR8aUSdL.mjs → parse-id-DmFJgpY6.mjs} +1 -1
  139. package/dist/{parse-ref-BJ_Q0tNW.mjs → parse-ref-DTDld_LJ.mjs} +1 -1
  140. package/dist/{path-B96DI8u2.mjs → path-BQ4lRDyN.mjs} +4 -4
  141. package/dist/{poll-By46YQ5J.mjs → poll-CZeXepUQ.mjs} +2 -2
  142. package/dist/{preflight-Bl1oitm8.mjs → preflight-BTQe4swo.mjs} +3 -3
  143. package/dist/{process-CcQM4qPv.mjs → process-CTrfxxaC.mjs} +1 -1
  144. package/dist/{publish-BKJYvxif.mjs → publish-CFB2Cc5A.mjs} +4 -4
  145. package/dist/{pulse-BmsDenXm.mjs → pulse-Dz0ocv0l.mjs} +1 -1
  146. package/dist/{pulse-DhG6I9mI.mjs → pulse-x0gFxWfG.mjs} +2 -2
  147. package/dist/{query-qBHjZQc_.mjs → query-BJbUnAHf.mjs} +9 -9
  148. package/dist/query-CV2KCS5O.mjs +114 -0
  149. package/dist/{query-result-DBDwk8TS.mjs → query-result-E4Q-Gra6.mjs} +1 -1
  150. package/dist/{remove-collection-BWFW7Rn6.mjs → remove-collection-D3yvKH3e.mjs} +5 -5
  151. package/dist/{render-DmykmrFB.mjs → render-BJRCs7rA.mjs} +4 -2
  152. package/dist/{replace-BmAqD3zY.mjs → replace-uj4WTqx_.mjs} +4 -4
  153. package/dist/{rescan-values-BrCLrihF.mjs → rescan-values-CzxQU318.mjs} +5 -5
  154. package/dist/{run-q5Y44Fxj.mjs → run-B2f_omHu.mjs} +3 -3
  155. package/dist/run-DlO1J1Sx.mjs +50 -0
  156. package/dist/{run-CtbzjDKY.mjs → run-yX2dtmE5.mjs} +5 -5
  157. package/dist/{runs-JFlbezkQ.mjs → runs-DzUO45wU.mjs} +6 -6
  158. package/dist/{runtime-BQiGgbgZ.mjs → runtime-arKqJqIT.mjs} +225 -68
  159. package/dist/{schema-tables-Bzx2ShyE.mjs → schema-tables-DZCNzuQ6.mjs} +6 -6
  160. package/dist/{schemas-ww5mU2AS.mjs → schemas-2ejqaVsG.mjs} +4 -4
  161. package/dist/{search-DFBwUc6d.mjs → search-BAXg-EJw.mjs} +2 -1
  162. package/dist/{search-J4RwCof-.mjs → search-DcihauDZ.mjs} +5 -5
  163. package/dist/{segment-XXTjU0eG.mjs → segment-BQT2poPG.mjs} +6 -6
  164. package/dist/{selectors-BAAZMi43.mjs → selectors-BzestDld.mjs} +3 -3
  165. package/dist/{send-BmpDlw9O.mjs → send-DMxoLFo7.mjs} +3 -3
  166. package/dist/{set-DUWrSza9.mjs → set-CDmiD0vv.mjs} +4 -4
  167. package/dist/{set-active-BiUlbNI5.mjs → set-active-RrvWR9NY.mjs} +3 -3
  168. package/dist/{setting-B1KBQN3M.mjs → setting-BiBLCcxz.mjs} +4 -4
  169. package/dist/{setup-CVaNVwOd.mjs → setup-DYsTzkWO.mjs} +3 -3
  170. package/dist/{signal-GhGmuHfx.mjs → signal-k7cm5N6h.mjs} +1 -1
  171. package/dist/{skill-list-DTnDhnL5.mjs → skill-list-D9_1Pmt7.mjs} +16 -9
  172. package/dist/{skills-DkDsSH5F.mjs → skills-BPHXUfeL.mjs} +75 -28
  173. package/dist/{skills-BWrAlj9l.mjs → skills-C3bxxC6a.mjs} +3 -3
  174. package/dist/snippet-BtfxE60H.mjs +19 -0
  175. package/dist/{stash-DMm8YF8V.mjs → stash-DdheS0Ad.mjs} +6 -6
  176. package/dist/{status-BzEQjQ_t.mjs → status-BuIzXRX1.mjs} +3 -3
  177. package/dist/{status-ClWsQD6v.mjs → status-CXouQJ31.mjs} +5 -5
  178. package/dist/{subscription-CdFn2hre.mjs → subscription-CJ8Igs1U.mjs} +6 -6
  179. package/dist/{subscriptions-DBda1pE5.mjs → subscriptions-D0NpGvCQ.mjs} +6 -6
  180. package/dist/{summary-B4GPiuqD.mjs → summary-D04S8gGj.mjs} +5 -5
  181. package/dist/{sync-schema-DsIM5g2U.mjs → sync-schema-DrA5zkdl.mjs} +6 -6
  182. package/dist/{sync-task-BACcrs0i.mjs → sync-task-BXeWuARG.mjs} +1 -1
  183. package/dist/{table-CsIJNPFf.mjs → table-C6h4tIRw.mjs} +1 -1
  184. package/dist/{table-CeeTJgQb.mjs → table-DfuY0N8e.mjs} +51 -4
  185. package/dist/{table-D4Alrrwh.mjs → table-Dntbz7Q2.mjs} +5 -5
  186. package/dist/timeline-8jwsldo3.mjs +21 -0
  187. package/dist/{timeline-event-DWIh3Tdt.mjs → timeline-event-BbB1xEdI.mjs} +6 -6
  188. package/dist/{transform-Bk0D0nIs.mjs → transform-CtqB1WYo.mjs} +2 -2
  189. package/dist/{transform-DpuG-ON3.mjs → transform-DiW7bREn.mjs} +43 -1
  190. package/dist/transform-job-B-1YAbvy.mjs +22 -0
  191. package/dist/transform-m6s4kkWU.mjs +28 -0
  192. package/dist/{transform-tag-DJ3_bksm.mjs → transform-tag-PjryheLF.mjs} +5 -5
  193. package/dist/transform-test-BjjCQ2xm.mjs +169 -0
  194. package/dist/transform-test-DSTkKKNC.mjs +16 -0
  195. package/dist/transform-test-gzDcbypy.mjs +25 -0
  196. package/dist/{transforms-Dg2MfB2a.mjs → transforms-CijX3VE7.mjs} +6 -6
  197. package/dist/{tree-BQL0f7YX.mjs → tree-Cmb3O6rH.mjs} +3 -3
  198. package/dist/{unpublish-DfSvb_Rs.mjs → unpublish-DkP_AcK5.mjs} +3 -3
  199. package/dist/{update-DBGaJDsj.mjs → update-8UmD1prT.mjs} +6 -6
  200. package/dist/{update-Izqip6jY.mjs → update-BFyRBc-H.mjs} +7 -7
  201. package/dist/{update-BCgAyfj_.mjs → update-BrXGg3QO.mjs} +7 -7
  202. package/dist/{update-sYLQIUgh.mjs → update-C91m9YAR.mjs} +5 -5
  203. package/dist/{update-D1QdfpKR.mjs → update-COcx61Ur.mjs} +5 -5
  204. package/dist/update-Ci8YL4_2.mjs +41 -0
  205. package/dist/{update-CDo0Orvu.mjs → update-CtLbFCd_.mjs} +4 -4
  206. package/dist/{update-Bhmli02m.mjs → update-D6Zzvc7F.mjs} +6 -6
  207. package/dist/{update-Cr5zHb0D.mjs → update-D8htjzNJ.mjs} +4 -4
  208. package/dist/{update-CtDHMxW8.mjs → update-D9kOTr0n.mjs} +5 -5
  209. package/dist/{update-BxIyFtrX.mjs → update-DPTio6i1.mjs} +6 -6
  210. package/dist/{update-NZhIjTCf.mjs → update-DlWB9s0v.mjs} +4 -4
  211. package/dist/{update-D4qdTlLF.mjs → update-DubrpPbz.mjs} +4 -4
  212. package/dist/{update-CiYxcf8M.mjs → update-Dz47cKBk.mjs} +4 -4
  213. package/dist/{update-B-hRR8gW.mjs → update-FCP5Lop2.mjs} +6 -6
  214. package/dist/{update-CKoBDTL7.mjs → update-KSHnb6vB.mjs} +8 -8
  215. package/dist/{update-dashcard-D5b971AO.mjs → update-dashcard-BlibHa5o.mjs} +6 -6
  216. package/dist/{upgrade-CD1xtsIv.mjs → upgrade-EwL6wPSY.mjs} +4 -4
  217. package/dist/upload-BZshRJIM.mjs +13 -0
  218. package/dist/{upload-akKFxpVA.mjs → upload-D0KaTqUE.mjs} +3 -3
  219. package/dist/{upload-BUd3MG90.mjs → upload-Do2PBSeH.mjs} +2 -2
  220. package/dist/{uuid-oVdJ62eA.mjs → uuid-DjKLDIVE.mjs} +9 -5
  221. package/dist/{validate-query-Boi8-cAP.mjs → validate-query-D6_ad-Gi.mjs} +3 -3
  222. package/dist/{validate-CWd6l6KZ.mjs → validate-xR_MHBNR.mjs} +69 -23
  223. package/dist/{values-DLwZl-P8.mjs → values-Dc9612_L.mjs} +5 -5
  224. package/dist/{verify-CH9Tw8yv.mjs → verify-DVN1eqXZ.mjs} +3 -3
  225. package/dist/{wait-rfTdQWdi.mjs → wait-C-ovOTAZ.mjs} +6 -6
  226. package/dist/{wait-flags-DiQ_kRjZ.mjs → wait-flags-BQNmuvIj.mjs} +2 -2
  227. package/dist/{window-BkvrP0gB.mjs → window-DSb1tqSe.mjs} +1 -1
  228. package/package.json +1 -1
  229. package/skill-data/core/SKILL.md +20 -14
  230. package/skill-data/dashboard/SKILL.md +1 -1
  231. package/skill-data/mbql/SKILL.md +84 -115
  232. package/skill-data/mbql/references/operators.md +81 -240
  233. package/skill-data/native-sql/SKILL.md +8 -9
  234. package/skill-data/native-sql/references/template-tags.md +21 -25
  235. package/skill-data/transform/SKILL.md +64 -2
  236. package/skill-data/transform-test-plan/SKILL.md +171 -0
  237. package/skill-data/transform-test-plan/references/checklist.md +81 -0
  238. package/skill-data/transform-test-plan/references/checks.md +260 -0
  239. package/skill-data/visualization/SKILL.md +2 -3
  240. package/skill-data/visualization/references/settings.md +7 -7
  241. package/skills/metabase-cli/SKILL.md +1 -1
  242. package/dist/card-BRarvKYX.mjs +0 -24
  243. package/dist/collection-CKeO8X7U.mjs +0 -20
  244. package/dist/document-BoILnE_1.mjs +0 -19
  245. package/dist/git-sync-CdN0Maun.mjs +0 -28
  246. package/dist/query-BKSM-pbi.mjs +0 -86
  247. package/dist/snippet-CG75L2DS.mjs +0 -19
  248. package/dist/timeline-DmM0BuX8.mjs +0 -21
  249. package/dist/transform-BcV_XlSX.mjs +0 -28
  250. package/dist/transform-job-CjtwBGoM.mjs +0 -22
  251. package/dist/upload-DzGTlldn.mjs +0 -13
@@ -1,4 +1,4 @@
1
- import { $ as ValidationError, A as setMetabaseAugment, C as ENV_DISABLE_KEYRING, D as ENV_URL, E as ENV_SKIP_PREFLIGHT, G as ChainedRequestError, H as normalizeFlag, J as MetabaseError, K as ConfigError, M as version, O as consumeLegacyEnvWarnings, S as ENV_API_KEY, U as toAliasArray, V as flagConsumesValue, X as ResponseShapeError, Y as NetworkError, Z as TimeoutError, at as featureGap, ct as editionFromTag, dt as FEATURE_RULES, et as errorMessage, ft as Features, h as isPlainObject, ht as TokenFeatures, i as reportError, it as createServerProfile, k as readEnv, lt as tryParseTag, mt as SessionProperties, n as methodRequirements, nt as KNOWN_RANGE, ot as Edition, r as summarizeCapabilities, rt as Skew, st as ParsedVersion, t as interruptSignal, tt as isFileNotFoundError, ut as FEATURE_NAMES, x as warn } from "./cli.mjs";
1
+ import { D as ENV_API_KEY, E as warn, F as ProfileRefreshedError, I as setMetabaseAugment, J as normalizeFlag, M as ENV_URL, N as consumeLegacyEnvWarnings, O as ENV_DISABLE_KEYRING, P as readEnv, Q as ConfigError, R as version, Y as toAliasArray, Z as ChainedRequestError, a as Features, at as ValidationError, b as isPlainObject, c as ruleGap, ct as KNOWN_RANGE, et as MetabaseError, i as FEATURE_RULES, j as ENV_SKIP_PREFLIGHT, l as reportError, n as methodRequirements, nt as ResponseShapeError, o as evaluateFeatures, ot as errorMessage, q as flagConsumesValue, r as FEATURE_NAMES, rt as TimeoutError, st as isFileNotFoundError, t as interruptSignal, tt as NetworkError } from "./cli.mjs";
2
2
  import { defineCommand } from "citty";
3
3
  import { z } from "zod";
4
4
  import { Entry } from "@napi-rs/keyring";
@@ -27,10 +27,10 @@ const RequirementFailure = z.object({
27
27
  feature: z.enum(FEATURE_NAMES),
28
28
  since: z.number().int(),
29
29
  tokenFeature: z.string().nullable(),
30
- serverVersion: z.string().nullable()
30
+ serverVersion: z.string()
31
31
  });
32
32
  function versionTooOldMessage(since, serverVersion) {
33
- return `This operation requires Metabase v${since}+ (${serverVersion === null ? "this server's version is unknown" : `this server is ${serverVersion}`}). Upgrade Metabase to use it.`;
33
+ return `This operation requires Metabase v${since}+ (this server is ${serverVersion}). Upgrade Metabase to use it.`;
34
34
  }
35
35
  function missingTokenFeatureMessage(tokenFeature) {
36
36
  return `This operation requires the '${tokenFeature}' premium feature (not enabled on this server).`;
@@ -46,17 +46,81 @@ var CapabilityError = class extends MetabaseError {
46
46
  }
47
47
  };
48
48
  //#endregion
49
+ //#region ../client/src/domain/session-properties.ts
50
+ const ServerVersion$1 = z.object({
51
+ tag: z.string(),
52
+ date: z.string().optional(),
53
+ hash: z.string().optional()
54
+ }).loose();
55
+ const TokenFeatures = z.record(z.string(), z.boolean());
56
+ const SessionProperties = z.object({
57
+ version: ServerVersion$1,
58
+ "token-features": TokenFeatures.optional()
59
+ }).loose();
60
+ //#endregion
61
+ //#region ../client/src/version/tag.ts
62
+ const ReleaseVersion = z.object({
63
+ kind: z.literal("release"),
64
+ tag: z.string(),
65
+ major: z.number().int().nonnegative(),
66
+ patch: z.number().int().nonnegative()
67
+ });
68
+ const DevelopmentBuild = z.object({
69
+ kind: z.literal("development"),
70
+ tag: z.string()
71
+ });
72
+ const ServerVersion = z.discriminatedUnion("kind", [ReleaseVersion, DevelopmentBuild]);
73
+ const Edition = z.enum(["oss", "ee"]);
74
+ const TAG = /^v?([01])\.(\d+)\.(\d+)(?:\.\d+)?(?:-([0-9A-Za-z.-]+))?$/;
75
+ const OSS_EDITION_NUMBER = "0";
76
+ const DEV_BUILD_SUFFIX = "SNAPSHOT";
77
+ function tagParts(tag) {
78
+ const match = TAG.exec(tag);
79
+ if (match === null) return null;
80
+ const [, editionNumber, major, patch, prerelease] = match;
81
+ if (editionNumber === void 0 || major === void 0 || patch === void 0) return null;
82
+ return {
83
+ edition: editionNumber === OSS_EDITION_NUMBER ? "oss" : "ee",
84
+ major: Number(major),
85
+ patch: Number(patch),
86
+ prerelease: prerelease ?? null
87
+ };
88
+ }
89
+ function parseTag(tag) {
90
+ const parts = tagParts(tag);
91
+ if (parts === null || parts.prerelease === DEV_BUILD_SUFFIX) return {
92
+ kind: "development",
93
+ tag
94
+ };
95
+ return {
96
+ kind: "release",
97
+ tag,
98
+ major: parts.major,
99
+ patch: parts.patch
100
+ };
101
+ }
102
+ function editionFromTag(tag) {
103
+ const parts = tagParts(tag);
104
+ return parts === null ? null : parts.edition;
105
+ }
106
+ function describeVersion(version) {
107
+ return version.kind === "release" ? version.tag : `development build ${version.tag}`;
108
+ }
109
+ const StoredServerVersion = z.object({ tag: z.string() }).loose().transform(({ tag }) => parseTag(tag));
110
+ //#endregion
49
111
  //#region ../client/src/version/probe.ts
50
112
  const PROBE_PATH = "/api/session/properties";
51
113
  const PROBE_TIMEOUT_MS = 1e4;
52
114
  async function probeServer(client, opts = {}) {
53
- const properties = await client.requestParsed(SessionProperties, PROBE_PATH, {
115
+ return serverInfoFromProperties(await client.requestParsed(SessionProperties, PROBE_PATH, {
54
116
  timeoutMs: PROBE_TIMEOUT_MS,
55
117
  retries: opts.retries ?? 0
56
- });
118
+ }));
119
+ }
120
+ function serverInfoFromProperties(properties) {
57
121
  const { tag } = properties.version;
58
122
  return {
59
- version: tryParseTag(tag),
123
+ version: parseTag(tag),
60
124
  edition: editionFromTag(tag),
61
125
  date: properties.version.date ?? null,
62
126
  hash: properties.version.hash ?? null,
@@ -64,11 +128,65 @@ async function probeServer(client, opts = {}) {
64
128
  };
65
129
  }
66
130
  //#endregion
67
- //#region ../client/src/version/requirement-check.ts
68
- /** The first feature a method needs that the profile lacks, or `null` when it may proceed. */
69
- function checkRequirements(key, profile) {
70
- return checkFeatures(methodRequirements(key), profile);
131
+ //#region ../client/src/version/profile.ts
132
+ const Skew = z.enum([
133
+ "supported",
134
+ "older-than-known",
135
+ "newer-than-known",
136
+ "development"
137
+ ]);
138
+ z.object({
139
+ version: ServerVersion,
140
+ buildDate: z.string().nullable(),
141
+ hash: z.string().nullable(),
142
+ edition: Edition,
143
+ tokenFeatures: TokenFeatures.nullable(),
144
+ features: Features,
145
+ skew: Skew
146
+ });
147
+ function createServerProfile(info) {
148
+ const placement = place(info.version);
149
+ return {
150
+ version: info.version,
151
+ buildDate: info.date,
152
+ hash: info.hash,
153
+ edition: detectEdition(info),
154
+ tokenFeatures: info.tokenFeatures,
155
+ features: evaluateFeatures(placement.major, info.tokenFeatures),
156
+ skew: placement.skew
157
+ };
158
+ }
159
+ function featureGap(profile, feature) {
160
+ const placement = place(profile.version);
161
+ return ruleGap(FEATURE_RULES[feature], placement.major, profile.tokenFeatures);
162
+ }
163
+ function place(version) {
164
+ if (version.kind === "development") return {
165
+ major: "development",
166
+ skew: "development"
167
+ };
168
+ if (version.major > KNOWN_RANGE.max) return {
169
+ major: KNOWN_RANGE.max + 1,
170
+ skew: "newer-than-known"
171
+ };
172
+ if (version.major < KNOWN_RANGE.min) return {
173
+ major: version.major,
174
+ skew: "older-than-known"
175
+ };
176
+ return {
177
+ major: version.major,
178
+ skew: "supported"
179
+ };
180
+ }
181
+ function detectEdition(info) {
182
+ if (info.edition !== null) return info.edition;
183
+ return grantsAnyFeature(info.tokenFeatures) ? "ee" : "oss";
184
+ }
185
+ function grantsAnyFeature(tokenFeatures) {
186
+ return tokenFeatures !== null && Object.values(tokenFeatures).some((enabled) => enabled);
71
187
  }
188
+ //#endregion
189
+ //#region ../client/src/version/requirement-check.ts
72
190
  /** The first of `features` the profile lacks, or `null` when it has every one. */
73
191
  function checkFeatures(features, profile) {
74
192
  for (const feature of features) {
@@ -79,7 +197,7 @@ function checkFeatures(features, profile) {
79
197
  }
80
198
  function describeGap(gap, feature, profile) {
81
199
  const rule = FEATURE_RULES[feature];
82
- const serverVersion = profile.version === null ? null : profile.version.tag;
200
+ const serverVersion = profile.version.tag;
83
201
  const tokenFeature = rule.tokenFeature ?? null;
84
202
  if (gap.kind === "token") return {
85
203
  reason: "missing-token-feature",
@@ -91,7 +209,7 @@ function describeGap(gap, feature, profile) {
91
209
  };
92
210
  return {
93
211
  reason: "version-too-old",
94
- detail: versionTooOldMessage(rule.since, serverVersion),
212
+ detail: versionTooOldMessage(rule.since, describeVersion(profile.version)),
95
213
  feature,
96
214
  since: rule.since,
97
215
  tokenFeature,
@@ -105,7 +223,7 @@ const KnownRange = z.object({
105
223
  max: z.number().int()
106
224
  });
107
225
  const ServerSummary = z.object({
108
- version: ParsedVersion.nullable(),
226
+ version: ServerVersion.nullable(),
109
227
  edition: Edition.nullable(),
110
228
  skew: Skew.nullable(),
111
229
  knownRange: KnownRange,
@@ -131,22 +249,19 @@ function summarizeServer(info) {
131
249
  features: profile.features
132
250
  };
133
251
  }
134
- const UNPARSEABLE_VERSION_LABEL = "an unparseable version";
135
- function versionLabel(version) {
136
- return version === null ? UNPARSEABLE_VERSION_LABEL : version.tag;
137
- }
138
252
  function skewNotice(profile) {
139
- const max = KNOWN_RANGE.max;
253
+ const { min, max } = KNOWN_RANGE;
140
254
  switch (profile.skew) {
141
- case "supported": return null;
142
- case "newer-than-known": return `Metabase ${versionLabel(profile.version)} is newer than this CLI supports (up to v${max}); commands run as if it were a head build past v${max}. Run \`mb upgrade\` for a newer CLI.`;
143
- case "unknown": return `Could not parse the Metabase version; assuming a head build past v${max}.`;
255
+ case "supported":
256
+ case "development": return null;
257
+ case "older-than-known": return `Metabase ${describeVersion(profile.version)} is older than this CLI supports (v${min}+); commands needing a newer feature are refused by name. Upgrade Metabase to v${min} or later.`;
258
+ case "newer-than-known": return `Metabase ${describeVersion(profile.version)} is newer than this CLI supports (up to v${max}); commands run as if it were v${max + 1}. Run \`mb upgrade\` for a newer CLI.`;
144
259
  }
145
260
  }
146
261
  const PROFILE_REFRESHED_REMEDY = "the profile was refreshed — retry the command.";
147
262
  function serverChangeNote(cached, fresh) {
148
- const before = versionLabel(cached.version);
149
- const after = versionLabel(fresh.version);
263
+ const before = describeVersion(cached.version);
264
+ const after = describeVersion(fresh.version);
150
265
  if (before !== after) return `The server's version changed since the last probe (was ${before}, now ${after}); ${PROFILE_REFRESHED_REMEDY}`;
151
266
  if (!sameTokenFeatures(cached.tokenFeatures, fresh.tokenFeatures)) return `The server's premium features changed since the last probe; ${PROFILE_REFRESHED_REMEDY}`;
152
267
  return null;
@@ -350,7 +465,8 @@ const ErrorEnvelope = z.object({
350
465
  "error-message": z.string().optional(),
351
466
  via: z.array(z.object({ message: z.string().optional() }).loose()).optional(),
352
467
  "specific-errors": z.unknown().optional(),
353
- errors: z.unknown().optional()
468
+ errors: z.unknown().optional(),
469
+ "error-code": z.string().optional()
354
470
  }).loose();
355
471
  const FieldErrorNodeSchema = z.lazy(() => z.union([
356
472
  z.string(),
@@ -361,6 +477,8 @@ const FieldErrorTree = z.record(z.string(), FieldErrorNodeSchema);
361
477
  const FIELD_MESSAGE_SEPARATOR = "; ";
362
478
  const MAX_EXTRACTED_MESSAGE_LEN = 500;
363
479
  const ELLIPSIS = "…";
480
+ const GOT_VALUE_PATTERN = /got: ((?:[^"\\]|\\.)*)/g;
481
+ const MAX_GOT_VALUE_LEN = 60;
364
482
  var HttpError = class extends MetabaseError {
365
483
  category = "http";
366
484
  status;
@@ -371,7 +489,7 @@ var HttpError = class extends MetabaseError {
371
489
  const redactedHeaders = redactHeaders(input.responseHeaders);
372
490
  const kind = classifyKind(input.status, sanitizedBody, redactedHeaders);
373
491
  super(input.overrideUserMessage ?? buildUserMessage(kind, input, sanitizedBody, redactedHeaders));
374
- const fields = extractFieldErrors(sanitizedBody);
492
+ const fields = extractEnvelopeViews(sanitizedBody);
375
493
  this.name = "HttpError";
376
494
  this.status = input.status;
377
495
  this.kind = kind;
@@ -383,7 +501,8 @@ var HttpError = class extends MetabaseError {
383
501
  responseHeaders: redactedHeaders,
384
502
  body: sanitizedBody,
385
503
  fieldErrors: fields.fieldErrors,
386
- specificFieldErrors: fields.specificFieldErrors
504
+ specificFieldErrors: fields.specificFieldErrors,
505
+ errorCode: fields.errorCode
387
506
  };
388
507
  }
389
508
  get isRetryable() {
@@ -395,6 +514,9 @@ var HttpError = class extends MetabaseError {
395
514
  get specificFieldErrors() {
396
515
  return this.developerDetail.specificFieldErrors;
397
516
  }
517
+ get errorCode() {
518
+ return this.developerDetail.errorCode;
519
+ }
398
520
  };
399
521
  function chainRequestFailure(cause, message) {
400
522
  if (cause instanceof HttpError) return new HttpError({
@@ -443,7 +565,7 @@ function buildUserMessage(kind, input, sanitizedBody, redactedHeaders) {
443
565
  function plainTextMessage(sanitizedBody, redactedHeaders) {
444
566
  if (sanitizedBody === null || !redactedHeaders["content-type"]?.includes(TEXT_CONTENT_TYPE)) return null;
445
567
  const trimmed = sanitizedBody.trim();
446
- return trimmed === "" ? null : capLength(trimmed);
568
+ return trimmed === "" ? null : condenseMessage(trimmed);
447
569
  }
448
570
  function buildRouteMissingMessage(input) {
449
571
  const path = pathFromUrl(input.url);
@@ -462,16 +584,18 @@ function parseEnvelope(sanitizedBody) {
462
584
  const result = parseJsonResult(sanitizedBody, ErrorEnvelope);
463
585
  return result.ok ? result.value : null;
464
586
  }
465
- const NO_FIELD_ERRORS = {
587
+ const NO_ENVELOPE_VIEWS = {
466
588
  fieldErrors: null,
467
- specificFieldErrors: null
589
+ specificFieldErrors: null,
590
+ errorCode: null
468
591
  };
469
- function extractFieldErrors(sanitizedBody) {
592
+ function extractEnvelopeViews(sanitizedBody) {
470
593
  const envelope = parseEnvelope(sanitizedBody);
471
- if (envelope === null) return NO_FIELD_ERRORS;
594
+ if (envelope === null) return NO_ENVELOPE_VIEWS;
472
595
  return {
473
596
  fieldErrors: parseFieldErrors(envelope.errors),
474
- specificFieldErrors: parseFieldErrors(envelope["specific-errors"])
597
+ specificFieldErrors: parseFieldErrors(envelope["specific-errors"]),
598
+ errorCode: envelope["error-code"] ?? null
475
599
  };
476
600
  }
477
601
  function parseFieldErrors(value) {
@@ -485,13 +609,13 @@ function parseEnvelopeMessage(sanitizedBody) {
485
609
  const envelope = parseEnvelope(sanitizedBody);
486
610
  if (envelope === null) return null;
487
611
  const topLevel = envelope.message ?? envelope.error ?? envelope["error-message"];
488
- if (topLevel) return capLength(topLevel);
612
+ if (topLevel) return condenseMessage(topLevel);
489
613
  const viaMessage = envelope.via?.find((entry) => entry.message)?.message;
490
- if (viaMessage) return capLength(viaMessage);
614
+ if (viaMessage) return condenseMessage(viaMessage);
491
615
  const specific = formatErrorTree(envelope["specific-errors"]);
492
- if (specific) return capLength(specific);
616
+ if (specific) return condenseMessage(specific);
493
617
  const generic = formatErrorTree(envelope.errors);
494
- if (generic) return capLength(generic);
618
+ if (generic) return condenseMessage(generic);
495
619
  return null;
496
620
  }
497
621
  function formatErrorTree(value) {
@@ -521,9 +645,14 @@ function collectLeafEntries(value, path) {
521
645
  if (isPlainObject(value)) return Object.entries(value).flatMap(([key, child]) => collectLeafEntries(child, [...path, key]));
522
646
  return [];
523
647
  }
524
- function capLength(message) {
525
- if (message.length <= MAX_EXTRACTED_MESSAGE_LEN) return message;
526
- return message.slice(0, MAX_EXTRACTED_MESSAGE_LEN - 1) + ELLIPSIS;
648
+ function condenseMessage(message) {
649
+ const trimmed = message.replace(GOT_VALUE_PATTERN, trimGotValue);
650
+ if (trimmed.length <= MAX_EXTRACTED_MESSAGE_LEN) return trimmed;
651
+ return trimmed.slice(0, MAX_EXTRACTED_MESSAGE_LEN - 1) + ELLIPSIS;
652
+ }
653
+ function trimGotValue(match, value) {
654
+ if (value.length <= MAX_GOT_VALUE_LEN) return match;
655
+ return `got: ${value.slice(0, MAX_GOT_VALUE_LEN)}${ELLIPSIS}`;
527
656
  }
528
657
  function defaultMessageForStatus(status) {
529
658
  return STATUS_CLASSIFICATIONS[status]?.message ?? `Metabase returned ${status}.`;
@@ -678,7 +807,7 @@ async function postForm(url, userAgent, params, schema, source) {
678
807
  return readJson(response, schema, source);
679
808
  }
680
809
  const OAUTH_UNSUPPORTED_MESSAGE = "this Metabase does not support OAuth login (requires Metabase v63 or newer)";
681
- async function tryDiscoverMetadata(baseUrl, userAgent) {
810
+ async function fetchMetadata(baseUrl, userAgent) {
682
811
  const response = await oauthFetch({
683
812
  url: `${baseUrl}${DISCOVERY_PATH}`,
684
813
  method: "GET",
@@ -690,9 +819,9 @@ async function tryDiscoverMetadata(baseUrl, userAgent) {
690
819
  await response.body?.cancel().catch(() => void 0);
691
820
  return null;
692
821
  }
693
- const metadata = await readJson(response, OAuthServerMetadata, "OAuth discovery");
694
- const scopes = metadata.scopes_supported;
695
- if (scopes !== void 0 && !scopes.includes("mb:full")) return null;
822
+ return readJson(response, OAuthServerMetadata, "OAuth discovery");
823
+ }
824
+ function pinEndpoints(metadata, baseUrl) {
696
825
  assertEndpointOrigin(metadata.issuer, baseUrl, "issuer");
697
826
  assertEndpointOrigin(metadata.authorization_endpoint, baseUrl, "authorization endpoint");
698
827
  assertEndpointOrigin(metadata.token_endpoint, baseUrl, "token endpoint");
@@ -700,11 +829,33 @@ async function tryDiscoverMetadata(baseUrl, userAgent) {
700
829
  if (metadata.revocation_endpoint !== void 0) assertEndpointOrigin(metadata.revocation_endpoint, baseUrl, "revocation endpoint");
701
830
  return metadata;
702
831
  }
703
- async function discoverMetadata(baseUrl, userAgent) {
832
+ async function grantsFullAccessScope(metadata, baseUrl, userAgent) {
833
+ if (metadata.scopes_supported?.includes("mb:full") === true) return true;
834
+ const url = `${baseUrl}${PROBE_PATH}`;
835
+ const response = await oauthFetch({
836
+ url,
837
+ method: "GET",
838
+ userAgent,
839
+ headers: { accept: JSON_CONTENT_TYPE }
840
+ });
841
+ if (!response.ok) throw await failure(response, "Server properties", "GET", url);
842
+ return createServerProfile(serverInfoFromProperties(await readJson(response, SessionProperties, "Server properties"))).features.oauthFullAccessScope;
843
+ }
844
+ async function tryDiscoverMetadata(baseUrl, userAgent) {
845
+ const metadata = await fetchMetadata(baseUrl, userAgent);
846
+ if (metadata === null || !await grantsFullAccessScope(metadata, baseUrl, userAgent)) return null;
847
+ return pinEndpoints(metadata, baseUrl);
848
+ }
849
+ async function discoverLoginMetadata(baseUrl, userAgent) {
704
850
  const metadata = await tryDiscoverMetadata(baseUrl, userAgent);
705
851
  if (metadata === null) throw new ConfigError(OAUTH_UNSUPPORTED_MESSAGE);
706
852
  return metadata;
707
853
  }
854
+ async function discoverMetadata(baseUrl, userAgent) {
855
+ const metadata = await fetchMetadata(baseUrl, userAgent);
856
+ if (metadata === null) throw new ConfigError(OAUTH_UNSUPPORTED_MESSAGE);
857
+ return pinEndpoints(metadata, baseUrl);
858
+ }
708
859
  async function registerClient(input) {
709
860
  const response = await oauthFetch({
710
861
  url: input.registrationEndpoint,
@@ -805,13 +956,14 @@ const ProbedUser = z.object({
805
956
  });
806
957
  const ProfileLastProbe = z.object({
807
958
  at: z.iso.datetime(),
808
- version: ParsedVersion.nullable(),
959
+ version: StoredServerVersion,
809
960
  edition: Edition.nullable().default(null),
810
961
  date: z.string().nullable().default(null),
811
962
  hash: z.string().nullable().default(null),
812
963
  tokenFeatures: TokenFeatures.nullable(),
813
964
  user: ProbedUser
814
965
  });
966
+ const UntaggedLastProbe = z.object({ version: z.null() }).loose().transform(() => null);
815
967
  const ProfileFailureKind = z.enum([
816
968
  "auth",
817
969
  "network",
@@ -834,7 +986,7 @@ const ProfileRecord = z.object({
834
986
  url: z.string(),
835
987
  apiKey: z.string().nullable(),
836
988
  oauth: ProfileOAuth.nullable().default(null),
837
- lastProbe: ProfileLastProbe.nullable(),
989
+ lastProbe: z.union([ProfileLastProbe, UntaggedLastProbe]).nullable(),
838
990
  lastFailure: ProfileLastFailure.nullable()
839
991
  }).loose();
840
992
  const ProfilesFile = z.object({ profiles: z.array(ProfileRecord) }).loose();
@@ -1273,16 +1425,31 @@ function resolveCredential(flagKey, envKey, stored) {
1273
1425
  }
1274
1426
  //#endregion
1275
1427
  //#region src/core/auth/cached-server.ts
1276
- async function readCachedProbe(profileName, url) {
1428
+ async function lookupCachedProbe(profileName, url) {
1277
1429
  const record = await readProfileRecord(profileName);
1278
- if (record === null || record.lastProbe === null) return null;
1279
- if (url !== null && normalizeUrl(record.url) !== url) return null;
1280
- return record.lastProbe;
1430
+ if (record === null) return { kind: "no-profile" };
1431
+ if (record.lastProbe === null) return { kind: "never-probed" };
1432
+ if (url !== null && normalizeUrl(record.url) !== url) return {
1433
+ kind: "other-url",
1434
+ url
1435
+ };
1436
+ return {
1437
+ kind: "found",
1438
+ probe: record.lastProbe
1439
+ };
1440
+ }
1441
+ async function readCachedProbe(profileName, url) {
1442
+ const hit = await lookupCachedProbe(profileName, url);
1443
+ return hit.kind === "found" ? hit.probe : null;
1281
1444
  }
1282
1445
  async function readCachedServerProfile(profileName) {
1283
1446
  const envUrl = readEnvCredentials().url;
1284
- const probe = await readCachedProbe(profileName, envUrl === null ? null : normalizeUrl(envUrl));
1285
- return probe === null ? null : createServerProfile(probe);
1447
+ const hit = await lookupCachedProbe(profileName, envUrl === null ? null : normalizeUrl(envUrl));
1448
+ if (hit.kind !== "found") return hit;
1449
+ return {
1450
+ kind: "found",
1451
+ profile: createServerProfile(hit.probe)
1452
+ };
1286
1453
  }
1287
1454
  //#endregion
1288
1455
  //#region src/output/format.ts
@@ -1444,7 +1611,7 @@ function defineMetabaseCommand(def) {
1444
1611
  const resolved = await getResolvedConfig();
1445
1612
  const probe = await readCachedProbe(resolved.profile, resolved.url);
1446
1613
  const server = probe === null ? null : createServerProfile(probe);
1447
- const { createClient } = await import("./client-Bv7Iwdvh.mjs").then((n) => n.t);
1614
+ const { createClient } = await import("./client-cJ7aw0Gt.mjs").then((n) => n.t);
1448
1615
  cachedClient = createClient({
1449
1616
  url: resolved.url,
1450
1617
  credential: resolved.credential
@@ -1495,8 +1662,7 @@ function defineMetabaseCommand(def) {
1495
1662
  skills: def.skills ?? [],
1496
1663
  inputSchema: def.inputSchema ?? null,
1497
1664
  outputSchema: def.outputSchema ?? null,
1498
- requires: requirements,
1499
- capabilities: requirements === null ? null : summarizeCapabilities(requirements.features)
1665
+ requires: requirements
1500
1666
  });
1501
1667
  return cmd;
1502
1668
  }
@@ -1537,18 +1703,9 @@ function createPreflightEnforcer(features, skip, noticeSkew) {
1537
1703
  }
1538
1704
  async function refreshProfileOnStaleError(error, cached) {
1539
1705
  if (cached === null) return error;
1540
- if (error instanceof ResponseShapeError) {
1541
- const note = await refreshChangedProbe(cached);
1542
- return note === null ? error : new ResponseShapeError(`${error.message}\n${note}`, error.developerDetail);
1543
- }
1544
- if (error instanceof CapabilityError) {
1545
- const note = await refreshChangedProbe(cached);
1546
- return note === null ? error : new CapabilityError({
1547
- ...error.developerDetail,
1548
- detail: `${error.message}\n${note}`
1549
- });
1550
- }
1551
- return error;
1706
+ if (!(error instanceof ResponseShapeError) && !(error instanceof CapabilityError)) return error;
1707
+ const note = await refreshChangedProbe(cached);
1708
+ return note === null ? error : new ProfileRefreshedError(error, note);
1552
1709
  }
1553
1710
  async function refreshChangedProbe(cached) {
1554
1711
  let fresh;
@@ -1589,4 +1746,4 @@ function buildConfigFlags(ctx) {
1589
1746
  return flags;
1590
1747
  }
1591
1748
  //#endregion
1592
- export { probeServer as $, OAUTH_SCOPE as A, JSON_CONTENT_TYPE as B, ProbedUser as C, OAUTH_CLIENT_NAME as D, profileAuthMethod as E, buildNetworkError as F, credentialSecrets as G, parseJsonOrPlain as H, isConnectionClosed as I, normalizeUrl as J, oauthCredentialFromTokens as K, HttpError as L, exchangeCode as M, registerClient as N, USER_AGENT as O, tryDiscoverMetadata as P, checkRequirements as Q, chainRequestFailure as R, writeProfile as S, ProfileLastFailure as T, assertCredentialHeaderSafe as U, parseJson as V, credentialAuthHeader as W, summarizeServer as X, ServerSummary as Y, checkFeatures as Z, readProfileRecord as _, readCachedServerProfile as a, writeProbeFailure as b, readEnvCredentials as c, clearProfile as d, CapabilityError as et, consumeKeychainResidualWarning as f, readProfileCredential as g, listProfileRecords as h, parseEnumCsv as i, discoverMetadata as j, revokeOAuthCredential as k, resolveProfileName as l, keyringFallbackWarning as m, parseCsv as n, parseInteger as nt, createCredentialRefresher as o, consumeKeyringDowngradeWarning as p, displayUrl as q, parseEnum as r, parseOptionalInteger as rt, explicitProfileName as s, defineMetabaseCommand as t, RequirementFailure as tt, DEFAULT_PROFILE as u, resolveRecordCredential as v, ProfileAuthMethod as w, writeProbeResult as x, writeOAuthProfile as y, isRetryableStatus as z };
1749
+ export { createServerProfile as $, OAUTH_SCOPE as A, JSON_CONTENT_TYPE as B, ProbedUser as C, OAUTH_CLIENT_NAME as D, profileAuthMethod as E, buildNetworkError as F, credentialSecrets as G, parseJsonOrPlain as H, isConnectionClosed as I, normalizeUrl as J, oauthCredentialFromTokens as K, HttpError as L, exchangeCode as M, registerClient as N, USER_AGENT as O, tryDiscoverMetadata as P, Skew as Q, chainRequestFailure as R, writeProfile as S, ProfileLastFailure as T, assertCredentialHeaderSafe as U, parseJson as V, credentialAuthHeader as W, summarizeServer as X, ServerSummary as Y, checkFeatures as Z, readProfileRecord as _, readCachedServerProfile as a, writeProbeFailure as b, readEnvCredentials as c, clearProfile as d, probeServer as et, consumeKeychainResidualWarning as f, readProfileCredential as g, listProfileRecords as h, parseEnumCsv as i, parseOptionalInteger as it, discoverLoginMetadata as j, revokeOAuthCredential as k, resolveProfileName as l, keyringFallbackWarning as m, parseCsv as n, RequirementFailure as nt, createCredentialRefresher as o, consumeKeyringDowngradeWarning as p, displayUrl as q, parseEnum as r, parseInteger as rt, explicitProfileName as s, defineMetabaseCommand as t, CapabilityError as tt, DEFAULT_PROFILE as u, resolveRecordCredential as v, ProfileAuthMethod as w, writeProbeResult as x, writeOAuthProfile as y, isRetryableStatus as z };
@@ -1,9 +1,9 @@
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
- import { n as TableCompact } from "./table-CeeTJgQb.mjs";
6
- import { t as tableView } from "./table-CsIJNPFf.mjs";
1
+ import { B as listFlags, G as listEnvelopeSchema, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
+ import { t as parseId } from "./parse-id-DmFJgpY6.mjs";
4
+ import { n as windowList } from "./window-DSb1tqSe.mjs";
5
+ import { n as TableCompact } from "./table-DfuY0N8e.mjs";
6
+ import { t as tableView } from "./table-C6h4tIRw.mjs";
7
7
  //#region src/commands/db/schema-tables.ts
8
8
  const DatabaseSchemaTablesEnvelope = listEnvelopeSchema(TableCompact);
9
9
  var schema_tables_default = defineMetabaseCommand({
@@ -1,7 +1,7 @@
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";
1
+ import { B as listFlags, G as listEnvelopeSchema, H as outputFlags, U as profileFlag, d as renderList, z as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
+ import { t as parseId } from "./parse-id-DmFJgpY6.mjs";
4
+ import { n as windowList } from "./window-DSb1tqSe.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/db/schemas.ts
7
7
  const SchemaName = z.object({ name: z.string() });
@@ -32,7 +32,8 @@ const SearchResult = z.object({
32
32
  model: SearchModel,
33
33
  description: z.string().nullable(),
34
34
  archived: z.boolean().nullable(),
35
- collection: SearchResultCollection.nullable()
35
+ collection: SearchResultCollection.nullable(),
36
+ result_metadata: z.array(z.unknown()).nullable().optional()
36
37
  }).loose();
37
38
  const SearchResultCompact = SearchResult.pick({
38
39
  id: true,
@@ -1,8 +1,8 @@
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
- import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-DFBwUc6d.mjs";
1
+ import { G as listEnvelopeSchema, H as outputFlags, U as profileFlag, V as listFlagsWithDefaultLimit, d as renderList, z as connectionFlags } from "./cli.mjs";
2
+ import { i as parseEnumCsv, t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
+ import { t as parseId } from "./parse-id-DmFJgpY6.mjs";
4
+ import { r as windowServerPage } from "./window-DSb1tqSe.mjs";
5
+ import { i as SearchResultCompact, n as SearchModel, t as SEARCH_MODELS } from "./search-BAXg-EJw.mjs";
6
6
  //#region src/output/views/search.ts
7
7
  const searchResultView = {
8
8
  compactPick: SearchResultCompact,
@@ -1,4 +1,4 @@
1
- import { t as defineCommandGroup } from "./group-CmVCLBDz.mjs";
1
+ import { t as defineCommandGroup } from "./group-YQQ5GIcP.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-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)
14
+ list: () => import("./list-oX2SMzxZ.mjs").then((mod) => mod.default),
15
+ get: () => import("./get-CrpwxWOV.mjs").then((mod) => mod.default),
16
+ create: () => import("./create-4UnoQvsy.mjs").then((mod) => mod.default),
17
+ update: () => import("./update-C91m9YAR.mjs").then((mod) => mod.default),
18
+ archive: () => import("./archive-C4Y2B58q.mjs").then((mod) => mod.default)
19
19
  }
20
20
  });
21
21
  //#endregion
@@ -1,6 +1,6 @@
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";
1
+ import { Q as ConfigError } from "./cli.mjs";
2
+ import { n as parseCsv } from "./runtime-arKqJqIT.mjs";
3
+ import { t as parseId } from "./parse-id-DmFJgpY6.mjs";
4
4
  //#region src/commands/library/selectors.ts
5
5
  const tableSelectorFlags = {
6
6
  "table-ids": {
@@ -1,6 +1,6 @@
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";
1
+ import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
+ import { t as parseId } from "./parse-id-DmFJgpY6.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/commands/alert/send.ts
6
6
  const AlertSendResult = z.object({
@@ -1,9 +1,9 @@
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";
1
+ import { H as outputFlags, U as profileFlag, _ as formatScalar, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
+ import { t as readBody } from "./body-OjAWKVaU.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-BmWundO3.mjs";
6
+ import { t as parseSettingKey } from "./key-PYetuQ13.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");
@@ -1,7 +1,7 @@
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";
1
+ import { H as outputFlags, U as profileFlag, p as renderSummary, z as connectionFlags } from "./cli.mjs";
2
+ import { t as defineMetabaseCommand } from "./runtime-arKqJqIT.mjs";
3
3
  import { n as TransformJobActiveResult } from "./transform-job-CCguL6LP.mjs";
4
- import { t as parseEnumFlag } from "./parse-enum-B1t8S194.mjs";
4
+ import { t as parseEnumFlag } from "./parse-enum-Dc0dMZ3P.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"]);