convex 1.34.1 → 1.35.1

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 (453) hide show
  1. package/CHANGELOG.md +86 -43
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +1 -1
  4. package/dist/cjs/cli/aiFiles.js +31 -13
  5. package/dist/cjs/cli/aiFiles.js.map +3 -3
  6. package/dist/cjs/cli/configure.js +21 -24
  7. package/dist/cjs/cli/configure.js.map +2 -2
  8. package/dist/cjs/cli/deploy.js +8 -9
  9. package/dist/cjs/cli/deploy.js.map +2 -2
  10. package/dist/cjs/cli/deploymentCreate.js +225 -40
  11. package/dist/cjs/cli/deploymentCreate.js.map +3 -3
  12. package/dist/cjs/cli/deploymentSelect.js +14 -13
  13. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  14. package/dist/cjs/cli/dev.js +30 -11
  15. package/dist/cjs/cli/dev.js.map +2 -2
  16. package/dist/cjs/cli/docs.js +1 -1
  17. package/dist/cjs/cli/docs.js.map +2 -2
  18. package/dist/cjs/cli/init.js +1 -1
  19. package/dist/cjs/cli/init.js.map +2 -2
  20. package/dist/cjs/cli/lib/aiFiles/agentsmd.js +14 -10
  21. package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +2 -2
  22. package/dist/cjs/cli/lib/aiFiles/claudemd.js +14 -10
  23. package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +2 -2
  24. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +10 -3
  25. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  26. package/dist/cjs/cli/lib/aiFiles/index.js +70 -86
  27. package/dist/cjs/cli/lib/aiFiles/index.js.map +3 -3
  28. package/dist/cjs/cli/lib/aiFiles/skills.js +28 -12
  29. package/dist/cjs/cli/lib/aiFiles/skills.js.map +2 -2
  30. package/dist/cjs/cli/lib/aiFiles/state.js +96 -0
  31. package/dist/cjs/cli/lib/aiFiles/state.js.map +7 -0
  32. package/dist/cjs/cli/lib/aiFiles/status.js +31 -28
  33. package/dist/cjs/cli/lib/aiFiles/status.js.map +2 -2
  34. package/dist/cjs/cli/lib/aiFiles/utils.js +31 -14
  35. package/dist/cjs/cli/lib/aiFiles/utils.js.map +2 -2
  36. package/dist/cjs/cli/lib/api.js +70 -7
  37. package/dist/cjs/cli/lib/api.js.map +2 -2
  38. package/dist/cjs/cli/lib/command.js +4 -5
  39. package/dist/cjs/cli/lib/command.js.map +2 -2
  40. package/dist/cjs/cli/lib/config.js +41 -4
  41. package/dist/cjs/cli/lib/config.js.map +3 -3
  42. package/dist/cjs/cli/lib/deploy2.js +9 -26
  43. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  44. package/dist/cjs/cli/lib/deployApi/componentDefinition.js +4 -1
  45. package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
  46. package/dist/cjs/cli/lib/deploymentSelection.js +45 -2
  47. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  48. package/dist/cjs/cli/lib/deploymentSelector.js +1 -0
  49. package/dist/cjs/cli/lib/deploymentSelector.js.map +2 -2
  50. package/dist/cjs/cli/lib/dev.js +162 -117
  51. package/dist/cjs/cli/lib/dev.js.map +2 -2
  52. package/dist/cjs/cli/lib/env.js +1 -13
  53. package/dist/cjs/cli/lib/env.js.map +2 -2
  54. package/dist/cjs/cli/lib/envvars.js +8 -1
  55. package/dist/cjs/cli/lib/envvars.js.map +2 -2
  56. package/dist/cjs/cli/lib/expiration.js +104 -0
  57. package/dist/cjs/cli/lib/expiration.js.map +7 -0
  58. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  59. package/dist/cjs/cli/lib/init.js +4 -3
  60. package/dist/cjs/cli/lib/init.js.map +2 -2
  61. package/dist/cjs/cli/lib/insights.js +1 -1
  62. package/dist/cjs/cli/lib/insights.js.map +2 -2
  63. package/dist/cjs/cli/lib/localDeployment/anonymous.js +14 -7
  64. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  65. package/dist/cjs/cli/lib/localDeployment/localDeployment.js +8 -10
  66. package/dist/cjs/cli/lib/localDeployment/localDeployment.js.map +2 -2
  67. package/dist/cjs/cli/lib/localDeployment/run.js +1 -0
  68. package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
  69. package/dist/cjs/cli/lib/localDeployment/upgrade.js +2 -2
  70. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
  71. package/dist/cjs/cli/lib/localDeployment/utils.js +9 -0
  72. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  73. package/dist/cjs/cli/lib/mcp/tools/status.js +1 -1
  74. package/dist/cjs/cli/lib/mcp/tools/status.js.map +2 -2
  75. package/dist/cjs/cli/lib/updates.js +8 -9
  76. package/dist/cjs/cli/lib/updates.js.map +2 -2
  77. package/dist/cjs/cli/lib/usage.js +2 -1
  78. package/dist/cjs/cli/lib/usage.js.map +2 -2
  79. package/dist/cjs/cli/lib/utils/prompts.js +2 -1
  80. package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
  81. package/dist/cjs/cli/lib/utils/utils.js +46 -20
  82. package/dist/cjs/cli/lib/utils/utils.js.map +3 -3
  83. package/dist/cjs/index.js +1 -1
  84. package/dist/cjs/index.js.map +1 -1
  85. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  86. package/dist/cjs/server/components/definition.js.map +1 -1
  87. package/dist/cjs/server/components/index.js +40 -4
  88. package/dist/cjs/server/components/index.js.map +2 -2
  89. package/dist/cjs/server/data_model.js.map +1 -1
  90. package/dist/cjs/server/impl/meta_impl.js +78 -0
  91. package/dist/cjs/server/impl/meta_impl.js.map +7 -0
  92. package/dist/cjs/server/impl/registration_impl.js +16 -11
  93. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  94. package/dist/cjs/server/index.js.map +2 -2
  95. package/dist/cjs/server/meta.js +17 -0
  96. package/dist/cjs/server/meta.js.map +7 -0
  97. package/dist/cjs/server/registration.js.map +1 -1
  98. package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
  99. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  100. package/dist/cjs-types/cli/configure.test.d.ts +2 -0
  101. package/dist/cjs-types/cli/configure.test.d.ts.map +1 -0
  102. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  103. package/dist/cjs-types/cli/deploymentCreate.d.ts +1 -0
  104. package/dist/cjs-types/cli/deploymentCreate.d.ts.map +1 -1
  105. package/dist/cjs-types/cli/deploymentSelect.d.ts +2 -1
  106. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  107. package/dist/cjs-types/cli/dev.d.ts +3 -1
  108. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  109. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  110. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  111. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  112. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  113. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  114. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  115. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +20 -18
  116. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  117. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +6 -4
  118. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  119. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts +38 -0
  120. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  121. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  122. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  123. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts +4 -1
  124. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +13 -3
  126. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  127. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  128. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  129. package/dist/cjs-types/cli/lib/api.d.ts +3 -3
  130. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  131. package/dist/cjs-types/cli/lib/command.d.ts +2 -1
  132. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  133. package/dist/cjs-types/cli/lib/config.d.ts +17 -6
  134. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  135. package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -2
  136. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  137. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  138. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  139. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +12 -12
  140. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +25 -16
  141. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  142. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  143. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts +2 -0
  144. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  145. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  146. package/dist/cjs-types/cli/lib/env.d.ts +0 -4
  147. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  148. package/dist/cjs-types/cli/lib/envvars.d.ts.map +1 -1
  149. package/dist/cjs-types/cli/lib/expiration.d.ts +35 -0
  150. package/dist/cjs-types/cli/lib/expiration.d.ts.map +1 -0
  151. package/dist/cjs-types/cli/lib/expiration.test.d.ts +2 -0
  152. package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +1 -0
  153. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  154. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  155. package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
  156. package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  157. package/dist/cjs-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  158. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +15 -0
  159. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  160. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  161. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +7 -0
  162. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  163. package/dist/cjs-types/cli/lib/mcp/requestContext.d.ts +3 -3
  164. package/dist/cjs-types/cli/lib/updates.d.ts +4 -3
  165. package/dist/cjs-types/cli/lib/updates.d.ts.map +1 -1
  166. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  167. package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
  168. package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
  169. package/dist/cjs-types/cli/lib/utils/utils.d.ts +16 -2
  170. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  171. package/dist/cjs-types/index.d.ts +1 -1
  172. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  173. package/dist/cjs-types/server/components/definition.d.ts +1 -0
  174. package/dist/cjs-types/server/components/definition.d.ts.map +1 -1
  175. package/dist/cjs-types/server/components/index.d.ts +5 -1
  176. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  177. package/dist/cjs-types/server/data_model.d.ts +2 -1
  178. package/dist/cjs-types/server/data_model.d.ts.map +1 -1
  179. package/dist/cjs-types/server/impl/meta_impl.d.ts +5 -0
  180. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -0
  181. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  182. package/dist/cjs-types/server/index.d.ts +1 -0
  183. package/dist/cjs-types/server/index.d.ts.map +1 -1
  184. package/dist/cjs-types/server/meta.d.ts +72 -0
  185. package/dist/cjs-types/server/meta.d.ts.map +1 -0
  186. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  187. package/dist/cli.bundle.cjs +1665 -1215
  188. package/dist/cli.bundle.cjs.map +4 -4
  189. package/dist/esm/cli/aiFiles.js +33 -15
  190. package/dist/esm/cli/aiFiles.js.map +2 -2
  191. package/dist/esm/cli/configure.js +23 -26
  192. package/dist/esm/cli/configure.js.map +2 -2
  193. package/dist/esm/cli/deploy.js +12 -11
  194. package/dist/esm/cli/deploy.js.map +2 -2
  195. package/dist/esm/cli/deploymentCreate.js +238 -42
  196. package/dist/esm/cli/deploymentCreate.js.map +2 -2
  197. package/dist/esm/cli/deploymentSelect.js +13 -12
  198. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  199. package/dist/esm/cli/dev.js +34 -13
  200. package/dist/esm/cli/dev.js.map +2 -2
  201. package/dist/esm/cli/docs.js +1 -1
  202. package/dist/esm/cli/docs.js.map +2 -2
  203. package/dist/esm/cli/init.js +2 -2
  204. package/dist/esm/cli/init.js.map +2 -2
  205. package/dist/esm/cli/lib/aiFiles/agentsmd.js +13 -9
  206. package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +2 -2
  207. package/dist/esm/cli/lib/aiFiles/claudemd.js +13 -9
  208. package/dist/esm/cli/lib/aiFiles/claudemd.js.map +2 -2
  209. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +12 -5
  210. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  211. package/dist/esm/cli/lib/aiFiles/index.js +72 -89
  212. package/dist/esm/cli/lib/aiFiles/index.js.map +2 -2
  213. package/dist/esm/cli/lib/aiFiles/skills.js +29 -13
  214. package/dist/esm/cli/lib/aiFiles/skills.js.map +2 -2
  215. package/dist/esm/cli/lib/aiFiles/state.js +60 -0
  216. package/dist/esm/cli/lib/aiFiles/state.js.map +7 -0
  217. package/dist/esm/cli/lib/aiFiles/status.js +32 -29
  218. package/dist/esm/cli/lib/aiFiles/status.js.map +2 -2
  219. package/dist/esm/cli/lib/aiFiles/utils.js +25 -10
  220. package/dist/esm/cli/lib/aiFiles/utils.js.map +2 -2
  221. package/dist/esm/cli/lib/api.js +70 -7
  222. package/dist/esm/cli/lib/api.js.map +2 -2
  223. package/dist/esm/cli/lib/command.js +4 -5
  224. package/dist/esm/cli/lib/command.js.map +2 -2
  225. package/dist/esm/cli/lib/config.js +39 -3
  226. package/dist/esm/cli/lib/config.js.map +2 -2
  227. package/dist/esm/cli/lib/deploy2.js +13 -26
  228. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  229. package/dist/esm/cli/lib/deployApi/componentDefinition.js +4 -1
  230. package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
  231. package/dist/esm/cli/lib/deploymentSelection.js +46 -2
  232. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  233. package/dist/esm/cli/lib/deploymentSelector.js +1 -0
  234. package/dist/esm/cli/lib/deploymentSelector.js.map +2 -2
  235. package/dist/esm/cli/lib/dev.js +162 -118
  236. package/dist/esm/cli/lib/dev.js.map +2 -2
  237. package/dist/esm/cli/lib/env.js +0 -11
  238. package/dist/esm/cli/lib/env.js.map +2 -2
  239. package/dist/esm/cli/lib/envvars.js +8 -1
  240. package/dist/esm/cli/lib/envvars.js.map +2 -2
  241. package/dist/esm/cli/lib/expiration.js +80 -0
  242. package/dist/esm/cli/lib/expiration.js.map +7 -0
  243. package/dist/esm/cli/lib/init.js +4 -3
  244. package/dist/esm/cli/lib/init.js.map +2 -2
  245. package/dist/esm/cli/lib/insights.js +1 -1
  246. package/dist/esm/cli/lib/insights.js.map +2 -2
  247. package/dist/esm/cli/lib/localDeployment/anonymous.js +16 -9
  248. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  249. package/dist/esm/cli/lib/localDeployment/localDeployment.js +9 -11
  250. package/dist/esm/cli/lib/localDeployment/localDeployment.js.map +2 -2
  251. package/dist/esm/cli/lib/localDeployment/run.js +1 -1
  252. package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
  253. package/dist/esm/cli/lib/localDeployment/upgrade.js +2 -2
  254. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  255. package/dist/esm/cli/lib/localDeployment/utils.js +8 -0
  256. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  257. package/dist/esm/cli/lib/mcp/tools/status.js +1 -1
  258. package/dist/esm/cli/lib/mcp/tools/status.js.map +2 -2
  259. package/dist/esm/cli/lib/updates.js +11 -9
  260. package/dist/esm/cli/lib/updates.js.map +2 -2
  261. package/dist/esm/cli/lib/usage.js +2 -1
  262. package/dist/esm/cli/lib/usage.js.map +2 -2
  263. package/dist/esm/cli/lib/utils/prompts.js +2 -1
  264. package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
  265. package/dist/esm/cli/lib/utils/utils.js +45 -20
  266. package/dist/esm/cli/lib/utils/utils.js.map +3 -3
  267. package/dist/esm/index.js +1 -1
  268. package/dist/esm/index.js.map +1 -1
  269. package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  270. package/dist/esm/server/components/index.js +40 -4
  271. package/dist/esm/server/components/index.js.map +2 -2
  272. package/dist/esm/server/impl/meta_impl.js +54 -0
  273. package/dist/esm/server/impl/meta_impl.js.map +7 -0
  274. package/dist/esm/server/impl/registration_impl.js +20 -11
  275. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  276. package/dist/esm/server/index.js.map +2 -2
  277. package/dist/esm/server/meta.js +2 -0
  278. package/dist/esm/server/meta.js.map +7 -0
  279. package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
  280. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  281. package/dist/esm-types/cli/configure.test.d.ts +2 -0
  282. package/dist/esm-types/cli/configure.test.d.ts.map +1 -0
  283. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  284. package/dist/esm-types/cli/deploymentCreate.d.ts +1 -0
  285. package/dist/esm-types/cli/deploymentCreate.d.ts.map +1 -1
  286. package/dist/esm-types/cli/deploymentSelect.d.ts +2 -1
  287. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  288. package/dist/esm-types/cli/dev.d.ts +3 -1
  289. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  290. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  291. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  292. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  293. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  294. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  295. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  296. package/dist/esm-types/cli/lib/aiFiles/index.d.ts +20 -18
  297. package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  298. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +6 -4
  299. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  300. package/dist/esm-types/cli/lib/aiFiles/state.d.ts +38 -0
  301. package/dist/esm-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  302. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  303. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  304. package/dist/esm-types/cli/lib/aiFiles/status.d.ts +4 -1
  305. package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  306. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +13 -3
  307. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  308. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  309. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  310. package/dist/esm-types/cli/lib/api.d.ts +3 -3
  311. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  312. package/dist/esm-types/cli/lib/command.d.ts +2 -1
  313. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  314. package/dist/esm-types/cli/lib/config.d.ts +17 -6
  315. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  316. package/dist/esm-types/cli/lib/deploy2.d.ts +5 -2
  317. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  318. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  319. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  320. package/dist/esm-types/cli/lib/deployApi/modules.d.ts +12 -12
  321. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +25 -16
  322. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  323. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  324. package/dist/esm-types/cli/lib/deploymentSelector.d.ts +2 -0
  325. package/dist/esm-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  326. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  327. package/dist/esm-types/cli/lib/env.d.ts +0 -4
  328. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  329. package/dist/esm-types/cli/lib/envvars.d.ts.map +1 -1
  330. package/dist/esm-types/cli/lib/expiration.d.ts +35 -0
  331. package/dist/esm-types/cli/lib/expiration.d.ts.map +1 -0
  332. package/dist/esm-types/cli/lib/expiration.test.d.ts +2 -0
  333. package/dist/esm-types/cli/lib/expiration.test.d.ts.map +1 -0
  334. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  335. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  336. package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
  337. package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  338. package/dist/esm-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  339. package/dist/esm-types/cli/lib/localDeployment/run.d.ts +15 -0
  340. package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  341. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  342. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +7 -0
  343. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  344. package/dist/esm-types/cli/lib/mcp/requestContext.d.ts +3 -3
  345. package/dist/esm-types/cli/lib/updates.d.ts +4 -3
  346. package/dist/esm-types/cli/lib/updates.d.ts.map +1 -1
  347. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  348. package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
  349. package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
  350. package/dist/esm-types/cli/lib/utils/utils.d.ts +16 -2
  351. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  352. package/dist/esm-types/index.d.ts +1 -1
  353. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  354. package/dist/esm-types/server/components/definition.d.ts +1 -0
  355. package/dist/esm-types/server/components/definition.d.ts.map +1 -1
  356. package/dist/esm-types/server/components/index.d.ts +5 -1
  357. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  358. package/dist/esm-types/server/data_model.d.ts +2 -1
  359. package/dist/esm-types/server/data_model.d.ts.map +1 -1
  360. package/dist/esm-types/server/impl/meta_impl.d.ts +5 -0
  361. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -0
  362. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  363. package/dist/esm-types/server/index.d.ts +1 -0
  364. package/dist/esm-types/server/index.d.ts.map +1 -1
  365. package/dist/esm-types/server/meta.d.ts +72 -0
  366. package/dist/esm-types/server/meta.d.ts.map +1 -0
  367. package/dist/esm-types/server/registration.d.ts.map +1 -1
  368. package/dist/react.bundle.js +1 -1
  369. package/dist/react.bundle.js.map +1 -1
  370. package/package.json +11 -7
  371. package/schemas/convex.schema.json +15 -2
  372. package/src/cli/aiFiles.ts +44 -14
  373. package/src/cli/configure.test.ts +138 -0
  374. package/src/cli/configure.ts +48 -47
  375. package/src/cli/deploy.ts +13 -10
  376. package/src/cli/deploymentCreate.test.ts +349 -14
  377. package/src/cli/deploymentCreate.ts +268 -41
  378. package/src/cli/deploymentSelect.test.ts +136 -27
  379. package/src/cli/deploymentSelect.ts +50 -41
  380. package/src/cli/deploymentSelection.test.ts +343 -35
  381. package/src/cli/dev.ts +49 -14
  382. package/src/cli/docs.ts +1 -1
  383. package/src/cli/init.ts +2 -2
  384. package/src/cli/lib/aiFiles/agentsmd.ts +15 -11
  385. package/src/cli/lib/aiFiles/claudemd.ts +15 -11
  386. package/src/cli/lib/aiFiles/guidelinesmd.test.ts +12 -2
  387. package/src/cli/lib/aiFiles/guidelinesmd.ts +15 -7
  388. package/src/cli/lib/aiFiles/index.test.ts +188 -222
  389. package/src/cli/lib/aiFiles/index.ts +119 -125
  390. package/src/cli/lib/aiFiles/integration.test.ts +112 -45
  391. package/src/cli/lib/aiFiles/prompt.test.ts +6 -6
  392. package/src/cli/lib/aiFiles/skills.ts +46 -16
  393. package/src/cli/lib/aiFiles/state.test.ts +280 -0
  394. package/src/cli/lib/aiFiles/state.ts +82 -0
  395. package/src/cli/lib/aiFiles/status.ts +45 -39
  396. package/src/cli/lib/aiFiles/utils.test.ts +50 -0
  397. package/src/cli/lib/aiFiles/utils.ts +38 -10
  398. package/src/cli/lib/api.ts +88 -7
  399. package/src/cli/lib/command.ts +12 -7
  400. package/src/cli/lib/config.test.ts +184 -7
  401. package/src/cli/lib/config.ts +67 -7
  402. package/src/cli/lib/deploy2.ts +14 -27
  403. package/src/cli/lib/deployApi/componentDefinition.ts +4 -1
  404. package/src/cli/lib/deploymentSelection.ts +59 -6
  405. package/src/cli/lib/deploymentSelector.test.ts +6 -0
  406. package/src/cli/lib/deploymentSelector.ts +2 -0
  407. package/src/cli/lib/dev.ts +202 -153
  408. package/src/cli/lib/env.ts +0 -15
  409. package/src/cli/lib/envvars.ts +16 -1
  410. package/src/cli/lib/expiration.test.ts +159 -0
  411. package/src/cli/lib/expiration.ts +124 -0
  412. package/src/cli/lib/generatedFunctionLogsApi.ts +16 -1
  413. package/src/cli/lib/init.ts +6 -2
  414. package/src/cli/lib/insights.ts +1 -1
  415. package/src/cli/lib/localDeployment/anonymous.ts +19 -9
  416. package/src/cli/lib/localDeployment/localDeployment.ts +9 -11
  417. package/src/cli/lib/localDeployment/run.ts +1 -1
  418. package/src/cli/lib/localDeployment/upgrade.ts +12 -10
  419. package/src/cli/lib/localDeployment/utils.ts +12 -0
  420. package/src/cli/lib/mcp/tools/status.ts +1 -1
  421. package/src/cli/lib/updates.test.ts +102 -75
  422. package/src/cli/lib/updates.ts +14 -12
  423. package/src/cli/lib/usage.ts +3 -1
  424. package/src/cli/lib/utils/prompts.ts +2 -0
  425. package/src/cli/lib/utils/utils.test.ts +6 -6
  426. package/src/cli/lib/utils/utils.ts +66 -27
  427. package/src/index.ts +1 -1
  428. package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
  429. package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
  430. package/src/server/components/definition.ts +3 -0
  431. package/src/server/components/index.ts +62 -5
  432. package/src/server/data_model.ts +2 -1
  433. package/src/server/impl/meta_impl.ts +74 -0
  434. package/src/server/impl/registration_impl.ts +21 -9
  435. package/src/server/index.ts +8 -0
  436. package/src/server/meta.ts +76 -0
  437. package/src/server/registration.ts +10 -0
  438. package/src/server/schema.test.ts +78 -1
  439. package/dist/cjs/cli/lib/aiFiles/config.js +0 -171
  440. package/dist/cjs/cli/lib/aiFiles/config.js.map +0 -7
  441. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts +0 -46
  442. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  443. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  444. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  445. package/dist/esm/cli/lib/aiFiles/config.js +0 -135
  446. package/dist/esm/cli/lib/aiFiles/config.js.map +0 -7
  447. package/dist/esm-types/cli/lib/aiFiles/config.d.ts +0 -46
  448. package/dist/esm-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  449. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  450. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  451. package/src/cli/lib/aiFiles/config.test.ts +0 -460
  452. package/src/cli/lib/aiFiles/config.ts +0 -188
  453. package/src/values/.claude/settings.local.json +0 -10
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "convex",
3
3
  "description": "Client for the Convex Cloud",
4
- "version": "1.34.1",
4
+ "version": "1.35.1",
5
5
  "author": "Convex, Inc. <no-reply@convex.dev>",
6
6
  "homepage": "https://convex.dev",
7
7
  "repository": {
@@ -178,6 +178,7 @@
178
178
  "peerDependencies": {
179
179
  "@auth0/auth0-react": "^2.0.1",
180
180
  "@clerk/clerk-react": "^4.12.8 || ^5.0.0",
181
+ "@clerk/react": "^6.0.0",
181
182
  "react": "^18.0.0 || ^19.0.0-0 || ^19.0.0"
182
183
  },
183
184
  "peerDependenciesMeta": {
@@ -189,6 +190,9 @@
189
190
  },
190
191
  "@clerk/clerk-react": {
191
192
  "optional": true
193
+ },
194
+ "@clerk/react": {
195
+ "optional": true
192
196
  }
193
197
  },
194
198
  "@comment devDependencies": [
@@ -199,11 +203,11 @@
199
203
  "@auth0/auth0-react": "2.11.0",
200
204
  "@babel/parser": "^7.27.1",
201
205
  "@babel/types": "^7.27.1",
202
- "@clerk/clerk-react": "^5.20.0",
206
+ "@clerk/react": "^6.0.0",
203
207
  "@commander-js/extra-typings": "^14.0.0",
204
208
  "@convex-dev/platform": "0.1.6",
205
209
  "@eslint/compat": "~2.0.0",
206
- "@eslint/eslintrc": "~3.3.0",
210
+ "@eslint/eslintrc": "^3",
207
211
  "@eslint/js": "~9.39.0",
208
212
  "@modelcontextprotocol/sdk": "^1.25.2",
209
213
  "@octokit/openapi-types": "~25.0.0",
@@ -229,7 +233,7 @@
229
233
  "bufferutil": "^4.0.7",
230
234
  "chalk": "5",
231
235
  "chokidar": "3.6.0",
232
- "commander": "^14.0.2",
236
+ "commander": "^14.0.3",
233
237
  "deep-equal": "2.2.3",
234
238
  "depcheck": "~1.4.7",
235
239
  "detect-port": "^2.1.0",
@@ -244,10 +248,10 @@
244
248
  "fetch-retry": "~6.0.0",
245
249
  "find-up": "^8.0.0",
246
250
  "globals": "~17.0.0",
247
- "happy-dom": "~20.6.0",
251
+ "happy-dom": "~20.8.0",
248
252
  "jsdom": "~27.4.0",
249
253
  "json5": "~2.2.3",
250
- "knip": "~5.79.0",
254
+ "knip": "~5.86.0",
251
255
  "napi-wasm": "1.1.3",
252
256
  "open": "^8.3.0",
253
257
  "openapi-fetch": "~0.15.0",
@@ -262,7 +266,7 @@
262
266
  "serve-handler": "~6.1.6",
263
267
  "shx": "~0.4.0",
264
268
  "skott": "~0.35.4",
265
- "tar": "^7.5.10",
269
+ "tar": "^7.5.11",
266
270
  "tsx": "^4.19.4",
267
271
  "typedoc": "^0.24.6",
268
272
  "typescript": "~5.0.3",
@@ -150,8 +150,8 @@
150
150
  },
151
151
  "legacyComponentApi": {
152
152
  "type": "boolean",
153
- "description": "When true (or omitted, default is true), generates inline expanded types for component APIs. When false, generates import-based component API references instead. The import-based format is more modern and recommended for projects using components.\n\nNote: When false, component.ts files are automatically generated for each component.",
154
- "default": true
153
+ "description": "When true, generates inline expanded types for component APIs. When false (recommended), generates import-based component API references instead.",
154
+ "default": false
155
155
  },
156
156
  "staticApi": {
157
157
  "type": "boolean",
@@ -199,6 +199,19 @@
199
199
  "description": "Deprecated. Use `enabled` instead.",
200
200
  "deprecated": true,
201
201
  "default": false
202
+ },
203
+ "skills": {
204
+ "type": "object",
205
+ "description": "Configuration for agent skills installed by Convex.",
206
+ "properties": {
207
+ "agents": {
208
+ "type": "array",
209
+ "items": { "type": "string" },
210
+ "description": "List of agents to install skills for (e.g. 'claude-code', 'codex', 'cursor'). Defaults to ['claude-code', 'codex']. For a list of supported agents see: https://github.com/vercel-labs/skills?tab=readme-ov-file#supported-agents",
211
+ "default": ["claude-code", "codex"]
212
+ }
213
+ },
214
+ "additionalProperties": false
202
215
  }
203
216
  },
204
217
  "additionalProperties": false
@@ -1,22 +1,26 @@
1
1
  import path from "path";
2
2
  import { Command } from "@commander-js/extra-typings";
3
+ import { chalkStderr } from "chalk";
4
+ import { logMessage } from "../bundler/log.js";
3
5
  import { oneoffContext } from "../bundler/context.js";
4
6
  import { readProjectConfig } from "./lib/config.js";
5
7
  import { functionsDir } from "./lib/utils/utils.js";
6
8
  import {
7
9
  installAiFiles,
8
10
  enableAiFiles,
11
+ disableAiFiles,
9
12
  removeAiFiles,
10
- safelyAttemptToDisableAiFiles,
11
13
  } from "./lib/aiFiles/index.js";
12
14
  import { statusAiFiles } from "./lib/aiFiles/status.js";
15
+ import { writeAiFilesConfig } from "./lib/config.js";
13
16
 
14
17
  async function resolveProjectPaths() {
15
18
  const ctx = await oneoffContext({});
16
19
  const { configPath, projectConfig } = await readProjectConfig(ctx);
17
20
  const convexDir = path.resolve(functionsDir(configPath, projectConfig));
18
21
  const projectDir = path.resolve(path.dirname(configPath));
19
- return { projectDir, convexDir };
22
+ const aiFilesConfig = projectConfig.aiFiles;
23
+ return { projectDir, convexDir, aiFilesConfig, projectConfig };
20
24
  }
21
25
 
22
26
  const aiInstall = new Command("install")
@@ -26,12 +30,15 @@ const aiInstall = new Command("install")
26
30
  " - convex/_generated/ai/guidelines.md\n" +
27
31
  " - AGENTS.md (Convex section only)\n" +
28
32
  " - CLAUDE.md (Convex section only)\n" +
29
- " - Agent skills (installed to each coding agent's native path)",
33
+ " - Agent skills (installed to each coding agent's native path, configured via convex.json)",
30
34
  )
31
35
  .allowExcessArguments(false)
32
36
  .action(async () => {
33
- const { projectDir, convexDir } = await resolveProjectPaths();
34
- await installAiFiles({ projectDir, convexDir });
37
+ const { projectDir, convexDir, aiFilesConfig } =
38
+ await resolveProjectPaths();
39
+ await installAiFiles({ projectDir, convexDir, aiFilesConfig });
40
+
41
+ logMessage(`${chalkStderr.green("✔")} Convex AI files installed.`);
35
42
  });
36
43
 
37
44
  const aiEnable = new Command("enable")
@@ -42,8 +49,16 @@ const aiEnable = new Command("enable")
42
49
  )
43
50
  .allowExcessArguments(false)
44
51
  .action(async () => {
45
- const { projectDir, convexDir } = await resolveProjectPaths();
46
- await enableAiFiles({ projectDir, convexDir });
52
+ const { projectDir, convexDir, aiFilesConfig } =
53
+ await resolveProjectPaths();
54
+
55
+ const newAiFilesConfig = await enableAiFiles({
56
+ projectDir,
57
+ convexDir,
58
+ aiFilesConfig,
59
+ });
60
+
61
+ await writeAiFilesConfig({ projectDir, aiFiles: newAiFilesConfig });
47
62
  });
48
63
 
49
64
  const aiUpdate = new Command("update")
@@ -53,12 +68,15 @@ const aiUpdate = new Command("update")
53
68
  " - convex/_generated/ai/guidelines.md\n" +
54
69
  " - AGENTS.md (Convex section only)\n" +
55
70
  " - CLAUDE.md (Convex section only)\n" +
56
- " - Agent skills (installed to each coding agent's native path)\n\n",
71
+ " - Agent skills (installed to each coding agent's native path, configured via convex.json)\n\n",
57
72
  )
58
73
  .allowExcessArguments(false)
59
74
  .action(async () => {
60
- const { projectDir, convexDir } = await resolveProjectPaths();
61
- await installAiFiles({ projectDir, convexDir });
75
+ const { projectDir, convexDir, aiFilesConfig } =
76
+ await resolveProjectPaths();
77
+ await installAiFiles({ projectDir, convexDir, aiFilesConfig });
78
+
79
+ logMessage(`${chalkStderr.green("✔")} Convex AI files updated.`);
62
80
  });
63
81
 
64
82
  const aiDisable = new Command("disable")
@@ -72,8 +90,18 @@ const aiDisable = new Command("disable")
72
90
  )
73
91
  .allowExcessArguments(false)
74
92
  .action(async () => {
75
- const { projectDir } = await resolveProjectPaths();
76
- await safelyAttemptToDisableAiFiles(projectDir);
93
+ const { projectDir, aiFilesConfig } = await resolveProjectPaths();
94
+
95
+ const newAiFilesConfig = disableAiFiles(aiFilesConfig);
96
+
97
+ await writeAiFilesConfig({
98
+ projectDir,
99
+ aiFiles: newAiFilesConfig,
100
+ });
101
+
102
+ logMessage(
103
+ `${chalkStderr.green(`✔`)} Convex AI files disabled. Run ${chalkStderr.bold(`npx convex ai-files enable`)} to re-enable.`,
104
+ );
77
105
  });
78
106
 
79
107
  const aiStatus = new Command("status")
@@ -90,8 +118,10 @@ const aiStatus = new Command("status")
90
118
  )
91
119
  .allowExcessArguments(false)
92
120
  .action(async () => {
93
- const { projectDir, convexDir } = await resolveProjectPaths();
94
- await statusAiFiles({ projectDir, convexDir });
121
+ const { projectDir, convexDir, aiFilesConfig } =
122
+ await resolveProjectPaths();
123
+
124
+ await statusAiFiles({ projectDir, convexDir, aiFilesConfig });
95
125
  });
96
126
 
97
127
  const aiRemove = new Command("remove")
@@ -0,0 +1,138 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { updateEnvAndConfigForDeploymentSelection } from "./configure.js";
3
+ import { writeDeploymentEnvVar } from "./lib/deployment.js";
4
+ import { finalizeConfiguration } from "./lib/init.js";
5
+
6
+ vi.mock("./lib/deployment.js", async (importOriginal) => {
7
+ const actual = await importOriginal<typeof import("./lib/deployment.js")>();
8
+ return {
9
+ ...actual,
10
+ writeDeploymentEnvVar: vi.fn().mockResolvedValue({
11
+ wroteToGitIgnore: false,
12
+ changedDeploymentEnvVar: true,
13
+ }),
14
+ };
15
+ });
16
+
17
+ vi.mock("./lib/config.js", async (importOriginal) => {
18
+ const actual = await importOriginal<typeof import("./lib/config.js")>();
19
+ return {
20
+ ...actual,
21
+ readProjectConfig: vi.fn().mockResolvedValue({
22
+ configPath: "convex.json",
23
+ projectConfig: { functions: "convex" },
24
+ }),
25
+ writeProjectConfig: vi.fn().mockResolvedValue(undefined),
26
+ ensureConvexFunctionsDir: vi.fn().mockResolvedValue(undefined),
27
+ };
28
+ });
29
+
30
+ vi.mock("./lib/init.js", async (importOriginal) => {
31
+ const actual = await importOriginal<typeof import("./lib/init.js")>();
32
+ return {
33
+ ...actual,
34
+ finalizeConfiguration: vi.fn().mockResolvedValue(undefined),
35
+ };
36
+ });
37
+
38
+ const ctx = {} as any;
39
+
40
+ describe("updateEnvAndConfigForDeploymentSelection", () => {
41
+ beforeEach(() => {
42
+ vi.clearAllMocks();
43
+ });
44
+
45
+ it("prod deployments update CONVEX_URL and CONVEX_SITE_URL but not CONVEX_DEPLOYMENT", async () => {
46
+ await updateEnvAndConfigForDeploymentSelection(
47
+ ctx,
48
+ {
49
+ url: "https://happy-animal-123.convex.cloud",
50
+ siteUrl: "https://happy-animal-123.convex.site",
51
+ deploymentName: "happy-animal-123",
52
+ teamSlug: "my-team",
53
+ projectSlug: "my-project",
54
+ deploymentType: "prod",
55
+ },
56
+ null,
57
+ );
58
+
59
+ expect(writeDeploymentEnvVar).not.toHaveBeenCalled();
60
+ expect(finalizeConfiguration).toHaveBeenCalledWith(
61
+ ctx,
62
+ expect.objectContaining({
63
+ changedDeploymentEnvVar: false,
64
+ wroteToGitIgnore: false,
65
+ url: "https://happy-animal-123.convex.cloud",
66
+ siteUrl: "https://happy-animal-123.convex.site",
67
+ }),
68
+ );
69
+ });
70
+
71
+ it("dev deployments update CONVEX_DEPLOYMENT, CONVEX_URL, and CONVEX_SITE_URL", async () => {
72
+ await updateEnvAndConfigForDeploymentSelection(
73
+ ctx,
74
+ {
75
+ url: "https://joyful-capybara-456.convex.cloud",
76
+ siteUrl: "https://joyful-capybara-456.convex.site",
77
+ deploymentName: "joyful-capybara-456",
78
+ teamSlug: "my-team",
79
+ projectSlug: "my-project",
80
+ deploymentType: "dev",
81
+ },
82
+ null,
83
+ );
84
+
85
+ expect(writeDeploymentEnvVar).toHaveBeenCalledWith(
86
+ ctx,
87
+ "dev",
88
+ {
89
+ team: "my-team",
90
+ project: "my-project",
91
+ deploymentName: "joyful-capybara-456",
92
+ },
93
+ null,
94
+ );
95
+ expect(finalizeConfiguration).toHaveBeenCalledWith(
96
+ ctx,
97
+ expect.objectContaining({
98
+ changedDeploymentEnvVar: true,
99
+ url: "https://joyful-capybara-456.convex.cloud",
100
+ siteUrl: "https://joyful-capybara-456.convex.site",
101
+ }),
102
+ );
103
+ });
104
+
105
+ it("local deployments update CONVEX_DEPLOYMENT, CONVEX_URL, and CONVEX_SITE_URL", async () => {
106
+ await updateEnvAndConfigForDeploymentSelection(
107
+ ctx,
108
+ {
109
+ url: "https://swift-squirrel-789.convex.cloud",
110
+ siteUrl: "https://swift-squirrel-789.convex.site",
111
+ deploymentName: "swift-squirrel-789",
112
+ teamSlug: "my-team",
113
+ projectSlug: "my-project",
114
+ deploymentType: "local",
115
+ },
116
+ "existing-deployment-name",
117
+ );
118
+
119
+ expect(writeDeploymentEnvVar).toHaveBeenCalledWith(
120
+ ctx,
121
+ "local",
122
+ {
123
+ team: "my-team",
124
+ project: "my-project",
125
+ deploymentName: "swift-squirrel-789",
126
+ },
127
+ "existing-deployment-name",
128
+ );
129
+ expect(finalizeConfiguration).toHaveBeenCalledWith(
130
+ ctx,
131
+ expect.objectContaining({
132
+ changedDeploymentEnvVar: true,
133
+ url: "https://swift-squirrel-789.convex.cloud",
134
+ siteUrl: "https://swift-squirrel-789.convex.site",
135
+ }),
136
+ );
137
+ });
138
+ });
@@ -16,7 +16,7 @@ import {
16
16
  checkAccessToSelectedProject,
17
17
  DeploymentSelectionWithinProject,
18
18
  } from "./lib/api.js";
19
- import { readProjectConfig, writeProjectConfig } from "./lib/config.js";
19
+ import { readProjectConfig, ensureConvexFunctionsDir } from "./lib/config.js";
20
20
  import {
21
21
  DeploymentDetails,
22
22
  eraseDeploymentEnvVar,
@@ -44,7 +44,7 @@ import {
44
44
  promptYesNo,
45
45
  } from "./lib/utils/prompts.js";
46
46
  import { readGlobalConfig } from "./lib/utils/globalConfig.js";
47
- import { maybeSetupAiFiles } from "./lib/aiFiles/index.js";
47
+ import { attemptSetupAiFiles } from "./lib/aiFiles/index.js";
48
48
  import {
49
49
  DeploymentSelection,
50
50
  deploymentNameFromSelection,
@@ -52,7 +52,7 @@ import {
52
52
  } from "./lib/deploymentSelection.js";
53
53
  import { ensureLoggedIn } from "./lib/login.js";
54
54
  import { handleAnonymousDeployment } from "./lib/localDeployment/anonymous.js";
55
- import { fetchDeploymentCanonicalSiteUrl } from "./lib/env.js";
55
+ import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
56
56
  type DeploymentCredentials = {
57
57
  url: string;
58
58
  adminKey: string;
@@ -122,7 +122,7 @@ export async function deploymentCredentialsOrConfigure(
122
122
  chosenConfiguration,
123
123
  cmdOptions,
124
124
  );
125
- const siteUrl = await fetchDeploymentCanonicalSiteUrl(ctx, {
125
+ const { convexSiteUrl: siteUrl } = await fetchDeploymentCanonicalUrls(ctx, {
126
126
  adminKey: selectedDeployment.adminKey,
127
127
  deploymentUrl: selectedDeployment.url,
128
128
  });
@@ -230,6 +230,7 @@ export async function _deploymentCredentialsOrConfigure(
230
230
  const isAgentMode = process.env.CONVEX_AGENT_MODE === "anonymous";
231
231
  if (
232
232
  !isAgentMode &&
233
+ process.stdin.isTTY &&
233
234
  hasAuth &&
234
235
  deploymentSelection.deploymentName !== null
235
236
  ) {
@@ -238,22 +239,17 @@ export async function _deploymentCredentialsOrConfigure(
238
239
  (await promptYesNo(ctx, {
239
240
  message: `${CONVEX_DEPLOYMENT_ENV_VAR_NAME} is configured with deployment ${deploymentSelection.deploymentName}, which is not linked with your account. Would you like to link it now?`,
240
241
  }));
241
- if (!shouldConfigure) {
242
- return await ctx.crash({
243
- exitCode: 0,
244
- errorType: "fatal",
245
- printedMessage: `Run \`npx convex login --link-deployments\` first to link this deployment to your account, and then run \`npx convex dev\` again.`,
246
- });
242
+ if (shouldConfigure) {
243
+ return await handleChooseProject(
244
+ ctx,
245
+ chosenConfiguration,
246
+ deploymentSelection.selectionWithinProject,
247
+ {
248
+ globallyForceCloud,
249
+ },
250
+ cmdOptions,
251
+ );
247
252
  }
248
- return await handleChooseProject(
249
- ctx,
250
- chosenConfiguration,
251
- deploymentSelection.selectionWithinProject,
252
- {
253
- globallyForceCloud,
254
- },
255
- cmdOptions,
256
- );
257
253
  }
258
254
  const alreadyHasConfiguredAnonymousDeployment =
259
255
  deploymentSelection.deploymentName !== null &&
@@ -266,22 +262,23 @@ export async function _deploymentCredentialsOrConfigure(
266
262
  );
267
263
  }
268
264
 
269
- const shouldPromptForLogin = isAgentMode
270
- ? "no"
271
- : alreadyHasConfiguredAnonymousDeployment
265
+ const shouldPromptForLogin =
266
+ isAgentMode || !process.stdin.isTTY
272
267
  ? "no"
273
- : await promptOptions(ctx, {
274
- message:
275
- "Welcome to Convex! Would you like to login to your account?",
276
- choices: [
277
- {
278
- name: "Start without an account (run Convex locally)",
279
- value: "no",
280
- },
281
- { name: "Login or create an account", value: "yes" },
282
- ],
283
- default: "no",
284
- });
268
+ : alreadyHasConfiguredAnonymousDeployment
269
+ ? "no"
270
+ : await promptOptions(ctx, {
271
+ message:
272
+ "Welcome to Convex! Would you like to login to your account?",
273
+ choices: [
274
+ {
275
+ name: "Start without an account (run Convex locally)",
276
+ value: "no",
277
+ },
278
+ { name: "Login or create an account", value: "yes" },
279
+ ],
280
+ default: "no",
281
+ });
285
282
  if (shouldPromptForLogin === "no") {
286
283
  const result = await handleAnonymousDeployment(ctx, {
287
284
  chosenConfiguration,
@@ -625,8 +622,9 @@ async function selectNewProject(
625
622
  await doInitConvexFolder(ctx);
626
623
  const { configPath, projectConfig } = await readProjectConfig(ctx);
627
624
  const folder = functionsDir(configPath, projectConfig);
628
- await maybeSetupAiFiles({
625
+ await attemptSetupAiFiles({
629
626
  ctx,
627
+ aiFilesConfig: projectConfig.aiFiles,
630
628
  convexDir: path.resolve(folder),
631
629
  projectDir: path.resolve(path.dirname(configPath)),
632
630
  });
@@ -685,8 +683,9 @@ async function selectExistingProject(
685
683
 
686
684
  const { configPath, projectConfig } = await readProjectConfig(ctx);
687
685
  const folder = functionsDir(configPath, projectConfig);
688
- await maybeSetupAiFiles({
686
+ await attemptSetupAiFiles({
689
687
  ctx,
688
+ aiFilesConfig: projectConfig.aiFiles,
690
689
  convexDir: path.resolve(folder),
691
690
  projectDir: path.resolve(path.dirname(configPath)),
692
691
  });
@@ -787,17 +786,19 @@ export async function updateEnvAndConfigForDeploymentSelection(
787
786
  const { configPath, projectConfig } = await readProjectConfig(ctx);
788
787
 
789
788
  const { wroteToGitIgnore, changedDeploymentEnvVar } =
790
- await writeDeploymentEnvVar(
791
- ctx,
792
- options.deploymentType,
793
- {
794
- team: options.teamSlug,
795
- project: options.projectSlug,
796
- deploymentName: options.deploymentName,
797
- },
798
- existingValue,
799
- );
800
- await writeProjectConfig(ctx, projectConfig);
789
+ options.deploymentType !== "prod"
790
+ ? await writeDeploymentEnvVar(
791
+ ctx,
792
+ options.deploymentType,
793
+ {
794
+ team: options.teamSlug,
795
+ project: options.projectSlug,
796
+ deploymentName: options.deploymentName,
797
+ },
798
+ existingValue,
799
+ )
800
+ : { wroteToGitIgnore: false, changedDeploymentEnvVar: false };
801
+ await ensureConvexFunctionsDir(ctx, projectConfig);
801
802
  await finalizeConfiguration(ctx, {
802
803
  deploymentType: options.deploymentType,
803
804
  deploymentName: options.deploymentName,
package/src/cli/deploy.ts CHANGED
@@ -21,9 +21,12 @@ import { getTeamAndProjectFromPreviewAdminKey } from "./lib/deployment.js";
21
21
  import { runPush } from "./lib/components.js";
22
22
  import { promptYesNo } from "./lib/utils/prompts.js";
23
23
  import { deployToDeployment, runCommand } from "./lib/deploy2.js";
24
- import { getDeploymentSelection } from "./lib/deploymentSelection.js";
24
+ import {
25
+ DeploymentSelection,
26
+ getDeploymentSelection,
27
+ } from "./lib/deploymentSelection.js";
25
28
  import { deploymentNameAndTypeFromSelection } from "./lib/deploymentSelection.js";
26
- import { checkVersion } from "./lib/updates.js";
29
+ import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
27
30
  import { readProjectConfig, getAuthKitConfig } from "./lib/config.js";
28
31
  import { ensureAuthKitProvisionedBeforeBuild } from "./lib/workos/workos.js";
29
32
  import { DASHBOARD_HOST } from "./lib/dashboard.js";
@@ -46,7 +49,7 @@ export const deploy = new Command("deploy")
46
49
  .addOption(
47
50
  new Option(
48
51
  "--preview-create <name>",
49
- "The name to associate with this deployment if deploying to a newly created preview deployment. Defaults to the current Git branch name in Vercel, Netlify and GitHub CI. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).",
52
+ "The name to associate with this deployment if deploying to a newly created preview deployment. Defaults to the current Git branch name in Vercel, Netlify, Cloudflare Pages and GitHub CI. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).",
50
53
  ).conflicts("preview-name"),
51
54
  )
52
55
  .addOption(
@@ -93,7 +96,10 @@ Same format as .env.local or .env files, and overrides them.`,
93
96
  .action(async (cmdOptions) => {
94
97
  const ctx = await oneoffContext(cmdOptions);
95
98
 
96
- const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);
99
+ const deploymentSelection = await getDeploymentSelection(ctx, {
100
+ ...cmdOptions,
101
+ implicitProd: true,
102
+ });
97
103
  if (
98
104
  cmdOptions.checkBuildEnvironment === "enable" &&
99
105
  isNonProdBuildEnvironment() &&
@@ -171,7 +177,7 @@ Same format as .env.local or .env files, and overrides them.`,
171
177
  });
172
178
  }
173
179
 
174
- await deployToExistingDeployment(ctx, {
180
+ await deployToExistingDeployment(ctx, deploymentSelection, {
175
181
  ...cmdOptions,
176
182
  skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,
177
183
  allowDeletingLargeIndexes:
@@ -309,6 +315,7 @@ async function deployToNewPreviewDeployment(
309
315
 
310
316
  async function deployToExistingDeployment(
311
317
  ctx: Context,
318
+ deploymentSelection: DeploymentSelection,
312
319
  options: {
313
320
  verbose?: boolean | undefined;
314
321
  dryRun?: boolean | undefined;
@@ -331,10 +338,6 @@ async function deployToExistingDeployment(
331
338
  allowDeletingLargeIndexes: boolean;
332
339
  },
333
340
  ) {
334
- const deploymentSelection = await getDeploymentSelection(ctx, {
335
- ...options,
336
- implicitProd: true,
337
- });
338
341
  const deploymentToActOn = await loadSelectedDeploymentCredentials(
339
342
  ctx,
340
343
  deploymentSelection,
@@ -383,7 +386,7 @@ async function deployToExistingDeployment(
383
386
  ...(isCloudDeployment
384
387
  ? [
385
388
  usageStateWarning(ctx, deploymentFields.deploymentName),
386
- checkVersion(ctx),
389
+ checkVersionAndAiFilesStaleness(ctx),
387
390
  ]
388
391
  : []),
389
392
  ]);