@warlock.js/core 5.30.0 → 5.32.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 +165 -36
- package/README.md +28 -23
- package/bin/source-load-hook.mjs +63 -0
- package/bin/warlock.js +102 -42
- package/esm/application/app.d.mts +3 -3
- package/esm/application/app.d.mts.map +1 -1
- package/esm/application/application-config-types.d.mts +1 -2
- package/esm/application/application-config-types.d.mts.map +1 -1
- package/esm/application/application.d.mts +5 -7
- package/esm/application/application.d.mts.map +1 -1
- package/esm/application/application.mjs +3 -1
- package/esm/application/application.mjs.map +1 -1
- package/esm/application/boot-signal.d.mts +14 -12
- package/esm/application/boot-signal.d.mts.map +1 -1
- package/esm/application/index.d.mts +2 -1
- package/esm/application/index.mjs +1 -1
- package/esm/application/public-url.d.mts +1 -2
- package/esm/application/public-url.d.mts.map +1 -1
- package/esm/application/roles.d.mts +10 -11
- package/esm/application/roles.d.mts.map +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts +1 -3
- package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
- package/esm/benchmark/benchmark.d.mts +1 -3
- package/esm/benchmark/benchmark.d.mts.map +1 -1
- package/esm/benchmark/channels/console.channel.d.mts +1 -3
- package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts +1 -3
- package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
- package/esm/benchmark/index.mjs +1 -1
- package/esm/benchmark/profiler.d.mts +1 -3
- package/esm/benchmark/profiler.d.mts.map +1 -1
- package/esm/benchmark/profiler.mjs +2 -1
- package/esm/benchmark/profiler.mjs.map +1 -1
- package/esm/benchmark/types.d.mts +22 -17
- package/esm/benchmark/types.d.mts.map +1 -1
- package/esm/bootstrap/setup.d.mts +1 -2
- package/esm/bootstrap/setup.d.mts.map +1 -1
- package/esm/bootstrap.d.mts +1 -2
- package/esm/bootstrap.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.d.mts +3 -5
- package/esm/cache/database-cache-driver.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.mjs +1 -1
- package/esm/cache/index.d.mts +2 -1
- package/esm/cache/index.mjs +1 -1
- package/esm/cli/cli-commands.manager.mjs +6 -3
- package/esm/cli/cli-commands.manager.mjs.map +1 -1
- package/esm/cli/commands/add.command.mjs +4 -2
- package/esm/cli/commands/add.command.mjs.map +1 -1
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs +70 -0
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs.map +1 -0
- package/esm/cli/commands/agents-md.command.mjs +38 -0
- package/esm/cli/commands/agents-md.command.mjs.map +1 -0
- package/esm/cli/commands/board/board-command.action.mjs +279 -0
- package/esm/cli/commands/board/board-command.action.mjs.map +1 -0
- package/esm/cli/commands/board.command.mjs +78 -0
- package/esm/cli/commands/board.command.mjs.map +1 -0
- package/esm/cli/commands/build.command.mjs +6 -1
- package/esm/cli/commands/build.command.mjs.map +1 -1
- package/esm/cli/commands/check/check-command.action.mjs +57 -0
- package/esm/cli/commands/check/check-command.action.mjs.map +1 -0
- package/esm/cli/commands/check/child-typecheck.mjs +66 -0
- package/esm/cli/commands/check/child-typecheck.mjs.map +1 -0
- package/esm/cli/commands/check/format-problems.mjs +43 -0
- package/esm/cli/commands/check/format-problems.mjs.map +1 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs +61 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs.map +1 -0
- package/esm/cli/commands/check.command.mjs +50 -0
- package/esm/cli/commands/check.command.mjs.map +1 -0
- package/esm/cli/commands/dev-server.command.mjs +12 -3
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +8 -3
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
- package/esm/cli/commands/doctor/check.types.d.mts +89 -0
- package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs +2 -0
- package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +23 -27
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +4 -0
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -6
- package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
- package/esm/cli/commands/doctor/format-report.mjs +30 -2
- package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
- package/esm/cli/commands/doctor.command.mjs +4 -0
- package/esm/cli/commands/doctor.command.mjs.map +1 -1
- package/esm/cli/commands/explain/explain-command.action.mjs +64 -0
- package/esm/cli/commands/explain/explain-command.action.mjs.map +1 -0
- package/esm/cli/commands/explain.command.mjs +23 -0
- package/esm/cli/commands/explain.command.mjs.map +1 -0
- package/esm/cli/commands/generate/generate.command.mjs +124 -124
- package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs +5 -2
- package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs +313 -0
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/model.generator.mjs +4 -3
- package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs +341 -0
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs.map +1 -0
- package/esm/cli/commands/generate/templates/stubs.mjs +19 -6
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs +136 -0
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs.map +1 -0
- package/esm/cli/commands/generate/utils/name-parser.mjs +2 -2
- package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs +38 -13
- package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
- package/esm/cli/commands/inspect/inspect-command.action.mjs +73 -0
- package/esm/cli/commands/inspect/inspect-command.action.mjs.map +1 -0
- package/esm/cli/commands/inspect.command.mjs +39 -0
- package/esm/cli/commands/inspect.command.mjs.map +1 -0
- package/esm/cli/commands/issue/collect-environment.mjs +187 -0
- package/esm/cli/commands/issue/collect-environment.mjs.map +1 -0
- package/esm/cli/commands/issue/issue-command.action.mjs +70 -0
- package/esm/cli/commands/issue/issue-command.action.mjs.map +1 -0
- package/esm/cli/commands/issue.command.mjs +31 -0
- package/esm/cli/commands/issue.command.mjs.map +1 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs +104 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs.map +1 -0
- package/esm/cli/commands/mcp.command.mjs +76 -0
- package/esm/cli/commands/mcp.command.mjs.map +1 -0
- package/esm/cli/commands/openapi-generator.action.mjs +1 -1
- package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
- package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.action.mjs +1 -1
- package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
- package/esm/cli/commands/routes/route-row.mjs +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs +3 -3
- package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
- package/esm/cli/commands/test.command.mjs +131 -0
- package/esm/cli/commands/test.command.mjs.map +1 -0
- package/esm/cli/commands/trace/trace-command.action.mjs +145 -0
- package/esm/cli/commands/trace/trace-command.action.mjs.map +1 -0
- package/esm/cli/commands/trace.command.mjs +60 -0
- package/esm/cli/commands/trace.command.mjs.map +1 -0
- package/esm/cli/commands/typecheck.command.mjs +40 -0
- package/esm/cli/commands/typecheck.command.mjs.map +1 -0
- package/esm/cli/commands/upgrade.command.mjs +46 -0
- package/esm/cli/commands/upgrade.command.mjs.map +1 -0
- package/esm/cli/commands-loader.mjs +1 -1
- package/esm/cli/flush-and-exit.mjs +34 -0
- package/esm/cli/flush-and-exit.mjs.map +1 -0
- package/esm/cli/framework-cli-commands.mjs +25 -1
- package/esm/cli/framework-cli-commands.mjs.map +1 -1
- package/esm/cli/parse-cli-args.mjs +3 -2
- package/esm/cli/parse-cli-args.mjs.map +1 -1
- package/esm/cli/start.d.mts +1 -1
- package/esm/cli/string-similarity.mjs +1 -1
- package/esm/commands/cli-command.d.mts +2 -4
- package/esm/commands/cli-command.d.mts.map +1 -1
- package/esm/commands/index.d.mts +2 -1
- package/esm/commands/index.mjs +1 -1
- package/esm/commands/types.d.mts +8 -8
- package/esm/commands/types.d.mts.map +1 -1
- package/esm/config/config-getter.d.mts +2 -3
- package/esm/config/config-getter.d.mts.map +1 -1
- package/esm/config/config-getter.mjs +5 -5
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-handlers.d.mts +1 -3
- package/esm/config/config-handlers.d.mts.map +1 -1
- package/esm/config/config-loader.d.mts +1 -2
- package/esm/config/config-loader.d.mts.map +1 -1
- package/esm/config/config-loader.mjs +35 -14
- package/esm/config/config-loader.mjs.map +1 -1
- package/esm/config/config-manager.mjs +1 -1
- package/esm/config/config-schema.d.mts +70 -0
- package/esm/config/config-schema.d.mts.map +1 -0
- package/esm/config/config-schema.mjs +77 -0
- package/esm/config/config-schema.mjs.map +1 -0
- package/esm/config/config-setter.d.mts +2 -4
- package/esm/config/config-setter.d.mts.map +1 -1
- package/esm/config/config-setter.mjs +2 -2
- package/esm/config/config-setter.mjs.map +1 -1
- package/esm/config/config-special-handlers.d.mts +2 -4
- package/esm/config/config-special-handlers.d.mts.map +1 -1
- package/esm/config/index.d.mts +7 -0
- package/esm/config/index.mjs +2 -1
- package/esm/config/types.d.mts +4 -5
- package/esm/config/types.d.mts.map +1 -1
- package/esm/connectors/access-connector.d.mts +1 -3
- package/esm/connectors/access-connector.d.mts.map +1 -1
- package/esm/connectors/access-connector.mjs +2 -2
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +1 -3
- package/esm/connectors/ai-connector.d.mts.map +1 -1
- package/esm/connectors/ai-connector.mjs +2 -2
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -3
- package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs +2 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts +1 -3
- package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs +26 -1
- package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
- package/esm/connectors/base-connector.d.mts +1 -3
- package/esm/connectors/base-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.d.mts +1 -3
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +3 -3
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +2 -4
- package/esm/connectors/connectors-manager.d.mts.map +1 -1
- package/esm/connectors/connectors-manager.mjs +2 -2
- package/esm/connectors/connectors-manager.mjs.map +1 -1
- package/esm/connectors/database-connector.d.mts +1 -3
- package/esm/connectors/database-connector.d.mts.map +1 -1
- package/esm/connectors/database-connector.mjs +2 -2
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/describe-server-address.mjs +4 -4
- package/esm/connectors/describe-server-address.mjs.map +1 -1
- package/esm/connectors/herald-connector.d.mts +1 -3
- package/esm/connectors/herald-connector.d.mts.map +1 -1
- package/esm/connectors/herald-connector.mjs +2 -2
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.d.mts +1 -3
- package/esm/connectors/http-connector.d.mts.map +1 -1
- package/esm/connectors/http-connector.mjs +11 -9
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/index.d.mts +2 -1
- package/esm/connectors/index.mjs +1 -1
- package/esm/connectors/logger-connector.d.mts +1 -3
- package/esm/connectors/logger-connector.d.mts.map +1 -1
- package/esm/connectors/logger-connector.mjs +2 -2
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.d.mts +1 -3
- package/esm/connectors/mail-connector.d.mts.map +1 -1
- package/esm/connectors/mail-connector.mjs +2 -2
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.d.mts +1 -3
- package/esm/connectors/notifications-connector.d.mts.map +1 -1
- package/esm/connectors/notifications-connector.mjs +2 -2
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/register-configured-connectors.d.mts +2 -4
- package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
- package/esm/connectors/single-server-warnings.mjs.map +1 -1
- package/esm/connectors/socket-connector.d.mts +1 -3
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +12 -10
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +1 -3
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +2 -2
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +17 -14
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/container/container-instance-registry.mjs.map +1 -1
- package/esm/container/development-app-modules.d.mts +7 -5
- package/esm/container/development-app-modules.d.mts.map +1 -1
- package/esm/container/development-model-modules.d.mts +6 -5
- package/esm/container/development-model-modules.d.mts.map +1 -1
- package/esm/container/index.d.mts +4 -4
- package/esm/container/index.d.mts.map +1 -1
- package/esm/container/index.mjs.map +1 -1
- package/esm/database/index.d.mts +3 -1
- package/esm/database/index.mjs +1 -1
- package/esm/database/migrate-action.mjs +1 -1
- package/esm/database/migrate-action.mjs.map +1 -1
- package/esm/database/models/database-log/database-log.d.mts +2 -31
- package/esm/database/models/database-log/database-log.d.mts.map +1 -1
- package/esm/database/models/database-log/index.d.mts +2 -1
- package/esm/database/models/database-log/index.mjs +1 -1
- package/esm/database/seed-command-action.mjs +1 -1
- package/esm/database/seeds/seeder.d.mts +2 -4
- package/esm/database/seeds/seeder.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.d.mts +6 -3
- package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.mjs +2 -0
- package/esm/database/seeds/seeder.errors.mjs.map +1 -1
- package/esm/database/seeds/seeders.manager.mjs +2 -1
- package/esm/database/seeds/seeders.manager.mjs.map +1 -1
- package/esm/database/seeds/types.d.mts +7 -8
- package/esm/database/seeds/types.d.mts.map +1 -1
- package/esm/database/utils.d.mts +4 -5
- package/esm/database/utils.d.mts.map +1 -1
- package/esm/dev-server/app-module-registry.mjs +1 -1
- package/esm/dev-server/boot-precondition-error.mjs +1 -0
- package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
- package/esm/dev-server/create-worker.mjs +17 -9
- package/esm/dev-server/create-worker.mjs.map +1 -1
- package/esm/dev-server/dependency-graph.d.mts +1 -3
- package/esm/dev-server/dependency-graph.d.mts.map +1 -1
- package/esm/dev-server/dependency-graph.mjs +1 -1
- package/esm/dev-server/dependency-graph.mjs.map +1 -1
- package/esm/dev-server/dev-agent-tooling.mjs +135 -0
- package/esm/dev-server/dev-agent-tooling.mjs.map +1 -0
- package/esm/dev-server/dev-logger.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +8 -0
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/extract-translation-keys.mjs +16 -17
- package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
- package/esm/dev-server/file-manager.d.mts +3 -7
- package/esm/dev-server/file-manager.d.mts.map +1 -1
- package/esm/dev-server/file-operations.d.mts +1 -3
- package/esm/dev-server/file-operations.d.mts.map +1 -1
- package/esm/dev-server/files-orchestrator.mjs +4 -5
- package/esm/dev-server/files-orchestrator.mjs.map +1 -1
- package/esm/dev-server/files-watcher.mjs +12 -11
- package/esm/dev-server/files-watcher.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +2 -3
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs +33 -0
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs.map +1 -0
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +36 -115
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/default-health-checkers.mjs +31 -0
- package/esm/dev-server/health-checker/default-health-checkers.mjs.map +1 -0
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +12 -6
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts +2 -2
- package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -4
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
- package/esm/dev-server/health-checker/oxlint-runner.mjs +303 -0
- package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.d.mts +1 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs +42 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/ts-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +40 -174
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts +4 -8
- package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.d.mts +10 -6
- package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.mjs +4 -3
- package/esm/dev-server/loader/load-hook.mjs.map +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -1
- package/esm/dev-server/loader/own-resolver.mjs +1 -1
- package/esm/dev-server/loader/register-loader.mjs +4 -3
- package/esm/dev-server/loader/register-loader.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts +2 -2
- package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs +3 -2
- package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs +3 -2
- package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
- package/esm/dev-server/manifest-manager.d.mts +1 -3
- package/esm/dev-server/manifest-manager.d.mts.map +1 -1
- package/esm/dev-server/model-module-registry.mjs +3 -3
- package/esm/dev-server/model-module-registry.mjs.map +1 -1
- package/esm/dev-server/model-resource-typings.mjs +40 -47
- package/esm/dev-server/model-resource-typings.mjs.map +1 -1
- package/esm/dev-server/module-loader.mjs +3 -2
- package/esm/dev-server/module-loader.mjs.map +1 -1
- package/esm/dev-server/package-json-manager.mjs +1 -1
- package/esm/dev-server/parse-imports.mjs +7 -39
- package/esm/dev-server/parse-imports.mjs.map +1 -1
- package/esm/dev-server/read-config-ast.mjs +3 -33
- package/esm/dev-server/read-config-ast.mjs.map +1 -1
- package/esm/dev-server/ready-block.mjs +1 -1
- package/esm/dev-server/route-types-publisher.mjs +1 -1
- package/esm/dev-server/shortcuts.mjs +1 -1
- package/esm/dev-server/special-files-collector.d.mts +2 -4
- package/esm/dev-server/special-files-collector.d.mts.map +1 -1
- package/esm/dev-server/start-development-server.mjs.map +1 -1
- package/esm/dev-server/supervisor.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
- package/esm/dev-server/tsconfig-manager.mjs +3 -3
- package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
- package/esm/dev-server/type-generator.mjs +31 -38
- package/esm/dev-server/type-generator.mjs.map +1 -1
- package/esm/dev-server/types.d.mts +3 -4
- package/esm/dev-server/types.d.mts.map +1 -1
- package/esm/dev-server/update-check-cache.mjs +2 -2
- package/esm/dev-server/update-check-cache.mjs.map +1 -1
- package/esm/encryption/encrypt.d.mts +2 -3
- package/esm/encryption/encrypt.d.mts.map +1 -1
- package/esm/encryption/hash.d.mts +1 -2
- package/esm/encryption/hash.d.mts.map +1 -1
- package/esm/encryption/index.mjs +1 -1
- package/esm/encryption/password.d.mts +2 -3
- package/esm/encryption/password.d.mts.map +1 -1
- package/esm/encryption/types.d.mts +2 -3
- package/esm/encryption/types.d.mts.map +1 -1
- package/esm/errors/container-key-missing-error.mjs +1 -0
- package/esm/errors/container-key-missing-error.mjs.map +1 -1
- package/esm/errors/error-codes.d.mts +660 -0
- package/esm/errors/error-codes.d.mts.map +1 -0
- package/esm/errors/error-codes.mjs +634 -0
- package/esm/errors/error-codes.mjs.map +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
- package/esm/errors/index.d.mts +3 -1
- package/esm/errors/index.mjs +3 -1
- package/esm/errors/unknown-locale-error.mjs +1 -0
- package/esm/errors/unknown-locale-error.mjs.map +1 -1
- package/esm/errors/warlock-error.d.mts +21 -0
- package/esm/errors/warlock-error.d.mts.map +1 -0
- package/esm/errors/warlock-error.mjs +22 -0
- package/esm/errors/warlock-error.mjs.map +1 -0
- package/esm/generations/add-command.action.mjs +22 -5
- package/esm/generations/add-command.action.mjs.map +1 -1
- package/esm/generations/features/access.feature.mjs +1 -1
- package/esm/generations/features/access.feature.mjs.map +1 -1
- package/esm/generations/features/bull-board.feature.mjs +3 -2
- package/esm/generations/features/bull-board.feature.mjs.map +1 -1
- package/esm/generations/features/mysql.feature.mjs.map +1 -1
- package/esm/generations/features/notifications.feature.mjs +7 -3
- package/esm/generations/features/notifications.feature.mjs.map +1 -1
- package/esm/generations/features/queue.feature.mjs +1 -1
- package/esm/generations/features/queue.feature.mjs.map +1 -1
- package/esm/generations/features/react-email.feature.mjs +1 -1
- package/esm/generations/features/react-email.feature.mjs.map +1 -1
- package/esm/generations/features/shadcn.feature.mjs +1 -1
- package/esm/generations/features/shadcn.feature.mjs.map +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs +16 -23
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
- package/esm/generations/features/shared/patch-tsconfig-include.mjs +2 -2
- package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +2 -2
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
- package/esm/generations/features/sitemap.feature.mjs +3 -2
- package/esm/generations/features/sitemap.feature.mjs.map +1 -1
- package/esm/generations/features/tailwind.feature.mjs +1 -1
- package/esm/generations/features/tailwind.feature.mjs.map +1 -1
- package/esm/generations/features/test.feature.mjs +11 -6
- package/esm/generations/features/test.feature.mjs.map +1 -1
- package/esm/generations/features/web.feature.mjs +1 -1
- package/esm/generations/features/web.feature.mjs.map +1 -1
- package/esm/generations/generation-fs.mjs +73 -0
- package/esm/generations/generation-fs.mjs.map +1 -0
- package/esm/generations/generation-run.mjs +185 -0
- package/esm/generations/generation-run.mjs.map +1 -0
- package/esm/generations/stubs.mjs +156 -14
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/boot-port-preflight.d.mts +4 -5
- package/esm/http/boot-port-preflight.d.mts.map +1 -1
- package/esm/http/boot-port-preflight.mjs +2 -2
- package/esm/http/boot-port-preflight.mjs.map +1 -1
- package/esm/http/bounded-stream-queue.d.mts +10 -0
- package/esm/http/bounded-stream-queue.d.mts.map +1 -0
- package/esm/http/bounded-stream-queue.mjs +97 -0
- package/esm/http/bounded-stream-queue.mjs.map +1 -0
- package/esm/http/build-cors-options.mjs +2 -2
- package/esm/http/build-cors-options.mjs.map +1 -1
- package/esm/http/build-rate-limit-options.d.mts +15 -3
- package/esm/http/build-rate-limit-options.d.mts.map +1 -1
- package/esm/http/build-rate-limit-options.mjs +1 -1
- package/esm/http/build-rate-limit-options.mjs.map +1 -1
- package/esm/http/conditional-request.d.mts +87 -0
- package/esm/http/conditional-request.d.mts.map +1 -0
- package/esm/http/conditional-request.mjs +121 -0
- package/esm/http/conditional-request.mjs.map +1 -0
- package/esm/http/config.d.mts +2 -4
- package/esm/http/config.d.mts.map +1 -1
- package/esm/http/config.mjs +2 -2
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/context/request-context.d.mts +6 -7
- package/esm/http/context/request-context.d.mts.map +1 -1
- package/esm/http/context/request-memo.d.mts +1 -2
- package/esm/http/context/request-memo.d.mts.map +1 -1
- package/esm/http/createHttpApplication.d.mts +2 -3
- package/esm/http/createHttpApplication.d.mts.map +1 -1
- package/esm/http/createHttpApplication.mjs +2 -2
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/csp.d.mts +12 -12
- package/esm/http/csp.d.mts.map +1 -1
- package/esm/http/csp.mjs +3 -2
- package/esm/http/csp.mjs.map +1 -1
- package/esm/http/csrf-default-guard.d.mts +2 -4
- package/esm/http/csrf-default-guard.d.mts.map +1 -1
- package/esm/http/csrf-default-guard.mjs +1 -1
- package/esm/http/csrf-default-guard.mjs.map +1 -1
- package/esm/http/csrf-origin-policy.d.mts +7 -9
- package/esm/http/csrf-origin-policy.d.mts.map +1 -1
- package/esm/http/csrf-origin-policy.mjs +2 -2
- package/esm/http/csrf-origin-policy.mjs.map +1 -1
- package/esm/http/database/RequestLog.d.mts +26 -87
- package/esm/http/database/RequestLog.d.mts.map +1 -1
- package/esm/http/error-codes.d.mts +1 -2
- package/esm/http/error-codes.d.mts.map +1 -1
- package/esm/http/error-mapper.d.mts +2 -4
- package/esm/http/error-mapper.d.mts.map +1 -1
- package/esm/http/error-mapper.mjs +2 -2
- package/esm/http/error-mapper.mjs.map +1 -1
- package/esm/http/errors/errors.d.mts +30 -29
- package/esm/http/errors/errors.d.mts.map +1 -1
- package/esm/http/errors/errors.mjs +1 -0
- package/esm/http/errors/errors.mjs.map +1 -1
- package/esm/http/escape-header-value.d.mts +17 -0
- package/esm/http/escape-header-value.d.mts.map +1 -0
- package/esm/http/escape-header-value.mjs +27 -0
- package/esm/http/escape-header-value.mjs.map +1 -0
- package/esm/http/events.d.mts +2 -4
- package/esm/http/events.d.mts.map +1 -1
- package/esm/http/flush-pending-cookies.mjs.map +1 -1
- package/esm/http/health.d.mts +4 -4
- package/esm/http/health.d.mts.map +1 -1
- package/esm/http/index.d.mts +9 -3
- package/esm/http/index.mjs +5 -2
- package/esm/http/lazy-static.mjs +194 -0
- package/esm/http/lazy-static.mjs.map +1 -0
- package/esm/http/middleware/cache-response-middleware.d.mts +2 -4
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts +3 -3
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +6 -6
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/index.d.mts +3 -1
- package/esm/http/middleware/index.mjs +1 -1
- package/esm/http/middleware/inject-request-context.d.mts +2 -4
- package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +3 -3
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts +3 -3
- package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts +3 -3
- package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +4 -4
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts +2 -2
- package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
- package/esm/http/middleware/middleware-list.d.mts +1 -3
- package/esm/http/middleware/middleware-list.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.mjs +2 -2
- package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts +2 -3
- package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts +3 -5
- package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
- package/esm/http/middleware/utils/index.d.mts +2 -1
- package/esm/http/middleware/utils/parse-size.d.mts +1 -2
- package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
- package/esm/http/middleware/utils/parse-size.mjs +2 -2
- package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
- package/esm/http/plugins.d.mts +2 -4
- package/esm/http/plugins.d.mts.map +1 -1
- package/esm/http/plugins.mjs +17 -14
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/port-preflight.d.mts +3 -4
- package/esm/http/port-preflight.d.mts.map +1 -1
- package/esm/http/rate-limit-cache-store.mjs +6 -4
- package/esm/http/rate-limit-cache-store.mjs.map +1 -1
- package/esm/http/ready-report.d.mts +15 -10
- package/esm/http/ready-report.d.mts.map +1 -1
- package/esm/http/request-controller.d.mts +1 -3
- package/esm/http/request-controller.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.d.mts +26 -15
- package/esm/http/request-log-snapshot.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.mjs +85 -6
- package/esm/http/request-log-snapshot.mjs.map +1 -1
- package/esm/http/request.d.mts +6 -5
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +13 -11
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/response.d.mts +23 -12
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +169 -81
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/safe-redirect.d.mts +50 -0
- package/esm/http/safe-redirect.d.mts.map +1 -0
- package/esm/http/safe-redirect.mjs +80 -0
- package/esm/http/safe-redirect.mjs.map +1 -0
- package/esm/http/serialized.d.mts +12 -13
- package/esm/http/serialized.d.mts.map +1 -1
- package/esm/http/server-rebuilt.d.mts +3 -5
- package/esm/http/server-rebuilt.d.mts.map +1 -1
- package/esm/http/server.d.mts +11 -9
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +17 -7
- package/esm/http/server.mjs.map +1 -1
- package/esm/http/stream-react-response.d.mts +7 -7
- package/esm/http/stream-react-response.d.mts.map +1 -1
- package/esm/http/stream-transport.mjs +4 -2
- package/esm/http/stream-transport.mjs.map +1 -1
- package/esm/http/tracing/index.mjs +1 -1
- package/esm/http/tracing/trace-id.d.mts +2 -3
- package/esm/http/tracing/trace-id.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts +10 -11
- package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs +2 -2
- package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
- package/esm/http/tracing/tracing.type.d.mts +11 -9
- package/esm/http/tracing/tracing.type.d.mts.map +1 -1
- package/esm/http/types.d.mts +78 -39
- package/esm/http/types.d.mts.map +1 -1
- package/esm/http/uploaded-file.d.mts +6 -5
- package/esm/http/uploaded-file.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variant.mjs +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts +13 -10
- package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variants.mjs +62 -25
- package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
- package/esm/http/uploads/image-variant-cache-entries.mjs +78 -0
- package/esm/http/uploads/image-variant-cache-entries.mjs.map +1 -0
- package/esm/http/uploads/image-variant-cache.mjs +72 -30
- package/esm/http/uploads/image-variant-cache.mjs.map +1 -1
- package/esm/http/uploads/image-variant-types.d.mts +9 -9
- package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts +4 -3
- package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs +3 -2
- package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
- package/esm/http/uploads/index.d.mts +2 -1
- package/esm/http/uploads/index.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs.map +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
- package/esm/http/uploads/purge-image-variants.d.mts +9 -6
- package/esm/http/uploads/purge-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/purge-image-variants.mjs +16 -16
- package/esm/http/uploads/purge-image-variants.mjs.map +1 -1
- package/esm/http/uploads/remote-variant-source.mjs +115 -0
- package/esm/http/uploads/remote-variant-source.mjs.map +1 -0
- package/esm/http/uploads/resolve-image-variant.d.mts +6 -9
- package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -1
- package/esm/http/uploads/resolve-image-variant.mjs +10 -18
- package/esm/http/uploads/resolve-image-variant.mjs.map +1 -1
- package/esm/http/uploads/resolve-image-variants-config.mjs +7 -5
- package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
- package/esm/http/uploads/resolve-remote-image-variant.mjs +89 -0
- package/esm/http/uploads/resolve-remote-image-variant.mjs.map +1 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs +193 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs.map +1 -0
- package/esm/http/uploads/uploaded-file.controller.d.mts +9 -6
- package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.mjs +18 -9
- package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
- package/esm/http/uploads/variant-cache-key.mjs +2 -2
- package/esm/http/uploads-config.d.mts +2 -4
- package/esm/http/uploads-config.d.mts.map +1 -1
- package/esm/http/uploads-types.d.mts +22 -16
- package/esm/http/uploads-types.d.mts.map +1 -1
- package/esm/http/xmlable.d.mts +1 -2
- package/esm/http/xmlable.d.mts.map +1 -1
- package/esm/image/image.d.mts +6 -7
- package/esm/image/image.d.mts.map +1 -1
- package/esm/image/image.mjs.map +1 -1
- package/esm/image/index.d.mts +2 -1
- package/esm/image/index.mjs +1 -1
- package/esm/index.d.mts +38 -6
- package/esm/index.mjs +14 -3
- package/esm/loader/app-module-importer.d.mts +1 -2
- package/esm/loader/app-module-importer.d.mts.map +1 -1
- package/esm/localization/index.mjs +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts +6 -5
- package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/parse-locale-dictionary.mjs +2 -1
- package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
- package/esm/localization/register-locale-dictionary.d.mts +3 -4
- package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/register-locale-dictionary.mjs +2 -2
- package/esm/localization/register-locale-dictionary.mjs.map +1 -1
- package/esm/logger/fatal-visibility.d.mts +1 -2
- package/esm/logger/fatal-visibility.d.mts.map +1 -1
- package/esm/logger/index.d.mts +2 -1
- package/esm/logger/index.mjs +1 -1
- package/esm/logger/logger.d.mts +1 -3
- package/esm/logger/logger.d.mts.map +1 -1
- package/esm/logger/types.d.mts +2 -3
- package/esm/logger/types.d.mts.map +1 -1
- package/esm/mail/config.d.mts +21 -12
- package/esm/mail/config.d.mts.map +1 -1
- package/esm/mail/config.mjs +16 -1
- package/esm/mail/config.mjs.map +1 -1
- package/esm/mail/events.d.mts +4 -6
- package/esm/mail/events.d.mts.map +1 -1
- package/esm/mail/index.d.mts +3 -2
- package/esm/mail/index.mjs +2 -2
- package/esm/mail/mail.d.mts +1 -3
- package/esm/mail/mail.d.mts.map +1 -1
- package/esm/mail/mailer-pool.d.mts +5 -7
- package/esm/mail/mailer-pool.d.mts.map +1 -1
- package/esm/mail/react-mail.d.mts +1 -3
- package/esm/mail/react-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.d.mts +1 -3
- package/esm/mail/send-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.mjs +2 -1
- package/esm/mail/send-mail.mjs.map +1 -1
- package/esm/mail/test-mailbox.d.mts +11 -13
- package/esm/mail/test-mailbox.d.mts.map +1 -1
- package/esm/mail/types.d.mts +17 -18
- package/esm/mail/types.d.mts.map +1 -1
- package/esm/manifest/manifest-manager.mjs +1 -1
- package/esm/net/index.d.mts +2 -0
- package/esm/net/index.mjs +3 -0
- package/esm/openapi/build-openapi-document.d.mts +2 -4
- package/esm/openapi/build-openapi-document.d.mts.map +1 -1
- package/esm/openapi/build-openapi-document.mjs +8 -5
- package/esm/openapi/build-openapi-document.mjs.map +1 -1
- package/esm/openapi/cast-schema.mjs +1 -1
- package/esm/openapi/development-openapi-provider.d.mts +5 -6
- package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
- package/esm/openapi/error-responses.mjs +28 -2
- package/esm/openapi/error-responses.mjs.map +1 -1
- package/esm/openapi/index.d.mts +3 -1
- package/esm/openapi/index.mjs +1 -1
- package/esm/openapi/openapi-child-output.mjs +2 -2
- package/esm/openapi/openapi-child-output.mjs.map +1 -1
- package/esm/openapi/postman/build-request-body.mjs.map +1 -1
- package/esm/openapi/postman/build-request-url.mjs +1 -1
- package/esm/openapi/postman/build-request-url.mjs.map +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts +1 -3
- package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
- package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
- package/esm/openapi/postman/index.d.mts +2 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts +3 -5
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
- package/esm/openapi/postman/postman-types.d.mts +19 -18
- package/esm/openapi/postman/postman-types.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.d.mts +1 -3
- package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.mjs.map +1 -1
- package/esm/openapi/postman/uuid-v5.mjs +1 -1
- package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
- package/esm/openapi/request-schemas.mjs.map +1 -1
- package/esm/openapi/response-schemas.mjs.map +1 -1
- package/esm/openapi/schema-registry.d.mts +1 -0
- package/esm/openapi/schema-registry.mjs.map +1 -1
- package/esm/openapi/security.mjs +1 -1
- package/esm/openapi/security.mjs.map +1 -1
- package/esm/openapi/types.d.mts +23 -20
- package/esm/openapi/types.d.mts.map +1 -1
- package/esm/production/assert-generated-imports.mjs +2 -1
- package/esm/production/assert-generated-imports.mjs.map +1 -1
- package/esm/production/build-contributions.mjs +1 -1
- package/esm/production/bundle-framework-dependencies.mjs +1 -1
- package/esm/production/dist-build-manifest.mjs +1 -1
- package/esm/production/esbuild-plugins.mjs.map +1 -1
- package/esm/production/esbuild-preflight.mjs +1 -1
- package/esm/production/production-builder.mjs +14 -5
- package/esm/production/production-builder.mjs.map +1 -1
- package/esm/production/production-supervisor.mjs +1 -1
- package/esm/production/registration-child-runner.mjs +4 -3
- package/esm/production/registration-child-runner.mjs.map +1 -1
- package/esm/production/resolve-build-config.d.mts +4 -4
- package/esm/production/resolve-build-config.d.mts.map +1 -1
- package/esm/production/resolve-build-config.mjs +2 -1
- package/esm/production/resolve-build-config.mjs.map +1 -1
- package/esm/production/route-registration-child.d.mts +1 -1
- package/esm/production/route-registration-child.mjs +8 -7
- package/esm/production/route-registration-child.mjs.map +1 -1
- package/esm/production/route-registration-snapshot.mjs.map +1 -1
- package/esm/production/tsconfig-path-aliases.mjs +1 -1
- package/esm/react/index.d.mts +1 -3
- package/esm/react/index.d.mts.map +1 -1
- package/esm/react/index.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +3 -4
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +2 -3
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +10 -9
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/index.d.mts +2 -1
- package/esm/repositories/adapters/cascade/index.mjs +1 -1
- package/esm/repositories/contracts/index.d.mts +2 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts +4 -6
- package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -3
- package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/types.d.mts +23 -25
- package/esm/repositories/contracts/types.d.mts.map +1 -1
- package/esm/repositories/index.d.mts +4 -1
- package/esm/repositories/index.mjs +1 -1
- package/esm/repositories/repository.manager.d.mts +2 -3
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +2 -2
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/resource/define-resource.d.mts +3 -5
- package/esm/resource/define-resource.d.mts.map +1 -1
- package/esm/resource/index.d.mts +2 -1
- package/esm/resource/index.mjs +1 -1
- package/esm/resource/nullable-resource.d.mts +5 -7
- package/esm/resource/nullable-resource.d.mts.map +1 -1
- package/esm/resource/register-resource.d.mts +1 -3
- package/esm/resource/register-resource.d.mts.map +1 -1
- package/esm/resource/resource-field-builder.d.mts +1 -3
- package/esm/resource/resource-field-builder.d.mts.map +1 -1
- package/esm/resource/resource.d.mts +3 -5
- package/esm/resource/resource.d.mts.map +1 -1
- package/esm/resource/resource.mjs +4 -2
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +21 -21
- package/esm/resource/types.d.mts.map +1 -1
- package/esm/restful/index.d.mts +2 -1
- package/esm/restful/index.mjs +1 -1
- package/esm/restful/restful.d.mts +11 -31
- package/esm/restful/restful.d.mts.map +1 -1
- package/esm/restful/restful.mjs.map +1 -1
- package/esm/router/build-route-rate-limit.mjs.map +1 -1
- package/esm/router/dev-dispatch.mjs +31 -12
- package/esm/router/dev-dispatch.mjs.map +1 -1
- package/esm/router/index.d.mts +5 -2
- package/esm/router/index.mjs +3 -1
- package/esm/router/log-request-lifecycle.mjs.map +1 -1
- package/esm/router/named-api-routes-with-responses.mjs +2 -1
- package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
- package/esm/router/normalize-request-path.d.mts +1 -2
- package/esm/router/normalize-request-path.d.mts.map +1 -1
- package/esm/router/normalize-route-path.d.mts +1 -2
- package/esm/router/normalize-route-path.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts +15 -13
- package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
- package/esm/router/resolve-route-rate-limit.mjs +47 -0
- package/esm/router/resolve-route-rate-limit.mjs.map +1 -0
- package/esm/router/resolve-route-validation.mjs +19 -0
- package/esm/router/resolve-route-validation.mjs.map +1 -0
- package/esm/router/route-builder.d.mts +1 -3
- package/esm/router/route-builder.d.mts.map +1 -1
- package/esm/router/route-guard-names.mjs +30 -0
- package/esm/router/route-guard-names.mjs.map +1 -0
- package/esm/router/route-name-method-suffix.d.mts +2 -3
- package/esm/router/route-name-method-suffix.d.mts.map +1 -1
- package/esm/router/route-name-taken-error.d.mts +12 -0
- package/esm/router/route-name-taken-error.d.mts.map +1 -0
- package/esm/router/route-name-taken-error.mjs +18 -0
- package/esm/router/route-name-taken-error.mjs.map +1 -0
- package/esm/router/route-registry.d.mts +1 -3
- package/esm/router/route-registry.d.mts.map +1 -1
- package/esm/router/router.d.mts +34 -17
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +74 -39
- package/esm/router/router.mjs.map +1 -1
- package/esm/router/types.d.mts +156 -37
- package/esm/router/types.d.mts.map +1 -1
- package/esm/router/unguarded-route-diagnostics.d.mts +38 -0
- package/esm/router/unguarded-route-diagnostics.d.mts.map +1 -0
- package/esm/router/unguarded-route-diagnostics.mjs +95 -0
- package/esm/router/unguarded-route-diagnostics.mjs.map +1 -0
- package/esm/socket/index.d.mts +2 -1
- package/esm/socket/index.mjs +1 -1
- package/esm/socket/types.d.mts +2 -4
- package/esm/socket/types.d.mts.map +1 -1
- package/esm/socket/utils.d.mts +1 -3
- package/esm/socket/utils.d.mts.map +1 -1
- package/esm/storage/config.d.mts +4 -6
- package/esm/storage/config.d.mts.map +1 -1
- package/esm/storage/context/storage-driver-context.d.mts +3 -4
- package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts +2 -4
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts +1 -3
- package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +2 -3
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +8 -3
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.d.mts +1 -3
- package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
- package/esm/storage/drivers/s3-driver.d.mts +1 -3
- package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
- package/esm/storage/index.d.mts +2 -1
- package/esm/storage/index.mjs +1 -1
- package/esm/storage/local-disk-roots.mjs +24 -0
- package/esm/storage/local-disk-roots.mjs.map +1 -0
- package/esm/storage/scoped-storage.d.mts +2 -3
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/storage-file.d.mts +1 -3
- package/esm/storage/storage-file.d.mts.map +1 -1
- package/esm/storage/storage.d.mts +17 -4
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +22 -0
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +36 -36
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts +1 -2
- package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +1 -2
- package/esm/storage/utils/contain-path.d.mts.map +1 -1
- package/esm/storage/utils/mime.d.mts +2 -3
- package/esm/storage/utils/mime.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.d.mts +6 -6
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.mjs +3 -3
- package/esm/storage/utils/safe-fetch.mjs.map +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts +1 -3
- package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-error.d.mts +2 -3
- package/esm/storage/utils/storage-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -2
- package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs +1 -0
- package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
- package/esm/tests/authenticated-test-client.d.mts +31 -0
- package/esm/tests/authenticated-test-client.d.mts.map +1 -0
- package/esm/tests/authenticated-test-client.mjs +40 -0
- package/esm/tests/authenticated-test-client.mjs.map +1 -0
- package/esm/tests/factories.d.mts +74 -0
- package/esm/tests/factories.d.mts.map +1 -0
- package/esm/tests/factories.mjs +105 -0
- package/esm/tests/factories.mjs.map +1 -0
- package/esm/tests/fakes/cache-fake.d.mts +34 -0
- package/esm/tests/fakes/cache-fake.d.mts.map +1 -0
- package/esm/tests/fakes/cache-fake.mjs +79 -0
- package/esm/tests/fakes/cache-fake.mjs.map +1 -0
- package/esm/tests/fakes/clock-fake.d.mts +37 -0
- package/esm/tests/fakes/clock-fake.d.mts.map +1 -0
- package/esm/tests/fakes/clock-fake.mjs +69 -0
- package/esm/tests/fakes/clock-fake.mjs.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts +12 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.mjs +20 -0
- package/esm/tests/fakes/fake-assertion-error.mjs.map +1 -0
- package/esm/tests/fakes/ids-fake.d.mts +23 -0
- package/esm/tests/fakes/ids-fake.d.mts.map +1 -0
- package/esm/tests/fakes/ids-fake.mjs +57 -0
- package/esm/tests/fakes/ids-fake.mjs.map +1 -0
- package/esm/tests/fakes/index.d.mts +9 -0
- package/esm/tests/fakes/index.mjs +10 -0
- package/esm/tests/fakes/mail-fake.d.mts +49 -0
- package/esm/tests/fakes/mail-fake.d.mts.map +1 -0
- package/esm/tests/fakes/mail-fake.mjs +111 -0
- package/esm/tests/fakes/mail-fake.mjs.map +1 -0
- package/esm/tests/fakes/queue-fake.d.mts +56 -0
- package/esm/tests/fakes/queue-fake.d.mts.map +1 -0
- package/esm/tests/fakes/queue-fake.mjs +134 -0
- package/esm/tests/fakes/queue-fake.mjs.map +1 -0
- package/esm/tests/fakes/storage-fake.d.mts +35 -0
- package/esm/tests/fakes/storage-fake.d.mts.map +1 -0
- package/esm/tests/fakes/storage-fake.mjs +122 -0
- package/esm/tests/fakes/storage-fake.mjs.map +1 -0
- package/esm/tests/fakes/test-fakes.d.mts +38 -0
- package/esm/tests/fakes/test-fakes.d.mts.map +1 -0
- package/esm/tests/fakes/test-fakes.mjs +90 -0
- package/esm/tests/fakes/test-fakes.mjs.map +1 -0
- package/esm/tests/index.d.mts +15 -2
- package/esm/tests/index.mjs +15 -2
- package/esm/tests/snapshot-response.d.mts +33 -0
- package/esm/tests/snapshot-response.d.mts.map +1 -0
- package/esm/tests/snapshot-response.mjs +42 -0
- package/esm/tests/snapshot-response.mjs.map +1 -0
- package/esm/tests/start-http-development-server.d.mts +25 -5
- package/esm/tests/start-http-development-server.d.mts.map +1 -1
- package/esm/tests/start-http-development-server.mjs +41 -8
- package/esm/tests/start-http-development-server.mjs.map +1 -1
- package/esm/tests/test-connectors-selection.d.mts +2 -2
- package/esm/tests/test-connectors-selection.d.mts.map +1 -1
- package/esm/tests/test-connectors-selection.mjs +1 -1
- package/esm/tests/test-helpers.d.mts +28 -10
- package/esm/tests/test-helpers.d.mts.map +1 -1
- package/esm/tests/test-helpers.mjs +40 -27
- package/esm/tests/test-helpers.mjs.map +1 -1
- package/esm/tests/test-http-server.d.mts +66 -0
- package/esm/tests/test-http-server.d.mts.map +1 -0
- package/esm/tests/test-http-server.mjs +119 -0
- package/esm/tests/test-http-server.mjs.map +1 -0
- package/esm/tests/test-lifecycle-state.mjs +1 -1
- package/esm/tests/vitest-setup.d.mts +17 -7
- package/esm/tests/vitest-setup.d.mts.map +1 -1
- package/esm/tests/vitest-setup.mjs +12 -4
- package/esm/tests/vitest-setup.mjs.map +1 -1
- package/esm/tooling/agents-md/agents-md-markers.d.mts +26 -0
- package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs +60 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts +43 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs +72 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs.map +1 -0
- package/esm/tooling/agents-md/index.mjs +7 -0
- package/esm/tooling/agents-md/installed-skills.d.mts +34 -0
- package/esm/tooling/agents-md/installed-skills.d.mts.map +1 -0
- package/esm/tooling/agents-md/installed-skills.mjs +74 -0
- package/esm/tooling/agents-md/installed-skills.mjs.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts +34 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.mjs +195 -0
- package/esm/tooling/agents-md/render-agents-md.mjs.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts +38 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.mjs +49 -0
- package/esm/tooling/agents-md/write-agents-md.mjs.map +1 -0
- package/esm/tooling/board/board-message.d.mts +29 -0
- package/esm/tooling/board/board-message.d.mts.map +1 -0
- package/esm/tooling/board/board-message.mjs +86 -0
- package/esm/tooling/board/board-message.mjs.map +1 -0
- package/esm/tooling/board/board.d.mts +121 -0
- package/esm/tooling/board/board.d.mts.map +1 -0
- package/esm/tooling/board/board.mjs +407 -0
- package/esm/tooling/board/board.mjs.map +1 -0
- package/esm/tooling/board/board.types.d.mts +81 -0
- package/esm/tooling/board/board.types.d.mts.map +1 -0
- package/esm/tooling/board/board.types.mjs +54 -0
- package/esm/tooling/board/board.types.mjs.map +1 -0
- package/esm/tooling/check/changed-files.d.mts +31 -0
- package/esm/tooling/check/changed-files.d.mts.map +1 -0
- package/esm/tooling/check/changed-files.mjs +73 -0
- package/esm/tooling/check/changed-files.mjs.map +1 -0
- package/esm/tooling/check/check-report.types.d.mts +67 -0
- package/esm/tooling/check/check-report.types.d.mts.map +1 -0
- package/esm/tooling/check/check-report.types.mjs +37 -0
- package/esm/tooling/check/check-report.types.mjs.map +1 -0
- package/esm/tooling/check/code-style-conventions.mjs +106 -0
- package/esm/tooling/check/code-style-conventions.mjs.map +1 -0
- package/esm/tooling/check/conventions-step.d.mts +32 -0
- package/esm/tooling/check/conventions-step.d.mts.map +1 -0
- package/esm/tooling/check/conventions-step.mjs +173 -0
- package/esm/tooling/check/conventions-step.mjs.map +1 -0
- package/esm/tooling/check/environment-step.d.mts +16 -0
- package/esm/tooling/check/environment-step.d.mts.map +1 -0
- package/esm/tooling/check/environment-step.mjs +78 -0
- package/esm/tooling/check/environment-step.mjs.map +1 -0
- package/esm/tooling/check/index.mjs +10 -0
- package/esm/tooling/check/lint-step.d.mts +18 -0
- package/esm/tooling/check/lint-step.d.mts.map +1 -0
- package/esm/tooling/check/lint-step.mjs +112 -0
- package/esm/tooling/check/lint-step.mjs.map +1 -0
- package/esm/tooling/check/request-input.mjs +132 -0
- package/esm/tooling/check/request-input.mjs.map +1 -0
- package/esm/tooling/check/run-check.d.mts +43 -0
- package/esm/tooling/check/run-check.d.mts.map +1 -0
- package/esm/tooling/check/run-check.mjs +192 -0
- package/esm/tooling/check/run-check.mjs.map +1 -0
- package/esm/tooling/check/run-tests.d.mts +55 -0
- package/esm/tooling/check/run-tests.d.mts.map +1 -0
- package/esm/tooling/check/run-tests.mjs +93 -0
- package/esm/tooling/check/run-tests.mjs.map +1 -0
- package/esm/tooling/check/security-conventions.mjs +650 -0
- package/esm/tooling/check/security-conventions.mjs.map +1 -0
- package/esm/tooling/check/source-ast.mjs +155 -0
- package/esm/tooling/check/source-ast.mjs.map +1 -0
- package/esm/tooling/check/source-files.mjs +27 -0
- package/esm/tooling/check/source-files.mjs.map +1 -0
- package/esm/tooling/check/tests-step.d.mts +33 -0
- package/esm/tooling/check/tests-step.d.mts.map +1 -0
- package/esm/tooling/check/tests-step.mjs +177 -0
- package/esm/tooling/check/tests-step.mjs.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts +43 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.mjs +67 -0
- package/esm/tooling/dev-state/dev-server-state.mjs.map +1 -0
- package/esm/tooling/devtools/devtools-client.d.mts +100 -0
- package/esm/tooling/devtools/devtools-client.d.mts.map +1 -0
- package/esm/tooling/devtools/devtools-client.mjs +155 -0
- package/esm/tooling/devtools/devtools-client.mjs.map +1 -0
- package/esm/tooling/generate/generation.d.mts +90 -0
- package/esm/tooling/generate/generation.d.mts.map +1 -0
- package/esm/tooling/generate/generation.mjs +127 -0
- package/esm/tooling/generate/generation.mjs.map +1 -0
- package/esm/tooling/generate/generator-spec.d.mts +57 -0
- package/esm/tooling/generate/generator-spec.d.mts.map +1 -0
- package/esm/tooling/generate/generator-spec.mjs +102 -0
- package/esm/tooling/generate/generator-spec.mjs.map +1 -0
- package/esm/tooling/generate/index.mjs +6 -0
- package/esm/tooling/generate/project-files.mjs +121 -0
- package/esm/tooling/generate/project-files.mjs.map +1 -0
- package/esm/tooling/generate/run-cli.d.mts +43 -0
- package/esm/tooling/generate/run-cli.d.mts.map +1 -0
- package/esm/tooling/generate/run-cli.mjs +93 -0
- package/esm/tooling/generate/run-cli.mjs.map +1 -0
- package/esm/tooling/generate/unified-diff.d.mts +40 -0
- package/esm/tooling/generate/unified-diff.d.mts.map +1 -0
- package/esm/tooling/generate/unified-diff.mjs +161 -0
- package/esm/tooling/generate/unified-diff.mjs.map +1 -0
- package/esm/tooling/index.d.mts +42 -0
- package/esm/tooling/index.mjs +45 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts +23 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts.map +1 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs +63 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs.map +1 -0
- package/esm/tooling/inspect/collect-config.mjs +77 -0
- package/esm/tooling/inspect/collect-config.mjs.map +1 -0
- package/esm/tooling/inspect/collect-models.d.mts +10 -0
- package/esm/tooling/inspect/collect-models.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-models.mjs +154 -0
- package/esm/tooling/inspect/collect-models.mjs.map +1 -0
- package/esm/tooling/inspect/collect-packages.d.mts +9 -0
- package/esm/tooling/inspect/collect-packages.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-packages.mjs +157 -0
- package/esm/tooling/inspect/collect-packages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-pages.mjs +108 -0
- package/esm/tooling/inspect/collect-pages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-routes.mjs +168 -0
- package/esm/tooling/inspect/collect-routes.mjs.map +1 -0
- package/esm/tooling/inspect/event-recorder.d.mts +37 -0
- package/esm/tooling/inspect/event-recorder.d.mts.map +1 -0
- package/esm/tooling/inspect/event-recorder.mjs +91 -0
- package/esm/tooling/inspect/event-recorder.mjs.map +1 -0
- package/esm/tooling/inspect/index.d.mts +8 -0
- package/esm/tooling/inspect/index.mjs +7 -0
- package/esm/tooling/inspect/inspect-app.d.mts +62 -0
- package/esm/tooling/inspect/inspect-app.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-app.mjs +92 -0
- package/esm/tooling/inspect/inspect-app.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts +14 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs +463 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts +228 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.mjs +33 -0
- package/esm/tooling/inspect/inspect-report.types.mjs.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts +29 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.mjs +75 -0
- package/esm/tooling/mcp/create-mcp-context.mjs.map +1 -0
- package/esm/tooling/mcp/db-schema.d.mts +50 -0
- package/esm/tooling/mcp/db-schema.d.mts.map +1 -0
- package/esm/tooling/mcp/db-schema.mjs +56 -0
- package/esm/tooling/mcp/db-schema.mjs.map +1 -0
- package/esm/tooling/mcp/docs-search.d.mts +77 -0
- package/esm/tooling/mcp/docs-search.d.mts.map +1 -0
- package/esm/tooling/mcp/docs-search.mjs +178 -0
- package/esm/tooling/mcp/docs-search.mjs.map +1 -0
- package/esm/tooling/mcp/index.mjs +9 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts +61 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/load-ai-tools.mjs +45 -0
- package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
- package/esm/tooling/mcp/mcp-tools.d.mts +70 -0
- package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/mcp-tools.mjs +514 -0
- package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts +63 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.mjs +126 -0
- package/esm/tooling/mcp/start-mcp-server.mjs.map +1 -0
- package/esm/tooling/mcp/tool-input.d.mts +75 -0
- package/esm/tooling/mcp/tool-input.d.mts.map +1 -0
- package/esm/tooling/mcp/tool-input.mjs +72 -0
- package/esm/tooling/mcp/tool-input.mjs.map +1 -0
- package/esm/tooling/problem.d.mts +55 -0
- package/esm/tooling/problem.d.mts.map +1 -0
- package/esm/tooling/problem.mjs +28 -0
- package/esm/tooling/problem.mjs.map +1 -0
- package/esm/tooling/syntax/ast.mjs +230 -0
- package/esm/tooling/syntax/ast.mjs.map +1 -0
- package/esm/tooling/syntax/imports.mjs +34 -0
- package/esm/tooling/syntax/imports.mjs.map +1 -0
- package/esm/tooling/trace/trace-report.types.d.mts +85 -0
- package/esm/tooling/trace/trace-report.types.d.mts.map +1 -0
- package/esm/tooling/trace/trace-report.types.mjs +7 -0
- package/esm/tooling/trace/trace-report.types.mjs.map +1 -0
- package/esm/tooling/trace/trace-request.d.mts +90 -0
- package/esm/tooling/trace/trace-request.d.mts.map +1 -0
- package/esm/tooling/trace/trace-request.mjs +241 -0
- package/esm/tooling/trace/trace-request.mjs.map +1 -0
- package/esm/tooling/typecheck/index.mjs +3 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts +26 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
- package/esm/tooling/typecheck/run-typecheck.mjs +90 -0
- package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
- package/esm/tooling/typescript/compiler.d.mts +31 -0
- package/esm/tooling/typescript/compiler.d.mts.map +1 -0
- package/esm/tooling/typescript/compiler.mjs +120 -0
- package/esm/tooling/typescript/compiler.mjs.map +1 -0
- package/esm/updater/update-warlock-packages.mjs +3 -2
- package/esm/updater/update-warlock-packages.mjs.map +1 -1
- package/esm/upgrade/codemods/head-viewport.mjs +46 -0
- package/esm/upgrade/codemods/head-viewport.mjs.map +1 -0
- package/esm/upgrade/codemods/helpers.mjs +81 -0
- package/esm/upgrade/codemods/helpers.mjs.map +1 -0
- package/esm/upgrade/codemods/index.mjs +34 -0
- package/esm/upgrade/codemods/index.mjs.map +1 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs +57 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs.map +1 -0
- package/esm/upgrade/codemods/package-json.mjs +122 -0
- package/esm/upgrade/codemods/package-json.mjs.map +1 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs +82 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs.map +1 -0
- package/esm/upgrade/codemods/review-sites.mjs +262 -0
- package/esm/upgrade/codemods/review-sites.mjs.map +1 -0
- package/esm/upgrade/diff.mjs +119 -0
- package/esm/upgrade/diff.mjs.map +1 -0
- package/esm/upgrade/format-upgrade-report.mjs +32 -0
- package/esm/upgrade/format-upgrade-report.mjs.map +1 -0
- package/esm/upgrade/load-ts-morph.mjs +49 -0
- package/esm/upgrade/load-ts-morph.mjs.map +1 -0
- package/esm/upgrade/notes.mjs +16 -0
- package/esm/upgrade/notes.mjs.map +1 -0
- package/esm/upgrade/run-upgrade.mjs +246 -0
- package/esm/upgrade/run-upgrade.mjs.map +1 -0
- package/esm/upgrade/upgrade-command.action.mjs +37 -0
- package/esm/upgrade/upgrade-command.action.mjs.map +1 -0
- package/esm/upgrade/version.mjs +39 -0
- package/esm/upgrade/version.mjs.map +1 -0
- package/esm/use-cases/index.d.mts +2 -1
- package/esm/use-cases/index.mjs +1 -1
- package/esm/use-cases/types.d.mts +116 -63
- package/esm/use-cases/types.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts +1 -3
- package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
- package/esm/use-cases/use-case-events.d.mts +3 -5
- package/esm/use-cases/use-case-events.d.mts.map +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts +6 -6
- package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
- package/esm/use-cases/use-case.d.mts +2 -4
- package/esm/use-cases/use-case.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.d.mts +1 -3
- package/esm/use-cases/use-case.errors.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +8 -10
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/app-log.d.mts +1 -2
- package/esm/utils/app-log.d.mts.map +1 -1
- package/esm/utils/clock.d.mts +35 -0
- package/esm/utils/clock.d.mts.map +1 -0
- package/esm/utils/clock.mjs +27 -0
- package/esm/utils/clock.mjs.map +1 -0
- package/esm/utils/database-log.d.mts +3 -4
- package/esm/utils/database-log.d.mts.map +1 -1
- package/esm/utils/environment.d.mts +4 -5
- package/esm/utils/environment.d.mts.map +1 -1
- package/esm/utils/framework-vesion.mjs +1 -1
- package/esm/utils/framework-vesion.mjs.map +1 -1
- package/esm/utils/get-localized.d.mts +2 -3
- package/esm/utils/get-localized.d.mts.map +1 -1
- package/esm/utils/ids.d.mts +35 -0
- package/esm/utils/ids.d.mts.map +1 -0
- package/esm/utils/ids.mjs +33 -0
- package/esm/utils/ids.mjs.map +1 -0
- package/esm/utils/index.d.mts +5 -1
- package/esm/utils/index.mjs +4 -1
- package/esm/utils/normalized-path.d.mts +1 -2
- package/esm/utils/normalized-path.d.mts.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -2
- package/esm/utils/npm-registry.d.mts.map +1 -1
- package/esm/utils/paths.d.mts +13 -14
- package/esm/utils/paths.d.mts.map +1 -1
- package/esm/utils/paths.mjs +2 -2
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/utils/promise-all-object.d.mts +1 -2
- package/esm/utils/promise-all-object.d.mts.map +1 -1
- package/esm/utils/queue.d.mts +1 -2
- package/esm/utils/queue.d.mts.map +1 -1
- package/esm/utils/runtime.d.mts +60 -0
- package/esm/utils/runtime.d.mts.map +1 -0
- package/esm/utils/runtime.mjs +85 -0
- package/esm/utils/runtime.mjs.map +1 -0
- package/esm/utils/sleep.d.mts +1 -2
- package/esm/utils/sleep.d.mts.map +1 -1
- package/esm/utils/sluggable.d.mts +1 -3
- package/esm/utils/sluggable.d.mts.map +1 -1
- package/esm/utils/to-json.d.mts +1 -2
- package/esm/utils/to-json.d.mts.map +1 -1
- package/esm/utils/types.d.mts +1 -2
- package/esm/utils/types.d.mts.map +1 -1
- package/esm/utils/urls.d.mts +5 -6
- package/esm/utils/urls.d.mts.map +1 -1
- package/esm/utils/version-compare.d.mts +1 -2
- package/esm/utils/version-compare.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts +2 -3
- package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts +2 -3
- package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/index.d.mts +2 -1
- package/esm/validation/database/index.mjs +1 -1
- package/esm/validation/database/types.d.mts +14 -10
- package/esm/validation/database/types.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts +2 -3
- package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts +2 -3
- package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
- package/esm/validation/file/file.d.mts +4 -6
- package/esm/validation/file/file.d.mts.map +1 -1
- package/esm/validation/file/index.d.mts +2 -1
- package/esm/validation/file/index.mjs +1 -1
- package/esm/validation/index.d.mts +6 -2
- package/esm/validation/index.mjs +1 -1
- package/esm/validation/plugins/index.mjs +1 -1
- package/esm/validation/types.d.mts +61 -4
- package/esm/validation/types.d.mts.map +1 -1
- package/esm/validation/validateAll.mjs +21 -4
- package/esm/validation/validateAll.mjs.map +1 -1
- package/esm/validation/validation-failure-status.mjs +15 -0
- package/esm/validation/validation-failure-status.mjs.map +1 -0
- package/esm/validation/validators/file-validator.d.mts +2 -20
- package/esm/validation/validators/file-validator.d.mts.map +1 -1
- package/esm/validation/validators/index.d.mts +2 -1
- package/esm/validation/validators/index.mjs +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts +2 -3
- package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
- package/esm/warlock-config/bundle-config.mjs +1 -1
- package/esm/warlock-config/define-config.d.mts +1 -3
- package/esm/warlock-config/define-config.d.mts.map +1 -1
- package/esm/warlock-config/define-config.mjs +3 -2
- package/esm/warlock-config/define-config.mjs.map +1 -1
- package/esm/warlock-config/index.d.mts +2 -1
- package/esm/warlock-config/index.mjs +1 -1
- package/esm/warlock-config/types.d.mts +31 -6
- package/esm/warlock-config/types.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.d.mts +5 -7
- package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.mjs +2 -1
- package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
- package/llms-full.txt +3211 -731
- package/llms.txt +16 -6
- package/package.json +47 -15
- package/schemas/inspect-report.schema.json +554 -0
- package/skills/README.md +9 -0
- package/skills/add-connector/SKILL.md +26 -38
- package/skills/benchmark-code/SKILL.md +30 -24
- package/skills/build-restful/SKILL.md +14 -14
- package/skills/build-url/SKILL.md +18 -18
- package/skills/configure-app/SKILL.md +107 -14
- package/skills/create-controller/SKILL.md +25 -12
- package/skills/create-module/SKILL.md +10 -3
- package/skills/define-resource/SKILL.md +32 -29
- package/skills/encrypt-data/SKILL.md +21 -19
- package/skills/generate-openapi/SKILL.md +50 -24
- package/skills/hash-password/SKILL.md +2 -2
- package/skills/health-checks/SKILL.md +24 -7
- package/skills/index.md +11 -4
- package/skills/lower-stage3-decorators/SKILL.md +4 -4
- package/skills/make-endpoint/SKILL.md +110 -0
- package/skills/model-factories/SKILL.md +92 -0
- package/skills/process-image/SKILL.md +32 -30
- package/skills/register-route/SKILL.md +109 -10
- package/skills/report-framework-issue.md +154 -0
- package/skills/request-memo/SKILL.md +1 -1
- package/skills/request-tracing/SKILL.md +4 -1
- package/skills/resolve-path/SKILL.md +45 -44
- package/skills/retry-operation/SKILL.md +20 -11
- package/skills/run-app/SKILL.md +107 -22
- package/skills/send-response/SKILL.md +179 -14
- package/skills/store-file/SKILL.md +93 -53
- package/skills/test-fakes/SKILL.md +123 -0
- package/skills/test-http/SKILL.md +125 -21
- package/skills/test-service/SKILL.md +41 -1
- package/skills/update-packages/SKILL.md +29 -18
- package/skills/upgrade-from-5-29/SKILL.md +454 -0
- package/skills/upload-file/SKILL.md +31 -33
- package/skills/use-app-context/SKILL.md +38 -31
- package/skills/use-middleware/SKILL.md +45 -25
- package/skills/use-model-transformers/SKILL.md +37 -28
- package/skills/use-repository/SKILL.md +2 -2
- package/skills/validate-input/SKILL.md +72 -28
- package/skills/warlock-agents-md/SKILL.md +96 -0
- package/skills/warlock-board/SKILL.md +123 -0
- package/skills/warlock-check/SKILL.md +133 -0
- package/skills/warlock-conventions/SKILL.md +115 -0
- package/skills/warlock-doctor/SKILL.md +55 -22
- package/skills/warlock-inspect/SKILL.md +134 -0
- package/skills/warlock-mcp/SKILL.md +120 -0
- package/skills/warlock-routes/SKILL.md +18 -11
- package/skills/warlock-trace/SKILL.md +81 -0
- package/skills/wire-socket/SKILL.md +8 -8
- package/skills/write-seeder/SKILL.md +46 -32
- package/skills/write-use-case/SKILL.md +40 -27
- package/esm/http/uploads/matches-if-none-match.mjs +0 -13
- package/esm/http/uploads/matches-if-none-match.mjs.map +0 -1
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import { WarlockError } from "../../errors/warlock-error.mjs";
|
|
2
|
+
import { ERROR_CODES, errorCodeDocsUrl, explainErrorCode, isWarlockErrorCode } from "../../errors/error-codes.mjs";
|
|
3
|
+
import { INSPECT_SECTIONS } from "../inspect/inspect-report.types.mjs";
|
|
4
|
+
import { CHECK_STEPS } from "../check/check-report.types.mjs";
|
|
5
|
+
import { MAKE_GENERATORS, isMakeGenerator } from "../generate/generator-spec.mjs";
|
|
6
|
+
import "../generate/index.mjs";
|
|
7
|
+
import { readDocsFile, searchDocs } from "./docs-search.mjs";
|
|
8
|
+
import { buildDbSchema } from "./db-schema.mjs";
|
|
9
|
+
import { inputSchema } from "./tool-input.mjs";
|
|
10
|
+
|
|
11
|
+
//#region ../../packages/core/src/tooling/mcp/mcp-tools.ts
|
|
12
|
+
/** The `make` generators the `generate_make` tool can run (`warlock generate.<name>`). */
|
|
13
|
+
const MCP_MAKE_GENERATORS = MAKE_GENERATORS;
|
|
14
|
+
function stringArg(input, key) {
|
|
15
|
+
const value = input[key];
|
|
16
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
17
|
+
}
|
|
18
|
+
function booleanArg(input, key) {
|
|
19
|
+
return input[key] === true;
|
|
20
|
+
}
|
|
21
|
+
function integerArg(input, key, fallback) {
|
|
22
|
+
const value = input[key];
|
|
23
|
+
return typeof value === "number" && Number.isInteger(value) ? value : fallback;
|
|
24
|
+
}
|
|
25
|
+
function stringsArg(input, key) {
|
|
26
|
+
const value = input[key];
|
|
27
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : void 0;
|
|
28
|
+
}
|
|
29
|
+
function includesText(values, needle) {
|
|
30
|
+
const lowered = needle.toLowerCase();
|
|
31
|
+
return values.some((value) => typeof value === "string" && value.toLowerCase().includes(lowered));
|
|
32
|
+
}
|
|
33
|
+
const MUTATING = /* @__PURE__ */ new Set([
|
|
34
|
+
"POST",
|
|
35
|
+
"PUT",
|
|
36
|
+
"PATCH",
|
|
37
|
+
"DELETE"
|
|
38
|
+
]);
|
|
39
|
+
function filterRoutes(routes, input) {
|
|
40
|
+
const filter = stringArg(input, "filter");
|
|
41
|
+
const method = stringArg(input, "method")?.toUpperCase();
|
|
42
|
+
const unguarded = booleanArg(input, "unguardedWrites");
|
|
43
|
+
return routes.filter((route) => (!filter || includesText([
|
|
44
|
+
route.path,
|
|
45
|
+
route.name,
|
|
46
|
+
route.handler,
|
|
47
|
+
route.sourceFile
|
|
48
|
+
], filter)) && (!method || route.method === method) && (!unguarded || MUTATING.has(route.method) && !route.auth.required && !route.isPage));
|
|
49
|
+
}
|
|
50
|
+
/** The `filter` match of one entry of a section, by the fields an agent would search. */
|
|
51
|
+
function sectionEntryMatches(section, entry, filter) {
|
|
52
|
+
if (typeof entry !== "object" || entry === null) return false;
|
|
53
|
+
return includesText({
|
|
54
|
+
routes: [
|
|
55
|
+
"path",
|
|
56
|
+
"name",
|
|
57
|
+
"handler",
|
|
58
|
+
"sourceFile"
|
|
59
|
+
],
|
|
60
|
+
models: [
|
|
61
|
+
"name",
|
|
62
|
+
"table",
|
|
63
|
+
"sourceFile"
|
|
64
|
+
],
|
|
65
|
+
resources: ["name"],
|
|
66
|
+
config: ["key", "file"],
|
|
67
|
+
events: ["event"],
|
|
68
|
+
pages: [
|
|
69
|
+
"path",
|
|
70
|
+
"name",
|
|
71
|
+
"file"
|
|
72
|
+
],
|
|
73
|
+
jobs: ["name", "queue"],
|
|
74
|
+
schedules: ["name"],
|
|
75
|
+
packages: ["name"]
|
|
76
|
+
}[section].map((field) => {
|
|
77
|
+
const value = Reflect.get(entry, field);
|
|
78
|
+
return typeof value === "string" ? value : null;
|
|
79
|
+
}), filter);
|
|
80
|
+
}
|
|
81
|
+
const SECTION_DESCRIPTIONS = {
|
|
82
|
+
routes: "Registered HTTP routes from the booted router: method, path, name, source file, handler, middleware chain in run order, auth guard, CSRF, rate limit, logging policy, request JSON Schemas and declared responses ($refs resolve against `components`).",
|
|
83
|
+
models: "Cascade model classes: table, primary key, data source, columns (from the model's Seal schema), relations, resource, delete strategy and timestamp columns.",
|
|
84
|
+
resources: "Resources reached from route responses or models, with their output shape as JSON Schema and the models that use them.",
|
|
85
|
+
config: "Every loaded config key as a dotted path with its TYPE (never its value) and the src/config file it came from.",
|
|
86
|
+
events: "Event listeners app modules registered while loading, grouped by event, with the registering file.",
|
|
87
|
+
pages: "Pages @warlock.js/web installed: path, name, file, layout chain, loaders, actions and guard.",
|
|
88
|
+
jobs: "Queue jobs defined with defineJob() from @warlock.js/queue: name, queue, attempts, backoff, retention.",
|
|
89
|
+
schedules: "Scheduled tasks from @warlock.js/scheduler: name, cron expression, intervals, next run.",
|
|
90
|
+
packages: "Installed @warlock.js/* packages and their versions."
|
|
91
|
+
};
|
|
92
|
+
function inspectSectionTool(context, section) {
|
|
93
|
+
const properties = { filter: {
|
|
94
|
+
type: "string",
|
|
95
|
+
description: "Case-insensitive substring to keep only matching entries (names, paths, keys, files)."
|
|
96
|
+
} };
|
|
97
|
+
if (section === "routes") {
|
|
98
|
+
properties.method = {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "Only routes with this HTTP method (GET, POST, …)."
|
|
101
|
+
};
|
|
102
|
+
properties.unguardedWrites = {
|
|
103
|
+
type: "boolean",
|
|
104
|
+
description: "Only POST/PUT/PATCH/DELETE API routes that have no auth guard."
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
name: `inspect_${section}`,
|
|
109
|
+
description: `${SECTION_DESCRIPTIONS[section]} Read from the app's registries (the same data as \`warlock inspect --json --section ${section}\`), not from source text. Read-only.`,
|
|
110
|
+
input: inputSchema(properties),
|
|
111
|
+
writes: false,
|
|
112
|
+
async run(input) {
|
|
113
|
+
const report = await context.inspect([section]);
|
|
114
|
+
const entries = report[section] ?? [];
|
|
115
|
+
const filter = stringArg(input, "filter");
|
|
116
|
+
const kept = section === "routes" && report.routes ? filterRoutes(report.routes, input) : filter ? entries.filter((entry) => sectionEntryMatches(section, entry, filter)) : entries;
|
|
117
|
+
const withSchemas = section === "routes" || section === "models" || section === "resources";
|
|
118
|
+
return {
|
|
119
|
+
schemaVersion: report.schemaVersion,
|
|
120
|
+
[section]: kept,
|
|
121
|
+
total: entries.length,
|
|
122
|
+
...withSchemas ? { components: report.components } : {},
|
|
123
|
+
warnings: report.warnings
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function summarizeRequest(summary, record) {
|
|
129
|
+
if (!record) return summary;
|
|
130
|
+
const nPlusOneShapes = new Set(record.warnings.filter((warning) => warning.type === "n+1" && typeof warning.shape === "string").map((warning) => warning.shape));
|
|
131
|
+
return {
|
|
132
|
+
...summary,
|
|
133
|
+
error: record.error ?? null,
|
|
134
|
+
phases: record.phases,
|
|
135
|
+
queries: record.queries.map((query) => ({
|
|
136
|
+
...query,
|
|
137
|
+
nPlusOne: typeof query.shape === "string" && nPlusOneShapes.has(query.shape)
|
|
138
|
+
})),
|
|
139
|
+
warnings: record.warnings,
|
|
140
|
+
logs: record.logs,
|
|
141
|
+
cache: record.cache,
|
|
142
|
+
mails: record.mails,
|
|
143
|
+
timings: {
|
|
144
|
+
totalMs: record.durationMs ?? null,
|
|
145
|
+
phasesMs: record.phases.reduce((totals, phase) => {
|
|
146
|
+
totals[phase.name] = (totals[phase.name] ?? 0) + phase.durationMs;
|
|
147
|
+
return totals;
|
|
148
|
+
}, {}),
|
|
149
|
+
queriesMs: record.queries.reduce((total, query) => total + (typeof query.durationMs === "number" ? query.durationMs : 0), 0)
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function writeProperty() {
|
|
154
|
+
return { write: {
|
|
155
|
+
type: "boolean",
|
|
156
|
+
description: "Write the files into the project. Default false: only return the diff (the generator runs in a throw-away copy of the project)."
|
|
157
|
+
} };
|
|
158
|
+
}
|
|
159
|
+
function refuseWrite(context) {
|
|
160
|
+
return (input) => input.write === true && !context.allowWrites ? `WL7005: this MCP server is read-only; restart it with --allow-writes to let generate tools write. Without it they return the diff only.` : null;
|
|
161
|
+
}
|
|
162
|
+
const MAKE_FLAGS = {
|
|
163
|
+
withValidation: {
|
|
164
|
+
type: "boolean",
|
|
165
|
+
description: "controller: also generate a validation schema and bind it (--with-validation)."
|
|
166
|
+
},
|
|
167
|
+
withResource: {
|
|
168
|
+
type: "boolean",
|
|
169
|
+
description: "model: also generate a resource (--with-resource)."
|
|
170
|
+
},
|
|
171
|
+
table: {
|
|
172
|
+
type: "string",
|
|
173
|
+
description: "model: the table name (--table)."
|
|
174
|
+
},
|
|
175
|
+
minimal: {
|
|
176
|
+
type: "boolean",
|
|
177
|
+
description: "module: a minimal skeleton instead of the full CRUD scaffold (--minimal)."
|
|
178
|
+
},
|
|
179
|
+
noTimestamps: {
|
|
180
|
+
type: "boolean",
|
|
181
|
+
description: "model / migration: no timestamp columns (--no-timestamps)."
|
|
182
|
+
},
|
|
183
|
+
add: {
|
|
184
|
+
type: "string",
|
|
185
|
+
description: "migration: columns to add, DSL name:type:modifier,… (--add)."
|
|
186
|
+
},
|
|
187
|
+
drop: {
|
|
188
|
+
type: "string",
|
|
189
|
+
description: "migration: comma-separated columns to drop (--drop)."
|
|
190
|
+
},
|
|
191
|
+
rename: {
|
|
192
|
+
type: "string",
|
|
193
|
+
description: "migration: columns to rename, old:new,… (--rename)."
|
|
194
|
+
},
|
|
195
|
+
force: {
|
|
196
|
+
type: "boolean",
|
|
197
|
+
description: "Overwrite files that already exist (--force)."
|
|
198
|
+
},
|
|
199
|
+
overwrite: {
|
|
200
|
+
type: "boolean",
|
|
201
|
+
description: "module / model: with force, also replace files that differ from the output (--overwrite)."
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const FLAG_NAMES = {
|
|
205
|
+
withValidation: "with-validation",
|
|
206
|
+
withResource: "with-resource",
|
|
207
|
+
table: "table",
|
|
208
|
+
minimal: "minimal",
|
|
209
|
+
noTimestamps: "no-timestamps",
|
|
210
|
+
add: "add",
|
|
211
|
+
drop: "drop",
|
|
212
|
+
rename: "rename",
|
|
213
|
+
force: "force",
|
|
214
|
+
overwrite: "overwrite"
|
|
215
|
+
};
|
|
216
|
+
/** The generator spec a `generate_make` call describes. */
|
|
217
|
+
function makeSpecFromInput(input) {
|
|
218
|
+
const generator = stringArg(input, "generator");
|
|
219
|
+
const name = stringArg(input, "name");
|
|
220
|
+
if (!generator || !isMakeGenerator(generator) || !name) throw new Error(`generate_make needs a generator (${MCP_MAKE_GENERATORS.join(", ")}) and a name.`);
|
|
221
|
+
const flags = {};
|
|
222
|
+
for (const [key, flag] of Object.entries(FLAG_NAMES)) {
|
|
223
|
+
const value = input[key];
|
|
224
|
+
if (value === true) flags[flag] = true;
|
|
225
|
+
if (typeof value === "string" && value.length > 0) flags[flag] = value;
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
type: "make",
|
|
229
|
+
generator,
|
|
230
|
+
name,
|
|
231
|
+
flags
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The tools `warlock mcp` serves. Read-only unless `context.allowWrites`:
|
|
236
|
+
* generate tools then accept `write: true`; without it they only return the
|
|
237
|
+
* diff a generator would produce.
|
|
238
|
+
*/
|
|
239
|
+
function createWarlockMcpTools(context) {
|
|
240
|
+
return [
|
|
241
|
+
{
|
|
242
|
+
name: "inspect_app",
|
|
243
|
+
description: "Summary of the app: name, version, Node, environment, how many routes/models/resources/config keys/events/pages/jobs/schedules/packages it has, and inspect warnings (WL codes for modules that failed to load). Start here, then call the inspect_<section> tool you need. Read-only.",
|
|
244
|
+
input: inputSchema({}),
|
|
245
|
+
writes: false,
|
|
246
|
+
async run() {
|
|
247
|
+
const report = await context.inspect(INSPECT_SECTIONS);
|
|
248
|
+
const counts = Object.fromEntries(INSPECT_SECTIONS.map((section) => [section, report[section]?.length ?? 0]));
|
|
249
|
+
return {
|
|
250
|
+
schemaVersion: report.schemaVersion,
|
|
251
|
+
app: report.app,
|
|
252
|
+
counts,
|
|
253
|
+
warnings: report.warnings
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
...INSPECT_SECTIONS.map((section) => inspectSectionTool(context, section)),
|
|
258
|
+
{
|
|
259
|
+
name: "db_schema",
|
|
260
|
+
description: "The database schema the app's models declare: one entry per table with columns (type, required, primary key, foreign key of belongsTo relations), relations, timestamp columns and delete strategy. Built from the models' Seal schemas — no database connection is opened, so migration-only columns are not listed. Read-only.",
|
|
261
|
+
input: inputSchema({ model: {
|
|
262
|
+
type: "string",
|
|
263
|
+
description: "Only this model (class name) or table."
|
|
264
|
+
} }),
|
|
265
|
+
writes: false,
|
|
266
|
+
async run(input) {
|
|
267
|
+
const report = await context.inspect(["models"]);
|
|
268
|
+
return buildDbSchema(report.models ?? [], stringArg(input, "model"));
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: "docs_search",
|
|
273
|
+
description: "Search the documentation of the @warlock.js packages INSTALLED in this app (their skills, README and llms files under node_modules) — offline, so answers match the installed versions. Returns ranked sections with the file, heading, line and an excerpt; read a whole skill with docs_read. Read-only.",
|
|
274
|
+
input: inputSchema({
|
|
275
|
+
query: {
|
|
276
|
+
type: "string",
|
|
277
|
+
description: "Words to look for, e.g. 'validation schema file upload'."
|
|
278
|
+
},
|
|
279
|
+
limit: {
|
|
280
|
+
type: "integer",
|
|
281
|
+
description: "Maximum hits (default 8).",
|
|
282
|
+
minimum: 1,
|
|
283
|
+
maximum: 25
|
|
284
|
+
},
|
|
285
|
+
package: {
|
|
286
|
+
type: "string",
|
|
287
|
+
description: "Only this package, e.g. '@warlock.js/cascade'."
|
|
288
|
+
}
|
|
289
|
+
}, ["query"]),
|
|
290
|
+
writes: false,
|
|
291
|
+
async run(input) {
|
|
292
|
+
const corpus = await context.docs();
|
|
293
|
+
const query = stringArg(input, "query") ?? "";
|
|
294
|
+
return {
|
|
295
|
+
query,
|
|
296
|
+
files: corpus.files.length,
|
|
297
|
+
hits: searchDocs(corpus, query, {
|
|
298
|
+
limit: integerArg(input, "limit", 8),
|
|
299
|
+
package: stringArg(input, "package")
|
|
300
|
+
})
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: "docs_read",
|
|
306
|
+
description: "Read one file returned by docs_search (a skill, README or llms file of an installed @warlock.js package), whole or one section by its heading. Only files of that corpus can be read. Read-only.",
|
|
307
|
+
input: inputSchema({
|
|
308
|
+
file: {
|
|
309
|
+
type: "string",
|
|
310
|
+
description: "The `file` of a docs_search hit."
|
|
311
|
+
},
|
|
312
|
+
heading: {
|
|
313
|
+
type: "string",
|
|
314
|
+
description: "Only the section with this exact heading."
|
|
315
|
+
}
|
|
316
|
+
}, ["file"]),
|
|
317
|
+
writes: false,
|
|
318
|
+
async run(input) {
|
|
319
|
+
const corpus = await context.docs();
|
|
320
|
+
const file = stringArg(input, "file") ?? "";
|
|
321
|
+
const found = readDocsFile(corpus, context.cwd, file, { heading: stringArg(input, "heading") });
|
|
322
|
+
if (!found) throw new Error(`"${file}" is not an installed docs file (or has no such heading). Use docs_search first.`);
|
|
323
|
+
return found;
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: "explain",
|
|
328
|
+
description: "Explain a stable Warlock error code (WL3001, WL7301, WL8003, …): what it means, whether it is your code or this machine, the one-line fix, the skill that covers it and its docs link. Without a code, lists every code. Read-only.",
|
|
329
|
+
input: inputSchema({ code: {
|
|
330
|
+
type: "string",
|
|
331
|
+
description: "The code, e.g. WL3001."
|
|
332
|
+
} }),
|
|
333
|
+
writes: false,
|
|
334
|
+
async run(input) {
|
|
335
|
+
const code = stringArg(input, "code");
|
|
336
|
+
if (!code) return Object.values(ERROR_CODES).map((definition) => ({
|
|
337
|
+
code: definition.code,
|
|
338
|
+
title: definition.title,
|
|
339
|
+
category: definition.category
|
|
340
|
+
}));
|
|
341
|
+
const definition = explainErrorCode(code);
|
|
342
|
+
if (!definition) throw new Error(`Unknown error code "${code}". Call explain without a code to list them.`);
|
|
343
|
+
return {
|
|
344
|
+
...definition,
|
|
345
|
+
docs: isWarlockErrorCode(definition.code) ? errorCodeDocsUrl(definition.code) : null
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: "check_run",
|
|
351
|
+
description: "Run `warlock check`: typecheck, lint, the affected tests and the framework convention checks, as one report with one problem per entry (stable WL code, file:line, fix hint, skill). exitCode 1 means your code, 2 means this machine (missing service, Node version, crashed tool) — do not edit code for a 2. Use changed: true while iterating. Does not write project files.",
|
|
352
|
+
input: inputSchema({
|
|
353
|
+
changed: {
|
|
354
|
+
type: "boolean",
|
|
355
|
+
description: "Only the files changed against HEAD (plus untracked) and what they affect."
|
|
356
|
+
},
|
|
357
|
+
base: {
|
|
358
|
+
type: "string",
|
|
359
|
+
description: "Compare with the merge base of this git ref instead (implies changed)."
|
|
360
|
+
},
|
|
361
|
+
skip: {
|
|
362
|
+
type: "array",
|
|
363
|
+
description: "Steps to skip.",
|
|
364
|
+
items: {
|
|
365
|
+
type: "string",
|
|
366
|
+
enum: CHECK_STEPS
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}),
|
|
370
|
+
writes: false,
|
|
371
|
+
async run(input) {
|
|
372
|
+
const skip = (stringsArg(input, "skip") ?? []).filter((step) => CHECK_STEPS.includes(step));
|
|
373
|
+
return context.check({
|
|
374
|
+
changed: booleanArg(input, "changed"),
|
|
375
|
+
base: stringArg(input, "base"),
|
|
376
|
+
skip
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
name: "test_run",
|
|
382
|
+
description: "Run the app's vitest tests: given test files run as they are; given source files, the tests that import them run (vitest related); changed: true runs the tests related to the files changed in git; neither runs the whole suite. Returns totals and one problem per failure (WL7301 failed test, WL7302 file failed to load, WL8xxx this machine). Does not write project files.",
|
|
383
|
+
input: inputSchema({
|
|
384
|
+
files: {
|
|
385
|
+
type: "array",
|
|
386
|
+
description: "Project-relative files (tests or sources).",
|
|
387
|
+
items: { type: "string" }
|
|
388
|
+
},
|
|
389
|
+
changed: {
|
|
390
|
+
type: "boolean",
|
|
391
|
+
description: "The tests related to the files changed against HEAD."
|
|
392
|
+
},
|
|
393
|
+
base: {
|
|
394
|
+
type: "string",
|
|
395
|
+
description: "With changed: compare with the merge base of this ref."
|
|
396
|
+
}
|
|
397
|
+
}),
|
|
398
|
+
writes: false,
|
|
399
|
+
async run(input) {
|
|
400
|
+
return context.tests({
|
|
401
|
+
files: stringsArg(input, "files"),
|
|
402
|
+
changed: booleanArg(input, "changed"),
|
|
403
|
+
base: stringArg(input, "base")
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
name: "requests_recent",
|
|
409
|
+
description: "The most recent HTTP requests the running dev server handled, from @warlock.js/devtools (needs `warlock dev` with devtools installed): method, path, matched route, status, duration, and — with details — the phase timeline (route match, each middleware, validation, handler), every query with its duration and an nPlusOne flag, N+1 warnings, logs, cache operations and captured mails. Request and response bodies are not recorded by devtools; use `warlock trace` for those. Read-only.",
|
|
410
|
+
input: inputSchema({
|
|
411
|
+
limit: {
|
|
412
|
+
type: "integer",
|
|
413
|
+
description: "How many requests (default 10, newest first).",
|
|
414
|
+
minimum: 1,
|
|
415
|
+
maximum: 50
|
|
416
|
+
},
|
|
417
|
+
method: {
|
|
418
|
+
type: "string",
|
|
419
|
+
description: "Only this HTTP method."
|
|
420
|
+
},
|
|
421
|
+
path: {
|
|
422
|
+
type: "string",
|
|
423
|
+
description: "Only paths containing this text."
|
|
424
|
+
},
|
|
425
|
+
status: {
|
|
426
|
+
type: "integer",
|
|
427
|
+
description: "Only this response status.",
|
|
428
|
+
minimum: 100,
|
|
429
|
+
maximum: 599
|
|
430
|
+
},
|
|
431
|
+
details: {
|
|
432
|
+
type: "boolean",
|
|
433
|
+
description: "Include the full timeline of each request (default true)."
|
|
434
|
+
}
|
|
435
|
+
}),
|
|
436
|
+
writes: false,
|
|
437
|
+
async run(input) {
|
|
438
|
+
const devtools = await context.devtools();
|
|
439
|
+
const method = stringArg(input, "method")?.toUpperCase();
|
|
440
|
+
const pathFilter = stringArg(input, "path");
|
|
441
|
+
const status = typeof input.status === "number" ? input.status : void 0;
|
|
442
|
+
const details = input.details !== false;
|
|
443
|
+
const summaries = (await devtools.listRequests()).filter((summary) => (!method || summary.method === method) && (!pathFilter || summary.path.includes(pathFilter)) && (status === void 0 || summary.status === status)).sort((first, second) => second.startedAt - first.startedAt).slice(0, integerArg(input, "limit", 10));
|
|
444
|
+
const requests = [];
|
|
445
|
+
for (const summary of summaries) requests.push(summarizeRequest(summary, details ? await devtools.getRequest(summary.id) : void 0));
|
|
446
|
+
return {
|
|
447
|
+
devtools: {
|
|
448
|
+
url: devtools.url,
|
|
449
|
+
path: devtools.devtoolsPath
|
|
450
|
+
},
|
|
451
|
+
requests
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
name: "generate_make",
|
|
457
|
+
description: `Run a \`warlock generate.<generator>\` scaffold (${MCP_MAKE_GENERATORS.join(", ")}) and return the unified diff of every file it would create or change. By default nothing in the project is written: the generator runs in a throw-away copy.${context.allowWrites ? " Pass write: true to write the files into the project." : " This server is read-only (no --allow-writes)."} Names are module/name for everything but module (e.g. posts/create-post) and the model path for migration.`,
|
|
458
|
+
input: inputSchema({
|
|
459
|
+
generator: {
|
|
460
|
+
type: "string",
|
|
461
|
+
description: "Which generator.",
|
|
462
|
+
enum: MCP_MAKE_GENERATORS
|
|
463
|
+
},
|
|
464
|
+
name: {
|
|
465
|
+
type: "string",
|
|
466
|
+
description: "The generator's argument: `posts` for module, `posts/create-post` for the others, the model path for migration."
|
|
467
|
+
},
|
|
468
|
+
...MAKE_FLAGS,
|
|
469
|
+
...context.allowWrites ? writeProperty() : {}
|
|
470
|
+
}, ["generator", "name"]),
|
|
471
|
+
writes: context.allowWrites,
|
|
472
|
+
precheck: refuseWrite(context),
|
|
473
|
+
async run(input) {
|
|
474
|
+
const spec = makeSpecFromInput(input);
|
|
475
|
+
return input.write === true ? context.generation.apply(spec) : context.generation.plan(spec);
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: "generate_add",
|
|
480
|
+
description: `Run \`warlock add <features…>\` (an installable framework feature: a database driver, queue, web, devtools, …) and return the unified diff of every file it would create or change, package.json included. Dependencies are recorded, never installed, in the preview.${context.allowWrites ? " Pass write: true to apply it to the project (this installs the dependencies)." : " This server is read-only (no --allow-writes)."}`,
|
|
481
|
+
input: inputSchema({
|
|
482
|
+
features: {
|
|
483
|
+
type: "array",
|
|
484
|
+
description: "Feature names, e.g. ['devtools'].",
|
|
485
|
+
items: context.features?.length ? {
|
|
486
|
+
type: "string",
|
|
487
|
+
enum: context.features
|
|
488
|
+
} : { type: "string" }
|
|
489
|
+
},
|
|
490
|
+
...context.allowWrites ? writeProperty() : {}
|
|
491
|
+
}, ["features"]),
|
|
492
|
+
writes: context.allowWrites,
|
|
493
|
+
precheck: refuseWrite(context),
|
|
494
|
+
async run(input) {
|
|
495
|
+
const features = stringsArg(input, "features") ?? [];
|
|
496
|
+
if (features.length === 0) throw new Error("generate_add needs at least one feature name.");
|
|
497
|
+
const spec = {
|
|
498
|
+
type: "add",
|
|
499
|
+
features
|
|
500
|
+
};
|
|
501
|
+
return input.write === true ? context.generation.apply(spec) : context.generation.plan(spec);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
];
|
|
505
|
+
}
|
|
506
|
+
/** The message a tool failure reaches the client with: code, message and the fix. */
|
|
507
|
+
function describeToolError(error) {
|
|
508
|
+
if (error instanceof WarlockError) return `${error.code}: ${error.message} Fix: ${ERROR_CODES[error.code].fix}`;
|
|
509
|
+
return error instanceof Error ? error.message : String(error);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
//#endregion
|
|
513
|
+
export { MCP_MAKE_GENERATORS, createWarlockMcpTools, describeToolError, makeSpecFromInput };
|
|
514
|
+
//# sourceMappingURL=mcp-tools.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/mcp/mcp-tools.ts"],"sourcesContent":["import {\n ERROR_CODES,\n errorCodeDocsUrl,\n explainErrorCode,\n isWarlockErrorCode,\n} from \"../../errors/error-codes\";\nimport { WarlockError } from \"../../errors/warlock-error\";\nimport { CHECK_STEPS, type CheckReport, type CheckStepName } from \"../check/check-report.types\";\nimport type { TestRunReport } from \"../check/run-tests\";\nimport type {\n DevtoolsClient,\n DevtoolsRequestRecord,\n DevtoolsRequestSummaryRecord,\n} from \"../devtools/devtools-client\";\nimport { type GeneratorSpec, isMakeGenerator, MAKE_GENERATORS } from \"../generate\";\nimport {\n INSPECT_SECTIONS,\n type InspectReport,\n type InspectRoute,\n type InspectSection,\n} from \"../inspect/inspect-report.types\";\nimport { buildDbSchema } from \"./db-schema\";\nimport { type DocsCorpus, readDocsFile, searchDocs } from \"./docs-search\";\nimport { inputSchema, type McpInputSchema, type McpInputProperty } from \"./tool-input\";\n\n/**\n * What the `warlock mcp` tools run against. The CLI fills it from a read-only\n * boot of the app; `warlock dev --mcp` fills it from the live dev process;\n * tests pass fakes.\n */\nexport type WarlockMcpContext = {\n /** Project root. */\n cwd: string;\n /** Whether tools may write project files (`--allow-writes`). */\n allowWrites: boolean;\n /** Describe the app (see `inspectApp`). */\n inspect(sections: readonly InspectSection[]): Promise<InspectReport>;\n /** Run `warlock check`. */\n check(options: {\n changed?: boolean;\n base?: string;\n skip?: readonly CheckStepName[];\n }): Promise<CheckReport>;\n /** Run tests for files, the changed files, or the suite. */\n tests(options: {\n files?: readonly string[];\n changed?: boolean;\n base?: string;\n }): Promise<TestRunReport>;\n /** Connect to the running dev server's devtools API (throws WL8008 / WL8009). */\n devtools(): Promise<DevtoolsClient>;\n /** Preview (and, with `allowWrites`, apply) a `make` / `add` generator. */\n generation: {\n plan(spec: GeneratorSpec): Promise<unknown>;\n apply(spec: GeneratorSpec): Promise<unknown>;\n };\n /** The installed docs corpus (cached by the caller). */\n docs(): Promise<DocsCorpus>;\n /** The `warlock add` feature names, advertised as the `generate_add` enum. */\n features?: readonly string[];\n};\n\n/** One tool the server exposes. */\nexport type WarlockMcpTool = {\n /** Underscored, never dotted: model APIs refuse dots in tool names (`^[a-zA-Z0-9_-]{1,128}$`). */\n name: string;\n description: string;\n input: McpInputSchema;\n /** Whether a call can change project files. Only exposed with `allowWrites`. */\n writes: boolean;\n /** A check run before validation; return a message to refuse the call. */\n precheck?: (input: Record<string, unknown>) => string | null;\n run(input: Record<string, unknown>): Promise<unknown>;\n};\n\n/** The `make` generators the `generate_make` tool can run (`warlock generate.<name>`). */\nexport const MCP_MAKE_GENERATORS = MAKE_GENERATORS;\n\nfunction stringArg(input: Record<string, unknown>, key: string): string | undefined {\n const value = input[key];\n\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nfunction booleanArg(input: Record<string, unknown>, key: string): boolean {\n return input[key] === true;\n}\n\nfunction integerArg(input: Record<string, unknown>, key: string, fallback: number): number {\n const value = input[key];\n\n return typeof value === \"number\" && Number.isInteger(value) ? value : fallback;\n}\n\nfunction stringsArg(input: Record<string, unknown>, key: string): string[] | undefined {\n const value = input[key];\n\n return Array.isArray(value)\n ? value.filter((item): item is string => typeof item === \"string\")\n : undefined;\n}\n\nfunction includesText(values: readonly (string | null | undefined)[], needle: string): boolean {\n const lowered = needle.toLowerCase();\n\n return values.some((value) => typeof value === \"string\" && value.toLowerCase().includes(lowered));\n}\n\nconst MUTATING = new Set([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]);\n\nfunction filterRoutes(\n routes: readonly InspectRoute[],\n input: Record<string, unknown>,\n): InspectRoute[] {\n const filter = stringArg(input, \"filter\");\n const method = stringArg(input, \"method\")?.toUpperCase();\n const unguarded = booleanArg(input, \"unguardedWrites\");\n\n return routes.filter(\n (route) =>\n (!filter ||\n includesText([route.path, route.name, route.handler, route.sourceFile], filter)) &&\n (!method || route.method === method) &&\n (!unguarded || (MUTATING.has(route.method) && !route.auth.required && !route.isPage)),\n );\n}\n\n/** The `filter` match of one entry of a section, by the fields an agent would search. */\nfunction sectionEntryMatches(section: InspectSection, entry: unknown, filter: string): boolean {\n if (typeof entry !== \"object\" || entry === null) return false;\n\n const fields: Record<InspectSection, readonly string[]> = {\n routes: [\"path\", \"name\", \"handler\", \"sourceFile\"],\n models: [\"name\", \"table\", \"sourceFile\"],\n resources: [\"name\"],\n config: [\"key\", \"file\"],\n events: [\"event\"],\n pages: [\"path\", \"name\", \"file\"],\n jobs: [\"name\", \"queue\"],\n schedules: [\"name\"],\n packages: [\"name\"],\n };\n\n return includesText(\n fields[section].map((field) => {\n const value = Reflect.get(entry, field);\n return typeof value === \"string\" ? value : null;\n }),\n filter,\n );\n}\n\nconst SECTION_DESCRIPTIONS: Record<InspectSection, string> = {\n routes:\n \"Registered HTTP routes from the booted router: method, path, name, source file, handler, middleware chain in run order, auth guard, CSRF, rate limit, logging policy, request JSON Schemas and declared responses ($refs resolve against `components`).\",\n models:\n \"Cascade model classes: table, primary key, data source, columns (from the model's Seal schema), relations, resource, delete strategy and timestamp columns.\",\n resources:\n \"Resources reached from route responses or models, with their output shape as JSON Schema and the models that use them.\",\n config:\n \"Every loaded config key as a dotted path with its TYPE (never its value) and the src/config file it came from.\",\n events:\n \"Event listeners app modules registered while loading, grouped by event, with the registering file.\",\n pages:\n \"Pages @warlock.js/web installed: path, name, file, layout chain, loaders, actions and guard.\",\n jobs: \"Queue jobs defined with defineJob() from @warlock.js/queue: name, queue, attempts, backoff, retention.\",\n schedules:\n \"Scheduled tasks from @warlock.js/scheduler: name, cron expression, intervals, next run.\",\n packages: \"Installed @warlock.js/* packages and their versions.\",\n};\n\nfunction inspectSectionTool(context: WarlockMcpContext, section: InspectSection): WarlockMcpTool {\n const properties: Record<string, McpInputProperty> = {\n filter: {\n type: \"string\",\n description:\n \"Case-insensitive substring to keep only matching entries (names, paths, keys, files).\",\n },\n };\n\n if (section === \"routes\") {\n properties.method = {\n type: \"string\",\n description: \"Only routes with this HTTP method (GET, POST, …).\",\n };\n properties.unguardedWrites = {\n type: \"boolean\",\n description: \"Only POST/PUT/PATCH/DELETE API routes that have no auth guard.\",\n };\n }\n\n return {\n name: `inspect_${section}`,\n description: `${SECTION_DESCRIPTIONS[section]} Read from the app's registries (the same data as \\`warlock inspect --json --section ${section}\\`), not from source text. Read-only.`,\n input: inputSchema(properties),\n writes: false,\n async run(input) {\n const report = await context.inspect([section]);\n const entries: unknown[] = report[section] ?? [];\n const filter = stringArg(input, \"filter\");\n const kept =\n section === \"routes\" && report.routes\n ? filterRoutes(report.routes, input)\n : filter\n ? entries.filter((entry) => sectionEntryMatches(section, entry, filter))\n : entries;\n const withSchemas = section === \"routes\" || section === \"models\" || section === \"resources\";\n\n return {\n schemaVersion: report.schemaVersion,\n [section]: kept,\n total: entries.length,\n ...(withSchemas ? { components: report.components } : {}),\n warnings: report.warnings,\n };\n },\n };\n}\n\nfunction summarizeRequest(summary: DevtoolsRequestSummaryRecord, record?: DevtoolsRequestRecord) {\n if (!record) return summary;\n\n const nPlusOneShapes = new Set(\n record.warnings\n .filter((warning) => warning.type === \"n+1\" && typeof warning.shape === \"string\")\n .map((warning) => warning.shape),\n );\n\n return {\n ...summary,\n error: record.error ?? null,\n phases: record.phases,\n queries: record.queries.map((query) => ({\n ...query,\n nPlusOne: typeof query.shape === \"string\" && nPlusOneShapes.has(query.shape),\n })),\n warnings: record.warnings,\n logs: record.logs,\n cache: record.cache,\n mails: record.mails,\n timings: {\n totalMs: record.durationMs ?? null,\n phasesMs: record.phases.reduce<Record<string, number>>((totals, phase) => {\n totals[phase.name] = (totals[phase.name] ?? 0) + phase.durationMs;\n return totals;\n }, {}),\n queriesMs: record.queries.reduce(\n (total, query) => total + (typeof query.durationMs === \"number\" ? query.durationMs : 0),\n 0,\n ),\n },\n };\n}\n\nfunction writeProperty(): Record<string, McpInputProperty> {\n return {\n write: {\n type: \"boolean\",\n description:\n \"Write the files into the project. Default false: only return the diff (the generator runs in a throw-away copy of the project).\",\n },\n };\n}\n\nfunction refuseWrite(context: WarlockMcpContext) {\n return (input: Record<string, unknown>): string | null =>\n input.write === true && !context.allowWrites\n ? `WL7005: this MCP server is read-only; restart it with --allow-writes to let generate tools write. Without it they return the diff only.`\n : null;\n}\n\nconst MAKE_FLAGS: Record<string, McpInputProperty> = {\n withValidation: {\n type: \"boolean\",\n description: \"controller: also generate a validation schema and bind it (--with-validation).\",\n },\n withResource: {\n type: \"boolean\",\n description: \"model: also generate a resource (--with-resource).\",\n },\n table: { type: \"string\", description: \"model: the table name (--table).\" },\n minimal: {\n type: \"boolean\",\n description: \"module: a minimal skeleton instead of the full CRUD scaffold (--minimal).\",\n },\n noTimestamps: {\n type: \"boolean\",\n description: \"model / migration: no timestamp columns (--no-timestamps).\",\n },\n add: {\n type: \"string\",\n description: \"migration: columns to add, DSL name:type:modifier,… (--add).\",\n },\n drop: { type: \"string\", description: \"migration: comma-separated columns to drop (--drop).\" },\n rename: { type: \"string\", description: \"migration: columns to rename, old:new,… (--rename).\" },\n force: { type: \"boolean\", description: \"Overwrite files that already exist (--force).\" },\n overwrite: {\n type: \"boolean\",\n description:\n \"module / model: with force, also replace files that differ from the output (--overwrite).\",\n },\n};\n\nconst FLAG_NAMES: Record<string, string> = {\n withValidation: \"with-validation\",\n withResource: \"with-resource\",\n table: \"table\",\n minimal: \"minimal\",\n noTimestamps: \"no-timestamps\",\n add: \"add\",\n drop: \"drop\",\n rename: \"rename\",\n force: \"force\",\n overwrite: \"overwrite\",\n};\n\n/** The generator spec a `generate_make` call describes. */\nexport function makeSpecFromInput(input: Record<string, unknown>): GeneratorSpec {\n const generator = stringArg(input, \"generator\");\n const name = stringArg(input, \"name\");\n\n if (!generator || !isMakeGenerator(generator) || !name) {\n throw new Error(\n `generate_make needs a generator (${MCP_MAKE_GENERATORS.join(\", \")}) and a name.`,\n );\n }\n\n const flags: Record<string, string | boolean> = {};\n\n for (const [key, flag] of Object.entries(FLAG_NAMES)) {\n const value = input[key];\n\n if (value === true) flags[flag] = true;\n if (typeof value === \"string\" && value.length > 0) flags[flag] = value;\n }\n\n return {\n type: \"make\",\n generator,\n name,\n flags,\n };\n}\n\n/**\n * The tools `warlock mcp` serves. Read-only unless `context.allowWrites`:\n * generate tools then accept `write: true`; without it they only return the\n * diff a generator would produce.\n */\nexport function createWarlockMcpTools(context: WarlockMcpContext): WarlockMcpTool[] {\n const tools: WarlockMcpTool[] = [\n {\n name: \"inspect_app\",\n description:\n \"Summary of the app: name, version, Node, environment, how many routes/models/resources/config keys/events/pages/jobs/schedules/packages it has, and inspect warnings (WL codes for modules that failed to load). Start here, then call the inspect_<section> tool you need. Read-only.\",\n input: inputSchema({}),\n writes: false,\n async run() {\n const report = await context.inspect(INSPECT_SECTIONS);\n const counts = Object.fromEntries(\n INSPECT_SECTIONS.map((section) => [section, report[section]?.length ?? 0]),\n );\n\n return {\n schemaVersion: report.schemaVersion,\n app: report.app,\n counts,\n warnings: report.warnings,\n };\n },\n },\n ...INSPECT_SECTIONS.map((section) => inspectSectionTool(context, section)),\n {\n name: \"db_schema\",\n description:\n \"The database schema the app's models declare: one entry per table with columns (type, required, primary key, foreign key of belongsTo relations), relations, timestamp columns and delete strategy. Built from the models' Seal schemas — no database connection is opened, so migration-only columns are not listed. Read-only.\",\n input: inputSchema({\n model: { type: \"string\", description: \"Only this model (class name) or table.\" },\n }),\n writes: false,\n async run(input) {\n const report = await context.inspect([\"models\"]);\n\n return buildDbSchema(report.models ?? [], stringArg(input, \"model\"));\n },\n },\n {\n name: \"docs_search\",\n description:\n \"Search the documentation of the @warlock.js packages INSTALLED in this app (their skills, README and llms files under node_modules) — offline, so answers match the installed versions. Returns ranked sections with the file, heading, line and an excerpt; read a whole skill with docs_read. Read-only.\",\n input: inputSchema(\n {\n query: {\n type: \"string\",\n description: \"Words to look for, e.g. 'validation schema file upload'.\",\n },\n limit: {\n type: \"integer\",\n description: \"Maximum hits (default 8).\",\n minimum: 1,\n maximum: 25,\n },\n package: {\n type: \"string\",\n description: \"Only this package, e.g. '@warlock.js/cascade'.\",\n },\n },\n [\"query\"],\n ),\n writes: false,\n async run(input) {\n const corpus = await context.docs();\n const query = stringArg(input, \"query\") ?? \"\";\n\n return {\n query,\n files: corpus.files.length,\n hits: searchDocs(corpus, query, {\n limit: integerArg(input, \"limit\", 8),\n package: stringArg(input, \"package\"),\n }),\n };\n },\n },\n {\n name: \"docs_read\",\n description:\n \"Read one file returned by docs_search (a skill, README or llms file of an installed @warlock.js package), whole or one section by its heading. Only files of that corpus can be read. Read-only.\",\n input: inputSchema(\n {\n file: { type: \"string\", description: \"The `file` of a docs_search hit.\" },\n heading: { type: \"string\", description: \"Only the section with this exact heading.\" },\n },\n [\"file\"],\n ),\n writes: false,\n async run(input) {\n const corpus = await context.docs();\n const file = stringArg(input, \"file\") ?? \"\";\n const found = readDocsFile(corpus, context.cwd, file, {\n heading: stringArg(input, \"heading\"),\n });\n\n if (!found)\n throw new Error(\n `\"${file}\" is not an installed docs file (or has no such heading). Use docs_search first.`,\n );\n\n return found;\n },\n },\n {\n name: \"explain\",\n description:\n \"Explain a stable Warlock error code (WL3001, WL7301, WL8003, …): what it means, whether it is your code or this machine, the one-line fix, the skill that covers it and its docs link. Without a code, lists every code. Read-only.\",\n input: inputSchema({ code: { type: \"string\", description: \"The code, e.g. WL3001.\" } }),\n writes: false,\n async run(input) {\n const code = stringArg(input, \"code\");\n\n if (!code) {\n return Object.values(ERROR_CODES).map((definition) => ({\n code: definition.code,\n title: definition.title,\n category: definition.category,\n }));\n }\n\n const definition = explainErrorCode(code);\n\n if (!definition)\n throw new Error(\n `Unknown error code \"${code}\". Call explain without a code to list them.`,\n );\n\n return {\n ...definition,\n docs: isWarlockErrorCode(definition.code) ? errorCodeDocsUrl(definition.code) : null,\n };\n },\n },\n {\n name: \"check_run\",\n description:\n \"Run `warlock check`: typecheck, lint, the affected tests and the framework convention checks, as one report with one problem per entry (stable WL code, file:line, fix hint, skill). exitCode 1 means your code, 2 means this machine (missing service, Node version, crashed tool) — do not edit code for a 2. Use changed: true while iterating. Does not write project files.\",\n input: inputSchema({\n changed: {\n type: \"boolean\",\n description: \"Only the files changed against HEAD (plus untracked) and what they affect.\",\n },\n base: {\n type: \"string\",\n description: \"Compare with the merge base of this git ref instead (implies changed).\",\n },\n skip: {\n type: \"array\",\n description: \"Steps to skip.\",\n items: { type: \"string\", enum: CHECK_STEPS },\n },\n }),\n writes: false,\n async run(input) {\n const skip = (stringsArg(input, \"skip\") ?? []).filter((step): step is CheckStepName =>\n (CHECK_STEPS as readonly string[]).includes(step),\n );\n\n return context.check({\n changed: booleanArg(input, \"changed\"),\n base: stringArg(input, \"base\"),\n skip,\n });\n },\n },\n {\n name: \"test_run\",\n description:\n \"Run the app's vitest tests: given test files run as they are; given source files, the tests that import them run (vitest related); changed: true runs the tests related to the files changed in git; neither runs the whole suite. Returns totals and one problem per failure (WL7301 failed test, WL7302 file failed to load, WL8xxx this machine). Does not write project files.\",\n input: inputSchema({\n files: {\n type: \"array\",\n description: \"Project-relative files (tests or sources).\",\n items: { type: \"string\" },\n },\n changed: {\n type: \"boolean\",\n description: \"The tests related to the files changed against HEAD.\",\n },\n base: {\n type: \"string\",\n description: \"With changed: compare with the merge base of this ref.\",\n },\n }),\n writes: false,\n async run(input) {\n return context.tests({\n files: stringsArg(input, \"files\"),\n changed: booleanArg(input, \"changed\"),\n base: stringArg(input, \"base\"),\n });\n },\n },\n {\n name: \"requests_recent\",\n description:\n \"The most recent HTTP requests the running dev server handled, from @warlock.js/devtools (needs `warlock dev` with devtools installed): method, path, matched route, status, duration, and — with details — the phase timeline (route match, each middleware, validation, handler), every query with its duration and an nPlusOne flag, N+1 warnings, logs, cache operations and captured mails. Request and response bodies are not recorded by devtools; use `warlock trace` for those. Read-only.\",\n input: inputSchema({\n limit: {\n type: \"integer\",\n description: \"How many requests (default 10, newest first).\",\n minimum: 1,\n maximum: 50,\n },\n method: { type: \"string\", description: \"Only this HTTP method.\" },\n path: { type: \"string\", description: \"Only paths containing this text.\" },\n status: {\n type: \"integer\",\n description: \"Only this response status.\",\n minimum: 100,\n maximum: 599,\n },\n details: {\n type: \"boolean\",\n description: \"Include the full timeline of each request (default true).\",\n },\n }),\n writes: false,\n async run(input) {\n const devtools = await context.devtools();\n const method = stringArg(input, \"method\")?.toUpperCase();\n const pathFilter = stringArg(input, \"path\");\n const status = typeof input.status === \"number\" ? input.status : undefined;\n const details = input.details !== false;\n const summaries = (await devtools.listRequests())\n .filter(\n (summary) =>\n (!method || summary.method === method) &&\n (!pathFilter || summary.path.includes(pathFilter)) &&\n (status === undefined || summary.status === status),\n )\n .sort((first, second) => second.startedAt - first.startedAt)\n .slice(0, integerArg(input, \"limit\", 10));\n const requests = [];\n\n for (const summary of summaries) {\n requests.push(\n summarizeRequest(summary, details ? await devtools.getRequest(summary.id) : undefined),\n );\n }\n\n return { devtools: { url: devtools.url, path: devtools.devtoolsPath }, requests };\n },\n },\n {\n name: \"generate_make\",\n description: `Run a \\`warlock generate.<generator>\\` scaffold (${MCP_MAKE_GENERATORS.join(\", \")}) and return the unified diff of every file it would create or change. By default nothing in the project is written: the generator runs in a throw-away copy.${context.allowWrites ? \" Pass write: true to write the files into the project.\" : \" This server is read-only (no --allow-writes).\"} Names are module/name for everything but module (e.g. posts/create-post) and the model path for migration.`,\n input: inputSchema(\n {\n generator: { type: \"string\", description: \"Which generator.\", enum: MCP_MAKE_GENERATORS },\n name: {\n type: \"string\",\n description:\n \"The generator's argument: `posts` for module, `posts/create-post` for the others, the model path for migration.\",\n },\n ...MAKE_FLAGS,\n ...(context.allowWrites ? writeProperty() : {}),\n },\n [\"generator\", \"name\"],\n ),\n writes: context.allowWrites,\n precheck: refuseWrite(context),\n async run(input) {\n const spec = makeSpecFromInput(input);\n\n return input.write === true\n ? context.generation.apply(spec)\n : context.generation.plan(spec);\n },\n },\n {\n name: \"generate_add\",\n description: `Run \\`warlock add <features…>\\` (an installable framework feature: a database driver, queue, web, devtools, …) and return the unified diff of every file it would create or change, package.json included. Dependencies are recorded, never installed, in the preview.${context.allowWrites ? \" Pass write: true to apply it to the project (this installs the dependencies).\" : \" This server is read-only (no --allow-writes).\"}`,\n input: inputSchema(\n {\n features: {\n type: \"array\",\n description: \"Feature names, e.g. ['devtools'].\",\n items: context.features?.length\n ? { type: \"string\", enum: context.features }\n : { type: \"string\" },\n },\n ...(context.allowWrites ? writeProperty() : {}),\n },\n [\"features\"],\n ),\n writes: context.allowWrites,\n precheck: refuseWrite(context),\n async run(input) {\n const features = stringsArg(input, \"features\") ?? [];\n\n if (features.length === 0) throw new Error(\"generate_add needs at least one feature name.\");\n\n const spec: GeneratorSpec = { type: \"add\", features };\n\n return input.write === true\n ? context.generation.apply(spec)\n : context.generation.plan(spec);\n },\n },\n ];\n\n return tools;\n}\n\n/** The message a tool failure reaches the client with: code, message and the fix. */\nexport function describeToolError(error: unknown): string {\n if (error instanceof WarlockError) {\n return `${error.code}: ${error.message} Fix: ${ERROR_CODES[error.code].fix}`;\n }\n\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { WarlockMcpContext, WarlockMcpTool } from "./mcp-tools.mjs";
|
|
2
|
+
import { AiToolsServeModule, ServeToolContract, ServeTransportOptions } from "./load-ai-tools.mjs";
|
|
3
|
+
//#region ../../packages/core/src/tooling/mcp/start-mcp-server.d.ts
|
|
4
|
+
/** Where the server listens. */
|
|
5
|
+
export type WarlockMcpTransport = {
|
|
6
|
+
type: "stdio";
|
|
7
|
+
} | {
|
|
8
|
+
type: "http";
|
|
9
|
+
/** Default `127.0.0.1`. Any other host requires `token`. */
|
|
10
|
+
host?: string;
|
|
11
|
+
/** Default `0` (a free port; read it from the returned `url`). */
|
|
12
|
+
port?: number;
|
|
13
|
+
/** Default `/mcp`. */
|
|
14
|
+
path?: string;
|
|
15
|
+
/** Bearer token clients must send (`Authorization: Bearer <token>`). */
|
|
16
|
+
token?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Options of {@link startWarlockMcpServer}. */
|
|
19
|
+
export type StartWarlockMcpServerOptions = {
|
|
20
|
+
context: WarlockMcpContext;
|
|
21
|
+
/** Default `{ type: "stdio" }`. */
|
|
22
|
+
transport?: WarlockMcpTransport;
|
|
23
|
+
/** Advertised in `initialize`. Default `"warlock"`. */
|
|
24
|
+
name?: string;
|
|
25
|
+
version?: string;
|
|
26
|
+
/** How `@warlock.js/ai-tools` is loaded (tests inject it). */
|
|
27
|
+
loadServe?: () => Promise<AiToolsServeModule>;
|
|
28
|
+
};
|
|
29
|
+
/** A running server. */
|
|
30
|
+
export type WarlockMcpServerHandle = {
|
|
31
|
+
/** The endpoint (HTTP only), e.g. `http://127.0.0.1:53211/mcp`. */
|
|
32
|
+
url?: string;
|
|
33
|
+
/** The exposed tool names. */
|
|
34
|
+
tools: string[];
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
};
|
|
37
|
+
/** Whether a bind host is loopback-only. */
|
|
38
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
39
|
+
/** Resolve the transport, refusing a non-loopback bind without a token (`WL7004`). */
|
|
40
|
+
export declare function resolveMcpTransport(transport?: WarlockMcpTransport): ServeTransportOptions;
|
|
41
|
+
/**
|
|
42
|
+
* Turn a Warlock tool into the contract `ai.mcp.serve` runs: arguments are
|
|
43
|
+
* prechecked (a write on a read-only server), validated against the advertised
|
|
44
|
+
* schema, then run; a failure becomes an `isError` result carrying the WL code
|
|
45
|
+
* and its fix, never a crashed server.
|
|
46
|
+
*/
|
|
47
|
+
export declare function toServeContract(tool: WarlockMcpTool): ServeToolContract;
|
|
48
|
+
/**
|
|
49
|
+
* Serve the app's tools over MCP — stdio by default, or Streamable HTTP
|
|
50
|
+
* through `@warlock.js/ai-tools` (loopback by default; a token is required off
|
|
51
|
+
* loopback). Read-only unless `context.allowWrites`.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* const server = await startWarlockMcpServer({
|
|
55
|
+
* context,
|
|
56
|
+
* transport: { type: "http", token: process.env.WARLOCK_MCP_TOKEN },
|
|
57
|
+
* });
|
|
58
|
+
* console.error(`MCP at ${server.url}`);
|
|
59
|
+
* await server.close();
|
|
60
|
+
*/
|
|
61
|
+
export declare function startWarlockMcpServer(options: StartWarlockMcpServerOptions): Promise<WarlockMcpServerHandle>;
|
|
62
|
+
//#endregion
|
|
63
|
+
//# sourceMappingURL=start-mcp-server.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-mcp-server.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/mcp/start-mcp-server.ts"],"mappings":";;;;YAgBY;EACN;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;YAIM;EACV,SAAS;;EAET,YAAY;;EAEZ;EACA;;EAEA,kBAAkB,QAAQ;;;YAIhB;;EAEV;;EAEA;EACA,SAAS;;;wBAMK,eAAe;;wBAKf,oBACd,YAAW,sBACV;;;;;;;wBAkDa,gBAAgB,MAAM,iBAAiB;;;;;;;;;;;;;;wBAgDjC,sBACpB,SAAS,+BACR,QAAQ"}
|