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