@planu/cli 0.63.7 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/license-plans.json +16 -1
- package/dist/engine/a2a/capability-card.d.ts +16 -0
- package/dist/engine/a2a/capability-card.d.ts.map +1 -0
- package/dist/engine/a2a/capability-card.js +69 -0
- package/dist/engine/a2a/capability-card.js.map +1 -0
- package/dist/engine/a2a/delegate.d.ts +15 -0
- package/dist/engine/a2a/delegate.d.ts.map +1 -0
- package/dist/engine/a2a/delegate.js +47 -0
- package/dist/engine/a2a/delegate.js.map +1 -0
- package/dist/engine/a2a/fallback.d.ts +12 -0
- package/dist/engine/a2a/fallback.d.ts.map +1 -0
- package/dist/engine/a2a/fallback.js +52 -0
- package/dist/engine/a2a/fallback.js.map +1 -0
- package/dist/engine/a2a/index.d.ts +5 -0
- package/dist/engine/a2a/index.d.ts.map +1 -0
- package/dist/engine/a2a/index.js +6 -0
- package/dist/engine/a2a/index.js.map +1 -0
- package/dist/engine/a2a/task-manager.d.ts +39 -0
- package/dist/engine/a2a/task-manager.d.ts.map +1 -0
- package/dist/engine/a2a/task-manager.js +84 -0
- package/dist/engine/a2a/task-manager.js.map +1 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.d.ts +13 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.js +43 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.js.map +1 -0
- package/dist/engine/ac-gap-detector/constants.d.ts +22 -0
- package/dist/engine/ac-gap-detector/constants.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/constants.js +143 -0
- package/dist/engine/ac-gap-detector/constants.js.map +1 -0
- package/dist/engine/ac-gap-detector/gap-rules.d.ts +16 -0
- package/dist/engine/ac-gap-detector/gap-rules.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/gap-rules.js +180 -0
- package/dist/engine/ac-gap-detector/gap-rules.js.map +1 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.d.ts +16 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.js +62 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.js.map +1 -0
- package/dist/engine/ac-gap-detector.d.ts +3 -0
- package/dist/engine/ac-gap-detector.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector.js +5 -0
- package/dist/engine/ac-gap-detector.js.map +1 -0
- package/dist/engine/audit-trail/attestation.d.ts +11 -0
- package/dist/engine/audit-trail/attestation.d.ts.map +1 -0
- package/dist/engine/audit-trail/attestation.js +47 -0
- package/dist/engine/audit-trail/attestation.js.map +1 -0
- package/dist/engine/audit-trail/index.d.ts +6 -0
- package/dist/engine/audit-trail/index.d.ts.map +1 -0
- package/dist/engine/audit-trail/index.js +6 -0
- package/dist/engine/audit-trail/index.js.map +1 -0
- package/dist/engine/audit-trail/logger.d.ts +17 -0
- package/dist/engine/audit-trail/logger.d.ts.map +1 -0
- package/dist/engine/audit-trail/logger.js +78 -0
- package/dist/engine/audit-trail/logger.js.map +1 -0
- package/dist/engine/audit-trail/query.d.ts +7 -0
- package/dist/engine/audit-trail/query.d.ts.map +1 -0
- package/dist/engine/audit-trail/query.js +61 -0
- package/dist/engine/audit-trail/query.js.map +1 -0
- package/dist/engine/audit-trail/utils.d.ts +18 -0
- package/dist/engine/audit-trail/utils.d.ts.map +1 -0
- package/dist/engine/audit-trail/utils.js +44 -0
- package/dist/engine/audit-trail/utils.js.map +1 -0
- package/dist/engine/audit-trail/verifier.d.ts +10 -0
- package/dist/engine/audit-trail/verifier.d.ts.map +1 -0
- package/dist/engine/audit-trail/verifier.js +78 -0
- package/dist/engine/audit-trail/verifier.js.map +1 -0
- package/dist/engine/auth/config.d.ts +20 -0
- package/dist/engine/auth/config.d.ts.map +1 -0
- package/dist/engine/auth/config.js +49 -0
- package/dist/engine/auth/config.js.map +1 -0
- package/dist/engine/auth/index.d.ts +6 -0
- package/dist/engine/auth/index.d.ts.map +1 -0
- package/dist/engine/auth/index.js +7 -0
- package/dist/engine/auth/index.js.map +1 -0
- package/dist/engine/auth/middleware.d.ts +19 -0
- package/dist/engine/auth/middleware.d.ts.map +1 -0
- package/dist/engine/auth/middleware.js +64 -0
- package/dist/engine/auth/middleware.js.map +1 -0
- package/dist/engine/auth/pkce.d.ts +17 -0
- package/dist/engine/auth/pkce.d.ts.map +1 -0
- package/dist/engine/auth/pkce.js +33 -0
- package/dist/engine/auth/pkce.js.map +1 -0
- package/dist/engine/auth/scope-mapper.d.ts +21 -0
- package/dist/engine/auth/scope-mapper.d.ts.map +1 -0
- package/dist/engine/auth/scope-mapper.js +124 -0
- package/dist/engine/auth/scope-mapper.js.map +1 -0
- package/dist/engine/auth/token-validator.d.ts +15 -0
- package/dist/engine/auth/token-validator.d.ts.map +1 -0
- package/dist/engine/auth/token-validator.js +121 -0
- package/dist/engine/auth/token-validator.js.map +1 -0
- package/dist/engine/ci-generator/index.d.ts.map +1 -1
- package/dist/engine/ci-generator/index.js +8 -2
- package/dist/engine/ci-generator/index.js.map +1 -1
- package/dist/engine/ci-generator/yaml-builder.d.ts +7 -2
- package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
- package/dist/engine/ci-generator/yaml-builder.js +49 -1
- package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
- package/dist/engine/design-to-spec/ac-generator.d.ts +21 -0
- package/dist/engine/design-to-spec/ac-generator.d.ts.map +1 -0
- package/dist/engine/design-to-spec/ac-generator.js +185 -0
- package/dist/engine/design-to-spec/ac-generator.js.map +1 -0
- package/dist/engine/design-to-spec/index.d.ts +11 -0
- package/dist/engine/design-to-spec/index.d.ts.map +1 -0
- package/dist/engine/design-to-spec/index.js +19 -0
- package/dist/engine/design-to-spec/index.js.map +1 -0
- package/dist/engine/design-to-spec/parser.d.ts +7 -0
- package/dist/engine/design-to-spec/parser.d.ts.map +1 -0
- package/dist/engine/design-to-spec/parser.js +290 -0
- package/dist/engine/design-to-spec/parser.js.map +1 -0
- package/dist/engine/design-to-spec/spec-builder.d.ts +12 -0
- package/dist/engine/design-to-spec/spec-builder.d.ts.map +1 -0
- package/dist/engine/design-to-spec/spec-builder.js +148 -0
- package/dist/engine/design-to-spec/spec-builder.js.map +1 -0
- package/dist/engine/design-to-spec/ui-contract-builder.d.ts +17 -0
- package/dist/engine/design-to-spec/ui-contract-builder.d.ts.map +1 -0
- package/dist/engine/design-to-spec/ui-contract-builder.js +175 -0
- package/dist/engine/design-to-spec/ui-contract-builder.js.map +1 -0
- package/dist/engine/elicitation/builder.d.ts +37 -0
- package/dist/engine/elicitation/builder.d.ts.map +1 -0
- package/dist/engine/elicitation/builder.js +115 -0
- package/dist/engine/elicitation/builder.js.map +1 -0
- package/dist/engine/elicitation/fallback.d.ts +20 -0
- package/dist/engine/elicitation/fallback.d.ts.map +1 -0
- package/dist/engine/elicitation/fallback.js +72 -0
- package/dist/engine/elicitation/fallback.js.map +1 -0
- package/dist/engine/elicitation/index.d.ts +4 -0
- package/dist/engine/elicitation/index.d.ts.map +1 -0
- package/dist/engine/elicitation/index.js +5 -0
- package/dist/engine/elicitation/index.js.map +1 -0
- package/dist/engine/elicitation/response-parser.d.ts +9 -0
- package/dist/engine/elicitation/response-parser.d.ts.map +1 -0
- package/dist/engine/elicitation/response-parser.js +163 -0
- package/dist/engine/elicitation/response-parser.js.map +1 -0
- package/dist/engine/federation/cross-repo-resolver.d.ts +21 -0
- package/dist/engine/federation/cross-repo-resolver.d.ts.map +1 -0
- package/dist/engine/federation/cross-repo-resolver.js +75 -0
- package/dist/engine/federation/cross-repo-resolver.js.map +1 -0
- package/dist/engine/federation/drift-checker.d.ts +19 -0
- package/dist/engine/federation/drift-checker.d.ts.map +1 -0
- package/dist/engine/federation/drift-checker.js +114 -0
- package/dist/engine/federation/drift-checker.js.map +1 -0
- package/dist/engine/federation/federation-store.d.ts +25 -0
- package/dist/engine/federation/federation-store.d.ts.map +1 -0
- package/dist/engine/federation/federation-store.js +58 -0
- package/dist/engine/federation/federation-store.js.map +1 -0
- package/dist/engine/federation/index.d.ts +4 -0
- package/dist/engine/federation/index.d.ts.map +1 -0
- package/dist/engine/federation/index.js +5 -0
- package/dist/engine/federation/index.js.map +1 -0
- package/dist/engine/github/spec-ac-analyzer.d.ts +40 -0
- package/dist/engine/github/spec-ac-analyzer.d.ts.map +1 -0
- package/dist/engine/github/spec-ac-analyzer.js +181 -0
- package/dist/engine/github/spec-ac-analyzer.js.map +1 -0
- package/dist/engine/hooks/handlers/on-impl-change.d.ts +3 -1
- package/dist/engine/hooks/handlers/on-impl-change.d.ts.map +1 -1
- package/dist/engine/hooks/handlers/on-impl-change.js +25 -1
- package/dist/engine/hooks/handlers/on-impl-change.js.map +1 -1
- package/dist/engine/infrastructure/component-mapper.d.ts +9 -0
- package/dist/engine/infrastructure/component-mapper.d.ts.map +1 -0
- package/dist/engine/infrastructure/component-mapper.js +162 -0
- package/dist/engine/infrastructure/component-mapper.js.map +1 -0
- package/dist/engine/infrastructure/cost-estimator.d.ts +6 -0
- package/dist/engine/infrastructure/cost-estimator.d.ts.map +1 -0
- package/dist/engine/infrastructure/cost-estimator.js +48 -0
- package/dist/engine/infrastructure/cost-estimator.js.map +1 -0
- package/dist/engine/infrastructure/docker-compose-generator.d.ts +6 -0
- package/dist/engine/infrastructure/docker-compose-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/docker-compose-generator.js +201 -0
- package/dist/engine/infrastructure/docker-compose-generator.js.map +1 -0
- package/dist/engine/infrastructure/index.d.ts +15 -0
- package/dist/engine/infrastructure/index.d.ts.map +1 -0
- package/dist/engine/infrastructure/index.js +67 -0
- package/dist/engine/infrastructure/index.js.map +1 -0
- package/dist/engine/infrastructure/kubernetes-generator.d.ts +6 -0
- package/dist/engine/infrastructure/kubernetes-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/kubernetes-generator.js +141 -0
- package/dist/engine/infrastructure/kubernetes-generator.js.map +1 -0
- package/dist/engine/infrastructure/railway-generator.d.ts +6 -0
- package/dist/engine/infrastructure/railway-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/railway-generator.js +87 -0
- package/dist/engine/infrastructure/railway-generator.js.map +1 -0
- package/dist/engine/infrastructure/signal-detector.d.ts +7 -0
- package/dist/engine/infrastructure/signal-detector.d.ts.map +1 -0
- package/dist/engine/infrastructure/signal-detector.js +174 -0
- package/dist/engine/infrastructure/signal-detector.js.map +1 -0
- package/dist/engine/infrastructure/terraform-generator.d.ts +6 -0
- package/dist/engine/infrastructure/terraform-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/terraform-generator.js +241 -0
- package/dist/engine/infrastructure/terraform-generator.js.map +1 -0
- package/dist/engine/living-spec/annotation-parser.d.ts.map +1 -1
- package/dist/engine/living-spec/annotation-parser.js.map +1 -1
- package/dist/engine/living-spec/auto-updater.d.ts +58 -0
- package/dist/engine/living-spec/auto-updater.d.ts.map +1 -0
- package/dist/engine/living-spec/auto-updater.js +311 -0
- package/dist/engine/living-spec/auto-updater.js.map +1 -0
- package/dist/engine/living-spec/conflict-resolver.d.ts +46 -0
- package/dist/engine/living-spec/conflict-resolver.d.ts.map +1 -0
- package/dist/engine/living-spec/conflict-resolver.js +301 -0
- package/dist/engine/living-spec/conflict-resolver.js.map +1 -0
- package/dist/engine/living-spec/hash-tracker.d.ts.map +1 -1
- package/dist/engine/living-spec/hash-tracker.js.map +1 -1
- package/dist/engine/living-spec/index.d.ts +1 -0
- package/dist/engine/living-spec/index.d.ts.map +1 -1
- package/dist/engine/living-spec/index.js +1 -0
- package/dist/engine/living-spec/index.js.map +1 -1
- package/dist/engine/living-spec/signature-tracker.d.ts.map +1 -1
- package/dist/engine/living-spec/signature-tracker.js.map +1 -1
- package/dist/engine/observability/config.d.ts +16 -0
- package/dist/engine/observability/config.d.ts.map +1 -0
- package/dist/engine/observability/config.js +44 -0
- package/dist/engine/observability/config.js.map +1 -0
- package/dist/engine/observability/index.d.ts +7 -0
- package/dist/engine/observability/index.d.ts.map +1 -0
- package/dist/engine/observability/index.js +8 -0
- package/dist/engine/observability/index.js.map +1 -0
- package/dist/engine/observability/metrics.d.ts +12 -0
- package/dist/engine/observability/metrics.d.ts.map +1 -0
- package/dist/engine/observability/metrics.js +61 -0
- package/dist/engine/observability/metrics.js.map +1 -0
- package/dist/engine/observability/noop-tracer.d.ts +13 -0
- package/dist/engine/observability/noop-tracer.d.ts.map +1 -0
- package/dist/engine/observability/noop-tracer.js +41 -0
- package/dist/engine/observability/noop-tracer.js.map +1 -0
- package/dist/engine/observability/otel-tracer.d.ts +19 -0
- package/dist/engine/observability/otel-tracer.d.ts.map +1 -0
- package/dist/engine/observability/otel-tracer.js +134 -0
- package/dist/engine/observability/otel-tracer.js.map +1 -0
- package/dist/engine/observability/span-helpers.d.ts +28 -0
- package/dist/engine/observability/span-helpers.d.ts.map +1 -0
- package/dist/engine/observability/span-helpers.js +68 -0
- package/dist/engine/observability/span-helpers.js.map +1 -0
- package/dist/engine/observability/tracer.d.ts +26 -0
- package/dist/engine/observability/tracer.d.ts.map +1 -0
- package/dist/engine/observability/tracer.js +45 -0
- package/dist/engine/observability/tracer.js.map +1 -0
- package/dist/engine/rbac/index.d.ts +3 -0
- package/dist/engine/rbac/index.d.ts.map +1 -0
- package/dist/engine/rbac/index.js +4 -0
- package/dist/engine/rbac/index.js.map +1 -0
- package/dist/engine/rbac/permission-checker.d.ts +21 -0
- package/dist/engine/rbac/permission-checker.d.ts.map +1 -0
- package/dist/engine/rbac/permission-checker.js +74 -0
- package/dist/engine/rbac/permission-checker.js.map +1 -0
- package/dist/engine/rbac/roles.d.ts +12 -0
- package/dist/engine/rbac/roles.d.ts.map +1 -0
- package/dist/engine/rbac/roles.js +37 -0
- package/dist/engine/rbac/roles.js.map +1 -0
- package/dist/engine/shared/ac-extractor.d.ts +9 -0
- package/dist/engine/shared/ac-extractor.d.ts.map +1 -0
- package/dist/engine/shared/ac-extractor.js +36 -0
- package/dist/engine/shared/ac-extractor.js.map +1 -0
- package/dist/engine/shared/line-diff.d.ts +11 -0
- package/dist/engine/shared/line-diff.d.ts.map +1 -0
- package/dist/engine/shared/line-diff.js +32 -0
- package/dist/engine/shared/line-diff.js.map +1 -0
- package/dist/engine/spec-decomposer/analyzer.d.ts +18 -0
- package/dist/engine/spec-decomposer/analyzer.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/analyzer.js +263 -0
- package/dist/engine/spec-decomposer/analyzer.js.map +1 -0
- package/dist/engine/spec-decomposer/file-mapper.d.ts +17 -0
- package/dist/engine/spec-decomposer/file-mapper.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/file-mapper.js +96 -0
- package/dist/engine/spec-decomposer/file-mapper.js.map +1 -0
- package/dist/engine/spec-decomposer/index.d.ts +14 -0
- package/dist/engine/spec-decomposer/index.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/index.js +50 -0
- package/dist/engine/spec-decomposer/index.js.map +1 -0
- package/dist/engine/spec-decomposer/ownership-resolver.d.ts +7 -0
- package/dist/engine/spec-decomposer/ownership-resolver.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/ownership-resolver.js +169 -0
- package/dist/engine/spec-decomposer/ownership-resolver.js.map +1 -0
- package/dist/engine/spec-observability/index.d.ts +4 -0
- package/dist/engine/spec-observability/index.d.ts.map +1 -0
- package/dist/engine/spec-observability/index.js +4 -0
- package/dist/engine/spec-observability/index.js.map +1 -0
- package/dist/engine/spec-observability/metrics.d.ts +8 -0
- package/dist/engine/spec-observability/metrics.d.ts.map +1 -0
- package/dist/engine/spec-observability/metrics.js +116 -0
- package/dist/engine/spec-observability/metrics.js.map +1 -0
- package/dist/engine/spec-observability/tracker.d.ts +22 -0
- package/dist/engine/spec-observability/tracker.d.ts.map +1 -0
- package/dist/engine/spec-observability/tracker.js +77 -0
- package/dist/engine/spec-observability/tracker.js.map +1 -0
- package/dist/engine/spec-reader.d.ts +7 -0
- package/dist/engine/spec-reader.d.ts.map +1 -0
- package/dist/engine/spec-reader.js +23 -0
- package/dist/engine/spec-reader.js.map +1 -0
- package/dist/engine/spec-repair.d.ts +10 -0
- package/dist/engine/spec-repair.d.ts.map +1 -0
- package/dist/engine/spec-repair.js +388 -0
- package/dist/engine/spec-repair.js.map +1 -0
- package/dist/engine/spec-versioning/brancher.d.ts +17 -0
- package/dist/engine/spec-versioning/brancher.d.ts.map +1 -0
- package/dist/engine/spec-versioning/brancher.js +113 -0
- package/dist/engine/spec-versioning/brancher.js.map +1 -0
- package/dist/engine/spec-versioning/differ.d.ts +19 -0
- package/dist/engine/spec-versioning/differ.d.ts.map +1 -0
- package/dist/engine/spec-versioning/differ.js +151 -0
- package/dist/engine/spec-versioning/differ.js.map +1 -0
- package/dist/engine/spec-versioning/index.d.ts +5 -0
- package/dist/engine/spec-versioning/index.d.ts.map +1 -0
- package/dist/engine/spec-versioning/index.js +6 -0
- package/dist/engine/spec-versioning/index.js.map +1 -0
- package/dist/engine/spec-versioning/merger.d.ts +18 -0
- package/dist/engine/spec-versioning/merger.d.ts.map +1 -0
- package/dist/engine/spec-versioning/merger.js +113 -0
- package/dist/engine/spec-versioning/merger.js.map +1 -0
- package/dist/engine/spec-versioning/version-store.d.ts +18 -0
- package/dist/engine/spec-versioning/version-store.d.ts.map +1 -0
- package/dist/engine/spec-versioning/version-store.js +96 -0
- package/dist/engine/spec-versioning/version-store.js.map +1 -0
- package/dist/engine/well-known/discovery.d.ts +7 -0
- package/dist/engine/well-known/discovery.d.ts.map +1 -0
- package/dist/engine/well-known/discovery.js +109 -0
- package/dist/engine/well-known/discovery.js.map +1 -0
- package/dist/engine/well-known/index.d.ts +6 -0
- package/dist/engine/well-known/index.d.ts.map +1 -0
- package/dist/engine/well-known/index.js +5 -0
- package/dist/engine/well-known/index.js.map +1 -0
- package/dist/engine/well-known/manifest-generator.d.ts +7 -0
- package/dist/engine/well-known/manifest-generator.d.ts.map +1 -0
- package/dist/engine/well-known/manifest-generator.js +60 -0
- package/dist/engine/well-known/manifest-generator.js.map +1 -0
- package/dist/engine/well-known/manifest-schema.d.ts +92 -0
- package/dist/engine/well-known/manifest-schema.d.ts.map +1 -0
- package/dist/engine/well-known/manifest-schema.js +70 -0
- package/dist/engine/well-known/manifest-schema.js.map +1 -0
- package/dist/resources/spec-granular.d.ts +33 -0
- package/dist/resources/spec-granular.d.ts.map +1 -0
- package/dist/resources/spec-granular.js +299 -0
- package/dist/resources/spec-granular.js.map +1 -0
- package/dist/storage/federation-store.d.ts +29 -0
- package/dist/storage/federation-store.d.ts.map +1 -0
- package/dist/storage/federation-store.js +111 -0
- package/dist/storage/federation-store.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/rbac-store.d.ts +8 -0
- package/dist/storage/rbac-store.d.ts.map +1 -0
- package/dist/storage/rbac-store.js +75 -0
- package/dist/storage/rbac-store.js.map +1 -0
- package/dist/storage/spec-observability-store.d.ts +16 -0
- package/dist/storage/spec-observability-store.d.ts.map +1 -0
- package/dist/storage/spec-observability-store.js +55 -0
- package/dist/storage/spec-observability-store.js.map +1 -0
- package/dist/tools/a2a-handler.d.ts +14 -0
- package/dist/tools/a2a-handler.d.ts.map +1 -0
- package/dist/tools/a2a-handler.js +100 -0
- package/dist/tools/a2a-handler.js.map +1 -0
- package/dist/tools/assign-role-handler.d.ts +3 -0
- package/dist/tools/assign-role-handler.d.ts.map +1 -0
- package/dist/tools/assign-role-handler.js +25 -0
- package/dist/tools/assign-role-handler.js.map +1 -0
- package/dist/tools/audit-trail-handler.d.ts +4 -0
- package/dist/tools/audit-trail-handler.d.ts.map +1 -0
- package/dist/tools/audit-trail-handler.js +91 -0
- package/dist/tools/audit-trail-handler.js.map +1 -0
- package/dist/tools/auto-update-spec.d.ts +3 -0
- package/dist/tools/auto-update-spec.d.ts.map +1 -0
- package/dist/tools/auto-update-spec.js +43 -0
- package/dist/tools/auto-update-spec.js.map +1 -0
- package/dist/tools/branch-spec.d.ts +3 -0
- package/dist/tools/branch-spec.d.ts.map +1 -0
- package/dist/tools/branch-spec.js +68 -0
- package/dist/tools/branch-spec.js.map +1 -0
- package/dist/tools/configure-auth-handler.d.ts +15 -0
- package/dist/tools/configure-auth-handler.d.ts.map +1 -0
- package/dist/tools/configure-auth-handler.js +113 -0
- package/dist/tools/configure-auth-handler.js.map +1 -0
- package/dist/tools/configure-observability.d.ts +14 -0
- package/dist/tools/configure-observability.d.ts.map +1 -0
- package/dist/tools/configure-observability.js +96 -0
- package/dist/tools/configure-observability.js.map +1 -0
- package/dist/tools/configure-roles-handler.d.ts +4 -0
- package/dist/tools/configure-roles-handler.d.ts.map +1 -0
- package/dist/tools/configure-roles-handler.js +36 -0
- package/dist/tools/configure-roles-handler.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js +114 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js +48 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.d.ts +14 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.js +28 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js +99 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js +62 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/hu-body-generators.d.ts.map +1 -1
- package/dist/tools/create-spec-hu/hu-body-generators.js +41 -19
- package/dist/tools/create-spec-hu/hu-body-generators.js.map +1 -1
- package/dist/tools/create-spec-tech/ficha-content.d.ts.map +1 -1
- package/dist/tools/create-spec-tech/ficha-content.js +235 -5
- package/dist/tools/create-spec-tech/ficha-content.js.map +1 -1
- package/dist/tools/decompose-spec.d.ts +7 -0
- package/dist/tools/decompose-spec.d.ts.map +1 -0
- package/dist/tools/decompose-spec.js +49 -0
- package/dist/tools/decompose-spec.js.map +1 -0
- package/dist/tools/design-to-spec.d.ts +12 -0
- package/dist/tools/design-to-spec.d.ts.map +1 -0
- package/dist/tools/design-to-spec.js +73 -0
- package/dist/tools/design-to-spec.js.map +1 -0
- package/dist/tools/detect-ac-gaps.d.ts +7 -0
- package/dist/tools/detect-ac-gaps.d.ts.map +1 -0
- package/dist/tools/detect-ac-gaps.js +63 -0
- package/dist/tools/detect-ac-gaps.js.map +1 -0
- package/dist/tools/discover-registry.d.ts +8 -0
- package/dist/tools/discover-registry.d.ts.map +1 -0
- package/dist/tools/discover-registry.js +79 -0
- package/dist/tools/discover-registry.js.map +1 -0
- package/dist/tools/federate-specs.d.ts +6 -0
- package/dist/tools/federate-specs.d.ts.map +1 -0
- package/dist/tools/federate-specs.js +41 -0
- package/dist/tools/federate-specs.js.map +1 -0
- package/dist/tools/federation-status.d.ts +6 -0
- package/dist/tools/federation-status.d.ts.map +1 -0
- package/dist/tools/federation-status.js +56 -0
- package/dist/tools/federation-status.js.map +1 -0
- package/dist/tools/generate-annotations.d.ts.map +1 -1
- package/dist/tools/generate-annotations.js +3 -1
- package/dist/tools/generate-annotations.js.map +1 -1
- package/dist/tools/generate-infrastructure.d.ts +3 -0
- package/dist/tools/generate-infrastructure.d.ts.map +1 -0
- package/dist/tools/generate-infrastructure.js +60 -0
- package/dist/tools/generate-infrastructure.js.map +1 -0
- package/dist/tools/merge-spec-branch.d.ts +3 -0
- package/dist/tools/merge-spec-branch.d.ts.map +1 -0
- package/dist/tools/merge-spec-branch.js +103 -0
- package/dist/tools/merge-spec-branch.js.map +1 -0
- package/dist/tools/publish-registry.d.ts +8 -0
- package/dist/tools/publish-registry.d.ts.map +1 -0
- package/dist/tools/publish-registry.js +76 -0
- package/dist/tools/publish-registry.js.map +1 -0
- package/dist/tools/register-a2a-tools.d.ts +3 -0
- package/dist/tools/register-a2a-tools.d.ts.map +1 -0
- package/dist/tools/register-a2a-tools.js +66 -0
- package/dist/tools/register-a2a-tools.js.map +1 -0
- package/dist/tools/register-audit-trail-tools.d.ts +3 -0
- package/dist/tools/register-audit-trail-tools.d.ts.map +1 -0
- package/dist/tools/register-audit-trail-tools.js +62 -0
- package/dist/tools/register-audit-trail-tools.js.map +1 -0
- package/dist/tools/register-decompose-tools.d.ts +3 -0
- package/dist/tools/register-decompose-tools.d.ts.map +1 -0
- package/dist/tools/register-decompose-tools.js +31 -0
- package/dist/tools/register-decompose-tools.js.map +1 -0
- package/dist/tools/register-federation-tools.d.ts +6 -0
- package/dist/tools/register-federation-tools.d.ts.map +1 -0
- package/dist/tools/register-federation-tools.js +48 -0
- package/dist/tools/register-federation-tools.js.map +1 -0
- package/dist/tools/register-infrastructure-tools.d.ts +3 -0
- package/dist/tools/register-infrastructure-tools.d.ts.map +1 -0
- package/dist/tools/register-infrastructure-tools.js +34 -0
- package/dist/tools/register-infrastructure-tools.js.map +1 -0
- package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-tools.js +2 -8
- package/dist/tools/register-living-spec-tools.js.map +1 -1
- package/dist/tools/register-observability-tools.d.ts +3 -0
- package/dist/tools/register-observability-tools.d.ts.map +1 -0
- package/dist/tools/register-observability-tools.js +48 -0
- package/dist/tools/register-observability-tools.js.map +1 -0
- package/dist/tools/register-rbac-tools.d.ts +3 -0
- package/dist/tools/register-rbac-tools.d.ts.map +1 -0
- package/dist/tools/register-rbac-tools.js +36 -0
- package/dist/tools/register-rbac-tools.js.map +1 -0
- package/dist/tools/register-spec-observability-tools.d.ts +3 -0
- package/dist/tools/register-spec-observability-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-observability-tools.js +24 -0
- package/dist/tools/register-spec-observability-tools.js.map +1 -0
- package/dist/tools/register-versioning-tools.d.ts +3 -0
- package/dist/tools/register-versioning-tools.d.ts.map +1 -0
- package/dist/tools/register-versioning-tools.js +93 -0
- package/dist/tools/register-versioning-tools.js.map +1 -0
- package/dist/tools/register-well-known-tools.d.ts +3 -0
- package/dist/tools/register-well-known-tools.d.ts.map +1 -0
- package/dist/tools/register-well-known-tools.js +36 -0
- package/dist/tools/register-well-known-tools.js.map +1 -0
- package/dist/tools/repair-spec.d.ts +9 -0
- package/dist/tools/repair-spec.d.ts.map +1 -0
- package/dist/tools/repair-spec.js +93 -0
- package/dist/tools/repair-spec.js.map +1 -0
- package/dist/tools/resolve-spec-conflict.d.ts +7 -0
- package/dist/tools/resolve-spec-conflict.d.ts.map +1 -0
- package/dist/tools/resolve-spec-conflict.js +63 -0
- package/dist/tools/resolve-spec-conflict.js.map +1 -0
- package/dist/tools/response-helpers.d.ts +42 -0
- package/dist/tools/response-helpers.d.ts.map +1 -1
- package/dist/tools/response-helpers.js +29 -0
- package/dist/tools/response-helpers.js.map +1 -1
- package/dist/tools/schemas/auth-schema.d.ts +12 -0
- package/dist/tools/schemas/auth-schema.d.ts.map +1 -0
- package/dist/tools/schemas/auth-schema.js +38 -0
- package/dist/tools/schemas/auth-schema.js.map +1 -0
- package/dist/tools/schemas/rbac.d.ts +26 -0
- package/dist/tools/schemas/rbac.d.ts.map +1 -0
- package/dist/tools/schemas/rbac.js +25 -0
- package/dist/tools/schemas/rbac.js.map +1 -0
- package/dist/tools/schemas/well-known.d.ts +12 -0
- package/dist/tools/schemas/well-known.d.ts.map +1 -0
- package/dist/tools/schemas/well-known.js +31 -0
- package/dist/tools/schemas/well-known.js.map +1 -0
- package/dist/tools/snapshot-spec-hashes.d.ts.map +1 -1
- package/dist/tools/snapshot-spec-hashes.js.map +1 -1
- package/dist/tools/spec-usage-report.d.ts +3 -0
- package/dist/tools/spec-usage-report.d.ts.map +1 -0
- package/dist/tools/spec-usage-report.js +95 -0
- package/dist/tools/spec-usage-report.js.map +1 -0
- package/dist/tools/start-hooks.d.ts.map +1 -1
- package/dist/tools/start-hooks.js +93 -16
- package/dist/tools/start-hooks.js.map +1 -1
- package/dist/tools/version-spec.d.ts +3 -0
- package/dist/tools/version-spec.d.ts.map +1 -0
- package/dist/tools/version-spec.js +54 -0
- package/dist/tools/version-spec.js.map +1 -0
- package/dist/types/a2a.d.ts +125 -0
- package/dist/types/a2a.d.ts.map +1 -0
- package/dist/types/a2a.js +3 -0
- package/dist/types/a2a.js.map +1 -0
- package/dist/types/ac-gap.d.ts +57 -0
- package/dist/types/ac-gap.d.ts.map +1 -0
- package/dist/types/ac-gap.js +3 -0
- package/dist/types/ac-gap.js.map +1 -0
- package/dist/types/audit-trail.d.ts +77 -0
- package/dist/types/audit-trail.d.ts.map +1 -0
- package/dist/types/audit-trail.js +3 -0
- package/dist/types/audit-trail.js.map +1 -0
- package/dist/types/auth.d.ts +82 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/ci.d.ts +10 -25
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/design-to-spec.d.ts +89 -0
- package/dist/types/design-to-spec.d.ts.map +1 -0
- package/dist/types/design-to-spec.js +3 -0
- package/dist/types/design-to-spec.js.map +1 -0
- package/dist/types/elicitation.d.ts +109 -0
- package/dist/types/elicitation.d.ts.map +1 -0
- package/dist/types/elicitation.js +3 -0
- package/dist/types/elicitation.js.map +1 -0
- package/dist/types/federation.d.ts +95 -0
- package/dist/types/federation.d.ts.map +1 -0
- package/dist/types/federation.js +3 -0
- package/dist/types/federation.js.map +1 -0
- package/dist/types/file-hooks.d.ts +8 -6
- package/dist/types/file-hooks.d.ts.map +1 -1
- package/dist/types/github.d.ts +17 -0
- package/dist/types/github.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/infrastructure.d.ts +71 -0
- package/dist/types/infrastructure.d.ts.map +1 -0
- package/dist/types/infrastructure.js +3 -0
- package/dist/types/infrastructure.js.map +1 -0
- package/dist/types/living-spec.d.ts +100 -0
- package/dist/types/living-spec.d.ts.map +1 -1
- package/dist/types/observability.d.ts +105 -0
- package/dist/types/observability.d.ts.map +1 -0
- package/dist/types/observability.js +3 -0
- package/dist/types/observability.js.map +1 -0
- package/dist/types/rbac.d.ts +51 -0
- package/dist/types/rbac.d.ts.map +1 -0
- package/dist/types/rbac.js +4 -0
- package/dist/types/rbac.js.map +1 -0
- package/dist/types/resources.d.ts +20 -0
- package/dist/types/resources.d.ts.map +1 -0
- package/dist/types/resources.js +3 -0
- package/dist/types/resources.js.map +1 -0
- package/dist/types/spec/repair.d.ts +33 -0
- package/dist/types/spec/repair.d.ts.map +1 -0
- package/dist/types/spec/repair.js +3 -0
- package/dist/types/spec/repair.js.map +1 -0
- package/dist/types/spec-decomposer.d.ts +108 -0
- package/dist/types/spec-decomposer.d.ts.map +1 -0
- package/dist/types/spec-decomposer.js +4 -0
- package/dist/types/spec-decomposer.js.map +1 -0
- package/dist/types/spec-observability.d.ts +71 -0
- package/dist/types/spec-observability.d.ts.map +1 -0
- package/dist/types/spec-observability.js +4 -0
- package/dist/types/spec-observability.js.map +1 -0
- package/dist/types/spec-versioning.d.ts +117 -0
- package/dist/types/spec-versioning.d.ts.map +1 -0
- package/dist/types/spec-versioning.js +3 -0
- package/dist/types/spec-versioning.js.map +1 -0
- package/dist/types/well-known.d.ts +70 -0
- package/dist/types/well-known.d.ts.map +1 -0
- package/dist/types/well-known.js +3 -0
- package/dist/types/well-known.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +16 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// tools/create-spec-hu/ac-adapters/database-adapter.ts
|
|
2
|
+
// Generates specialized ACs based on the detected database engine.
|
|
3
|
+
function stackIncludes(stack, term) {
|
|
4
|
+
return (stack ?? []).some((s) => s.toLowerCase().includes(term));
|
|
5
|
+
}
|
|
6
|
+
function detectRedis(knowledge) {
|
|
7
|
+
return (knowledge.cacheEngine === 'redis' ||
|
|
8
|
+
stackIncludes(knowledge.stack, 'redis') ||
|
|
9
|
+
stackIncludes(knowledge.externalServices, 'redis'));
|
|
10
|
+
}
|
|
11
|
+
function detectMongo(knowledge) {
|
|
12
|
+
return (knowledge.database === 'mongodb' ||
|
|
13
|
+
stackIncludes(knowledge.stack, 'mongo') ||
|
|
14
|
+
stackIncludes(knowledge.externalServices, 'mongo'));
|
|
15
|
+
}
|
|
16
|
+
function detectRelational(knowledge) {
|
|
17
|
+
return (knowledge.database === 'postgresql' ||
|
|
18
|
+
knowledge.database === 'mysql' ||
|
|
19
|
+
knowledge.database === 'sqlite' ||
|
|
20
|
+
stackIncludes(knowledge.stack, 'postgres') ||
|
|
21
|
+
stackIncludes(knowledge.stack, 'mysql') ||
|
|
22
|
+
stackIncludes(knowledge.stack, 'sqlite') ||
|
|
23
|
+
stackIncludes(knowledge.stack, 'prisma') ||
|
|
24
|
+
stackIncludes(knowledge.stack, 'typeorm') ||
|
|
25
|
+
stackIncludes(knowledge.stack, 'drizzle') ||
|
|
26
|
+
stackIncludes(knowledge.stack, 'knex') ||
|
|
27
|
+
stackIncludes(knowledge.stack, 'sequelize') ||
|
|
28
|
+
stackIncludes(knowledge.stack, 'sqlalchemy') ||
|
|
29
|
+
stackIncludes(knowledge.stack, 'hibernate'));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns AC lines specific to the project's database engine.
|
|
33
|
+
* Returns an empty array when no database is detected.
|
|
34
|
+
*/
|
|
35
|
+
export function generateDatabaseAcs(knowledge) {
|
|
36
|
+
const lines = [];
|
|
37
|
+
if (detectRelational(knowledge)) {
|
|
38
|
+
lines.push('- [ ] Migration file includes both up AND down operations (reversible by design)', '- [ ] Indexes created for all columns used in WHERE/JOIN/ORDER BY on this feature', '- [ ] Foreign keys define explicit ON DELETE behavior (CASCADE, RESTRICT, or SET NULL)');
|
|
39
|
+
}
|
|
40
|
+
if (detectMongo(knowledge)) {
|
|
41
|
+
lines.push('- [ ] Collection indexes defined for the query patterns introduced by this feature', '- [ ] Schema validation enforced at application layer (not relying on MongoDB schemaless default)', '- [ ] Aggregation pipeline tested with production-representative data volume (≥10k documents)');
|
|
42
|
+
}
|
|
43
|
+
if (detectRedis(knowledge)) {
|
|
44
|
+
lines.push('- [ ] Key naming follows convention: prefix:entity:id (e.g. session:user:42)', '- [ ] TTL set on all cache keys — no keys stored without expiry', '- [ ] Cache invalidation strategy documented in spec: event-based, write-through, or time-based');
|
|
45
|
+
}
|
|
46
|
+
return lines;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=database-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-adapter.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/database-adapter.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,mEAAmE;AAInE,SAAS,aAAa,CAAC,KAAkC,EAAE,IAAY;IACrE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAAC,SAA2B;IAC9C,OAAO,CACL,SAAS,CAAC,WAAW,KAAK,OAAO;QACjC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;QACvC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,SAA2B;IAC9C,OAAO,CACL,SAAS,CAAC,QAAQ,KAAK,SAAS;QAChC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;QACvC,aAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,SAA2B;IACnD,OAAO,CACL,SAAS,CAAC,QAAQ,KAAK,YAAY;QACnC,SAAS,CAAC,QAAQ,KAAK,OAAO;QAC9B,SAAS,CAAC,QAAQ,KAAK,QAAQ;QAC/B,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;QAC1C,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;QACvC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QACxC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QACxC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;QACzC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;QACzC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;QACtC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QAC3C,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC;QAC5C,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA2B;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CACR,kFAAkF,EAClF,mFAAmF,EACnF,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,oFAAoF,EACpF,mGAAmG,EACnG,+FAA+F,CAChG,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,8EAA8E,EAC9E,iEAAiE,EACjE,iGAAiG,CAClG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProjectKnowledge } from '../../../types/index.js';
|
|
2
|
+
export { generateArchitectureAcs } from './architecture-adapter.js';
|
|
3
|
+
export { generateStackAcs } from './stack-adapter.js';
|
|
4
|
+
export { generateDatabaseAcs } from './database-adapter.js';
|
|
5
|
+
export { generateTestingAcs } from './testing-adapter.js';
|
|
6
|
+
/**
|
|
7
|
+
* Aggregates ACs from all specialized adapters, deduplicates, and returns the final list.
|
|
8
|
+
*
|
|
9
|
+
* @param knowledge - Detected project knowledge (architecture, stack, DB, testing).
|
|
10
|
+
* @param _specType - Spec type (reserved for future per-type filtering).
|
|
11
|
+
* @returns Deduplicated array of `- [ ] ...` AC lines.
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateSpecializedAcs(knowledge: ProjectKnowledge, _specType: string): string[];
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// tools/create-spec-hu/ac-adapters/index.ts
|
|
2
|
+
// Barrel: aggregates all specialized AC adapters into a single entry point.
|
|
3
|
+
import { generateArchitectureAcs } from './architecture-adapter.js';
|
|
4
|
+
import { generateStackAcs } from './stack-adapter.js';
|
|
5
|
+
import { generateDatabaseAcs } from './database-adapter.js';
|
|
6
|
+
import { generateTestingAcs } from './testing-adapter.js';
|
|
7
|
+
export { generateArchitectureAcs } from './architecture-adapter.js';
|
|
8
|
+
export { generateStackAcs } from './stack-adapter.js';
|
|
9
|
+
export { generateDatabaseAcs } from './database-adapter.js';
|
|
10
|
+
export { generateTestingAcs } from './testing-adapter.js';
|
|
11
|
+
/**
|
|
12
|
+
* Aggregates ACs from all specialized adapters, deduplicates, and returns the final list.
|
|
13
|
+
*
|
|
14
|
+
* @param knowledge - Detected project knowledge (architecture, stack, DB, testing).
|
|
15
|
+
* @param _specType - Spec type (reserved for future per-type filtering).
|
|
16
|
+
* @returns Deduplicated array of `- [ ] ...` AC lines.
|
|
17
|
+
*/
|
|
18
|
+
export function generateSpecializedAcs(knowledge, _specType) {
|
|
19
|
+
const all = [
|
|
20
|
+
...generateArchitectureAcs(knowledge),
|
|
21
|
+
...generateStackAcs(knowledge),
|
|
22
|
+
...generateDatabaseAcs(knowledge),
|
|
23
|
+
...generateTestingAcs(knowledge),
|
|
24
|
+
];
|
|
25
|
+
// Deduplicate by exact line content
|
|
26
|
+
return [...new Set(all)];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,4EAA4E;AAG5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAA2B,EAAE,SAAiB;IACnF,MAAM,GAAG,GAAG;QACV,GAAG,uBAAuB,CAAC,SAAS,CAAC;QACrC,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC9B,GAAG,mBAAmB,CAAC,SAAS,CAAC;QACjC,GAAG,kBAAkB,CAAC,SAAS,CAAC;KACjC,CAAC;IAEF,oCAAoC;IACpC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProjectKnowledge } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns AC lines specific to the project's framework and language.
|
|
4
|
+
* Returns an empty array when no known framework is detected.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateStackAcs(knowledge: ProjectKnowledge): string[];
|
|
7
|
+
//# sourceMappingURL=stack-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-adapter.d.ts","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/stack-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAchE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAiGtE"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// tools/create-spec-hu/ac-adapters/stack-adapter.ts
|
|
2
|
+
// Generates specialized ACs based on the detected framework and language.
|
|
3
|
+
function normalizeFramework(value) {
|
|
4
|
+
return (value ?? '').toLowerCase();
|
|
5
|
+
}
|
|
6
|
+
function normalizeLanguage(value) {
|
|
7
|
+
return (value ?? '').toLowerCase();
|
|
8
|
+
}
|
|
9
|
+
function stackIncludes(stack, term) {
|
|
10
|
+
return (stack ?? []).some((s) => s.toLowerCase().includes(term));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Returns AC lines specific to the project's framework and language.
|
|
14
|
+
* Returns an empty array when no known framework is detected.
|
|
15
|
+
*/
|
|
16
|
+
export function generateStackAcs(knowledge) {
|
|
17
|
+
const fw = normalizeFramework(knowledge.framework);
|
|
18
|
+
const lang = normalizeLanguage(knowledge.language);
|
|
19
|
+
const stack = knowledge.stack;
|
|
20
|
+
// React / Next.js
|
|
21
|
+
if (fw.includes('react') || fw.includes('next') || stackIncludes(stack, 'react')) {
|
|
22
|
+
return [
|
|
23
|
+
'- [ ] Component renders without hydration mismatch (verified with suppressHydrationWarning absent)',
|
|
24
|
+
'- [ ] Loading and error states handled — no uncaught promise or blank render on failure',
|
|
25
|
+
'- [ ] Accessibility: interactive elements have ARIA labels or visible text (verified with axe-core)',
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
// Vue / Nuxt
|
|
29
|
+
if (fw.includes('vue') || fw.includes('nuxt') || stackIncludes(stack, 'vue')) {
|
|
30
|
+
return [
|
|
31
|
+
'- [ ] Component uses Composition API (setup() or <script setup>) — no Options API in new files',
|
|
32
|
+
'- [ ] Reactive state properly typed with Ref<T> / ComputedRef<T>',
|
|
33
|
+
'- [ ] SSR-compatible: no window/document/localStorage access in setup() without client guard',
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
// Express / Fastify / NestJS
|
|
37
|
+
if (fw.includes('express') ||
|
|
38
|
+
fw.includes('fastify') ||
|
|
39
|
+
fw.includes('nestjs') ||
|
|
40
|
+
fw.includes('nest') ||
|
|
41
|
+
stackIncludes(stack, 'express') ||
|
|
42
|
+
stackIncludes(stack, 'fastify') ||
|
|
43
|
+
stackIncludes(stack, 'nestjs')) {
|
|
44
|
+
return [
|
|
45
|
+
'- [ ] Route returns correct HTTP status codes (200/201 success, 400 validation, 404 not found, 500 unexpected)',
|
|
46
|
+
'- [ ] Input validated with schema before reaching business logic (Zod/Joi/class-validator)',
|
|
47
|
+
'- [ ] Error middleware catches unhandled errors and returns structured JSON (no stack traces in production)',
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
// Django / FastAPI
|
|
51
|
+
if (fw.includes('django') ||
|
|
52
|
+
fw.includes('fastapi') ||
|
|
53
|
+
stackIncludes(stack, 'django') ||
|
|
54
|
+
stackIncludes(stack, 'fastapi')) {
|
|
55
|
+
return [
|
|
56
|
+
'- [ ] Endpoint documented in OpenAPI schema (summary, description, response models)',
|
|
57
|
+
'- [ ] Permissions checked before business logic — no data returned to unauthorized callers',
|
|
58
|
+
'- [ ] Database queries use ORM queryset/session — no raw SQL strings interpolated with user input',
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
// Go
|
|
62
|
+
if (lang === 'go' || lang === 'golang') {
|
|
63
|
+
return [
|
|
64
|
+
'- [ ] Errors returned to caller, not silently swallowed or converted to panic',
|
|
65
|
+
'- [ ] context.Context propagated through the call chain from handler to storage',
|
|
66
|
+
'- [ ] Goroutines have a clear owner responsible for cancellation — no leak on timeout or shutdown',
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
// CLI tool detection (language-agnostic — 'cli' is not a ProjectCategory, detect via stack)
|
|
70
|
+
if (stackIncludes(stack, 'commander') ||
|
|
71
|
+
stackIncludes(stack, 'cobra') ||
|
|
72
|
+
stackIncludes(stack, 'clap') ||
|
|
73
|
+
stackIncludes(stack, 'click') ||
|
|
74
|
+
stackIncludes(stack, 'typer')) {
|
|
75
|
+
return [
|
|
76
|
+
'- [ ] Help text documents all flags with type, default, and example (--help output verified)',
|
|
77
|
+
'- [ ] Exit codes follow convention: 0 = success, 1 = runtime error, 2 = usage error',
|
|
78
|
+
'- [ ] Errors written to stderr, structured output written to stdout (never mixed)',
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
// Svelte / SvelteKit
|
|
82
|
+
if (fw.includes('svelte') || stackIncludes(stack, 'svelte')) {
|
|
83
|
+
return [
|
|
84
|
+
'- [ ] Component store subscriptions cleaned up on destroy (no memory leaks in long-running apps)',
|
|
85
|
+
'- [ ] Form actions use progressive enhancement — works without JavaScript',
|
|
86
|
+
'- [ ] Reactive declarations ($:) do not produce side effects with external dependencies',
|
|
87
|
+
];
|
|
88
|
+
}
|
|
89
|
+
// Angular
|
|
90
|
+
if (fw.includes('angular') || stackIncludes(stack, 'angular')) {
|
|
91
|
+
return [
|
|
92
|
+
'- [ ] Component uses OnPush change detection strategy where feasible',
|
|
93
|
+
'- [ ] Observables unsubscribed in ngOnDestroy or managed with takeUntilDestroyed',
|
|
94
|
+
'- [ ] Injectable services provided at appropriate scope (root vs module)',
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=stack-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-adapter.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/stack-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProjectKnowledge } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns AC lines based on advanced testing detection and quality profile.
|
|
4
|
+
* Falls back to a single generic-but-acceptable unit test AC when no signals found.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateTestingAcs(knowledge: ProjectKnowledge): string[];
|
|
7
|
+
//# sourceMappingURL=testing-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-adapter.d.ts","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/testing-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAuChE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAiCxE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// tools/create-spec-hu/ac-adapters/testing-adapter.ts
|
|
2
|
+
// Generates specialized ACs based on advancedTesting detection and qualityProfile.
|
|
3
|
+
/**
|
|
4
|
+
* Extracts the coverage threshold percentage from the qualityProfile, if defined.
|
|
5
|
+
* Looks for a rule or convention containing "coverage" and a numeric value.
|
|
6
|
+
*/
|
|
7
|
+
const DIGIT_PATTERN = /(\d+)/;
|
|
8
|
+
function extractCoverageThreshold(knowledge) {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may omit required fields
|
|
10
|
+
for (const entry of Object.entries(knowledge.conventions ?? {})) {
|
|
11
|
+
const key = entry[0];
|
|
12
|
+
const value = entry[1];
|
|
13
|
+
if (key.toLowerCase().includes('coverage')) {
|
|
14
|
+
const match = DIGIT_PATTERN.exec(value);
|
|
15
|
+
const captured = match?.[1];
|
|
16
|
+
if (captured !== undefined) {
|
|
17
|
+
return parseInt(captured, 10);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Also check tooling config (e.g. jest.coverageThreshold)
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may omit required fields
|
|
23
|
+
for (const entry of Object.entries(knowledge.tooling ?? {})) {
|
|
24
|
+
const key = entry[0];
|
|
25
|
+
const value = entry[1];
|
|
26
|
+
if (key.toLowerCase().includes('coverage')) {
|
|
27
|
+
const match = DIGIT_PATTERN.exec(value);
|
|
28
|
+
const captured = match?.[1];
|
|
29
|
+
if (captured !== undefined) {
|
|
30
|
+
return parseInt(captured, 10);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns AC lines based on advanced testing detection and quality profile.
|
|
38
|
+
* Falls back to a single generic-but-acceptable unit test AC when no signals found.
|
|
39
|
+
*/
|
|
40
|
+
export function generateTestingAcs(knowledge) {
|
|
41
|
+
const lines = [];
|
|
42
|
+
const advanced = knowledge.advancedTesting;
|
|
43
|
+
if (advanced?.hasChaos) {
|
|
44
|
+
lines.push('- [ ] E2E test covers the critical user path end-to-end without mocks');
|
|
45
|
+
}
|
|
46
|
+
if (advanced?.hasPropertyBased) {
|
|
47
|
+
lines.push('- [ ] Integration test runs against real dependencies (actual DB/cache, no in-memory fakes)');
|
|
48
|
+
}
|
|
49
|
+
if (advanced?.hasMutation) {
|
|
50
|
+
lines.push('- [ ] Load test baseline established: p95 latency documented under expected concurrent users');
|
|
51
|
+
}
|
|
52
|
+
const threshold = extractCoverageThreshold(knowledge);
|
|
53
|
+
if (threshold !== null) {
|
|
54
|
+
lines.push(`- [ ] Branch coverage ≥ ${threshold}% for all new code introduced by this feature`);
|
|
55
|
+
}
|
|
56
|
+
// Fallback: one acceptable generic AC when no advanced signals detected
|
|
57
|
+
if (lines.length === 0) {
|
|
58
|
+
lines.push('- [ ] Unit tests cover the happy path plus at least 2 edge cases (empty input, boundary value)');
|
|
59
|
+
}
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=testing-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing-adapter.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/testing-adapter.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,mFAAmF;AAInF;;;GAGG;AACH,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,SAAS,wBAAwB,CAAC,SAA2B;IAC3D,gHAAgH;IAChH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,gHAAgH;IAChH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA2B;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC;IAE3C,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,2BAA2B,SAAS,+CAA+C,CAAC,CAAC;IAClG,CAAC;IAED,wEAAwE;IACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hu-body-generators.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec-hu/hu-body-generators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"hu-body-generators.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec-hu/hu-body-generators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAoBnF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,EAClB,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAClC,MAAM,EAAE,CA8LV;AAGD,wBAAgB,gCAAgC,IAAI,MAAM,EAAE,CAU3D;AAGD,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAkBjF;AAID,2FAA2F;AAC3F,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAUnD;AAED,iGAAiG;AACjG,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAUnD"}
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
// tools/create-spec-hu/hu-body-generators.ts — Body section generators for HU.md
|
|
2
2
|
// SPEC-013: mobile accessibility criteria for ios/android targets.
|
|
3
3
|
import { loadAcTemplate } from './ac-template-loader.js';
|
|
4
|
+
import { generateSpecializedAcs } from './ac-adapters/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolve acceptance criteria for a spec type.
|
|
7
|
+
* Uses specialized ACs from ProjectKnowledge when available;
|
|
8
|
+
* falls back to static ac-templates.json entries otherwise.
|
|
9
|
+
*/
|
|
10
|
+
function resolveAcs(knowledge, type) {
|
|
11
|
+
if (knowledge === null || knowledge === undefined) {
|
|
12
|
+
return loadAcTemplate(type);
|
|
13
|
+
}
|
|
14
|
+
const specialized = generateSpecializedAcs(knowledge, type);
|
|
15
|
+
if (specialized.length > 0) {
|
|
16
|
+
return specialized;
|
|
17
|
+
}
|
|
18
|
+
return loadAcTemplate(type);
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* Generate the body section of HU.md based on spec type.
|
|
6
22
|
* SPEC-013: includes mobile accessibility criteria for ios/android targets.
|
|
7
23
|
*/
|
|
8
24
|
export function generateHUBody(type, description, target, knowledge) {
|
|
9
25
|
switch (type) {
|
|
10
|
-
case 'bugfix':
|
|
26
|
+
case 'bugfix': {
|
|
27
|
+
const bugfixAcs = resolveAcs(knowledge, 'bugfix');
|
|
11
28
|
return [
|
|
12
29
|
'## Bug Description',
|
|
13
30
|
'',
|
|
@@ -30,9 +47,11 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
30
47
|
'',
|
|
31
48
|
'## Fix Criteria',
|
|
32
49
|
'',
|
|
33
|
-
...
|
|
50
|
+
...bugfixAcs,
|
|
34
51
|
];
|
|
35
|
-
|
|
52
|
+
}
|
|
53
|
+
case 'refactor': {
|
|
54
|
+
const refactorAcs = resolveAcs(knowledge, 'refactor');
|
|
36
55
|
return [
|
|
37
56
|
'## Refactoring Description',
|
|
38
57
|
'',
|
|
@@ -52,9 +71,11 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
52
71
|
'',
|
|
53
72
|
'## Acceptance Criteria',
|
|
54
73
|
'',
|
|
55
|
-
...
|
|
74
|
+
...refactorAcs,
|
|
56
75
|
];
|
|
57
|
-
|
|
76
|
+
}
|
|
77
|
+
case 'infra': {
|
|
78
|
+
const infraAcs = resolveAcs(knowledge, 'infra');
|
|
58
79
|
return [
|
|
59
80
|
'## Infrastructure Description',
|
|
60
81
|
'',
|
|
@@ -70,13 +91,15 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
70
91
|
'',
|
|
71
92
|
'## Acceptance Criteria',
|
|
72
93
|
'',
|
|
73
|
-
...
|
|
94
|
+
...infraAcs,
|
|
74
95
|
'',
|
|
75
96
|
'## Rollback Plan',
|
|
76
97
|
'',
|
|
77
98
|
'- (Describe rollback procedure)',
|
|
78
99
|
];
|
|
79
|
-
|
|
100
|
+
}
|
|
101
|
+
case 'docs': {
|
|
102
|
+
const docsAcs = resolveAcs(knowledge, 'docs');
|
|
80
103
|
return [
|
|
81
104
|
'## Documentation Description',
|
|
82
105
|
'',
|
|
@@ -93,10 +116,12 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
93
116
|
'',
|
|
94
117
|
'## Acceptance Criteria',
|
|
95
118
|
'',
|
|
96
|
-
...
|
|
119
|
+
...docsAcs,
|
|
97
120
|
];
|
|
121
|
+
}
|
|
98
122
|
// SPEC-027: tech-debt type — formal tracking with impact/risk/timeline
|
|
99
|
-
case 'tech-debt':
|
|
123
|
+
case 'tech-debt': {
|
|
124
|
+
const techDebtAcs = resolveAcs(knowledge, 'tech-debt');
|
|
100
125
|
return [
|
|
101
126
|
'## Tech Debt Description',
|
|
102
127
|
'',
|
|
@@ -129,7 +154,7 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
129
154
|
'',
|
|
130
155
|
'## Acceptance Criteria',
|
|
131
156
|
'',
|
|
132
|
-
...
|
|
157
|
+
...techDebtAcs,
|
|
133
158
|
'',
|
|
134
159
|
'## Estimated Effort',
|
|
135
160
|
'',
|
|
@@ -140,22 +165,19 @@ export function generateHUBody(type, description, target, knowledge) {
|
|
|
140
165
|
'| Testing | |',
|
|
141
166
|
'| Review | |',
|
|
142
167
|
];
|
|
168
|
+
}
|
|
143
169
|
case 'feature':
|
|
144
170
|
case 'project':
|
|
145
171
|
case 'agent':
|
|
146
172
|
default: {
|
|
147
|
-
// 'feature', 'project', and 'agent' use the standard format
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
const
|
|
151
|
-
const descBody = isStructured
|
|
152
|
-
? description
|
|
153
|
-
: `As a user, I want ${description}, so that I can achieve the expected outcome.`;
|
|
154
|
-
const acLines = loadAcTemplate(type);
|
|
173
|
+
// 'feature', 'project', and 'agent' use the standard format.
|
|
174
|
+
// Description is always used as-is — wrapping short descriptions in a generic
|
|
175
|
+
// "As a user, I want..." template adds no value and loses context specificity.
|
|
176
|
+
const acLines = resolveAcs(knowledge, type);
|
|
155
177
|
const base = [
|
|
156
178
|
'## Description',
|
|
157
179
|
'',
|
|
158
|
-
|
|
180
|
+
description,
|
|
159
181
|
'',
|
|
160
182
|
'## Acceptance Criteria',
|
|
161
183
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hu-body-generators.js","sourceRoot":"","sources":["../../../src/tools/create-spec-hu/hu-body-generators.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,mEAAmE;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"hu-body-generators.js","sourceRoot":"","sources":["../../../src/tools/create-spec-hu/hu-body-generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ficha-content.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec-tech/ficha-content.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACV,MAAM,sBAAsB,CAAC;AAU9B;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,CAAC,EAAE,SAAS,GACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"ficha-content.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec-tech/ficha-content.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACV,MAAM,sBAAsB,CAAC;AAU9B;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,CAAC,EAAE,SAAS,GACpB,MAAM,CA0JR;AAoRD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,EAAE,CAyBxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAgBnE"}
|