@metabase/cli 0.1.0-alpha.workspaces-commands.5ab9ca6 → 0.1.0-alpha.workspaces-commands.78747d1

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 (131) hide show
  1. package/README.md +138 -31
  2. package/dist/{api-key-aNbgDn-8.mjs → api-key-DJpqrAGZ.mjs} +1 -1
  3. package/dist/{archive-WGVkPuf8.mjs → archive-B6TbWbK1.mjs} +5 -5
  4. package/dist/auth-BZofbzqG.mjs +19 -0
  5. package/dist/{body-Diijawme.mjs → body-CPnypu0_.mjs} +2 -2
  6. package/dist/{branches-BlSi3TBx.mjs → branches-C_X-mZ8y.mjs} +5 -5
  7. package/dist/{cancel-task-IE1xGzfI.mjs → cancel-task-IPOp8B8w.mjs} +5 -5
  8. package/dist/{card-2XdaHHSS.mjs → card-BOGKT258.mjs} +22 -1
  9. package/dist/card-m-ve7168.mjs +20 -0
  10. package/dist/{cards-DnUcsvj8.mjs → cards-DbwnvuDl.mjs} +5 -5
  11. package/dist/cli.mjs +29 -20
  12. package/dist/collection-BsiGRKXh.mjs +170 -0
  13. package/dist/collection-D3B90qam.mjs +19 -0
  14. package/dist/{create-DmakvRrX.mjs → create-9c1KP2P_.mjs} +6 -6
  15. package/dist/create-BkjrL_vd.mjs +44 -0
  16. package/dist/{create-DYo4lbI2.mjs → create-BoA0MYoT.mjs} +7 -7
  17. package/dist/{create-D-ByDVsB.mjs → create-CWvjvAOe.mjs} +6 -6
  18. package/dist/{create-3d18k8Id.mjs → create-Ck-p0-JC.mjs} +7 -7
  19. package/dist/{create-QXhhxZr5.mjs → create-Iv9ear8t.mjs} +22 -9
  20. package/dist/{create-branch-C2Bdsd5R.mjs → create-branch-CiRVRb7v.mjs} +5 -5
  21. package/dist/{create-D62m-Ubn.mjs → create-dMsrFkvP.mjs} +6 -6
  22. package/dist/{credentials-QKZob37v.mjs → credentials-BXRf0UmM.mjs} +7 -7
  23. package/dist/{current-task-DGuhFVZr.mjs → current-task-gQAv_ckM.mjs} +5 -5
  24. package/dist/{dashboard-DVCLGg3X.mjs → dashboard-BJXi1tGr.mjs} +3 -1
  25. package/dist/dashboard-DE6DQnco.mjs +20 -0
  26. package/dist/{database-Bw72HWEJ.mjs → database-DXjVIlkG.mjs} +3 -3
  27. package/dist/{db-BA6VieA7.mjs → db-DGqKQygl.mjs} +2 -2
  28. package/dist/{delete-CYvfBnPq.mjs → delete-BYx2ESK6.mjs} +6 -6
  29. package/dist/{delete-CTl8JxXL.mjs → delete-BoysG9pE.mjs} +6 -6
  30. package/dist/{delete-runtime-ZDxlvZa6.mjs → delete-runtime-KieND_CX.mjs} +3 -5
  31. package/dist/{delete-table-CZZncGrk.mjs → delete-table-C5B5PRaE.mjs} +6 -6
  32. package/dist/{deprovision-C_UQ1JgA.mjs → deprovision-Dr32FAG9.mjs} +10 -10
  33. package/dist/{dirty-B798WgvJ.mjs → dirty-CID5k_DG.mjs} +5 -5
  34. package/dist/{docker-CJur3rjL.mjs → docker-BcabfnHb.mjs} +21 -7
  35. package/dist/{eid-DANih6Hk.mjs → eid-BnfaFBmk.mjs} +1 -1
  36. package/dist/{export-DdkQHl4m.mjs → export-BDUJ63cz.mjs} +25 -20
  37. package/dist/{field-CAvHQkzI.mjs → field-wJ5IyjF9.mjs} +1 -1
  38. package/dist/{get-C7lv9SOO.mjs → get-2TjBzT5V.mjs} +6 -6
  39. package/dist/{get-Ldui5Vyl.mjs → get-BGtgG85S.mjs} +5 -5
  40. package/dist/{get-D7DCc-zR.mjs → get-BN7AGZLk.mjs} +6 -6
  41. package/dist/{get-BIzIOb3U.mjs → get-BavuL0j2.mjs} +5 -5
  42. package/dist/{get-CuiofGwZ.mjs → get-BhmsDqFa.mjs} +5 -5
  43. package/dist/{get-HNKc0k5G.mjs → get-Br99VIyw.mjs} +5 -5
  44. package/dist/{get-soL4Z2jq.mjs → get-CEmt6JU1.mjs} +5 -5
  45. package/dist/get-Caif_PQa.mjs +41 -0
  46. package/dist/{get-BrpB_58I.mjs → get-gTFLoU81.mjs} +5 -5
  47. package/dist/{has-remote-changes-6bXwJa7C.mjs → has-remote-changes-DCfaGb5v.mjs} +5 -5
  48. package/dist/{import-ys-pzibQ.mjs → import-Dx6kme_2.mjs} +6 -6
  49. package/dist/{input-DkgCMNA9.mjs → input-DMcm_A5s.mjs} +1 -0
  50. package/dist/{is-dirty-AUZADvDx.mjs → is-dirty-DZBRX_uM.mjs} +3 -3
  51. package/dist/is-dirty-FkBul4cr.mjs +10 -0
  52. package/dist/items-BhLxpz31.mjs +123 -0
  53. package/dist/{license-Cr24Ibp3.mjs → license-DfgahRiB.mjs} +3 -3
  54. package/dist/list-B1nz8LEB.mjs +55 -0
  55. package/dist/{list-owVW2jma.mjs → list-B5KP2eXN.mjs} +4 -4
  56. package/dist/{list-SQESC1Z9.mjs → list-BN1iCMfc.mjs} +4 -4
  57. package/dist/{list-C737c643.mjs → list-BeNzesw7.mjs} +4 -4
  58. package/dist/{list-CeqlehZp.mjs → list-CXUd-LO7.mjs} +4 -4
  59. package/dist/{list-DD0dVVEl.mjs → list-Cjst618J.mjs} +6 -6
  60. package/dist/list-CqeNnBHu.mjs +52 -0
  61. package/dist/{list-Cwcz1wg7.mjs → list-DDWzIVi0.mjs} +4 -4
  62. package/dist/{list-DxOceJmQ.mjs → list-DfuhW3--.mjs} +4 -4
  63. package/dist/{list-DI9--PcL.mjs → list-kWLAMOPg.mjs} +4 -4
  64. package/dist/{login-Bw7TcgTG.mjs → login-xppXbffQ.mjs} +5 -5
  65. package/dist/{logout-DEzazQMO.mjs → logout-XtEgcO-n.mjs} +6 -7
  66. package/dist/{logs-QMdzAnlJ.mjs → logs-Dm86UFD5.mjs} +5 -5
  67. package/dist/{manifest-IMg51yb7.mjs → manifest-C7lnUosz.mjs} +1 -1
  68. package/dist/{package-ROuZ4tbw.mjs → package-B4PhZz9R.mjs} +1 -1
  69. package/dist/{parse-id-CGyF8OPI.mjs → parse-id-Dm8zjjx_.mjs} +1 -1
  70. package/dist/parse-ref-CyeuK_yM.mjs +17 -0
  71. package/dist/{poll-B5RO0ias.mjs → poll-DYp_Lzph.mjs} +1 -1
  72. package/dist/{poll-task-BU0gpBIk.mjs → poll-task-kULwF-eM.mjs} +3 -3
  73. package/dist/{provision-CH7aVxXn.mjs → provision-DzsbOQoP.mjs} +10 -10
  74. package/dist/ps-CUp-aAvT.mjs +10 -0
  75. package/dist/{ps-DP5XSIOy.mjs → ps-jLYH2ARi.mjs} +3 -3
  76. package/dist/{query-DwBWeir4.mjs → query-BkUL9HyQ.mjs} +7 -7
  77. package/dist/{query-DNiw6JKA.mjs → query-DCnXxe9y.mjs} +5 -5
  78. package/dist/{remove-CmF7i1Jq.mjs → remove-BXHoDhhy.mjs} +8 -8
  79. package/dist/{remove-WGIoTwsl.mjs → remove-DMRyYIs2.mjs} +6 -7
  80. package/dist/{render-CZNR2MNK.mjs → render-BYWlZPEH.mjs} +7 -4
  81. package/dist/{run-CabruqrJ.mjs → run-qmPGT-44.mjs} +7 -7
  82. package/dist/{runtime-8SAm0dHE.mjs → runtime-DyNvyYvx.mjs} +99 -3
  83. package/dist/{search-DNvad2hL.mjs → search-CiDweQ6X.mjs} +6 -20
  84. package/dist/{set-BclYXZNW.mjs → set-B_IyoHCE.mjs} +7 -7
  85. package/dist/{set-Cog7mkJT.mjs → set-DHdbtWuT.mjs} +5 -5
  86. package/dist/{setting-jFe6Zt2S.mjs → setting-Cp6Tw2QN.mjs} +3 -3
  87. package/dist/{setup-Cw5pIrBj.mjs → setup-4WZU9ihX.mjs} +5 -5
  88. package/dist/{start-CNn99SQU.mjs → start-DHWpzHu6.mjs} +10 -10
  89. package/dist/{stash-BWCuQzmR.mjs → stash-DXrx6JPU.mjs} +6 -6
  90. package/dist/{status-CSAGf0mB.mjs → status-B88vwQzu.mjs} +3 -3
  91. package/dist/{status-yZk5nUq3.mjs → status-C0lb8dVk.mjs} +6 -6
  92. package/dist/{status-CCqjWCFF.mjs → status-CsFspRut.mjs} +3 -3
  93. package/dist/{stop-DMZey9PG.mjs → stop-AYfxmMoS.mjs} +7 -7
  94. package/dist/sync-BpO2GELG.mjs +26 -0
  95. package/dist/{table-BGLcZjyq.mjs → table-BsdEHMog.mjs} +2 -2
  96. package/dist/{table-BbNgtqbd.mjs → table-y0J2_gix.mjs} +1 -1
  97. package/dist/transform-BP8y4jRr.mjs +21 -0
  98. package/dist/transform-job-CjH6-qNC.mjs +19 -0
  99. package/dist/{translate-p5_8y0R7.mjs → translate-DY6xrnmJ.mjs} +5 -5
  100. package/dist/tree-Db0BjcFK.mjs +32 -0
  101. package/dist/{update-Bh9gTZQA.mjs → update-DFlshvJ5.mjs} +7 -7
  102. package/dist/{update-Bz63bSR3.mjs → update-DK8856uS.mjs} +7 -7
  103. package/dist/{update-DbY0q1Ja.mjs → update-DMpYV7ev.mjs} +8 -8
  104. package/dist/update-I04IOKMm.mjs +57 -0
  105. package/dist/{update-dashcard-oH6KxEfS.mjs → update-dashcard-BM3GfQot.mjs} +7 -7
  106. package/dist/{update-CBaL4nmE.mjs → update-voSJcEL1.mjs} +10 -10
  107. package/dist/{url-rF80dSIr.mjs → url-Bdz6hIfi.mjs} +6 -6
  108. package/dist/{validate-query-DE4UouY3.mjs → validate-query-D0aAFTUs.mjs} +49 -3
  109. package/dist/{wait-BMxAPnb0.mjs → wait-DwjJh_Jp.mjs} +2 -2
  110. package/dist/{wait-flags-lGEHf-vx.mjs → wait-flags-jG_4uL02.mjs} +2 -2
  111. package/dist/{wait-CLNtd-on.mjs → wait-y8rVUrfH.mjs} +6 -6
  112. package/dist/workspace-CRVS-7vV.mjs +24 -0
  113. package/package.json +1 -1
  114. package/dist/auth-BV8kyXup.mjs +0 -18
  115. package/dist/card-Dj-6OZZT.mjs +0 -19
  116. package/dist/dashboard-DG6URsA8.mjs +0 -20
  117. package/dist/is-dirty-DG5Samxj.mjs +0 -10
  118. package/dist/ps-D930MtWo.mjs +0 -10
  119. package/dist/sync-BgVaAyuq.mjs +0 -26
  120. package/dist/transform-DpYeGyik.mjs +0 -21
  121. package/dist/transform-job-B1s0Q-rD.mjs +0 -19
  122. package/dist/workspace-BVCgMRZS.mjs +0 -24
  123. /package/dist/{database-B9-7QAXE.mjs → database-C5LkxQ5G.mjs} +0 -0
  124. /package/dist/{field-D_g4xvH9.mjs → field-C1ai7Y05.mjs} +0 -0
  125. /package/dist/{key-CpWh7W8M.mjs → key-CS6durfH.mjs} +0 -0
  126. /package/dist/{prompt-D8p00XDp.mjs → prompt-k9s4Ntk5.mjs} +0 -0
  127. /package/dist/{setting-Bm84ixxW.mjs → setting-DEHSnsEV.mjs} +0 -0
  128. /package/dist/{transform-CRRW0mFp.mjs → transform-MkVM3WhG.mjs} +0 -0
  129. /package/dist/{transform-job-BtCoVYsb.mjs → transform-job-DiK7MZXZ.mjs} +0 -0
  130. /package/dist/{workspace-C3tGVQ6_.mjs → workspace-C8Kgp6BZ.mjs} +0 -0
  131. /package/dist/{workspace-credentials-BxrU2xZb.mjs → workspace-credentials-DuTmzpvd.mjs} +0 -0
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
8
- import { SettingValue, settingValueView } from "./setting-Bm84ixxW.mjs";
9
- import { parseSettingKey } from "./key-CpWh7W8M.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
+ import { SettingValue, settingValueView } from "./setting-DEHSnsEV.mjs";
9
+ import { parseSettingKey } from "./key-CS6durfH.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/setting/set.ts
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem, warn } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import { readInput } from "./input-DkgCMNA9.mjs";
6
- import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-8SAm0dHE.mjs";
7
- import { promptPassword } from "./prompt-D8p00XDp.mjs";
5
+ import { readInput } from "./input-DMcm_A5s.mjs";
6
+ import { defineMetabaseCommand, outputFlags, readEnvLicenseToken, writeLicense } from "./runtime-DyNvyYvx.mjs";
7
+ import { promptPassword } from "./prompt-k9s4Ntk5.mjs";
8
8
  import { z } from "zod";
9
9
 
10
10
  //#region src/commands/license/set.ts
@@ -8,9 +8,9 @@ var setting_default = defineCommand({
8
8
  alias: "settings"
9
9
  },
10
10
  subCommands: {
11
- list: () => import("./list-C737c643.mjs").then((m) => m.default),
12
- get: () => import("./get-D7DCc-zR.mjs").then((m) => m.default),
13
- set: () => import("./set-BclYXZNW.mjs").then((m) => m.default)
11
+ list: () => import("./list-BeNzesw7.mjs").then((m) => m.default),
12
+ get: () => import("./get-BN7AGZLk.mjs").then((m) => m.default),
13
+ set: () => import("./set-B_IyoHCE.mjs").then((m) => m.default)
14
14
  }
15
15
  });
16
16
 
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
9
  import { z } from "zod";
10
10
 
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem, warn } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem, warn } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError, errorMessage } from "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, localUrl, outputFlags, parseInteger, parseOptionalInteger, profileFlag, resolveLicenseToken } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import { pollUntil } from "./poll-B5RO0ias.mjs";
8
- import { Workspace } from "./workspace-C3tGVQ6_.mjs";
9
- import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runProcess, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-CJur3rjL.mjs";
10
- import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-BxrU2xZb.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, localUrl, outputFlags, parseInteger, parseOptionalInteger, profileFlag, resolveLicenseToken } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import { pollUntil } from "./poll-DYp_Lzph.mjs";
8
+ import { Workspace } from "./workspace-C8Kgp6BZ.mjs";
9
+ import { CONTAINER_REPO_DIR, checkDockerReady, containerLifecycleStatus, containerNameFor, pullImage, removeContainer, runProcess, runWorkspaceContainer, scrubContainerConfig, waitForConfigConsumed } from "./docker-BcabfnHb.mjs";
10
+ import { REPO_SYNC_MODES, RepoSyncMode, buildCredentialsJson, generateWorkspaceCredentials, injectCredentialsIntoConfig, injectRepoSettingsIntoConfig } from "./workspace-credentials-DuTmzpvd.mjs";
11
11
  import { z } from "zod";
12
12
  import { stat } from "node:fs/promises";
13
13
  import { resolve } from "node:path";
@@ -41,7 +41,7 @@ function isPortFree(port) {
41
41
  server.once("listening", () => {
42
42
  server.close(() => resolve$1(true));
43
43
  });
44
- server.listen(port, "127.0.0.1");
44
+ server.listen(port, "0.0.0.0");
45
45
  });
46
46
  }
47
47
  async function findFreePort(start) {
@@ -111,7 +111,7 @@ var start_default = defineMetabaseCommand({
111
111
  },
112
112
  port: {
113
113
  type: "string",
114
- description: `Host port to bind (default: ${DEFAULT_HOST_PORT}; auto-shifts up if taken)`
114
+ description: `Host port to bind (default: ${DEFAULT_HOST_PORT}; auto-shifts up when this flag is omitted, fails on collision when set explicitly)`
115
115
  },
116
116
  image: {
117
117
  type: "string",
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import { REMOTE_SYNC_PATHS, SyncTask, pollFlags, pollSyncTask, throwIfFailedTask } from "./poll-task-BU0gpBIk.mjs";
8
- import "./poll-B5RO0ias.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import { REMOTE_SYNC_PATHS, SyncTask, pollFlags, pollSyncTask, throwIfFailedTask } from "./poll-task-kULwF-eM.mjs";
8
+ import "./poll-DYp_Lzph.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/commands/sync/stash.ts
@@ -1,8 +1,8 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { account, credentials, defineMetabaseCommand, outputFlags } from "./runtime-8SAm0dHE.mjs";
5
+ import { account, credentials, defineMetabaseCommand, outputFlags } from "./runtime-DyNvyYvx.mjs";
6
6
  import { z } from "zod";
7
7
 
8
8
  //#region src/commands/license/status.ts
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
6
- import { REMOTE_SYNC_PATHS, SyncTask, fetchCurrentTask, fetchOptionalParsed } from "./poll-task-BU0gpBIk.mjs";
7
- import "./poll-B5RO0ias.mjs";
8
- import { IsDirtyResult } from "./is-dirty-AUZADvDx.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { REMOTE_SYNC_PATHS, SyncTask, fetchCurrentTask, fetchOptionalParsed } from "./poll-task-kULwF-eM.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
+ import { IsDirtyResult } from "./is-dirty-DZBRX_uM.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/commands/sync/status.ts
@@ -1,8 +1,8 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { account, credentials, defineMetabaseCommand, originOnly, outputFlags, profileFlag, resolveProfileName } from "./runtime-8SAm0dHE.mjs";
5
+ import { account, credentials, defineMetabaseCommand, originOnly, outputFlags, profileFlag, resolveProfileName } from "./runtime-DyNvyYvx.mjs";
6
6
  import { z } from "zod";
7
7
 
8
8
  //#region src/commands/auth/status.ts
@@ -1,12 +1,12 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { defineMetabaseCommand, outputFlags } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./poll-B5RO0ias.mjs";
8
- import { checkDockerReady, containerLifecycleStatus, containerNameFor, stopContainer } from "./docker-CJur3rjL.mjs";
9
- import { LocalWorkspaceState } from "./ps-DP5XSIOy.mjs";
5
+ import { defineMetabaseCommand, outputFlags } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
+ import { checkDockerReady, containerLifecycleStatus, containerNameFor, stopContainer } from "./docker-BcabfnHb.mjs";
9
+ import { LocalWorkspaceState } from "./ps-jLYH2ARi.mjs";
10
10
  import { z } from "zod";
11
11
 
12
12
  //#region src/commands/workspace/stop.ts
@@ -0,0 +1,26 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/sync/index.ts
4
+ var sync_default = defineCommand({
5
+ meta: {
6
+ name: "sync",
7
+ description: "Remote-sync operations (import, export, status, branches)"
8
+ },
9
+ subCommands: {
10
+ status: () => import("./status-C0lb8dVk.mjs").then((mod) => mod.default),
11
+ "is-dirty": () => import("./is-dirty-FkBul4cr.mjs").then((mod) => mod.default),
12
+ "has-remote-changes": () => import("./has-remote-changes-DCfaGb5v.mjs").then((mod) => mod.default),
13
+ dirty: () => import("./dirty-CID5k_DG.mjs").then((mod) => mod.default),
14
+ "current-task": () => import("./current-task-gQAv_ckM.mjs").then((mod) => mod.default),
15
+ "cancel-task": () => import("./cancel-task-IPOp8B8w.mjs").then((mod) => mod.default),
16
+ wait: () => import("./wait-y8rVUrfH.mjs").then((mod) => mod.default),
17
+ import: () => import("./import-Dx6kme_2.mjs").then((mod) => mod.default),
18
+ export: () => import("./export-BDUJ63cz.mjs").then((mod) => mod.default),
19
+ stash: () => import("./stash-DXrx6JPU.mjs").then((mod) => mod.default),
20
+ branches: () => import("./branches-C_X-mZ8y.mjs").then((mod) => mod.default),
21
+ "create-branch": () => import("./create-branch-CiRVRb7v.mjs").then((mod) => mod.default)
22
+ }
23
+ });
24
+
25
+ //#endregion
26
+ export { sync_default as default };
@@ -7,8 +7,8 @@ var table_default = defineCommand({
7
7
  description: "Inspect Metabase tables"
8
8
  },
9
9
  subCommands: {
10
- list: () => import("./list-DD0dVVEl.mjs").then((m) => m.default),
11
- get: () => import("./get-C7lv9SOO.mjs").then((m) => m.default)
10
+ list: () => import("./list-Cjst618J.mjs").then((m) => m.default),
11
+ get: () => import("./get-2TjBzT5V.mjs").then((m) => m.default)
12
12
  }
13
13
  });
14
14
 
@@ -1,4 +1,4 @@
1
- import { Field } from "./field-D_g4xvH9.mjs";
1
+ import { Field } from "./field-C1ai7Y05.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/domain/table.ts
@@ -0,0 +1,21 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/transform/index.ts
4
+ var transform_default = defineCommand({
5
+ meta: {
6
+ name: "transform",
7
+ description: "Manage Metabase transforms"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-kWLAMOPg.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-BhmsDqFa.mjs").then((mod) => mod.default),
12
+ create: () => import("./create-BoA0MYoT.mjs").then((mod) => mod.default),
13
+ update: () => import("./update-DMpYV7ev.mjs").then((mod) => mod.default),
14
+ delete: () => import("./delete-BoysG9pE.mjs").then((mod) => mod.default),
15
+ "delete-table": () => import("./delete-table-C5B5PRaE.mjs").then((mod) => mod.default),
16
+ run: () => import("./run-qmPGT-44.mjs").then((mod) => mod.default)
17
+ }
18
+ });
19
+
20
+ //#endregion
21
+ export { transform_default as default };
@@ -0,0 +1,19 @@
1
+ import { defineCommand } from "citty";
2
+
3
+ //#region src/commands/transform-job/index.ts
4
+ var transform_job_default = defineCommand({
5
+ meta: {
6
+ name: "transform-job",
7
+ description: "Manage Metabase transform jobs"
8
+ },
9
+ subCommands: {
10
+ list: () => import("./list-DDWzIVi0.mjs").then((mod) => mod.default),
11
+ get: () => import("./get-CEmt6JU1.mjs").then((mod) => mod.default),
12
+ create: () => import("./create-CWvjvAOe.mjs").then((mod) => mod.default),
13
+ update: () => import("./update-DFlshvJ5.mjs").then((mod) => mod.default),
14
+ delete: () => import("./delete-BYx2ESK6.mjs").then((mod) => mod.default)
15
+ }
16
+ });
17
+
18
+ //#endregion
19
+ export { transform_job_default as default };
@@ -1,10 +1,10 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
9
  import { requireBothOrNeither } from "./flag-pair-Dz-mbq0z.mjs";
10
10
  import { z } from "zod";
@@ -0,0 +1,32 @@
1
+ import "./package-B4PhZz9R.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { writeJson } from "./render-BYWlZPEH.mjs";
4
+ import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
6
+ import { CollectionTreeNode } from "./collection-BsiGRKXh.mjs";
7
+ import { z } from "zod";
8
+
9
+ //#region src/commands/collection/tree.ts
10
+ const CollectionTreeResponse = z.array(CollectionTreeNode);
11
+ var tree_default = defineMetabaseCommand({
12
+ meta: {
13
+ name: "tree",
14
+ description: "Fetch the collection hierarchy as a nested tree (JSON only)"
15
+ },
16
+ args: {
17
+ ...outputFlags,
18
+ ...profileFlag,
19
+ ...connectionFlags
20
+ },
21
+ outputSchema: CollectionTreeResponse,
22
+ examples: ["metabase collection tree", "metabase collection tree --json"],
23
+ async run({ ctx, getClient }) {
24
+ if (ctx.format === "text") throw new ConfigError("collection tree output is JSON-only; --format text is not supported");
25
+ const client = await getClient();
26
+ const tree = await client.requestParsed(CollectionTreeResponse, "/api/collection/tree");
27
+ writeJson(tree);
28
+ }
29
+ });
30
+
31
+ //#endregion
32
+ export { tree_default as default };
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
- import { TransformJob, TransformJobUpdateInput, transformJobView } from "./transform-job-BtCoVYsb.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import { TransformJob, TransformJobUpdateInput, transformJobView } from "./transform-job-DiK7MZXZ.mjs";
11
11
 
12
12
  //#region src/commands/transform-job/update.ts
13
13
  var update_default = defineMetabaseCommand({
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
- import { DashboardDetail, DashboardUpdateInput, dashboardView } from "./dashboard-DVCLGg3X.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import { DashboardDetail, DashboardUpdateInput, dashboardView } from "./dashboard-BJXi1tGr.mjs";
11
11
 
12
12
  //#region src/commands/dashboard/update.ts
13
13
  var update_default = defineMetabaseCommand({
@@ -1,14 +1,14 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
- import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-DE4UouY3.mjs";
11
- import { Transform, TransformUpdateInput, transformView } from "./transform-CRRW0mFp.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-D0aAFTUs.mjs";
11
+ import { Transform, TransformUpdateInput, transformView } from "./transform-MkVM3WhG.mjs";
12
12
 
13
13
  //#region src/commands/transform/update.ts
14
14
  var update_default = defineMetabaseCommand({
@@ -0,0 +1,57 @@
1
+ import "./package-B4PhZz9R.mjs";
2
+ import "./command-augment-D9pI9Vbh.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
+ import "./errors-C6w1eZ1F.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
+ import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import { Card, CardUpdateInput, cardView } from "./card-BOGKT258.mjs";
11
+ import { preflightInternalMbql5Query, skipValidateFlag } from "./validate-query-D0aAFTUs.mjs";
12
+
13
+ //#region src/commands/card/update.ts
14
+ var update_default = defineMetabaseCommand({
15
+ meta: {
16
+ name: "update",
17
+ description: "Update a card by id; if dataset_query is MBQL 5 (lib/type: mbql/query) it is pre-flight-validated against the same schema as `metabase query` (see `metabase query --print-schema`)"
18
+ },
19
+ args: {
20
+ ...outputFlags,
21
+ ...profileFlag,
22
+ ...connectionFlags,
23
+ ...bodyInputFlags,
24
+ ...skipValidateFlag,
25
+ id: {
26
+ type: "positional",
27
+ description: "Card id",
28
+ required: true
29
+ }
30
+ },
31
+ outputSchema: Card,
32
+ examples: [
33
+ "cat patch.json | metabase card update 1",
34
+ "metabase card update 1 --file patch.json",
35
+ "metabase card update 1 --body '{\"name\":\"renamed\"}'",
36
+ "metabase card update 1 --body '{\"display\":\"bar\"}'",
37
+ "metabase card update 1 --body '{\"archived\":true}'",
38
+ "metabase card update 1 --file patch.json --skip-validate"
39
+ ],
40
+ async run({ args, ctx, getClient }) {
41
+ const id = parseId(args.id);
42
+ const body = await readBody({
43
+ flag: args.body,
44
+ file: args.file
45
+ }, CardUpdateInput);
46
+ preflightInternalMbql5Query(body.dataset_query, "card.dataset_query validation failed", { skip: args["skip-validate"] === true });
47
+ const client = await getClient();
48
+ const updated = await client.requestParsed(Card, `/api/card/${id}`, {
49
+ method: "PUT",
50
+ body
51
+ });
52
+ renderItem(updated, cardView, ctx);
53
+ }
54
+ });
55
+
56
+ //#endregion
57
+ export { update_default as default };
@@ -1,13 +1,13 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
- import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-DVCLGg3X.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import { DashboardDetail, Dashcard, DashcardPatchInput, dashcardView } from "./dashboard-BJXi1tGr.mjs";
11
11
 
12
12
  //#region src/commands/dashboard/update-dashcard.ts
13
13
  var update_dashcard_default = defineMetabaseCommand({
@@ -1,16 +1,16 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
5
- import "./input-DkgCMNA9.mjs";
6
- import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-8SAm0dHE.mjs";
7
- import { readBody } from "./body-Diijawme.mjs";
5
+ import "./input-DMcm_A5s.mjs";
6
+ import { connectionFlags, defineMetabaseCommand, outputFlags, parseCsv, profileFlag } from "./runtime-DyNvyYvx.mjs";
7
+ import { readBody } from "./body-CPnypu0_.mjs";
8
8
  import { bodyInputFlags } from "./body-flags-BK7J6Daz.mjs";
9
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
10
- import "./poll-B5RO0ias.mjs";
11
- import { parseWaitFlags, waitFlags } from "./wait-flags-lGEHf-vx.mjs";
12
- import { Workspace, WorkspaceUpdateDatabaseInput, workspaceView } from "./workspace-C3tGVQ6_.mjs";
13
- import { waitForDatabaseProvisioned } from "./wait-BMxAPnb0.mjs";
9
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
10
+ import "./poll-DYp_Lzph.mjs";
11
+ import { parseWaitFlags, waitFlags } from "./wait-flags-jG_4uL02.mjs";
12
+ import { Workspace, WorkspaceUpdateDatabaseInput, workspaceView } from "./workspace-C8Kgp6BZ.mjs";
13
+ import { waitForDatabaseProvisioned } from "./wait-DwjJh_Jp.mjs";
14
14
 
15
15
  //#region src/commands/workspace/database/update.ts
16
16
  var update_default = defineMetabaseCommand({
@@ -1,11 +1,11 @@
1
- import "./package-ROuZ4tbw.mjs";
1
+ import "./package-B4PhZz9R.mjs";
2
2
  import "./command-augment-D9pI9Vbh.mjs";
3
- import { renderItem } from "./render-CZNR2MNK.mjs";
3
+ import { renderItem } from "./render-BYWlZPEH.mjs";
4
4
  import "./errors-C6w1eZ1F.mjs";
5
- import { defineMetabaseCommand, localUrl, outputFlags } from "./runtime-8SAm0dHE.mjs";
6
- import { parseId } from "./parse-id-CGyF8OPI.mjs";
7
- import "./poll-B5RO0ias.mjs";
8
- import { checkDockerReady, requireWorkspaceContainerLocation } from "./docker-CJur3rjL.mjs";
5
+ import { defineMetabaseCommand, localUrl, outputFlags } from "./runtime-DyNvyYvx.mjs";
6
+ import { parseId } from "./parse-id-Dm8zjjx_.mjs";
7
+ import "./poll-DYp_Lzph.mjs";
8
+ import { checkDockerReady, requireWorkspaceContainerLocation } from "./docker-BcabfnHb.mjs";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region src/commands/workspace/url.ts
@@ -1,4 +1,4 @@
1
- import { writeJson } from "./render-CZNR2MNK.mjs";
1
+ import { isPlainObject, writeJson } from "./render-BYWlZPEH.mjs";
2
2
  import { ConfigError } from "./errors-C6w1eZ1F.mjs";
3
3
  import { z } from "zod";
4
4
  import Ajv2020 from "ajv/dist/2020.js";
@@ -1455,12 +1455,15 @@ function runValidator(validator, value) {
1455
1455
  ok: true,
1456
1456
  errors: []
1457
1457
  };
1458
+ const refHints = collectRefShapeHints(value);
1458
1459
  const issues = validator.errors ?? [];
1459
1460
  const errors = issues.map((issue) => {
1460
1461
  if (issue.message === void 0) throw new Error(`Ajv issue at ${issue.instancePath} has no message`);
1462
+ const path = issue.instancePath === "" ? "/" : issue.instancePath;
1463
+ const enrichedMessage = refHints.get(path);
1461
1464
  return {
1462
- path: issue.instancePath === "" ? "/" : issue.instancePath,
1463
- message: issue.message
1465
+ path,
1466
+ message: enrichedMessage ?? issue.message
1464
1467
  };
1465
1468
  });
1466
1469
  return {
@@ -1468,6 +1471,40 @@ function runValidator(validator, value) {
1468
1471
  errors
1469
1472
  };
1470
1473
  }
1474
+ function collectRefShapeHints(root) {
1475
+ const hints = new Map();
1476
+ visit(root, "");
1477
+ return hints;
1478
+ function visit(node, path) {
1479
+ if (Array.isArray(node)) {
1480
+ const refMessage = refShapeMessage(node);
1481
+ if (refMessage !== null) hints.set(`${path}/2`, refMessage);
1482
+ for (let index = 0; index < node.length; index += 1) visit(node[index], `${path}/${index}`);
1483
+ return;
1484
+ }
1485
+ if (!isPlainObject(node)) return;
1486
+ for (const key of Object.keys(node)) {
1487
+ const segment = key.replace(/~/g, "~0").replace(/\//g, "~1");
1488
+ visit(node[key], `${path}/${segment}`);
1489
+ }
1490
+ }
1491
+ }
1492
+ function refShapeMessage(clause) {
1493
+ if (clause.length !== 3) return null;
1494
+ const kind = clause[0];
1495
+ if (typeof kind !== "string") return null;
1496
+ const hint = refHintForKind(kind);
1497
+ if (hint === null) return null;
1498
+ if (typeof clause[2] === "string") return null;
1499
+ return hint;
1500
+ }
1501
+ function refHintForKind(kind) {
1502
+ switch (kind) {
1503
+ case "aggregation": return "must be the target aggregation's lib/uuid (string), not a numeric position";
1504
+ case "expression": return "must be the target expression's name (string), not a numeric position";
1505
+ default: return null;
1506
+ }
1507
+ }
1471
1508
  function validateExternalQuery(value) {
1472
1509
  return runValidator(getExternalValidator(), value);
1473
1510
  }
@@ -1478,6 +1515,14 @@ function isMbql5Query(value) {
1478
1515
  if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
1479
1516
  return "lib/type" in value && value["lib/type"] === "mbql/query";
1480
1517
  }
1518
+ function isLegacyEnvelopeWrappingMbql5(value) {
1519
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
1520
+ if (!("type" in value) || value["type"] !== "query") return false;
1521
+ if (!("query" in value)) return false;
1522
+ const inner = value["query"];
1523
+ if (typeof inner !== "object" || inner === null || Array.isArray(inner)) return false;
1524
+ return "lib/type" in inner && inner["lib/type"] === "mbql/query";
1525
+ }
1481
1526
  const SchemaMode = z.enum(["external", "internal"]);
1482
1527
  const QuerySchemaBundle = z.object({
1483
1528
  mode: SchemaMode,
@@ -1510,6 +1555,7 @@ const skipValidateFlag = { "skip-validate": {
1510
1555
  } };
1511
1556
  function preflightInternalMbql5Query(query, contextLabel, options) {
1512
1557
  if (options.skip) return;
1558
+ if (isLegacyEnvelopeWrappingMbql5(query)) throw new ConfigError(`${contextLabel}: MBQL 5 query nested inside a legacy {type:"query", query:…} envelope. For MBQL 5, dataset_query is the mbql/query value itself: {"lib/type":"mbql/query", database:N, stages:[…]}.`);
1513
1559
  if (!isMbql5Query(query)) return;
1514
1560
  const outcome = validateInternalQuery(query);
1515
1561
  if (outcome.ok) return;
@@ -1,5 +1,5 @@
1
- import { pollUntil } from "./poll-B5RO0ias.mjs";
2
- import { Workspace } from "./workspace-C3tGVQ6_.mjs";
1
+ import { pollUntil } from "./poll-DYp_Lzph.mjs";
2
+ import { Workspace } from "./workspace-C8Kgp6BZ.mjs";
3
3
 
4
4
  //#region src/commands/workspace/database/wait.ts
5
5
  async function waitForDatabaseProvisioned(client, workspaceId, databaseId, schedule) {