@aurorajs.dev/catalyst-cli 1.0.2 → 2.0.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/README.md +1 -1
- package/dist/commands/generate/index.js +33 -1
- package/dist/commands/sheets/diff.js +2 -4
- package/dist/commands/sheets/pull.d.ts +0 -1
- package/dist/commands/sheets/pull.js +2 -14
- package/dist/commands/sheets/push.d.ts +0 -1
- package/dist/commands/sheets/push.js +2 -14
- package/dist/commands/sheets/validate.js +3 -4
- package/dist/generator/domain/column-width.d.ts +2 -2
- package/dist/generator/domain/column-width.js +20 -15
- package/dist/generator/domain/config.d.ts +45 -6
- package/dist/generator/domain/config.js +152 -48
- package/dist/generator/domain/cross-bc-relations-discovery.d.ts +38 -0
- package/dist/generator/domain/cross-bc-relations-discovery.js +89 -0
- package/dist/generator/domain/cross-schema-resolver.d.ts +54 -1
- package/dist/generator/domain/cross-schema-resolver.js +52 -3
- package/dist/generator/domain/custom-field-value.d.ts +124 -0
- package/dist/generator/domain/custom-field-value.js +206 -0
- package/dist/generator/domain/declared-surface.d.ts +45 -0
- package/dist/generator/domain/declared-surface.js +106 -0
- package/dist/generator/domain/dialog-width.d.ts +46 -0
- package/dist/generator/domain/dialog-width.js +70 -0
- package/dist/generator/domain/display-field.d.ts +28 -3
- package/dist/generator/domain/display-field.js +53 -3
- package/dist/generator/domain/form-id.d.ts +3 -0
- package/dist/generator/domain/form-id.js +21 -0
- package/dist/generator/domain/i18n-embedded.d.ts +102 -0
- package/dist/generator/domain/i18n-embedded.js +112 -0
- package/dist/generator/domain/i18n-table.d.ts +112 -0
- package/dist/generator/domain/i18n-table.js +189 -0
- package/dist/generator/domain/model.d.ts +59 -17
- package/dist/generator/domain/model.js +1 -3
- package/dist/generator/domain/module-resolution.d.ts +17 -0
- package/dist/generator/domain/module-resolution.js +23 -0
- package/dist/generator/domain/operation-names.d.ts +17 -0
- package/dist/generator/domain/operation-names.js +27 -0
- package/dist/generator/domain/pivot.js +11 -1
- package/dist/generator/domain/property-filters.d.ts +168 -6
- package/dist/generator/domain/property-filters.js +257 -13
- package/dist/generator/domain/property-mappers.d.ts +69 -5
- package/dist/generator/domain/property-mappers.js +155 -61
- package/dist/generator/domain/property-pick-model.d.ts +12 -0
- package/dist/generator/domain/property-pick-model.js +47 -0
- package/dist/generator/domain/property-predicates.d.ts +57 -17
- package/dist/generator/domain/property-predicates.js +58 -18
- package/dist/generator/domain/property-validators.d.ts +20 -0
- package/dist/generator/domain/property-validators.js +71 -0
- package/dist/generator/domain/property-width.js +4 -2
- package/dist/generator/domain/readonly-payload-types.d.ts +72 -0
- package/dist/generator/domain/readonly-payload-types.js +96 -0
- package/dist/generator/domain/relation-search-eligibility.d.ts +15 -0
- package/dist/generator/domain/relation-search-eligibility.js +50 -0
- package/dist/generator/domain/relations-builder.d.ts +113 -0
- package/dist/generator/domain/relations-builder.js +422 -0
- package/dist/generator/domain/schema-loader.d.ts +41 -0
- package/dist/generator/domain/schema-loader.js +414 -4
- package/dist/generator/domain/widget-type.d.ts +1 -0
- package/dist/generator/domain/widget-type.js +1 -0
- package/dist/generator/engine/code-writer/code-writer.d.ts +334 -23
- package/dist/generator/engine/code-writer/code-writer.js +1052 -145
- package/dist/generator/engine/code-writer/drivers/import.driver.d.ts +22 -0
- package/dist/generator/engine/code-writer/drivers/import.driver.js +64 -0
- package/dist/generator/engine/code-writer/drivers/object.driver.d.ts +30 -0
- package/dist/generator/engine/code-writer/drivers/object.driver.js +58 -0
- package/dist/generator/engine/file-manager.d.ts +29 -2
- package/dist/generator/engine/file-manager.js +8 -2
- package/dist/generator/engine/file-writer.d.ts +3 -3
- package/dist/generator/engine/file-writer.js +58 -58
- package/dist/generator/engine/ignored-file.d.ts +6 -0
- package/dist/generator/engine/ignored-file.js +31 -0
- package/dist/generator/engine/lock-file.d.ts +36 -54
- package/dist/generator/engine/lock-file.js +74 -168
- package/dist/generator/engine/template-engine.js +9 -1
- package/dist/generator/handlers/back.handler.d.ts +72 -0
- package/dist/generator/handlers/back.handler.js +354 -59
- package/dist/generator/handlers/front.handler.d.ts +54 -0
- package/dist/generator/handlers/front.handler.js +247 -29
- package/dist/generator/handlers/handler-utils.js +2 -1
- package/dist/generator/packages/front-package-helpers.d.ts +8 -1
- package/dist/generator/packages/front-package-helpers.js +26 -5
- package/dist/generator/packages/installers/auditing.js +3 -3
- package/dist/generator/packages/installers/authorization-code.js +2 -5
- package/dist/generator/packages/installers/common.js +3 -3
- package/dist/generator/packages/installers/front/identity.js +8 -17
- package/dist/generator/packages/installers/front/queue-manager.d.ts +23 -0
- package/dist/generator/packages/installers/front/queue-manager.js +35 -0
- package/dist/generator/packages/installers/identity.js +4 -0
- package/dist/generator/packages/installers/mcp.js +1 -1
- package/dist/generator/packages/installers/message.js +1 -1
- package/dist/generator/packages/installers/ms-email.js +1 -1
- package/dist/generator/packages/installers/ms-entra-id.js +3 -3
- package/dist/generator/packages/installers/queue-manager.js +2 -3
- package/dist/generator/packages/installers/storage-account-azure.js +2 -2
- package/dist/generator/packages/installers/storage-account.js +4 -4
- package/dist/generator/packages/installers/support.js +1 -1
- package/dist/generator/packages/installers/tools.js +1 -1
- package/dist/generator/packages/installers/whatsapp.js +1 -1
- package/dist/generator/packages/package-helpers.js +10 -10
- package/dist/generator/utils/code-gen.d.ts +14 -3
- package/dist/generator/utils/code-gen.js +77 -27
- package/dist/generator/utils/mocker.js +19 -10
- package/dist/generator/utils/path-allowed.js +23 -2
- package/dist/generator/utils/relations-file.d.ts +127 -0
- package/dist/generator/utils/relations-file.js +310 -0
- package/dist/generator/utils/string-utils.d.ts +7 -0
- package/dist/generator/utils/string-utils.js +13 -0
- package/dist/origin/domain/actions.d.ts +13 -0
- package/dist/origin/domain/actions.js +13 -1
- package/dist/origin/domain/diff.js +9 -1
- package/dist/sheets/domain/auth.d.ts +15 -1
- package/dist/sheets/domain/auth.js +25 -2
- package/dist/sheets/domain/retry.d.ts +61 -0
- package/dist/sheets/domain/retry.js +76 -0
- package/dist/sheets/domain/types.d.ts +148 -2
- package/dist/sheets/domain/types.js +252 -12
- package/dist/sheets/sync/diff-engine.js +62 -5
- package/dist/sheets/sync/sheet-to-yaml.d.ts +21 -0
- package/dist/sheets/sync/sheet-to-yaml.js +238 -58
- package/dist/sheets/sync/yaml-to-sheet.d.ts +62 -0
- package/dist/sheets/sync/yaml-to-sheet.js +277 -30
- package/dist/sheets/transformers/property-transformer.d.ts +39 -0
- package/dist/sheets/transformers/property-transformer.js +121 -23
- package/dist/sheets/validators/schema-validator.js +54 -38
- package/dist/templates/ai/claude/.claude/settings.json +1 -4
- package/dist/templates/backend/application/.claude/skills/catalyst-backend-testing/SKILL.md +264 -234
- package/dist/templates/backend/application/.claude/skills/catalyst-cross-bounded-context-ports/SKILL.md +40 -10
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/SKILL.md +80 -55
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/references/field-schema-and-decorators.md +91 -62
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/references/query-statement.md +206 -200
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/SKILL.md +66 -64
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/additional-apis-workflow.md +81 -22
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/cli-first-workflow.md +17 -17
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/create-handler.md +10 -8
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/delete-handler.md +7 -7
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/read-handler.md +27 -17
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/update-handler.md +35 -20
- package/dist/templates/backend/application/.claude/skills/catalyst-nestjs-primitives/SKILL.md +151 -27
- package/dist/templates/backend/application/.claude/skills/catalyst-nestjs-primitives/references/minimum-templates.md +1 -1
- package/dist/templates/backend/application/.claude/skills/catalyst-project-structure/SKILL.md +210 -246
- package/dist/templates/backend/application/.claude/skills/catalyst-provider-composition/SKILL.md +263 -0
- package/dist/templates/backend/application/.claude/skills/catalyst-schema-migrations/SKILL.md +308 -0
- package/dist/templates/backend/application/.claude/skills/catalyst-tools/SKILL.md +266 -0
- package/dist/templates/backend/application/.oxlintrc.json +171 -0
- package/dist/templates/backend/application/CLAUDE.md +27 -1
- package/dist/templates/backend/application/README.md +6 -4
- package/dist/templates/backend/application/drizzle.config.ts +46 -0
- package/dist/templates/backend/application/nest-cli.json +7 -2
- package/dist/templates/backend/application/package.json +56 -73
- package/dist/templates/backend/application/scripts/db/check.ts +80 -0
- package/dist/templates/backend/application/scripts/db/generate.ts +55 -0
- package/dist/templates/backend/application/scripts/db/migrate.ts +101 -0
- package/dist/templates/backend/application/scripts/db/query.spec.ts +497 -0
- package/dist/templates/backend/application/scripts/db/query.ts +410 -0
- package/dist/templates/backend/application/scripts/iam/permissions-without-role.ts +178 -0
- package/dist/templates/backend/application/scripts/tz-pin.spec.ts +10 -0
- package/dist/templates/backend/application/src/@aurora/core.module.ts +52 -32
- package/dist/templates/backend/application/src/@aurora/decorators/auth.decorator.ts +0 -4
- package/dist/templates/backend/application/src/@aurora/decorators/index.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/authentication.module.spec.ts +7 -27
- package/dist/templates/backend/application/src/@aurora/modules/authentication/authentication.module.ts +17 -12
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/anonymous-account.spec.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/anonymous-account.ts +3 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/errors/index.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/errors/token-issuance-disabled.error.ts +20 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/index.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/account-cache-invalidator.port.ts +17 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/account-cache-invalidator.token.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/account-loader.port.ts +55 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/authentication-strategy.port.ts +10 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/index.ts +12 -10
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/ports/jwt-signer.port.ts +10 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/resolve-authentication-mode.spec.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/index.ts +5 -4
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/factory/authentication-strategy.factory.spec.ts +14 -27
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/factory/authentication-strategy.factory.ts +9 -5
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/guards/authentication-jwt.guard.spec.ts +16 -17
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/guards/authentication-jwt.guard.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/guards/authorization-permissions.guard.ts +1 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/guards/index.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/providers/hub-session-manager.provider.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/providers/jwt-signer.provider.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/aurora-hub/aurora-hub-consumer.adapter.ts +18 -5
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/aurora-hub/index.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/authentication-cache-invalidator.adapter.spec.ts +56 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/authentication-cache-invalidator.adapter.ts +28 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/cache-key.ts +9 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/index.ts +11 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/jwt-passport.strategy.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/anonymous-account-loader.adapter.spec.ts +3 -3
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/anonymous-account-loader.adapter.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/jwt-signer.adapter.spec.ts +222 -25
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/jwt-signer.adapter.ts +62 -12
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/local-provider-cache-invalidation.spec.ts +84 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/local-provider.adapter.spec.ts +158 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/local-provider.adapter.ts +30 -5
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/warnings/authentication-boot-warning.spec.ts +9 -8
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/warnings/authentication-boot-warning.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/criteria/criteria-config.module.ts +15 -8
- package/dist/templates/backend/application/src/@aurora/modules/criteria/index.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/graphql/core.graphql +197 -252
- package/dist/templates/backend/application/src/@aurora/modules/graphql/graphql-config.module.ts +3 -3
- package/dist/templates/backend/application/src/@aurora/modules/graphql/guards/gql-throttler.guard.spec.ts +7 -6
- package/dist/templates/backend/application/src/@aurora/modules/graphql/index.ts +3 -3
- package/dist/templates/backend/application/src/@aurora/modules/graphql/schema-store.module.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/event-dispatcher.spec.ts +175 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/event-dispatcher.ts +37 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/handler-registry.module.ts +24 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/handler.decorator.ts +21 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/index.ts +4 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/keyed-handler-registry.spec.ts +171 -0
- package/dist/templates/backend/application/src/@aurora/modules/handler-registry/keyed-handler-registry.ts +46 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/app-version.provider.spec.ts +65 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/app-version.provider.ts +113 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/health.controller.spec.ts +50 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/health.controller.ts +33 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/health.module.ts +20 -0
- package/dist/templates/backend/application/src/@aurora/modules/health/index.ts +3 -0
- package/dist/templates/backend/application/src/@aurora/modules/index.ts +10 -5
- package/dist/templates/backend/application/src/@aurora/modules/lang/core-get-fallback-lang-from-json.service.ts +5 -3
- package/dist/templates/backend/application/src/@aurora/modules/lang/core-get-langs-from-json.service.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/lang/core-langs.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/lang/index.ts +3 -3
- package/dist/templates/backend/application/src/@aurora/modules/mailer/index.ts +2 -1
- package/dist/templates/backend/application/src/@aurora/modules/mailer/mailer-client.module.spec.ts +41 -33
- package/dist/templates/backend/application/src/@aurora/modules/mailer/mailer-client.module.ts +4 -4
- package/dist/templates/backend/application/src/@aurora/modules/mailer/mailer-smtp-transport.service.ts +4 -2
- package/dist/templates/backend/application/src/@aurora/modules/pdf/index.ts +7 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdf-document.types.ts +48 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdf-isolation.spec.ts +17 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdf-renderer.service.ts +12 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdfmake/index.ts +5 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdfmake/pdfmake-renderer.service.spec.ts +58 -0
- package/dist/templates/backend/application/src/@aurora/modules/pdf/pdfmake/pdfmake-renderer.service.ts +123 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/aurora-report.token.ts +11 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/execute-report.service.spec.ts +154 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/execute-report.service.ts +112 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/index.ts +82 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-cardinality.guard.spec.ts +297 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-cardinality.guard.ts +180 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-cube.types.ts +409 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-cube.validator.spec.ts +289 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-cube.validator.ts +98 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-db-pool.preflight.spec.ts +241 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-db-pool.provider.spec.ts +95 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-db-pool.provider.ts +74 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-db-pool.token.ts +17 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-engine.module.spec.ts +119 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-engine.module.ts +105 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-preflight.service.ts +152 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-query.builder.spec.ts +451 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-query.builder.ts +319 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-registry.spec.ts +176 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-registry.ts +47 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-selection.validator.spec.ts +104 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-selection.validator.ts +64 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-tenant.scoper.spec.ts +232 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-tenant.scoper.ts +132 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/result-modes/client-mode.spec.ts +157 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/result-modes/client-mode.ts +93 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/result-modes/server-mode.spec.ts +289 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/result-modes/server-mode.ts +259 -0
- package/dist/templates/backend/application/src/@aurora/modules/server-static/index.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/services/index.ts +2 -3
- package/dist/templates/backend/application/src/@aurora/services/logger.service.ts +20 -6
- package/dist/templates/backend/application/src/@aurora/shared.module.ts +11 -10
- package/dist/templates/backend/application/src/@bridges/bridges.module.ts +33 -4
- package/dist/templates/backend/application/src/@bridges/production-planning/operator-account/index.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/production-planning/operator-account/ports/index.ts +2 -0
- package/dist/templates/backend/application/src/@bridges/production-planning/operator-account/ports/production-planning-operator-account-reader.port.ts +29 -0
- package/dist/templates/backend/application/src/@bridges/production-planning/operator-account/ports/production-planning-operator-account-reader.token.ts +3 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/adapters/index.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/adapters/storage-account-file-manager.adapter.spec.ts +90 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/adapters/storage-account-file-manager.adapter.ts +36 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/index.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/ports/index.ts +2 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/ports/storage-account-file-manager.port.ts +47 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/file-manager/ports/storage-account-file-manager.token.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/adapters/index.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/adapters/storage-account-signed-url.adapter.spec.ts +69 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/adapters/storage-account-signed-url.adapter.ts +37 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/index.ts +1 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/ports/index.ts +2 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/ports/storage-account-signed-url.port.ts +21 -0
- package/dist/templates/backend/application/src/@bridges/storage-account/signed-url/ports/storage-account-signed-url.token.ts +1 -0
- package/dist/templates/backend/application/src/@config/bullmq/index.ts +1 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-drizzle-schema.spec.ts +238 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-drizzle-schema.ts +335 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-field-schemas.spec.ts +92 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-field-schemas.ts +158 -0
- package/dist/templates/backend/application/src/@config/drizzle/drizzle-migrations-journal.config.ts +31 -0
- package/dist/templates/backend/application/src/@config/drizzle/drizzle-migrations.module.spec.ts +153 -0
- package/dist/templates/backend/application/src/@config/drizzle/drizzle-migrations.module.ts +91 -0
- package/dist/templates/backend/application/src/@config/drizzle/index.ts +3 -0
- package/dist/templates/backend/application/src/@config/index.ts +6 -1
- package/dist/templates/backend/application/src/@config/lang/index.ts +1 -0
- package/dist/templates/backend/application/src/@config/lang/lang.providers.ts +26 -0
- package/dist/templates/backend/application/src/@config/mailer/index.ts +1 -1
- package/dist/templates/backend/application/src/@config/mailer/mailer-transport.module.ts +5 -1
- package/dist/templates/backend/application/src/@config/pdf/index.ts +1 -0
- package/dist/templates/backend/application/src/@config/pdf/pdf-renderer.module.spec.ts +53 -0
- package/dist/templates/backend/application/src/@config/pdf/pdf-renderer.module.ts +17 -0
- package/dist/templates/backend/application/src/@config/storage-account/index.ts +1 -0
- package/dist/templates/backend/application/src/@config/storage-account/storage-account.providers.spec.ts +48 -0
- package/dist/templates/backend/application/src/@config/storage-account/storage-account.providers.ts +34 -0
- package/dist/templates/backend/application/src/app.controller.spec.ts +2 -2
- package/dist/templates/backend/application/src/app.controller.ts +1 -1
- package/dist/templates/backend/application/src/app.module.ts +39 -7
- package/dist/templates/backend/application/src/database/migrations/0001_create_example_demo_table.sql +9 -0
- package/dist/templates/backend/application/src/database/migrations/0002_backfill_custom_field_group_entity_types.sql +19 -0
- package/dist/templates/backend/application/src/database/migrations/0003_create_production_order_header_code_sequence.sql +22 -0
- package/dist/templates/backend/application/src/database/migrations/0004_remove_null_elements_from_array_columns.sql +37 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705093120_baseline/migration.sql +503 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705093120_baseline/snapshot.json +6287 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705095048_gap-finder/migration.sql +482 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705095048_gap-finder/snapshot.json +12646 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705144001_gap-finder-fixes/migration.sql +38 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260705144001_gap-finder-fixes/snapshot.json +12853 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706090131_gap-finder-fx-normalization/migration.sql +17 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706090131_gap-finder-fx-normalization/snapshot.json +13090 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706102144_gap-finder-reported-currency/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706102144_gap-finder-reported-currency/snapshot.json +13103 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706104434_gap-finder-market-share-engine-version/migration.sql +4 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706104434_gap-finder-market-share-engine-version/snapshot.json +13123 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706121044_gap-finder-historical-price/migration.sql +17 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706121044_gap-finder-historical-price/snapshot.json +13357 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706143916_gap-finder-backtest-run-state-block/migration.sql +7 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260706143916_gap-finder-backtest-run-state-block/snapshot.json +13443 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260707080202_business-partner-portal/migration.sql +266 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260707080202_business-partner-portal/snapshot.json +17183 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260710072059_bpp-supplier-document-invoice-unique/migration.sql +18 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260710072059_bpp-supplier-document-invoice-unique/snapshot.json +17183 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260712072603_busy_mystique/migration.sql +177 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260712072603_busy_mystique/snapshot.json +19569 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260714215357_custom-fields/migration.sql +85 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260714215357_custom-fields/snapshot.json +20741 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715072820_gap-finder-source-registry-latency/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715072820_gap-finder-source-registry-latency/snapshot.json +20754 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715110357_gap-finder-peer-group-curation-reason/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715110357_gap-finder-peer-group-curation-reason/snapshot.json +20767 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715151843_add-common-lang/migration.sql +22 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260715151843_add-common-lang/snapshot.json +21066 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260716165704_add_pivot_table_equipment_process/migration.sql +8 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260716165704_add_pivot_table_equipment_process/snapshot.json +21089 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260717132829_common-country/migration.sql +42 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260717132829_common-country/snapshot.json +21661 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719084905_custom-field-group-label-i18n-embedded/migration.sql +5 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719084905_custom-field-group-label-i18n-embedded/snapshot.json +21661 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719175835_add-custom-field-group-entity-types/migration.sql +2 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719175835_add-custom-field-group-entity-types/snapshot.json +21695 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719235605_add-custom-field-entity-registry/migration.sql +13 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260719235605_add-custom-field-entity-registry/snapshot.json +21866 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260720094932_drop-custom-field-group-entity-pivot/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260720094932_drop-custom-field-group-entity-pivot/snapshot.json +21701 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260722150640_close-labeli18n-rename-and-tag-index-drift/migration.sql +12 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260722150640_close-labeli18n-rename-and-tag-index-drift/snapshot.json +21706 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260722165358_normalize-legacy-index-names/migration.sql +470 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260722165358_normalize-legacy-index-names/snapshot.json +21767 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260728173835_drop-iam-tag-custom-field-value/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260728173835_drop-iam-tag-custom-field-value/snapshot.json +21391 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260804193217_align-custom-field-option-i18n/migration.sql +3 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260804193217_align-custom-field-option-i18n/snapshot.json +21394 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260818175624_drop-gap-finder-tables/migration.sql +46 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260818175624_drop-gap-finder-tables/snapshot.json +14170 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260822160309_rename-position-total-processed-weight/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260822160309_rename-position-total-processed-weight/snapshot.json +14172 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260830220002_add-impersonation-credential/migration.sql +32 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260830220002_add-impersonation-credential/snapshot.json +14204 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260902105452_mask-oauth-token-columns/migration.sql +2 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260902105452_mask-oauth-token-columns/snapshot.json +14204 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260903214717_add-biller-master-data-tables/migration.sql +145 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260903214717_add-biller-master-data-tables/snapshot.json +16167 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904195613_simplify-biller-tariff-model/migration.sql +42 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904195613_simplify-biller-tariff-model/snapshot.json +15944 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904235448_add-biller-billing-run-pipeline/migration.sql +144 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904235448_add-biller-billing-run-pipeline/snapshot.json +17910 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904235725_add-biller-invoice-number-sequence/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260904235725_add-biller-invoice-number-sequence/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260905090449_make-remittance-run-index-non-unique/migration.sql +2 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260905090449_make-remittance-run-index-non-unique/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907223122_normalize-tools-native-enums/migration.sql +37 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907223122_normalize-tools-native-enums/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907224811_normalize-lacrem-native-enums/migration.sql +19 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907224811_normalize-lacrem-native-enums/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907225915_normalize-sap-integration-native-enums/migration.sql +58 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907225915_normalize-sap-integration-native-enums/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907231830_normalize-iam-native-enums/migration.sql +19 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907231830_normalize-iam-native-enums/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907232903_normalize-o-auth-native-enums/migration.sql +37 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260907232903_normalize-o-auth-native-enums/snapshot.json +17921 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260914212920_add-biller-billing-cycle-master/migration.sql +79 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260914212920_add-biller-billing-cycle-master/snapshot.json +17983 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260915072010_add-biller-charge-billed-by-billing-run/migration.sql +11 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260915072010_add-biller-charge-billed-by-billing-run/snapshot.json +18017 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260915113209_add-iam-account-has-add-child-tenants/migration.sql +1 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260915113209_add-iam-account-has-add-child-tenants/snapshot.json +17760 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260916230702_date-columns-to-real-date/migration.sql +22 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260916230702_date-columns-to-real-date/snapshot.json +18031 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260918120918_drop-biller-tables/migration.sql +14 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260918120918_drop-biller-tables/snapshot.json +14217 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260918121214_purge-biller-rows/migration.sql +28 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/20260918121214_purge-biller-rows/snapshot.json +14217 -0
- package/dist/templates/backend/application/src/database/migrations/drizzle/README.md +199 -0
- package/dist/templates/backend/application/src/database/procedures/calculate_order_total/1.sql +18 -0
- package/dist/templates/backend/application/src/database/procedures/production_planning_set_production_order_header_code/1.sql +38 -0
- package/dist/templates/backend/application/src/database/procedures/production_planning_set_production_order_position_code/1.sql +33 -0
- package/dist/templates/backend/application/src/database/procedures/production_planning_trg_set_production_order_header_code/1.sql +8 -0
- package/dist/templates/backend/application/src/database/procedures/production_planning_trg_set_production_order_position_code/1.sql +8 -0
- package/dist/templates/backend/application/src/main.ts +27 -19
- package/dist/templates/backend/application/src/repl.ts +2 -2
- package/dist/templates/backend/application/test/app.e2e-spec.ts +2 -1
- package/dist/templates/backend/application/test/vitest-setup.ts +13 -0
- package/dist/templates/backend/application/tsconfig.build.json +3 -1
- package/dist/templates/backend/application/tsconfig.json +8 -17
- package/dist/templates/backend/application/vitest.config.e2e.ts +24 -0
- package/dist/templates/backend/application/vitest.config.ts +18 -0
- package/dist/templates/backend/env/.env +8 -0
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/authorization-code.module.ts +3 -3
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/controllers/auth.controller.spec.ts +24 -38
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/controllers/auth.controller.ts +2 -3
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/controllers/index.ts +1 -0
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/pkce/index.ts +2 -0
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/pkce/pkce-helpers.spec.ts +2 -4
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/pkce/pkce-verifier-store.service.spec.ts +1 -1
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-create-app.controller.ts +31 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-delete-app-by-id.controller.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-find-app-by-id.controller.ts +31 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-find-app.controller.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-get-apps.controller.ts +41 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-my-preferences-app.controller.ts +31 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-paginate-apps.controller.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-save-my-launchpad-layout-app.controller.ts +41 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-toggle-favorite-app.controller.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/controllers/hub-update-app-by-id.controller.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/dto/hub-app.dto.ts +115 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/dto/hub-create-app.dto.ts +85 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/dto/hub-update-app-by-id.dto.ts +78 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/dto/hub-update-apps.dto.ts +78 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/dto/index.ts +8 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/graphql/hub-app.graphql +256 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/index.ts +87 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-create-app.resolver.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-delete-app-by-id.resolver.ts +28 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-find-app-by-id.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-find-app.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-get-apps.resolver.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-my-preferences-app.resolver.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-paginate-apps.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-save-my-launchpad-layout-app.resolver.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-toggle-favorite-app.resolver.ts +30 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app/resolvers/hub-update-app-by-id.resolver.ts +28 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-create-app-account.controller.ts +29 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-create-apps-accounts.controller.ts +30 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-delete-app-account-by-id.controller.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-delete-apps-accounts.controller.ts +35 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-find-app-account-by-id.controller.ts +35 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-find-app-account.controller.ts +36 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-get-apps-accounts.controller.ts +36 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-paginate-apps-accounts.controller.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/controllers/hub-update-app-account-by-id.controller.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/dto/hub-app-account.dto.ts +59 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/dto/hub-create-app-account.dto.ts +44 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/dto/hub-update-app-account-by-id.dto.ts +44 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/dto/hub-update-apps-accounts.dto.ts +44 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/dto/index.ts +8 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/graphql/hub-app-account.graphql +82 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/index.ts +81 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-create-app-account.resolver.ts +25 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-create-apps-accounts.resolver.ts +25 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-delete-app-account-by-id.resolver.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-delete-apps-accounts.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-find-app-account-by-id.resolver.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-find-app-account.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-get-apps-accounts.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-paginate-apps-accounts.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/app-account/resolvers/hub-update-app-account-by-id.resolver.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/hub-per-app-permission.seeder.spec.ts +224 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/hub-per-app-permission.seeder.ts +131 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/hub.module.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@api/hub/hub.seeder.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/create/hub-create-app.handler.spec.ts +521 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/create/hub-create-app.handler.ts +234 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/create/hub-create-app.service.ts +19 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/delete/hub-delete-app-by-id.handler.spec.ts +419 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/delete/hub-delete-app-by-id.handler.ts +164 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/delete/hub-delete-app-by-id.service.ts +24 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app-by-id.handler.spec.ts +132 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app-by-id.handler.ts +35 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app-by-id.service.ts +22 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.handler.spec.ts +172 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.handler.ts +43 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.handler.spec.ts +331 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.handler.ts +84 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/my-preferences/hub-my-preferences-app.handler.spec.ts +146 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/my-preferences/hub-my-preferences-app.handler.ts +38 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/paginate/hub-paginate-apps.handler.spec.ts +179 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/paginate/hub-paginate-apps.handler.ts +38 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/paginate/hub-paginate-apps.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/save-my-launchpad-layout/hub-save-my-launchpad-layout-app.handler.spec.ts +354 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/save-my-launchpad-layout/hub-save-my-launchpad-layout-app.handler.ts +161 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/toggle-favorite/hub-toggle-favorite-app.handler.spec.ts +192 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/toggle-favorite/hub-toggle-favorite-app.handler.ts +60 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/update/hub-update-app-by-id.handler.spec.ts +274 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/update/hub-update-app-by-id.handler.ts +82 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/update/hub-update-app-by-id.service.ts +25 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/domain/hub-app-permission.ts +18 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/domain/hub-app.field-schema.ts +101 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/domain/index.ts +2 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/index.ts +79 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/infrastructure/drizzle/hub-drizzle-app.repository.ts +43 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/infrastructure/drizzle/hub-drizzle-app.schema.ts +40 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-assert-no-accounts-reference.function.spec.ts +230 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-assert-no-accounts-reference.function.ts +106 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-sanitize-eager-loads-vs-relation-order.spec.ts +226 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-sanitize-eager-loads.function.spec.ts +73 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-sanitize-eager-loads.function.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-validate-redirect-uri.function.spec.ts +41 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/hub-validate-redirect-uri.function.ts +49 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/functions/index.ts +3 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/shared/index.ts +1 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/create/hub-create-app-account.handler.ts +28 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/create/hub-create-app-account.service.ts +25 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/create/hub-create-apps-accounts.handler.ts +26 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/create/hub-create-apps-accounts.service.ts +19 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/delete/hub-delete-app-account-by-id.handler.ts +41 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/delete/hub-delete-app-account-by-id.service.ts +37 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/delete/hub-delete-apps-accounts.handler.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/delete/hub-delete-apps-accounts.service.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/find/hub-find-app-account-by-id.handler.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/find/hub-find-app-account-by-id.service.ts +31 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/find/hub-find-app-account.handler.ts +29 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/find/hub-find-app-account.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/get/hub-get-apps-accounts.handler.ts +23 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/get/hub-get-apps-accounts.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/paginate/hub-paginate-apps-accounts.handler.ts +23 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/paginate/hub-paginate-apps-accounts.service.ts +27 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/update/hub-update-app-account-by-id.handler.ts +64 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/application/update/hub-update-app-account-by-id.service.ts +33 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/domain/hub-app-account.field-schema.ts +53 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/domain/index.ts +1 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/index.ts +82 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/infrastructure/drizzle/hub-drizzle-app-account.repository.ts +40 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app-account/infrastructure/drizzle/hub-drizzle-app-account.schema.ts +17 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/hub.relations.ts +23 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/hub.seed.ts +117 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/index.ts +14 -0
- package/dist/templates/backend/packages/hub/src/@bridges/providers/iam-bounded-context-writer.bridge.ts +8 -0
- package/dist/templates/backend/packages/hub/src/@bridges/providers/iam-permission-writer.bridge.ts +8 -0
- package/dist/templates/backend/packages/hub/src/@bridges/providers/o-auth-application-provisioner.bridge.ts +8 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-app-account-composite-key.e2e-spec.ts +282 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-app-deprovisioning.e2e-spec.ts +472 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-app-provisioning.e2e-spec.ts +345 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-per-app-access.e2e-spec.ts +655 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-check-password-me-account.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-check-unique-email-account.controller.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-check-unique-username-account.controller.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-count-account.controller.ts +32 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-create-account.controller.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-delete-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-delete-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-find-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-find-account.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-get-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-me-account.controller.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-paginate-accounts.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-paginate-with-tenant-constraint-accounts.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-account-by-id.controller.ts +13 -8
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-accounts.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-me-account.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-account.dto.ts +20 -11
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-create-account.dto.ts +9 -29
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-update-account-by-id.dto.ts +9 -29
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-update-accounts.dto.ts +9 -21
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/graphql/iam-account.graphql +47 -44
- package/dist/templates/backend/packages/iam/src/@api/iam/account/index.ts +40 -34
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-check-password-me-account.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-check-unique-email-account.resolver.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-check-unique-username-account.resolver.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-count-account.resolver.ts +25 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-create-account.resolver.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-delete-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-delete-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-find-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-find-account.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-get-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-me-account.resolver.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-paginate-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-paginate-with-tenant-constraint-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-account-by-id.resolver.ts +12 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-me-account.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-create-bounded-context.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-create-bounded-contexts.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-delete-bounded-context-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-delete-bounded-contexts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-find-bounded-context-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-find-bounded-context.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-get-bounded-contexts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-paginate-bounded-contexts.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-update-bounded-context-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-update-bounded-contexts.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/dto/iam-bounded-context.dto.ts +3 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/graphql/iam-bounded-context.graphql +24 -12
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/index.ts +24 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-create-bounded-context.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-create-bounded-contexts.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-delete-bounded-context-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-delete-bounded-contexts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-find-bounded-context-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-find-bounded-context.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-get-bounded-contexts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-paginate-bounded-contexts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-update-bounded-context-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-update-bounded-contexts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/iam-bootstrap.seeder.spec.ts +46 -22
- package/dist/templates/backend/packages/iam/src/@api/iam/iam-bootstrap.seeder.ts +36 -23
- package/dist/templates/backend/packages/iam/src/@api/iam/iam.module.ts +46 -20
- package/dist/templates/backend/packages/iam/src/@api/iam/iam.seeder.ts +7 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-create-permission.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-create-permissions.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-delete-permission-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-delete-permissions.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-find-permission-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-find-permission.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-get-permissions.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-paginate-permissions.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-update-permission-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-update-permissions.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/dto/iam-permission.dto.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/graphql/iam-permission.graphql +18 -15
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/index.ts +24 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-create-permission.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-create-permissions.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-delete-permission-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-delete-permissions.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-find-permission-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-find-permission.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-get-permissions.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-paginate-permissions.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-update-permission-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-update-permissions.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-create-permission-role.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-create-permissions-roles.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-delete-permission-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-delete-permissions-roles.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-find-permission-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-find-permission-role.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-get-permissions-roles.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-paginate-permissions-roles.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-update-permission-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-update-permissions-roles.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/dto/iam-permission-role.dto.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/graphql/iam-permission-role.graphql +21 -9
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/index.ts +24 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-create-permission-role.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-create-permissions-roles.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-delete-permission-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-delete-permissions-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-find-permission-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-find-permission-role.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-get-permissions-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-paginate-permissions-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-update-permission-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-update-permissions-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-create-role.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-create-roles.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-delete-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-delete-roles.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-find-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-find-role.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-get-roles.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-inherit-permissions-role-role.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-paginate-roles.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-update-role-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-update-roles.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/dto/iam-role.dto.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/graphql/iam-role.graphql +19 -19
- package/dist/templates/backend/packages/iam/src/@api/iam/role/index.ts +26 -26
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-create-role.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-create-roles.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-delete-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-delete-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-find-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-find-role.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-get-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-inherit-permissions-role-role.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-paginate-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-update-role-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-update-roles.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-create-role-account.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-create-roles-accounts.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-delete-role-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-delete-roles-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-find-role-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-find-role-account.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-get-roles-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-paginate-roles-accounts.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-update-role-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-update-roles-accounts.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/dto/iam-role-account.dto.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/graphql/iam-role-account.graphql +19 -9
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/index.ts +24 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-create-role-account.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-create-roles-accounts.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-delete-role-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-delete-roles-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-find-role-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-find-role-account.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-get-roles-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-paginate-roles-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-update-role-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-update-roles-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-create-tag.controller.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-delete-tag-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-find-tag-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-find-tag.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-get-tags.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-paginate-tags.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-update-tag-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/graphql/iam-tag.graphql +9 -9
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/index.ts +18 -18
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-create-tag.resolver.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-delete-tag-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-find-tag-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-find-tag.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-get-tags.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-paginate-tags.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-update-tag-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-create-tenant.controller.ts +7 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-create-tenants.controller.ts +7 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-delete-tenant-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-delete-tenants.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-find-tenant-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-find-tenant.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-get-tenants.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-get-with-tenant-constraint-tenants.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-paginate-tenants.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-paginate-with-tenant-constraint-tenants.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-update-tenant-by-id.controller.ts +13 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-update-tenants.controller.ts +13 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/dto/iam-tenant.dto.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/graphql/iam-tenant.graphql +24 -18
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/index.ts +28 -28
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-create-tenant.resolver.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-create-tenants.resolver.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-delete-tenant-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-delete-tenants.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-find-tenant-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-find-tenant.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-get-tenants.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-get-with-tenant-constraint-tenants.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-paginate-tenants.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-paginate-with-tenant-constraint-tenants.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-update-tenant-by-id.resolver.ts +12 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-update-tenants.resolver.ts +12 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-create-tenant-account.controller.ts +7 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-create-tenants-accounts.controller.ts +7 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-delete-tenant-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-delete-tenants-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-find-tenant-account-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-find-tenant-account.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-get-tenants-accounts.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-paginate-tenants-accounts.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-update-tenant-account-by-id.controller.ts +13 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-update-tenants-accounts.controller.ts +13 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/dto/iam-tenant-account.dto.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/graphql/iam-tenant-account.graphql +21 -9
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/index.ts +24 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-create-tenant-account.resolver.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-create-tenants-accounts.resolver.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-delete-tenant-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-delete-tenants-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-find-tenant-account-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-find-tenant-account.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-get-tenants-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-paginate-tenants-accounts.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-update-tenant-account-by-id.resolver.ts +12 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-update-tenants-accounts.resolver.ts +12 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-count-user.controller.ts +32 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-delete-user-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-delete-users.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-find-user-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-find-user.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-forgot-password-user.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-get-users.controller.ts +6 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-paginate-users.controller.ts +5 -6
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-reset-password-user.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-update-user-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-update-users.controller.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/dto/iam-user.dto.ts +3 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/dto/index.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/user/graphql/iam-user.graphql +20 -18
- package/dist/templates/backend/packages/iam/src/@api/iam/user/index.ts +30 -24
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-count-user.resolver.ts +25 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-delete-user-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-delete-users.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-find-user-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-find-user.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-forgot-password-user.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-get-users.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-paginate-users.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-reset-password-user.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-update-user-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-update-users.resolver.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-password-me/iam-check-password-me-account.handler.ts +4 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-unique-email/iam-check-unique-email-account.handler.spec.ts +75 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-unique-email/iam-check-unique-email-account.handler.ts +5 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-unique-username/iam-check-unique-username-account.handler.spec.ts +75 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-unique-username/iam-check-unique-username-account.handler.ts +5 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/count/iam-count-account.handler.ts +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/count/iam-count-account.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-account.handler.spec.ts +236 -51
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-account.handler.ts +99 -42
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-account.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-accounts.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/delete/iam-delete-account-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/delete/iam-delete-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/delete/iam-delete-accounts.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/delete/iam-delete-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/get/iam-get-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/get/iam-get-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/iam-account.payload-types.ts +34 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/me/iam-me-account.handler.spec.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/me/iam-me-account.handler.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate/iam-paginate-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate/iam-paginate-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate-with-tenant-constraint/iam-paginate-with-tenant-constraint-accounts.handler.ts +4 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-account-by-id.handler.spec.ts +497 -38
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-account-by-id.handler.ts +171 -51
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-account-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-accounts.handler.spec.ts +299 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-accounts.handler.ts +107 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-accounts.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/subscribers/iam-account-updated-cache-invalidator.subscriber.spec.ts +62 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/subscribers/iam-account-updated-cache-invalidator.subscriber.ts +59 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update-me/iam-update-me-account.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/account/domain/iam-account.field-schema.ts +15 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/account/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/account/index.ts +45 -38
- package/dist/templates/backend/packages/iam/src/@app/iam/account/infrastructure/drizzle/iam-drizzle-account.repository.ts +144 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/infrastructure/drizzle/iam-drizzle-account.schema.ts +46 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/create/iam-create-bounded-context.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/create/iam-create-bounded-context.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/create/iam-create-bounded-contexts.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/create/iam-create-bounded-contexts.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/delete/iam-delete-bounded-context-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/delete/iam-delete-bounded-context-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/delete/iam-delete-bounded-contexts.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/delete/iam-delete-bounded-contexts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/get/iam-get-bounded-contexts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/get/iam-get-bounded-contexts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/paginate/iam-paginate-bounded-contexts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/paginate/iam-paginate-bounded-contexts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/update/iam-update-bounded-context-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/update/iam-update-bounded-context-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/update/iam-update-bounded-contexts.handler.ts +6 -9
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/update/iam-update-bounded-contexts.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/domain/iam-bounded-context.field-schema.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/index.ts +29 -29
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/infrastructure/drizzle/iam-drizzle-bounded-context.repository.ts +40 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/infrastructure/drizzle/iam-drizzle-bounded-context.schema.ts +33 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/iam.relations.ts +116 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/iam.seed.ts +45 -45
- package/dist/templates/backend/packages/iam/src/@app/iam/index.ts +25 -52
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/create/iam-create-permission.handler.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/create/iam-create-permission.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/create/iam-create-permissions.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/create/iam-create-permissions.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/delete/iam-delete-permission-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/delete/iam-delete-permission-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/delete/iam-delete-permissions.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/delete/iam-delete-permissions.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get/iam-get-permissions.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get/iam-get-permissions.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get-permissions-without-role/iam-get-permissions-without-role.handler.spec.ts +121 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get-permissions-without-role/iam-get-permissions-without-role.handler.ts +73 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/paginate/iam-paginate-permissions.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/paginate/iam-paginate-permissions.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/update/iam-update-permission-by-id.handler.ts +12 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/update/iam-update-permission-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/update/iam-update-permissions.handler.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/update/iam-update-permissions.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/domain/iam-permission.field-schema.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/index.ts +32 -29
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/infrastructure/drizzle/iam-drizzle-permission.repository.ts +100 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/infrastructure/drizzle/iam-drizzle-permission.schema.ts +23 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/create/iam-create-permission-role.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/create/iam-create-permission-role.service.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/create/iam-create-permissions-roles.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/create/iam-create-permissions-roles.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/delete/iam-delete-permission-role-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/delete/iam-delete-permission-role-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/delete/iam-delete-permissions-roles.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/delete/iam-delete-permissions-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/get/iam-get-permissions-roles.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/get/iam-get-permissions-roles.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/paginate/iam-paginate-permissions-roles.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/paginate/iam-paginate-permissions-roles.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/update/iam-update-permission-role-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/update/iam-update-permission-role-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/update/iam-update-permissions-roles.handler.ts +6 -9
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/update/iam-update-permissions-roles.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/domain/iam-permission-role.field-schema.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/index.ts +29 -29
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/infrastructure/drizzle/iam-drizzle-permission-role.repository.ts +40 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/infrastructure/drizzle/iam-drizzle-permission-role.schema.ts +14 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/create/iam-create-role.handler.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/create/iam-create-role.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/create/iam-create-roles.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/create/iam-create-roles.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/delete/iam-delete-role-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/delete/iam-delete-role-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/delete/iam-delete-roles.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/delete/iam-delete-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/get/iam-get-roles.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/get/iam-get-roles.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/inherit-permissions-role/iam-inherit-permissions-role-role.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/paginate/iam-paginate-roles.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/paginate/iam-paginate-roles.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/update/iam-update-role-by-id.handler.ts +12 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/update/iam-update-role-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/update/iam-update-roles.handler.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/update/iam-update-roles.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/domain/iam-role.field-schema.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/role/index.ts +30 -30
- package/dist/templates/backend/packages/iam/src/@app/iam/role/infrastructure/drizzle/iam-drizzle-role.repository.ts +149 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/role/infrastructure/drizzle/iam-drizzle-role.schema.ts +33 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/create/iam-create-role-account.handler.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/create/iam-create-role-account.service.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/create/iam-create-roles-accounts.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/create/iam-create-roles-accounts.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/delete/iam-delete-role-account-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/delete/iam-delete-role-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/delete/iam-delete-roles-accounts.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/delete/iam-delete-roles-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/get/iam-get-roles-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/get/iam-get-roles-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/paginate/iam-paginate-roles-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/paginate/iam-paginate-roles-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/update/iam-update-role-account-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/update/iam-update-role-account-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/update/iam-update-roles-accounts.handler.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/update/iam-update-roles-accounts.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/domain/iam-role-account.field-schema.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/index.ts +29 -29
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/infrastructure/drizzle/iam-drizzle-role-account.repository.ts +40 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/infrastructure/drizzle/iam-drizzle-role-account.schema.ts +14 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/functions/iam-create-permissions-from-roles.function.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/functions/iam-resolve-account-tenants.function.spec.ts +100 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/functions/iam-resolve-account-tenants.function.ts +59 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/iam-bootstrap.constants.ts +19 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/index.ts +4 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/create/iam-create-tag.handler.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/create/iam-create-tag.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/delete/iam-delete-tag-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/delete/iam-delete-tag-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/get/iam-get-tags.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/get/iam-get-tags.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/paginate/iam-paginate-tags.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/paginate/iam-paginate-tags.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/update/iam-update-tag-by-id.handler.ts +12 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/update/iam-update-tag-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/domain/iam-tag.field-schema.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/index.ts +23 -23
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/infrastructure/drizzle/iam-drizzle-tag.repository.ts +35 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/infrastructure/drizzle/iam-drizzle-tag.schema.ts +21 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenant.handler.spec.ts +195 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenant.handler.ts +85 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenant.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenants.handler.spec.ts +98 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenants.handler.ts +53 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/create/iam-create-tenants.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/delete/iam-delete-tenant-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/delete/iam-delete-tenant-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/delete/iam-delete-tenants.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/delete/iam-delete-tenants.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get/iam-get-tenants.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get/iam-get-tenants.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get-with-tenant-constraint/iam-get-with-tenant-constraint-tenants.handler.ts +4 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate/iam-paginate-tenants.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate/iam-paginate-tenants.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate-with-tenant-constraint/iam-paginate-with-tenant-constraint-tenants.handler.ts +4 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenant-by-id.handler.spec.ts +222 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenant-by-id.handler.ts +83 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenant-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenants.handler.spec.ts +75 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenants.handler.ts +28 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenants.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/domain/iam-tenant.field-schema.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/index.ts +31 -31
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/drizzle/iam-drizzle-tenant.repository.ts +108 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/drizzle/iam-drizzle-tenant.schema.ts +35 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenant-account.handler.spec.ts +115 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenant-account.handler.ts +38 -9
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenant-account.service.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenants-accounts.handler.spec.ts +105 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenants-accounts.handler.ts +43 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/create/iam-create-tenants-accounts.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/delete/iam-delete-tenant-account-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/delete/iam-delete-tenant-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/delete/iam-delete-tenants-accounts.handler.ts +5 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/delete/iam-delete-tenants-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/get/iam-get-tenants-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/get/iam-get-tenants-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/paginate/iam-paginate-tenants-accounts.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/paginate/iam-paginate-tenants-accounts.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenant-account-by-id.handler.spec.ts +83 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenant-account-by-id.handler.ts +33 -11
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenant-account-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenants-accounts.handler.spec.ts +78 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenants-accounts.handler.ts +27 -10
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenants-accounts.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/domain/iam-tenant-account.field-schema.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/index.ts +29 -29
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/infrastructure/drizzle/iam-drizzle-tenant-account.repository.ts +40 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/infrastructure/drizzle/iam-drizzle-tenant-account.schema.ts +14 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/count/iam-count-user.handler.ts +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/count/iam-count-user.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/create/iam-create-user.handler.ts +5 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/create/iam-create-user.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/create/iam-create-users.handler.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/create/iam-create-users.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/delete/iam-delete-user-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/delete/iam-delete-user-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/delete/iam-delete-users.handler.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/delete/iam-delete-users.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-username-password.service.spec.ts +24 -14
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-username-password.service.ts +23 -21
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/forgot-password/iam-forgot-password-user.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/get/iam-get-users.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/get/iam-get-users.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/paginate/iam-paginate-users.handler.ts +4 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/paginate/iam-paginate-users.service.ts +7 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/reset-password/iam-reset-password-user.handler.ts +5 -7
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/update/iam-update-user-by-id.handler.ts +12 -8
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/update/iam-update-user-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/update/iam-update-users.handler.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/update/iam-update-users.service.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/domain/iam-user.field-schema.spec.ts +36 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/user/domain/iam-user.field-schema.ts +6 -6
- package/dist/templates/backend/packages/iam/src/@app/iam/user/domain/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/user/index.ts +42 -35
- package/dist/templates/backend/packages/iam/src/@app/iam/user/infrastructure/drizzle/iam-drizzle-user.repository.ts +40 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/user/infrastructure/drizzle/iam-drizzle-user.schema.ts +42 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-loader.adapter.spec.ts +827 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-loader.adapter.ts +223 -20
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-provisioner.adapter.spec.ts +282 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-provisioner.adapter.ts +121 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-operator-account-reader.adapter.spec.ts +63 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-operator-account-reader.adapter.ts +39 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/index.ts +3 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/ports/iam-account-provisioner.port.ts +88 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/ports/iam-account-provisioner.token.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/ports/index.ts +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/adapters/iam-bounded-context-seeder.adapter.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/adapters/iam-bounded-context-writer.adapter.spec.ts +156 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/adapters/iam-bounded-context-writer.adapter.ts +75 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/adapters/index.ts +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/ports/iam-bounded-context-writer.port.ts +49 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/ports/iam-bounded-context-writer.token.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/ports/index.ts +4 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/client/index.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/client/ports/index.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/adapters/iam-permission-seeder.adapter.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/adapters/iam-permission-writer.adapter.spec.ts +315 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/adapters/iam-permission-writer.adapter.ts +147 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/adapters/index.ts +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/index.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/ports/iam-permission-writer.port.ts +70 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/ports/iam-permission-writer.token.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/ports/index.ts +4 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/adapters/iam-tenant-writer.adapter.spec.ts +173 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/adapters/iam-tenant-writer.adapter.ts +63 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/adapters/index.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/index.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/ports/iam-tenant-writer.port.ts +54 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/ports/iam-tenant-writer.token.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/ports/index.ts +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/user/adapters/iam-credential-verifier.adapter.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/iam/user/adapters/index.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/providers/account-loader.bridge.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/providers/credential-verifier.bridge.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/providers/iam-bounded-context-seeder.bridge.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@bridges/providers/iam-permission-seeder.bridge.ts +2 -2
- package/dist/templates/backend/packages/iam/test/acceptance/iam/core-back-exception-status.e2e-spec.ts +286 -0
- package/dist/templates/backend/packages/iam/test/acceptance/iam/user-sensitive-fields-masking.e2e-spec.ts +289 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-count-access-token.controller.ts +32 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-delete-access-token-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-find-access-token-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-find-access-token.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-get-access-tokens.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-paginate-access-tokens.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-access-token.dto.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-create-access-token.dto.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-update-access-token-by-id.dto.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-update-access-tokens.dto.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/graphql/o-auth-access-token.graphql +25 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/index.ts +20 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-count-access-token.resolver.ts +25 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-delete-access-token-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-find-access-token-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-find-access-token.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-get-access-tokens.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-paginate-access-tokens.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-create-application.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-delete-application-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-find-application-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-find-application.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-get-applications.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-paginate-applications.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-update-application-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/o-auth-application.dto.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/o-auth-create-application.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/o-auth-update-application-by-id.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/o-auth-update-applications.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/graphql/o-auth-application.graphql +23 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/index.ts +18 -18
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-create-application.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-delete-application-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-find-application-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-find-application.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-get-applications.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-paginate-applications.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-update-application-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-create-application-client.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-create-applications-clients.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-delete-application-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-delete-applications-clients.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-find-application-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-find-application-client.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-get-applications-clients.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-paginate-applications-clients.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-update-application-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/dto/o-auth-application-client.dto.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/graphql/o-auth-application-client.graphql +13 -10
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/index.ts +22 -22
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-create-application-client.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-create-applications-clients.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-delete-application-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-delete-applications-clients.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-find-application-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-find-application-client.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-get-applications-clients.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-paginate-applications-clients.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-update-application-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-create-authorization-code.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-delete-authorization-code-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-delete-authorization-codes.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-find-authorization-code-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-find-authorization-code.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-get-authorization-codes.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-paginate-authorization-codes.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-update-authorization-code-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/dto/o-auth-authorization-code.dto.ts +3 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/graphql/o-auth-authorization-code.graphql +20 -17
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/index.ts +20 -20
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-create-authorization-code.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-delete-authorization-code-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-delete-authorization-codes.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-find-authorization-code-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-find-authorization-code.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-get-authorization-codes.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-paginate-authorization-codes.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-update-authorization-code-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-create-client.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-delete-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-find-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-find-client.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-get-clients.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-paginate-clients.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-update-client-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-client.dto.ts +6 -12
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-create-client.dto.ts +1 -8
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-update-client-by-id.dto.ts +1 -8
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-update-clients.dto.ts +1 -8
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/graphql/o-auth-client.graphql +16 -23
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/index.ts +18 -18
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-create-client.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-delete-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-find-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-find-client.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-get-clients.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-paginate-clients.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-update-client-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-find-credential-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-find-credential.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-get-credentials.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-paginate-credentials.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/dto/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/dto/o-auth-credential.dto.ts +24 -9
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/graphql/o-auth-credential.graphql +31 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/index.ts +9 -9
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-find-credential-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-find-credential.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-get-credentials.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-paginate-credentials.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-authorize.controller.spec.ts +33 -25
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-authorize.controller.ts +2 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-create-impersonate-token.controller.ts +73 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-create-token.controller.spec.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-create-token.controller.ts +3 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-get-jwks.controller.spec.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-get-jwks.controller.ts +1 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-logout.controller.spec.ts +52 -31
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-logout.controller.ts +6 -9
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-revoke-token.controller.spec.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-revoke-token.controller.ts +2 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-session.controller.spec.ts +13 -12
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-session.controller.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/graphql/flows.graphql +32 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/index.ts +18 -10
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-impersonate-token.resolver.ts +89 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-token.resolver.spec.ts +10 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-token.resolver.ts +8 -8
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-revoke-token.resolver.spec.ts +10 -8
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-revoke-token.resolver.ts +7 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth-bootstrap.seeder.spec.ts +111 -41
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth-bootstrap.seeder.ts +38 -23
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth.module.ts +20 -20
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth.seeder.ts +18 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-delete-refresh-token-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-find-refresh-token-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-find-refresh-token.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-get-refresh-tokens.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-paginate-refresh-tokens.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/dto/o-auth-create-refresh-token.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/dto/o-auth-refresh-token.dto.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/dto/o-auth-update-refresh-token-by-id.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/dto/o-auth-update-refresh-tokens.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/graphql/o-auth-refresh-token.graphql +23 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/index.ts +14 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-delete-refresh-token-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-find-refresh-token-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-find-refresh-token.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-get-refresh-tokens.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-paginate-refresh-tokens.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-create-scope.controller.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-delete-scope-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-find-scope-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-find-scope.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-get-scopes.controller.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-paginate-scopes.controller.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-update-scope-by-id.controller.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/dto/index.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/graphql/o-auth-scope.graphql +16 -13
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/index.ts +18 -18
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-create-scope.resolver.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-delete-scope-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-find-scope-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-find-scope.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-get-scopes.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-paginate-scopes.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-update-scope-by-id.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/count/o-auth-count-access-token.handler.ts +20 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/count/o-auth-count-access-token.service.ts +24 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/create/o-auth-create-access-token.handler.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/create/o-auth-create-access-token.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/delete/o-auth-delete-access-token-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/delete/o-auth-delete-access-token-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/get/o-auth-get-access-tokens.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/get/o-auth-get-access-tokens.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/paginate/o-auth-paginate-access-tokens.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/paginate/o-auth-paginate-access-tokens.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/domain/o-auth-access-token.field-schema.ts +8 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/index.ts +27 -21
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/infrastructure/drizzle/o-auth-drizzle-access-token.repository.ts +40 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/infrastructure/drizzle/o-auth-drizzle-access-token.schema.ts +35 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/create/o-auth-create-application.handler.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/create/o-auth-create-application.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/delete/o-auth-delete-application-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/delete/o-auth-delete-application-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-application-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-application-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-application.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-application.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/get/o-auth-get-applications.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/get/o-auth-get-applications.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/paginate/o-auth-paginate-applications.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/paginate/o-auth-paginate-applications.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/update/o-auth-update-application-by-id.handler.spec.ts +144 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/update/o-auth-update-application-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/update/o-auth-update-application-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/domain/o-auth-application.field-schema.spec.ts +20 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/domain/o-auth-application.field-schema.ts +6 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/index.ts +23 -23
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/infrastructure/drizzle/o-auth-drizzle-application.repository.ts +102 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/infrastructure/drizzle/o-auth-drizzle-application.schema.ts +32 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/create/o-auth-create-application-client.handler.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/create/o-auth-create-application-client.service.ts +6 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/create/o-auth-create-applications-clients.handler.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/create/o-auth-create-applications-clients.service.ts +7 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/delete/o-auth-delete-application-client-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/delete/o-auth-delete-application-client-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/delete/o-auth-delete-applications-clients.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/delete/o-auth-delete-applications-clients.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/get/o-auth-get-applications-clients.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/get/o-auth-get-applications-clients.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/paginate/o-auth-paginate-applications-clients.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/paginate/o-auth-paginate-applications-clients.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/update/o-auth-update-application-client-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/update/o-auth-update-application-client-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/domain/o-auth-application-client.field-schema.ts +2 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/index.ts +27 -27
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/infrastructure/drizzle/o-auth-drizzle-application-client.repository.ts +40 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/infrastructure/drizzle/o-auth-drizzle-application-client.schema.ts +14 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/create/o-auth-create-authorization-code.handler.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/create/o-auth-create-authorization-code.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/delete/o-auth-delete-authorization-code-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/delete/o-auth-delete-authorization-code-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/delete/o-auth-delete-authorization-codes.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/delete/o-auth-delete-authorization-codes.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/get/o-auth-get-authorization-codes.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/get/o-auth-get-authorization-codes.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/paginate/o-auth-paginate-authorization-codes.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/paginate/o-auth-paginate-authorization-codes.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/update/o-auth-update-authorization-code-by-id.handler.ts +12 -11
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/update/o-auth-update-authorization-code-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/domain/o-auth-authorization-code.field-schema.ts +5 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/index.ts +25 -25
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/infrastructure/drizzle/o-auth-drizzle-authorization-code.repository.ts +66 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/infrastructure/drizzle/o-auth-drizzle-authorization-code.schema.ts +42 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/create/o-auth-create-client.handler.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/create/o-auth-create-client.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/delete/o-auth-delete-client-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/delete/o-auth-delete-client-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-client-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-client-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-client.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-client.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/get/o-auth-get-clients.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/get/o-auth-get-clients.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/paginate/o-auth-paginate-clients.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/paginate/o-auth-paginate-clients.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/update/o-auth-update-client-by-id.handler.ts +14 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/update/o-auth-update-client-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/domain/o-auth-client.field-schema.ts +5 -12
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/index.ts +23 -23
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/infrastructure/drizzle/o-auth-drizzle-client.repository.ts +109 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/infrastructure/drizzle/o-auth-drizzle-client.schema.ts +35 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/create/o-auth-create-credential.service.spec.ts +62 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/create/o-auth-create-credential.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/get/o-auth-get-credentials.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/get/o-auth-get-credentials.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/paginate/o-auth-paginate-credentials.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/paginate/o-auth-paginate-credentials.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/domain/o-auth-credential.field-schema.ts +19 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/index.ts +18 -18
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/infrastructure/drizzle/o-auth-drizzle-credential.repository.ts +38 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/infrastructure/drizzle/o-auth-drizzle-credential.schema.ts +31 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/authorize/o-auth-authorize.handler.spec.ts +37 -35
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/authorize/o-auth-authorize.handler.ts +9 -18
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/o-auth-create-token.handler.spec.ts +12 -11
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/o-auth-create-token.handler.ts +5 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-authorization-code.service.spec.ts +72 -36
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-authorization-code.service.ts +26 -16
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-password.service.spec.ts +58 -24
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-password.service.ts +20 -11
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-refresh.service.spec.ts +126 -66
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-refresh.service.ts +50 -33
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/get-jwks/o-auth-get-jwks.handler.spec.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/get-jwks/o-auth-get-jwks.handler.ts +4 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/o-auth-create-impersonate-token.handler.spec.ts +351 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/o-auth-create-impersonate-token.handler.ts +117 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/services/o-auth-create-impersonate-token.service.spec.ts +242 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/services/o-auth-create-impersonate-token.service.ts +156 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/o-auth-revoke-token.handler.spec.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/o-auth-revoke-token.handler.ts +2 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/services/o-auth-revoke-token.service.spec.ts +134 -37
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/services/o-auth-revoke-token.service.ts +67 -28
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/session/o-auth-hub-session.service.spec.ts +22 -18
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/session/o-auth-hub-session.service.ts +4 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-chain.error.ts +26 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-permission-refresh-failed.error.ts +34 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-self.error.ts +25 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-target-no-client.error.ts +26 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-target-not-found.error.ts +27 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-target-privileged.error.ts +26 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation-unavailable.error.ts +36 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/impersonation.errors.spec.ts +132 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/errors/index.ts +12 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/flows.types.ts +38 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/impersonation-privilege-denylist.spec.ts +281 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/impersonation-privilege-denylist.ts +239 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/domain/index.ts +2 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/index.ts +36 -28
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/shared/pkce/o-auth-verify-pkce-s256.spec.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/shared/pkce/o-auth-verify-pkce-s256.ts +2 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/index.ts +22 -48
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/o-auth.relations.ts +81 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/o-auth.seed.ts +80 -46
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/create/o-auth-create-refresh-token.handler.ts +5 -7
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/create/o-auth-create-refresh-token.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/delete/o-auth-delete-refresh-token-by-id.handler.ts +5 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/delete/o-auth-delete-refresh-token-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/get/o-auth-get-refresh-tokens.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/get/o-auth-get-refresh-tokens.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/paginate/o-auth-paginate-refresh-tokens.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/paginate/o-auth-paginate-refresh-tokens.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/domain/o-auth-refresh-token.field-schema.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/index.ts +20 -20
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/infrastructure/drizzle/o-auth-drizzle-refresh-token.repository.ts +40 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/infrastructure/drizzle/o-auth-drizzle-refresh-token.schema.ts +33 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/create/o-auth-create-scope.handler.ts +5 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/create/o-auth-create-scope.service.ts +4 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/delete/o-auth-delete-scope-by-id.handler.ts +5 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/delete/o-auth-delete-scope-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-scope-by-id.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-scope-by-id.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-scope.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-scope.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/get/o-auth-get-scopes.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/get/o-auth-get-scopes.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/paginate/o-auth-paginate-scopes.handler.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/paginate/o-auth-paginate-scopes.service.ts +7 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/update/o-auth-update-scope-by-id.handler.ts +12 -8
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/update/o-auth-update-scope-by-id.service.ts +9 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/domain/index.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/domain/o-auth-scope.field-schema.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/index.ts +23 -23
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/infrastructure/drizzle/o-auth-drizzle-scope.repository.ts +40 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/infrastructure/drizzle/o-auth-drizzle-scope.schema.ts +23 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-authenticate-application.function.spec.ts +72 -25
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-authenticate-application.function.ts +31 -16
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-generate-application-secret.function.spec.ts +30 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-generate-application-secret.function.ts +21 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-resolve-application-client.function.spec.ts +43 -32
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-resolve-application-client.function.ts +13 -9
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/index.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/services/token-retention.service.spec.ts +70 -79
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/services/token-retention.service.ts +44 -38
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/adapters/index.ts +1 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/adapters/o-auth-application-provisioner.adapter.spec.ts +727 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/adapters/o-auth-application-provisioner.adapter.ts +274 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/index.ts +1 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/ports/index.ts +2 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/ports/o-auth-application-provisioner.port.ts +79 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/application/ports/o-auth-application-provisioner.token.ts +1 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/client/adapters/index.ts +1 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/client/adapters/o-auth-client-reader.adapter.spec.ts +58 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/client/adapters/o-auth-client-reader.adapter.ts +6 -4
- package/dist/templates/backend/packages/o-auth/src/@bridges/providers/iam-client-reader.bridge.ts +2 -2
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/impersonate-token-guarded-transports.e2e-spec.ts +365 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/masked-property-query-guard.e2e-spec.ts +936 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/oauth-bootstrap-seeder-idempotency.e2e-spec.ts +211 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/token-masking.e2e-spec.ts +232 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/graphql/queue-manager.graphql +149 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/index.ts +24 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/resolvers/queue-manager.resolver.auth-metadata.spec.ts +84 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/resolvers/queue-manager.resolver.spec.ts +210 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/resolvers/queue-manager.resolver.ts +228 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/queue-manager.module.ts +84 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/queue-manager.seeder.ts +33 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/domain/ports/index.ts +20 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/domain/ports/queue-inspector.port.ts +144 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/domain/ports/queue-registry.token.ts +30 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/infrastructure/adapters/bull-board-queue-inspector.adapter.spec.ts +261 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/infrastructure/adapters/bull-board-queue-inspector.adapter.ts +388 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/infrastructure/adapters/index.ts +1 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/infrastructure/index.ts +1 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/queue-manager.seed.ts +51 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/queue-registry.providers.ts +37 -0
- package/dist/templates/codegen/backend/@api/__bounded_context_name__.module.ts.eta +2 -4
- package/dist/templates/codegen/backend/@api/__bounded_context_name__.seeder.ts.eta +7 -7
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-count-__module_name__.controller.ts.eta +69 -0
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-create-__module_name__.controller.ts.eta +17 -18
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-create-__module_names__.controller.ts.eta +12 -12
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-delete-__module_name__-by-id.controller.ts.eta +16 -17
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-delete-__module_names__.controller.ts.eta +15 -23
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-find-__module_name__-by-id.controller.ts.eta +14 -17
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-find-__module_name__.controller.ts.eta +16 -19
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-get-__module_names__.controller.ts.eta +16 -19
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-get-raw-__module_names__.controller.ts.eta +3 -28
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-max-__module_name__.controller.ts.eta +72 -0
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-min-__module_name__.controller.ts.eta +72 -0
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-paginate-__module_names__.controller.ts.eta +15 -18
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-sum-__module_name__.controller.ts.eta +72 -0
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-update-__module_name__-by-id.controller.ts.eta +21 -19
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-update-__module_names__.controller.ts.eta +20 -23
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-upsert-__module_name__.controller.ts.eta +12 -21
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-__module_name__.dto.ts.eta +45 -14
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-create-__module_name__.dto.ts.eta +17 -6
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-update-__module_name__-by-id.dto.ts.eta +17 -6
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-update-__module_names__.dto.ts.eta +17 -6
- package/dist/templates/codegen/backend/@api/__module_name__/dto/index.ts.eta +4 -4
- package/dist/templates/codegen/backend/@api/__module_name__/graphql/__bounded_context_name__-__module_name__.graphql.eta +185 -52
- package/dist/templates/codegen/backend/@api/__module_name__/index.ts.eta +102 -30
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-__module_name__-custom-field-value.resolver.ts.eta +32 -0
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-count-__module_name__.resolver.ts.eta +62 -0
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-create-__module_name__.resolver.ts.eta +16 -18
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-create-__module_names__.resolver.ts.eta +12 -12
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-delete-__module_name__-by-id.resolver.ts.eta +17 -17
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-delete-__module_names__.resolver.ts.eta +14 -21
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-find-__module_name__-by-id.resolver.ts.eta +14 -17
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-find-__module_name__.resolver.ts.eta +14 -17
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-get-__module_names__.resolver.ts.eta +14 -17
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-get-raw-__module_names__.resolver.ts.eta +3 -28
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-max-__module_name__.resolver.ts.eta +64 -0
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-min-__module_name__.resolver.ts.eta +64 -0
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-paginate-__module_names__.resolver.ts.eta +14 -17
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-sum-__module_name__.resolver.ts.eta +64 -0
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-update-__module_name__-by-id.resolver.ts.eta +23 -19
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-update-__module_names__.resolver.ts.eta +23 -23
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-upsert-__module_name__.resolver.ts.eta +12 -21
- package/dist/templates/codegen/backend/@app/__bounded_context_name__.seed.ts.eta +6 -4
- package/dist/templates/codegen/backend/@app/__module_name__/application/__bounded_context_name__-__module_name__.payload-types.ts.eta +53 -0
- package/dist/templates/codegen/backend/@app/__module_name__/application/count/__bounded_context_name__-count-__module_name__.handler.ts.eta +6 -44
- package/dist/templates/codegen/backend/@app/__module_name__/application/count/__bounded_context_name__-count-__module_name__.service.ts.eta +5 -6
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_name__.handler.ts.eta +61 -49
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_name__.service.ts.eta +100 -82
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_names__.handler.ts.eta +51 -9
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_names__.service.ts.eta +111 -31
- package/dist/templates/codegen/backend/@app/__module_name__/application/delete/__bounded_context_name__-delete-__module_name__-by-id.handler.ts.eta +37 -50
- package/dist/templates/codegen/backend/@app/__module_name__/application/delete/__bounded_context_name__-delete-__module_name__-by-id.service.ts.eta +100 -80
- package/dist/templates/codegen/backend/@app/__module_name__/application/delete/__bounded_context_name__-delete-__module_names__.handler.ts.eta +14 -52
- package/dist/templates/codegen/backend/@app/__module_name__/application/delete/__bounded_context_name__-delete-__module_names__.service.ts.eta +39 -61
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__-by-id.handler.ts.eta +21 -39
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__-by-id.service.ts.eta +35 -11
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__.handler.ts.eta +21 -40
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__.service.ts.eta +35 -10
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-__module_names__.handler.ts.eta +24 -41
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-__module_names__.service.ts.eta +35 -10
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-raw-__module_names__.handler.ts.eta +15 -46
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-raw-__module_names__.service.ts.eta +5 -7
- package/dist/templates/codegen/backend/@app/__module_name__/application/max/__bounded_context_name__-max-__module_name__.handler.ts.eta +43 -0
- package/dist/templates/codegen/backend/@app/__module_name__/application/max/__bounded_context_name__-max-__module_name__.service.ts.eta +5 -6
- package/dist/templates/codegen/backend/@app/__module_name__/application/min/__bounded_context_name__-min-__module_name__.handler.ts.eta +43 -0
- package/dist/templates/codegen/backend/@app/__module_name__/application/min/__bounded_context_name__-min-__module_name__.service.ts.eta +5 -6
- package/dist/templates/codegen/backend/@app/__module_name__/application/paginate/__bounded_context_name__-paginate-__module_names__.handler.ts.eta +24 -40
- package/dist/templates/codegen/backend/@app/__module_name__/application/paginate/__bounded_context_name__-paginate-__module_names__.service.ts.eta +39 -10
- package/dist/templates/codegen/backend/@app/__module_name__/application/sum/__bounded_context_name__-sum-__module_name__.handler.ts.eta +43 -0
- package/dist/templates/codegen/backend/@app/__module_name__/application/sum/__bounded_context_name__-sum-__module_name__.service.ts.eta +5 -6
- package/dist/templates/codegen/backend/@app/__module_name__/application/update/__bounded_context_name__-update-__module_name__-by-id.handler.ts.eta +78 -64
- package/dist/templates/codegen/backend/@app/__module_name__/application/update/__bounded_context_name__-update-__module_name__-by-id.service.ts.eta +71 -35
- package/dist/templates/codegen/backend/@app/__module_name__/application/update/__bounded_context_name__-update-__module_names__.handler.ts.eta +36 -52
- package/dist/templates/codegen/backend/@app/__module_name__/application/update/__bounded_context_name__-update-__module_names__.service.ts.eta +25 -41
- package/dist/templates/codegen/backend/@app/__module_name__/application/update/__bounded_context_name__-update-and-increment-__module_names__.service.ts.eta +24 -41
- package/dist/templates/codegen/backend/@app/__module_name__/application/upsert/__bounded_context_name__-upsert-__module_name__.handler.ts.eta +28 -52
- package/dist/templates/codegen/backend/@app/__module_name__/application/upsert/__bounded_context_name__-upsert-__module_name__.service.ts.eta +23 -83
- package/dist/templates/codegen/backend/@app/__module_name__/domain/__bounded_context_name__-__module_name__.field-schema.ts.eta +41 -2
- package/dist/templates/codegen/backend/@app/__module_name__/domain/index.ts.eta +1 -1
- package/dist/templates/codegen/backend/@app/__module_name__/index.ts.eta +117 -122
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/drizzle/__bounded_context_name__-drizzle-__module_name__-custom-field-value.schema.ts.eta +37 -0
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/drizzle/__bounded_context_name__-drizzle-__module_name__-i18n.repository.ts.eta +65 -0
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/drizzle/__bounded_context_name__-drizzle-__module_name__-i18n.schema.ts.eta +47 -0
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/drizzle/__bounded_context_name__-drizzle-__module_name__.repository.ts.eta +180 -0
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/drizzle/__bounded_context_name__-drizzle-__module_name__.schema.ts.eta +154 -0
- package/dist/templates/codegen/backend/@app/index.ts.eta +0 -1
- package/dist/templates/codegen/backend/additional-@api/__module_name__/controllers/__additional_api_name__.controller.ts.eta +30 -25
- package/dist/templates/codegen/backend/additional-@api/__module_name__/resolvers/__additional_api_name__.resolver.ts.eta +33 -25
- package/dist/templates/codegen/backend/additional-@app/__module_name__/application/__additional_api_action__/__additional_api_name__.handler.ts.eta +30 -11
- package/dist/templates/codegen/frontend/module/__bounded_context_name__.navigation.ts.eta +1 -0
- package/dist/templates/codegen/frontend/module/__module_name__/__module_name__.columns.ts.eta +233 -30
- package/dist/templates/codegen/frontend/module/__module_name__/data-access/__module_name__.detail-config.ts.eta +18 -2
- package/dist/templates/codegen/frontend/module/__module_name__/data-access/__module_name__.graphql.ts.eta +223 -71
- package/dist/templates/codegen/frontend/module/__module_name__/data-access/__module_name__.list-config.ts.eta +11 -2
- package/dist/templates/codegen/frontend/module/__module_name__/data-access/__module_name__.resolvers.ts.eta +168 -58
- package/dist/templates/codegen/frontend/module/__module_name__/data-access/index.ts.eta +8 -0
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-detail.component.ts.eta +257 -57
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-form-embed.component.ts.eta +336 -89
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-form.component.ts.eta +348 -141
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-list-actions-cell.component.ts.eta +35 -12
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-list-translations-cell.component.ts.eta +91 -0
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-list.component.ts.eta +153 -52
- package/dist/templates/codegen/frontend/module/__module_name__/features/index.ts.eta +19 -0
- package/dist/templates/codegen/frontend/module/__module_name__/index.ts.eta +7 -5
- package/dist/templates/codegen/partials/fields/boolean-field.eta +11 -4
- package/dist/templates/codegen/partials/fields/color-picker-field.eta +8 -0
- package/dist/templates/codegen/partials/fields/date-field.eta +6 -16
- package/dist/templates/codegen/partials/fields/datetime-field.eta +8 -0
- package/dist/templates/codegen/partials/fields/enum-field.eta +16 -10
- package/dist/templates/codegen/partials/fields/number-field.eta +2 -4
- package/dist/templates/codegen/partials/fields/password-field.eta +14 -18
- package/dist/templates/codegen/partials/fields/text-field.eta +2 -7
- package/dist/templates/codegen/partials/fields/varchar-field.eta +2 -7
- package/dist/templates/codegen/partials/form/dialog-frame.eta +14 -11
- package/dist/templates/codegen/partials/form/field-errors.eta +10 -0
- package/dist/templates/codegen/partials/form/field-label.eta +21 -6
- package/dist/templates/codegen/partials/form/form-body.eta +32 -28
- package/dist/templates/codegen/partials/form/view-frame-tabbed.eta +54 -4
- package/dist/templates/codegen/partials/form/view-frame.eta +62 -4
- package/dist/templates/codegen/partials/i18n-recompute.eta +72 -0
- package/dist/templates/codegen/partials/i18n-validate.eta +51 -0
- package/dist/templates/codegen/partials/relationships/async-multiple-search-select.eta +4 -8
- package/dist/templates/codegen/partials/relationships/async-search-select.eta +4 -8
- package/dist/templates/codegen/partials/relationships/grid-elements-manager.eta +1 -0
- package/dist/templates/codegen/partials/relationships/grid-select-element.eta +5 -7
- package/dist/templates/codegen/partials/relationships/multiple-search-select.eta +4 -8
- package/dist/templates/codegen/partials/relationships/multiple-select.eta +17 -8
- package/dist/templates/codegen/partials/relationships/search-select.eta +5 -8
- package/dist/templates/codegen/partials/relationships/select.eta +14 -6
- package/dist/templates/frontend/application/.claude/skills/catalyst-data-layer/SKILL.md +67 -51
- package/dist/templates/frontend/application/.claude/skills/catalyst-data-layer/references/known-patterns.md +24 -20
- package/dist/templates/frontend/application/.claude/skills/catalyst-data-table-management/SKILL.md +38 -33
- package/dist/templates/frontend/application/.claude/skills/catalyst-form-composer-auditor/SKILL.md +133 -73
- package/dist/templates/frontend/application/.claude/skills/catalyst-form-composer-auditor/references/catalyst-detail-form-rules.md +308 -253
- package/dist/templates/frontend/application/.claude/skills/catalyst-project-structure/SKILL.md +281 -173
- package/dist/templates/frontend/application/.claude/skills/catalyst-review-module/SKILL.md +1 -1
- package/dist/templates/frontend/application/.claude/skills/catalyst-widget-creator/SKILL.md +288 -0
- package/dist/templates/frontend/application/.claude/skills/layout-design-system/SKILL.md +69 -10
- package/dist/templates/frontend/application/.claude/skills/transloco-i18n/SKILL.md +21 -0
- package/dist/templates/frontend/application/CLAUDE.md +18 -3
- package/dist/templates/frontend/application/angular.json +6 -4
- package/dist/templates/frontend/application/codegen.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/accordion/src/lib/hlm-accordion-trigger.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/alert/src/lib/hlm-alert.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/index.ts +3 -0
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-action.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-cancel.ts +3 -4
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-content.ts +5 -2
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-description.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-footer.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-header.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-media.ts +15 -0
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-overlay.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-title.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/alert-dialog/src/lib/hlm-alert-dialog-trigger.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-content.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-empty.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-group.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-input.ts +45 -44
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-item.ts +3 -5
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-label.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-list.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-search.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-separator.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete-status.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/autocomplete/src/lib/hlm-autocomplete.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/avatar/src/lib/hlm-avatar-badge.ts +2 -2
- package/dist/templates/frontend/application/libs/ui/avatar/src/lib/hlm-avatar-fallback.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/avatar/src/lib/hlm-avatar-image.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/badge/src/lib/hlm-badge.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/breadcrumb/src/index.ts +0 -5
- package/dist/templates/frontend/application/libs/ui/breadcrumb/src/lib/hlm-breadcrumb-ellipsis.ts +12 -25
- package/dist/templates/frontend/application/libs/ui/breadcrumb/src/lib/hlm-breadcrumb-separator.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/button/src/lib/hlm-button.ts +6 -8
- package/dist/templates/frontend/application/libs/ui/button-group/src/lib/hlm-button-group-separator.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/button-group/src/lib/hlm-button-group-text.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/button-group/src/lib/hlm-button-group.ts +4 -4
- package/dist/templates/frontend/application/libs/ui/calendar/src/index.ts +8 -1
- package/dist/templates/frontend/application/libs/ui/calendar/src/lib/hlm-calendar-multi.ts +189 -223
- package/dist/templates/frontend/application/libs/ui/calendar/src/lib/hlm-calendar-range.ts +188 -218
- package/dist/templates/frontend/application/libs/ui/calendar/src/lib/hlm-calendar.ts +184 -212
- package/dist/templates/frontend/application/libs/ui/calendar/src/lib/hlm-month-year-calendar.ts +139 -0
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-action.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-content.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-description.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-footer.ts +2 -5
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-header.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card-title.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card.token.ts +19 -0
- package/dist/templates/frontend/application/libs/ui/card/src/lib/hlm-card.ts +4 -2
- package/dist/templates/frontend/application/libs/ui/carousel/src/lib/hlm-carousel-next.ts +5 -7
- package/dist/templates/frontend/application/libs/ui/carousel/src/lib/hlm-carousel-previous.ts +5 -7
- package/dist/templates/frontend/application/libs/ui/carousel/src/lib/hlm-carousel.ts +8 -6
- package/dist/templates/frontend/application/libs/ui/checkbox/src/lib/hlm-checkbox.ts +13 -14
- package/dist/templates/frontend/application/libs/ui/collapsible/src/lib/hlm-collapsible-content.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/collapsible/src/lib/hlm-collapsible-trigger.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/collapsible/src/lib/hlm-collapsible.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-chip-input.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-chip-remove.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-chip.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-chips.ts +12 -12
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-content.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-empty.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-group.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-input.ts +58 -43
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-item.ts +3 -5
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-label.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-list.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-multiple.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-placeholder.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-separator.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-status.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-trigger.ts +17 -2
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox-value.ts +1 -0
- package/dist/templates/frontend/application/libs/ui/combobox/src/lib/hlm-combobox.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-dialog.ts +2 -2
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-group-label.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-group.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-input.ts +10 -4
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-item.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-list.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-separator.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command-shortcut.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/command/src/lib/hlm-command.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/context-menu/src/lib/hlm-context-menu-trigger.ts +25 -14
- package/dist/templates/frontend/application/libs/ui/date-picker/src/index.ts +24 -3
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-multi-input.ts +104 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker-anchor.ts +23 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker-input.ts +105 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker-multi.token.ts +61 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker-multi.ts +70 -85
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker-trigger.ts +104 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker.token.ts +22 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-picker.ts +83 -97
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-range-input.ts +107 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-range-picker.token.ts +36 -1
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-date-range-picker.ts +90 -89
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-month-year-input.ts +105 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-month-year-picker.token.ts +89 -0
- package/dist/templates/frontend/application/libs/ui/date-picker/src/lib/hlm-month-year-picker.ts +199 -0
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-close.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-content.ts +21 -13
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-description.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-footer.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-header.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-overlay.ts +4 -3
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-title.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog-trigger.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/dialog/src/lib/hlm-dialog.service.ts +7 -4
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/index.ts +4 -0
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-checkbox-indicator.ts +3 -5
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-checkbox.ts +30 -12
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-focus-on-hover.ts +35 -0
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-group.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-item-sub-indicator.ts +2 -2
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-item.ts +4 -2
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-label.ts +4 -4
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-radio-indicator.ts +5 -7
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-radio.ts +26 -13
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-separator.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-shortcut.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-sub-trigger.ts +52 -0
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-sub.ts +21 -26
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu-trigger.ts +14 -17
- package/dist/templates/frontend/application/libs/ui/dropdown-menu/src/lib/hlm-dropdown-menu.ts +21 -26
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty-content.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty-description.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty-header.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty-media.ts +4 -3
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty-title.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/empty/src/lib/hlm-empty.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-content.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-description.ts +2 -5
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-error.ts +2 -6
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-group.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-label.ts +3 -7
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-separator.ts +3 -5
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-set.ts +5 -7
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field-title.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/field/src/lib/hlm-field.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/hover-card/src/lib/hlm-hover-card-content.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/input/src/lib/hlm-input.ts +10 -27
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group-addon.ts +6 -6
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group-button.ts +3 -3
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group-input.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group-text.ts +2 -2
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group-textarea.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/input-group/src/lib/hlm-input-group.ts +5 -24
- package/dist/templates/frontend/application/libs/ui/input-otp/src/lib/hlm-input-otp-fake-caret.ts +7 -4
- package/dist/templates/frontend/application/libs/ui/input-otp/src/lib/hlm-input-otp-group.ts +6 -5
- package/dist/templates/frontend/application/libs/ui/input-otp/src/lib/hlm-input-otp-separator.ts +3 -7
- package/dist/templates/frontend/application/libs/ui/input-otp/src/lib/hlm-input-otp-slot.ts +22 -10
- package/dist/templates/frontend/application/libs/ui/input-otp/src/lib/hlm-input-otp.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-actions.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-content.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-description.ts +6 -8
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-footer.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-group.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-header.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-media.ts +4 -3
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-separator.ts +3 -2
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item-title.ts +5 -4
- package/dist/templates/frontend/application/libs/ui/item/src/lib/hlm-item.ts +7 -6
- package/dist/templates/frontend/application/libs/ui/kbd/src/lib/hlm-kbd-group.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/kbd/src/lib/hlm-kbd.ts +4 -5
- package/dist/templates/frontend/application/libs/ui/label/src/lib/hlm-label.ts +3 -10
- package/dist/templates/frontend/application/libs/ui/menubar/src/lib/hlm-menubar-trigger.ts +23 -15
- package/dist/templates/frontend/application/libs/ui/menubar/src/lib/hlm-menubar.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/native-select/src/lib/hlm-native-select-opt-group.ts +8 -5
- package/dist/templates/frontend/application/libs/ui/native-select/src/lib/hlm-native-select-option.ts +8 -5
- package/dist/templates/frontend/application/libs/ui/native-select/src/lib/hlm-native-select.ts +17 -11
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu-content.ts +10 -3
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu-item.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu-link.ts +7 -4
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu-list.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu-trigger.ts +18 -4
- package/dist/templates/frontend/application/libs/ui/navigation-menu/src/lib/hlm-navigation-menu.ts +3 -0
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-numbered-pagination-query-params.ts +68 -67
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-numbered-pagination.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-content.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-ellipsis.ts +12 -18
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-item.ts +2 -9
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-link.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-next.ts +10 -9
- package/dist/templates/frontend/application/libs/ui/pagination/src/lib/hlm-pagination-previous.ts +11 -9
- package/dist/templates/frontend/application/libs/ui/popover/src/index.ts +9 -0
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover-content.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover-description.ts +12 -0
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover-header.ts +12 -0
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover-title.ts +12 -0
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover-trigger.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/popover/src/lib/hlm-popover.ts +2 -3
- package/dist/templates/frontend/application/libs/ui/progress/src/lib/hlm-progress-indicator.ts +10 -4
- package/dist/templates/frontend/application/libs/ui/progress/src/lib/hlm-progress.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/radio-group/src/lib/hlm-radio.ts +3 -4
- package/dist/templates/frontend/application/libs/ui/resizable/src/lib/hlm-resizable-handle.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/scroll-area/src/lib/hlm-scroll-area.ts +6 -4
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-content.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-group.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-item.ts +3 -5
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-label.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-multiple.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-placeholder.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-scroll-down.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-scroll-up.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-separator.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-trigger.ts +16 -4
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select-values-content.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/select/src/lib/hlm-select.ts +8 -18
- package/dist/templates/frontend/application/libs/ui/separator/src/lib/hlm-separator.ts +4 -1
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-close.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-content.ts +14 -30
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-description.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-footer.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-header.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-overlay.ts +1 -4
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-title.ts +2 -4
- package/dist/templates/frontend/application/libs/ui/sheet/src/lib/hlm-sheet-trigger.ts +1 -3
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-content.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-footer.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-group-action.ts +4 -6
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-group-content.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-group-label.ts +4 -4
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-group.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-header.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-input.ts +4 -7
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-inset.ts +5 -7
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-action.ts +2 -8
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-badge.ts +4 -8
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-button.ts +3 -3
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-skeleton.ts +3 -3
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-sub-button.ts +8 -6
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu-sub.ts +8 -4
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-menu.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-rail.ts +2 -2
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-separator.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-trigger.ts +8 -19
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar-wrapper.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar.service.ts +28 -11
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar.token.ts +2 -0
- package/dist/templates/frontend/application/libs/ui/sidebar/src/lib/hlm-sidebar.ts +11 -15
- package/dist/templates/frontend/application/libs/ui/slider/src/lib/hlm-slider.ts +3 -3
- package/dist/templates/frontend/application/libs/ui/sonner/src/lib/hlm-toaster.ts +12 -1
- package/dist/templates/frontend/application/libs/ui/spinner/src/lib/hlm-spinner.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/switch/src/lib/hlm-switch-thumb.ts +2 -1
- package/dist/templates/frontend/application/libs/ui/switch/src/lib/hlm-switch.ts +15 -9
- package/dist/templates/frontend/application/libs/ui/tabs/src/lib/hlm-tabs-list.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/tabs/src/lib/hlm-tabs-paginated-list.ts +8 -20
- package/dist/templates/frontend/application/libs/ui/tabs/src/lib/hlm-tabs-trigger.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/textarea/src/lib/hlm-textarea.ts +10 -28
- package/dist/templates/frontend/application/libs/ui/toggle/src/lib/hlm-toggle.ts +1 -1
- package/dist/templates/frontend/application/libs/ui/tooltip/src/lib/hlm-tooltip.ts +3 -2
- package/dist/templates/frontend/application/libs/ui/utils/src/index.ts +1 -0
- package/dist/templates/frontend/application/libs/ui/utils/src/lib/provide-spartan-hlm.ts +34 -0
- package/dist/templates/frontend/application/package.json +38 -29
- package/dist/templates/frontend/application/public/i18n/en.json +18 -2
- package/dist/templates/frontend/application/public/i18n/es.json +18 -2
- package/dist/templates/frontend/application/public/i18n/navigation/en.json +22 -29
- package/dist/templates/frontend/application/public/i18n/navigation/es.json +22 -29
- package/dist/templates/frontend/application/src/@aurora/components/async-multiple-search-select/async-multiple-search-select.component.spec.ts +11 -10
- package/dist/templates/frontend/application/src/@aurora/components/async-multiple-search-select/async-multiple-search-select.component.ts +12 -15
- package/dist/templates/frontend/application/src/@aurora/components/async-multiple-search-select/async-multiple-search-select.stories.ts +0 -2
- package/dist/templates/frontend/application/src/@aurora/components/async-search-select/async-search-select.component.spec.ts +19 -11
- package/dist/templates/frontend/application/src/@aurora/components/async-search-select/async-search-select.component.ts +12 -15
- package/dist/templates/frontend/application/src/@aurora/components/async-search-select/async-search-select.stories.ts +0 -22
- package/dist/templates/frontend/application/src/@aurora/components/breadcrumb/breadcrumb.service.ts +2 -2
- package/dist/templates/frontend/application/src/@aurora/components/chart/chart.component.spec.ts +663 -0
- package/dist/templates/frontend/application/src/@aurora/components/chart/chart.component.ts +334 -0
- package/dist/templates/frontend/application/src/@aurora/components/chart/chart.stories.ts +103 -0
- package/dist/templates/frontend/application/src/@aurora/components/chart/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/color-picker.component.spec.ts +671 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/color-picker.component.ts +802 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/color-picker.stories.ts +180 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/color-utils.spec.ts +270 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/color-utils.ts +177 -0
- package/dist/templates/frontend/application/src/@aurora/components/color-picker/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/custom-field-capture-form.component.spec.ts +344 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/custom-field-capture-form.component.ts +366 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/index.ts +4 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/build-custom-field-capture-model.spec.ts +82 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/build-custom-field-capture-model.ts +49 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/custom-field-capture-form.types.ts +57 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/custom-field-capture-value-equality.spec.ts +28 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/custom-field-capture-value-equality.ts +24 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/validate-custom-field-capture-value.spec.ts +50 -0
- package/dist/templates/frontend/application/src/@aurora/components/custom-field-capture-form/lib/validate-custom-field-capture-value.ts +30 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/cells/boolean-cell.component.ts +3 -6
- package/dist/templates/frontend/application/src/@aurora/components/data-table/cells/date-cell.component.ts +62 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/cells/date-cell.stories.ts +117 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/cells/enum-cell.component.ts +23 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/cells/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/column-toggle.component.ts +7 -29
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/data-table.component.spec.ts +460 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/data-table.component.ts +17 -3
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/head-selection.component.ts +2 -1
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/row-selection.component.ts +2 -1
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/sort-button.component.ts +44 -14
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/table-export.component.ts +5 -9
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/table-filters.component.ts +2 -11
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/table-pagination.component.ts +16 -26
- package/dist/templates/frontend/application/src/@aurora/components/data-table/components/table-search.component.ts +1 -11
- package/dist/templates/frontend/application/src/@aurora/components/data-table/index.ts +5 -1
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-filter-where.spec.ts +123 -8
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-filter-where.ts +55 -33
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-search-where.spec.ts +141 -17
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-search-where.ts +50 -21
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-sort-order.spec.ts +22 -11
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/build-sort-order.ts +25 -19
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/column-helpers.spec.ts +72 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/column-helpers.ts +8 -1
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/custom-field-column.ts +141 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/get-relations-node.spec.ts +157 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/get-relations-node.ts +69 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/merge-custom-field-columns.spec.ts +217 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/merge-custom-field-columns.ts +146 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/nested-column.ts +24 -23
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/relation-cell.spec.ts +33 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/relation-cell.ts +13 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/resolve-custom-field-filter.spec.ts +140 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/resolve-custom-field-filter.ts +119 -0
- package/dist/templates/frontend/application/src/@aurora/components/data-table/services/in-memory-column-config-storage.ts +2 -2
- package/dist/templates/frontend/application/src/@aurora/components/data-table/types.ts +57 -8
- package/dist/templates/frontend/application/src/@aurora/components/date-picker/date-picker.component.spec.ts +189 -0
- package/dist/templates/frontend/application/src/@aurora/components/date-picker/date-picker.component.ts +137 -0
- package/dist/templates/frontend/application/src/@aurora/components/date-picker/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/datetime-picker.component.spec.ts +296 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/datetime-picker.component.ts +223 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/datetime-picker.stories.ts +143 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/components/grid-pick-dialog/grid-pick-dialog.component.ts +22 -26
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-element/grid-select-element.component.spec.ts +98 -10
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-element/grid-select-element.component.ts +41 -10
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-element/grid-select-element.stories.ts +6 -0
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-multiple-elements/grid-select-multiple-elements.component.spec.ts +80 -0
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-multiple-elements/grid-select-multiple-elements.component.ts +10 -26
- package/dist/templates/frontend/application/src/@aurora/components/grid-select-multiple-elements/grid-select-multiple-elements.stories.ts +2 -2
- package/dist/templates/frontend/application/src/@aurora/components/hlm-badge-icon-cell/hlm-badge-icon-cell.component.ts +4 -7
- package/dist/templates/frontend/application/src/@aurora/components/hlm-password-strength/hlm-password-strength.component.ts +1 -2
- package/dist/templates/frontend/application/src/@aurora/components/index.ts +11 -0
- package/dist/templates/frontend/application/src/@aurora/components/multiple-search-select/multiple-search-select.component.spec.ts +14 -15
- package/dist/templates/frontend/application/src/@aurora/components/multiple-search-select/multiple-search-select.component.ts +12 -15
- package/dist/templates/frontend/application/src/@aurora/components/multiple-search-select/multiple-search-select.stories.ts +0 -9
- package/dist/templates/frontend/application/src/@aurora/components/password-input/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/components/password-input/password-input.component.spec.ts +271 -0
- package/dist/templates/frontend/application/src/@aurora/components/password-input/password-input.component.ts +181 -0
- package/dist/templates/frontend/application/src/@aurora/components/password-input/password-input.stories.ts +189 -0
- package/dist/templates/frontend/application/src/@aurora/components/progress-uploader/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/components/progress-uploader/progress-uploader.component.ts +76 -0
- package/dist/templates/frontend/application/src/@aurora/components/progress-uploader/progress-uploader.service.ts +105 -0
- package/dist/templates/frontend/application/src/@aurora/components/search-select/search-select.component.spec.ts +14 -15
- package/dist/templates/frontend/application/src/@aurora/components/search-select/search-select.component.ts +17 -18
- package/dist/templates/frontend/application/src/@aurora/components/search-select/search-select.stories.ts +0 -14
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/index.ts +3 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge-cell.component.ts +37 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge-cell.stories.ts +74 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge.component.ts +63 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge.spec.ts +93 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge.stories.ts +107 -0
- package/dist/templates/frontend/application/src/@aurora/components/status-badge/status-badge.types.ts +43 -0
- package/dist/templates/frontend/application/src/@aurora/composables/atoms/data-table/use-table-data.ts +3 -2
- package/dist/templates/frontend/application/src/@aurora/composables/atoms/graphql/use-graphql-find-by-id.ts +12 -2
- package/dist/templates/frontend/application/src/@aurora/composables/atoms/graphql/use-graphql-find.ts +14 -2
- package/dist/templates/frontend/application/src/@aurora/composables/atoms/graphql/use-graphql-get.ts +11 -2
- package/dist/templates/frontend/application/src/@aurora/composables/atoms/graphql/use-graphql-paginate.ts +9 -2
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-aggregate-shell.spec.ts +191 -0
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-aggregate-shell.ts +24 -4
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-graphql-detail.ts +23 -14
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-graphql-list.ts +14 -10
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-paginated-data-table.spec.ts +251 -0
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-paginated-data-table.ts +64 -19
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-pivot-membership.spec.ts +142 -0
- package/dist/templates/frontend/application/src/@aurora/composables/presets/use-pivot-membership.ts +7 -9
- package/dist/templates/frontend/application/src/@aurora/directives/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/directives/scroll-fade.directive.ts +150 -0
- package/dist/templates/frontend/application/src/@aurora/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/lib/calendar-i18n.spec.ts +138 -0
- package/dist/templates/frontend/application/src/@aurora/lib/calendar-i18n.ts +93 -0
- package/dist/templates/frontend/application/src/@aurora/lib/expand-display-field-template.ts +30 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-iso-date.spec.ts +50 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-iso-date.ts +43 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-iso-datetime.spec.ts +42 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-iso-datetime.ts +34 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-local-date.spec.ts +28 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-local-date.ts +23 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-utc-date.spec.ts +47 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-utc-date.ts +25 -0
- package/dist/templates/frontend/application/src/@aurora/lib/index.ts +12 -0
- package/dist/templates/frontend/application/src/@aurora/lib/item-label-of.spec.ts +45 -0
- package/dist/templates/frontend/application/src/@aurora/lib/item-label-of.ts +17 -7
- package/dist/templates/frontend/application/src/@aurora/lib/local-time.spec.ts +54 -0
- package/dist/templates/frontend/application/src/@aurora/lib/local-time.ts +40 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-enum-label.spec.ts +130 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-enum-label.ts +61 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-i18n-value.spec.ts +101 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-i18n-value.ts +30 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-storage-file-url.spec.ts +39 -0
- package/dist/templates/frontend/application/src/@aurora/lib/resolve-storage-file-url.ts +38 -0
- package/dist/templates/frontend/application/src/@aurora/lib/scroll-fade.spec.ts +94 -0
- package/dist/templates/frontend/application/src/@aurora/lib/scroll-fade.ts +51 -0
- package/dist/templates/frontend/application/src/@aurora/lib/use-async-search-list.spec.ts +133 -0
- package/dist/templates/frontend/application/src/@aurora/lib/use-async-search-list.ts +1 -6
- package/dist/templates/frontend/application/src/@aurora/lib/utc-date-prefix.ts +24 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/README.md +59 -2
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/data-access/authentication.graphql.ts +15 -15
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/guards/permission.guard.spec.ts +195 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/guards/permission.guard.ts +65 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/index.ts +7 -2
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/adapters/anonymous-current-account.adapter.spec.ts +92 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/adapters/anonymous-current-account.adapter.ts +36 -2
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/adapters/authentication-aurora-adapter.service.spec.ts +494 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/adapters/authentication-aurora-adapter.service.ts +99 -50
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/adapters/authentication-disabled.service.ts +8 -4
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authenticated-initializer.ts +8 -7
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authentication.provider.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authentication.service.ts +27 -1
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authentication.spec.ts +113 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authentication.ts +56 -3
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/authentication.types.ts +6 -2
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/current-account.service.ts +68 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/landing-resolver-permission-bounce.spec.ts +80 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/landing-resolver.service.spec.ts +440 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/landing-resolver.service.ts +156 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/resolve-landing-route.spec.ts +75 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/resolve-landing-route.ts +27 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/safe-redirect-path.spec.ts +41 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/safe-redirect-path.ts +21 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/session-recovery-coordinator.service.spec.ts +759 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/session-recovery-coordinator.service.ts +310 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/token-store.service.spec.ts +293 -0
- package/dist/templates/frontend/application/src/@aurora/modules/authentication/shared/token-store.service.ts +116 -1
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/dashboard-grid.component.css +150 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/dashboard-grid.component.spec.ts +288 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/dashboard-grid.component.ts +776 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/dashboard-grid.gridstack.css +15 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/dashboard-grid.helpers.ts +174 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-grid/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-tile/dashboard-tile.component.spec.ts +261 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-tile/dashboard-tile.component.ts +306 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/dashboard-tile/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/components/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/modules/dashboard/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/apollo.factory.spec.ts +1001 -530
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/apollo.factory.ts +108 -34
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-create.ts +17 -8
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-delete-by-id.ts +14 -8
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-delete-by-keys.ts +15 -7
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-delete.ts +18 -9
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-insert.ts +14 -8
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/mutate-update.ts +14 -8
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-find-by-id.spec.ts +6 -4
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-find-by-id.ts +12 -11
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-find.spec.ts +7 -5
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-find.ts +16 -13
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-get.spec.ts +6 -4
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-get.ts +13 -14
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-paginate.spec.ts +8 -5
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/query-paginate.ts +11 -9
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/fetchers/types.ts +5 -3
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/graphql.spec.ts +170 -0
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/graphql.ts +36 -6
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/graphql.types.ts +24 -12
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/handlers/aurora-graphql-auth.handler.spec.ts +30 -108
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/handlers/aurora-graphql-auth.handler.ts +9 -76
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/handlers/aurora-graphql-error.handler.spec.ts +12 -3
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/index.ts +5 -0
- package/dist/templates/frontend/application/src/@aurora/modules/health/health.service.spec.ts +138 -0
- package/dist/templates/frontend/application/src/@aurora/modules/health/health.service.ts +60 -0
- package/dist/templates/frontend/application/src/@aurora/modules/health/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/modules/index.ts +5 -0
- package/dist/templates/frontend/application/src/@aurora/modules/lang/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/modules/lang/lang-flag-icons.ts +34 -0
- package/dist/templates/frontend/application/src/@aurora/modules/lang/lang.service.spec.ts +129 -0
- package/dist/templates/frontend/application/src/@aurora/modules/lang/lang.service.ts +37 -3
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/build-report-columns.spec.ts +367 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/build-report-columns.ts +186 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/index.ts +24 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-cell-renderer.registry.ts +52 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-fetch-adapter.spec.ts +148 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-fetch-adapter.ts +68 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-filter-form.component.ts +154 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-filter-form.spec.ts +181 -0
- package/dist/templates/frontend/application/src/@aurora/modules/report-viewer/report-viewer.types.ts +230 -0
- package/dist/templates/frontend/application/src/@aurora/modules/session/session.service.ts +2 -2
- package/dist/templates/frontend/application/src/@aurora/modules/theme/index.ts +2 -0
- package/dist/templates/frontend/application/src/@aurora/modules/theme/theme-palette.service.spec.ts +240 -0
- package/dist/templates/frontend/application/src/@aurora/modules/theme/theme-palette.service.ts +128 -0
- package/dist/templates/frontend/application/src/@aurora/modules/theme/theme-palette.type.ts +4 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/chart-widget-component-i18n.spec.ts +217 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/chart-widget-i18n.spec.ts +221 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/chart-widget.component.ts +318 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/chart-widget.spec.ts +274 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/chart-widget.ts +89 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/stat-widget.component.ts +200 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/stat-widget.spec.ts +373 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/stat-widget.ts +80 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/table-widget-i18n.spec.ts +176 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/table-widget.component.ts +230 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/table-widget.spec.ts +332 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/archetypes/table-widget.ts +67 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/aurora-widget-def.ts +101 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/index.ts +17 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/refreshable-widget.spec.ts +75 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/refreshable-widget.ts +32 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-category.ts +16 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-data-source-runner.spec.ts +298 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-data-source-runner.ts +103 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-data-source.ts +68 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-permission-filter.spec.ts +195 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-permission-filter.ts +84 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-registry.spec.ts +91 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-registry.ts +38 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-scope-deriver.spec.ts +85 -0
- package/dist/templates/frontend/application/src/@aurora/modules/widget/widget-scope-deriver.ts +41 -0
- package/dist/templates/frontend/application/src/@aurora/pipes/index.ts +1 -0
- package/dist/templates/frontend/application/src/@aurora/pipes/to-options.pipe.ts +2 -5
- package/dist/templates/frontend/application/src/@aurora/pipes/validation-message-legacy.pipe.spec.ts +81 -0
- package/dist/templates/frontend/application/src/@aurora/pipes/validation-message-legacy.pipe.ts +50 -0
- package/dist/templates/frontend/application/src/@aurora/pipes/validation-message.pipe.spec.ts +197 -0
- package/dist/templates/frontend/application/src/@aurora/pipes/validation-message.pipe.ts +97 -21
- package/dist/templates/frontend/application/src/@aurora/query-dsl/index.ts +32 -0
- package/dist/templates/frontend/application/src/@aurora/query-dsl/query-statement.spec.ts +94 -0
- package/dist/templates/frontend/application/src/@aurora/query-dsl/query-statement.type-contract.ts +38 -0
- package/dist/templates/frontend/application/src/app/app.config.ts +18 -6
- package/dist/templates/frontend/application/src/app/app.routes.ts +1 -1
- package/dist/templates/frontend/application/src/app/app.ts +1 -2
- package/dist/templates/frontend/application/src/app/aurora-widget.providers.ts +21 -0
- package/dist/templates/frontend/application/src/app/aurora.provider.spec.ts +1 -2
- package/dist/templates/frontend/application/src/app/aurora.provider.ts +12 -5
- package/dist/templates/frontend/application/src/app/domains/admin/home/home.component.ts +15 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/layout.component.ts +2 -3
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/app-sidebar.spec.ts +111 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/app-sidebar.ts +74 -21
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-active.spec.ts +124 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-active.ts +48 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-filter.spec.ts +203 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-filter.ts +122 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-main.ts +19 -28
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-secondary.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-sub-items.ts +10 -23
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-user.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/types.ts +4 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/site-header.spec.ts +153 -0
- package/dist/templates/frontend/application/src/app/domains/admin/layout/site-header.ts +109 -31
- package/dist/templates/frontend/application/src/app/domains/admin/navigation-data.ts +4 -20
- package/dist/templates/frontend/application/src/app/domains/admin/routes.ts +4 -3
- package/dist/templates/frontend/application/src/app/domains/auth/callback-error/callback-error.component.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/auth/layout.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/auth/sign-in/login-form.spec.ts +32 -31
- package/dist/templates/frontend/application/src/app/domains/auth/sign-in/login-form.ts +23 -33
- package/dist/templates/frontend/application/src/app/domains/auth/sign-in/oauth-session.service.ts +2 -4
- package/dist/templates/frontend/application/src/app/domains/auth/sign-in/sign-in.component.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/auth/sign-out/sign-out.component.spec.ts +13 -11
- package/dist/templates/frontend/application/src/app/domains/auth/sign-out/sign-out.component.ts +6 -9
- package/dist/templates/frontend/application/src/app/domains/auth/sign-up/sign-up.component.ts +1 -2
- package/dist/templates/frontend/application/src/app/domains/auth/sign-up/signup-form.spec.ts +60 -0
- package/dist/templates/frontend/application/src/app/domains/auth/sign-up/signup-form.ts +25 -16
- package/dist/templates/frontend/application/src/app/domains/auth/signed-out/signed-out.component.ts +1 -2
- package/dist/templates/frontend/application/src/app/transloco-lang.factory.spec.ts +40 -0
- package/dist/templates/frontend/application/src/app/transloco-lang.factory.ts +28 -0
- package/dist/templates/frontend/application/src/app/transloco-loader.ts +2 -2
- package/dist/templates/frontend/application/src/environments/environment.dev.ts +46 -3
- package/dist/templates/frontend/application/src/environments/environment.local.ts +47 -4
- package/dist/templates/frontend/application/src/environments/environment.prod.ts +46 -3
- package/dist/templates/frontend/application/src/environments/environment.qa.ts +46 -3
- package/dist/templates/frontend/application/src/environments/environment.ts +46 -3
- package/dist/templates/frontend/application/src/environments/environment.type.ts +61 -0
- package/dist/templates/frontend/application/src/index.html +21 -1
- package/dist/templates/frontend/application/src/styles.css +772 -8
- package/dist/templates/frontend/application/tsconfig.app.json +3 -9
- package/dist/templates/frontend/application/tsconfig.json +17 -1
- package/dist/templates/frontend/packages/dashboard/public/i18n/dashboard/en.json +41 -0
- package/dist/templates/frontend/packages/dashboard/public/i18n/dashboard/es.json +41 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/dashboard.routes.ts +8 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard-i18n.spec.ts +342 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard.component.spec.ts +349 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard.component.ts +622 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard.helpers.spec.ts +152 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard.helpers.ts +79 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/dashboard.orchestration.ts +159 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/index.ts +1 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/widget-catalog-dialog.component.ts +295 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/widget-catalog.helpers.spec.ts +202 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/features/widget-catalog.helpers.ts +58 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/data-access/index.ts +3 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/data-access/layout.graphql.spec.ts +142 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/data-access/layout.graphql.ts +48 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/data-access/layout.service.ts +71 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/data-access/layout.types.ts +44 -0
- package/dist/templates/frontend/packages/dashboard/src/app/domains/admin/apps/dashboard/layout/index.ts +1 -0
- package/dist/templates/frontend/packages/hub/public/i18n/hub/en.json +50 -0
- package/dist/templates/frontend/packages/hub/public/i18n/hub/es.json +50 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/app.columns.ts +113 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/app.cross-context.spec.ts +56 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/data-access/app.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/data-access/app.graphql.ts +157 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/data-access/app.list-config.ts +13 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/data-access/app.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/features/app-form.component.ts +326 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/features/app-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/features/app-list.component.ts +429 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/features/index.ts +7 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app/index.ts +7 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app-account/data-access/app-account.detail-config.ts +13 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app-account/data-access/app-account.graphql.ts +156 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/app-account/data-access/app-account.list-config.ts +14 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/hub-icons.providers.ts +11 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/hub.navigation.ts +39 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/hub.routes.ts +35 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/hub.types.ts +5 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/index.ts +6 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/data-access/launchpad.graphql.ts +48 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-app-card.component.spec.ts +259 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-app-card.component.ts +228 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-app-card.helpers.ts +21 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-launchpad-keyboard.helpers.ts +148 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-launchpad.component.spec.ts +493 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-launchpad.component.ts +612 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-launchpad.helpers.spec.ts +328 -0
- package/dist/templates/frontend/packages/hub/src/app/domains/admin/apps/hub/launchpad/features/hub-launchpad.helpers.ts +167 -0
- package/dist/templates/frontend/packages/iam/public/i18n/iam/en.json +6 -1
- package/dist/templates/frontend/packages/iam/public/i18n/iam/es.json +6 -1
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/adapters/current-account.adapter.spec.ts +459 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/adapters/current-account.adapter.ts +140 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/adapters/index.ts +1 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.derive.spec.ts +63 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.derive.ts +32 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.graphql.ts +288 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.resolvers.spec.ts +72 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/account.resolvers.ts +123 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/data-access/index.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-detail.component.spec.ts +78 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-detail.component.ts +170 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-form.component.spec.ts +914 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-form.component.ts +896 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-list-actions-cell.component.ts +113 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-list.component.ts +261 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/index.ts +6 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/index.ts +11 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/data-access/bounded-context.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/data-access/bounded-context.graphql.ts +171 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/data-access/bounded-context.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/data-access/bounded-context.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/features/bounded-context-detail.component.ts +160 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/features/bounded-context-form.component.ts +150 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/features/bounded-context-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/features/bounded-context-list.component.ts +242 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/features/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/bounded-context/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/iam-icons.providers.ts +23 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/iam.navigation.ts +59 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/iam.routes.ts +92 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/data-access/permission.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/data-access/permission.graphql.ts +181 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/data-access/permission.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/data-access/permission.resolvers.ts +72 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/permission-form-embed.component.ts +97 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/permission-form.component.ts +130 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/permission-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/permission-list.component.ts +398 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/permission.columns.ts +73 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission-role/data-access/permission-role.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission-role/data-access/permission-role.graphql.ts +200 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission-role/data-access/permission-role.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/data-access/role.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/data-access/role.graphql.ts +195 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/data-access/role.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/data-access/role.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/features/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/features/role-detail.component.ts +295 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/features/role-form.component.ts +185 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/features/role-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/features/role-list.component.ts +236 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role/role.columns.ts +119 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role-account/data-access/role-account.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role-account/data-access/role-account.graphql.ts +199 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/role-account/data-access/role-account.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/shared/validators/unique-email.validator.ts +31 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/shared/validators/unique-username.validator.ts +29 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/data-access/tag.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/data-access/tag.graphql.ts +113 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/data-access/tag.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/data-access/tag.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/features/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/features/tag-form.component.ts +88 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/features/tag-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/features/tag-list.component.ts +318 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tag/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/data-access/tenant.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/data-access/tenant.graphql.ts +224 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/data-access/tenant.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/data-access/tenant.resolvers.ts +65 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/features/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/features/tenant-form.component.ts +168 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/features/tenant-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/features/tenant-list.component.ts +330 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/index.ts +7 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant/tenant.columns.ts +103 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant-account/data-access/tenant-account.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant-account/data-access/tenant-account.graphql.ts +204 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/tenant-account/data-access/tenant-account.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/data-access/user.detail-config.ts +11 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/data-access/user.graphql.ts +180 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/data-access/user.list-config.ts +13 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/data-access/user.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/features/index.ts +5 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/user/index.ts +6 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/widgets/iam.widgets.spec.ts +262 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/widgets/iam.widgets.ts +156 -0
- package/dist/templates/frontend/packages/o-auth/public/i18n/o-auth/en.json +7 -5
- package/dist/templates/frontend/packages/o-auth/public/i18n/o-auth/es.json +8 -6
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/access-token.columns.ts +86 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/data-access/access-token.detail-config.ts +10 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/data-access/access-token.graphql.ts +117 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/data-access/access-token.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/data-access/access-token.resolvers.ts +43 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/features/access-token-list-actions-cell.component.ts +60 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/features/access-token-list.component.ts +224 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/features/index.ts +6 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/access-token/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/application.columns.ts +78 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/data-access/application.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/data-access/application.graphql.ts +140 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/data-access/application.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/data-access/application.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/features/application-form.component.ts +198 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/features/application-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/features/application-list.component.ts +322 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/features/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/application-client/data-access/application-client.graphql.ts +158 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/authorization-code.columns.ts +123 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/data-access/authorization-code.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/data-access/authorization-code.graphql.ts +168 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/data-access/authorization-code.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/data-access/authorization-code.resolvers.ts +47 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/features/authorization-code-form.component.ts +218 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/features/authorization-code-list-actions-cell.component.ts +76 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/features/authorization-code-list.component.ts +333 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/features/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/authorization-code/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/client.columns.ts +145 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/data-access/client.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/data-access/client.graphql.ts +134 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/data-access/client.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/data-access/client.resolvers.ts +69 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/features/client-form.component.ts +291 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/features/client-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/features/client-list.component.ts +335 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/features/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/client/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/o-auth-icons.providers.ts +21 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/o-auth.navigation.ts +59 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/o-auth.routes.ts +44 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/data-access/refresh-token.detail-config.ts +10 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/data-access/refresh-token.graphql.ts +104 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/data-access/refresh-token.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/data-access/refresh-token.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/features/index.ts +6 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/features/refresh-token-list-actions-cell.component.ts +60 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/features/refresh-token-list.component.ts +221 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/refresh-token/refresh-token.columns.ts +60 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/data-access/index.ts +8 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/data-access/scope.detail-config.ts +12 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/data-access/scope.graphql.ts +120 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/data-access/scope.list-config.ts +13 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/data-access/scope.resolvers.ts +39 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/features/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/features/scope-form.component.spec.ts +75 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/features/scope-form.component.ts +116 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/features/scope-list-actions-cell.component.ts +75 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/features/scope-list.component.ts +318 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/scope/index.ts +7 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/widgets/o-auth.widgets.spec.ts +338 -0
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/apps/o-auth/widgets/o-auth.widgets.ts +230 -0
- package/dist/templates/frontend/packages/queue-manager/public/i18n/queue-manager/en.json +92 -0
- package/dist/templates/frontend/packages/queue-manager/public/i18n/queue-manager/es.json +92 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/index.ts +1 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/data-access/queue.graphql.ts +214 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/data-access/queue.service.ts +301 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/data-access/use-queue-polling.spec.ts +281 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/data-access/use-queue-polling.ts +87 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/features/job-data-dialog.component.spec.ts +345 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/features/job-data-dialog.component.ts +246 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/features/job-drawer.component.ts +492 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/features/queue-detail.component.ts +666 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/features/queue-list.component.ts +547 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue/index.ts +6 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue-manager-icons.providers.ts +5 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue-manager.navigation.ts +11 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue-manager.routes.ts +15 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue-manager.types.spec.ts +154 -0
- package/dist/templates/frontend/packages/queue-manager/src/app/domains/admin/apps/queue-manager/queue-manager.types.ts +192 -0
- package/dist/templates/monorepo/.backlog/config.yml +41 -0
- package/dist/templates/monorepo/.claude/agents/jd-fix-agent.md +35 -0
- package/dist/templates/monorepo/.claude/agents/jd-judge-a.md +41 -0
- package/dist/templates/monorepo/.claude/agents/jd-judge-b.md +41 -0
- package/dist/templates/monorepo/.claude/commands/business-rules/audit.md +2 -0
- package/dist/templates/monorepo/.claude/commands/business-rules/check.md +2 -0
- package/dist/templates/monorepo/.claude/commands/business-rules/document.md +4 -1
- package/dist/templates/monorepo/.claude/commands/business-rules/promote.md +2 -0
- package/dist/templates/monorepo/.claude/commands/opsx/apply.md +36 -7
- package/dist/templates/monorepo/.claude/commands/opsx/archive.md +91 -26
- package/dist/templates/monorepo/.claude/commands/opsx/explore.md +51 -27
- package/dist/templates/monorepo/.claude/commands/opsx/propose.md +64 -26
- package/dist/templates/monorepo/.claude/commands/opsx/sync.md +258 -0
- package/dist/templates/monorepo/.claude/hooks/__fixtures__/br-hr-regression-baseline.txt +263 -0
- package/dist/templates/monorepo/.claude/hooks/architecture-checkpoint.test.ts +470 -0
- package/dist/templates/monorepo/.claude/hooks/architecture-checkpoint.ts +395 -43
- package/dist/templates/monorepo/.claude/hooks/auto-allow-readonly-bash.test.ts +158 -0
- package/dist/templates/monorepo/.claude/hooks/auto-allow-readonly-bash.ts +314 -0
- package/dist/templates/monorepo/.claude/hooks/business-rules-injector.test.ts +387 -0
- package/dist/templates/monorepo/.claude/hooks/business-rules-injector.ts +231 -0
- package/dist/templates/monorepo/.claude/hooks/catalyst-regen-review.test.ts +114 -0
- package/dist/templates/monorepo/.claude/hooks/catalyst-regen-review.ts +260 -0
- package/dist/templates/monorepo/.claude/hooks/check-required-setup.test.ts +183 -0
- package/dist/templates/monorepo/.claude/hooks/check-required-setup.ts +304 -0
- package/dist/templates/monorepo/.claude/hooks/format-with-prettier.ts +98 -0
- package/dist/templates/monorepo/.claude/hooks/harness-rules-content-guard.ts +12 -7
- package/dist/templates/monorepo/.claude/hooks/inject-prompt-context.test.ts +453 -0
- package/dist/templates/monorepo/.claude/hooks/inject-prompt-context.ts +526 -0
- package/dist/templates/monorepo/.claude/hooks/instructions-loaded-log.test.ts +131 -0
- package/dist/templates/monorepo/.claude/hooks/instructions-loaded-log.ts +132 -0
- package/dist/templates/monorepo/.claude/hooks/lint-barrels.test.ts +237 -0
- package/dist/templates/monorepo/.claude/hooks/lint-barrels.ts +319 -0
- package/dist/templates/monorepo/.claude/rules/route-aurora-components.md +24 -0
- package/dist/templates/monorepo/.claude/rules/route-aurora-yaml.md +29 -0
- package/dist/templates/monorepo/.claude/rules/route-backend-test.md +31 -0
- package/dist/templates/monorepo/.claude/rules/route-drizzle-schema.md +35 -0
- package/dist/templates/monorepo/.claude/rules/route-eta.md +17 -0
- package/dist/templates/monorepo/.claude/rules/route-skill-md.md +28 -0
- package/dist/templates/monorepo/.claude/rules/scope-backend.md +39 -0
- package/dist/templates/monorepo/.claude/rules/scope-cli.md +28 -0
- package/dist/templates/monorepo/.claude/rules/scope-frontend.md +34 -0
- package/dist/templates/monorepo/.claude/scheduled_tasks.lock +1 -0
- package/dist/templates/monorepo/.claude/scripts/catalyst-dev-mode.sh +2 -3
- package/dist/templates/monorepo/.claude/scripts/daily-tips.txt +1 -0
- package/dist/templates/monorepo/.claude/scripts/generate-skills-index.test.ts +397 -0
- package/dist/templates/monorepo/.claude/scripts/generate-skills-index.ts +196 -23
- package/dist/templates/monorepo/.claude/scripts/status-line.sh +13 -2
- package/dist/templates/monorepo/.claude/settings.json +106 -17
- package/dist/templates/monorepo/.claude/skills/REGISTRY.md +61 -28
- package/dist/templates/monorepo/.claude/skills/business-rules-guard/SKILL.md +15 -2
- package/dist/templates/monorepo/.claude/skills/business-rules-guard/references/audit.md +9 -7
- package/dist/templates/monorepo/.claude/skills/business-rules-guard/references/format.md +70 -2
- package/dist/templates/monorepo/.claude/skills/business-rules-guard/references/workflow.md +2 -1
- package/dist/templates/monorepo/.claude/skills/catalyst-backlog/SKILL.md +954 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-backlog/frontier-worker-addendum.md +145 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-backlog/worker-system-prompt.md +88 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-cli/SKILL.md +117 -38
- package/dist/templates/monorepo/.claude/skills/catalyst-cli/references/origin-conciliation.md +188 -20
- package/dist/templates/monorepo/.claude/skills/catalyst-cli/references/schema-versioning.md +1 -1
- package/dist/templates/monorepo/.claude/skills/catalyst-delegation/SKILL.md +180 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-langs/SKILL.md +241 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-query-dsl/SKILL.md +236 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-query-dsl/references/query-language.md +265 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-report-creator/SKILL.md +232 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-report-creator/references/cube-authoring.md +155 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/SKILL.md +94 -30
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/front-presentation.md +209 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/patterns-workflow.md +26 -2
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/types-reference.md +184 -2
- package/dist/templates/monorepo/.claude/skills/catalyst-skill-creator/SKILL.md +10 -2
- package/dist/templates/monorepo/.claude/skills/catalyst-update-skill-registry/SKILL.md +54 -16
- package/dist/templates/monorepo/.claude/skills/harness-rules-guard/SKILL.md +24 -14
- package/dist/templates/monorepo/.claude/skills/harness-rules-guard/references/audit.md +384 -0
- package/dist/templates/monorepo/.claude/skills/harness-rules-guard/references/enforcement.md +7 -6
- package/dist/templates/monorepo/.claude/skills/harness-rules-guard/references/format.md +140 -6
- package/dist/templates/monorepo/.claude/skills/judgment-day/SKILL.md +26 -15
- package/dist/templates/monorepo/.claude/skills/judgment-day/references/prompts-and-formats.md +46 -21
- package/dist/templates/monorepo/.claude/skills/openspec-apply-change/SKILL.md +35 -6
- package/dist/templates/monorepo/.claude/skills/openspec-archive-change/SKILL.md +87 -22
- package/dist/templates/monorepo/.claude/skills/openspec-explore/SKILL.md +89 -65
- package/dist/templates/monorepo/.claude/skills/openspec-propose/SKILL.md +62 -24
- package/dist/templates/monorepo/.claude/skills/openspec-sync-specs/SKILL.md +262 -0
- package/dist/templates/monorepo/.claude/skills/typescript/SKILL.md +5 -0
- package/dist/templates/monorepo/.claude/skills-triggers-index.json +135 -0
- package/dist/templates/monorepo/.husky/post-checkout +17 -0
- package/dist/templates/monorepo/.husky/post-merge +15 -0
- package/dist/templates/monorepo/.husky/pre-commit +26 -0
- package/dist/templates/monorepo/.mcp.json +7 -0
- package/dist/templates/monorepo/CLAUDE.md +274 -327
- package/dist/templates/monorepo/cliter/business-rules-index.json +9252 -269
- package/dist/templates/monorepo/cliter/harness-rules/barrels.md +414 -0
- package/dist/templates/monorepo/cliter/harness-rules/bridges.md +211 -0
- package/dist/templates/monorepo/cliter/harness-rules/dev-modes.md +85 -0
- package/dist/templates/monorepo/cliter/harness-rules/docs-location.md +67 -0
- package/dist/templates/monorepo/cliter/harness-rules/generated-artifacts.md +104 -0
- package/dist/templates/monorepo/cliter/harness-rules/generated-code.md +77 -0
- package/dist/templates/monorepo/cliter/harness-rules/module-graph.md +89 -0
- package/dist/templates/monorepo/cliter/harness-rules/modules.md +78 -0
- package/dist/templates/monorepo/cliter/harness-rules/persistence-integrity.md +92 -0
- package/dist/templates/monorepo/cliter/harness-rules/ports-adapters.md +82 -0
- package/dist/templates/monorepo/cliter/harness-rules/protocol-flows.md +88 -0
- package/dist/templates/monorepo/cliter/harness-rules/types-acl.md +93 -0
- package/dist/templates/monorepo/cliter/harness-rules-index.json +1117 -0
- package/dist/templates/monorepo/docs/AURORA-CATALYST-BRIEF.md +253 -0
- package/dist/templates/monorepo/docs/_catalog-schema-base.json +1 -1
- package/dist/templates/monorepo/docs/business-rules/ARCHITECTURE.md +14 -11
- package/dist/templates/monorepo/docs/business-rules/INDEX.md +84 -5
- package/dist/templates/monorepo/docs/business-rules/MIGRATION.md +11 -52
- package/dist/templates/monorepo/docs/business-rules/README.md +42 -925
- package/dist/templates/monorepo/docs/harness-rules/INDEX.md +14 -7
- package/dist/templates/monorepo/docs/harness-rules/README.md +37 -393
- package/dist/templates/monorepo/docs/langs/README.md +260 -0
- package/dist/templates/monorepo/docs/superpowers/specs/2026-07-02-report-creator-skill-design.md +176 -0
- package/dist/templates/monorepo/openspec/config.yaml +38 -10
- package/dist/templates/monorepo/package.json +16 -3
- package/dist/templates/monorepo/pnpm-workspace.yaml +10 -2
- package/dist/templates/monorepo/scripts/_catalog-runtime/README.md +30 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/build-index.determinism.test.ts +81 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/build-index.ts +214 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/catalog-index.test.ts +146 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/catalog-index.ts +120 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/check-core.ts +280 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/cli.ts +26 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/frontmatter.ts +15 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/glob.ts +86 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/index.ts +74 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/parse.ts +159 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/repo-root.ts +36 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/types.ts +154 -0
- package/dist/templates/monorepo/scripts/_catalog-runtime/validate.ts +254 -0
- package/dist/templates/monorepo/scripts/backlog/README.md +689 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-budget.jsonl +10 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-crash.jsonl +9 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-max-turns.jsonl +10 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-needs-guidance-prose.jsonl +5 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-needs-guidance.jsonl +10 -0
- package/dist/templates/monorepo/scripts/backlog/__fixtures__/stream-success.jsonl +10 -0
- package/dist/templates/monorepo/scripts/backlog/attempt.test.ts +290 -0
- package/dist/templates/monorepo/scripts/backlog/attempt.ts +181 -0
- package/dist/templates/monorepo/scripts/backlog/close.test.ts +3932 -0
- package/dist/templates/monorepo/scripts/backlog/close.ts +2499 -0
- package/dist/templates/monorepo/scripts/backlog/contract.test.ts +174 -0
- package/dist/templates/monorepo/scripts/backlog/dev.aurora.backlog-dispatch.plist +81 -0
- package/dist/templates/monorepo/scripts/backlog/dispatch.test.ts +3270 -0
- package/dist/templates/monorepo/scripts/backlog/dispatch.ts +2718 -0
- package/dist/templates/monorepo/scripts/backlog/entry.test.ts +1654 -0
- package/dist/templates/monorepo/scripts/backlog/entry.ts +791 -0
- package/dist/templates/monorepo/scripts/backlog/graph-cli.ts +70 -0
- package/dist/templates/monorepo/scripts/backlog/graph.test.ts +800 -0
- package/dist/templates/monorepo/scripts/backlog/graph.ts +386 -0
- package/dist/templates/monorepo/scripts/backlog/guards.test.ts +2259 -0
- package/dist/templates/monorepo/scripts/backlog/guards.ts +1452 -0
- package/dist/templates/monorepo/scripts/backlog/lanes/frontier.settings.json +116 -0
- package/dist/templates/monorepo/scripts/backlog/lanes/local.settings.json +64 -0
- package/dist/templates/monorepo/scripts/backlog/lanes.json +28 -0
- package/dist/templates/monorepo/scripts/backlog/launch.test.ts +3126 -0
- package/dist/templates/monorepo/scripts/backlog/launch.ts +1125 -0
- package/dist/templates/monorepo/scripts/backlog/maintenance.test.ts +2642 -0
- package/dist/templates/monorepo/scripts/backlog/maintenance.ts +1483 -0
- package/dist/templates/monorepo/scripts/backlog/notify.test.ts +60 -0
- package/dist/templates/monorepo/scripts/backlog/notify.ts +47 -0
- package/dist/templates/monorepo/scripts/backlog/parent.test.ts +221 -0
- package/dist/templates/monorepo/scripts/backlog/parent.ts +174 -0
- package/dist/templates/monorepo/scripts/backlog/prompt.test.ts +928 -0
- package/dist/templates/monorepo/scripts/backlog/prompt.ts +622 -0
- package/dist/templates/monorepo/scripts/backlog/render.test.ts +318 -0
- package/dist/templates/monorepo/scripts/backlog/render.ts +351 -0
- package/dist/templates/monorepo/scripts/backlog/reviewer.test.ts +354 -0
- package/dist/templates/monorepo/scripts/backlog/reviewer.ts +308 -0
- package/dist/templates/monorepo/scripts/backlog/slots.test.ts +1179 -0
- package/dist/templates/monorepo/scripts/backlog/slots.ts +752 -0
- package/dist/templates/monorepo/scripts/backlog/task-view.test.ts +918 -0
- package/dist/templates/monorepo/scripts/backlog/task-view.ts +513 -0
- package/dist/templates/monorepo/scripts/backlog/types.ts +286 -0
- package/dist/templates/monorepo/scripts/backlog/watch.test.ts +505 -0
- package/dist/templates/monorepo/scripts/backlog/watch.ts +449 -0
- package/dist/templates/monorepo/scripts/backlog/worker-edit.test.ts +484 -0
- package/dist/templates/monorepo/scripts/backlog/worker-edit.ts +477 -0
- package/dist/templates/monorepo/scripts/business-rules/document.ts +2 -1
- package/dist/templates/monorepo/scripts/business-rules/parse-catalog.ts +2 -1
- package/dist/templates/monorepo/scripts/catalyst/regen-review.test.ts +313 -0
- package/dist/templates/monorepo/scripts/catalyst/regen-review.ts +287 -0
- package/dist/templates/monorepo/scripts/harness-rules/audit.ts +620 -0
- package/dist/templates/monorepo/scripts/harness-rules/check.ts +37 -0
- package/dist/templates/monorepo/scripts/harness-rules/generate-index.ts +215 -0
- package/dist/templates/monorepo/scripts/harness-rules/lint-barrels.test.ts +1125 -0
- package/dist/templates/monorepo/scripts/harness-rules/lint-barrels.ts +1059 -0
- package/dist/templates/monorepo/scripts/harness-rules/types.ts +62 -0
- package/dist/templates/monorepo/scripts/harness-rules/validate-catalog.ts +121 -0
- package/oclif.manifest.json +74 -74
- package/package.json +14 -10
- package/dist/generator/engine/code-writer/export-references.d.ts +0 -10
- package/dist/generator/engine/code-writer/export-references.js +0 -69
- package/dist/templates/backend/application/eslint.config.mjs +0 -40
- package/dist/templates/backend/application/src/@aurora/services/bootstrap.service.ts +0 -20
- package/dist/templates/backend/application/src/i18n/en/iam.json +0 -18
- package/dist/templates/backend/application/src/i18n/es/iam.json +0 -18
- package/dist/templates/backend/application/test/authentication-none-mode.e2e-spec.ts +0 -138
- package/dist/templates/backend/application/test/jest-e2e.json +0 -18
- package/dist/templates/backend/application/test/mocks/mime.mock.ts +0 -10
- package/dist/templates/backend/application/test/mocks/uuid.mock.ts +0 -17
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-accounts.handler.ts +0 -26
- package/dist/templates/backend/packages/iam/src/@app/iam/account/infrastructure/sequelize/iam-sequelize-account.model.ts +0 -197
- package/dist/templates/backend/packages/iam/src/@app/iam/account/infrastructure/sequelize/iam-sequelize-account.repository.ts +0 -71
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/infrastructure/sequelize/iam-sequelize-bounded-context.model.ts +0 -94
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/infrastructure/sequelize/iam-sequelize-bounded-context.repository.ts +0 -24
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/infrastructure/sequelize/iam-sequelize-permission.model.ts +0 -93
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/infrastructure/sequelize/iam-sequelize-permission.repository.ts +0 -61
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/infrastructure/sequelize/iam-sequelize-permission-role.model.ts +0 -48
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/infrastructure/sequelize/iam-sequelize-permission-role.repository.ts +0 -24
- package/dist/templates/backend/packages/iam/src/@app/iam/role/infrastructure/sequelize/iam-sequelize-role.model.ts +0 -116
- package/dist/templates/backend/packages/iam/src/@app/iam/role/infrastructure/sequelize/iam-sequelize-role.repository.ts +0 -68
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/infrastructure/sequelize/iam-sequelize-role-account.model.ts +0 -48
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/infrastructure/sequelize/iam-sequelize-role-account.repository.ts +0 -24
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/infrastructure/sequelize/iam-sequelize-tag.model.ts +0 -70
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/infrastructure/sequelize/iam-sequelize-tag.repository.ts +0 -21
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/sequelize/iam-sequelize-tenant.model.ts +0 -121
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/sequelize/iam-sequelize-tenant.repository.ts +0 -57
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/infrastructure/sequelize/iam-sequelize-tenant-account.model.ts +0 -48
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/infrastructure/sequelize/iam-sequelize-tenant-account.repository.ts +0 -24
- package/dist/templates/backend/packages/iam/src/@app/iam/user/infrastructure/sequelize/iam-sequelize-user.model.ts +0 -144
- package/dist/templates/backend/packages/iam/src/@app/iam/user/infrastructure/sequelize/iam-sequelize-user.repository.ts +0 -21
- package/dist/templates/backend/packages/iam/src/@bridges/iam/index.ts +0 -3
- package/dist/templates/backend/packages/iam/src/@bridges/iam/user/index.ts +0 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/infrastructure/sequelize/o-auth-sequelize-access-token.model.ts +0 -118
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/infrastructure/sequelize/o-auth-sequelize-access-token.repository.ts +0 -24
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/infrastructure/sequelize/o-auth-sequelize-application.model.ts +0 -101
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/infrastructure/sequelize/o-auth-sequelize-application.repository.ts +0 -61
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/infrastructure/sequelize/o-auth-sequelize-application-client.model.ts +0 -48
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/infrastructure/sequelize/o-auth-sequelize-application-client.repository.ts +0 -24
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/infrastructure/sequelize/o-auth-sequelize-authorization-code.model.ts +0 -146
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/infrastructure/sequelize/o-auth-sequelize-authorization-code.repository.ts +0 -44
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/infrastructure/sequelize/o-auth-sequelize-client.model.ts +0 -146
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/infrastructure/sequelize/o-auth-sequelize-client.repository.ts +0 -57
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/infrastructure/sequelize/o-auth-sequelize-credential.model.ts +0 -139
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/infrastructure/sequelize/o-auth-sequelize-credential.repository.ts +0 -24
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/infrastructure/sequelize/o-auth-sequelize-refresh-token.model.ts +0 -98
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/infrastructure/sequelize/o-auth-sequelize-refresh-token.repository.ts +0 -24
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/infrastructure/sequelize/o-auth-sequelize-scope.model.ts +0 -84
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/infrastructure/sequelize/o-auth-sequelize-scope.repository.ts +0 -24
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/client/index.ts +0 -1
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/sequelize/__bounded_context_name__-sequelize-__module_name__.model.ts.eta +0 -213
- package/dist/templates/codegen/backend/@app/__module_name__/infrastructure/sequelize/__bounded_context_name__-sequelize-__module_name__.repository.ts.eta +0 -94
- package/dist/templates/codegen/partials/declare-i18n-repository.eta +0 -3
- package/dist/templates/codegen/partials/import-i18n-repository.eta +0 -3
- package/dist/templates/frontend/application/libs/ui/icon/src/index.ts +0 -7
- package/dist/templates/frontend/application/libs/ui/icon/src/lib/hlm-icon.token.ts +0 -20
- package/dist/templates/frontend/application/libs/ui/icon/src/lib/hlm-icon.ts +0 -42
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/get-relation-includes.spec.ts +0 -141
- package/dist/templates/frontend/application/src/@aurora/components/data-table/lib/get-relation-includes.ts +0 -47
- package/dist/templates/frontend/application/src/@aurora/modules/graphql/parse-gql-fields.ts +0 -32
- package/dist/templates/frontend/application/src/app/aurora.types.ts +0 -2671
- package/dist/templates/frontend/application/src/app/domains/admin/bounded-contexts/dashboard/dashboard.routes.ts +0 -8
- package/dist/templates/frontend/application/src/app/domains/admin/bounded-contexts/dashboard/features/dashboard.component.ts +0 -13
- package/dist/templates/frontend/application/src/app/domains/admin/layout/sidebar/nav-projects.ts +0 -106
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/data-access/account.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/data-access/account.graphql.ts +0 -291
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/data-access/account.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/data-access/account.resolvers.ts +0 -121
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/data-access/current-account.adapter.ts +0 -34
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/features/account-detail.component.ts +0 -165
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/features/account-form.component.ts +0 -915
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/features/account-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/features/account-list.component.ts +0 -260
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/account/index.ts +0 -8
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/data-access/bounded-context.detail-config.ts +0 -18
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/data-access/bounded-context.graphql.ts +0 -158
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/data-access/bounded-context.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/data-access/bounded-context.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/features/bounded-context-detail.component.ts +0 -157
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/features/bounded-context-form.component.ts +0 -154
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/features/bounded-context-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/features/bounded-context-list.component.ts +0 -247
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/bounded-context/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/iam-icons.providers.ts +0 -23
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/iam.navigation.ts +0 -42
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/iam.routes.ts +0 -98
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/data-access/permission.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/data-access/permission.graphql.ts +0 -163
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/data-access/permission.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/data-access/permission.resolvers.ts +0 -72
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/features/permission-form-embed.component.ts +0 -99
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/features/permission-form.component.ts +0 -141
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/features/permission-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/features/permission-list.component.ts +0 -404
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission/permission.columns.ts +0 -56
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/data-access/permission-role.detail-config.ts +0 -18
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/data-access/permission-role.graphql.ts +0 -148
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/data-access/permission-role.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/data-access/permission-role.resolvers.ts +0 -40
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/permission-role/permission-role.columns.ts +0 -38
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/data-access/role.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/data-access/role.graphql.ts +0 -207
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/data-access/role.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/data-access/role.resolvers.ts +0 -68
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/features/role-detail.component.ts +0 -312
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/features/role-form.component.ts +0 -162
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/features/role-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/features/role-list.component.ts +0 -248
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role/role.columns.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role-account/data-access/role-account.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role-account/data-access/role-account.graphql.ts +0 -158
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/role-account/data-access/role-account.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/shared/validators/unique-email.validator.ts +0 -31
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/shared/validators/unique-username.validator.ts +0 -29
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/data-access/tag.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/data-access/tag.graphql.ts +0 -129
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/data-access/tag.list-config.ts +0 -14
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/data-access/tag.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/features/tag-form.component.ts +0 -93
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/features/tag-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/features/tag-list.component.ts +0 -321
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tag/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/data-access/tenant.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/data-access/tenant.graphql.ts +0 -203
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/data-access/tenant.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/data-access/tenant.resolvers.ts +0 -71
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/features/tenant-form.component.ts +0 -169
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/features/tenant-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/features/tenant-list.component.ts +0 -333
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant/tenant.columns.ts +0 -86
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/data-access/tenant-account.detail-config.ts +0 -18
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/data-access/tenant-account.graphql.ts +0 -158
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/data-access/tenant-account.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/data-access/tenant-account.resolvers.ts +0 -40
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/tenant-account/tenant-account.columns.ts +0 -38
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/data-access/user.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/data-access/user.graphql.ts +0 -152
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/data-access/user.list-config.ts +0 -12
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/data-access/user.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/features/user-detail.component.ts +0 -124
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/features/user-form.component.ts +0 -215
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/features/user-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/features/user-list.component.ts +0 -237
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/index.ts +0 -7
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/bounded-contexts/iam/user/user.columns.ts +0 -124
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/access-token.columns.ts +0 -97
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/data-access/access-token.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/data-access/access-token.graphql.ts +0 -155
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/data-access/access-token.list-config.ts +0 -12
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/data-access/access-token.resolvers.ts +0 -40
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/features/access-token-form.component.ts +0 -152
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/features/access-token-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/features/access-token-list.component.ts +0 -331
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/access-token/index.ts +0 -7
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/application.columns.ts +0 -73
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/data-access/application.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/data-access/application.graphql.ts +0 -146
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/data-access/application.list-config.ts +0 -14
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/data-access/application.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/features/application-form.component.ts +0 -160
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/features/application-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/features/application-list.component.ts +0 -326
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application/index.ts +0 -7
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/application-client/data-access/application-client.graphql.ts +0 -155
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/authorization-code.columns.ts +0 -123
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/data-access/authorization-code.detail-config.ts +0 -18
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/data-access/authorization-code.graphql.ts +0 -146
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/data-access/authorization-code.list-config.ts +0 -19
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/data-access/authorization-code.resolvers.ts +0 -44
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/features/authorization-code-form.component.ts +0 -202
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/features/authorization-code-list-actions-cell.component.ts +0 -86
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/features/authorization-code-list.component.ts +0 -337
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/authorization-code/index.ts +0 -7
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/client.columns.ts +0 -140
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/data-access/client.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/data-access/client.graphql.ts +0 -141
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/data-access/client.list-config.ts +0 -14
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/data-access/client.resolvers.ts +0 -97
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/features/client-form.component.ts +0 -358
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/features/client-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/features/client-list.component.ts +0 -359
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/client/index.ts +0 -7
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/o-auth-icons.providers.ts +0 -21
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/o-auth.navigation.ts +0 -52
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/o-auth.routes.ts +0 -44
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/data-access/refresh-token.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/data-access/refresh-token.graphql.ts +0 -132
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/data-access/refresh-token.list-config.ts +0 -12
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/data-access/refresh-token.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/features/refresh-token-form.component.ts +0 -131
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/features/refresh-token-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/features/refresh-token-list.component.ts +0 -330
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/index.ts +0 -7
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/refresh-token/refresh-token.columns.ts +0 -59
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/data-access/scope.detail-config.ts +0 -13
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/data-access/scope.graphql.ts +0 -131
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/data-access/scope.list-config.ts +0 -14
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/data-access/scope.resolvers.ts +0 -36
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/features/scope-form.component.ts +0 -119
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/features/scope-list-actions-cell.component.ts +0 -85
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/features/scope-list.component.ts +0 -321
- package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/bounded-contexts/o-auth/scope/index.ts +0 -7
- package/dist/templates/monorepo/.claude/hooks/check-required-plugins.ts +0 -112
- package/dist/templates/monorepo/.claude/hooks/inject-rules-context.ts +0 -267
- package/dist/templates/monorepo/.vscode/settings.json +0 -10
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/account/account.columns.ts +0 -0
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/bounded-context/bounded-context.columns.ts +0 -0
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/iam.types.ts +0 -0
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/index.ts +0 -0
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/shared/index.ts +0 -0
- /package/dist/templates/frontend/packages/iam/src/app/domains/admin/{bounded-contexts → apps}/iam/tag/tag.columns.ts +0 -0
- /package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/{bounded-contexts → apps}/o-auth/application-client/data-access/application-client.detail-config.ts +0 -0
- /package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/{bounded-contexts → apps}/o-auth/application-client/data-access/application-client.list-config.ts +0 -0
- /package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/{bounded-contexts → apps}/o-auth/index.ts +0 -0
- /package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/{bounded-contexts → apps}/o-auth/o-auth.types.ts +0 -0
- /package/dist/templates/frontend/packages/o-auth/src/app/domains/admin/{bounded-contexts → apps}/o-auth/scope/scope.columns.ts +0 -0
|
@@ -0,0 +1,2499 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* close.ts — the dispatch close: mechanical scope check per lane, the happy-path planner, and the
|
|
3
|
+
* runner-driven executor that saves work before ever releasing a slot.
|
|
4
|
+
*
|
|
5
|
+
* Implements `specs/backlog-task-dispatcher/spec.md` — "Dispatch close ordering", "Failure path
|
|
6
|
+
* preserves work before blocking", "Retry reuses the same branch and prior context"; and
|
|
7
|
+
* `specs/headless-harness-execution/spec.md` — "Security paths never dispatch to the local lane"
|
|
8
|
+
* (the close-time re-check against the real diff, design.md decision (j): checked once before
|
|
9
|
+
* launch against DECLARED files in `guards.ts`, and again here against the REAL diff).
|
|
10
|
+
*
|
|
11
|
+
* Two layers, deliberately separate (design.md — Component design, `close` row):
|
|
12
|
+
*
|
|
13
|
+
* - `planClose(input)` is a PURE function: given a fully-known outcome (success, or a failure
|
|
14
|
+
* with its real push result already known), it returns the ordered steps to take. No side
|
|
15
|
+
* effects, no filesystem, no process — this is what `close.test.ts` asserts orderings against
|
|
16
|
+
* directly.
|
|
17
|
+
* - `executeClose(plan, runners, context)` WALKS a plan, invoking the caller's injected runners.
|
|
18
|
+
* When a mechanical step (scope-check/format-lint-test/reviewer/ac-check/open-pr) reports
|
|
19
|
+
* failure — or when the given plan starts directly at `save-work` (a session-level failure:
|
|
20
|
+
* needs-guidance, timeout, budget exhaustion, crash — the worker never got to run any
|
|
21
|
+
* mechanical step at all) — it diverts: calls the `saveWork` runner for the REAL push result,
|
|
22
|
+
* then calls `planClose` again internally (single source of truth for the block-vs-keep-slot
|
|
23
|
+
* decision and the terminal-attempt flag) to resolve the tail, and executes that tail through
|
|
24
|
+
* the matching runners. This is why the WIP commit always precedes the slot release in the
|
|
25
|
+
* recorded call order, never the reverse (design.md decision (k)).
|
|
26
|
+
*/
|
|
27
|
+
import {
|
|
28
|
+
HUMAN_REVIEW_PATHS,
|
|
29
|
+
LOCAL_FORBIDDEN_PATHS,
|
|
30
|
+
matchesAnyPathPattern,
|
|
31
|
+
matchesBasename,
|
|
32
|
+
resolveTestCommand,
|
|
33
|
+
SECURITY_PATH_PATTERNS,
|
|
34
|
+
SLOT_EXECUTED_BASENAMES,
|
|
35
|
+
SLOT_EXECUTED_PATHS,
|
|
36
|
+
SUPERVISED_ONLY_PATHS,
|
|
37
|
+
taskBaseBranch,
|
|
38
|
+
} from './guards.js';
|
|
39
|
+
import { STREAM_OUTCOME } from './render.js';
|
|
40
|
+
// Type-only on `reviewer.ts`'s own side (`import type { MechanicalStepResult } from './close.js'`),
|
|
41
|
+
// so this value import creates no runtime cycle — see this section's own header comment.
|
|
42
|
+
import { REVIEWER_VERDICT } from './reviewer.js';
|
|
43
|
+
import {
|
|
44
|
+
ACCEPTANCE_CRITERIA_HEADING,
|
|
45
|
+
DEFINITION_OF_DONE_HEADING,
|
|
46
|
+
findOwnedDefinitionOfDone,
|
|
47
|
+
findUncheckedAcceptanceCriteria,
|
|
48
|
+
findUnownedUncheckedDefinitionOfDone,
|
|
49
|
+
parseChecklistItems,
|
|
50
|
+
parseFilesToTouch,
|
|
51
|
+
parseParentId,
|
|
52
|
+
parseTaskStatus,
|
|
53
|
+
parseTaskTitle,
|
|
54
|
+
parseTestCommand,
|
|
55
|
+
} from './task-view.js';
|
|
56
|
+
import { DEFAULT_DISPATCH_LIMITS, LANE, TASK_STATUS, type Lane, type Task } from './types.js';
|
|
57
|
+
|
|
58
|
+
// ── Mechanical scope check (design.md decision (i); path criteria: T-31) ───────
|
|
59
|
+
//
|
|
60
|
+
// The path criteria this check reads — `SLOT_EXECUTED_PATHS`/`SLOT_EXECUTED_BASENAMES` (hard,
|
|
61
|
+
// refused on both lanes), `HUMAN_REVIEW_PATHS` (soft, admitted and marked), and
|
|
62
|
+
// `LOCAL_FORBIDDEN_PATHS` (the hard list plus the local lane's own extras) — live in
|
|
63
|
+
// `guards.ts`, alongside `SECURITY_PATH_PATTERNS`: a
|
|
64
|
+
// criterion checked BOTH before launch (against DECLARED files, guard 1c) and here (against the
|
|
65
|
+
// REAL diff) belongs with the other guard-1 checks, and this module already imports `guards.js`, so
|
|
66
|
+
// keeping the lists here would close an import cycle the moment a guard needed them too. See that
|
|
67
|
+
// module's own doc comments for the worked examples and the T-31 measurements behind each entry.
|
|
68
|
+
|
|
69
|
+
export interface CheckScopeInput {
|
|
70
|
+
lane: Lane;
|
|
71
|
+
changedFiles: readonly string[];
|
|
72
|
+
declaredFiles: readonly string[];
|
|
73
|
+
/**
|
|
74
|
+
* The subset of `changedFiles` NOT yet committed on this branch (T-79) — `collectChangedFileSets`'s
|
|
75
|
+
* working-tree half: dirty, untracked, or written under a watched gitignored path. Omitted (or
|
|
76
|
+
* `undefined`) keeps every mirror-output path in `changedFiles` judged exactly as before this field
|
|
77
|
+
* existed — the right default for a caller with only a flat, already-merged file list and no way to
|
|
78
|
+
* tell a prior close's own committed output apart from this attempt's. See `isMirrorViolation`'s
|
|
79
|
+
* doc comment for why only a DIRTY mirror path may be judged once this is given.
|
|
80
|
+
*/
|
|
81
|
+
workingTreeFiles?: readonly string[];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface ScopeCheckResult {
|
|
85
|
+
ok: boolean;
|
|
86
|
+
violatingFiles: string[];
|
|
87
|
+
/**
|
|
88
|
+
* Files this attempt's diff reaches on the SOFT list, reported only when `ok` — a mixed diff that
|
|
89
|
+
* also hits the hard list reports the hard-list violation instead, per design.md decision 5's
|
|
90
|
+
* evaluation order (mirror prefix → hard list → soft list), and never softens by naming both.
|
|
91
|
+
* `dispatch.ts`'s `openPr` runner threads this into the pull request's human-review mark.
|
|
92
|
+
*/
|
|
93
|
+
humanReviewFiles: string[];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const SIBLING_TEST_SUFFIX = /\.(spec|test)\.[cm]?[jt]sx?$/;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Whether a declared entry covers a changed file. Three shapes, all of them things a person writing
|
|
100
|
+
* "Files to touch" actually means:
|
|
101
|
+
*
|
|
102
|
+
* - an exact path — the literal case;
|
|
103
|
+
* - an entry ending in `/` — the whole subtree under it ("this module is mine");
|
|
104
|
+
* - the sibling `.spec.ts`/`.test.ts` of a declared source file — TDD is mandatory for a
|
|
105
|
+
* dispatched task, so declaring `x.service.ts` and then failing the scope check for writing
|
|
106
|
+
* `x.service.spec.ts` would punish the executor for obeying the harness.
|
|
107
|
+
*/
|
|
108
|
+
function isDeclared(file: string, declaredFiles: readonly string[]): boolean {
|
|
109
|
+
return declaredFiles.some((declared) => {
|
|
110
|
+
if (declared === file) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
if (declared.endsWith('/')) {
|
|
114
|
+
return file.startsWith(declared);
|
|
115
|
+
}
|
|
116
|
+
return (
|
|
117
|
+
SIBLING_TEST_SUFFIX.test(file) &&
|
|
118
|
+
file.replace(SIBLING_TEST_SUFFIX, '') === declared.replace(/\.[cm]?[jt]sx?$/, '')
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Every file this attempt reaches under one of the packager's OWN output roots — see
|
|
125
|
+
* `MIRROR_OUTPUT_PREFIXES` below. Anchored (a prefix, not a substring) so only the real output
|
|
126
|
+
* roots match, and case-INSENSITIVE like every sibling matcher in this module: this repo is
|
|
127
|
+
* developed on a case-insensitive filesystem, where `Packages/CLI/src/Templates/…` names the same
|
|
128
|
+
* file on disk, and a case-sensitive check let that spelling slip past the mirror-first precedence
|
|
129
|
+
* into the soft branch and be merely marked (T-31 round 2).
|
|
130
|
+
*/
|
|
131
|
+
function isMirrorOutput(file: string): boolean {
|
|
132
|
+
const lower = file.toLowerCase();
|
|
133
|
+
return MIRROR_OUTPUT_PREFIXES.some((prefix) => lower.startsWith(prefix));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* T-79: a mirror-output file is a violation for THIS attempt only when it is also DIRTY —
|
|
138
|
+
* uncommitted, in `workingTreeFiles` (`collectChangedFileSets`'s working-tree half: untracked,
|
|
139
|
+
* modified, or written under a watched gitignored path). A mirror-output file present ONLY in the
|
|
140
|
+
* committed diff (`<base>...HEAD`) can never be the worker's own doing: the executor is forbidden
|
|
141
|
+
* from running `git` at all (`collectAttemptDiff`'s doc comment), so nothing it writes is ever
|
|
142
|
+
* committed by anything other than a close. On a retry, `<base>...HEAD` is cumulative across every
|
|
143
|
+
* PRIOR attempt's commits — a PREVIOUS close's own `mirror-regen` step (below) regenerates the
|
|
144
|
+
* scaffold and its output travels in that close's own commit (`runMirrorRegen`'s doc comment: "the
|
|
145
|
+
* mirror travels in the attempt's own commit"). Re-checking that already-produced output against the
|
|
146
|
+
* NEXT attempt's scope is the T-78 incident this closes: the close blocking the retry with its own
|
|
147
|
+
* prior output, over files the retrying attempt never touched.
|
|
148
|
+
*
|
|
149
|
+
* `workingTreeFiles === null` keeps every direct `checkScope` caller that has no working-tree
|
|
150
|
+
* distinction to offer (most of this module's own tests, and any future caller with only a flat
|
|
151
|
+
* changed-files list) on today's behaviour: every mirror path is judged, exactly as before this
|
|
152
|
+
* fix — the safe default when "was this committed by a close, or written by hand" cannot be told
|
|
153
|
+
* apart at all.
|
|
154
|
+
*
|
|
155
|
+
* A worker's OWN hand-write under the mirror prefix is unaffected and still a hard violation
|
|
156
|
+
* (acceptance criterion #2) ON THE ATTEMPT THAT MAKES IT: it is dirty then, since nothing commits it
|
|
157
|
+
* until AFTER scope-check has already run and, on a violation, blocked the attempt before mirror-regen
|
|
158
|
+
* or any commit ever happens.
|
|
159
|
+
*
|
|
160
|
+
* Known, accepted residual (not closed by this fix, and deliberately out of `close.ts`'s own scope):
|
|
161
|
+
* "committed ⇒ produced by a close" is true, but NOT equivalent to "committed ⇒ produced by
|
|
162
|
+
* `mirror-regen`". `divert` (`executeClose`) calls `saveWork` on EVERY mechanical failure, including
|
|
163
|
+
* `scope-check`'s own — and `saveWork`'s WIP commit `git add -A`s the WHOLE working tree
|
|
164
|
+
* unconditionally, sweeping in a hand-written mirror violation right alongside everything else, the
|
|
165
|
+
* same run it was rejected on. A RETRY on that same branch then sees the violation as committed, not
|
|
166
|
+
* dirty, and this function exempts it — a worker's hand-write laundered through its own rejection.
|
|
167
|
+
* Reaching this requires a human to re-queue a `Blocked` task without reading why it blocked (the
|
|
168
|
+
* `scope-check-failed` reason names the exact file); closing it fully means either `saveWork` itself
|
|
169
|
+
* excludes files `scope-check` just rejected, or a `mirror-regen` commit is marked apart from a WIP
|
|
170
|
+
* one — both changes belong to `saveWork`'s own "preserve work before blocking" contract in
|
|
171
|
+
* `dispatch.ts`, outside this task's declared files.
|
|
172
|
+
*/
|
|
173
|
+
function isMirrorViolation(file: string, workingTreeFiles: ReadonlySet<string> | null): boolean {
|
|
174
|
+
return isMirrorOutput(file) && (workingTreeFiles === null || workingTreeFiles.has(file));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* `pnpm cli:build`'s BUILD output — distinct from `MIRROR_OUTPUT_PREFIXES`
|
|
179
|
+
* (`packages/cli/src/templates/{backend,frontend,monorepo}/`, the packager's committed SOURCE
|
|
180
|
+
* mirror, checked above): this is `packages/cli/dist/templates/`, a gitignored COPY of that same
|
|
181
|
+
* scaffold that `tsc`/`esbuild`
|
|
182
|
+
* rewrite on every build. It is read only when a generated project is scaffolded — never executed
|
|
183
|
+
* inside the slot (T-75).
|
|
184
|
+
*
|
|
185
|
+
* Before this exemption, a file here reached `forbiddenPaths` by ACCIDENT: `matchesAnyPathPattern`
|
|
186
|
+
* and `matchesBasename` compare by substring/basename, so
|
|
187
|
+
* `packages/cli/dist/templates/monorepo/package.json` contains the hard entry `package.json`, and
|
|
188
|
+
* `packages/cli/dist/templates/monorepo/CLAUDE.md` matches `SLOT_EXECUTED_BASENAMES` — even though
|
|
189
|
+
* neither file is the repo's own `package.json` or `CLAUDE.md`. Measured incident: T-73's close
|
|
190
|
+
* failed `scope-check-failed` on ~55 such files despite a correct diff, 1930 green tests and an
|
|
191
|
+
* APPROVED review.
|
|
192
|
+
*
|
|
193
|
+
* Scoped to `templates/` alone, not to all of `packages/cli/dist/`: `packages/cli/bin/run.js` loads
|
|
194
|
+
* the REST of `dist/` (`IGNORED_SCAN_PATHS`'s doc comment, T-49), so that part must stay watched. A
|
|
195
|
+
* file under this prefix still falls through to the soft `packages/cli/` match
|
|
196
|
+
* (`HUMAN_REVIEW_PATHS`) below, same as any other `packages/cli/` file — exempted from the HARD list
|
|
197
|
+
* only, never dropped from the diff or from human review.
|
|
198
|
+
*/
|
|
199
|
+
const CLI_DIST_TEMPLATES_PREFIX = 'packages/cli/dist/templates/';
|
|
200
|
+
|
|
201
|
+
function isCliDistTemplateOutput(file: string): boolean {
|
|
202
|
+
return file.toLowerCase().startsWith(CLI_DIST_TEMPLATES_PREFIX.toLowerCase());
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** The two kinds of path a changed-file set holds, each file in exactly ONE of them. */
|
|
206
|
+
export interface PathClassification {
|
|
207
|
+
/**
|
|
208
|
+
* The mirror output and the lane's own refused paths — a violation on any lane that reaches them,
|
|
209
|
+
* and (on the failure path) the leftovers a person has to clean out of the slot by hand.
|
|
210
|
+
*/
|
|
211
|
+
forbiddenFiles: string[];
|
|
212
|
+
/**
|
|
213
|
+
* The soft-list hits: `HUMAN_REVIEW_PATHS`, as substrings, among the files NEITHER of the two
|
|
214
|
+
* checks above claimed. Admitted by the close and marked for a human.
|
|
215
|
+
*/
|
|
216
|
+
humanReviewFiles: string[];
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* The paths this LANE refuses outright. The frontier lane refuses the hard list; the local lane
|
|
221
|
+
* refuses the same list plus its own three extras (`LOCAL_FORBIDDEN_PATHS`) and every security path,
|
|
222
|
+
* since a local worker runs with the developer's own credentials.
|
|
223
|
+
*
|
|
224
|
+
* `SUPERVISED_ONLY_PATHS` is refused on BOTH, and so appears in both arms: guard 1e already blocks a
|
|
225
|
+
* task that DECLARES one before a slot is spent, but a task that only DISCOVERS the need mid-attempt
|
|
226
|
+
* declared nothing for that guard to read — the frontier lane does not judge a diff against
|
|
227
|
+
* `Files to touch:` at all. Without this the change would reach a pull request, which is exactly
|
|
228
|
+
* what the list exists to prevent (see its doc comment in `guards.ts`).
|
|
229
|
+
*/
|
|
230
|
+
function forbiddenPathsFor(lane: Lane): readonly string[] {
|
|
231
|
+
return lane === LANE.LOCAL
|
|
232
|
+
? [...SECURITY_PATH_PATTERNS, ...LOCAL_FORBIDDEN_PATHS, ...SUPERVISED_ONLY_PATHS]
|
|
233
|
+
: [...SLOT_EXECUTED_PATHS, ...SUPERVISED_ONLY_PATHS];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Every file in `files` placed in exactly one bucket, in design.md decision 5's fixed order: the
|
|
238
|
+
* mirror-output prefix first, then (T-75) the `packages/cli/dist/templates/` build-output
|
|
239
|
+
* exemption, then the lane's refused paths (plus `SLOT_EXECUTED_BASENAMES`, matched by file name at
|
|
240
|
+
* any depth), then — only for what neither claimed — the soft list.
|
|
241
|
+
*
|
|
242
|
+
* The ONE place that order lives, because two callers need the same answer for two different
|
|
243
|
+
* purposes and round 3 shipped them as two independent readings that disagreed (T-31 round 4):
|
|
244
|
+
* `checkScope` turns this into a VERDICT (may this attempt proceed?), and `collectLeftoverFiles`
|
|
245
|
+
* turns it into a RECORD (what did this attempt leave behind, whatever the verdict). Sharing the
|
|
246
|
+
* classification is what makes "the record classifies the tree the way the check would" true by
|
|
247
|
+
* construction instead of by two prose comments agreeing.
|
|
248
|
+
*
|
|
249
|
+
* `workingTreeFiles` (T-79) is the dirty/untracked half of the same attempt's changes — see
|
|
250
|
+
* `isMirrorViolation`'s doc comment for why only THAT half may judge a mirror-output path.
|
|
251
|
+
*/
|
|
252
|
+
function classifyChangedPaths(
|
|
253
|
+
files: readonly string[],
|
|
254
|
+
forbiddenPaths: readonly string[],
|
|
255
|
+
workingTreeFiles: ReadonlySet<string> | null,
|
|
256
|
+
): PathClassification {
|
|
257
|
+
const forbiddenFiles: string[] = [];
|
|
258
|
+
const humanReviewFiles: string[] = [];
|
|
259
|
+
for (const file of files) {
|
|
260
|
+
if (isMirrorOutput(file)) {
|
|
261
|
+
if (isMirrorViolation(file, workingTreeFiles)) {
|
|
262
|
+
forbiddenFiles.push(file);
|
|
263
|
+
}
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (
|
|
267
|
+
!isCliDistTemplateOutput(file) &&
|
|
268
|
+
(matchesAnyPathPattern(file, forbiddenPaths) || matchesBasename(file, SLOT_EXECUTED_BASENAMES))
|
|
269
|
+
) {
|
|
270
|
+
forbiddenFiles.push(file);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
if (matchesAnyPathPattern(file, HUMAN_REVIEW_PATHS)) {
|
|
274
|
+
humanReviewFiles.push(file);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return { forbiddenFiles, humanReviewFiles };
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Local: every changed file must have been declared before launch, AND none may match a security
|
|
282
|
+
* path (the close-time half of the double check — the pre-launch half is `guards.ts`'s
|
|
283
|
+
* `checkSecurityPathOnLocal`, over DECLARED files only) or a `LOCAL_FORBIDDEN_PATHS` entry. Being
|
|
284
|
+
* declared is not enough for the second list: a task may not authorise itself into the harness's
|
|
285
|
+
* own machinery — `.backlog/` included, since declaring the board would authorise a worker to edit
|
|
286
|
+
* the criteria it is judged against. A SOFT-list file is admissible on this lane too, but only when
|
|
287
|
+
* DECLARED and caught by no `LOCAL_FORBIDDEN_PATHS` extra (design.md decision 6) — today only
|
|
288
|
+
* `packages/cli/`, which none of those extras reach.
|
|
289
|
+
*
|
|
290
|
+
* Frontier: no declared-files allowlist (see `guards.ts`'s `SLOT_EXECUTED_PATHS` doc comment) —
|
|
291
|
+
* only the hard list, checked against the real diff regardless of declaration.
|
|
292
|
+
*
|
|
293
|
+
* `SLOT_EXECUTED_BASENAMES` (the instruction file) is checked on BOTH branches, matched by file
|
|
294
|
+
* name at any depth and case-insensitively — see its own doc comment in `guards.ts` for the two
|
|
295
|
+
* measured mechanisms that keep it hard.
|
|
296
|
+
*
|
|
297
|
+
* Both lanes evaluate in the SAME fixed order (design.md decision 5), because the two patterns
|
|
298
|
+
* overlap as substrings: the mirror-output prefix first — `packages/cli/src/templates/…` would
|
|
299
|
+
* otherwise also match the soft `packages/cli/` pattern and silently become a marked PR instead of
|
|
300
|
+
* a violation — then the lane's refused paths, then (only once nothing violated) the soft list. That
|
|
301
|
+
* order is `classifyChangedPaths`, shared with the failure path's own record: the two must agree
|
|
302
|
+
* about a path, and round 3 shipped them as separate readings that did not.
|
|
303
|
+
*/
|
|
304
|
+
export function checkScope(input: CheckScopeInput): ScopeCheckResult {
|
|
305
|
+
const workingTreeFiles = input.workingTreeFiles ? new Set(input.workingTreeFiles) : null;
|
|
306
|
+
const classified = classifyChangedPaths(
|
|
307
|
+
input.changedFiles,
|
|
308
|
+
forbiddenPathsFor(input.lane),
|
|
309
|
+
workingTreeFiles,
|
|
310
|
+
);
|
|
311
|
+
// The declared-files allowlist is the local lane's own rule and the one part of the verdict that is
|
|
312
|
+
// not a property of the PATH: it asks what the task promised, which a record of leftovers cannot.
|
|
313
|
+
const undeclared =
|
|
314
|
+
input.lane === LANE.LOCAL
|
|
315
|
+
? input.changedFiles.filter(
|
|
316
|
+
(file) => !isMirrorOutput(file) && !isDeclared(file, input.declaredFiles),
|
|
317
|
+
)
|
|
318
|
+
: [];
|
|
319
|
+
const violatingFiles = Array.from(new Set([...classified.forbiddenFiles, ...undeclared]));
|
|
320
|
+
return {
|
|
321
|
+
ok: violatingFiles.length === 0,
|
|
322
|
+
violatingFiles,
|
|
323
|
+
humanReviewFiles: violatingFiles.length === 0 ? classified.humanReviewFiles : [],
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// ── Base ref: the one answer to "what does this task branch off, and merge back into?" ────
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* The BRANCH a task's work merges back into: `main` normally, the parent's branch for a subtask
|
|
331
|
+
* (design.md decision (e) — the parent integrates to `main` with one PR, so `main` never holds half
|
|
332
|
+
* a decomposed change). This is the name `gh pr create --base` takes, which is why it is not the
|
|
333
|
+
* remote-tracking form below.
|
|
334
|
+
*
|
|
335
|
+
* Delegates to `guards.ts`'s `taskBaseBranch` — the ONE place this naming convention lives, per
|
|
336
|
+
* T-14 (2026-09-08). This function used to compute `task/<parentId>` on its own, and `slots.ts`'s
|
|
337
|
+
* branch resolution used to compute its OWN answer independently; T-4.1 measured the two silently
|
|
338
|
+
* disagreeing on a subtask whose parent branch was not yet pushed (`slots.ts` fell back to
|
|
339
|
+
* `origin/main`, this function kept assuming `task/<parentId>` regardless), producing a
|
|
340
|
+
* `scope-check-failed` diffing against a ref dispatch never created. `guards.ts`'s pre-launch guard
|
|
341
|
+
* (`checkParentBranchOnRemote`) refuses that dispatch before a slot is ever taken, so this function
|
|
342
|
+
* no longer needs to check the remote itself — by the time a close runs, the branch is guaranteed to
|
|
343
|
+
* exist — but it MUST keep consulting the same naming function `slots.ts` does, so the two can never
|
|
344
|
+
* diverge again.
|
|
345
|
+
*/
|
|
346
|
+
export function resolveBaseBranch(task: Task): string {
|
|
347
|
+
return taskBaseBranch(task);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* The REF the work is measured against and branched from: `origin/<base branch>`. Remote-tracking,
|
|
352
|
+
* not local: a reusable slot's local `main` is whatever the last `git fetch` left behind and can be
|
|
353
|
+
* days stale, which would diff the attempt against the wrong base and branch new work off it.
|
|
354
|
+
* A subtask still measures against its PARENT's branch — diffing a child against `main` would
|
|
355
|
+
* report every file the parent already changed as this child's scope violation.
|
|
356
|
+
*/
|
|
357
|
+
export function resolveBaseRef(task: Task): string {
|
|
358
|
+
return `origin/${resolveBaseBranch(task)}`;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// ── Scope check over the REAL diff ─────────────────────────────────────────────
|
|
362
|
+
|
|
363
|
+
export interface RunScopeCheckInput {
|
|
364
|
+
lane: Lane;
|
|
365
|
+
declaredFiles: readonly string[];
|
|
366
|
+
/** From `resolveBaseRef` — `main`, or the parent's branch for a subtask. */
|
|
367
|
+
base: string;
|
|
368
|
+
/** Runs `git` in the slot and returns its stdout; injected so this never needs a real repo. */
|
|
369
|
+
runGit: (args: string[]) => string;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** `XY<space><path>` — the two status columns, a separator, then the path, all the way to the NUL. */
|
|
373
|
+
const PORCELAIN_ENTRY = /^(..) (.+)$/s;
|
|
374
|
+
|
|
375
|
+
/** A rename or a copy is the one entry shape that carries a SECOND path (its source) after it. */
|
|
376
|
+
const PORCELAIN_HAS_SOURCE_PATH = /^[RC]|^.[RC]/;
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Every path `git status --porcelain -z --untracked-files=all` reports as dirty, untracked files
|
|
380
|
+
* included.
|
|
381
|
+
*
|
|
382
|
+
* `-z` rather than the default line format, because that format is lossy on exactly the paths this
|
|
383
|
+
* check exists to catch: a filename with a space, a quote or a newline comes back quoted and
|
|
384
|
+
* C-escaped, so the string compared against the task's declared allowlist is not the path on disk.
|
|
385
|
+
* With `-z` each entry is terminated by a NUL and nothing is escaped.
|
|
386
|
+
*
|
|
387
|
+
* A rename/copy is ONE entry followed by a SECOND NUL-terminated field holding its SOURCE path
|
|
388
|
+
* (measured: `R new name.txt\0old.txt\0`). Only the new path is a file the attempt produced, so
|
|
389
|
+
* the source field is consumed and dropped — left in, it read as a phantom changed file that the
|
|
390
|
+
* task never declared and the scope check duly failed on.
|
|
391
|
+
*/
|
|
392
|
+
function parsePorcelainPaths(output: string): string[] {
|
|
393
|
+
const fields = output.split('\0');
|
|
394
|
+
const paths: string[] = [];
|
|
395
|
+
for (let index = 0; index < fields.length; index += 1) {
|
|
396
|
+
const match = PORCELAIN_ENTRY.exec(fields[index]);
|
|
397
|
+
if (!match) {
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
paths.push(match[2]);
|
|
401
|
+
if (PORCELAIN_HAS_SOURCE_PATH.test(match[1])) {
|
|
402
|
+
index += 1;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return paths.filter(Boolean);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Runs the close's mechanical scope verification against the slot's real changes and feeds them to
|
|
410
|
+
* `checkScope`. Three git reads, unioned, because any one alone leaves a hole:
|
|
411
|
+
*
|
|
412
|
+
* - `git diff --name-only -z <base>...HEAD` covers what the attempt COMMITTED. Three dots, not
|
|
413
|
+
* two: `...` compares against the merge base, so commits that landed on `base` after the
|
|
414
|
+
* branch started are not reported as this task's changes. `-z` because quoting is ON by
|
|
415
|
+
* default: without it a path holding a `"`, a backslash, a newline or a non-ASCII byte comes
|
|
416
|
+
* back wrapped in `"…"` with C-escapes, and the string then compared against the path lists is
|
|
417
|
+
* not the path on disk. Measured consequence (T-31 review): a quoted
|
|
418
|
+
* `packages/cli/src/templates/…` fails `isMirrorOutput`'s anchored `startsWith` while still
|
|
419
|
+
* matching the unanchored soft pattern `packages/cli/`, so a hand-written mirror edit would be
|
|
420
|
+
* admitted and merely marked — the exact inversion of the mirror-first precedence. Round 2
|
|
421
|
+
* replaced the first fix, `-c core.quotepath=false`, which covers ONLY the non-ASCII half of
|
|
422
|
+
* that class and left `"`/backslash/newline paths quoted; `--name-only` does accept `-z`
|
|
423
|
+
* (measured), so the committed half now reads NUL-separated exactly as the `status` half does.
|
|
424
|
+
* - `git status --porcelain --untracked-files=all` covers what it did NOT commit. The executor is
|
|
425
|
+
* explicitly forbidden from invoking `git` at all (the lane's deny list blocks it), so a normal
|
|
426
|
+
* successful attempt leaves everything in the working tree — checking HEAD alone would let a
|
|
427
|
+
* scope violation through by simply not committing it, and an untracked new file never appears
|
|
428
|
+
* in a `git diff` under any flags.
|
|
429
|
+
* - the same `status` call, scoped to `IGNORED_SCAN_PATHS` and with `--ignored` added, covers what
|
|
430
|
+
* neither of the two above can see at all: a write under a path the repo's OWN `.gitignore`
|
|
431
|
+
* hides (T-49). Deliberately NOT a blanket `--ignored` over the whole tree — see
|
|
432
|
+
* `IGNORED_SCAN_PATHS`'s doc comment for the 138184-entry volume that was measured and rejected.
|
|
433
|
+
*
|
|
434
|
+
* A `git` failure fails the check rather than passing it: an unverifiable diff is exactly the case
|
|
435
|
+
* design.md decision (i) refuses to trust ("the 4-bit probe produced scope creep while reporting
|
|
436
|
+
* success").
|
|
437
|
+
*/
|
|
438
|
+
export interface CollectChangedFilesInput {
|
|
439
|
+
base: string;
|
|
440
|
+
runGit: (args: string[]) => string;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Where a THIRD, gitignore-aware git read is scoped (T-49). Neither the `diff` half above nor the
|
|
445
|
+
* plain `status` half carries `--ignored`, so a write under a gitignored path never reached
|
|
446
|
+
* `changedFiles` at all — measured incident: `packages/cli/.gitignore` hides `dist/`, and
|
|
447
|
+
* `packages/cli/bin/run.js` LOADS `dist/`, not `src/`, so a worker that wrote its payload there and
|
|
448
|
+
* ran it left a clean diff: no scope-check hit, no human-review mark, no trace in a `Blocked`
|
|
449
|
+
* comment.
|
|
450
|
+
*
|
|
451
|
+
* The obvious fix — add `--ignored` to the plain `status` call, repo-wide — was measured and
|
|
452
|
+
* rejected (2026-09-10, this checkout): `git status --porcelain -z --untracked-files=all --ignored`
|
|
453
|
+
* with no pathspec returned 138184 entries, almost all of it pre-existing `node_modules/` content
|
|
454
|
+
* installed at slot PROVISIONING (every dispatched attempt gets a `pnpm install` before it starts,
|
|
455
|
+
* per the root `CLAUDE.md`'s dispatched-worker section) and therefore not written by the attempt at
|
|
456
|
+
* all — plus `backend/.env` and `backend/.keys` surfacing as "changed" simply for existing. That
|
|
457
|
+
* volume, repeated on every close of every task, and those two paths landing in a changed-files list
|
|
458
|
+
* at all, is worse than the hole it closes.
|
|
459
|
+
*
|
|
460
|
+
* A pathspec-scoped `--ignored` read avoids both: `git status --ignored -- packages/cli/dist` reads
|
|
461
|
+
* ONLY that gitignored subtree, so the reachable answer stays "did this attempt touch the one
|
|
462
|
+
* directory the incident named", never "list everything gitignored in the repo". `node_modules/`
|
|
463
|
+
* stays deliberately OUT of this list: it is already `SLOT_EXECUTED_PATHS`-hard, and the one attack
|
|
464
|
+
* this scan exists to catch there — a worker `git add -f`-ing a tampered dependency — already
|
|
465
|
+
* surfaces in the plain `diff`/`status` halves above, since a forced add overrides the ignore rule
|
|
466
|
+
* that hides it. Scoping this list to it too would buy nothing but the 138184-entry regression just
|
|
467
|
+
* measured.
|
|
468
|
+
*/
|
|
469
|
+
const IGNORED_SCAN_PATHS: readonly string[] = ['packages/cli/dist'];
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* `collectChangedFiles`'s two halves, kept APART (T-79) rather than merged: `committed` is what
|
|
473
|
+
* `<base>...HEAD` reports, cumulative across every attempt this branch ever had; `workingTree` is
|
|
474
|
+
* dirty, untracked, or written under a watched gitignored path — necessarily THIS attempt's own
|
|
475
|
+
* doing, since the executor never commits anything itself. `checkScope`'s mirror-output judgment
|
|
476
|
+
* (`isMirrorViolation`) needs exactly this split; nothing else in this module does, which is why
|
|
477
|
+
* `collectChangedFiles` below stays the merged, single-list answer every other caller already reads.
|
|
478
|
+
*/
|
|
479
|
+
export interface ChangedFileSets {
|
|
480
|
+
committed: string[];
|
|
481
|
+
workingTree: string[];
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* The three git reads `collectChangedFiles` used to run inline, now shared with `checkScope`'s
|
|
486
|
+
* working-tree split (T-79) so both halves come from the SAME three calls instead of running git
|
|
487
|
+
* twice per close step. See `collectChangedFiles`'s doc comment (below) for why each of the three
|
|
488
|
+
* reads exists; this function only changes how their results are GROUPED, not what they ask git.
|
|
489
|
+
*/
|
|
490
|
+
export function collectChangedFileSets(input: CollectChangedFilesInput): ChangedFileSets {
|
|
491
|
+
// No `trim()` on the entries. `-z` already means "nothing is escaped", and trimming would rewrite
|
|
492
|
+
// exactly the paths that flag exists to preserve: a filename with a leading or trailing space, a
|
|
493
|
+
// tab or a newline would be compared against the path lists and the declared allowlist under a
|
|
494
|
+
// spelling that is not the path on disk. The trailing empty field the terminating NUL leaves is
|
|
495
|
+
// dropped by `filter(Boolean)`, which is all the trim was ever doing here — and the `status` half
|
|
496
|
+
// (`parsePorcelainPaths`) never trimmed, so the two halves disagreed on the same path.
|
|
497
|
+
const committed = input
|
|
498
|
+
.runGit(['diff', '--name-only', '-z', `${input.base}...HEAD`])
|
|
499
|
+
.split('\0')
|
|
500
|
+
.filter(Boolean);
|
|
501
|
+
const dirty = parsePorcelainPaths(
|
|
502
|
+
input.runGit(['status', '--porcelain', '-z', '--untracked-files=all']),
|
|
503
|
+
);
|
|
504
|
+
const ignored = parsePorcelainPaths(
|
|
505
|
+
input.runGit([
|
|
506
|
+
'status',
|
|
507
|
+
'--porcelain',
|
|
508
|
+
'-z',
|
|
509
|
+
'--untracked-files=all',
|
|
510
|
+
'--ignored',
|
|
511
|
+
'--',
|
|
512
|
+
...IGNORED_SCAN_PATHS,
|
|
513
|
+
]),
|
|
514
|
+
);
|
|
515
|
+
return { committed, workingTree: [...new Set([...dirty, ...ignored])] };
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Every repo-relative path this attempt produced: what it COMMITTED (`<base>...HEAD`), what it left
|
|
520
|
+
* dirty or untracked, and what it wrote under a gitignored path this module knows to watch
|
|
521
|
+
* (`IGNORED_SCAN_PATHS`, T-49). Exported because the mechanical triad scopes its Prettier and barrels
|
|
522
|
+
* runs to exactly this set — running them repo-wide fails every attempt on someone else's diff.
|
|
523
|
+
* Throws on a git failure; the callers turn that into a mechanical failure with the reason.
|
|
524
|
+
*/
|
|
525
|
+
export function collectChangedFiles(input: CollectChangedFilesInput): string[] {
|
|
526
|
+
const sets = collectChangedFileSets(input);
|
|
527
|
+
return [...new Set([...sets.committed, ...sets.workingTree])];
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/** `runScopeCheck`'s return, widened with the soft-list files `dispatch.ts`'s `openPr` runner reads (T-31). */
|
|
531
|
+
export interface ScopeCheckStepResult extends MechanicalStepResult {
|
|
532
|
+
humanReviewFiles: string[];
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
export function runScopeCheck(input: RunScopeCheckInput): ScopeCheckStepResult {
|
|
536
|
+
let sets: ChangedFileSets;
|
|
537
|
+
try {
|
|
538
|
+
sets = collectChangedFileSets({ base: input.base, runGit: input.runGit });
|
|
539
|
+
} catch (error) {
|
|
540
|
+
return {
|
|
541
|
+
ok: false,
|
|
542
|
+
reason: 'scope-check-failed',
|
|
543
|
+
question: `git no se pudo ejecutar: ${String(error)}`,
|
|
544
|
+
humanReviewFiles: [],
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
const changedFiles = [...new Set([...sets.committed, ...sets.workingTree])];
|
|
549
|
+
const result = checkScope({
|
|
550
|
+
lane: input.lane,
|
|
551
|
+
changedFiles,
|
|
552
|
+
declaredFiles: input.declaredFiles,
|
|
553
|
+
// T-79: only a DIRTY mirror-output path is judged as this attempt's violation — a committed-only
|
|
554
|
+
// one is a prior close's own `mirror-regen` output. See `isMirrorViolation`'s doc comment.
|
|
555
|
+
workingTreeFiles: sets.workingTree,
|
|
556
|
+
});
|
|
557
|
+
if (!result.ok) {
|
|
558
|
+
return {
|
|
559
|
+
ok: false,
|
|
560
|
+
reason: 'scope-check-failed',
|
|
561
|
+
question: `Ficheros fuera del alcance declarado: ${result.violatingFiles.join(', ')}`,
|
|
562
|
+
humanReviewFiles: [],
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
return { ok: true, humanReviewFiles: result.humanReviewFiles };
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
export interface CollectLeftoverFilesInput extends CollectChangedFilesInput {
|
|
570
|
+
/** Which paths are refused, and therefore which of the two buckets a leftover lands in. */
|
|
571
|
+
lane: Lane;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* What the slot's current tree holds, CLASSIFIED and with no verdict attached — the informational
|
|
576
|
+
* counterpart of `runScopeCheck`, for the close paths that never run it (T-31 rounds 3 and 4): a
|
|
577
|
+
* session-level failure's plan starts at `save-work`, and `board-check` diverts before
|
|
578
|
+
* `scope-check`, so in both cases `checkScope` is never called and the `Blocked` comment would
|
|
579
|
+
* otherwise name nothing at all while the failed tree is pushed to `task/<id>` and restored into the
|
|
580
|
+
* slot by the retry.
|
|
581
|
+
*
|
|
582
|
+
* Deliberately NOT `runScopeCheck`: that function reports `humanReviewFiles: []` whenever the diff
|
|
583
|
+
* violates, which is the right answer for a verdict and the wrong one for a record. A worker that
|
|
584
|
+
* stopped with `needs-guidance` may well have left BOTH kinds behind, and the person releasing the
|
|
585
|
+
* task needs to be told about both.
|
|
586
|
+
*
|
|
587
|
+
* Round 3 filtered the tree through the soft list alone, which reported a mirror-output path — the
|
|
588
|
+
* one prefix refused on both lanes — as a soft-list file the close admits, and said nothing at all
|
|
589
|
+
* about `.claude/settings.json`. Both halves now come from `classifyChangedPaths`, the same function
|
|
590
|
+
* `checkScope` reads, so the record and the verdict cannot classify a path differently — including
|
|
591
|
+
* (T-79) the same working-tree split, so a PRIOR close's committed mirror output is not named here
|
|
592
|
+
* as a leftover to clean up either; see `isMirrorViolation`'s doc comment.
|
|
593
|
+
*
|
|
594
|
+
* Throws on a `git` failure; `executeClose` records that as "none found" rather than failing a close
|
|
595
|
+
* that has already failed.
|
|
596
|
+
*/
|
|
597
|
+
export function collectLeftoverFiles(input: CollectLeftoverFilesInput): PathClassification {
|
|
598
|
+
const sets = collectChangedFileSets(input);
|
|
599
|
+
const changedFiles = [...new Set([...sets.committed, ...sets.workingTree])];
|
|
600
|
+
return classifyChangedPaths(changedFiles, forbiddenPathsFor(input.lane), new Set(sets.workingTree));
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// ── mirror-regen: keeping the CLI scaffold mirror in step with the attempt ────
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Where the packager WRITES. `scripts/packager/publish.mjs` mirrors `backend/`, `frontend/` and the
|
|
607
|
+
* monorepo root into these three directories, and `.github/workflows/cli-template-drift-check.yml`
|
|
608
|
+
* fails a PR whose committed mirror no longer matches its sources.
|
|
609
|
+
*
|
|
610
|
+
* Measured defect (PR #96, dispatched task T-3): the attempt edited `backend/src/@app/iam/**` and
|
|
611
|
+
* `frontend/src/app/domains/admin/apps/iam/**`, both mirrored roots, and the PR failed that gate.
|
|
612
|
+
* The worker could not fix it — these prefixes are refused on both lanes regardless of the T-31
|
|
613
|
+
* split (`packages/cli/` itself is soft, but its OWN generated mirror never is: `checkScope` checks
|
|
614
|
+
* these prefixes first, before either path list) — and no close step regenerated the mirror either,
|
|
615
|
+
* so ANY dispatched task touching a mirrored root could never pass CI on its own. This step closes
|
|
616
|
+
* that.
|
|
617
|
+
*
|
|
618
|
+
* Deliberately these THREE directories, not the whole `packages/cli/src/templates/` tree (T-93):
|
|
619
|
+
* the sibling `packages/cli/src/templates/codegen/` is 944 KB of hand-written `.eta` templates —
|
|
620
|
+
* the CLI's OWN source, not packager output — and `cli-template-drift-check.yml`'s own drift check
|
|
621
|
+
* excludes it by name for that same reason. Treating it as mirror output made a legitimate
|
|
622
|
+
* hand-written `.eta` edit a hard scope violation on every attempt that declared it (T-76
|
|
623
|
+
* intento-1) even though nothing the packager writes ever lands there.
|
|
624
|
+
*/
|
|
625
|
+
const MIRROR_OUTPUT_PREFIXES = [
|
|
626
|
+
'packages/cli/src/templates/backend/',
|
|
627
|
+
'packages/cli/src/templates/frontend/',
|
|
628
|
+
'packages/cli/src/templates/monorepo/',
|
|
629
|
+
] as const;
|
|
630
|
+
|
|
631
|
+
/**
|
|
632
|
+
* The packager's own output root, subtracted from the mirrored-root list. The drift-check filter
|
|
633
|
+
* does not list it today — but if it ever did, a mirror file appearing in the diff would make this
|
|
634
|
+
* step regenerate on its own output, so the subtraction is what keeps "changed a SOURCE root" the
|
|
635
|
+
* question being asked.
|
|
636
|
+
*/
|
|
637
|
+
const MIRROR_OUTPUT_ROOT = 'packages/cli';
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* `paths:` followed by its quoted list. Deliberately the SAME shape
|
|
641
|
+
* `scripts/packager/drift-check-paths.test.mjs` parses with — that test fails when a
|
|
642
|
+
* `copyMonorepo()` glob is missing from this list, which is precisely why the workflow is read at
|
|
643
|
+
* runtime here instead of the dispatcher keeping a second, silently divergent copy of the roots.
|
|
644
|
+
*/
|
|
645
|
+
const WORKFLOW_PATHS_BLOCK = /paths:\n((?:[ \t]*-[ \t]*'[^']*'\n?)+)/;
|
|
646
|
+
|
|
647
|
+
/** A `/**`-suffixed glob is a subtree; anything else is one exact path. */
|
|
648
|
+
const SUBTREE_GLOB_SUFFIX = '/**';
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* The source roots the packager mirrors, read off the drift-check workflow's `paths:` filter.
|
|
652
|
+
* Returns `[]` when the workflow carries no parseable list — the caller treats that as "unknown",
|
|
653
|
+
* not as "nothing", since an unverifiable answer here is the same class of problem
|
|
654
|
+
* `runScopeCheck` refuses to trust.
|
|
655
|
+
*/
|
|
656
|
+
export function parseMirroredRoots(workflowYaml: string): string[] {
|
|
657
|
+
const block = WORKFLOW_PATHS_BLOCK.exec(workflowYaml);
|
|
658
|
+
if (!block) {
|
|
659
|
+
return [];
|
|
660
|
+
}
|
|
661
|
+
return [...block[1].matchAll(/'([^']+)'/g)]
|
|
662
|
+
.map((match) => match[1])
|
|
663
|
+
.filter((root) => root !== MIRROR_OUTPUT_ROOT && !root.startsWith(`${MIRROR_OUTPUT_ROOT}/`));
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* Whether this attempt changed anything the packager reads. A `backend/**`-shaped root matches its
|
|
668
|
+
* whole subtree; every other entry (`package.json`, `openspec/config.yaml`, `.prettierrc`) is an
|
|
669
|
+
* EXACT path — the packager copies that one file and no other, so matching it as a prefix would
|
|
670
|
+
* regenerate the whole mirror over an unrelated `backend-tools/package.json.bak`.
|
|
671
|
+
*/
|
|
672
|
+
export function touchesMirroredRoot(
|
|
673
|
+
changedFiles: readonly string[],
|
|
674
|
+
roots: readonly string[],
|
|
675
|
+
): boolean {
|
|
676
|
+
const matches = (file: string, root: string): boolean => {
|
|
677
|
+
if (!root.endsWith(SUBTREE_GLOB_SUFFIX)) {
|
|
678
|
+
return file === root;
|
|
679
|
+
}
|
|
680
|
+
const directory = `${root.slice(0, -SUBTREE_GLOB_SUFFIX.length)}/`;
|
|
681
|
+
return file.startsWith(directory);
|
|
682
|
+
};
|
|
683
|
+
return changedFiles.some((file) => roots.some((root) => matches(file, root)));
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
export interface RunMirrorRegenInput {
|
|
687
|
+
/** From `resolveBaseRef` — the same base the scope check and the triad measure against. */
|
|
688
|
+
base: string;
|
|
689
|
+
/** Runs `git` in the slot; throws carry the child's stderr (the caller folds it in). */
|
|
690
|
+
runGit: (args: string[]) => string;
|
|
691
|
+
/**
|
|
692
|
+
* `.github/workflows/cli-template-drift-check.yml` as it stands IN THE SLOT, or `null` when the
|
|
693
|
+
* repo has none. A generated project is the `null` case: `copyMonorepo()` ships
|
|
694
|
+
* `scripts/backlog/**` but neither `.github/**` nor `scripts/packager/**`, so there is no mirror
|
|
695
|
+
* to keep there and no gate to satisfy.
|
|
696
|
+
*/
|
|
697
|
+
driftCheckWorkflow: string | null;
|
|
698
|
+
/** Runs `node scripts/packager/publish.mjs` in the slot; throws on failure. */
|
|
699
|
+
runPackager: () => void;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
export interface MirrorRegenResult extends MechanicalStepResult {
|
|
703
|
+
/** Whether the packager actually ran, as opposed to the step finding nothing to do. */
|
|
704
|
+
regenerated: boolean;
|
|
705
|
+
/** The mirror paths the regen left in the working tree, for the log. */
|
|
706
|
+
mirrorFiles: string[];
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
/** A factory, not a shared constant: every caller gets its own `mirrorFiles` array to hold. */
|
|
710
|
+
const mirrorRegenSkipped = (): MirrorRegenResult => ({
|
|
711
|
+
ok: true,
|
|
712
|
+
regenerated: false,
|
|
713
|
+
mirrorFiles: [],
|
|
714
|
+
});
|
|
715
|
+
|
|
716
|
+
const mirrorRegenFailure = (question: string): MirrorRegenResult => ({
|
|
717
|
+
ok: false,
|
|
718
|
+
reason: 'mirror-regen-failed',
|
|
719
|
+
question,
|
|
720
|
+
regenerated: false,
|
|
721
|
+
mirrorFiles: [],
|
|
722
|
+
});
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Regenerates the CLI scaffold mirror when — and only when — the attempt touched a root the
|
|
726
|
+
* packager reads. The regen's output lands in the working tree and is picked up by the `git add -A`
|
|
727
|
+
* `open-pr` already runs, so the mirror travels in the attempt's own commit and its PR passes the
|
|
728
|
+
* drift gate.
|
|
729
|
+
*
|
|
730
|
+
* It is NOT unconditional: `publish.mjs` is a repo-wide copy of `backend/`, `frontend/` and half the
|
|
731
|
+
* root, and running it on an attempt that changed a `cliter/*.aurora.yaml` and nothing else would
|
|
732
|
+
* spend that cost — and put a several-thousand-file mirror diff in front of the reviewer — for no
|
|
733
|
+
* reason at all.
|
|
734
|
+
*
|
|
735
|
+
* The scope check's silence about `packages/cli/src/templates/**` is the STEP ORDER, not a hole in
|
|
736
|
+
* the path lists: `scope-check` already returned its verdict over the pre-regen file set, so a
|
|
737
|
+
* mirror path the WORKER wrote by hand is still a violation, and this dispatcher-owned output
|
|
738
|
+
* simply arrives after the judging is done.
|
|
739
|
+
*/
|
|
740
|
+
export function runMirrorRegen(input: RunMirrorRegenInput): MirrorRegenResult {
|
|
741
|
+
if (input.driftCheckWorkflow === null) {
|
|
742
|
+
return mirrorRegenSkipped();
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
const roots = parseMirroredRoots(input.driftCheckWorkflow);
|
|
746
|
+
if (roots.length === 0) {
|
|
747
|
+
return mirrorRegenFailure(
|
|
748
|
+
'cli-template-drift-check.yml existe pero no se pudo leer su lista paths:, así que no se sabe qué raíces ' +
|
|
749
|
+
'espeja el packager. Sin esa lista el espejo no se puede regenerar con criterio.',
|
|
750
|
+
);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
let changedFiles: string[];
|
|
754
|
+
try {
|
|
755
|
+
changedFiles = collectChangedFiles({ base: input.base, runGit: input.runGit });
|
|
756
|
+
} catch (error) {
|
|
757
|
+
return mirrorRegenFailure(`git no se pudo ejecutar: ${String(error)}`);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
if (!touchesMirroredRoot(changedFiles, roots)) {
|
|
761
|
+
return mirrorRegenSkipped();
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
try {
|
|
765
|
+
input.runPackager();
|
|
766
|
+
} catch (error) {
|
|
767
|
+
return mirrorRegenFailure(
|
|
768
|
+
`el packager falló al regenerar el espejo del scaffold: ${String(error)}`,
|
|
769
|
+
);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
// Re-read AFTER the regen: the mirror files it just wrote are part of this attempt's diff from
|
|
773
|
+
// here on — the reviewer reads them, and `open-pr`'s `git add -A` commits them.
|
|
774
|
+
let afterRegen: string[];
|
|
775
|
+
try {
|
|
776
|
+
afterRegen = collectChangedFiles({ base: input.base, runGit: input.runGit });
|
|
777
|
+
} catch (error) {
|
|
778
|
+
return mirrorRegenFailure(`git no se pudo ejecutar tras regenerar el espejo: ${String(error)}`);
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
const mirrorFiles = afterRegen.filter((file) =>
|
|
782
|
+
MIRROR_OUTPUT_PREFIXES.some((prefix) => file.startsWith(prefix)),
|
|
783
|
+
);
|
|
784
|
+
return { ok: true, regenerated: true, mirrorFiles };
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
export interface CollectAttemptDiffInput {
|
|
788
|
+
base: string;
|
|
789
|
+
runGit: (args: string[]) => string;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* The whole diff an attempt produced, for the reviewer to read: what it committed
|
|
794
|
+
* (`<base>...HEAD`) plus what it left in the working tree (`diff HEAD`). Both halves matter for the
|
|
795
|
+
* same reason `runScopeCheck` reads both — the executor is forbidden from running `git`, so a
|
|
796
|
+
* successful attempt usually has committed nothing at all, and handing the reviewer an empty diff
|
|
797
|
+
* would earn a `VERDICT: pass` on code it never saw.
|
|
798
|
+
*
|
|
799
|
+
* The intent-to-add FIRST is what makes the second half honest. No `git diff` under any flags
|
|
800
|
+
* renders an UNTRACKED file, and on a dispatched attempt every created file is untracked — the
|
|
801
|
+
* executor is forbidden from running git, so nothing ever staged them. The reviewer was handed a
|
|
802
|
+
* diff with every new file silently missing and approved code it never saw. `add -N -A` registers
|
|
803
|
+
* their paths in the index without their content, which is exactly what makes them appear in the
|
|
804
|
+
* next `diff HEAD`.
|
|
805
|
+
*
|
|
806
|
+
* Side effect, deliberate and harmless: the slot's index is left carrying those intent-to-add
|
|
807
|
+
* entries. Every path that continues from here (`open-pr`, the failure path's WIP auto-save) runs
|
|
808
|
+
* `git add -A` over the whole tree anyway, so nothing downstream can observe the difference.
|
|
809
|
+
*
|
|
810
|
+
* THROWS on a git failure instead of returning a note. A note reads to the reviewer as the diff
|
|
811
|
+
* itself, so "git blew up" became "there is nothing here to object to" and the attempt passed the
|
|
812
|
+
* one gate meant to be adversarial. The caller turns the throw into a `reviewer-failed` step.
|
|
813
|
+
*/
|
|
814
|
+
export function collectAttemptDiff(input: CollectAttemptDiffInput): string {
|
|
815
|
+
input.runGit(['add', '-N', '-A', '--', '.']);
|
|
816
|
+
const parts = [input.runGit(['diff', `${input.base}...HEAD`]), input.runGit(['diff', 'HEAD'])]
|
|
817
|
+
.map((part) => part.trim())
|
|
818
|
+
.filter(Boolean);
|
|
819
|
+
return parts.length > 0 ? parts.join('\n') : '(sin cambios detectables en el slot)';
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
// ── PR creation args ───────────────────────────────────────────────────────────
|
|
823
|
+
|
|
824
|
+
export interface BuildPrCreateArgsInput {
|
|
825
|
+
task: Task;
|
|
826
|
+
branch: string;
|
|
827
|
+
attempt: number;
|
|
828
|
+
title: string;
|
|
829
|
+
/**
|
|
830
|
+
* `backlog task view <id> --plain`, re-read right before the PR is opened. When given, the body
|
|
831
|
+
* is `composePrBody`'s rich composition (T-8 point 2); omitted keeps the legacy one-line body —
|
|
832
|
+
* a caller with no board text to hand (or one not yet updated to pass it) gets exactly the same
|
|
833
|
+
* behaviour this function had before `composePrBody` existed.
|
|
834
|
+
*/
|
|
835
|
+
taskText?: string;
|
|
836
|
+
/** `lanes.json`'s `attempts` cap, shown alongside the attempt number in the composed body. */
|
|
837
|
+
maxAttempts?: number;
|
|
838
|
+
/**
|
|
839
|
+
* Soft-list files `checkScope` reported for this attempt (T-31). Threaded into the body's
|
|
840
|
+
* human-review section — the mark's unfailable half, since it is one argv with the body the PR
|
|
841
|
+
* is created with. Empty or omitted → no section at all.
|
|
842
|
+
*/
|
|
843
|
+
humanReviewFiles?: readonly string[];
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
export interface FindOpenPrInput {
|
|
847
|
+
branch: string;
|
|
848
|
+
/** Runs `gh` and returns its stdout; injected so this never needs a network or a real repo. */
|
|
849
|
+
runGh: (args: string[]) => string;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
/** `gh` says this when the branch has no PR at all — the one failure that means "go create one". */
|
|
853
|
+
const NO_PR_FOUND = /no pull requests? found/i;
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* The URL of the PR already OPEN on this branch, or `null` when there is none to reuse.
|
|
857
|
+
*
|
|
858
|
+
* A retry pushes to the same `task/T-nn` branch, so `pr create` on the second attempt fails with
|
|
859
|
+
* "a pull request for branch … already exists" — failing a close whose code is already on the
|
|
860
|
+
* remote, with a perfectly good PR open. Asking first turns that into a reuse.
|
|
861
|
+
*
|
|
862
|
+
* Only "no pull requests found" counts as absence. A revoked token or a dead network is not an
|
|
863
|
+
* absent PR, and swallowing it would have the close create a duplicate the moment `gh` recovered,
|
|
864
|
+
* so it propagates.
|
|
865
|
+
*/
|
|
866
|
+
export function findOpenPrUrl(input: FindOpenPrInput): string | null {
|
|
867
|
+
let raw: string;
|
|
868
|
+
try {
|
|
869
|
+
raw = input.runGh(['pr', 'view', input.branch, '--json', 'url,state']);
|
|
870
|
+
} catch (error) {
|
|
871
|
+
if (NO_PR_FOUND.test(String(error))) {
|
|
872
|
+
return null;
|
|
873
|
+
}
|
|
874
|
+
throw error;
|
|
875
|
+
}
|
|
876
|
+
const parsed = JSON.parse(raw) as { url?: string; state?: string };
|
|
877
|
+
return parsed.state === 'OPEN' && parsed.url ? parsed.url : null;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
/**
|
|
881
|
+
* The body a pull request currently has, so a mark can be added to it without discarding what is
|
|
882
|
+
* already written there (`upsertHumanReviewSection`). Throws on a `gh` or JSON failure: the caller
|
|
883
|
+
* must be able to tell "the body is empty" from "I could not read the body", because only the first
|
|
884
|
+
* one may be safely overwritten.
|
|
885
|
+
*/
|
|
886
|
+
export function readPrBody(branch: string, runGh: (args: string[]) => string): string {
|
|
887
|
+
const parsed = JSON.parse(runGh(['pr', 'view', branch, '--json', 'body'])) as { body?: string };
|
|
888
|
+
return parsed.body ?? '';
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
// ── PR body composition (T-8 point 2) ─────────────────────────────────────────
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* A `--plain` section heading followed by its dashed underline — the SAME shape
|
|
895
|
+
* `task-view.ts`'s own (unexported) `SECTION_HEADING` matches. Duplicated here rather than
|
|
896
|
+
* exported from there: `task-view.ts` owns the fields the dispatcher DECIDES on (status, AC/DoD,
|
|
897
|
+
* the two conventions), while the description and the implementation-notes PROSE below are read
|
|
898
|
+
* only for the PR body a human reads — a narrower, presentation-only concern that belongs beside
|
|
899
|
+
* `buildPrCreateArgs`, not inside the board parser.
|
|
900
|
+
*/
|
|
901
|
+
const ANY_SECTION_HEADING = /^[^\S\n]*\S[^\n]*:[^\S\n]*\n-+[^\S\n]*$/m;
|
|
902
|
+
const DESCRIPTION_HEADING = /^Description:[^\S\n]*\n-+[^\S\n]*$/m;
|
|
903
|
+
const IMPLEMENTATION_NOTES_HEADING = /^(?:Implementation Notes|Notes):[^\S\n]*\n-+[^\S\n]*$/m;
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* T-8 defect 13: the Implementation Notes section is WORKER-authored prose — written mid-run
|
|
907
|
+
* through `worker-edit.ts`'s `--notes`/`--append-notes`, with no length limit of its own — spliced
|
|
908
|
+
* verbatim into a PUBLIC PR body. A long report also grows the `gh pr create --body` argv with no
|
|
909
|
+
* cap. `sanitizeCommentBody` already carries this exact discipline (a char cap, standalone-`---`
|
|
910
|
+
* stripping) for the `Blocked` comment; reused here rather than duplicated, with its own tail — the
|
|
911
|
+
* full text is not lost, it stays readable on the task itself, never in `review.md` or `run.log`.
|
|
912
|
+
*/
|
|
913
|
+
const NOTES_TRUNCATION_TAIL = '\n\n(truncado; ver las notas completas en el tablero)';
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* The prose under one `--plain` section heading, up to the NEXT heading (or the end of the text).
|
|
917
|
+
* `null` when `headingPattern` is absent — a task that declares no description, or a worker that
|
|
918
|
+
* never left any notes, is not an error here; the caller renders that as "nothing to show".
|
|
919
|
+
*/
|
|
920
|
+
function sectionProse(taskText: string, headingPattern: RegExp): string | null {
|
|
921
|
+
const heading = headingPattern.exec(taskText);
|
|
922
|
+
if (!heading) {
|
|
923
|
+
return null;
|
|
924
|
+
}
|
|
925
|
+
const rest = taskText.slice(heading.index + heading[0].length);
|
|
926
|
+
const nextHeading = ANY_SECTION_HEADING.exec(rest);
|
|
927
|
+
const body = (nextHeading ? rest.slice(0, nextHeading.index) : rest).trim();
|
|
928
|
+
return body.length > 0 ? body : null;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
export interface ComposePrBodyInput {
|
|
932
|
+
/** The composed PR title (see `buildPrTitle`), or `null` to fall back to the bare task id. */
|
|
933
|
+
title: string | null;
|
|
934
|
+
taskId: string;
|
|
935
|
+
/** `backlog task view <id> --plain`, re-read right before the PR is opened. */
|
|
936
|
+
taskText: string;
|
|
937
|
+
/** The attempt this PR was opened from. */
|
|
938
|
+
attempt: number;
|
|
939
|
+
/** `lanes.json`'s `attempts` cap; shown alongside the attempt number when given. */
|
|
940
|
+
maxAttempts?: number;
|
|
941
|
+
/** Soft-list files `checkScope` reported (T-31); empty or omitted → no human-review section. */
|
|
942
|
+
humanReviewFiles?: readonly string[];
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
/**
|
|
946
|
+
* How many soft-list paths any mark renders in full. The list is worker-influenced (it is derived
|
|
947
|
+
* from the attempt's own diff) and it is spliced into a PUBLIC pull request body and into the `gh`
|
|
948
|
+
* argv, which is the same unbounded-splice defect T-8 point 13 fixed for the worker's
|
|
949
|
+
* implementation notes with `sanitizeCommentBody`. A generated module or a wide refactor under
|
|
950
|
+
* `packages/cli/` produces hundreds of paths, so the count carries what the truncation drops: the
|
|
951
|
+
* complete list is in the diff the reviewer is being sent to read anyway.
|
|
952
|
+
*/
|
|
953
|
+
const MAX_MARKED_FILES = 40;
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* The markers that delimit the human-review section inside a pull request body. HTML comments, so
|
|
957
|
+
* GitHub renders nothing for them, and they are what `upsertHumanReviewSection` finds the section
|
|
958
|
+
* by on a rewrite.
|
|
959
|
+
*/
|
|
960
|
+
export const HUMAN_REVIEW_SECTION_START = '<!-- dispatcher:human-review:start -->';
|
|
961
|
+
export const HUMAN_REVIEW_SECTION_END = '<!-- dispatcher:human-review:end -->';
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* How many CHARACTERS of rendered paths any mark splices, and how long a single path may be. The
|
|
965
|
+
* count cap above bounds how MANY entries appear and says nothing about their size: forty paths of
|
|
966
|
+
* four kilobytes each is a 160 KB section in a public pull request body and in a `gh` argv. Two
|
|
967
|
+
* budgets rather than one, so a single pathological path cannot consume the whole list.
|
|
968
|
+
*
|
|
969
|
+
* This cap does NOT keep the `Blocked` comment's actionable line alive, and round 3's docstring
|
|
970
|
+
* claimed it did. Measured (T-31 round 4): 40 soft paths of ~60 chars fill this budget and a
|
|
971
|
+
* 1900-char worker report fills most of the rest, and the comment came to EXACTLY
|
|
972
|
+
* `MAX_COMMENT_CHARS` with `whatToDo` cut off — a list budget that is half the comment budget and
|
|
973
|
+
* knows nothing about what the rest of the comment already used cannot bound the total.
|
|
974
|
+
* `formatBlockComment` budgets its lists against the room the comment has LEFT for exactly that
|
|
975
|
+
* reason; this stays the ceiling that applies wherever there is no such room to measure (the PR body
|
|
976
|
+
* and the `gh` argv).
|
|
977
|
+
*/
|
|
978
|
+
const MAX_MARKED_LIST_CHARS = 2000;
|
|
979
|
+
const MAX_MARKED_PATH_CHARS = 200;
|
|
980
|
+
|
|
981
|
+
/**
|
|
982
|
+
* One path as it may be spliced into a pull request body, a `gh` argv or a board comment. Paths
|
|
983
|
+
* reach here VERBATIM from `git diff -z` / `git status -z` (that is the whole point of `-z`), so
|
|
984
|
+
* every byte a filename may legally hold arrives intact — including the ones that break the
|
|
985
|
+
* channels this list travels through:
|
|
986
|
+
*
|
|
987
|
+
* - `<` and `>` are escaped, so a rendered path can never spell an HTML comment and therefore
|
|
988
|
+
* never spell `HUMAN_REVIEW_SECTION_START`/`_END`. Measured defect (T-31 round 3): a file named
|
|
989
|
+
* with the literal end marker inside it put a second copy of that marker in the middle of the
|
|
990
|
+
* list, so `upsertHumanReviewSection`'s `indexOf(END)` landed mid-list and the next rewrite
|
|
991
|
+
* sliced at the wrong offset — destroying the human text the delimited section exists to keep.
|
|
992
|
+
* The escapes render as the literal characters on GitHub, so nothing is lost to a reader.
|
|
993
|
+
* - control characters (a newline, a tab, a NUL) become `?`: one changed file must render as one
|
|
994
|
+
* entry, or a single path silently becomes several bullets, or several comma-separated names.
|
|
995
|
+
* - the path itself is capped, so one entry cannot swallow the whole budget below.
|
|
996
|
+
*
|
|
997
|
+
* ONE rendering for both channels, decided in T-31 round 4 rather than left implicit: the escapes
|
|
998
|
+
* render back as `<` and `>` on GitHub and appear LITERALLY (`<`) in a `Blocked` comment read
|
|
999
|
+
* through `backlog task view --plain`, where there are no markers to protect. A second, channel-aware
|
|
1000
|
+
* renderer would mean two code paths over worker-supplied bytes — the class of thing this function
|
|
1001
|
+
* exists to keep to one — for a cosmetic gain: `packages/cli/x<y>.ts` still identifies the file
|
|
1002
|
+
* on a board a person is reading in order to go and look at it. So the escape is unconditional, and
|
|
1003
|
+
* the board channel shows it.
|
|
1004
|
+
*/
|
|
1005
|
+
function renderMarkedPath(file: string): string {
|
|
1006
|
+
const escaped = file
|
|
1007
|
+
.replace(/[\u0000-\u001f\u007f]/g, '?')
|
|
1008
|
+
.replace(/</g, '<')
|
|
1009
|
+
.replace(/>/g, '>');
|
|
1010
|
+
return escaped.length > MAX_MARKED_PATH_CHARS
|
|
1011
|
+
? `${escaped.slice(0, MAX_MARKED_PATH_CHARS)}…`
|
|
1012
|
+
: escaped;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
interface CappedFileList {
|
|
1016
|
+
shown: readonly string[];
|
|
1017
|
+
omitted: number;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* `files` RENDERED (see `renderMarkedPath`) and capped on both budgets — the entry count and
|
|
1022
|
+
* `charBudget` characters of paths — plus how many entries were dropped. The caller renders `omitted`
|
|
1023
|
+
* so the reviewer knows the list is partial; the complete set is in the diff they are being sent to
|
|
1024
|
+
* read.
|
|
1025
|
+
*
|
|
1026
|
+
* `charBudget` defaults to `MAX_MARKED_LIST_CHARS`, which is the right answer for the pull-request
|
|
1027
|
+
* body (a body has no other budget to share). `formatBlockComment` passes a SMALLER one: what the
|
|
1028
|
+
* comment has left after everything that must survive it.
|
|
1029
|
+
*/
|
|
1030
|
+
function capFileList(
|
|
1031
|
+
files: readonly string[],
|
|
1032
|
+
charBudget: number = MAX_MARKED_LIST_CHARS,
|
|
1033
|
+
): CappedFileList {
|
|
1034
|
+
const shown: string[] = [];
|
|
1035
|
+
let used = 0;
|
|
1036
|
+
for (const file of files) {
|
|
1037
|
+
if (shown.length >= MAX_MARKED_FILES) {
|
|
1038
|
+
break;
|
|
1039
|
+
}
|
|
1040
|
+
const rendered = renderMarkedPath(file);
|
|
1041
|
+
// The `shown.length > 0` clause is what keeps a single over-budget path from rendering an empty
|
|
1042
|
+
// list: one entry always gets in, truncated by `MAX_MARKED_PATH_CHARS` if need be.
|
|
1043
|
+
if (used + rendered.length > charBudget && shown.length > 0) {
|
|
1044
|
+
break;
|
|
1045
|
+
}
|
|
1046
|
+
shown.push(rendered);
|
|
1047
|
+
used += rendered.length;
|
|
1048
|
+
}
|
|
1049
|
+
return { shown, omitted: files.length - shown.length };
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
/** The capped list on ONE line, for a comment that has no room for a bullet list. */
|
|
1053
|
+
function formatFileList(files: readonly string[], charBudget?: number): string {
|
|
1054
|
+
const { shown, omitted } = capFileList(files, charBudget);
|
|
1055
|
+
return omitted > 0 ? `${shown.join(', ')} (y ${omitted} más)` : shown.join(', ');
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* The mark's unfailable half (design.md decision 8, T-31): a section naming the soft-list files a
|
|
1060
|
+
* pull request reaches, so a person reviewing it sees WHY before they see the diff. `null` when
|
|
1061
|
+
* `files` is empty — the caller renders that as "no section at all", not an empty heading.
|
|
1062
|
+
*
|
|
1063
|
+
* The membership is rendered FROM `HUMAN_REVIEW_PATHS`, never spelled out in the prose: the
|
|
1064
|
+
* hard-coded sentence this replaces named `CLAUDE.md` among the soft entries and went stale the
|
|
1065
|
+
* moment that basename went back to hard (T-31 round 2) — the exact prose/code drift this whole
|
|
1066
|
+
* change exists to undo.
|
|
1067
|
+
*/
|
|
1068
|
+
function humanReviewSection(files: readonly string[]): string | null {
|
|
1069
|
+
if (files.length === 0) {
|
|
1070
|
+
return null;
|
|
1071
|
+
}
|
|
1072
|
+
const { shown, omitted } = capFileList(files);
|
|
1073
|
+
const list = shown.map((file) => `- ${file}`).join('\n');
|
|
1074
|
+
const tail = omitted > 0 ? `\n- (y ${omitted} ficheros más; ver el diff completo)` : '';
|
|
1075
|
+
const membership = HUMAN_REVIEW_PATHS.map((pattern) => `\`${pattern}\``).join(', ');
|
|
1076
|
+
return (
|
|
1077
|
+
`${HUMAN_REVIEW_SECTION_START}\n` +
|
|
1078
|
+
'## Revisión humana requerida\n\n' +
|
|
1079
|
+
`Este intento tocó rutas de la lista blanda (${membership}): admitidas por el cierre, pero ` +
|
|
1080
|
+
'nadie automático las ha juzgado. Requieren lectura humana antes de fusionar:\n\n' +
|
|
1081
|
+
`${list}${tail}\n` +
|
|
1082
|
+
HUMAN_REVIEW_SECTION_END
|
|
1083
|
+
);
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
/**
|
|
1087
|
+
* `currentBody` with the human-review section for `files` written into it: replacing the delimited
|
|
1088
|
+
* section already there, or appended when there is none. Everything outside the markers is
|
|
1089
|
+
* returned byte-for-byte.
|
|
1090
|
+
*
|
|
1091
|
+
* Why this is not a recomposition (T-31 round 2). `gh pr edit --body` is a full REPLACEMENT, and
|
|
1092
|
+
* the pull requests this mark rewrites are precisely the ones a person was asked to read and
|
|
1093
|
+
* annotate — the retry flow reuses the same branch, so the second attempt's rewrite landed on a
|
|
1094
|
+
* body a reviewer may have been editing. "The body is a deterministic function of the task"
|
|
1095
|
+
* (design.md decision 8) is true of the dispatcher-authored half and false of every word a human
|
|
1096
|
+
* added, and a mark that destroys the review it asks for is worse than no mark.
|
|
1097
|
+
*
|
|
1098
|
+
* An empty `files` returns the body untouched: there is nothing to mark, and removing a section a
|
|
1099
|
+
* previous attempt legitimately added is not this function's call to make.
|
|
1100
|
+
*
|
|
1101
|
+
* A MALFORMED or REPEATED marker arrangement is resolved deterministically rather than falling
|
|
1102
|
+
* through to the append branch (T-31 round 3 — that fall-through accumulated a second section on
|
|
1103
|
+
* every retry, since the pair stayed malformed and the next rewrite appended again). The body is
|
|
1104
|
+
* walked once, left to right, and each dispatcher-authored region is dropped while everything
|
|
1105
|
+
* between the regions is kept:
|
|
1106
|
+
*
|
|
1107
|
+
* - a START with a later END — the ordinary case — is a section: dropped, and the FIRST one is
|
|
1108
|
+
* where the new section is written;
|
|
1109
|
+
* - a SECOND (third, …) full pair is another section, dropped the same way. Round 3 spliced from
|
|
1110
|
+
* the first START to the LAST END instead, which swallowed everything between the two sections —
|
|
1111
|
+
* measured (T-31 round 4) on exactly the bodies this fix exists to repair, since the pre-round-3
|
|
1112
|
+
* code appended a second section on every retry and open pull requests already hold that shape;
|
|
1113
|
+
* - a START with no END after it is a TRUNCATED section (the dispatcher's own tail, cut short by
|
|
1114
|
+
* a failed write), so the drop runs from that START to the end of the body;
|
|
1115
|
+
* - an END with no START before it is a stray marker, removed so it cannot pair with the START
|
|
1116
|
+
* this call writes. Only the invisible marker comment goes; every word around it survives.
|
|
1117
|
+
*
|
|
1118
|
+
* The result therefore always holds exactly ONE well-ordered pair, which makes the next rewrite the
|
|
1119
|
+
* ordinary case again — and no text a person wrote OUTSIDE a section is ever removed.
|
|
1120
|
+
*/
|
|
1121
|
+
export function upsertHumanReviewSection(currentBody: string, files: readonly string[]): string {
|
|
1122
|
+
const section = humanReviewSection(files);
|
|
1123
|
+
if (section === null) {
|
|
1124
|
+
return currentBody;
|
|
1125
|
+
}
|
|
1126
|
+
// Everything the walk keeps, in order, with `null` marking where the new section goes.
|
|
1127
|
+
const kept: Array<string | null> = [];
|
|
1128
|
+
let cursor = 0;
|
|
1129
|
+
while (cursor <= currentBody.length) {
|
|
1130
|
+
const start = currentBody.indexOf(HUMAN_REVIEW_SECTION_START, cursor);
|
|
1131
|
+
if (start === -1) {
|
|
1132
|
+
kept.push(dropStrayEndMarkers(currentBody.slice(cursor)));
|
|
1133
|
+
break;
|
|
1134
|
+
}
|
|
1135
|
+
kept.push(dropStrayEndMarkers(currentBody.slice(cursor, start)));
|
|
1136
|
+
if (!kept.includes(null)) {
|
|
1137
|
+
kept.push(null);
|
|
1138
|
+
}
|
|
1139
|
+
const end = currentBody.indexOf(
|
|
1140
|
+
HUMAN_REVIEW_SECTION_END,
|
|
1141
|
+
start + HUMAN_REVIEW_SECTION_START.length,
|
|
1142
|
+
);
|
|
1143
|
+
if (end === -1) {
|
|
1144
|
+
// A truncated section: the rest of the body is the dispatcher's own half-written tail.
|
|
1145
|
+
break;
|
|
1146
|
+
}
|
|
1147
|
+
cursor = end + HUMAN_REVIEW_SECTION_END.length;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
if (!kept.includes(null)) {
|
|
1151
|
+
const body = kept.join('');
|
|
1152
|
+
return body.length > 0 ? `${body}\n\n${section}` : section;
|
|
1153
|
+
}
|
|
1154
|
+
return kept.map((piece) => (piece === null ? section : piece)).join('');
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
/**
|
|
1158
|
+
* `text` with every END marker deleted and every other byte kept. Applied to the stretches BETWEEN
|
|
1159
|
+
* sections, where an END belongs to no section and would otherwise pair with the START this rewrite
|
|
1160
|
+
* writes — the marker comment is invisible on GitHub, so nothing a reader sees is lost.
|
|
1161
|
+
*/
|
|
1162
|
+
function dropStrayEndMarkers(text: string): string {
|
|
1163
|
+
return text.split(HUMAN_REVIEW_SECTION_END).join('');
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
/**
|
|
1167
|
+
* Composes the close's PR body FROM the task, mechanically — no summarization beyond "read the
|
|
1168
|
+
* sections `task-view.ts` and this module already parse, render them under their own heading".
|
|
1169
|
+
* `close.test.ts` asserts this composed STRING directly; it never calls `gh`, so nothing here needs
|
|
1170
|
+
* a network or a real repo to verify.
|
|
1171
|
+
*
|
|
1172
|
+
* Before this existed, the body was the single line `Dispatched attempt N for <id>.` — a PR a
|
|
1173
|
+
* reviewer had to open the task board to understand at all. Every section here answers a question
|
|
1174
|
+
* that line left to a second lookup: what the task is FOR (description), what the worker actually
|
|
1175
|
+
* DID (implementation notes, when it left any), what it PROVED (the AC list, each with its checked
|
|
1176
|
+
* state — the only "evidence" this format carries structurally; nothing here fabricates a
|
|
1177
|
+
* per-criterion narrative the worker never wrote), and how many tries it took (attempt statistics).
|
|
1178
|
+
*/
|
|
1179
|
+
export function composePrBody(input: ComposePrBodyInput): string {
|
|
1180
|
+
// `input.title` already IS the composed PR title (`buildPrTitle(task.id, task.title)`, applied by
|
|
1181
|
+
// the caller — `buildPrCreateArgs` below, and `dispatch.ts` before that) — running it through
|
|
1182
|
+
// `buildPrTitle` a second time here used to prefix the id twice (`# T-8: T-8: <title>`), because
|
|
1183
|
+
// `buildPrTitle` has no way to tell "already composed" from "bare title" apart. Use it as-is; only
|
|
1184
|
+
// fall back to the bare task id when there is no title to show at all.
|
|
1185
|
+
const heading = input.title ?? input.taskId;
|
|
1186
|
+
const sections: string[] = [`# ${heading}`];
|
|
1187
|
+
|
|
1188
|
+
const description = sectionProse(input.taskText, DESCRIPTION_HEADING);
|
|
1189
|
+
sections.push(`## Resumen\n\n${description ?? '(la tarea no declara descripción)'}`);
|
|
1190
|
+
|
|
1191
|
+
const notes = sectionProse(input.taskText, IMPLEMENTATION_NOTES_HEADING);
|
|
1192
|
+
if (notes) {
|
|
1193
|
+
sections.push(
|
|
1194
|
+
`## Notas de implementación\n\n${sanitizeCommentBody(notes, NOTES_TRUNCATION_TAIL)}`,
|
|
1195
|
+
);
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
const criteria = parseChecklistItems(input.taskText, ACCEPTANCE_CRITERIA_HEADING);
|
|
1199
|
+
const acBody =
|
|
1200
|
+
criteria.length > 0
|
|
1201
|
+
? criteria.map((item) => `- [${item.checked ? 'x' : ' '}] ${item.text}`).join('\n')
|
|
1202
|
+
: '(sin criterios de aceptación declarados)';
|
|
1203
|
+
sections.push(`## Criterios de aceptación\n\n${acBody}`);
|
|
1204
|
+
|
|
1205
|
+
const attemptLine = input.maxAttempts
|
|
1206
|
+
? `Intento ${input.attempt} de ${input.maxAttempts}.`
|
|
1207
|
+
: `Intento ${input.attempt}.`;
|
|
1208
|
+
sections.push(`## Estadísticas del intento\n\n${attemptLine}`);
|
|
1209
|
+
|
|
1210
|
+
const reviewSection = humanReviewSection(input.humanReviewFiles ?? []);
|
|
1211
|
+
if (reviewSection) {
|
|
1212
|
+
sections.push(reviewSection);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
return sections.join('\n\n');
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
/** The exact `gh` argv for the close's PR, with `--base` resolved by `resolveBaseBranch`. */
|
|
1219
|
+
export function buildPrCreateArgs(input: BuildPrCreateArgsInput): string[] {
|
|
1220
|
+
const body = input.taskText
|
|
1221
|
+
? composePrBody({
|
|
1222
|
+
title: input.title,
|
|
1223
|
+
taskId: input.task.id,
|
|
1224
|
+
taskText: input.taskText,
|
|
1225
|
+
attempt: input.attempt,
|
|
1226
|
+
maxAttempts: input.maxAttempts,
|
|
1227
|
+
humanReviewFiles: input.humanReviewFiles,
|
|
1228
|
+
})
|
|
1229
|
+
: `Dispatched attempt ${input.attempt} for ${input.task.id}.`;
|
|
1230
|
+
return [
|
|
1231
|
+
'pr',
|
|
1232
|
+
'create',
|
|
1233
|
+
'--base',
|
|
1234
|
+
resolveBaseBranch(input.task),
|
|
1235
|
+
'--head',
|
|
1236
|
+
input.branch,
|
|
1237
|
+
'--title',
|
|
1238
|
+
input.title,
|
|
1239
|
+
'--body',
|
|
1240
|
+
body,
|
|
1241
|
+
];
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
// ── The human-review mark's two best-effort halves (design.md decision 8, T-31) ──
|
|
1245
|
+
//
|
|
1246
|
+
// Both are a SEPARATE `gh pr edit` call, deliberately: a label the repository does not have would
|
|
1247
|
+
// otherwise fail `gh pr create` itself and turn a green attempt into a blocked task with a WIP
|
|
1248
|
+
// commit, and a rejected reviewer must not take the label down with it. `dispatch.ts`'s `openPr`
|
|
1249
|
+
// runner applies both, wrapped so a failure is RECORDED (the attempt's own log) and never fatal.
|
|
1250
|
+
|
|
1251
|
+
/** The GitHub label a soft-list attempt's pull request is marked with. Created once, by hand (task 5.1). */
|
|
1252
|
+
export const HARNESS_REVIEW_LABEL = 'harness-review';
|
|
1253
|
+
|
|
1254
|
+
/** `gh pr edit <branch> --add-label harness-review`. */
|
|
1255
|
+
export function buildPrLabelArgs(branch: string): string[] {
|
|
1256
|
+
return ['pr', 'edit', branch, '--add-label', HARNESS_REVIEW_LABEL];
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
/**
|
|
1260
|
+
* `gh pr edit <branch> --body <body>` — the mark's BODY half on the reuse branch only.
|
|
1261
|
+
*
|
|
1262
|
+
* On a newly created pull request the body travels inside `gh pr create --body`
|
|
1263
|
+
* (`buildPrCreateArgs`), which is what makes it the half that cannot fail. A retry pushes to the
|
|
1264
|
+
* same branch and REUSES the pull request already open on it, so there is no create call to carry
|
|
1265
|
+
* it: without this the reused body would never name the soft-list files, and the mark would rest
|
|
1266
|
+
* entirely on the two calls design.md decision 8 explicitly allows to fail. Best-effort like them —
|
|
1267
|
+
* the push has already updated the pull request by the time this runs.
|
|
1268
|
+
*/
|
|
1269
|
+
export function buildPrBodyArgs(branch: string, body: string): string[] {
|
|
1270
|
+
return ['pr', 'edit', branch, '--body', body];
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
/** `gh pr edit <branch> --add-reviewer <handle>` — `reviewer` is `lanes.json`'s optional `harnessReviewer`. */
|
|
1274
|
+
export function buildPrReviewerArgs(branch: string, reviewer: string): string[] {
|
|
1275
|
+
return ['pr', 'edit', branch, '--add-reviewer', reviewer];
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
// ── The WIP auto-save commit message ──────────────────────────────────────────
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* The message the failure path's WIP commit uses. It stays a Conventional Commit even though the
|
|
1282
|
+
* dispatcher's own commits run with `--no-verify` (a slot's hooks are files the worker could have
|
|
1283
|
+
* just written): this is what lands on `task/T-nn` for a person to read, and `close.test.ts` runs
|
|
1284
|
+
* it through the repo's real commitlint so the machine's history reads like everyone else's.
|
|
1285
|
+
*
|
|
1286
|
+
* The scope is the task id lowercased — the same casing `buildAttemptCommitMessage` uses, so both
|
|
1287
|
+
* dispatcher-authored commits are greppable with one pattern.
|
|
1288
|
+
*/
|
|
1289
|
+
export function buildWipCommitMessage(taskId: string): string {
|
|
1290
|
+
return `chore(${taskId.toLowerCase()}): wip dispatcher auto-save`;
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
/** The green path's commit, in the same shape and casing as the WIP auto-save above. */
|
|
1294
|
+
export function buildAttemptCommitMessage(taskId: string, attempt: number): string {
|
|
1295
|
+
return `feat(${taskId.toLowerCase()}): dispatched attempt ${attempt}`;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/**
|
|
1299
|
+
* The PR title: `<id>: <task title>`. The id alone was unreadable on a list of open PRs — every
|
|
1300
|
+
* dispatched PR looked the same and had to be opened to find out what it was. A title that could
|
|
1301
|
+
* not be read back off the board falls back to the bare id rather than to a placeholder.
|
|
1302
|
+
*/
|
|
1303
|
+
export function buildPrTitle(taskId: string, title: string | null): string {
|
|
1304
|
+
const trimmed = title?.trim();
|
|
1305
|
+
return trimmed ? `${taskId}: ${trimmed}` : taskId;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
// ── The mechanical triad (format, barrels lint, scoped test) ──────────────────
|
|
1309
|
+
|
|
1310
|
+
export interface MechanicalCheck {
|
|
1311
|
+
label: string;
|
|
1312
|
+
command: string;
|
|
1313
|
+
args: string[];
|
|
1314
|
+
/**
|
|
1315
|
+
* Non-zero exit statuses this check treats as advisory, not a failure — the check's OWN
|
|
1316
|
+
* pass/fail contract. Absent (every check but lint-barrels) means any non-zero status still
|
|
1317
|
+
* fails, unchanged from before this field existed. Declared per check, not read from the exit
|
|
1318
|
+
* code by the evaluation loop, so a future check never inherits a tolerance it did not ask for.
|
|
1319
|
+
*/
|
|
1320
|
+
advisoryStatuses?: readonly number[];
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
export interface MechanicalCheckOutcome {
|
|
1324
|
+
/** False only when the status is neither zero nor declared advisory — this fails the attempt. */
|
|
1325
|
+
ok: boolean;
|
|
1326
|
+
/** True when a non-zero status passed because the check declared it advisory. */
|
|
1327
|
+
advisory: boolean;
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
/**
|
|
1331
|
+
* Turns a check's raw exit status into pass/fail, honouring the check's OWN advisory contract
|
|
1332
|
+
* instead of hardcoding a status number here. Exit 0 always passes; any other status passes ONLY
|
|
1333
|
+
* when the check declares it advisory (today: lint-barrels' exit 2 — HR-BARRELS-004's
|
|
1334
|
+
* `informational` tier, the same contract `.husky/pre-commit` already honours). A status the
|
|
1335
|
+
* check does not name still fails, so a check added later inherits no tolerance silently.
|
|
1336
|
+
*/
|
|
1337
|
+
export function evaluateMechanicalCheckResult(
|
|
1338
|
+
check: MechanicalCheck,
|
|
1339
|
+
status: number,
|
|
1340
|
+
): MechanicalCheckOutcome {
|
|
1341
|
+
if (status === 0) {
|
|
1342
|
+
return { ok: true, advisory: false };
|
|
1343
|
+
}
|
|
1344
|
+
if (check.advisoryStatuses?.includes(status)) {
|
|
1345
|
+
return { ok: true, advisory: true };
|
|
1346
|
+
}
|
|
1347
|
+
return { ok: false, advisory: false };
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
export interface PlanMechanicalChecksInput {
|
|
1351
|
+
/** The task's declared `Test command:` line, or `null` when it declared none. */
|
|
1352
|
+
testCommand: string | null;
|
|
1353
|
+
/** Whether the repo exposes the barrels linter (`pnpm hr:lint-barrels`). */
|
|
1354
|
+
lintBarrels: boolean;
|
|
1355
|
+
/** Repo-relative paths the attempt actually changed — `runScopeCheck`'s union of diff + status. */
|
|
1356
|
+
changedFiles: readonly string[];
|
|
1357
|
+
/**
|
|
1358
|
+
* Whether a repo-relative path is still on disk in the slot. A DELETED file is a changed file, and
|
|
1359
|
+
* both `prettier --check` and the barrels linter fail outright on a path that is not there — so a
|
|
1360
|
+
* legitimate deletion would fail the triad. Injected rather than read here so this stays pure.
|
|
1361
|
+
*/
|
|
1362
|
+
exists: (repoRelativePath: string) => boolean;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
export interface MechanicalPlan {
|
|
1366
|
+
checks: MechanicalCheck[];
|
|
1367
|
+
/** Set when the declared test command was refused; the triad fails with exactly this reason. */
|
|
1368
|
+
refusal: string | null;
|
|
1369
|
+
/** Changed files no workspace's Prettier covers — the caller logs them, nothing runs on them. */
|
|
1370
|
+
skippedPrettierFiles: string[];
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
const LINT_BARRELS_SCRIPT = 'hr:lint-barrels';
|
|
1374
|
+
|
|
1375
|
+
/**
|
|
1376
|
+
* The workspaces that actually ship Prettier, longest prefix first so `packages/core-back/` wins
|
|
1377
|
+
* over a shorter accidental match. `npx prettier` at the repo root exits 127 — Prettier is NOT a
|
|
1378
|
+
* root dependency here — so a repo-wide `npx prettier --check .` was a triad that could never pass.
|
|
1379
|
+
*/
|
|
1380
|
+
const PRETTIER_WORKSPACES: readonly { prefix: string; packageName: string }[] = [
|
|
1381
|
+
{ prefix: 'packages/core-back/', packageName: '@aurorajs.dev/core-back' },
|
|
1382
|
+
{ prefix: 'packages/core-front/', packageName: '@aurorajs.dev/core-front' },
|
|
1383
|
+
{ prefix: 'backend/', packageName: 'aurora-back' },
|
|
1384
|
+
{ prefix: 'frontend/', packageName: 'aurora-front' },
|
|
1385
|
+
];
|
|
1386
|
+
|
|
1387
|
+
/**
|
|
1388
|
+
* Files under a prettier workspace that must never reach `--write`: drizzle-kit's own OUTPUT
|
|
1389
|
+
* (`migration.sql` and `snapshot.json`), not hand-written code. Measured (T-6.1, first real
|
|
1390
|
+
* frontier dispatch): the repo's shipped `snapshot.json` files are NOT prettier-formatted
|
|
1391
|
+
* (`prettier --check` warns on every one, 432 KB each), so a `--write` would rewrite a tool-owned
|
|
1392
|
+
* artifact into a huge noise-only diff — and `migration.sql` has no inferrable parser at all.
|
|
1393
|
+
* Excluded from both prettier buckets entirely; still counted for the scope check like any other
|
|
1394
|
+
* changed file.
|
|
1395
|
+
*/
|
|
1396
|
+
const PRETTIER_TOOL_OWNED_PREFIXES: readonly string[] = [
|
|
1397
|
+
'backend/src/database/migrations/drizzle/',
|
|
1398
|
+
];
|
|
1399
|
+
|
|
1400
|
+
/**
|
|
1401
|
+
* The roots HR-BARRELS governs (`scripts/harness-rules/lint-barrels.ts`'s `collectGoverned`).
|
|
1402
|
+
* Passing the linter a file outside them makes it lint code the rule was never written for; passing
|
|
1403
|
+
* it nothing at all makes it sweep the WHOLE repo, which is red on `main` today for pre-existing
|
|
1404
|
+
* violations in generated frontend code — either way the attempt gets blamed for someone else's diff.
|
|
1405
|
+
*/
|
|
1406
|
+
const BARRELS_GOVERNED_PREFIXES: readonly string[] = [
|
|
1407
|
+
'backend/src/@api/',
|
|
1408
|
+
'backend/src/@app/',
|
|
1409
|
+
'backend/src/@bridges/',
|
|
1410
|
+
'backend/src/@aurora/',
|
|
1411
|
+
'frontend/src/app/domains/admin/apps/',
|
|
1412
|
+
];
|
|
1413
|
+
|
|
1414
|
+
/**
|
|
1415
|
+
* The ordered mechanical checks a green close must pass, cheapest first and scoped to THIS
|
|
1416
|
+
* attempt's changed files: Prettier per workspace that has it, the barrels linter over the governed
|
|
1417
|
+
* `.ts` files, then the task's own test command. Scoping is the whole point — a repo-wide run would
|
|
1418
|
+
* fail every attempt on pre-existing violations the task never touched, so the triad would be an
|
|
1419
|
+
* alarm that always fires.
|
|
1420
|
+
*
|
|
1421
|
+
* A missing test command drops the step (the caller logs the gap); a REFUSED one fails the triad,
|
|
1422
|
+
* because "the command is not allowed" is a real problem a person has to look at, not a gap.
|
|
1423
|
+
*/
|
|
1424
|
+
export function planMechanicalChecks(input: PlanMechanicalChecksInput): MechanicalPlan {
|
|
1425
|
+
const checks: MechanicalCheck[] = [];
|
|
1426
|
+
const skippedPrettierFiles: string[] = [];
|
|
1427
|
+
|
|
1428
|
+
// Deleted paths drop out before anything is planned over them: neither tool can read a file that
|
|
1429
|
+
// is correctly gone, and reporting one as a "skipped prettier file" would misname a deletion.
|
|
1430
|
+
const presentFiles = input.changedFiles.filter((file) => input.exists(file));
|
|
1431
|
+
|
|
1432
|
+
const byWorkspace = new Map<string, { packageName: string; files: string[] }>();
|
|
1433
|
+
for (const file of presentFiles) {
|
|
1434
|
+
// Tool-owned output IS covered by a prettier workspace, so it does not belong in
|
|
1435
|
+
// `skippedPrettierFiles` either — that list means "no workspace covers this", and reporting a
|
|
1436
|
+
// deliberate exclusion there would misname it as a coverage gap for a person to chase.
|
|
1437
|
+
if (PRETTIER_TOOL_OWNED_PREFIXES.some((prefix) => file.startsWith(prefix))) {
|
|
1438
|
+
continue;
|
|
1439
|
+
}
|
|
1440
|
+
const workspace = PRETTIER_WORKSPACES.find((candidate) => file.startsWith(candidate.prefix));
|
|
1441
|
+
if (!workspace) {
|
|
1442
|
+
skippedPrettierFiles.push(file);
|
|
1443
|
+
continue;
|
|
1444
|
+
}
|
|
1445
|
+
const bucket = byWorkspace.get(workspace.prefix) ?? {
|
|
1446
|
+
packageName: workspace.packageName,
|
|
1447
|
+
files: [],
|
|
1448
|
+
};
|
|
1449
|
+
// `pnpm --filter <pkg> exec` runs in the package directory, so the paths must be relative to it.
|
|
1450
|
+
bucket.files.push(file.slice(workspace.prefix.length));
|
|
1451
|
+
byWorkspace.set(workspace.prefix, bucket);
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
for (const { prefix, packageName } of PRETTIER_WORKSPACES) {
|
|
1455
|
+
const bucket = byWorkspace.get(prefix);
|
|
1456
|
+
if (bucket) {
|
|
1457
|
+
// Format, THEN verify. design.md decision (h) puts the format hook in the close "where a
|
|
1458
|
+
// deterministic script enforces them": a bare `--check` only reports, and the executor is
|
|
1459
|
+
// never asked to run Prettier, so an indentation nit failed a whole attempt over something
|
|
1460
|
+
// the close can fix in place. The `--check` after the write is not redundant — it is what
|
|
1461
|
+
// proves the write actually took (a syntax error makes Prettier rewrite nothing).
|
|
1462
|
+
for (const mode of ['--write', '--check'] as const) {
|
|
1463
|
+
checks.push({
|
|
1464
|
+
label: `prettier ${mode} (${packageName})`,
|
|
1465
|
+
command: 'pnpm',
|
|
1466
|
+
// `--ignore-unknown` because a file prettier has no parser for (measured: a `.sql` file,
|
|
1467
|
+
// "No parser could be inferred") otherwise exits 2 and fails the whole triad over a file
|
|
1468
|
+
// prettier was never going to format anyway. `--` because a changed path beginning with a
|
|
1469
|
+
// dash is otherwise read as a flag.
|
|
1470
|
+
args: [
|
|
1471
|
+
'--filter',
|
|
1472
|
+
packageName,
|
|
1473
|
+
'exec',
|
|
1474
|
+
'prettier',
|
|
1475
|
+
mode,
|
|
1476
|
+
'--ignore-unknown',
|
|
1477
|
+
'--',
|
|
1478
|
+
...bucket.files,
|
|
1479
|
+
],
|
|
1480
|
+
});
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
const barrelsFiles = presentFiles.filter(
|
|
1486
|
+
(file) =>
|
|
1487
|
+
file.endsWith('.ts') && BARRELS_GOVERNED_PREFIXES.some((prefix) => file.startsWith(prefix)),
|
|
1488
|
+
);
|
|
1489
|
+
if (input.lintBarrels && barrelsFiles.length > 0) {
|
|
1490
|
+
checks.push({
|
|
1491
|
+
label: 'lint-barrels',
|
|
1492
|
+
command: 'pnpm',
|
|
1493
|
+
args: [LINT_BARRELS_SCRIPT, '--', ...barrelsFiles],
|
|
1494
|
+
// HR-BARRELS-004's `informational` severity maps to exit 2 (`computeExitCode`,
|
|
1495
|
+
// scripts/harness-rules/lint-barrels.ts) — the same status `.husky/pre-commit` already lets
|
|
1496
|
+
// through. Only THIS check owns that tolerance; prettier and the test step declare none.
|
|
1497
|
+
advisoryStatuses: [2],
|
|
1498
|
+
});
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
const testCommand = resolveTestCommand(input.testCommand);
|
|
1502
|
+
if (testCommand.kind === 'refused') {
|
|
1503
|
+
return { checks, refusal: testCommand.reason, skippedPrettierFiles };
|
|
1504
|
+
}
|
|
1505
|
+
if (testCommand.kind === 'ok') {
|
|
1506
|
+
checks.push({ label: 'test', command: testCommand.command, args: testCommand.args });
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
return { checks, refusal: null, skippedPrettierFiles };
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
// ── The pre-PR acceptance gate (design.md's close diagram, `AC`) ──────────────
|
|
1513
|
+
|
|
1514
|
+
/**
|
|
1515
|
+
* The "scoped tests pass" Definition-of-Done default, and what the gate says when it is still
|
|
1516
|
+
* unticked. Exported so `dispatch.ts` uses the SAME pattern for the tick as the gate uses for the
|
|
1517
|
+
* check — two regexes that drifted apart would make the gate unpassable or toothless.
|
|
1518
|
+
*/
|
|
1519
|
+
export const DOD_SCOPED_TESTS = /scoped tests pass/i;
|
|
1520
|
+
|
|
1521
|
+
const NO_TEST_COMMAND_QUESTION =
|
|
1522
|
+
'la tarea no declara Test command: nada probó este intento, así que "scoped tests pass" no puede darse por cumplido.';
|
|
1523
|
+
|
|
1524
|
+
/**
|
|
1525
|
+
* The gate that stands between a finished attempt and its PR. It judges ACCEPTANCE CRITERIA — what
|
|
1526
|
+
* the task asked for — plus any Definition-of-Done item no close step proves. The dispatcher-owned
|
|
1527
|
+
* DoD defaults are excluded and ticked by the close itself once the step that proves them passed
|
|
1528
|
+
* (`task-view.ts`'s `DISPATCHER_OWNED_DOD_PATTERNS`): blocking on them here would fail every green
|
|
1529
|
+
* attempt on bookkeeping the worker was never asked to do.
|
|
1530
|
+
*
|
|
1531
|
+
* A task with NO acceptance criteria fails: there is then nothing to verify the work against, so a
|
|
1532
|
+
* pass would mean "the gate approved something it could not read".
|
|
1533
|
+
*/
|
|
1534
|
+
export function evaluateAcceptanceGate(taskText: string): MechanicalStepResult {
|
|
1535
|
+
if (parseChecklistItems(taskText, ACCEPTANCE_CRITERIA_HEADING).length === 0) {
|
|
1536
|
+
return {
|
|
1537
|
+
ok: false,
|
|
1538
|
+
reason: 'ac-check-failed',
|
|
1539
|
+
question: 'la tarea no declara criterios de aceptación',
|
|
1540
|
+
};
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
// The one dispatcher-owned item this gate still judges. The triad ticks it ONLY when a test
|
|
1544
|
+
// command actually ran and passed, so an unticked one here means nothing tested this attempt —
|
|
1545
|
+
// and excluding it as "dispatcher-owned" let exactly that reach a PR with the box ticked by
|
|
1546
|
+
// nobody. Guard 1 refuses an undeclared `Test command:` before launch; this is the second half
|
|
1547
|
+
// of the same rule, against the board as it stands at the gate.
|
|
1548
|
+
if (findOwnedDefinitionOfDone(taskText, DOD_SCOPED_TESTS).length > 0) {
|
|
1549
|
+
return { ok: false, reason: 'ac-check-failed', question: NO_TEST_COMMAND_QUESTION };
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
const pending = [
|
|
1553
|
+
...findUncheckedAcceptanceCriteria(taskText).map((item) => `AC #${item.index}: ${item.text}`),
|
|
1554
|
+
...findUnownedUncheckedDefinitionOfDone(taskText).map(
|
|
1555
|
+
(item) => `DoD #${item.index}: ${item.text}`,
|
|
1556
|
+
),
|
|
1557
|
+
];
|
|
1558
|
+
if (pending.length === 0) {
|
|
1559
|
+
return { ok: true };
|
|
1560
|
+
}
|
|
1561
|
+
return {
|
|
1562
|
+
ok: false,
|
|
1563
|
+
reason: 'ac-check-failed',
|
|
1564
|
+
question: `Quedan criterios sin marcar con evidencia:\n- ${pending.join('\n- ')}`,
|
|
1565
|
+
};
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
// ── Board integrity: the task still says what it said at launch ───────────────
|
|
1569
|
+
|
|
1570
|
+
export interface CheckBoardIntegrityInput {
|
|
1571
|
+
/** `backlog task view <id> --plain`, re-read AFTER the worker exited. */
|
|
1572
|
+
taskText: string;
|
|
1573
|
+
/** The task as it was SNAPSHOTTED at launch — the contract the attempt was dispatched under. */
|
|
1574
|
+
task: Task;
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
/**
|
|
1578
|
+
* The first close gate: the board still describes the task the dispatcher launched.
|
|
1579
|
+
*
|
|
1580
|
+
* The worker holds the dispatcher's `worker-edit.ts` wrapper on its own task for its whole run — it
|
|
1581
|
+
* has to, since that is its only channel for ticking criteria and recording notes. The wrapper is
|
|
1582
|
+
* the BARRIER (it reads the whole argv before anything reaches the CLI); this gate is the DETECTOR
|
|
1583
|
+
* behind it, for the case where a permission rule silently fails to match anyway:
|
|
1584
|
+
*
|
|
1585
|
+
* - **status**: a worker that set itself to `Done` gets a maintenance sweep reading a finished
|
|
1586
|
+
* task nobody verified; one that set itself to `Queued` gets dispatched again by the next pass
|
|
1587
|
+
* while this close is still running. Anything but `In Progress` fails the attempt.
|
|
1588
|
+
* - **checklist texts**: the pre-PR gate and the reviewer both judge the attempt against exactly
|
|
1589
|
+
* these criteria, so a criterion rewritten into something the attempt can meet is a gate the
|
|
1590
|
+
* thing under test authored itself. Only the TEXTS are compared — the checked state is what the
|
|
1591
|
+
* worker is supposed to change, and comparing it would fail every correct run.
|
|
1592
|
+
* - **title, `Files to touch:` and `Test command:`**: the rest of the contract the attempt is
|
|
1593
|
+
* judged against — the title names the PR, the declared files are the allowlist the scope check
|
|
1594
|
+
* runs, and the test command is what the triad executes. All three are description text the
|
|
1595
|
+
* board write channel can reach, so all three are compared against the launch snapshot.
|
|
1596
|
+
* - **`Parent:`**: it decides the PR's base branch (`resolveBaseBranch`) and the ref the attempt
|
|
1597
|
+
* is diffed against. A parent that appeared after launch would open the PR against a branch the
|
|
1598
|
+
* task never declared; one that vanished diffs a child against `main`, reporting every file the
|
|
1599
|
+
* parent already changed as this attempt's scope violation.
|
|
1600
|
+
*
|
|
1601
|
+
* An unreadable view fails closed: it is indistinguishable from a task that no longer exists.
|
|
1602
|
+
*/
|
|
1603
|
+
export function checkBoardIntegrity(input: CheckBoardIntegrityInput): MechanicalStepResult {
|
|
1604
|
+
const status = parseTaskStatus(input.taskText);
|
|
1605
|
+
if (status !== TASK_STATUS.IN_PROGRESS) {
|
|
1606
|
+
return {
|
|
1607
|
+
ok: false,
|
|
1608
|
+
reason: 'status-changed-by-worker',
|
|
1609
|
+
question: `El tablero ya no dice "In Progress" para esta tarea, sino "${status}": el worker cambió su propio estado, así que el cierre no puede fiarse de él.`,
|
|
1610
|
+
};
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
const drifted = (heading: string, snapshot: readonly string[]): string | null => {
|
|
1614
|
+
const current = parseChecklistItems(input.taskText, heading).map((item) => item.text);
|
|
1615
|
+
return current.length === snapshot.length &&
|
|
1616
|
+
current.every((text, index) => text === snapshot[index])
|
|
1617
|
+
? null
|
|
1618
|
+
: `${heading}: se esperaba [${snapshot.join(' | ')}] y el tablero dice [${current.join(' | ')}]`;
|
|
1619
|
+
};
|
|
1620
|
+
|
|
1621
|
+
const changed = (
|
|
1622
|
+
label: string,
|
|
1623
|
+
snapshot: string | null,
|
|
1624
|
+
current: string | null,
|
|
1625
|
+
): string | null =>
|
|
1626
|
+
snapshot === current
|
|
1627
|
+
? null
|
|
1628
|
+
: `${label}: se esperaba "${snapshot ?? ''}" y el tablero dice "${current ?? ''}"`;
|
|
1629
|
+
|
|
1630
|
+
const differences = [
|
|
1631
|
+
drifted(ACCEPTANCE_CRITERIA_HEADING, input.task.acceptanceCriteria),
|
|
1632
|
+
drifted(DEFINITION_OF_DONE_HEADING, input.task.definitionOfDone),
|
|
1633
|
+
changed('Title', input.task.title ?? null, parseTaskTitle(input.taskText)),
|
|
1634
|
+
changed('Parent', input.task.parentId ?? null, parseParentId(input.taskText)),
|
|
1635
|
+
changed(
|
|
1636
|
+
'Files to touch',
|
|
1637
|
+
input.task.filesToTouch.join(', '),
|
|
1638
|
+
parseFilesToTouch(input.taskText).join(', '),
|
|
1639
|
+
),
|
|
1640
|
+
changed('Test command', input.task.testCommand, parseTestCommand(input.taskText)),
|
|
1641
|
+
].filter((difference): difference is string => difference !== null);
|
|
1642
|
+
|
|
1643
|
+
if (differences.length > 0) {
|
|
1644
|
+
return {
|
|
1645
|
+
ok: false,
|
|
1646
|
+
reason: 'ac-tampered',
|
|
1647
|
+
question:
|
|
1648
|
+
'Los criterios, el título o el alcance cambiaron desde el lanzamiento (worker o persona). Re-encolar vuelve a ' +
|
|
1649
|
+
`tomar la instantánea.\n- ${differences.join('\n- ')}`,
|
|
1650
|
+
};
|
|
1651
|
+
}
|
|
1652
|
+
return { ok: true };
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
// ── Close plan (discriminated union of steps) ─────────────────────────────────
|
|
1656
|
+
|
|
1657
|
+
export interface BlockDetails {
|
|
1658
|
+
reason: string;
|
|
1659
|
+
question?: string;
|
|
1660
|
+
branch: string;
|
|
1661
|
+
compareUrl?: string;
|
|
1662
|
+
logPath: string;
|
|
1663
|
+
whatToDo: string;
|
|
1664
|
+
/** The attempt number a retry would run as (current attempt + 1). */
|
|
1665
|
+
attempt: number;
|
|
1666
|
+
/** True once the attempt that just failed reached the configured attempt cap — no retry left. */
|
|
1667
|
+
terminal: boolean;
|
|
1668
|
+
/**
|
|
1669
|
+
* The soft-list files `checkScope` ADMITTED for this attempt (T-31 round 2), when the scope check
|
|
1670
|
+
* got that far. On the green path the mark lives on the pull request; on this path there is no
|
|
1671
|
+
* pull request at all — `planClose`'s failure plan is `save-work` then `block`, with no `open-pr`
|
|
1672
|
+
* step — so the `Blocked` comment is the only channel that reaches a person, and it names them.
|
|
1673
|
+
* Empty or omitted → no section in the comment.
|
|
1674
|
+
*/
|
|
1675
|
+
humanReviewFiles?: readonly string[];
|
|
1676
|
+
/**
|
|
1677
|
+
* The REFUSED paths the failed attempt left in the slot: the mirror output and the lane's hard
|
|
1678
|
+
* list (T-31 round 4). Only the probe on a failure with no scope check behind it produces these —
|
|
1679
|
+
* a `scope-check-failed` verdict already names its violations in `question`. They are reported as
|
|
1680
|
+
* violations and never merged into the list above: the retry restores this tree into the slot from
|
|
1681
|
+
* `task/<id>`, so the person releasing the task is the one who has to clean it out.
|
|
1682
|
+
*/
|
|
1683
|
+
forbiddenFiles?: readonly string[];
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
export type CloseStep =
|
|
1687
|
+
| { kind: 'board-check' }
|
|
1688
|
+
| { kind: 'scope-check' }
|
|
1689
|
+
| { kind: 'format-lint-test' }
|
|
1690
|
+
| { kind: 'mirror-regen' }
|
|
1691
|
+
| { kind: 'reviewer' }
|
|
1692
|
+
| { kind: 'ac-check' }
|
|
1693
|
+
| { kind: 'open-pr' }
|
|
1694
|
+
| { kind: 'release-slot' }
|
|
1695
|
+
| { kind: 'recompute-parent' }
|
|
1696
|
+
| { kind: 'drain' }
|
|
1697
|
+
| { kind: 'save-work' }
|
|
1698
|
+
| { kind: 'block'; details: BlockDetails }
|
|
1699
|
+
| { kind: 'block-keep-slot'; details: BlockDetails };
|
|
1700
|
+
|
|
1701
|
+
export type ClosePlan = CloseStep[];
|
|
1702
|
+
|
|
1703
|
+
const WHAT_TO_DO_RETRY =
|
|
1704
|
+
'Corrige el motivo y mueve la tarea a Queued para reintentar en la misma rama.';
|
|
1705
|
+
const whatToDoTerminal = (maxAttempts: number): string =>
|
|
1706
|
+
`Se agotaron los ${maxAttempts} intentos de dispatch; revisa el fallo manualmente, no se reintentará solo.`;
|
|
1707
|
+
|
|
1708
|
+
interface BuildBlockDetailsInput {
|
|
1709
|
+
reason: string;
|
|
1710
|
+
question?: string;
|
|
1711
|
+
branch: string;
|
|
1712
|
+
compareUrl?: string;
|
|
1713
|
+
logPath: string;
|
|
1714
|
+
/** The attempt that just ran and failed. */
|
|
1715
|
+
attempt: number;
|
|
1716
|
+
/** `lanes.json`'s `attempts`; guard 5 caps on the same number, so both must read one source. */
|
|
1717
|
+
maxAttempts: number;
|
|
1718
|
+
/** The soft-list files the scope check admitted before a later step failed — see `BlockDetails`. */
|
|
1719
|
+
humanReviewFiles?: readonly string[];
|
|
1720
|
+
/** The refused paths the failed attempt left behind, when nothing classified them earlier. */
|
|
1721
|
+
forbiddenFiles?: readonly string[];
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
function buildBlockDetails(input: BuildBlockDetailsInput): BlockDetails {
|
|
1725
|
+
const terminal = input.attempt >= input.maxAttempts;
|
|
1726
|
+
return {
|
|
1727
|
+
reason: input.reason,
|
|
1728
|
+
question: input.question,
|
|
1729
|
+
branch: input.branch,
|
|
1730
|
+
compareUrl: input.compareUrl,
|
|
1731
|
+
logPath: input.logPath,
|
|
1732
|
+
whatToDo: terminal ? whatToDoTerminal(input.maxAttempts) : WHAT_TO_DO_RETRY,
|
|
1733
|
+
attempt: input.attempt + 1,
|
|
1734
|
+
terminal,
|
|
1735
|
+
humanReviewFiles: input.humanReviewFiles ?? [],
|
|
1736
|
+
forbiddenFiles: input.forbiddenFiles ?? [],
|
|
1737
|
+
};
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
// ── The branch-already-merged guard (T-8 point 4) ─────────────────────────────
|
|
1741
|
+
|
|
1742
|
+
const BRANCH_ALREADY_MERGED_REASON = 'branch-already-merged';
|
|
1743
|
+
|
|
1744
|
+
const branchAlreadyMergedQuestion = (branch: string): string =>
|
|
1745
|
+
`La PR de ${branch} ya consta como mergeada. El cierre no empuja más commits a esa rama: nunca ` +
|
|
1746
|
+
'llegarían al padre y se perderían en silencio (medido en T-6.3, dos commits tardíos). Revisa a ' +
|
|
1747
|
+
'mano si el trabajo de este intento sigue haciendo falta — puede que ya esté cubierto por la PR ' +
|
|
1748
|
+
'mergeada, o que haga falta una tarea nueva a partir de ahí.';
|
|
1749
|
+
|
|
1750
|
+
export interface CheckBranchNotMergedInput {
|
|
1751
|
+
/** The branch a push is about to target. */
|
|
1752
|
+
branch: string;
|
|
1753
|
+
/**
|
|
1754
|
+
* The SAME `isPrMerged(branch): boolean` seam `maintenance.ts`'s `Gh` collaborator already asks
|
|
1755
|
+
* (`dispatch.ts`'s `realGh`) — reused rather than duplicated, per T-8 point 4's own wording.
|
|
1756
|
+
*/
|
|
1757
|
+
isPrMerged: (branch: string) => boolean;
|
|
1758
|
+
logPath: string;
|
|
1759
|
+
/** The attempt that is ABOUT to push (and that discovers the branch already merged, if it has). */
|
|
1760
|
+
attempt: number;
|
|
1761
|
+
/** `lanes.json`'s `attempts`; defaults to the shipped cap when the caller has no config. */
|
|
1762
|
+
maxAttempts?: number;
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
/**
|
|
1766
|
+
* T-8 point 4: the close never pushes to a branch whose PR already shows as merged — measured
|
|
1767
|
+
* incident, two late commits of T-6.3 were pushed to a branch whose PR was already merged and
|
|
1768
|
+
* never reached the parent, lost silently. A caller runs this BEFORE any push (both the WIP
|
|
1769
|
+
* auto-save and the green path's own commit-and-push are pushes) and gets back either:
|
|
1770
|
+
*
|
|
1771
|
+
* - `null` — the branch is not merged; proceed with `planClose` exactly as before this guard
|
|
1772
|
+
* existed;
|
|
1773
|
+
* - a ready `ClosePlan` — `[{ kind: 'block-keep-slot', details }]`, ONLY. No `save-work` at all:
|
|
1774
|
+
* pushing a WIP commit here is precisely the mistake this guards against, so the save-before-
|
|
1775
|
+
* release ordering (design.md decision (k)) does not apply — there is nothing safe to save by
|
|
1776
|
+
* pushing. No `release-slot` either: the unpublished work stays the only copy, held in the slot
|
|
1777
|
+
* for a person to inspect and rescue by hand, the same as a push that exhausted every retry.
|
|
1778
|
+
*
|
|
1779
|
+
* The returned plan runs through the ordinary `executeClose` like any other — `block-keep-slot`
|
|
1780
|
+
* reached directly (with no `save-work` ahead of it) calls `runners.blockKeepSlot` exactly as the
|
|
1781
|
+
* `divert`-produced one does.
|
|
1782
|
+
*/
|
|
1783
|
+
export function checkBranchNotMerged(input: CheckBranchNotMergedInput): ClosePlan | null {
|
|
1784
|
+
if (!input.isPrMerged(input.branch)) {
|
|
1785
|
+
return null;
|
|
1786
|
+
}
|
|
1787
|
+
const details = buildBlockDetails({
|
|
1788
|
+
reason: BRANCH_ALREADY_MERGED_REASON,
|
|
1789
|
+
question: branchAlreadyMergedQuestion(input.branch),
|
|
1790
|
+
branch: input.branch,
|
|
1791
|
+
logPath: input.logPath,
|
|
1792
|
+
attempt: input.attempt,
|
|
1793
|
+
maxAttempts: input.maxAttempts ?? DEFAULT_DISPATCH_LIMITS.maxAttempts,
|
|
1794
|
+
});
|
|
1795
|
+
return [{ kind: 'block-keep-slot', details }];
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
/** `backlog task edit --comment` refuses a body carrying a standalone `---` line outright. */
|
|
1799
|
+
const STANDALONE_RULE_LINE = /^[^\S\n]*-{3,}[^\S\n]*$/gm;
|
|
1800
|
+
const MAX_COMMENT_CHARS = 4000;
|
|
1801
|
+
const TRUNCATION_TAIL = '\n\n(truncado; ver review.md)';
|
|
1802
|
+
|
|
1803
|
+
/**
|
|
1804
|
+
* Makes a body the `backlog` CLI will actually accept. Two failure modes, both measured: a
|
|
1805
|
+
* standalone `---` line is reserved (exit 1, no comment written at all), and an unbounded body —
|
|
1806
|
+
* a reviewer verdict embeds a whole findings list — makes the comment unreadable. A rejected
|
|
1807
|
+
* comment is not a cosmetic loss: the `Blocked` comment is the ONLY channel telling a person why
|
|
1808
|
+
* the task stopped, so losing it turns a diagnosable failure into a silent one.
|
|
1809
|
+
*
|
|
1810
|
+
* `tail` defaults to pointing at `review.md` (the reviewer-verdict case this was written for); a
|
|
1811
|
+
* caller truncating a DIFFERENT source of truth — `needsGuidanceQuestion` below points at
|
|
1812
|
+
* `run.log`, since that is where the worker's full report actually survives — passes its own.
|
|
1813
|
+
*/
|
|
1814
|
+
export function sanitizeCommentBody(body: string, tail: string = TRUNCATION_TAIL): string {
|
|
1815
|
+
const withoutRules = body.replace(STANDALONE_RULE_LINE, '___');
|
|
1816
|
+
if (withoutRules.length <= MAX_COMMENT_CHARS) {
|
|
1817
|
+
return withoutRules;
|
|
1818
|
+
}
|
|
1819
|
+
return `${withoutRules.slice(0, MAX_COMMENT_CHARS - tail.length)}${tail}`;
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
const RUN_LOG_TRUNCATION_TAIL = '\n\n(truncado; ver run.log)';
|
|
1823
|
+
|
|
1824
|
+
/**
|
|
1825
|
+
* The `Blocked` comment's `question` for a `needs-guidance` outcome: the worker's own final report
|
|
1826
|
+
* (`render.ts`'s `extractResultText` — the terminal `result` event's `result` field), sanitized the
|
|
1827
|
+
* same way every other question is, but capped with a tail pointing at `run.log` rather than
|
|
1828
|
+
* `review.md` — `run.log` is where the FULL report (T-6's split summary and its three design
|
|
1829
|
+
* decisions) survives once this truncates it, not a reviewer verdict.
|
|
1830
|
+
*
|
|
1831
|
+
* There is, as of this writing, no parser that extracts a structured `questions:` block (the
|
|
1832
|
+
* escalation-protocol shape `catalyst-delegation/SKILL.md` documents) out of that text — so the
|
|
1833
|
+
* whole report becomes the question, prose or not. `undefined` in, `undefined` out: a stream with
|
|
1834
|
+
* no terminal `result` event (or one whose `result` field is empty) leaves the comment naming just
|
|
1835
|
+
* the outcome, as it did before this function existed.
|
|
1836
|
+
*/
|
|
1837
|
+
export function needsGuidanceQuestion(resultText: string | undefined): string | undefined {
|
|
1838
|
+
if (resultText === undefined || resultText.trim().length === 0) {
|
|
1839
|
+
return undefined;
|
|
1840
|
+
}
|
|
1841
|
+
return sanitizeCommentBody(resultText, RUN_LOG_TRUNCATION_TAIL);
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
/**
|
|
1845
|
+
* The failure path's own record, one line per kind (T-31 round 4). Two lines rather than one, because
|
|
1846
|
+
* the two kinds ask a person for different things: a refused leftover has to be removed from the
|
|
1847
|
+
* slot's tree before the retry restores it again, while a soft-list one has to be READ.
|
|
1848
|
+
*/
|
|
1849
|
+
const FORBIDDEN_LEFTOVERS_PREFIX =
|
|
1850
|
+
'\nRutas prohibidas que el intento dejó en el slot (el reintento las restaura; revísalas a mano): ';
|
|
1851
|
+
const SOFT_LIST_LEFTOVERS_PREFIX =
|
|
1852
|
+
'\nRutas de la lista blanda tocadas por el intento (requieren lectura humana): ';
|
|
1853
|
+
|
|
1854
|
+
/** The tail a report truncated INSIDE the comment carries; the whole one is in the log named above. */
|
|
1855
|
+
const QUESTION_TRUNCATION_TAIL = '\n\n(pregunta truncada; ver el log del intento)';
|
|
1856
|
+
|
|
1857
|
+
/**
|
|
1858
|
+
* One `prefix: <capped list>` line, or nothing at all — an empty list has no line, and neither does a
|
|
1859
|
+
* `room` too small to hold the prefix plus one path. `room` is what the comment has left, prefix
|
|
1860
|
+
* included.
|
|
1861
|
+
*/
|
|
1862
|
+
function leftoverLine(prefix: string, files: readonly string[], room: number): string {
|
|
1863
|
+
if (files.length === 0 || room - prefix.length <= 0) {
|
|
1864
|
+
return '';
|
|
1865
|
+
}
|
|
1866
|
+
return `${prefix}${formatFileList(files, room - prefix.length)}`;
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
/** `text` cut to `budget` chars with `tail` marking the cut, or nothing when not even `tail` fits. */
|
|
1870
|
+
function truncateTo(text: string, budget: number, tail: string): string {
|
|
1871
|
+
if (text.length <= budget) {
|
|
1872
|
+
return text;
|
|
1873
|
+
}
|
|
1874
|
+
if (budget <= tail.length) {
|
|
1875
|
+
return '';
|
|
1876
|
+
}
|
|
1877
|
+
return `${text.slice(0, budget - tail.length)}${tail}`;
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
/**
|
|
1881
|
+
* The `Blocked` comment carries everything design.md decision (m) says a person needs to act.
|
|
1882
|
+
*
|
|
1883
|
+
* Composed under an explicit PRIORITY, because `sanitizeCommentBody` truncates from the END and the
|
|
1884
|
+
* last line is the only actionable one — round 3 let a full file list plus a worker report push it off
|
|
1885
|
+
* the comment (measured, T-31 round 4: exactly 4000 chars, no `whatToDo`). In the order things must
|
|
1886
|
+
* survive:
|
|
1887
|
+
*
|
|
1888
|
+
* 1. the reason, the branch/compare/log pointers and `whatToDo` — dispatcher-authored and bounded
|
|
1889
|
+
* by the ids and paths they name, so they are never budgeted;
|
|
1890
|
+
* 2. the two leftover lines, against the room those leave;
|
|
1891
|
+
* 3. the worker's own report (`question`), against what is left after that. It is by far the
|
|
1892
|
+
* longest part, it is the only one a worker authors, and it survives in full in the `run.log`
|
|
1893
|
+
* the comment names two lines above.
|
|
1894
|
+
*/
|
|
1895
|
+
export function formatBlockComment(details: BlockDetails): string {
|
|
1896
|
+
const head = details.reason;
|
|
1897
|
+
const pointers =
|
|
1898
|
+
`\nRama: ${details.branch}` +
|
|
1899
|
+
(details.compareUrl ? `\nPR/compare: ${details.compareUrl}` : '') +
|
|
1900
|
+
`\nLog: ${details.logPath}`;
|
|
1901
|
+
const action = `\n${details.whatToDo}`;
|
|
1902
|
+
|
|
1903
|
+
let room = MAX_COMMENT_CHARS - (head.length + pointers.length + action.length);
|
|
1904
|
+
const forbidden = leftoverLine(FORBIDDEN_LEFTOVERS_PREFIX, details.forbiddenFiles ?? [], room);
|
|
1905
|
+
room -= forbidden.length;
|
|
1906
|
+
const softList = leftoverLine(SOFT_LIST_LEFTOVERS_PREFIX, details.humanReviewFiles ?? [], room);
|
|
1907
|
+
room -= softList.length;
|
|
1908
|
+
const question = details.question
|
|
1909
|
+
? truncateTo(`\n${details.question}`, Math.max(0, room), QUESTION_TRUNCATION_TAIL)
|
|
1910
|
+
: '';
|
|
1911
|
+
|
|
1912
|
+
return sanitizeCommentBody([head, question, pointers, forbidden, softList, action].join(''));
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
// ── The «Registro de ejecución» block (T-68; `catalyst-backlog/SKILL.md` §12) ────────────────
|
|
1916
|
+
//
|
|
1917
|
+
// Every task carries, once, an eight-field record of how its headless dispatch went, appended to
|
|
1918
|
+
// its notes at the `Done` transition. `close.ts`'s own `planClose`/`executeClose` never set `Done`
|
|
1919
|
+
// (this module never does) — `maintenance.ts` does, from TWO places: step 3 (a leaf task, merged PR
|
|
1920
|
+
// -> `Done`) and `recomputeParent` (a parent whose children are all `Done` and whose own PR merged —
|
|
1921
|
+
// §12 says "every task", a parent included). Both gather the raw facts (`Task.attempts`, each
|
|
1922
|
+
// attempt's classified stream outcome, each attempt's `review.md` verdict, the current notes text
|
|
1923
|
+
// scoped to the notes section for the idempotence check) and hand them here. Composing the block
|
|
1924
|
+
// from those facts is PURE, exactly like `planClose` above — `close.test.ts` asserts it directly,
|
|
1925
|
+
// with no filesystem or `backlog` CLI involved.
|
|
1926
|
+
//
|
|
1927
|
+
// §12.2 rule 3's three "empty" values are NOT interchangeable, and this is where that distinction
|
|
1928
|
+
// is enforced: `desconocido` marks a field this function had no real signal for; `ninguno`/`ninguna`
|
|
1929
|
+
// is reserved for a field it actually measured and found absent. An LM Studio or network failure is
|
|
1930
|
+
// real but structurally untraceable by the time this runs — `entry.ts`'s `onLocalModelMissing`
|
|
1931
|
+
// writes only a `Blocked` COMMENT (never a file under `.backlog/.dispatch/`), and that comment is
|
|
1932
|
+
// routinely overwritten by every later transition — so "Fallos de entorno" can positively detect
|
|
1933
|
+
// only a budget cutoff (`STREAM_OUTCOME.BUDGET`) and reads `desconocido`, never `ninguno`, when it
|
|
1934
|
+
// finds none: this measures ONE of three possible causes, not all three.
|
|
1935
|
+
//
|
|
1936
|
+
// `attempts === 0` means the dispatcher never launched a single attempt for this task — the root
|
|
1937
|
+
// `CLAUDE.md`'s Worktree Gate forces EVERY task onto a `task/T-nn` branch, supervisada (interactive)
|
|
1938
|
+
// sessions included, so step 3/`recomputeParent` close such a task the moment its PR merges, exactly
|
|
1939
|
+
// like a headless one. That absence of any attempt IS a measurement, not a headless task with zero
|
|
1940
|
+
// attempts: this composer records it as `Modo: supervisada`, `Intervenciones humanas: desconocido`
|
|
1941
|
+
// (the dispatcher has no visibility into a supervisada session's own human steps), and points
|
|
1942
|
+
// `Fuente` at the merged PR — the only trace left with no attempt directory to point at instead.
|
|
1943
|
+
//
|
|
1944
|
+
// The idempotence sentinel (`hasExecutionRecordBlock`, below) applies identically to a supervisada
|
|
1945
|
+
// task: if a person already appended their own block to its notes by hand, this composer never
|
|
1946
|
+
// runs at all — the caller's `readNotes`/`hasExecutionRecordBlock` check short-circuits first.
|
|
1947
|
+
|
|
1948
|
+
export const EXECUTION_RECORD_HEADING = '## Registro de ejecución';
|
|
1949
|
+
|
|
1950
|
+
/**
|
|
1951
|
+
* A WHOLE LINE, not a substring: `notes.includes(EXECUTION_RECORD_HEADING)` also matched a report
|
|
1952
|
+
* that merely MENTIONS the heading in prose ("texto ## Registro de ejecución aquí"), which is real
|
|
1953
|
+
* text a worker's own notes can legitimately contain. `EXECUTION_RECORD_HEADING` carries no regex
|
|
1954
|
+
* metacharacter (`#` and letters only), so it is safe to anchor directly.
|
|
1955
|
+
*/
|
|
1956
|
+
const EXECUTION_RECORD_HEADING_LINE = new RegExp(`^${EXECUTION_RECORD_HEADING}$`, 'm');
|
|
1957
|
+
|
|
1958
|
+
/**
|
|
1959
|
+
* §12.3's sentinel: `true` once `notes` already carries the heading on its OWN line — the
|
|
1960
|
+
* maintenance pass's own idempotence check. `notes` must already be scoped to the notes SECTION
|
|
1961
|
+
* (`task-view.ts`'s `notesRegion`) by the caller: this function has no way to tell a heading
|
|
1962
|
+
* legitimately written in the notes apart from one that merely appears in the description or a
|
|
1963
|
+
* comment the CLI's `--plain` view happens to also carry.
|
|
1964
|
+
*/
|
|
1965
|
+
export function hasExecutionRecordBlock(notes: string | null | undefined): boolean {
|
|
1966
|
+
return typeof notes === 'string' && EXECUTION_RECORD_HEADING_LINE.test(notes);
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
const UNKNOWN_FIELD = 'desconocido';
|
|
1970
|
+
const POST_MERGE_FIXES_AT_CLOSE = 'ninguno conocido al cierre';
|
|
1971
|
+
// §12.2 rule 4: no status-transition timestamp survives anywhere today (the task front matter
|
|
1972
|
+
// keeps only `created_date`/`updated_date`, and Backlog.md's `onStatusChange` payload is gone the
|
|
1973
|
+
// instant the callback returns) — `desconocido` unconditionally, rather than an attempt directory's
|
|
1974
|
+
// own mtime, which shifts every time ANY file inside it is written and would silently misreport the
|
|
1975
|
+
// exact window it claims to measure.
|
|
1976
|
+
const CYCLE_TIME_UNKNOWN = UNKNOWN_FIELD;
|
|
1977
|
+
|
|
1978
|
+
export interface ExecutionRecordInput {
|
|
1979
|
+
/** The task's `lane:` label at close time — decides the "Modo" motivo. */
|
|
1980
|
+
lane: Lane | undefined;
|
|
1981
|
+
/** `Task.attempts` — the number of `intento-N` directories this task's dispatch record holds. */
|
|
1982
|
+
attempts: number;
|
|
1983
|
+
/**
|
|
1984
|
+
* Each attempt's classified terminal outcome (`render.ts`'s `StreamOutcome`), attempt 1 first,
|
|
1985
|
+
* `null` where the stream could not be read. Shorter than `attempts` — or entirely empty — when
|
|
1986
|
+
* the caller could not read every attempt; a missing entry reads as "unknown", never as success.
|
|
1987
|
+
*/
|
|
1988
|
+
attemptOutcomes: readonly (string | null)[];
|
|
1989
|
+
/**
|
|
1990
|
+
* Each attempt's `review.md` verdict (`reviewer.ts`'s `ReviewerVerdict`, parsed by
|
|
1991
|
+
* `parseReviewerVerdict` — reused, never reimplemented), attempt 1 first, `null` where the
|
|
1992
|
+
* attempt has no `review.md` at all. Only the local lane's close ever runs the reviewer, so this
|
|
1993
|
+
* is empty (or all-`null`) for every frontier-lane task — its own worker runs whatever gates it
|
|
1994
|
+
* runs, invisible to the dispatcher, and "Rondas de corrección"/"revisor" must say so honestly
|
|
1995
|
+
* (`desconocido`) rather than guess from the lane label, which a quota cutoff or a crash makes
|
|
1996
|
+
* wrong (a retry with no review at all is not a correction ROUND).
|
|
1997
|
+
*/
|
|
1998
|
+
reviewVerdicts: readonly (string | null)[];
|
|
1999
|
+
/** `.backlog/.dispatch/<id>/intento-<N>` of the LAST attempt, or `null` with no attempt at all. */
|
|
2000
|
+
sourcePath: string | null;
|
|
2001
|
+
/**
|
|
2002
|
+
* Only consulted when `attempts === 0` (`sourceLine`'s own JSDoc) — Fuente's PR-based fallback
|
|
2003
|
+
* for a task the dispatcher never launched. Three states, matched to §12.2 rule 3's own three
|
|
2004
|
+
* "empty" values:
|
|
2005
|
+
* - a `number`: the PR is known — `Fuente` reads `PR #<n>`.
|
|
2006
|
+
* - `'read-failed'`: the caller already confirmed a PR exists (step 3/`recomputeParent` only
|
|
2007
|
+
* ever reach this with a CONFIRMED merged PR) but could not read its number — `Fuente` reads
|
|
2008
|
+
* `desconocido`, never `sin evidencia`: the PR is real, only the read failed.
|
|
2009
|
+
* - `null` (default): no PR is known to exist at all — `Fuente` reads `sin evidencia`, rule 3's
|
|
2010
|
+
* OWN definition ("no attempt directory AND no PR").
|
|
2011
|
+
*/
|
|
2012
|
+
prNumber?: number | 'read-failed' | null;
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
/**
|
|
2016
|
+
* "Rondas de corrección" + its "revisor", from MEASURED `review.md` data only (§12.2 rule 3) — never
|
|
2017
|
+
* from the retry count (a quota cutoff or a crash retries with no review at all) or from the lane
|
|
2018
|
+
* label (the frontier lane's close never runs a reviewer the dispatcher can see). `desconocido` for
|
|
2019
|
+
* BOTH halves when no attempt has a `review.md` at all — there is nothing to count.
|
|
2020
|
+
*/
|
|
2021
|
+
function correctionRounds(verdicts: readonly (string | null)[]): { rounds: string; revisor: string } {
|
|
2022
|
+
if (!verdicts.some((verdict) => verdict !== null)) {
|
|
2023
|
+
return { rounds: UNKNOWN_FIELD, revisor: UNKNOWN_FIELD };
|
|
2024
|
+
}
|
|
2025
|
+
const failCount = verdicts.filter((verdict) => verdict === REVIEWER_VERDICT.FAIL).length;
|
|
2026
|
+
return { rounds: String(failCount), revisor: 'code-review' };
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
/**
|
|
2030
|
+
* "Resultado del intento 1": the first attempt's OWN outcome when it is known — carrying its real
|
|
2031
|
+
* cause into the record (AC1's "Blocked cause if there was one") — degrading to the template's
|
|
2032
|
+
* cause-free `reintento` when only the retry COUNT is known (a later, close-level failure that
|
|
2033
|
+
* never touched the stream, e.g. a scope violation), and to `desconocido` with no attempt at all.
|
|
2034
|
+
*/
|
|
2035
|
+
function firstAttemptResult(attempts: number, firstOutcome: string | null): string {
|
|
2036
|
+
if (attempts <= 0) {
|
|
2037
|
+
return UNKNOWN_FIELD;
|
|
2038
|
+
}
|
|
2039
|
+
if (firstOutcome !== null && firstOutcome !== STREAM_OUTCOME.COMPLETED) {
|
|
2040
|
+
return `Blocked (${firstOutcome})`;
|
|
2041
|
+
}
|
|
2042
|
+
return attempts === 1 ? 'Done' : 'reintento';
|
|
2043
|
+
}
|
|
2044
|
+
|
|
2045
|
+
/** See this section's own header comment for why absence here is `desconocido`, never `ninguno`. */
|
|
2046
|
+
function environmentFailures(outcomes: readonly (string | null)[]): string {
|
|
2047
|
+
return outcomes.includes(STREAM_OUTCOME.BUDGET) ? 'cuota' : UNKNOWN_FIELD;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
/**
|
|
2051
|
+
* `attempts === 0` is read as "the dispatcher never launched this task": the root `CLAUDE.md`'s
|
|
2052
|
+
* Worktree Gate puts supervisada (interactive) sessions on `task/T-nn` branches too, precisely so
|
|
2053
|
+
* the reconciler closes them the same way. Its motivo is recorded nowhere the dispatcher can read,
|
|
2054
|
+
* hence `desconocido`.
|
|
2055
|
+
*
|
|
2056
|
+
* Not an exact equivalence: `entry.ts` sets `In Progress` and writes the lock BEFORE
|
|
2057
|
+
* `beginAttempt` creates `intento-1`, so a crash in that window leaves a dispatched task at zero
|
|
2058
|
+
* attempts (documented beside `countAttempts` in `attempt.ts`). Step 1's PID-based dead-lock sweep
|
|
2059
|
+
* blocks such a task before step 3 can close it, which is what keeps this reading safe — not the
|
|
2060
|
+
* count itself.
|
|
2061
|
+
*/
|
|
2062
|
+
function neverDispatched(attempts: number): boolean {
|
|
2063
|
+
return attempts === 0;
|
|
2064
|
+
}
|
|
2065
|
+
|
|
2066
|
+
/** "Modo": `supervisada` once `neverDispatched`, `headless — lane:<lane>` otherwise (unchanged). */
|
|
2067
|
+
function modeLine(attempts: number, lane: Lane | undefined): string {
|
|
2068
|
+
if (neverDispatched(attempts)) {
|
|
2069
|
+
return `supervisada — ${UNKNOWN_FIELD}`;
|
|
2070
|
+
}
|
|
2071
|
+
return lane ? `headless — lane:${lane}` : `headless — ${UNKNOWN_FIELD}`;
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
/**
|
|
2075
|
+
* "Intervenciones humanas": `attempts - 1` retries, each measured through a human-released `Blocked`
|
|
2076
|
+
* (§10) — unchanged for a dispatched task. `desconocido` once `neverDispatched`: the dispatcher has
|
|
2077
|
+
* no visibility at all into a supervisada session's own human interventions (§12.2 rule 3 — this is
|
|
2078
|
+
* "no data", never a measured "ninguna" nobody actually measured).
|
|
2079
|
+
*/
|
|
2080
|
+
function humanInterventionsLine(attempts: number): string {
|
|
2081
|
+
if (neverDispatched(attempts)) {
|
|
2082
|
+
return `${UNKNOWN_FIELD} — tipo: ${UNKNOWN_FIELD}`;
|
|
2083
|
+
}
|
|
2084
|
+
const rounds = Math.max(0, attempts - 1);
|
|
2085
|
+
return `${rounds} — tipo: ${rounds > 0 ? 'respuesta a Blocked' : 'ninguna'}`;
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
/**
|
|
2089
|
+
* "Fuente": the last attempt directory for a dispatched task (unchanged). For a `neverDispatched`
|
|
2090
|
+
* task the attempt directory never existed, so the PR is the only trace left — see
|
|
2091
|
+
* `ExecutionRecordInput.prNumber`'s own JSDoc for the three states this reads.
|
|
2092
|
+
*/
|
|
2093
|
+
function sourceLine(
|
|
2094
|
+
attempts: number,
|
|
2095
|
+
sourcePath: string | null,
|
|
2096
|
+
prNumber: number | 'read-failed' | null | undefined,
|
|
2097
|
+
): string {
|
|
2098
|
+
if (!neverDispatched(attempts)) {
|
|
2099
|
+
return sourcePath ?? 'sin evidencia';
|
|
2100
|
+
}
|
|
2101
|
+
if (typeof prNumber === 'number') {
|
|
2102
|
+
return `PR #${prNumber}`;
|
|
2103
|
+
}
|
|
2104
|
+
if (prNumber === 'read-failed') {
|
|
2105
|
+
return UNKNOWN_FIELD;
|
|
2106
|
+
}
|
|
2107
|
+
return 'sin evidencia';
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
/** Composes the eight-field block (§12.1's template), fixed order, one field per line (§12.2 rule 2). */
|
|
2111
|
+
export function buildExecutionRecordBlock(input: ExecutionRecordInput): string {
|
|
2112
|
+
const { rounds, revisor } = correctionRounds(input.reviewVerdicts);
|
|
2113
|
+
return [
|
|
2114
|
+
EXECUTION_RECORD_HEADING,
|
|
2115
|
+
'',
|
|
2116
|
+
`- **Modo:** ${modeLine(input.attempts, input.lane)}`,
|
|
2117
|
+
`- **Resultado del intento 1:** ${firstAttemptResult(input.attempts, input.attemptOutcomes[0] ?? null)}`,
|
|
2118
|
+
`- **Rondas de corrección:** ${rounds} — revisor: ${revisor}`,
|
|
2119
|
+
`- **Arreglos posteriores al merge:** ${POST_MERGE_FIXES_AT_CLOSE}`,
|
|
2120
|
+
`- **Intervenciones humanas:** ${humanInterventionsLine(input.attempts)}`,
|
|
2121
|
+
`- **Fallos de entorno:** ${environmentFailures(input.attemptOutcomes)}`,
|
|
2122
|
+
`- **Tiempo de ciclo:** ${CYCLE_TIME_UNKNOWN}`,
|
|
2123
|
+
`- **Fuente:** ${sourceLine(input.attempts, input.sourcePath, input.prNumber)}`,
|
|
2124
|
+
].join('\n');
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
export interface PlanCloseSuccessInput {
|
|
2128
|
+
outcome: 'success';
|
|
2129
|
+
lane: Lane;
|
|
2130
|
+
}
|
|
2131
|
+
|
|
2132
|
+
export interface PlanCloseFailureInput {
|
|
2133
|
+
outcome: 'failure';
|
|
2134
|
+
lane: Lane;
|
|
2135
|
+
reason: string;
|
|
2136
|
+
question?: string;
|
|
2137
|
+
branch: string;
|
|
2138
|
+
compareUrl?: string;
|
|
2139
|
+
logPath: string;
|
|
2140
|
+
/** The attempt that just ran and failed. */
|
|
2141
|
+
attempt: number;
|
|
2142
|
+
/** Already known: `saveWork`'s WIP commit-and-push already ran by the time this is called. */
|
|
2143
|
+
pushSucceeded: boolean;
|
|
2144
|
+
/** `lanes.json`'s `attempts`; defaults to the shipped cap when the caller has no config. */
|
|
2145
|
+
maxAttempts?: number;
|
|
2146
|
+
}
|
|
2147
|
+
|
|
2148
|
+
export type PlanCloseInput = PlanCloseSuccessInput | PlanCloseFailureInput;
|
|
2149
|
+
|
|
2150
|
+
/**
|
|
2151
|
+
* Pure planner. Success returns the happy-path order (spec: "Dispatch close ordering") — starting
|
|
2152
|
+
* at `board-check`, since everything after it reads the board the worker could have edited —
|
|
2153
|
+
* `reviewer` inserted only for the local lane, `ac-check` always present, matching the design.md
|
|
2154
|
+
* close diagram (`SR -- accepted --> AC` for local, `RV -- frontier --> AC` directly). Failure
|
|
2155
|
+
* always starts at `save-work` (spec: "Failure path preserves work before blocking"): a successful
|
|
2156
|
+
* push is followed by `block` then `release-slot` (save always precedes release); a failed push
|
|
2157
|
+
* stops at `block-keep-slot` with no release step at all, so the reconciler retries the push
|
|
2158
|
+
* instead of reusing a worktree holding the only copy (design.md decision (k)).
|
|
2159
|
+
*/
|
|
2160
|
+
export function planClose(input: PlanCloseInput): ClosePlan {
|
|
2161
|
+
if (input.outcome === 'success') {
|
|
2162
|
+
// `board-check` FIRST: every step after it trusts what the board says — the scope check reads
|
|
2163
|
+
// the declared files, the triad the test command, the pre-PR gate and the reviewer the
|
|
2164
|
+
// acceptance criteria. Verifying the board last would mean verifying it after acting on it.
|
|
2165
|
+
//
|
|
2166
|
+
// `mirror-regen` sits between the triad and the reviewer, and BOTH edges are load-bearing:
|
|
2167
|
+
// - AFTER `format-lint-test`, because that step runs `prettier --write` over the attempt's own
|
|
2168
|
+
// source files. A mirror regenerated before it would be a byte-copy of the UNFORMATTED
|
|
2169
|
+
// source and would be stale again the moment the triad rewrote it — the exact drift this
|
|
2170
|
+
// step exists to close.
|
|
2171
|
+
// - BEFORE `reviewer` and `ac-check`, because the reviewer judges the diff that will actually
|
|
2172
|
+
// be pushed. Regenerating afterwards would put thousands of mirror lines in the PR that no
|
|
2173
|
+
// reviewer ever saw, and would leave the gate reading a tree the PR does not contain.
|
|
2174
|
+
// - AFTER `scope-check`, which is what keeps `packages/cli/` forbidden for the WORKER: the
|
|
2175
|
+
// scope verdict is taken over the pre-regen file set, so a hand-written mirror edit is still
|
|
2176
|
+
// a violation, and this dispatcher-owned output arrives after the judging is done.
|
|
2177
|
+
const steps: ClosePlan = [
|
|
2178
|
+
{ kind: 'board-check' },
|
|
2179
|
+
{ kind: 'scope-check' },
|
|
2180
|
+
{ kind: 'format-lint-test' },
|
|
2181
|
+
{ kind: 'mirror-regen' },
|
|
2182
|
+
];
|
|
2183
|
+
if (input.lane === LANE.LOCAL) {
|
|
2184
|
+
steps.push({ kind: 'reviewer' });
|
|
2185
|
+
}
|
|
2186
|
+
steps.push(
|
|
2187
|
+
{ kind: 'ac-check' },
|
|
2188
|
+
{ kind: 'open-pr' },
|
|
2189
|
+
{ kind: 'release-slot' },
|
|
2190
|
+
{ kind: 'recompute-parent' },
|
|
2191
|
+
{ kind: 'drain' },
|
|
2192
|
+
);
|
|
2193
|
+
return steps;
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2196
|
+
const details = buildBlockDetails({
|
|
2197
|
+
...input,
|
|
2198
|
+
maxAttempts: input.maxAttempts ?? DEFAULT_DISPATCH_LIMITS.maxAttempts,
|
|
2199
|
+
});
|
|
2200
|
+
if (!input.pushSucceeded) {
|
|
2201
|
+
return [{ kind: 'save-work' }, { kind: 'block-keep-slot', details }];
|
|
2202
|
+
}
|
|
2203
|
+
return [{ kind: 'save-work' }, { kind: 'block', details }, { kind: 'release-slot' }];
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
// ── executeClose: runner-driven walk, injectable so tests never touch git/gh/pnpm ─────
|
|
2207
|
+
|
|
2208
|
+
export interface MechanicalStepResult {
|
|
2209
|
+
ok: boolean;
|
|
2210
|
+
reason?: string;
|
|
2211
|
+
question?: string;
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
export interface OpenPrResult extends MechanicalStepResult {
|
|
2215
|
+
compareUrl?: string;
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2218
|
+
export interface SaveWorkResult {
|
|
2219
|
+
pushSucceeded: boolean;
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
export interface CloseRunners {
|
|
2223
|
+
boardCheck: () => MechanicalStepResult;
|
|
2224
|
+
/**
|
|
2225
|
+
* Narrower than the other mechanical runners on purpose: the caller reads `humanReviewFiles` off
|
|
2226
|
+
* this result to mark the pull request (T-31), and typing it as a bare `MechanicalStepResult`
|
|
2227
|
+
* erased exactly the field the whole mark depends on. `executeClose` only ever reads the
|
|
2228
|
+
* `MechanicalStepResult` half, which `ScopeCheckStepResult` extends.
|
|
2229
|
+
*/
|
|
2230
|
+
scopeCheck: () => ScopeCheckStepResult;
|
|
2231
|
+
formatLintTest: () => MechanicalStepResult;
|
|
2232
|
+
mirrorRegen: () => MechanicalStepResult;
|
|
2233
|
+
reviewer: () => MechanicalStepResult;
|
|
2234
|
+
acCheck: () => MechanicalStepResult;
|
|
2235
|
+
openPr: () => OpenPrResult;
|
|
2236
|
+
releaseSlot: () => void;
|
|
2237
|
+
recomputeParent: () => void;
|
|
2238
|
+
drain: () => void;
|
|
2239
|
+
saveWork: () => SaveWorkResult;
|
|
2240
|
+
/**
|
|
2241
|
+
* What the slot's CURRENT tree holds, classified into refused and soft-list paths — asked for on
|
|
2242
|
+
* every divert that no `scope-check` preceded (T-31 rounds 3 and 4): a session-level failure, whose
|
|
2243
|
+
* plan starts at `save-work`, and a `board-check` failure, the one mechanical step that diverts
|
|
2244
|
+
* before the scope check. Informational, never a verdict: it answers "what did this attempt leave
|
|
2245
|
+
* behind", not "may it". Its failure is not the close's failure, so a throw is caught and recorded
|
|
2246
|
+
* as "none found".
|
|
2247
|
+
*/
|
|
2248
|
+
leftoverFiles: () => PathClassification;
|
|
2249
|
+
block: (details: BlockDetails) => void;
|
|
2250
|
+
blockKeepSlot: (details: BlockDetails) => void;
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
export interface ExecuteCloseContext {
|
|
2254
|
+
lane: Lane;
|
|
2255
|
+
/** The attempt currently running (1-based). */
|
|
2256
|
+
attempt: number;
|
|
2257
|
+
branch: string;
|
|
2258
|
+
logPath: string;
|
|
2259
|
+
/** `lanes.json`'s `attempts`; defaults to the shipped cap when the caller has no config. */
|
|
2260
|
+
maxAttempts?: number;
|
|
2261
|
+
}
|
|
2262
|
+
|
|
2263
|
+
/** Reads the failure fields already baked into a `block`/`block-keep-slot` step's details. */
|
|
2264
|
+
function peekFailureContext(
|
|
2265
|
+
step: CloseStep | undefined,
|
|
2266
|
+
): { reason: string; question?: string; compareUrl?: string } | null {
|
|
2267
|
+
if (step && (step.kind === 'block' || step.kind === 'block-keep-slot')) {
|
|
2268
|
+
return {
|
|
2269
|
+
reason: step.details.reason,
|
|
2270
|
+
question: step.details.question,
|
|
2271
|
+
compareUrl: step.details.compareUrl,
|
|
2272
|
+
};
|
|
2273
|
+
}
|
|
2274
|
+
return null;
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2277
|
+
/**
|
|
2278
|
+
* Walks `plan` in order, invoking the matching runner per step. A mechanical step's failure — or
|
|
2279
|
+
* a plan that starts directly at `save-work` (a session-level failure with no mechanical step
|
|
2280
|
+
* attempted) — diverts into the save-before-release failure sequence: `saveWork` runs for real,
|
|
2281
|
+
* then `block` (push ok, followed by `releaseSlot`) or `blockKeepSlot` (push failed, no release)
|
|
2282
|
+
* runs with freshly computed `BlockDetails`, so the recorded call order always has `saveWork`
|
|
2283
|
+
* before any release, never after.
|
|
2284
|
+
*/
|
|
2285
|
+
export function executeClose(
|
|
2286
|
+
plan: ClosePlan,
|
|
2287
|
+
runners: CloseRunners,
|
|
2288
|
+
context: ExecuteCloseContext,
|
|
2289
|
+
): string[] {
|
|
2290
|
+
const executed: string[] = [];
|
|
2291
|
+
// The leftover files the `Blocked` comment names (T-31 rounds 2 and 4). That path opens no pull
|
|
2292
|
+
// request to mark, so the comment is the only channel a person ever sees them through. Two sources,
|
|
2293
|
+
// never both: the scope check's own verdict when it ran, and the `leftoverFiles` probe when the
|
|
2294
|
+
// divert happened before it (a session-level failure, or `board-check`).
|
|
2295
|
+
let humanReviewFiles: readonly string[] = [];
|
|
2296
|
+
let forbiddenFiles: readonly string[] = [];
|
|
2297
|
+
// Whether anything has classified this attempt's tree yet. Keyed on the CLASSIFICATION rather than
|
|
2298
|
+
// on the plan shape, so no future step ordering can reintroduce a divert that records nothing.
|
|
2299
|
+
let classified = false;
|
|
2300
|
+
|
|
2301
|
+
/**
|
|
2302
|
+
* Runs one mechanical runner, turning a THROW into an ordinary failure result. A `git`, `gh` or
|
|
2303
|
+
* `pnpm` shell-out that blows up (binary missing, ENOENT on the slot, a JSON parse of empty
|
|
2304
|
+
* output) would otherwise escape `executeClose` entirely and skip the save-before-release path —
|
|
2305
|
+
* the one thing design.md decision (k) forbids. The slot stays held and the work stays unsaved.
|
|
2306
|
+
*/
|
|
2307
|
+
const attempt = (label: string, run: () => MechanicalStepResult): MechanicalStepResult => {
|
|
2308
|
+
try {
|
|
2309
|
+
return run();
|
|
2310
|
+
} catch (error) {
|
|
2311
|
+
return { ok: false, reason: `${label}-crashed`, question: String(error) };
|
|
2312
|
+
}
|
|
2313
|
+
};
|
|
2314
|
+
|
|
2315
|
+
const divert = (
|
|
2316
|
+
reason: string,
|
|
2317
|
+
question: string | undefined,
|
|
2318
|
+
compareUrl: string | undefined,
|
|
2319
|
+
): void => {
|
|
2320
|
+
// Asked BEFORE `saveWork`, whose WIP commit is what moves the working tree — and only when
|
|
2321
|
+
// nothing has classified the tree yet: re-reading git after a step failed would report a
|
|
2322
|
+
// DIFFERENT file set (`mirrorRegen` may have written the mirror by then), the recomputation
|
|
2323
|
+
// design.md decision 8 forbids for the PR mark.
|
|
2324
|
+
if (!classified) {
|
|
2325
|
+
classified = true;
|
|
2326
|
+
try {
|
|
2327
|
+
({ humanReviewFiles, forbiddenFiles } = runners.leftoverFiles());
|
|
2328
|
+
} catch (error) {
|
|
2329
|
+
console.error('close.ts: leftoverFiles threw; blocking with no leftover record:', error);
|
|
2330
|
+
}
|
|
2331
|
+
}
|
|
2332
|
+
// A throwing `saveWork` is treated as a FAILED push: the slot is kept for the recovery retry
|
|
2333
|
+
// rather than released over work that may never have been committed.
|
|
2334
|
+
let pushSucceeded: boolean;
|
|
2335
|
+
try {
|
|
2336
|
+
({ pushSucceeded } = runners.saveWork());
|
|
2337
|
+
} catch (error) {
|
|
2338
|
+
console.error('close.ts: saveWork threw; keeping the slot for recovery:', error);
|
|
2339
|
+
pushSucceeded = false;
|
|
2340
|
+
}
|
|
2341
|
+
executed.push('saveWork');
|
|
2342
|
+
|
|
2343
|
+
const details = buildBlockDetails({
|
|
2344
|
+
reason,
|
|
2345
|
+
question,
|
|
2346
|
+
compareUrl,
|
|
2347
|
+
branch: context.branch,
|
|
2348
|
+
logPath: context.logPath,
|
|
2349
|
+
attempt: context.attempt,
|
|
2350
|
+
maxAttempts: context.maxAttempts ?? DEFAULT_DISPATCH_LIMITS.maxAttempts,
|
|
2351
|
+
humanReviewFiles,
|
|
2352
|
+
forbiddenFiles,
|
|
2353
|
+
});
|
|
2354
|
+
|
|
2355
|
+
if (pushSucceeded) {
|
|
2356
|
+
runners.block(details);
|
|
2357
|
+
executed.push('block');
|
|
2358
|
+
runners.releaseSlot();
|
|
2359
|
+
executed.push('releaseSlot');
|
|
2360
|
+
} else {
|
|
2361
|
+
runners.blockKeepSlot(details);
|
|
2362
|
+
executed.push('blockKeepSlot');
|
|
2363
|
+
}
|
|
2364
|
+
};
|
|
2365
|
+
|
|
2366
|
+
for (let index = 0; index < plan.length; index += 1) {
|
|
2367
|
+
const step = plan[index];
|
|
2368
|
+
switch (step.kind) {
|
|
2369
|
+
case 'board-check': {
|
|
2370
|
+
const result = attempt('board-check', runners.boardCheck);
|
|
2371
|
+
executed.push('boardCheck');
|
|
2372
|
+
if (!result.ok) {
|
|
2373
|
+
divert(result.reason ?? 'board-check-failed', result.question, undefined);
|
|
2374
|
+
return executed;
|
|
2375
|
+
}
|
|
2376
|
+
break;
|
|
2377
|
+
}
|
|
2378
|
+
case 'scope-check': {
|
|
2379
|
+
// Typed against the runner directly, not through `attempt`'s `MechanicalStepResult`: the
|
|
2380
|
+
// soft-list field is exactly what a widened type erases. A THROW is still an ordinary
|
|
2381
|
+
// failure, with nothing admitted.
|
|
2382
|
+
let result: ScopeCheckStepResult;
|
|
2383
|
+
try {
|
|
2384
|
+
result = runners.scopeCheck();
|
|
2385
|
+
} catch (error) {
|
|
2386
|
+
result = {
|
|
2387
|
+
ok: false,
|
|
2388
|
+
reason: 'scope-check-crashed',
|
|
2389
|
+
question: String(error),
|
|
2390
|
+
humanReviewFiles: [],
|
|
2391
|
+
};
|
|
2392
|
+
}
|
|
2393
|
+
executed.push('scopeCheck');
|
|
2394
|
+
if (!result.ok) {
|
|
2395
|
+
// The verdict already names its violating files in `question`, so this divert has its
|
|
2396
|
+
// record: nothing left to probe for.
|
|
2397
|
+
classified = true;
|
|
2398
|
+
divert(result.reason ?? 'scope-check-failed', result.question, undefined);
|
|
2399
|
+
return executed;
|
|
2400
|
+
}
|
|
2401
|
+
humanReviewFiles = result.humanReviewFiles;
|
|
2402
|
+
classified = true;
|
|
2403
|
+
break;
|
|
2404
|
+
}
|
|
2405
|
+
case 'format-lint-test': {
|
|
2406
|
+
const result = attempt('format-lint-test', runners.formatLintTest);
|
|
2407
|
+
executed.push('formatLintTest');
|
|
2408
|
+
if (!result.ok) {
|
|
2409
|
+
divert(result.reason ?? 'format-lint-test-failed', result.question, undefined);
|
|
2410
|
+
return executed;
|
|
2411
|
+
}
|
|
2412
|
+
break;
|
|
2413
|
+
}
|
|
2414
|
+
case 'mirror-regen': {
|
|
2415
|
+
const result = attempt('mirror-regen', runners.mirrorRegen);
|
|
2416
|
+
executed.push('mirrorRegen');
|
|
2417
|
+
if (!result.ok) {
|
|
2418
|
+
divert(result.reason ?? 'mirror-regen-failed', result.question, undefined);
|
|
2419
|
+
return executed;
|
|
2420
|
+
}
|
|
2421
|
+
break;
|
|
2422
|
+
}
|
|
2423
|
+
case 'reviewer': {
|
|
2424
|
+
const result = attempt('reviewer', runners.reviewer);
|
|
2425
|
+
executed.push('reviewer');
|
|
2426
|
+
if (!result.ok) {
|
|
2427
|
+
divert(result.reason ?? 'reviewer-rejected', result.question, undefined);
|
|
2428
|
+
return executed;
|
|
2429
|
+
}
|
|
2430
|
+
break;
|
|
2431
|
+
}
|
|
2432
|
+
case 'ac-check': {
|
|
2433
|
+
const result = attempt('ac-check', runners.acCheck);
|
|
2434
|
+
executed.push('acCheck');
|
|
2435
|
+
if (!result.ok) {
|
|
2436
|
+
divert(result.reason ?? 'ac-check-failed', result.question, undefined);
|
|
2437
|
+
return executed;
|
|
2438
|
+
}
|
|
2439
|
+
break;
|
|
2440
|
+
}
|
|
2441
|
+
case 'open-pr': {
|
|
2442
|
+
const result = attempt('open-pr', runners.openPr) as OpenPrResult;
|
|
2443
|
+
executed.push('openPr');
|
|
2444
|
+
if (!result.ok) {
|
|
2445
|
+
divert(result.reason ?? 'open-pr-failed', result.question, result.compareUrl);
|
|
2446
|
+
return executed;
|
|
2447
|
+
}
|
|
2448
|
+
break;
|
|
2449
|
+
}
|
|
2450
|
+
case 'release-slot':
|
|
2451
|
+
runners.releaseSlot();
|
|
2452
|
+
executed.push('releaseSlot');
|
|
2453
|
+
break;
|
|
2454
|
+
case 'recompute-parent':
|
|
2455
|
+
runners.recomputeParent();
|
|
2456
|
+
executed.push('recomputeParent');
|
|
2457
|
+
break;
|
|
2458
|
+
case 'drain':
|
|
2459
|
+
runners.drain();
|
|
2460
|
+
executed.push('drain');
|
|
2461
|
+
break;
|
|
2462
|
+
case 'save-work': {
|
|
2463
|
+
// The plan already starts here: a session-level failure (needs-guidance, timeout, budget,
|
|
2464
|
+
// crash) with no mechanical step attempted. The failure's reason/question travel in the
|
|
2465
|
+
// block/block-keep-slot step the caller's planClose call already built right after this
|
|
2466
|
+
// one — peek it, then let `divert` recompute authoritative details from the REAL push
|
|
2467
|
+
// result (which may differ from what the caller assumed when it built this plan).
|
|
2468
|
+
//
|
|
2469
|
+
// No `scope-check` step ran on this plan — `needs-guidance`, a timeout, an exhausted budget
|
|
2470
|
+
// and a crash are the most common non-green outcomes there are — so `divert` is the one that
|
|
2471
|
+
// probes the slot for the record. The tree they leave behind is pushed to `task/<id>` by
|
|
2472
|
+
// `saveWork` and restored into the slot by the retry, so "a failed close names the leftover
|
|
2473
|
+
// files in the `Blocked` comment instead" has to hold here or it holds almost nowhere
|
|
2474
|
+
// (design.md decision 8, its Risks entry, and the skill all promise it unconditionally).
|
|
2475
|
+
const failureContext = peekFailureContext(plan[index + 1]);
|
|
2476
|
+
divert(
|
|
2477
|
+
failureContext?.reason ?? 'session-failed',
|
|
2478
|
+
failureContext?.question,
|
|
2479
|
+
failureContext?.compareUrl,
|
|
2480
|
+
);
|
|
2481
|
+
return executed;
|
|
2482
|
+
}
|
|
2483
|
+
case 'block':
|
|
2484
|
+
// `planClose` never produces this reached directly — `divert` always precedes it with
|
|
2485
|
+
// `save-work` and handles it itself. `checkBranchNotMerged` (T-8 point 4) is the one
|
|
2486
|
+
// producer that DOES start a plan directly at a block step (`block-keep-slot`, never this
|
|
2487
|
+
// one, since it never pushes); this case exists so the executor stays correct for either
|
|
2488
|
+
// shape rather than silently doing nothing for a plan it does not recognise.
|
|
2489
|
+
runners.block(step.details);
|
|
2490
|
+
executed.push('block');
|
|
2491
|
+
break;
|
|
2492
|
+
case 'block-keep-slot':
|
|
2493
|
+
runners.blockKeepSlot(step.details);
|
|
2494
|
+
executed.push('blockKeepSlot');
|
|
2495
|
+
break;
|
|
2496
|
+
}
|
|
2497
|
+
}
|
|
2498
|
+
return executed;
|
|
2499
|
+
}
|