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
@@ -8,22 +8,19 @@ import {
8
8
  } from "./lib/deploymentSelection.js";
9
9
  import { parseDeploymentSelector } from "./lib/deploymentSelector.js";
10
10
  import { updateEnvAndConfigForDeploymentSelection } from "./configure.js";
11
- import { fetchDeploymentCanonicalSiteUrl } from "./lib/env.js";
11
+ import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
12
12
  import { chalkStderr } from "chalk";
13
13
  export const deploymentSelect = new Command("select").summary("Select the deployment to use when running commands").description(
14
- "Select the deployment to use when running commands.\n\nThe deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\n\nExamples:\n npx convex select dev # Select your personal dev deployment in the current project\n npx convex select dev/james # Select a deployment in the same project by its reference\n npx convex select dev/james # Select a deployment in the same project by its reference\n npx convex select some-project:dev/james # Select a deployment in another project in the same team\n npx convex select some-team:some-project:dev/james # Select a deployment in a particular team/project\n"
14
+ "Select the deployment to use when running commands.\n\nThe deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\n\nExamples:\n npx convex select dev # Select your personal cloud dev deployment in the current project\n npx convex select local # Select your local deployment\n npx convex select dev/james # Select a deployment in the same project by its reference\n npx convex select some-project:dev/james # Select a deployment in another project in the same team\n npx convex select some-team:some-project:dev/james # Select a deployment in a particular team/project\n"
15
15
  ).argument("<deployment>", "The deployment to use").allowExcessArguments(false).action(async (selector) => {
16
16
  const ctx = await oneoffContext({
17
17
  url: void 0,
18
18
  adminKey: void 0,
19
19
  envFile: void 0
20
20
  });
21
- await selectDeployment(ctx, selector);
22
- });
23
- export async function selectDeployment(ctx, selector) {
24
21
  const currentSelection = await getDeploymentSelection(ctx, {});
25
22
  const parsed = parseDeploymentSelector(selector);
26
- if (currentSelection.kind === "chooseProject" && parsed.kind !== "inTeamProject" && parsed.kind !== "deploymentName") {
23
+ if (currentSelection.kind === "chooseProject" && parsed.kind !== "inTeamProject" && parsed.kind !== "deploymentName" && parsed.kind !== "local") {
27
24
  return await ctx.crash({
28
25
  exitCode: 1,
29
26
  errorType: "fatal",
@@ -36,13 +33,17 @@ export async function selectDeployment(ctx, selector) {
36
33
  envFile: void 0,
37
34
  deployment: selector
38
35
  });
39
- const deployment = await loadSelectedDeploymentCredentials(
36
+ await saveSelectedDeployment(
40
37
  ctx,
38
+ selector,
41
39
  newSelection,
42
- {
43
- ensureLocalRunning: false
44
- }
40
+ deploymentNameFromSelection(currentSelection)
45
41
  );
42
+ });
43
+ export async function saveSelectedDeployment(ctx, selector, selection, previousDeploymentName) {
44
+ const deployment = await loadSelectedDeploymentCredentials(ctx, selection, {
45
+ ensureLocalRunning: false
46
+ });
46
47
  if (deployment.deploymentFields === null) {
47
48
  return ctx.crash({
48
49
  exitCode: 1,
@@ -58,7 +59,7 @@ export async function selectDeployment(ctx, selector) {
58
59
  printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`
59
60
  });
60
61
  }
61
- const siteUrl = await fetchDeploymentCanonicalSiteUrl(ctx, {
62
+ const { convexSiteUrl: siteUrl } = deployment.deploymentFields.deploymentType === "local" ? { convexSiteUrl: null } : await fetchDeploymentCanonicalUrls(ctx, {
62
63
  adminKey: deployment.adminKey,
63
64
  deploymentUrl: deployment.url
64
65
  });
@@ -72,7 +73,7 @@ export async function selectDeployment(ctx, selector) {
72
73
  projectSlug: deployment.deploymentFields.projectSlug,
73
74
  deploymentType: deployment.deploymentFields.deploymentType
74
75
  },
75
- deploymentNameFromSelection(currentSelection)
76
+ previousDeploymentName
76
77
  );
77
78
  }
78
79
  //# sourceMappingURL=deploymentSelect.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/deploymentSelect.ts"],
4
- "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport {\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\nimport { updateEnvAndConfigForDeploymentSelection } from \"./configure.js\";\nimport { fetchDeploymentCanonicalSiteUrl } from \"./lib/env.js\";\nimport { chalkStderr } from \"chalk\";\n\nexport const deploymentSelect = new Command(\"select\")\n .summary(\"Select the deployment to use when running commands\")\n .description(\n \"Select the deployment to use when running commands.\\n\\n\" +\n \"The deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\\n\\n\" +\n \"Examples:\\n\" +\n \" npx convex select dev # Select your personal dev deployment in the current project\\n\" +\n \" npx convex select dev/james # Select a deployment in the same project by its reference\\n\" +\n \" npx convex select dev/james # Select a deployment in the same project by its reference\\n\" +\n \" npx convex select some-project:dev/james # Select a deployment in another project in the same team\\n\" +\n \" npx convex select some-team:some-project:dev/james # Select a deployment in a particular team/project\\n\",\n )\n .argument(\"<deployment>\", \"The deployment to use\")\n .allowExcessArguments(false)\n .action(async (selector) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n await selectDeployment(ctx, selector);\n });\n\nexport async function selectDeployment(\n ctx: Context,\n selector: string,\n): Promise<void> {\n // Get the current deployment selection (no flags, just env/config state)\n const currentSelection = await getDeploymentSelection(ctx, {});\n\n // If no project is configured and the selector needs project context, show a specific error\n const parsed = parseDeploymentSelector(selector);\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\" &&\n parsed.kind !== \"deploymentName\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first, or use a full selector like 'my-team:my-project:dev/james' or 'happy-capybara-123'.`,\n });\n }\n\n // Resolve the new deployment using the selector relative to the current project\n const newSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n deployment: selector,\n });\n\n const deployment = await loadSelectedDeploymentCredentials(\n ctx,\n newSelection,\n {\n ensureLocalRunning: false,\n },\n );\n\n if (deployment.deploymentFields === null) {\n // Should be unreachable since for now, `select` only allows users\n // to select deployments that exist in Big Brain\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n errForSentry: `Unexpected selection in select: ${JSON.stringify(deployment)}`,\n });\n }\n\n if (deployment.deploymentFields.deploymentType === \"prod\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`,\n });\n }\n\n const siteUrl = await fetchDeploymentCanonicalSiteUrl(ctx, {\n adminKey: deployment.adminKey,\n deploymentUrl: deployment.url,\n });\n\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: deployment.url,\n siteUrl,\n deploymentName: deployment.deploymentFields.deploymentName,\n teamSlug: deployment.deploymentFields.teamSlug,\n projectSlug: deployment.deploymentFields.projectSlug,\n deploymentType: deployment.deploymentFields.deploymentType,\n },\n deploymentNameFromSelection(currentSelection),\n );\n}\n"],
5
- "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAkB,qBAAqB;AACvC,SAAS,yCAAyC;AAClD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,+BAA+B;AACxC,SAAS,gDAAgD;AACzD,SAAS,uCAAuC;AAChD,SAAS,mBAAmB;AAErB,aAAM,mBAAmB,IAAI,QAAQ,QAAQ,EACjD,QAAQ,oDAAoD,EAC5D;AAAA,EACC;AAQF,EACC,SAAS,gBAAgB,uBAAuB,EAChD,qBAAqB,KAAK,EAC1B,OAAO,OAAO,aAAa;AAC1B,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,iBAAiB,KAAK,QAAQ;AACtC,CAAC;AAEH,sBAAsB,iBACpB,KACA,UACe;AAEf,QAAM,mBAAmB,MAAM,uBAAuB,KAAK,CAAC,CAAC;AAG7D,QAAM,SAAS,wBAAwB,QAAQ;AAC/C,MACE,iBAAiB,SAAS,mBAC1B,OAAO,SAAS,mBAChB,OAAO,SAAS,kBAChB;AACA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAGA,QAAM,eAAe,MAAM,uBAAuB,KAAK;AAAA,IACrD,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EACd,CAAC;AAED,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,MACE,oBAAoB;AAAA,IACtB;AAAA,EACF;AAEA,MAAI,WAAW,qBAAqB,MAAM;AAGxC,WAAO,IAAI,MAAM;AAAA,MACf,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,cAAc,mCAAmC,KAAK,UAAU,UAAU,CAAC;AAAA,IAC7E,CAAC;AAAA,EACH;AAEA,MAAI,WAAW,iBAAiB,mBAAmB,QAAQ;AACzD,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,0GAA0G,YAAY,KAAK,gBAAgB,QAAQ,EAAE,CAAC;AAAA,IACxK,CAAC;AAAA,EACH;AAEA,QAAM,UAAU,MAAM,gCAAgC,KAAK;AAAA,IACzD,UAAU,WAAW;AAAA,IACrB,eAAe,WAAW;AAAA,EAC5B,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,MACE,KAAK,WAAW;AAAA,MAChB;AAAA,MACA,gBAAgB,WAAW,iBAAiB;AAAA,MAC5C,UAAU,WAAW,iBAAiB;AAAA,MACtC,aAAa,WAAW,iBAAiB;AAAA,MACzC,gBAAgB,WAAW,iBAAiB;AAAA,IAC9C;AAAA,IACA,4BAA4B,gBAAgB;AAAA,EAC9C;AACF;",
4
+ "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\nimport { updateEnvAndConfigForDeploymentSelection } from \"./configure.js\";\nimport { fetchDeploymentCanonicalUrls } from \"./lib/deploy2.js\";\nimport { chalkStderr } from \"chalk\";\n\nexport const deploymentSelect = new Command(\"select\")\n .summary(\"Select the deployment to use when running commands\")\n .description(\n \"Select the deployment to use when running commands.\\n\\n\" +\n \"The deployment will be used by all `npx convex` commands, except `npx convex deploy`. You can also run individual commands on another deployment by using the --deployment flag on that command.\\n\\n\" +\n \"Examples:\\n\" +\n \" npx convex select dev # Select your personal cloud dev deployment in the current project\\n\" +\n \" npx convex select local # Select your local deployment\\n\" +\n \" npx convex select dev/james # Select a deployment in the same project by its reference\\n\" +\n \" npx convex select some-project:dev/james # Select a deployment in another project in the same team\\n\" +\n \" npx convex select some-team:some-project:dev/james # Select a deployment in a particular team/project\\n\",\n )\n .argument(\"<deployment>\", \"The deployment to use\")\n .allowExcessArguments(false)\n .action(async (selector) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Get the current deployment selection (no flags, just env/config state)\n const currentSelection = await getDeploymentSelection(ctx, {});\n\n // If no project is configured and the selector needs project context, show a specific error\n const parsed = parseDeploymentSelector(selector);\n if (\n currentSelection.kind === \"chooseProject\" &&\n parsed.kind !== \"inTeamProject\" &&\n parsed.kind !== \"deploymentName\" &&\n parsed.kind !== \"local\"\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `No project configured. Run \\`npx convex dev\\` to set up a project first, or use a full selector like 'my-team:my-project:dev/james' or 'happy-capybara-123'.`,\n });\n }\n\n // Resolve the new deployment using the selector relative to the current project\n const newSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n deployment: selector,\n });\n\n await saveSelectedDeployment(\n ctx,\n selector,\n newSelection,\n deploymentNameFromSelection(currentSelection),\n );\n });\n\nexport async function saveSelectedDeployment(\n ctx: Context,\n selector: string,\n selection: DeploymentSelection,\n previousDeploymentName: string | null,\n): Promise<void> {\n const deployment = await loadSelectedDeploymentCredentials(ctx, selection, {\n ensureLocalRunning: false,\n });\n\n if (deployment.deploymentFields === null) {\n // Should be unreachable since for now, `select` only allows users\n // to select deployments that exist in Big Brain\n return ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n errForSentry: `Unexpected selection in select: ${JSON.stringify(deployment)}`,\n });\n }\n\n if (deployment.deploymentFields.deploymentType === \"prod\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Selecting a production deployment is unsupported. To run commands on a production deployment, pass the ${chalkStderr.bold(`--deployment ${selector}`)} flag to each command.`,\n });\n }\n\n const { convexSiteUrl: siteUrl } =\n deployment.deploymentFields.deploymentType === \"local\"\n ? { convexSiteUrl: null }\n : await fetchDeploymentCanonicalUrls(ctx, {\n adminKey: deployment.adminKey,\n deploymentUrl: deployment.url,\n });\n\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: deployment.url,\n siteUrl,\n deploymentName: deployment.deploymentFields.deploymentName,\n teamSlug: deployment.deploymentFields.teamSlug,\n projectSlug: deployment.deploymentFields.projectSlug,\n deploymentType: deployment.deploymentFields.deploymentType,\n },\n previousDeploymentName,\n );\n}\n"],
5
+ "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAkB,qBAAqB;AACvC,SAAS,yCAAyC;AAClD;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP,SAAS,+BAA+B;AACxC,SAAS,gDAAgD;AACzD,SAAS,oCAAoC;AAC7C,SAAS,mBAAmB;AAErB,aAAM,mBAAmB,IAAI,QAAQ,QAAQ,EACjD,QAAQ,oDAAoD,EAC5D;AAAA,EACC;AAQF,EACC,SAAS,gBAAgB,uBAAuB,EAChD,qBAAqB,KAAK,EAC1B,OAAO,OAAO,aAAa;AAC1B,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AAGD,QAAM,mBAAmB,MAAM,uBAAuB,KAAK,CAAC,CAAC;AAG7D,QAAM,SAAS,wBAAwB,QAAQ;AAC/C,MACE,iBAAiB,SAAS,mBAC1B,OAAO,SAAS,mBAChB,OAAO,SAAS,oBAChB,OAAO,SAAS,SAChB;AACA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAGA,QAAM,eAAe,MAAM,uBAAuB,KAAK;AAAA,IACrD,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EACd,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAA4B,gBAAgB;AAAA,EAC9C;AACF,CAAC;AAEH,sBAAsB,uBACpB,KACA,UACA,WACA,wBACe;AACf,QAAM,aAAa,MAAM,kCAAkC,KAAK,WAAW;AAAA,IACzE,oBAAoB;AAAA,EACtB,CAAC;AAED,MAAI,WAAW,qBAAqB,MAAM;AAGxC,WAAO,IAAI,MAAM;AAAA,MACf,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,cAAc,mCAAmC,KAAK,UAAU,UAAU,CAAC;AAAA,IAC7E,CAAC;AAAA,EACH;AAEA,MAAI,WAAW,iBAAiB,mBAAmB,QAAQ;AACzD,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,0GAA0G,YAAY,KAAK,gBAAgB,QAAQ,EAAE,CAAC;AAAA,IACxK,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,eAAe,QAAQ,IAC7B,WAAW,iBAAiB,mBAAmB,UAC3C,EAAE,eAAe,KAAK,IACtB,MAAM,6BAA6B,KAAK;AAAA,IACtC,UAAU,WAAW;AAAA,IACrB,eAAe,WAAW;AAAA,EAC5B,CAAC;AAEP,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,MACE,KAAK,WAAW;AAAA,MAChB;AAAA,MACA,gBAAgB,WAAW,iBAAiB;AAAA,MAC5C,UAAU,WAAW,iBAAiB;AAAA,MACtC,aAAa,WAAW,iBAAiB;AAAA,MACzC,gBAAgB,WAAW,iBAAiB;AAAA,IAC9C;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  import { Command, Option } from "@commander-js/extra-typings";
3
+ import { chalkStderr } from "chalk";
3
4
  import { oneoffContext } from "../bundler/context.js";
4
5
  import { logVerbose } from "../bundler/log.js";
5
6
  import { deploymentCredentialsOrConfigure } from "./configure.js";
@@ -10,10 +11,12 @@ import {
10
11
  CONVEX_DEPLOYMENT_ENV_VAR_NAME,
11
12
  CONVEX_SELF_HOSTED_URL_VAR_NAME
12
13
  } from "./lib/utils/utils.js";
13
- import { getDeploymentSelection } from "./lib/deploymentSelection.js";
14
- import { checkVersion } from "./lib/updates.js";
14
+ import {
15
+ getDeploymentSelection
16
+ } from "./lib/deploymentSelection.js";
17
+ import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
15
18
  export const dev = new Command("dev").summary("Develop against a dev deployment, watching for changes").description(
16
- "Develop against a dev deployment, watching for changes\n\n 1. Configures a new or existing project (if needed)\n 2. Updates generated types and pushes code to the configured dev deployment\n 3. Runs the provided command (if `--run` or `--run-sh` is used)\n 4. Watches for file changes, and repeats step 2\n"
19
+ "Develop against a dev deployment, watching for changes\n\n 1. Configures a new or existing project (if needed)\n 2. Updates generated types and pushes code to the configured dev deployment\n 3. Runs the provided command (if `--start` or `--run` is used)\n 4. Watches for file changes, and repeats step 2\n"
17
20
  ).allowExcessArguments(false).option("-v, --verbose", "Show full listing of changes").addOption(
18
21
  new Option(
19
22
  "--typecheck <mode>",
@@ -38,19 +41,21 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
38
41
  "--until-success",
39
42
  "Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3",
40
43
  false
44
+ ).addOption(
45
+ new Option(
46
+ "--start <command>",
47
+ "Start a long-running command alongside `convex dev`, like a frontend dev server. The command inherits stdin/stdout so you can interact with it directly. Example: npx convex dev --start 'vite --open'"
48
+ ).conflicts(["--run", "--run-sh"])
49
+ ).addOption(
50
+ new Option("--run-sh <command>", "Deprecated: use --start instead.").conflicts(["--start", "--run"]).hideHelp()
41
51
  ).addOption(
42
52
  new Option(
43
53
  "--run <functionName>",
44
54
  "The identifier of the function to run in step 3, like `api.init.createData` or `myDir/myFile:myFunction`"
45
- ).conflicts(["--run-sh"])
55
+ ).conflicts(["--start"])
46
56
  ).option(
47
57
  "--run-component <functionName>",
48
58
  "If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. Components are a beta feature. This flag is unstable and may change in subsequent releases."
49
- ).addOption(
50
- new Option(
51
- "--run-sh <command>",
52
- "A shell command to run in step 3, like `node myScript.js`. If you just want to run a Convex function, use `--run` instead."
53
- ).conflicts(["--run"])
54
59
  ).addOption(
55
60
  new Option(
56
61
  "--tail-logs [mode]",
@@ -60,7 +65,7 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
60
65
  new Option(
61
66
  "--configure [choice]",
62
67
  "Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud"
63
- ).choices(["new", "existing"]).conflicts(["--local", "--cloud"])
68
+ ).choices(["new", "existing"]).conflicts(["--local", "--cloud", "--url", "--admin-key", "--env-file"])
64
69
  ).addOption(
65
70
  new Option(
66
71
  "--team <team_slug>",
@@ -86,7 +91,7 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
86
91
  "--env-file <envFile>",
87
92
  `Path to a custom file of environment variables, for choosing the deployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. Same format as .env.local or .env files, and overrides them.`
88
93
  )
89
- ).addOption(new Option("--skip-push").default(false).hideHelp()).addOption(new Option("--admin-key <adminKey>").hideHelp()).addOption(new Option("--url <url>").hideHelp()).addOption(new Option("--override-auth-url <url>").hideHelp()).addOption(new Option("--override-auth-client <id>").hideHelp()).addOption(new Option("--override-auth-username <username>").hideHelp()).addOption(new Option("--override-auth-password <password>").hideHelp()).addOption(new Option("--local-cloud-port <port>").hideHelp()).addOption(new Option("--local-site-port <port>").hideHelp()).addOption(new Option("--local-backend-version <version>").hideHelp()).addOption(new Option("--local-force-upgrade").default(false).hideHelp()).addOption(
94
+ ).addOption(new Option("--skip-push").default(false).hideHelp()).addOption(new Option("--admin-key <adminKey>").hideHelp()).addOption(new Option("--url <url>").hideHelp()).addOption(new Option("--override-auth-url <url>").hideHelp()).addOption(new Option("--override-auth-client <id>").hideHelp()).addOption(new Option("--override-auth-username <username>").hideHelp()).addOption(new Option("--override-auth-password <password>").hideHelp()).addOption(new Option("--local-cloud-port <port>").hideHelp()).addOption(new Option("--local-site-port <port>").hideHelp()).addOption(new Option("--local-backend-version <version>").hideHelp()).addOption(new Option("--local-force-upgrade").default(false).hideHelp()).addOption(new Option("--deployment <deployment>").hideHelp()).addOption(
90
95
  new Option(
91
96
  "--local",
92
97
  "Use local deployment regardless of last used backend. DB data will not be downloaded from any cloud deployment."
@@ -102,6 +107,16 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
102
107
  logVerbose("Received SIGINT, cleaning up...");
103
108
  await ctx.flushAndExit(-2);
104
109
  });
110
+ if (cmdOptions.deployment !== void 0) {
111
+ return await ctx.crash({
112
+ exitCode: 1,
113
+ errorType: "fatal",
114
+ printedMessage: "`--deployment` can\u2019t be used with `npx convex dev`. \n\n To select this deployment for development, run: \n" + chalkStderr.bold(
115
+ ` npx convex deployment select ${cmdOptions.deployment}
116
+ `
117
+ ) + " Then, run `npx convex dev` again."
118
+ });
119
+ }
105
120
  const devOptions = await normalizeDevOptions(ctx, cmdOptions);
106
121
  if (cmdOptions.configure === void 0) {
107
122
  if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)
@@ -138,7 +153,13 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
138
153
  localOptions["forceUpgrade"] = cmdOptions.localForceUpgrade;
139
154
  }
140
155
  const configure = cmdOptions.configure === true ? "ask" : cmdOptions.configure ?? null;
141
- const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);
156
+ const deploymentSelection = configure !== null ? {
157
+ kind: "chooseProject",
158
+ selectionWithinProject: {
159
+ // For backwards compatibility, allow `--configure --prod`
160
+ kind: cmdOptions.prod ? "prod" : "unspecified"
161
+ }
162
+ } : await getDeploymentSelection(ctx, cmdOptions);
142
163
  const credentials = await deploymentCredentialsOrConfigure(
143
164
  ctx,
144
165
  deploymentSelection,
@@ -165,7 +186,7 @@ export const dev = new Command("dev").summary("Develop against a dev deployment,
165
186
  ] : [],
166
187
  ...credentials.deploymentFields !== null ? [
167
188
  usageStateWarning(ctx, credentials.deploymentFields.deploymentName),
168
- checkVersion(ctx)
189
+ checkVersionAndAiFilesStaleness(ctx)
169
190
  ] : []
170
191
  ]);
171
192
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/dev.ts"],
4
- "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n} from \"./lib/utils/utils.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersion } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--run` or `--run-sh` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `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(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\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 .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--run-sh\"]),\n )\n .option(\n \"--run-component <functionName>\",\n \"If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. \" +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--run-sh <command>\",\n \"A shell command to run in step 3, like `node myScript.js`. \" +\n \"If you just want to run a Convex function, use `--run` instead.\",\n ).conflicts([\"--run\"]),\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n \"Choose whether to tail Convex function logs in this terminal\",\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--local\", \"--cloud\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\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 ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(\n new Option(\n \"--local\",\n \"Use local deployment regardless of last used backend. DB data will not be downloaded from any cloud deployment.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--cloud\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--cloud\",\n \"Use cloud deployment regardles of last used backend. DB data will not be uploaded from local.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--local\"])\n .hideHelp(),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports?: { cloud: number; site: number };\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n } = { forceUpgrade: false };\n if (!cmdOptions.local && cmdOptions.devDeployment !== \"local\") {\n if (\n cmdOptions.localCloudPort !== undefined ||\n cmdOptions.localSitePort !== undefined ||\n cmdOptions.localBackendVersion !== undefined ||\n cmdOptions.localForceUpgrade === true\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-*` options can only be used with `--configure --dev-deployment local` or `--local`.\",\n });\n }\n } else {\n if (cmdOptions.localCloudPort !== undefined) {\n if (cmdOptions.localSitePort === undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-cloud-port` requires `--local-site-port` to be set.\",\n });\n }\n localOptions[\"ports\"] = {\n cloud: parseInt(cmdOptions.localCloudPort),\n site: parseInt(cmdOptions.localSitePort),\n };\n }\n localOptions[\"backendVersion\"] = cmdOptions.localBackendVersion;\n localOptions[\"forceUpgrade\"] = cmdOptions.localForceUpgrade;\n }\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersion(ctx),\n ]\n : []),\n ]);\n });\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n type DeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--start` or `--run` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `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(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\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 .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--start <command>\",\n \"Start a long-running command alongside `convex dev`, like a frontend \" +\n \"dev server. The command inherits stdin/stdout so you can interact \" +\n \"with it directly. Example: npx convex dev --start 'vite --open'\",\n ).conflicts([\"--run\", \"--run-sh\"]),\n )\n .addOption(\n new Option(\"--run-sh <command>\", \"Deprecated: use --start instead.\")\n .conflicts([\"--start\", \"--run\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--start\"]),\n )\n .option(\n \"--run-component <functionName>\",\n \"If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. \" +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n \"Choose whether to tail Convex function logs in this terminal\",\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--local\", \"--cloud\", \"--url\", \"--admin-key\", \"--env-file\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\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 ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(new Option(\"--deployment <deployment>\").hideHelp())\n .addOption(\n new Option(\n \"--local\",\n \"Use local deployment regardless of last used backend. DB data will not be downloaded from any cloud deployment.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--cloud\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--cloud\",\n \"Use cloud deployment regardles of last used backend. DB data will not be uploaded from local.\",\n )\n .default(false)\n .conflicts([\"--prod\", \"--url\", \"--admin-key\", \"--local\"])\n .hideHelp(),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n if (cmdOptions.deployment !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--deployment` can\u2019t be used with `npx convex dev`. \\n\\n\" +\n \" To select this deployment for development, run: \\n\" +\n chalkStderr.bold(\n ` npx convex deployment select ${cmdOptions.deployment}\\n`,\n ) +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports?: { cloud: number; site: number };\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n } = { forceUpgrade: false };\n if (!cmdOptions.local && cmdOptions.devDeployment !== \"local\") {\n if (\n cmdOptions.localCloudPort !== undefined ||\n cmdOptions.localSitePort !== undefined ||\n cmdOptions.localBackendVersion !== undefined ||\n cmdOptions.localForceUpgrade === true\n ) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-*` options can only be used with `--configure --dev-deployment local` or `--local`.\",\n });\n }\n } else {\n if (cmdOptions.localCloudPort !== undefined) {\n if (cmdOptions.localSitePort === undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local-cloud-port` requires `--local-site-port` to be set.\",\n });\n }\n localOptions[\"ports\"] = {\n cloud: parseInt(cmdOptions.localCloudPort),\n site: parseInt(cmdOptions.localSitePort),\n };\n }\n localOptions[\"backendVersion\"] = cmdOptions.localBackendVersion;\n localOptions[\"forceUpgrade\"] = cmdOptions.localForceUpgrade;\n }\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n // --configure means \"pick a project\" \u2014 skip deployment selection entirely\n const deploymentSelection =\n configure !== null\n ? ({\n kind: \"chooseProject\",\n selectionWithinProject: {\n // For backwards compatibility, allow `--configure --prod`\n kind: cmdOptions.prod ? \"prod\" : \"unspecified\",\n },\n } satisfies DeploymentSelection)\n : await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n });\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -33,7 +33,7 @@ export const docs = new Command("docs").description("Open the docs in the browse
33
33
  `get_cookie/${configuredDeployment}`,
34
34
  BIG_BRAIN_URL
35
35
  );
36
- const fetch = await bigBrainFetch(ctx);
36
+ const fetch = bigBrainFetch(ctx);
37
37
  try {
38
38
  const res = await fetch(getCookieUrl);
39
39
  deprecationCheckWarning(ctx, res);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/docs.ts"],
4
- "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport open from \"open\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logMessage } from \"../bundler/log.js\";\nimport {\n BIG_BRAIN_URL,\n bigBrainFetch,\n deprecationCheckWarning,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\n\nexport const docs = new Command(\"docs\")\n .description(\"Open the docs in the browser\")\n .allowExcessArguments(false)\n .option(\"--no-open\", \"Print docs URL instead of opening it in your browser\")\n .action(async (options) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n const deploymentSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n const configuredDeployment =\n deploymentNameFromSelection(deploymentSelection);\n if (configuredDeployment === null) {\n await openDocs(ctx, options.open);\n return;\n }\n const getCookieUrl = new URL(\n `get_cookie/${configuredDeployment}`,\n BIG_BRAIN_URL,\n );\n const fetch = await bigBrainFetch(ctx);\n try {\n const res = await fetch(getCookieUrl);\n deprecationCheckWarning(ctx, res);\n const { cookie } = await res.json();\n await openDocs(ctx, options.open, cookie);\n } catch {\n await openDocs(ctx, options.open);\n }\n });\n\nasync function openDocs(ctx: Context, toOpen: boolean, cookie?: string) {\n let docsUrl = \"https://docs.convex.dev\";\n if (cookie !== undefined) {\n docsUrl += \"/?t=\" + cookie;\n }\n if (toOpen) {\n await open(docsUrl);\n logMessage(chalkStderr.green(\"Docs have launched! Check your browser.\"));\n } else {\n logMessage(chalkStderr.green(`Find Convex docs here: ${docsUrl}`));\n }\n}\n"],
5
- "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,OAAO,UAAU;AACjB,SAAkB,qBAAqB;AACvC,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEA,aAAM,OAAO,IAAI,QAAQ,MAAM,EACnC,YAAY,8BAA8B,EAC1C,qBAAqB,KAAK,EAC1B,OAAO,aAAa,sDAAsD,EAC1E,OAAO,OAAO,YAAY;AACzB,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,sBAAsB,MAAM,uBAAuB,KAAK;AAAA,IAC5D,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,uBACJ,4BAA4B,mBAAmB;AACjD,MAAI,yBAAyB,MAAM;AACjC,UAAM,SAAS,KAAK,QAAQ,IAAI;AAChC;AAAA,EACF;AACA,QAAM,eAAe,IAAI;AAAA,IACvB,cAAc,oBAAoB;AAAA,IAClC;AAAA,EACF;AACA,QAAM,QAAQ,MAAM,cAAc,GAAG;AACrC,MAAI;AACF,UAAM,MAAM,MAAM,MAAM,YAAY;AACpC,4BAAwB,KAAK,GAAG;AAChC,UAAM,EAAE,OAAO,IAAI,MAAM,IAAI,KAAK;AAClC,UAAM,SAAS,KAAK,QAAQ,MAAM,MAAM;AAAA,EAC1C,QAAQ;AACN,UAAM,SAAS,KAAK,QAAQ,IAAI;AAAA,EAClC;AACF,CAAC;AAEH,eAAe,SAAS,KAAc,QAAiB,QAAiB;AACtE,MAAI,UAAU;AACd,MAAI,WAAW,QAAW;AACxB,eAAW,SAAS;AAAA,EACtB;AACA,MAAI,QAAQ;AACV,UAAM,KAAK,OAAO;AAClB,eAAW,YAAY,MAAM,yCAAyC,CAAC;AAAA,EACzE,OAAO;AACL,eAAW,YAAY,MAAM,0BAA0B,OAAO,EAAE,CAAC;AAAA,EACnE;AACF;",
4
+ "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport open from \"open\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logMessage } from \"../bundler/log.js\";\nimport {\n BIG_BRAIN_URL,\n bigBrainFetch,\n deprecationCheckWarning,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\n\nexport const docs = new Command(\"docs\")\n .description(\"Open the docs in the browser\")\n .allowExcessArguments(false)\n .option(\"--no-open\", \"Print docs URL instead of opening it in your browser\")\n .action(async (options) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n const deploymentSelection = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n const configuredDeployment =\n deploymentNameFromSelection(deploymentSelection);\n if (configuredDeployment === null) {\n await openDocs(ctx, options.open);\n return;\n }\n const getCookieUrl = new URL(\n `get_cookie/${configuredDeployment}`,\n BIG_BRAIN_URL,\n );\n const fetch = bigBrainFetch(ctx);\n try {\n const res = await fetch(getCookieUrl);\n deprecationCheckWarning(ctx, res);\n const { cookie } = await res.json();\n await openDocs(ctx, options.open, cookie);\n } catch {\n await openDocs(ctx, options.open);\n }\n });\n\nasync function openDocs(ctx: Context, toOpen: boolean, cookie?: string) {\n let docsUrl = \"https://docs.convex.dev\";\n if (cookie !== undefined) {\n docsUrl += \"/?t=\" + cookie;\n }\n if (toOpen) {\n await open(docsUrl);\n logMessage(chalkStderr.green(\"Docs have launched! Check your browser.\"));\n } else {\n logMessage(chalkStderr.green(`Find Convex docs here: ${docsUrl}`));\n }\n}\n"],
5
+ "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,OAAO,UAAU;AACjB,SAAkB,qBAAqB;AACvC,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEA,aAAM,OAAO,IAAI,QAAQ,MAAM,EACnC,YAAY,8BAA8B,EAC1C,qBAAqB,KAAK,EAC1B,OAAO,aAAa,sDAAsD,EAC1E,OAAO,OAAO,YAAY;AACzB,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,sBAAsB,MAAM,uBAAuB,KAAK;AAAA,IAC5D,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,QAAM,uBACJ,4BAA4B,mBAAmB;AACjD,MAAI,yBAAyB,MAAM;AACjC,UAAM,SAAS,KAAK,QAAQ,IAAI;AAChC;AAAA,EACF;AACA,QAAM,eAAe,IAAI;AAAA,IACvB,cAAc,oBAAoB;AAAA,IAClC;AAAA,EACF;AACA,QAAM,QAAQ,cAAc,GAAG;AAC/B,MAAI;AACF,UAAM,MAAM,MAAM,MAAM,YAAY;AACpC,4BAAwB,KAAK,GAAG;AAChC,UAAM,EAAE,OAAO,IAAI,MAAM,IAAI,KAAK;AAClC,UAAM,SAAS,KAAK,QAAQ,MAAM,MAAM;AAAA,EAC1C,QAAQ;AACN,UAAM,SAAS,KAAK,QAAQ,IAAI;AAAA,EAClC;AACF,CAAC;AAEH,eAAe,SAAS,KAAc,QAAiB,QAAiB;AACtE,MAAI,UAAU;AACd,MAAI,WAAW,QAAW;AACxB,eAAW,SAAS;AAAA,EACtB;AACA,MAAI,QAAQ;AACV,UAAM,KAAK,OAAO;AAClB,eAAW,YAAY,MAAM,yCAAyC,CAAC;AAAA,EACzE,OAAO;AACL,eAAW,YAAY,MAAM,0BAA0B,OAAO,EAAE,CAAC;AAAA,EACnE;AACF;",
6
6
  "names": []
7
7
  }
@@ -4,7 +4,7 @@ import { oneoffContext } from "../bundler/context.js";
4
4
  import { logVerbose } from "../bundler/log.js";
5
5
  import { deploymentCredentialsOrConfigure } from "./configure.js";
6
6
  import { getDeploymentSelection } from "./lib/deploymentSelection.js";
7
- import { checkVersion } from "./lib/updates.js";
7
+ import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
8
8
  import { usageStateWarning } from "./lib/usage.js";
9
9
  export const init = new Command("init").description(
10
10
  "Ensures a Convex project is configured and initialized in the current directory. Does nothing if one is already configured. Unlike `npx convex dev`, it will not push code or typecheck.\nTypically you can skip this and run `npx convex dev` directly which will both initialize and continously deploy code. \n\nTo initialize an agent: `export CONVEX_AGENT_MODE=anonymous && npx convex init && npx convex env set < .env.defaults && npx convex dev`."
@@ -30,7 +30,7 @@ export const init = new Command("init").description(
30
30
  if (credentials.deploymentFields !== null) {
31
31
  await Promise.all([
32
32
  usageStateWarning(ctx, credentials.deploymentFields.deploymentName),
33
- checkVersion(ctx)
33
+ checkVersionAndAiFilesStaleness(ctx)
34
34
  ]);
35
35
  }
36
36
  await ctx.flushAndExit(0);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/init.ts"],
4
- "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersion } from \"./lib/updates.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\n\n// Equivalent to `npx convex dev --once --skip-push`.\nexport const init = new Command(\"init\")\n .description(\n \"Ensures a Convex project is configured and initialized in the current directory. Does nothing if one is already configured. Unlike `npx convex dev`, it will not push code or typecheck.\\nTypically you can skip this and run `npx convex dev` directly which will both initialize and continously deploy code. \\n\\nTo initialize an agent: `export CONVEX_AGENT_MODE=anonymous && npx convex init && npx convex env set < .env.defaults && npx convex dev`.\",\n )\n .summary(\n \"Ensures a Convex project is configured. Does not push code. No-ops if already configured.\",\n )\n .allowExcessArguments(false)\n .action(async () => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n const deploymentSelection = await getDeploymentSelection(ctx, {});\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n null,\n { prod: false, localOptions: { forceUpgrade: false } },\n );\n\n if (credentials.deploymentFields !== null) {\n await Promise.all([\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersion(ctx),\n ]);\n }\n\n await ctx.flushAndExit(0);\n });\n"],
5
- "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,wCAAwC;AACjD,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAG3B,aAAM,OAAO,IAAI,QAAQ,MAAM,EACnC;AAAA,EACC;AACF,EACC;AAAA,EACC;AACF,EACC,qBAAqB,KAAK,EAC1B,OAAO,YAAY;AAClB,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,UAAQ,GAAG,UAAU,YAAY;AAC/B,eAAW,iCAAiC;AAC5C,UAAM,IAAI,aAAa,EAAE;AAAA,EAC3B,CAAC;AAED,QAAM,sBAAsB,MAAM,uBAAuB,KAAK,CAAC,CAAC;AAChE,QAAM,cAAc,MAAM;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,MAAM,OAAO,cAAc,EAAE,cAAc,MAAM,EAAE;AAAA,EACvD;AAEA,MAAI,YAAY,qBAAqB,MAAM;AACzC,UAAM,QAAQ,IAAI;AAAA,MAChB,kBAAkB,KAAK,YAAY,iBAAiB,cAAc;AAAA,MAClE,aAAa,GAAG;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,IAAI,aAAa,CAAC;AAC1B,CAAC;",
4
+ "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport { logVerbose } from \"../bundler/log.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\n\n// Equivalent to `npx convex dev --once --skip-push`.\nexport const init = new Command(\"init\")\n .description(\n \"Ensures a Convex project is configured and initialized in the current directory. Does nothing if one is already configured. Unlike `npx convex dev`, it will not push code or typecheck.\\nTypically you can skip this and run `npx convex dev` directly which will both initialize and continously deploy code. \\n\\nTo initialize an agent: `export CONVEX_AGENT_MODE=anonymous && npx convex init && npx convex env set < .env.defaults && npx convex dev`.\",\n )\n .summary(\n \"Ensures a Convex project is configured. Does not push code. No-ops if already configured.\",\n )\n .allowExcessArguments(false)\n .action(async () => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n process.on(\"SIGINT\", async () => {\n logVerbose(\"Received SIGINT, cleaning up...\");\n await ctx.flushAndExit(-2);\n });\n\n const deploymentSelection = await getDeploymentSelection(ctx, {});\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n null,\n { prod: false, localOptions: { forceUpgrade: false } },\n );\n\n if (credentials.deploymentFields !== null) {\n await Promise.all([\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]);\n }\n\n await ctx.flushAndExit(0);\n });\n"],
5
+ "mappings": ";AAAA,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,wCAAwC;AACjD,SAAS,8BAA8B;AACvC,SAAS,uCAAuC;AAChD,SAAS,yBAAyB;AAG3B,aAAM,OAAO,IAAI,QAAQ,MAAM,EACnC;AAAA,EACC;AACF,EACC;AAAA,EACC;AACF,EACC,qBAAqB,KAAK,EAC1B,OAAO,YAAY;AAClB,QAAM,MAAM,MAAM,cAAc;AAAA,IAC9B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AACD,UAAQ,GAAG,UAAU,YAAY;AAC/B,eAAW,iCAAiC;AAC5C,UAAM,IAAI,aAAa,EAAE;AAAA,EAC3B,CAAC;AAED,QAAM,sBAAsB,MAAM,uBAAuB,KAAK,CAAC,CAAC;AAChE,QAAM,cAAc,MAAM;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,MAAM,OAAO,cAAc,EAAE,cAAc,MAAM,EAAE;AAAA,EACvD;AAEA,MAAI,YAAY,qBAAqB,MAAM;AACzC,UAAM,QAAQ,IAAI;AAAA,MAChB,kBAAkB,KAAK,YAAY,iBAAiB,cAAc;AAAA,MAClE,gCAAgC,GAAG;AAAA,IACrC,CAAC;AAAA,EACH;AAEA,QAAM,IAAI,aAAa,CAAC;AAC1B,CAAC;",
6
6
  "names": []
7
7
  }
@@ -7,10 +7,12 @@ import {
7
7
  import { agentsMdPath } from "./paths.js";
8
8
  import {
9
9
  injectManagedSection,
10
- stripManagedSection,
10
+ attemptToStripManagedSection,
11
11
  hasManagedSection,
12
- removeMarkdownSection
12
+ attemptToRemoveMarkdownSection
13
13
  } from "./utils.js";
14
+ import { logMessage } from "../../../bundler/log.js";
15
+ import { chalkStderr } from "chalk";
14
16
  function target(projectDir) {
15
17
  return {
16
18
  filePath: agentsMdPath(projectDir),
@@ -24,13 +26,13 @@ export async function injectAgentsMdSection({
24
26
  }) {
25
27
  return injectManagedSection({ ...target(projectDir), section });
26
28
  }
27
- export async function stripAgentsMdSection(projectDir) {
28
- return stripManagedSection(target(projectDir));
29
+ export async function attemptToStripAgentsMdSection(projectDir) {
30
+ return attemptToStripManagedSection(target(projectDir));
29
31
  }
30
- export async function removeAgentsMdSection(projectDir) {
31
- return removeMarkdownSection({
32
+ export async function attemptToRemoveAgentsMdSection(projectDir) {
33
+ return attemptToRemoveMarkdownSection({
32
34
  projectDir,
33
- strip: stripAgentsMdSection,
35
+ strip: attemptToStripAgentsMdSection,
34
36
  fileName: "AGENTS.md"
35
37
  });
36
38
  }
@@ -39,14 +41,16 @@ export async function hasAgentsMdInstalled(projectDir) {
39
41
  }
40
42
  export async function applyAgentsMdSection({
41
43
  projectDir,
42
- config,
44
+ state,
43
45
  convexDirName
44
46
  }) {
45
47
  const result = await injectAgentsMdSection({
46
48
  section: agentsMdConvexSection(convexDirName),
47
49
  projectDir
48
50
  });
49
- config.agentsMdSectionHash = result.sectionHash;
51
+ if (result.didWrite)
52
+ logMessage(`${chalkStderr.green("\u2714")} AGENTS.md written`);
53
+ state.agentsMdSectionHash = result.sectionHash;
50
54
  return result.didWrite;
51
55
  }
52
56
  //# sourceMappingURL=agentsmd.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/cli/lib/aiFiles/agentsmd.ts"],
4
- "sourcesContent": ["import {\n AGENTS_MD_START_MARKER,\n AGENTS_MD_END_MARKER,\n agentsMdConvexSection,\n} from \"../../codegen_templates/agentsmd.js\";\nimport { agentsMdPath } from \"./paths.js\";\nimport { type AiFilesConfig } from \"./config.js\";\nimport {\n type ManagedSectionTarget,\n type InjectResult,\n type StripResult,\n injectManagedSection,\n stripManagedSection,\n hasManagedSection,\n removeMarkdownSection,\n} from \"./utils.js\";\n\nfunction target(projectDir?: string): ManagedSectionTarget {\n return {\n filePath: agentsMdPath(projectDir),\n startMarker: AGENTS_MD_START_MARKER,\n endMarker: AGENTS_MD_END_MARKER,\n };\n}\n\nexport async function injectAgentsMdSection({\n section,\n projectDir,\n}: {\n section: string;\n projectDir?: string;\n}): Promise<InjectResult> {\n return injectManagedSection({ ...target(projectDir), section });\n}\n\nexport async function stripAgentsMdSection(\n projectDir: string,\n): Promise<StripResult> {\n return stripManagedSection(target(projectDir));\n}\n\nexport async function removeAgentsMdSection(\n projectDir: string,\n): Promise<boolean> {\n return removeMarkdownSection({\n projectDir,\n strip: stripAgentsMdSection,\n fileName: \"AGENTS.md\",\n });\n}\n\nexport async function hasAgentsMdInstalled(\n projectDir: string,\n): Promise<boolean> {\n return hasManagedSection(target(projectDir));\n}\n\n/**\n * Inject (or update) the Convex section in AGENTS.md and record the hash.\n * Returns true if the file was actually written.\n */\nexport async function applyAgentsMdSection({\n projectDir,\n config,\n convexDirName,\n}: {\n projectDir: string;\n config: AiFilesConfig;\n convexDirName: string;\n}): Promise<boolean> {\n const result = await injectAgentsMdSection({\n section: agentsMdConvexSection(convexDirName),\n projectDir,\n });\n config.agentsMdSectionHash = result.sectionHash;\n return result.didWrite;\n}\n"],
5
- "mappings": ";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAE7B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,OAAO,YAA2C;AACzD,SAAO;AAAA,IACL,UAAU,aAAa,UAAU;AAAA,IACjC,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAG0B;AACxB,SAAO,qBAAqB,EAAE,GAAG,OAAO,UAAU,GAAG,QAAQ,CAAC;AAChE;AAEA,sBAAsB,qBACpB,YACsB;AACtB,SAAO,oBAAoB,OAAO,UAAU,CAAC;AAC/C;AAEA,sBAAsB,sBACpB,YACkB;AAClB,SAAO,sBAAsB;AAAA,IAC3B;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AACH;AAEA,sBAAsB,qBACpB,YACkB;AAClB,SAAO,kBAAkB,OAAO,UAAU,CAAC;AAC7C;AAMA,sBAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIqB;AACnB,QAAM,SAAS,MAAM,sBAAsB;AAAA,IACzC,SAAS,sBAAsB,aAAa;AAAA,IAC5C;AAAA,EACF,CAAC;AACD,SAAO,sBAAsB,OAAO;AACpC,SAAO,OAAO;AAChB;",
4
+ "sourcesContent": ["import {\n AGENTS_MD_START_MARKER,\n AGENTS_MD_END_MARKER,\n agentsMdConvexSection,\n} from \"../../codegen_templates/agentsmd.js\";\nimport { agentsMdPath } from \"./paths.js\";\nimport { type AiFilesState } from \"./state.js\";\nimport {\n type ManagedSectionTarget,\n type InjectResult,\n type StripResult,\n injectManagedSection,\n attemptToStripManagedSection,\n hasManagedSection,\n attemptToRemoveMarkdownSection,\n} from \"./utils.js\";\nimport { logMessage } from \"../../../bundler/log.js\";\nimport { chalkStderr } from \"chalk\";\n\nfunction target(projectDir?: string): ManagedSectionTarget {\n return {\n filePath: agentsMdPath(projectDir),\n startMarker: AGENTS_MD_START_MARKER,\n endMarker: AGENTS_MD_END_MARKER,\n };\n}\n\nexport async function injectAgentsMdSection({\n section,\n projectDir,\n}: {\n section: string;\n projectDir?: string;\n}): Promise<InjectResult> {\n return injectManagedSection({ ...target(projectDir), section });\n}\n\nexport async function attemptToStripAgentsMdSection(\n projectDir: string,\n): Promise<StripResult> {\n return attemptToStripManagedSection(target(projectDir));\n}\n\nexport async function attemptToRemoveAgentsMdSection(\n projectDir: string,\n): Promise<boolean> {\n return attemptToRemoveMarkdownSection({\n projectDir,\n strip: attemptToStripAgentsMdSection,\n fileName: \"AGENTS.md\",\n });\n}\n\nexport async function hasAgentsMdInstalled(\n projectDir: string,\n): Promise<boolean> {\n return hasManagedSection(target(projectDir));\n}\n\n/**\n * Inject (or update) the Convex section in AGENTS.md and record the hash.\n * Returns true if the file was actually written.\n */\nexport async function applyAgentsMdSection({\n projectDir,\n state,\n convexDirName,\n}: {\n projectDir: string;\n state: AiFilesState;\n convexDirName: string;\n}): Promise<boolean> {\n const result = await injectAgentsMdSection({\n section: agentsMdConvexSection(convexDirName),\n projectDir,\n });\n if (result.didWrite)\n logMessage(`${chalkStderr.green(\"\u2714\")} AGENTS.md written`);\n state.agentsMdSectionHash = result.sectionHash;\n return result.didWrite;\n}\n"],
5
+ "mappings": ";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAE7B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAE5B,SAAS,OAAO,YAA2C;AACzD,SAAO;AAAA,IACL,UAAU,aAAa,UAAU;AAAA,IACjC,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAG0B;AACxB,SAAO,qBAAqB,EAAE,GAAG,OAAO,UAAU,GAAG,QAAQ,CAAC;AAChE;AAEA,sBAAsB,8BACpB,YACsB;AACtB,SAAO,6BAA6B,OAAO,UAAU,CAAC;AACxD;AAEA,sBAAsB,+BACpB,YACkB;AAClB,SAAO,+BAA+B;AAAA,IACpC;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AACH;AAEA,sBAAsB,qBACpB,YACkB;AAClB,SAAO,kBAAkB,OAAO,UAAU,CAAC;AAC7C;AAMA,sBAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIqB;AACnB,QAAM,SAAS,MAAM,sBAAsB;AAAA,IACzC,SAAS,sBAAsB,aAAa;AAAA,IAC5C;AAAA,EACF,CAAC;AACD,MAAI,OAAO;AACT,eAAW,GAAG,YAAY,MAAM,QAAG,CAAC,oBAAoB;AAC1D,QAAM,sBAAsB,OAAO;AACnC,SAAO,OAAO;AAChB;",
6
6
  "names": []
7
7
  }
@@ -7,10 +7,12 @@ import {
7
7
  import { claudeMdPath } from "./paths.js";
8
8
  import {
9
9
  injectManagedSection,
10
- stripManagedSection,
10
+ attemptToStripManagedSection,
11
11
  hasManagedSection,
12
- removeMarkdownSection
12
+ attemptToRemoveMarkdownSection
13
13
  } from "./utils.js";
14
+ import { logMessage } from "../../../bundler/log.js";
15
+ import { chalkStderr } from "chalk";
14
16
  function target(projectDir) {
15
17
  return {
16
18
  filePath: claudeMdPath(projectDir),
@@ -24,13 +26,13 @@ export async function injectClaudeMdSection({
24
26
  }) {
25
27
  return injectManagedSection({ ...target(projectDir), section });
26
28
  }
27
- export async function stripClaudeMdSection(projectDir) {
28
- return stripManagedSection(target(projectDir));
29
+ export async function attemptToStripClaudeMdSection(projectDir) {
30
+ return attemptToStripManagedSection(target(projectDir));
29
31
  }
30
- export async function removeClaudeMdSection(projectDir) {
31
- return removeMarkdownSection({
32
+ export async function attemptToRemoveClaudeMdSection(projectDir) {
33
+ return attemptToRemoveMarkdownSection({
32
34
  projectDir,
33
- strip: stripClaudeMdSection,
35
+ strip: attemptToStripClaudeMdSection,
34
36
  fileName: "CLAUDE.md"
35
37
  });
36
38
  }
@@ -39,14 +41,16 @@ export async function hasClaudeMdInstalled(projectDir) {
39
41
  }
40
42
  export async function applyClaudeMdSection({
41
43
  projectDir,
42
- config,
44
+ state,
43
45
  convexDirName
44
46
  }) {
45
47
  const result = await injectClaudeMdSection({
46
48
  section: claudeMdConvexSection(convexDirName),
47
49
  projectDir
48
50
  });
49
- config.claudeMdHash = result.sectionHash;
51
+ if (result.didWrite)
52
+ logMessage(`${chalkStderr.green("\u2714")} CLAUDE.md written`);
53
+ state.claudeMdHash = result.sectionHash;
50
54
  return result.didWrite;
51
55
  }
52
56
  //# sourceMappingURL=claudemd.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/cli/lib/aiFiles/claudemd.ts"],
4
- "sourcesContent": ["import {\n CLAUDE_MD_END_MARKER,\n CLAUDE_MD_START_MARKER,\n claudeMdConvexSection,\n} from \"../../codegen_templates/claudemd.js\";\nimport { claudeMdPath } from \"./paths.js\";\nimport { type AiFilesConfig } from \"./config.js\";\nimport {\n type ManagedSectionTarget,\n type InjectResult,\n type StripResult,\n injectManagedSection,\n stripManagedSection,\n hasManagedSection,\n removeMarkdownSection,\n} from \"./utils.js\";\n\nfunction target(projectDir?: string): ManagedSectionTarget {\n return {\n filePath: claudeMdPath(projectDir),\n startMarker: CLAUDE_MD_START_MARKER,\n endMarker: CLAUDE_MD_END_MARKER,\n };\n}\n\nexport async function injectClaudeMdSection({\n section,\n projectDir,\n}: {\n section: string;\n projectDir?: string;\n}): Promise<InjectResult> {\n return injectManagedSection({ ...target(projectDir), section });\n}\n\nexport async function stripClaudeMdSection(\n projectDir: string,\n): Promise<StripResult> {\n return stripManagedSection(target(projectDir));\n}\n\nexport async function removeClaudeMdSection(\n projectDir: string,\n): Promise<boolean> {\n return removeMarkdownSection({\n projectDir,\n strip: stripClaudeMdSection,\n fileName: \"CLAUDE.md\",\n });\n}\n\nexport async function hasClaudeMdInstalled(\n projectDir: string,\n): Promise<boolean> {\n return hasManagedSection(target(projectDir));\n}\n\n/**\n * Inject (or update) the Convex section in CLAUDE.md and record the hash.\n * Returns true if the file was actually written.\n */\nexport async function applyClaudeMdSection({\n projectDir,\n config,\n convexDirName,\n}: {\n projectDir: string;\n config: AiFilesConfig;\n convexDirName: string;\n}): Promise<boolean> {\n const result = await injectClaudeMdSection({\n section: claudeMdConvexSection(convexDirName),\n projectDir,\n });\n config.claudeMdHash = result.sectionHash;\n return result.didWrite;\n}\n"],
5
- "mappings": ";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAE7B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,OAAO,YAA2C;AACzD,SAAO;AAAA,IACL,UAAU,aAAa,UAAU;AAAA,IACjC,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAG0B;AACxB,SAAO,qBAAqB,EAAE,GAAG,OAAO,UAAU,GAAG,QAAQ,CAAC;AAChE;AAEA,sBAAsB,qBACpB,YACsB;AACtB,SAAO,oBAAoB,OAAO,UAAU,CAAC;AAC/C;AAEA,sBAAsB,sBACpB,YACkB;AAClB,SAAO,sBAAsB;AAAA,IAC3B;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AACH;AAEA,sBAAsB,qBACpB,YACkB;AAClB,SAAO,kBAAkB,OAAO,UAAU,CAAC;AAC7C;AAMA,sBAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIqB;AACnB,QAAM,SAAS,MAAM,sBAAsB;AAAA,IACzC,SAAS,sBAAsB,aAAa;AAAA,IAC5C;AAAA,EACF,CAAC;AACD,SAAO,eAAe,OAAO;AAC7B,SAAO,OAAO;AAChB;",
4
+ "sourcesContent": ["import {\n CLAUDE_MD_END_MARKER,\n CLAUDE_MD_START_MARKER,\n claudeMdConvexSection,\n} from \"../../codegen_templates/claudemd.js\";\nimport { claudeMdPath } from \"./paths.js\";\nimport { type AiFilesState } from \"./state.js\";\nimport {\n type ManagedSectionTarget,\n type InjectResult,\n type StripResult,\n injectManagedSection,\n attemptToStripManagedSection,\n hasManagedSection,\n attemptToRemoveMarkdownSection,\n} from \"./utils.js\";\nimport { logMessage } from \"../../../bundler/log.js\";\nimport { chalkStderr } from \"chalk\";\n\nfunction target(projectDir?: string): ManagedSectionTarget {\n return {\n filePath: claudeMdPath(projectDir),\n startMarker: CLAUDE_MD_START_MARKER,\n endMarker: CLAUDE_MD_END_MARKER,\n };\n}\n\nexport async function injectClaudeMdSection({\n section,\n projectDir,\n}: {\n section: string;\n projectDir?: string;\n}): Promise<InjectResult> {\n return injectManagedSection({ ...target(projectDir), section });\n}\n\nexport async function attemptToStripClaudeMdSection(\n projectDir: string,\n): Promise<StripResult> {\n return attemptToStripManagedSection(target(projectDir));\n}\n\nexport async function attemptToRemoveClaudeMdSection(\n projectDir: string,\n): Promise<boolean> {\n return attemptToRemoveMarkdownSection({\n projectDir,\n strip: attemptToStripClaudeMdSection,\n fileName: \"CLAUDE.md\",\n });\n}\n\nexport async function hasClaudeMdInstalled(\n projectDir: string,\n): Promise<boolean> {\n return hasManagedSection(target(projectDir));\n}\n\n/**\n * Inject (or update) the Convex section in CLAUDE.md and record the hash.\n * Returns true if the file was actually written.\n */\nexport async function applyClaudeMdSection({\n projectDir,\n state,\n convexDirName,\n}: {\n projectDir: string;\n state: AiFilesState;\n convexDirName: string;\n}): Promise<boolean> {\n const result = await injectClaudeMdSection({\n section: claudeMdConvexSection(convexDirName),\n projectDir,\n });\n if (result.didWrite)\n logMessage(`${chalkStderr.green(\"\u2714\")} CLAUDE.md written`);\n state.claudeMdHash = result.sectionHash;\n return result.didWrite;\n}\n"],
5
+ "mappings": ";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAE7B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAE5B,SAAS,OAAO,YAA2C;AACzD,SAAO;AAAA,IACL,UAAU,aAAa,UAAU;AAAA,IACjC,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAG0B;AACxB,SAAO,qBAAqB,EAAE,GAAG,OAAO,UAAU,GAAG,QAAQ,CAAC;AAChE;AAEA,sBAAsB,8BACpB,YACsB;AACtB,SAAO,6BAA6B,OAAO,UAAU,CAAC;AACxD;AAEA,sBAAsB,+BACpB,YACkB;AAClB,SAAO,+BAA+B;AAAA,IACpC;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AACH;AAEA,sBAAsB,qBACpB,YACkB;AAClB,SAAO,kBAAkB,OAAO,UAAU,CAAC;AAC7C;AAMA,sBAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,GAIqB;AACnB,QAAM,SAAS,MAAM,sBAAsB;AAAA,IACzC,SAAS,sBAAsB,aAAa;AAAA,IAC5C;AAAA,EACF,CAAC;AACD,MAAI,OAAO;AACT,eAAW,GAAG,YAAY,MAAM,QAAG,CAAC,oBAAoB;AAC1D,QAAM,eAAe,OAAO;AAC5B,SAAO,OAAO;AAChB;",
6
6
  "names": []
7
7
  }
@@ -4,14 +4,17 @@ import { chalkStderr } from "chalk";
4
4
  import { logMessage } from "../../../bundler/log.js";
5
5
  import { downloadGuidelines } from "../versionApi.js";
6
6
  import { hashSha256 } from "../utils/hash.js";
7
- import { guidelinesPathForConvexDir } from "./paths.js";
8
- import { readFileSafe } from "./utils.js";
7
+ import { aiDirForConvexDir, guidelinesPathForConvexDir } from "./paths.js";
8
+ import { attemptReadFile, exhaustiveCheck } from "./utils.js";
9
9
  export async function hasGuidelinesInstalled(convexDir) {
10
- return await readFileSafe(guidelinesPathForConvexDir(convexDir)) !== null;
10
+ const result = await attemptReadFile(guidelinesPathForConvexDir(convexDir));
11
+ if (result.kind === "content") return true;
12
+ if (result.kind === "empty" || result.kind === "not-found") return false;
13
+ return exhaustiveCheck(result);
11
14
  }
12
15
  export async function installGuidelinesFile({
13
16
  convexDir,
14
- config
17
+ state
15
18
  }) {
16
19
  const guidelines = await downloadGuidelines();
17
20
  if (guidelines === null) {
@@ -22,7 +25,11 @@ export async function installGuidelinesFile({
22
25
  );
23
26
  return;
24
27
  }
28
+ await fs.mkdir(aiDirForConvexDir(convexDir), { recursive: true });
25
29
  await fs.writeFile(guidelinesPathForConvexDir(convexDir), guidelines, "utf8");
26
- config.guidelinesHash = hashSha256(guidelines);
30
+ state.guidelinesHash = hashSha256(guidelines);
31
+ logMessage(
32
+ `${chalkStderr.green("\u2714")} ${guidelinesPathForConvexDir(convexDir)} written`
33
+ );
27
34
  }
28
35
  //# sourceMappingURL=guidelinesmd.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/cli/lib/aiFiles/guidelinesmd.ts"],
4
- "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { promises as fs } from \"fs\";\nimport { chalkStderr } from \"chalk\";\nimport { logMessage } from \"../../../bundler/log.js\";\nimport { downloadGuidelines } from \"../versionApi.js\";\nimport { hashSha256 } from \"../utils/hash.js\";\nimport { guidelinesPathForConvexDir } from \"./paths.js\";\nimport { readFileSafe } from \"./utils.js\";\nimport { type AiFilesConfig } from \"./config.js\";\n\nexport async function hasGuidelinesInstalled(\n convexDir: string,\n): Promise<boolean> {\n return (await readFileSafe(guidelinesPathForConvexDir(convexDir))) !== null;\n}\n\n/**\n * Download and write the guidelines file.\n * Guidelines live in `_generated/` so local edits are not expected and are\n * not preserved.\n */\nexport async function installGuidelinesFile({\n convexDir,\n config,\n}: {\n convexDir: string;\n config: AiFilesConfig;\n}): Promise<void> {\n const guidelines = await downloadGuidelines();\n if (guidelines === null) {\n logMessage(\n chalkStderr.yellow(\n \"Could not download Convex AI guidelines right now. You can retry with: npx convex ai-files install\",\n ),\n );\n return;\n }\n\n await fs.writeFile(guidelinesPathForConvexDir(convexDir), guidelines, \"utf8\");\n config.guidelinesHash = hashSha256(guidelines);\n}\n"],
5
- "mappings": ";AACA,SAAS,YAAY,UAAU;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,0BAA0B;AACnC,SAAS,kBAAkB;AAC3B,SAAS,kCAAkC;AAC3C,SAAS,oBAAoB;AAG7B,sBAAsB,uBACpB,WACkB;AAClB,SAAQ,MAAM,aAAa,2BAA2B,SAAS,CAAC,MAAO;AACzE;AAOA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAGkB;AAChB,QAAM,aAAa,MAAM,mBAAmB;AAC5C,MAAI,eAAe,MAAM;AACvB;AAAA,MACE,YAAY;AAAA,QACV;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,QAAM,GAAG,UAAU,2BAA2B,SAAS,GAAG,YAAY,MAAM;AAC5E,SAAO,iBAAiB,WAAW,UAAU;AAC/C;",
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { promises as fs } from \"fs\";\nimport { chalkStderr } from \"chalk\";\nimport { logMessage } from \"../../../bundler/log.js\";\nimport { downloadGuidelines } from \"../versionApi.js\";\nimport { hashSha256 } from \"../utils/hash.js\";\nimport { aiDirForConvexDir, guidelinesPathForConvexDir } from \"./paths.js\";\nimport { attemptReadFile, exhaustiveCheck } from \"./utils.js\";\nimport { type AiFilesState } from \"./state.js\";\n\nexport async function hasGuidelinesInstalled(\n convexDir: string,\n): Promise<boolean> {\n const result = await attemptReadFile(guidelinesPathForConvexDir(convexDir));\n if (result.kind === \"content\") return true;\n if (result.kind === \"empty\" || result.kind === \"not-found\") return false;\n return exhaustiveCheck(result);\n}\n\n/**\n * Download and write the guidelines file.\n * Guidelines live in `_generated/` so local edits are not expected and are\n * not preserved.\n */\nexport async function installGuidelinesFile({\n convexDir,\n state,\n}: {\n convexDir: string;\n state: AiFilesState;\n}): Promise<void> {\n const guidelines = await downloadGuidelines();\n if (guidelines === null) {\n logMessage(\n chalkStderr.yellow(\n \"Could not download Convex AI guidelines right now. You can retry with: npx convex ai-files install\",\n ),\n );\n return;\n }\n\n await fs.mkdir(aiDirForConvexDir(convexDir), { recursive: true });\n await fs.writeFile(guidelinesPathForConvexDir(convexDir), guidelines, \"utf8\");\n state.guidelinesHash = hashSha256(guidelines);\n\n logMessage(\n `${chalkStderr.green(\"\u2714\")} ${guidelinesPathForConvexDir(convexDir)} written`,\n );\n}\n"],
5
+ "mappings": ";AACA,SAAS,YAAY,UAAU;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,SAAS,0BAA0B;AACnC,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB,kCAAkC;AAC9D,SAAS,iBAAiB,uBAAuB;AAGjD,sBAAsB,uBACpB,WACkB;AAClB,QAAM,SAAS,MAAM,gBAAgB,2BAA2B,SAAS,CAAC;AAC1E,MAAI,OAAO,SAAS,UAAW,QAAO;AACtC,MAAI,OAAO,SAAS,WAAW,OAAO,SAAS,YAAa,QAAO;AACnE,SAAO,gBAAgB,MAAM;AAC/B;AAOA,sBAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AACF,GAGkB;AAChB,QAAM,aAAa,MAAM,mBAAmB;AAC5C,MAAI,eAAe,MAAM;AACvB;AAAA,MACE,YAAY;AAAA,QACV;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,QAAM,GAAG,MAAM,kBAAkB,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE,QAAM,GAAG,UAAU,2BAA2B,SAAS,GAAG,YAAY,MAAM;AAC5E,QAAM,iBAAiB,WAAW,UAAU;AAE5C;AAAA,IACE,GAAG,YAAY,MAAM,QAAG,CAAC,IAAI,2BAA2B,SAAS,CAAC;AAAA,EACpE;AACF;",
6
6
  "names": []
7
7
  }