@msn-control/liftoff 0.10.4 → 0.11.2
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/DEVELOPER.md +238 -77
- package/README.md +38 -33
- package/assets/supported-stack.json +3 -136
- package/dist/adapters/azure/governance-assessment.d.ts +2 -0
- package/dist/adapters/azure/governance-assessment.js +21 -0
- package/dist/adapters/azure/governance-assessment.js.map +1 -0
- package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
- package/dist/adapters/filesystem/atomic-write.js +74 -0
- package/dist/adapters/filesystem/atomic-write.js.map +1 -0
- package/dist/adapters/filesystem/errors.d.ts +2 -0
- package/dist/adapters/filesystem/errors.js +8 -0
- package/dist/adapters/filesystem/errors.js.map +1 -0
- package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
- package/dist/adapters/filesystem/manifest-file.js +21 -0
- package/dist/adapters/filesystem/manifest-file.js.map +1 -0
- package/dist/adapters/filesystem/project-config.d.ts +4 -0
- package/dist/adapters/filesystem/project-config.js +157 -0
- package/dist/adapters/filesystem/project-config.js.map +1 -0
- package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
- package/dist/adapters/filesystem/project-discovery.js +30 -0
- package/dist/adapters/filesystem/project-discovery.js.map +1 -0
- package/dist/adapters/filesystem/project-files.d.ts +6 -0
- package/dist/adapters/filesystem/project-files.js +68 -0
- package/dist/adapters/filesystem/project-files.js.map +1 -0
- package/dist/adapters/filesystem/project-lock.d.ts +8 -0
- package/dist/adapters/filesystem/project-lock.js +164 -0
- package/dist/adapters/filesystem/project-lock.js.map +1 -0
- package/dist/adapters/filesystem/project-paths.d.ts +2 -0
- package/dist/adapters/filesystem/project-paths.js +60 -0
- package/dist/adapters/filesystem/project-paths.js.map +1 -0
- package/dist/adapters/filesystem/project-transaction.d.ts +24 -0
- package/dist/adapters/filesystem/project-transaction.js +177 -0
- package/dist/adapters/filesystem/project-transaction.js.map +1 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
- package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
- package/dist/adapters/filesystem/update-previews.d.ts +50 -0
- package/dist/adapters/filesystem/update-previews.js +613 -0
- package/dist/adapters/filesystem/update-previews.js.map +1 -0
- package/dist/adapters/git/governance-assessment.d.ts +22 -0
- package/dist/adapters/git/governance-assessment.js +161 -0
- package/dist/adapters/git/governance-assessment.js.map +1 -0
- package/dist/adapters/github/governance-assessment.d.ts +2 -0
- package/dist/adapters/github/governance-assessment.js +18 -0
- package/dist/adapters/github/governance-assessment.js.map +1 -0
- package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
- package/dist/adapters/packaged-assets/package-root.js +21 -0
- package/dist/adapters/packaged-assets/package-root.js.map +1 -0
- package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
- package/dist/adapters/packaged-assets/supported-stack.js +18 -0
- package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
- package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
- package/dist/adapters/packaged-assets/template-assets.js +36 -0
- package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
- package/dist/adapters/process/shell-command.d.ts +6 -0
- package/dist/adapters/process/shell-command.js +27 -0
- package/dist/adapters/process/shell-command.js.map +1 -0
- package/dist/application/context.d.ts +25 -0
- package/dist/application/context.js +2 -0
- package/dist/application/context.js.map +1 -0
- package/dist/application/diagnose/doctor.d.ts +21 -0
- package/dist/application/diagnose/doctor.js +580 -0
- package/dist/application/diagnose/doctor.js.map +1 -0
- package/dist/application/diagnose/generated-project.d.ts +1 -0
- package/dist/application/diagnose/generated-project.js +105 -0
- package/dist/application/diagnose/generated-project.js.map +1 -0
- package/dist/application/diagnose/validate.d.ts +6 -0
- package/dist/application/diagnose/validate.js +27 -0
- package/dist/application/diagnose/validate.js.map +1 -0
- package/dist/application/initialize/fixture.d.ts +2 -0
- package/dist/application/initialize/fixture.js +39 -0
- package/dist/application/initialize/fixture.js.map +1 -0
- package/dist/application/initialize/inputs.d.ts +3 -0
- package/dist/application/initialize/inputs.js +35 -0
- package/dist/application/initialize/inputs.js.map +1 -0
- package/dist/application/initialize/use-case.d.ts +23 -0
- package/dist/application/initialize/use-case.js +360 -0
- package/dist/application/initialize/use-case.js.map +1 -0
- package/dist/application/migrate/use-case.d.ts +7 -0
- package/dist/application/migrate/use-case.js +378 -0
- package/dist/application/migrate/use-case.js.map +1 -0
- package/dist/application/project/catalog.d.ts +46 -0
- package/dist/application/project/catalog.js +12 -0
- package/dist/application/project/catalog.js.map +1 -0
- package/dist/application/project/manifest.d.ts +2 -0
- package/dist/application/project/manifest.js +29 -0
- package/dist/application/project/manifest.js.map +1 -0
- package/dist/application/project/planning.d.ts +6 -0
- package/dist/application/project/planning.js +12 -0
- package/dist/application/project/planning.js.map +1 -0
- package/dist/application/update/approval.d.ts +39 -0
- package/dist/application/update/approval.js +54 -0
- package/dist/application/update/approval.js.map +1 -0
- package/dist/application/update/command-guidance.d.ts +2 -0
- package/dist/application/update/command-guidance.js +14 -0
- package/dist/application/update/command-guidance.js.map +1 -0
- package/dist/application/update/inspection.d.ts +37 -0
- package/dist/application/update/inspection.js +235 -0
- package/dist/application/update/inspection.js.map +1 -0
- package/dist/application/update/migration-runtime.d.ts +14 -0
- package/dist/application/update/migration-runtime.js +178 -0
- package/dist/application/update/migration-runtime.js.map +1 -0
- package/dist/application/update/output.d.ts +134 -0
- package/dist/application/update/output.js +182 -0
- package/dist/application/update/output.js.map +1 -0
- package/dist/application/update/planning.d.ts +40 -0
- package/dist/application/update/planning.js +293 -0
- package/dist/application/update/planning.js.map +1 -0
- package/dist/application/update/preview.d.ts +49 -0
- package/dist/application/update/preview.js +220 -0
- package/dist/application/update/preview.js.map +1 -0
- package/dist/application/update/protected-source.d.ts +25 -0
- package/dist/application/update/protected-source.js +81 -0
- package/dist/application/update/protected-source.js.map +1 -0
- package/dist/application/update/reporting.d.ts +42 -0
- package/dist/application/update/reporting.js +326 -0
- package/dist/application/update/reporting.js.map +1 -0
- package/dist/application/update/revalidation-plan.d.ts +22 -0
- package/dist/application/update/revalidation-plan.js +108 -0
- package/dist/application/update/revalidation-plan.js.map +1 -0
- package/dist/application/update/revalidation.d.ts +70 -0
- package/dist/application/update/revalidation.js +337 -0
- package/dist/application/update/revalidation.js.map +1 -0
- package/dist/application/update/review-plan.d.ts +25 -0
- package/dist/application/update/review-plan.js +89 -0
- package/dist/application/update/review-plan.js.map +1 -0
- package/dist/application/update/transaction-approval.d.ts +29 -0
- package/dist/application/update/transaction-approval.js +82 -0
- package/dist/application/update/transaction-approval.js.map +1 -0
- package/dist/application/update/use-case.d.ts +9 -0
- package/dist/application/update/use-case.js +271 -0
- package/dist/application/update/use-case.js.map +1 -0
- package/dist/application/update/write-plan.d.ts +15 -0
- package/dist/application/update/write-plan.js +115 -0
- package/dist/application/update/write-plan.js.map +1 -0
- package/dist/application/upgrade/use-case.d.ts +6 -0
- package/dist/application/upgrade/use-case.js +82 -0
- package/dist/application/upgrade/use-case.js.map +1 -0
- package/dist/args.d.ts +5 -65
- package/dist/args.js +4 -472
- package/dist/args.js.map +1 -1
- package/dist/artifact-lifecycle.d.ts +1 -21
- package/dist/artifact-lifecycle.js +1 -75
- package/dist/artifact-lifecycle.js.map +1 -1
- package/dist/catalogs.d.ts +1 -50
- package/dist/catalogs.js +1 -472
- package/dist/catalogs.js.map +1 -1
- package/dist/cli/args/contracts.d.ts +51 -0
- package/dist/cli/args/contracts.js +2 -0
- package/dist/cli/args/contracts.js.map +1 -0
- package/dist/cli/args/definitions.d.ts +6 -0
- package/dist/cli/args/definitions.js +188 -0
- package/dist/cli/args/definitions.js.map +1 -0
- package/dist/cli/args/help.d.ts +5 -0
- package/dist/cli/args/help.js +142 -0
- package/dist/cli/args/help.js.map +1 -0
- package/dist/cli/args/parser.d.ts +5 -0
- package/dist/cli/args/parser.js +160 -0
- package/dist/cli/args/parser.js.map +1 -0
- package/dist/cli/args/readers.d.ts +4 -0
- package/dist/cli/args/readers.js +19 -0
- package/dist/cli/args/readers.js.map +1 -0
- package/dist/cli/commands/diagnose.d.ts +4 -0
- package/dist/cli/commands/diagnose.js +12 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +3 -0
- package/dist/cli/commands/dispatch.js +94 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/help.d.ts +3 -0
- package/dist/cli/commands/help.js +32 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/helpers.d.ts +8 -0
- package/dist/cli/commands/helpers.js +97 -0
- package/dist/cli/commands/helpers.js.map +1 -0
- package/dist/cli/commands/initialize.d.ts +3 -0
- package/dist/cli/commands/initialize.js +7 -0
- package/dist/cli/commands/initialize.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +3 -0
- package/dist/cli/commands/migrate.js +8 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.js +34 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/reference.d.ts +5 -0
- package/dist/cli/commands/reference.js +43 -0
- package/dist/cli/commands/reference.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.js +10 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +3 -0
- package/dist/cli/commands/upgrade.js +7 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/context.d.ts +1 -0
- package/dist/cli/context.js +2 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/project-options.d.ts +3 -0
- package/dist/cli/project-options.js +41 -0
- package/dist/cli/project-options.js.map +1 -0
- package/dist/cli.d.ts +3 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -35
- package/dist/commands.js +3 -2969
- package/dist/commands.js.map +1 -1
- package/dist/container-validation.d.ts +1 -1
- package/dist/domain/governance/activation/approvals.d.ts +351 -0
- package/dist/domain/governance/activation/approvals.js +528 -0
- package/dist/domain/governance/activation/approvals.js.map +1 -0
- package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
- package/dist/domain/governance/activation/canonical-json.js +39 -0
- package/dist/domain/governance/activation/canonical-json.js.map +1 -0
- package/dist/domain/governance/activation/capabilities.d.ts +7 -0
- package/dist/domain/governance/activation/capabilities.js +33 -0
- package/dist/domain/governance/activation/capabilities.js.map +1 -0
- package/dist/domain/governance/activation/evidence.d.ts +63 -0
- package/dist/domain/governance/activation/evidence.js +444 -0
- package/dist/domain/governance/activation/evidence.js.map +1 -0
- package/dist/domain/governance/activation/graph.d.ts +397 -0
- package/dist/domain/governance/activation/graph.js +441 -0
- package/dist/domain/governance/activation/graph.js.map +1 -0
- package/dist/domain/governance/activation/inputs.d.ts +25 -0
- package/dist/domain/governance/activation/inputs.js +63 -0
- package/dist/domain/governance/activation/inputs.js.map +1 -0
- package/dist/domain/governance/activation/operations.d.ts +19 -0
- package/dist/domain/governance/activation/operations.js +181 -0
- package/dist/domain/governance/activation/operations.js.map +1 -0
- package/dist/domain/governance/activation/readiness.d.ts +27 -0
- package/dist/domain/governance/activation/readiness.js +269 -0
- package/dist/domain/governance/activation/readiness.js.map +1 -0
- package/dist/domain/governance/activation/types.d.ts +399 -0
- package/dist/domain/governance/activation/types.js +109 -0
- package/dist/domain/governance/activation/types.js.map +1 -0
- package/dist/domain/governance/activation/validators.d.ts +22 -0
- package/dist/domain/governance/activation/validators.js +1347 -0
- package/dist/domain/governance/activation/validators.js.map +1 -0
- package/dist/domain/governance/assessment/catalog.d.ts +14 -0
- package/dist/domain/governance/assessment/catalog.js +105 -0
- package/dist/domain/governance/assessment/catalog.js.map +1 -0
- package/dist/domain/governance/assessment/errors.d.ts +10 -0
- package/dist/domain/governance/assessment/errors.js +22 -0
- package/dist/domain/governance/assessment/errors.js.map +1 -0
- package/dist/domain/governance/assessment/index.d.ts +8 -0
- package/dist/domain/governance/assessment/index.js +9 -0
- package/dist/domain/governance/assessment/index.js.map +1 -0
- package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
- package/dist/domain/governance/assessment/live-normalize.js +403 -0
- package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
- package/dist/domain/governance/assessment/predicates.d.ts +36 -0
- package/dist/domain/governance/assessment/predicates.js +545 -0
- package/dist/domain/governance/assessment/predicates.js.map +1 -0
- package/dist/domain/governance/assessment/report.d.ts +23 -0
- package/dist/domain/governance/assessment/report.js +266 -0
- package/dist/domain/governance/assessment/report.js.map +1 -0
- package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
- package/dist/domain/governance/assessment/sanitize.js +60 -0
- package/dist/domain/governance/assessment/sanitize.js.map +1 -0
- package/dist/domain/governance/assessment/types.d.ts +174 -0
- package/dist/domain/governance/assessment/types.js +13 -0
- package/dist/domain/governance/assessment/types.js.map +1 -0
- package/dist/domain/governance/assessment/yaml.d.ts +6 -0
- package/dist/domain/governance/assessment/yaml.js +30 -0
- package/dist/domain/governance/assessment/yaml.js.map +1 -0
- package/dist/domain/governance/policy/identity.d.ts +64 -0
- package/dist/domain/governance/policy/identity.js +112 -0
- package/dist/domain/governance/policy/identity.js.map +1 -0
- package/dist/domain/migration/dependencies.d.ts +7 -0
- package/dist/domain/migration/dependencies.js +221 -0
- package/dist/domain/migration/dependencies.js.map +1 -0
- package/dist/domain/migration/inventory.d.ts +3 -0
- package/dist/domain/migration/inventory.js +15 -0
- package/dist/domain/migration/inventory.js.map +1 -0
- package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
- package/dist/domain/project/artifact-lifecycle.js +137 -0
- package/dist/domain/project/artifact-lifecycle.js.map +1 -0
- package/dist/domain/project/catalog.d.ts +48 -0
- package/dist/domain/project/catalog.js +507 -0
- package/dist/domain/project/catalog.js.map +1 -0
- package/dist/domain/project/contracts.d.ts +247 -0
- package/dist/domain/project/contracts.js +2 -0
- package/dist/domain/project/contracts.js.map +1 -0
- package/dist/domain/project/errors.d.ts +3 -0
- package/dist/domain/project/errors.js +7 -0
- package/dist/domain/project/errors.js.map +1 -0
- package/dist/domain/project/infrastructure-layout.d.ts +26 -0
- package/dist/domain/project/infrastructure-layout.js +125 -0
- package/dist/domain/project/infrastructure-layout.js.map +1 -0
- package/dist/domain/project/inputs.d.ts +21 -0
- package/dist/domain/project/inputs.js +41 -0
- package/dist/domain/project/inputs.js.map +1 -0
- package/dist/domain/project/manifest/artifacts.d.ts +8 -0
- package/dist/domain/project/manifest/artifacts.js +150 -0
- package/dist/domain/project/manifest/artifacts.js.map +1 -0
- package/dist/domain/project/manifest/context.d.ts +13 -0
- package/dist/domain/project/manifest/context.js +2 -0
- package/dist/domain/project/manifest/context.js.map +1 -0
- package/dist/domain/project/manifest/fields.d.ts +6 -0
- package/dist/domain/project/manifest/fields.js +36 -0
- package/dist/domain/project/manifest/fields.js.map +1 -0
- package/dist/domain/project/manifest/governance.d.ts +8 -0
- package/dist/domain/project/manifest/governance.js +161 -0
- package/dist/domain/project/manifest/governance.js.map +1 -0
- package/dist/domain/project/manifest/project-identity.d.ts +6 -0
- package/dist/domain/project/manifest/project-identity.js +273 -0
- package/dist/domain/project/manifest/project-identity.js.map +1 -0
- package/dist/domain/project/manifest/reader.d.ts +9 -0
- package/dist/domain/project/manifest/reader.js +141 -0
- package/dist/domain/project/manifest/reader.js.map +1 -0
- package/dist/domain/project/paths.d.ts +2 -0
- package/dist/domain/project/paths.js +29 -0
- package/dist/domain/project/paths.js.map +1 -0
- package/dist/domain/project/planning.d.ts +19 -0
- package/dist/domain/project/planning.js +329 -0
- package/dist/domain/project/planning.js.map +1 -0
- package/dist/domain/project/retired-workload.d.ts +4 -0
- package/dist/domain/project/retired-workload.js +18 -0
- package/dist/domain/project/retired-workload.js.map +1 -0
- package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
- package/dist/domain/project/reviewed-update-artifacts.js +3 -0
- package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
- package/dist/domain/project/supported-stack.d.ts +113 -0
- package/dist/domain/project/supported-stack.js +426 -0
- package/dist/domain/project/supported-stack.js.map +1 -0
- package/dist/domain/workstation/constraints.d.ts +6 -0
- package/dist/domain/workstation/constraints.js +8 -0
- package/dist/domain/workstation/constraints.js.map +1 -0
- package/dist/file-system.d.ts +10 -44
- package/dist/file-system.js +9 -1245
- package/dist/file-system.js.map +1 -1
- package/dist/framework-adapters.d.ts +1 -1
- package/dist/framework-validation.d.ts +1 -1
- package/dist/framework-validation.js +1 -1
- package/dist/framework-validation.js.map +1 -1
- package/dist/genai-templates.d.ts +2 -9
- package/dist/genai-templates.js +4 -5
- package/dist/genai-templates.js.map +1 -1
- package/dist/generators/common/artifacts.d.ts +6 -0
- package/dist/generators/common/artifacts.js +30 -0
- package/dist/generators/common/artifacts.js.map +1 -0
- package/dist/generators/common/base.d.ts +17 -0
- package/dist/generators/common/base.js +425 -0
- package/dist/generators/common/base.js.map +1 -0
- package/dist/generators/common/dotenv-validation.d.ts +2 -0
- package/dist/generators/common/dotenv-validation.js +80 -0
- package/dist/generators/common/dotenv-validation.js.map +1 -0
- package/dist/generators/common/environments.d.ts +3 -0
- package/dist/generators/common/environments.js +15 -0
- package/dist/generators/common/environments.js.map +1 -0
- package/dist/generators/common/frontend.d.ts +15 -0
- package/dist/generators/common/frontend.js +166 -0
- package/dist/generators/common/frontend.js.map +1 -0
- package/dist/generators/common/python-settings.d.ts +2 -0
- package/dist/generators/common/python-settings.js +70 -0
- package/dist/generators/common/python-settings.js.map +1 -0
- package/dist/generators/common/spec-workflow.d.ts +28 -0
- package/dist/generators/common/spec-workflow.js +567 -0
- package/dist/generators/common/spec-workflow.js.map +1 -0
- package/dist/generators/common/values.d.ts +13 -0
- package/dist/generators/common/values.js +16 -0
- package/dist/generators/common/values.js.map +1 -0
- package/dist/generators/containers/compose.d.ts +7 -0
- package/dist/generators/containers/compose.js +196 -0
- package/dist/generators/containers/compose.js.map +1 -0
- package/dist/generators/containers/context.d.ts +1 -0
- package/dist/generators/containers/context.js +43 -0
- package/dist/generators/containers/context.js.map +1 -0
- package/dist/generators/containers/images.d.ts +7 -0
- package/dist/generators/containers/images.js +119 -0
- package/dist/generators/containers/images.js.map +1 -0
- package/dist/generators/context.d.ts +42 -0
- package/dist/generators/context.js +38 -0
- package/dist/generators/context.js.map +1 -0
- package/dist/generators/genai/backend.d.ts +20 -0
- package/dist/generators/genai/backend.js +667 -0
- package/dist/generators/genai/backend.js.map +1 -0
- package/dist/generators/genai/configuration.d.ts +3 -0
- package/dist/generators/genai/configuration.js +43 -0
- package/dist/generators/genai/configuration.js.map +1 -0
- package/dist/generators/genai/database.d.ts +7 -0
- package/dist/generators/genai/database.js +71 -0
- package/dist/generators/genai/database.js.map +1 -0
- package/dist/generators/genai/functions.d.ts +15 -0
- package/dist/generators/genai/functions.js +156 -0
- package/dist/generators/genai/functions.js.map +1 -0
- package/dist/generators/genai/index.d.ts +8 -0
- package/dist/generators/genai/index.js +11 -0
- package/dist/generators/genai/index.js.map +1 -0
- package/dist/generators/genai/patterns.d.ts +9 -0
- package/dist/generators/genai/patterns.js +309 -0
- package/dist/generators/genai/patterns.js.map +1 -0
- package/dist/generators/infrastructure/azure.d.ts +18 -0
- package/dist/generators/infrastructure/azure.js +655 -0
- package/dist/generators/infrastructure/azure.js.map +1 -0
- package/dist/generators/infrastructure/names.d.ts +23 -0
- package/dist/generators/infrastructure/names.js +51 -0
- package/dist/generators/infrastructure/names.js.map +1 -0
- package/dist/generators/standard/configuration.d.ts +3 -0
- package/dist/generators/standard/configuration.js +26 -0
- package/dist/generators/standard/configuration.js.map +1 -0
- package/dist/generators/standard/go.d.ts +17 -0
- package/dist/generators/standard/go.js +338 -0
- package/dist/generators/standard/go.js.map +1 -0
- package/dist/generators/standard/index.d.ts +12 -0
- package/dist/generators/standard/index.js +12 -0
- package/dist/generators/standard/index.js.map +1 -0
- package/dist/generators/standard/node.d.ts +20 -0
- package/dist/generators/standard/node.js +314 -0
- package/dist/generators/standard/node.js.map +1 -0
- package/dist/generators/standard/python.d.ts +18 -0
- package/dist/generators/standard/python.js +191 -0
- package/dist/generators/standard/python.js.map +1 -0
- package/dist/go-template-assets.js +3 -3
- package/dist/go-template-assets.js.map +1 -1
- package/dist/governance-activation/activation-state.d.ts +1 -1
- package/dist/governance-activation/activation-state.js +49 -9
- package/dist/governance-activation/activation-state.js.map +1 -1
- package/dist/governance-activation/approvals.d.ts +1 -188
- package/dist/governance-activation/approvals.js +1 -507
- package/dist/governance-activation/approvals.js.map +1 -1
- package/dist/governance-activation/canonical-json.d.ts +1 -3
- package/dist/governance-activation/canonical-json.js +1 -35
- package/dist/governance-activation/canonical-json.js.map +1 -1
- package/dist/governance-activation/commands.d.ts +6 -1
- package/dist/governance-activation/commands.js +135 -107
- package/dist/governance-activation/commands.js.map +1 -1
- package/dist/governance-activation/compatibility.d.ts +30 -5
- package/dist/governance-activation/compatibility.js +74 -8
- package/dist/governance-activation/compatibility.js.map +1 -1
- package/dist/governance-activation/credentials.d.ts +3 -3
- package/dist/governance-activation/credentials.js +5 -5
- package/dist/governance-activation/credentials.js.map +1 -1
- package/dist/governance-activation/doctor.d.ts +1 -1
- package/dist/governance-activation/doctor.js +59 -100
- package/dist/governance-activation/doctor.js.map +1 -1
- package/dist/governance-activation/evidence.d.ts +1 -49
- package/dist/governance-activation/evidence.js +1 -245
- package/dist/governance-activation/evidence.js.map +1 -1
- package/dist/governance-activation/git-ignore.d.ts +9 -0
- package/dist/governance-activation/git-ignore.js +76 -0
- package/dist/governance-activation/git-ignore.js.map +1 -0
- package/dist/governance-activation/graph.d.ts +1 -397
- package/dist/governance-activation/graph.js +1 -440
- package/dist/governance-activation/graph.js.map +1 -1
- package/dist/governance-activation/historical-state.d.ts +81 -0
- package/dist/governance-activation/historical-state.js +817 -0
- package/dist/governance-activation/historical-state.js.map +1 -0
- package/dist/governance-activation/history-contracts.d.ts +109 -0
- package/dist/governance-activation/history-contracts.js +303 -0
- package/dist/governance-activation/history-contracts.js.map +1 -0
- package/dist/governance-activation/identity.d.ts +1 -35
- package/dist/governance-activation/identity.js +1 -88
- package/dist/governance-activation/identity.js.map +1 -1
- package/dist/governance-activation/index.d.ts +3 -0
- package/dist/governance-activation/index.js +3 -0
- package/dist/governance-activation/index.js.map +1 -1
- package/dist/governance-activation/inputs.d.ts +10 -0
- package/dist/governance-activation/inputs.js +158 -0
- package/dist/governance-activation/inputs.js.map +1 -0
- package/dist/governance-activation/migration-history.d.ts +97 -0
- package/dist/governance-activation/migration-history.js +388 -0
- package/dist/governance-activation/migration-history.js.map +1 -0
- package/dist/governance-activation/migration.d.ts +4 -3
- package/dist/governance-activation/migration.js +14 -6
- package/dist/governance-activation/migration.js.map +1 -1
- package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
- package/dist/governance-activation/phase-bootstrap-state.js +128 -0
- package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
- package/dist/governance-activation/phase-discovery.d.ts +2 -0
- package/dist/governance-activation/phase-discovery.js +88 -0
- package/dist/governance-activation/phase-discovery.js.map +1 -0
- package/dist/governance-activation/phase-governance.d.ts +4 -0
- package/dist/governance-activation/phase-governance.js +141 -0
- package/dist/governance-activation/phase-governance.js.map +1 -0
- package/dist/governance-activation/phase-publication.d.ts +8 -0
- package/dist/governance-activation/phase-publication.js +318 -0
- package/dist/governance-activation/phase-publication.js.map +1 -0
- package/dist/governance-activation/proof-records.d.ts +3 -0
- package/dist/governance-activation/proof-records.js +78 -0
- package/dist/governance-activation/proof-records.js.map +1 -0
- package/dist/governance-activation/read-only.d.ts +30 -0
- package/dist/governance-activation/read-only.js +33 -0
- package/dist/governance-activation/read-only.js.map +1 -0
- package/dist/governance-activation/readiness.d.ts +1 -25
- package/dist/governance-activation/readiness.js +1 -222
- package/dist/governance-activation/readiness.js.map +1 -1
- package/dist/governance-activation/reconciliation.d.ts +1 -1
- package/dist/governance-activation/reconciliation.js +3 -3
- package/dist/governance-activation/reconciliation.js.map +1 -1
- package/dist/governance-activation/release-integrity.d.ts +1 -1
- package/dist/governance-activation/release-integrity.js +2 -2
- package/dist/governance-activation/release-integrity.js.map +1 -1
- package/dist/governance-activation/seed-lifecycle.d.ts +36 -6
- package/dist/governance-activation/seed-lifecycle.js +444 -77
- package/dist/governance-activation/seed-lifecycle.js.map +1 -1
- package/dist/governance-activation/source-of-truth.d.ts +5 -3
- package/dist/governance-activation/source-of-truth.js +32 -52
- package/dist/governance-activation/source-of-truth.js.map +1 -1
- package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
- package/dist/governance-activation/spec-kit-seed.js +43 -0
- package/dist/governance-activation/spec-kit-seed.js.map +1 -0
- package/dist/governance-activation/task-projection.d.ts +1 -1
- package/dist/governance-activation/transition-planning.d.ts +17 -0
- package/dist/governance-activation/transition-planning.js +259 -0
- package/dist/governance-activation/transition-planning.js.map +1 -0
- package/dist/governance-activation/transition-ports.d.ts +150 -0
- package/dist/governance-activation/transition-ports.js +2 -0
- package/dist/governance-activation/transition-ports.js.map +1 -0
- package/dist/governance-activation/transition-process.d.ts +7 -0
- package/dist/governance-activation/transition-process.js +21 -0
- package/dist/governance-activation/transition-process.js.map +1 -0
- package/dist/governance-activation/transition-records.d.ts +56 -0
- package/dist/governance-activation/transition-records.js +208 -0
- package/dist/governance-activation/transition-records.js.map +1 -0
- package/dist/governance-activation/transitions.d.ts +14 -167
- package/dist/governance-activation/transitions.js +173 -2061
- package/dist/governance-activation/transitions.js.map +1 -1
- package/dist/governance-activation/types.d.ts +1 -390
- package/dist/governance-activation/types.js +1 -107
- package/dist/governance-activation/types.js.map +1 -1
- package/dist/governance-activation/validators.d.ts +1 -17
- package/dist/governance-activation/validators.js +1 -1304
- package/dist/governance-activation/validators.js.map +1 -1
- package/dist/governance-assessment/catalog.d.ts +1 -2
- package/dist/governance-assessment/catalog.js +18 -85
- package/dist/governance-assessment/catalog.js.map +1 -1
- package/dist/governance-assessment/command.d.ts +1 -1
- package/dist/governance-assessment/command.js +8 -12
- package/dist/governance-assessment/command.js.map +1 -1
- package/dist/governance-assessment/engine.d.ts +6 -11
- package/dist/governance-assessment/engine.js +490 -114
- package/dist/governance-assessment/engine.js.map +1 -1
- package/dist/governance-assessment/live-normalize.d.ts +1 -19
- package/dist/governance-assessment/live-normalize.js +1 -402
- package/dist/governance-assessment/live-normalize.js.map +1 -1
- package/dist/governance-assessment/live-transport.d.ts +2 -6
- package/dist/governance-assessment/live-transport.js +10 -22
- package/dist/governance-assessment/live-transport.js.map +1 -1
- package/dist/governance-assessment/live.js +55 -5
- package/dist/governance-assessment/live.js.map +1 -1
- package/dist/governance-assessment/predicates.d.ts +1 -27
- package/dist/governance-assessment/predicates.js +1 -329
- package/dist/governance-assessment/predicates.js.map +1 -1
- package/dist/governance-assessment/project.d.ts +20 -17
- package/dist/governance-assessment/project.js +101 -151
- package/dist/governance-assessment/project.js.map +1 -1
- package/dist/governance-assessment/readers.d.ts +1 -5
- package/dist/governance-assessment/readers.js +5 -13
- package/dist/governance-assessment/readers.js.map +1 -1
- package/dist/governance-assessment/report.d.ts +1 -23
- package/dist/governance-assessment/report.js +1 -265
- package/dist/governance-assessment/report.js.map +1 -1
- package/dist/governance-assessment/sanitize.d.ts +1 -8
- package/dist/governance-assessment/sanitize.js +1 -56
- package/dist/governance-assessment/sanitize.js.map +1 -1
- package/dist/governance-assessment/types.d.ts +1 -173
- package/dist/governance-assessment/types.js +1 -12
- package/dist/governance-assessment/types.js.map +1 -1
- package/dist/governance-assessment/yaml.d.ts +1 -6
- package/dist/governance-assessment/yaml.js +1 -29
- package/dist/governance-assessment/yaml.js.map +1 -1
- package/dist/init-filesystem.d.ts +1 -1
- package/dist/init-filesystem.js +126 -174
- package/dist/init-filesystem.js.map +1 -1
- package/dist/interactive.d.ts +2 -2
- package/dist/interactive.js +42 -41
- package/dist/interactive.js.map +1 -1
- package/dist/migrate-plan.d.ts +1 -1
- package/dist/migrate-plan.js +14 -8
- package/dist/migrate-plan.js.map +1 -1
- package/dist/npm-template-assets.js +5 -4
- package/dist/npm-template-assets.js.map +1 -1
- package/dist/openspec-profile.d.ts +1 -1
- package/dist/opentofu-template-assets.js +3 -3
- package/dist/opentofu-template-assets.js.map +1 -1
- package/dist/package-identity.d.ts +3 -0
- package/dist/package-identity.js +13 -2
- package/dist/package-identity.js.map +1 -1
- package/dist/planner.d.ts +1 -19
- package/dist/planner.js +1 -565
- package/dist/planner.js.map +1 -1
- package/dist/process-runner.d.ts +1 -1
- package/dist/project-dependencies.d.ts +5 -3
- package/dist/project-dependencies.js +74 -63
- package/dist/project-dependencies.js.map +1 -1
- package/dist/published-verifier.js +61 -30
- package/dist/published-verifier.js.map +1 -1
- package/dist/python-template-assets.js +6 -9
- package/dist/python-template-assets.js.map +1 -1
- package/dist/reconcile.d.ts +1 -1
- package/dist/reconcile.js +2 -2
- package/dist/reconcile.js.map +1 -1
- package/dist/repository-governance.d.ts +5 -2
- package/dist/repository-governance.js +140 -113
- package/dist/repository-governance.js.map +1 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scan.d.ts +6 -2
- package/dist/scan.js +78 -30
- package/dist/scan.js.map +1 -1
- package/dist/self-upgrade.d.ts +1 -1
- package/dist/self-upgrade.js +20 -7
- package/dist/self-upgrade.js.map +1 -1
- package/dist/stable-release.js +7 -1
- package/dist/stable-release.js.map +1 -1
- package/dist/standard-templates.d.ts +2 -2
- package/dist/standard-templates.js +6 -841
- package/dist/standard-templates.js.map +1 -1
- package/dist/supported-stack.d.ts +3 -115
- package/dist/supported-stack.js +4 -438
- package/dist/supported-stack.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/templates.d.ts +10 -20
- package/dist/templates.js +52 -3261
- package/dist/templates.js.map +1 -1
- package/dist/types.d.ts +1 -263
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/version.js +2 -6
- package/dist/version.js.map +1 -1
- package/dist/workstation-catalog.d.ts +5 -2
- package/dist/workstation-catalog.js +33 -2
- package/dist/workstation-catalog.js.map +1 -1
- package/dist/workstation.d.ts +4 -3
- package/dist/workstation.js +86 -32
- package/dist/workstation.js.map +1 -1
- package/docs/assets/liftoff-terminal.svg +3 -3
- package/docs/azure-deployment.md +107 -10
- package/docs/cli-reference.md +144 -35
- package/docs/configuration-and-manifests.md +152 -35
- package/docs/existing-repositories.md +48 -12
- package/docs/getting-started.md +44 -31
- package/docs/prerequisites.md +34 -35
- package/docs/project-structure.md +39 -46
- package/docs/repository-governance.md +96 -26
- package/docs/safety-and-consent.md +90 -28
- package/docs/spec-workflows-and-agents.md +31 -28
- package/docs/supported-stack.md +11 -9
- package/docs/troubleshooting.md +114 -54
- package/docs/workloads.md +52 -67
- package/package.json +4 -7
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
- package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
- package/assets/power-apps-code-app/README.md +0 -27
- package/dist/code-apps-plugin.d.ts +0 -13
- package/dist/code-apps-plugin.js +0 -69
- package/dist/code-apps-plugin.js.map +0 -1
- package/dist/power-apps-assets.d.ts +0 -30
- package/dist/power-apps-assets.js +0 -131
- package/dist/power-apps-assets.js.map +0 -1
- package/dist/power-apps-templates.d.ts +0 -3
- package/dist/power-apps-templates.js +0 -177
- package/dist/power-apps-templates.js.map +0 -1
- package/dist/power-apps-validation.d.ts +0 -1
- package/dist/power-apps-validation.js +0 -79
- package/dist/power-apps-validation.js.map +0 -1
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
import { formatCommand } from '../../process-runner.js';
|
|
2
|
+
import { functionWorkerName } from './values.js';
|
|
3
|
+
import { genAiPattern } from './values.js';
|
|
4
|
+
import { hasFunctionWorker } from './values.js';
|
|
5
|
+
export function addSpecWorkflowArtifacts(addSeed, addFramework, plan) {
|
|
6
|
+
if (plan.specWorkflow.id === 'openspec') {
|
|
7
|
+
const changeName = `bootstrap-${plan.safeProjectName}`;
|
|
8
|
+
addSeed('openspec-config', 'seed', ['openspec', 'config.yaml'], renderOpenSpecConfig(plan));
|
|
9
|
+
addSeed('openspec-seed-change-metadata', 'seed', ['openspec', 'changes', changeName, '.openspec.yaml'], 'schema: spec-driven');
|
|
10
|
+
addSeed('openspec-seed-proposal', 'seed', ['openspec', 'changes', changeName, 'proposal.md'], renderSeedProposal(plan));
|
|
11
|
+
addSeed('openspec-seed-design', 'seed', ['openspec', 'changes', changeName, 'design.md'], renderSeedDesign(plan));
|
|
12
|
+
addSeed('openspec-seed-tasks', 'seed', ['openspec', 'changes', changeName, 'tasks.md'], renderSeedTasks(plan));
|
|
13
|
+
addSeed('openspec-seed-spec', 'seed', ['openspec', 'changes', changeName, 'specs', seedCapabilityId(plan), 'spec.md'], renderSeedSpec(plan));
|
|
14
|
+
addSeed('openspec-spec-placeholder', 'seed', ['openspec', 'specs', '.gitkeep'], '');
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
addSeed('spec-kit-constitution', 'seed', ['.specify', 'memory', 'constitution.md'], renderSpecKitConstitution(plan));
|
|
18
|
+
addFramework('spec-kit-spec-template', 'framework', ['.specify', 'templates', 'spec-template.md'], renderSpecKitSpecTemplate());
|
|
19
|
+
addFramework('spec-kit-plan-template', 'framework', ['.specify', 'templates', 'plan-template.md'], renderSpecKitPlanTemplate());
|
|
20
|
+
addSeed('specs-placeholder', 'seed', ['specs', '.gitkeep'], '');
|
|
21
|
+
const bootstrap = ['specs', '000-liftoff-bootstrap'];
|
|
22
|
+
addSeed('spec-kit-bootstrap-spec', 'seed', [...bootstrap, 'spec.md'], renderSpecKitBootstrapSpec(plan));
|
|
23
|
+
addSeed('spec-kit-bootstrap-plan', 'seed', [...bootstrap, 'plan.md'], renderSpecKitBootstrapPlan(plan));
|
|
24
|
+
addSeed('spec-kit-bootstrap-tasks', 'seed', [...bootstrap, 'tasks.md'], renderSpecKitBootstrapTasks(plan));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function renderOpenSpecCopilotConfig(plan) {
|
|
28
|
+
return plan.agents.some((agent) => agent.id === 'github-copilot')
|
|
29
|
+
? `
|
|
30
|
+
githubCopilot:
|
|
31
|
+
cloudAgent: ${plan.copilotCloud}
|
|
32
|
+
`
|
|
33
|
+
: '\n';
|
|
34
|
+
}
|
|
35
|
+
export function renderOpenSpecConfig(plan) {
|
|
36
|
+
const frontendRule = plan.includeFrontend ? '\n - Keep frontend code under frontend.' : '';
|
|
37
|
+
if (plan.workload === 'standard') {
|
|
38
|
+
const backendRule = plan.apiStack.id === 'python-fastapi'
|
|
39
|
+
? 'Keep backend API code under backend/apis.'
|
|
40
|
+
: plan.apiStack.id === 'node-fastify'
|
|
41
|
+
? 'Keep backend API code under backend/src.'
|
|
42
|
+
: 'Keep the Go entrypoint under backend/cmd/api and reusable code under backend/internal.';
|
|
43
|
+
return `schema: spec-driven${renderOpenSpecCopilotConfig(plan)}
|
|
44
|
+
|
|
45
|
+
context: |
|
|
46
|
+
Project generated by Mission Control Liftoff.
|
|
47
|
+
Project type: Standard application.
|
|
48
|
+
API stack: ${plan.apiStack.label}.
|
|
49
|
+
Database tooling: ${plan.apiStack.databaseTooling}.
|
|
50
|
+
API developer portal: Scalar.
|
|
51
|
+
Infrastructure: OpenTofu.
|
|
52
|
+
Primary cloud: Azure (${plan.region.slug}).
|
|
53
|
+
Local development: Docker Compose.
|
|
54
|
+
Database: PostgreSQL.
|
|
55
|
+
Cache and local messaging: Redis.
|
|
56
|
+
Environments: ${plan.environments.map((environment) => environment.id).join(', ')}.
|
|
57
|
+
|
|
58
|
+
rules:
|
|
59
|
+
specs:
|
|
60
|
+
- Requirements must describe observable product behavior.
|
|
61
|
+
- Cloud behavior must identify environment differences for generated environments.
|
|
62
|
+
design:
|
|
63
|
+
- Use ${plan.apiStack.framework} for backend APIs.
|
|
64
|
+
- Use ${plan.apiStack.databaseTooling} for database access and migrations.
|
|
65
|
+
- Use OpenTofu for infrastructure changes.${frontendRule}
|
|
66
|
+
- ${backendRule}
|
|
67
|
+
- Keep database artifacts under database.
|
|
68
|
+
tasks:
|
|
69
|
+
- Include local Docker Compose verification.
|
|
70
|
+
- Include OpenTofu validation for generated infrastructure.
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
const pattern = genAiPattern(plan);
|
|
74
|
+
const functionsContext = hasFunctionWorker(plan) ? `
|
|
75
|
+
Azure Functions worker: functions/${functionWorkerName(plan)}.` : '';
|
|
76
|
+
const functionsRule = hasFunctionWorker(plan) ? `
|
|
77
|
+
- Keep Azure Functions trigger adapters under functions/${functionWorkerName(plan)}.
|
|
78
|
+
- Keep reusable GenAI orchestration under backend/orchestration.` : '';
|
|
79
|
+
return `schema: spec-driven${renderOpenSpecCopilotConfig(plan)}
|
|
80
|
+
|
|
81
|
+
context: |
|
|
82
|
+
Project generated by Mission Control Liftoff.
|
|
83
|
+
GenAI pattern: ${pattern.label}
|
|
84
|
+
Application framework: FastAPI + PydanticAI.
|
|
85
|
+
API developer portal: Scalar.
|
|
86
|
+
Infrastructure: OpenTofu.
|
|
87
|
+
Primary cloud: Azure (${plan.region.slug}).
|
|
88
|
+
Local development: Docker Compose.
|
|
89
|
+
Database: PostgreSQL with Alembic migrations.
|
|
90
|
+
Cache and local messaging: Redis.
|
|
91
|
+
Observability: Langfuse.
|
|
92
|
+
Environments: ${plan.environments.map((environment) => environment.id).join(', ')}.
|
|
93
|
+
${functionsContext}
|
|
94
|
+
|
|
95
|
+
rules:
|
|
96
|
+
specs:
|
|
97
|
+
- Requirements must describe observable product behavior.
|
|
98
|
+
- Cloud behavior must identify environment differences for generated environments.
|
|
99
|
+
design:
|
|
100
|
+
- Use PydanticAI for orchestration logic.
|
|
101
|
+
- Use Pydantic settings models for runtime configuration.
|
|
102
|
+
- Use OpenTofu for infrastructure changes.${frontendRule}
|
|
103
|
+
- Keep backend API code under backend/apis.
|
|
104
|
+
${functionsRule}
|
|
105
|
+
- Keep database artifacts under database.
|
|
106
|
+
tasks:
|
|
107
|
+
- Include local Docker Compose verification.
|
|
108
|
+
- Include OpenTofu validation for generated infrastructure.
|
|
109
|
+
`;
|
|
110
|
+
}
|
|
111
|
+
export function renderSeedProposal(plan) {
|
|
112
|
+
const capability = seedCapabilityId(plan);
|
|
113
|
+
if (plan.workload === 'standard') {
|
|
114
|
+
return `## Why
|
|
115
|
+
|
|
116
|
+
Bootstrap the generated ${plan.apiStack.label} standard application baseline created by Mission Control Liftoff.
|
|
117
|
+
|
|
118
|
+
## What Changes
|
|
119
|
+
|
|
120
|
+
- Establish the approved backend, infrastructure, local development, and governance baseline.
|
|
121
|
+
- Confirm that domain-specific product behavior is deferred to follow-up spec-driven changes.
|
|
122
|
+
|
|
123
|
+
## Capabilities
|
|
124
|
+
|
|
125
|
+
### New Capabilities
|
|
126
|
+
|
|
127
|
+
- \`${capability}\`: Generated standard application baseline for this Liftoff project.
|
|
128
|
+
|
|
129
|
+
### Modified Capabilities
|
|
130
|
+
|
|
131
|
+
- None.
|
|
132
|
+
|
|
133
|
+
## Impact
|
|
134
|
+
|
|
135
|
+
- Generated ${plan.apiStack.label} backend, OpenTofu infrastructure, Docker Compose local development, and governance files.
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
const pattern = genAiPattern(plan);
|
|
139
|
+
const functionsChange = hasFunctionWorker(plan) ? '\n- Establish Azure Functions worker trigger adapters for event-driven processing.' : '';
|
|
140
|
+
return `## Why
|
|
141
|
+
|
|
142
|
+
Bootstrap the generated ${pattern.label} application baseline created by Mission Control Liftoff.
|
|
143
|
+
|
|
144
|
+
## What Changes
|
|
145
|
+
|
|
146
|
+
- Establish the approved backend, infrastructure, local development, and governance baseline.
|
|
147
|
+
- Confirm that domain-specific product behavior is deferred to follow-up spec-driven changes.
|
|
148
|
+
${functionsChange}
|
|
149
|
+
|
|
150
|
+
## Capabilities
|
|
151
|
+
|
|
152
|
+
### New Capabilities
|
|
153
|
+
|
|
154
|
+
- \`${capability}\`: Generated application baseline for this Liftoff project.
|
|
155
|
+
|
|
156
|
+
### Modified Capabilities
|
|
157
|
+
|
|
158
|
+
- None.
|
|
159
|
+
|
|
160
|
+
## Impact
|
|
161
|
+
|
|
162
|
+
- Generated FastAPI/PydanticAI backend, OpenTofu infrastructure, Docker Compose local development, and governance files.
|
|
163
|
+
`;
|
|
164
|
+
}
|
|
165
|
+
export function renderSeedDesign(plan) {
|
|
166
|
+
if (plan.workload === 'standard') {
|
|
167
|
+
return `## Context
|
|
168
|
+
|
|
169
|
+
This standard project was generated with Liftoff using ${plan.apiStack.label}, Azure, OpenTofu, and ${plan.specWorkflow.label}.
|
|
170
|
+
|
|
171
|
+
## Goals / Non-Goals
|
|
172
|
+
|
|
173
|
+
**Goals:**
|
|
174
|
+
|
|
175
|
+
- Keep the generated baseline aligned to the approved Mission Control stack.
|
|
176
|
+
- Verify only deterministic local scaffold checks before archiving this bootstrap change.
|
|
177
|
+
|
|
178
|
+
**Non-Goals:**
|
|
179
|
+
|
|
180
|
+
- Define domain-specific product behavior in the bootstrap change.
|
|
181
|
+
- Deploy infrastructure, start containers, mutate GitHub, or perform cloud plan/apply operations.
|
|
182
|
+
|
|
183
|
+
## Decisions
|
|
184
|
+
|
|
185
|
+
- Use ${plan.apiStack.framework} for backend APIs.
|
|
186
|
+
- Use ${plan.apiStack.databaseTooling} for PostgreSQL integration.
|
|
187
|
+
- Use OpenTofu for Azure infrastructure.
|
|
188
|
+
- Use Docker Compose for local development.
|
|
189
|
+
|
|
190
|
+
## Risks / Trade-offs
|
|
191
|
+
|
|
192
|
+
- Follow-up product changes own real business behavior; this seed only proves the generated local baseline is coherent.
|
|
193
|
+
`;
|
|
194
|
+
}
|
|
195
|
+
const pattern = genAiPattern(plan);
|
|
196
|
+
const functionsDecision = hasFunctionWorker(plan) ? '\n- Keep Azure Functions trigger adapters under functions/' + functionWorkerName(plan) + ' and shared GenAI logic under backend/orchestration.' : '';
|
|
197
|
+
return `## Context
|
|
198
|
+
|
|
199
|
+
This project was generated with Liftoff using ${pattern.label}, Azure, OpenTofu, and ${plan.specWorkflow.label}.
|
|
200
|
+
|
|
201
|
+
## Goals / Non-Goals
|
|
202
|
+
|
|
203
|
+
**Goals:**
|
|
204
|
+
|
|
205
|
+
- Keep the generated baseline aligned to the approved Mission Control stack.
|
|
206
|
+
- Verify only deterministic local scaffold checks before archiving this bootstrap change.
|
|
207
|
+
|
|
208
|
+
**Non-Goals:**
|
|
209
|
+
|
|
210
|
+
- Define domain-specific product behavior in the bootstrap change.
|
|
211
|
+
- Deploy infrastructure, start containers, mutate GitHub, or perform cloud plan/apply operations.
|
|
212
|
+
|
|
213
|
+
## Decisions
|
|
214
|
+
|
|
215
|
+
- Use FastAPI and PydanticAI for backend APIs and orchestration.
|
|
216
|
+
- Use OpenTofu for Azure infrastructure.
|
|
217
|
+
- Use Docker Compose for local development.
|
|
218
|
+
${functionsDecision}
|
|
219
|
+
|
|
220
|
+
## Risks / Trade-offs
|
|
221
|
+
|
|
222
|
+
- Follow-up product changes own real business behavior; this seed only proves the generated local baseline is coherent.
|
|
223
|
+
`;
|
|
224
|
+
}
|
|
225
|
+
export function seedCapabilityId(plan) {
|
|
226
|
+
if (plan.workload === 'standard') {
|
|
227
|
+
return `${plan.apiStack.id}-application-baseline`;
|
|
228
|
+
}
|
|
229
|
+
return `${genAiPattern(plan).id}-application-baseline`;
|
|
230
|
+
}
|
|
231
|
+
export function seedCapabilityPurpose(plan) {
|
|
232
|
+
if (plan.workload === 'standard') {
|
|
233
|
+
return `Define the generated ${plan.apiStack.label} application baseline that setup verifies and archives before domain-specific implementation or deployment begins.`;
|
|
234
|
+
}
|
|
235
|
+
return `Define the generated ${genAiPattern(plan).label} application baseline that setup verifies and archives before domain-specific implementation or deployment begins.`;
|
|
236
|
+
}
|
|
237
|
+
export function renderSeedSpec(plan) {
|
|
238
|
+
const capability = seedCapabilityId(plan);
|
|
239
|
+
const purpose = seedCapabilityPurpose(plan);
|
|
240
|
+
if (plan.workload === 'standard') {
|
|
241
|
+
return `## Purpose
|
|
242
|
+
|
|
243
|
+
${purpose}
|
|
244
|
+
|
|
245
|
+
## ADDED Requirements
|
|
246
|
+
|
|
247
|
+
### Requirement: Generated ${plan.apiStack.label} baseline is locally verifiable
|
|
248
|
+
The bootstrap seed SHALL describe only the generated ${plan.apiStack.label} backend, optional frontend, Docker Compose, OpenTofu, workflow configuration, and governance baseline. Domain-specific product behavior SHALL be deferred to later changes.
|
|
249
|
+
|
|
250
|
+
#### Scenario: Generated baseline is present
|
|
251
|
+
- **WHEN** the \`bootstrap-${plan.safeProjectName}\` change is generated
|
|
252
|
+
- **THEN** it declares the \`${capability}\` capability
|
|
253
|
+
- **AND** the generated backend, database, Docker Compose, OpenTofu, workflow, and governance files are in scope
|
|
254
|
+
|
|
255
|
+
#### Scenario: Product behavior is deferred
|
|
256
|
+
- **WHEN** the bootstrap change is completed
|
|
257
|
+
- **THEN** no domain-specific API, data model, UI, deployment, GitHub, or cloud mutation is introduced
|
|
258
|
+
|
|
259
|
+
#### Scenario: Local baseline checks pass
|
|
260
|
+
- **WHEN** deterministic setup verifies the seed
|
|
261
|
+
- **THEN** \`liftoff validate\`, backend tests, Docker Compose configuration validation, OpenTofu formatting, backend-disabled initialization, OpenTofu validation, and strict OpenSpec validation have passed
|
|
262
|
+
- **AND** frontend checks are run only when a frontend was generated
|
|
263
|
+
`;
|
|
264
|
+
}
|
|
265
|
+
const pattern = genAiPattern(plan);
|
|
266
|
+
const worker = hasFunctionWorker(plan)
|
|
267
|
+
? 'Azure Functions worker, '
|
|
268
|
+
: '';
|
|
269
|
+
return `## Purpose
|
|
270
|
+
|
|
271
|
+
${purpose}
|
|
272
|
+
|
|
273
|
+
## ADDED Requirements
|
|
274
|
+
|
|
275
|
+
### Requirement: Generated ${pattern.label} baseline is locally verifiable
|
|
276
|
+
The bootstrap seed SHALL describe only the generated FastAPI/PydanticAI backend, ${worker}optional frontend, Docker Compose, OpenTofu, workflow configuration, and governance baseline. Domain-specific product behavior SHALL be deferred to later changes.
|
|
277
|
+
|
|
278
|
+
#### Scenario: Generated baseline is present
|
|
279
|
+
- **WHEN** the \`bootstrap-${plan.safeProjectName}\` change is generated
|
|
280
|
+
- **THEN** it declares the \`${capability}\` capability
|
|
281
|
+
- **AND** the generated GenAI backend, database, Docker Compose, OpenTofu, workflow, governance${hasFunctionWorker(plan) ? ', and worker' : ''} files are in scope
|
|
282
|
+
|
|
283
|
+
#### Scenario: Product behavior is deferred
|
|
284
|
+
- **WHEN** the bootstrap change is completed
|
|
285
|
+
- **THEN** no domain-specific prompts, tools, retrieval corpus, agent policy, UI, deployment, GitHub, or cloud mutation is introduced
|
|
286
|
+
|
|
287
|
+
#### Scenario: Local baseline checks pass
|
|
288
|
+
- **WHEN** deterministic setup verifies the seed
|
|
289
|
+
- **THEN** \`liftoff validate\`, backend tests,${hasFunctionWorker(plan) ? ' worker tests,' : ''} Docker Compose configuration validation, OpenTofu formatting, backend-disabled initialization, OpenTofu validation, and strict OpenSpec validation have passed
|
|
290
|
+
- **AND** frontend checks are run only when a frontend was generated
|
|
291
|
+
`;
|
|
292
|
+
}
|
|
293
|
+
export function seedTaskChecks(plan) {
|
|
294
|
+
const checks = [
|
|
295
|
+
{
|
|
296
|
+
id: '2.1',
|
|
297
|
+
label: 'Run Liftoff manifest validation',
|
|
298
|
+
command: { executable: 'liftoff', args: ['validate'] }
|
|
299
|
+
}
|
|
300
|
+
];
|
|
301
|
+
if (plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi') {
|
|
302
|
+
checks.push({
|
|
303
|
+
id: '2.2',
|
|
304
|
+
label: 'Run backend tests',
|
|
305
|
+
command: { executable: 'uv', args: ['run', '--project', 'backend', 'python', '-m', 'pytest', '-q', 'backend/tests'] }
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
else if (plan.apiStack.id === 'node-fastify') {
|
|
309
|
+
checks.push({
|
|
310
|
+
id: '2.2',
|
|
311
|
+
label: 'Run backend tests',
|
|
312
|
+
command: { executable: 'npm', args: ['test'] },
|
|
313
|
+
cwd: ['backend']
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
checks.push({
|
|
318
|
+
id: '2.2',
|
|
319
|
+
label: 'Run backend tests',
|
|
320
|
+
command: { executable: 'go', args: ['test', './...'] },
|
|
321
|
+
cwd: ['backend']
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
if (plan.workload === 'genai' && hasFunctionWorker(plan)) {
|
|
325
|
+
checks.push({
|
|
326
|
+
id: '2.3',
|
|
327
|
+
label: 'Run generated worker tests',
|
|
328
|
+
command: { executable: 'uv', args: ['run', '--project', '../../backend', '--directory', '.', 'python', '-m', 'pytest', '-q'] },
|
|
329
|
+
cwd: ['functions', functionWorkerName(plan)]
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
checks.push({
|
|
334
|
+
id: '2.3',
|
|
335
|
+
label: 'Record worker tests as inapplicable',
|
|
336
|
+
inapplicable: 'no generated worker boundary is present'
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
if (plan.includeFrontend) {
|
|
340
|
+
checks.push({
|
|
341
|
+
id: '2.4',
|
|
342
|
+
label: 'Run frontend build',
|
|
343
|
+
command: { executable: 'npm', args: ['run', 'build'] },
|
|
344
|
+
cwd: ['frontend']
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
checks.push({
|
|
349
|
+
id: '2.4',
|
|
350
|
+
label: 'Record frontend build as inapplicable',
|
|
351
|
+
inapplicable: 'no generated frontend is present'
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
{
|
|
355
|
+
checks.push({
|
|
356
|
+
id: '2.5',
|
|
357
|
+
label: 'Validate Docker Compose configuration without startup',
|
|
358
|
+
command: { executable: 'docker', args: ['compose', 'config', '-q'] }
|
|
359
|
+
});
|
|
360
|
+
checks.push({
|
|
361
|
+
id: '2.6',
|
|
362
|
+
label: 'Check OpenTofu formatting',
|
|
363
|
+
command: { executable: 'tofu', args: ['fmt', '-check', '-recursive'] },
|
|
364
|
+
cwd: ['infrastructure', 'opentofu', 'azure']
|
|
365
|
+
});
|
|
366
|
+
for (const [index, environment] of plan.environments.entries()) {
|
|
367
|
+
const cwd = ['infrastructure', 'opentofu', 'azure', 'environments', environment.id];
|
|
368
|
+
checks.push({
|
|
369
|
+
id: `2.7.${index + 1}`,
|
|
370
|
+
label: `Initialize ${environment.id} OpenTofu without a backend`,
|
|
371
|
+
command: { executable: 'tofu', args: ['init', '-backend=false'] },
|
|
372
|
+
cwd
|
|
373
|
+
});
|
|
374
|
+
checks.push({
|
|
375
|
+
id: `2.8.${index + 1}`,
|
|
376
|
+
label: `Validate ${environment.id} OpenTofu without plan or apply`,
|
|
377
|
+
command: { executable: 'tofu', args: ['validate'] },
|
|
378
|
+
cwd
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
checks.push({
|
|
383
|
+
id: '2.9',
|
|
384
|
+
label: 'Run strict OpenSpec validation',
|
|
385
|
+
command: { executable: 'openspec', args: ['validate', `bootstrap-${plan.safeProjectName}`, '--strict'] }
|
|
386
|
+
});
|
|
387
|
+
return checks;
|
|
388
|
+
}
|
|
389
|
+
export function renderSpecKitBootstrapSpec(plan) {
|
|
390
|
+
return `# Generated-project baseline: ${plan.projectName}
|
|
391
|
+
|
|
392
|
+
Bootstrap identity: \`000-liftoff-bootstrap\`.
|
|
393
|
+
|
|
394
|
+
## Scope
|
|
395
|
+
|
|
396
|
+
Verify the generated ${plan.apiStack.label} backend, ${plan.includeFrontend ? 'Vue frontend, ' : ''}database metadata,
|
|
397
|
+
container configuration, independent OpenTofu environment roots, and local workflow files.
|
|
398
|
+
This one-time project-owned seed is not a product feature or an active governance change.
|
|
399
|
+
|
|
400
|
+
## Requirements
|
|
401
|
+
|
|
402
|
+
- Read this real spec, its sibling \`plan.md\`, and \`tasks.md\`; framework templates are not project proof.
|
|
403
|
+
- Validate official Spec Kit initialization markers separately; this bundle does not replace them.
|
|
404
|
+
- Use already-installed locked dependencies, or install applicable dependencies with explicit consent, and run the local baseline.
|
|
405
|
+
- Check every selected environment: ${plan.environments.map(({ id }) => id).join(', ')}.
|
|
406
|
+
- Preserve project-owned files. Do not create a Git branch, OpenSpec tree, or external archive.
|
|
407
|
+
- Do not claim retrieval, history, tools, prompt loading, coordination, fine-tuning, workflow stages,
|
|
408
|
+
incremental streaming, live deployment, or production governance completion.
|
|
409
|
+
|
|
410
|
+
## Success criteria
|
|
411
|
+
|
|
412
|
+
All applicable local checks have passed on the current inputs, absent components are explicitly
|
|
413
|
+
inapplicable, and only then is the local bootstrap task projection finalized with a bound receipt.
|
|
414
|
+
Unchecked tasks, generated files, and framework plan templates are not completion evidence.
|
|
415
|
+
`.replace(/^ {2}/gm, '');
|
|
416
|
+
}
|
|
417
|
+
export function renderSpecKitBootstrapPlan(plan) {
|
|
418
|
+
const backend = plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi'
|
|
419
|
+
? `uv sync --frozen --project backend --extra test${hasFunctionWorker(plan) ? ' --extra functions' : ''}`
|
|
420
|
+
: plan.apiStack.id === 'node-fastify'
|
|
421
|
+
? 'npm ci && npm run build (from backend/)'
|
|
422
|
+
: 'go mod download (from backend/)';
|
|
423
|
+
return `# Local bootstrap implementation plan
|
|
424
|
+
|
|
425
|
+
Bootstrap identity: \`000-liftoff-bootstrap\`.
|
|
426
|
+
Source specification: \`specs/000-liftoff-bootstrap/spec.md\`.
|
|
427
|
+
|
|
428
|
+
## Preparation
|
|
429
|
+
|
|
430
|
+
Review the generated files and official Spec Kit markers. Copy \`.env.example\` to \`.env\`
|
|
431
|
+
for the documented local settings; do not commit local configuration or credentials.
|
|
432
|
+
${plan.workload === 'standard' && plan.apiStack.id === 'go-huma' ? 'For native Go startup, also copy `runtime.config.example.json` to root `runtime.config.json`.\n' : ''}
|
|
433
|
+
Dependency installation requires its own consent: \`${backend}\`.
|
|
434
|
+
${plan.includeFrontend ? 'Install frontend dependencies with `npm ci` from `frontend/`.\n' : ''}
|
|
435
|
+
## Verification
|
|
436
|
+
|
|
437
|
+
Run Liftoff validation, backend${hasFunctionWorker(plan) ? ' and worker' : ''} tests,
|
|
438
|
+
${plan.includeFrontend ? 'the frontend build, ' : ''}Docker Compose configuration validation,
|
|
439
|
+
OpenTofu formatting, and backend-disabled initialization plus validation of every selected root:
|
|
440
|
+
${plan.environments.map(({ id }) => `- \`infrastructure/opentofu/azure/environments/${id}/\``).join('\n')}
|
|
441
|
+
|
|
442
|
+
These checks do not start containers, invoke a model, provision resources, or mutate GitHub.
|
|
443
|
+
Operational OpenTofu initialization must use the configured backend; only this local baseline
|
|
444
|
+
uses \`-backend=false\`.
|
|
445
|
+
|
|
446
|
+
## Local handoff
|
|
447
|
+
|
|
448
|
+
After all applicable checks succeed, explicitly finalize the task projection and record the local
|
|
449
|
+
baseline receipt. The setup phase named \`seed-archived\` denotes this local handoff, not an archive
|
|
450
|
+
command. Missing older bundles require separate reviewed adoption, never implicit update.
|
|
451
|
+
`.replace(/^ {2}/gm, '');
|
|
452
|
+
}
|
|
453
|
+
export function renderSpecKitBootstrapTasks(plan) {
|
|
454
|
+
const checks = seedTaskChecks(plan).filter(({ id }) => id !== '2.9');
|
|
455
|
+
return `# Local bootstrap tasks
|
|
456
|
+
|
|
457
|
+
Bootstrap identity: \`000-liftoff-bootstrap\`.
|
|
458
|
+
Read \`spec.md\` and \`plan.md\` in this directory before running checks.
|
|
459
|
+
|
|
460
|
+
- [ ] B001 Review the real bootstrap spec, plan, generated files, runtime configuration, and separately validated official Spec Kit markers.
|
|
461
|
+
- [ ] B002 Use already-installed locked dependencies, or install them with explicit consent, using the preparation commands in plan.md.
|
|
462
|
+
- [ ] B003 Run Liftoff validation and backend${hasFunctionWorker(plan) ? ' plus worker' : ''} tests without external services.
|
|
463
|
+
- [ ] B004 ${plan.includeFrontend ? 'Build the generated frontend.' : 'Record frontend build as inapplicable because no frontend was generated.'}
|
|
464
|
+
- [ ] B005 Validate Docker Compose configuration and every selected independent OpenTofu root without starting containers or using live providers.
|
|
465
|
+
- [ ] B006 Only after every applicable check passes, explicitly finalize this local task projection and record the current-input-bound baseline receipt; no Git branch or external archive is created.
|
|
466
|
+
|
|
467
|
+
## Required local checks
|
|
468
|
+
|
|
469
|
+
${checks.map((check) => {
|
|
470
|
+
if (!check.command)
|
|
471
|
+
return `- ${check.label}: inapplicable because ${check.inapplicable}.`;
|
|
472
|
+
return `- ${check.label}${check.cwd ? ` from \`${check.cwd.join('/')}\`` : ''}: \`${formatCommand(check.command)}\`.`;
|
|
473
|
+
}).join('\n')}
|
|
474
|
+
|
|
475
|
+
Task checkboxes are a projection after successful verification, not an input proving success.
|
|
476
|
+
Read-only status, resume, assessment, and verification do not mark tasks complete.
|
|
477
|
+
`.replace(/^ {2}/gm, '');
|
|
478
|
+
}
|
|
479
|
+
export function renderSeedTaskCheck(check) {
|
|
480
|
+
if (!check.command) {
|
|
481
|
+
return `- [ ] ${check.id} ${check.label}: inapplicable because ${check.inapplicable}.`;
|
|
482
|
+
}
|
|
483
|
+
const cwd = check.cwd && check.cwd.length > 0 ? ` from \`${check.cwd.join('/')}\`` : '';
|
|
484
|
+
return `- [ ] ${check.id} ${check.label}${cwd}: \`${formatCommand(check.command)}\`.`;
|
|
485
|
+
}
|
|
486
|
+
export function renderSeedTasks(plan) {
|
|
487
|
+
return `## 1. Bootstrap Scope
|
|
488
|
+
|
|
489
|
+
- [ ] 1.1 Confirm generated baseline files, \`liftoff.manifest.json\`, OpenSpec configuration, and the \`${seedCapabilityId(plan)}\` delta spec are present.
|
|
490
|
+
- [ ] 1.2 Confirm domain-specific product behavior is deferred to follow-up OpenSpec changes; do not replace generated placeholders in this bootstrap change.
|
|
491
|
+
|
|
492
|
+
## 2. Local Baseline Checks
|
|
493
|
+
|
|
494
|
+
${seedTaskChecks(plan).map(renderSeedTaskCheck).join('\n')}
|
|
495
|
+
|
|
496
|
+
## 3. Completion
|
|
497
|
+
|
|
498
|
+
- [ ] 3.1 After every applicable local check succeeds and every absent component is recorded inapplicable, archive with \`openspec archive bootstrap-${plan.safeProjectName} --yes\`, then require \`openspec validate --all --strict\` to pass. OpenSpec archive updates the main specs as part of archive; do not pass \`--skip-specs\`.
|
|
499
|
+
|
|
500
|
+
No task in this bootstrap seed starts containers, runs cloud plan/apply, mutates GitHub, or implements domain-specific product behavior.
|
|
501
|
+
`;
|
|
502
|
+
}
|
|
503
|
+
export function renderSpecKitConstitution(plan) {
|
|
504
|
+
if (plan.workload === 'standard') {
|
|
505
|
+
const backendLayout = plan.apiStack.id === 'python-fastapi'
|
|
506
|
+
? 'backend/apis'
|
|
507
|
+
: plan.apiStack.id === 'node-fastify' ? 'backend/src' : 'backend/cmd/api and backend/internal';
|
|
508
|
+
return `# Mission Control Liftoff Constitution
|
|
509
|
+
|
|
510
|
+
## Principle 1: Approved Application Stack
|
|
511
|
+
Generated backend services MUST use ${plan.apiStack.framework}, ${plan.apiStack.databaseTooling}, and Scalar for API documentation.
|
|
512
|
+
|
|
513
|
+
## Principle 2: Standard Project Layout
|
|
514
|
+
Backend APIs live under ${backendLayout}. Database artifacts live under database.${plan.includeFrontend ? ' Frontend code lives under frontend.' : ''}
|
|
515
|
+
|
|
516
|
+
## Principle 3: Infrastructure As Code
|
|
517
|
+
Cloud infrastructure MUST be defined with OpenTofu. Azure is the supported V1 provider.
|
|
518
|
+
|
|
519
|
+
## Principle 4: Local Development Parity
|
|
520
|
+
Projects MUST include Docker Compose for local development with PostgreSQL, Redis, local blob storage, and local messaging behavior.
|
|
521
|
+
|
|
522
|
+
## Principle 5: Observability And Operations
|
|
523
|
+
Services MUST use structured logging and environment-specific configuration for ${plan.environments.map((environment) => environment.id).join(', ')}.
|
|
524
|
+
`;
|
|
525
|
+
}
|
|
526
|
+
const functionsLayout = plan.workload === 'genai' && hasFunctionWorker(plan)
|
|
527
|
+
? ` Azure Functions trigger adapters live under functions/${functionWorkerName(plan)} and call shared orchestration from backend/orchestration.`
|
|
528
|
+
: '';
|
|
529
|
+
return `# Mission Control Liftoff Constitution
|
|
530
|
+
|
|
531
|
+
## Principle 1: Approved Application Stack
|
|
532
|
+
Generated backend services MUST use FastAPI, PydanticAI, Pydantic configuration models, and Scalar for API documentation.
|
|
533
|
+
|
|
534
|
+
## Principle 2: Standard Project Layout
|
|
535
|
+
Backend APIs live under backend/apis. Database artifacts live under database.${plan.includeFrontend ? ' Frontend code lives under frontend.' : ''}${functionsLayout}
|
|
536
|
+
|
|
537
|
+
## Principle 3: Infrastructure As Code
|
|
538
|
+
Cloud infrastructure MUST be defined with OpenTofu. Azure is the supported V1 provider.
|
|
539
|
+
|
|
540
|
+
## Principle 4: Local Development Parity
|
|
541
|
+
Projects MUST include Docker Compose for local development with PostgreSQL, Redis, local blob storage, and local messaging behavior.
|
|
542
|
+
|
|
543
|
+
## Principle 5: Observability And Operations
|
|
544
|
+
LLM workflows MUST include Langfuse tracing hooks and environment-specific configuration for ${plan.environments.map((environment) => environment.id).join(', ')}.
|
|
545
|
+
`;
|
|
546
|
+
}
|
|
547
|
+
export function renderSpecKitSpecTemplate() {
|
|
548
|
+
return `# Feature Specification
|
|
549
|
+
|
|
550
|
+
## User Scenarios
|
|
551
|
+
|
|
552
|
+
## Requirements
|
|
553
|
+
|
|
554
|
+
## Success Criteria
|
|
555
|
+
`;
|
|
556
|
+
}
|
|
557
|
+
export function renderSpecKitPlanTemplate() {
|
|
558
|
+
return `# Implementation Plan
|
|
559
|
+
|
|
560
|
+
## Technical Context
|
|
561
|
+
|
|
562
|
+
## Constitution Check
|
|
563
|
+
|
|
564
|
+
## Tasks
|
|
565
|
+
`;
|
|
566
|
+
}
|
|
567
|
+
//# sourceMappingURL=spec-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-workflow.js","sourceRoot":"","sources":["../../../src/generators/common/spec-workflow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,YAAyB,EACzB,IAAiB;IAEjB,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,OAAO,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,+BAA+B,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC/H,OAAO,CAAC,wBAAwB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxH,OAAO,CAAC,sBAAsB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClH,OAAO,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/G,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7I,OAAO,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrH,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAChI,YAAY,CAAC,wBAAwB,EAAE,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAChI,OAAO,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACrD,OAAO,CAAC,yBAAyB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,yBAAyB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,SAAS,CAAC,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,0BAA0B,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAiB;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,gBAAgB,CAAC;QAC/D,CAAC,CAAC;;gBAEU,IAAI,CAAC,YAAY;CAChC;QACG,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAoB;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;YACvD,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;gBACnC,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,wFAAwF,CAAC;QAC/F,OAAO,sBAAsB,2BAA2B,CAAC,IAAI,CAAC;;;;;eAKnD,IAAI,CAAC,QAAQ,CAAC,KAAK;sBACZ,IAAI,CAAC,QAAQ,CAAC,eAAe;;;0BAGzB,IAAI,CAAC,MAAM,CAAC,IAAI;;;;kBAIxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;YAOvE,IAAI,CAAC,QAAQ,CAAC,SAAS;YACvB,IAAI,CAAC,QAAQ,CAAC,eAAe;gDACO,YAAY;QACpD,WAAW;;;;;CAKlB,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;sCACf,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;8DACY,kBAAkB,CAAC,IAAI,CAAC;qEACjB,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,OAAO,sBAAsB,2BAA2B,CAAC,IAAI,CAAC;;;;mBAI7C,OAAO,CAAC,KAAK;;;;0BAIN,IAAI,CAAC,MAAM,CAAC,IAAI;;;;;kBAKxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACjF,gBAAgB;;;;;;;;;gDAS8B,YAAY;;EAE1D,aAAa;;;;;CAKd,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;;0BAEe,IAAI,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;MAWvC,UAAU;;;;;;;;cAQF,IAAI,CAAC,QAAQ,CAAC,KAAK;CAChC,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5I,OAAO;;0BAEiB,OAAO,CAAC,KAAK;;;;;;EAMrC,eAAe;;;;;;MAMX,UAAU;;;;;;;;;CASf,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;;yDAE8C,IAAI,CAAC,QAAQ,CAAC,KAAK,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK;;;;;;;;;;;;;;;;QAgBrH,IAAI,CAAC,QAAQ,CAAC,SAAS;QACvB,IAAI,CAAC,QAAQ,CAAC,eAAe;;;;;;;CAOpC,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4DAA4D,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,sDAAsD,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1M,OAAO;;gDAEuC,OAAO,CAAC,KAAK,0BAA0B,IAAI,CAAC,YAAY,CAAC,KAAK;;;;;;;;;;;;;;;;;;;EAmB5G,iBAAiB;;;;;CAKlB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAiB;IACrD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,wBAAwB,IAAI,CAAC,QAAQ,CAAC,KAAK,oHAAoH,CAAC;IACzK,CAAC;IACD,OAAO,wBAAwB,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,oHAAoH,CAAC;AAC9K,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;;EAET,OAAO;;;;6BAIoB,IAAI,CAAC,QAAQ,CAAC,KAAK;uDACO,IAAI,CAAC,QAAQ,CAAC,KAAK;;;6BAG7C,IAAI,CAAC,eAAe;+BAClB,UAAU;;;;;;;;;;;CAWxC,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;EAEP,OAAO;;;;6BAIoB,OAAO,CAAC,KAAK;mFACyC,MAAM;;;6BAG5D,IAAI,CAAC,eAAe;+BAClB,UAAU;iGACwD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;;;;;;;;iDAQ7F,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;;CAE/F,CAAC;AACF,CAAC;AAUD,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,MAAM,MAAM,GAAoB;QAC9B;YACE,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,iCAAiC;YACxC,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;SACvD;KACF,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE;SACtH,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;YAC9C,GAAG,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,mBAAmB;YAC1B,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;YACtD,GAAG,EAAE,CAAC,SAAS,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC9H,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,qCAAqC;YAC5C,YAAY,EAAE,yCAAyC;SACxD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACtD,GAAG,EAAE,CAAC,UAAU,CAAC;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,uCAAuC;YAC9C,YAAY,EAAE,kCAAkC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,CAAC;QACC,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,uDAAuD;YAC9D,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;SACrE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,2BAA2B;YAClC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE;YACtE,GAAG,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC;SAC7C,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,OAAO,KAAK,GAAG,CAAC,EAAE;gBACtB,KAAK,EAAE,cAAc,WAAW,CAAC,EAAE,6BAA6B;gBAChE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE;gBACjE,GAAG;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,OAAO,KAAK,GAAG,CAAC,EAAE;gBACtB,KAAK,EAAE,YAAY,WAAW,CAAC,EAAE,iCAAiC;gBAClE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;gBACnD,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,gCAAgC;QACvC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,EAAE;KACzG,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC3D,OAAO,iCAAiC,IAAI,CAAC,WAAW;;;;;;yBAMnC,IAAI,CAAC,QAAQ,CAAC,KAAK,aAAa,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;wCAS7D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;GAUrF,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;QAChF,CAAC,CAAC,kDAAkD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE;QACzG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;YACnC,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,iCAAiC,CAAC;IACxC,OAAO;;;;;;;;;IASP,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,EAAE;wDACnH,OAAO;IAC3D,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,EAAE;;;mCAG9D,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;IAC3E,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;;IAElD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;GAWxG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;IACrE,OAAO;;;;;;;iDAOsC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;eAC/E,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,0EAA0E;;;;;;IAM9I,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,KAAK,CAAC,KAAK,0BAA0B,KAAK,CAAC,YAAY,GAAG,CAAC;QAC3F,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACxH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;GAIZ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,0BAA0B,KAAK,CAAC,YAAY,GAAG,CAAC;IACzF,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,OAAO,SAAS,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,OAAO;;2GAEkG,gBAAgB,CAAC,IAAI,CAAC;;;;;EAK/H,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;uJAI6F,IAAI,CAAC,eAAe;;;CAG1K,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAoB;IAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;YACzD,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC;QACjG,OAAO;;;sCAG2B,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,eAAe;;;0BAGrE,aAAa,4CAA4C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;kFASnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAClJ,CAAC;IACA,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAC1E,CAAC,CAAC,0DAA0D,kBAAkB,CAAC,IAAI,CAAC,4DAA4D;QAChJ,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;;;;;+EAMsE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,GAAG,eAAe;;;;;;;;;+FASpE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC/J,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApiProjectPlan } from '../../domain/project/contracts.js';
|
|
2
|
+
import type { GenAiProjectPlan } from '../../domain/project/contracts.js';
|
|
3
|
+
export declare const DEFAULT_FUNCTION_WORKER_QUEUE_NAME = "events";
|
|
4
|
+
export declare const pyModule: (value: string) => string;
|
|
5
|
+
export declare const titleCase: (value: string) => string;
|
|
6
|
+
export declare const sourceString: (value: string) => string;
|
|
7
|
+
export declare const scriptSourceString: (value: string) => string;
|
|
8
|
+
export declare const escapeHtml: (value: string) => string;
|
|
9
|
+
export declare const genAiPattern: (plan: GenAiProjectPlan) => import("../../domain/project/contracts.js").PatternDefinition;
|
|
10
|
+
export declare const hasFunctionWorker: (plan: ApiProjectPlan) => boolean;
|
|
11
|
+
export declare const functionWorkerName: (plan: GenAiProjectPlan) => string;
|
|
12
|
+
export declare function selectedEnvironmentId(plan: ApiProjectPlan): string;
|
|
13
|
+
export declare const localPostgresUrl: (host: string, database: string) => string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const DEFAULT_FUNCTION_WORKER_QUEUE_NAME = 'events';
|
|
2
|
+
export const pyModule = (value) => value.replace(/-/g, '_');
|
|
3
|
+
export const titleCase = (value) => value.replace(/(^|[-_\s])([a-z])/g, (_match, prefix, letter) => `${prefix ? ' ' : ''}${letter.toUpperCase()}`).trim();
|
|
4
|
+
export const sourceString = (value) => JSON.stringify(value);
|
|
5
|
+
export const scriptSourceString = (value) => sourceString(value).replaceAll('<', '\\u003c');
|
|
6
|
+
export const escapeHtml = (value) => value.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"');
|
|
7
|
+
export const genAiPattern = (plan) => {
|
|
8
|
+
return plan.pattern;
|
|
9
|
+
};
|
|
10
|
+
export const hasFunctionWorker = (plan) => plan.workload === 'genai' && plan.provider.id === 'azure' && plan.pattern.worker;
|
|
11
|
+
export const functionWorkerName = (plan) => `${plan.pattern.id}-worker`;
|
|
12
|
+
export function selectedEnvironmentId(plan) {
|
|
13
|
+
return plan.environments[0]?.id ?? 'dev';
|
|
14
|
+
}
|
|
15
|
+
export const localPostgresUrl = (host, database) => `postgresql:${'//'}postgres:postgres@${host}:5432/${database}`;
|
|
16
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/generators/common/values.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kCAAkC,GAAG,QAAQ,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAElL,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEpG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAC1C,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAE3G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAsB,EAAE,EAAE;IACrD,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAoB,EAAE,EAAE,CACxD,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAEnF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAsB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;AAE1F,MAAM,UAAU,qBAAqB,CAAC,IAAoB;IACxD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,CACjE,cAAc,IAAI,qBAAqB,IAAI,SAAS,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GeneratorContext as ResolvedGeneratorContext } from '../context.js';
|
|
2
|
+
import type { AddArtifact } from '../../template-types.js';
|
|
3
|
+
import type { ApiProjectPlan } from '../../domain/project/contracts.js';
|
|
4
|
+
type GeneratorContext = Pick<ResolvedGeneratorContext, 'stack'>;
|
|
5
|
+
export declare function addDockerArtifacts(add: AddArtifact, plan: ApiProjectPlan, context: GeneratorContext): void;
|
|
6
|
+
export declare function renderDockerCompose(plan: ApiProjectPlan, context: GeneratorContext): string;
|
|
7
|
+
export {};
|