convex 1.34.1 → 1.35.0

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 (512) hide show
  1. package/CHANGELOG.md +86 -43
  2. package/dist/browser.bundle.js +8 -2
  3. package/dist/browser.bundle.js.map +3 -3
  4. package/dist/cjs/browser/index-node.js +3 -1
  5. package/dist/cjs/browser/index.js +3 -1
  6. package/dist/cjs/browser/index.js.map +2 -2
  7. package/dist/cjs/browser/query_options.js.map +2 -2
  8. package/dist/cjs/cli/aiFiles.js +31 -13
  9. package/dist/cjs/cli/aiFiles.js.map +3 -3
  10. package/dist/cjs/cli/codegen_templates/readme.js +14 -1
  11. package/dist/cjs/cli/codegen_templates/readme.js.map +2 -2
  12. package/dist/cjs/cli/configure.js +21 -24
  13. package/dist/cjs/cli/configure.js.map +2 -2
  14. package/dist/cjs/cli/deploy.js +7 -8
  15. package/dist/cjs/cli/deploy.js.map +2 -2
  16. package/dist/cjs/cli/deploymentCreate.js +225 -40
  17. package/dist/cjs/cli/deploymentCreate.js.map +3 -3
  18. package/dist/cjs/cli/deploymentSelect.js +14 -13
  19. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  20. package/dist/cjs/cli/dev.js +30 -11
  21. package/dist/cjs/cli/dev.js.map +2 -2
  22. package/dist/cjs/cli/docs.js +1 -1
  23. package/dist/cjs/cli/docs.js.map +2 -2
  24. package/dist/cjs/cli/init.js +1 -1
  25. package/dist/cjs/cli/init.js.map +2 -2
  26. package/dist/cjs/cli/lib/aiFiles/agentsmd.js +14 -10
  27. package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +2 -2
  28. package/dist/cjs/cli/lib/aiFiles/claudemd.js +14 -10
  29. package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +2 -2
  30. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +10 -3
  31. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  32. package/dist/cjs/cli/lib/aiFiles/index.js +70 -86
  33. package/dist/cjs/cli/lib/aiFiles/index.js.map +3 -3
  34. package/dist/cjs/cli/lib/aiFiles/skills.js +28 -12
  35. package/dist/cjs/cli/lib/aiFiles/skills.js.map +2 -2
  36. package/dist/cjs/cli/lib/aiFiles/state.js +96 -0
  37. package/dist/cjs/cli/lib/aiFiles/state.js.map +7 -0
  38. package/dist/cjs/cli/lib/aiFiles/status.js +31 -28
  39. package/dist/cjs/cli/lib/aiFiles/status.js.map +2 -2
  40. package/dist/cjs/cli/lib/aiFiles/utils.js +31 -14
  41. package/dist/cjs/cli/lib/aiFiles/utils.js.map +2 -2
  42. package/dist/cjs/cli/lib/api.js +70 -7
  43. package/dist/cjs/cli/lib/api.js.map +2 -2
  44. package/dist/cjs/cli/lib/command.js +4 -5
  45. package/dist/cjs/cli/lib/command.js.map +2 -2
  46. package/dist/cjs/cli/lib/config.js +41 -4
  47. package/dist/cjs/cli/lib/config.js.map +3 -3
  48. package/dist/cjs/cli/lib/deploy2.js +9 -26
  49. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  50. package/dist/cjs/cli/lib/deployApi/componentDefinition.js +4 -1
  51. package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
  52. package/dist/cjs/cli/lib/deploymentSelection.js +45 -2
  53. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  54. package/dist/cjs/cli/lib/deploymentSelector.js +1 -0
  55. package/dist/cjs/cli/lib/deploymentSelector.js.map +2 -2
  56. package/dist/cjs/cli/lib/dev.js +162 -117
  57. package/dist/cjs/cli/lib/dev.js.map +2 -2
  58. package/dist/cjs/cli/lib/env.js +1 -13
  59. package/dist/cjs/cli/lib/env.js.map +2 -2
  60. package/dist/cjs/cli/lib/expiration.js +104 -0
  61. package/dist/cjs/cli/lib/expiration.js.map +7 -0
  62. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  63. package/dist/cjs/cli/lib/init.js +4 -3
  64. package/dist/cjs/cli/lib/init.js.map +2 -2
  65. package/dist/cjs/cli/lib/insights.js +1 -1
  66. package/dist/cjs/cli/lib/insights.js.map +2 -2
  67. package/dist/cjs/cli/lib/localDeployment/anonymous.js +14 -7
  68. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  69. package/dist/cjs/cli/lib/localDeployment/localDeployment.js +8 -10
  70. package/dist/cjs/cli/lib/localDeployment/localDeployment.js.map +2 -2
  71. package/dist/cjs/cli/lib/localDeployment/run.js +1 -0
  72. package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
  73. package/dist/cjs/cli/lib/localDeployment/upgrade.js +2 -2
  74. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
  75. package/dist/cjs/cli/lib/localDeployment/utils.js +9 -0
  76. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  77. package/dist/cjs/cli/lib/mcp/tools/status.js +1 -1
  78. package/dist/cjs/cli/lib/mcp/tools/status.js.map +2 -2
  79. package/dist/cjs/cli/lib/updates.js +8 -9
  80. package/dist/cjs/cli/lib/updates.js.map +2 -2
  81. package/dist/cjs/cli/lib/usage.js +2 -1
  82. package/dist/cjs/cli/lib/usage.js.map +2 -2
  83. package/dist/cjs/cli/lib/utils/prompts.js +2 -1
  84. package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
  85. package/dist/cjs/cli/lib/utils/utils.js +46 -20
  86. package/dist/cjs/cli/lib/utils/utils.js.map +3 -3
  87. package/dist/cjs/index.js +1 -1
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/react/client.js +43 -6
  90. package/dist/cjs/react/client.js.map +2 -2
  91. package/dist/cjs/react/index.js +2 -0
  92. package/dist/cjs/react/index.js.map +2 -2
  93. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  94. package/dist/cjs/server/api.js.map +2 -2
  95. package/dist/cjs/server/components/definition.js.map +1 -1
  96. package/dist/cjs/server/components/index.js +40 -4
  97. package/dist/cjs/server/components/index.js.map +2 -2
  98. package/dist/cjs/server/data_model.js.map +1 -1
  99. package/dist/cjs/server/impl/meta_impl.js +78 -0
  100. package/dist/cjs/server/impl/meta_impl.js.map +7 -0
  101. package/dist/cjs/server/impl/registration_impl.js +16 -11
  102. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  103. package/dist/cjs/server/index.js.map +2 -2
  104. package/dist/cjs/server/meta.js +17 -0
  105. package/dist/cjs/server/meta.js.map +7 -0
  106. package/dist/cjs/server/registration.js.map +1 -1
  107. package/dist/cjs-types/browser/index.d.ts +1 -0
  108. package/dist/cjs-types/browser/index.d.ts.map +1 -1
  109. package/dist/cjs-types/browser/query_options.d.ts +12 -9
  110. package/dist/cjs-types/browser/query_options.d.ts.map +1 -1
  111. package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
  112. package/dist/cjs-types/cli/codegen_templates/readme.d.ts.map +1 -1
  113. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  114. package/dist/cjs-types/cli/configure.test.d.ts +2 -0
  115. package/dist/cjs-types/cli/configure.test.d.ts.map +1 -0
  116. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  117. package/dist/cjs-types/cli/deploymentCreate.d.ts +1 -0
  118. package/dist/cjs-types/cli/deploymentCreate.d.ts.map +1 -1
  119. package/dist/cjs-types/cli/deploymentSelect.d.ts +2 -1
  120. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  121. package/dist/cjs-types/cli/dev.d.ts +3 -1
  122. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  123. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  124. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  126. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  127. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  128. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  129. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +20 -18
  130. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  131. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +6 -4
  132. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  133. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts +38 -0
  134. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  135. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  136. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  137. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts +4 -1
  138. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  139. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +13 -3
  140. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  141. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  142. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  143. package/dist/cjs-types/cli/lib/api.d.ts +3 -3
  144. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  145. package/dist/cjs-types/cli/lib/command.d.ts +2 -1
  146. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  147. package/dist/cjs-types/cli/lib/config.d.ts +17 -6
  148. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  149. package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -2
  150. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  151. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  152. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  153. package/dist/cjs-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  154. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +14 -14
  155. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +61 -52
  156. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  157. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  158. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts +2 -0
  159. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  160. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  161. package/dist/cjs-types/cli/lib/env.d.ts +0 -4
  162. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  163. package/dist/cjs-types/cli/lib/expiration.d.ts +35 -0
  164. package/dist/cjs-types/cli/lib/expiration.d.ts.map +1 -0
  165. package/dist/cjs-types/cli/lib/expiration.test.d.ts +2 -0
  166. package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +1 -0
  167. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  168. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  169. package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
  170. package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  171. package/dist/cjs-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  172. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +15 -0
  173. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  174. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  175. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +7 -0
  176. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  177. package/dist/cjs-types/cli/lib/mcp/requestContext.d.ts +3 -3
  178. package/dist/cjs-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  179. package/dist/cjs-types/cli/lib/updates.d.ts +4 -3
  180. package/dist/cjs-types/cli/lib/updates.d.ts.map +1 -1
  181. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  182. package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
  183. package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
  184. package/dist/cjs-types/cli/lib/utils/utils.d.ts +16 -2
  185. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  186. package/dist/cjs-types/index.d.ts +1 -1
  187. package/dist/cjs-types/react/client.d.ts +54 -2
  188. package/dist/cjs-types/react/client.d.ts.map +1 -1
  189. package/dist/cjs-types/react/index.d.ts +7 -2
  190. package/dist/cjs-types/react/index.d.ts.map +1 -1
  191. package/dist/cjs-types/react/use_query_object_options.test.d.ts +5 -0
  192. package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +1 -0
  193. package/dist/cjs-types/react/use_query_result.test.d.ts +5 -0
  194. package/dist/cjs-types/react/use_query_result.test.d.ts.map +1 -0
  195. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  196. package/dist/cjs-types/server/api.d.ts +5 -1
  197. package/dist/cjs-types/server/api.d.ts.map +1 -1
  198. package/dist/cjs-types/server/components/definition.d.ts +1 -0
  199. package/dist/cjs-types/server/components/definition.d.ts.map +1 -1
  200. package/dist/cjs-types/server/components/index.d.ts +5 -1
  201. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  202. package/dist/cjs-types/server/data_model.d.ts +2 -1
  203. package/dist/cjs-types/server/data_model.d.ts.map +1 -1
  204. package/dist/cjs-types/server/impl/meta_impl.d.ts +5 -0
  205. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -0
  206. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  207. package/dist/cjs-types/server/index.d.ts +1 -0
  208. package/dist/cjs-types/server/index.d.ts.map +1 -1
  209. package/dist/cjs-types/server/meta.d.ts +72 -0
  210. package/dist/cjs-types/server/meta.d.ts.map +1 -0
  211. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  212. package/dist/cli.bundle.cjs +1670 -1214
  213. package/dist/cli.bundle.cjs.map +4 -4
  214. package/dist/esm/browser/index-node.js +1 -0
  215. package/dist/esm/browser/index.js +1 -0
  216. package/dist/esm/browser/index.js.map +2 -2
  217. package/dist/esm/browser/query_options.js.map +2 -2
  218. package/dist/esm/cli/aiFiles.js +33 -15
  219. package/dist/esm/cli/aiFiles.js.map +2 -2
  220. package/dist/esm/cli/codegen_templates/readme.js +14 -1
  221. package/dist/esm/cli/codegen_templates/readme.js.map +2 -2
  222. package/dist/esm/cli/configure.js +23 -26
  223. package/dist/esm/cli/configure.js.map +2 -2
  224. package/dist/esm/cli/deploy.js +11 -10
  225. package/dist/esm/cli/deploy.js.map +2 -2
  226. package/dist/esm/cli/deploymentCreate.js +238 -42
  227. package/dist/esm/cli/deploymentCreate.js.map +2 -2
  228. package/dist/esm/cli/deploymentSelect.js +13 -12
  229. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  230. package/dist/esm/cli/dev.js +34 -13
  231. package/dist/esm/cli/dev.js.map +2 -2
  232. package/dist/esm/cli/docs.js +1 -1
  233. package/dist/esm/cli/docs.js.map +2 -2
  234. package/dist/esm/cli/init.js +2 -2
  235. package/dist/esm/cli/init.js.map +2 -2
  236. package/dist/esm/cli/lib/aiFiles/agentsmd.js +13 -9
  237. package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +2 -2
  238. package/dist/esm/cli/lib/aiFiles/claudemd.js +13 -9
  239. package/dist/esm/cli/lib/aiFiles/claudemd.js.map +2 -2
  240. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +12 -5
  241. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  242. package/dist/esm/cli/lib/aiFiles/index.js +72 -89
  243. package/dist/esm/cli/lib/aiFiles/index.js.map +2 -2
  244. package/dist/esm/cli/lib/aiFiles/skills.js +29 -13
  245. package/dist/esm/cli/lib/aiFiles/skills.js.map +2 -2
  246. package/dist/esm/cli/lib/aiFiles/state.js +60 -0
  247. package/dist/esm/cli/lib/aiFiles/state.js.map +7 -0
  248. package/dist/esm/cli/lib/aiFiles/status.js +32 -29
  249. package/dist/esm/cli/lib/aiFiles/status.js.map +2 -2
  250. package/dist/esm/cli/lib/aiFiles/utils.js +25 -10
  251. package/dist/esm/cli/lib/aiFiles/utils.js.map +2 -2
  252. package/dist/esm/cli/lib/api.js +70 -7
  253. package/dist/esm/cli/lib/api.js.map +2 -2
  254. package/dist/esm/cli/lib/command.js +4 -5
  255. package/dist/esm/cli/lib/command.js.map +2 -2
  256. package/dist/esm/cli/lib/config.js +39 -3
  257. package/dist/esm/cli/lib/config.js.map +2 -2
  258. package/dist/esm/cli/lib/deploy2.js +13 -26
  259. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  260. package/dist/esm/cli/lib/deployApi/componentDefinition.js +4 -1
  261. package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
  262. package/dist/esm/cli/lib/deploymentSelection.js +46 -2
  263. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  264. package/dist/esm/cli/lib/deploymentSelector.js +1 -0
  265. package/dist/esm/cli/lib/deploymentSelector.js.map +2 -2
  266. package/dist/esm/cli/lib/dev.js +162 -118
  267. package/dist/esm/cli/lib/dev.js.map +2 -2
  268. package/dist/esm/cli/lib/env.js +0 -11
  269. package/dist/esm/cli/lib/env.js.map +2 -2
  270. package/dist/esm/cli/lib/expiration.js +80 -0
  271. package/dist/esm/cli/lib/expiration.js.map +7 -0
  272. package/dist/esm/cli/lib/init.js +4 -3
  273. package/dist/esm/cli/lib/init.js.map +2 -2
  274. package/dist/esm/cli/lib/insights.js +1 -1
  275. package/dist/esm/cli/lib/insights.js.map +2 -2
  276. package/dist/esm/cli/lib/localDeployment/anonymous.js +16 -9
  277. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  278. package/dist/esm/cli/lib/localDeployment/localDeployment.js +9 -11
  279. package/dist/esm/cli/lib/localDeployment/localDeployment.js.map +2 -2
  280. package/dist/esm/cli/lib/localDeployment/run.js +1 -1
  281. package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
  282. package/dist/esm/cli/lib/localDeployment/upgrade.js +2 -2
  283. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  284. package/dist/esm/cli/lib/localDeployment/utils.js +8 -0
  285. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  286. package/dist/esm/cli/lib/mcp/tools/status.js +1 -1
  287. package/dist/esm/cli/lib/mcp/tools/status.js.map +2 -2
  288. package/dist/esm/cli/lib/updates.js +11 -9
  289. package/dist/esm/cli/lib/updates.js.map +2 -2
  290. package/dist/esm/cli/lib/usage.js +2 -1
  291. package/dist/esm/cli/lib/usage.js.map +2 -2
  292. package/dist/esm/cli/lib/utils/prompts.js +2 -1
  293. package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
  294. package/dist/esm/cli/lib/utils/utils.js +45 -20
  295. package/dist/esm/cli/lib/utils/utils.js.map +3 -3
  296. package/dist/esm/index.js +1 -1
  297. package/dist/esm/index.js.map +1 -1
  298. package/dist/esm/react/client.js +43 -6
  299. package/dist/esm/react/client.js.map +2 -2
  300. package/dist/esm/react/index.js +1 -0
  301. package/dist/esm/react/index.js.map +2 -2
  302. package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  303. package/dist/esm/server/api.js.map +2 -2
  304. package/dist/esm/server/components/index.js +40 -4
  305. package/dist/esm/server/components/index.js.map +2 -2
  306. package/dist/esm/server/impl/meta_impl.js +54 -0
  307. package/dist/esm/server/impl/meta_impl.js.map +7 -0
  308. package/dist/esm/server/impl/registration_impl.js +20 -11
  309. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  310. package/dist/esm/server/index.js.map +2 -2
  311. package/dist/esm/server/meta.js +2 -0
  312. package/dist/esm/server/meta.js.map +7 -0
  313. package/dist/esm-types/browser/index.d.ts +1 -0
  314. package/dist/esm-types/browser/index.d.ts.map +1 -1
  315. package/dist/esm-types/browser/query_options.d.ts +12 -9
  316. package/dist/esm-types/browser/query_options.d.ts.map +1 -1
  317. package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
  318. package/dist/esm-types/cli/codegen_templates/readme.d.ts.map +1 -1
  319. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  320. package/dist/esm-types/cli/configure.test.d.ts +2 -0
  321. package/dist/esm-types/cli/configure.test.d.ts.map +1 -0
  322. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  323. package/dist/esm-types/cli/deploymentCreate.d.ts +1 -0
  324. package/dist/esm-types/cli/deploymentCreate.d.ts.map +1 -1
  325. package/dist/esm-types/cli/deploymentSelect.d.ts +2 -1
  326. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  327. package/dist/esm-types/cli/dev.d.ts +3 -1
  328. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  329. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  330. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  331. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  332. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  333. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  334. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  335. package/dist/esm-types/cli/lib/aiFiles/index.d.ts +20 -18
  336. package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  337. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +6 -4
  338. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  339. package/dist/esm-types/cli/lib/aiFiles/state.d.ts +38 -0
  340. package/dist/esm-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  341. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  342. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  343. package/dist/esm-types/cli/lib/aiFiles/status.d.ts +4 -1
  344. package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  345. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +13 -3
  346. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  347. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  348. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  349. package/dist/esm-types/cli/lib/api.d.ts +3 -3
  350. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  351. package/dist/esm-types/cli/lib/command.d.ts +2 -1
  352. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  353. package/dist/esm-types/cli/lib/config.d.ts +17 -6
  354. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  355. package/dist/esm-types/cli/lib/deploy2.d.ts +5 -2
  356. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  357. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  358. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  359. package/dist/esm-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  360. package/dist/esm-types/cli/lib/deployApi/modules.d.ts +14 -14
  361. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +61 -52
  362. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  363. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  364. package/dist/esm-types/cli/lib/deploymentSelector.d.ts +2 -0
  365. package/dist/esm-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  366. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  367. package/dist/esm-types/cli/lib/env.d.ts +0 -4
  368. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  369. package/dist/esm-types/cli/lib/expiration.d.ts +35 -0
  370. package/dist/esm-types/cli/lib/expiration.d.ts.map +1 -0
  371. package/dist/esm-types/cli/lib/expiration.test.d.ts +2 -0
  372. package/dist/esm-types/cli/lib/expiration.test.d.ts.map +1 -0
  373. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  374. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  375. package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
  376. package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  377. package/dist/esm-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  378. package/dist/esm-types/cli/lib/localDeployment/run.d.ts +15 -0
  379. package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  380. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  381. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +7 -0
  382. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  383. package/dist/esm-types/cli/lib/mcp/requestContext.d.ts +3 -3
  384. package/dist/esm-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  385. package/dist/esm-types/cli/lib/updates.d.ts +4 -3
  386. package/dist/esm-types/cli/lib/updates.d.ts.map +1 -1
  387. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  388. package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
  389. package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
  390. package/dist/esm-types/cli/lib/utils/utils.d.ts +16 -2
  391. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  392. package/dist/esm-types/index.d.ts +1 -1
  393. package/dist/esm-types/react/client.d.ts +54 -2
  394. package/dist/esm-types/react/client.d.ts.map +1 -1
  395. package/dist/esm-types/react/index.d.ts +7 -2
  396. package/dist/esm-types/react/index.d.ts.map +1 -1
  397. package/dist/esm-types/react/use_query_object_options.test.d.ts +5 -0
  398. package/dist/esm-types/react/use_query_object_options.test.d.ts.map +1 -0
  399. package/dist/esm-types/react/use_query_result.test.d.ts +5 -0
  400. package/dist/esm-types/react/use_query_result.test.d.ts.map +1 -0
  401. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  402. package/dist/esm-types/server/api.d.ts +5 -1
  403. package/dist/esm-types/server/api.d.ts.map +1 -1
  404. package/dist/esm-types/server/components/definition.d.ts +1 -0
  405. package/dist/esm-types/server/components/definition.d.ts.map +1 -1
  406. package/dist/esm-types/server/components/index.d.ts +5 -1
  407. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  408. package/dist/esm-types/server/data_model.d.ts +2 -1
  409. package/dist/esm-types/server/data_model.d.ts.map +1 -1
  410. package/dist/esm-types/server/impl/meta_impl.d.ts +5 -0
  411. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -0
  412. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  413. package/dist/esm-types/server/index.d.ts +1 -0
  414. package/dist/esm-types/server/index.d.ts.map +1 -1
  415. package/dist/esm-types/server/meta.d.ts +72 -0
  416. package/dist/esm-types/server/meta.d.ts.map +1 -0
  417. package/dist/esm-types/server/registration.d.ts.map +1 -1
  418. package/dist/react.bundle.js +50 -7
  419. package/dist/react.bundle.js.map +3 -3
  420. package/package.json +11 -7
  421. package/schemas/convex.schema.json +15 -2
  422. package/src/browser/index.ts +3 -0
  423. package/src/browser/query_options.test.ts +0 -9
  424. package/src/browser/query_options.ts +36 -15
  425. package/src/cli/aiFiles.ts +44 -14
  426. package/src/cli/codegen_templates/readme.ts +14 -1
  427. package/src/cli/configure.test.ts +138 -0
  428. package/src/cli/configure.ts +48 -47
  429. package/src/cli/deploy.ts +12 -9
  430. package/src/cli/deploymentCreate.test.ts +349 -14
  431. package/src/cli/deploymentCreate.ts +268 -41
  432. package/src/cli/deploymentSelect.test.ts +136 -27
  433. package/src/cli/deploymentSelect.ts +50 -41
  434. package/src/cli/deploymentSelection.test.ts +343 -35
  435. package/src/cli/dev.ts +49 -14
  436. package/src/cli/docs.ts +1 -1
  437. package/src/cli/init.ts +2 -2
  438. package/src/cli/lib/aiFiles/agentsmd.ts +15 -11
  439. package/src/cli/lib/aiFiles/claudemd.ts +15 -11
  440. package/src/cli/lib/aiFiles/guidelinesmd.test.ts +12 -2
  441. package/src/cli/lib/aiFiles/guidelinesmd.ts +15 -7
  442. package/src/cli/lib/aiFiles/index.test.ts +188 -222
  443. package/src/cli/lib/aiFiles/index.ts +119 -125
  444. package/src/cli/lib/aiFiles/integration.test.ts +112 -45
  445. package/src/cli/lib/aiFiles/prompt.test.ts +6 -6
  446. package/src/cli/lib/aiFiles/skills.ts +46 -16
  447. package/src/cli/lib/aiFiles/state.test.ts +280 -0
  448. package/src/cli/lib/aiFiles/state.ts +82 -0
  449. package/src/cli/lib/aiFiles/status.ts +45 -39
  450. package/src/cli/lib/aiFiles/utils.test.ts +50 -0
  451. package/src/cli/lib/aiFiles/utils.ts +38 -10
  452. package/src/cli/lib/api.ts +88 -7
  453. package/src/cli/lib/command.ts +12 -7
  454. package/src/cli/lib/config.test.ts +184 -7
  455. package/src/cli/lib/config.ts +67 -7
  456. package/src/cli/lib/deploy2.ts +14 -27
  457. package/src/cli/lib/deployApi/componentDefinition.ts +4 -1
  458. package/src/cli/lib/deploymentSelection.ts +59 -6
  459. package/src/cli/lib/deploymentSelector.test.ts +6 -0
  460. package/src/cli/lib/deploymentSelector.ts +2 -0
  461. package/src/cli/lib/dev.ts +202 -153
  462. package/src/cli/lib/env.ts +0 -15
  463. package/src/cli/lib/expiration.test.ts +159 -0
  464. package/src/cli/lib/expiration.ts +124 -0
  465. package/src/cli/lib/generatedFunctionLogsApi.ts +16 -1
  466. package/src/cli/lib/init.ts +6 -2
  467. package/src/cli/lib/insights.ts +1 -1
  468. package/src/cli/lib/localDeployment/anonymous.ts +19 -9
  469. package/src/cli/lib/localDeployment/localDeployment.ts +9 -11
  470. package/src/cli/lib/localDeployment/run.ts +1 -1
  471. package/src/cli/lib/localDeployment/upgrade.ts +12 -10
  472. package/src/cli/lib/localDeployment/utils.ts +12 -0
  473. package/src/cli/lib/mcp/tools/status.ts +1 -1
  474. package/src/cli/lib/updates.test.ts +102 -75
  475. package/src/cli/lib/updates.ts +14 -12
  476. package/src/cli/lib/usage.ts +3 -1
  477. package/src/cli/lib/utils/prompts.ts +2 -0
  478. package/src/cli/lib/utils/utils.test.ts +6 -6
  479. package/src/cli/lib/utils/utils.ts +66 -27
  480. package/src/index.ts +1 -1
  481. package/src/react/client.test.tsx +65 -0
  482. package/src/react/client.ts +129 -13
  483. package/src/react/index.ts +9 -1
  484. package/src/react/use_query_object_options.test.ts +50 -0
  485. package/src/react/use_query_result.test.ts +41 -0
  486. package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
  487. package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
  488. package/src/server/api.ts +5 -1
  489. package/src/server/components/definition.ts +3 -0
  490. package/src/server/components/index.ts +62 -5
  491. package/src/server/data_model.ts +2 -1
  492. package/src/server/impl/meta_impl.ts +74 -0
  493. package/src/server/impl/registration_impl.ts +21 -9
  494. package/src/server/index.ts +8 -0
  495. package/src/server/meta.ts +76 -0
  496. package/src/server/registration.ts +10 -0
  497. package/src/server/schema.test.ts +78 -1
  498. package/dist/cjs/cli/lib/aiFiles/config.js +0 -171
  499. package/dist/cjs/cli/lib/aiFiles/config.js.map +0 -7
  500. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts +0 -46
  501. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  502. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  503. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  504. package/dist/esm/cli/lib/aiFiles/config.js +0 -135
  505. package/dist/esm/cli/lib/aiFiles/config.js.map +0 -7
  506. package/dist/esm-types/cli/lib/aiFiles/config.d.ts +0 -46
  507. package/dist/esm-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  508. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  509. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  510. package/src/cli/lib/aiFiles/config.test.ts +0 -460
  511. package/src/cli/lib/aiFiles/config.ts +0 -188
  512. package/src/values/.claude/settings.local.json +0 -10
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/lib/api.ts"],
4
- "sourcesContent": ["import { Context } from \"../../bundler/context.js\";\nimport { logVerbose, logWarning } from \"../../bundler/log.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./deployment.js\";\nimport {\n assertLocalBackendRunning,\n localDeploymentUrl,\n} from \"./localDeployment/run.js\";\nimport {\n ThrowingFetchError,\n bigBrainAPI,\n bigBrainAPIMaybeThrows,\n logAndHandleFetchError,\n typedPlatformClient,\n} from \"./utils/utils.js\";\nimport { z } from \"zod\";\nimport {\n DeploymentSelection,\n ProjectSelection,\n} from \"./deploymentSelection.js\";\nimport { loadLocalDeploymentCredentials } from \"./localDeployment/localDeployment.js\";\nimport { loadAnonymousDeployment } from \"./localDeployment/anonymous.js\";\nimport {\n parseDeploymentSelector,\n InProjectSelector,\n} from \"./deploymentSelector.js\";\nimport { chalkStderr } from \"chalk\";\nexport type DeploymentName = string;\nexport type CloudDeploymentType = \"prod\" | \"dev\" | \"preview\" | \"custom\";\nexport type AccountRequiredDeploymentType = CloudDeploymentType | \"local\";\nexport type DeploymentType = AccountRequiredDeploymentType | \"anonymous\";\n\nexport type Project = {\n id: number;\n name: string;\n slug: string;\n isDemo: boolean;\n};\n\ntype AdminKey = string;\n\n/**\n * Create a new project. If `deploymentToProvision` is specified, also provision a deployment for the project.\n */\nexport async function createProject(\n ctx: Context,\n {\n teamSlug: selectedTeamSlug,\n projectName,\n deploymentToProvision,\n }: {\n teamSlug: string;\n projectName: string;\n deploymentToProvision: {\n deploymentType: \"prod\" | \"dev\";\n region: string | null;\n } | null;\n },\n): Promise<{\n projectSlug: string;\n teamSlug: string;\n projectsRemaining: number;\n}> {\n const provisioningArgs = {\n team: selectedTeamSlug,\n projectName,\n ...deploymentToProvision,\n };\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"create_project\",\n data: provisioningArgs,\n });\n const { projectSlug, teamSlug, projectsRemaining } = data;\n if (\n projectSlug === undefined ||\n teamSlug === undefined ||\n projectsRemaining === undefined\n ) {\n const error =\n \"Unexpected response during provisioning: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: error,\n printedMessage: error,\n });\n }\n return {\n projectSlug,\n teamSlug,\n projectsRemaining,\n };\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `deploymentSelectionFromOptions`\n// ----------------------------------------------------------------------\n\nexport const deploymentSelectionWithinProjectSchema = z.discriminatedUnion(\n \"kind\",\n [\n z.object({ kind: z.literal(\"previewName\"), previewName: z.string() }),\n z.object({ kind: z.literal(\"deploymentName\"), deploymentName: z.string() }),\n z.object({ kind: z.literal(\"prod\") }),\n z.object({ kind: z.literal(\"implicitProd\") }),\n z.object({ kind: z.literal(\"ownDev\") }),\n z.object({\n kind: z.literal(\"deploymentSelector\"),\n selector: z.string(),\n }),\n ],\n);\n\nexport type DeploymentSelectionWithinProject = z.infer<\n typeof deploymentSelectionWithinProjectSchema\n>;\n\ntype DeploymentSelectionOptionsWithinProject = {\n prod?: boolean | undefined;\n // Whether this command defaults to prod when no other flags are provided. If\n // this is not set, the default will be \"ownDev\"\n implicitProd?: boolean;\n\n previewName?: string | undefined;\n deploymentName?: string | undefined;\n deployment?: string | undefined;\n};\n\nexport type DeploymentSelectionOptions =\n DeploymentSelectionOptionsWithinProject & {\n url?: string | undefined;\n adminKey?: string | undefined;\n envFile?: string | undefined;\n };\n\nexport function deploymentSelectionWithinProjectFromOptions(\n options: DeploymentSelectionOptions,\n): DeploymentSelectionWithinProject {\n if (options.deployment !== undefined) {\n return { kind: \"deploymentSelector\", selector: options.deployment };\n }\n if (options.previewName !== undefined) {\n return { kind: \"previewName\", previewName: options.previewName };\n }\n if (options.deploymentName !== undefined) {\n return { kind: \"deploymentName\", deploymentName: options.deploymentName };\n }\n if (options.prod) {\n return { kind: \"prod\" };\n }\n if (options.implicitProd) {\n return { kind: \"implicitProd\" };\n }\n return { kind: \"ownDev\" };\n}\n\nexport async function validateDeploymentSelectionForExistingDeployment(\n ctx: Context,\n deploymentSelection: DeploymentSelectionWithinProject,\n source: \"selfHosted\" | \"deployKey\" | \"cliArgs\",\n) {\n if (\n deploymentSelection.kind === \"ownDev\" ||\n deploymentSelection.kind === \"implicitProd\"\n ) {\n // These are both considered the \"default\" selection depending on the command, so this is always fine\n return;\n }\n if (deploymentSelection.kind === \"deploymentSelector\") {\n switch (source) {\n case \"selfHosted\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with a self-hosted deployment.\",\n });\n case \"deployKey\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with CONVEX_DEPLOY_KEY.\",\n });\n case \"cliArgs\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with --url and --admin-key.\",\n });\n }\n }\n switch (source) {\n case \"selfHosted\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--prod`, `--preview-name`, and `--deployment-name` flags cannot be used with a self-hosted deployment.\",\n });\n case \"deployKey\":\n logWarning(\n \"Ignoring `--prod`, `--preview-name`, or `--deployment-name` flags and using deployment from CONVEX_DEPLOY_KEY\",\n );\n break;\n case \"cliArgs\":\n logWarning(\n \"Ignoring `--prod`, `--preview-name`, or `--deployment-name` flags since this command was run with --url and --admin-key\",\n );\n break;\n }\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `checkAccessToSelectedProject`\n// ----------------------------------------------------------------------\n\nasync function hasAccessToProject(\n ctx: Context,\n selector: { projectSlug: string; teamSlug: string },\n): Promise<boolean> {\n try {\n await bigBrainAPIMaybeThrows({\n ctx,\n path: `teams/${selector.teamSlug}/projects/${selector.projectSlug}/deployments`,\n method: \"GET\",\n });\n return true;\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n (err.serverErrorData?.code === \"TeamNotFound\" ||\n err.serverErrorData?.code === \"ProjectNotFound\")\n ) {\n return false;\n }\n return logAndHandleFetchError(ctx, err);\n }\n}\n\nexport async function checkAccessToSelectedProject(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<\n | { kind: \"hasAccess\"; teamSlug: string; projectSlug: string }\n | { kind: \"noAccess\" }\n | { kind: \"unknown\" }\n> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n const result = await getTeamAndProjectSlugForDeployment(ctx, {\n deploymentName: projectSelection.deploymentName,\n });\n if (result === null) {\n return { kind: \"noAccess\" };\n }\n return {\n kind: \"hasAccess\",\n teamSlug: result.teamSlug,\n projectSlug: result.projectSlug,\n };\n }\n case \"teamAndProjectSlugs\": {\n const hasAccess = await hasAccessToProject(ctx, {\n teamSlug: projectSelection.teamSlug,\n projectSlug: projectSelection.projectSlug,\n });\n if (!hasAccess) {\n return { kind: \"noAccess\" };\n }\n return {\n kind: \"hasAccess\",\n teamSlug: projectSelection.teamSlug,\n projectSlug: projectSelection.projectSlug,\n };\n }\n case \"projectDeployKey\":\n // Ideally we would be able to do an explicit check here, but if the key is invalid,\n // it will instead fail as soon as we try to use the key.\n return { kind: \"unknown\" };\n default: {\n projectSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Invalid project selection: ${(projectSelection as any).kind}`,\n });\n }\n }\n}\n\nexport async function getTeamAndProjectSlugForDeployment(\n ctx: Context,\n selector: { deploymentName: string },\n): Promise<{ teamSlug: string; projectSlug: string } | null> {\n try {\n const body = await bigBrainAPIMaybeThrows({\n ctx,\n path: `deployment/${selector.deploymentName}/team_and_project`,\n method: \"GET\",\n });\n return { teamSlug: body.team, projectSlug: body.project };\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n (err.serverErrorData?.code === \"DeploymentNotFound\" ||\n err.serverErrorData?.code === \"ProjectNotFound\")\n ) {\n return null;\n }\n return logAndHandleFetchError(ctx, err);\n }\n}\n\n// ----------------------------------------------------------------------\n// Helpers for fetching deployment credentials\n// ----------------------------------------------------------------------\n\n// Used by dev for upgrade from team and project in convex.json to CONVEX_DEPLOYMENT\nexport async function fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx: Context,\n projectSelection:\n | { kind: \"teamAndProjectSlugs\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectDeployKey\"; projectDeployKey: string },\n deploymentType: \"prod\" | \"dev\",\n): Promise<{\n deploymentName: string;\n deploymentUrl: string;\n adminKey: AdminKey;\n}> {\n if (projectSelection.kind === \"projectDeployKey\") {\n const auth = ctx.bigBrainAuth();\n const doesAuthMatch =\n auth !== null &&\n auth.kind === \"projectKey\" &&\n auth.projectKey === projectSelection.projectDeployKey;\n if (!doesAuthMatch) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n errForSentry: new Error(\n \"Expected project deploy key to match the big brain auth header\",\n ),\n printedMessage: \"Unexpected error when loading the Convex deployment\",\n });\n }\n }\n let data;\n try {\n data = await bigBrainAPIMaybeThrows({\n ctx,\n method: \"POST\",\n path: \"deployment/provision_and_authorize\",\n data: {\n teamSlug:\n projectSelection.kind === \"teamAndProjectSlugs\"\n ? projectSelection.teamSlug\n : null,\n projectSlug:\n projectSelection.kind === \"teamAndProjectSlugs\"\n ? projectSelection.projectSlug\n : null,\n deploymentType: deploymentType === \"prod\" ? \"prod\" : \"dev\",\n },\n });\n } catch (error) {\n const msg = \"Unknown error during authorization: \" + error;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n const adminKey = data.adminKey;\n const url = data.url;\n const deploymentName = data.deploymentName;\n if (adminKey === undefined || url === undefined) {\n const msg = \"Unknown error during authorization: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n return { adminKey, deploymentUrl: url, deploymentName };\n}\n\nasync function fetchExistingDevDeploymentCredentialsOrCrash(\n ctx: Context,\n deploymentName: DeploymentName,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n const slugs = await fetchTeamAndProject(ctx, deploymentName);\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.team,\n projectSlug: slugs.project,\n },\n \"dev\",\n );\n return {\n deploymentName: credentials.deploymentName,\n adminKey: credentials.adminKey,\n url: credentials.deploymentUrl,\n deploymentType: \"dev\",\n };\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `loadSelectedDeploymentCredentials`\n// ----------------------------------------------------------------------\n\nasync function handleOwnDev(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n if (projectSelection.deploymentType === \"local\") {\n const credentials = await loadLocalDeploymentCredentials(\n ctx,\n projectSelection.deploymentName,\n );\n return {\n deploymentName: projectSelection.deploymentName,\n adminKey: credentials.adminKey,\n url: credentials.deploymentUrl,\n deploymentType: \"local\",\n };\n }\n return await fetchExistingDevDeploymentCredentialsOrCrash(\n ctx,\n projectSelection.deploymentName,\n );\n }\n case \"teamAndProjectSlugs\":\n case \"projectDeployKey\": {\n // Note -- this provisions a dev deployment if one doesn't exist\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n projectSelection,\n \"dev\",\n );\n return {\n url: credentials.deploymentUrl,\n adminKey: credentials.adminKey,\n deploymentName: credentials.deploymentName,\n deploymentType: \"dev\",\n };\n }\n default: {\n projectSelection satisfies never;\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n // This should be unreachable, so don't bother with a printed message.\n printedMessage: null,\n errForSentry: `Unexpected project selection: ${(projectSelection as any).kind}`,\n });\n }\n }\n}\n\nasync function handleProd(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: \"prod\";\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n const credentials = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_prod\",\n data: {\n deploymentName: projectSelection.deploymentName,\n },\n });\n return credentials;\n }\n case \"teamAndProjectSlugs\":\n case \"projectDeployKey\": {\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n projectSelection,\n \"prod\",\n );\n return {\n url: credentials.deploymentUrl,\n adminKey: credentials.adminKey,\n deploymentName: credentials.deploymentName,\n deploymentType: \"prod\",\n };\n }\n }\n}\n\nasync function handlePreview(\n ctx: Context,\n previewName: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: \"preview\";\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\":\n case \"teamAndProjectSlugs\":\n return await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_preview\",\n data: {\n previewName: previewName,\n projectSelection: projectSelection,\n },\n });\n\n case \"projectDeployKey\":\n // TODO -- this should be supported\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Project deploy keys are not supported for preview deployments\",\n });\n }\n}\n\nasync function handleDeploymentName(\n ctx: Context,\n deploymentName: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\":\n case \"teamAndProjectSlugs\":\n return await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_within_current_project\",\n data: {\n selectedDeploymentName: deploymentName,\n projectSelection: projectSelection,\n },\n });\n case \"projectDeployKey\":\n // TODO -- this should be supported\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Project deploy keys are not supported with the --deployment-name flag\",\n });\n }\n}\n\nasync function fetchDeploymentCredentialsWithinCurrentProject(\n ctx: Context,\n projectSelection: ProjectSelection,\n deploymentSelection: DeploymentSelectionWithinProject,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (deploymentSelection.kind) {\n case \"ownDev\": {\n return await handleOwnDev(ctx, projectSelection);\n }\n case \"implicitProd\":\n case \"prod\": {\n return await handleProd(ctx, projectSelection);\n }\n case \"previewName\":\n return await handlePreview(\n ctx,\n deploymentSelection.previewName,\n projectSelection,\n );\n case \"deploymentName\":\n return await handleDeploymentName(\n ctx,\n deploymentSelection.deploymentName,\n projectSelection,\n );\n case \"deploymentSelector\":\n return await handleDeploymentSelector(\n ctx,\n deploymentSelection.selector,\n projectSelection,\n );\n default: {\n deploymentSelection satisfies never;\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n // This should be unreachable, so don't bother with a printed message.\n printedMessage: null,\n errForSentry: `Unexpected deployment selection: ${deploymentSelection as any}`,\n });\n }\n }\n}\n\nasync function resolveDeploymentNameByReference(\n ctx: Context,\n teamSlug: string,\n projectSlug: string,\n reference: string,\n): Promise<string> {\n try {\n const result = await typedPlatformClient(ctx, { throw: true }).GET(\n \"/teams/{team_id_or_slug}/projects/{project_slug}/deployment\",\n {\n params: {\n path: { team_id_or_slug: teamSlug, project_slug: projectSlug },\n query: { reference },\n },\n },\n );\n\n return result.data!.name;\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n err.serverErrorData?.code === \"DeploymentNotFound\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Deployment \u201C${reference}\u201D not found. To create a new deployment, use ${chalkStderr.bold(`npx convex deployment create ${reference} --team ${teamSlug} --project ${projectSlug} --select`)}`,\n errForSentry: err,\n });\n }\n return await logAndHandleFetchError(ctx, err);\n }\n}\n\nasync function handleRefInProject(\n ctx: Context,\n selector: InProjectSelector,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (selector.kind) {\n case \"dev\":\n return await handleOwnDev(ctx, projectSelection);\n case \"prod\":\n return await handleProd(ctx, projectSelection);\n case \"reference\": {\n const access = await checkAccessToSelectedProject(ctx, projectSelection);\n if (access.kind !== \"hasAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n const deploymentName = await resolveDeploymentNameByReference(\n ctx,\n access.teamSlug,\n access.projectSlug,\n selector.reference,\n );\n return await handleDeploymentName(ctx, deploymentName, projectSelection);\n }\n }\n}\n\nasync function handleDeploymentSelector(\n ctx: Context,\n selector: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n const parsed = parseDeploymentSelector(selector);\n switch (parsed.kind) {\n case \"deploymentName\":\n return await handleDeploymentName(\n ctx,\n parsed.deploymentName,\n projectSelection,\n );\n case \"inCurrentProject\":\n return await handleRefInProject(ctx, parsed.selector, projectSelection);\n case \"inProject\": {\n const access = await checkAccessToSelectedProject(ctx, projectSelection);\n if (access.kind !== \"hasAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n return await handleRefInProject(ctx, parsed.selector, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: access.teamSlug,\n projectSlug: parsed.projectSlug,\n });\n }\n case \"inTeamProject\":\n return await handleRefInProject(ctx, parsed.selector, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: parsed.teamSlug,\n projectSlug: parsed.projectSlug,\n });\n }\n}\n\nasync function _loadExistingDeploymentCredentialsForProject(\n ctx: Context,\n targetProject: ProjectSelection,\n deploymentSelection: DeploymentSelectionWithinProject,\n { ensureLocalRunning } = { ensureLocalRunning: true },\n): Promise<DetailedDeploymentCredentials> {\n const accessResult = await checkAccessToSelectedProject(ctx, targetProject);\n if (accessResult.kind === \"noAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n const result = await fetchDeploymentCredentialsWithinCurrentProject(\n ctx,\n targetProject,\n deploymentSelection,\n );\n logVerbose(\n `Deployment URL: ${result.url}, Deployment Name: ${result.deploymentName}, Deployment Type: ${result.deploymentType}`,\n );\n if (ensureLocalRunning && result.deploymentType === \"local\") {\n await assertLocalBackendRunning(ctx, {\n url: result.url,\n deploymentName: result.deploymentName,\n });\n }\n return {\n ...result,\n deploymentFields: {\n deploymentName: result.deploymentName,\n deploymentType: result.deploymentType,\n\n projectSlug:\n accessResult.kind === \"hasAccess\" ? accessResult.projectSlug : null,\n teamSlug:\n accessResult.kind === \"hasAccess\" ? accessResult.teamSlug : null,\n },\n };\n}\n\nexport type DetailedDeploymentCredentials = {\n adminKey: string;\n url: string;\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n } | null;\n};\n\n/**\n * This is used by most commands to determine which deployment to act on, taking into account the deployment selection flags.\n */\nexport async function loadSelectedDeploymentCredentials(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n { ensureLocalRunning } = { ensureLocalRunning: true },\n): Promise<DetailedDeploymentCredentials> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\":\n // We're already set up.\n logVerbose(\n `Deployment URL: ${deploymentSelection.deploymentToActOn.url}, Deployment Name: ${deploymentSelection.deploymentToActOn.deploymentFields?.deploymentName ?? \"unknown\"}, Deployment Type: ${deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ?? \"unknown\"}`,\n );\n return {\n adminKey: deploymentSelection.deploymentToActOn.adminKey,\n url: deploymentSelection.deploymentToActOn.url,\n deploymentFields:\n deploymentSelection.deploymentToActOn.deploymentFields,\n };\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No CONVEX_DEPLOYMENT set, run `npx convex dev` to configure a Convex project\",\n });\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await _loadExistingDeploymentCredentialsForProject(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n },\n // Note that the user could select a non-preview deployment here, and it would succeed if the user is logged in locally because getBigBrainAuth prefers the user's access token over the preview deploy key.\n deploymentSelection.selectionWithinProject,\n { ensureLocalRunning },\n );\n }\n case \"deploymentWithinProject\": {\n return await _loadExistingDeploymentCredentialsForProject(\n ctx,\n deploymentSelection.targetProject,\n deploymentSelection.selectionWithinProject,\n { ensureLocalRunning },\n );\n }\n case \"anonymous\": {\n if (deploymentSelection.deploymentName === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No CONVEX_DEPLOYMENT set, run `npx convex dev` to configure a Convex project\",\n });\n }\n const config = await loadAnonymousDeployment(\n ctx,\n deploymentSelection.deploymentName,\n );\n const url = localDeploymentUrl(config.ports.cloud);\n if (ensureLocalRunning) {\n await assertLocalBackendRunning(ctx, {\n url,\n deploymentName: deploymentSelection.deploymentName,\n });\n }\n return {\n adminKey: config.adminKey,\n url,\n deploymentFields: {\n deploymentName: deploymentSelection.deploymentName,\n deploymentType: \"anonymous\",\n projectSlug: null,\n teamSlug: null,\n },\n };\n }\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Unknown deployment type\",\n });\n }\n }\n}\n\nexport async function fetchTeamAndProject(\n ctx: Context,\n deploymentName: string,\n) {\n const data = (await bigBrainAPI({\n ctx,\n method: \"GET\",\n path: `deployment/${deploymentName}/team_and_project`,\n })) as {\n team: string; // slug\n project: string; // slug\n teamId: number;\n projectId: number;\n };\n\n const { team, project } = data;\n if (team === undefined || project === undefined) {\n const msg =\n \"Unknown error when fetching team and project: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n\n return data;\n}\n\nexport async function fetchTeamAndProjectForKey(\n ctx: Context,\n // Deployment deploy key, like `prod:happy-animal-123|<stuff>`\n deployKey: string,\n) {\n const data = (await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: `deployment/team_and_project_for_key`,\n data: {\n deployKey: deployKey,\n },\n })) as {\n team: string; // slug\n project: string; // slug\n teamId: number;\n projectId: number;\n };\n\n const { team, project } = data;\n if (team === undefined || project === undefined) {\n const msg =\n \"Unknown error when fetching team and project: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n\n return data;\n}\n\nexport async function getTeamsForUser(ctx: Context) {\n const teams = await bigBrainAPI<{ id: number; name: string; slug: string }[]>(\n {\n ctx,\n method: \"GET\",\n path: \"teams\",\n },\n );\n return teams;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Context } from \"../../bundler/context.js\";\nimport { logVerbose, logWarning } from \"../../bundler/log.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./deployment.js\";\nimport {\n assertLocalBackendRunning,\n localDeploymentUrl,\n} from \"./localDeployment/run.js\";\nimport {\n ThrowingFetchError,\n bigBrainAPI,\n bigBrainAPIMaybeThrows,\n logAndHandleFetchError,\n typedPlatformClient,\n} from \"./utils/utils.js\";\nimport { z } from \"zod\";\nimport {\n DeploymentSelection,\n ProjectSelection,\n} from \"./deploymentSelection.js\";\nimport { loadLocalDeploymentCredentials } from \"./localDeployment/localDeployment.js\";\nimport { loadAnonymousDeployment } from \"./localDeployment/anonymous.js\";\nimport {\n parseDeploymentSelector,\n InProjectSelector,\n} from \"./deploymentSelector.js\";\nimport { loadProjectLocalConfig } from \"./localDeployment/filePaths.js\";\nimport { chalkStderr } from \"chalk\";\nexport type DeploymentName = string;\nexport type CloudDeploymentType = \"prod\" | \"dev\" | \"preview\" | \"custom\";\nexport type AccountRequiredDeploymentType = CloudDeploymentType | \"local\";\nexport type DeploymentType = AccountRequiredDeploymentType | \"anonymous\";\n\nexport type Project = {\n id: number;\n name: string;\n slug: string;\n isDemo: boolean;\n};\n\ntype AdminKey = string;\n\n/**\n * Create a new project. If `deploymentToProvision` is specified, also provision a deployment for the project.\n */\nexport async function createProject(\n ctx: Context,\n {\n teamSlug: selectedTeamSlug,\n projectName,\n deploymentToProvision,\n }: {\n teamSlug: string;\n projectName: string;\n deploymentToProvision: {\n deploymentType: \"prod\" | \"dev\";\n region: string | null;\n } | null;\n },\n): Promise<{\n projectSlug: string;\n teamSlug: string;\n projectsRemaining: number;\n}> {\n const provisioningArgs = {\n team: selectedTeamSlug,\n projectName,\n ...deploymentToProvision,\n };\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"create_project\",\n data: provisioningArgs,\n });\n const { projectSlug, teamSlug, projectsRemaining } = data;\n if (\n projectSlug === undefined ||\n teamSlug === undefined ||\n projectsRemaining === undefined\n ) {\n const error =\n \"Unexpected response during provisioning: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: error,\n printedMessage: error,\n });\n }\n return {\n projectSlug,\n teamSlug,\n projectsRemaining,\n };\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `deploymentSelectionFromOptions`\n// ----------------------------------------------------------------------\n\nexport const deploymentSelectionWithinProjectSchema = z.discriminatedUnion(\n \"kind\",\n [\n z.object({ kind: z.literal(\"previewName\"), previewName: z.string() }),\n z.object({ kind: z.literal(\"deploymentName\"), deploymentName: z.string() }),\n z.object({ kind: z.literal(\"prod\") }),\n z.object({ kind: z.literal(\"implicitProd\") }),\n z.object({ kind: z.literal(\"unspecified\") }),\n z.object({\n kind: z.literal(\"deploymentSelector\"),\n selector: z.string(),\n }),\n ],\n);\n\nexport type DeploymentSelectionWithinProject = z.infer<\n typeof deploymentSelectionWithinProjectSchema\n>;\n\ntype DeploymentSelectionOptionsWithinProject = {\n prod?: boolean | undefined;\n // Whether this command defaults to prod when no other flags are provided. If\n // this is not set, the default will be \"ownDev\"\n implicitProd?: boolean;\n\n previewName?: string | undefined;\n deploymentName?: string | undefined;\n deployment?: string | undefined;\n};\n\nexport type DeploymentSelectionOptions =\n DeploymentSelectionOptionsWithinProject & {\n url?: string | undefined;\n adminKey?: string | undefined;\n envFile?: string | undefined;\n };\n\nexport function deploymentSelectionWithinProjectFromOptions(\n options: DeploymentSelectionOptions,\n): DeploymentSelectionWithinProject {\n if (options.deployment !== undefined) {\n return { kind: \"deploymentSelector\", selector: options.deployment };\n }\n if (options.previewName !== undefined) {\n return { kind: \"previewName\", previewName: options.previewName };\n }\n if (options.deploymentName !== undefined) {\n return { kind: \"deploymentName\", deploymentName: options.deploymentName };\n }\n if (options.prod) {\n return { kind: \"prod\" };\n }\n if (options.implicitProd) {\n return { kind: \"implicitProd\" };\n }\n return { kind: \"unspecified\" };\n}\n\nexport async function validateDeploymentSelectionForExistingDeployment(\n ctx: Context,\n deploymentSelection: DeploymentSelectionWithinProject,\n source: \"selfHosted\" | \"deployKey\" | \"cliArgs\",\n) {\n if (\n deploymentSelection.kind === \"unspecified\" ||\n deploymentSelection.kind === \"implicitProd\"\n ) {\n // These are both considered the \"default\" selection depending on the command, so this is always fine\n return;\n }\n if (deploymentSelection.kind === \"deploymentSelector\") {\n switch (source) {\n case \"selfHosted\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with a self-hosted deployment.\",\n });\n case \"deployKey\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with CONVEX_DEPLOY_KEY.\",\n });\n case \"cliArgs\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--deployment` flag cannot be used with --url and --admin-key.\",\n });\n }\n }\n switch (source) {\n case \"selfHosted\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--prod`, `--preview-name`, and `--deployment-name` flags cannot be used with a self-hosted deployment.\",\n });\n case \"deployKey\":\n logWarning(\n \"Ignoring `--prod`, `--preview-name`, or `--deployment-name` flags and using deployment from CONVEX_DEPLOY_KEY\",\n );\n break;\n case \"cliArgs\":\n logWarning(\n \"Ignoring `--prod`, `--preview-name`, or `--deployment-name` flags since this command was run with --url and --admin-key\",\n );\n break;\n }\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `checkAccessToSelectedProject`\n// ----------------------------------------------------------------------\n\nasync function hasAccessToProject(\n ctx: Context,\n selector: { projectSlug: string; teamSlug: string },\n): Promise<boolean> {\n try {\n await bigBrainAPIMaybeThrows({\n ctx,\n path: `teams/${selector.teamSlug}/projects/${selector.projectSlug}/deployments`,\n method: \"GET\",\n });\n return true;\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n (err.serverErrorData?.code === \"TeamNotFound\" ||\n err.serverErrorData?.code === \"ProjectNotFound\")\n ) {\n return false;\n }\n return logAndHandleFetchError(ctx, err);\n }\n}\n\nexport async function checkAccessToSelectedProject(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<\n | { kind: \"hasAccess\"; teamSlug: string; projectSlug: string }\n | { kind: \"noAccess\" }\n | { kind: \"unknown\" }\n> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n const result = await getTeamAndProjectSlugForDeployment(ctx, {\n deploymentName: projectSelection.deploymentName,\n });\n if (result === null) {\n return { kind: \"noAccess\" };\n }\n return {\n kind: \"hasAccess\",\n teamSlug: result.teamSlug,\n projectSlug: result.projectSlug,\n };\n }\n case \"teamAndProjectSlugs\": {\n const hasAccess = await hasAccessToProject(ctx, {\n teamSlug: projectSelection.teamSlug,\n projectSlug: projectSelection.projectSlug,\n });\n if (!hasAccess) {\n return { kind: \"noAccess\" };\n }\n return {\n kind: \"hasAccess\",\n teamSlug: projectSelection.teamSlug,\n projectSlug: projectSelection.projectSlug,\n };\n }\n case \"projectDeployKey\":\n // Ideally we would be able to do an explicit check here, but if the key is invalid,\n // it will instead fail as soon as we try to use the key.\n return { kind: \"unknown\" };\n default: {\n projectSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Invalid project selection: ${(projectSelection as any).kind}`,\n });\n }\n }\n}\n\nexport async function getTeamAndProjectSlugForDeployment(\n ctx: Context,\n selector: { deploymentName: string },\n): Promise<{ teamSlug: string; projectSlug: string } | null> {\n try {\n const body = await bigBrainAPIMaybeThrows({\n ctx,\n path: `deployment/${selector.deploymentName}/team_and_project`,\n method: \"GET\",\n });\n return { teamSlug: body.team, projectSlug: body.project };\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n (err.serverErrorData?.code === \"DeploymentNotFound\" ||\n err.serverErrorData?.code === \"ProjectNotFound\")\n ) {\n return null;\n }\n return logAndHandleFetchError(ctx, err);\n }\n}\n\n// ----------------------------------------------------------------------\n// Helpers for fetching deployment credentials\n// ----------------------------------------------------------------------\n\n// Used by dev for upgrade from team and project in convex.json to CONVEX_DEPLOYMENT\nexport async function fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx: Context,\n projectSelection:\n | { kind: \"teamAndProjectSlugs\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectDeployKey\"; projectDeployKey: string },\n deploymentType: \"prod\" | \"dev\",\n): Promise<{\n deploymentName: string;\n deploymentUrl: string;\n adminKey: AdminKey;\n}> {\n if (projectSelection.kind === \"projectDeployKey\") {\n const auth = ctx.bigBrainAuth();\n const doesAuthMatch =\n auth !== null &&\n auth.kind === \"projectKey\" &&\n auth.projectKey === projectSelection.projectDeployKey;\n if (!doesAuthMatch) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n errForSentry: new Error(\n \"Expected project deploy key to match the big brain auth header\",\n ),\n printedMessage: \"Unexpected error when loading the Convex deployment\",\n });\n }\n }\n let data;\n try {\n data = await bigBrainAPIMaybeThrows({\n ctx,\n method: \"POST\",\n path: \"deployment/provision_and_authorize\",\n data: {\n teamSlug:\n projectSelection.kind === \"teamAndProjectSlugs\"\n ? projectSelection.teamSlug\n : null,\n projectSlug:\n projectSelection.kind === \"teamAndProjectSlugs\"\n ? projectSelection.projectSlug\n : null,\n deploymentType: deploymentType === \"prod\" ? \"prod\" : \"dev\",\n },\n });\n } catch (error) {\n const msg = \"Unknown error during authorization: \" + error;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n const adminKey = data.adminKey;\n const url = data.url;\n const deploymentName = data.deploymentName;\n if (adminKey === undefined || url === undefined) {\n const msg = \"Unknown error during authorization: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n return { adminKey, deploymentUrl: url, deploymentName };\n}\n\nasync function fetchExistingDevDeploymentCredentialsOrCrash(\n ctx: Context,\n deploymentName: DeploymentName,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n const slugs = await fetchTeamAndProject(ctx, deploymentName);\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.team,\n projectSlug: slugs.project,\n },\n \"dev\",\n );\n return {\n deploymentName: credentials.deploymentName,\n adminKey: credentials.adminKey,\n url: credentials.deploymentUrl,\n deploymentType: \"dev\",\n };\n}\n\n// ----------------------------------------------------------------------\n// Helpers for `loadSelectedDeploymentCredentials`\n// ----------------------------------------------------------------------\n\n// Returns the user's own dev deployment, which may be a local deployment\n// if one is configured. Used for dev commands (including `npx convex dev`)\n// when no specific deployment is specified.\nasync function handleOwnDev(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n if (projectSelection.deploymentType === \"local\") {\n const credentials = await loadLocalDeploymentCredentials(\n ctx,\n projectSelection.deploymentName,\n );\n return {\n deploymentName: projectSelection.deploymentName,\n adminKey: credentials.adminKey,\n url: credentials.deploymentUrl,\n deploymentType: \"local\",\n };\n }\n return await fetchExistingDevDeploymentCredentialsOrCrash(\n ctx,\n projectSelection.deploymentName,\n );\n }\n case \"teamAndProjectSlugs\":\n case \"projectDeployKey\": {\n // Note -- this provisions a dev deployment if one doesn't exist\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n projectSelection,\n \"dev\",\n );\n return {\n url: credentials.deploymentUrl,\n adminKey: credentials.adminKey,\n deploymentName: credentials.deploymentName,\n deploymentType: \"dev\",\n };\n }\n default: {\n projectSelection satisfies never;\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n // This should be unreachable, so don't bother with a printed message.\n printedMessage: null,\n errForSentry: `Unexpected project selection: ${(projectSelection as any).kind}`,\n });\n }\n }\n}\n\nasync function handleProd(\n ctx: Context,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: \"prod\";\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\": {\n const credentials = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_prod\",\n data: {\n deploymentName: projectSelection.deploymentName,\n },\n });\n return credentials;\n }\n case \"teamAndProjectSlugs\":\n case \"projectDeployKey\": {\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n projectSelection,\n \"prod\",\n );\n return {\n url: credentials.deploymentUrl,\n adminKey: credentials.adminKey,\n deploymentName: credentials.deploymentName,\n deploymentType: \"prod\",\n };\n }\n }\n}\n\nasync function handlePreview(\n ctx: Context,\n previewName: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: \"preview\";\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\":\n case \"teamAndProjectSlugs\":\n return await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_preview\",\n data: {\n previewName: previewName,\n projectSelection: projectSelection,\n },\n });\n\n case \"projectDeployKey\":\n // TODO -- this should be supported\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Project deploy keys are not supported for preview deployments\",\n });\n }\n}\n\nasync function handleDeploymentName(\n ctx: Context,\n deploymentName: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (projectSelection.kind) {\n case \"deploymentName\":\n case \"teamAndProjectSlugs\":\n return await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"deployment/authorize_within_current_project\",\n data: {\n selectedDeploymentName: deploymentName,\n projectSelection: projectSelection,\n },\n });\n case \"projectDeployKey\":\n // TODO -- this should be supported\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Project deploy keys are not supported with the --deployment-name flag\",\n });\n }\n}\n\nasync function fetchDeploymentCredentialsWithinCurrentProject(\n ctx: Context,\n projectSelection: ProjectSelection,\n deploymentSelection: DeploymentSelectionWithinProject,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (deploymentSelection.kind) {\n case \"unspecified\": {\n // default to the user's default dev deployment\n // TODO: this currently also handles local dev, but that should probably be split out into a different DeploymenSelection kind\n return await handleOwnDev(ctx, projectSelection);\n }\n case \"implicitProd\":\n case \"prod\": {\n return await handleProd(ctx, projectSelection);\n }\n case \"previewName\":\n return await handlePreview(\n ctx,\n deploymentSelection.previewName,\n projectSelection,\n );\n case \"deploymentName\":\n return await handleDeploymentName(\n ctx,\n deploymentSelection.deploymentName,\n projectSelection,\n );\n case \"deploymentSelector\":\n return await handleDeploymentSelector(\n ctx,\n deploymentSelection.selector,\n projectSelection,\n );\n default: {\n deploymentSelection satisfies never;\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n // This should be unreachable, so don't bother with a printed message.\n printedMessage: null,\n errForSentry: `Unexpected deployment selection: ${deploymentSelection as any}`,\n });\n }\n }\n}\n\nasync function resolveDeploymentNameByReference(\n ctx: Context,\n teamSlug: string,\n projectSlug: string,\n reference: string,\n): Promise<string> {\n try {\n const result = await typedPlatformClient(ctx, { throw: true }).GET(\n \"/teams/{team_id_or_slug}/projects/{project_slug}/deployment\",\n {\n params: {\n path: { team_id_or_slug: teamSlug, project_slug: projectSlug },\n query: { reference },\n },\n },\n );\n\n return result.data!.name;\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n err.serverErrorData?.code === \"DeploymentNotFound\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Deployment \u201C${reference}\u201D not found. To create a new deployment, use ${chalkStderr.bold(`npx convex deployment create ${teamSlug}:${projectSlug}:${reference} --select`)}`,\n errForSentry: err,\n });\n }\n return await logAndHandleFetchError(ctx, err);\n }\n}\n\nasync function handleRefInProject(\n ctx: Context,\n selector: InProjectSelector,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n switch (selector.kind) {\n case \"dev\": {\n const access = await checkAccessToSelectedProject(ctx, projectSelection);\n if (access.kind !== \"hasAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n const deploymentName = await resolveDefaultCloudDevDeploymentName(\n ctx,\n access.teamSlug,\n access.projectSlug,\n );\n // Pass teamAndProjectSlugs instead of the original projectSelection,\n // because handleDeploymentName sends projectSelection to Big Brain's\n // authorize_within_current_project endpoint, which doesn't understand\n // deploymentType \"local\".\n return await handleDeploymentName(ctx, deploymentName, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: access.teamSlug,\n projectSlug: access.projectSlug,\n });\n }\n case \"prod\":\n return await handleProd(ctx, projectSelection);\n case \"reference\": {\n const access = await checkAccessToSelectedProject(ctx, projectSelection);\n if (access.kind !== \"hasAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n const deploymentName = await resolveDeploymentNameByReference(\n ctx,\n access.teamSlug,\n access.projectSlug,\n selector.reference,\n );\n return await handleDeploymentName(ctx, deploymentName, projectSelection);\n }\n }\n}\n\nasync function handleDeploymentSelector(\n ctx: Context,\n selector: string,\n projectSelection: ProjectSelection,\n): Promise<{\n deploymentName: string;\n adminKey: string;\n url: string;\n deploymentType: DeploymentType;\n}> {\n const parsed = parseDeploymentSelector(selector);\n switch (parsed.kind) {\n case \"deploymentName\":\n return await handleDeploymentName(\n ctx,\n parsed.deploymentName,\n projectSelection,\n );\n case \"local\": {\n const localConfig = loadProjectLocalConfig(ctx);\n if (localConfig === null) {\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No local deployment found. Run ${chalkStderr.bold(\"npx convex deployment create local\")} to create one.`,\n });\n }\n const credentials = await loadLocalDeploymentCredentials(\n ctx,\n localConfig.deploymentName,\n );\n return {\n deploymentName: localConfig.deploymentName,\n adminKey: credentials.adminKey,\n url: credentials.deploymentUrl,\n deploymentType: \"local\",\n };\n }\n case \"inCurrentProject\":\n return await handleRefInProject(ctx, parsed.selector, projectSelection);\n case \"inProject\": {\n const access = await checkAccessToSelectedProject(ctx, projectSelection);\n if (access.kind !== \"hasAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n return await handleRefInProject(ctx, parsed.selector, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: access.teamSlug,\n projectSlug: parsed.projectSlug,\n });\n }\n case \"inTeamProject\":\n return await handleRefInProject(ctx, parsed.selector, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: parsed.teamSlug,\n projectSlug: parsed.projectSlug,\n });\n }\n}\n\nasync function _loadExistingDeploymentCredentialsForProject(\n ctx: Context,\n targetProject: ProjectSelection,\n deploymentSelection: DeploymentSelectionWithinProject,\n { ensureLocalRunning } = { ensureLocalRunning: true },\n): Promise<DetailedDeploymentCredentials> {\n const accessResult = await checkAccessToSelectedProject(ctx, targetProject);\n if (accessResult.kind === \"noAccess\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"You don't have access to the selected project. Run `npx convex dev` to select a different project.\",\n });\n }\n const result = await fetchDeploymentCredentialsWithinCurrentProject(\n ctx,\n targetProject,\n deploymentSelection,\n );\n logVerbose(\n `Deployment URL: ${result.url}, Deployment Name: ${result.deploymentName}, Deployment Type: ${result.deploymentType}`,\n );\n if (ensureLocalRunning && result.deploymentType === \"local\") {\n await assertLocalBackendRunning(ctx, {\n url: result.url,\n deploymentName: result.deploymentName,\n });\n }\n return {\n ...result,\n deploymentFields: {\n deploymentName: result.deploymentName,\n deploymentType: result.deploymentType,\n\n projectSlug:\n accessResult.kind === \"hasAccess\" ? accessResult.projectSlug : null,\n teamSlug:\n accessResult.kind === \"hasAccess\" ? accessResult.teamSlug : null,\n },\n };\n}\n\nexport type DetailedDeploymentCredentials = {\n adminKey: string;\n url: string;\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n } | null;\n};\n\n/**\n * This is used by most commands to determine which deployment to act on, taking into account the deployment selection flags.\n */\nexport async function loadSelectedDeploymentCredentials(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n { ensureLocalRunning } = { ensureLocalRunning: true },\n): Promise<DetailedDeploymentCredentials> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\":\n // We're already set up.\n logVerbose(\n `Deployment URL: ${deploymentSelection.deploymentToActOn.url}, Deployment Name: ${deploymentSelection.deploymentToActOn.deploymentFields?.deploymentName ?? \"unknown\"}, Deployment Type: ${deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ?? \"unknown\"}`,\n );\n return {\n adminKey: deploymentSelection.deploymentToActOn.adminKey,\n url: deploymentSelection.deploymentToActOn.url,\n deploymentFields:\n deploymentSelection.deploymentToActOn.deploymentFields,\n };\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No CONVEX_DEPLOYMENT set, run `npx convex dev` to configure a Convex project\",\n });\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await _loadExistingDeploymentCredentialsForProject(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n },\n // Note that the user could select a non-preview deployment here, and it would succeed if the user is logged in locally because getBigBrainAuth prefers the user's access token over the preview deploy key.\n deploymentSelection.selectionWithinProject,\n { ensureLocalRunning },\n );\n }\n case \"deploymentWithinProject\": {\n return await _loadExistingDeploymentCredentialsForProject(\n ctx,\n deploymentSelection.targetProject,\n deploymentSelection.selectionWithinProject,\n { ensureLocalRunning },\n );\n }\n case \"anonymous\": {\n if (deploymentSelection.deploymentName === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No CONVEX_DEPLOYMENT set, run `npx convex dev` to configure a Convex project\",\n });\n }\n const config = await loadAnonymousDeployment(\n ctx,\n deploymentSelection.deploymentName,\n );\n const url = localDeploymentUrl(config.ports.cloud);\n if (ensureLocalRunning) {\n await assertLocalBackendRunning(ctx, {\n url,\n deploymentName: deploymentSelection.deploymentName,\n });\n }\n return {\n adminKey: config.adminKey,\n url,\n deploymentFields: {\n deploymentName: deploymentSelection.deploymentName,\n deploymentType: \"anonymous\",\n projectSlug: null,\n teamSlug: null,\n },\n };\n }\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Unknown deployment type\",\n });\n }\n }\n}\n\nexport async function fetchTeamAndProject(\n ctx: Context,\n deploymentName: string,\n) {\n const data = (await bigBrainAPI({\n ctx,\n method: \"GET\",\n path: `deployment/${deploymentName}/team_and_project`,\n })) as {\n team: string; // slug\n project: string; // slug\n teamId: number;\n projectId: number;\n };\n\n const { team, project } = data;\n if (team === undefined || project === undefined) {\n const msg =\n \"Unknown error when fetching team and project: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n\n return data;\n}\n\nexport async function fetchTeamAndProjectForKey(\n ctx: Context,\n // Deployment deploy key, like `prod:happy-animal-123|<stuff>`\n deployKey: string,\n) {\n const data = (await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: `deployment/team_and_project_for_key`,\n data: {\n deployKey: deployKey,\n },\n })) as {\n team: string; // slug\n project: string; // slug\n teamId: number;\n projectId: number;\n };\n\n const { team, project } = data;\n if (team === undefined || project === undefined) {\n const msg =\n \"Unknown error when fetching team and project: \" + JSON.stringify(data);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"transient\",\n errForSentry: new Error(msg),\n printedMessage: msg,\n });\n }\n\n return data;\n}\n\nexport async function getTeamsForUser(ctx: Context) {\n const teams = await bigBrainAPI<{ id: number; name: string; slug: string }[]>(\n {\n ctx,\n method: \"GET\",\n path: \"teams\",\n },\n );\n return teams;\n}\n\nasync function resolveDefaultCloudDevDeploymentName(\n ctx: Context,\n teamSlug: string,\n projectSlug: string,\n): Promise<string> {\n try {\n const result = await typedPlatformClient(ctx, { throw: true }).GET(\n \"/teams/{team_id_or_slug}/projects/{project_slug}/deployment\",\n {\n params: {\n path: { team_id_or_slug: teamSlug, project_slug: projectSlug },\n query: { defaultDev: true },\n },\n },\n );\n return result.data!.name;\n } catch (err) {\n if (\n err instanceof ThrowingFetchError &&\n err.serverErrorData?.code === \"DeploymentNotFound\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `You don\u2019t have a personal cloud dev deployment in this project. Run ${chalkStderr.bold(\"npx convex deployment create --type dev --default\")} to create one.`,\n errForSentry: err,\n });\n }\n return await logAndHandleFetchError(ctx, err);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -60,9 +60,8 @@ import_extra_typings.Command.prototype.addDeploymentSelectionOptions = function(
60
60
  ).addOption(
61
61
  new import_extra_typings.Option(
62
62
  "--deployment <deployment>",
63
- action + " the specified deployment. Accepts a deployment name (e.g. joyful-capybara-123), ref (e.g. dev/james), 'dev' (for your personal dev deployment), 'prod' (for your project\u2019s default production deployment). You can also select deployments in other projects with 'project-slug:ref' or 'team-slug:project-slug:ref'."
64
- ).conflicts(["--prod", "--preview-name", "--deployment-name", "--url"]).hideHelp()
65
- // TODO(nicolas) Make this public
63
+ action + " a specific deployment. Accepts:\n\u2022 a deployment name (e.g. joyful-capybara-123)\n\u2022 a deployment ref (e.g. dev/james)\n\u2022 `dev` (for your personal dev deployment)\n\u2022 `prod` (for your project\u2019s default production deployment)\n\u2022 `local` (for your local dev deployment).\nYou can also select deployments in other projects with `project-slug:ref` or `team-slug:project-slug:ref`."
64
+ ).conflicts(["--prod", "--preview-name", "--deployment-name", "--url"])
66
65
  ).addOption(
67
66
  new import_extra_typings.Option(
68
67
  "--env-file <envFile>",
@@ -106,9 +105,9 @@ async function normalizeDevOptions(ctx, cmdOptions) {
106
105
  kind: "function",
107
106
  name: cmdOptions.run,
108
107
  component: cmdOptions.runComponent
109
- } : cmdOptions.runSh !== void 0 ? {
108
+ } : (cmdOptions.start ?? cmdOptions.runSh) !== void 0 ? {
110
109
  kind: "shell",
111
- command: cmdOptions.runSh
110
+ command: cmdOptions.start ?? cmdOptions.runSh
112
111
  } : void 0,
113
112
  tailLogs: typeof cmdOptions.tailLogs === "string" ? cmdOptions.tailLogs : "pause-on-deploy",
114
113
  traceEvents: cmdOptions.traceEvents,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/lib/command.ts"],
4
- "sourcesContent": ["import { Command, Option, OptionValues } from \"@commander-js/extra-typings\";\nimport { OneoffCtx } from \"../../bundler/context.js\";\nimport { LogMode } from \"./logs.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n parseInteger,\n parsePositiveInteger,\n} from \"./utils/utils.js\";\n\ndeclare module \"@commander-js/extra-typings\" {\n interface Command<Args extends any[] = [], Opts extends OptionValues = {}> {\n /**\n * For a command that talks to the configured dev deployment by default,\n * add flags for talking to prod, preview, or other deployment in the same\n * project.\n *\n * These flags are added to the end of `command` (ordering matters for `--help`\n * output). `action` should look like \"Import data into\" because it is prefixed\n * onto help strings.\n *\n * The options can be passed to `deploymentSelectionFromOptions`.\n *\n * NOTE: This method only exists at runtime if this file is imported.\n * To help avoid this bug, this method takes in an `ActionDescription` which\n * can only be constructed via `actionDescription` from this file.\n *\n * @param action - The action description\n * @param options - Optional settings\n * @param options.showUrlHelp - If true, show the --url option in help output\n */\n addDeploymentSelectionOptions(\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n ): Command<\n Args,\n Opts & {\n envFile?: string;\n url?: string;\n adminKey?: string;\n prod?: boolean;\n previewName?: string;\n deploymentName?: string;\n deployment?: string;\n }\n >;\n\n /**\n * Adds options for the `deploy` command.\n */\n addDeployOptions(): Command<\n Args,\n Opts & {\n verbose?: boolean;\n dryRun?: boolean;\n yes?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string;\n cmdUrlEnvVarName?: string;\n debugBundlePath?: string;\n debug?: boolean;\n writePushRequest?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for `self-host` subcommands.\n */\n addSelfHostOptions(): Command<\n Args,\n Opts & {\n url?: string;\n adminKey?: string;\n env?: string;\n }\n >;\n\n /**\n * Adds options and arguments for the `run` command.\n */\n addRunOptions(): Command<\n [...Args, string, string | undefined],\n Opts & {\n watch?: boolean;\n push?: boolean;\n identity?: string;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n component?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for the `import` command.\n */\n addImportOptions(): Command<\n [...Args, string],\n Opts & {\n table?: string;\n format?: \"csv\" | \"jsonLines\" | \"jsonArray\" | \"zip\";\n replace?: boolean;\n append?: boolean;\n replaceAll?: boolean;\n yes?: boolean;\n component?: string;\n }\n >;\n\n /**\n * Adds options for the `export` command.\n */\n addExportOptions(): Command<\n Args,\n Opts & {\n path: string;\n includeFileStorage?: boolean;\n }\n >;\n\n /**\n * Adds options for the `data` command.\n */\n addDataOptions(): Command<\n [...Args, string | undefined],\n Opts & {\n limit: number;\n order: \"asc\" | \"desc\";\n component?: string;\n format?: \"json\" | \"jsonArray\" | \"jsonLines\" | \"jsonl\" | \"pretty\";\n }\n >;\n\n /**\n * Adds options for the `logs` command.\n */\n addLogsOptions(): Command<\n Args,\n Opts & {\n history: number;\n success: boolean;\n jsonl: boolean;\n }\n >;\n\n /**\n * Adds options for the `network-test` command.\n */\n addNetworkTestOptions(): Command<\n Args,\n Opts & {\n timeout?: string;\n ipFamily?: string;\n speedTest?: boolean;\n }\n >;\n }\n}\n\nCommand.prototype.addDeploymentSelectionOptions = function (\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n) {\n const urlOption = new Option(\n \"--url <url>\",\n options?.showUrlHelp\n ? action + \" the deployment at the given URL.\"\n : undefined,\n ).conflicts([\n \"--prod\",\n \"--preview-name\",\n \"--deployment-name\",\n \"--deployment\",\n ]);\n if (!options?.showUrlHelp) {\n urlOption.hideHelp();\n }\n return this.addOption(urlOption)\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(\n new Option(\n \"--prod\",\n action + \" this project's default production deployment.\",\n ).conflicts([\n \"--preview-name\",\n \"--deployment-name\",\n \"--url\",\n \"--deployment\",\n ]),\n )\n .addOption(\n new Option(\n \"--preview-name <previewName>\",\n action + \" the preview deployment with the given name.\",\n )\n .conflicts([\"--prod\", \"--deployment-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment-name <deploymentName>\",\n action + \" the specified deployment.\",\n )\n .conflicts([\"--prod\", \"--preview-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment <deployment>\",\n action +\n \" the specified deployment. Accepts a deployment name (e.g. joyful-capybara-123), ref (e.g. dev/james), 'dev' (for your personal dev deployment), 'prod' (for your project\u2019s default production deployment). You can also select deployments in other projects with 'project-slug:ref' or 'team-slug:project-slug:ref'.\",\n )\n .conflicts([\"--prod\", \"--preview-name\", \"--deployment-name\", \"--url\"])\n .hideHelp(), // TODO(nicolas) Make this public\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ).hideHelp(),\n ) as any;\n};\n\ndeclare const tag: unique symbol;\ntype ActionDescription = string & { readonly [tag]: \"noop\" };\nexport function actionDescription(action: string): ActionDescription {\n return action as any;\n}\n\nexport async function normalizeDevOptions(\n ctx: OneoffCtx,\n cmdOptions: {\n verbose?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents?: boolean;\n codegen: \"enable\" | \"disable\";\n once?: boolean;\n untilSuccess: boolean;\n run?: string | undefined;\n runSh?: string;\n runComponent?: string;\n tailLogs?: string | true;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis?: boolean;\n liveComponentSources?: boolean;\n pushAllModules?: boolean;\n while?: string;\n },\n): Promise<{\n verbose: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: boolean;\n once: boolean;\n untilSuccess: boolean;\n run?:\n | { kind: \"function\"; name: string; component?: string | undefined }\n | { kind: \"shell\"; command: string }\n | undefined;\n tailLogs: LogMode;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis: boolean;\n liveComponentSources: boolean;\n pushAllModules: boolean;\n}> {\n if (cmdOptions.runComponent && !cmdOptions.run) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Can't specify `--run-component` option without `--run`\",\n });\n }\n\n if (cmdOptions.debugBundlePath !== undefined && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-bundle-path` can only be used with `--once`.\",\n });\n }\n if (cmdOptions.debugNodeApis && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-node-apis` can only be used with `--once`.\",\n });\n }\n\n return {\n verbose: !!cmdOptions.verbose,\n typecheck: cmdOptions.typecheck,\n typecheckComponents: !!cmdOptions.typecheckComponents,\n codegen: cmdOptions.codegen === \"enable\",\n once: !!cmdOptions.once,\n untilSuccess: cmdOptions.untilSuccess,\n run:\n cmdOptions.run !== undefined\n ? {\n kind: \"function\",\n name: cmdOptions.run,\n component: cmdOptions.runComponent,\n }\n : cmdOptions.runSh !== undefined\n ? {\n kind: \"shell\",\n command: cmdOptions.runSh,\n }\n : undefined,\n tailLogs:\n typeof cmdOptions.tailLogs === \"string\"\n ? (cmdOptions.tailLogs as LogMode)\n : \"pause-on-deploy\",\n traceEvents: cmdOptions.traceEvents,\n debugBundlePath: cmdOptions.debugBundlePath,\n debugNodeApis: !!cmdOptions.debugNodeApis,\n liveComponentSources: !!cmdOptions.liveComponentSources,\n pushAllModules: !!cmdOptions.pushAllModules,\n };\n}\n\nCommand.prototype.addDeployOptions = function () {\n return this.option(\"-v, --verbose\", \"Show full listing of changes\")\n .option(\n \"--dry-run\",\n \"Print out the generated configuration without deploying to your Convex deployment\",\n )\n .addOption(\n new Option(\n \"-y, --yes\",\n \"Skip confirmation prompt when running interactively. Warning: this deploys to PRODUCTION. To deploy to your current dev environment, run npx convex dev --once\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\` before deploying.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Whether to regenerate code in `convex/_generated/` before pushing.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--cmd <command>\",\n \"Command to run as part of deploying your app (e.g. `vite build`). This command can depend on the environment variables specified in `--cmd-url-env-var-name` being set.\",\n ),\n )\n .addOption(\n new Option(\n \"--cmd-url-env-var-name <name>\",\n \"Environment variable name to set Convex deployment URL (e.g. `VITE_CONVEX_URL`) when using `--cmd`\",\n ),\n )\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug\").hideHelp())\n .addOption(new Option(\"--write-push-request <writePushRequest>\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n );\n};\n\nCommand.prototype.addSelfHostOptions = function () {\n return this.option(\n \"--admin-key <adminKey>\",\n `An admin key for the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--url <url>\",\n `The url of the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--env <env>\",\n `Path to a custom file of environment variables, containing \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` and \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\`.`,\n );\n};\n\nCommand.prototype.addRunOptions = function () {\n return (\n this.argument(\n \"functionName\",\n \"identifier of the function to run, like `listMessages` or `dir/file:myFunction`\",\n )\n .argument(\n \"[args]\",\n \"JSON-formatted arguments object to pass to the function.\",\n )\n .option(\n \"-w, --watch\",\n \"Watch a query, printing its result if the underlying data changes. Given function must be a query.\",\n )\n .option(\"--push\", \"Push code to deployment before running the function.\")\n .addOption(\n new Option(\n \"--identity <identity>\",\n 'JSON-formatted UserIdentity object, e.g. \\'{ name: \"John\", address: \"0x123\" }\\'',\n ),\n )\n // For backwards compatibility we still support --no-push which is a noop\n .addOption(new Option(\"--no-push\").hideHelp())\n // Options for the deploy that --push does\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Regenerate code in `convex/_generated/`\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n );\n};\n\nCommand.prototype.addImportOptions = function () {\n return this.argument(\"<path>\", \"Path to the input file\")\n .addOption(\n new Option(\n \"--table <table>\",\n \"Destination table name. Required if format is csv, jsonLines, or jsonArray. Not supported if format is zip.\",\n ),\n )\n .addOption(\n new Option(\n \"--replace\",\n \"Replace all existing data in any of the imported tables\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace-all\"),\n )\n .addOption(\n new Option(\"--append\", \"Append imported data to any existing tables\")\n .conflicts(\"--replace-all\")\n .conflicts(\"--replace\"),\n )\n .addOption(\n new Option(\n \"--replace-all\",\n \"Replace all existing data in the deployment with the imported tables,\\n\" +\n \" deleting tables that don't appear in the import file or the schema,\\n\" +\n \" and clearing tables that appear in the schema but not in the import file\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace\"),\n )\n .option(\n \"-y, --yes\",\n \"Skip confirmation prompt when import leads to deleting existing documents\",\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Input file format. This flag is only required if the filename is missing an extension.\\n\" +\n \"- CSV files must have a header, and each row's entries are interpreted either as a (floating point) number or a string.\\n\" +\n \"- JSON files must be an array of JSON objects.\\n\" +\n \"- JSONLines files must have a JSON object per line.\\n\" +\n \"- ZIP files must have one directory per table, containing <table>/documents.jsonl. Snapshot exports from the Convex dashboard have this format.\",\n ).choices([\"csv\", \"jsonLines\", \"jsonArray\", \"zip\"]),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n );\n};\n\nCommand.prototype.addExportOptions = function () {\n return this.requiredOption(\n \"--path <zipFilePath>\",\n \"Exports data into a ZIP file at this path, which may be a directory or unoccupied .zip path\",\n ).addOption(\n new Option(\n \"--include-file-storage\",\n \"Includes stored files (https://dashboard.convex.dev/deployment/files) in a _storage folder within the ZIP file\",\n ),\n );\n};\n\nCommand.prototype.addDataOptions = function () {\n return this.addOption(\n new Option(\n \"--limit <n>\",\n \"List only the `n` the most recently created documents.\",\n )\n .default(100)\n .argParser(parsePositiveInteger),\n )\n .addOption(\n new Option(\n \"--order <choice>\",\n \"Order the documents by their `_creationTime`.\",\n )\n .choices([\"asc\", \"desc\"])\n .default(\"desc\"),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Format to print the data in. This flag is only required if the filename is missing an extension.\\n\" +\n \"- jsonArray (aka json): print the data as a JSON array of objects.\\n\" +\n \"- jsonLines (aka jsonl): print the data as a JSON object per line.\\n\" +\n \"- pretty: print the data in a human-readable format.\",\n ).choices([\"jsonArray\", \"json\", \"jsonLines\", \"jsonl\", \"pretty\"]),\n )\n .argument(\"[table]\", \"If specified, list documents in this table.\");\n};\n\nCommand.prototype.addLogsOptions = function () {\n return this.option(\n \"--history [n]\",\n \"Show `n` most recent logs. Defaults to showing all available logs.\",\n parseInteger,\n )\n .option(\n \"--success\",\n \"Print a log line for every successful function execution\",\n false,\n )\n .option(\"--jsonl\", \"Output raw log events as JSONL\", false);\n};\n\nCommand.prototype.addNetworkTestOptions = function () {\n return this.addOption(\n new Option(\n \"--timeout <timeout>\",\n \"Timeout in seconds for the network test (default: 30).\",\n ),\n )\n .addOption(\n new Option(\n \"--ip-family <ipFamily>\",\n \"IP family to use (ipv4, ipv6, or auto)\",\n ),\n )\n .addOption(\n new Option(\n \"--speed-test\",\n \"Perform a large echo test to measure network speed.\",\n ),\n );\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Command, Option, OptionValues } from \"@commander-js/extra-typings\";\nimport { OneoffCtx } from \"../../bundler/context.js\";\nimport { LogMode } from \"./logs.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n parseInteger,\n parsePositiveInteger,\n} from \"./utils/utils.js\";\n\ndeclare module \"@commander-js/extra-typings\" {\n interface Command<Args extends any[] = [], Opts extends OptionValues = {}> {\n /**\n * For a command that talks to the configured dev deployment by default,\n * add flags for talking to prod, preview, or other deployment in the same\n * project.\n *\n * These flags are added to the end of `command` (ordering matters for `--help`\n * output). `action` should look like \"Import data into\" because it is prefixed\n * onto help strings.\n *\n * The options can be passed to `deploymentSelectionFromOptions`.\n *\n * NOTE: This method only exists at runtime if this file is imported.\n * To help avoid this bug, this method takes in an `ActionDescription` which\n * can only be constructed via `actionDescription` from this file.\n *\n * @param action - The action description\n * @param options - Optional settings\n * @param options.showUrlHelp - If true, show the --url option in help output\n */\n addDeploymentSelectionOptions(\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n ): Command<\n Args,\n Opts & {\n envFile?: string;\n url?: string;\n adminKey?: string;\n prod?: boolean;\n previewName?: string;\n deploymentName?: string;\n deployment?: string;\n }\n >;\n\n /**\n * Adds options for the `deploy` command.\n */\n addDeployOptions(): Command<\n Args,\n Opts & {\n verbose?: boolean;\n dryRun?: boolean;\n yes?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string;\n cmdUrlEnvVarName?: string;\n debugBundlePath?: string;\n debug?: boolean;\n writePushRequest?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for `self-host` subcommands.\n */\n addSelfHostOptions(): Command<\n Args,\n Opts & {\n url?: string;\n adminKey?: string;\n env?: string;\n }\n >;\n\n /**\n * Adds options and arguments for the `run` command.\n */\n addRunOptions(): Command<\n [...Args, string, string | undefined],\n Opts & {\n watch?: boolean;\n push?: boolean;\n identity?: string;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n component?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for the `import` command.\n */\n addImportOptions(): Command<\n [...Args, string],\n Opts & {\n table?: string;\n format?: \"csv\" | \"jsonLines\" | \"jsonArray\" | \"zip\";\n replace?: boolean;\n append?: boolean;\n replaceAll?: boolean;\n yes?: boolean;\n component?: string;\n }\n >;\n\n /**\n * Adds options for the `export` command.\n */\n addExportOptions(): Command<\n Args,\n Opts & {\n path: string;\n includeFileStorage?: boolean;\n }\n >;\n\n /**\n * Adds options for the `data` command.\n */\n addDataOptions(): Command<\n [...Args, string | undefined],\n Opts & {\n limit: number;\n order: \"asc\" | \"desc\";\n component?: string;\n format?: \"json\" | \"jsonArray\" | \"jsonLines\" | \"jsonl\" | \"pretty\";\n }\n >;\n\n /**\n * Adds options for the `logs` command.\n */\n addLogsOptions(): Command<\n Args,\n Opts & {\n history: number;\n success: boolean;\n jsonl: boolean;\n }\n >;\n\n /**\n * Adds options for the `network-test` command.\n */\n addNetworkTestOptions(): Command<\n Args,\n Opts & {\n timeout?: string;\n ipFamily?: string;\n speedTest?: boolean;\n }\n >;\n }\n}\n\nCommand.prototype.addDeploymentSelectionOptions = function (\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n) {\n const urlOption = new Option(\n \"--url <url>\",\n options?.showUrlHelp\n ? action + \" the deployment at the given URL.\"\n : undefined,\n ).conflicts([\n \"--prod\",\n \"--preview-name\",\n \"--deployment-name\",\n \"--deployment\",\n ]);\n if (!options?.showUrlHelp) {\n urlOption.hideHelp();\n }\n return this.addOption(urlOption)\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(\n new Option(\n \"--prod\",\n action + \" this project's default production deployment.\",\n ).conflicts([\n \"--preview-name\",\n \"--deployment-name\",\n \"--url\",\n \"--deployment\",\n ]),\n )\n .addOption(\n new Option(\n \"--preview-name <previewName>\",\n action + \" the preview deployment with the given name.\",\n )\n .conflicts([\"--prod\", \"--deployment-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment-name <deploymentName>\",\n action + \" the specified deployment.\",\n )\n .conflicts([\"--prod\", \"--preview-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment <deployment>\",\n action +\n \" a specific deployment. Accepts:\\n\" +\n \"\u2022 a deployment name (e.g. joyful-capybara-123)\\n\" +\n \"\u2022 a deployment ref (e.g. dev/james)\\n\" +\n \"\u2022 `dev` (for your personal dev deployment)\\n\" +\n \"\u2022 `prod` (for your project\u2019s default production deployment)\\n\" +\n \"\u2022 `local` (for your local dev deployment).\" +\n \"\\nYou can also select deployments in other projects with `project-slug:ref` or `team-slug:project-slug:ref`.\",\n ).conflicts([\"--prod\", \"--preview-name\", \"--deployment-name\", \"--url\"]),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ).hideHelp(),\n ) as any;\n};\n\ndeclare const tag: unique symbol;\ntype ActionDescription = string & { readonly [tag]: \"noop\" };\nexport function actionDescription(action: string): ActionDescription {\n return action as any;\n}\n\nexport async function normalizeDevOptions(\n ctx: OneoffCtx,\n cmdOptions: {\n verbose?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents?: boolean;\n codegen: \"enable\" | \"disable\";\n once?: boolean;\n untilSuccess: boolean;\n start?: string;\n runSh?: string;\n run?: string | undefined;\n runComponent?: string;\n tailLogs?: string | true;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis?: boolean;\n liveComponentSources?: boolean;\n pushAllModules?: boolean;\n while?: string;\n },\n): Promise<{\n verbose: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: boolean;\n once: boolean;\n untilSuccess: boolean;\n run?:\n | { kind: \"function\"; name: string; component?: string | undefined }\n | { kind: \"shell\"; command: string }\n | undefined;\n tailLogs: LogMode;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis: boolean;\n liveComponentSources: boolean;\n pushAllModules: boolean;\n}> {\n if (cmdOptions.runComponent && !cmdOptions.run) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Can't specify `--run-component` option without `--run`\",\n });\n }\n\n if (cmdOptions.debugBundlePath !== undefined && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-bundle-path` can only be used with `--once`.\",\n });\n }\n if (cmdOptions.debugNodeApis && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-node-apis` can only be used with `--once`.\",\n });\n }\n\n return {\n verbose: !!cmdOptions.verbose,\n typecheck: cmdOptions.typecheck,\n typecheckComponents: !!cmdOptions.typecheckComponents,\n codegen: cmdOptions.codegen === \"enable\",\n once: !!cmdOptions.once,\n untilSuccess: cmdOptions.untilSuccess,\n run:\n cmdOptions.run !== undefined\n ? {\n kind: \"function\",\n name: cmdOptions.run,\n component: cmdOptions.runComponent,\n }\n : (cmdOptions.start ?? cmdOptions.runSh) !== undefined\n ? {\n kind: \"shell\",\n command: (cmdOptions.start ?? cmdOptions.runSh)!,\n }\n : undefined,\n tailLogs:\n typeof cmdOptions.tailLogs === \"string\"\n ? (cmdOptions.tailLogs as LogMode)\n : \"pause-on-deploy\",\n traceEvents: cmdOptions.traceEvents,\n debugBundlePath: cmdOptions.debugBundlePath,\n debugNodeApis: !!cmdOptions.debugNodeApis,\n liveComponentSources: !!cmdOptions.liveComponentSources,\n pushAllModules: !!cmdOptions.pushAllModules,\n };\n}\n\nCommand.prototype.addDeployOptions = function () {\n return this.option(\"-v, --verbose\", \"Show full listing of changes\")\n .option(\n \"--dry-run\",\n \"Print out the generated configuration without deploying to your Convex deployment\",\n )\n .addOption(\n new Option(\n \"-y, --yes\",\n \"Skip confirmation prompt when running interactively. Warning: this deploys to PRODUCTION. To deploy to your current dev environment, run npx convex dev --once\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\` before deploying.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Whether to regenerate code in `convex/_generated/` before pushing.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--cmd <command>\",\n \"Command to run as part of deploying your app (e.g. `vite build`). This command can depend on the environment variables specified in `--cmd-url-env-var-name` being set.\",\n ),\n )\n .addOption(\n new Option(\n \"--cmd-url-env-var-name <name>\",\n \"Environment variable name to set Convex deployment URL (e.g. `VITE_CONVEX_URL`) when using `--cmd`\",\n ),\n )\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug\").hideHelp())\n .addOption(new Option(\"--write-push-request <writePushRequest>\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n );\n};\n\nCommand.prototype.addSelfHostOptions = function () {\n return this.option(\n \"--admin-key <adminKey>\",\n `An admin key for the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--url <url>\",\n `The url of the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--env <env>\",\n `Path to a custom file of environment variables, containing \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` and \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\`.`,\n );\n};\n\nCommand.prototype.addRunOptions = function () {\n return (\n this.argument(\n \"functionName\",\n \"identifier of the function to run, like `listMessages` or `dir/file:myFunction`\",\n )\n .argument(\n \"[args]\",\n \"JSON-formatted arguments object to pass to the function.\",\n )\n .option(\n \"-w, --watch\",\n \"Watch a query, printing its result if the underlying data changes. Given function must be a query.\",\n )\n .option(\"--push\", \"Push code to deployment before running the function.\")\n .addOption(\n new Option(\n \"--identity <identity>\",\n 'JSON-formatted UserIdentity object, e.g. \\'{ name: \"John\", address: \"0x123\" }\\'',\n ),\n )\n // For backwards compatibility we still support --no-push which is a noop\n .addOption(new Option(\"--no-push\").hideHelp())\n // Options for the deploy that --push does\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Regenerate code in `convex/_generated/`\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n );\n};\n\nCommand.prototype.addImportOptions = function () {\n return this.argument(\"<path>\", \"Path to the input file\")\n .addOption(\n new Option(\n \"--table <table>\",\n \"Destination table name. Required if format is csv, jsonLines, or jsonArray. Not supported if format is zip.\",\n ),\n )\n .addOption(\n new Option(\n \"--replace\",\n \"Replace all existing data in any of the imported tables\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace-all\"),\n )\n .addOption(\n new Option(\"--append\", \"Append imported data to any existing tables\")\n .conflicts(\"--replace-all\")\n .conflicts(\"--replace\"),\n )\n .addOption(\n new Option(\n \"--replace-all\",\n \"Replace all existing data in the deployment with the imported tables,\\n\" +\n \" deleting tables that don't appear in the import file or the schema,\\n\" +\n \" and clearing tables that appear in the schema but not in the import file\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace\"),\n )\n .option(\n \"-y, --yes\",\n \"Skip confirmation prompt when import leads to deleting existing documents\",\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Input file format. This flag is only required if the filename is missing an extension.\\n\" +\n \"- CSV files must have a header, and each row's entries are interpreted either as a (floating point) number or a string.\\n\" +\n \"- JSON files must be an array of JSON objects.\\n\" +\n \"- JSONLines files must have a JSON object per line.\\n\" +\n \"- ZIP files must have one directory per table, containing <table>/documents.jsonl. Snapshot exports from the Convex dashboard have this format.\",\n ).choices([\"csv\", \"jsonLines\", \"jsonArray\", \"zip\"]),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n );\n};\n\nCommand.prototype.addExportOptions = function () {\n return this.requiredOption(\n \"--path <zipFilePath>\",\n \"Exports data into a ZIP file at this path, which may be a directory or unoccupied .zip path\",\n ).addOption(\n new Option(\n \"--include-file-storage\",\n \"Includes stored files (https://dashboard.convex.dev/deployment/files) in a _storage folder within the ZIP file\",\n ),\n );\n};\n\nCommand.prototype.addDataOptions = function () {\n return this.addOption(\n new Option(\n \"--limit <n>\",\n \"List only the `n` the most recently created documents.\",\n )\n .default(100)\n .argParser(parsePositiveInteger),\n )\n .addOption(\n new Option(\n \"--order <choice>\",\n \"Order the documents by their `_creationTime`.\",\n )\n .choices([\"asc\", \"desc\"])\n .default(\"desc\"),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Format to print the data in. This flag is only required if the filename is missing an extension.\\n\" +\n \"- jsonArray (aka json): print the data as a JSON array of objects.\\n\" +\n \"- jsonLines (aka jsonl): print the data as a JSON object per line.\\n\" +\n \"- pretty: print the data in a human-readable format.\",\n ).choices([\"jsonArray\", \"json\", \"jsonLines\", \"jsonl\", \"pretty\"]),\n )\n .argument(\"[table]\", \"If specified, list documents in this table.\");\n};\n\nCommand.prototype.addLogsOptions = function () {\n return this.option(\n \"--history [n]\",\n \"Show `n` most recent logs. Defaults to showing all available logs.\",\n parseInteger,\n )\n .option(\n \"--success\",\n \"Print a log line for every successful function execution\",\n false,\n )\n .option(\"--jsonl\", \"Output raw log events as JSONL\", false);\n};\n\nCommand.prototype.addNetworkTestOptions = function () {\n return this.addOption(\n new Option(\n \"--timeout <timeout>\",\n \"Timeout in seconds for the network test (default: 30).\",\n ),\n )\n .addOption(\n new Option(\n \"--ip-family <ipFamily>\",\n \"IP family to use (ipv4, ipv6, or auto)\",\n ),\n )\n .addOption(\n new Option(\n \"--speed-test\",\n \"Perform a large echo test to measure network speed.\",\n ),\n );\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -33,6 +33,7 @@ __export(config_exports, {
33
33
  configName: () => configName,
34
34
  debugIsolateEndpointBundles: () => debugIsolateEndpointBundles,
35
35
  diffConfig: () => diffConfig,
36
+ ensureConvexFunctionsDir: () => ensureConvexFunctionsDir,
36
37
  getAuthKitConfig: () => getAuthKitConfig,
37
38
  getAuthKitEnvironmentConfig: () => getAuthKitEnvironmentConfig,
38
39
  getFunctionsDirectoryPath: () => getFunctionsDirectoryPath,
@@ -47,11 +48,12 @@ __export(config_exports, {
47
48
  resetUnknownKeyWarnings: () => resetUnknownKeyWarnings,
48
49
  usesComponentApiImports: () => usesComponentApiImports,
49
50
  usesTypeScriptCodegen: () => usesTypeScriptCodegen,
50
- writeProjectConfig: () => writeProjectConfig
51
+ writeAiFilesConfig: () => writeAiFilesConfig
51
52
  });
52
53
  module.exports = __toCommonJS(config_exports);
53
54
  var import_chalk = require("chalk");
54
55
  var import_path = __toESM(require("path"), 1);
56
+ var import_fs = require("fs");
55
57
  var import_zod = require("zod");
56
58
  var import_log = require("../../bundler/log.js");
57
59
  var import_bundler = require("../../bundler/index.js");
@@ -67,7 +69,7 @@ function usesTypeScriptCodegen(projectConfig) {
67
69
  return projectConfig.codegen.fileType === "ts";
68
70
  }
69
71
  function usesComponentApiImports(projectConfig) {
70
- return projectConfig.codegen.legacyComponentApi === false;
72
+ return projectConfig.codegen.legacyComponentApi !== true;
71
73
  }
72
74
  async function getAuthKitConfig(ctx, projectConfig) {
73
75
  if ("authKit" in projectConfig) {
@@ -167,7 +169,10 @@ const BundlerSchema = import_zod.z.object({
167
169
  });
168
170
  const AiFilesSchema = import_zod.z.object({
169
171
  enabled: import_zod.z.boolean().optional(),
170
- disableStalenessMessage: import_zod.z.boolean().optional()
172
+ disableStalenessMessage: import_zod.z.boolean().optional(),
173
+ skills: import_zod.z.object({
174
+ agents: import_zod.z.array(import_zod.z.string()).optional()
175
+ }).optional()
171
176
  });
172
177
  const refineToObject = (schema) => schema.refine((val) => val !== null && !Array.isArray(val), {
173
178
  message: "Expected `convex.json` to contain an object"
@@ -491,7 +496,7 @@ async function readConfig(ctx, verbose) {
491
496
  );
492
497
  return { config, configPath, bundledModuleInfos };
493
498
  }
494
- async function writeProjectConfig(ctx, projectConfig) {
499
+ async function ensureConvexFunctionsDir(ctx, projectConfig) {
495
500
  const configPath = await configFilepath(ctx);
496
501
  ctx.fs.mkdir((0, import_utils.functionsDir)(configPath, projectConfig), {
497
502
  allowExisting: true
@@ -643,4 +648,36 @@ async function handlePushConfigError(ctx, error, defaultMessage, deploymentName,
643
648
  (0, import_log.logFailure)(defaultMessage);
644
649
  return await (0, import_utils.logAndHandleFetchError)(ctx, error);
645
650
  }
651
+ function tryParseJson(raw) {
652
+ try {
653
+ return JSON.parse(raw);
654
+ } catch {
655
+ return {};
656
+ }
657
+ }
658
+ function toRecord(val) {
659
+ if (val !== null && typeof val === "object" && !Array.isArray(val))
660
+ return val;
661
+ return {};
662
+ }
663
+ async function writeAiFilesConfig({
664
+ projectDir,
665
+ aiFiles
666
+ }) {
667
+ const filePath = import_path.default.join(projectDir, "convex.json");
668
+ const raw = await import_fs.promises.readFile(filePath, "utf8").catch(() => null);
669
+ const base = toRecord(raw !== null ? tryParseJson(raw) : {});
670
+ const { $schema, aiFiles: _existing, ...rest } = base;
671
+ const hasContent = aiFiles !== void 0 && Object.keys(aiFiles).length > 0;
672
+ const next = {
673
+ $schema: $schema ?? "node_modules/convex/schemas/convex.schema.json",
674
+ ...rest,
675
+ ...hasContent ? { aiFiles } : {}
676
+ };
677
+ await import_fs.promises.writeFile(
678
+ filePath,
679
+ JSON.stringify(next, null, 2) + "\n",
680
+ "utf8"
681
+ );
682
+ }
646
683
  //# sourceMappingURL=config.js.map