@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,195 @@
|
|
|
1
|
+
import { shortSkillLine } from "./installed-skills.mjs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { readdirSync } from "node:fs";
|
|
4
|
+
|
|
5
|
+
//#region ../../packages/core/src/tooling/agents-md/render-agents-md.ts
|
|
6
|
+
/** Methods that change state; one of these without an auth guard is flagged. */
|
|
7
|
+
const MUTATING_METHODS = /* @__PURE__ */ new Set([
|
|
8
|
+
"POST",
|
|
9
|
+
"PUT",
|
|
10
|
+
"PATCH",
|
|
11
|
+
"DELETE"
|
|
12
|
+
]);
|
|
13
|
+
/** Fixed method order for the per-method counts. */
|
|
14
|
+
const METHOD_ORDER = [
|
|
15
|
+
"GET",
|
|
16
|
+
"POST",
|
|
17
|
+
"PUT",
|
|
18
|
+
"PATCH",
|
|
19
|
+
"DELETE",
|
|
20
|
+
"HEAD",
|
|
21
|
+
"OPTIONS"
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* The module folders under `<cwd>/src/app`, sorted. Empty when there is none.
|
|
25
|
+
*
|
|
26
|
+
* @param cwd The project root.
|
|
27
|
+
*/
|
|
28
|
+
function listAppModules(cwd) {
|
|
29
|
+
try {
|
|
30
|
+
return readdirSync(path.join(cwd, "src", "app"), { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort();
|
|
31
|
+
} catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** The module a project-relative source path belongs to (`src/app/<module>/…`). */
|
|
36
|
+
function moduleOf(file) {
|
|
37
|
+
return file ? /^src\/app\/([^/]+)\//.exec(file.split("\\").join("/"))?.[1] : void 0;
|
|
38
|
+
}
|
|
39
|
+
function compare(first, second) {
|
|
40
|
+
return first < second ? -1 : first > second ? 1 : 0;
|
|
41
|
+
}
|
|
42
|
+
function isUnguardedWrite(route) {
|
|
43
|
+
return MUTATING_METHODS.has(route.method.toUpperCase()) && !route.auth.required && !route.isPage;
|
|
44
|
+
}
|
|
45
|
+
function routeLine(route) {
|
|
46
|
+
const guard = route.auth.required ? " [auth]" : "";
|
|
47
|
+
const name = route.name ? ` ${route.name}` : "";
|
|
48
|
+
return `- \`${route.method} ${route.path}\`${guard}${name}`;
|
|
49
|
+
}
|
|
50
|
+
function sortRoutes(routes) {
|
|
51
|
+
return [...routes].sort((first, second) => compare(first.path, second.path) || METHOD_ORDER.indexOf(first.method) - METHOD_ORDER.indexOf(second.method) || compare(first.method, second.method));
|
|
52
|
+
}
|
|
53
|
+
function appSection(report) {
|
|
54
|
+
const lines = [`## ${report.app.name ?? "This app"}${report.app.version ? ` ${report.app.version}` : ""} — generated facts`, ""];
|
|
55
|
+
const packages = [...report.packages ?? []].sort((first, second) => compare(first.name, second.name));
|
|
56
|
+
if (packages.length > 0) lines.push(`Warlock packages: ${packages.map((entry) => `\`${entry.name}@${entry.version}\``).join(", ")}.`, "");
|
|
57
|
+
return lines;
|
|
58
|
+
}
|
|
59
|
+
function modulesSection(report, extra) {
|
|
60
|
+
const routeCounts = /* @__PURE__ */ new Map();
|
|
61
|
+
const modelCounts = /* @__PURE__ */ new Map();
|
|
62
|
+
for (const route of report.routes ?? []) {
|
|
63
|
+
const module = moduleOf(route.sourceFile);
|
|
64
|
+
if (module) routeCounts.set(module, (routeCounts.get(module) ?? 0) + 1);
|
|
65
|
+
}
|
|
66
|
+
for (const model of report.models ?? []) {
|
|
67
|
+
const module = moduleOf(model.sourceFile);
|
|
68
|
+
if (module) modelCounts.set(module, (modelCounts.get(module) ?? 0) + 1);
|
|
69
|
+
}
|
|
70
|
+
const modules = [.../* @__PURE__ */ new Set([
|
|
71
|
+
...extra,
|
|
72
|
+
...routeCounts.keys(),
|
|
73
|
+
...modelCounts.keys()
|
|
74
|
+
])].sort();
|
|
75
|
+
if (modules.length === 0) return [];
|
|
76
|
+
return [
|
|
77
|
+
"### Modules",
|
|
78
|
+
"",
|
|
79
|
+
"Each lives in `src/app/<module>/`.",
|
|
80
|
+
"",
|
|
81
|
+
"| Module | Routes | Models |",
|
|
82
|
+
"| ------ | ------ | ------ |",
|
|
83
|
+
...modules.map((module) => `| \`${module}\` | ${routeCounts.get(module) ?? 0} | ${modelCounts.get(module) ?? 0} |`),
|
|
84
|
+
""
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
function routesSection(report, maxRoutes) {
|
|
88
|
+
const routes = sortRoutes(report.routes ?? []);
|
|
89
|
+
if (routes.length === 0) return [];
|
|
90
|
+
const counts = /* @__PURE__ */ new Map();
|
|
91
|
+
for (const route of routes) counts.set(route.method, (counts.get(route.method) ?? 0) + 1);
|
|
92
|
+
const methods = [...counts.keys()].sort((first, second) => (METHOD_ORDER.indexOf(first) + 1 || 99) - (METHOD_ORDER.indexOf(second) + 1 || 99) || compare(first, second));
|
|
93
|
+
const unguarded = routes.filter(isUnguardedWrite);
|
|
94
|
+
const lines = [
|
|
95
|
+
"### Routes",
|
|
96
|
+
"",
|
|
97
|
+
`${routes.length} route(s): ${methods.map((method) => `${counts.get(method) ?? 0} ${method}`).join(", ")}.`,
|
|
98
|
+
""
|
|
99
|
+
];
|
|
100
|
+
if (unguarded.length > 0) lines.push(`Mutating routes without an auth guard (confirm each is meant to be public): ${unguarded.map((route) => `\`${route.method} ${route.path}\``).join(", ")}.`, "");
|
|
101
|
+
lines.push(...routes.slice(0, maxRoutes).map(routeLine));
|
|
102
|
+
if (routes.length > maxRoutes) lines.push(`- +${routes.length - maxRoutes} more — run \`npx warlock inspect --json --section routes\``);
|
|
103
|
+
lines.push("");
|
|
104
|
+
return lines;
|
|
105
|
+
}
|
|
106
|
+
function modelsSection(report) {
|
|
107
|
+
const models = [...report.models ?? []].sort((first, second) => compare(first.name, second.name));
|
|
108
|
+
if (models.length === 0) return [];
|
|
109
|
+
return [
|
|
110
|
+
"### Models",
|
|
111
|
+
"",
|
|
112
|
+
...models.map((model) => {
|
|
113
|
+
const module = moduleOf(model.sourceFile);
|
|
114
|
+
const table = model.table ? ` → \`${model.table}\`` : "";
|
|
115
|
+
return `- \`${model.name}\`${table}${module ? ` (module \`${module}\`)` : ""}`;
|
|
116
|
+
}),
|
|
117
|
+
""
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
/** The rules `warlock check` enforces (WL9001–WL9012) and the layout every skill assumes. */
|
|
121
|
+
const CONVENTIONS = [
|
|
122
|
+
"- Features live in `src/app/<module>/`; flow is one-way: `routes.ts` → controllers → services → repositories → models. Resources only map output.",
|
|
123
|
+
"- Never import auto-loaded files: `src/app/main.ts`, `src/app/<module>/routes.ts`, `main.ts`, `worker.ts`, `events/*.ts` (`WL9001`).",
|
|
124
|
+
"- No `.js` extensions in import paths (`WL9002`).",
|
|
125
|
+
"- Cross-module imports use the `app/<module>/...` alias, not `../../` (`WL9003`); relative paths stay inside a module.",
|
|
126
|
+
"- Cascade uses standard decorators: never set `\"experimentalDecorators\": true` (`WL9004`).",
|
|
127
|
+
"- Controllers are thin and read input with `request.validated()`, never `request.all()` (`WL9005`); schemas live in `schema/<action>.schema.ts` and export the value and its `Infer` type. One controller per file (`WL9011`).",
|
|
128
|
+
"- Every POST/PUT/PATCH/DELETE route is inside `guarded()` (or has auth middleware) or says `public: true` (`WL9006`).",
|
|
129
|
+
"- Redirect targets from request input go through `safeRedirect()` / `safeRedirectTarget()` (`WL9007`); logs never carry raw emails, credentials or request bodies (`WL9008`); regexes run on request input have bounded quantifiers (`WL9009`).",
|
|
130
|
+
"- Import each API from its home package: `v` from `@warlock.js/seal`, `Model` from `@warlock.js/cascade`, `router` from `@warlock.js/core`."
|
|
131
|
+
];
|
|
132
|
+
function skillsSection(skills) {
|
|
133
|
+
if (skills.length === 0) return [];
|
|
134
|
+
const byPackage = /* @__PURE__ */ new Map();
|
|
135
|
+
for (const skill of skills) byPackage.set(skill.package, [...byPackage.get(skill.package) ?? [], skill]);
|
|
136
|
+
const lines = [
|
|
137
|
+
"### Skills",
|
|
138
|
+
"",
|
|
139
|
+
"Installed with the packages, at `node_modules/<package>/skills/<slug>/SKILL.md`. Read the matching one before changing that area.",
|
|
140
|
+
""
|
|
141
|
+
];
|
|
142
|
+
for (const packageName of [...byPackage.keys()].sort()) {
|
|
143
|
+
lines.push(`**${packageName}**`, "");
|
|
144
|
+
const entries = [...byPackage.get(packageName) ?? []].sort((first, second) => compare(first.slug, second.slug));
|
|
145
|
+
for (const skill of entries) {
|
|
146
|
+
const line = shortSkillLine(skill.description);
|
|
147
|
+
lines.push(`- \`${skill.slug}\`${line ? ` — ${line}` : ""}`);
|
|
148
|
+
}
|
|
149
|
+
lines.push("");
|
|
150
|
+
}
|
|
151
|
+
return lines;
|
|
152
|
+
}
|
|
153
|
+
const VERIFY = [
|
|
154
|
+
"### Verify a change",
|
|
155
|
+
"",
|
|
156
|
+
"- `npx warlock check --changed --json` — typecheck, lint, affected tests and conventions; exit 1 = your code, 2 = this machine.",
|
|
157
|
+
"- `npx warlock inspect --json` — routes, models, config keys, events, pages, jobs from the booted app.",
|
|
158
|
+
"- `npx warlock explain <code>` — what a `WLxxxx` code means and how to fix it.",
|
|
159
|
+
"- `npx warlock trace <method> <url> --json` — send a request to the running `warlock dev` and print its devtools timeline.",
|
|
160
|
+
"- `npx warlock mcp` — the same facts and actions as an MCP server.",
|
|
161
|
+
""
|
|
162
|
+
];
|
|
163
|
+
/**
|
|
164
|
+
* Render the app-specific AGENTS.md section from an inspect report: the app
|
|
165
|
+
* and its Warlock packages, modules, a routes summary (unguarded writes
|
|
166
|
+
* flagged), models, the conventions `warlock check` enforces, the installed
|
|
167
|
+
* skills and the verify commands.
|
|
168
|
+
*
|
|
169
|
+
* Deterministic: no timestamps and stable ordering, so regenerating an
|
|
170
|
+
* unchanged app yields the same bytes and `writeAgentsMd` writes nothing.
|
|
171
|
+
* Returned without the markers.
|
|
172
|
+
*
|
|
173
|
+
* @param report An `inspectApp()` report (routes, models and packages are read when present).
|
|
174
|
+
* @param options Skills and module folders to include.
|
|
175
|
+
*/
|
|
176
|
+
function renderAgentsMdSection(report, options = {}) {
|
|
177
|
+
return `${[
|
|
178
|
+
"<!-- Generated by `warlock agents-md` and refreshed by `warlock dev`. Write your own notes outside the warlock:generated markers; everything between them is replaced. -->",
|
|
179
|
+
"",
|
|
180
|
+
...appSection(report),
|
|
181
|
+
...modulesSection(report, options.modules ?? []),
|
|
182
|
+
...routesSection(report, options.maxRoutes ?? 60),
|
|
183
|
+
...modelsSection(report),
|
|
184
|
+
"### Conventions in force",
|
|
185
|
+
"",
|
|
186
|
+
...CONVENTIONS,
|
|
187
|
+
"",
|
|
188
|
+
...skillsSection(options.skills ?? []),
|
|
189
|
+
...VERIFY
|
|
190
|
+
].join("\n").replace(/\n+$/, "")}\n`;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
//#endregion
|
|
194
|
+
export { listAppModules, renderAgentsMdSection };
|
|
195
|
+
//# sourceMappingURL=render-agents-md.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-agents-md.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/agents-md/render-agents-md.ts"],"sourcesContent":["import { readdirSync } from \"node:fs\";\nimport path from \"node:path\";\nimport type { InspectReport, InspectRoute } from \"../inspect/inspect-report.types\";\nimport { type InstalledSkill, shortSkillLine } from \"./installed-skills\";\n\n/** Options of {@link renderAgentsMdSection}. */\nexport type RenderAgentsMdOptions = {\n /** Installed skills to list (see `listInstalledSkills`). Default: none listed. */\n skills?: readonly InstalledSkill[];\n /** Module folder names under `src/app` (see `listAppModules`); merged with the ones routes and models name. */\n modules?: readonly string[];\n /** How many routes the compact list shows before pointing at `warlock inspect`. Default: 60. */\n maxRoutes?: number;\n};\n\n/** Methods that change state; one of these without an auth guard is flagged. */\nconst MUTATING_METHODS = new Set([\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]);\n\n/** Fixed method order for the per-method counts. */\nconst METHOD_ORDER = [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\", \"OPTIONS\"];\n\n/**\n * The module folders under `<cwd>/src/app`, sorted. Empty when there is none.\n *\n * @param cwd The project root.\n */\nexport function listAppModules(cwd: string): string[] {\n try {\n return readdirSync(path.join(cwd, \"src\", \"app\"), { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort();\n } catch {\n return [];\n }\n}\n\n/** The module a project-relative source path belongs to (`src/app/<module>/…`). */\nfunction moduleOf(file: string | null): string | undefined {\n return file ? /^src\\/app\\/([^/]+)\\//.exec(file.split(\"\\\\\").join(\"/\"))?.[1] : undefined;\n}\n\nfunction compare(first: string, second: string): number {\n return first < second ? -1 : first > second ? 1 : 0;\n}\n\nfunction isUnguardedWrite(route: InspectRoute): boolean {\n return MUTATING_METHODS.has(route.method.toUpperCase()) && !route.auth.required && !route.isPage;\n}\n\nfunction routeLine(route: InspectRoute): string {\n const guard = route.auth.required ? \" [auth]\" : \"\";\n const name = route.name ? ` ${route.name}` : \"\";\n\n return `- \\`${route.method} ${route.path}\\`${guard}${name}`;\n}\n\nfunction sortRoutes(routes: readonly InspectRoute[]): InspectRoute[] {\n return [...routes].sort(\n (first, second) =>\n compare(first.path, second.path) ||\n METHOD_ORDER.indexOf(first.method) - METHOD_ORDER.indexOf(second.method) ||\n compare(first.method, second.method),\n );\n}\n\nfunction appSection(report: InspectReport): string[] {\n const name = report.app.name ?? \"This app\";\n const version = report.app.version ? ` ${report.app.version}` : \"\";\n const lines = [`## ${name}${version} — generated facts`, \"\"];\n const packages = [...(report.packages ?? [])].sort((first, second) =>\n compare(first.name, second.name),\n );\n\n if (packages.length > 0) {\n lines.push(\n `Warlock packages: ${packages.map((entry) => `\\`${entry.name}@${entry.version}\\``).join(\", \")}.`,\n \"\",\n );\n }\n\n return lines;\n}\n\nfunction modulesSection(report: InspectReport, extra: readonly string[]): string[] {\n const routeCounts = new Map<string, number>();\n const modelCounts = new Map<string, number>();\n\n for (const route of report.routes ?? []) {\n const module = moduleOf(route.sourceFile);\n if (module) routeCounts.set(module, (routeCounts.get(module) ?? 0) + 1);\n }\n\n for (const model of report.models ?? []) {\n const module = moduleOf(model.sourceFile);\n if (module) modelCounts.set(module, (modelCounts.get(module) ?? 0) + 1);\n }\n\n const modules = [...new Set([...extra, ...routeCounts.keys(), ...modelCounts.keys()])].sort();\n\n if (modules.length === 0) return [];\n\n return [\n \"### Modules\",\n \"\",\n \"Each lives in `src/app/<module>/`.\",\n \"\",\n \"| Module | Routes | Models |\",\n \"| ------ | ------ | ------ |\",\n ...modules.map(\n (module) =>\n `| \\`${module}\\` | ${routeCounts.get(module) ?? 0} | ${modelCounts.get(module) ?? 0} |`,\n ),\n \"\",\n ];\n}\n\nfunction routesSection(report: InspectReport, maxRoutes: number): string[] {\n const routes = sortRoutes(report.routes ?? []);\n\n if (routes.length === 0) return [];\n\n const counts = new Map<string, number>();\n\n for (const route of routes) {\n counts.set(route.method, (counts.get(route.method) ?? 0) + 1);\n }\n\n const methods = [...counts.keys()].sort(\n (first, second) =>\n (METHOD_ORDER.indexOf(first) + 1 || 99) - (METHOD_ORDER.indexOf(second) + 1 || 99) ||\n compare(first, second),\n );\n const unguarded = routes.filter(isUnguardedWrite);\n const lines = [\n \"### Routes\",\n \"\",\n `${routes.length} route(s): ${methods.map((method) => `${counts.get(method) ?? 0} ${method}`).join(\", \")}.`,\n \"\",\n ];\n\n if (unguarded.length > 0) {\n lines.push(\n `Mutating routes without an auth guard (confirm each is meant to be public): ${unguarded\n .map((route) => `\\`${route.method} ${route.path}\\``)\n .join(\", \")}.`,\n \"\",\n );\n }\n\n lines.push(...routes.slice(0, maxRoutes).map(routeLine));\n\n if (routes.length > maxRoutes) {\n lines.push(\n `- +${routes.length - maxRoutes} more — run \\`npx warlock inspect --json --section routes\\``,\n );\n }\n\n lines.push(\"\");\n\n return lines;\n}\n\nfunction modelsSection(report: InspectReport): string[] {\n const models = [...(report.models ?? [])].sort((first, second) =>\n compare(first.name, second.name),\n );\n\n if (models.length === 0) return [];\n\n return [\n \"### Models\",\n \"\",\n ...models.map((model) => {\n const module = moduleOf(model.sourceFile);\n const table = model.table ? ` → \\`${model.table}\\`` : \"\";\n\n return `- \\`${model.name}\\`${table}${module ? ` (module \\`${module}\\`)` : \"\"}`;\n }),\n \"\",\n ];\n}\n\n/** The rules `warlock check` enforces (WL9001–WL9012) and the layout every skill assumes. */\nconst CONVENTIONS = [\n \"- Features live in `src/app/<module>/`; flow is one-way: `routes.ts` → controllers → services → repositories → models. Resources only map output.\",\n \"- Never import auto-loaded files: `src/app/main.ts`, `src/app/<module>/routes.ts`, `main.ts`, `worker.ts`, `events/*.ts` (`WL9001`).\",\n \"- No `.js` extensions in import paths (`WL9002`).\",\n \"- Cross-module imports use the `app/<module>/...` alias, not `../../` (`WL9003`); relative paths stay inside a module.\",\n '- Cascade uses standard decorators: never set `\"experimentalDecorators\": true` (`WL9004`).',\n \"- Controllers are thin and read input with `request.validated()`, never `request.all()` (`WL9005`); schemas live in `schema/<action>.schema.ts` and export the value and its `Infer` type. One controller per file (`WL9011`).\",\n \"- Every POST/PUT/PATCH/DELETE route is inside `guarded()` (or has auth middleware) or says `public: true` (`WL9006`).\",\n \"- Redirect targets from request input go through `safeRedirect()` / `safeRedirectTarget()` (`WL9007`); logs never carry raw emails, credentials or request bodies (`WL9008`); regexes run on request input have bounded quantifiers (`WL9009`).\",\n \"- Import each API from its home package: `v` from `@warlock.js/seal`, `Model` from `@warlock.js/cascade`, `router` from `@warlock.js/core`.\",\n];\n\nfunction skillsSection(skills: readonly InstalledSkill[]): string[] {\n if (skills.length === 0) return [];\n\n const byPackage = new Map<string, InstalledSkill[]>();\n\n for (const skill of skills) {\n byPackage.set(skill.package, [...(byPackage.get(skill.package) ?? []), skill]);\n }\n\n const lines = [\n \"### Skills\",\n \"\",\n \"Installed with the packages, at `node_modules/<package>/skills/<slug>/SKILL.md`. Read the matching one before changing that area.\",\n \"\",\n ];\n\n for (const packageName of [...byPackage.keys()].sort()) {\n lines.push(`**${packageName}**`, \"\");\n\n const entries = [...(byPackage.get(packageName) ?? [])].sort((first, second) =>\n compare(first.slug, second.slug),\n );\n\n for (const skill of entries) {\n const line = shortSkillLine(skill.description);\n\n lines.push(`- \\`${skill.slug}\\`${line ? ` — ${line}` : \"\"}`);\n }\n\n lines.push(\"\");\n }\n\n return lines;\n}\n\nconst VERIFY = [\n \"### Verify a change\",\n \"\",\n \"- `npx warlock check --changed --json` — typecheck, lint, affected tests and conventions; exit 1 = your code, 2 = this machine.\",\n \"- `npx warlock inspect --json` — routes, models, config keys, events, pages, jobs from the booted app.\",\n \"- `npx warlock explain <code>` — what a `WLxxxx` code means and how to fix it.\",\n \"- `npx warlock trace <method> <url> --json` — send a request to the running `warlock dev` and print its devtools timeline.\",\n \"- `npx warlock mcp` — the same facts and actions as an MCP server.\",\n \"\",\n];\n\n/**\n * Render the app-specific AGENTS.md section from an inspect report: the app\n * and its Warlock packages, modules, a routes summary (unguarded writes\n * flagged), models, the conventions `warlock check` enforces, the installed\n * skills and the verify commands.\n *\n * Deterministic: no timestamps and stable ordering, so regenerating an\n * unchanged app yields the same bytes and `writeAgentsMd` writes nothing.\n * Returned without the markers.\n *\n * @param report An `inspectApp()` report (routes, models and packages are read when present).\n * @param options Skills and module folders to include.\n */\nexport function renderAgentsMdSection(\n report: InspectReport,\n options: RenderAgentsMdOptions = {},\n): string {\n const lines = [\n \"<!-- Generated by `warlock agents-md` and refreshed by `warlock dev`. Write your own notes outside the warlock:generated markers; everything between them is replaced. -->\",\n \"\",\n ...appSection(report),\n ...modulesSection(report, options.modules ?? []),\n ...routesSection(report, options.maxRoutes ?? 60),\n ...modelsSection(report),\n \"### Conventions in force\",\n \"\",\n ...CONVENTIONS,\n \"\",\n ...skillsSection(options.skills ?? []),\n ...VERIFY,\n ];\n\n return `${lines.join(\"\\n\").replace(/\\n+$/, \"\")}\\n`;\n}\n"],"mappings":";;;;;;AAgBA,MAAM,mCAAmB,IAAI,IAAI;CAAC;CAAQ;CAAO;CAAS;AAAQ,CAAC;;AAGnE,MAAM,eAAe;CAAC;CAAO;CAAQ;CAAO;CAAS;CAAU;CAAQ;AAAS;;;;;;AAOhF,SAAgB,eAAe,KAAuB;CACpD,IAAI;EACF,OAAO,YAAY,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG,EAAE,eAAe,KAAK,CAAC,CAAC,CACtE,QAAQ,UAAU,MAAM,YAAY,CAAC,CAAC,CACtC,KAAK,UAAU,MAAM,IAAI,CAAC,CAC1B,KAAK;CACV,QAAQ;EACN,OAAO,CAAC;CACV;AACF;;AAGA,SAAS,SAAS,MAAyC;CACzD,OAAO,OAAO,uBAAuB,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK;AAC/E;AAEA,SAAS,QAAQ,OAAe,QAAwB;CACtD,OAAO,QAAQ,SAAS,KAAK,QAAQ,SAAS,IAAI;AACpD;AAEA,SAAS,iBAAiB,OAA8B;CACtD,OAAO,iBAAiB,IAAI,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;AAC5F;AAEA,SAAS,UAAU,OAA6B;CAC9C,MAAM,QAAQ,MAAM,KAAK,WAAW,YAAY;CAChD,MAAM,OAAO,MAAM,OAAO,IAAI,MAAM,SAAS;CAE7C,OAAO,OAAO,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,QAAQ;AACvD;AAEA,SAAS,WAAW,QAAiD;CACnE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,MAChB,OAAO,WACN,QAAQ,MAAM,MAAM,OAAO,IAAI,KAC/B,aAAa,QAAQ,MAAM,MAAM,IAAI,aAAa,QAAQ,OAAO,MAAM,KACvE,QAAQ,MAAM,QAAQ,OAAO,MAAM,CACvC;AACF;AAEA,SAAS,WAAW,QAAiC;CAGnD,MAAM,QAAQ,CAAC,MAFF,OAAO,IAAI,QAAQ,aAChB,OAAO,IAAI,UAAU,IAAI,OAAO,IAAI,YAAY,GAC5B,qBAAqB,EAAE;CAC3D,MAAM,WAAW,CAAC,GAAI,OAAO,YAAY,CAAC,CAAE,CAAC,CAAC,MAAM,OAAO,WACzD,QAAQ,MAAM,MAAM,OAAO,IAAI,CACjC;CAEA,IAAI,SAAS,SAAS,GACpB,MAAM,KACJ,qBAAqB,SAAS,KAAK,UAAU,KAAK,MAAM,KAAK,GAAG,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,IAC9F,EACF;CAGF,OAAO;AACT;AAEA,SAAS,eAAe,QAAuB,OAAoC;CACjF,MAAM,8BAAc,IAAI,IAAoB;CAC5C,MAAM,8BAAc,IAAI,IAAoB;CAE5C,KAAK,MAAM,SAAS,OAAO,UAAU,CAAC,GAAG;EACvC,MAAM,SAAS,SAAS,MAAM,UAAU;EACxC,IAAI,QAAQ,YAAY,IAAI,SAAS,YAAY,IAAI,MAAM,KAAK,KAAK,CAAC;CACxE;CAEA,KAAK,MAAM,SAAS,OAAO,UAAU,CAAC,GAAG;EACvC,MAAM,SAAS,SAAS,MAAM,UAAU;EACxC,IAAI,QAAQ,YAAY,IAAI,SAAS,YAAY,IAAI,MAAM,KAAK,KAAK,CAAC;CACxE;CAEA,MAAM,UAAU,CAAC,mBAAG,IAAI,IAAI;EAAC,GAAG;EAAO,GAAG,YAAY,KAAK;EAAG,GAAG,YAAY,KAAK;CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;CAE5F,IAAI,QAAQ,WAAW,GAAG,OAAO,CAAC;CAElC,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,GAAG,QAAQ,KACR,WACC,OAAO,OAAO,OAAO,YAAY,IAAI,MAAM,KAAK,EAAE,KAAK,YAAY,IAAI,MAAM,KAAK,EAAE,GACxF;EACA;CACF;AACF;AAEA,SAAS,cAAc,QAAuB,WAA6B;CACzE,MAAM,SAAS,WAAW,OAAO,UAAU,CAAC,CAAC;CAE7C,IAAI,OAAO,WAAW,GAAG,OAAO,CAAC;CAEjC,MAAM,yBAAS,IAAI,IAAoB;CAEvC,KAAK,MAAM,SAAS,QAClB,OAAO,IAAI,MAAM,SAAS,OAAO,IAAI,MAAM,MAAM,KAAK,KAAK,CAAC;CAG9D,MAAM,UAAU,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,MAChC,OAAO,YACL,aAAa,QAAQ,KAAK,IAAI,KAAK,OAAO,aAAa,QAAQ,MAAM,IAAI,KAAK,OAC/E,QAAQ,OAAO,MAAM,CACzB;CACA,MAAM,YAAY,OAAO,OAAO,gBAAgB;CAChD,MAAM,QAAQ;EACZ;EACA;EACA,GAAG,OAAO,OAAO,aAAa,QAAQ,KAAK,WAAW,GAAG,OAAO,IAAI,MAAM,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE;EACzG;CACF;CAEA,IAAI,UAAU,SAAS,GACrB,MAAM,KACJ,+EAA+E,UAC5E,KAAK,UAAU,KAAK,MAAM,OAAO,GAAG,MAAM,KAAK,GAAG,CAAC,CACnD,KAAK,IAAI,EAAE,IACd,EACF;CAGF,MAAM,KAAK,GAAG,OAAO,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC;CAEvD,IAAI,OAAO,SAAS,WAClB,MAAM,KACJ,MAAM,OAAO,SAAS,UAAU,4DAClC;CAGF,MAAM,KAAK,EAAE;CAEb,OAAO;AACT;AAEA,SAAS,cAAc,QAAiC;CACtD,MAAM,SAAS,CAAC,GAAI,OAAO,UAAU,CAAC,CAAE,CAAC,CAAC,MAAM,OAAO,WACrD,QAAQ,MAAM,MAAM,OAAO,IAAI,CACjC;CAEA,IAAI,OAAO,WAAW,GAAG,OAAO,CAAC;CAEjC,OAAO;EACL;EACA;EACA,GAAG,OAAO,KAAK,UAAU;GACvB,MAAM,SAAS,SAAS,MAAM,UAAU;GACxC,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,MAAM,MAAM;GAEtD,OAAO,OAAO,MAAM,KAAK,IAAI,QAAQ,SAAS,cAAc,OAAO,OAAO;EAC5E,CAAC;EACD;CACF;AACF;;AAGA,MAAM,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,cAAc,QAA6C;CAClE,IAAI,OAAO,WAAW,GAAG,OAAO,CAAC;CAEjC,MAAM,4BAAY,IAAI,IAA8B;CAEpD,KAAK,MAAM,SAAS,QAClB,UAAU,IAAI,MAAM,SAAS,CAAC,GAAI,UAAU,IAAI,MAAM,OAAO,KAAK,CAAC,GAAI,KAAK,CAAC;CAG/E,MAAM,QAAQ;EACZ;EACA;EACA;EACA;CACF;CAEA,KAAK,MAAM,eAAe,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;EACtD,MAAM,KAAK,KAAK,YAAY,KAAK,EAAE;EAEnC,MAAM,UAAU,CAAC,GAAI,UAAU,IAAI,WAAW,KAAK,CAAC,CAAE,CAAC,CAAC,MAAM,OAAO,WACnE,QAAQ,MAAM,MAAM,OAAO,IAAI,CACjC;EAEA,KAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,OAAO,eAAe,MAAM,WAAW;GAE7C,MAAM,KAAK,OAAO,MAAM,KAAK,IAAI,OAAO,MAAM,SAAS,IAAI;EAC7D;EAEA,MAAM,KAAK,EAAE;CACf;CAEA,OAAO;AACT;AAEA,MAAM,SAAS;CACb;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;;;;;;;;;AAeA,SAAgB,sBACd,QACA,UAAiC,CAAC,GAC1B;CAgBR,OAAO,GAAG;EAdR;EACA;EACA,GAAG,WAAW,MAAM;EACpB,GAAG,eAAe,QAAQ,QAAQ,WAAW,CAAC,CAAC;EAC/C,GAAG,cAAc,QAAQ,QAAQ,aAAa,EAAE;EAChD,GAAG,cAAc,MAAM;EACvB;EACA;EACA,GAAG;EACH;EACA,GAAG,cAAc,QAAQ,UAAU,CAAC,CAAC;EACrC,GAAG;CAGS,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,QAAQ,EAAE,EAAE;AACjD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { InspectReport } from "../inspect/inspect-report.types.mjs";
|
|
2
|
+
import { InstalledSkill } from "./installed-skills.mjs";
|
|
3
|
+
//#region ../../packages/core/src/tooling/agents-md/write-agents-md.d.ts
|
|
4
|
+
/** What {@link writeAgentsMd} did. */
|
|
5
|
+
export type AgentsMdWriteStatus = "created" | "updated" | "unchanged" | "skipped";
|
|
6
|
+
/** Options of {@link writeAgentsMd}. */
|
|
7
|
+
export type WriteAgentsMdOptions = {
|
|
8
|
+
/** Project root. Default: `process.cwd()`. */
|
|
9
|
+
cwd?: string;
|
|
10
|
+
/** The inspect report to render. */
|
|
11
|
+
report: InspectReport;
|
|
12
|
+
/** Create AGENTS.md when it does not exist. Default: `true`; `false` reports `skipped`. */
|
|
13
|
+
create?: boolean;
|
|
14
|
+
/** Skills to list. Default: `listInstalledSkills(cwd)`. */
|
|
15
|
+
skills?: readonly InstalledSkill[];
|
|
16
|
+
/** Module folders. Default: `listAppModules(cwd)`. */
|
|
17
|
+
modules?: readonly string[];
|
|
18
|
+
};
|
|
19
|
+
/** The result of {@link writeAgentsMd}. */
|
|
20
|
+
export type WriteAgentsMdResult = {
|
|
21
|
+
/** Absolute path of AGENTS.md. */
|
|
22
|
+
file: string;
|
|
23
|
+
status: AgentsMdWriteStatus;
|
|
24
|
+
/** The generated section, without markers. */
|
|
25
|
+
section: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Render the generated section and put it between the markers of
|
|
29
|
+
* `<cwd>/AGENTS.md`, preserving every byte outside them. Writes only when the
|
|
30
|
+
* content changed (atomically: temp file + rename). Throws `WL7501` on
|
|
31
|
+
* malformed markers, before writing anything.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const { status } = writeAgentsMd({ report: await inspectApp() });
|
|
35
|
+
*/
|
|
36
|
+
export declare function writeAgentsMd(options: WriteAgentsMdOptions): WriteAgentsMdResult;
|
|
37
|
+
//#endregion
|
|
38
|
+
//# sourceMappingURL=write-agents-md.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-agents-md.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/agents-md/write-agents-md.ts"],"mappings":";;;;YAQY;;YAGA;;EAEV;;EAEA,QAAQ;;EAER;;EAEA,kBAAkB;;EAElB;;;YAIU;;EAEV;EACA,QAAQ;;EAER;;;;;;;;;;;wBAYc,cAAc,SAAS,uBAAuB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AGENTS_MD_FILE, upsertGeneratedSection } from "./agents-md-markers.mjs";
|
|
2
|
+
import { listInstalledSkills } from "./installed-skills.mjs";
|
|
3
|
+
import { listAppModules, renderAgentsMdSection } from "./render-agents-md.mjs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { existsSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
6
|
+
|
|
7
|
+
//#region ../../packages/core/src/tooling/agents-md/write-agents-md.ts
|
|
8
|
+
/**
|
|
9
|
+
* Render the generated section and put it between the markers of
|
|
10
|
+
* `<cwd>/AGENTS.md`, preserving every byte outside them. Writes only when the
|
|
11
|
+
* content changed (atomically: temp file + rename). Throws `WL7501` on
|
|
12
|
+
* malformed markers, before writing anything.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const { status } = writeAgentsMd({ report: await inspectApp() });
|
|
16
|
+
*/
|
|
17
|
+
function writeAgentsMd(options) {
|
|
18
|
+
const cwd = options.cwd ?? process.cwd();
|
|
19
|
+
const file = path.join(cwd, AGENTS_MD_FILE);
|
|
20
|
+
const section = renderAgentsMdSection(options.report, {
|
|
21
|
+
skills: options.skills ?? listInstalledSkills(cwd),
|
|
22
|
+
modules: options.modules ?? listAppModules(cwd)
|
|
23
|
+
});
|
|
24
|
+
const exists = existsSync(file);
|
|
25
|
+
if (!exists && options.create === false) return {
|
|
26
|
+
file,
|
|
27
|
+
status: "skipped",
|
|
28
|
+
section
|
|
29
|
+
};
|
|
30
|
+
const existing = exists ? readFileSync(file, "utf8") : void 0;
|
|
31
|
+
const next = upsertGeneratedSection(existing, section);
|
|
32
|
+
if (next === existing) return {
|
|
33
|
+
file,
|
|
34
|
+
status: "unchanged",
|
|
35
|
+
section
|
|
36
|
+
};
|
|
37
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
38
|
+
writeFileSync(temporary, next, "utf8");
|
|
39
|
+
renameSync(temporary, file);
|
|
40
|
+
return {
|
|
41
|
+
file,
|
|
42
|
+
status: exists ? "updated" : "created",
|
|
43
|
+
section
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { writeAgentsMd };
|
|
49
|
+
//# sourceMappingURL=write-agents-md.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-agents-md.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/agents-md/write-agents-md.ts"],"sourcesContent":["import { existsSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport type { InspectReport } from \"../inspect/inspect-report.types\";\nimport { AGENTS_MD_FILE, upsertGeneratedSection } from \"./agents-md-markers\";\nimport { type InstalledSkill, listInstalledSkills } from \"./installed-skills\";\nimport { listAppModules, renderAgentsMdSection } from \"./render-agents-md\";\n\n/** What {@link writeAgentsMd} did. */\nexport type AgentsMdWriteStatus = \"created\" | \"updated\" | \"unchanged\" | \"skipped\";\n\n/** Options of {@link writeAgentsMd}. */\nexport type WriteAgentsMdOptions = {\n /** Project root. Default: `process.cwd()`. */\n cwd?: string;\n /** The inspect report to render. */\n report: InspectReport;\n /** Create AGENTS.md when it does not exist. Default: `true`; `false` reports `skipped`. */\n create?: boolean;\n /** Skills to list. Default: `listInstalledSkills(cwd)`. */\n skills?: readonly InstalledSkill[];\n /** Module folders. Default: `listAppModules(cwd)`. */\n modules?: readonly string[];\n};\n\n/** The result of {@link writeAgentsMd}. */\nexport type WriteAgentsMdResult = {\n /** Absolute path of AGENTS.md. */\n file: string;\n status: AgentsMdWriteStatus;\n /** The generated section, without markers. */\n section: string;\n};\n\n/**\n * Render the generated section and put it between the markers of\n * `<cwd>/AGENTS.md`, preserving every byte outside them. Writes only when the\n * content changed (atomically: temp file + rename). Throws `WL7501` on\n * malformed markers, before writing anything.\n *\n * @example\n * const { status } = writeAgentsMd({ report: await inspectApp() });\n */\nexport function writeAgentsMd(options: WriteAgentsMdOptions): WriteAgentsMdResult {\n const cwd = options.cwd ?? process.cwd();\n const file = path.join(cwd, AGENTS_MD_FILE);\n const section = renderAgentsMdSection(options.report, {\n skills: options.skills ?? listInstalledSkills(cwd),\n modules: options.modules ?? listAppModules(cwd),\n });\n const exists = existsSync(file);\n\n if (!exists && options.create === false) {\n return { file, status: \"skipped\", section };\n }\n\n const existing = exists ? readFileSync(file, \"utf8\") : undefined;\n const next = upsertGeneratedSection(existing, section);\n\n if (next === existing) {\n return { file, status: \"unchanged\", section };\n }\n\n const temporary = `${file}.${process.pid}.tmp`;\n\n writeFileSync(temporary, next, \"utf8\");\n renameSync(temporary, file);\n\n return { file, status: exists ? \"updated\" : \"created\", section };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA0CA,SAAgB,cAAc,SAAoD;CAChF,MAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI;CACvC,MAAM,OAAO,KAAK,KAAK,KAAK,cAAc;CAC1C,MAAM,UAAU,sBAAsB,QAAQ,QAAQ;EACpD,QAAQ,QAAQ,UAAU,oBAAoB,GAAG;EACjD,SAAS,QAAQ,WAAW,eAAe,GAAG;CAChD,CAAC;CACD,MAAM,SAAS,WAAW,IAAI;CAE9B,IAAI,CAAC,UAAU,QAAQ,WAAW,OAChC,OAAO;EAAE;EAAM,QAAQ;EAAW;CAAQ;CAG5C,MAAM,WAAW,SAAS,aAAa,MAAM,MAAM,IAAI;CACvD,MAAM,OAAO,uBAAuB,UAAU,OAAO;CAErD,IAAI,SAAS,UACX,OAAO;EAAE;EAAM,QAAQ;EAAa;CAAQ;CAG9C,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,IAAI;CAEzC,cAAc,WAAW,MAAM,MAAM;CACrC,WAAW,WAAW,IAAI;CAE1B,OAAO;EAAE;EAAM,QAAQ,SAAS,YAAY;EAAW;CAAQ;AACjE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BoardVerdict } from "./board.types.mjs";
|
|
2
|
+
//#region ../../packages/core/src/tooling/board/board-message.d.ts
|
|
3
|
+
/** The fields a message file's front matter carries. */
|
|
4
|
+
export type BoardMessageFields = {
|
|
5
|
+
from: string;
|
|
6
|
+
to: string;
|
|
7
|
+
item: number | null;
|
|
8
|
+
subject: string;
|
|
9
|
+
at: string;
|
|
10
|
+
};
|
|
11
|
+
/** A message file's contents, parsed. */
|
|
12
|
+
export type ParsedBoardMessage = BoardMessageFields & {
|
|
13
|
+
body: string;
|
|
14
|
+
verdict: BoardVerdict | null;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Render a message file: front matter (`from`, `to`, `item`, `subject`, `at`),
|
|
18
|
+
* a blank line, the body, and — for a verdict — a final line that is exactly
|
|
19
|
+
* `VERDICT: APPROVED` or `VERDICT: CHANGES REQUESTED`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatBoardMessage(fields: BoardMessageFields, body: string, verdict?: BoardVerdict | null): string;
|
|
22
|
+
/**
|
|
23
|
+
* Parse a message file. Tolerates a file without front matter (everything is
|
|
24
|
+
* the body). The verdict is read from the last non-empty line only, so a
|
|
25
|
+
* quoted verdict inside the body does not count.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseBoardMessage(text: string): ParsedBoardMessage;
|
|
28
|
+
//#endregion
|
|
29
|
+
//# sourceMappingURL=board-message.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-message.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board-message.ts"],"mappings":";;;YAGY;EACV;EACA;EACA;EACA;EACA;;;YAIU,qBAAqB;EAC/B;EACA,SAAS;;;;;;;wBAaK,mBACd,QAAQ,oBACR,cACA,UAAS;;;;;;wBAuCK,kBAAkB,eAAe"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BOARD_VERDICT_LINES } from "./board.types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/tooling/board/board-message.ts
|
|
4
|
+
/** Subjects are one line: newlines would break the front matter. */
|
|
5
|
+
function oneLine(value) {
|
|
6
|
+
return value.replace(/[\r\n]+/g, " ").trim();
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Render a message file: front matter (`from`, `to`, `item`, `subject`, `at`),
|
|
10
|
+
* a blank line, the body, and — for a verdict — a final line that is exactly
|
|
11
|
+
* `VERDICT: APPROVED` or `VERDICT: CHANGES REQUESTED`.
|
|
12
|
+
*/
|
|
13
|
+
function formatBoardMessage(fields, body, verdict = null) {
|
|
14
|
+
const lines = [
|
|
15
|
+
"---",
|
|
16
|
+
`from: ${oneLine(fields.from)}`,
|
|
17
|
+
`to: ${oneLine(fields.to)}`,
|
|
18
|
+
`item: ${fields.item ?? ""}`,
|
|
19
|
+
`subject: ${oneLine(fields.subject)}`,
|
|
20
|
+
`at: ${fields.at}`,
|
|
21
|
+
"---",
|
|
22
|
+
""
|
|
23
|
+
];
|
|
24
|
+
const text = body.replace(/\s+$/, "");
|
|
25
|
+
if (text.length > 0) lines.push(text);
|
|
26
|
+
if (verdict) {
|
|
27
|
+
if (text.length > 0) lines.push("");
|
|
28
|
+
lines.push(BOARD_VERDICT_LINES[verdict]);
|
|
29
|
+
}
|
|
30
|
+
return `${lines.join("\n")}\n`;
|
|
31
|
+
}
|
|
32
|
+
/** The verdict a line spells, or `null`. */
|
|
33
|
+
function verdictOf(line) {
|
|
34
|
+
const trimmed = line.trim();
|
|
35
|
+
if (trimmed === BOARD_VERDICT_LINES.approved) return "approved";
|
|
36
|
+
if (trimmed === BOARD_VERDICT_LINES["changes-requested"]) return "changes-requested";
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse a message file. Tolerates a file without front matter (everything is
|
|
41
|
+
* the body). The verdict is read from the last non-empty line only, so a
|
|
42
|
+
* quoted verdict inside the body does not count.
|
|
43
|
+
*/
|
|
44
|
+
function parseBoardMessage(text) {
|
|
45
|
+
const fields = {
|
|
46
|
+
from: "",
|
|
47
|
+
to: "",
|
|
48
|
+
item: null,
|
|
49
|
+
subject: "",
|
|
50
|
+
at: ""
|
|
51
|
+
};
|
|
52
|
+
let rest = text.replace(/\r\n/g, "\n");
|
|
53
|
+
if (rest.startsWith("---\n")) {
|
|
54
|
+
const end = rest.indexOf("\n---", 4);
|
|
55
|
+
if (end !== -1) {
|
|
56
|
+
const header = rest.slice(4, end);
|
|
57
|
+
for (const line of header.split("\n")) {
|
|
58
|
+
const separator = line.indexOf(":");
|
|
59
|
+
if (separator === -1) continue;
|
|
60
|
+
const key = line.slice(0, separator).trim();
|
|
61
|
+
const value = line.slice(separator + 1).trim();
|
|
62
|
+
if (key === "from") fields.from = value;
|
|
63
|
+
else if (key === "to") fields.to = value;
|
|
64
|
+
else if (key === "subject") fields.subject = value;
|
|
65
|
+
else if (key === "at") fields.at = value;
|
|
66
|
+
else if (key === "item") {
|
|
67
|
+
const id = Number.parseInt(value, 10);
|
|
68
|
+
fields.item = Number.isInteger(id) && id > 0 ? id : null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
rest = rest.slice(end + 4).replace(/^\n+/, "");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const lines = rest.replace(/\s+$/, "").split("\n");
|
|
75
|
+
const verdict = verdictOf(lines[lines.length - 1] ?? "");
|
|
76
|
+
if (verdict) lines.pop();
|
|
77
|
+
return {
|
|
78
|
+
...fields,
|
|
79
|
+
body: lines.join("\n").replace(/\s+$/, ""),
|
|
80
|
+
verdict
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//#endregion
|
|
85
|
+
export { formatBoardMessage, parseBoardMessage };
|
|
86
|
+
//# sourceMappingURL=board-message.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-message.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board-message.ts"],"sourcesContent":["import { BOARD_VERDICT_LINES, type BoardVerdict } from \"./board.types\";\n\n/** The fields a message file's front matter carries. */\nexport type BoardMessageFields = {\n from: string;\n to: string;\n item: number | null;\n subject: string;\n at: string;\n};\n\n/** A message file's contents, parsed. */\nexport type ParsedBoardMessage = BoardMessageFields & {\n body: string;\n verdict: BoardVerdict | null;\n};\n\n/** Subjects are one line: newlines would break the front matter. */\nfunction oneLine(value: string): string {\n return value.replace(/[\\r\\n]+/g, \" \").trim();\n}\n\n/**\n * Render a message file: front matter (`from`, `to`, `item`, `subject`, `at`),\n * a blank line, the body, and — for a verdict — a final line that is exactly\n * `VERDICT: APPROVED` or `VERDICT: CHANGES REQUESTED`.\n */\nexport function formatBoardMessage(\n fields: BoardMessageFields,\n body: string,\n verdict: BoardVerdict | null = null,\n): string {\n const lines = [\n \"---\",\n `from: ${oneLine(fields.from)}`,\n `to: ${oneLine(fields.to)}`,\n `item: ${fields.item ?? \"\"}`,\n `subject: ${oneLine(fields.subject)}`,\n `at: ${fields.at}`,\n \"---\",\n \"\",\n ];\n const text = body.replace(/\\s+$/, \"\");\n\n if (text.length > 0) lines.push(text);\n\n if (verdict) {\n if (text.length > 0) lines.push(\"\");\n lines.push(BOARD_VERDICT_LINES[verdict]);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\n/** The verdict a line spells, or `null`. */\nfunction verdictOf(line: string): BoardVerdict | null {\n const trimmed = line.trim();\n\n if (trimmed === BOARD_VERDICT_LINES.approved) return \"approved\";\n if (trimmed === BOARD_VERDICT_LINES[\"changes-requested\"]) return \"changes-requested\";\n\n return null;\n}\n\n/**\n * Parse a message file. Tolerates a file without front matter (everything is\n * the body). The verdict is read from the last non-empty line only, so a\n * quoted verdict inside the body does not count.\n */\nexport function parseBoardMessage(text: string): ParsedBoardMessage {\n const fields: BoardMessageFields = { from: \"\", to: \"\", item: null, subject: \"\", at: \"\" };\n let rest = text.replace(/\\r\\n/g, \"\\n\");\n\n if (rest.startsWith(\"---\\n\")) {\n const end = rest.indexOf(\"\\n---\", 4);\n\n if (end !== -1) {\n const header = rest.slice(4, end);\n\n for (const line of header.split(\"\\n\")) {\n const separator = line.indexOf(\":\");\n\n if (separator === -1) continue;\n\n const key = line.slice(0, separator).trim();\n const value = line.slice(separator + 1).trim();\n\n if (key === \"from\") fields.from = value;\n else if (key === \"to\") fields.to = value;\n else if (key === \"subject\") fields.subject = value;\n else if (key === \"at\") fields.at = value;\n else if (key === \"item\") {\n const id = Number.parseInt(value, 10);\n fields.item = Number.isInteger(id) && id > 0 ? id : null;\n }\n }\n\n rest = rest.slice(end + 4).replace(/^\\n+/, \"\");\n }\n }\n\n const lines = rest.replace(/\\s+$/, \"\").split(\"\\n\");\n const last = lines[lines.length - 1] ?? \"\";\n const verdict = verdictOf(last);\n\n if (verdict) lines.pop();\n\n return { ...fields, body: lines.join(\"\\n\").replace(/\\s+$/, \"\"), verdict };\n}\n"],"mappings":";;;;AAkBA,SAAS,QAAQ,OAAuB;CACtC,OAAO,MAAM,QAAQ,YAAY,GAAG,CAAC,CAAC,KAAK;AAC7C;;;;;;AAOA,SAAgB,mBACd,QACA,MACA,UAA+B,MACvB;CACR,MAAM,QAAQ;EACZ;EACA,SAAS,QAAQ,OAAO,IAAI;EAC5B,OAAO,QAAQ,OAAO,EAAE;EACxB,SAAS,OAAO,QAAQ;EACxB,YAAY,QAAQ,OAAO,OAAO;EAClC,OAAO,OAAO;EACd;EACA;CACF;CACA,MAAM,OAAO,KAAK,QAAQ,QAAQ,EAAE;CAEpC,IAAI,KAAK,SAAS,GAAG,MAAM,KAAK,IAAI;CAEpC,IAAI,SAAS;EACX,IAAI,KAAK,SAAS,GAAG,MAAM,KAAK,EAAE;EAClC,MAAM,KAAK,oBAAoB,QAAQ;CACzC;CAEA,OAAO,GAAG,MAAM,KAAK,IAAI,EAAE;AAC7B;;AAGA,SAAS,UAAU,MAAmC;CACpD,MAAM,UAAU,KAAK,KAAK;CAE1B,IAAI,YAAY,oBAAoB,UAAU,OAAO;CACrD,IAAI,YAAY,oBAAoB,sBAAsB,OAAO;CAEjE,OAAO;AACT;;;;;;AAOA,SAAgB,kBAAkB,MAAkC;CAClE,MAAM,SAA6B;EAAE,MAAM;EAAI,IAAI;EAAI,MAAM;EAAM,SAAS;EAAI,IAAI;CAAG;CACvF,IAAI,OAAO,KAAK,QAAQ,SAAS,IAAI;CAErC,IAAI,KAAK,WAAW,OAAO,GAAG;EAC5B,MAAM,MAAM,KAAK,QAAQ,SAAS,CAAC;EAEnC,IAAI,QAAQ,IAAI;GACd,MAAM,SAAS,KAAK,MAAM,GAAG,GAAG;GAEhC,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI,GAAG;IACrC,MAAM,YAAY,KAAK,QAAQ,GAAG;IAElC,IAAI,cAAc,IAAI;IAEtB,MAAM,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK;IAC1C,MAAM,QAAQ,KAAK,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK;IAE7C,IAAI,QAAQ,QAAQ,OAAO,OAAO;SAC7B,IAAI,QAAQ,MAAM,OAAO,KAAK;SAC9B,IAAI,QAAQ,WAAW,OAAO,UAAU;SACxC,IAAI,QAAQ,MAAM,OAAO,KAAK;SAC9B,IAAI,QAAQ,QAAQ;KACvB,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE;KACpC,OAAO,OAAO,OAAO,UAAU,EAAE,KAAK,KAAK,IAAI,KAAK;IACtD;GACF;GAEA,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE;EAC/C;CACF;CAEA,MAAM,QAAQ,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI;CAEjD,MAAM,UAAU,UADH,MAAM,MAAM,SAAS,MAAM,EACV;CAE9B,IAAI,SAAS,MAAM,IAAI;CAEvB,OAAO;EAAE,GAAG;EAAQ,MAAM,MAAM,KAAK,IAAI,CAAC,CAAC,QAAQ,QAAQ,EAAE;EAAG;CAAQ;AAC1E"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { BoardItem, BoardMessage, BoardState, BoardStatus, BoardVerdict } from "./board.types.mjs";
|
|
2
|
+
//#region ../../packages/core/src/tooling/board/board.d.ts
|
|
3
|
+
/** What `initBoard` did. */
|
|
4
|
+
export type InitBoardResult = {
|
|
5
|
+
/** The board directory, relative to the project root. */
|
|
6
|
+
directory: string;
|
|
7
|
+
/** `false` when the board already existed. */
|
|
8
|
+
created: boolean;
|
|
9
|
+
/** Whether `.warlock/board/` was added to `.gitignore` by this call. */
|
|
10
|
+
gitignoreUpdated: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** Inputs of {@link addBoardItem}. */
|
|
13
|
+
export type AddBoardItemInput = {
|
|
14
|
+
title: string;
|
|
15
|
+
assignee?: string | null;
|
|
16
|
+
reviewer?: string | null;
|
|
17
|
+
/** The agent creating it, recorded in the history. */
|
|
18
|
+
by?: string | null;
|
|
19
|
+
/** Clock, for tests. */
|
|
20
|
+
now?: () => Date;
|
|
21
|
+
};
|
|
22
|
+
/** Inputs of {@link moveBoardItem}. */
|
|
23
|
+
export type MoveBoardItemOptions = {
|
|
24
|
+
by?: string | null;
|
|
25
|
+
note?: string | null;
|
|
26
|
+
now?: () => Date;
|
|
27
|
+
};
|
|
28
|
+
/** Inputs of {@link sendBoardMessage}. */
|
|
29
|
+
export type SendBoardMessageInput = {
|
|
30
|
+
to: string;
|
|
31
|
+
from: string;
|
|
32
|
+
subject: string;
|
|
33
|
+
body?: string;
|
|
34
|
+
/** The item the message is about. */
|
|
35
|
+
item?: number | null;
|
|
36
|
+
/** A review verdict; with `item`, also moves the item to that state. */
|
|
37
|
+
verdict?: BoardVerdict | null;
|
|
38
|
+
now?: () => Date;
|
|
39
|
+
};
|
|
40
|
+
/** What {@link sendBoardMessage} wrote. */
|
|
41
|
+
export type SendBoardMessageResult = {
|
|
42
|
+
message: BoardMessage;
|
|
43
|
+
/** The item after the verdict moved it, when the message carried one. */
|
|
44
|
+
item: BoardItem | null;
|
|
45
|
+
};
|
|
46
|
+
/** Inputs of {@link watchBoard}. */
|
|
47
|
+
export type WatchBoardOptions = {
|
|
48
|
+
agent: string;
|
|
49
|
+
/** Return messages numbered above this. Default: the agent's cursor. */
|
|
50
|
+
since?: number;
|
|
51
|
+
/** Give up after this long; throws `WL7404`. Default: 10 minutes. */
|
|
52
|
+
timeoutMs?: number;
|
|
53
|
+
/** Poll interval. Default: 250 ms. */
|
|
54
|
+
intervalMs?: number;
|
|
55
|
+
/** Stop early (resolves with no messages). */
|
|
56
|
+
signal?: AbortSignal;
|
|
57
|
+
};
|
|
58
|
+
/** What {@link watchBoard} returned. */
|
|
59
|
+
export type WatchBoardResult = {
|
|
60
|
+
agent: string;
|
|
61
|
+
/** The new messages, oldest first. */
|
|
62
|
+
messages: BoardMessage[];
|
|
63
|
+
/** The agent's cursor after the call. */
|
|
64
|
+
cursor: number;
|
|
65
|
+
};
|
|
66
|
+
/** A file-name slug: lower-case, dashes, at most 48 characters. */
|
|
67
|
+
export declare function boardSlug(value: string, fallback: string): string;
|
|
68
|
+
/** Throw unless `name` is a valid agent name. */
|
|
69
|
+
export declare function assertAgentName(name: string, label?: string): void;
|
|
70
|
+
/** Whether a `.gitignore` already ignores the board folder (or `.warlock` as a whole). */
|
|
71
|
+
export declare function gitignoreCoversBoard(content: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Create the board (idempotent): `.warlock/board/` with its `board.json`
|
|
74
|
+
* marker, `items/`, and `.warlock/board/` in `.gitignore` unless the project
|
|
75
|
+
* already ignores it. A `.gitignore` is created when there is none.
|
|
76
|
+
*/
|
|
77
|
+
export declare function initBoard(cwd?: string, now?: () => Date): InitBoardResult;
|
|
78
|
+
/** Every item, by id. Throws `WL7401` when the board does not exist. */
|
|
79
|
+
export declare function listBoardItems(cwd?: string): BoardItem[];
|
|
80
|
+
/** One item. Throws `WL7402` for an unknown id. */
|
|
81
|
+
export declare function readBoardItem(id: number, cwd?: string): BoardItem;
|
|
82
|
+
/** Add an item in state `todo`, with a fresh id no other writer can take. */
|
|
83
|
+
export declare function addBoardItem(input: AddBoardItemInput, cwd?: string): BoardItem;
|
|
84
|
+
/** The states an item in `state` may move to. */
|
|
85
|
+
export declare function nextBoardStates(state: BoardState): readonly BoardState[];
|
|
86
|
+
/** Throw `WL7403` unless `from → to` is in {@link BOARD_TRANSITIONS}. */
|
|
87
|
+
export declare function assertBoardTransition(id: number, from: BoardState, to: BoardState): void;
|
|
88
|
+
/**
|
|
89
|
+
* Move an item to another state, recording who moved it and why. Throws
|
|
90
|
+
* `WL7402` for an unknown id and `WL7403` for a move the state machine does
|
|
91
|
+
* not allow.
|
|
92
|
+
*/
|
|
93
|
+
export declare function moveBoardItem(id: number, to: BoardState, options?: MoveBoardItemOptions, cwd?: string): BoardItem;
|
|
94
|
+
/**
|
|
95
|
+
* Write a message to `to-<agent>/NNNN-<slug>.md`. Messages are append-only:
|
|
96
|
+
* the number is reserved exclusively and the file is created with `wx`, so it
|
|
97
|
+
* is never rewritten. A verdict with an `item` also moves the item to
|
|
98
|
+
* `approved` / `changes-requested` — before the message is written, so a
|
|
99
|
+
* refused move (`WL7403`) leaves no message behind.
|
|
100
|
+
*/
|
|
101
|
+
export declare function sendBoardMessage(input: SendBoardMessageInput, cwd?: string): SendBoardMessageResult;
|
|
102
|
+
/** The messages in an agent's inbox numbered above `since`, oldest first. */
|
|
103
|
+
export declare function listBoardMessages(agent: string, options?: {
|
|
104
|
+
since?: number;
|
|
105
|
+
}, cwd?: string): BoardMessage[];
|
|
106
|
+
/** The highest message number `watch` has returned to `agent` (0 when none). */
|
|
107
|
+
export declare function readBoardCursor(agent: string, cwd?: string): number;
|
|
108
|
+
/** Record that `agent` has seen messages up to `number`. Never moves the cursor back. */
|
|
109
|
+
export declare function writeBoardCursor(agent: string, number: number, cwd?: string): number;
|
|
110
|
+
/** Every item and every inbox with its message count, cursor and unread count. */
|
|
111
|
+
export declare function readBoardStatus(cwd?: string): BoardStatus;
|
|
112
|
+
/**
|
|
113
|
+
* Block until `agent` has a message numbered above `since` (default: its
|
|
114
|
+
* cursor), then return every such message and advance the cursor past them.
|
|
115
|
+
*
|
|
116
|
+
* Polls the inbox every `intervalMs`; throws `WL7404` when `timeoutMs` passes
|
|
117
|
+
* first. An aborted `signal` resolves with no messages.
|
|
118
|
+
*/
|
|
119
|
+
export declare function watchBoard(options: WatchBoardOptions, cwd?: string): Promise<WatchBoardResult>;
|
|
120
|
+
//#endregion
|
|
121
|
+
//# sourceMappingURL=board.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board.ts"],"mappings":";;;YAiCY;;EAEV;;EAEA;;EAEA;;;YAIU;EACV;EACA;EACA;;EAEA;;EAEA,YAAY;;;YAIF;EACV;EACA;EACA,YAAY;;;YAIF;EACV;EACA;EACA;EACA;;EAEA;;EAEA,UAAU;EACV,YAAY;;;YAIF;EACV,SAAS;;EAET,MAAM;;;YAII;EACV;;EAEA;;EAEA;;EAEA;;EAEA,SAAS;;;YAIC;EACV;;EAEA,UAAU;;EAEV;;;wBAgBc,UAAU,eAAe;;wBAYzB,gBAAgB,cAAc;;wBA8E9B,qBAAqB;;;;;;wBAsBrB,UACd,cACA,YAAW,OACV;;wBA4Fa,eAAe,eAAsB;;wBAerC,cAAc,YAAY,eAAsB;;wBAgBhD,aAAa,OAAO,mBAAmB,eAAsB;;wBAqC7D,gBAAgB,OAAO,sBAAsB;;wBAK7C,sBAAsB,YAAY,MAAM,YAAY,IAAI;;;;;;wBAcxD,cACd,YACA,IAAI,YACJ,UAAS,sBACT,eACC;;;;;;;;wBAoCa,iBACd,OAAO,uBACP,eACC;;wBAyDa,kBACd,eACA;EAAW;GACX,eACC;;wBA6Ba,gBAAgB,eAAe;;wBAe/B,iBAAiB,eAAe,gBAAgB;;wBAchD,gBAAgB,eAAsB;;;;;;;;wBA+BhC,WACpB,SAAS,mBACT,eACC,QAAQ"}
|