convex 1.34.0 → 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 (607) hide show
  1. package/CHANGELOG.md +98 -43
  2. package/dist/browser.bundle.js +13 -10
  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/browser/sync/authentication_manager.js +4 -1
  9. package/dist/cjs/browser/sync/authentication_manager.js.map +2 -2
  10. package/dist/cjs/browser/sync/web_socket_manager.js +1 -7
  11. package/dist/cjs/browser/sync/web_socket_manager.js.map +2 -2
  12. package/dist/cjs/cli/aiFiles.js +39 -20
  13. package/dist/cjs/cli/aiFiles.js.map +3 -3
  14. package/dist/cjs/cli/codegen_templates/readme.js +14 -1
  15. package/dist/cjs/cli/codegen_templates/readme.js.map +2 -2
  16. package/dist/cjs/cli/configure.js +34 -32
  17. package/dist/cjs/cli/configure.js.map +2 -2
  18. package/dist/cjs/cli/deploy.js +7 -8
  19. package/dist/cjs/cli/deploy.js.map +2 -2
  20. package/dist/cjs/cli/deploymentCreate.js +225 -40
  21. package/dist/cjs/cli/deploymentCreate.js.map +3 -3
  22. package/dist/cjs/cli/deploymentSelect.js +14 -13
  23. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  24. package/dist/cjs/cli/dev.js +30 -11
  25. package/dist/cjs/cli/dev.js.map +2 -2
  26. package/dist/cjs/cli/docs.js +1 -1
  27. package/dist/cjs/cli/docs.js.map +2 -2
  28. package/dist/cjs/cli/init.js +1 -1
  29. package/dist/cjs/cli/init.js.map +2 -2
  30. package/dist/cjs/cli/lib/aiFiles/agentsmd.js +73 -0
  31. package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +7 -0
  32. package/dist/cjs/cli/lib/aiFiles/claudemd.js +73 -0
  33. package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +7 -0
  34. package/dist/cjs/cli/lib/aiFiles/cursorrules.js +48 -0
  35. package/dist/cjs/cli/lib/aiFiles/cursorrules.js.map +7 -0
  36. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +58 -0
  37. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +7 -0
  38. package/dist/cjs/cli/lib/aiFiles/index.js +215 -0
  39. package/dist/cjs/cli/lib/aiFiles/index.js.map +7 -0
  40. package/dist/cjs/cli/lib/aiFiles/paths.js.map +7 -0
  41. package/dist/cjs/cli/lib/aiFiles/skills.js +196 -0
  42. package/dist/cjs/cli/lib/aiFiles/skills.js.map +7 -0
  43. package/dist/cjs/cli/lib/aiFiles/state.js +96 -0
  44. package/dist/cjs/cli/lib/aiFiles/state.js.map +7 -0
  45. package/dist/cjs/cli/lib/aiFiles/status.js +198 -0
  46. package/dist/cjs/cli/lib/aiFiles/status.js.map +7 -0
  47. package/dist/cjs/cli/lib/aiFiles/utils.js +128 -0
  48. package/dist/cjs/cli/lib/aiFiles/utils.js.map +7 -0
  49. package/dist/cjs/cli/lib/api.js +70 -7
  50. package/dist/cjs/cli/lib/api.js.map +2 -2
  51. package/dist/cjs/cli/lib/command.js +10 -6
  52. package/dist/cjs/cli/lib/command.js.map +2 -2
  53. package/dist/cjs/cli/lib/config.js +43 -7
  54. package/dist/cjs/cli/lib/config.js.map +3 -3
  55. package/dist/cjs/cli/lib/deploy2.js +9 -26
  56. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  57. package/dist/cjs/cli/lib/deployApi/componentDefinition.js +4 -1
  58. package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
  59. package/dist/cjs/cli/lib/deploymentSelection.js +45 -2
  60. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  61. package/dist/cjs/cli/lib/deploymentSelector.js +1 -0
  62. package/dist/cjs/cli/lib/deploymentSelector.js.map +2 -2
  63. package/dist/cjs/cli/lib/dev.js +162 -117
  64. package/dist/cjs/cli/lib/dev.js.map +2 -2
  65. package/dist/cjs/cli/lib/env.js +1 -13
  66. package/dist/cjs/cli/lib/env.js.map +2 -2
  67. package/dist/cjs/cli/lib/expiration.js +104 -0
  68. package/dist/cjs/cli/lib/expiration.js.map +7 -0
  69. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  70. package/dist/cjs/cli/lib/init.js +4 -3
  71. package/dist/cjs/cli/lib/init.js.map +2 -2
  72. package/dist/cjs/cli/lib/insights.js +1 -1
  73. package/dist/cjs/cli/lib/insights.js.map +2 -2
  74. package/dist/cjs/cli/lib/localDeployment/anonymous.js +15 -8
  75. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  76. package/dist/cjs/cli/lib/localDeployment/localDeployment.js +8 -10
  77. package/dist/cjs/cli/lib/localDeployment/localDeployment.js.map +2 -2
  78. package/dist/cjs/cli/lib/localDeployment/run.js +1 -0
  79. package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
  80. package/dist/cjs/cli/lib/localDeployment/upgrade.js +2 -2
  81. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
  82. package/dist/cjs/cli/lib/localDeployment/utils.js +9 -0
  83. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  84. package/dist/cjs/cli/lib/mcp/tools/status.js +1 -1
  85. package/dist/cjs/cli/lib/mcp/tools/status.js.map +2 -2
  86. package/dist/cjs/cli/lib/updates.js +12 -13
  87. package/dist/cjs/cli/lib/updates.js.map +2 -2
  88. package/dist/cjs/cli/lib/usage.js +2 -1
  89. package/dist/cjs/cli/lib/usage.js.map +2 -2
  90. package/dist/cjs/cli/lib/utils/prompts.js +2 -1
  91. package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
  92. package/dist/cjs/cli/lib/utils/utils.js +46 -20
  93. package/dist/cjs/cli/lib/utils/utils.js.map +3 -3
  94. package/dist/cjs/cli/lib/versionApi.js +7 -4
  95. package/dist/cjs/cli/lib/versionApi.js.map +2 -2
  96. package/dist/cjs/cli/lib/workos/workos.js +4 -6
  97. package/dist/cjs/cli/lib/workos/workos.js.map +2 -2
  98. package/dist/cjs/index.js +1 -1
  99. package/dist/cjs/index.js.map +1 -1
  100. package/dist/cjs/react/client.js +43 -6
  101. package/dist/cjs/react/client.js.map +2 -2
  102. package/dist/cjs/react/index.js +2 -0
  103. package/dist/cjs/react/index.js.map +2 -2
  104. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  105. package/dist/cjs/server/api.js.map +2 -2
  106. package/dist/cjs/server/components/definition.js.map +1 -1
  107. package/dist/cjs/server/components/index.js +40 -4
  108. package/dist/cjs/server/components/index.js.map +2 -2
  109. package/dist/cjs/server/data_model.js.map +1 -1
  110. package/dist/cjs/server/impl/meta_impl.js +78 -0
  111. package/dist/cjs/server/impl/meta_impl.js.map +7 -0
  112. package/dist/cjs/server/impl/registration_impl.js +16 -11
  113. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  114. package/dist/cjs/server/index.js.map +2 -2
  115. package/dist/cjs/server/meta.js +17 -0
  116. package/dist/cjs/server/meta.js.map +7 -0
  117. package/dist/cjs/server/registration.js.map +1 -1
  118. package/dist/cjs-types/browser/index.d.ts +1 -0
  119. package/dist/cjs-types/browser/index.d.ts.map +1 -1
  120. package/dist/cjs-types/browser/query_options.d.ts +12 -9
  121. package/dist/cjs-types/browser/query_options.d.ts.map +1 -1
  122. package/dist/cjs-types/browser/sync/authentication_manager.d.ts.map +1 -1
  123. package/dist/cjs-types/browser/sync/web_socket_manager.d.ts.map +1 -1
  124. package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/codegen_templates/readme.d.ts.map +1 -1
  126. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  127. package/dist/cjs-types/cli/configure.test.d.ts +2 -0
  128. package/dist/cjs-types/cli/configure.test.d.ts.map +1 -0
  129. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  130. package/dist/cjs-types/cli/deploymentCreate.d.ts +1 -0
  131. package/dist/cjs-types/cli/deploymentCreate.d.ts.map +1 -1
  132. package/dist/cjs-types/cli/deploymentSelect.d.ts +2 -1
  133. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  134. package/dist/cjs-types/cli/dev.d.ts +3 -1
  135. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  136. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts +19 -0
  137. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -0
  138. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts +2 -0
  139. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +1 -0
  140. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +19 -0
  141. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -0
  142. package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts +2 -0
  143. package/dist/cjs-types/cli/lib/aiFiles/claudemd.test.d.ts.map +1 -0
  144. package/dist/cjs-types/cli/lib/aiFiles/cursorrules.d.ts +10 -0
  145. package/dist/cjs-types/cli/lib/aiFiles/cursorrules.d.ts.map +1 -0
  146. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +12 -0
  147. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -0
  148. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +2 -0
  149. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +1 -0
  150. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +42 -0
  151. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -0
  152. package/dist/cjs-types/cli/lib/aiFiles/index.test.d.ts.map +1 -0
  153. package/dist/cjs-types/cli/lib/aiFiles/integration.test.d.ts.map +1 -0
  154. package/dist/cjs-types/cli/lib/{ai → aiFiles}/paths.d.ts +4 -0
  155. package/dist/cjs-types/cli/lib/aiFiles/paths.d.ts.map +1 -0
  156. package/dist/cjs-types/cli/lib/aiFiles/prompt.test.d.ts.map +1 -0
  157. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +20 -0
  158. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -0
  159. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts +38 -0
  160. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  161. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  162. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  163. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts +6 -0
  164. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -0
  165. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +56 -0
  166. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -0
  167. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  168. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  169. package/dist/cjs-types/cli/lib/api.d.ts +3 -3
  170. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  171. package/dist/cjs-types/cli/lib/command.d.ts +2 -1
  172. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  173. package/dist/cjs-types/cli/lib/config.d.ts +18 -6
  174. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  175. package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -2
  176. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  177. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  178. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  179. package/dist/cjs-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  180. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +14 -14
  181. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +61 -52
  182. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  183. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  184. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts +2 -0
  185. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  186. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  187. package/dist/cjs-types/cli/lib/env.d.ts +0 -4
  188. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  189. package/dist/cjs-types/cli/lib/expiration.d.ts +35 -0
  190. package/dist/cjs-types/cli/lib/expiration.d.ts.map +1 -0
  191. package/dist/cjs-types/cli/lib/expiration.test.d.ts +2 -0
  192. package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +1 -0
  193. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  194. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  195. package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
  196. package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  197. package/dist/cjs-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  198. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +15 -0
  199. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  200. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  201. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +7 -0
  202. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  203. package/dist/cjs-types/cli/lib/mcp/requestContext.d.ts +3 -3
  204. package/dist/cjs-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  205. package/dist/cjs-types/cli/lib/updates.d.ts +4 -3
  206. package/dist/cjs-types/cli/lib/updates.d.ts.map +1 -1
  207. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  208. package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
  209. package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
  210. package/dist/cjs-types/cli/lib/utils/utils.d.ts +16 -2
  211. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  212. package/dist/cjs-types/cli/lib/versionApi.d.ts +7 -1
  213. package/dist/cjs-types/cli/lib/versionApi.d.ts.map +1 -1
  214. package/dist/cjs-types/cli/lib/workos/workos.d.ts.map +1 -1
  215. package/dist/cjs-types/index.d.ts +1 -1
  216. package/dist/cjs-types/react/client.d.ts +54 -2
  217. package/dist/cjs-types/react/client.d.ts.map +1 -1
  218. package/dist/cjs-types/react/index.d.ts +7 -2
  219. package/dist/cjs-types/react/index.d.ts.map +1 -1
  220. package/dist/cjs-types/react/use_query_object_options.test.d.ts +5 -0
  221. package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +1 -0
  222. package/dist/cjs-types/react/use_query_result.test.d.ts +5 -0
  223. package/dist/cjs-types/react/use_query_result.test.d.ts.map +1 -0
  224. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  225. package/dist/cjs-types/server/api.d.ts +5 -1
  226. package/dist/cjs-types/server/api.d.ts.map +1 -1
  227. package/dist/cjs-types/server/components/definition.d.ts +1 -0
  228. package/dist/cjs-types/server/components/definition.d.ts.map +1 -1
  229. package/dist/cjs-types/server/components/index.d.ts +5 -1
  230. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  231. package/dist/cjs-types/server/data_model.d.ts +2 -1
  232. package/dist/cjs-types/server/data_model.d.ts.map +1 -1
  233. package/dist/cjs-types/server/impl/meta_impl.d.ts +5 -0
  234. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -0
  235. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  236. package/dist/cjs-types/server/index.d.ts +1 -0
  237. package/dist/cjs-types/server/index.d.ts.map +1 -1
  238. package/dist/cjs-types/server/meta.d.ts +72 -0
  239. package/dist/cjs-types/server/meta.d.ts.map +1 -0
  240. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  241. package/dist/cli.bundle.cjs +2446 -1933
  242. package/dist/cli.bundle.cjs.map +4 -4
  243. package/dist/esm/browser/index-node.js +1 -0
  244. package/dist/esm/browser/index.js +1 -0
  245. package/dist/esm/browser/index.js.map +2 -2
  246. package/dist/esm/browser/query_options.js.map +2 -2
  247. package/dist/esm/browser/sync/authentication_manager.js +4 -1
  248. package/dist/esm/browser/sync/authentication_manager.js.map +2 -2
  249. package/dist/esm/browser/sync/web_socket_manager.js +1 -7
  250. package/dist/esm/browser/sync/web_socket_manager.js.map +2 -2
  251. package/dist/esm/cli/aiFiles.js +41 -23
  252. package/dist/esm/cli/aiFiles.js.map +2 -2
  253. package/dist/esm/cli/codegen_templates/readme.js +14 -1
  254. package/dist/esm/cli/codegen_templates/readme.js.map +2 -2
  255. package/dist/esm/cli/configure.js +35 -33
  256. package/dist/esm/cli/configure.js.map +2 -2
  257. package/dist/esm/cli/deploy.js +11 -10
  258. package/dist/esm/cli/deploy.js.map +2 -2
  259. package/dist/esm/cli/deploymentCreate.js +238 -42
  260. package/dist/esm/cli/deploymentCreate.js.map +2 -2
  261. package/dist/esm/cli/deploymentSelect.js +13 -12
  262. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  263. package/dist/esm/cli/dev.js +34 -13
  264. package/dist/esm/cli/dev.js.map +2 -2
  265. package/dist/esm/cli/docs.js +1 -1
  266. package/dist/esm/cli/docs.js.map +2 -2
  267. package/dist/esm/cli/init.js +2 -2
  268. package/dist/esm/cli/init.js.map +2 -2
  269. package/dist/esm/cli/lib/aiFiles/agentsmd.js +56 -0
  270. package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +7 -0
  271. package/dist/esm/cli/lib/aiFiles/claudemd.js +56 -0
  272. package/dist/esm/cli/lib/aiFiles/claudemd.js.map +7 -0
  273. package/dist/esm/cli/lib/aiFiles/cursorrules.js +16 -0
  274. package/dist/esm/cli/lib/aiFiles/cursorrules.js.map +7 -0
  275. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +35 -0
  276. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +7 -0
  277. package/dist/esm/cli/lib/aiFiles/index.js +193 -0
  278. package/dist/esm/cli/lib/aiFiles/index.js.map +7 -0
  279. package/dist/esm/cli/lib/aiFiles/paths.js.map +7 -0
  280. package/dist/esm/cli/lib/aiFiles/skills.js +163 -0
  281. package/dist/esm/cli/lib/aiFiles/skills.js.map +7 -0
  282. package/dist/esm/cli/lib/aiFiles/state.js +60 -0
  283. package/dist/esm/cli/lib/aiFiles/state.js.map +7 -0
  284. package/dist/esm/cli/lib/aiFiles/status.js +178 -0
  285. package/dist/esm/cli/lib/aiFiles/status.js.map +7 -0
  286. package/dist/esm/cli/lib/aiFiles/utils.js +97 -0
  287. package/dist/esm/cli/lib/aiFiles/utils.js.map +7 -0
  288. package/dist/esm/cli/lib/api.js +70 -7
  289. package/dist/esm/cli/lib/api.js.map +2 -2
  290. package/dist/esm/cli/lib/command.js +10 -6
  291. package/dist/esm/cli/lib/command.js.map +2 -2
  292. package/dist/esm/cli/lib/config.js +41 -6
  293. package/dist/esm/cli/lib/config.js.map +2 -2
  294. package/dist/esm/cli/lib/deploy2.js +13 -26
  295. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  296. package/dist/esm/cli/lib/deployApi/componentDefinition.js +4 -1
  297. package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
  298. package/dist/esm/cli/lib/deploymentSelection.js +46 -2
  299. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  300. package/dist/esm/cli/lib/deploymentSelector.js +1 -0
  301. package/dist/esm/cli/lib/deploymentSelector.js.map +2 -2
  302. package/dist/esm/cli/lib/dev.js +162 -118
  303. package/dist/esm/cli/lib/dev.js.map +2 -2
  304. package/dist/esm/cli/lib/env.js +0 -11
  305. package/dist/esm/cli/lib/env.js.map +2 -2
  306. package/dist/esm/cli/lib/expiration.js +80 -0
  307. package/dist/esm/cli/lib/expiration.js.map +7 -0
  308. package/dist/esm/cli/lib/init.js +4 -3
  309. package/dist/esm/cli/lib/init.js.map +2 -2
  310. package/dist/esm/cli/lib/insights.js +1 -1
  311. package/dist/esm/cli/lib/insights.js.map +2 -2
  312. package/dist/esm/cli/lib/localDeployment/anonymous.js +16 -9
  313. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  314. package/dist/esm/cli/lib/localDeployment/localDeployment.js +9 -11
  315. package/dist/esm/cli/lib/localDeployment/localDeployment.js.map +2 -2
  316. package/dist/esm/cli/lib/localDeployment/run.js +1 -1
  317. package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
  318. package/dist/esm/cli/lib/localDeployment/upgrade.js +2 -2
  319. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  320. package/dist/esm/cli/lib/localDeployment/utils.js +8 -0
  321. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  322. package/dist/esm/cli/lib/mcp/tools/status.js +1 -1
  323. package/dist/esm/cli/lib/mcp/tools/status.js.map +2 -2
  324. package/dist/esm/cli/lib/updates.js +14 -12
  325. package/dist/esm/cli/lib/updates.js.map +2 -2
  326. package/dist/esm/cli/lib/usage.js +2 -1
  327. package/dist/esm/cli/lib/usage.js.map +2 -2
  328. package/dist/esm/cli/lib/utils/prompts.js +2 -1
  329. package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
  330. package/dist/esm/cli/lib/utils/utils.js +45 -20
  331. package/dist/esm/cli/lib/utils/utils.js.map +3 -3
  332. package/dist/esm/cli/lib/versionApi.js +7 -4
  333. package/dist/esm/cli/lib/versionApi.js.map +2 -2
  334. package/dist/esm/cli/lib/workos/workos.js +4 -6
  335. package/dist/esm/cli/lib/workos/workos.js.map +2 -2
  336. package/dist/esm/index.js +1 -1
  337. package/dist/esm/index.js.map +1 -1
  338. package/dist/esm/react/client.js +43 -6
  339. package/dist/esm/react/client.js.map +2 -2
  340. package/dist/esm/react/index.js +1 -0
  341. package/dist/esm/react/index.js.map +2 -2
  342. package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  343. package/dist/esm/server/api.js.map +2 -2
  344. package/dist/esm/server/components/index.js +40 -4
  345. package/dist/esm/server/components/index.js.map +2 -2
  346. package/dist/esm/server/impl/meta_impl.js +54 -0
  347. package/dist/esm/server/impl/meta_impl.js.map +7 -0
  348. package/dist/esm/server/impl/registration_impl.js +20 -11
  349. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  350. package/dist/esm/server/index.js.map +2 -2
  351. package/dist/esm/server/meta.js +2 -0
  352. package/dist/esm/server/meta.js.map +7 -0
  353. package/dist/esm-types/browser/index.d.ts +1 -0
  354. package/dist/esm-types/browser/index.d.ts.map +1 -1
  355. package/dist/esm-types/browser/query_options.d.ts +12 -9
  356. package/dist/esm-types/browser/query_options.d.ts.map +1 -1
  357. package/dist/esm-types/browser/sync/authentication_manager.d.ts.map +1 -1
  358. package/dist/esm-types/browser/sync/web_socket_manager.d.ts.map +1 -1
  359. package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
  360. package/dist/esm-types/cli/codegen_templates/readme.d.ts.map +1 -1
  361. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  362. package/dist/esm-types/cli/configure.test.d.ts +2 -0
  363. package/dist/esm-types/cli/configure.test.d.ts.map +1 -0
  364. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  365. package/dist/esm-types/cli/deploymentCreate.d.ts +1 -0
  366. package/dist/esm-types/cli/deploymentCreate.d.ts.map +1 -1
  367. package/dist/esm-types/cli/deploymentSelect.d.ts +2 -1
  368. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  369. package/dist/esm-types/cli/dev.d.ts +3 -1
  370. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  371. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts +19 -0
  372. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -0
  373. package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts +2 -0
  374. package/dist/esm-types/cli/lib/aiFiles/agentsmd.test.d.ts.map +1 -0
  375. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +19 -0
  376. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -0
  377. package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts +2 -0
  378. package/dist/esm-types/cli/lib/aiFiles/claudemd.test.d.ts.map +1 -0
  379. package/dist/esm-types/cli/lib/aiFiles/cursorrules.d.ts +10 -0
  380. package/dist/esm-types/cli/lib/aiFiles/cursorrules.d.ts.map +1 -0
  381. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +12 -0
  382. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -0
  383. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts +2 -0
  384. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.test.d.ts.map +1 -0
  385. package/dist/esm-types/cli/lib/aiFiles/index.d.ts +42 -0
  386. package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -0
  387. package/dist/esm-types/cli/lib/aiFiles/index.test.d.ts.map +1 -0
  388. package/dist/esm-types/cli/lib/aiFiles/integration.test.d.ts.map +1 -0
  389. package/dist/esm-types/cli/lib/{ai → aiFiles}/paths.d.ts +4 -0
  390. package/dist/esm-types/cli/lib/aiFiles/paths.d.ts.map +1 -0
  391. package/dist/esm-types/cli/lib/aiFiles/prompt.test.d.ts.map +1 -0
  392. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +20 -0
  393. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -0
  394. package/dist/esm-types/cli/lib/aiFiles/state.d.ts +38 -0
  395. package/dist/esm-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  396. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  397. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  398. package/dist/esm-types/cli/lib/aiFiles/status.d.ts +6 -0
  399. package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -0
  400. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +56 -0
  401. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -0
  402. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  403. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  404. package/dist/esm-types/cli/lib/api.d.ts +3 -3
  405. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  406. package/dist/esm-types/cli/lib/command.d.ts +2 -1
  407. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  408. package/dist/esm-types/cli/lib/config.d.ts +18 -6
  409. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  410. package/dist/esm-types/cli/lib/deploy2.d.ts +5 -2
  411. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  412. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  413. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  414. package/dist/esm-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  415. package/dist/esm-types/cli/lib/deployApi/modules.d.ts +14 -14
  416. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +61 -52
  417. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  418. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  419. package/dist/esm-types/cli/lib/deploymentSelector.d.ts +2 -0
  420. package/dist/esm-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  421. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  422. package/dist/esm-types/cli/lib/env.d.ts +0 -4
  423. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  424. package/dist/esm-types/cli/lib/expiration.d.ts +35 -0
  425. package/dist/esm-types/cli/lib/expiration.d.ts.map +1 -0
  426. package/dist/esm-types/cli/lib/expiration.test.d.ts +2 -0
  427. package/dist/esm-types/cli/lib/expiration.test.d.ts.map +1 -0
  428. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  429. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  430. package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
  431. package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  432. package/dist/esm-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  433. package/dist/esm-types/cli/lib/localDeployment/run.d.ts +15 -0
  434. package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  435. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  436. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +7 -0
  437. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  438. package/dist/esm-types/cli/lib/mcp/requestContext.d.ts +3 -3
  439. package/dist/esm-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  440. package/dist/esm-types/cli/lib/updates.d.ts +4 -3
  441. package/dist/esm-types/cli/lib/updates.d.ts.map +1 -1
  442. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  443. package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
  444. package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
  445. package/dist/esm-types/cli/lib/utils/utils.d.ts +16 -2
  446. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  447. package/dist/esm-types/cli/lib/versionApi.d.ts +7 -1
  448. package/dist/esm-types/cli/lib/versionApi.d.ts.map +1 -1
  449. package/dist/esm-types/cli/lib/workos/workos.d.ts.map +1 -1
  450. package/dist/esm-types/index.d.ts +1 -1
  451. package/dist/esm-types/react/client.d.ts +54 -2
  452. package/dist/esm-types/react/client.d.ts.map +1 -1
  453. package/dist/esm-types/react/index.d.ts +7 -2
  454. package/dist/esm-types/react/index.d.ts.map +1 -1
  455. package/dist/esm-types/react/use_query_object_options.test.d.ts +5 -0
  456. package/dist/esm-types/react/use_query_object_options.test.d.ts.map +1 -0
  457. package/dist/esm-types/react/use_query_result.test.d.ts +5 -0
  458. package/dist/esm-types/react/use_query_result.test.d.ts.map +1 -0
  459. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  460. package/dist/esm-types/server/api.d.ts +5 -1
  461. package/dist/esm-types/server/api.d.ts.map +1 -1
  462. package/dist/esm-types/server/components/definition.d.ts +1 -0
  463. package/dist/esm-types/server/components/definition.d.ts.map +1 -1
  464. package/dist/esm-types/server/components/index.d.ts +5 -1
  465. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  466. package/dist/esm-types/server/data_model.d.ts +2 -1
  467. package/dist/esm-types/server/data_model.d.ts.map +1 -1
  468. package/dist/esm-types/server/impl/meta_impl.d.ts +5 -0
  469. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -0
  470. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  471. package/dist/esm-types/server/index.d.ts +1 -0
  472. package/dist/esm-types/server/index.d.ts.map +1 -1
  473. package/dist/esm-types/server/meta.d.ts +72 -0
  474. package/dist/esm-types/server/meta.d.ts.map +1 -0
  475. package/dist/esm-types/server/registration.d.ts.map +1 -1
  476. package/dist/react.bundle.js +55 -15
  477. package/dist/react.bundle.js.map +3 -3
  478. package/package.json +11 -7
  479. package/schemas/convex.schema.json +22 -3
  480. package/src/browser/index.ts +3 -0
  481. package/src/browser/query_options.test.ts +0 -9
  482. package/src/browser/query_options.ts +36 -15
  483. package/src/browser/sync/authentication_manager.ts +9 -4
  484. package/src/browser/sync/client_node.test.ts +125 -0
  485. package/src/browser/sync/web_socket_manager.ts +1 -7
  486. package/src/cli/aiFiles.ts +56 -33
  487. package/src/cli/codegen_templates/readme.ts +14 -1
  488. package/src/cli/configure.test.ts +138 -0
  489. package/src/cli/configure.ts +62 -55
  490. package/src/cli/deploy.ts +12 -9
  491. package/src/cli/deploymentCreate.test.ts +349 -14
  492. package/src/cli/deploymentCreate.ts +268 -41
  493. package/src/cli/deploymentSelect.test.ts +136 -27
  494. package/src/cli/deploymentSelect.ts +50 -41
  495. package/src/cli/deploymentSelection.test.ts +399 -37
  496. package/src/cli/dev.ts +49 -14
  497. package/src/cli/docs.ts +1 -1
  498. package/src/cli/init.ts +2 -2
  499. package/src/cli/lib/{ai → aiFiles}/MANUAL_TESTING.md +6 -2
  500. package/src/cli/lib/aiFiles/agentsmd.test.ts +133 -0
  501. package/src/cli/lib/aiFiles/agentsmd.ts +81 -0
  502. package/src/cli/lib/aiFiles/claudemd.test.ts +92 -0
  503. package/src/cli/lib/aiFiles/claudemd.ts +81 -0
  504. package/src/cli/lib/aiFiles/cursorrules.ts +25 -0
  505. package/src/cli/lib/aiFiles/guidelinesmd.test.ts +50 -0
  506. package/src/cli/lib/aiFiles/guidelinesmd.ts +49 -0
  507. package/src/cli/lib/{ai → aiFiles}/index.test.ts +343 -516
  508. package/src/cli/lib/aiFiles/index.ts +297 -0
  509. package/src/cli/lib/{ai → aiFiles}/integration.test.ts +195 -158
  510. package/src/cli/lib/{ai → aiFiles}/paths.ts +5 -0
  511. package/src/cli/lib/{ai → aiFiles}/prompt.test.ts +79 -31
  512. package/src/cli/lib/aiFiles/skills.ts +243 -0
  513. package/src/cli/lib/aiFiles/state.test.ts +280 -0
  514. package/src/cli/lib/aiFiles/state.ts +82 -0
  515. package/src/cli/lib/aiFiles/status.ts +246 -0
  516. package/src/cli/lib/aiFiles/utils.test.ts +50 -0
  517. package/src/cli/lib/aiFiles/utils.ts +191 -0
  518. package/src/cli/lib/api.ts +88 -7
  519. package/src/cli/lib/command.ts +18 -8
  520. package/src/cli/lib/config.test.ts +185 -8
  521. package/src/cli/lib/config.ts +73 -12
  522. package/src/cli/lib/deploy2.ts +14 -27
  523. package/src/cli/lib/deployApi/componentDefinition.ts +4 -1
  524. package/src/cli/lib/deploymentSelection.ts +59 -6
  525. package/src/cli/lib/deploymentSelector.test.ts +6 -0
  526. package/src/cli/lib/deploymentSelector.ts +2 -0
  527. package/src/cli/lib/dev.ts +202 -153
  528. package/src/cli/lib/env.ts +0 -15
  529. package/src/cli/lib/expiration.test.ts +159 -0
  530. package/src/cli/lib/expiration.ts +124 -0
  531. package/src/cli/lib/generatedFunctionLogsApi.ts +16 -1
  532. package/src/cli/lib/init.ts +6 -2
  533. package/src/cli/lib/insights.ts +1 -1
  534. package/src/cli/lib/localDeployment/anonymous.ts +19 -9
  535. package/src/cli/lib/localDeployment/localDeployment.ts +9 -11
  536. package/src/cli/lib/localDeployment/run.ts +1 -1
  537. package/src/cli/lib/localDeployment/upgrade.ts +12 -10
  538. package/src/cli/lib/localDeployment/utils.ts +12 -0
  539. package/src/cli/lib/mcp/tools/status.ts +1 -1
  540. package/src/cli/lib/updates.test.ts +97 -60
  541. package/src/cli/lib/updates.ts +17 -15
  542. package/src/cli/lib/usage.ts +3 -1
  543. package/src/cli/lib/utils/prompts.ts +2 -0
  544. package/src/cli/lib/utils/utils.test.ts +6 -6
  545. package/src/cli/lib/utils/utils.ts +66 -27
  546. package/src/cli/lib/versionApi.test.ts +13 -10
  547. package/src/cli/lib/versionApi.ts +13 -5
  548. package/src/cli/lib/workos/workos.ts +4 -5
  549. package/src/index.ts +1 -1
  550. package/src/react/client.test.tsx +65 -0
  551. package/src/react/client.ts +129 -13
  552. package/src/react/index.ts +9 -1
  553. package/src/react/use_query_object_options.test.ts +50 -0
  554. package/src/react/use_query_result.test.ts +41 -0
  555. package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
  556. package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
  557. package/src/server/api.ts +5 -1
  558. package/src/server/components/definition.ts +3 -0
  559. package/src/server/components/index.ts +62 -5
  560. package/src/server/data_model.ts +2 -1
  561. package/src/server/impl/meta_impl.ts +74 -0
  562. package/src/server/impl/registration_impl.ts +21 -9
  563. package/src/server/index.ts +8 -0
  564. package/src/server/meta.ts +76 -0
  565. package/src/server/registration.ts +10 -0
  566. package/src/server/schema.test.ts +78 -1
  567. package/dist/cjs/cli/lib/ai/config.js +0 -144
  568. package/dist/cjs/cli/lib/ai/config.js.map +0 -7
  569. package/dist/cjs/cli/lib/ai/index.js +0 -704
  570. package/dist/cjs/cli/lib/ai/index.js.map +0 -7
  571. package/dist/cjs/cli/lib/ai/paths.js.map +0 -7
  572. package/dist/cjs-types/cli/lib/ai/config.d.ts +0 -50
  573. package/dist/cjs-types/cli/lib/ai/config.d.ts.map +0 -1
  574. package/dist/cjs-types/cli/lib/ai/config.test.d.ts +0 -2
  575. package/dist/cjs-types/cli/lib/ai/config.test.d.ts.map +0 -1
  576. package/dist/cjs-types/cli/lib/ai/index.d.ts +0 -56
  577. package/dist/cjs-types/cli/lib/ai/index.d.ts.map +0 -1
  578. package/dist/cjs-types/cli/lib/ai/index.test.d.ts.map +0 -1
  579. package/dist/cjs-types/cli/lib/ai/integration.test.d.ts.map +0 -1
  580. package/dist/cjs-types/cli/lib/ai/paths.d.ts.map +0 -1
  581. package/dist/cjs-types/cli/lib/ai/prompt.test.d.ts.map +0 -1
  582. package/dist/esm/cli/lib/ai/config.js +0 -109
  583. package/dist/esm/cli/lib/ai/config.js.map +0 -7
  584. package/dist/esm/cli/lib/ai/index.js +0 -684
  585. package/dist/esm/cli/lib/ai/index.js.map +0 -7
  586. package/dist/esm/cli/lib/ai/paths.js.map +0 -7
  587. package/dist/esm-types/cli/lib/ai/config.d.ts +0 -50
  588. package/dist/esm-types/cli/lib/ai/config.d.ts.map +0 -1
  589. package/dist/esm-types/cli/lib/ai/config.test.d.ts +0 -2
  590. package/dist/esm-types/cli/lib/ai/config.test.d.ts.map +0 -1
  591. package/dist/esm-types/cli/lib/ai/index.d.ts +0 -56
  592. package/dist/esm-types/cli/lib/ai/index.d.ts.map +0 -1
  593. package/dist/esm-types/cli/lib/ai/index.test.d.ts.map +0 -1
  594. package/dist/esm-types/cli/lib/ai/integration.test.d.ts.map +0 -1
  595. package/dist/esm-types/cli/lib/ai/paths.d.ts.map +0 -1
  596. package/dist/esm-types/cli/lib/ai/prompt.test.d.ts.map +0 -1
  597. package/src/cli/lib/ai/config.test.ts +0 -338
  598. package/src/cli/lib/ai/config.ts +0 -159
  599. package/src/cli/lib/ai/index.ts +0 -1006
  600. /package/dist/cjs/cli/lib/{ai → aiFiles}/paths.js +0 -0
  601. /package/dist/cjs-types/cli/lib/{ai → aiFiles}/index.test.d.ts +0 -0
  602. /package/dist/cjs-types/cli/lib/{ai → aiFiles}/integration.test.d.ts +0 -0
  603. /package/dist/cjs-types/cli/lib/{ai → aiFiles}/prompt.test.d.ts +0 -0
  604. /package/dist/esm/cli/lib/{ai → aiFiles}/paths.js +0 -0
  605. /package/dist/esm-types/cli/lib/{ai → aiFiles}/index.test.d.ts +0 -0
  606. /package/dist/esm-types/cli/lib/{ai → aiFiles}/integration.test.d.ts +0 -0
  607. /package/dist/esm-types/cli/lib/{ai → aiFiles}/prompt.test.d.ts +0 -0
@@ -1,684 +0,0 @@
1
- "use strict";
2
- import * as Sentry from "@sentry/node";
3
- import child_process from "child_process";
4
- import path from "path";
5
- import { promises as fs } from "fs";
6
- import { chalkStderr } from "chalk";
7
- import { logMessage } from "../../../bundler/log.js";
8
- import {
9
- AGENTS_MD_START_MARKER,
10
- AGENTS_MD_END_MARKER,
11
- agentsMdConvexSection
12
- } from "../../codegen_templates/agentsmd.js";
13
- import {
14
- CLAUDE_MD_END_MARKER,
15
- CLAUDE_MD_START_MARKER,
16
- claudeMdConvexSection
17
- } from "../../codegen_templates/claudemd.js";
18
- import {
19
- downloadGuidelines,
20
- fetchAgentSkillsSha,
21
- getVersion
22
- } from "../versionApi.js";
23
- import { promptYesNo } from "../utils/prompts.js";
24
- import { hashSha256 } from "../utils/hash.js";
25
- import {
26
- aiDirForConvexDir,
27
- agentsMdPath,
28
- claudeMdPath,
29
- guidelinesPathForConvexDir
30
- } from "./paths.js";
31
- import {
32
- readAiConfig,
33
- writeAiConfig,
34
- writeAiDisabledToProjectConfig
35
- } from "./config.js";
36
- function isAgentMode() {
37
- return process.env.CONVEX_AGENT_MODE !== void 0;
38
- }
39
- export async function injectAgentsMdSection(section, projectDir) {
40
- const filePath = agentsMdPath(projectDir);
41
- let existing = "";
42
- try {
43
- existing = await fs.readFile(filePath, "utf8");
44
- } catch {
45
- }
46
- let updated;
47
- const startIdx = existing.indexOf(AGENTS_MD_START_MARKER);
48
- const endIdx = existing.indexOf(AGENTS_MD_END_MARKER);
49
- if (startIdx !== -1 && endIdx !== -1) {
50
- updated = existing.slice(0, startIdx) + section + existing.slice(endIdx + AGENTS_MD_END_MARKER.length);
51
- } else if (existing.length > 0) {
52
- updated = existing.trimEnd() + "\n\n" + section + "\n";
53
- } else {
54
- updated = section + "\n";
55
- }
56
- await fs.writeFile(filePath, updated, "utf8");
57
- return hashSha256(section);
58
- }
59
- export async function injectClaudeMdSection(section, projectDir) {
60
- const filePath = claudeMdPath(projectDir);
61
- let existing = "";
62
- try {
63
- existing = await fs.readFile(filePath, "utf8");
64
- } catch {
65
- }
66
- let updated;
67
- const startIdx = existing.indexOf(CLAUDE_MD_START_MARKER);
68
- const endIdx = existing.indexOf(CLAUDE_MD_END_MARKER);
69
- if (startIdx !== -1 && endIdx !== -1) {
70
- updated = existing.slice(0, startIdx) + section + existing.slice(endIdx + CLAUDE_MD_END_MARKER.length);
71
- } else if (existing.length > 0) {
72
- updated = existing.trimEnd() + "\n\n" + section + "\n";
73
- } else {
74
- updated = section + "\n";
75
- }
76
- const didWrite = updated !== existing;
77
- if (didWrite) {
78
- await fs.writeFile(filePath, updated, "utf8");
79
- }
80
- return {
81
- sectionHash: hashSha256(section),
82
- didWrite
83
- };
84
- }
85
- export async function writeAiFiles(convexDir, installSkills = false, skillsOutputMode = "verbose", projectDirOverride) {
86
- const projectDir = path.resolve(
87
- projectDirOverride ?? path.dirname(convexDir)
88
- );
89
- try {
90
- await fs.mkdir(aiDirForConvexDir(convexDir), { recursive: true });
91
- const config = {
92
- disableStalenessMessage: false,
93
- guidelinesHash: null,
94
- agentsMdSectionHash: null,
95
- claudeMdHash: null,
96
- agentSkillsSha: null,
97
- installedSkillNames: []
98
- };
99
- const guidelines = await downloadGuidelines();
100
- if (guidelines !== null) {
101
- await fs.writeFile(
102
- guidelinesPathForConvexDir(convexDir),
103
- guidelines,
104
- "utf8"
105
- );
106
- config.guidelinesHash = hashSha256(guidelines);
107
- } else {
108
- logMessage(
109
- chalkStderr.yellow(
110
- "Could not download Convex AI guidelines right now. You can retry with: npx convex ai-files install"
111
- )
112
- );
113
- }
114
- const convexDirName = path.relative(projectDir, convexDir);
115
- const section = agentsMdConvexSection(convexDirName);
116
- config.agentsMdSectionHash = await injectAgentsMdSection(
117
- section,
118
- projectDir
119
- );
120
- const claudeSection = claudeMdConvexSection(convexDirName);
121
- const claudeInjectResult = await injectClaudeMdSection(
122
- claudeSection,
123
- projectDir
124
- );
125
- config.claudeMdHash = claudeInjectResult.sectionHash;
126
- if (installSkills) {
127
- if (await shouldRunSkillsCli()) {
128
- logMessage("Installing Convex agent skills...");
129
- const skillsOk = await runSkillsAdd(projectDir, skillsOutputMode);
130
- if (skillsOk) {
131
- const sha = await fetchAgentSkillsSha();
132
- if (sha) {
133
- config.agentSkillsSha = sha;
134
- }
135
- const names = await readInstalledSkillNames(projectDir);
136
- if (names.length > 0) {
137
- config.installedSkillNames = names;
138
- }
139
- } else {
140
- logMessage(
141
- chalkStderr.yellow(
142
- "Could not install agent skills. You can retry manually with: npx skills add get-convex/agent-skills"
143
- )
144
- );
145
- }
146
- }
147
- }
148
- const removedLegacy = await removeLegacyCursorRulesFile(projectDir);
149
- if (removedLegacy) {
150
- logMessage(
151
- `${chalkStderr.green(`\u2714`)} Removed legacy .cursor/rules/convex_rules.mdc (superseded by convex/_generated/ai/guidelines.md).`
152
- );
153
- }
154
- await writeAiConfig(config, projectDir, convexDir);
155
- logMessage(
156
- `${chalkStderr.green(`\u2714`)} Wrote Convex AI files to ${path.relative(projectDir, aiDirForConvexDir(convexDir))}/`
157
- );
158
- } catch (error) {
159
- Sentry.captureException(error);
160
- }
161
- }
162
- export async function checkAiFilesStaleness(canonicalGuidelinesHash, canonicalAgentSkillsSha, projectDir, convexDir) {
163
- const config = await readAiConfig(projectDir, convexDir);
164
- if (config === null) {
165
- logMessage(
166
- chalkStderr.yellow(
167
- isAgentMode() ? `Convex AI files are not installed. If you are an agent tell the human to run ${chalkStderr.bold(`npx convex ai-files install`)} to get started or ${chalkStderr.bold(`npx convex ai-files disable`)} to hide this message.` : `Convex AI files are not installed. Run ${chalkStderr.bold(`npx convex ai-files install`)} to get started or ${chalkStderr.bold(`npx convex ai-files disable`)} to hide this message.`
168
- )
169
- );
170
- return;
171
- }
172
- if (config.disableStalenessMessage) {
173
- return;
174
- }
175
- if (canonicalGuidelinesHash === null && canonicalAgentSkillsSha === null) {
176
- return;
177
- }
178
- const guidelinesStale = canonicalGuidelinesHash !== null && config.guidelinesHash !== null && config.guidelinesHash !== canonicalGuidelinesHash;
179
- const skillsStale = canonicalAgentSkillsSha !== null && config.agentSkillsSha !== null && config.agentSkillsSha !== canonicalAgentSkillsSha;
180
- if (guidelinesStale || skillsStale) {
181
- logMessage(
182
- chalkStderr.yellow(
183
- `Your Convex AI files are out of date. Run ${chalkStderr.bold(`npx convex ai-files update`)} to get the latest.`
184
- )
185
- );
186
- }
187
- }
188
- export async function updateAiFiles(projectDir, convexDir) {
189
- const config = await readAiConfig(projectDir, convexDir);
190
- if (config === null) {
191
- await writeAiFiles(convexDir, true, "verbose", projectDir);
192
- return;
193
- }
194
- await fs.mkdir(aiDirForConvexDir(convexDir), { recursive: true });
195
- let updatedCount = 0;
196
- let skippedCount = 0;
197
- const guidelines = await downloadGuidelines();
198
- if (guidelines !== null) {
199
- const newHash = hashSha256(guidelines);
200
- if (newHash === config.guidelinesHash) {
201
- logMessage("Convex AI guidelines are already up to date.");
202
- } else {
203
- const currentContent = await readFileSafe(
204
- guidelinesPathForConvexDir(convexDir)
205
- );
206
- if (currentContent !== null && config.guidelinesHash !== null && hashSha256(currentContent) !== config.guidelinesHash) {
207
- logMessage(
208
- chalkStderr.yellow(
209
- `Skipping ${path.relative(projectDir, guidelinesPathForConvexDir(convexDir))} \u2014 file has been modified locally.`
210
- )
211
- );
212
- skippedCount++;
213
- } else {
214
- await fs.writeFile(
215
- guidelinesPathForConvexDir(convexDir),
216
- guidelines,
217
- "utf8"
218
- );
219
- config.guidelinesHash = newHash;
220
- updatedCount++;
221
- }
222
- }
223
- } else {
224
- logMessage(
225
- chalkStderr.yellow(
226
- "Could not download Convex AI guidelines right now. Keeping your existing guidelines file."
227
- )
228
- );
229
- }
230
- const convexDirName = path.relative(projectDir, convexDir);
231
- const section = agentsMdConvexSection(convexDirName);
232
- const newSectionHash = hashSha256(section);
233
- if (newSectionHash !== config.agentsMdSectionHash) {
234
- config.agentsMdSectionHash = await injectAgentsMdSection(
235
- section,
236
- projectDir
237
- );
238
- updatedCount++;
239
- }
240
- if (await shouldRunSkillsCli()) {
241
- logMessage("Installing Convex agent skills...");
242
- const skillsOk = await runSkillsAdd(projectDir);
243
- if (skillsOk) {
244
- const sha = await fetchAgentSkillsSha();
245
- if (sha) {
246
- config.agentSkillsSha = sha;
247
- }
248
- const names = await readInstalledSkillNames(projectDir);
249
- if (names.length > 0) {
250
- config.installedSkillNames = names;
251
- }
252
- } else {
253
- logMessage(
254
- chalkStderr.yellow(
255
- "Could not install agent skills. You can retry manually with: npx skills add get-convex/agent-skills"
256
- )
257
- );
258
- }
259
- }
260
- const removedLegacy = await removeLegacyCursorRulesFile(projectDir);
261
- if (removedLegacy) {
262
- logMessage(
263
- `${chalkStderr.green(`\u2714`)} Removed legacy .cursor/rules/convex_rules.mdc (superseded by convex/_generated/ai/guidelines.md).`
264
- );
265
- updatedCount++;
266
- }
267
- const claudeSection = claudeMdConvexSection(convexDirName);
268
- const claudeInjectResult = await injectClaudeMdSection(
269
- claudeSection,
270
- projectDir
271
- );
272
- config.claudeMdHash = claudeInjectResult.sectionHash;
273
- if (claudeInjectResult.didWrite) {
274
- updatedCount++;
275
- }
276
- await writeAiConfig(config, projectDir, convexDir);
277
- if (updatedCount > 0) {
278
- logMessage(
279
- `${chalkStderr.green(`\u2714`)} Updated ${updatedCount} Convex AI file${updatedCount === 1 ? "" : "s"}.`
280
- );
281
- }
282
- if (skippedCount > 0) {
283
- logMessage(
284
- chalkStderr.yellow(
285
- `Skipped ${skippedCount} file${skippedCount === 1 ? "" : "s"} with local modifications.`
286
- )
287
- );
288
- }
289
- if (updatedCount === 0 && skippedCount === 0) {
290
- logMessage("Convex AI files are already up to date.");
291
- }
292
- }
293
- export async function enableAiFiles(projectDir, convexDir) {
294
- await updateAiFiles(projectDir, convexDir);
295
- const config = await readAiConfig(projectDir, convexDir);
296
- if (config === null) {
297
- return;
298
- }
299
- config.disableStalenessMessage = false;
300
- await writeAiConfig(config, projectDir, convexDir, {
301
- persistDisabledPreference: "always"
302
- });
303
- }
304
- async function stripAgentsMdSection(projectDir) {
305
- const filePath = agentsMdPath(projectDir);
306
- let content;
307
- try {
308
- content = await fs.readFile(filePath, "utf8");
309
- } catch {
310
- return false;
311
- }
312
- const startIdx = content.indexOf(AGENTS_MD_START_MARKER);
313
- const endIdx = content.indexOf(AGENTS_MD_END_MARKER);
314
- if (startIdx === -1 || endIdx === -1) {
315
- return false;
316
- }
317
- const before = content.slice(0, startIdx).trimEnd();
318
- const after = content.slice(endIdx + AGENTS_MD_END_MARKER.length).trimStart();
319
- const updated = [before, after].filter(Boolean).join("\n\n");
320
- if (!updated.trim()) {
321
- try {
322
- await fs.unlink(filePath);
323
- } catch {
324
- }
325
- } else {
326
- await fs.writeFile(filePath, updated + "\n", "utf8");
327
- }
328
- return true;
329
- }
330
- async function stripClaudeMdSection(projectDir) {
331
- const filePath = claudeMdPath(projectDir);
332
- let content;
333
- try {
334
- content = await fs.readFile(filePath, "utf8");
335
- } catch {
336
- return "none";
337
- }
338
- const startIdx = content.indexOf(CLAUDE_MD_START_MARKER);
339
- const endIdx = content.indexOf(CLAUDE_MD_END_MARKER);
340
- if (startIdx === -1 || endIdx === -1) {
341
- return "none";
342
- }
343
- const before = content.slice(0, startIdx).trimEnd();
344
- const after = content.slice(endIdx + CLAUDE_MD_END_MARKER.length).trimStart();
345
- const updated = [before, after].filter(Boolean).join("\n\n");
346
- if (!updated.trim()) {
347
- try {
348
- await fs.unlink(filePath);
349
- } catch {
350
- }
351
- return "file";
352
- }
353
- await fs.writeFile(filePath, updated + "\n", "utf8");
354
- return "section";
355
- }
356
- export async function removeAiFiles(projectDir, convexDir) {
357
- const config = await readAiConfig(projectDir, convexDir);
358
- if (config === null) {
359
- logMessage("No Convex AI files found \u2014 nothing to remove.");
360
- return;
361
- }
362
- let removedCount = 0;
363
- const stripped = await stripAgentsMdSection(projectDir);
364
- if (stripped) {
365
- logMessage(
366
- `${chalkStderr.green(`\u2714`)} Removed Convex section from AGENTS.md.`
367
- );
368
- removedCount++;
369
- }
370
- const strippedClaude = await stripClaudeMdSection(projectDir);
371
- if (strippedClaude === "section") {
372
- logMessage(
373
- `${chalkStderr.green(`\u2714`)} Removed Convex section from CLAUDE.md.`
374
- );
375
- removedCount++;
376
- } else if (strippedClaude === "file") {
377
- logMessage(`${chalkStderr.green(`\u2714`)} Deleted CLAUDE.md.`);
378
- removedCount++;
379
- }
380
- if (config.installedSkillNames.length > 0) {
381
- if (await shouldRunSkillsCli()) {
382
- logMessage(
383
- `Removing Convex agent skills: ${config.installedSkillNames.join(", ")}`
384
- );
385
- const skillsOk = await runSkillsRemove(
386
- projectDir,
387
- config.installedSkillNames
388
- );
389
- if (!skillsOk) {
390
- logMessage(
391
- chalkStderr.yellow(
392
- "Could not remove agent skills automatically. Remove them manually with: npx skills remove"
393
- )
394
- );
395
- } else {
396
- const removedLock = await removeSkillsLockIfEmpty(
397
- projectDir,
398
- config.installedSkillNames
399
- );
400
- if (removedLock) {
401
- logMessage(`${chalkStderr.green(`\u2714`)} Deleted skills-lock.json.`);
402
- removedCount++;
403
- }
404
- }
405
- }
406
- }
407
- const removedLegacy = await removeLegacyCursorRulesFile(projectDir);
408
- if (removedLegacy) {
409
- logMessage(
410
- `${chalkStderr.green(`\u2714`)} Removed legacy .cursor/rules/convex_rules.mdc.`
411
- );
412
- removedCount++;
413
- }
414
- try {
415
- await fs.rm(aiDirForConvexDir(convexDir), { recursive: true, force: true });
416
- logMessage(
417
- `${chalkStderr.green(`\u2714`)} Deleted ${path.relative(projectDir, aiDirForConvexDir(convexDir))}/`
418
- );
419
- removedCount++;
420
- } catch (error) {
421
- Sentry.captureException(error);
422
- logMessage(
423
- chalkStderr.yellow(
424
- `Could not delete ${path.relative(projectDir, aiDirForConvexDir(convexDir))}/. Remove it manually.`
425
- )
426
- );
427
- }
428
- if (removedCount > 0) {
429
- logMessage("Convex AI files removed.");
430
- }
431
- }
432
- export async function disableAiFiles(projectDir) {
433
- try {
434
- await writeAiDisabledToProjectConfig(true, projectDir);
435
- logMessage(
436
- `${chalkStderr.green(`\u2714`)} Convex AI file staleness/install messages disabled. Run ${chalkStderr.bold(`npx convex ai-files enable`)} to re-enable.`
437
- );
438
- } catch (error) {
439
- Sentry.captureException(error);
440
- logMessage(
441
- chalkStderr.yellow(
442
- "Could not write AI message suppression config. Message may reappear."
443
- )
444
- );
445
- }
446
- }
447
- export async function statusAiFiles(projectDir, convexDir) {
448
- const convexDirName = path.relative(projectDir, convexDir);
449
- const guidelinesRelPath = path.relative(
450
- projectDir,
451
- guidelinesPathForConvexDir(convexDir)
452
- );
453
- const config = await readAiConfig(projectDir, convexDir);
454
- if (config === null) {
455
- logMessage(`Convex AI files: ${chalkStderr.yellow("not installed")}`);
456
- logMessage(
457
- ` Run ${chalkStderr.bold("npx convex ai-files install")} to get started, or ${chalkStderr.bold("npx convex ai-files disable")} to silence this message.`
458
- );
459
- return;
460
- }
461
- if (config.disableStalenessMessage) {
462
- logMessage(
463
- `Convex AI files: ${chalkStderr.yellow("staleness/install messages disabled")}`
464
- );
465
- logMessage(
466
- ` Run ${chalkStderr.bold("npx convex ai-files enable")} to re-enable.`
467
- );
468
- return;
469
- }
470
- logMessage(`Convex AI files: ${chalkStderr.green("enabled")}`);
471
- const [versionData, guidelinesFile, agentsContent, claudeContent] = await Promise.all([
472
- getVersion(),
473
- readFileSafe(guidelinesPathForConvexDir(convexDir)),
474
- readFileSafe(agentsMdPath(projectDir)),
475
- readFileSafe(claudeMdPath(projectDir))
476
- ]);
477
- const canonicalGuidelinesHash = versionData?.guidelinesHash ?? null;
478
- const canonicalAgentSkillsSha = versionData?.agentSkillsSha ?? null;
479
- const networkAvailable = versionData !== null;
480
- if (guidelinesFile === null) {
481
- logMessage(
482
- ` ${chalkStderr.yellow("\u26A0")} ${guidelinesRelPath}: not on disk \u2014 run ${chalkStderr.bold("npx convex ai-files install")} to reinstall`
483
- );
484
- } else if (config.guidelinesHash !== null && hashSha256(guidelinesFile) !== config.guidelinesHash) {
485
- logMessage(
486
- ` ${chalkStderr.yellow("\u26A0")} ${guidelinesRelPath}: installed, modified locally (Convex updates will be skipped)`
487
- );
488
- } else if (networkAvailable && canonicalGuidelinesHash !== null && config.guidelinesHash !== null && config.guidelinesHash !== canonicalGuidelinesHash) {
489
- logMessage(
490
- ` ${chalkStderr.yellow("\u26A0")} ${guidelinesRelPath}: installed, out of date \u2014 run ${chalkStderr.bold("npx convex ai-files update")}`
491
- );
492
- } else {
493
- logMessage(
494
- ` ${chalkStderr.green("\u2714")} ${guidelinesRelPath}: installed${networkAvailable ? ", up to date" : ""}`
495
- );
496
- }
497
- const hasAgentsSection = agentsContent !== null && agentsContent.includes(AGENTS_MD_START_MARKER) && agentsContent.includes(AGENTS_MD_END_MARKER);
498
- if (!hasAgentsSection) {
499
- logMessage(
500
- ` ${chalkStderr.yellow("\u26A0")} AGENTS.md: Convex section missing \u2014 run ${chalkStderr.bold("npx convex ai-files install")} to reinstall`
501
- );
502
- } else {
503
- const currentSectionHash = hashSha256(agentsMdConvexSection(convexDirName));
504
- if (config.agentsMdSectionHash !== null && config.agentsMdSectionHash !== currentSectionHash) {
505
- logMessage(
506
- ` ${chalkStderr.yellow("\u26A0")} AGENTS.md: Convex section out of date \u2014 run ${chalkStderr.bold("npx convex ai-files update")}`
507
- );
508
- } else {
509
- logMessage(
510
- ` ${chalkStderr.green("\u2714")} AGENTS.md: Convex section present, up to date`
511
- );
512
- }
513
- }
514
- const hasClaudeSection = claudeContent !== null && claudeContent.includes(CLAUDE_MD_START_MARKER) && claudeContent.includes(CLAUDE_MD_END_MARKER);
515
- if (!hasClaudeSection) {
516
- if (claudeContent === null) {
517
- logMessage(
518
- ` ${chalkStderr.yellow("\u26A0")} CLAUDE.md: missing - run ${chalkStderr.bold("npx convex ai-files install")} to create it`
519
- );
520
- } else {
521
- logMessage(
522
- ` ${chalkStderr.yellow("\u26A0")} CLAUDE.md: no Convex section present - run ${chalkStderr.bold("npx convex ai-files update")} to add it`
523
- );
524
- }
525
- } else {
526
- const currentSectionHash = hashSha256(claudeMdConvexSection(convexDirName));
527
- if (config.claudeMdHash !== null && config.claudeMdHash !== currentSectionHash) {
528
- logMessage(
529
- ` ${chalkStderr.yellow("\u26A0")} CLAUDE.md: Convex section out of date - run ${chalkStderr.bold("npx convex ai-files update")}`
530
- );
531
- } else {
532
- logMessage(
533
- ` ${chalkStderr.green("\u2714")} CLAUDE.md: Convex section present, up to date`
534
- );
535
- }
536
- }
537
- if (config.installedSkillNames.length === 0) {
538
- logMessage(
539
- ` ${chalkStderr.yellow("\u26A0")} Agent skills: not installed \u2014 run ${chalkStderr.bold("npx convex ai-files install")} to install`
540
- );
541
- } else {
542
- const skillsStale = networkAvailable && canonicalAgentSkillsSha !== null && config.agentSkillsSha !== null && config.agentSkillsSha !== canonicalAgentSkillsSha;
543
- const skillsList = config.installedSkillNames.join(", ");
544
- if (skillsStale) {
545
- logMessage(
546
- ` ${chalkStderr.yellow("\u26A0")} Agent skills: ${skillsList} \u2014 out of date, run ${chalkStderr.bold("npx convex ai-files update")}`
547
- );
548
- } else {
549
- logMessage(
550
- ` ${chalkStderr.green("\u2714")} Agent skills: ${skillsList}${networkAvailable ? " (up to date)" : ""}`
551
- );
552
- }
553
- }
554
- }
555
- export async function maybeSetupAiFiles(ctx, convexDir, projectDir) {
556
- if (isAgentMode()) {
557
- return;
558
- }
559
- let wantsAiFiles = true;
560
- if (process.stdin.isTTY) {
561
- wantsAiFiles = await promptYesNo(ctx, {
562
- message: "Set up Convex AI files? (guidelines, AGENTS.md, agent skills)",
563
- default: true
564
- });
565
- }
566
- if (wantsAiFiles) {
567
- await writeAiFiles(convexDir, true, "quiet", projectDir);
568
- }
569
- }
570
- async function removeLegacyCursorRulesFile(projectDir) {
571
- const filePath = path.join(
572
- projectDir,
573
- ".cursor",
574
- "rules",
575
- "convex_rules.mdc"
576
- );
577
- try {
578
- await fs.unlink(filePath);
579
- return true;
580
- } catch {
581
- return false;
582
- }
583
- }
584
- async function removeSkillsLockIfEmpty(projectDir, removedSkillNames) {
585
- const lockPath = path.join(projectDir, "skills-lock.json");
586
- try {
587
- const content = await fs.readFile(lockPath, "utf8");
588
- const lock = JSON.parse(content);
589
- if (!lock || typeof lock !== "object" || !lock.skills || typeof lock.skills !== "object") {
590
- return false;
591
- }
592
- const remainingSkills = Object.keys(lock.skills).filter(
593
- (name) => !removedSkillNames.includes(name)
594
- );
595
- if (remainingSkills.length === 0) {
596
- await fs.unlink(lockPath);
597
- return true;
598
- }
599
- return false;
600
- } catch {
601
- return false;
602
- }
603
- }
604
- async function readFileSafe(filePath) {
605
- try {
606
- return await fs.readFile(filePath, "utf8");
607
- } catch {
608
- return null;
609
- }
610
- }
611
- async function readInstalledSkillNames(projectDir) {
612
- const skillsDir = path.join(projectDir, ".agents", "skills");
613
- let entries;
614
- try {
615
- const dirents = await fs.readdir(skillsDir, { withFileTypes: true });
616
- entries = dirents.filter((d) => d.isDirectory() || d.isSymbolicLink()).map((d) => d.name);
617
- } catch {
618
- return [];
619
- }
620
- const names = [];
621
- for (const entry of entries) {
622
- const skillMdPath = path.join(skillsDir, entry, "SKILL.md");
623
- const content = await readFileSafe(skillMdPath);
624
- if (content === null) continue;
625
- const match = content.match(/^---[\s\S]*?^name:\s*(.+?)\s*$/m);
626
- if (match) {
627
- names.push(match[1]);
628
- }
629
- }
630
- return names;
631
- }
632
- function runSkillsAdd(cwd, outputMode = "verbose") {
633
- return runSkillsCommand(
634
- cwd,
635
- ["add", "get-convex/agent-skills", "--yes"],
636
- outputMode
637
- );
638
- }
639
- function runSkillsRemove(cwd, skillNames) {
640
- return runSkillsCommand(cwd, ["remove", ...skillNames, "--yes"]);
641
- }
642
- async function shouldRunSkillsCli() {
643
- const versionData = await getVersion();
644
- if (versionData === null || versionData === void 0) {
645
- logMessage(chalkStderr.yellow(`Agent skills are temporarily disabled.`));
646
- return false;
647
- }
648
- if (versionData.disableSkillsCli) {
649
- logMessage(chalkStderr.yellow(`Agent skills are temporarily disabled.`));
650
- return false;
651
- }
652
- return true;
653
- }
654
- function runSkillsCommand(cwd, args, outputMode = "verbose") {
655
- return new Promise((resolve) => {
656
- const quiet = outputMode === "quiet";
657
- const proc = child_process.spawn("npx", ["skills@latest", ...args], {
658
- cwd,
659
- stdio: quiet ? "pipe" : "inherit",
660
- // shell: true is required on Windows to resolve `npx` from PATH.
661
- shell: process.platform === "win32"
662
- });
663
- let capturedOutput = "";
664
- if (quiet) {
665
- proc.stdout?.on("data", (chunk) => {
666
- capturedOutput += chunk.toString();
667
- });
668
- proc.stderr?.on("data", (chunk) => {
669
- capturedOutput += chunk.toString();
670
- });
671
- }
672
- proc.on("close", (code) => {
673
- if (quiet && code !== 0 && capturedOutput.trim().length > 0) {
674
- const lines = capturedOutput.trim().split(/\r?\n/);
675
- const tail = lines.slice(-10).join("\n");
676
- logMessage(chalkStderr.gray(`skills output (tail):
677
- ${tail}`));
678
- }
679
- resolve(code === 0);
680
- });
681
- proc.on("error", () => resolve(false));
682
- });
683
- }
684
- //# sourceMappingURL=index.js.map