@aurorajs.dev/catalyst-cli 1.0.1 → 1.1.3
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.d.ts +3 -0
- package/dist/commands/generate/index.js +72 -4
- package/dist/commands/origin/review.js +7 -87
- 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 +4 -3
- package/dist/generator/domain/display-field.js +11 -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 +44 -16
- 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 +68 -5
- package/dist/generator/domain/property-filters.js +97 -12
- package/dist/generator/domain/property-mappers.d.ts +67 -5
- package/dist/generator/domain/property-mappers.js +143 -59
- 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 +55 -16
- package/dist/generator/domain/property-predicates.js +56 -17
- package/dist/generator/domain/property-validators.d.ts +20 -0
- package/dist/generator/domain/property-validators.js +66 -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 +103 -0
- package/dist/generator/domain/relations-builder.js +413 -0
- package/dist/generator/domain/schema-loader.js +65 -2
- 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 +330 -23
- package/dist/generator/engine/code-writer/code-writer.js +959 -141
- 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 +45 -0
- package/dist/generator/handlers/back.handler.js +252 -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/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/queue-manager.js +2 -3
- package/dist/generator/utils/code-gen.d.ts +9 -2
- package/dist/generator/utils/code-gen.js +72 -26
- 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 +248 -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/origin/interactive/review-mode.d.ts +25 -0
- package/dist/origin/interactive/review-mode.js +22 -0
- package/dist/origin/interactive/review-session.d.ts +36 -0
- package/dist/origin/interactive/review-session.js +123 -0
- 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 +144 -2
- package/dist/sheets/domain/types.js +249 -12
- package/dist/sheets/sync/diff-engine.js +62 -5
- package/dist/sheets/sync/sheet-to-yaml.d.ts +20 -0
- package/dist/sheets/sync/sheet-to-yaml.js +139 -51
- package/dist/sheets/sync/yaml-to-sheet.d.ts +62 -0
- package/dist/sheets/sync/yaml-to-sheet.js +271 -29
- package/dist/sheets/transformers/property-transformer.js +60 -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 +15 -6
- package/dist/templates/backend/application/.claude/skills/catalyst-cross-bounded-context-ports/SKILL.md +39 -9
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/SKILL.md +68 -48
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/references/field-schema-and-decorators.md +38 -20
- package/dist/templates/backend/application/.claude/skills/catalyst-field-schema/references/query-statement.md +194 -201
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/SKILL.md +62 -60
- package/dist/templates/backend/application/.claude/skills/catalyst-handler-composer/references/additional-apis-workflow.md +4 -4
- 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 +3 -3
- 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 +34 -19
- package/dist/templates/backend/application/.claude/skills/catalyst-nestjs-primitives/SKILL.md +6 -4
- 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 +167 -246
- package/dist/templates/backend/application/.claude/skills/catalyst-provider-composition/SKILL.md +260 -0
- package/dist/templates/backend/application/.claude/skills/catalyst-schema-migrations/SKILL.md +215 -0
- package/dist/templates/backend/application/.claude/skills/catalyst-tools/SKILL.md +266 -0
- package/dist/templates/backend/application/CLAUDE.md +5 -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/eslint.config.mjs +54 -0
- package/dist/templates/backend/application/nest-cli.json +5 -0
- package/dist/templates/backend/application/package.json +25 -10
- 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/iam/permissions-without-role.ts +177 -0
- package/dist/templates/backend/application/src/@aurora/core.module.ts +50 -30
- package/dist/templates/backend/application/src/@aurora/decorators/auth.decorator.ts +1 -4
- package/dist/templates/backend/application/src/@aurora/modules/authentication/authentication.module.ts +7 -2
- package/dist/templates/backend/application/src/@aurora/modules/authentication/domain/anonymous-account.ts +1 -0
- 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 +29 -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 +2 -0
- 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/index.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/factory/authentication-strategy.factory.ts +6 -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/strategies/aurora-hub/aurora-hub-consumer.adapter.ts +17 -5
- 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/local-provider/anonymous-account-loader.adapter.spec.ts +1 -1
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/jwt-signer.adapter.spec.ts +219 -22
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/jwt-signer.adapter.ts +60 -10
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/local-provider.adapter.spec.ts +156 -0
- package/dist/templates/backend/application/src/@aurora/modules/authentication/infrastructure/strategies/local-provider/local-provider.adapter.ts +28 -3
- package/dist/templates/backend/application/src/@aurora/modules/criteria/criteria-config.module.ts +15 -8
- package/dist/templates/backend/application/src/@aurora/modules/graphql/core.graphql +197 -252
- 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 +112 -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 +4 -0
- package/dist/templates/backend/application/src/@aurora/modules/mailer/index.ts +1 -0
- package/dist/templates/backend/application/src/@aurora/modules/mailer/mailer-client.module.ts +2 -2
- package/dist/templates/backend/application/src/@aurora/modules/mailer/mailer-smtp-transport.service.ts +4 -2
- 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 +120 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/report-engine.module.ts +106 -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 +448 -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 +179 -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 +156 -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 +288 -0
- package/dist/templates/backend/application/src/@aurora/modules/report-engine/result-modes/server-mode.ts +254 -0
- package/dist/templates/backend/application/src/@aurora/services/index.ts +0 -1
- package/dist/templates/backend/application/src/@aurora/shared.module.ts +11 -9
- package/dist/templates/backend/application/src/@bridges/bridges.module.ts +39 -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 +89 -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 +68 -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 +251 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-drizzle-schema.ts +353 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-field-schemas.spec.ts +94 -0
- package/dist/templates/backend/application/src/@config/drizzle/aurora-field-schemas.ts +182 -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 +152 -0
- package/dist/templates/backend/application/src/@config/drizzle/drizzle-migrations.module.ts +84 -0
- package/dist/templates/backend/application/src/@config/drizzle/index.ts +3 -0
- package/dist/templates/backend/application/src/@config/index.ts +4 -0
- 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/mailer-transport.module.ts +4 -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.module.ts +35 -3
- 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/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/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 +13 -6
- package/dist/templates/backend/application/test/app.e2e-spec.ts +18 -0
- package/dist/templates/backend/application/test/jest-e2e.json +3 -0
- package/dist/templates/backend/application/test/jest-global-setup.ts +15 -0
- package/dist/templates/backend/application/test/mocks/uuid.mock.ts +4 -1
- package/dist/templates/backend/application/tsconfig.json +7 -17
- package/dist/templates/backend/env/.env +1 -1
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/authorization-code.module.ts +2 -2
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/controllers/auth.controller.spec.ts +6 -8
- package/dist/templates/backend/packages/authorization-code/src/@api/authorization-code/controllers/auth.controller.ts +1 -2
- 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 +1 -3
- 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 +114 -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 +58 -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 +75 -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 +222 -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 +504 -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 +390 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/delete/hub-delete-app-by-id.handler.ts +159 -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 +99 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app-by-id.handler.ts +32 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app-by-id.service.ts +20 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.handler.spec.ts +110 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.handler.ts +39 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/find/hub-find-app.service.ts +25 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.handler.spec.ts +275 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.handler.ts +80 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/get/hub-get-apps.service.ts +25 -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 +116 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/paginate/hub-paginate-apps.handler.ts +34 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/paginate/hub-paginate-apps.service.ts +25 -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 +355 -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 +193 -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 +255 -0
- package/dist/templates/backend/packages/hub/src/@app/hub/app/application/update/hub-update-app-by-id.handler.ts +78 -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-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 +2 -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 +27 -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 +40 -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 +33 -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 +29 -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 +25 -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 +25 -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 +25 -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 +21 -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 +297 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-app-deprovisioning.e2e-spec.ts +488 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-app-provisioning.e2e-spec.ts +366 -0
- package/dist/templates/backend/packages/hub/test/acceptance/hub/hub-per-app-access.e2e-spec.ts +672 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-check-password-me-account.controller.ts +1 -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 +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-delete-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-delete-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-find-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-find-account.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-get-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-me-account.controller.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-paginate-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-paginate-with-tenant-constraint-accounts.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-account-by-id.controller.ts +9 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-accounts.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/controllers/iam-update-me-account.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-account.dto.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-create-account.dto.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-update-account-by-id.dto.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@api/iam/account/dto/iam-update-accounts.dto.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@api/iam/account/graphql/iam-account.graphql +41 -39
- package/dist/templates/backend/packages/iam/src/@api/iam/account/index.ts +6 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-check-password-me-account.resolver.ts +1 -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 +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-delete-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-delete-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-find-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-find-account.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-get-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-me-account.resolver.ts +2 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-paginate-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-paginate-with-tenant-constraint-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-account-by-id.resolver.ts +9 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/account/resolvers/iam-update-me-account.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-delete-bounded-context-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-delete-bounded-contexts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-find-bounded-context-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-find-bounded-context.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-get-bounded-contexts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-paginate-bounded-contexts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-update-bounded-context-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/controllers/iam-update-bounded-contexts.controller.ts +1 -2
- 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/resolvers/iam-delete-bounded-context-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-delete-bounded-contexts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-find-bounded-context-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-find-bounded-context.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-get-bounded-contexts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-paginate-bounded-contexts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-update-bounded-context-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/bounded-context/resolvers/iam-update-bounded-contexts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/iam-bootstrap.seeder.spec.ts +24 -0
- package/dist/templates/backend/packages/iam/src/@api/iam/iam-bootstrap.seeder.ts +22 -13
- package/dist/templates/backend/packages/iam/src/@api/iam/iam.module.ts +27 -7
- package/dist/templates/backend/packages/iam/src/@api/iam/iam.seeder.ts +4 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-delete-permission-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-delete-permissions.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-find-permission-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-find-permission.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-get-permissions.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-paginate-permissions.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-update-permission-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/controllers/iam-update-permissions.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/graphql/iam-permission.graphql +27 -15
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-delete-permission-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-delete-permissions.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-find-permission-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-find-permission.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-get-permissions.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-paginate-permissions.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-update-permission-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission/resolvers/iam-update-permissions.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-delete-permission-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-delete-permissions-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-find-permission-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-find-permission-role.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-get-permissions-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-paginate-permissions-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-update-permission-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/controllers/iam-update-permissions-roles.controller.ts +1 -2
- 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/resolvers/iam-delete-permission-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-delete-permissions-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-find-permission-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-find-permission-role.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-get-permissions-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-paginate-permissions-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-update-permission-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/permission-role/resolvers/iam-update-permissions-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-delete-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-delete-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-find-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-find-role.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-get-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-inherit-permissions-role-role.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-paginate-roles.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-update-role-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/controllers/iam-update-roles.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/graphql/iam-role.graphql +28 -19
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-delete-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-delete-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-find-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-find-role.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-get-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-inherit-permissions-role-role.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-paginate-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-update-role-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role/resolvers/iam-update-roles.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-delete-role-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-delete-roles-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-find-role-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-find-role-account.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-get-roles-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-paginate-roles-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-update-role-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/controllers/iam-update-roles-accounts.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/graphql/iam-role-account.graphql +29 -9
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-delete-role-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-delete-roles-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-find-role-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-find-role-account.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-get-roles-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-paginate-roles-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-update-role-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/role-account/resolvers/iam-update-roles-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-delete-tag-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-find-tag-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-find-tag.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-get-tags.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-paginate-tags.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/controllers/iam-update-tag-by-id.controller.ts +1 -2
- 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/resolvers/iam-delete-tag-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-find-tag-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-find-tag.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-get-tags.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-paginate-tags.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tag/resolvers/iam-update-tag-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-delete-tenant-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-delete-tenants.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-find-tenant-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-find-tenant.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-get-tenants.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-get-with-tenant-constraint-tenants.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-paginate-tenants.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-paginate-with-tenant-constraint-tenants.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-update-tenant-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/controllers/iam-update-tenants.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/graphql/iam-tenant.graphql +33 -18
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-delete-tenant-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-delete-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-find-tenant-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-find-tenant.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-get-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-get-with-tenant-constraint-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-paginate-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-paginate-with-tenant-constraint-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-update-tenant-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant/resolvers/iam-update-tenants.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-delete-tenant-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-delete-tenants-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-find-tenant-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-find-tenant-account.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-get-tenants-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-paginate-tenants-accounts.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-update-tenant-account-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/controllers/iam-update-tenants-accounts.controller.ts +1 -2
- 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/resolvers/iam-delete-tenant-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-delete-tenants-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-find-tenant-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-find-tenant-account.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-get-tenants-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-paginate-tenants-accounts.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-update-tenant-account-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/tenant-account/resolvers/iam-update-tenants-accounts.resolver.ts +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-delete-users.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-find-user-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-find-user.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-forgot-password-user.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-get-users.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-paginate-users.controller.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-reset-password-user.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-update-user-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/controllers/iam-update-users.controller.ts +1 -2
- 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 +6 -0
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-delete-users.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-find-user-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-find-user.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-forgot-password-user.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-get-users.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-paginate-users.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-reset-password-user.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-update-user-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@api/iam/user/resolvers/iam-update-users.resolver.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/check-password-me/iam-check-password-me-account.handler.ts +3 -5
- 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 +4 -1
- 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 +4 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/count/iam-count-account.handler.ts +1 -2
- 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 +41 -18
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/create/iam-create-account.handler.ts +23 -11
- 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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/find/iam-find-account.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/get/iam-get-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/get/iam-get-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/me/iam-me-account.handler.ts +1 -1
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate/iam-paginate-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate/iam-paginate-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/paginate-with-tenant-constraint/iam-paginate-with-tenant-constraint-accounts.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-account-by-id.handler.spec.ts +94 -13
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-account-by-id.handler.ts +60 -18
- 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 +216 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/account/application/update/iam-update-accounts.handler.ts +87 -4
- 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-me/iam-update-me-account.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/account/domain/iam-account.field-schema.ts +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/account/index.ts +39 -37
- 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 +45 -0
- 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.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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/find/iam-find-bounded-context.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/get/iam-get-bounded-contexts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/get/iam-get-bounded-contexts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/paginate/iam-paginate-bounded-contexts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/paginate/iam-paginate-bounded-contexts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/application/update/iam-update-bounded-context-by-id.handler.ts +7 -3
- 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 +1 -2
- 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 +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/bounded-context/index.ts +32 -32
- 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 +30 -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 +20 -47
- 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.service.ts +4 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/delete/iam-delete-permission-by-id.handler.ts +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/find/iam-find-permission.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get/iam-get-permissions.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/get/iam-get-permissions.service.ts +3 -4
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/paginate/iam-paginate-permissions.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/application/update/iam-update-permission-by-id.handler.ts +7 -3
- 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 +1 -2
- 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 +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/permission/index.ts +34 -32
- 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.service.ts +6 -6
- 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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/find/iam-find-permission-role.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/get/iam-get-permissions-roles.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/get/iam-get-permissions-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/paginate/iam-paginate-permissions-roles.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/paginate/iam-paginate-permissions-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/permission-role/application/update/iam-update-permission-role-by-id.handler.ts +7 -3
- 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 +1 -2
- 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/index.ts +32 -32
- 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.service.ts +4 -3
- 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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/find/iam-find-role.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/get/iam-get-roles.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/get/iam-get-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/inherit-permissions-role/iam-inherit-permissions-role-role.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/paginate/iam-paginate-roles.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/paginate/iam-paginate-roles.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role/application/update/iam-update-role-by-id.handler.ts +7 -3
- 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 +1 -2
- 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 +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/role/index.ts +33 -33
- 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 +30 -0
- 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.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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/find/iam-find-role-account.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/get/iam-get-roles-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/get/iam-get-roles-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/paginate/iam-paginate-roles-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/paginate/iam-paginate-roles-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/role-account/application/update/iam-update-role-account-by-id.handler.ts +7 -3
- 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 +1 -2
- 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/index.ts +32 -32
- 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/iam-bootstrap.constants.ts +20 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/shared/index.ts +1 -0
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag-by-id.service.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/find/iam-find-tag.service.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/get/iam-get-tags.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/get/iam-get-tags.service.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/paginate/iam-paginate-tags.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/paginate/iam-paginate-tags.service.ts +6 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tag/application/update/iam-update-tag-by-id.handler.ts +7 -4
- 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/index.ts +22 -22
- 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.service.ts +4 -3
- 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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/find/iam-find-tenant.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get/iam-get-tenants.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get/iam-get-tenants.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/get-with-tenant-constraint/iam-get-with-tenant-constraint-tenants.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate/iam-paginate-tenants.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate/iam-paginate-tenants.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/paginate-with-tenant-constraint/iam-paginate-with-tenant-constraint-tenants.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/application/update/iam-update-tenant-by-id.handler.ts +7 -3
- 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.ts +1 -2
- 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 +3 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/index.ts +34 -34
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/drizzle/iam-drizzle-tenant.repository.ts +102 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant/infrastructure/drizzle/iam-drizzle-tenant.schema.ts +32 -0
- 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.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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/find/iam-find-tenant-account.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/get/iam-get-tenants-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/get/iam-get-tenants-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/paginate/iam-paginate-tenants-accounts.handler.ts +1 -2
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/paginate/iam-paginate-tenants-accounts.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/tenant-account/application/update/iam-update-tenant-account-by-id.handler.ts +7 -3
- 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.ts +1 -2
- 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/index.ts +32 -32
- 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.service.ts +4 -3
- 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 +3 -3
- 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 +3 -3
- 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 +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user-by-username-password.service.spec.ts +20 -11
- 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 +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/find/iam-find-user.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/forgot-password/iam-forgot-password-user.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/get/iam-get-users.handler.ts +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/get/iam-get-users.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/paginate/iam-paginate-users.handler.ts +2 -3
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/paginate/iam-paginate-users.service.ts +3 -4
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/reset-password/iam-reset-password-user.handler.ts +3 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/application/update/iam-update-user-by-id.handler.ts +7 -3
- 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 +3 -3
- 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 +45 -0
- package/dist/templates/backend/packages/iam/src/@app/iam/user/domain/iam-user.field-schema.ts +5 -5
- package/dist/templates/backend/packages/iam/src/@app/iam/user/index.ts +45 -38
- 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 +522 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-loader.adapter.ts +112 -18
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-provisioner.adapter.spec.ts +261 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/account/adapters/iam-account-provisioner.adapter.ts +115 -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 +81 -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 +1 -1
- package/dist/templates/backend/packages/iam/src/@bridges/iam/bounded-context/adapters/iam-bounded-context-writer.adapter.spec.ts +155 -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 +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/client/index.ts +1 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/permission/adapters/iam-permission-seeder.adapter.ts +1 -1
- 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 +2 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/adapters/iam-tenant-writer.adapter.spec.ts +169 -0
- package/dist/templates/backend/packages/iam/src/@bridges/iam/tenant/adapters/iam-tenant-writer.adapter.ts +57 -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 +1 -1
- 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 +304 -0
- package/dist/templates/backend/packages/iam/test/acceptance/iam/user-sensitive-fields-masking.e2e-spec.ts +297 -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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-find-access-token-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-find-access-token.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-get-access-tokens.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/controllers/o-auth-paginate-access-tokens.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-access-token.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-create-access-token.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-update-access-token-by-id.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/dto/o-auth-update-access-tokens.dto.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/graphql/o-auth-access-token.graphql +28 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/index.ts +6 -0
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-find-access-token-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-find-access-token.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-get-access-tokens.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/access-token/resolvers/o-auth-paginate-access-tokens.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-delete-application-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-find-application-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-find-application.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-get-applications.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-paginate-applications.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/controllers/o-auth-update-application-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/dto/o-auth-application.dto.ts +1 -1
- 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 +14 -14
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-delete-application-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-find-application-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-find-application.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-get-applications.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-paginate-applications.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application/resolvers/o-auth-update-application-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-delete-application-client-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-delete-applications-clients.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-find-application-client-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-find-application-client.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-get-applications-clients.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-paginate-applications-clients.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/controllers/o-auth-update-application-client-by-id.controller.ts +1 -2
- 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/resolvers/o-auth-delete-application-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-delete-applications-clients.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-find-application-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-find-application-client.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-get-applications-clients.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-paginate-applications-clients.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/application-client/resolvers/o-auth-update-application-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-delete-authorization-code-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-delete-authorization-codes.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-find-authorization-code-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-find-authorization-code.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-get-authorization-codes.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-paginate-authorization-codes.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/controllers/o-auth-update-authorization-code-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/graphql/o-auth-authorization-code.graphql +26 -17
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-delete-authorization-code-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-delete-authorization-codes.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-find-authorization-code-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-find-authorization-code.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-get-authorization-codes.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-paginate-authorization-codes.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/authorization-code/resolvers/o-auth-update-authorization-code-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-delete-client-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-find-client-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-find-client.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-get-clients.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-paginate-clients.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/controllers/o-auth-update-client-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-client.dto.ts +0 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-create-client.dto.ts +0 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-update-client-by-id.dto.ts +0 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/dto/o-auth-update-clients.dto.ts +0 -7
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/graphql/o-auth-client.graphql +25 -23
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-delete-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-find-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-find-client.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-get-clients.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-paginate-clients.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/client/resolvers/o-auth-update-client-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-find-credential-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-find-credential.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-get-credentials.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/controllers/o-auth-paginate-credentials.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/dto/o-auth-credential.dto.ts +16 -2
- 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/resolvers/o-auth-find-credential-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-find-credential.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-get-credentials.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/credential/resolvers/o-auth-paginate-credentials.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-authorize.controller.spec.ts +22 -15
- 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 +72 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-create-token.controller.spec.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-create-token.controller.ts +2 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-get-jwks.controller.spec.ts +1 -4
- 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 +38 -12
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-logout.controller.ts +2 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/controllers/o-auth-session.controller.spec.ts +1 -1
- 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 +10 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-impersonate-token.resolver.ts +88 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-token.resolver.spec.ts +3 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-create-token.resolver.ts +4 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-revoke-token.resolver.spec.ts +2 -0
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/flows/resolvers/o-auth-revoke-token.resolver.ts +3 -1
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth-bootstrap.seeder.spec.ts +98 -29
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth-bootstrap.seeder.ts +34 -19
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth.module.ts +6 -6
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/o-auth.seeder.ts +16 -5
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-delete-refresh-token-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-find-refresh-token-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-find-refresh-token.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-get-refresh-tokens.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/controllers/o-auth-paginate-refresh-tokens.controller.ts +3 -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 +1 -1
- 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/resolvers/o-auth-delete-refresh-token-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-find-refresh-token-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-find-refresh-token.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-get-refresh-tokens.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/refresh-token/resolvers/o-auth-paginate-refresh-tokens.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-delete-scope-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-find-scope-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-find-scope.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-get-scopes.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-paginate-scopes.controller.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/controllers/o-auth-update-scope-by-id.controller.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/graphql/o-auth-scope.graphql +25 -13
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-delete-scope-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-find-scope-by-id.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-find-scope.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-get-scopes.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-paginate-scopes.resolver.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@api/o-auth/scope/resolvers/o-auth-update-scope-by-id.resolver.ts +1 -2
- 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.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 +3 -6
- 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 +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token-by-id.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/find/o-auth-find-access-token.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/get/o-auth-get-access-tokens.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/get/o-auth-get-access-tokens.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/paginate/o-auth-paginate-access-tokens.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/application/paginate/o-auth-paginate-access-tokens.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/domain/o-auth-access-token.field-schema.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/access-token/index.ts +30 -24
- 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.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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-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.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/find/o-auth-find-application.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/get/o-auth-get-applications.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/get/o-auth-get-applications.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/paginate/o-auth-paginate-applications.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/application/paginate/o-auth-paginate-applications.service.ts +3 -4
- 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 +7 -3
- 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/o-auth-application.field-schema.spec.ts +28 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/domain/o-auth-application.field-schema.ts +5 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application/index.ts +26 -26
- 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 +29 -0
- 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.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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/find/o-auth-find-application-client.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/get/o-auth-get-applications-clients.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/get/o-auth-get-applications-clients.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/paginate/o-auth-paginate-applications-clients.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/paginate/o-auth-paginate-applications-clients.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/application-client/application/update/o-auth-update-application-client-by-id.handler.ts +7 -3
- 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/index.ts +30 -30
- 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.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 +1 -2
- 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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code-by-id.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/find/o-auth-find-authorization-code.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/get/o-auth-get-authorization-codes.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/get/o-auth-get-authorization-codes.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/paginate/o-auth-paginate-authorization-codes.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/paginate/o-auth-paginate-authorization-codes.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/application/update/o-auth-update-authorization-code-by-id.handler.ts +7 -3
- 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/o-auth-authorization-code.field-schema.ts +4 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/authorization-code/index.ts +28 -28
- 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.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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-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.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/find/o-auth-find-client.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/get/o-auth-get-clients.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/get/o-auth-get-clients.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/paginate/o-auth-paginate-clients.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/paginate/o-auth-paginate-clients.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/application/update/o-auth-update-client-by-id.handler.ts +9 -3
- 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/o-auth-client.field-schema.ts +3 -10
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/client/index.ts +26 -26
- 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 +60 -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 +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential-by-id.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/find/o-auth-find-credential.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/get/o-auth-get-credentials.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/get/o-auth-get-credentials.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/paginate/o-auth-paginate-credentials.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/application/paginate/o-auth-paginate-credentials.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/domain/o-auth-credential.field-schema.ts +16 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/credential/index.ts +21 -21
- 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 +22 -21
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/authorize/o-auth-authorize.handler.ts +5 -14
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/o-auth-create-token.handler.spec.ts +1 -1
- 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 +34 -18
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-authorization-code.service.ts +18 -10
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-password.service.spec.ts +22 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-password.service.ts +13 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-refresh.service.spec.ts +92 -48
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/create-token/services/o-auth-create-token-refresh.service.ts +43 -28
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/get-jwks/o-auth-get-jwks.handler.ts +3 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/o-auth-create-impersonate-token.handler.spec.ts +350 -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 +228 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/impersonate-token/services/o-auth-create-impersonate-token.service.ts +153 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/services/o-auth-revoke-token.service.spec.ts +126 -31
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/revoke-token/services/o-auth-revoke-token.service.ts +63 -25
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/session/o-auth-hub-session.service.spec.ts +3 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/application/session/o-auth-hub-session.service.ts +2 -0
- 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 +7 -0
- 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/index.ts +26 -18
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/flows/shared/pkce/o-auth-verify-pkce-s256.ts +1 -1
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/index.ts +16 -42
- 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.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 +3 -6
- 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 +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token-by-id.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/find/o-auth-find-refresh-token.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/get/o-auth-get-refresh-tokens.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/get/o-auth-get-refresh-tokens.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/paginate/o-auth-paginate-refresh-tokens.handler.ts +2 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/application/paginate/o-auth-paginate-refresh-tokens.service.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/domain/o-auth-refresh-token.field-schema.ts +6 -5
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/refresh-token/index.ts +23 -23
- 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.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 +1 -2
- 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 +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-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.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/find/o-auth-find-scope.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/get/o-auth-get-scopes.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/get/o-auth-get-scopes.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/paginate/o-auth-paginate-scopes.handler.ts +1 -2
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/paginate/o-auth-paginate-scopes.service.ts +3 -4
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/application/update/o-auth-update-scope-by-id.handler.ts +7 -3
- 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/o-auth-scope.field-schema.ts +3 -3
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/scope/index.ts +26 -26
- 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 +20 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-authenticate-application.function.spec.ts +67 -21
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-authenticate-application.function.ts +29 -14
- 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 +20 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-resolve-application-client.function.spec.ts +24 -14
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/functions/o-auth-resolve-application-client.function.ts +10 -6
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/index.ts +1 -0
- package/dist/templates/backend/packages/o-auth/src/@app/o-auth/shared/services/token-retention.service.spec.ts +67 -77
- 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 +57 -0
- package/dist/templates/backend/packages/o-auth/src/@bridges/o-auth/client/adapters/o-auth-client-reader.adapter.ts +5 -3
- 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 +386 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/masked-property-query-guard.e2e-spec.ts +950 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/oauth-bootstrap-seeder-idempotency.e2e-spec.ts +228 -0
- package/dist/templates/backend/packages/o-auth/test/acceptance/o-auth/token-masking.e2e-spec.ts +247 -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 +105 -0
- package/dist/templates/backend/packages/queue-manager/src/@api/queue-manager/flows/resolvers/queue-manager.resolver.spec.ts +220 -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 +172 -0
- package/dist/templates/backend/packages/queue-manager/src/@app/queue-manager/infrastructure/adapters/bull-board-queue-inspector.adapter.ts +352 -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 +0 -2
- package/dist/templates/codegen/backend/@api/__bounded_context_name__.seeder.ts.eta +4 -4
- 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 +7 -8
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-create-__module_names__.controller.ts.eta +2 -2
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-delete-__module_name__-by-id.controller.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-delete-__module_names__.controller.ts.eta +3 -13
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-find-__module_name__-by-id.controller.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-find-__module_name__.controller.ts.eta +6 -9
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-get-__module_names__.controller.ts.eta +6 -9
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-get-raw-__module_names__.controller.ts.eta +0 -9
- 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 +6 -9
- 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 +6 -9
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-update-__module_names__.controller.ts.eta +3 -13
- package/dist/templates/codegen/backend/@api/__module_name__/controllers/__bounded_context_name__-upsert-__module_name__.controller.ts.eta +2 -11
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-__module_name__.dto.ts.eta +18 -2
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-create-__module_name__.dto.ts.eta +10 -2
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-update-__module_name__-by-id.dto.ts.eta +10 -2
- package/dist/templates/codegen/backend/@api/__module_name__/dto/__bounded_context_name__-update-__module_names__.dto.ts.eta +10 -2
- package/dist/templates/codegen/backend/@api/__module_name__/graphql/__bounded_context_name__-__module_name__.graphql.eta +139 -38
- package/dist/templates/codegen/backend/@api/__module_name__/index.ts.eta +72 -0
- 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 +6 -8
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-create-__module_names__.resolver.ts.eta +2 -2
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-delete-__module_name__-by-id.resolver.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-delete-__module_names__.resolver.ts.eta +1 -11
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-find-__module_name__-by-id.resolver.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-find-__module_name__.resolver.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-get-__module_names__.resolver.ts.eta +4 -7
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-get-raw-__module_names__.resolver.ts.eta +0 -9
- 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 +4 -7
- 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 +6 -9
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-update-__module_names__.resolver.ts.eta +3 -13
- package/dist/templates/codegen/backend/@api/__module_name__/resolvers/__bounded_context_name__-upsert-__module_name__.resolver.ts.eta +2 -11
- 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 +3 -41
- 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 +56 -44
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_name__.service.ts.eta +99 -81
- package/dist/templates/codegen/backend/@app/__module_name__/application/create/__bounded_context_name__-create-__module_names__.handler.ts.eta +46 -4
- 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 +33 -46
- 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 +10 -48
- 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 +18 -36
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__-by-id.service.ts.eta +34 -10
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__.handler.ts.eta +18 -37
- package/dist/templates/codegen/backend/@app/__module_name__/application/find/__bounded_context_name__-find-__module_name__.service.ts.eta +34 -9
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-__module_names__.handler.ts.eta +21 -38
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-__module_names__.service.ts.eta +34 -9
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-raw-__module_names__.handler.ts.eta +14 -39
- package/dist/templates/codegen/backend/@app/__module_name__/application/get/__bounded_context_name__-get-raw-__module_names__.service.ts.eta +4 -6
- 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 +21 -37
- package/dist/templates/codegen/backend/@app/__module_name__/application/paginate/__bounded_context_name__-paginate-__module_names__.service.ts.eta +37 -9
- 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 +73 -59
- 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 +31 -47
- 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 +23 -47
- 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 +38 -2
- package/dist/templates/codegen/backend/@app/__module_name__/index.ts.eta +116 -121
- 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 +9 -13
- package/dist/templates/codegen/backend/additional-@api/__module_name__/resolvers/__additional_api_name__.resolver.ts.eta +9 -13
- package/dist/templates/codegen/backend/additional-@app/__module_name__/application/__additional_api_action__/__additional_api_name__.handler.ts.eta +7 -6
- 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 +231 -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 +159 -52
- 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 +248 -57
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-form-embed.component.ts.eta +181 -59
- package/dist/templates/codegen/frontend/module/__module_name__/features/__module_name__-form.component.ts.eta +230 -114
- 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 +145 -47
- 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 +14 -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 +18 -6
- package/dist/templates/codegen/partials/form/form-body.eta +36 -9
- package/dist/templates/codegen/partials/form/view-frame-tabbed.eta +36 -2
- package/dist/templates/codegen/partials/form/view-frame.eta +40 -2
- package/dist/templates/codegen/partials/i18n-recompute.eta +68 -0
- package/dist/templates/codegen/partials/i18n-validate.eta +51 -0
- package/dist/templates/codegen/partials/relationships/async-multiple-search-select.eta +12 -11
- package/dist/templates/codegen/partials/relationships/async-search-select.eta +12 -11
- 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 +12 -11
- package/dist/templates/codegen/partials/relationships/multiple-select.eta +5 -7
- package/dist/templates/codegen/partials/relationships/search-select.eta +13 -11
- package/dist/templates/codegen/partials/relationships/select.eta +3 -5
- 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 +17 -2
- package/dist/templates/frontend/application/public/i18n/es.json +17 -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 +4 -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/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 +133 -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 +274 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/datetime-picker.component.ts +208 -0
- package/dist/templates/frontend/application/src/@aurora/components/datetime-picker/datetime-picker.stories.ts +121 -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/format-iso-date.spec.ts +50 -0
- package/dist/templates/frontend/application/src/@aurora/lib/format-iso-date.ts +42 -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 +11 -0
- 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/to-wire-date.spec.ts +63 -0
- package/dist/templates/frontend/application/src/@aurora/lib/to-wire-date.ts +70 -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/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 +16 -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 +43 -3
- package/dist/templates/frontend/application/src/environments/environment.local.ts +44 -4
- package/dist/templates/frontend/application/src/environments/environment.prod.ts +43 -3
- package/dist/templates/frontend/application/src/environments/environment.qa.ts +43 -3
- package/dist/templates/frontend/application/src/environments/environment.ts +43 -3
- package/dist/templates/frontend/application/src/environments/environment.type.ts +48 -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 +124 -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 +162 -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 +305 -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 +433 -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 +287 -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 +886 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/account/features/account-form.component.ts +904 -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 +96 -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 +96 -0
- package/dist/templates/frontend/packages/iam/src/app/domains/admin/apps/iam/permission/features/permission-form.component.ts +118 -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 +194 -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 +157 -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 +198 -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 +223 -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 +149 -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 +203 -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 +6 -4
- package/dist/templates/frontend/packages/o-auth/public/i18n/o-auth/es.json +7 -5
- 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 +162 -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 +323 -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 +199 -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 +334 -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/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 +38 -0
- package/dist/templates/monorepo/.claude/agents/jd-fix-agent.md +32 -0
- package/dist/templates/monorepo/.claude/agents/jd-judge-a.md +36 -0
- package/dist/templates/monorepo/.claude/agents/jd-judge-b.md +36 -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 +251 -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 +232 -0
- package/dist/templates/monorepo/.claude/hooks/lint-barrels.ts +317 -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 -2
- 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 +103 -16
- package/dist/templates/monorepo/.claude/skills/REGISTRY.md +59 -26
- 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 +604 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-backlog/frontier-worker-addendum.md +137 -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 +116 -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 +93 -5
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/patterns-workflow.md +24 -0
- package/dist/templates/monorepo/.claude/skills/catalyst-schema/types-reference.md +2 -1
- 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 +16 -12
- 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 +8 -0
- 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 +128 -0
- package/dist/templates/monorepo/.husky/pre-commit +26 -0
- package/dist/templates/monorepo/.mcp.json +7 -0
- package/dist/templates/monorepo/CLAUDE.md +204 -303
- package/dist/templates/monorepo/cliter/business-rules-index.json +11044 -259
- package/dist/templates/monorepo/cliter/harness-rules/barrels.md +294 -0
- package/dist/templates/monorepo/cliter/harness-rules/bridges.md +88 -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-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 +857 -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 +108 -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 +11 -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 +31 -7
- package/dist/templates/monorepo/package.json +14 -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 +1601 -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 +179 -0
- package/dist/templates/monorepo/scripts/backlog/close.test.ts +3358 -0
- package/dist/templates/monorepo/scripts/backlog/close.ts +2066 -0
- package/dist/templates/monorepo/scripts/backlog/contract.test.ts +174 -0
- package/dist/templates/monorepo/scripts/backlog/dev.aurora.backlog-dispatch.plist +76 -0
- package/dist/templates/monorepo/scripts/backlog/dispatch.test.ts +2607 -0
- package/dist/templates/monorepo/scripts/backlog/dispatch.ts +2304 -0
- package/dist/templates/monorepo/scripts/backlog/entry.test.ts +1545 -0
- package/dist/templates/monorepo/scripts/backlog/entry.ts +734 -0
- package/dist/templates/monorepo/scripts/backlog/guards.test.ts +1766 -0
- package/dist/templates/monorepo/scripts/backlog/guards.ts +1234 -0
- package/dist/templates/monorepo/scripts/backlog/lanes/frontier.settings.json +104 -0
- package/dist/templates/monorepo/scripts/backlog/lanes/local.settings.json +44 -0
- package/dist/templates/monorepo/scripts/backlog/lanes.json +28 -0
- package/dist/templates/monorepo/scripts/backlog/launch.test.ts +2750 -0
- package/dist/templates/monorepo/scripts/backlog/launch.ts +1125 -0
- package/dist/templates/monorepo/scripts/backlog/maintenance.test.ts +1965 -0
- package/dist/templates/monorepo/scripts/backlog/maintenance.ts +1185 -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 +247 -0
- package/dist/templates/monorepo/scripts/backlog/render.ts +289 -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 +991 -0
- package/dist/templates/monorepo/scripts/backlog/slots.ts +641 -0
- package/dist/templates/monorepo/scripts/backlog/task-view.test.ts +763 -0
- package/dist/templates/monorepo/scripts/backlog/task-view.ts +444 -0
- package/dist/templates/monorepo/scripts/backlog/types.ts +256 -0
- package/dist/templates/monorepo/scripts/backlog/watch.test.ts +360 -0
- package/dist/templates/monorepo/scripts/backlog/watch.ts +333 -0
- package/dist/templates/monorepo/scripts/backlog/worker-edit.test.ts +469 -0
- package/dist/templates/monorepo/scripts/backlog/worker-edit.ts +464 -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 +872 -0
- package/dist/templates/monorepo/scripts/harness-rules/lint-barrels.ts +1016 -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 +242 -224
- 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/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/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/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.routes.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,1601 @@
|
|
|
1
|
+
# `backlog` dispatcher
|
|
2
|
+
|
|
3
|
+
The reconciler that turns a `Queued` Backlog.md task into a running headless worker and, on
|
|
4
|
+
completion, into a merge-ready PR. It is triggered three ways (a `onStatusChange` callback, a
|
|
5
|
+
`launchd` timer, and — inside the maintenance pass — a `gh` poll for merged PRs), but every trigger
|
|
6
|
+
runs the exact same idempotent pass over observable state: sweep dead locks and orphan slots,
|
|
7
|
+
close out merged PRs, recompute every parent's derived status, pick the next `Queued` task by
|
|
8
|
+
priority then age, run it through six guards, verify the local model is loaded when the task needs
|
|
9
|
+
it, acquire a worktree slot, launch the right lane (`local`, a curated LM Studio executor, or
|
|
10
|
+
`frontier`, a headless Claude Code orchestrator), and close — board integrity, mechanical scope
|
|
11
|
+
check, format/barrels/test, the reviewer on the local lane, the AC/DoD check on both, then a PR —
|
|
12
|
+
or, on any failure, save the work before ever releasing the slot. See
|
|
13
|
+
`openspec/changes/add-backlog-task-dispatch/design.md` for the full rationale and decision log;
|
|
14
|
+
this file documents how the pieces fit together operationally.
|
|
15
|
+
|
|
16
|
+
## Module table
|
|
17
|
+
|
|
18
|
+
| Module | Responsibility |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| `entry.ts` | Orchestration root: resolves `BACKLOG_CWD`, serializes concurrent invocations with a single-flight file lock, applies the anti-loop guard to a status-change trigger, selects the next `Queued` task, and wires maintenance → selection → guards → model readiness → slot acquisition → launch → close into one pass (`runOnce`, async). It also RELEASES the single-flight lock mid-pass — see "Process model" below |
|
|
21
|
+
| `maintenance.ts` | Runs first on every pass, and RETURNS the post-sweep slot registry the rest of the pass acts on, in a fixed order — step 0: retries a push a previous pass could not complete, refusing (never retrying) once the branch's PR reads confirmed `merged` rather than landing commits nobody will ever look at (defect 8, 2026-09-08 — the same push gate `close.ts`'s `checkBranchNotMerged` applies before the close's own pushes); step 1: sweeps locks with a dead PID or an expired heartbeat, killing a hung worker first, then saving its work before releasing anything — same confirmed-merged refusal as step 0 rather than pushing a dead worker's WIP onto an already-merged branch; step 2: releases slots with no live process; step 3: moves a task with a merged PR to `Done` (via `gh`, one poll per branch per pass) — skipping any task with an ALIVE lock, since a retry runs on the same branch and the PREVIOUS attempt's merged PR would otherwise declare the task `Done` mid-run, which the cancellation sweep then reads as "not cancelled" and leaves the worker running against a closed task — deleting the task's `task/<id>` branch (local, then remote) once it reaches `Done` this way, but ONLY when the branch is first confirmed to carry no commit unreachable from its base (`MaintenanceGit.branchHasUnmergedCommits`, compared against `guards.ts`'s `taskBaseBranch` — never a hand-rolled `main`, which would block every subtask) — a branch that fails that check is left ENTIRELY alone, reported in `MaintenanceResult.branchCleanupRefused` rather than `cleanedUpBranches`, so the fail-safe `unknown`-still-pushes decision in steps 0/1 below can never again turn a rescue push landed on an already-merged branch into commits destroyed outright (the remaining T-8 point 5 hole, closed 2026-09-08) — and even once that check passes, deletion still counts as done ONLY when the remote half is CONFIRMED gone (deleted this pass, or already absent) rather than merely attempted (defect 7, 2026-09-08); step 3b: reverts a hand-written `Done` back to `In Progress` when its branch exists but GitHub does not report its PR merged; step 3c: blocks an orphan `In Progress` task (no lock, no slot, no attempt directory, and an `updated_date` older than `lanes.json`'s `orphanInProgressThresholdHours`) — entirely OFF when that threshold is `0`, the operator's explicit way to disable this step, rather than the most aggressive setting a bare millisecond conversion used to make it (defect 12, 2026-09-08); step 4: kills a manually-cancelled task's WORKER after its work is saved — a cancellation being an EXPLICIT `Blocked`/`To Do`, or a task gone from a board that was read in FULL (`boardComplete`), never merely "not `In Progress`"; step 5: recomputes every parent's derived state, deleting the branch of any parent this step itself closes (same unmerged-commits check and confirmed-gone condition as step 3); step 6: commits any pending `.backlog/**` changes with a conventional message |
|
|
22
|
+
| `guards.ts` | `evaluateGuards(task, board, slots, limits, permissions, remoteBranches)` — the dispatch guards over the selected task, in fixed order (missing triage — **also, `tier:medium` + `lane:local` (`tier-lane-mismatch`; `tier:complex` + `lane:local` is guard 2's own `complex-on-local`, unchanged), on `lane:local` no declared `Files to touch:`, and on EITHER lane no declared `Test command:`, or one the allowlist refuses** — then **guard 1c, on BOTH lanes: a task whose declared `Files to touch:` reach the HARD path list (`slot-executed-path`; T-31 — evaluated immediately after guard 1, because a task declaring a file that can never be admitted has nothing a later guard could make actionable), which does NOT fire on a soft-list declaration** — then **guard 1b, on BOTH lanes: a loaded settings allow rule with no safe deny** — Complex on local, unmet dependency, security path on local, **guard 4b: a subtask's parent branch missing from the remote (`missing-parent-branch`; T-14, 2026-09-08 — see `resolveTaskBase` below — placed AFTER security so that refusal is never masked by an actionable-looking "push a branch" message)**, attempts exhausted, no free slot), returning `launch` / `wait` (stays `Queued`, as `dependency-not-done`, `no-free-slot` or `push-pending`) / `block` (moves to `Blocked` with a Spanish cause). `limits`, `permissions` and `remoteBranches` are all REQUIRED (no defaults, T-14 fix round) — a caller that drops `remoteBranches` used to silently block every subtask on the board with a false cause, undetected by the suite because no test fixture had ever exercised a subtask through `evaluateGuards`. The two caps arrive as `limits`, derived from `lanes.json` by `launch.ts`'s `dispatchLimitsFrom` rather than from a module constant; `permissions` (the loaded settings allow list and the whole surface the launch would grant) is composed by `entry.ts`, so this module keeps taking no filesystem access. The board it reads is the one re-read AFTER the maintenance sweep, so a dependency this very pass moved to `Done` unblocks its dependent immediately. Also owns `resolveTestCommand`, the single allowlist for a declared `Test command:` line — read by guard 1 here, by `launch.ts` for the per-task Bash grant, and by `close.ts` for the triad — `grantCovers`/`denyWouldRevoke`/`findPermissionConflict`, the permission-rule comparison guard 1b decides with and `launch.ts` composes its deny list from, in that dependency direction — two predicates because the two directions are different questions: coverage ("already granted, skip it") is stricter than the real matcher, revocation ("would a deny for this kill that grant?") is exactly as coarse as it — and `taskBaseBranch`/`resolveTaskBase`, the ONE place a task's base branch is named (`task/<parentId>`, or `main`) and, for `resolveTaskBase`, checked against the remote: guard 4b blocks on it, `slots.ts`'s `resolveBranch` consults it (and throws rather than falling back if it is ever violated post-guard), and `close.ts`'s `resolveBaseBranch`/`resolveBaseRef` consult the naming half — T-4.1 measured what two independent answers to "what is this task's base?" costs (a whole frontier worker run, blocked on `scope-check-failed` after finishing correctly) |
|
|
23
|
+
| `slots.ts` | Acquires and releases one of the three reusable worktrees, provisions one on demand (`git worktree add --detach origin/main` → `scripts/worktree-link.sh` → `pnpm install`), the dispatch-lock lifecycle (PID + heartbeat — `writeLock`, `releaseLock` and `refreshHeartbeat` all run under the SAME per-task exclusive lock, since a mutex only one participant enters is not a mutex), the lockfile-hash install check, branch resolution (reuse the existing `task/T-nn` branch on retry, otherwise `guards.ts`'s `resolveTaskBase` names the base — `origin/task/<parent>` for a subtask, `origin/main` otherwise — and `resolveBranch` THROWS if that base is missing from the remote, rather than the silent `origin/main` substitution it used to make: T-14, 2026-09-08 — see `guards.ts`'s guard 4b, which now refuses that dispatch before a slot is ever taken, making the case a programming error here rather than a fallback to route around), `slotPathForTask` (the directory holding a task's work, or `null`), `releaseSlotAndDetach` — the ONE release procedure every path uses — `releaseHeldSlotEntries` (the MANUAL rescue behind `--release-slot`, the only release that clears `heldForRecovery`), and `updateSlots`/`createRegistryLock`, the ONE mutation primitive every `slots.json` write goes through |
|
|
24
|
+
| `launch.ts` | Per-lane launch preparation: lane/model resolution from task labels, the exact `claude` command for each lane (the lane settings' `permissions.allow`/`deny` become `--allowedTools`/`--disallowedTools`, merged on both lanes with `backlogRulesForTask`'s ONE rule — the dispatcher-owned `worker-edit.ts` wrapper bound to that task id, which both reads (`--view`) and writes — plus `testCommandRuleForTask`'s rule for the task's own declared test, with an argument containing whitespace re-quoted so the granted string is the one the close spawns), `settingsSourcePaths` + `loadSettingsAllowRules` (each loaded rule tagged with the source file it came from, since a path glob is relative to that file) + `settingsAllowRulesToDeny` + `composeGrantedAllow` (the one composition of the whole granted surface — lane list plus the per-task grants — that guard 1b compares and `buildLaunch` writes into `--allowedTools`) (BOTH lanes load a settings source on purpose and name it — `--setting-sources user` locally, `user,project` on the frontier lane, never the click-approval overlay, with `LANE_SETTING_SOURCES` the one list the flag value and the loaded files both derive from — so every allow rule those sources contribute and the lane does not grant is emitted as a deny; coverage-aware through `guards.ts`'s `findPermissionConflict`, whose no-safe-deny verdict guard 1b already turned into a block before this ran — the throw here is the invariant behind that guard), `assertLaneGrantsFileAccess` (refuses to launch unless the merged allow list actually grants a read AND a write rule — a lane holding only `Bash` rules is not a restricted worker, it is a worker that cannot open a file), `dispatchLimitsFrom` (the `maxParallel`/`attempts` caps the guards and the slot acquisition read), `sanitizeInheritedEnv` (drops every inherited `ANTHROPIC_*`/`CLAUDE_CODE_*` key and every other credential-shaped one — `isCredentialEnvKey`), the async line-streamed `spawnWorker` (detached, reporting the child pid through `onSpawn`), `killProcessTree`, and the LM Studio `/api/v0/models` readiness check before a local-lane launch |
|
|
25
|
+
| `close.ts` | The dispatch close: `checkBoardIntegrity` (the board still says `In Progress`, and the acceptance/DoD texts, the title, the parent, the declared files and the declared test command still read as they did at launch), `checkScope` (the mirror-output prefix first — refused on both lanes regardless of the two lists — then `guards.ts`'s hard list `SLOT_EXECUTED_PATHS`/`SLOT_EXECUTED_BASENAMES` (on local, `LOCAL_FORBIDDEN_PATHS` — the hard list plus three local-only path extras — and the security paths as well), then, once nothing violated, the soft list `HUMAN_REVIEW_PATHS` — admitted and reported in `humanReviewFiles`, never a violation; see "Forbidden paths, split by mechanism" below) and `runScopeCheck`/`collectChangedFiles` over the slot's real changes (plus `collectLeftoverFiles`, the same read CLASSIFIED the same way and with no verdict attached — refused paths and soft-list paths in separate buckets — for the failure paths that never run the scope check: a session-level failure and a `board-check` divert), `resolveBaseBranch` (the PR's `--base`, delegating to `guards.ts`'s `taskBaseBranch` — the SAME naming `slots.ts`'s branch resolution consults, since T-4.1 measured the two disagreeing when each computed its own answer) and `resolveBaseRef` (the `origin/…` ref the work is diffed against and branched from), `planMechanicalChecks` (Prettier `--write` then `--check` per workspace → barrels lint → the task's declared test — validated by `guards.ts`'s `resolveTestCommand`, which this module READS rather than owns — all scoped to the attempt's own changed files), `evaluateAcceptanceGate` (the pre-PR gate), `buildWipCommitMessage`/`buildAttemptCommitMessage`/`buildPrTitle`, `formatBlockComment`/`sanitizeCommentBody`, `buildPrCreateArgs`/`buildPrLabelArgs`/`buildPrReviewerArgs`/`buildPrBodyArgs` (the human-review mark), `collectAttemptDiff`, `planClose` (a pure planner over the ordered steps), and `executeClose` (walks the plan through injected runners, always saving work before releasing a slot on any failure) |
|
|
26
|
+
| `parent.ts` | `deriveParentStatus(children, ownPrMerged, tier?, closeAttempted?)` — the parent-state precedence table (any child `Blocked` wins; any child `Queued`/`In Progress`, or a `Done`+`To Do` mix, means `In Progress`; all children `Done` plus the parent's own PR merged means `Done`; all children `Done`, the PR NOT merged, `tier:complex` and never yet attempted means `Queued` — the ONE automated close attempt, T-8; the same shape once already attempted (`closeAttempted`) returns `null` — defers to whoever owns it now, a live retry or a human's `Blocked` review, rather than re-deriving on top of it; all children `Done`, the PR not merged, any OTHER tier means `In Progress` (pre-T-8 behavior); all `To Do` means `To Do`), applied recursively to grandchildren through the exported `effectiveStatus` (a node with `children` recomputes itself from THEM rather than trusting its own possibly-stale literal `status` — also how `dispatch.ts`'s `isParentCloseAttempt` asks the same question for one node without re-deriving); `tier`/`closeAttempted` are optional and default to "not Complex" / "never attempted", the exact pre-T-8 behavior, for a caller that predates it. Parent state is NEVER written by hand — `maintenance.ts`'s `recomputeParent` is the only writer, and it additionally gates the all-Done branch on the parent's OWN branch `mergedState` (never a caller-supplied `ownPrMerged` alone) so a `gh` outage derives nothing rather than misreading an unanswerable question as "not merged" (F1) |
|
|
27
|
+
| `render.ts` | Maps one `stream-json` event to a human-readable log line (`renderEvent`) and replays a whole recorded session (`renderStream`); shared by the close's `run.log` writer and `watch.ts`'s live tail |
|
|
28
|
+
| `watch.ts` | `pnpm backlog:watch <id>` tails that attempt's rendered `run.log`; with no id, lists busy slots from `slots.json`. Stops on its own once the task's lock file disappears — the close removes it as its very last step, so "the lock is gone" means "there is nothing left to tail" — flushing whatever `run.log` holds at that final tick before exiting, rather than polling forever (T-8 point 1: two watchers were measured six hours orphaned under the old bare-`setInterval` version). A missing `run.log` (a dispatch that aborted before the worker ever streamed a line) reads as "no growth yet", not as a reason to skip checking the lock, so that case still stops too (T-8 defect 9, 2026-09-08). Read-only — never writes board state, a lock, or a slot |
|
|
29
|
+
| `notify.ts` | Fires a macOS notification (`osascript`) on `Blocked` and on PR-opened; a no-op on any non-`darwin` platform so unit tests and non-Mac runs never fail on a missing `osascript` binary |
|
|
30
|
+
| `attempt.ts` | The per-attempt record under `.backlog/.dispatch/<TASK_ID>/intento-<N>/`: `countAttempts` (what `lanes.json`'s `attempts` cap counts), `createAttemptDir` (opened BEFORE the worker starts, so `backlog:watch` can tail it live) and `createAttemptSink` (appends `stream.jsonl` line by line, renders `run.log` on `finish`, and refreshes the lock heartbeat on a 30 s TIMER until `stopHeartbeat` — which the close calls at its very end, not when the worker exits) |
|
|
31
|
+
| `reviewer.ts` | The local lane's close reviewer: the isolated, read-only `claude` argv (`--setting-sources user --strict-mcp-config --disable-slash-commands`, no write tool — deliberately NOT `--bare`, see below) and `reviewerEnv` (drops every `ANTHROPIC_*` key, so the account's claude.ai login authenticates), the dual-verdict prompt (defects, conformity per acceptance criterion, and "would this test fail if its logic broke?") with the diff fenced as untrusted data, and the `REVIEW COMPLETE` + `VERDICT: pass|fail` parse. Fails closed — no verdict blocks the task |
|
|
32
|
+
| `task-view.ts` | The single parser for the `backlog` CLI's plain output, with every reader bounded to the region that can legitimately answer for it. Section readers see the DECLARATION REGION — everything above the first `Implementation Plan:`/`Implementation Notes:`/`Notes:`/`Comments:` heading (heading meaning label line PLUS its dashed underline, so a description with a `Notes:` line of its own does not truncate the contract), since those are the sections a worker's own `--plan`/`--append-notes` writes into and a first-match parser read a heading it forged there as if the CLI had rendered it. Header readers (`Status:`, `Priority:`, `Created:`, `Labels:`, `Parent:`, the title heading) see the HEADER REGION — everything above the first rendered section — because those fields exist nowhere else, and a `Parent:` forged in the notes was the first match on a top-level task and rerouted the PR's base branch: `parseBoardTaskIds` (one id per `task list` row, never an id merely mentioned in a title), the `Task` shape (its `tier`/`lane`/`path` resolved against the real label values, so a typo reads as no triage rather than as a lane nothing matches), the `Files to touch:` and `Test command:` description conventions, the acceptance/DoD TEXTS snapshotted at launch for the close's integrity gate, and the AC/DoD checklists with their checked state and CLI index |
|
|
33
|
+
| `worker-edit.ts` | The ONLY board channel a dispatched worker is granted, read included: `validateWorkerEditArgs` reads the whole argv (exactly the dispatched id, then `--check-ac`/`--notes`/`--append-notes`/`--plan`, each at most once, no value that is itself a flag — or `--view` alone) and forwards to `backlog task edit`, or to `backlog task view … --plain`, in the main checkout — which it requires `BACKLOG_CWD` to name, since `execFileSync` with no `cwd` would run in the SLOT, whose `.backlog/` copy holds no tasks; anything else exits 2 explaining the refusal. It exists because a permission rule matches a PREFIX and cannot narrow what follows it — the four per-flag grants it replaced all admitted a trailing `--status Done`, and the separate `Bash(backlog task view <id>:*)` read grant admitted any longer command line beginning with those words. Its SECOND mode, `--subtask` (mutually exclusive with the four edit flags and `--view`), is the headless way a Complex task's SDD design phase creates the subtasks a split produces — `--title`/`--labels` required, plus exactly one of `--desc` or `--desc-file <path>` (mutually exclusive; the file variant reads UTF-8 text from a path that must stay relative and inside the worker's own cwd — no leading `/`/`~`, no `..` segment — the robust way to pass multi-line text without the `$'…\n…'` ANSI-C quoting a Bash permission rule reads as a `$` expansion and denies, T-6 measured, four attempts out of five), `--labels` validated against the SAME `tier:`/`lane:`/`path:`/`bc:` taxonomy (`tier:complex` forcing `lane:frontier`, and — T-6 — `lane:local` forcing `tier:minor`, the same restriction `guards.ts`'s own guard 1 now enforces on the board), the resolved description validated against `resolveTestCommand` and, on `lane:local`, `parseFilesToTouch` — and never accepts `--parent`: the parent is `BACKLOG_TASK_ID` itself. Forwards to `backlog task create <title> -p <parentId> --desc … -l … [--ac …]... [--priority …] [--type …] [--depends-on …]` |
|
|
34
|
+
| `dispatch.ts` | The executable entry point every trigger invokes: wires the REAL collaborators (real `fs` under `.backlog/.dispatch/`, real `git`/`gh`/`backlog` shell-outs, a real `claude` spawn) and calls `entry.ts`'s `runOnce`. It also owns the one flag the script takes — `releaseSlotByName`, the `--release-slot` rescue, which runs its read→decide→detach under the SAME single-flight lock a reconciler pass holds for its selection (a rescue that interleaved with a pass could detach the very worktree that pass had just acquired) and REFUSES (exit 2) both a pass already running and a slot whose task lock is still alive, unless the slot is `heldForRecovery` or `--force` is passed |
|
|
35
|
+
|
|
36
|
+
`types.ts` holds the shared shapes (task labels, `slots.json`, `locks/<TASK_ID>.json`) every other
|
|
37
|
+
module imports from, so the on-disk contract has one source of truth; `prompt.ts` assembles the
|
|
38
|
+
local-lane executor's five-block user prompt and, with `buildFrontierAddendum`, renders the frontier
|
|
39
|
+
lane's per-attempt system-prompt addendum from its skill-file template (see
|
|
40
|
+
`.claude/skills/catalyst-backlog/SKILL.md` for the worker-facing side of that contract).
|
|
41
|
+
|
|
42
|
+
## On-disk data layout
|
|
43
|
+
|
|
44
|
+
Everything the dispatcher writes at runtime lives under `.backlog/.dispatch/`, which is
|
|
45
|
+
gitignored (unlike `.backlog/` itself, which IS tracked — see "Where board state lives" below):
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
.backlog/.dispatch/
|
|
49
|
+
<TASK_ID>.log # nohup redirect of every reconciler run this task's status
|
|
50
|
+
# transitions started — APPENDED to, so a re-queue after Blocked
|
|
51
|
+
# does not erase the run that blocked it
|
|
52
|
+
launchd.log # StandardOutPath/StandardErrorPath of the launchd timer — the
|
|
53
|
+
# LAUNCHER's own output (a failing `mkdir` or `nohup`), nothing else
|
|
54
|
+
reconciler.log # nohup redirect of the reconciler the launchd timer detached. Its
|
|
55
|
+
# own file on purpose: a pass runs for tens of minutes, and
|
|
56
|
+
# interleaving it with the launcher's lines made neither readable
|
|
57
|
+
slots.json # [{ name, path, lane, taskId|null, pid|null, lockfileHash, heldForRecovery? }]
|
|
58
|
+
slots.lock # exclusive lock guarding every slots.json write (see below)
|
|
59
|
+
locks/<TASK_ID>.json # { taskId, slot, pid, workerPid, startedAt, heartbeatAt, lane, attempt, branch }
|
|
60
|
+
<TASK_ID>/intento-<N>/
|
|
61
|
+
stream.jsonl # raw stream-json, appended line by line while the worker runs
|
|
62
|
+
run.log # human-rendered, written ONCE when the worker exits (this is
|
|
63
|
+
# what `pnpm backlog:watch` tails)
|
|
64
|
+
test.log # transcript of the close's mechanical checks, one block per check
|
|
65
|
+
review.md # the close reviewer's findings (local lane); read back on a retry
|
|
66
|
+
meta.json # NOT YET WRITTEN — design.md reserves it for sessionId, lane,
|
|
67
|
+
# model, branch, startedAt, endedAt, exitReason
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
A lock is dead when `process.kill(pid, 0)` throws (no such process) or when `heartbeatAt` is older
|
|
71
|
+
than the TTL (10 minutes, `dispatch.ts`'s `ttlMs: 10 * 60_000`) even with a live PID. `attempt.ts`
|
|
72
|
+
refreshes `heartbeatAt` every 30 s on a TIMER — deliberately not from the stream events, which would
|
|
73
|
+
make "alive" mean "emitting output" and sweep a worker that is merely thinking, waiting on a long
|
|
74
|
+
test run, or streaming one very large event.
|
|
75
|
+
|
|
76
|
+
**The heartbeat covers the CLOSE too, not just the worker.** `sink.finish()` renders `run.log` and
|
|
77
|
+
stops reading; `sink.stopHeartbeat()` is called at the very end of the close, once the slot has been
|
|
78
|
+
released or held. That split is load-bearing: the close's own steps (the scoped test run, the
|
|
79
|
+
reviewer subprocess, `git push` + `gh pr create`) routinely take longer than the 10-minute TTL, and
|
|
80
|
+
the single-flight lock was already dropped when the slot was taken — so a heartbeat frozen at the
|
|
81
|
+
worker's exit made the next pass read a live close as a dead worker, kill it, and release its slot
|
|
82
|
+
mid-PR. The reviewer subprocess is separately bounded by `lanes.json`'s `reviewerTimeoutMinutes`
|
|
83
|
+
(default 15), because a reviewer that never returns would otherwise hold a slot forever.
|
|
84
|
+
|
|
85
|
+
`slots.json` is written through ONE primitive, `slots.ts`'s `updateSlots(store, mutate)`: it takes an
|
|
86
|
+
exclusive lock (`.backlog/.dispatch/slots.lock`, broken when older than 30 s), RE-READS the file, and
|
|
87
|
+
applies the caller's transform to what it finds there. Nothing writes a whole registry built on an
|
|
88
|
+
older snapshot. Two passes legitimately run at once — the single-flight lock is released as soon as a
|
|
89
|
+
slot is taken — so a snapshot-based write silently reverted the other pass's acquisition, its
|
|
90
|
+
release, or its `heldForRecovery` flag, and losing that last one means losing the only marker saying
|
|
91
|
+
a slot still holds unpushed work. Every writer (the maintenance sweep, the acquisition write-back,
|
|
92
|
+
`releaseSlot`, `blockKeepSlot`) mutates only the fields it owns.
|
|
93
|
+
|
|
94
|
+
The lock carries TWO pids and they are not interchangeable: `pid` is the RECONCILER (what the
|
|
95
|
+
liveness probe checks), `workerPid` is the spawned `claude` process (what a cancellation kills, as a
|
|
96
|
+
whole process group — the worker spawns hooks, `pnpm` and sub-agents of its own).
|
|
97
|
+
|
|
98
|
+
`locks/<TASK_ID>.json` has its own exclusive lock (`locks/<TASK_ID>.json.lock`, the same
|
|
99
|
+
`createRegistryLock` primitive `slots.json` uses), and **every** mutation of the file goes through
|
|
100
|
+
it: the launch write, the heartbeat refresh, and the sweep's removal. A one-sided mutex is not a
|
|
101
|
+
mutex — moving the heartbeat's READ inside a critical section that nothing else entered only excluded
|
|
102
|
+
a second heartbeat, and a `releaseLock` taking no lock still landed between that read and its write,
|
|
103
|
+
after which the write resurrected a lock for a slot already handed to another task.
|
|
104
|
+
|
|
105
|
+
`slots.json` is the allocation mutex (which of the three worktrees — named `dispatch-a`,
|
|
106
|
+
`dispatch-b`, `dispatch-c` — is occupied, by which task, for which lane); `locks/<TASK_ID>.json` is
|
|
107
|
+
the liveness detail for whoever currently holds that task. A slot flagged `heldForRecovery` is
|
|
108
|
+
neither free nor reassignable: its work never reached the remote, so it holds the only copy (see
|
|
109
|
+
"Failure path" below). `slots.ts` owns the pure operations on both shapes (acquire, release,
|
|
110
|
+
provision, lock lifecycle, heartbeat); `dispatch.ts` owns the only real reads and writes of the two
|
|
111
|
+
files.
|
|
112
|
+
|
|
113
|
+
**The worktree slots are created on demand.** There is no bootstrap step: the first time a task
|
|
114
|
+
acquires `dispatch-a`, the dispatcher runs `git worktree add .claude/worktrees/dispatch-a --detach
|
|
115
|
+
origin/main`, then `bash scripts/worktree-link.sh` from inside it (linking the gitignored
|
|
116
|
+
`backend/.keys` and `backend/.env` a worktree does not inherit), then `pnpm install`. That first
|
|
117
|
+
acquisition therefore costs a full install — minutes, not seconds. Every later acquisition reuses the
|
|
118
|
+
worktree and skips the install unless `pnpm-lock.yaml` moved (`slots.json`'s `lockfileHash`).
|
|
119
|
+
|
|
120
|
+
`run.log` is written by `attempt.ts`'s sink — but only ONCE, inside `finish()`, as a single
|
|
121
|
+
`writeFileSync` of the WHOLE session rendered through `render.ts` at that point; `appendStreamLine`
|
|
122
|
+
is what grows the raw `stream.jsonl` line by line while the worker runs, not `run.log`. `finish()`
|
|
123
|
+
itself runs as soon as the worker process exits, before the close's own steps (the scope check, the
|
|
124
|
+
scoped test, the reviewer, the PR) — so `run.log` appears in full moments after the worker is done,
|
|
125
|
+
not incrementally while it works, and not only once the whole close has finished either. `review.md`
|
|
126
|
+
is written by the close's reviewer step, on every branch including a crashed reviewer, because a
|
|
127
|
+
retry's prompt reads it back.
|
|
128
|
+
|
|
129
|
+
`.backlog/.dispatch/` is created by the `onStatusChange` callback itself (it is prefixed with
|
|
130
|
+
`mkdir -p .backlog/.dispatch;` — see "Trigger wiring"), and by `dispatch.ts` on every run. Nothing
|
|
131
|
+
has to be created by hand in a fresh clone.
|
|
132
|
+
|
|
133
|
+
## Process model
|
|
134
|
+
|
|
135
|
+
One reconciler process handles at most one dispatch, but it does NOT hold the single-flight lock
|
|
136
|
+
for the worker's lifetime. The sequence is:
|
|
137
|
+
|
|
138
|
+
1. Acquire the single-flight lock (`.backlog/.dispatch/dispatch.lock`, PID-based) and run the whole
|
|
139
|
+
maintenance → selection → guards → readiness → slot acquisition sequence under it.
|
|
140
|
+
2. Once the slot is taken, the lock file is written and the task is `In Progress`, **release the
|
|
141
|
+
single-flight lock**. The per-task lock is what keeps a second pass off THIS task; the
|
|
142
|
+
single-flight lock only serializes selection.
|
|
143
|
+
3. Spawn the worker asynchronously (`launch.ts`'s `spawnWorker`), in its OWN process group and with
|
|
144
|
+
a sanitized environment: every `ANTHROPIC_*` and `CLAUDE_CODE_*` key this process inherited is
|
|
145
|
+
dropped before the lane's own `env` is layered on, so a worker can never fall back to the
|
|
146
|
+
account's credentials — and so is every OTHER credential-shaped key (`isCredentialEnvKey`:
|
|
147
|
+
`GH_`/`GITHUB_`/`NPM_`/`NODE_AUTH_`/`SOPS_`/`AWS_`/`AZURE_`/`GOOGLE_`/`OPENAI_` by prefix, plus
|
|
148
|
+
anything ending in `TOKEN`, `SECRET`, `PASSWORD`, `API_KEY` or `PRIVATE_KEY`). The reconciler runs
|
|
149
|
+
from a developer's session or from launchd, so its env is whatever that shell exports; a worker
|
|
150
|
+
holding `GITHUB_TOKEN` pushes and opens PRs through the API with no `gh` binary involved, past
|
|
151
|
+
every deny rule the lane spent its effort on. Its pid is written to the lock as `workerPid` the moment it exists. Its
|
|
152
|
+
stdout streams line by line into `stream.jsonl`, and a 30 s timer refreshes `heartbeatAt`.
|
|
153
|
+
4. When the worker exits, render `run.log`, classify the stream and run the close. The heartbeat
|
|
154
|
+
keeps beating through all of it, and only stops once the slot has been released or held.
|
|
155
|
+
|
|
156
|
+
Before step 4 does anything, the pass **re-reads its own per-task lock**. The single-flight lock is
|
|
157
|
+
long gone by then, so a maintenance sweep in another pass may legitimately have declared this worker
|
|
158
|
+
dead (a heartbeat that fell behind is enough), saved its work, released its slot and handed that
|
|
159
|
+
worktree to the next task. Closing on top of that opens a PR off someone else's branch, re-statuses
|
|
160
|
+
a task a person already moved, and releases a slot holding live work. A lock that is gone, or that
|
|
161
|
+
names another pid, skips the close entirely: the sweep already saved and blocked.
|
|
162
|
+
|
|
163
|
+
The dispatcher process therefore stays alive for the worker's whole run — which is fine, because
|
|
164
|
+
BOTH triggers detach it with `nohup` and return: the `onStatusChange` callback, and the launchd
|
|
165
|
+
launcher (which must, or launchd would refuse to fire its own timer again while this pass lived —
|
|
166
|
+
see "Installing the launchd recovery timer"). Holding the single-flight lock across that run instead
|
|
167
|
+
would make the frontier cap of 2 unreachable, stall the close's `drain`, prevent the maintenance
|
|
168
|
+
pass from cancelling a running worker, and leave a 10-minute-TTL lock stale while its worker is
|
|
169
|
+
demonstrably alive.
|
|
170
|
+
|
|
171
|
+
Everything from taking the slot to the worker exiting runs inside one try/catch. A failing
|
|
172
|
+
`pnpm install`, a `git checkout` against a ref that vanished, a hook subprocess that dies while the
|
|
173
|
+
prompt is assembled — any of them used to escape the pass with the slot taken, the lock written and
|
|
174
|
+
the task sitting in `In Progress`, recoverable only by the next sweep ten TTL minutes later. Now the
|
|
175
|
+
slot goes back to the pool, the lock is removed, and the task moves to `Blocked` carrying the error.
|
|
176
|
+
|
|
177
|
+
A close that ends in `drain` sets a flag; `dispatch.ts` then re-acquires the single-flight lock and
|
|
178
|
+
runs ONE more pass for the next `Queued` task. Two passes per invocation is the cap — a trigger can
|
|
179
|
+
never loop the whole queue in one process.
|
|
180
|
+
|
|
181
|
+
## Lane profiles (`lanes.json`)
|
|
182
|
+
|
|
183
|
+
`scripts/backlog/lanes.json` holds only what Claude Code itself cannot already express (slot
|
|
184
|
+
pool, `maxParallel`, `attempts`, `effort`, the direct/sdd model split, the LM Studio health-check
|
|
185
|
+
URL, and the close reviewer's model and timeout).
|
|
186
|
+
|
|
187
|
+
`lanes.frontier.maxBudgetUsd` is OPTIONAL — set a number when the machine authenticates with an
|
|
188
|
+
API key and you want a hard dollar stop; omit it on a subscription login, where the estimate is not
|
|
189
|
+
billed and the cap only truncates work; `maxTurns` and `timeoutMinutes` are the guards that always
|
|
190
|
+
apply. `loadLaneConfig` still validates a DECLARED value — non-numeric or zero throws, same as
|
|
191
|
+
every other field — it is absence, not presence, that is unchecked.
|
|
192
|
+
|
|
193
|
+
`harnessReviewer` (top-level, T-31) is OPTIONAL too — the human-review mark's reviewer handle (see
|
|
194
|
+
"Forbidden paths, split by mechanism" below). It ships UNSET: `gh pr create --reviewer <self>` (and
|
|
195
|
+
the equivalent `pr edit`) fails when the reviewer is the pull request's own author, and the
|
|
196
|
+
dispatcher opens every PR as the same account. Set it to a second account's handle to actually get a
|
|
197
|
+
reviewer assigned; the absence is recorded once on a marked PR rather than treated as an error. A
|
|
198
|
+
DECLARED value is validated for its SHAPE, not merely for being a string: a GitHub login (1-39
|
|
199
|
+
characters, alphanumerics and single interior hyphens) or an `org/team-slug`. The value becomes an
|
|
200
|
+
argv TOKEN in `gh pr edit … --add-reviewer <value>`, and `gh` reads a token starting with `-` as a
|
|
201
|
+
FLAG — the same reason `resolveTestCommand` anchors its `--filter`/`--dir` values on a non-dash first
|
|
202
|
+
character.
|
|
203
|
+
|
|
204
|
+
`maxParallel` (per lane) and `attempts` (global) are the dispatcher's two caps, and they are LIVE:
|
|
205
|
+
`launch.ts`'s `dispatchLimitsFrom` turns the loaded config into the object guard 5, guard 6 and
|
|
206
|
+
`acquireSlot` all read. Editing either number in this file changes what the dispatcher does on the
|
|
207
|
+
next pass. There is no `bare` field: the local lane is always `--bare` and the frontier lane never
|
|
208
|
+
is — that is a property of what each lane IS, not a knob, and a knob that could not be turned only
|
|
209
|
+
told its reader a lie.
|
|
210
|
+
Everything Claude Code DOES already understand — `model`, `env`, `permissions` — lives in a
|
|
211
|
+
standard settings file per lane (`scripts/backlog/lanes/local.settings.json`,
|
|
212
|
+
`scripts/backlog/lanes/frontier.settings.json`), which `launch.ts` READS and translates into the
|
|
213
|
+
launch itself — `model` becomes `--model`, `permissions.allow`/`deny` become
|
|
214
|
+
`--allowedTools`/`--disallowedTools`, and `env` is injected into the spawn environment. The files
|
|
215
|
+
keep Claude Code's own settings shape so they stay readable and reusable, but they are NOT passed
|
|
216
|
+
with `--settings`: Phase 1 spike 1.1 measured spawn-env as the injection mechanism that actually
|
|
217
|
+
takes effect, with `--settings` kept only as a validated fallback. This split means
|
|
218
|
+
**changing the local model is editing one field**: swap `local.settings.json`'s `model` (and the
|
|
219
|
+
matching `ANTHROPIC_*` env values) to point at a different LM Studio model id, nothing in
|
|
220
|
+
`lanes.json` or any `.ts` module needs to change — the readiness check reads the model id from
|
|
221
|
+
`local.settings.json` too, so there is exactly one place to edit. Using Sonnet locally instead of an LM Studio
|
|
222
|
+
model is deleting `local.settings.json`'s `env` block entirely.
|
|
223
|
+
|
|
224
|
+
`local.settings.json` sets every `ANTHROPIC_DEFAULT_{SONNET,OPUS,HAIKU}_MODEL` to the SAME LM
|
|
225
|
+
Studio model id — the local lane only ever runs `tier:minor`, so there is no direct/sdd split to
|
|
226
|
+
alias differently, but a sub-agent spawned inside the local worker that happens to ask for "opus"
|
|
227
|
+
must still resolve to the one model actually loaded. `frontier.settings.json` carries `env: {}` —
|
|
228
|
+
the cost knob, empty because the lane runs on the account — plus the lane's whole explicit `allow`
|
|
229
|
+
list and its `deny` list; it declares no `model`, because `launch.ts`
|
|
230
|
+
resolves that from the task's `path:` label (`path:direct` → Sonnet, `path:sdd` → Opus, matching
|
|
231
|
+
`catalyst-delegation`'s model table) and passes it as `--model`, which would always beat a value in
|
|
232
|
+
the file.
|
|
233
|
+
|
|
234
|
+
**`--bare` does NOT stop settings loading, so the local lane names its source too.** Measured
|
|
235
|
+
(T-5, 2026-09-07): `claude --help` lists what `--bare` skips — hooks, LSP, plugin sync, attribution,
|
|
236
|
+
auto-memory, background prefetches, keychain reads, `CLAUDE.md` auto-discovery — and settings files
|
|
237
|
+
are not on that list. The launch used to pass `--bare` and no `--setting-sources` at all, on the
|
|
238
|
+
reading that the flag covered it; what it actually got was the DEFAULT set, so the USER file, the
|
|
239
|
+
PROJECT file and `.claude/settings.local.json` all loaded into the executor. The consequence is in
|
|
240
|
+
that attempt's `stream.jsonl`: the worker ran `python3 -c` (writing a file in the MAIN checkout,
|
|
241
|
+
outside its slot, and reverting it by hand afterwards), `npx prettier` and `pnpm exec prettier`
|
|
242
|
+
through `Bash` — this machine's overlay carries `Bash(python3 -c *)`, `Bash(git *)`, `Bash(pnpm *)`
|
|
243
|
+
and ~60 more click-approvals, and the lane grants no such rule anywhere. The launch now passes
|
|
244
|
+
`--setting-sources user`, the narrowest value the flag accepts (an empty one is not in the grammar —
|
|
245
|
+
the same value the close's reviewer passes), and composes its deny list from that one loaded source
|
|
246
|
+
exactly as the frontier lane does: `loadSettingsAllowRules` over the USER file, then
|
|
247
|
+
`settingsAllowRulesToDeny` against the whole granted surface, with guard 1b deciding the overlaps
|
|
248
|
+
that have no safe answer. `--bare` and `--strict-mcp-config` stay: the prefill cost and the MCP
|
|
249
|
+
servers are what they are for. The flag does not cost the lane its credential — measured in the same
|
|
250
|
+
probe below, a `--bare --setting-sources user` run authenticated against LM Studio through the lane's
|
|
251
|
+
own `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN` and completed normally.
|
|
252
|
+
|
|
253
|
+
Two things follow, and both are load-bearing. **The `--setting-sources` value and the subtraction
|
|
254
|
+
come from one list**, `launch.ts`'s `LANE_SETTING_SOURCES` (`local: user`, `frontier: user,project`):
|
|
255
|
+
`settingSourcesFlag` joins it into the flag, `settingsSourcePaths` turns it into the files, so the
|
|
256
|
+
flag and the deny list cannot describe different sets. And **guard 1b now runs on BOTH lanes** — it
|
|
257
|
+
was frontier-only precisely because of the `--bare` misreading above.
|
|
258
|
+
|
|
259
|
+
**A read-only `Bash` command needs no allow rule at all.** Measured with the free local model, from
|
|
260
|
+
a temp git repo, `--bare --strict-mcp-config --setting-sources user --permission-mode dontAsk
|
|
261
|
+
--allowedTools 'Read'`: a bare `ls` through `Bash` was ALLOWED, with `permission_denials: []`, while
|
|
262
|
+
a compound `ls -la; cat a.txt; echo …` was DENIED in the same conditions. So Claude Code auto-approves
|
|
263
|
+
a Bash command it can statically read as read-only, whatever the allow list says — which is where the
|
|
264
|
+
T-5 run's `find`, `ls`, `pwd` and `grep` came from, not from the overlay. The lane's `--allowedTools`
|
|
265
|
+
therefore bounds every WRITE and every non-trivial command, not literally every `Bash` invocation.
|
|
266
|
+
|
|
267
|
+
Beyond that, the local lane's `--allowedTools` is its permission surface. It is path-scoped:
|
|
268
|
+
`Edit(./**)`/`Write(./**)` rather than bare `Edit`/`Write` (the cwd is the slot), and
|
|
269
|
+
the `deny` half additionally refuses `Edit`/`Write` on `.husky/**`, `.claude/**`, `scripts/**`,
|
|
270
|
+
`package.json`, `pnpm-lock.yaml`, `node_modules/**` and `.git/**` — everything that GOVERNS or RUNS
|
|
271
|
+
the dispatcher itself. The close's `SLOT_EXECUTED_PATHS`/`LOCAL_FORBIDDEN_PATHS` re-check the same paths
|
|
272
|
+
against the real diff, because a permission rule that silently fails to match must not be the only
|
|
273
|
+
barrier.
|
|
274
|
+
|
|
275
|
+
**The `Edit(./**)` spelling is measured, not assumed.** Spike 1.2 had measured a bare relative glob
|
|
276
|
+
(`Edit(allowed/**)`) working under `--allowedTools`; whether the `./` prefix matches was left
|
|
277
|
+
untested until now. Same probe as above (free local model, temp git repo, `Read` plus the rule under
|
|
278
|
+
test, prompt "append the line hello to a.txt using the Edit tool"):
|
|
279
|
+
|
|
280
|
+
| Rule under test | Edit allowed? | Evidence |
|
|
281
|
+
| --- | --- | --- |
|
|
282
|
+
| `Edit(./**)` | yes | tool_result "has been updated successfully", `permission_denials: []`, `a.txt` appended |
|
|
283
|
+
| `Edit(**)` | yes | same, `permission_denials: []` |
|
|
284
|
+
| `Edit(a.txt)` | yes | same; the run ended `error_max_turns` for an unrelated denied compound `Bash` |
|
|
285
|
+
|
|
286
|
+
All three admit an Edit whose `file_path` argument is the ABSOLUTE path inside the cwd, so the
|
|
287
|
+
shipped `Edit(./**)`/`Write(./**)` spelling stays — it is the one that also states the intent (the
|
|
288
|
+
scoping is the slot), and `grantCovers` already normalises a leading `./` on both sides when
|
|
289
|
+
comparing it against a loaded rule.
|
|
290
|
+
|
|
291
|
+
**A task that must change a dependency cannot be dispatched.** `package.json` (root and every
|
|
292
|
+
workspace one — the patterns are matched as substrings, so `backend/package.json` is a hit),
|
|
293
|
+
`pnpm-lock.yaml` and `node_modules/` are in `SLOT_EXECUTED_PATHS`, so they are refused on BOTH lanes,
|
|
294
|
+
declared or not. They are the environment this close runs its own Prettier, barrels lint and
|
|
295
|
+
`pnpm test` in: a rewritten `test` script or lockfile is code the dispatcher executes moments later.
|
|
296
|
+
The cost is accepted deliberately — adding a dependency is a change a person makes in an
|
|
297
|
+
interactive session, where the install and its diff are read, not one a headless attempt slips in.
|
|
298
|
+
|
|
299
|
+
**The task's own test command is granted per launch, not by a standing rule.** `launch.ts` turns the
|
|
300
|
+
task's SNAPSHOTTED `Test command:` — the same line `resolveTestCommand` validates for the close —
|
|
301
|
+
into one `Bash(<command>:*)` rule and appends it, on both lanes. A task that declared none, or one
|
|
302
|
+
the allowlist refuses, gets no rule. The rule it replaced (`Bash(pnpm --filter * test*)`) was a
|
|
303
|
+
trailing glob that matched any pnpm subcommand whose words happened to line up.
|
|
304
|
+
|
|
305
|
+
The local lane carries no standing `pnpm` rule at all, so that grant is its only one. The frontier
|
|
306
|
+
lane carries five COMMANDS, and each is shipped as a PAIR of rules rather than one colon-terminated
|
|
307
|
+
rule: `Bash(pnpm --filter * test)` + `Bash(pnpm --filter * test *)`,
|
|
308
|
+
`Bash(pnpm --filter * exec prettier --check)` + `Bash(pnpm --filter * exec prettier --check *)`,
|
|
309
|
+
`Bash(pnpm --filter * exec tsc --noEmit)` + `Bash(pnpm --filter * exec tsc --noEmit *)`,
|
|
310
|
+
`Bash(pnpm --filter * db:generate)` + `Bash(pnpm --filter * db:generate *)`, and
|
|
311
|
+
`Bash(pnpm --filter * db:check)` + `Bash(pnpm --filter * db:check *)` — a frontier orchestrator
|
|
312
|
+
writes tests and type-checks across workspaces as it works, and a worker that can only run the one
|
|
313
|
+
line its task declared cannot do that. **Why a pair, and never the single `Bash(pnpm --filter *
|
|
314
|
+
test:*)` rule this used to be:** measured (T-7, 2026-09-07, Claude Code 2.1.263) — a Bash rule that
|
|
315
|
+
combines a mid-rule `*` with a trailing `:*` matches NOTHING. `Bash(pnpm --filter * test:*)` never
|
|
316
|
+
matched `pnpm --filter aurora-back test`, on either lane, ever; it looked like a working scoped
|
|
317
|
+
grant in review and was actually five silent holes. The exact-form half (`Bash(pnpm --filter * test)`)
|
|
318
|
+
matches the command with no extra argument; the with-arguments half (`Bash(pnpm --filter * test *)`)
|
|
319
|
+
matches it with one or more. See "A mid-rule `*` is a wildcard" further down in this section for the
|
|
320
|
+
full measurement. The last two commands are BOTH offline (`catalyst-schema-migrations`): `db:generate` diffs a
|
|
321
|
+
workspace's `*.schema.ts` files against its last `snapshot.json`, and `db:check` runs the same
|
|
322
|
+
comparison — neither ever reaches a real database, so granting them widens no boundary the other
|
|
323
|
+
three did not already assume. Each names a `--filter`ed workspace and a fixed verb: no
|
|
324
|
+
`pnpm add`/`install`/`dlx`, no bare `pnpm run`, and no `pnpm test:<script>` (the root scripts,
|
|
325
|
+
which execute `scripts/**`).
|
|
326
|
+
|
|
327
|
+
**Every board access goes through a dispatcher-owned wrapper, never through the `backlog` CLI.**
|
|
328
|
+
Under `--permission-mode dontAsk` anything unlisted is denied, so `launch.ts` appends exactly ONE
|
|
329
|
+
board rule to `--allowedTools`, on BOTH lanes:
|
|
330
|
+
`Bash(npx --loglevel=error tsx <main checkout>/scripts/backlog/worker-edit.ts T-nn:*)`. The read
|
|
331
|
+
goes through it too (`--view`, accepted only on its own): a separate `Bash(backlog task view T-nn:*)`
|
|
332
|
+
was a prefix like any other, so a command line that merely STARTED with those words matched whatever
|
|
333
|
+
followed — a narrow write channel standing next to an open-ended one.
|
|
334
|
+
|
|
335
|
+
The raw write was granted in two earlier shapes, and both were wider than they read:
|
|
336
|
+
|
|
337
|
+
- a bare `Bash(backlog task edit:*)` let a worker edit, comment on and re-status ANY task on the
|
|
338
|
+
board, including moving another one to `Queued` for the dispatcher to pick up;
|
|
339
|
+
- one rule per allowed flag (`Bash(backlog task edit T-nn --notes:*)`) fixed the id and the FIRST
|
|
340
|
+
flag — but **a permission rule matches a PREFIX and cannot narrow what comes after it**, so
|
|
341
|
+
`--notes x --status Done` matched too: the worker could still set its own task to `Done` (the
|
|
342
|
+
maintenance sweep then reads a finished task nobody verified) and rewrite the very acceptance
|
|
343
|
+
criteria the pre-PR gate and the reviewer judge it against. "Anything else is denied" was never
|
|
344
|
+
true of a rule with a trailing wildcard, and the prompt and this README both used to say it was.
|
|
345
|
+
|
|
346
|
+
`worker-edit.ts` is the barrier that does not depend on a rule matching, because it reads the WHOLE
|
|
347
|
+
argv before anything reaches the CLI: exactly the dispatched task id (taken from `BACKLOG_TASK_ID`
|
|
348
|
+
in the worker env, not from the command line — comparing an argument against itself proves nothing),
|
|
349
|
+
then one or more of `--check-ac`, `--notes`, `--append-notes` and `--plan`, each at most once, each
|
|
350
|
+
with a value that is not itself a flag, and `--check-ac` only with the `#N` the CLI prints — or
|
|
351
|
+
`--view` on its own, which forwards to `backlog task view <id> --plain`. Anything
|
|
352
|
+
else exits **2** — distinct from the CLI's own 1, so a refusal never reads as a CLI error — with a
|
|
353
|
+
message naming what it refused, and writes nothing. On success it forwards to
|
|
354
|
+
`backlog task edit <id> <args…>` in the main checkout (`BACKLOG_CWD`).
|
|
355
|
+
|
|
356
|
+
The grant names the **main checkout's** copy of the script, never the slot's: the slot's `scripts/`
|
|
357
|
+
is a directory the worker could write to if a deny rule ever failed to match, and a barrier the
|
|
358
|
+
thing under test can edit is not a barrier. The close's board-integrity gate is the DETECTOR behind
|
|
359
|
+
it, for the case where a permission rule silently fails to match anyway.
|
|
360
|
+
|
|
361
|
+
**The slot's own `.backlog/` copy is denied outright.** Both lane settings deny
|
|
362
|
+
`Edit(.backlog/**)`/`Write(.backlog/**)`, and the close's scope check reports a change there as a
|
|
363
|
+
violation on both lanes. Editing the board file directly would reach the criteria the close judges
|
|
364
|
+
the attempt against, going around the wrapper entirely.
|
|
365
|
+
|
|
366
|
+
**The frontier lane's allowlist is EXPLICIT, written out in `frontier.settings.json`.** It is not
|
|
367
|
+
derived from anything: `launch.ts` reads that file's `permissions.allow` and emits it, plus the two
|
|
368
|
+
grants the dispatcher itself decides on (the `worker-edit.ts` wrapper and the validated test
|
|
369
|
+
command). As shipped:
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
Read Grep Glob Edit(./**) Write(./**) Agent Skill TodoWrite
|
|
373
|
+
Bash(git status:*) Bash(git diff:*) Bash(git log:*) Bash(git show:*)
|
|
374
|
+
Bash(git rev-parse:*) Bash(git symbolic-ref:*)
|
|
375
|
+
Bash(openspec:*) Bash(catalyst:*)
|
|
376
|
+
Bash(pnpm --filter * test) Bash(pnpm --filter * test *)
|
|
377
|
+
Bash(pnpm --filter * exec prettier --check) Bash(pnpm --filter * exec prettier --check *)
|
|
378
|
+
Bash(pnpm --filter * exec tsc --noEmit) Bash(pnpm --filter * exec tsc --noEmit *)
|
|
379
|
+
Bash(pnpm --filter * db:generate) Bash(pnpm --filter * db:generate *)
|
|
380
|
+
Bash(pnpm --filter * db:check) Bash(pnpm --filter * db:check *)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
The file tools are path-scoped to the slot like the local lane's, plus the two tools an orchestrator
|
|
384
|
+
needs to BE one (it delegates to sub-agents and reads skills by path) — under
|
|
385
|
+
`--permission-mode dontAsk` a tool with no allow rule is DENIED, and a lane holding only `Bash` rules
|
|
386
|
+
is not a restricted worker, it is a worker that cannot open a file. The commands are what a frontier
|
|
387
|
+
orchestrator's job actually needs: inspect the tree it works in (read-only `git` verbs — none of them
|
|
388
|
+
stages, commits, moves a branch or discards a file), run the SDD flow (`openspec`), run the generator
|
|
389
|
+
(`catalyst`), verify its own work in a workspace (a scoped test, Prettier's `--check`,
|
|
390
|
+
`tsc --noEmit`), and evolve a workspace's Drizzle schema OFFLINE (`db:generate`/`db:check` — both diff
|
|
391
|
+
`*.schema.ts` against the last `snapshot.json`; neither touches a database, per
|
|
392
|
+
`catalyst-schema-migrations`). **No granted command runs a script out of the tree the worker can write to** — no
|
|
393
|
+
`node`, `tsx`, `npx`, bare `pnpm run` or `pnpm test:` rule — which is the property that makes the
|
|
394
|
+
`Edit`/`Write` allowance over `scripts/**` safe (see the deny section below). `launch.test.ts` holds
|
|
395
|
+
that as an assertion over the shipped file, not as a comment.
|
|
396
|
+
|
|
397
|
+
It used to be the project's own list, subtracted from: `launch.ts` read `.claude/settings.json`'s 43
|
|
398
|
+
`permissions.allow` rules at launch and dropped the dangerous ones by command prefix. The reasoning
|
|
399
|
+
was that the rules people maintain should stay one list rather than being copied into a second one
|
|
400
|
+
that drifts — but an inherited list is a moving target, and a SUBTRACTION over it reopens with every
|
|
401
|
+
rule somebody adds. The filter had to be right about commands that did not exist when it was written,
|
|
402
|
+
in a file whose whole purpose is a person approving a command for their OWN interactive session. The
|
|
403
|
+
evidence is that file as it stands: `Bash(fd:*)`, `Bash(git restore:*)`, `Bash(git branch:*)`,
|
|
404
|
+
`Bash(eslint:*)`, `Bash(npm test:*)` and `Bash(pnpm test:hooks:*)` are all in it, and no prefix in
|
|
405
|
+
that filter covered one of them — a finder that reaches `--exec`, two git verbs that discard work and
|
|
406
|
+
move branches, and three runners that execute files out of a tree the worker can write to, every one
|
|
407
|
+
of them reaching the headless worker past a filter written before they existed. What survives review
|
|
408
|
+
now is the list itself, and every rule in it was read once and stays read.
|
|
409
|
+
|
|
410
|
+
Both `--allowedTools` and `--disallowedTools` are always emitted on BOTH lanes, even when a list is
|
|
411
|
+
empty: `--permission-mode dontAsk` with no `--allowedTools` is unrestricted, not restricted. And the
|
|
412
|
+
launch guard asks for CAPABILITIES, not for a non-empty list: `assertLaneGrantsFileAccess` throws
|
|
413
|
+
unless the merged allow list carries at least one read rule (`Read`) and at least one write rule
|
|
414
|
+
(`Edit`/`Write`, bare or path-scoped), and the task is blocked with that reason rather than burning
|
|
415
|
+
an attempt on a worker that discovers mid-run it cannot write. "Non-empty" was the wrong
|
|
416
|
+
question — 43 `Bash` rules satisfy it.
|
|
417
|
+
|
|
418
|
+
**But the launch is not the only source of `allow`.** The frontier lane passes
|
|
419
|
+
`--setting-sources user,project`: this worker runs the FULL harness and needs the project's hooks.
|
|
420
|
+
The user file also loads; measured on this machine its `enabledPlugins` merely duplicates what the
|
|
421
|
+
project file already turns on for every plugin `check-required-setup.ts` requires, so that alone
|
|
422
|
+
would not justify loading it. What it uniquely contributes here is its own `hooks`, its
|
|
423
|
+
`mcpServers` entry, its `model` override, and the enablement of plugins the project file does not
|
|
424
|
+
require (`.mcp.json` is not a settings source and loads regardless). The local lane passes
|
|
425
|
+
`--setting-sources user`, because `--bare` does not stop settings loading (see the local-lane section
|
|
426
|
+
above) and one source is the least the flag can name. **The click-approval overlay is NOT among them,
|
|
427
|
+
on either lane.** `.claude/settings.local.json` is where a person's ad-hoc "yes, allow that" answers
|
|
428
|
+
pile up — 61 rules on this machine, `Bash(git *)`, `Bash(pnpm *)` and `Bash(python3 -c *)` among them,
|
|
429
|
+
which is every git and every pnpm subcommand including the ones the lane's list deliberately withholds
|
|
430
|
+
— and since Claude Code 2.1.211 a worktree reads the MAIN checkout's copy, so a slot would inherit the
|
|
431
|
+
lot. A headless worker must never inherit a person's click-approvals, so the file is excluded at the
|
|
432
|
+
source: not loaded, therefore nothing to subtract, and no dilemma between revoking a reviewed lane
|
|
433
|
+
grant and blocking the task.
|
|
434
|
+
|
|
435
|
+
Whatever DOES load still brings its `permissions.allow`, and `--allowedTools` ADDS to what that grants
|
|
436
|
+
rather than replacing it. Writing a lane's list out therefore bounds only what the LAUNCH grants; on
|
|
437
|
+
the frontier lane the project file's 42 approved rules load with the hooks, and on the local lane the
|
|
438
|
+
user file loads alone (it contributes none on this machine — an empty `permissions.allow`). The
|
|
439
|
+
layering, in order, on EITHER lane:
|
|
440
|
+
|
|
441
|
+
1. the lane's settings sources load — user, then project on the frontier lane — bringing the project
|
|
442
|
+
hooks AND their `permissions.allow`;
|
|
443
|
+
2. the launch adds the lane allow list plus the two per-task grants (the `worker-edit.ts` wrapper,
|
|
444
|
+
the validated test command);
|
|
445
|
+
3. the launch denies its static deny list PLUS **every allow rule those loaded sources contribute
|
|
446
|
+
and the lane does not grant**;
|
|
447
|
+
4. a deny outranks every allow, whatever its source — so step 3 is what makes step 2 the whole
|
|
448
|
+
surface.
|
|
449
|
+
|
|
450
|
+
Step 3 is `launch.ts`'s `settingsSourcePaths` + `loadSettingsAllowRules` (the union of the lane's
|
|
451
|
+
sources, in load order, deduped) + `settingsAllowRulesToDeny`. Both `settingsSourcePaths` and the
|
|
452
|
+
`--setting-sources` value are derived from one per-lane list (`LANE_SETTING_SOURCES`), so the flag and
|
|
453
|
+
the subtraction cannot describe different sets. They are read from the DISPATCHER's own checkout — the one every slot is a worktree
|
|
454
|
+
of, and the same place the lane settings file comes from — never from the slot. `.claude/settings.json`
|
|
455
|
+
is in the close's `SLOT_EXECUTED_PATHS` and the lane denies writing it, but "the file it edited decides
|
|
456
|
+
what it may do" is not a property to rest on two other mechanisms holding; and comparing a list from
|
|
457
|
+
the slot against a lane list from the checkout would be comparing two different files.
|
|
458
|
+
|
|
459
|
+
**"Does not grant" is decided by COVERAGE, not by string inequality**, because a deny is coarse. The
|
|
460
|
+
project file's `Bash(openspec status:*)` is already covered by the lane's `Bash(openspec:*)`, so
|
|
461
|
+
denying it by spelling would revoke the lane's own grant — and with it the SDD flow this lane exists
|
|
462
|
+
to run; `Bash(pnpm --filter aurora-back test:*)` sits inside `Bash(pnpm --filter * test)` the same
|
|
463
|
+
way, with the `*` read as a wildcard. A loaded rule the granted list already covers grants nothing new
|
|
464
|
+
and is skipped. The reverse overlap has no safe answer: a loaded rule BROADER than a rule the launch
|
|
465
|
+
grants — the project file's `Bash(pnpm test:hooks:*)` over a task whose declared test command is
|
|
466
|
+
`pnpm test:hooks <file>` — is either denied, revoking the task's own test grant, or kept, handing the
|
|
467
|
+
worker a runner that executes files out of a tree it can write to. So the task is BLOCKED
|
|
468
|
+
(`permission-conflict`) with both rules in the comment, for a person to resolve: narrow the settings
|
|
469
|
+
rule, or the task's test command. That visibility is the point — a permission conflict nobody sees is
|
|
470
|
+
the failure mode this whole section exists for.
|
|
471
|
+
|
|
472
|
+
**That refusal is guard 1b, not a launch failure.** It is a property of the task and of the settings
|
|
473
|
+
files in the dispatcher's own checkout, so it is knowable before anything is taken: `guards.ts`'s
|
|
474
|
+
`checkPermissionComposition` runs right after the triage checks, on BOTH lanes (it was frontier-only
|
|
475
|
+
while the local lane was believed to load no settings source at all), and the task never reaches slot
|
|
476
|
+
acquisition. Deciding it inside `buildLaunch` — as it did until round 10 —
|
|
477
|
+
cost a worktree slot, a lock, an attempt directory and a `dispatch-failed` block to report a
|
|
478
|
+
conflict that no attempt could have resolved. `settingsAllowRulesToDeny` still throws on it, as the
|
|
479
|
+
last-resort invariant behind the guard for a caller that composes a launch without evaluating it, and
|
|
480
|
+
both read the same `findPermissionConflict`.
|
|
481
|
+
|
|
482
|
+
**The comparison has TWO directions, and they are different questions.** "Is this loaded rule
|
|
483
|
+
already granted, so skip it?" is `grantCovers`, and it is deliberately STRICTER than the real matcher:
|
|
484
|
+
a false "not covered" only costs a deny for a rule the launch grants anyway, while a false "covered"
|
|
485
|
+
hands the worker surface nobody reviewed. "Would a deny for this rule revoke that grant?" is
|
|
486
|
+
`denyWouldRevoke`, and it must be exactly as coarse as Claude Code itself — a RAW prefix, `*` as
|
|
487
|
+
wildcard, no token boundary, no opinion about shell operators. Asking the strict predicate in the deny
|
|
488
|
+
direction was a live bug: the project's `Bash(pnpm test:hooks:*)` over a task declaring
|
|
489
|
+
`pnpm test:hooks-extra` read as unrelated, so the launch emitted the deny — and the deny killed the
|
|
490
|
+
task's own test grant. A rule that MIGHT revoke a grant is reported as a conflict, never denied.
|
|
491
|
+
|
|
492
|
+
Four details of `grantCovers` are load-bearing, because a permission rule is a PREFIX and a prefix
|
|
493
|
+
match is not the same question as coverage:
|
|
494
|
+
|
|
495
|
+
- **A command candidate must resume at a token boundary and carry no shell operator.**
|
|
496
|
+
`Bash(git status:*)` prefix-matches the string `git statusfoo`, which is a different command, and
|
|
497
|
+
`git status && fd .`, which is two — the second of them a binary this lane spends deny rules
|
|
498
|
+
refusing. Both read as UNCOVERED, so they are denied rather than waved through as "the lane already
|
|
499
|
+
grants that".
|
|
500
|
+
- **A boundary is a space OR a `:`, and a granted base can supply its own.** `:` separates a pnpm
|
|
501
|
+
script from its subcommand, so `Bash(pnpm --filter * test)` covers
|
|
502
|
+
`Bash(pnpm --filter aurora-back test:extra:*)`; and a granted base whose trailing boundary was
|
|
503
|
+
consumed by its own wildcard (`Bash(git *)` → `git `) has already matched at one, so
|
|
504
|
+
`Bash(git status:*)` is covered by it.
|
|
505
|
+
- **A path scoping is compared with a leading `./` stripped on both sides.** The lane spells its file
|
|
506
|
+
grants `Edit(./**)`/`Write(./**)` because the cwd is the slot, so without that normalization a
|
|
507
|
+
loaded `Edit(frontend/**)` read as uncovered — and the deny composed for it would have taken the
|
|
508
|
+
worker's write access to `frontend/` away.
|
|
509
|
+
- **A scoping that LEAVES the working directory is never covered by one that stays inside it.**
|
|
510
|
+
`Edit(/etc/**)` and `Edit(~/notes/**)` are the obvious cases; `Edit(../**)` is the one the `./`
|
|
511
|
+
normalization hid, since `..` reads as an ordinary relative glob to a prefix match.
|
|
512
|
+
|
|
513
|
+
**A non-covered FILE-tool scoping (`Read`/`Edit`/`Write`) blocks the task only when its deny would
|
|
514
|
+
reach inside the slot** — a bare rule (`Edit`), an unscoped glob (`Edit(**)`, `Edit(./**)`), or a
|
|
515
|
+
relative one (`Edit(frontend/**)`). A deny on those does not narrow the worker, it stops it opening
|
|
516
|
+
files there at all, so the task is blocked for a person instead. A scoping that only reaches OUTSIDE
|
|
517
|
+
the slot (`Edit(/etc/**)`, `Edit(~/x/**)`, `Edit(../**)`) is denied like any other rule, which is
|
|
518
|
+
precisely what the subtraction is for.
|
|
519
|
+
|
|
520
|
+
**A rule's SOURCE is part of the rule, because a path glob is relative to the file that declares it.**
|
|
521
|
+
`Edit(**)` in the project file scopes the checkout the worker runs in; the same rule in the USER file
|
|
522
|
+
scopes the whole home directory, which the lane has no way to grant — its own `Edit(./**)` is the
|
|
523
|
+
slot. So `loadSettingsAllowRules` tags each rule with the source it came from (`user` or `project`,
|
|
524
|
+
the first of the two winning when both declare it), and a USER-file path rule with no scoping of its
|
|
525
|
+
own (`Edit`, `Edit(**)`, `Edit(./**)`) blocks the task unless the lane grants that tool BARE — the
|
|
526
|
+
one grant that does reach outside the slot. Without the tag it read as covered by `Edit(./**)`, an
|
|
527
|
+
artefact of the `./` normalization, and the worker got `$HOME` silently.
|
|
528
|
+
|
|
529
|
+
What that denies out, measured against the shipped project file — 42 rules loaded, 30 denied, 12
|
|
530
|
+
already covered by the lane: `Bash(fd:*)`, `Bash(find:*)`,
|
|
531
|
+
`Bash(grep:*)`, the staging/committing/discarding git verbs, `Bash(gh auth:*)`/`Bash(gh pr:*)`,
|
|
532
|
+
`Bash(npm run format:*)`, `Bash(npm test:*)`, the three `npx` rules, `Bash(eslint:*)`, the
|
|
533
|
+
`pnpm exec` pair, every `Bash(pnpm test:…)` / `Bash(pnpm cli:test:*)` / `Bash(pnpm br:validate:*)` /
|
|
534
|
+
`Bash(pnpm hr:lint-barrels:*)` / `Bash(pnpm peers check:*)` runner, `Bash(aurora load:*)`,
|
|
535
|
+
`Bash(shasum:*)` and the two `mcp__claude-in-chrome__*` tools. Bash `grep` and `find` go with them:
|
|
536
|
+
the `Grep`/`Glob` tools are what this worker reads with, and the read-only Bash hook cannot hand a
|
|
537
|
+
denied command back. `launch.test.ts` asserts that outcome over the SHIPPED `.claude/settings.json`
|
|
538
|
+
and the shipped lane file — the only loaded source that lives in the repo — so a rule somebody adds to
|
|
539
|
+
the project list tomorrow is denied on the next launch with nobody editing `launch.ts`.
|
|
540
|
+
|
|
541
|
+
### Test commands that conflict with the project allow list
|
|
542
|
+
|
|
543
|
+
**Over the two loaded sources as they stand, no launch refuses on the LANE list**: nothing in the 42
|
|
544
|
+
rules is broader than a lane rule. What remains is per-task, and it is one shape — a declared
|
|
545
|
+
`Test command:` that is a NARROWER form of one of the project file's script rules. Five rules in that
|
|
546
|
+
file can swallow a task's own test grant, so a task whose test command is `pnpm test:hooks`,
|
|
547
|
+
`pnpm test:contracts`, `pnpm test:packager`, `pnpm test:catalyst-regen` or `pnpm cli:test` WITH AN
|
|
548
|
+
ARGUMENT is blocked with `permission-conflict` before a slot is taken:
|
|
549
|
+
|
|
550
|
+
| Project rule | A declared test command it swallows |
|
|
551
|
+
| --- | --- |
|
|
552
|
+
| `Bash(pnpm test:hooks:*)` | `pnpm test:hooks scripts/x.test.ts` |
|
|
553
|
+
| `Bash(pnpm test:contracts:*)` | `pnpm test:contracts <file>` |
|
|
554
|
+
| `Bash(pnpm test:packager:*)` | `pnpm test:packager <file>` |
|
|
555
|
+
| `Bash(pnpm test:catalyst-regen:*)` | `pnpm test:catalyst-regen <file>` |
|
|
556
|
+
| `Bash(pnpm cli:test:*)` | `pnpm cli:test <file>` |
|
|
557
|
+
|
|
558
|
+
Both rules are named in the block comment. **The resolution is per-task: declare a command the
|
|
559
|
+
project list does not cover** — the repo's own convention, `pnpm --filter <pkg> test <file>`, which
|
|
560
|
+
the lane's `Bash(pnpm --filter * test)` covers outright. Declaring the command exactly as the
|
|
561
|
+
project rule spells it (no argument) also clears it, since an identical rule is covered rather than
|
|
562
|
+
broader. **Never widen the lane's allow list to clear one of these**: the lane list is the reviewed
|
|
563
|
+
surface of EVERY frontier task, and widening it to unblock one task grants that runner to all of
|
|
564
|
+
them — a task-shaped problem paid for by every task that follows. (Excluding the overlay is what removed the lane-wide case:
|
|
565
|
+
`Bash(git *)` and `Bash(pnpm *)` in it are broader than `Bash(git status:*)` and
|
|
566
|
+
`Bash(pnpm --filter * test)`, so while that file was a source, every single frontier launch
|
|
567
|
+
refused.)
|
|
568
|
+
|
|
569
|
+
**Three assumptions under all of this were documented Claude Code behaviour; one of them has since
|
|
570
|
+
been MEASURED, and the measurement corrected it.** The phase-9 end-to-end run (tasks.md 9.7) must
|
|
571
|
+
still confirm the other two from `stream.jsonl` on a dispatched frontier task:
|
|
572
|
+
|
|
573
|
+
1. **Deny beats allow from any source.** A command the project list allows and the lane does not
|
|
574
|
+
(`fd .`) is refused, and a command the lane grants under a rule broader than the project's
|
|
575
|
+
(`openspec list`) still runs. Everything in this section rests on it.
|
|
576
|
+
2. **A mid-rule `*` is a wildcard — but ONLY in glob form, never combined with a trailing `:*`.**
|
|
577
|
+
Measured (T-7, 2026-09-07, Claude Code 2.1.263, `claude -p` probes with `--setting-sources user`
|
|
578
|
+
and 0 allow rules, `--permission-mode dontAsk`): `Bash(pnpm --filter * test:*)` does **not** allow
|
|
579
|
+
`pnpm --filter aurora-back test` — that combination of a mid-rule `*` with a trailing `:*` matches
|
|
580
|
+
NOTHING at all, on any command line. The coverage comparison (`grantCovers`) still treats a
|
|
581
|
+
mid-rule `*` as a wildcard, and that stays correct for the shape the frontier lane ships instead
|
|
582
|
+
of the retired rule: `Bash(pnpm --filter * test)` (exact form, no trailing glob) and
|
|
583
|
+
`Bash(pnpm --filter * test *)` (with one or more arguments) — see "The task's own test command is
|
|
584
|
+
granted per launch" above. The "12 rules already covered" result below rests on the EXACT-FORM
|
|
585
|
+
half of that pair.
|
|
586
|
+
3. **Commands are split before matching.** A compound line (`git status && fd .`) is refused rather
|
|
587
|
+
than admitted by its allowed prefix. The comparison assumes this and refuses coverage for a
|
|
588
|
+
compound candidate; if the real matcher were to admit one, that assumption is the barrier that
|
|
589
|
+
moved.
|
|
590
|
+
|
|
591
|
+
**`Bash(catalyst:*)` is a broad grant, and it is a deliberate one.** It is the generator: one
|
|
592
|
+
`catalyst generate <bc> <module> --force` rewrites every emitted file of a whole bounded context —
|
|
593
|
+
far more than the task's own subject, and with no `.origin` reconciliation on this lane. The lane
|
|
594
|
+
grants it because a frontier task that changes a schema cannot do its job without it. Nothing narrows
|
|
595
|
+
it at launch: the review is the close's scope check over the real diff, which still stops the
|
|
596
|
+
generator from reaching `.claude/settings*.json` or `.backlog/` (the hard list, `SLOT_EXECUTED_PATHS`)
|
|
597
|
+
and, regardless of the two lists, the mirror output `packages/cli/src/templates/` — `packages/cli/`
|
|
598
|
+
itself and `scripts/backlog/` are the soft list now, so a regen that reaches them is ADMITTED and
|
|
599
|
+
marks the pull request instead of failing (see "Forbidden paths, split by mechanism" below) — and
|
|
600
|
+
then the PR itself, which is the human gate either way. If a regen's blast radius on a
|
|
601
|
+
slot ever needs bounding tighter than that, it is a rule change to argue for with evidence, not a
|
|
602
|
+
comment to add here.
|
|
603
|
+
|
|
604
|
+
**The effective permission surface on the frontier lane is: the lane allow list, plus the read-only
|
|
605
|
+
commands a project hook vets, minus the deny list — where the deny list also cancels the project
|
|
606
|
+
allow rules the lane does not grant.** The lane runs the full harness, and the
|
|
607
|
+
project's `PreToolUse` hook on `Bash` — `.claude/hooks/auto-allow-readonly-bash.ts` — answers
|
|
608
|
+
`permissionDecision: "allow"` for a vetted read-only table (`grep`, `sed -n`, `git log`, `find`
|
|
609
|
+
without `-exec`/`-delete`, and the rest of `READ_ONLY_COMMANDS`, refusing redirections, command
|
|
610
|
+
substitution, heredocs, path-invoked commands and every write-capable mode). That is deliberate and
|
|
611
|
+
kept: an orchestrator needs to READ the repo, and the alternative is one allow rule per binary, which
|
|
612
|
+
is the moving target this lane just stopped inheriting. So a read-only Bash command may run here even
|
|
613
|
+
though no lane rule names it — and nothing that WRITES or EXECUTES may, because the hook refuses
|
|
614
|
+
those and the deny list refuses them again.
|
|
615
|
+
|
|
616
|
+
The hook is not the only reason that happens. Measured on the local lane (which loads no hook at all
|
|
617
|
+
under `--bare`): with `--allowedTools 'Read'` and nothing else, a bare `ls` through `Bash` was
|
|
618
|
+
allowed with `permission_denials: []`, while a compound `ls -la; cat a.txt; echo …` was denied. Claude
|
|
619
|
+
Code itself auto-approves a Bash command it can statically read as read-only. The hook's value is that
|
|
620
|
+
it is the vetted table we OWN — but "no allow rule names it, therefore it cannot run" was never true
|
|
621
|
+
of a read-only command on either lane.
|
|
622
|
+
|
|
623
|
+
**A deny rule is what holds regardless of source.** A deny outranks any allow rule, from the lane
|
|
624
|
+
file, from whatever settings the harness loads, or from a hook answering `allow` — which is why the
|
|
625
|
+
list below keeps rules the lane's own allowlist no longer contains.
|
|
626
|
+
|
|
627
|
+
**The frontier deny list is the local one minus two documented allowances.** Both lanes deny
|
|
628
|
+
`Bash(git push:*)`/`Bash(git push*)` and `Bash(gh:*)`/`Bash(gh *)` (each in both spellings, because
|
|
629
|
+
they match different command shapes and a rule that fails to match denies nothing), `WebFetch`,
|
|
630
|
+
`WebSearch`, and `Edit`/`Write` on `.backlog/**`, `.husky/**`, `node_modules/**`, `package.json`,
|
|
631
|
+
`pnpm-lock.yaml` and `.git/**` — the board, and everything that governs or runs the dispatcher
|
|
632
|
+
itself. The frontier list adds the git verbs that stage, commit, move a branch or throw work away
|
|
633
|
+
(`git add`, `git commit`, `git restore`, `git branch`, `git clean` — the close is what commits and
|
|
634
|
+
pushes, and `restore`/`clean` destroy the very work it is about to save) and the two file finders
|
|
635
|
+
that can execute what they find (`find`, `fd`), each in both spellings.
|
|
636
|
+
|
|
637
|
+
`Edit`/`Write` on `.claude/**` and `scripts/**` are the two allowances: a frontier task may
|
|
638
|
+
legitimately edit a skill or the tooling, which is part of why it runs on the wider lane at all —
|
|
639
|
+
and the lane's narrowed denials below carve the dangerous corners back out, with the close's hard
|
|
640
|
+
list (`SLOT_EXECUTED_PATHS`) re-checking both `.claude/settings*.json` against the real diff
|
|
641
|
+
regardless of what the permission rule matched. `scripts/backlog/` is SOFT now (T-31) — admitted, and
|
|
642
|
+
marking the pull request for human review, rather than re-checked as a violation.
|
|
643
|
+
`scripts/**` stays writable, and it is safe BECAUSE no granted command
|
|
644
|
+
executes it: the allow list carries no `node`, `tsx`, `npx`, `pnpm test:` or bare `pnpm run` rule, so
|
|
645
|
+
the pair is a permission to EDIT a script, never to run one — with two exceptions the CLOSE creates,
|
|
646
|
+
not the worker: `scripts/packager/` (spawned by the mirror regeneration) and `scripts/harness-rules/`
|
|
647
|
+
(run by the barrels lint), which is why both are on the close's hard list. `launch.test.ts` compares
|
|
648
|
+
the FULL deny lists against that allowance set, so the wider lane can never again be guarded less by
|
|
649
|
+
omission.
|
|
650
|
+
|
|
651
|
+
Those allowances are NARROWED, not blanket. The frontier lane replaces the local lane's `.claude/**`
|
|
652
|
+
deny with the executable corners of that directory plus BOTH settings files and the instruction
|
|
653
|
+
files: `Edit`/`Write` on `.claude/hooks/**`, `.claude/scripts/**`, `.claude/settings.json`,
|
|
654
|
+
`.claude/settings.local.json`,
|
|
655
|
+
`CLAUDE.md` and `**/CLAUDE.md` (and the `Claude.md`/`claude.md` casings, since macOS is
|
|
656
|
+
case-insensitive while a permission glob compares the spelling it was given). The reason is that the
|
|
657
|
+
harness EXECUTES the first two inside the slot: the project's `PostToolUse` hook runs
|
|
658
|
+
`$CLAUDE_PROJECT_DIR/.claude/hooks/format-with-prettier.ts` after every Write/Edit, and
|
|
659
|
+
`CLAUDE_PROJECT_DIR` is the slot the worker is writing to — so a hook written there runs as the
|
|
660
|
+
worker on its very next edit, past every other rule; `.claude/scripts/` runs the same way from
|
|
661
|
+
`SessionStart`. `.claude/settings.json` is the file this very launch READS to compose its deny list,
|
|
662
|
+
and the project settings source the worker itself loads — the one place where "the file it edited
|
|
663
|
+
decides what it may do" would be literally true; `.claude/settings.local.json` is the same surface —
|
|
664
|
+
hooks and permissions — and the file Claude Code reads LAST, so a rule written there outranks the one
|
|
665
|
+
it overlays. `.claude/hooks/**`, `.claude/scripts/**` and both settings files are in the close's HARD
|
|
666
|
+
list (`SLOT_EXECUTED_PATHS`) too, so the real diff is checked on BOTH lanes even if a permission rule
|
|
667
|
+
fails to match — and `.claude/settings.local.json` needed its own entry there, because the matcher
|
|
668
|
+
compares substrings and `.claude/settings.local.json` does not contain `.claude/settings.json`.
|
|
669
|
+
`CLAUDE.md` is what the next reader (the next dispatched worker on this slot included) treats as law,
|
|
670
|
+
and it is the one entry on the hard list the harness READS rather than executes: it is in
|
|
671
|
+
`SLOT_EXECUTED_BASENAMES`, refused at close on BOTH lanes and blocked in the queue by guard 1c — see
|
|
672
|
+
the list section for the two measured mechanisms (the local lane's AI reviewer reads it, and a failed
|
|
673
|
+
attempt's copy is restored into the slot for the retry's executor to read). A skill under
|
|
674
|
+
`.claude/skills/` and a tool under `scripts/` (outside `scripts/backlog/`) stay editable — that is
|
|
675
|
+
the allowance the wider lane exists for, and `.claude/` read as INSTRUCTIONS is the gap the list
|
|
676
|
+
section records by name.
|
|
677
|
+
|
|
678
|
+
The frontier lane additionally denies the raw board write on BOTH surfaces it could reach —
|
|
679
|
+
`Bash(backlog task edit:*)` / `Bash(backlog task edit *)` and the
|
|
680
|
+
`mcp__backlog__task_{edit,create,complete,archive}` tools. The launch also passes
|
|
681
|
+
`--strict-mcp-config` (T-24), the same flag the local lane and `reviewer.ts` already pass. Measured
|
|
682
|
+
2026-09-09 (`claude -p "ok" --output-format stream-json --verbose --max-turns 1 --model haiku`,
|
|
683
|
+
reading the `system`/`init` event): without the flag, the frontier worker's init event listed 101
|
|
684
|
+
tools, 68 of them `mcp__*`. `mcp_servers` declared six entries (chrome-devtools, context7, backlog,
|
|
685
|
+
spartan-ng-mcp, angular-cli, thesvg), but only four actually supplied a tool — chrome-devtools 29,
|
|
686
|
+
backlog 20, spartan-ng-mcp 14, angular-cli 5, summing to the 68 — while context7 was `status:
|
|
687
|
+
"failed"` and thesvg `status: "pending"`, neither contributing one. With the flag: 30 tools, 0 of
|
|
688
|
+
them `mcp__*`, no declared servers at all. No rule in `frontier.settings.json` grants any `mcp__*`
|
|
689
|
+
tool, so those 68 tools were loaded only to be denied by omission under `--permission-mode dontAsk`
|
|
690
|
+
— the flag removes that dead weight at the source. The `mcp__backlog__task_*` deny rules above stay
|
|
691
|
+
regardless: with the MCP servers no longer loaded at all, they are defence in depth rather than the
|
|
692
|
+
active barrier, so the protection does not depend on a single flag. A write reachable by either
|
|
693
|
+
route re-statuses the task or rewrites the criteria the close judges it against.
|
|
694
|
+
|
|
695
|
+
**The frontier lane also denies eleven personal claude.ai connector servers.** At the time (T-3,
|
|
696
|
+
2026-09-07), the frontier worker's init event had listed 152 tools, including
|
|
697
|
+
`mcp__claude_ai_Gmail__*`, `mcp__claude_ai_Notion__*`, `mcp__claude_ai_Linear__*`,
|
|
698
|
+
`mcp__claude_ai_Asana__*`, `mcp__claude_ai_Atlassian__*`, `mcp__claude_ai_Box__*`,
|
|
699
|
+
`mcp__claude_ai_Canva__*`, `mcp__claude_ai_Figma__*`, `mcp__claude_ai_HubSpot__*`,
|
|
700
|
+
`mcp__claude_ai_Intercom__*` and `mcp__claude_ai_monday_com__*` — loaded through the account login
|
|
701
|
+
rather than through any settings file this launch reads, the same way `.mcp.json` "is not a settings
|
|
702
|
+
source and loads regardless" (see Lane profiles above). That is a historical record of that one
|
|
703
|
+
measurement, not a description of what loads today — a headless worker must never reach a person's
|
|
704
|
+
mail or project-management tools regardless of what any given flag happens to load, so each
|
|
705
|
+
connector's whole server is denied by name using the shape Claude Code documents for an MCP
|
|
706
|
+
server-level spec (`mcp__<server>`, `mcp__<server>__*` or `mcp__*` remove every tool from the named
|
|
707
|
+
server, or from all servers) — there is no glob that spans multiple distinct server names, which is
|
|
708
|
+
why the eleven are spelled out rather than matched by a shared `claude_ai_` prefix. A deny rule
|
|
709
|
+
holds regardless of source (see above), so it denies the connectors whichever mechanism loaded
|
|
710
|
+
them.
|
|
711
|
+
|
|
712
|
+
These eleven deny rules stay even now that the launch also passes `--strict-mcp-config` (T-24):
|
|
713
|
+
they are deliberate defence in depth, so the protection does not depend on a single flag. Whether
|
|
714
|
+
`--strict-mcp-config` would ALSO have kept these specific connectors from loading is UNVERIFIED —
|
|
715
|
+
the T-24 probe measured above ran in a shell where an auth source (`ANTHROPIC_API_KEY` or another)
|
|
716
|
+
had already disabled claude.ai connectors, taking precedence over the claude.ai login T-3 used, so
|
|
717
|
+
T-24's probe could not observe these eleven loading or not loading either way; T-3 above is the
|
|
718
|
+
only probe that ever observed them load. Do not read the T-24 measurement above (six declared
|
|
719
|
+
servers, four of which supplied tools, none of them a personal connector) as evidence on this
|
|
720
|
+
question; it ran in a different shell than T-3's.
|
|
721
|
+
|
|
722
|
+
**The frontier worker gets a system prompt of its own.** It runs the harness, so it reads `CLAUDE.md`
|
|
723
|
+
— which describes an INTERACTIVE session and says nothing about `worker-edit.ts`. Launched without
|
|
724
|
+
one, the worker reached for `backlog task edit`, was denied, and finished with every acceptance
|
|
725
|
+
criterion unticked, which the close's AC gate then failed it for, every time. `prompt.ts`'s
|
|
726
|
+
`buildFrontierAddendum` renders `.claude/skills/catalyst-backlog/frontier-worker-addendum.md` — the
|
|
727
|
+
template — into `.backlog/.dispatch/<id>/intento-N/frontier-addendum.md`, filling in the task id and
|
|
728
|
+
the wrapper command bound to it, and the launch passes THAT path to
|
|
729
|
+
`--append-system-prompt-file`. It carries only the facts `CLAUDE.md` cannot, because it describes an
|
|
730
|
+
INTERACTIVE session: which directory it works in (its slot, named in full, with the main checkout
|
|
731
|
+
named as the tree it must never touch — `{{SLOT_PATH}}`/`{{MAIN_CHECKOUT_PATH}}`, rendered per
|
|
732
|
+
attempt like the wrapper command);
|
|
733
|
+
|
|
734
|
+
**Both lanes' `--append-system-prompt-file` path is ABSOLUTE, under the main checkout.** The frontier
|
|
735
|
+
lane's rendered addendum always was (it is written into `.backlog/.dispatch/…`); the local lane's
|
|
736
|
+
static `worker-system-prompt.md` was a RELATIVE path until T-31 round 3, and `launch.ts` spawns the
|
|
737
|
+
executor with `cwd` = the SLOT — so the worker's own brief was read from the tree the worker writes.
|
|
738
|
+
`resolveWorkerSystemPromptPath` (`dispatch.ts`) resolves it against `repoRoot` instead, which closes
|
|
739
|
+
the channel rather than watching it: `--bare` does not close it (the flag is explicit on the command
|
|
740
|
+
line), and the two mechanisms that happened to bound it — the local lane's `.claude/**` deny and the
|
|
741
|
+
`.claude/` entry in `LOCAL_FORBIDDEN_PATHS` — are exactly the "one mechanism is not enough" shape the
|
|
742
|
+
hard list exists for.
|
|
743
|
+
|
|
744
|
+
The invariant is ASSERTED where the argv is built (`buildLaunch`, round 4): a relative value throws and
|
|
745
|
+
aborts the launch, which releases the slot and blocks the task. Resolving it in one of the two producers
|
|
746
|
+
and asserting nothing at the point of use left the property untested — the two lanes compute the value
|
|
747
|
+
differently, and the property belongs to the flag, not to either computation.
|
|
748
|
+
|
|
749
|
+
The addendum also covers: running its test command EXACTLY as declared, with no pipes,
|
|
750
|
+
`&&`, redirections or `cd` (T-3: a worker piped one through `grep`/`tail` and was denied — Claude
|
|
751
|
+
Code evaluates each segment of a compound line separately, and the close runs the same bare command
|
|
752
|
+
again anyway); the dispatcher already set the task `In Progress` and the worker never writes the
|
|
753
|
+
status; the four wrapper flags and the fact that an unchecked criterion blocks the attempt; that the
|
|
754
|
+
task's `path:` label is BINDING, not a recommendation — `path:sdd` runs the SDD flow
|
|
755
|
+
(`/opsx:propose` then `/opsx:apply`, Automatic mode) before any code change, `path:direct` takes the
|
|
756
|
+
direct path with the tier's gates, and `CLAUDE.md`'s interactive "recommend SDD and let the user
|
|
757
|
+
choose" rule cannot apply headless, because there is no user to choose (T-3 measured a worker read
|
|
758
|
+
that rule and implemented directly under `path:sdd` anyway, with no `openspec/changes/<name>` ever
|
|
759
|
+
created); that a diff touching the security surface (`o-auth/`, `iam/`, a guard, `@Auth`, secrets or
|
|
760
|
+
env config, a new public endpoint, an upload, a raw query, crypto/token/session handling) still gets
|
|
761
|
+
a `/security-review` pass before finishing, reported in the task notes, exactly as the root
|
|
762
|
+
`CLAUDE.md`'s security gate requires (the same T-3 run edited `backend/src/@app/iam/**` with no
|
|
763
|
+
such pass — that gate has no person to trigger it headless either); a gate needing a person ends the
|
|
764
|
+
run as `needs-guidance` (the close is what moves the task to `Blocked`); and no `git`, `gh`, or
|
|
765
|
+
install.
|
|
766
|
+
|
|
767
|
+
**Both prompts name the working directory, because the worker cannot infer it.** Measured (T-5,
|
|
768
|
+
2026-09-07): the local executor's FIRST `Edit` targeted the MAIN checkout's copy of the file it had to
|
|
769
|
+
change, not its slot's. It had taken the repository root off the `File: …/.backlog/tasks/t-5 …` line
|
|
770
|
+
of the task block — the board lives in the main checkout — and nothing in the envelope said where it
|
|
771
|
+
actually was. `Edit(./**)` denied it, correctly (the cwd is the slot), so the attempt spent turns
|
|
772
|
+
being refused a path nobody had told it about. The local envelope now opens, immediately after the
|
|
773
|
+
task text, with the slot path, "every path in this task is relative to it", the main checkout named as
|
|
774
|
+
a tree it must never read, edit or run anything in, and the reason the confusion arose ("the board
|
|
775
|
+
file path shown in the task block lives in the main checkout; do not treat its directory as your
|
|
776
|
+
repository root"). The frontier addendum carries the same block. A permission rule is the barrier;
|
|
777
|
+
this is what stops a worker walking into it.
|
|
778
|
+
|
|
779
|
+
**Cost knob:** `ANTHROPIC_DEFAULT_OPUS_MODEL` is the value to change if Opus-priced frontier work
|
|
780
|
+
gets too expensive — set it in `frontier.settings.json`'s `env` (currently empty) to redirect
|
|
781
|
+
every internal "opus" alias to a cheaper model without touching `launch.ts`'s path-to-alias logic
|
|
782
|
+
at all. On the local lane this same key is already set (to the local model id) for the reason
|
|
783
|
+
above.
|
|
784
|
+
|
|
785
|
+
## The close: what actually gates a PR
|
|
786
|
+
|
|
787
|
+
**The first step is not mechanical at all: the board still has to describe the task that was
|
|
788
|
+
launched** (`checkBoardIntegrity`). The worker can write to its own task for its whole run — it
|
|
789
|
+
must, since the wrapper is its only channel for ticking criteria — so the close re-reads the task and
|
|
790
|
+
compares it against the snapshot taken at launch. The wrapper is the BARRIER; this gate is the
|
|
791
|
+
DETECTOR behind it, for the case where a permission rule silently fails to match anyway:
|
|
792
|
+
|
|
793
|
+
- the status must still be `In Progress`. A worker that set itself to `Done` gets a maintenance
|
|
794
|
+
sweep reading a finished task nobody verified; one that set itself to `Queued` gets dispatched
|
|
795
|
+
again by the next pass while this close is still running. Anything else fails the attempt with
|
|
796
|
+
`status-changed-by-worker`.
|
|
797
|
+
- the acceptance-criteria and Definition-of-Done TEXTS must be unchanged (`ac-tampered` otherwise).
|
|
798
|
+
Only the texts: the CHECKED state is exactly what the worker is supposed to change. The pre-PR
|
|
799
|
+
gate and the reviewer both judge the attempt against those criteria, so a criterion rewritten
|
|
800
|
+
into something the attempt can meet is a gate the thing under test authored itself.
|
|
801
|
+
- the **title**, the declared **`Files to touch:`** and the declared **`Test command:`** must be
|
|
802
|
+
unchanged too, same `ac-tampered` reason. They are the rest of the contract the attempt is judged
|
|
803
|
+
against — the title names the PR, the declared files are the allowlist the scope check runs, and
|
|
804
|
+
the test command is what the triad executes — and all three are description text a board write can
|
|
805
|
+
reach. The message attributes the drift to "worker o persona" and lists the differences: a person
|
|
806
|
+
editing the board mid-attempt produces exactly the same drift, and the remedy is the same either
|
|
807
|
+
way (re-queueing re-takes the snapshot).
|
|
808
|
+
|
|
809
|
+
It runs FIRST because every step after it trusts the board: the scope check reads the declared
|
|
810
|
+
files, the triad the test command, the gate and the reviewer the criteria.
|
|
811
|
+
|
|
812
|
+
### Forbidden paths, split by mechanism (T-31)
|
|
813
|
+
|
|
814
|
+
The scope check (`checkScope`, `guards.ts`/`close.ts`) reads two path lists, split by ONE mechanical
|
|
815
|
+
question: **does this file execute inside the slot during the attempt or the close?**
|
|
816
|
+
|
|
817
|
+
- **`SLOT_EXECUTED_PATHS`** (hard, `guards.ts`) — the harness's own settings and its local overlay
|
|
818
|
+
(`.claude/settings.json`, `.claude/settings.local.json`), the hook and script directories the
|
|
819
|
+
harness runs after every edit (`.claude/hooks/`, `.claude/scripts/`), the version-control hooks the
|
|
820
|
+
close's own commit runs (`.husky/`), the package manifest, the lockfile and the installed
|
|
821
|
+
dependency tree the close runs Prettier, the barrels lint and the task's own test command with
|
|
822
|
+
(`package.json`, `pnpm-lock.yaml`, `node_modules/`), the board directory holding the criteria the
|
|
823
|
+
attempt is judged against (`.backlog/`), and the two script directories the close SPAWNS from
|
|
824
|
+
inside the slot: `scripts/packager/` (the `mirrorRegen` step runs `node
|
|
825
|
+
scripts/packager/publish.mjs` there, and that script GLOBS `monorepo.mjs`, `backend/*.mjs` and
|
|
826
|
+
`frontend/*.mjs` inside its OWN directory — derived from `import.meta.url`, so the slot's copy —
|
|
827
|
+
and spawns every match with the dispatcher's inherited environment) and `scripts/harness-rules/`
|
|
828
|
+
(the triad runs `pnpm hr:lint-barrels`, which the root `package.json` maps to `tsx
|
|
829
|
+
scripts/harness-rules/lint-barrels.ts`; the manifest being hard protects the script NAME, not the
|
|
830
|
+
file it points at). Refused on BOTH lanes, whether or not the task declared it — and blocked in the
|
|
831
|
+
QUEUE before a slot is ever taken, by guard 1c (`checkDeclaredSlotExecutedPath`), when a task
|
|
832
|
+
DECLARES one, including when it declares a DIRECTORY whose subtree contains one.
|
|
833
|
+
|
|
834
|
+
A declaration is read as reaching the list both when it lies UNDER a listed path and when it is a
|
|
835
|
+
DIRECTORY that contains one, with or without the trailing slash: `- .claude` and `- .claude/` both
|
|
836
|
+
reach `.claude/settings.json`. The containment direction matches on a segment boundary, so a bare
|
|
837
|
+
textual prefix is not a declaration of what it prefixes (`- package` names `package/`, not
|
|
838
|
+
`package.json`).
|
|
839
|
+
|
|
840
|
+
**Four** things the close reaches inside the slot are deliberately NOT on this list, recorded in
|
|
841
|
+
`openspec/changes/split-dispatcher-forbidden-paths/design.md` decision 1 rather than left silent:
|
|
842
|
+
|
|
843
|
+
- the slot's own `.git/` directory — its hooks really do run, but no `diff`/`status` output ever
|
|
844
|
+
reports a path inside it, so a list entry could never be enforced;
|
|
845
|
+
- `.claude/` read as INSTRUCTIONS on the frontier lane — `skills/`, `rules/`, `agents/`,
|
|
846
|
+
`commands/`. The executor reads them; no close step executes them. They are on neither list, so
|
|
847
|
+
a frontier attempt can rewrite its own skills and neither the pull request nor the `Blocked`
|
|
848
|
+
comment says so. This is the gap with a live self-instruction consequence, and it is wider than
|
|
849
|
+
it looks: a failed attempt's tree is pushed to `task/<id>` and RESTORED by the retry's
|
|
850
|
+
`checkout -B` (see the soft list below), so what attempt 1 writes there is what attempt 2's
|
|
851
|
+
executor boots reading. Widening the criteria into a soft PATH list for `.claude/` is a
|
|
852
|
+
follow-up;
|
|
853
|
+
- the drift-check workflow the mirror step parses — a worker can only cost itself the attempt with
|
|
854
|
+
it, never gain privilege;
|
|
855
|
+
- the task's declared `Test command:` — the standing hole this dispatcher has always had, and the
|
|
856
|
+
mechanism that makes "inert during the attempt" untrue of ANY path (below).
|
|
857
|
+
- **`SLOT_EXECUTED_BASENAMES`** (hard, `guards.ts`) is the basename half of the hard list, and holds
|
|
858
|
+
one entry: `CLAUDE.md`, matched by file name at any depth and case-insensitively. Refused at close
|
|
859
|
+
on BOTH lanes and blocked in the queue by guard 1c, for two measured reasons. First, the local
|
|
860
|
+
close runs an AI reviewer over the attempt's own diff, spawned with `cwd` = the slot, and
|
|
861
|
+
`buildReviewerCommand` (`reviewer.ts`) does NOT pass `--bare` — the one flag that turns
|
|
862
|
+
instruction-file auto-discovery off, and one the reviewer cannot take, because under `--bare`
|
|
863
|
+
authentication is strictly `ANTHROPIC_API_KEY`/`apiKeyHelper` and `reviewerEnv()` strips every
|
|
864
|
+
`ANTHROPIC_*` key: an instruction file the local executor writes is read as instructions by the
|
|
865
|
+
judge of that same attempt. Second, on EITHER lane an instruction file written by attempt N is read
|
|
866
|
+
by attempt N+1's executor — the failure plan opens no pull request at all, so no PR mark is applied,
|
|
867
|
+
yet `saveWipAndPush` commits the whole slot tree to `task/<id>` and the retry's `prepareSlot` runs
|
|
868
|
+
`checkout -B task/<id> origin/task/<id>` and restores it. A mark that only exists on the green path
|
|
869
|
+
is not a control over a file that survives the failing one. Nothing else covers this file: the lane
|
|
870
|
+
settings grant `Write(./**)` with no `CLAUDE.md` deny, and `.claude/` is not a substring of
|
|
871
|
+
`claude.md`.
|
|
872
|
+
- **`HUMAN_REVIEW_PATHS`** (soft, `guards.ts`) — the dispatcher's own sources (`scripts/backlog/`)
|
|
873
|
+
and the generator package (`packages/cli/`). A soft path is ADMITTED, not refused, and marks the
|
|
874
|
+
resulting pull request for human review (see "open-pr reuses the PR" below) instead of failing the
|
|
875
|
+
close. On the local lane a soft path still has to be DECLARED to pass — the undeclared-file check
|
|
876
|
+
is unchanged — and `scripts/backlog/` stays refused there regardless, because the local lane's
|
|
877
|
+
wider `scripts/` extra (below) still catches it.
|
|
878
|
+
|
|
879
|
+
**Soft does NOT mean inert**, and the two mechanisms that make it not mean that were measured
|
|
880
|
+
directly, so nobody has to rediscover them:
|
|
881
|
+
|
|
882
|
+
- a soft-list file CAN be executed inside the slot during the CLOSE. Admitting the diff at
|
|
883
|
+
`scope-check` is precisely what unlocks the rest of the success plan, and the triad's last step
|
|
884
|
+
spawns the task's own declared `Test command:` with `cwd` = the slot and the dispatcher's
|
|
885
|
+
inherited environment. `ALLOWED_TEST_SCRIPT` admits `test:backlog`, which the root manifest maps
|
|
886
|
+
to a runner over `scripts/backlog/**` — the SLOT's copies. This is not a privilege the soft list
|
|
887
|
+
grants: every dispatched task's test command already runs worker-written code in the slot the
|
|
888
|
+
same way (the fourth gap above). It is the reason the classification cannot rest on "nothing
|
|
889
|
+
runs it";
|
|
890
|
+
- a soft-list edit SURVIVES a failed attempt. `saveWipAndPush` commits and pushes the whole slot
|
|
891
|
+
tree to `task/<id>`, and the retry's `prepareSlot` runs `checkout -B task/<id>
|
|
892
|
+
origin/task/<id>`, which restores it into the slot. "The slot is hard-reset, so nothing survives
|
|
893
|
+
the attempt" holds only for a branch with no such push behind it.
|
|
894
|
+
|
|
895
|
+
What justifies the classification is narrower, and does hold: neither entry is read as INSTRUCTIONS
|
|
896
|
+
by any process (that is the difference from `SLOT_EXECUTED_BASENAMES` above), and neither is on the
|
|
897
|
+
path the dispatcher itself runs from — it runs from the MAIN checkout, the worker's board wrapper
|
|
898
|
+
and the board itself live only there, and the generator is never invoked by the close. So the
|
|
899
|
+
reachable outcome of editing either one is a test run that behaves differently, which costs the
|
|
900
|
+
attempt and is exactly what the mark sends a person to read.
|
|
901
|
+
|
|
902
|
+
The mark is not the only record. A FAILED close opens no pull request, so on that path the
|
|
903
|
+
`Blocked` comment names the soft-list files (`BlockDetails.humanReviewFiles`) — otherwise an
|
|
904
|
+
attempt that touched the dispatcher's own sources and then failed would leave no trace of having
|
|
905
|
+
done so. That holds for EVERY failure shape, and the common ones are the ones with no scope check
|
|
906
|
+
behind them: a MECHANICAL step's failure diverts a plan that already ran `scope-check`, so the files
|
|
907
|
+
are already known, while a SESSION-level failure (`needs-guidance`, a timeout, an exhausted budget,
|
|
908
|
+
a crash) plans straight to `save-work` and runs no mechanical step at all — and `board-check`, the
|
|
909
|
+
one mechanical step ordered BEFORE the scope check, diverts without one too. On any of those
|
|
910
|
+
`executeClose` asks the slot itself through the `leftoverFiles` runner (`collectLeftoverFiles`)
|
|
911
|
+
BEFORE the WIP commit rewrites the tree; the probe is keyed on "has anything classified this tree
|
|
912
|
+
yet", not on the plan's shape, so no future step ordering can reintroduce a divert that records
|
|
913
|
+
nothing.
|
|
914
|
+
|
|
915
|
+
That probe carries no verdict, but it does CLASSIFY — with `classifyChangedPaths`, the same function
|
|
916
|
+
`checkScope` reads, per lane. It returns two buckets, and the `Blocked` comment renders them as two
|
|
917
|
+
separate lines because they ask a person for opposite things: a soft-list leftover has to be READ,
|
|
918
|
+
and a refused one (a hard-list path, or the mirror output) has to be REMOVED before the retry
|
|
919
|
+
restores it. T-31 round 3 filtered the tree through the soft list alone, which reported a
|
|
920
|
+
`packages/cli/src/templates/…` path as a soft-list file the close admits — the one prefix refused on
|
|
921
|
+
both lanes — and said nothing at all about `.claude/settings.json`. A `git` failure in the probe is
|
|
922
|
+
logged rather than allowed to fail an already-failed close.
|
|
923
|
+
- **The mirror output** (`packages/cli/src/templates/`, `MIRROR_OUTPUT_PREFIX` in `close.ts`) stays
|
|
924
|
+
refused on BOTH lanes regardless of the split — see "the CLI scaffold mirror is regenerated" below.
|
|
925
|
+
It is dispatcher-owned output the close itself writes, not a worker's writing surface, and it is
|
|
926
|
+
checked FIRST, before the two lists above: `packages/cli/src/templates/monorepo/scripts/backlog/
|
|
927
|
+
close.ts` matches both the mirror prefix and the soft `packages/cli/` pattern, and the mirror
|
|
928
|
+
prefix must win or a hand-written mirror edit would silently become a marked PR instead of a
|
|
929
|
+
violation.
|
|
930
|
+
- **`LOCAL_FORBIDDEN_PATHS`** (`guards.ts`) is `SLOT_EXECUTED_PATHS` plus the local lane's own three
|
|
931
|
+
path extras — `.claude/`, `scripts/` and `.git/` — unchanged by the split. They are matched as
|
|
932
|
+
substrings, so `scripts/` also catches `scripts/backlog/dispatch.ts` even though that entry is soft
|
|
933
|
+
everywhere else: a soft path is not automatically admissible on the local lane, and being declared
|
|
934
|
+
was never sufficient for a local-lane extra either.
|
|
935
|
+
|
|
936
|
+
A pull request marked for human review carries FOUR halves, deliberately unequal (design.md
|
|
937
|
+
decision 8), and exactly ONE of them cannot fail:
|
|
938
|
+
|
|
939
|
+
1. **the body section on a NEW pull request** — part of the `gh pr create` argv, so it either creates
|
|
940
|
+
the PR with the section or creates no PR at all. This is the unfailable half, and the reason the
|
|
941
|
+
mark does not rest on the three below;
|
|
942
|
+
2. **the body section on a REUSED pull request** (a retry pushing to a branch that already has an
|
|
943
|
+
open PR): there is no `gh pr create` on that path to carry it, so the close applies it with its
|
|
944
|
+
own `gh pr edit --body` — best-effort;
|
|
945
|
+
3. **the `harness-review` label**, a separate `gh pr edit` after the PR exists — best-effort;
|
|
946
|
+
4. **the reviewer handle**, when `lanes.json` configures one, another separate `gh pr edit` —
|
|
947
|
+
best-effort.
|
|
948
|
+
|
|
949
|
+
Best-effort means exactly this: the failure is logged with its reason and never fails the close,
|
|
950
|
+
blocks the task, or discards the pull request. Halves 2-4 are best-effort; half 1 is not, because
|
|
951
|
+
there is nothing left to fail once the PR exists with the body it was created with.
|
|
952
|
+
|
|
953
|
+
The rewrite walks the body once and drops each dispatcher-authored region — every full marker pair,
|
|
954
|
+
a trailing START with no END (a section a failed write truncated), and any stray END — writing the new
|
|
955
|
+
section where the FIRST one was and keeping every byte between the regions. Round 3 spliced from the
|
|
956
|
+
first START to the LAST END, which on a body holding TWO full pairs swallowed everything between them,
|
|
957
|
+
a person's note included; that is the shape the pre-round-3 code produced on every retry, so open pull
|
|
958
|
+
requests already hold it. The result always holds exactly one well-ordered pair, which makes the next
|
|
959
|
+
rewrite the ordinary case again.
|
|
960
|
+
|
|
961
|
+
The reuse rewrite READS the body first (`readPrBody`) and replaces only
|
|
962
|
+
its own delimited section (`upsertHumanReviewSection`, marked with
|
|
963
|
+
`<!-- dispatcher:human-review:start -->`/`…:end -->` HTML comments): `gh pr edit --body` is a full
|
|
964
|
+
replacement, and these are by construction the pull requests a person was asked to read and
|
|
965
|
+
annotate, so recomposing the body from the board destroyed every word that person had added. A body
|
|
966
|
+
that cannot be READ is not overwritten at all — the rewrite is skipped and recorded, since with no
|
|
967
|
+
idea what is there the safe move is to leave it. The file list any mark renders is capped on TWO
|
|
968
|
+
budgets — the entry count (`MAX_MARKED_FILES`) and the total characters (`MAX_MARKED_LIST_CHARS`,
|
|
969
|
+
with each path capped at `MAX_MARKED_PATH_CHARS`) — with a count of what it dropped, the same
|
|
970
|
+
discipline `sanitizeCommentBody` carries for the worker-authored notes section beside it: the list
|
|
971
|
+
comes from the attempt's own diff, and a wide refactor produces hundreds of entries in a public body
|
|
972
|
+
and in the `gh` argv. Each path is also RENDERED rather than spliced verbatim (`renderMarkedPath`):
|
|
973
|
+
paths reach the close straight out of `git diff -z`, so `<`/`>` are escaped — a filename spelling the
|
|
974
|
+
section's own end marker would otherwise put a second marker inside the list and send the next
|
|
975
|
+
rewrite's `indexOf` to the wrong offset — and control characters become `?`, so one changed file
|
|
976
|
+
always renders as one entry. ONE rendering serves both channels, deliberately: the escapes render back
|
|
977
|
+
as `<`/`>` on GitHub and show up literally (`<`) in a `Blocked` comment read through
|
|
978
|
+
`backlog task view --plain`, and a second channel-aware renderer would mean two code paths over
|
|
979
|
+
worker-supplied bytes for a cosmetic gain — the escaped spelling still identifies the file. The
|
|
980
|
+
label is a SEPARATE call from `pr create` on purpose — a label the repository does not have would
|
|
981
|
+
otherwise fail the PR creation itself — and separate from the reviewer call too, so a rejected
|
|
982
|
+
reviewer never takes the label down with it. The reviewer's rejection is the EXPECTED case, not the
|
|
983
|
+
exception: `gh` refuses a reviewer that is the pull request's own author, and the dispatcher opens
|
|
984
|
+
every PR as the same account — so `harnessReviewer` ships unset in `lanes.json`, and its absence is
|
|
985
|
+
recorded once rather than treated as an error.
|
|
986
|
+
|
|
987
|
+
The mechanical triad is **scoped to the attempt's own changed files** — the union of
|
|
988
|
+
`git diff --name-only -z <base>...HEAD` and
|
|
989
|
+
`git status --porcelain -z --untracked-files=all` — `-z` on BOTH halves, because either line format
|
|
990
|
+
otherwise quotes and C-escapes a path holding a space, a quote, a backslash, a newline or a
|
|
991
|
+
non-ASCII byte, and the string then compared against the path lists is not the path on disk. The
|
|
992
|
+
measured consequence: a quoted `packages/cli/src/templates/…` misses the anchored mirror prefix while
|
|
993
|
+
still matching the unanchored soft `packages/cli/` pattern, so a hand-written mirror edit would be
|
|
994
|
+
admitted and merely marked — the mirror-first precedence inverted. `-c core.quotepath=false` was the
|
|
995
|
+
first fix and it is not enough: that option governs only the non-ASCII half of the class. On the
|
|
996
|
+
status side a rename is one entry carrying two NUL-separated paths, and only the new one is a file
|
|
997
|
+
the attempt produced. The mirror prefix itself is matched case-insensitively, like every sibling
|
|
998
|
+
matcher, since a casing variant names the same file on this repo's filesystem:
|
|
999
|
+
|
|
1000
|
+
- **Prettier**, two runs per workspace that ships it (`backend/`, `frontend/`, `packages/core-back/`,
|
|
1001
|
+
`packages/core-front/`): `pnpm --filter <pkg> exec prettier --write --ignore-unknown <files>`, then
|
|
1002
|
+
the same with `--check`. design.md decision (h) puts the format hook in the close "where a
|
|
1003
|
+
deterministic script ENFORCES them" — a bare `--check` only reports, and the executor is never
|
|
1004
|
+
asked to run Prettier, so an indentation nit failed a whole attempt over something the close can
|
|
1005
|
+
fix in place. The `--check` after the write is not redundant: it is what proves the write actually
|
|
1006
|
+
took (a syntax error makes Prettier rewrite nothing). Prettier is NOT a root dependency here — `npx
|
|
1007
|
+
prettier` at the repo root exits 127 — so a repo-wide run was a check that could never pass. A
|
|
1008
|
+
changed file outside those four workspaces (`scripts/`, `.claude/`) has no formatter to run and is
|
|
1009
|
+
reported in the log, not silently treated as formatted. `--ignore-unknown` is measured (T-6.1,
|
|
1010
|
+
first real frontier dispatch): a `.sql` file with no inferrable parser otherwise exits Prettier 2
|
|
1011
|
+
("No parser could be inferred"), failing the whole triad over a file Prettier was never going to
|
|
1012
|
+
format. A drizzle-kit migration folder
|
|
1013
|
+
(`backend/src/database/migrations/drizzle/<folder>/{migration.sql,snapshot.json}`) is excluded
|
|
1014
|
+
from BOTH runs entirely rather than merely ignored: it is tool OUTPUT, not hand-written code, the
|
|
1015
|
+
repo's shipped `snapshot.json` files are not Prettier-formatted (measured: `--check` warns on every
|
|
1016
|
+
one, 432 KB each), and a `--write` would turn a generated artifact into a huge noise-only diff.
|
|
1017
|
+
- **Barrels lint**, `pnpm hr:lint-barrels <files>`, over the changed `.ts` files under the roots
|
|
1018
|
+
HR-BARRELS actually governs. Scoped for the same reason: `pnpm hr:lint-barrels` with no arguments
|
|
1019
|
+
sweeps the whole repo, which is red on `main` today for pre-existing violations in generated
|
|
1020
|
+
frontend code — an unscoped run would blame every attempt for someone else's diff.
|
|
1021
|
+
- **The task's own `Test command:`**, which is MANDATORY — guard 1 refuses to dispatch a task that
|
|
1022
|
+
declares none, on either lane, and the pre-PR gate refuses to pass one whose "scoped tests pass"
|
|
1023
|
+
item is still unticked (the triad ticks it only when a test actually ran and passed). The accepted
|
|
1024
|
+
grammar is the repo's own convention and nothing else:
|
|
1025
|
+
|
|
1026
|
+
```
|
|
1027
|
+
pnpm [--filter <pkg> | --dir <relative-path>] [run] <test | cli:test | test:*> [args…]
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
Naming `pnpm` was never the permission: `pnpm dlx <package>` is the same fetch-and-execute `npx`
|
|
1031
|
+
is refused for, and `pnpm add`/`install`/`exec`/`-C` reach just as far outside this repository. So
|
|
1032
|
+
the SCRIPT is allowlisted too, a `--filter` value must be a plain package name (never another
|
|
1033
|
+
flag), and the line may contain no shell metacharacter. `--dir` is the alternative selector, for
|
|
1034
|
+
`packages/cli` — deliberately NOT a workspace member (root `CLAUDE.md`, D8), so `--filter` matches
|
|
1035
|
+
nothing there; its value must be a RELATIVE path with no `..` segment, because a test command may
|
|
1036
|
+
only reach inside the slot it runs in. The command is spawned directly, never through a shell.
|
|
1037
|
+
|
|
1038
|
+
A line that breaks any rule is refused **before dispatch**: guard 1 runs the same
|
|
1039
|
+
`resolveTestCommand` the triad does and blocks the task with the refusal and the offending line,
|
|
1040
|
+
so nothing is spawned at all. The validator lives in `guards.ts` for that reason — pre-launch
|
|
1041
|
+
validation is upstream of the close, which already reads that module for its security-path list.
|
|
1042
|
+
Reaching the close with a refused line means the board changed after launch, and the triad fails
|
|
1043
|
+
it there with `test command no permitido`.
|
|
1044
|
+
|
|
1045
|
+
The command that runs is the one SNAPSHOTTED at launch (`Task.testCommand`, parsed alongside
|
|
1046
|
+
`Files to touch:`), never re-read from the board at close time — the worker can write to its own
|
|
1047
|
+
task for its whole run, so a close that re-read the board would run whatever the thing under test
|
|
1048
|
+
decided it should be verified with.
|
|
1049
|
+
|
|
1050
|
+
Prettier and the barrels linter are both run only over files that still EXIST in the slot. A file the
|
|
1051
|
+
attempt deleted is still a changed file, and neither tool can read a path that is correctly gone.
|
|
1052
|
+
Both receive their file list after a `--` separator, so a changed path beginning with a dash is read
|
|
1053
|
+
as a file and not as a flag.
|
|
1054
|
+
|
|
1055
|
+
**Then the CLI scaffold mirror is regenerated, when — and only when — the attempt touched a root the
|
|
1056
|
+
packager reads.** `scripts/packager/publish.mjs` mirrors `backend/`, `frontend/` and much of the
|
|
1057
|
+
monorepo root into `packages/cli/src/templates/{backend,frontend,monorepo}`, and CI's
|
|
1058
|
+
`Check mirror <-> source drift` fails any PR whose committed mirror no longer matches its sources.
|
|
1059
|
+
A dispatched worker cannot satisfy that gate itself: the MIRROR OUTPUT
|
|
1060
|
+
(`packages/cli/src/templates/`) stays refused on both lanes regardless of the split (T-31) —
|
|
1061
|
+
`packages/cli/` itself is soft now, so a worker may legitimately edit the generator, but never its
|
|
1062
|
+
own generated mirror — so before this step existed, **any dispatched task touching a mirrored root
|
|
1063
|
+
could never pass CI on its own** (measured: PR #96, task T-3, which edited
|
|
1064
|
+
`backend/src/@app/iam/**` and `frontend/src/app/domains/admin/apps/iam/**` and failed the gate with
|
|
1065
|
+
"The committed CLI scaffold mirror is out of date").
|
|
1066
|
+
|
|
1067
|
+
- **Which roots count** is read at close time from the slot's own
|
|
1068
|
+
`.github/workflows/cli-template-drift-check.yml` — its `paths:` filter, minus `packages/cli/**`
|
|
1069
|
+
(packager OUTPUT, not a source root). That list is not copied into the dispatcher, because
|
|
1070
|
+
`scripts/packager/drift-check-paths.test.mjs` already fails when a `copyMonorepo()` glob is
|
|
1071
|
+
missing from it: reading the file that is kept in lockstep is one source of truth, a second
|
|
1072
|
+
hardcoded copy would be a third thing to drift.
|
|
1073
|
+
- **It is conditional.** `publish.mjs` is a repo-wide copy; running it on an attempt that changed
|
|
1074
|
+
only a `cliter/*.aurora.yaml` would spend that cost and put a several-thousand-file mirror diff in
|
|
1075
|
+
front of the reviewer for nothing.
|
|
1076
|
+
- **Where it sits is the whole design.** AFTER the triad, because `prettier --write` rewrites the
|
|
1077
|
+
attempt's own source files — a mirror copied before it would be a byte-copy of the unformatted
|
|
1078
|
+
source and stale the moment the triad ran. BEFORE the reviewer and the pre-PR gate, because the
|
|
1079
|
+
reviewer judges the diff that will actually be pushed. And AFTER the scope check, which is what
|
|
1080
|
+
keeps the MIRROR OUTPUT forbidden **to the worker**: the scope verdict is taken over the pre-regen
|
|
1081
|
+
file set, so a mirror path the worker wrote by hand is still a scope violation, and the
|
|
1082
|
+
dispatcher-owned output only appears once the judging is done. There is no exemption in
|
|
1083
|
+
`checkScope` at all — the ordering is the exemption.
|
|
1084
|
+
- The regenerated files stay in the working tree and travel in the attempt's own commit
|
|
1085
|
+
(`open-pr` already runs `git add -A`).
|
|
1086
|
+
- **A failing packager fails the attempt** (`mirror-regen-failed`, work saved then `Blocked` like
|
|
1087
|
+
any other step), with the child's stderr folded in through `describeExecFailure` — an
|
|
1088
|
+
`execFileSync` throw says only "Command failed: node scripts/packager/publish.mjs" on its own.
|
|
1089
|
+
- **A repo with no drift-check workflow skips the step entirely.** A generated project is that case:
|
|
1090
|
+
`copyMonorepo()` ships `scripts/backlog/**` but neither `.github/**` nor `scripts/packager/**`, so
|
|
1091
|
+
there is no mirror to keep and no gate to satisfy. A workflow that IS there but whose `paths:`
|
|
1092
|
+
list does not parse fails instead — unknown roots make the question unanswerable, and an
|
|
1093
|
+
unverifiable answer is the one thing this close refuses to trust.
|
|
1094
|
+
|
|
1095
|
+
The reviewer step (local lane) is spawned isolated from the harness — `--strict-mcp-config` keeps
|
|
1096
|
+
every MCP server out, `--disable-slash-commands` removes the command surface, `--setting-sources
|
|
1097
|
+
user` keeps the project's 42 allow rules out — plus an explicit deny list covering `Edit`, `Write`,
|
|
1098
|
+
`NotebookEdit`, the push and PR commands, `WebFetch` and `WebSearch`: it judges, it never writes.
|
|
1099
|
+
|
|
1100
|
+
It is the one dispatched process that does NOT get `--bare`, and that is a correctness fix rather
|
|
1101
|
+
than a relaxation. Measured on `claude --help`: under `--bare`, "Anthropic auth is strictly
|
|
1102
|
+
ANTHROPIC_API_KEY or apiKeyHelper via --settings (OAuth and keychain are never read)". The executor
|
|
1103
|
+
authenticates against LM Studio through the lane's own `ANTHROPIC_BASE_URL`/`ANTHROPIC_AUTH_TOKEN`;
|
|
1104
|
+
the reviewer runs on the ACCOUNT with all of that stripped, so under `--bare` it had no credential
|
|
1105
|
+
left at all — and a reviewer that cannot start fails closed, blocking every local-lane attempt.
|
|
1106
|
+
`--setting-sources user` is the narrowest value the flag accepts (it takes a comma-separated list of
|
|
1107
|
+
`user`, `project`, `local`; an empty one is not in the grammar), and it is also where an
|
|
1108
|
+
`apiKeyHelper` lives.
|
|
1109
|
+
|
|
1110
|
+
Its environment is `reviewerEnv`, not `sanitizeInheritedEnv`: it drops every `ANTHROPIC_*` key plus
|
|
1111
|
+
`CLAUDE_CODE_SUBAGENT_MODEL`, and applies the same `isCredentialEnvKey` filter the worker env
|
|
1112
|
+
applies, with NO exception — the reviewer reads a diff and writes a verdict, so `GITHUB_TOKEN`,
|
|
1113
|
+
`NPM_TOKEN` and the SOPS/cloud keys are reach it has no use for. **The reviewer authenticates with
|
|
1114
|
+
the machine's claude.ai login; a stale `ANTHROPIC_API_KEY` in the dispatcher's shell would otherwise
|
|
1115
|
+
take precedence and break it.** That key used to be kept, on the reading that it is the account
|
|
1116
|
+
credential rather than a lane knob. Measured wrong (T-5, 2026-09-07): the reviewer failed to start
|
|
1117
|
+
at all (`El revisor no se pudo ejecutar: … claude -p …`), and a probe with the reviewer's own flags
|
|
1118
|
+
returned `terminal_reason: api_error`, 0 tokens, and stderr "claude.ai connectors are disabled
|
|
1119
|
+
because ANTHROPIC_API_KEY or another auth source is set and takes precedence over your claude.ai
|
|
1120
|
+
login". An inherited key can only ever REPLACE the credential this process needs, never supply one:
|
|
1121
|
+
a machine that really authenticates by API key declares it in the settings source the reviewer loads
|
|
1122
|
+
(`--setting-sources user`, where an `apiKeyHelper` lives), not in the shell the dispatcher happens to
|
|
1123
|
+
be started from. The overlay half of the sweep is unchanged in effect — `ANTHROPIC_BASE_URL`,
|
|
1124
|
+
`ANTHROPIC_AUTH_TOKEN` and the model aliases still go, so a weak local executor can never review
|
|
1125
|
+
itself.
|
|
1126
|
+
|
|
1127
|
+
**A failed reviewer subprocess reports its stderr.** `execFileSync`'s own `error.message` is
|
|
1128
|
+
"Command failed: claude -p …" and nothing else, so the T-5 `review.md` recorded exactly that while
|
|
1129
|
+
the auth error above sat in the stderr nobody rendered. The runner now wraps the spawn in
|
|
1130
|
+
`describeExecFailure` (the same renderer the dispatcher's `backlog`/`git` writes use), so the step's
|
|
1131
|
+
`Blocked` comment and `review.md` both carry the child's own message. The diff it judges is collected with an intent-to-add first (`git add -N -A -- .`), then
|
|
1132
|
+
`diff <base>...HEAD` plus `diff HEAD`. The intent-to-add is what makes the second half honest: no
|
|
1133
|
+
`git diff` under any flags renders an UNTRACKED file, and on a dispatched attempt every created file
|
|
1134
|
+
is untracked — the executor may not run git, so nothing ever staged them. Without it the reviewer
|
|
1135
|
+
was handed a diff with every new file silently missing and approved code it never saw. (Side effect,
|
|
1136
|
+
harmless: the slot's index is left carrying those entries, and every path that continues from there
|
|
1137
|
+
runs `git add -A` over the whole tree anyway.) It is then fenced between randomized
|
|
1138
|
+
`===== BEGIN/END UNTRUSTED DIFF <nonce> =====` sentinels and declared data, because that text was
|
|
1139
|
+
written by the model under review and can address the reviewer directly. The verdict is only read AFTER a `REVIEW COMPLETE` line the
|
|
1140
|
+
reviewer emits itself — a `VERDICT: pass` quoted from the diff is not a verdict — and a reply with
|
|
1141
|
+
no marker, or no verdict after it, fails closed.
|
|
1142
|
+
|
|
1143
|
+
The **pre-PR gate** (`evaluateAcceptanceGate`) judges ACCEPTANCE CRITERIA: every one must be checked,
|
|
1144
|
+
and a task that declares none at all fails ("la tarea no declara criterios de aceptación" — there
|
|
1145
|
+
would be nothing to verify the work against). Definition-of-Done items split in two: the four project
|
|
1146
|
+
defaults in `.backlog/config.yml` are dispatcher-owned and the close ticks them itself once the step
|
|
1147
|
+
that PROVES each one has passed (the triad ticks "scoped tests pass" and "Prettier and barrels lint
|
|
1148
|
+
pass", the gate ticks "every acceptance criterion is checked", `open-pr` ticks "PR opened to main or
|
|
1149
|
+
to the parent branch"); any OTHER unchecked DoD item is a human duty and fails the gate. Ticking is by
|
|
1150
|
+
item TEXT, never by a guessed index — the `#N` the CLI prints shifts as soon as a task adds one item
|
|
1151
|
+
of its own.
|
|
1152
|
+
|
|
1153
|
+
One dispatcher-owned item the gate still judges: **"scoped tests pass"**. The triad ticks it ONLY
|
|
1154
|
+
when a test check actually ran and passed, so an unticked one at the gate means nothing tested this
|
|
1155
|
+
attempt — and excluding it as "dispatcher-owned" let exactly that reach a PR with the box ticked by
|
|
1156
|
+
nobody and verified by nothing. The gate now fails with `la tarea no declara Test command`.
|
|
1157
|
+
|
|
1158
|
+
Nothing used to TELL the worker to tick anything, either. The operating envelope now renders each
|
|
1159
|
+
criterion with its `#N` and the exact wrapper command (`<worker-edit> --check-ac <N>`, the same
|
|
1160
|
+
string the permission rule was built from — passed in rather than composed twice, so the command the
|
|
1161
|
+
prompt prints cannot drift from the one that is granted), requires the evidence in `--append-notes`,
|
|
1162
|
+
and says that leaving one unchecked blocks the attempt — the same instructions the worker system
|
|
1163
|
+
prompt carries.
|
|
1164
|
+
|
|
1165
|
+
**`open-pr` reuses the PR already on the branch.** A retry pushes to the same `task/T-nn`, so the
|
|
1166
|
+
previous attempt's PR is still open and that push already updated it — and creating a second one is
|
|
1167
|
+
impossible (`gh` refuses with "a pull request for branch … already exists"), which failed a close
|
|
1168
|
+
whose code was on the remote with a perfectly good PR to point at. The step asks first
|
|
1169
|
+
(`gh pr view <branch> --json url,state`) and reuses an `OPEN` one, logging "PR existente
|
|
1170
|
+
reutilizada". Only "no pull requests found" counts as absence: a `CLOSED`/`MERGED` PR is not
|
|
1171
|
+
reusable (pushing again would leave the attempt with no open PR and the DoD item a lie), and any
|
|
1172
|
+
other `gh` failure — a revoked token, no network — propagates instead of being read as an absent PR,
|
|
1173
|
+
because swallowing it would create a duplicate the moment `gh` recovered.
|
|
1174
|
+
|
|
1175
|
+
The dispatcher's own `gh` calls — this `gh pr view`/`gh pr create` pair, and `maintenance.ts`'s
|
|
1176
|
+
merged-PR poll — run with an env stripped of `GITHUB_TOKEN`/`GH_TOKEN`/`GH_ENTERPRISE_TOKEN`/
|
|
1177
|
+
`GITHUB_ENTERPRISE_TOKEN` (`dispatch.ts`'s `ghEnv`), so `gh`'s own keyring login (`gh auth login`)
|
|
1178
|
+
is what authenticates. Without it, a stale token in the dispatcher's shell would otherwise take
|
|
1179
|
+
precedence over that login and return `HTTP 401: Bad credentials` right here at `open-pr` — measured
|
|
1180
|
+
(T-5, 2026-09-07): the reconciler process inherits whatever `GITHUB_TOKEN` the developer shell that
|
|
1181
|
+
launched it exports, and `gh` prefers an env token over the keyring even when the keyring login is
|
|
1182
|
+
valid.
|
|
1183
|
+
|
|
1184
|
+
**`open-pr` marks the pull request when the scope check reported soft-list files** (T-31) — the
|
|
1185
|
+
`humanReviewFiles` `scopeCheck` captured earlier in the run, never recomputed here (see "Forbidden
|
|
1186
|
+
paths, split by mechanism" above for why). Applies on BOTH branches above, the reuse and the create:
|
|
1187
|
+
a `gh pr edit <branch> --add-label harness-review`, then, when `lanes.json` configures a handle, a
|
|
1188
|
+
second `gh pr edit <branch> --add-reviewer <handle>`. Each is its own call, wrapped so a failure is
|
|
1189
|
+
logged with `describeExecFailure` and never fails the close. On the REUSE branch it also applies the
|
|
1190
|
+
mark's BODY half with a third call, `gh pr edit <branch> --body <body>`: the create branch carries
|
|
1191
|
+
that section inside `gh pr create --body`, and the reuse branch has no create call to carry it, so
|
|
1192
|
+
without this the reused pull request would name no soft-list file at all and the whole mark would
|
|
1193
|
+
rest on the two calls that are allowed to fail. That body is the CURRENT one, read back with
|
|
1194
|
+
`readPrBody` and passed through `upsertHumanReviewSection` so only the delimited review section
|
|
1195
|
+
changes — a recomposition from the board would replace the whole body and take a reviewer's own notes
|
|
1196
|
+
with it. An unreadable body is left alone and the skip is recorded.
|
|
1197
|
+
|
|
1198
|
+
A close that FAILS never reaches this step at all (the failure plan is `save-work` then `block`), so
|
|
1199
|
+
there the leftover files are named in the `Blocked` comment instead — `formatBlockComment` renders
|
|
1200
|
+
`BlockDetails.humanReviewFiles` and `BlockDetails.forbiddenFiles` as two lines, which `executeClose`
|
|
1201
|
+
carries over from the scope-check result when a mechanical step failed, and reads from the slot itself
|
|
1202
|
+
(the `leftoverFiles` runner) on every divert with no scope check behind it: a plan that started at
|
|
1203
|
+
`save-work`, and a `board-check` failure.
|
|
1204
|
+
|
|
1205
|
+
That comment is composed under an explicit priority, because `sanitizeCommentBody` truncates from the
|
|
1206
|
+
END and the last line is the only actionable one: the reason, the branch/compare/log pointers and the
|
|
1207
|
+
`whatToDo` line are never budgeted; the two leftover lines are capped against the room those leave
|
|
1208
|
+
(and by `MAX_MARKED_FILES`/`MAX_MARKED_LIST_CHARS`); the worker's own report is capped against what
|
|
1209
|
+
remains, since it is the longest part and survives in full in the `run.log` the comment names two
|
|
1210
|
+
lines above. Round 3 gave the list a fixed 2000-char budget — half the comment's own 4000 — and
|
|
1211
|
+
measured a comment of exactly 4000 chars with `whatToDo` cut off.
|
|
1212
|
+
|
|
1213
|
+
## Failure path: work is saved before anything is released
|
|
1214
|
+
|
|
1215
|
+
On any failure the close saves first (`git add -A` + a `chore(<task-id>): wip dispatcher auto-save`
|
|
1216
|
+
commit + push) and only then blocks and releases.
|
|
1217
|
+
|
|
1218
|
+
**Every dispatcher-owned commit runs `--no-verify`**, and that is a safety property rather than a
|
|
1219
|
+
convenience: a slot's `.husky/` hooks are files in the working tree the WORKER has been writing in,
|
|
1220
|
+
so committing its work through them would execute code the model under dispatch authored, with the
|
|
1221
|
+
dispatcher's privileges. The board commit takes the same flag because it runs unattended in the main
|
|
1222
|
+
checkout, where a hook that stashes (lint-staged does) would reach into whatever a person has in
|
|
1223
|
+
progress there. Nothing is lost by it: both messages are machine-built, in the same lowercase-scope
|
|
1224
|
+
Conventional Commit shape, and `close.test.ts` runs them through this repo's real commitlint.
|
|
1225
|
+
|
|
1226
|
+
If that push FAILS, the slot is not released. It is flagged `heldForRecovery` in `slots.json`, which
|
|
1227
|
+
means:
|
|
1228
|
+
|
|
1229
|
+
- no acquisition will ever pick it (its `reset --hard` would delete the only copy of the work);
|
|
1230
|
+
- the dead-PID sweep and the orphan sweep both skip it;
|
|
1231
|
+
- every later maintenance pass retries the push, and on success clears the flag, releases the slot
|
|
1232
|
+
and appends "push recuperado" to the task. That last note is a COMMENT, not a status write, unless
|
|
1233
|
+
the task is still sitting in `Blocked`: a person may have released it to `Queued` (or to `To Do`)
|
|
1234
|
+
while the push was pending, and re-asserting `Blocked` would drag it straight back out.
|
|
1235
|
+
|
|
1236
|
+
That retry is bounded at **three attempts** (`MAX_RECOVERY_ATTEMPTS`, counted on the slot as
|
|
1237
|
+
`recoveryAttempts`). A push that failed three times is failing for a reason no further retry
|
|
1238
|
+
addresses — no remote, a rejected non-fast-forward, a broken worktree — and retrying forever keeps
|
|
1239
|
+
one of three slots out of the pool while saying nothing about it. At the cap the pass notifies,
|
|
1240
|
+
comments `recuperación del push agotada: rescata a mano la rama task/<id> en <slot path>` — naming
|
|
1241
|
+
the exact command that gives the slot back, `pnpm backlog:dispatch -- --release-slot <slot name>`,
|
|
1242
|
+
since nothing automatic will take it back — keeps the slot held, and stops retrying: a person
|
|
1243
|
+
decides from there. See "Releasing a `Blocked` task" for that step.
|
|
1244
|
+
|
|
1245
|
+
While a slot is held for THIS task's recovery, guard 6 reports `push-pending` rather than
|
|
1246
|
+
`no-free-slot` — only the first says why re-queueing changes nothing until the retry succeeds.
|
|
1247
|
+
|
|
1248
|
+
The same rule governs a worker that died without closing: the sweep kills it (its whole process
|
|
1249
|
+
group) if it is still running, saves its branch, and only then releases — leaving a `Blocked` comment
|
|
1250
|
+
that says which pid died, on which branch, and whether the work survived.
|
|
1251
|
+
|
|
1252
|
+
`Blocked` comments are sanitized before they are posted: `backlog task edit --comment` rejects a body
|
|
1253
|
+
containing a standalone `---` line outright (exit 1, nothing written), and a reviewer verdict embeds
|
|
1254
|
+
exactly that. The body is also capped at 4000 characters, with the rest left in `review.md`.
|
|
1255
|
+
|
|
1256
|
+
## Where board state lives (`BACKLOG_CWD`, `auto_commit: false`)
|
|
1257
|
+
|
|
1258
|
+
The board (`.backlog/tasks/`, `.backlog/config.yml`) lives ONLY in the main checkout, never in a
|
|
1259
|
+
slot. Every dispatcher process — the reconciler itself and every `backlog` CLI invocation it
|
|
1260
|
+
makes — is pointed there via `BACKLOG_CWD=<main checkout>`, resolved with
|
|
1261
|
+
`findRepoRoot`/`scripts/_catalog-runtime/repo-root.ts`. A slot never touches its own `.backlog/`
|
|
1262
|
+
copy — and that is now ENFORCED rather than assumed: both lane settings deny `Edit`/`Write` on
|
|
1263
|
+
`.backlog/**`, and `checkScope` reports a change there as a violation on both lanes. It used to
|
|
1264
|
+
strip `.backlog/`-prefixed paths from the diff instead, so a worker that did write there rewrote
|
|
1265
|
+
the criteria the close judges it against, invisibly.
|
|
1266
|
+
|
|
1267
|
+
Keeping the board in one place is deliberate, not an oversight — three worktrees
|
|
1268
|
+
independently writing the same task files would be a merge-conflict generator, which is why
|
|
1269
|
+
`check_active_branches: false` in `.backlog/config.yml` too (cross-branch resolution would read
|
|
1270
|
+
stale copies out of three slots that never see each other's writes).
|
|
1271
|
+
|
|
1272
|
+
`.backlog/config.yml` sets `auto_commit: false`, which is the opposite of what you might expect
|
|
1273
|
+
from a tool that manages its own state file. Backlog.md's own auto-commit writes messages like
|
|
1274
|
+
"Create task T-2" — not a Conventional Commit — and this repo's `commit-msg` hook (husky +
|
|
1275
|
+
commitlint) rejects them; worse, with `bypass_git_hooks: false` the rejection is not a loud
|
|
1276
|
+
failure, the task file is never persisted at all (silently losing the write). So instead, the
|
|
1277
|
+
reconciler's maintenance pass (`maintenance.ts`, `commitBacklogChanges`) commits any pending
|
|
1278
|
+
`.backlog/**` change itself, in the main checkout, with a Conventional Commit message —
|
|
1279
|
+
`chore(backlog): sync board state (T-12 -> Done)` for a single transition,
|
|
1280
|
+
`chore(backlog): sync board state (4 transitions)` with the list in the commit BODY for several
|
|
1281
|
+
(commitlint caps the header at 100 characters). Like every other dispatcher-owned commit it runs
|
|
1282
|
+
`--no-verify` (see "Failure path" above), and it carries a trailing `-- .backlog` **pathspec**:
|
|
1283
|
+
staging adds to the index but does not narrow what a commit takes, so without it anything a person
|
|
1284
|
+
already had staged in the main checkout rode along inside an unattended machine commit. The message
|
|
1285
|
+
shape is held by `buildBoardCommitMessage`'s own tests instead of by the hook. A rejected board commit is logged and the pass continues: the slots it already released and the work it already saved
|
|
1286
|
+
must not be undone by a bookkeeping failure.
|
|
1287
|
+
|
|
1288
|
+
## Trigger wiring
|
|
1289
|
+
|
|
1290
|
+
`.backlog/config.yml`'s `onStatusChange` (single-quoted so YAML preserves `$TASK_ID` literally,
|
|
1291
|
+
letting the shell expand it):
|
|
1292
|
+
|
|
1293
|
+
```yaml
|
|
1294
|
+
onStatusChange: 'mkdir -p .backlog/.dispatch; nohup npx --loglevel=error tsx scripts/backlog/dispatch.ts >> ".backlog/.dispatch/$TASK_ID.log" 2>&1 < /dev/null &'
|
|
1295
|
+
```
|
|
1296
|
+
|
|
1297
|
+
The redirect APPENDS (`>>`), like the launchd launcher's. One task's log is written by every
|
|
1298
|
+
reconciler run that task's status transitions start — `Queued`, then the close's move out, then a
|
|
1299
|
+
release after `Blocked` — and a truncating `>` threw away the previous run's output each time,
|
|
1300
|
+
which is the output someone reading a failed dispatch needs.
|
|
1301
|
+
|
|
1302
|
+
The `mkdir -p` is what makes a FRESH CLONE work: `.backlog/.dispatch/` is gitignored, so it does not
|
|
1303
|
+
exist until something creates it, and `>> "..."` cannot create its own target directory — a
|
|
1304
|
+
redirection resolves its target BEFORE anything after it runs. That ordering is also why the
|
|
1305
|
+
`mkdir` is joined to `nohup` with a **semicolon, not `&&`**: `&&` makes the two commands one list,
|
|
1306
|
+
and `&` backgrounds the WHOLE list — its subshell then holds the caller's own stdio open for as
|
|
1307
|
+
long as the reconciler runs, because the shell that opened the log file for the redirection is the
|
|
1308
|
+
same one `&` puts in the background. A bare `;` runs `mkdir` in the FOREGROUND (near-instant, no
|
|
1309
|
+
redirection to open early) and only backgrounds the `nohup npx ...` command that follows —
|
|
1310
|
+
so `&` detaches exactly the long-running part. Measured: the `&&` shape returns in ~3s (however
|
|
1311
|
+
long the dispatched run takes to get its own stdio open); the `;` shape returns in ~0.01s. The
|
|
1312
|
+
`< /dev/null` alongside the nohup command's own `>>`/`2>&1` is what lets Backlog.md see every one
|
|
1313
|
+
of its pipes close AT ONCE — it holds the task lock until then — rather than waiting on stdin to be
|
|
1314
|
+
inherited from a caller that never closes it.
|
|
1315
|
+
|
|
1316
|
+
The `nohup ... &` is REQUIRED, not an optional optimization: Backlog.md runs this callback
|
|
1317
|
+
**synchronously** and blocks the caller (CLI, MCP, or web UI) until it returns. Measured: a
|
|
1318
|
+
detached callback returns control in ~0.13s regardless of a 30s background job; a non-detached
|
|
1319
|
+
one blocks for the job's full duration. Without `nohup ... &`, moving a task to `Queued` would
|
|
1320
|
+
freeze whoever moved it for the entire dispatched run.
|
|
1321
|
+
|
|
1322
|
+
`onStatusChange` never fires on task creation and never fires on a merge — it is a hint, not a
|
|
1323
|
+
guarantee. Two things cover what it misses: the `launchd` timer below (a missed or crashed
|
|
1324
|
+
callback), and the maintenance pass's `gh` poll (a merge that happened outside any callback).
|
|
1325
|
+
Every trigger runs through the identical idempotent pass, so a missed or duplicated event
|
|
1326
|
+
self-heals on the next one.
|
|
1327
|
+
|
|
1328
|
+
### Anti-loop: a dispatcher-owned write must not spawn its own pass
|
|
1329
|
+
|
|
1330
|
+
Every `backlog task edit` this reconciler runs against ITSELF — `dispatch.ts`'s `realBacklog`
|
|
1331
|
+
(`setStatus`, `comment`) and `tickOwnedDod`'s `--check-dod` — carries `BACKLOG_DISPATCH_ACTIVE='1'`
|
|
1332
|
+
in its `env`, exactly like a worker's own writes through `worker-edit.ts` already do. That edit's
|
|
1333
|
+
`onStatusChange` callback inherits the sentinel from the `backlog` CLI child it fires from, so the
|
|
1334
|
+
nested `dispatch.ts` invocation it spawns can tell a dispatcher-owned write apart from a genuine
|
|
1335
|
+
human one.
|
|
1336
|
+
|
|
1337
|
+
`main()` checks this BEFORE resolving `BACKLOG_CWD` or running any maintenance at all
|
|
1338
|
+
(`entry.ts`'s `isDispatcherOwnedCallback`: `TASK_ID` and `NEW_STATUS` present, and
|
|
1339
|
+
`BACKLOG_DISPATCH_ACTIVE === '1'`) — logs one line and exits 0, no pass at all. This is a stronger
|
|
1340
|
+
guard than `shouldDispatchFromCallback`'s: that one only ever suppressed task SELECTION, while
|
|
1341
|
+
maintenance (including a `.backlog` git commit) ran unconditionally underneath it regardless. A
|
|
1342
|
+
callback with no sentinel (a human moving a task) and the launchd timer / `gh`-poll trigger (no
|
|
1343
|
+
`TASK_ID` at all) are unaffected and still run their normal pass.
|
|
1344
|
+
|
|
1345
|
+
Measured (2026-09-07, T-5's first real e2e run): the reconciler's own `-s In Progress` edit fired
|
|
1346
|
+
a nested pass with no sentinel at the time, which ran its OWN maintenance sweep — including its own
|
|
1347
|
+
`.backlog` git commit — concurrently with the pass that made the write and was still mid-dispatch
|
|
1348
|
+
in the SAME checkout; that race is what failed `git add .backlog` with exit 128, and the
|
|
1349
|
+
dispatcher's own edits that followed failed too. Every `backlog`/`git` collaborator this file owns
|
|
1350
|
+
also now captures stderr (`stdio: ['ignore', 'pipe', 'pipe']`, previously silenced) and renders it
|
|
1351
|
+
through `describeExecFailure` before throwing or logging — the same run left every one of those
|
|
1352
|
+
failures as exit 1 with `stderr: null`, so the actual cause never reached the `Blocked` comment or
|
|
1353
|
+
the log at all.
|
|
1354
|
+
|
|
1355
|
+
Backlog.md holds the task lock while `onStatusChange` runs; the callback detaches its stdio so it
|
|
1356
|
+
returns at once, and the dispatcher retries a busy-board write six times with linear backoff.
|
|
1357
|
+
|
|
1358
|
+
The sentinel is not pid-bound by design: it is an env var, not a lock tied to the process that set
|
|
1359
|
+
it. A human shell that exported `BACKLOG_DISPATCH_ACTIVE=1` (to silence the callback while
|
|
1360
|
+
debugging, say) would have every subsequent `backlog task edit` it runs — including a genuine
|
|
1361
|
+
status change a person made — ignored by the callback exactly like a dispatcher-owned one, with
|
|
1362
|
+
only one log line in that task's `<id>.log` to say why nothing dispatched.
|
|
1363
|
+
|
|
1364
|
+
## npm scripts
|
|
1365
|
+
|
|
1366
|
+
| Script | Command | Use |
|
|
1367
|
+
| --- | --- | --- |
|
|
1368
|
+
| `backlog:dispatch` | `tsx scripts/backlog/dispatch.ts` | Run one reconciler pass manually (what every trigger ultimately invokes) |
|
|
1369
|
+
| `backlog:dispatch -- --release-slot <name> [--force]` | same script, one flag | Rescue a slot held for push recovery: detach it, drop its lock and clear the hold. Runs NO pass, takes the reconciler's single-flight lock while it works, and REFUSES (exit 2) a running pass or a slot with a live worker unless `--force` — see "Releasing a `Blocked` task" |
|
|
1370
|
+
| `backlog:watch` | `tsx scripts/backlog/watch.ts` | Tail a running attempt's log, or list busy slots — see below |
|
|
1371
|
+
| `test:backlog` | `node --import tsx --test "scripts/backlog/**/*.test.ts"` | Run every dispatcher unit/contract test |
|
|
1372
|
+
|
|
1373
|
+
## Observability: `pnpm backlog:watch`
|
|
1374
|
+
|
|
1375
|
+
```bash
|
|
1376
|
+
pnpm backlog:watch T-12 # tails the human-rendered run.log of T-12's current attempt
|
|
1377
|
+
pnpm backlog:watch # no id: lists busy slots (name, lane, taskId, pid) from slots.json
|
|
1378
|
+
```
|
|
1379
|
+
|
|
1380
|
+
`watch.ts` only reads — it never writes board state, a lock, or a slot. The log it tails is the
|
|
1381
|
+
SAME `run.log` `attempt.ts`'s sink writes per attempt
|
|
1382
|
+
(`.backlog/.dispatch/<TASK_ID>/intento-<N>/run.log`), rendered through the shared `render.ts` so a
|
|
1383
|
+
live tail and a post-hoc read of the same file show identical lines. The attempt directory is
|
|
1384
|
+
created before the worker starts, so `backlog:watch` works from the first second of a run.
|
|
1385
|
+
|
|
1386
|
+
## Installing the launchd recovery timer
|
|
1387
|
+
|
|
1388
|
+
The `onStatusChange` callback in `.backlog/config.yml` is the primary trigger; the launchd agent
|
|
1389
|
+
below is the recovery path for a trigger that never fires (a missed status change, a crash before
|
|
1390
|
+
the callback ran). Both invoke the same `scripts/backlog/dispatch.ts` entry point.
|
|
1391
|
+
|
|
1392
|
+
1. Copy the template and replace the **three absolute paths** in the copy — the template ships this
|
|
1393
|
+
machine's, and launchd does not expand `~` or source a login shell's `PATH` (so no nvm shim):
|
|
1394
|
+
|
|
1395
|
+
| Where | What to put there |
|
|
1396
|
+
| --- | --- |
|
|
1397
|
+
| inside the `ProgramArguments` `/bin/sh -c` string | your `which npx` |
|
|
1398
|
+
| `WorkingDirectory` | your main checkout |
|
|
1399
|
+
| `StandardOutPath` / `StandardErrorPath` | `<your main checkout>/.backlog/.dispatch/launchd.log` |
|
|
1400
|
+
|
|
1401
|
+
Two log files, and they are not interchangeable: `launchd.log` holds the LAUNCHER's own output
|
|
1402
|
+
(a failing `mkdir`, a failing `nohup`), and `reconciler.log` — the `>>` redirect inside the
|
|
1403
|
+
`sh -c` string — holds the detached reconciler's. A single file mixed a tens-of-minutes pass into
|
|
1404
|
+
the launcher's one-line runs and made neither readable.
|
|
1405
|
+
|
|
1406
|
+
```bash
|
|
1407
|
+
cp scripts/backlog/dev.aurora.backlog-dispatch.plist \
|
|
1408
|
+
~/Library/LaunchAgents/dev.aurora.backlog-dispatch.plist
|
|
1409
|
+
```
|
|
1410
|
+
|
|
1411
|
+
The command itself is `sh -c 'mkdir -p .backlog/.dispatch; nohup <npx> --loglevel=error tsx
|
|
1412
|
+
scripts/backlog/dispatch.ts >> .backlog/.dispatch/reconciler.log 2>&1 < /dev/null &'` — a short
|
|
1413
|
+
LAUNCHER that detaches the reconciler and **exits**, not the reconciler itself.
|
|
1414
|
+
|
|
1415
|
+
That is the load-bearing part. launchd tracks the pid of what it starts and will not start a
|
|
1416
|
+
second instance while that process is alive, and the reconciler lives as long as its worker —
|
|
1417
|
+
tens of minutes. Running it directly (or under `exec`, which keeps its pid as the tracked one)
|
|
1418
|
+
silenced the timer for the whole length of every dispatch, exactly when a `StartInterval`
|
|
1419
|
+
recovery pass matters most. Backgrounded, launchd sees a process that exited in milliseconds and
|
|
1420
|
+
is free to fire again on the next interval — the same way the `onStatusChange` callback detaches
|
|
1421
|
+
its own invocation.
|
|
1422
|
+
|
|
1423
|
+
Two consequences of detaching, both handled in the template: the log directory is gitignored and
|
|
1424
|
+
therefore absent on a fresh clone, and launchd opens `StandardOutPath` itself without creating
|
|
1425
|
+
missing parents — so the first run on a new machine produced no log at all, including no record
|
|
1426
|
+
of why, hence the `mkdir -p`; and the detached process is no longer launchd's child, so its own
|
|
1427
|
+
output is redirected into that same log explicitly rather than inherited. That `mkdir -p` runs
|
|
1428
|
+
BEFORE the `>>` opens `reconciler.log`, and is joined to `nohup` with a **semicolon, not `&&`** —
|
|
1429
|
+
`&&` would make `mkdir; nohup ...` one list, and `&` backgrounds the WHOLE list, so the shell that
|
|
1430
|
+
opened the log file stays foregrounded for as long as the reconciler runs (measured ~3s vs the
|
|
1431
|
+
`;` shape's ~0.01s). The `< /dev/null` alongside the nohup command's own `>>`/`2>&1` is what lets
|
|
1432
|
+
whoever is waiting on this callback (Backlog.md holds the task lock until then) see every one of
|
|
1433
|
+
its pipes close at once, instead of blocking on a stdin nothing ever closes.
|
|
1434
|
+
2. The one manual prerequisite: `gh auth login` on the machine that runs the dispatcher, once. The
|
|
1435
|
+
dispatcher's own `gh` calls (`open-pr`'s reuse check and create, the maintenance sweep's merged-PR
|
|
1436
|
+
poll) deliberately run without an inherited `GITHUB_TOKEN`/`GH_TOKEN` — see "`open-pr` reuses the
|
|
1437
|
+
PR already on the branch" above — so that keyring login is the only credential they ever get.
|
|
1438
|
+
Otherwise there is no other manual setup. `.backlog/.dispatch/` is created by the `onStatusChange` callback
|
|
1439
|
+
and by `dispatch.ts` itself, and the three worktree slots are provisioned on demand the first time
|
|
1440
|
+
a task acquires one (`fetch origin --prune`, `worktree prune`, `worktree add --detach
|
|
1441
|
+
origin/main`, `scripts/worktree-link.sh`, `pnpm install`) — so the first dispatch into a fresh
|
|
1442
|
+
slot takes as long as a full install and every later one does not. The `worktree prune` is what
|
|
1443
|
+
makes that recovery actually work: a slot directory deleted by hand leaves git's administrative
|
|
1444
|
+
record of it behind, and `worktree add` then refuses the path as already registered — so the very
|
|
1445
|
+
state provisioning exists to recover from would otherwise block every later dispatch.
|
|
1446
|
+
3. Load it:
|
|
1447
|
+
```bash
|
|
1448
|
+
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/dev.aurora.backlog-dispatch.plist
|
|
1449
|
+
```
|
|
1450
|
+
4. To stop and remove it:
|
|
1451
|
+
```bash
|
|
1452
|
+
launchctl bootout gui/$(id -u)/dev.aurora.backlog-dispatch
|
|
1453
|
+
rm ~/Library/LaunchAgents/dev.aurora.backlog-dispatch.plist
|
|
1454
|
+
```
|
|
1455
|
+
|
|
1456
|
+
Validate any edit to the plist before loading it: `plutil -lint dev.aurora.backlog-dispatch.plist`.
|
|
1457
|
+
|
|
1458
|
+
## Releasing a `Blocked` task
|
|
1459
|
+
|
|
1460
|
+
`Blocked` is the only human column — the reconciler never takes a task out of it on its own. To
|
|
1461
|
+
release one:
|
|
1462
|
+
|
|
1463
|
+
1. Read the `Blocked` comment: it always carries the cause and, per design.md decision (m), the
|
|
1464
|
+
open question written in plain language (an ambiguity, an undeclared artifact, a
|
|
1465
|
+
`judgment-day` ESCALATED verdict, an unanswered `needs-guidance`, a failed push, an
|
|
1466
|
+
exhausted attempt budget, or a permission conflict between a settings rule and one the launch
|
|
1467
|
+
grants — that last one names both rules and is resolved by editing one of them, not by re-queueing
|
|
1468
|
+
as it stands).
|
|
1469
|
+
2. Answer the question in the task itself (a comment, or an edit to the task body/AC).
|
|
1470
|
+
3. Move it:
|
|
1471
|
+
- to `Queued` — the dispatcher retries on the SAME `task/T-nn` branch, with the prior
|
|
1472
|
+
`Blocked` comment and any reviewer findings included in the retry's prompt on BOTH lanes (the
|
|
1473
|
+
frontier lane appends them to its `trabajemos <id>` entry; fresh context, same code). This is
|
|
1474
|
+
the right choice for a fixable failure (a red test, a scope violation, a push that failed to
|
|
1475
|
+
save).
|
|
1476
|
+
- to `To Do` — a human works it in an interactive session instead of redispatching it. Choose
|
|
1477
|
+
this when the question needs a person's judgment call the worker cannot make on retry (e.g.
|
|
1478
|
+
a genuine scope/requirement change).
|
|
1479
|
+
|
|
1480
|
+
**A slot held for push recovery needs one more step: releasing it.** When a close or a sweep could
|
|
1481
|
+
not PUSH the work a slot holds, the slot is marked `heldForRecovery` and kept out of the pool —
|
|
1482
|
+
it holds the only copy of that work, so no acquisition may reuse it. The maintenance pass retries the
|
|
1483
|
+
push up to `MAX_RECOVERY_ATTEMPTS` (3) times; past that it stops and hands the slot to a person, and
|
|
1484
|
+
the task's comment names the command that gives it back:
|
|
1485
|
+
|
|
1486
|
+
```bash
|
|
1487
|
+
# After you have the branch safely on the remote
|
|
1488
|
+
pnpm backlog:dispatch -- --release-slot dispatch-1
|
|
1489
|
+
```
|
|
1490
|
+
|
|
1491
|
+
That flag runs no dispatch pass. It detaches the slot's worktree, removes any dispatch lock the slot
|
|
1492
|
+
still carried, and clears `heldForRecovery`, `recoveryAttempts` and the task binding — the one
|
|
1493
|
+
release that clears the hold, which the ordinary release deliberately does not
|
|
1494
|
+
(`slots.ts`'s `releaseHeldSlotEntries`). The hand-edit it replaces is still the same thing: deleting
|
|
1495
|
+
`heldForRecovery` and `recoveryAttempts` from that slot in `.backlog/.dispatch/slots.json`.
|
|
1496
|
+
|
|
1497
|
+
**It runs under the reconciler's single-flight lock**, and exits **2** when a pass already holds it.
|
|
1498
|
+
The rescue is a read of `slots.json`, a decision, and a `git worktree detach` — the exact sequence a
|
|
1499
|
+
pass mutates while it selects a task and acquires a slot. Unserialized, a pass that took this slot
|
|
1500
|
+
between the read and the detach lost its worktree under a worker that was just starting. Waiting for
|
|
1501
|
+
the pass (they are short, and the lock is dropped as soon as the worker spawns) or `--force` are the
|
|
1502
|
+
two ways past it; `--force` proceeds without holding the lock, so it never removes the running pass's.
|
|
1503
|
+
|
|
1504
|
+
**It also refuses a slot that is genuinely busy**, and exits **2** saying so — "release this slot" and
|
|
1505
|
+
"kill what is running in it" are different requests, and only the first is what the flag advertises.
|
|
1506
|
+
A release is allowed when the slot is flagged `heldForRecovery` (the case above: the work is committed
|
|
1507
|
+
and only the push failed) or when the slot's task lock is absent or DEAD — no such process, or a
|
|
1508
|
+
heartbeat past the 10-minute TTL, the same liveness question the maintenance sweep asks. Otherwise
|
|
1509
|
+
detaching the worktree under a live `claude` would lose its uncommitted work, drop the lock the close
|
|
1510
|
+
re-reads before it runs, and hand the directory to the next dispatch. To take a running slot anyway,
|
|
1511
|
+
cancel the task on the board (the next maintenance pass kills the worker after saving its work), or
|
|
1512
|
+
pass `--force` once you have looked:
|
|
1513
|
+
|
|
1514
|
+
```bash
|
|
1515
|
+
pnpm backlog:dispatch -- --release-slot dispatch-1 --force
|
|
1516
|
+
```
|
|
1517
|
+
|
|
1518
|
+
Starting over from scratch (rather than retrying) means deleting the remote `task/T-nn` branch
|
|
1519
|
+
before moving the task back to `Queued` — otherwise the next dispatch reuses it. The attempt cap is
|
|
1520
|
+
`lanes.json`'s `attempts` (3 as shipped), read by guard 5 and by the close's terminal-block flag
|
|
1521
|
+
alike; a task `Blocked` on its last failed attempt has no automatic path back to dispatch and needs
|
|
1522
|
+
the human decision above regardless.
|
|
1523
|
+
|
|
1524
|
+
## Known gotchas
|
|
1525
|
+
|
|
1526
|
+
- **A board read that half-failed is not an empty board.** `loadBoard` returns
|
|
1527
|
+
`{ tasks, complete }`, and `complete` is `false` when `backlog task list` failed outright or when
|
|
1528
|
+
any single `task view` threw and its id was dropped. The maintenance sweep infers a MANUAL
|
|
1529
|
+
CANCELLATION from a task's absence, so a bare empty list used to read as "a person deleted every
|
|
1530
|
+
task" and killed every live worker at once. With `boardComplete: false` the sweep skips the
|
|
1531
|
+
absence-based cancellation (a task it DID read as `Blocked`/`To Do` is still cancelled — that
|
|
1532
|
+
decision rests on the task's own status) and skips the parent derivation entirely, since deriving a
|
|
1533
|
+
parent from half its children produces a confident wrong answer. The next pass, with a readable
|
|
1534
|
+
board, does both. The flag survives the POST-SWEEP re-read too: `entry.ts`'s `reloadTasks` returns
|
|
1535
|
+
the whole `BoardLoad`, and the close's own parent derivation is skipped with a log when `complete`
|
|
1536
|
+
is false — it derives the same parent from the same kind of read, and a signature that returned
|
|
1537
|
+
only the array dropped the flag on the floor.
|
|
1538
|
+
- **A slot is the only place a close may touch.** `slotPathForTask` returns `null` when no slot
|
|
1539
|
+
holds the task, and every runner FAILS its step on that — it never falls back to the main
|
|
1540
|
+
checkout. It used to, and that pointed the whole close at the developer's own working tree: a
|
|
1541
|
+
`git add -A` plus WIP commit over work in progress, a scope diff of somebody else's changes, and a
|
|
1542
|
+
`gh pr create` off whatever branch happened to be checked out there.
|
|
1543
|
+
- **The precomputed hooks run in the SLOT but read the board from the main checkout.**
|
|
1544
|
+
`dispatch.ts`'s `buildHookRunners` spawns both hook scripts with the slot as `cwd` — that is where
|
|
1545
|
+
their rule catalogs and the injector cache belong — and with `BACKLOG_CWD=<main checkout>` plus
|
|
1546
|
+
`BACKLOG_DISPATCH_ACTIVE=1` in their env. `inject-prompt-context.ts` reads `BACKLOG_CWD` as its
|
|
1547
|
+
BOARD root (`resolveBoardRoot`): a slot's own `.backlog/` copy holds no tasks, so without it the
|
|
1548
|
+
hook would find no `task_prefix` and match nothing. The sentinel switches the task block's footer
|
|
1549
|
+
from "follow the Task Gate" to "the dispatcher already set it `In Progress`; do not change its
|
|
1550
|
+
state" — pointing a headless worker at an interactive gate invites exactly the status write the
|
|
1551
|
+
close then fails it for. **That block is a FRONTIER-lane thing**, and only there: the frontier
|
|
1552
|
+
worker's real prompt is `trabajemos <id>`, so the hook matches it and the block is the task text
|
|
1553
|
+
that worker gets. The local lane's precompute deliberately names NO id
|
|
1554
|
+
(`prompt.ts`'s `buildHookPromptText` passes the bounded context and the declared files, which is
|
|
1555
|
+
all the BR/HR/skill blocks need to resolve): block 1 of the executor envelope already carries the
|
|
1556
|
+
whole task view verbatim, so an injected second copy meant the weakest executor read its task
|
|
1557
|
+
twice, in two formats, one of them describing a gate it has no business walking. The env pair
|
|
1558
|
+
still travels on both lanes — it is what the hook is entitled to, and the moment anything names an
|
|
1559
|
+
id again the block must resolve against the real board and read as dispatched.
|
|
1560
|
+
- **`.claude/.cache/br-injected.json` must be reset per dispatched attempt.** The
|
|
1561
|
+
`business-rules-injector.ts` PreToolUse hook tracks already-injected rule IDs across
|
|
1562
|
+
invocations outside a real interactive session (there is no `SessionStart` to wipe it for a
|
|
1563
|
+
headless run). Without resetting this file before each dispatched attempt, a rule injected for
|
|
1564
|
+
a PREVIOUS task on the same lockfile-shared slot silently fails to surface for the next one —
|
|
1565
|
+
the hook prompt-precompute step (`prompt.ts`) deletes/resets it before assembling a fresh
|
|
1566
|
+
prompt.
|
|
1567
|
+
- **`--max-budget-usd` stops at turn boundaries, not mid-generation.** It is a hard stop
|
|
1568
|
+
(`is_error:true`, `subtype:"error_max_budget_usd"`), never a warning, but the turn already in
|
|
1569
|
+
flight always completes first — real spend can overshoot the configured cap, sometimes on the
|
|
1570
|
+
very first turn. Treat it as a coarse safety net layered on top of `--max-turns`, never as a
|
|
1571
|
+
precise or sole stop mechanism.
|
|
1572
|
+
- **`maxBudgetUsd` compares an ESTIMATE against a cap, and on a subscription login nothing is
|
|
1573
|
+
billed per token.** `--max-budget-usd` cuts a worker off when Claude Code's own cost ESTIMATE
|
|
1574
|
+
crosses the configured number — measured (T-3, 2026-09-07): this machine's local-lane run
|
|
1575
|
+
printed `cost=$2.40` for a run nothing actually billed. `lanes.json`'s `maxBudgetUsd` is
|
|
1576
|
+
therefore OPTIONAL on the frontier lane: set a number when the machine authenticates with an API
|
|
1577
|
+
key and you want a hard dollar stop; omit it on a subscription login, where the estimate is not
|
|
1578
|
+
billed and the cap only truncates legitimate work. `maxTurns` and `timeoutMinutes` are the guards
|
|
1579
|
+
that always apply, on either kind of login.
|
|
1580
|
+
- **A slot never keeps a task branch checked out.** EVERY release goes through
|
|
1581
|
+
`slots.ts`'s `releaseSlotAndDetach` (or, in the maintenance sweep, its `git.detachSlot`
|
|
1582
|
+
collaborator), which runs `git checkout --detach` before clearing the registry entry: the close's
|
|
1583
|
+
own release, the abort path, the branch-in-use handback, the dead-lock sweep, the orphan sweep,
|
|
1584
|
+
the cancellation, the recovered push. Git refuses to check the same branch out in two worktrees,
|
|
1585
|
+
so a slot released while still sitting on `task/T-12` made EVERY later dispatch of T-12 refuse
|
|
1586
|
+
with `branch-in-use` — and since a pass dispatches one task at a time, the whole queue starved
|
|
1587
|
+
behind it. `prepareSlot` also checks out with `-B` rather than `-b`, so a leftover local branch
|
|
1588
|
+
cannot fail the checkout either. If a branch IS still held elsewhere when a task is selected, the
|
|
1589
|
+
pass hands the slot back (detaching it) and leaves the task `Queued` rather than failing — the
|
|
1590
|
+
next pass retries.
|
|
1591
|
+
- **Work is branched and diffed against `origin/…`, never a local ref.** A reusable slot's local
|
|
1592
|
+
`main` is whatever its last fetch left behind. Branching new work off it silently reintroduces
|
|
1593
|
+
days-old code, and diffing an attempt against it reports files nobody in this task touched.
|
|
1594
|
+
- **`Write(<glob>)` path-scoped permission rules are unverified.** `Edit(<glob>)` (e.g.
|
|
1595
|
+
`Edit(allowed/**)`) is confirmed to scope correctly — a denied edit outside the glob is recorded
|
|
1596
|
+
in `permission_denials` with the file path. The equivalent `Write(<glob>)` rule was never
|
|
1597
|
+
exercised in the Phase 1 spike (the local model never attempted a `Write` tool call at all under
|
|
1598
|
+
that rule), so it is unverified, not confirmed broken — re-verify with a stronger model before
|
|
1599
|
+
relying on it to gate new-file creation. It now carries the frontier lane too, whose `allow`
|
|
1600
|
+
grants the same `Write(./**)`; the close's scope check and `SLOT_EXECUTED_PATHS` are the barriers
|
|
1601
|
+
that do not depend on it.
|