convex 1.34.1 → 1.35.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +86 -43
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/aiFiles.js +31 -13
- package/dist/cjs/cli/aiFiles.js.map +3 -3
- package/dist/cjs/cli/configure.js +21 -24
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deploy.js +8 -9
- 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 +14 -10
- package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/claudemd.js +14 -10
- package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +10 -3
- package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/index.js +70 -86
- package/dist/cjs/cli/lib/aiFiles/index.js.map +3 -3
- package/dist/cjs/cli/lib/aiFiles/skills.js +28 -12
- package/dist/cjs/cli/lib/aiFiles/skills.js.map +2 -2
- 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 +31 -28
- package/dist/cjs/cli/lib/aiFiles/status.js.map +2 -2
- package/dist/cjs/cli/lib/aiFiles/utils.js +31 -14
- package/dist/cjs/cli/lib/aiFiles/utils.js.map +2 -2
- 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 +4 -5
- package/dist/cjs/cli/lib/command.js.map +2 -2
- package/dist/cjs/cli/lib/config.js +41 -4
- 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/envvars.js +8 -1
- package/dist/cjs/cli/lib/envvars.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 +14 -7
- 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 +8 -9
- 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/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- 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/cli/aiFiles.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 +5 -5
- package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
- package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
- package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +20 -18
- package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +6 -4
- package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
- 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 +4 -1
- package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +13 -3
- package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
- 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 +17 -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/modules.d.ts +12 -12
- package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +25 -16
- 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/envvars.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/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/index.d.ts +1 -1
- package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +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 +1665 -1215
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/cli/aiFiles.js +33 -15
- package/dist/esm/cli/aiFiles.js.map +2 -2
- package/dist/esm/cli/configure.js +23 -26
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deploy.js +12 -11
- 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 +13 -9
- package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/claudemd.js +13 -9
- package/dist/esm/cli/lib/aiFiles/claudemd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +12 -5
- package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/index.js +72 -89
- package/dist/esm/cli/lib/aiFiles/index.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/skills.js +29 -13
- package/dist/esm/cli/lib/aiFiles/skills.js.map +2 -2
- 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 +32 -29
- package/dist/esm/cli/lib/aiFiles/status.js.map +2 -2
- package/dist/esm/cli/lib/aiFiles/utils.js +25 -10
- package/dist/esm/cli/lib/aiFiles/utils.js.map +2 -2
- 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 +4 -5
- package/dist/esm/cli/lib/command.js.map +2 -2
- package/dist/esm/cli/lib/config.js +39 -3
- 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/envvars.js +8 -1
- package/dist/esm/cli/lib/envvars.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 +11 -9
- 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/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
- 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/cli/aiFiles.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 +5 -5
- package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
- package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
- package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts +20 -18
- package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +6 -4
- package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
- 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 +4 -1
- package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +13 -3
- package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
- 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 +17 -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/modules.d.ts +12 -12
- package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +25 -16
- 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/envvars.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/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/index.d.ts +1 -1
- package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +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 +1 -1
- package/dist/react.bundle.js.map +1 -1
- package/package.json +11 -7
- package/schemas/convex.schema.json +15 -2
- package/src/cli/aiFiles.ts +44 -14
- package/src/cli/configure.test.ts +138 -0
- package/src/cli/configure.ts +48 -47
- package/src/cli/deploy.ts +13 -10
- 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 +343 -35
- 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/aiFiles/agentsmd.ts +15 -11
- package/src/cli/lib/aiFiles/claudemd.ts +15 -11
- package/src/cli/lib/aiFiles/guidelinesmd.test.ts +12 -2
- package/src/cli/lib/aiFiles/guidelinesmd.ts +15 -7
- package/src/cli/lib/aiFiles/index.test.ts +188 -222
- package/src/cli/lib/aiFiles/index.ts +119 -125
- package/src/cli/lib/aiFiles/integration.test.ts +112 -45
- package/src/cli/lib/aiFiles/prompt.test.ts +6 -6
- package/src/cli/lib/aiFiles/skills.ts +46 -16
- 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 +45 -39
- package/src/cli/lib/aiFiles/utils.test.ts +50 -0
- package/src/cli/lib/aiFiles/utils.ts +38 -10
- package/src/cli/lib/api.ts +88 -7
- package/src/cli/lib/command.ts +12 -7
- package/src/cli/lib/config.test.ts +184 -7
- package/src/cli/lib/config.ts +67 -7
- 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/envvars.ts +16 -1
- 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 +102 -75
- package/src/cli/lib/updates.ts +14 -12
- 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/index.ts +1 -1
- package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
- package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -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/aiFiles/config.js +0 -171
- package/dist/cjs/cli/lib/aiFiles/config.js.map +0 -7
- package/dist/cjs-types/cli/lib/aiFiles/config.d.ts +0 -46
- package/dist/cjs-types/cli/lib/aiFiles/config.d.ts.map +0 -1
- package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts +0 -2
- package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
- package/dist/esm/cli/lib/aiFiles/config.js +0 -135
- package/dist/esm/cli/lib/aiFiles/config.js.map +0 -7
- package/dist/esm-types/cli/lib/aiFiles/config.d.ts +0 -46
- package/dist/esm-types/cli/lib/aiFiles/config.d.ts.map +0 -1
- package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts +0 -2
- package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
- package/src/cli/lib/aiFiles/config.test.ts +0 -460
- package/src/cli/lib/aiFiles/config.ts +0 -188
- package/src/values/.claude/settings.local.json +0 -10
package/src/cli/dev.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command, Option } from "@commander-js/extra-typings";
|
|
2
|
+
import { chalkStderr } from "chalk";
|
|
2
3
|
import { oneoffContext } from "../bundler/context.js";
|
|
3
4
|
import { logVerbose } from "../bundler/log.js";
|
|
4
5
|
import { deploymentCredentialsOrConfigure } from "./configure.js";
|
|
@@ -9,8 +10,11 @@ import {
|
|
|
9
10
|
CONVEX_DEPLOYMENT_ENV_VAR_NAME,
|
|
10
11
|
CONVEX_SELF_HOSTED_URL_VAR_NAME,
|
|
11
12
|
} from "./lib/utils/utils.js";
|
|
12
|
-
import {
|
|
13
|
-
|
|
13
|
+
import {
|
|
14
|
+
getDeploymentSelection,
|
|
15
|
+
type DeploymentSelection,
|
|
16
|
+
} from "./lib/deploymentSelection.js";
|
|
17
|
+
import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
|
|
14
18
|
|
|
15
19
|
export const dev = new Command("dev")
|
|
16
20
|
.summary("Develop against a dev deployment, watching for changes")
|
|
@@ -18,7 +22,7 @@ export const dev = new Command("dev")
|
|
|
18
22
|
"Develop against a dev deployment, watching for changes\n\n" +
|
|
19
23
|
" 1. Configures a new or existing project (if needed)\n" +
|
|
20
24
|
" 2. Updates generated types and pushes code to the configured dev deployment\n" +
|
|
21
|
-
" 3. Runs the provided command (if `--
|
|
25
|
+
" 3. Runs the provided command (if `--start` or `--run` is used)\n" +
|
|
22
26
|
" 4. Watches for file changes, and repeats step 2\n",
|
|
23
27
|
)
|
|
24
28
|
.allowExcessArguments(false)
|
|
@@ -59,25 +63,31 @@ export const dev = new Command("dev")
|
|
|
59
63
|
"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3",
|
|
60
64
|
false,
|
|
61
65
|
)
|
|
66
|
+
.addOption(
|
|
67
|
+
new Option(
|
|
68
|
+
"--start <command>",
|
|
69
|
+
"Start a long-running command alongside `convex dev`, like a frontend " +
|
|
70
|
+
"dev server. The command inherits stdin/stdout so you can interact " +
|
|
71
|
+
"with it directly. Example: npx convex dev --start 'vite --open'",
|
|
72
|
+
).conflicts(["--run", "--run-sh"]),
|
|
73
|
+
)
|
|
74
|
+
.addOption(
|
|
75
|
+
new Option("--run-sh <command>", "Deprecated: use --start instead.")
|
|
76
|
+
.conflicts(["--start", "--run"])
|
|
77
|
+
.hideHelp(),
|
|
78
|
+
)
|
|
62
79
|
.addOption(
|
|
63
80
|
new Option(
|
|
64
81
|
"--run <functionName>",
|
|
65
82
|
"The identifier of the function to run in step 3, " +
|
|
66
83
|
"like `api.init.createData` or `myDir/myFile:myFunction`",
|
|
67
|
-
).conflicts(["--
|
|
84
|
+
).conflicts(["--start"]),
|
|
68
85
|
)
|
|
69
86
|
.option(
|
|
70
87
|
"--run-component <functionName>",
|
|
71
88
|
"If --run is used and the function is in a component, the path the component tree defined in convex.config.ts. " +
|
|
72
89
|
"Components are a beta feature. This flag is unstable and may change in subsequent releases.",
|
|
73
90
|
)
|
|
74
|
-
.addOption(
|
|
75
|
-
new Option(
|
|
76
|
-
"--run-sh <command>",
|
|
77
|
-
"A shell command to run in step 3, like `node myScript.js`. " +
|
|
78
|
-
"If you just want to run a Convex function, use `--run` instead.",
|
|
79
|
-
).conflicts(["--run"]),
|
|
80
|
-
)
|
|
81
91
|
.addOption(
|
|
82
92
|
new Option(
|
|
83
93
|
"--tail-logs [mode]",
|
|
@@ -96,7 +106,7 @@ export const dev = new Command("dev")
|
|
|
96
106
|
"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud",
|
|
97
107
|
)
|
|
98
108
|
.choices(["new", "existing"] as const)
|
|
99
|
-
.conflicts(["--local", "--cloud"]),
|
|
109
|
+
.conflicts(["--local", "--cloud", "--url", "--admin-key", "--env-file"]),
|
|
100
110
|
)
|
|
101
111
|
.addOption(
|
|
102
112
|
new Option(
|
|
@@ -147,6 +157,7 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
147
157
|
.addOption(new Option("--local-site-port <port>").hideHelp())
|
|
148
158
|
.addOption(new Option("--local-backend-version <version>").hideHelp())
|
|
149
159
|
.addOption(new Option("--local-force-upgrade").default(false).hideHelp())
|
|
160
|
+
.addOption(new Option("--deployment <deployment>").hideHelp())
|
|
150
161
|
.addOption(
|
|
151
162
|
new Option(
|
|
152
163
|
"--local",
|
|
@@ -173,6 +184,20 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
173
184
|
await ctx.flushAndExit(-2);
|
|
174
185
|
});
|
|
175
186
|
|
|
187
|
+
if (cmdOptions.deployment !== undefined) {
|
|
188
|
+
return await ctx.crash({
|
|
189
|
+
exitCode: 1,
|
|
190
|
+
errorType: "fatal",
|
|
191
|
+
printedMessage:
|
|
192
|
+
"`--deployment` can’t be used with `npx convex dev`. \n\n" +
|
|
193
|
+
" To select this deployment for development, run: \n" +
|
|
194
|
+
chalkStderr.bold(
|
|
195
|
+
` npx convex deployment select ${cmdOptions.deployment}\n`,
|
|
196
|
+
) +
|
|
197
|
+
" Then, run `npx convex dev` again.",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
176
201
|
const devOptions = await normalizeDevOptions(ctx, cmdOptions);
|
|
177
202
|
|
|
178
203
|
if (cmdOptions.configure === undefined) {
|
|
@@ -225,7 +250,17 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
225
250
|
|
|
226
251
|
const configure =
|
|
227
252
|
cmdOptions.configure === true ? "ask" : (cmdOptions.configure ?? null);
|
|
228
|
-
|
|
253
|
+
// --configure means "pick a project" — skip deployment selection entirely
|
|
254
|
+
const deploymentSelection =
|
|
255
|
+
configure !== null
|
|
256
|
+
? ({
|
|
257
|
+
kind: "chooseProject",
|
|
258
|
+
selectionWithinProject: {
|
|
259
|
+
// For backwards compatibility, allow `--configure --prod`
|
|
260
|
+
kind: cmdOptions.prod ? "prod" : "unspecified",
|
|
261
|
+
},
|
|
262
|
+
} satisfies DeploymentSelection)
|
|
263
|
+
: await getDeploymentSelection(ctx, cmdOptions);
|
|
229
264
|
const credentials = await deploymentCredentialsOrConfigure(
|
|
230
265
|
ctx,
|
|
231
266
|
deploymentSelection,
|
|
@@ -260,7 +295,7 @@ Same format as .env.local or .env files, and overrides them.`,
|
|
|
260
295
|
...(credentials.deploymentFields !== null
|
|
261
296
|
? [
|
|
262
297
|
usageStateWarning(ctx, credentials.deploymentFields.deploymentName),
|
|
263
|
-
|
|
298
|
+
checkVersionAndAiFilesStaleness(ctx),
|
|
264
299
|
]
|
|
265
300
|
: []),
|
|
266
301
|
]);
|
package/src/cli/docs.ts
CHANGED
|
@@ -38,7 +38,7 @@ export const docs = new Command("docs")
|
|
|
38
38
|
`get_cookie/${configuredDeployment}`,
|
|
39
39
|
BIG_BRAIN_URL,
|
|
40
40
|
);
|
|
41
|
-
const fetch =
|
|
41
|
+
const fetch = bigBrainFetch(ctx);
|
|
42
42
|
try {
|
|
43
43
|
const res = await fetch(getCookieUrl);
|
|
44
44
|
deprecationCheckWarning(ctx, res);
|
package/src/cli/init.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { oneoffContext } from "../bundler/context.js";
|
|
|
3
3
|
import { logVerbose } from "../bundler/log.js";
|
|
4
4
|
import { deploymentCredentialsOrConfigure } from "./configure.js";
|
|
5
5
|
import { getDeploymentSelection } from "./lib/deploymentSelection.js";
|
|
6
|
-
import {
|
|
6
|
+
import { checkVersionAndAiFilesStaleness } from "./lib/updates.js";
|
|
7
7
|
import { usageStateWarning } from "./lib/usage.js";
|
|
8
8
|
|
|
9
9
|
// Equivalent to `npx convex dev --once --skip-push`.
|
|
@@ -37,7 +37,7 @@ export const init = new Command("init")
|
|
|
37
37
|
if (credentials.deploymentFields !== null) {
|
|
38
38
|
await Promise.all([
|
|
39
39
|
usageStateWarning(ctx, credentials.deploymentFields.deploymentName),
|
|
40
|
-
|
|
40
|
+
checkVersionAndAiFilesStaleness(ctx),
|
|
41
41
|
]);
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -4,16 +4,18 @@ import {
|
|
|
4
4
|
agentsMdConvexSection,
|
|
5
5
|
} from "../../codegen_templates/agentsmd.js";
|
|
6
6
|
import { agentsMdPath } from "./paths.js";
|
|
7
|
-
import { type
|
|
7
|
+
import { type AiFilesState } from "./state.js";
|
|
8
8
|
import {
|
|
9
9
|
type ManagedSectionTarget,
|
|
10
10
|
type InjectResult,
|
|
11
11
|
type StripResult,
|
|
12
12
|
injectManagedSection,
|
|
13
|
-
|
|
13
|
+
attemptToStripManagedSection,
|
|
14
14
|
hasManagedSection,
|
|
15
|
-
|
|
15
|
+
attemptToRemoveMarkdownSection,
|
|
16
16
|
} from "./utils.js";
|
|
17
|
+
import { logMessage } from "../../../bundler/log.js";
|
|
18
|
+
import { chalkStderr } from "chalk";
|
|
17
19
|
|
|
18
20
|
function target(projectDir?: string): ManagedSectionTarget {
|
|
19
21
|
return {
|
|
@@ -33,18 +35,18 @@ export async function injectAgentsMdSection({
|
|
|
33
35
|
return injectManagedSection({ ...target(projectDir), section });
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
export async function
|
|
38
|
+
export async function attemptToStripAgentsMdSection(
|
|
37
39
|
projectDir: string,
|
|
38
40
|
): Promise<StripResult> {
|
|
39
|
-
return
|
|
41
|
+
return attemptToStripManagedSection(target(projectDir));
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
export async function
|
|
44
|
+
export async function attemptToRemoveAgentsMdSection(
|
|
43
45
|
projectDir: string,
|
|
44
46
|
): Promise<boolean> {
|
|
45
|
-
return
|
|
47
|
+
return attemptToRemoveMarkdownSection({
|
|
46
48
|
projectDir,
|
|
47
|
-
strip:
|
|
49
|
+
strip: attemptToStripAgentsMdSection,
|
|
48
50
|
fileName: "AGENTS.md",
|
|
49
51
|
});
|
|
50
52
|
}
|
|
@@ -61,17 +63,19 @@ export async function hasAgentsMdInstalled(
|
|
|
61
63
|
*/
|
|
62
64
|
export async function applyAgentsMdSection({
|
|
63
65
|
projectDir,
|
|
64
|
-
|
|
66
|
+
state,
|
|
65
67
|
convexDirName,
|
|
66
68
|
}: {
|
|
67
69
|
projectDir: string;
|
|
68
|
-
|
|
70
|
+
state: AiFilesState;
|
|
69
71
|
convexDirName: string;
|
|
70
72
|
}): Promise<boolean> {
|
|
71
73
|
const result = await injectAgentsMdSection({
|
|
72
74
|
section: agentsMdConvexSection(convexDirName),
|
|
73
75
|
projectDir,
|
|
74
76
|
});
|
|
75
|
-
|
|
77
|
+
if (result.didWrite)
|
|
78
|
+
logMessage(`${chalkStderr.green("✔")} AGENTS.md written`);
|
|
79
|
+
state.agentsMdSectionHash = result.sectionHash;
|
|
76
80
|
return result.didWrite;
|
|
77
81
|
}
|
|
@@ -4,16 +4,18 @@ import {
|
|
|
4
4
|
claudeMdConvexSection,
|
|
5
5
|
} from "../../codegen_templates/claudemd.js";
|
|
6
6
|
import { claudeMdPath } from "./paths.js";
|
|
7
|
-
import { type
|
|
7
|
+
import { type AiFilesState } from "./state.js";
|
|
8
8
|
import {
|
|
9
9
|
type ManagedSectionTarget,
|
|
10
10
|
type InjectResult,
|
|
11
11
|
type StripResult,
|
|
12
12
|
injectManagedSection,
|
|
13
|
-
|
|
13
|
+
attemptToStripManagedSection,
|
|
14
14
|
hasManagedSection,
|
|
15
|
-
|
|
15
|
+
attemptToRemoveMarkdownSection,
|
|
16
16
|
} from "./utils.js";
|
|
17
|
+
import { logMessage } from "../../../bundler/log.js";
|
|
18
|
+
import { chalkStderr } from "chalk";
|
|
17
19
|
|
|
18
20
|
function target(projectDir?: string): ManagedSectionTarget {
|
|
19
21
|
return {
|
|
@@ -33,18 +35,18 @@ export async function injectClaudeMdSection({
|
|
|
33
35
|
return injectManagedSection({ ...target(projectDir), section });
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
export async function
|
|
38
|
+
export async function attemptToStripClaudeMdSection(
|
|
37
39
|
projectDir: string,
|
|
38
40
|
): Promise<StripResult> {
|
|
39
|
-
return
|
|
41
|
+
return attemptToStripManagedSection(target(projectDir));
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
export async function
|
|
44
|
+
export async function attemptToRemoveClaudeMdSection(
|
|
43
45
|
projectDir: string,
|
|
44
46
|
): Promise<boolean> {
|
|
45
|
-
return
|
|
47
|
+
return attemptToRemoveMarkdownSection({
|
|
46
48
|
projectDir,
|
|
47
|
-
strip:
|
|
49
|
+
strip: attemptToStripClaudeMdSection,
|
|
48
50
|
fileName: "CLAUDE.md",
|
|
49
51
|
});
|
|
50
52
|
}
|
|
@@ -61,17 +63,19 @@ export async function hasClaudeMdInstalled(
|
|
|
61
63
|
*/
|
|
62
64
|
export async function applyClaudeMdSection({
|
|
63
65
|
projectDir,
|
|
64
|
-
|
|
66
|
+
state,
|
|
65
67
|
convexDirName,
|
|
66
68
|
}: {
|
|
67
69
|
projectDir: string;
|
|
68
|
-
|
|
70
|
+
state: AiFilesState;
|
|
69
71
|
convexDirName: string;
|
|
70
72
|
}): Promise<boolean> {
|
|
71
73
|
const result = await injectClaudeMdSection({
|
|
72
74
|
section: claudeMdConvexSection(convexDirName),
|
|
73
75
|
projectDir,
|
|
74
76
|
});
|
|
75
|
-
|
|
77
|
+
if (result.didWrite)
|
|
78
|
+
logMessage(`${chalkStderr.green("✔")} CLAUDE.md written`);
|
|
79
|
+
state.claudeMdHash = result.sectionHash;
|
|
76
80
|
return result.didWrite;
|
|
77
81
|
}
|
|
@@ -30,11 +30,21 @@ describe("hasGuidelinesInstalled", () => {
|
|
|
30
30
|
expect(await hasGuidelinesInstalled(convexDir)).toBe(true);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
test("returns
|
|
33
|
+
test("returns false when guidelines.md is empty", async () => {
|
|
34
34
|
fs.writeFileSync(
|
|
35
35
|
path.join(convexDir, "_generated", "ai", "guidelines.md"),
|
|
36
36
|
"",
|
|
37
37
|
);
|
|
38
|
-
expect(await hasGuidelinesInstalled(convexDir)).toBe(
|
|
38
|
+
expect(await hasGuidelinesInstalled(convexDir)).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("throws when guidelines.md cannot be read", async () => {
|
|
42
|
+
fs.rmSync(path.join(convexDir, "_generated", "ai", "guidelines.md"), {
|
|
43
|
+
force: true,
|
|
44
|
+
recursive: true,
|
|
45
|
+
});
|
|
46
|
+
fs.mkdirSync(path.join(convexDir, "_generated", "ai", "guidelines.md"));
|
|
47
|
+
|
|
48
|
+
await expect(hasGuidelinesInstalled(convexDir)).rejects.toThrow();
|
|
39
49
|
});
|
|
40
50
|
});
|
|
@@ -4,14 +4,17 @@ import { chalkStderr } from "chalk";
|
|
|
4
4
|
import { logMessage } from "../../../bundler/log.js";
|
|
5
5
|
import { downloadGuidelines } from "../versionApi.js";
|
|
6
6
|
import { hashSha256 } from "../utils/hash.js";
|
|
7
|
-
import { guidelinesPathForConvexDir } from "./paths.js";
|
|
8
|
-
import {
|
|
9
|
-
import { type
|
|
7
|
+
import { aiDirForConvexDir, guidelinesPathForConvexDir } from "./paths.js";
|
|
8
|
+
import { attemptReadFile, exhaustiveCheck } from "./utils.js";
|
|
9
|
+
import { type AiFilesState } from "./state.js";
|
|
10
10
|
|
|
11
11
|
export async function hasGuidelinesInstalled(
|
|
12
12
|
convexDir: string,
|
|
13
13
|
): Promise<boolean> {
|
|
14
|
-
|
|
14
|
+
const result = await attemptReadFile(guidelinesPathForConvexDir(convexDir));
|
|
15
|
+
if (result.kind === "content") return true;
|
|
16
|
+
if (result.kind === "empty" || result.kind === "not-found") return false;
|
|
17
|
+
return exhaustiveCheck(result);
|
|
15
18
|
}
|
|
16
19
|
|
|
17
20
|
/**
|
|
@@ -21,10 +24,10 @@ export async function hasGuidelinesInstalled(
|
|
|
21
24
|
*/
|
|
22
25
|
export async function installGuidelinesFile({
|
|
23
26
|
convexDir,
|
|
24
|
-
|
|
27
|
+
state,
|
|
25
28
|
}: {
|
|
26
29
|
convexDir: string;
|
|
27
|
-
|
|
30
|
+
state: AiFilesState;
|
|
28
31
|
}): Promise<void> {
|
|
29
32
|
const guidelines = await downloadGuidelines();
|
|
30
33
|
if (guidelines === null) {
|
|
@@ -36,6 +39,11 @@ export async function installGuidelinesFile({
|
|
|
36
39
|
return;
|
|
37
40
|
}
|
|
38
41
|
|
|
42
|
+
await fs.mkdir(aiDirForConvexDir(convexDir), { recursive: true });
|
|
39
43
|
await fs.writeFile(guidelinesPathForConvexDir(convexDir), guidelines, "utf8");
|
|
40
|
-
|
|
44
|
+
state.guidelinesHash = hashSha256(guidelines);
|
|
45
|
+
|
|
46
|
+
logMessage(
|
|
47
|
+
`${chalkStderr.green("✔")} ${guidelinesPathForConvexDir(convexDir)} written`,
|
|
48
|
+
);
|
|
41
49
|
}
|