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
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var config_exports = {};
|
|
30
|
-
__export(config_exports, {
|
|
31
|
-
aiFilesStateSchema: () => aiFilesStateSchema,
|
|
32
|
-
hasAiFilesConfig: () => hasAiFilesConfig,
|
|
33
|
-
readAiConfig: () => readAiConfig,
|
|
34
|
-
writeAiConfig: () => writeAiConfig,
|
|
35
|
-
writeAiEnabledToProjectConfig: () => writeAiEnabledToProjectConfig
|
|
36
|
-
});
|
|
37
|
-
module.exports = __toCommonJS(config_exports);
|
|
38
|
-
var Sentry = __toESM(require("@sentry/node"), 1);
|
|
39
|
-
var import_fs = require("fs");
|
|
40
|
-
var import_path = __toESM(require("path"), 1);
|
|
41
|
-
var import_zod = require("zod");
|
|
42
|
-
var import_paths = require("./paths.js");
|
|
43
|
-
var import_utils = require("./utils.js");
|
|
44
|
-
const aiFilesStateSchema = import_zod.z.object({
|
|
45
|
-
guidelinesHash: import_zod.z.string().nullable(),
|
|
46
|
-
agentsMdSectionHash: import_zod.z.string().nullable(),
|
|
47
|
-
claudeMdHash: import_zod.z.string().nullable(),
|
|
48
|
-
// Commit SHA from get-convex/agent-skills that was current when skills were
|
|
49
|
-
// last installed. Used to detect when newer skills are available.
|
|
50
|
-
agentSkillsSha: import_zod.z.string().nullable(),
|
|
51
|
-
// Names of skills installed by `npx skills add`, used by `remove` to
|
|
52
|
-
// only remove Convex-managed skills.
|
|
53
|
-
installedSkillNames: import_zod.z.array(import_zod.z.string()).default([])
|
|
54
|
-
});
|
|
55
|
-
const aiFilesProjectConfigSchema = import_zod.z.object({
|
|
56
|
-
aiFiles: import_zod.z.object({
|
|
57
|
-
// `enabled` is the canonical field. When present it takes full
|
|
58
|
-
// precedence - `enabled: true` will re-enable even if the legacy
|
|
59
|
-
// disableStalenessMessage field is still `true` in the file.
|
|
60
|
-
enabled: import_zod.z.boolean().optional(),
|
|
61
|
-
// @deprecated - use `enabled` instead. Read for backward compat;
|
|
62
|
-
// new writes always emit `enabled` and drop this key.
|
|
63
|
-
disableStalenessMessage: import_zod.z.boolean().optional()
|
|
64
|
-
}).default({})
|
|
65
|
-
}).passthrough();
|
|
66
|
-
const EMPTY_AI_STATE = {
|
|
67
|
-
guidelinesHash: null,
|
|
68
|
-
agentsMdSectionHash: null,
|
|
69
|
-
claudeMdHash: null,
|
|
70
|
-
agentSkillsSha: null,
|
|
71
|
-
installedSkillNames: []
|
|
72
|
-
};
|
|
73
|
-
async function readAiEnabledFromProjectConfig(projectDir) {
|
|
74
|
-
const raw = await (0, import_utils.readFileSafe)(import_path.default.join(projectDir, "convex.json"));
|
|
75
|
-
if (raw === null) return true;
|
|
76
|
-
try {
|
|
77
|
-
const parsed = aiFilesProjectConfigSchema.parse(JSON.parse(raw));
|
|
78
|
-
if (parsed.aiFiles.enabled !== void 0) return parsed.aiFiles.enabled;
|
|
79
|
-
return !(parsed.aiFiles.disableStalenessMessage ?? false);
|
|
80
|
-
} catch (err) {
|
|
81
|
-
Sentry.captureException(err);
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
async function writeAiEnabledToProjectConfig({
|
|
86
|
-
projectDir,
|
|
87
|
-
enabled
|
|
88
|
-
}) {
|
|
89
|
-
const filePath = import_path.default.join(projectDir, "convex.json");
|
|
90
|
-
const existing = await (0, import_utils.iife)(async () => {
|
|
91
|
-
try {
|
|
92
|
-
return JSON.parse(await import_fs.promises.readFile(filePath, "utf8"));
|
|
93
|
-
} catch {
|
|
94
|
-
return {};
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
const base = existing !== null && typeof existing === "object" && !Array.isArray(existing) ? existing : {};
|
|
98
|
-
const aiFilesValue = base.aiFiles !== null && typeof base.aiFiles === "object" && !Array.isArray(base.aiFiles) ? base.aiFiles : {};
|
|
99
|
-
const { $schema, ...rest } = base;
|
|
100
|
-
const { disableStalenessMessage: _legacy, ...restAiFiles } = aiFilesValue;
|
|
101
|
-
const next = {
|
|
102
|
-
$schema: $schema ?? "node_modules/convex/schemas/convex.schema.json",
|
|
103
|
-
...rest,
|
|
104
|
-
aiFiles: { ...restAiFiles, enabled }
|
|
105
|
-
};
|
|
106
|
-
await import_fs.promises.writeFile(filePath, JSON.stringify(next, null, 2) + "\n", "utf8");
|
|
107
|
-
}
|
|
108
|
-
async function readAiConfig({
|
|
109
|
-
projectDir,
|
|
110
|
-
convexDir
|
|
111
|
-
}) {
|
|
112
|
-
const enabled = await readAiEnabledFromProjectConfig(projectDir);
|
|
113
|
-
const rawState = await (0, import_utils.readFileSafe)((0, import_paths.aiFilesStatePathForConvexDir)(convexDir));
|
|
114
|
-
if (rawState === null) {
|
|
115
|
-
return !enabled ? { ...EMPTY_AI_STATE, enabled } : null;
|
|
116
|
-
}
|
|
117
|
-
try {
|
|
118
|
-
const state = aiFilesStateSchema.parse(JSON.parse(rawState));
|
|
119
|
-
return { ...state, enabled };
|
|
120
|
-
} catch (err) {
|
|
121
|
-
Sentry.captureException(err);
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
async function hasAiFilesConfig({
|
|
126
|
-
projectDir,
|
|
127
|
-
convexDir
|
|
128
|
-
}) {
|
|
129
|
-
if (!await readAiEnabledFromProjectConfig(projectDir)) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
try {
|
|
133
|
-
const rawState = await import_fs.promises.readFile(
|
|
134
|
-
(0, import_paths.aiFilesStatePathForConvexDir)(convexDir),
|
|
135
|
-
"utf8"
|
|
136
|
-
);
|
|
137
|
-
aiFilesStateSchema.parse(JSON.parse(rawState));
|
|
138
|
-
return true;
|
|
139
|
-
} catch (err) {
|
|
140
|
-
if (err.code !== "ENOENT") {
|
|
141
|
-
Sentry.captureException(err);
|
|
142
|
-
}
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
async function writeAiConfig({
|
|
147
|
-
config,
|
|
148
|
-
projectDir,
|
|
149
|
-
convexDir,
|
|
150
|
-
options
|
|
151
|
-
}) {
|
|
152
|
-
const state = aiFilesStateSchema.parse({
|
|
153
|
-
guidelinesHash: config.guidelinesHash,
|
|
154
|
-
agentsMdSectionHash: config.agentsMdSectionHash,
|
|
155
|
-
claudeMdHash: config.claudeMdHash,
|
|
156
|
-
agentSkillsSha: config.agentSkillsSha,
|
|
157
|
-
installedSkillNames: config.installedSkillNames
|
|
158
|
-
});
|
|
159
|
-
await import_fs.promises.writeFile(
|
|
160
|
-
(0, import_paths.aiFilesStatePathForConvexDir)(convexDir),
|
|
161
|
-
JSON.stringify(state, null, 2) + "\n",
|
|
162
|
-
"utf8"
|
|
163
|
-
);
|
|
164
|
-
const persistMode = options?.persistEnabledPreference ?? "ifFalse";
|
|
165
|
-
if (persistMode === "always" || persistMode === "ifFalse" && !config.enabled)
|
|
166
|
-
await writeAiEnabledToProjectConfig({
|
|
167
|
-
projectDir,
|
|
168
|
-
enabled: config.enabled
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/cli/lib/aiFiles/config.ts"],
|
|
4
|
-
"sourcesContent": ["import * as Sentry from \"@sentry/node\";\n// Use raw fs (not ctx.fs) so these operations run asynchronously and don't\n// interfere with the file-watcher used by `convex dev`.\n// eslint-disable-next-line no-restricted-imports\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { aiFilesStatePathForConvexDir } from \"./paths.js\";\nimport { iife, readFileSafe } from \"./utils.js\";\n\nexport const aiFilesStateSchema = z.object({\n guidelinesHash: z.string().nullable(),\n agentsMdSectionHash: z.string().nullable(),\n claudeMdHash: z.string().nullable(),\n // Commit SHA from get-convex/agent-skills that was current when skills were\n // last installed. Used to detect when newer skills are available.\n agentSkillsSha: z.string().nullable(),\n // Names of skills installed by `npx skills add`, used by `remove` to\n // only remove Convex-managed skills.\n installedSkillNames: z.array(z.string()).default([]),\n});\n\nconst aiFilesProjectConfigSchema = z\n .object({\n aiFiles: z\n .object({\n // `enabled` is the canonical field. When present it takes full\n // precedence - `enabled: true` will re-enable even if the legacy\n // disableStalenessMessage field is still `true` in the file.\n enabled: z.boolean().optional(),\n // @deprecated - use `enabled` instead. Read for backward compat;\n // new writes always emit `enabled` and drop this key.\n disableStalenessMessage: z.boolean().optional(),\n })\n .default({}),\n })\n .passthrough();\n\ntype AiFilesState = z.infer<typeof aiFilesStateSchema>;\nexport type AiFilesConfig = AiFilesState & {\n enabled: boolean;\n};\n\nconst EMPTY_AI_STATE: AiFilesState = {\n guidelinesHash: null,\n agentsMdSectionHash: null,\n claudeMdHash: null,\n agentSkillsSha: null,\n installedSkillNames: [],\n};\n\nasync function readAiEnabledFromProjectConfig(\n projectDir: string,\n): Promise<boolean> {\n const raw = await readFileSafe(path.join(projectDir, \"convex.json\"));\n if (raw === null) return true;\n try {\n const parsed = aiFilesProjectConfigSchema.parse(JSON.parse(raw));\n // `enabled` takes full precedence when explicitly set.\n if (parsed.aiFiles.enabled !== undefined) return parsed.aiFiles.enabled;\n // Legacy `disableStalenessMessage` - invert it.\n return !(parsed.aiFiles.disableStalenessMessage ?? false);\n } catch (err) {\n Sentry.captureException(err);\n return true;\n }\n}\n\nexport async function writeAiEnabledToProjectConfig({\n projectDir,\n enabled,\n}: {\n projectDir: string;\n enabled: boolean;\n}): Promise<void> {\n const filePath = path.join(projectDir, \"convex.json\");\n const existing = await iife(async () => {\n try {\n return JSON.parse(await fs.readFile(filePath, \"utf8\")) as unknown;\n } catch {\n return {} as unknown;\n }\n });\n const base =\n existing !== null &&\n typeof existing === \"object\" &&\n !Array.isArray(existing)\n ? (existing as Record<string, unknown>)\n : {};\n const aiFilesValue =\n base.aiFiles !== null &&\n typeof base.aiFiles === \"object\" &&\n !Array.isArray(base.aiFiles)\n ? (base.aiFiles as Record<string, unknown>)\n : {};\n const { $schema, ...rest } = base;\n // Remove legacy keys on every write.\n const { disableStalenessMessage: _legacy, ...restAiFiles } = aiFilesValue;\n const next: Record<string, unknown> = {\n $schema: $schema ?? \"node_modules/convex/schemas/convex.schema.json\",\n ...rest,\n aiFiles: { ...restAiFiles, enabled },\n };\n await fs.writeFile(filePath, JSON.stringify(next, null, 2) + \"\\n\", \"utf8\");\n}\n\nexport async function readAiConfig({\n projectDir,\n convexDir,\n}: {\n projectDir: string;\n convexDir: string;\n}): Promise<AiFilesConfig | null> {\n const enabled = await readAiEnabledFromProjectConfig(projectDir);\n const rawState = await readFileSafe(aiFilesStatePathForConvexDir(convexDir));\n if (rawState === null) {\n // No state file means AI files are not installed, unless the user has\n // explicitly disabled in convex.json.\n return !enabled ? { ...EMPTY_AI_STATE, enabled } : null;\n }\n try {\n const state = aiFilesStateSchema.parse(JSON.parse(rawState));\n return { ...state, enabled };\n } catch (err) {\n Sentry.captureException(err);\n return null;\n }\n}\n\nexport async function hasAiFilesConfig({\n projectDir,\n convexDir,\n}: {\n projectDir: string;\n convexDir: string;\n}): Promise<boolean> {\n if (!(await readAiEnabledFromProjectConfig(projectDir))) {\n return true;\n }\n try {\n const rawState = await fs.readFile(\n aiFilesStatePathForConvexDir(convexDir),\n \"utf8\",\n );\n aiFilesStateSchema.parse(JSON.parse(rawState));\n return true;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") {\n Sentry.captureException(err);\n }\n return false;\n }\n}\n\nexport async function writeAiConfig({\n config,\n projectDir,\n convexDir,\n options,\n}: {\n config: AiFilesConfig;\n projectDir: string;\n convexDir: string;\n options?: { persistEnabledPreference?: \"ifFalse\" | \"always\" | \"never\" };\n}): Promise<void> {\n const state = aiFilesStateSchema.parse({\n guidelinesHash: config.guidelinesHash,\n agentsMdSectionHash: config.agentsMdSectionHash,\n claudeMdHash: config.claudeMdHash,\n agentSkillsSha: config.agentSkillsSha,\n installedSkillNames: config.installedSkillNames,\n });\n await fs.writeFile(\n aiFilesStatePathForConvexDir(convexDir),\n JSON.stringify(state, null, 2) + \"\\n\",\n \"utf8\",\n );\n\n const persistMode = options?.persistEnabledPreference ?? \"ifFalse\";\n if (\n persistMode === \"always\" ||\n (persistMode === \"ifFalse\" && !config.enabled)\n )\n await writeAiEnabledToProjectConfig({\n projectDir,\n enabled: config.enabled,\n });\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAwB;AAIxB,gBAA+B;AAC/B,kBAAiB;AACjB,iBAAkB;AAClB,mBAA6C;AAC7C,mBAAmC;AAE5B,MAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA,EACpC,qBAAqB,aAAE,OAAO,EAAE,SAAS;AAAA,EACzC,cAAc,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA,EAGlC,gBAAgB,aAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA,EAGpC,qBAAqB,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,6BAA6B,aAChC,OAAO;AAAA,EACN,SAAS,aACN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA,IAG9B,yBAAyB,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChD,CAAC,EACA,QAAQ,CAAC,CAAC;AACf,CAAC,EACA,YAAY;AAOf,MAAM,iBAA+B;AAAA,EACnC,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,qBAAqB,CAAC;AACxB;AAEA,eAAe,+BACb,YACkB;AAClB,QAAM,MAAM,UAAM,2BAAa,YAAAA,QAAK,KAAK,YAAY,aAAa,CAAC;AACnE,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACF,UAAM,SAAS,2BAA2B,MAAM,KAAK,MAAM,GAAG,CAAC;AAE/D,QAAI,OAAO,QAAQ,YAAY,OAAW,QAAO,OAAO,QAAQ;AAEhE,WAAO,EAAE,OAAO,QAAQ,2BAA2B;AAAA,EACrD,SAAS,KAAK;AACZ,WAAO,iBAAiB,GAAG;AAC3B,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,8BAA8B;AAAA,EAClD;AAAA,EACA;AACF,GAGkB;AAChB,QAAM,WAAW,YAAAA,QAAK,KAAK,YAAY,aAAa;AACpD,QAAM,WAAW,UAAM,mBAAK,YAAY;AACtC,QAAI;AACF,aAAO,KAAK,MAAM,MAAM,UAAAC,SAAG,SAAS,UAAU,MAAM,CAAC;AAAA,IACvD,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF,CAAC;AACD,QAAM,OACJ,aAAa,QACb,OAAO,aAAa,YACpB,CAAC,MAAM,QAAQ,QAAQ,IAClB,WACD,CAAC;AACP,QAAM,eACJ,KAAK,YAAY,QACjB,OAAO,KAAK,YAAY,YACxB,CAAC,MAAM,QAAQ,KAAK,OAAO,IACtB,KAAK,UACN,CAAC;AACP,QAAM,EAAE,SAAS,GAAG,KAAK,IAAI;AAE7B,QAAM,EAAE,yBAAyB,SAAS,GAAG,YAAY,IAAI;AAC7D,QAAM,OAAgC;AAAA,IACpC,SAAS,WAAW;AAAA,IACpB,GAAG;AAAA,IACH,SAAS,EAAE,GAAG,aAAa,QAAQ;AAAA,EACrC;AACA,QAAM,UAAAA,SAAG,UAAU,UAAU,KAAK,UAAU,MAAM,MAAM,CAAC,IAAI,MAAM,MAAM;AAC3E;AAEA,eAAsB,aAAa;AAAA,EACjC;AAAA,EACA;AACF,GAGkC;AAChC,QAAM,UAAU,MAAM,+BAA+B,UAAU;AAC/D,QAAM,WAAW,UAAM,+BAAa,2CAA6B,SAAS,CAAC;AAC3E,MAAI,aAAa,MAAM;AAGrB,WAAO,CAAC,UAAU,EAAE,GAAG,gBAAgB,QAAQ,IAAI;AAAA,EACrD;AACA,MAAI;AACF,UAAM,QAAQ,mBAAmB,MAAM,KAAK,MAAM,QAAQ,CAAC;AAC3D,WAAO,EAAE,GAAG,OAAO,QAAQ;AAAA,EAC7B,SAAS,KAAK;AACZ,WAAO,iBAAiB,GAAG;AAC3B,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,iBAAiB;AAAA,EACrC;AAAA,EACA;AACF,GAGqB;AACnB,MAAI,CAAE,MAAM,+BAA+B,UAAU,GAAI;AACvD,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,WAAW,MAAM,UAAAA,SAAG;AAAA,UACxB,2CAA6B,SAAS;AAAA,MACtC;AAAA,IACF;AACA,uBAAmB,MAAM,KAAK,MAAM,QAAQ,CAAC;AAC7C,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,QAAK,IAA8B,SAAS,UAAU;AACpD,aAAO,iBAAiB,GAAG;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,cAAc;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKkB;AAChB,QAAM,QAAQ,mBAAmB,MAAM;AAAA,IACrC,gBAAgB,OAAO;AAAA,IACvB,qBAAqB,OAAO;AAAA,IAC5B,cAAc,OAAO;AAAA,IACrB,gBAAgB,OAAO;AAAA,IACvB,qBAAqB,OAAO;AAAA,EAC9B,CAAC;AACD,QAAM,UAAAA,SAAG;AAAA,QACP,2CAA6B,SAAS;AAAA,IACtC,KAAK,UAAU,OAAO,MAAM,CAAC,IAAI;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,cAAc,SAAS,4BAA4B;AACzD,MACE,gBAAgB,YACf,gBAAgB,aAAa,CAAC,OAAO;AAEtC,UAAM,8BAA8B;AAAA,MAClC;AAAA,MACA,SAAS,OAAO;AAAA,IAClB,CAAC;AACL;",
|
|
6
|
-
"names": ["path", "fs"]
|
|
7
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const aiFilesStateSchema: z.ZodObject<{
|
|
3
|
-
guidelinesHash: z.ZodNullable<z.ZodString>;
|
|
4
|
-
agentsMdSectionHash: z.ZodNullable<z.ZodString>;
|
|
5
|
-
claudeMdHash: z.ZodNullable<z.ZodString>;
|
|
6
|
-
agentSkillsSha: z.ZodNullable<z.ZodString>;
|
|
7
|
-
installedSkillNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
8
|
-
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
guidelinesHash: string | null;
|
|
10
|
-
agentsMdSectionHash: string | null;
|
|
11
|
-
claudeMdHash: string | null;
|
|
12
|
-
agentSkillsSha: string | null;
|
|
13
|
-
installedSkillNames: string[];
|
|
14
|
-
}, {
|
|
15
|
-
guidelinesHash: string | null;
|
|
16
|
-
agentsMdSectionHash: string | null;
|
|
17
|
-
claudeMdHash: string | null;
|
|
18
|
-
agentSkillsSha: string | null;
|
|
19
|
-
installedSkillNames?: string[] | undefined;
|
|
20
|
-
}>;
|
|
21
|
-
type AiFilesState = z.infer<typeof aiFilesStateSchema>;
|
|
22
|
-
export type AiFilesConfig = AiFilesState & {
|
|
23
|
-
enabled: boolean;
|
|
24
|
-
};
|
|
25
|
-
export declare function writeAiEnabledToProjectConfig({ projectDir, enabled, }: {
|
|
26
|
-
projectDir: string;
|
|
27
|
-
enabled: boolean;
|
|
28
|
-
}): Promise<void>;
|
|
29
|
-
export declare function readAiConfig({ projectDir, convexDir, }: {
|
|
30
|
-
projectDir: string;
|
|
31
|
-
convexDir: string;
|
|
32
|
-
}): Promise<AiFilesConfig | null>;
|
|
33
|
-
export declare function hasAiFilesConfig({ projectDir, convexDir, }: {
|
|
34
|
-
projectDir: string;
|
|
35
|
-
convexDir: string;
|
|
36
|
-
}): Promise<boolean>;
|
|
37
|
-
export declare function writeAiConfig({ config, projectDir, convexDir, options, }: {
|
|
38
|
-
config: AiFilesConfig;
|
|
39
|
-
projectDir: string;
|
|
40
|
-
convexDir: string;
|
|
41
|
-
options?: {
|
|
42
|
-
persistEnabledPreference?: "ifFalse" | "always" | "never";
|
|
43
|
-
};
|
|
44
|
-
}): Promise<void>;
|
|
45
|
-
export {};
|
|
46
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/aiFiles/config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAkBH,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AA2BF,wBAAsB,6BAA6B,CAAC,EAClD,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,wBAAsB,YAAY,CAAC,EACjC,UAAU,EACV,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAehC;AAED,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBnB;AAED,wBAAsB,aAAa,CAAC,EAClC,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,wBAAwB,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;CACzE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/aiFiles/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
import * as Sentry from "@sentry/node";
|
|
3
|
-
import { promises as fs } from "fs";
|
|
4
|
-
import path from "path";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { aiFilesStatePathForConvexDir } from "./paths.js";
|
|
7
|
-
import { iife, readFileSafe } from "./utils.js";
|
|
8
|
-
export const aiFilesStateSchema = z.object({
|
|
9
|
-
guidelinesHash: z.string().nullable(),
|
|
10
|
-
agentsMdSectionHash: z.string().nullable(),
|
|
11
|
-
claudeMdHash: z.string().nullable(),
|
|
12
|
-
// Commit SHA from get-convex/agent-skills that was current when skills were
|
|
13
|
-
// last installed. Used to detect when newer skills are available.
|
|
14
|
-
agentSkillsSha: z.string().nullable(),
|
|
15
|
-
// Names of skills installed by `npx skills add`, used by `remove` to
|
|
16
|
-
// only remove Convex-managed skills.
|
|
17
|
-
installedSkillNames: z.array(z.string()).default([])
|
|
18
|
-
});
|
|
19
|
-
const aiFilesProjectConfigSchema = z.object({
|
|
20
|
-
aiFiles: z.object({
|
|
21
|
-
// `enabled` is the canonical field. When present it takes full
|
|
22
|
-
// precedence - `enabled: true` will re-enable even if the legacy
|
|
23
|
-
// disableStalenessMessage field is still `true` in the file.
|
|
24
|
-
enabled: z.boolean().optional(),
|
|
25
|
-
// @deprecated - use `enabled` instead. Read for backward compat;
|
|
26
|
-
// new writes always emit `enabled` and drop this key.
|
|
27
|
-
disableStalenessMessage: z.boolean().optional()
|
|
28
|
-
}).default({})
|
|
29
|
-
}).passthrough();
|
|
30
|
-
const EMPTY_AI_STATE = {
|
|
31
|
-
guidelinesHash: null,
|
|
32
|
-
agentsMdSectionHash: null,
|
|
33
|
-
claudeMdHash: null,
|
|
34
|
-
agentSkillsSha: null,
|
|
35
|
-
installedSkillNames: []
|
|
36
|
-
};
|
|
37
|
-
async function readAiEnabledFromProjectConfig(projectDir) {
|
|
38
|
-
const raw = await readFileSafe(path.join(projectDir, "convex.json"));
|
|
39
|
-
if (raw === null) return true;
|
|
40
|
-
try {
|
|
41
|
-
const parsed = aiFilesProjectConfigSchema.parse(JSON.parse(raw));
|
|
42
|
-
if (parsed.aiFiles.enabled !== void 0) return parsed.aiFiles.enabled;
|
|
43
|
-
return !(parsed.aiFiles.disableStalenessMessage ?? false);
|
|
44
|
-
} catch (err) {
|
|
45
|
-
Sentry.captureException(err);
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
export async function writeAiEnabledToProjectConfig({
|
|
50
|
-
projectDir,
|
|
51
|
-
enabled
|
|
52
|
-
}) {
|
|
53
|
-
const filePath = path.join(projectDir, "convex.json");
|
|
54
|
-
const existing = await iife(async () => {
|
|
55
|
-
try {
|
|
56
|
-
return JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
57
|
-
} catch {
|
|
58
|
-
return {};
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
const base = existing !== null && typeof existing === "object" && !Array.isArray(existing) ? existing : {};
|
|
62
|
-
const aiFilesValue = base.aiFiles !== null && typeof base.aiFiles === "object" && !Array.isArray(base.aiFiles) ? base.aiFiles : {};
|
|
63
|
-
const { $schema, ...rest } = base;
|
|
64
|
-
const { disableStalenessMessage: _legacy, ...restAiFiles } = aiFilesValue;
|
|
65
|
-
const next = {
|
|
66
|
-
$schema: $schema ?? "node_modules/convex/schemas/convex.schema.json",
|
|
67
|
-
...rest,
|
|
68
|
-
aiFiles: { ...restAiFiles, enabled }
|
|
69
|
-
};
|
|
70
|
-
await fs.writeFile(filePath, JSON.stringify(next, null, 2) + "\n", "utf8");
|
|
71
|
-
}
|
|
72
|
-
export async function readAiConfig({
|
|
73
|
-
projectDir,
|
|
74
|
-
convexDir
|
|
75
|
-
}) {
|
|
76
|
-
const enabled = await readAiEnabledFromProjectConfig(projectDir);
|
|
77
|
-
const rawState = await readFileSafe(aiFilesStatePathForConvexDir(convexDir));
|
|
78
|
-
if (rawState === null) {
|
|
79
|
-
return !enabled ? { ...EMPTY_AI_STATE, enabled } : null;
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
const state = aiFilesStateSchema.parse(JSON.parse(rawState));
|
|
83
|
-
return { ...state, enabled };
|
|
84
|
-
} catch (err) {
|
|
85
|
-
Sentry.captureException(err);
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
export async function hasAiFilesConfig({
|
|
90
|
-
projectDir,
|
|
91
|
-
convexDir
|
|
92
|
-
}) {
|
|
93
|
-
if (!await readAiEnabledFromProjectConfig(projectDir)) {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
try {
|
|
97
|
-
const rawState = await fs.readFile(
|
|
98
|
-
aiFilesStatePathForConvexDir(convexDir),
|
|
99
|
-
"utf8"
|
|
100
|
-
);
|
|
101
|
-
aiFilesStateSchema.parse(JSON.parse(rawState));
|
|
102
|
-
return true;
|
|
103
|
-
} catch (err) {
|
|
104
|
-
if (err.code !== "ENOENT") {
|
|
105
|
-
Sentry.captureException(err);
|
|
106
|
-
}
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
export async function writeAiConfig({
|
|
111
|
-
config,
|
|
112
|
-
projectDir,
|
|
113
|
-
convexDir,
|
|
114
|
-
options
|
|
115
|
-
}) {
|
|
116
|
-
const state = aiFilesStateSchema.parse({
|
|
117
|
-
guidelinesHash: config.guidelinesHash,
|
|
118
|
-
agentsMdSectionHash: config.agentsMdSectionHash,
|
|
119
|
-
claudeMdHash: config.claudeMdHash,
|
|
120
|
-
agentSkillsSha: config.agentSkillsSha,
|
|
121
|
-
installedSkillNames: config.installedSkillNames
|
|
122
|
-
});
|
|
123
|
-
await fs.writeFile(
|
|
124
|
-
aiFilesStatePathForConvexDir(convexDir),
|
|
125
|
-
JSON.stringify(state, null, 2) + "\n",
|
|
126
|
-
"utf8"
|
|
127
|
-
);
|
|
128
|
-
const persistMode = options?.persistEnabledPreference ?? "ifFalse";
|
|
129
|
-
if (persistMode === "always" || persistMode === "ifFalse" && !config.enabled)
|
|
130
|
-
await writeAiEnabledToProjectConfig({
|
|
131
|
-
projectDir,
|
|
132
|
-
enabled: config.enabled
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/cli/lib/aiFiles/config.ts"],
|
|
4
|
-
"sourcesContent": ["import * as Sentry from \"@sentry/node\";\n// Use raw fs (not ctx.fs) so these operations run asynchronously and don't\n// interfere with the file-watcher used by `convex dev`.\n// eslint-disable-next-line no-restricted-imports\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { aiFilesStatePathForConvexDir } from \"./paths.js\";\nimport { iife, readFileSafe } from \"./utils.js\";\n\nexport const aiFilesStateSchema = z.object({\n guidelinesHash: z.string().nullable(),\n agentsMdSectionHash: z.string().nullable(),\n claudeMdHash: z.string().nullable(),\n // Commit SHA from get-convex/agent-skills that was current when skills were\n // last installed. Used to detect when newer skills are available.\n agentSkillsSha: z.string().nullable(),\n // Names of skills installed by `npx skills add`, used by `remove` to\n // only remove Convex-managed skills.\n installedSkillNames: z.array(z.string()).default([]),\n});\n\nconst aiFilesProjectConfigSchema = z\n .object({\n aiFiles: z\n .object({\n // `enabled` is the canonical field. When present it takes full\n // precedence - `enabled: true` will re-enable even if the legacy\n // disableStalenessMessage field is still `true` in the file.\n enabled: z.boolean().optional(),\n // @deprecated - use `enabled` instead. Read for backward compat;\n // new writes always emit `enabled` and drop this key.\n disableStalenessMessage: z.boolean().optional(),\n })\n .default({}),\n })\n .passthrough();\n\ntype AiFilesState = z.infer<typeof aiFilesStateSchema>;\nexport type AiFilesConfig = AiFilesState & {\n enabled: boolean;\n};\n\nconst EMPTY_AI_STATE: AiFilesState = {\n guidelinesHash: null,\n agentsMdSectionHash: null,\n claudeMdHash: null,\n agentSkillsSha: null,\n installedSkillNames: [],\n};\n\nasync function readAiEnabledFromProjectConfig(\n projectDir: string,\n): Promise<boolean> {\n const raw = await readFileSafe(path.join(projectDir, \"convex.json\"));\n if (raw === null) return true;\n try {\n const parsed = aiFilesProjectConfigSchema.parse(JSON.parse(raw));\n // `enabled` takes full precedence when explicitly set.\n if (parsed.aiFiles.enabled !== undefined) return parsed.aiFiles.enabled;\n // Legacy `disableStalenessMessage` - invert it.\n return !(parsed.aiFiles.disableStalenessMessage ?? false);\n } catch (err) {\n Sentry.captureException(err);\n return true;\n }\n}\n\nexport async function writeAiEnabledToProjectConfig({\n projectDir,\n enabled,\n}: {\n projectDir: string;\n enabled: boolean;\n}): Promise<void> {\n const filePath = path.join(projectDir, \"convex.json\");\n const existing = await iife(async () => {\n try {\n return JSON.parse(await fs.readFile(filePath, \"utf8\")) as unknown;\n } catch {\n return {} as unknown;\n }\n });\n const base =\n existing !== null &&\n typeof existing === \"object\" &&\n !Array.isArray(existing)\n ? (existing as Record<string, unknown>)\n : {};\n const aiFilesValue =\n base.aiFiles !== null &&\n typeof base.aiFiles === \"object\" &&\n !Array.isArray(base.aiFiles)\n ? (base.aiFiles as Record<string, unknown>)\n : {};\n const { $schema, ...rest } = base;\n // Remove legacy keys on every write.\n const { disableStalenessMessage: _legacy, ...restAiFiles } = aiFilesValue;\n const next: Record<string, unknown> = {\n $schema: $schema ?? \"node_modules/convex/schemas/convex.schema.json\",\n ...rest,\n aiFiles: { ...restAiFiles, enabled },\n };\n await fs.writeFile(filePath, JSON.stringify(next, null, 2) + \"\\n\", \"utf8\");\n}\n\nexport async function readAiConfig({\n projectDir,\n convexDir,\n}: {\n projectDir: string;\n convexDir: string;\n}): Promise<AiFilesConfig | null> {\n const enabled = await readAiEnabledFromProjectConfig(projectDir);\n const rawState = await readFileSafe(aiFilesStatePathForConvexDir(convexDir));\n if (rawState === null) {\n // No state file means AI files are not installed, unless the user has\n // explicitly disabled in convex.json.\n return !enabled ? { ...EMPTY_AI_STATE, enabled } : null;\n }\n try {\n const state = aiFilesStateSchema.parse(JSON.parse(rawState));\n return { ...state, enabled };\n } catch (err) {\n Sentry.captureException(err);\n return null;\n }\n}\n\nexport async function hasAiFilesConfig({\n projectDir,\n convexDir,\n}: {\n projectDir: string;\n convexDir: string;\n}): Promise<boolean> {\n if (!(await readAiEnabledFromProjectConfig(projectDir))) {\n return true;\n }\n try {\n const rawState = await fs.readFile(\n aiFilesStatePathForConvexDir(convexDir),\n \"utf8\",\n );\n aiFilesStateSchema.parse(JSON.parse(rawState));\n return true;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") {\n Sentry.captureException(err);\n }\n return false;\n }\n}\n\nexport async function writeAiConfig({\n config,\n projectDir,\n convexDir,\n options,\n}: {\n config: AiFilesConfig;\n projectDir: string;\n convexDir: string;\n options?: { persistEnabledPreference?: \"ifFalse\" | \"always\" | \"never\" };\n}): Promise<void> {\n const state = aiFilesStateSchema.parse({\n guidelinesHash: config.guidelinesHash,\n agentsMdSectionHash: config.agentsMdSectionHash,\n claudeMdHash: config.claudeMdHash,\n agentSkillsSha: config.agentSkillsSha,\n installedSkillNames: config.installedSkillNames,\n });\n await fs.writeFile(\n aiFilesStatePathForConvexDir(convexDir),\n JSON.stringify(state, null, 2) + \"\\n\",\n \"utf8\",\n );\n\n const persistMode = options?.persistEnabledPreference ?? \"ifFalse\";\n if (\n persistMode === \"always\" ||\n (persistMode === \"ifFalse\" && !config.enabled)\n )\n await writeAiEnabledToProjectConfig({\n projectDir,\n enabled: config.enabled,\n });\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const aiFilesStateSchema: z.ZodObject<{
|
|
3
|
-
guidelinesHash: z.ZodNullable<z.ZodString>;
|
|
4
|
-
agentsMdSectionHash: z.ZodNullable<z.ZodString>;
|
|
5
|
-
claudeMdHash: z.ZodNullable<z.ZodString>;
|
|
6
|
-
agentSkillsSha: z.ZodNullable<z.ZodString>;
|
|
7
|
-
installedSkillNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
8
|
-
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
guidelinesHash: string | null;
|
|
10
|
-
agentsMdSectionHash: string | null;
|
|
11
|
-
claudeMdHash: string | null;
|
|
12
|
-
agentSkillsSha: string | null;
|
|
13
|
-
installedSkillNames: string[];
|
|
14
|
-
}, {
|
|
15
|
-
guidelinesHash: string | null;
|
|
16
|
-
agentsMdSectionHash: string | null;
|
|
17
|
-
claudeMdHash: string | null;
|
|
18
|
-
agentSkillsSha: string | null;
|
|
19
|
-
installedSkillNames?: string[] | undefined;
|
|
20
|
-
}>;
|
|
21
|
-
type AiFilesState = z.infer<typeof aiFilesStateSchema>;
|
|
22
|
-
export type AiFilesConfig = AiFilesState & {
|
|
23
|
-
enabled: boolean;
|
|
24
|
-
};
|
|
25
|
-
export declare function writeAiEnabledToProjectConfig({ projectDir, enabled, }: {
|
|
26
|
-
projectDir: string;
|
|
27
|
-
enabled: boolean;
|
|
28
|
-
}): Promise<void>;
|
|
29
|
-
export declare function readAiConfig({ projectDir, convexDir, }: {
|
|
30
|
-
projectDir: string;
|
|
31
|
-
convexDir: string;
|
|
32
|
-
}): Promise<AiFilesConfig | null>;
|
|
33
|
-
export declare function hasAiFilesConfig({ projectDir, convexDir, }: {
|
|
34
|
-
projectDir: string;
|
|
35
|
-
convexDir: string;
|
|
36
|
-
}): Promise<boolean>;
|
|
37
|
-
export declare function writeAiConfig({ config, projectDir, convexDir, options, }: {
|
|
38
|
-
config: AiFilesConfig;
|
|
39
|
-
projectDir: string;
|
|
40
|
-
convexDir: string;
|
|
41
|
-
options?: {
|
|
42
|
-
persistEnabledPreference?: "ifFalse" | "always" | "never";
|
|
43
|
-
};
|
|
44
|
-
}): Promise<void>;
|
|
45
|
-
export {};
|
|
46
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/aiFiles/config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAkBH,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AA2BF,wBAAsB,6BAA6B,CAAC,EAClD,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,wBAAsB,YAAY,CAAC,EACjC,UAAU,EACV,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAehC;AAED,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,EACV,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBnB;AAED,wBAAsB,aAAa,CAAC,EAClC,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,wBAAwB,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;CACzE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../../../../src/cli/lib/aiFiles/config.test.ts"],"names":[],"mappings":""}
|