convex 1.34.1 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +86 -43
- package/dist/browser.bundle.js +8 -2
- 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/cli/aiFiles.js +31 -13
- 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 +21 -24
- 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 +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/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/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/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 +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/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/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 +1670 -1214
- 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/cli/aiFiles.js +33 -15
- 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 +23 -26
- 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 +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/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/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/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 +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/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/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 +50 -7
- package/dist/react.bundle.js.map +3 -3
- package/package.json +11 -7
- package/schemas/convex.schema.json +15 -2
- 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/cli/aiFiles.ts +44 -14
- package/src/cli/codegen_templates/readme.ts +14 -1
- package/src/cli/configure.test.ts +138 -0
- package/src/cli/configure.ts +48 -47
- 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 +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/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/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/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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "convex",
|
|
3
3
|
"description": "Client for the Convex Cloud",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.35.0",
|
|
5
5
|
"author": "Convex, Inc. <no-reply@convex.dev>",
|
|
6
6
|
"homepage": "https://convex.dev",
|
|
7
7
|
"repository": {
|
|
@@ -178,6 +178,7 @@
|
|
|
178
178
|
"peerDependencies": {
|
|
179
179
|
"@auth0/auth0-react": "^2.0.1",
|
|
180
180
|
"@clerk/clerk-react": "^4.12.8 || ^5.0.0",
|
|
181
|
+
"@clerk/react": "^6.0.0",
|
|
181
182
|
"react": "^18.0.0 || ^19.0.0-0 || ^19.0.0"
|
|
182
183
|
},
|
|
183
184
|
"peerDependenciesMeta": {
|
|
@@ -189,6 +190,9 @@
|
|
|
189
190
|
},
|
|
190
191
|
"@clerk/clerk-react": {
|
|
191
192
|
"optional": true
|
|
193
|
+
},
|
|
194
|
+
"@clerk/react": {
|
|
195
|
+
"optional": true
|
|
192
196
|
}
|
|
193
197
|
},
|
|
194
198
|
"@comment devDependencies": [
|
|
@@ -199,11 +203,11 @@
|
|
|
199
203
|
"@auth0/auth0-react": "2.11.0",
|
|
200
204
|
"@babel/parser": "^7.27.1",
|
|
201
205
|
"@babel/types": "^7.27.1",
|
|
202
|
-
"@clerk/
|
|
206
|
+
"@clerk/react": "^6.0.0",
|
|
203
207
|
"@commander-js/extra-typings": "^14.0.0",
|
|
204
208
|
"@convex-dev/platform": "0.1.6",
|
|
205
209
|
"@eslint/compat": "~2.0.0",
|
|
206
|
-
"@eslint/eslintrc": "
|
|
210
|
+
"@eslint/eslintrc": "^3",
|
|
207
211
|
"@eslint/js": "~9.39.0",
|
|
208
212
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
209
213
|
"@octokit/openapi-types": "~25.0.0",
|
|
@@ -229,7 +233,7 @@
|
|
|
229
233
|
"bufferutil": "^4.0.7",
|
|
230
234
|
"chalk": "5",
|
|
231
235
|
"chokidar": "3.6.0",
|
|
232
|
-
"commander": "^14.0.
|
|
236
|
+
"commander": "^14.0.3",
|
|
233
237
|
"deep-equal": "2.2.3",
|
|
234
238
|
"depcheck": "~1.4.7",
|
|
235
239
|
"detect-port": "^2.1.0",
|
|
@@ -244,10 +248,10 @@
|
|
|
244
248
|
"fetch-retry": "~6.0.0",
|
|
245
249
|
"find-up": "^8.0.0",
|
|
246
250
|
"globals": "~17.0.0",
|
|
247
|
-
"happy-dom": "~20.
|
|
251
|
+
"happy-dom": "~20.8.0",
|
|
248
252
|
"jsdom": "~27.4.0",
|
|
249
253
|
"json5": "~2.2.3",
|
|
250
|
-
"knip": "~5.
|
|
254
|
+
"knip": "~5.86.0",
|
|
251
255
|
"napi-wasm": "1.1.3",
|
|
252
256
|
"open": "^8.3.0",
|
|
253
257
|
"openapi-fetch": "~0.15.0",
|
|
@@ -262,7 +266,7 @@
|
|
|
262
266
|
"serve-handler": "~6.1.6",
|
|
263
267
|
"shx": "~0.4.0",
|
|
264
268
|
"skott": "~0.35.4",
|
|
265
|
-
"tar": "^7.5.
|
|
269
|
+
"tar": "^7.5.11",
|
|
266
270
|
"tsx": "^4.19.4",
|
|
267
271
|
"typedoc": "^0.24.6",
|
|
268
272
|
"typescript": "~5.0.3",
|
|
@@ -150,8 +150,8 @@
|
|
|
150
150
|
},
|
|
151
151
|
"legacyComponentApi": {
|
|
152
152
|
"type": "boolean",
|
|
153
|
-
"description": "When true
|
|
154
|
-
"default":
|
|
153
|
+
"description": "When true, generates inline expanded types for component APIs. When false (recommended), generates import-based component API references instead.",
|
|
154
|
+
"default": false
|
|
155
155
|
},
|
|
156
156
|
"staticApi": {
|
|
157
157
|
"type": "boolean",
|
|
@@ -199,6 +199,19 @@
|
|
|
199
199
|
"description": "Deprecated. Use `enabled` instead.",
|
|
200
200
|
"deprecated": true,
|
|
201
201
|
"default": false
|
|
202
|
+
},
|
|
203
|
+
"skills": {
|
|
204
|
+
"type": "object",
|
|
205
|
+
"description": "Configuration for agent skills installed by Convex.",
|
|
206
|
+
"properties": {
|
|
207
|
+
"agents": {
|
|
208
|
+
"type": "array",
|
|
209
|
+
"items": { "type": "string" },
|
|
210
|
+
"description": "List of agents to install skills for (e.g. 'claude-code', 'codex', 'cursor'). Defaults to ['claude-code', 'codex']. For a list of supported agents see: https://github.com/vercel-labs/skills?tab=readme-ov-file#supported-agents",
|
|
211
|
+
"default": ["claude-code", "codex"]
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"additionalProperties": false
|
|
202
215
|
}
|
|
203
216
|
},
|
|
204
217
|
"additionalProperties": false
|
package/src/browser/index.ts
CHANGED
|
@@ -40,3 +40,6 @@ export type { QueryJournal } from "./sync/protocol.js";
|
|
|
40
40
|
/** @internal */
|
|
41
41
|
export type { UserIdentityAttributes } from "./sync/protocol.js";
|
|
42
42
|
export type { FunctionResult } from "./sync/function_result.js";
|
|
43
|
+
/** @internal */
|
|
44
|
+
export { convexQueryOptions } from "./query_options.js";
|
|
45
|
+
export type { QueryOptions } from "./query_options.js";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { test } from "vitest";
|
|
2
2
|
import { makeFunctionReference } from "../server/index.js";
|
|
3
3
|
import { EmptyObject } from "../server/registration.js";
|
|
4
|
-
import { ConvexReactClient } from "../react/client.js";
|
|
5
4
|
import { convexQueryOptions } from "./query_options.js";
|
|
6
5
|
|
|
7
6
|
const apiQueryFuncWithArgs = makeFunctionReference<
|
|
@@ -42,11 +41,3 @@ test("convexQueryOptions", async () => {
|
|
|
42
41
|
args: { name: "hey" },
|
|
43
42
|
});
|
|
44
43
|
});
|
|
45
|
-
|
|
46
|
-
test("prewarmQuery types", async () => {
|
|
47
|
-
const client = {
|
|
48
|
-
prewarmQuery: () => {},
|
|
49
|
-
} as unknown as ConvexReactClient;
|
|
50
|
-
|
|
51
|
-
client.prewarmQuery({ query: apiQueryFuncWithArgs, args: { name: "hi" } });
|
|
52
|
-
});
|
|
@@ -1,26 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
* Query options are a potential new API for a variety of functions, but in particular a new overload of the React hook for queries.
|
|
3
|
-
*
|
|
4
|
-
* Inspired by https://tanstack.com/query/v5/docs/framework/react/guides/query-options
|
|
5
|
-
*/
|
|
1
|
+
// Inspired by https://tanstack.com/query/v5/docs/framework/react/guides/query-options
|
|
6
2
|
import type { FunctionArgs, FunctionReference } from "../server/api.js";
|
|
7
3
|
|
|
8
|
-
// TODO if this type can encompass all use cases we can add not requiring args for queries
|
|
9
|
-
// that don't take arguments. Goal would be that queryOptions allows leaving out args,
|
|
10
|
-
// but queryOptions returns an object that always contains args. Helpers, "middleware,"
|
|
11
|
-
// anything that intercepts these arguments
|
|
12
4
|
/**
|
|
13
|
-
*
|
|
5
|
+
* Options for a Convex query: the query function reference and its arguments.
|
|
6
|
+
*
|
|
7
|
+
* Used with the object-form overload of {@link useQuery}.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
14
10
|
*/
|
|
15
|
-
export type
|
|
11
|
+
export type QueryOptions<Query extends FunctionReference<"query">> = {
|
|
12
|
+
/**
|
|
13
|
+
* The query function to run.
|
|
14
|
+
*/
|
|
16
15
|
query: Query;
|
|
16
|
+
/**
|
|
17
|
+
* The arguments to the query function.
|
|
18
|
+
*/
|
|
17
19
|
args: FunctionArgs<Query>;
|
|
18
|
-
extendSubscriptionFor?: number;
|
|
19
20
|
};
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Creates a type-safe {@link QueryOptions} object for a Convex query.
|
|
24
|
+
*
|
|
25
|
+
* This is an identity function that exists to provide type inference — passing
|
|
26
|
+
* your query and args through this helper ensures TypeScript infers the correct
|
|
27
|
+
* `Query` type parameter, which enables precise return types on hooks like
|
|
28
|
+
* {@link useQuery}.
|
|
29
|
+
*
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const opts = convexQueryOptions({
|
|
32
|
+
* query: api.users.getById,
|
|
33
|
+
* args: { id: userId },
|
|
34
|
+
* });
|
|
35
|
+
* // opts is typed as QueryOptions<typeof api.users.getById>
|
|
36
|
+
* client.prewarmQuery(opts);
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @param options - The query and its arguments.
|
|
40
|
+
* @returns The same object, typed as `QueryOptions<Query>`.
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
22
43
|
export function convexQueryOptions<Query extends FunctionReference<"query">>(
|
|
23
|
-
options:
|
|
24
|
-
):
|
|
44
|
+
options: QueryOptions<Query>,
|
|
45
|
+
): QueryOptions<Query> {
|
|
25
46
|
return options;
|
|
26
47
|
}
|
package/src/cli/aiFiles.ts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { Command } from "@commander-js/extra-typings";
|
|
3
|
+
import { chalkStderr } from "chalk";
|
|
4
|
+
import { logMessage } from "../bundler/log.js";
|
|
3
5
|
import { oneoffContext } from "../bundler/context.js";
|
|
4
6
|
import { readProjectConfig } from "./lib/config.js";
|
|
5
7
|
import { functionsDir } from "./lib/utils/utils.js";
|
|
6
8
|
import {
|
|
7
9
|
installAiFiles,
|
|
8
10
|
enableAiFiles,
|
|
11
|
+
disableAiFiles,
|
|
9
12
|
removeAiFiles,
|
|
10
|
-
safelyAttemptToDisableAiFiles,
|
|
11
13
|
} from "./lib/aiFiles/index.js";
|
|
12
14
|
import { statusAiFiles } from "./lib/aiFiles/status.js";
|
|
15
|
+
import { writeAiFilesConfig } from "./lib/config.js";
|
|
13
16
|
|
|
14
17
|
async function resolveProjectPaths() {
|
|
15
18
|
const ctx = await oneoffContext({});
|
|
16
19
|
const { configPath, projectConfig } = await readProjectConfig(ctx);
|
|
17
20
|
const convexDir = path.resolve(functionsDir(configPath, projectConfig));
|
|
18
21
|
const projectDir = path.resolve(path.dirname(configPath));
|
|
19
|
-
|
|
22
|
+
const aiFilesConfig = projectConfig.aiFiles;
|
|
23
|
+
return { projectDir, convexDir, aiFilesConfig, projectConfig };
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
const aiInstall = new Command("install")
|
|
@@ -26,12 +30,15 @@ const aiInstall = new Command("install")
|
|
|
26
30
|
" - convex/_generated/ai/guidelines.md\n" +
|
|
27
31
|
" - AGENTS.md (Convex section only)\n" +
|
|
28
32
|
" - CLAUDE.md (Convex section only)\n" +
|
|
29
|
-
" - Agent skills (installed to each coding agent's native path)",
|
|
33
|
+
" - Agent skills (installed to each coding agent's native path, configured via convex.json)",
|
|
30
34
|
)
|
|
31
35
|
.allowExcessArguments(false)
|
|
32
36
|
.action(async () => {
|
|
33
|
-
const { projectDir, convexDir } =
|
|
34
|
-
|
|
37
|
+
const { projectDir, convexDir, aiFilesConfig } =
|
|
38
|
+
await resolveProjectPaths();
|
|
39
|
+
await installAiFiles({ projectDir, convexDir, aiFilesConfig });
|
|
40
|
+
|
|
41
|
+
logMessage(`${chalkStderr.green("✔")} Convex AI files installed.`);
|
|
35
42
|
});
|
|
36
43
|
|
|
37
44
|
const aiEnable = new Command("enable")
|
|
@@ -42,8 +49,16 @@ const aiEnable = new Command("enable")
|
|
|
42
49
|
)
|
|
43
50
|
.allowExcessArguments(false)
|
|
44
51
|
.action(async () => {
|
|
45
|
-
const { projectDir, convexDir } =
|
|
46
|
-
|
|
52
|
+
const { projectDir, convexDir, aiFilesConfig } =
|
|
53
|
+
await resolveProjectPaths();
|
|
54
|
+
|
|
55
|
+
const newAiFilesConfig = await enableAiFiles({
|
|
56
|
+
projectDir,
|
|
57
|
+
convexDir,
|
|
58
|
+
aiFilesConfig,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
await writeAiFilesConfig({ projectDir, aiFiles: newAiFilesConfig });
|
|
47
62
|
});
|
|
48
63
|
|
|
49
64
|
const aiUpdate = new Command("update")
|
|
@@ -53,12 +68,15 @@ const aiUpdate = new Command("update")
|
|
|
53
68
|
" - convex/_generated/ai/guidelines.md\n" +
|
|
54
69
|
" - AGENTS.md (Convex section only)\n" +
|
|
55
70
|
" - CLAUDE.md (Convex section only)\n" +
|
|
56
|
-
" - Agent skills (installed to each coding agent's native path)\n\n",
|
|
71
|
+
" - Agent skills (installed to each coding agent's native path, configured via convex.json)\n\n",
|
|
57
72
|
)
|
|
58
73
|
.allowExcessArguments(false)
|
|
59
74
|
.action(async () => {
|
|
60
|
-
const { projectDir, convexDir } =
|
|
61
|
-
|
|
75
|
+
const { projectDir, convexDir, aiFilesConfig } =
|
|
76
|
+
await resolveProjectPaths();
|
|
77
|
+
await installAiFiles({ projectDir, convexDir, aiFilesConfig });
|
|
78
|
+
|
|
79
|
+
logMessage(`${chalkStderr.green("✔")} Convex AI files updated.`);
|
|
62
80
|
});
|
|
63
81
|
|
|
64
82
|
const aiDisable = new Command("disable")
|
|
@@ -72,8 +90,18 @@ const aiDisable = new Command("disable")
|
|
|
72
90
|
)
|
|
73
91
|
.allowExcessArguments(false)
|
|
74
92
|
.action(async () => {
|
|
75
|
-
const { projectDir } = await resolveProjectPaths();
|
|
76
|
-
|
|
93
|
+
const { projectDir, aiFilesConfig } = await resolveProjectPaths();
|
|
94
|
+
|
|
95
|
+
const newAiFilesConfig = disableAiFiles(aiFilesConfig);
|
|
96
|
+
|
|
97
|
+
await writeAiFilesConfig({
|
|
98
|
+
projectDir,
|
|
99
|
+
aiFiles: newAiFilesConfig,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
logMessage(
|
|
103
|
+
`${chalkStderr.green(`✔`)} Convex AI files disabled. Run ${chalkStderr.bold(`npx convex ai-files enable`)} to re-enable.`,
|
|
104
|
+
);
|
|
77
105
|
});
|
|
78
106
|
|
|
79
107
|
const aiStatus = new Command("status")
|
|
@@ -90,8 +118,10 @@ const aiStatus = new Command("status")
|
|
|
90
118
|
)
|
|
91
119
|
.allowExcessArguments(false)
|
|
92
120
|
.action(async () => {
|
|
93
|
-
const { projectDir, convexDir } =
|
|
94
|
-
|
|
121
|
+
const { projectDir, convexDir, aiFilesConfig } =
|
|
122
|
+
await resolveProjectPaths();
|
|
123
|
+
|
|
124
|
+
await statusAiFiles({ projectDir, convexDir, aiFilesConfig });
|
|
95
125
|
});
|
|
96
126
|
|
|
97
127
|
const aiRemove = new Command("remove")
|
|
@@ -37,7 +37,20 @@ export const myQueryFunction = query({
|
|
|
37
37
|
Using this query function in a React component looks like:
|
|
38
38
|
|
|
39
39
|
\`\`\`ts
|
|
40
|
-
const
|
|
40
|
+
const state = useQuery({
|
|
41
|
+
query: api.myFunctions.myQueryFunction,
|
|
42
|
+
args: { first: 10, second: "hello" },
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
if (state.status === "pending") {
|
|
46
|
+
return <div>Loading...</div>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (state.status === "error") {
|
|
50
|
+
return <div>Error: {state.error.message}</div>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const data = state.data;
|
|
41
54
|
\`\`\`
|
|
42
55
|
|
|
43
56
|
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { updateEnvAndConfigForDeploymentSelection } from "./configure.js";
|
|
3
|
+
import { writeDeploymentEnvVar } from "./lib/deployment.js";
|
|
4
|
+
import { finalizeConfiguration } from "./lib/init.js";
|
|
5
|
+
|
|
6
|
+
vi.mock("./lib/deployment.js", async (importOriginal) => {
|
|
7
|
+
const actual = await importOriginal<typeof import("./lib/deployment.js")>();
|
|
8
|
+
return {
|
|
9
|
+
...actual,
|
|
10
|
+
writeDeploymentEnvVar: vi.fn().mockResolvedValue({
|
|
11
|
+
wroteToGitIgnore: false,
|
|
12
|
+
changedDeploymentEnvVar: true,
|
|
13
|
+
}),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
vi.mock("./lib/config.js", async (importOriginal) => {
|
|
18
|
+
const actual = await importOriginal<typeof import("./lib/config.js")>();
|
|
19
|
+
return {
|
|
20
|
+
...actual,
|
|
21
|
+
readProjectConfig: vi.fn().mockResolvedValue({
|
|
22
|
+
configPath: "convex.json",
|
|
23
|
+
projectConfig: { functions: "convex" },
|
|
24
|
+
}),
|
|
25
|
+
writeProjectConfig: vi.fn().mockResolvedValue(undefined),
|
|
26
|
+
ensureConvexFunctionsDir: vi.fn().mockResolvedValue(undefined),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
vi.mock("./lib/init.js", async (importOriginal) => {
|
|
31
|
+
const actual = await importOriginal<typeof import("./lib/init.js")>();
|
|
32
|
+
return {
|
|
33
|
+
...actual,
|
|
34
|
+
finalizeConfiguration: vi.fn().mockResolvedValue(undefined),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const ctx = {} as any;
|
|
39
|
+
|
|
40
|
+
describe("updateEnvAndConfigForDeploymentSelection", () => {
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
vi.clearAllMocks();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("prod deployments update CONVEX_URL and CONVEX_SITE_URL but not CONVEX_DEPLOYMENT", async () => {
|
|
46
|
+
await updateEnvAndConfigForDeploymentSelection(
|
|
47
|
+
ctx,
|
|
48
|
+
{
|
|
49
|
+
url: "https://happy-animal-123.convex.cloud",
|
|
50
|
+
siteUrl: "https://happy-animal-123.convex.site",
|
|
51
|
+
deploymentName: "happy-animal-123",
|
|
52
|
+
teamSlug: "my-team",
|
|
53
|
+
projectSlug: "my-project",
|
|
54
|
+
deploymentType: "prod",
|
|
55
|
+
},
|
|
56
|
+
null,
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
expect(writeDeploymentEnvVar).not.toHaveBeenCalled();
|
|
60
|
+
expect(finalizeConfiguration).toHaveBeenCalledWith(
|
|
61
|
+
ctx,
|
|
62
|
+
expect.objectContaining({
|
|
63
|
+
changedDeploymentEnvVar: false,
|
|
64
|
+
wroteToGitIgnore: false,
|
|
65
|
+
url: "https://happy-animal-123.convex.cloud",
|
|
66
|
+
siteUrl: "https://happy-animal-123.convex.site",
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("dev deployments update CONVEX_DEPLOYMENT, CONVEX_URL, and CONVEX_SITE_URL", async () => {
|
|
72
|
+
await updateEnvAndConfigForDeploymentSelection(
|
|
73
|
+
ctx,
|
|
74
|
+
{
|
|
75
|
+
url: "https://joyful-capybara-456.convex.cloud",
|
|
76
|
+
siteUrl: "https://joyful-capybara-456.convex.site",
|
|
77
|
+
deploymentName: "joyful-capybara-456",
|
|
78
|
+
teamSlug: "my-team",
|
|
79
|
+
projectSlug: "my-project",
|
|
80
|
+
deploymentType: "dev",
|
|
81
|
+
},
|
|
82
|
+
null,
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
expect(writeDeploymentEnvVar).toHaveBeenCalledWith(
|
|
86
|
+
ctx,
|
|
87
|
+
"dev",
|
|
88
|
+
{
|
|
89
|
+
team: "my-team",
|
|
90
|
+
project: "my-project",
|
|
91
|
+
deploymentName: "joyful-capybara-456",
|
|
92
|
+
},
|
|
93
|
+
null,
|
|
94
|
+
);
|
|
95
|
+
expect(finalizeConfiguration).toHaveBeenCalledWith(
|
|
96
|
+
ctx,
|
|
97
|
+
expect.objectContaining({
|
|
98
|
+
changedDeploymentEnvVar: true,
|
|
99
|
+
url: "https://joyful-capybara-456.convex.cloud",
|
|
100
|
+
siteUrl: "https://joyful-capybara-456.convex.site",
|
|
101
|
+
}),
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("local deployments update CONVEX_DEPLOYMENT, CONVEX_URL, and CONVEX_SITE_URL", async () => {
|
|
106
|
+
await updateEnvAndConfigForDeploymentSelection(
|
|
107
|
+
ctx,
|
|
108
|
+
{
|
|
109
|
+
url: "https://swift-squirrel-789.convex.cloud",
|
|
110
|
+
siteUrl: "https://swift-squirrel-789.convex.site",
|
|
111
|
+
deploymentName: "swift-squirrel-789",
|
|
112
|
+
teamSlug: "my-team",
|
|
113
|
+
projectSlug: "my-project",
|
|
114
|
+
deploymentType: "local",
|
|
115
|
+
},
|
|
116
|
+
"existing-deployment-name",
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(writeDeploymentEnvVar).toHaveBeenCalledWith(
|
|
120
|
+
ctx,
|
|
121
|
+
"local",
|
|
122
|
+
{
|
|
123
|
+
team: "my-team",
|
|
124
|
+
project: "my-project",
|
|
125
|
+
deploymentName: "swift-squirrel-789",
|
|
126
|
+
},
|
|
127
|
+
"existing-deployment-name",
|
|
128
|
+
);
|
|
129
|
+
expect(finalizeConfiguration).toHaveBeenCalledWith(
|
|
130
|
+
ctx,
|
|
131
|
+
expect.objectContaining({
|
|
132
|
+
changedDeploymentEnvVar: true,
|
|
133
|
+
url: "https://swift-squirrel-789.convex.cloud",
|
|
134
|
+
siteUrl: "https://swift-squirrel-789.convex.site",
|
|
135
|
+
}),
|
|
136
|
+
);
|
|
137
|
+
});
|
|
138
|
+
});
|
package/src/cli/configure.ts
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
checkAccessToSelectedProject,
|
|
17
17
|
DeploymentSelectionWithinProject,
|
|
18
18
|
} from "./lib/api.js";
|
|
19
|
-
import { readProjectConfig,
|
|
19
|
+
import { readProjectConfig, ensureConvexFunctionsDir } from "./lib/config.js";
|
|
20
20
|
import {
|
|
21
21
|
DeploymentDetails,
|
|
22
22
|
eraseDeploymentEnvVar,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
promptYesNo,
|
|
45
45
|
} from "./lib/utils/prompts.js";
|
|
46
46
|
import { readGlobalConfig } from "./lib/utils/globalConfig.js";
|
|
47
|
-
import {
|
|
47
|
+
import { attemptSetupAiFiles } from "./lib/aiFiles/index.js";
|
|
48
48
|
import {
|
|
49
49
|
DeploymentSelection,
|
|
50
50
|
deploymentNameFromSelection,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
} from "./lib/deploymentSelection.js";
|
|
53
53
|
import { ensureLoggedIn } from "./lib/login.js";
|
|
54
54
|
import { handleAnonymousDeployment } from "./lib/localDeployment/anonymous.js";
|
|
55
|
-
import {
|
|
55
|
+
import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
|
|
56
56
|
type DeploymentCredentials = {
|
|
57
57
|
url: string;
|
|
58
58
|
adminKey: string;
|
|
@@ -122,7 +122,7 @@ export async function deploymentCredentialsOrConfigure(
|
|
|
122
122
|
chosenConfiguration,
|
|
123
123
|
cmdOptions,
|
|
124
124
|
);
|
|
125
|
-
const siteUrl = await
|
|
125
|
+
const { convexSiteUrl: siteUrl } = await fetchDeploymentCanonicalUrls(ctx, {
|
|
126
126
|
adminKey: selectedDeployment.adminKey,
|
|
127
127
|
deploymentUrl: selectedDeployment.url,
|
|
128
128
|
});
|
|
@@ -230,6 +230,7 @@ export async function _deploymentCredentialsOrConfigure(
|
|
|
230
230
|
const isAgentMode = process.env.CONVEX_AGENT_MODE === "anonymous";
|
|
231
231
|
if (
|
|
232
232
|
!isAgentMode &&
|
|
233
|
+
process.stdin.isTTY &&
|
|
233
234
|
hasAuth &&
|
|
234
235
|
deploymentSelection.deploymentName !== null
|
|
235
236
|
) {
|
|
@@ -238,22 +239,17 @@ export async function _deploymentCredentialsOrConfigure(
|
|
|
238
239
|
(await promptYesNo(ctx, {
|
|
239
240
|
message: `${CONVEX_DEPLOYMENT_ENV_VAR_NAME} is configured with deployment ${deploymentSelection.deploymentName}, which is not linked with your account. Would you like to link it now?`,
|
|
240
241
|
}));
|
|
241
|
-
if (
|
|
242
|
-
return await
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
242
|
+
if (shouldConfigure) {
|
|
243
|
+
return await handleChooseProject(
|
|
244
|
+
ctx,
|
|
245
|
+
chosenConfiguration,
|
|
246
|
+
deploymentSelection.selectionWithinProject,
|
|
247
|
+
{
|
|
248
|
+
globallyForceCloud,
|
|
249
|
+
},
|
|
250
|
+
cmdOptions,
|
|
251
|
+
);
|
|
247
252
|
}
|
|
248
|
-
return await handleChooseProject(
|
|
249
|
-
ctx,
|
|
250
|
-
chosenConfiguration,
|
|
251
|
-
deploymentSelection.selectionWithinProject,
|
|
252
|
-
{
|
|
253
|
-
globallyForceCloud,
|
|
254
|
-
},
|
|
255
|
-
cmdOptions,
|
|
256
|
-
);
|
|
257
253
|
}
|
|
258
254
|
const alreadyHasConfiguredAnonymousDeployment =
|
|
259
255
|
deploymentSelection.deploymentName !== null &&
|
|
@@ -266,22 +262,23 @@ export async function _deploymentCredentialsOrConfigure(
|
|
|
266
262
|
);
|
|
267
263
|
}
|
|
268
264
|
|
|
269
|
-
const shouldPromptForLogin =
|
|
270
|
-
|
|
271
|
-
: alreadyHasConfiguredAnonymousDeployment
|
|
265
|
+
const shouldPromptForLogin =
|
|
266
|
+
isAgentMode || !process.stdin.isTTY
|
|
272
267
|
? "no"
|
|
273
|
-
:
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
268
|
+
: alreadyHasConfiguredAnonymousDeployment
|
|
269
|
+
? "no"
|
|
270
|
+
: await promptOptions(ctx, {
|
|
271
|
+
message:
|
|
272
|
+
"Welcome to Convex! Would you like to login to your account?",
|
|
273
|
+
choices: [
|
|
274
|
+
{
|
|
275
|
+
name: "Start without an account (run Convex locally)",
|
|
276
|
+
value: "no",
|
|
277
|
+
},
|
|
278
|
+
{ name: "Login or create an account", value: "yes" },
|
|
279
|
+
],
|
|
280
|
+
default: "no",
|
|
281
|
+
});
|
|
285
282
|
if (shouldPromptForLogin === "no") {
|
|
286
283
|
const result = await handleAnonymousDeployment(ctx, {
|
|
287
284
|
chosenConfiguration,
|
|
@@ -625,8 +622,9 @@ async function selectNewProject(
|
|
|
625
622
|
await doInitConvexFolder(ctx);
|
|
626
623
|
const { configPath, projectConfig } = await readProjectConfig(ctx);
|
|
627
624
|
const folder = functionsDir(configPath, projectConfig);
|
|
628
|
-
await
|
|
625
|
+
await attemptSetupAiFiles({
|
|
629
626
|
ctx,
|
|
627
|
+
aiFilesConfig: projectConfig.aiFiles,
|
|
630
628
|
convexDir: path.resolve(folder),
|
|
631
629
|
projectDir: path.resolve(path.dirname(configPath)),
|
|
632
630
|
});
|
|
@@ -685,8 +683,9 @@ async function selectExistingProject(
|
|
|
685
683
|
|
|
686
684
|
const { configPath, projectConfig } = await readProjectConfig(ctx);
|
|
687
685
|
const folder = functionsDir(configPath, projectConfig);
|
|
688
|
-
await
|
|
686
|
+
await attemptSetupAiFiles({
|
|
689
687
|
ctx,
|
|
688
|
+
aiFilesConfig: projectConfig.aiFiles,
|
|
690
689
|
convexDir: path.resolve(folder),
|
|
691
690
|
projectDir: path.resolve(path.dirname(configPath)),
|
|
692
691
|
});
|
|
@@ -787,17 +786,19 @@ export async function updateEnvAndConfigForDeploymentSelection(
|
|
|
787
786
|
const { configPath, projectConfig } = await readProjectConfig(ctx);
|
|
788
787
|
|
|
789
788
|
const { wroteToGitIgnore, changedDeploymentEnvVar } =
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
789
|
+
options.deploymentType !== "prod"
|
|
790
|
+
? await writeDeploymentEnvVar(
|
|
791
|
+
ctx,
|
|
792
|
+
options.deploymentType,
|
|
793
|
+
{
|
|
794
|
+
team: options.teamSlug,
|
|
795
|
+
project: options.projectSlug,
|
|
796
|
+
deploymentName: options.deploymentName,
|
|
797
|
+
},
|
|
798
|
+
existingValue,
|
|
799
|
+
)
|
|
800
|
+
: { wroteToGitIgnore: false, changedDeploymentEnvVar: false };
|
|
801
|
+
await ensureConvexFunctionsDir(ctx, projectConfig);
|
|
801
802
|
await finalizeConfiguration(ctx, {
|
|
802
803
|
deploymentType: options.deploymentType,
|
|
803
804
|
deploymentName: options.deploymentName,
|