@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.
Files changed (700) hide show
  1. package/DEVELOPER.md +238 -77
  2. package/README.md +38 -33
  3. package/assets/supported-stack.json +3 -136
  4. package/dist/adapters/azure/governance-assessment.d.ts +2 -0
  5. package/dist/adapters/azure/governance-assessment.js +21 -0
  6. package/dist/adapters/azure/governance-assessment.js.map +1 -0
  7. package/dist/adapters/filesystem/atomic-write.d.ts +2 -0
  8. package/dist/adapters/filesystem/atomic-write.js +74 -0
  9. package/dist/adapters/filesystem/atomic-write.js.map +1 -0
  10. package/dist/adapters/filesystem/errors.d.ts +2 -0
  11. package/dist/adapters/filesystem/errors.js +8 -0
  12. package/dist/adapters/filesystem/errors.js.map +1 -0
  13. package/dist/adapters/filesystem/manifest-file.d.ts +1 -0
  14. package/dist/adapters/filesystem/manifest-file.js +21 -0
  15. package/dist/adapters/filesystem/manifest-file.js.map +1 -0
  16. package/dist/adapters/filesystem/project-config.d.ts +4 -0
  17. package/dist/adapters/filesystem/project-config.js +157 -0
  18. package/dist/adapters/filesystem/project-config.js.map +1 -0
  19. package/dist/adapters/filesystem/project-discovery.d.ts +2 -0
  20. package/dist/adapters/filesystem/project-discovery.js +30 -0
  21. package/dist/adapters/filesystem/project-discovery.js.map +1 -0
  22. package/dist/adapters/filesystem/project-files.d.ts +6 -0
  23. package/dist/adapters/filesystem/project-files.js +68 -0
  24. package/dist/adapters/filesystem/project-files.js.map +1 -0
  25. package/dist/adapters/filesystem/project-lock.d.ts +8 -0
  26. package/dist/adapters/filesystem/project-lock.js +164 -0
  27. package/dist/adapters/filesystem/project-lock.js.map +1 -0
  28. package/dist/adapters/filesystem/project-paths.d.ts +2 -0
  29. package/dist/adapters/filesystem/project-paths.js +60 -0
  30. package/dist/adapters/filesystem/project-paths.js.map +1 -0
  31. package/dist/adapters/filesystem/project-transaction.d.ts +24 -0
  32. package/dist/adapters/filesystem/project-transaction.js +177 -0
  33. package/dist/adapters/filesystem/project-transaction.js.map +1 -0
  34. package/dist/adapters/filesystem/reviewed-update-transaction.d.ts +53 -0
  35. package/dist/adapters/filesystem/reviewed-update-transaction.js +864 -0
  36. package/dist/adapters/filesystem/reviewed-update-transaction.js.map +1 -0
  37. package/dist/adapters/filesystem/update-previews.d.ts +50 -0
  38. package/dist/adapters/filesystem/update-previews.js +613 -0
  39. package/dist/adapters/filesystem/update-previews.js.map +1 -0
  40. package/dist/adapters/git/governance-assessment.d.ts +22 -0
  41. package/dist/adapters/git/governance-assessment.js +161 -0
  42. package/dist/adapters/git/governance-assessment.js.map +1 -0
  43. package/dist/adapters/github/governance-assessment.d.ts +2 -0
  44. package/dist/adapters/github/governance-assessment.js +18 -0
  45. package/dist/adapters/github/governance-assessment.js.map +1 -0
  46. package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
  47. package/dist/adapters/packaged-assets/package-root.js +21 -0
  48. package/dist/adapters/packaged-assets/package-root.js.map +1 -0
  49. package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
  50. package/dist/adapters/packaged-assets/supported-stack.js +18 -0
  51. package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
  52. package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
  53. package/dist/adapters/packaged-assets/template-assets.js +36 -0
  54. package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
  55. package/dist/adapters/process/shell-command.d.ts +6 -0
  56. package/dist/adapters/process/shell-command.js +27 -0
  57. package/dist/adapters/process/shell-command.js.map +1 -0
  58. package/dist/application/context.d.ts +25 -0
  59. package/dist/application/context.js +2 -0
  60. package/dist/application/context.js.map +1 -0
  61. package/dist/application/diagnose/doctor.d.ts +21 -0
  62. package/dist/application/diagnose/doctor.js +580 -0
  63. package/dist/application/diagnose/doctor.js.map +1 -0
  64. package/dist/application/diagnose/generated-project.d.ts +1 -0
  65. package/dist/application/diagnose/generated-project.js +105 -0
  66. package/dist/application/diagnose/generated-project.js.map +1 -0
  67. package/dist/application/diagnose/validate.d.ts +6 -0
  68. package/dist/application/diagnose/validate.js +27 -0
  69. package/dist/application/diagnose/validate.js.map +1 -0
  70. package/dist/application/initialize/fixture.d.ts +2 -0
  71. package/dist/application/initialize/fixture.js +39 -0
  72. package/dist/application/initialize/fixture.js.map +1 -0
  73. package/dist/application/initialize/inputs.d.ts +3 -0
  74. package/dist/application/initialize/inputs.js +35 -0
  75. package/dist/application/initialize/inputs.js.map +1 -0
  76. package/dist/application/initialize/use-case.d.ts +23 -0
  77. package/dist/application/initialize/use-case.js +360 -0
  78. package/dist/application/initialize/use-case.js.map +1 -0
  79. package/dist/application/migrate/use-case.d.ts +7 -0
  80. package/dist/application/migrate/use-case.js +378 -0
  81. package/dist/application/migrate/use-case.js.map +1 -0
  82. package/dist/application/project/catalog.d.ts +46 -0
  83. package/dist/application/project/catalog.js +12 -0
  84. package/dist/application/project/catalog.js.map +1 -0
  85. package/dist/application/project/manifest.d.ts +2 -0
  86. package/dist/application/project/manifest.js +29 -0
  87. package/dist/application/project/manifest.js.map +1 -0
  88. package/dist/application/project/planning.d.ts +6 -0
  89. package/dist/application/project/planning.js +12 -0
  90. package/dist/application/project/planning.js.map +1 -0
  91. package/dist/application/update/approval.d.ts +39 -0
  92. package/dist/application/update/approval.js +54 -0
  93. package/dist/application/update/approval.js.map +1 -0
  94. package/dist/application/update/command-guidance.d.ts +2 -0
  95. package/dist/application/update/command-guidance.js +14 -0
  96. package/dist/application/update/command-guidance.js.map +1 -0
  97. package/dist/application/update/inspection.d.ts +37 -0
  98. package/dist/application/update/inspection.js +235 -0
  99. package/dist/application/update/inspection.js.map +1 -0
  100. package/dist/application/update/migration-runtime.d.ts +14 -0
  101. package/dist/application/update/migration-runtime.js +178 -0
  102. package/dist/application/update/migration-runtime.js.map +1 -0
  103. package/dist/application/update/output.d.ts +134 -0
  104. package/dist/application/update/output.js +182 -0
  105. package/dist/application/update/output.js.map +1 -0
  106. package/dist/application/update/planning.d.ts +40 -0
  107. package/dist/application/update/planning.js +293 -0
  108. package/dist/application/update/planning.js.map +1 -0
  109. package/dist/application/update/preview.d.ts +49 -0
  110. package/dist/application/update/preview.js +220 -0
  111. package/dist/application/update/preview.js.map +1 -0
  112. package/dist/application/update/protected-source.d.ts +25 -0
  113. package/dist/application/update/protected-source.js +81 -0
  114. package/dist/application/update/protected-source.js.map +1 -0
  115. package/dist/application/update/reporting.d.ts +42 -0
  116. package/dist/application/update/reporting.js +326 -0
  117. package/dist/application/update/reporting.js.map +1 -0
  118. package/dist/application/update/revalidation-plan.d.ts +22 -0
  119. package/dist/application/update/revalidation-plan.js +108 -0
  120. package/dist/application/update/revalidation-plan.js.map +1 -0
  121. package/dist/application/update/revalidation.d.ts +70 -0
  122. package/dist/application/update/revalidation.js +337 -0
  123. package/dist/application/update/revalidation.js.map +1 -0
  124. package/dist/application/update/review-plan.d.ts +25 -0
  125. package/dist/application/update/review-plan.js +89 -0
  126. package/dist/application/update/review-plan.js.map +1 -0
  127. package/dist/application/update/transaction-approval.d.ts +29 -0
  128. package/dist/application/update/transaction-approval.js +82 -0
  129. package/dist/application/update/transaction-approval.js.map +1 -0
  130. package/dist/application/update/use-case.d.ts +9 -0
  131. package/dist/application/update/use-case.js +271 -0
  132. package/dist/application/update/use-case.js.map +1 -0
  133. package/dist/application/update/write-plan.d.ts +15 -0
  134. package/dist/application/update/write-plan.js +115 -0
  135. package/dist/application/update/write-plan.js.map +1 -0
  136. package/dist/application/upgrade/use-case.d.ts +6 -0
  137. package/dist/application/upgrade/use-case.js +82 -0
  138. package/dist/application/upgrade/use-case.js.map +1 -0
  139. package/dist/args.d.ts +5 -65
  140. package/dist/args.js +4 -472
  141. package/dist/args.js.map +1 -1
  142. package/dist/artifact-lifecycle.d.ts +1 -21
  143. package/dist/artifact-lifecycle.js +1 -75
  144. package/dist/artifact-lifecycle.js.map +1 -1
  145. package/dist/catalogs.d.ts +1 -50
  146. package/dist/catalogs.js +1 -472
  147. package/dist/catalogs.js.map +1 -1
  148. package/dist/cli/args/contracts.d.ts +51 -0
  149. package/dist/cli/args/contracts.js +2 -0
  150. package/dist/cli/args/contracts.js.map +1 -0
  151. package/dist/cli/args/definitions.d.ts +6 -0
  152. package/dist/cli/args/definitions.js +188 -0
  153. package/dist/cli/args/definitions.js.map +1 -0
  154. package/dist/cli/args/help.d.ts +5 -0
  155. package/dist/cli/args/help.js +142 -0
  156. package/dist/cli/args/help.js.map +1 -0
  157. package/dist/cli/args/parser.d.ts +5 -0
  158. package/dist/cli/args/parser.js +160 -0
  159. package/dist/cli/args/parser.js.map +1 -0
  160. package/dist/cli/args/readers.d.ts +4 -0
  161. package/dist/cli/args/readers.js +19 -0
  162. package/dist/cli/args/readers.js.map +1 -0
  163. package/dist/cli/commands/diagnose.d.ts +4 -0
  164. package/dist/cli/commands/diagnose.js +12 -0
  165. package/dist/cli/commands/diagnose.js.map +1 -0
  166. package/dist/cli/commands/dispatch.d.ts +3 -0
  167. package/dist/cli/commands/dispatch.js +94 -0
  168. package/dist/cli/commands/dispatch.js.map +1 -0
  169. package/dist/cli/commands/help.d.ts +3 -0
  170. package/dist/cli/commands/help.js +32 -0
  171. package/dist/cli/commands/help.js.map +1 -0
  172. package/dist/cli/commands/helpers.d.ts +8 -0
  173. package/dist/cli/commands/helpers.js +97 -0
  174. package/dist/cli/commands/helpers.js.map +1 -0
  175. package/dist/cli/commands/initialize.d.ts +3 -0
  176. package/dist/cli/commands/initialize.js +7 -0
  177. package/dist/cli/commands/initialize.js.map +1 -0
  178. package/dist/cli/commands/migrate.d.ts +3 -0
  179. package/dist/cli/commands/migrate.js +8 -0
  180. package/dist/cli/commands/migrate.js.map +1 -0
  181. package/dist/cli/commands/plan.d.ts +3 -0
  182. package/dist/cli/commands/plan.js +34 -0
  183. package/dist/cli/commands/plan.js.map +1 -0
  184. package/dist/cli/commands/reference.d.ts +5 -0
  185. package/dist/cli/commands/reference.js +43 -0
  186. package/dist/cli/commands/reference.js.map +1 -0
  187. package/dist/cli/commands/update.d.ts +3 -0
  188. package/dist/cli/commands/update.js +10 -0
  189. package/dist/cli/commands/update.js.map +1 -0
  190. package/dist/cli/commands/upgrade.d.ts +3 -0
  191. package/dist/cli/commands/upgrade.js +7 -0
  192. package/dist/cli/commands/upgrade.js.map +1 -0
  193. package/dist/cli/context.d.ts +1 -0
  194. package/dist/cli/context.js +2 -0
  195. package/dist/cli/context.js.map +1 -0
  196. package/dist/cli/project-options.d.ts +3 -0
  197. package/dist/cli/project-options.js +41 -0
  198. package/dist/cli/project-options.js.map +1 -0
  199. package/dist/cli.d.ts +3 -3
  200. package/dist/cli.js +2 -2
  201. package/dist/cli.js.map +1 -1
  202. package/dist/commands.d.ts +4 -35
  203. package/dist/commands.js +3 -2969
  204. package/dist/commands.js.map +1 -1
  205. package/dist/container-validation.d.ts +1 -1
  206. package/dist/domain/governance/activation/approvals.d.ts +351 -0
  207. package/dist/domain/governance/activation/approvals.js +528 -0
  208. package/dist/domain/governance/activation/approvals.js.map +1 -0
  209. package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
  210. package/dist/domain/governance/activation/canonical-json.js +39 -0
  211. package/dist/domain/governance/activation/canonical-json.js.map +1 -0
  212. package/dist/domain/governance/activation/capabilities.d.ts +7 -0
  213. package/dist/domain/governance/activation/capabilities.js +33 -0
  214. package/dist/domain/governance/activation/capabilities.js.map +1 -0
  215. package/dist/domain/governance/activation/evidence.d.ts +63 -0
  216. package/dist/domain/governance/activation/evidence.js +444 -0
  217. package/dist/domain/governance/activation/evidence.js.map +1 -0
  218. package/dist/domain/governance/activation/graph.d.ts +397 -0
  219. package/dist/domain/governance/activation/graph.js +441 -0
  220. package/dist/domain/governance/activation/graph.js.map +1 -0
  221. package/dist/domain/governance/activation/inputs.d.ts +25 -0
  222. package/dist/domain/governance/activation/inputs.js +63 -0
  223. package/dist/domain/governance/activation/inputs.js.map +1 -0
  224. package/dist/domain/governance/activation/operations.d.ts +19 -0
  225. package/dist/domain/governance/activation/operations.js +181 -0
  226. package/dist/domain/governance/activation/operations.js.map +1 -0
  227. package/dist/domain/governance/activation/readiness.d.ts +27 -0
  228. package/dist/domain/governance/activation/readiness.js +269 -0
  229. package/dist/domain/governance/activation/readiness.js.map +1 -0
  230. package/dist/domain/governance/activation/types.d.ts +399 -0
  231. package/dist/domain/governance/activation/types.js +109 -0
  232. package/dist/domain/governance/activation/types.js.map +1 -0
  233. package/dist/domain/governance/activation/validators.d.ts +22 -0
  234. package/dist/domain/governance/activation/validators.js +1347 -0
  235. package/dist/domain/governance/activation/validators.js.map +1 -0
  236. package/dist/domain/governance/assessment/catalog.d.ts +14 -0
  237. package/dist/domain/governance/assessment/catalog.js +105 -0
  238. package/dist/domain/governance/assessment/catalog.js.map +1 -0
  239. package/dist/domain/governance/assessment/errors.d.ts +10 -0
  240. package/dist/domain/governance/assessment/errors.js +22 -0
  241. package/dist/domain/governance/assessment/errors.js.map +1 -0
  242. package/dist/domain/governance/assessment/index.d.ts +8 -0
  243. package/dist/domain/governance/assessment/index.js +9 -0
  244. package/dist/domain/governance/assessment/index.js.map +1 -0
  245. package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
  246. package/dist/domain/governance/assessment/live-normalize.js +403 -0
  247. package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
  248. package/dist/domain/governance/assessment/predicates.d.ts +36 -0
  249. package/dist/domain/governance/assessment/predicates.js +545 -0
  250. package/dist/domain/governance/assessment/predicates.js.map +1 -0
  251. package/dist/domain/governance/assessment/report.d.ts +23 -0
  252. package/dist/domain/governance/assessment/report.js +266 -0
  253. package/dist/domain/governance/assessment/report.js.map +1 -0
  254. package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
  255. package/dist/domain/governance/assessment/sanitize.js +60 -0
  256. package/dist/domain/governance/assessment/sanitize.js.map +1 -0
  257. package/dist/domain/governance/assessment/types.d.ts +174 -0
  258. package/dist/domain/governance/assessment/types.js +13 -0
  259. package/dist/domain/governance/assessment/types.js.map +1 -0
  260. package/dist/domain/governance/assessment/yaml.d.ts +6 -0
  261. package/dist/domain/governance/assessment/yaml.js +30 -0
  262. package/dist/domain/governance/assessment/yaml.js.map +1 -0
  263. package/dist/domain/governance/policy/identity.d.ts +64 -0
  264. package/dist/domain/governance/policy/identity.js +112 -0
  265. package/dist/domain/governance/policy/identity.js.map +1 -0
  266. package/dist/domain/migration/dependencies.d.ts +7 -0
  267. package/dist/domain/migration/dependencies.js +221 -0
  268. package/dist/domain/migration/dependencies.js.map +1 -0
  269. package/dist/domain/migration/inventory.d.ts +3 -0
  270. package/dist/domain/migration/inventory.js +15 -0
  271. package/dist/domain/migration/inventory.js.map +1 -0
  272. package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
  273. package/dist/domain/project/artifact-lifecycle.js +137 -0
  274. package/dist/domain/project/artifact-lifecycle.js.map +1 -0
  275. package/dist/domain/project/catalog.d.ts +48 -0
  276. package/dist/domain/project/catalog.js +507 -0
  277. package/dist/domain/project/catalog.js.map +1 -0
  278. package/dist/domain/project/contracts.d.ts +247 -0
  279. package/dist/domain/project/contracts.js +2 -0
  280. package/dist/domain/project/contracts.js.map +1 -0
  281. package/dist/domain/project/errors.d.ts +3 -0
  282. package/dist/domain/project/errors.js +7 -0
  283. package/dist/domain/project/errors.js.map +1 -0
  284. package/dist/domain/project/infrastructure-layout.d.ts +26 -0
  285. package/dist/domain/project/infrastructure-layout.js +125 -0
  286. package/dist/domain/project/infrastructure-layout.js.map +1 -0
  287. package/dist/domain/project/inputs.d.ts +21 -0
  288. package/dist/domain/project/inputs.js +41 -0
  289. package/dist/domain/project/inputs.js.map +1 -0
  290. package/dist/domain/project/manifest/artifacts.d.ts +8 -0
  291. package/dist/domain/project/manifest/artifacts.js +150 -0
  292. package/dist/domain/project/manifest/artifacts.js.map +1 -0
  293. package/dist/domain/project/manifest/context.d.ts +13 -0
  294. package/dist/domain/project/manifest/context.js +2 -0
  295. package/dist/domain/project/manifest/context.js.map +1 -0
  296. package/dist/domain/project/manifest/fields.d.ts +6 -0
  297. package/dist/domain/project/manifest/fields.js +36 -0
  298. package/dist/domain/project/manifest/fields.js.map +1 -0
  299. package/dist/domain/project/manifest/governance.d.ts +8 -0
  300. package/dist/domain/project/manifest/governance.js +161 -0
  301. package/dist/domain/project/manifest/governance.js.map +1 -0
  302. package/dist/domain/project/manifest/project-identity.d.ts +6 -0
  303. package/dist/domain/project/manifest/project-identity.js +273 -0
  304. package/dist/domain/project/manifest/project-identity.js.map +1 -0
  305. package/dist/domain/project/manifest/reader.d.ts +9 -0
  306. package/dist/domain/project/manifest/reader.js +141 -0
  307. package/dist/domain/project/manifest/reader.js.map +1 -0
  308. package/dist/domain/project/paths.d.ts +2 -0
  309. package/dist/domain/project/paths.js +29 -0
  310. package/dist/domain/project/paths.js.map +1 -0
  311. package/dist/domain/project/planning.d.ts +19 -0
  312. package/dist/domain/project/planning.js +329 -0
  313. package/dist/domain/project/planning.js.map +1 -0
  314. package/dist/domain/project/retired-workload.d.ts +4 -0
  315. package/dist/domain/project/retired-workload.js +18 -0
  316. package/dist/domain/project/retired-workload.js.map +1 -0
  317. package/dist/domain/project/reviewed-update-artifacts.d.ts +2 -0
  318. package/dist/domain/project/reviewed-update-artifacts.js +3 -0
  319. package/dist/domain/project/reviewed-update-artifacts.js.map +1 -0
  320. package/dist/domain/project/supported-stack.d.ts +113 -0
  321. package/dist/domain/project/supported-stack.js +426 -0
  322. package/dist/domain/project/supported-stack.js.map +1 -0
  323. package/dist/domain/workstation/constraints.d.ts +6 -0
  324. package/dist/domain/workstation/constraints.js +8 -0
  325. package/dist/domain/workstation/constraints.js.map +1 -0
  326. package/dist/file-system.d.ts +10 -44
  327. package/dist/file-system.js +9 -1245
  328. package/dist/file-system.js.map +1 -1
  329. package/dist/framework-adapters.d.ts +1 -1
  330. package/dist/framework-validation.d.ts +1 -1
  331. package/dist/framework-validation.js +1 -1
  332. package/dist/framework-validation.js.map +1 -1
  333. package/dist/genai-templates.d.ts +2 -9
  334. package/dist/genai-templates.js +4 -5
  335. package/dist/genai-templates.js.map +1 -1
  336. package/dist/generators/common/artifacts.d.ts +6 -0
  337. package/dist/generators/common/artifacts.js +30 -0
  338. package/dist/generators/common/artifacts.js.map +1 -0
  339. package/dist/generators/common/base.d.ts +17 -0
  340. package/dist/generators/common/base.js +425 -0
  341. package/dist/generators/common/base.js.map +1 -0
  342. package/dist/generators/common/dotenv-validation.d.ts +2 -0
  343. package/dist/generators/common/dotenv-validation.js +80 -0
  344. package/dist/generators/common/dotenv-validation.js.map +1 -0
  345. package/dist/generators/common/environments.d.ts +3 -0
  346. package/dist/generators/common/environments.js +15 -0
  347. package/dist/generators/common/environments.js.map +1 -0
  348. package/dist/generators/common/frontend.d.ts +15 -0
  349. package/dist/generators/common/frontend.js +166 -0
  350. package/dist/generators/common/frontend.js.map +1 -0
  351. package/dist/generators/common/python-settings.d.ts +2 -0
  352. package/dist/generators/common/python-settings.js +70 -0
  353. package/dist/generators/common/python-settings.js.map +1 -0
  354. package/dist/generators/common/spec-workflow.d.ts +28 -0
  355. package/dist/generators/common/spec-workflow.js +567 -0
  356. package/dist/generators/common/spec-workflow.js.map +1 -0
  357. package/dist/generators/common/values.d.ts +13 -0
  358. package/dist/generators/common/values.js +16 -0
  359. package/dist/generators/common/values.js.map +1 -0
  360. package/dist/generators/containers/compose.d.ts +7 -0
  361. package/dist/generators/containers/compose.js +196 -0
  362. package/dist/generators/containers/compose.js.map +1 -0
  363. package/dist/generators/containers/context.d.ts +1 -0
  364. package/dist/generators/containers/context.js +43 -0
  365. package/dist/generators/containers/context.js.map +1 -0
  366. package/dist/generators/containers/images.d.ts +7 -0
  367. package/dist/generators/containers/images.js +119 -0
  368. package/dist/generators/containers/images.js.map +1 -0
  369. package/dist/generators/context.d.ts +42 -0
  370. package/dist/generators/context.js +38 -0
  371. package/dist/generators/context.js.map +1 -0
  372. package/dist/generators/genai/backend.d.ts +20 -0
  373. package/dist/generators/genai/backend.js +667 -0
  374. package/dist/generators/genai/backend.js.map +1 -0
  375. package/dist/generators/genai/configuration.d.ts +3 -0
  376. package/dist/generators/genai/configuration.js +43 -0
  377. package/dist/generators/genai/configuration.js.map +1 -0
  378. package/dist/generators/genai/database.d.ts +7 -0
  379. package/dist/generators/genai/database.js +71 -0
  380. package/dist/generators/genai/database.js.map +1 -0
  381. package/dist/generators/genai/functions.d.ts +15 -0
  382. package/dist/generators/genai/functions.js +156 -0
  383. package/dist/generators/genai/functions.js.map +1 -0
  384. package/dist/generators/genai/index.d.ts +8 -0
  385. package/dist/generators/genai/index.js +11 -0
  386. package/dist/generators/genai/index.js.map +1 -0
  387. package/dist/generators/genai/patterns.d.ts +9 -0
  388. package/dist/generators/genai/patterns.js +309 -0
  389. package/dist/generators/genai/patterns.js.map +1 -0
  390. package/dist/generators/infrastructure/azure.d.ts +18 -0
  391. package/dist/generators/infrastructure/azure.js +655 -0
  392. package/dist/generators/infrastructure/azure.js.map +1 -0
  393. package/dist/generators/infrastructure/names.d.ts +23 -0
  394. package/dist/generators/infrastructure/names.js +51 -0
  395. package/dist/generators/infrastructure/names.js.map +1 -0
  396. package/dist/generators/standard/configuration.d.ts +3 -0
  397. package/dist/generators/standard/configuration.js +26 -0
  398. package/dist/generators/standard/configuration.js.map +1 -0
  399. package/dist/generators/standard/go.d.ts +17 -0
  400. package/dist/generators/standard/go.js +338 -0
  401. package/dist/generators/standard/go.js.map +1 -0
  402. package/dist/generators/standard/index.d.ts +12 -0
  403. package/dist/generators/standard/index.js +12 -0
  404. package/dist/generators/standard/index.js.map +1 -0
  405. package/dist/generators/standard/node.d.ts +20 -0
  406. package/dist/generators/standard/node.js +314 -0
  407. package/dist/generators/standard/node.js.map +1 -0
  408. package/dist/generators/standard/python.d.ts +18 -0
  409. package/dist/generators/standard/python.js +191 -0
  410. package/dist/generators/standard/python.js.map +1 -0
  411. package/dist/go-template-assets.js +3 -3
  412. package/dist/go-template-assets.js.map +1 -1
  413. package/dist/governance-activation/activation-state.d.ts +1 -1
  414. package/dist/governance-activation/activation-state.js +49 -9
  415. package/dist/governance-activation/activation-state.js.map +1 -1
  416. package/dist/governance-activation/approvals.d.ts +1 -188
  417. package/dist/governance-activation/approvals.js +1 -507
  418. package/dist/governance-activation/approvals.js.map +1 -1
  419. package/dist/governance-activation/canonical-json.d.ts +1 -3
  420. package/dist/governance-activation/canonical-json.js +1 -35
  421. package/dist/governance-activation/canonical-json.js.map +1 -1
  422. package/dist/governance-activation/commands.d.ts +6 -1
  423. package/dist/governance-activation/commands.js +135 -107
  424. package/dist/governance-activation/commands.js.map +1 -1
  425. package/dist/governance-activation/compatibility.d.ts +30 -5
  426. package/dist/governance-activation/compatibility.js +74 -8
  427. package/dist/governance-activation/compatibility.js.map +1 -1
  428. package/dist/governance-activation/credentials.d.ts +3 -3
  429. package/dist/governance-activation/credentials.js +5 -5
  430. package/dist/governance-activation/credentials.js.map +1 -1
  431. package/dist/governance-activation/doctor.d.ts +1 -1
  432. package/dist/governance-activation/doctor.js +59 -100
  433. package/dist/governance-activation/doctor.js.map +1 -1
  434. package/dist/governance-activation/evidence.d.ts +1 -49
  435. package/dist/governance-activation/evidence.js +1 -245
  436. package/dist/governance-activation/evidence.js.map +1 -1
  437. package/dist/governance-activation/git-ignore.d.ts +9 -0
  438. package/dist/governance-activation/git-ignore.js +76 -0
  439. package/dist/governance-activation/git-ignore.js.map +1 -0
  440. package/dist/governance-activation/graph.d.ts +1 -397
  441. package/dist/governance-activation/graph.js +1 -440
  442. package/dist/governance-activation/graph.js.map +1 -1
  443. package/dist/governance-activation/historical-state.d.ts +81 -0
  444. package/dist/governance-activation/historical-state.js +817 -0
  445. package/dist/governance-activation/historical-state.js.map +1 -0
  446. package/dist/governance-activation/history-contracts.d.ts +109 -0
  447. package/dist/governance-activation/history-contracts.js +303 -0
  448. package/dist/governance-activation/history-contracts.js.map +1 -0
  449. package/dist/governance-activation/identity.d.ts +1 -35
  450. package/dist/governance-activation/identity.js +1 -88
  451. package/dist/governance-activation/identity.js.map +1 -1
  452. package/dist/governance-activation/index.d.ts +3 -0
  453. package/dist/governance-activation/index.js +3 -0
  454. package/dist/governance-activation/index.js.map +1 -1
  455. package/dist/governance-activation/inputs.d.ts +10 -0
  456. package/dist/governance-activation/inputs.js +158 -0
  457. package/dist/governance-activation/inputs.js.map +1 -0
  458. package/dist/governance-activation/migration-history.d.ts +97 -0
  459. package/dist/governance-activation/migration-history.js +388 -0
  460. package/dist/governance-activation/migration-history.js.map +1 -0
  461. package/dist/governance-activation/migration.d.ts +4 -3
  462. package/dist/governance-activation/migration.js +14 -6
  463. package/dist/governance-activation/migration.js.map +1 -1
  464. package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
  465. package/dist/governance-activation/phase-bootstrap-state.js +128 -0
  466. package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
  467. package/dist/governance-activation/phase-discovery.d.ts +2 -0
  468. package/dist/governance-activation/phase-discovery.js +88 -0
  469. package/dist/governance-activation/phase-discovery.js.map +1 -0
  470. package/dist/governance-activation/phase-governance.d.ts +4 -0
  471. package/dist/governance-activation/phase-governance.js +141 -0
  472. package/dist/governance-activation/phase-governance.js.map +1 -0
  473. package/dist/governance-activation/phase-publication.d.ts +8 -0
  474. package/dist/governance-activation/phase-publication.js +318 -0
  475. package/dist/governance-activation/phase-publication.js.map +1 -0
  476. package/dist/governance-activation/proof-records.d.ts +3 -0
  477. package/dist/governance-activation/proof-records.js +78 -0
  478. package/dist/governance-activation/proof-records.js.map +1 -0
  479. package/dist/governance-activation/read-only.d.ts +30 -0
  480. package/dist/governance-activation/read-only.js +33 -0
  481. package/dist/governance-activation/read-only.js.map +1 -0
  482. package/dist/governance-activation/readiness.d.ts +1 -25
  483. package/dist/governance-activation/readiness.js +1 -222
  484. package/dist/governance-activation/readiness.js.map +1 -1
  485. package/dist/governance-activation/reconciliation.d.ts +1 -1
  486. package/dist/governance-activation/reconciliation.js +3 -3
  487. package/dist/governance-activation/reconciliation.js.map +1 -1
  488. package/dist/governance-activation/release-integrity.d.ts +1 -1
  489. package/dist/governance-activation/release-integrity.js +2 -2
  490. package/dist/governance-activation/release-integrity.js.map +1 -1
  491. package/dist/governance-activation/seed-lifecycle.d.ts +36 -6
  492. package/dist/governance-activation/seed-lifecycle.js +444 -77
  493. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  494. package/dist/governance-activation/source-of-truth.d.ts +5 -3
  495. package/dist/governance-activation/source-of-truth.js +32 -52
  496. package/dist/governance-activation/source-of-truth.js.map +1 -1
  497. package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
  498. package/dist/governance-activation/spec-kit-seed.js +43 -0
  499. package/dist/governance-activation/spec-kit-seed.js.map +1 -0
  500. package/dist/governance-activation/task-projection.d.ts +1 -1
  501. package/dist/governance-activation/transition-planning.d.ts +17 -0
  502. package/dist/governance-activation/transition-planning.js +259 -0
  503. package/dist/governance-activation/transition-planning.js.map +1 -0
  504. package/dist/governance-activation/transition-ports.d.ts +150 -0
  505. package/dist/governance-activation/transition-ports.js +2 -0
  506. package/dist/governance-activation/transition-ports.js.map +1 -0
  507. package/dist/governance-activation/transition-process.d.ts +7 -0
  508. package/dist/governance-activation/transition-process.js +21 -0
  509. package/dist/governance-activation/transition-process.js.map +1 -0
  510. package/dist/governance-activation/transition-records.d.ts +56 -0
  511. package/dist/governance-activation/transition-records.js +208 -0
  512. package/dist/governance-activation/transition-records.js.map +1 -0
  513. package/dist/governance-activation/transitions.d.ts +14 -167
  514. package/dist/governance-activation/transitions.js +173 -2061
  515. package/dist/governance-activation/transitions.js.map +1 -1
  516. package/dist/governance-activation/types.d.ts +1 -390
  517. package/dist/governance-activation/types.js +1 -107
  518. package/dist/governance-activation/types.js.map +1 -1
  519. package/dist/governance-activation/validators.d.ts +1 -17
  520. package/dist/governance-activation/validators.js +1 -1304
  521. package/dist/governance-activation/validators.js.map +1 -1
  522. package/dist/governance-assessment/catalog.d.ts +1 -2
  523. package/dist/governance-assessment/catalog.js +18 -85
  524. package/dist/governance-assessment/catalog.js.map +1 -1
  525. package/dist/governance-assessment/command.d.ts +1 -1
  526. package/dist/governance-assessment/command.js +8 -12
  527. package/dist/governance-assessment/command.js.map +1 -1
  528. package/dist/governance-assessment/engine.d.ts +6 -11
  529. package/dist/governance-assessment/engine.js +490 -114
  530. package/dist/governance-assessment/engine.js.map +1 -1
  531. package/dist/governance-assessment/live-normalize.d.ts +1 -19
  532. package/dist/governance-assessment/live-normalize.js +1 -402
  533. package/dist/governance-assessment/live-normalize.js.map +1 -1
  534. package/dist/governance-assessment/live-transport.d.ts +2 -6
  535. package/dist/governance-assessment/live-transport.js +10 -22
  536. package/dist/governance-assessment/live-transport.js.map +1 -1
  537. package/dist/governance-assessment/live.js +55 -5
  538. package/dist/governance-assessment/live.js.map +1 -1
  539. package/dist/governance-assessment/predicates.d.ts +1 -27
  540. package/dist/governance-assessment/predicates.js +1 -329
  541. package/dist/governance-assessment/predicates.js.map +1 -1
  542. package/dist/governance-assessment/project.d.ts +20 -17
  543. package/dist/governance-assessment/project.js +101 -151
  544. package/dist/governance-assessment/project.js.map +1 -1
  545. package/dist/governance-assessment/readers.d.ts +1 -5
  546. package/dist/governance-assessment/readers.js +5 -13
  547. package/dist/governance-assessment/readers.js.map +1 -1
  548. package/dist/governance-assessment/report.d.ts +1 -23
  549. package/dist/governance-assessment/report.js +1 -265
  550. package/dist/governance-assessment/report.js.map +1 -1
  551. package/dist/governance-assessment/sanitize.d.ts +1 -8
  552. package/dist/governance-assessment/sanitize.js +1 -56
  553. package/dist/governance-assessment/sanitize.js.map +1 -1
  554. package/dist/governance-assessment/types.d.ts +1 -173
  555. package/dist/governance-assessment/types.js +1 -12
  556. package/dist/governance-assessment/types.js.map +1 -1
  557. package/dist/governance-assessment/yaml.d.ts +1 -6
  558. package/dist/governance-assessment/yaml.js +1 -29
  559. package/dist/governance-assessment/yaml.js.map +1 -1
  560. package/dist/init-filesystem.d.ts +1 -1
  561. package/dist/init-filesystem.js +126 -174
  562. package/dist/init-filesystem.js.map +1 -1
  563. package/dist/interactive.d.ts +2 -2
  564. package/dist/interactive.js +42 -41
  565. package/dist/interactive.js.map +1 -1
  566. package/dist/migrate-plan.d.ts +1 -1
  567. package/dist/migrate-plan.js +14 -8
  568. package/dist/migrate-plan.js.map +1 -1
  569. package/dist/npm-template-assets.js +5 -4
  570. package/dist/npm-template-assets.js.map +1 -1
  571. package/dist/openspec-profile.d.ts +1 -1
  572. package/dist/opentofu-template-assets.js +3 -3
  573. package/dist/opentofu-template-assets.js.map +1 -1
  574. package/dist/package-identity.d.ts +3 -0
  575. package/dist/package-identity.js +13 -2
  576. package/dist/package-identity.js.map +1 -1
  577. package/dist/planner.d.ts +1 -19
  578. package/dist/planner.js +1 -565
  579. package/dist/planner.js.map +1 -1
  580. package/dist/process-runner.d.ts +1 -1
  581. package/dist/project-dependencies.d.ts +5 -3
  582. package/dist/project-dependencies.js +74 -63
  583. package/dist/project-dependencies.js.map +1 -1
  584. package/dist/published-verifier.js +61 -30
  585. package/dist/published-verifier.js.map +1 -1
  586. package/dist/python-template-assets.js +6 -9
  587. package/dist/python-template-assets.js.map +1 -1
  588. package/dist/reconcile.d.ts +1 -1
  589. package/dist/reconcile.js +2 -2
  590. package/dist/reconcile.js.map +1 -1
  591. package/dist/repository-governance.d.ts +5 -2
  592. package/dist/repository-governance.js +140 -113
  593. package/dist/repository-governance.js.map +1 -1
  594. package/dist/runtime.js +1 -1
  595. package/dist/runtime.js.map +1 -1
  596. package/dist/scan.d.ts +6 -2
  597. package/dist/scan.js +78 -30
  598. package/dist/scan.js.map +1 -1
  599. package/dist/self-upgrade.d.ts +1 -1
  600. package/dist/self-upgrade.js +20 -7
  601. package/dist/self-upgrade.js.map +1 -1
  602. package/dist/stable-release.js +7 -1
  603. package/dist/stable-release.js.map +1 -1
  604. package/dist/standard-templates.d.ts +2 -2
  605. package/dist/standard-templates.js +6 -841
  606. package/dist/standard-templates.js.map +1 -1
  607. package/dist/supported-stack.d.ts +3 -115
  608. package/dist/supported-stack.js +4 -438
  609. package/dist/supported-stack.js.map +1 -1
  610. package/dist/telemetry/index.d.ts +1 -1
  611. package/dist/templates.d.ts +10 -20
  612. package/dist/templates.js +52 -3261
  613. package/dist/templates.js.map +1 -1
  614. package/dist/types.d.ts +1 -263
  615. package/dist/types.js +1 -1
  616. package/dist/types.js.map +1 -1
  617. package/dist/version.js +2 -6
  618. package/dist/version.js.map +1 -1
  619. package/dist/workstation-catalog.d.ts +5 -2
  620. package/dist/workstation-catalog.js +33 -2
  621. package/dist/workstation-catalog.js.map +1 -1
  622. package/dist/workstation.d.ts +4 -3
  623. package/dist/workstation.js +86 -32
  624. package/dist/workstation.js.map +1 -1
  625. package/docs/assets/liftoff-terminal.svg +3 -3
  626. package/docs/azure-deployment.md +107 -10
  627. package/docs/cli-reference.md +144 -35
  628. package/docs/configuration-and-manifests.md +152 -35
  629. package/docs/existing-repositories.md +48 -12
  630. package/docs/getting-started.md +44 -31
  631. package/docs/prerequisites.md +34 -35
  632. package/docs/project-structure.md +39 -46
  633. package/docs/repository-governance.md +96 -26
  634. package/docs/safety-and-consent.md +90 -28
  635. package/docs/spec-workflows-and-agents.md +31 -28
  636. package/docs/supported-stack.md +11 -9
  637. package/docs/troubleshooting.md +114 -54
  638. package/docs/workloads.md +52 -67
  639. package/package.json +4 -7
  640. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
  641. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
  642. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
  643. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
  644. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
  645. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
  646. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
  647. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
  648. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
  649. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
  650. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
  651. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
  652. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
  653. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
  654. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
  655. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
  656. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
  657. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
  658. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
  659. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
  660. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
  661. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
  662. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
  663. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
  664. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
  665. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
  666. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
  667. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
  668. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
  669. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
  670. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
  671. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
  672. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
  673. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
  674. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
  675. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
  676. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
  677. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
  678. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
  679. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
  680. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
  681. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
  682. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
  683. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
  684. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
  685. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
  686. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
  687. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
  688. package/assets/power-apps-code-app/README.md +0 -27
  689. package/dist/code-apps-plugin.d.ts +0 -13
  690. package/dist/code-apps-plugin.js +0 -69
  691. package/dist/code-apps-plugin.js.map +0 -1
  692. package/dist/power-apps-assets.d.ts +0 -30
  693. package/dist/power-apps-assets.js +0 -131
  694. package/dist/power-apps-assets.js.map +0 -1
  695. package/dist/power-apps-templates.d.ts +0 -3
  696. package/dist/power-apps-templates.js +0 -177
  697. package/dist/power-apps-templates.js.map +0 -1
  698. package/dist/power-apps-validation.d.ts +0 -1
  699. package/dist/power-apps-validation.js +0 -79
  700. package/dist/power-apps-validation.js.map +0 -1
@@ -0,0 +1,425 @@
1
+ import { DEFAULT_FUNCTION_WORKER_QUEUE_NAME } from './values.js';
2
+ import { formatCommand } from '../../process-runner.js';
3
+ import { functionWorkerName } from './values.js';
4
+ import { genAiPattern } from './values.js';
5
+ import { hasFunctionWorker } from './values.js';
6
+ import { OPEN_SPEC_DELIVERY } from '../../openspec-profile.js';
7
+ import { OPEN_SPEC_PROFILE } from '../../openspec-profile.js';
8
+ import { OPEN_SPEC_WORKFLOW_IDS } from '../../openspec-profile.js';
9
+ import { renderBackendDockerfile } from '../containers/images.js';
10
+ import { renderGovernanceAssessmentGuide } from '../../repository-governance.js';
11
+ import { renderStandardDockerfile } from '../containers/images.js';
12
+ import { renderStandardEnv } from '../standard/configuration.js';
13
+ import { renderDockerignore } from '../containers/context.js';
14
+ import { selectedEnvironmentId } from './values.js';
15
+ import { workstationRequirementCatalog } from '../../workstation-catalog.js';
16
+ export function addBaseArtifacts(add, addDesiredState, plan, context) {
17
+ add('root-readme', 'documentation', ['README.md'], renderRootReadme(plan));
18
+ add('root-gitignore', 'project', ['.gitignore'], renderGeneratedGitignore());
19
+ add('root-dockerignore', 'runtime', ['.dockerignore'], renderDockerignore());
20
+ addDesiredState('liftoff-config', 'project', ['liftoff.config.json'], JSON.stringify({
21
+ projectName: plan.projectName,
22
+ projectType: plan.projectType.id,
23
+ apiStack: plan.apiStack.id,
24
+ ...(plan.workload === 'genai' ? { pattern: plan.pattern.id } : {}),
25
+ cloud: plan.provider.id,
26
+ region: plan.region.slug,
27
+ includeFrontend: plan.includeFrontend,
28
+ environments: plan.environments.map((environment) => environment.id),
29
+ specWorkflow: plan.specWorkflow.id,
30
+ agents: plan.agents.map((agent) => agent.id),
31
+ ...(plan.defaultAgent ? { defaultAgent: plan.defaultAgent.id } : {}),
32
+ governanceProfile: plan.governanceProfile.id
33
+ }, null, 2));
34
+ add('env-example', 'configuration', ['.env.example'], renderEnvExample(plan)
35
+ .replaceAll('@postgres:', '@localhost:')
36
+ .replaceAll('redis://redis:', 'redis://localhost:')
37
+ .replaceAll('http://azurite:', 'http://localhost:')
38
+ .replaceAll('http://langfuse:', 'http://localhost:'));
39
+ add('backend-dockerfile', 'runtime', ['Dockerfile'], plan.workload === 'genai' ? renderBackendDockerfile(context) : renderStandardDockerfile(plan, context));
40
+ }
41
+ export function renderDirectBuildAndTestGuide(plan) {
42
+ let backendCommands;
43
+ if (plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi') {
44
+ const extras = plan.workload === 'genai' && hasFunctionWorker(plan)
45
+ ? ' --extra functions'
46
+ : '';
47
+ backendCommands = `uv sync --frozen --project backend --extra test${extras}
48
+ uv run --project backend python -m pytest -q backend/tests`;
49
+ }
50
+ else if (plan.apiStack.id === 'node-fastify') {
51
+ backendCommands = `cd backend
52
+ npm ci
53
+ npm run build
54
+ npm test`;
55
+ }
56
+ else {
57
+ backendCommands = `cd backend
58
+ go mod download
59
+ go test ./...`;
60
+ }
61
+ const frontendCommands = plan.includeFrontend ? `
62
+
63
+ Build the frontend without a running backend:
64
+
65
+ \`\`\`bash
66
+ cp frontend/.env.example frontend/.env
67
+ cd frontend
68
+ npm ci
69
+ npm run build
70
+ \`\`\`
71
+ ` : '';
72
+ const functionCommands = plan.workload === 'genai' && hasFunctionWorker(plan) ? `
73
+
74
+ Run the Function worker unit tests from the same locked Python environment:
75
+
76
+ \`\`\`bash
77
+ (cd functions/${functionWorkerName(plan)} && uv run --project ../../backend --directory . python -m pytest -q)
78
+ \`\`\`
79
+ ` : '';
80
+ return `## Project Dependencies, Build, And Test
81
+
82
+ \`liftoff init --install-dependencies\` runs the selected stack's locked project-local dependency commands. To run or resume them manually:
83
+
84
+ \`\`\`bash
85
+ ${backendCommands}
86
+ \`\`\`
87
+
88
+ ${frontendCommands}${functionCommands}`;
89
+ }
90
+ export function renderDeterministicSetupGuide(plan) {
91
+ const backend = plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi'
92
+ ? '`uv run --project backend python -m pytest -q backend/tests`'
93
+ : plan.apiStack.id === 'node-fastify'
94
+ ? '`npm test` from `backend/` after `npm ci` and `npm run build`'
95
+ : '`go test ./...` from `backend/`';
96
+ const frontend = plan.includeFrontend
97
+ ? '- Frontend build: `npm run build` from `frontend/` after `npm ci`.'
98
+ : '- Frontend build: inapplicable because no frontend was generated.';
99
+ const governance = plan.governanceProfile.id === 'none'
100
+ ? 'Repository governance is disabled, so there is no `/liftoff-setup` integration, managed phase graph, or post-init governance activation path.'
101
+ : plan.specWorkflow.id === 'openspec'
102
+ ? 'Run `/liftoff-setup` from a selected agent. It verifies, syncs, and archives the generated OpenSpec bootstrap seed, then stops at explicit authority gates. Commit and push require separate approvals.'
103
+ : 'Run `/liftoff-setup` from a selected agent. It verifies the real `specs/000-liftoff-bootstrap` bundle and official Spec Kit markers, runs applicable checks, and only then finalizes the local bootstrap projection and receipt. It creates no branch or external archive.';
104
+ return `## Deterministic Setup
105
+
106
+ ${governance}
107
+
108
+ The local baseline contains only applicable checks:
109
+
110
+ - \`liftoff validate\`
111
+ - Backend tests: ${backend}
112
+ ${frontend}
113
+ - \`docker compose config -q\`
114
+ - \`tofu fmt -check -recursive\`
115
+ ${plan.environments.map(({ id }) => `- From \`infrastructure/opentofu/azure/environments/${id}\`: \`tofu init -backend=false\`, then \`tofu validate\`.`).join('\n')}
116
+ - ${plan.specWorkflow.id === 'openspec' ? 'strict OpenSpec validation' : 'validation of the real Spec Kit bootstrap spec, plan, tasks, and separate official initialization markers'}
117
+
118
+ No baseline step runs a live OpenTofu plan or apply, starts containers, deploys,
119
+ mutates GitHub, or asks for cloud credentials. Absent components are recorded as
120
+ inapplicable rather than simulated. After setup finalizes the seed, use normal
121
+ OpenSpec or Spec Kit changes for features and the governed GitFlow release path
122
+ after activation evidence is green.
123
+ `;
124
+ }
125
+ export function renderAdvisoryReadinessGuide(plan) {
126
+ const selected = [
127
+ 'docker',
128
+ 'opentofu',
129
+ ...(plan.provider.id === 'azure' ? ['azure-cli'] : [])
130
+ ];
131
+ return selected.map((id) => {
132
+ const requirement = workstationRequirementCatalog[id];
133
+ const mac = requirement.install.darwin;
134
+ const windows = requirement.install.win32;
135
+ const commands = [
136
+ ...(mac ? [`macOS: \`${formatCommand(mac.command)}\``] : []),
137
+ ...(windows ? [`Windows: \`${formatCommand(windows.command)}\``] : []),
138
+ `Linux: ${requirement.linuxRemedies.unknown}`
139
+ ].join('; ');
140
+ const health = id === 'docker'
141
+ ? ' After installation, start Docker Desktop or the Docker daemon.'
142
+ : id === 'azure-cli'
143
+ ? ' After installation, run `az login` if authentication is not ready.'
144
+ : '';
145
+ return `- ${requirement.label}: ${commands}.${health}`;
146
+ }).join('\n');
147
+ }
148
+ export function renderSpecWorkflowGuide(plan) {
149
+ const agents = plan.agents.map((agent) => `${agent.label}${plan.defaultAgent?.id === agent.id ? ' (default integration)' : ''}`).join(', ');
150
+ const ownership = plan.specWorkflow.id === 'openspec'
151
+ ? 'OpenSpec workflow skills, commands, configuration, and optional cloud-agent files'
152
+ : 'Spec Kit core files, integration state, and the selected Copilot or Claude skill integrations';
153
+ const openSpecDetails = plan.specWorkflow.id === 'openspec'
154
+ ? [
155
+ `- OpenSpec profile: ${OPEN_SPEC_PROFILE}; delivery: ${OPEN_SPEC_DELIVERY}; workflows: ${OPEN_SPEC_WORKFLOW_IDS.join(', ')}`,
156
+ ...(plan.agents.some((agent) => agent.id === 'github-copilot')
157
+ ? ['- GitHub Copilot cloud agent: controlled by `githubCopilot.cloudAgent` in `openspec/config.yaml`']
158
+ : [])
159
+ ].join('\n')
160
+ : '';
161
+ return `## Spec-Driven Workflow And Validation
162
+
163
+ - Workflow: ${plan.specWorkflow.label} ${plan.framework.version}
164
+ - AI coding agents: ${agents}
165
+ ${openSpecDetails ? `${openSpecDetails}\n` : ''}
166
+ - Framework ownership: the official initializer owns ${ownership}. Liftoff validates these files but excludes framework-owned output and one-time seed content from managed-core hashes.
167
+ - Deferred tools: advisory workstation checks may be deferred. Liftoff never claims they are installed and never installs them without \`--install-tools\`.
168
+
169
+ If \`liftoff doctor\` reports a selected advisory tool as missing, use its registered readiness remedy:
170
+
171
+ ${renderAdvisoryReadinessGuide(plan)}
172
+
173
+ Validate the scaffold and workstation after setup:
174
+
175
+ \`\`\`bash
176
+ liftoff validate
177
+ liftoff doctor
178
+ \`\`\`
179
+
180
+ For an existing OpenSpec project, change workflow delivery with \`openspec config profile\` and refresh framework-owned files with \`openspec update\`. Plain \`liftoff update\` does not regenerate OpenSpec integrations.
181
+ `;
182
+ }
183
+ export function renderGeneratedConfigurationGuide(plan) {
184
+ const frontendConfiguration = plan.includeFrontend
185
+ ? '\n- `frontend/.env` configures `VITE_API_BASE_URL`; the production build does not contact the backend.'
186
+ : '';
187
+ const nativeCommand = plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi'
188
+ ? 'uv run --project backend uvicorn backend.apis.main:app --host 127.0.0.1 --port 8000'
189
+ : plan.apiStack.id === 'node-fastify'
190
+ ? '(cd backend && npm run build && npm start)'
191
+ : '(cd backend && go run ./cmd/api)';
192
+ const go = plan.workload === 'standard' && plan.apiStack.id === 'go-huma';
193
+ const python = plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi';
194
+ const contract = `Copy \`.env.example\` to root \`.env\` for Compose.${go ? ' For native Go, also copy `runtime.config.example.json` to root `runtime.config.json`.' : ''} Resolution is process environment > selected local configuration file > nonsecret defaults.
195
+ ${go
196
+ ? 'The documented backend-CWD startup uses the Go standard library to read `../runtime.config.json`, a JSON object of string settings (not dotenv).'
197
+ : 'The backend resolves the default dotenv file from source location, so backend-CWD startup also reads root `.env`.'}
198
+ To select another file, set \`LIFTOFF_ENV_FILE\` to its path relative to the startup working directory; this backend expects ${go ? 'JSON' : 'dotenv'}.
199
+ An explicitly selected missing/unreadable file fails; configuration is never shell-sourced.
200
+ ${go
201
+ ? 'Malformed JSON or non-string values fail before environment overrides are applied.'
202
+ : 'Malformed dotenv assignments or unbalanced quotes fail rather than being silently ignored. Use `KEY=value`, optional `export`, comments, and single/double-quoted values.'}
203
+ ${plan.workload === 'standard' && plan.apiStack.id === 'node-fastify' ? 'Node uses the runtime dotenv parser; escaped quote delimiters are rejected to avoid truncation. Use the other quote style when a value contains a quote.\n' : ''}
204
+ Local native URLs use localhost. Start supporting services and then the native backend:
205
+
206
+ \`\`\`bash
207
+ cp .env.example .env
208
+ ${go ? 'cp runtime.config.example.json runtime.config.json\n' : ''}docker compose up -d postgres redis azurite mailpit
209
+ ${nativeCommand}
210
+ \`\`\`
211
+
212
+ ${python ? 'For a Python backend-CWD launch, use `uv run uvicorn --app-dir .. backend.apis.main:app --port 8000` from `backend/`.\n' : ''}
213
+ Compose reads root \`.env\` for interpolation; select another file with \`docker compose --env-file environments/${selectedEnvironmentId(plan)}/backend.env up --build\`.
214
+ Compose deliberately replaces database, Redis, and blob service addresses with container-reachable names while forwarding applicable model, transport, and tracing inputs.
215
+ \`/health\` and \`/ready\` are local process/configuration endpoints, not proof of external-service connectivity or production readiness.
216
+ `;
217
+ if (plan.workload === 'standard') {
218
+ return `## Runtime Configuration
219
+
220
+ ${contract}
221
+ The backend requires \`DATABASE_URL\` and \`REDIS_URL\`. \`CORS_ALLOWED_ORIGINS\` is a comma-separated allowlist and defaults to the local frontend at \`http://localhost:5173\`. No GenAI model or tracing credentials are required.${frontendConfiguration}
222
+ `;
223
+ }
224
+ return `## Starter Integration Configuration
225
+
226
+ ${contract}
227
+ Configure only the integrations you use:
228
+
229
+ - \`PYDANTIC_AI_MODEL\` is required when production orchestration is invoked. If it is absent, the agent raises an explicit configuration error rather than returning a placeholder answer.
230
+ - The locked model provider supports \`openai:\`, \`openai-chat:\`, and \`openai-responses:\` identifiers. Set \`OPENAI_API_KEY\`; \`OPENAI_BASE_URL\` optionally selects an OpenAI-compatible endpoint. Other providers require a reviewed dependency/configuration change.
231
+ - Redis Streams uses \`REDIS_URL\` and \`REDIS_STREAM_NAME\`.
232
+ - Azure Service Bus uses \`SERVICE_BUS_QUEUE_NAME\` and explicit \`SERVICE_BUS_AUTH_MODE\`: \`managed-identity\` requires \`SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE\` plus \`AZURE_CLIENT_ID\`; \`connection-string\` requires \`SERVICE_BUS_CONNECTION_STRING\`. Missing publisher configuration fails before ingestion can report success.
233
+ - Langfuse requires both \`LANGFUSE_PUBLIC_KEY\` and \`LANGFUSE_SECRET_KEY\`, with optional \`LANGFUSE_HOST\`. Without both keys, tracing is explicitly disabled and no remote trace ID is reported.${frontendConfiguration}
234
+ - \`CORS_ALLOWED_ORIGINS\` is a comma-separated frontend-origin allowlist and defaults to \`http://localhost:5173\`.
235
+ `;
236
+ }
237
+ export function renderGeneratedUpdateGuide(plan) {
238
+ const governance = plan.governanceProfile.id === 'none'
239
+ ? 'Repository governance is disabled for this project, so Liftoff does not generate setup integrations, a managed phase graph, credential-policy schema, or post-init setup command.'
240
+ : '`single-maintainer-gitflow` repository governance generates deterministic setup artifacts only. Review `.liftoff/governance/README.md`, then run `/liftoff-setup` from a selected agent. Live enforcement requires evidence and explicit approval; it is never inferred from generated files.';
241
+ return `## Safe Liftoff Updates
242
+
243
+ \`liftoff upgrade\` replaces a supported global Liftoff CLI installation; it does not inspect or modify this project. Check and apply CLI replacement separately with \`liftoff upgrade --check\` and \`liftoff upgrade\`.
244
+
245
+ ${governance}
246
+
247
+ \`liftoff update\` maintains explicit Liftoff core files, currently the repository-governance policy, context, guide, phase graph, compatibility metadata, credential-policy schema, and selected-agent \`/liftoff-setup\` and \`/liftoff-governance-assess\` integrations. Start with \`liftoff update --check\` for the human compatibility and migration preview. Check changes no project bytes and discloses a preview receipt stored outside the repository; this receipt is not approval. Plain update requires the matching preview and explicit approval. Automation can use \`liftoff update --check --json\` and approve the exact effective fingerprint with \`liftoff update --approve-plan <fingerprint> --json\`.
248
+
249
+ Application source, tests, dependencies and locks, schemas, containers, environment files, documentation, and infrastructure become project-owned after generation. No update mode, including \`--force\`, can restore or replace them. Enabling a previously absent frontend or environment in \`liftoff.config.json\` may provision that component once at absent destinations; a collision blocks the whole component and cannot be forced.
250
+
251
+ Project template modernization is a separately reviewed production change and is not performed by ordinary update or by the existing non-Liftoff \`migrate\` command. Managed-core conflicts are skipped by default; after reviewing every listed core path, \`liftoff update --force\` may replace only those core conflicts. Managed-core orphans remain on disk, and update never installs dependencies. A failed transaction is rolled back, but Liftoff retains no backup after a successful core overwrite.
252
+
253
+ Activation migration is a separate explicitly approved write set. A supported v1 source retains original state, evidence, plans, approvals, and source metadata in \`governance/history\` before a linked v2 successor is created. History never becomes managed core or current execution proof. Revalidation uses only the finite reviewed local operations and stops before provider access, publication, or independent authority gates. Failure after migration commits leaves v2 blocked and resumable; repair the named cause, run check again, and approve the remaining work. History is not automatically committed, pushed, or removed with preview receipts. Force never bypasses preview, approval, compatibility, or ownership checks.
254
+
255
+ Update JSON uses schema 3. Exit 0 means clean state or completion of the approved scope, 2 means differences or committed migration with incomplete revalidation, and 1 means a rejected or failed operation. Local migration completion does not establish live governance.
256
+
257
+ Liftoff rejects malformed, traversal, absolute, drive-qualified, UNC, separator-containing, or symlink-escaping manifest paths before artifact access. If the manifest is unsafe or malformed, restore \`liftoff.manifest.json\` from version control or regenerate the project with a matching Liftoff version; do not hand-edit unsafe paths. Run \`liftoff <command> --help\` for command-specific syntax because unknown flags, subcommands, values, and extra arguments fail before any write.
258
+
259
+ ${plan.governanceProfile.id === 'none'
260
+ ? 'No `/liftoff-governance-assess` integration is generated while governance is disabled.'
261
+ : renderGovernanceAssessmentGuide()}
262
+ `;
263
+ }
264
+ export function renderRootInfrastructureGuide(plan) {
265
+ const environment = selectedEnvironmentId(plan);
266
+ const governanceGate = plan.governanceProfile.id === 'none'
267
+ ? ''
268
+ : `These commands are reference material, not the next setup action. Do not run this
269
+ sequence until the separately approved \`application-foundation\` governance phase
270
+ authorizes the exact infrastructure mutation. \`/liftoff-setup\` can evaluate and
271
+ resume managed phases, but it does not imply that every managed phase has an
272
+ executable production adapter. An unavailable production adapter remains a
273
+ blocker; do not bypass it by running the reference commands directly.
274
+
275
+ `;
276
+ return `## Infrastructure
277
+
278
+ ${governanceGate}\`\`\`bash
279
+ cd infrastructure/opentofu/azure/environments/${environment}
280
+ tofu init
281
+ tofu plan -var-file=${environment}.tfvars
282
+ tofu apply -var-file=${environment}.tfvars
283
+ \`\`\`
284
+
285
+ The first apply uses a public bootstrap image. Follow \`infrastructure/opentofu/azure/README.md\` to build the generated backend in ACR and apply its image.
286
+ `;
287
+ }
288
+ export function renderRootReadme(plan) {
289
+ if (plan.workload === 'standard') {
290
+ return `# ${plan.projectName}
291
+
292
+ Generated by Mission Control Liftoff.
293
+
294
+ ## Stack
295
+
296
+ - Project type: Standard application
297
+ - API: ${plan.apiStack.label}
298
+ - Database tooling: ${plan.apiStack.databaseTooling}
299
+ - API reference: Scalar with OpenAPI
300
+ - Cloud: ${plan.provider.label} (${plan.region.slug})
301
+ - Infrastructure: OpenTofu
302
+ - Database: PostgreSQL
303
+ - Cache and local messaging: Redis
304
+ - Local development: Docker Compose
305
+ ${plan.includeFrontend ? '- Frontend: Vue 3 with Tailwind\n' : ''}
306
+ ${renderDeterministicSetupGuide(plan)}
307
+ ## Local Development
308
+
309
+ \`\`\`bash
310
+ docker compose up --build
311
+ \`\`\`
312
+
313
+ The backend API is available on port 8000. Health and readiness endpoints are available at \`/health\` and \`/ready\`; Scalar is exposed at \`/scalar\`.
314
+
315
+ ${renderGeneratedConfigurationGuide(plan)}
316
+ ${renderDirectBuildAndTestGuide(plan)}
317
+ ${renderGeneratedUpdateGuide(plan)}
318
+ ${renderRootInfrastructureGuide(plan)}
319
+ ${renderSpecWorkflowGuide(plan)}
320
+ `;
321
+ }
322
+ const pattern = genAiPattern(plan);
323
+ const functionsStackLine = hasFunctionWorker(plan) ? `- Azure Functions worker: Python v2 Service Bus trigger under \`functions/${functionWorkerName(plan)}\`
324
+ ` : '';
325
+ const functionsSection = hasFunctionWorker(plan) ? `
326
+ ## Azure Functions Worker
327
+
328
+ Azure Functions trigger adapters live under \`functions/${functionWorkerName(plan)}\`. Keep reusable GenAI orchestration under \`backend/orchestration\`; \`backend/workers\` remains the place for backend-adjacent or containerized worker code.
329
+ ` : '';
330
+ const genericSection = pattern.id === 'generic' ? `
331
+ ## Choosing A Specialization Later
332
+
333
+ This project intentionally starts with a neutral text-in/result-out GenAI boundary. It does not assume RAG, conversation history, agent tools, streaming, fine-tuning, multi-agent coordination, or workflow orchestration.
334
+
335
+ Generated application files are project-owned. When requirements become clear, specialize through a reviewed project change; \`liftoff update\` and \`--force\` do not convert this project to another GenAI pattern.
336
+ ` : '';
337
+ return `# ${plan.projectName}
338
+
339
+ Generated by Mission Control Liftoff.
340
+
341
+ ## Stack
342
+
343
+ - Backend: FastAPI, PydanticAI, Pydantic settings, Scalar
344
+ - Pattern: ${pattern.label}
345
+ - Starter maturity: ${pattern.scaffoldStatus}
346
+ - Generated capability: ${pattern.description}
347
+ - Cloud: ${plan.provider.label} (${plan.region.slug})
348
+ - Infrastructure: OpenTofu
349
+ - Database: PostgreSQL with Alembic migrations${pattern.id === 'rag' ? ' and a pgvector storage foundation (retrieval is not implemented)' : ''}
350
+ - Cache and local messaging: Redis
351
+ - Observability: Langfuse
352
+ - Local development: Docker Compose
353
+ ${functionsStackLine}
354
+ ${plan.includeFrontend ? '- Frontend: Vue 3 with Tailwind\n' : ''}
355
+ ## Starter Capability Limits
356
+
357
+ This release provides model invocation, injectable messaging publishers, and optional tracing.
358
+ Pattern names identify extension points, not implemented specialization. Retrieval/citations,
359
+ conversation history, tools, prompt-file loading, multi-agent coordination, fine-tuning,
360
+ workflow stages, and incremental streaming remain project work. The streaming pattern
361
+ emits one buffered SSE result after model completion; it is not real-time token streaming.
362
+
363
+ ${renderDeterministicSetupGuide(plan)}
364
+ ## Local Development
365
+
366
+ \`\`\`bash
367
+ docker compose up --build
368
+ docker compose --profile observability up --build
369
+ \`\`\`
370
+
371
+ The backend API is available on port 8000. Scalar is exposed at \`/scalar\`.
372
+
373
+ ${renderGeneratedConfigurationGuide(plan)}
374
+ ${renderDirectBuildAndTestGuide(plan)}
375
+ ${renderGeneratedUpdateGuide(plan)}
376
+ ${renderRootInfrastructureGuide(plan)}
377
+ ${renderSpecWorkflowGuide(plan)}
378
+ ${functionsSection}
379
+ ${genericSection}
380
+ `;
381
+ }
382
+ export function renderGeneratedGitignore() {
383
+ return `.venv/
384
+ __pycache__/
385
+ .pytest_cache/
386
+ node_modules/
387
+ dist/
388
+ .env
389
+ runtime.config.json
390
+ migration/legacy/
391
+ *.tfstate
392
+ *.tfstate.*
393
+ .terraform/
394
+ `;
395
+ }
396
+ export function renderEnvExample(plan) {
397
+ if (plan.workload === 'standard') {
398
+ return renderStandardEnv(plan);
399
+ }
400
+ const pattern = genAiPattern(plan);
401
+ return `APP_ENV=dev
402
+ APP_NAME=${plan.safeProjectName}
403
+ GENAI_PATTERN=${pattern.id}
404
+ CLOUD_PROVIDER=${plan.provider.id}
405
+ AZURE_REGION=${plan.region.slug}
406
+ DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${plan.safeProjectName.replace(/-/g, '_')}
407
+ REDIS_URL=redis://redis:6379/0
408
+ REDIS_STREAM_NAME=liftoff-events
409
+ MESSAGING_TRANSPORT=redis-streams
410
+ SERVICE_BUS_QUEUE_NAME=${DEFAULT_FUNCTION_WORKER_QUEUE_NAME}
411
+ SERVICE_BUS_AUTH_MODE=managed-identity
412
+ SERVICE_BUS_CONNECTION_STRING=
413
+ SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE=
414
+ AZURE_CLIENT_ID=
415
+ BLOB_ENDPOINT=http://azurite:10000/devstoreaccount1
416
+ CORS_ALLOWED_ORIGINS=http://localhost:5173
417
+ PYDANTIC_AI_MODEL=
418
+ OPENAI_API_KEY=
419
+ OPENAI_BASE_URL=https://api.openai.com/v1
420
+ LANGFUSE_HOST=http://langfuse:3000
421
+ LANGFUSE_PUBLIC_KEY=
422
+ LANGFUSE_SECRET_KEY=
423
+ `;
424
+ }
425
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/generators/common/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AACjE,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;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAG7E,MAAM,UAAU,gBAAgB,CAC9B,GAAgB,EAChB,eAA4B,EAC5B,IAAoB,EAAE,OAAyB;IAE/C,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAC,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7E,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACnF,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QACxB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QACpE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;KAC7C,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACb,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC;SACzE,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC;SACvC,UAAU,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SAClD,UAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAClD,UAAU,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACxD,GAAG,CACD,oBAAoB,EACpB,SAAS,EACT,CAAC,YAAY,CAAC,EACd,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CACvG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,IAAI,eAAuB,CAAC;IAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,EAAE,CAAC;QACP,eAAe,GAAG,kDAAkD,MAAM;2DACnB,CAAC;IAC1D,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;QAC/C,eAAe,GAAG;;;SAGb,CAAC;IACR,CAAC;SAAM,CAAC;QACN,eAAe,GAAG;;cAER,CAAC;IACb,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;;;;;;;;;CAUjD,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;;gBAKlE,kBAAkB,CAAC,IAAI,CAAC;;CAEvC,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,OAAO;;;;;EAKP,eAAe;;;EAGf,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;QAChF,CAAC,CAAC,8DAA8D;QAChE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;YACnC,CAAC,CAAC,+DAA+D;YACjE,CAAC,CAAC,iCAAiC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe;QACnC,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,mEAAmE,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACrD,CAAC,CAAC,+IAA+I;QACjJ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;YACnC,CAAC,CAAC,yMAAyM;YAC3M,CAAC,CAAC,4QAA4Q,CAAC;IACnR,OAAO;;EAEP,UAAU;;;;;mBAKO,OAAO;EACxB,QAAQ;;;EAGR,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,uDAAuD,EAAE,2DAA2D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAChK,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,2GAA2G;;;;;;;CAOnL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAoB;IAC/D,MAAM,QAAQ,GAA+B;QAC3C,QAAQ;QACR,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,6BAA6B,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,UAAU,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE;SAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,EAAE,KAAK,QAAQ;YAC5B,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,EAAE,KAAK,WAAW;gBAClB,CAAC,CAAC,qEAAqE;gBACvE,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,KAAK,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;QACnD,CAAC,CAAC,mFAAmF;QACrF,CAAC,CAAC,+FAA+F,CAAC;IACpG,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;QACzD,CAAC,CAAC;YACE,uBAAuB,iBAAiB,eAAe,kBAAkB,gBAAgB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5H,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,gBAAgB,CAAC;gBAC5D,CAAC,CAAC,CAAC,kGAAkG,CAAC;gBACtG,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,IAAI,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;cAEK,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;sBACzC,MAAM;EAC1B,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,EAAE;uDACQ,SAAS;;;;;EAK9D,4BAA4B,CAAC,IAAI,CAAC;;;;;;;;;;CAUnC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAoB;IACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe;QAChD,CAAC,CAAC,wGAAwG;QAC1G,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB;QACtF,CAAC,CAAC,qFAAqF;QACvF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc;YACnC,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,kCAAkC,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,gBAAgB,CAAC;IAClF,MAAM,QAAQ,GAAG,sDAAsD,EAAE,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,EAAE;EACzK,EAAE;QACF,CAAC,CAAC,kJAAkJ;QACpJ,CAAC,CAAC,mHAAmH;+HACQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;;EAEnJ,EAAE;QACF,CAAC,CAAC,oFAAoF;QACtF,CAAC,CAAC,2KAA2K;EAC7K,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,4JAA4J,CAAC,CAAC,CAAC,EAAE;;;;;EAKvO,EAAE,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,EAAE;EAChE,aAAa;;;EAGb,MAAM,CAAC,CAAC,CAAC,yHAAyH,CAAC,CAAC,CAAC,EAAE;mHACtB,qBAAqB,CAAC,IAAI,CAAC;;;CAG7I,CAAC;IACA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO;;EAET,QAAQ;uOAC6N,qBAAqB;CAC3P,CAAC;IACA,CAAC;IACD,OAAO;;EAEP,QAAQ;;;;;;;sMAO4L,qBAAqB;;CAE1N,CAAC;AACF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAiB;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACrD,CAAC,CAAC,mLAAmL;QACrL,CAAC,CAAC,+RAA+R,CAAC;IACpS,OAAO;;;;EAIP,UAAU;;;;;;;;;;;;;;EAcV,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACpC,CAAC,CAAC,wFAAwF;QAC1F,CAAC,CAAC,+BAA+B,EAAE;CACpC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAoB;IAChE,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACzD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;;;;;;;CAOL,CAAC;IACA,OAAO;;EAEP,cAAc;gDACgC,WAAW;;sBAErC,WAAW;uBACV,WAAW;;;;CAIjC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,IAAI,CAAC,WAAW;;;;;;;SAOvB,IAAI,CAAC,QAAQ,CAAC,KAAK;sBACN,IAAI,CAAC,QAAQ,CAAC,eAAe;;WAExC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;;;;;EAKjD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;EAC/D,6BAA6B,CAAC,IAAI,CAAC;;;;;;;;;EASnC,iCAAiC,CAAC,IAAI,CAAC;EACvC,6BAA6B,CAAC,IAAI,CAAC;EACnC,0BAA0B,CAAC,IAAI,CAAC;EAChC,6BAA6B,CAAC,IAAI,CAAC;EACnC,uBAAuB,CAAC,IAAI,CAAC;CAC9B,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,6EAA6E,kBAAkB,CAAC,IAAI,CAAC;CAC3J,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;0DAGK,kBAAkB,CAAC,IAAI,CAAC;CACjF,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,cAAc,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC;;;;;;CAMnD,CAAC,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,KAAK,IAAI,CAAC,WAAW;;;;;;;aAOjB,OAAO,CAAC,KAAK;sBACJ,OAAO,CAAC,cAAc;0BAClB,OAAO,CAAC,WAAW;WAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;;gDAEH,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE;;;;EAI7I,kBAAkB;EAClB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;EAS/D,6BAA6B,CAAC,IAAI,CAAC;;;;;;;;;;EAUnC,iCAAiC,CAAC,IAAI,CAAC;EACvC,6BAA6B,CAAC,IAAI,CAAC;EACnC,0BAA0B,CAAC,IAAI,CAAC;EAChC,6BAA6B,CAAC,IAAI,CAAC;EACnC,uBAAuB,CAAC,IAAI,CAAC;EAC7B,gBAAgB;EAChB,cAAc;CACf,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;CAWR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO;WACE,IAAI,CAAC,eAAe;gBACf,OAAO,CAAC,EAAE;iBACT,IAAI,CAAC,QAAQ,CAAC,EAAE;eAClB,IAAI,CAAC,MAAM,CAAC,IAAI;oEACqC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;;;yBAIlF,kCAAkC;;;;;;;;;;;;;CAa1D,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function renderPythonDotenvValidation(): string;
2
+ export declare function renderNodeDotenvValidation(): string;
@@ -0,0 +1,80 @@
1
+ export function renderPythonDotenvValidation() {
2
+ return `def _validate_dotenv(text: str) -> None:
3
+ position = 0
4
+ length = len(text)
5
+
6
+ def invalid(offset: int) -> None:
7
+ line = text[:offset].count("\\n") + 1
8
+ raise RuntimeError(f"Malformed runtime configuration at line {line}: expected KEY=value with balanced quotes.")
9
+
10
+ if "\\0" in text:
11
+ invalid(text.index("\\0"))
12
+ while position < length:
13
+ while position < length and text[position] in " \\t\\r\\n":
14
+ position += 1
15
+ if position == length:
16
+ break
17
+ start = position
18
+ if text[position] == "#":
19
+ while position < length and text[position] not in "\\r\\n":
20
+ position += 1
21
+ continue
22
+ assignment = re.match(r"(?:export[ \\t]+)?[A-Za-z_][A-Za-z0-9_]*[ \\t]*=", text[position:])
23
+ if assignment is None:
24
+ invalid(start)
25
+ position += assignment.end()
26
+ while position < length and text[position] in " \\t":
27
+ position += 1
28
+ if position < length and text[position] in "\\"'":
29
+ quote = text[position]
30
+ position += 1
31
+ while position < length and text[position] != quote:
32
+ position += 2 if text[position] == "\\\\" else 1
33
+ if position >= length:
34
+ invalid(start)
35
+ position += 1
36
+ while position < length and text[position] in " \\t":
37
+ position += 1
38
+ if position < length and text[position] not in "#\\r\\n":
39
+ invalid(start)
40
+ while position < length and text[position] not in "\\r\\n":
41
+ position += 1
42
+ `;
43
+ }
44
+ export function renderNodeDotenvValidation() {
45
+ return `function validateDotenv(text: string): void {
46
+ let position = 0;
47
+ const invalid = (offset: number): never => {
48
+ const line = text.slice(0, offset).split('\\n').length;
49
+ throw new Error('Malformed runtime configuration at line ' + line + ': expected KEY=value with balanced quotes.');
50
+ };
51
+ if (text.includes('\\0')) invalid(text.indexOf('\\0'));
52
+ while (position < text.length) {
53
+ while (position < text.length && ' \\t\\r\\n'.includes(text[position])) position++;
54
+ if (position === text.length) break;
55
+ const start = position;
56
+ if (text[position] === '#') {
57
+ while (position < text.length && !'\\r\\n'.includes(text[position])) position++;
58
+ continue;
59
+ }
60
+ const assignment = /^(?:export[ \\t]+)?[A-Za-z_][A-Za-z0-9_]*[ \\t]*=/.exec(text.slice(position));
61
+ if (!assignment) invalid(start);
62
+ position += assignment![0].length;
63
+ while (position < text.length && ' \\t'.includes(text[position])) position++;
64
+ if (position < text.length && (text[position] === '"' || text[position] === "'")) {
65
+ const quote = text[position++];
66
+ while (position < text.length && text[position] !== quote) {
67
+ if (text[position] === '\\\\' && text[position + 1] === quote) invalid(start);
68
+ position += text[position] === '\\\\' ? 2 : 1;
69
+ }
70
+ if (position >= text.length) invalid(start);
71
+ position++;
72
+ while (position < text.length && ' \\t'.includes(text[position])) position++;
73
+ if (position < text.length && !'#\\r\\n'.includes(text[position])) invalid(start);
74
+ }
75
+ while (position < text.length && !'\\r\\n'.includes(text[position])) position++;
76
+ }
77
+ }
78
+ `;
79
+ }
80
+ //# sourceMappingURL=dotenv-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dotenv-validation.js","sourceRoot":"","sources":["../../../src/generators/common/dotenv-validation.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCR,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ApiProjectPlan } from '../../domain/project/contracts.js';
2
+ import type { GeneratedArtifact } from '../../domain/project/contracts.js';
3
+ export declare function addEnvironmentArtifacts(artifacts: GeneratedArtifact[], plan: ApiProjectPlan): void;
@@ -0,0 +1,15 @@
1
+ import { createArtifactAdder } from './artifacts.js';
2
+ import { hasFunctionWorker } from './values.js';
3
+ import { renderBackendEnv } from '../genai/configuration.js';
4
+ import { renderFunctionsEnv } from '../genai/configuration.js';
5
+ import { renderStandardEnv } from '../standard/configuration.js';
6
+ export function addEnvironmentArtifacts(artifacts, plan) {
7
+ for (const environment of plan.environments) {
8
+ const add = createArtifactAdder(artifacts, 'project', `environment:${environment.id}`);
9
+ add(`environment-${environment.id}-backend`, 'environment', ['environments', environment.id, 'backend.env'], plan.workload === 'genai' ? renderBackendEnv(plan, environment.id) : renderStandardEnv(plan, environment.id));
10
+ if (plan.workload === 'genai' && hasFunctionWorker(plan)) {
11
+ add(`environment-${environment.id}-functions`, 'environment', ['environments', environment.id, 'functions.env'], renderFunctionsEnv(plan, environment.id));
12
+ }
13
+ }
14
+ }
15
+ //# sourceMappingURL=environments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environments.js","sourceRoot":"","sources":["../../../src/generators/common/environments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,UAAU,uBAAuB,CACrC,SAA8B,EAC9B,IAAoB;IAEpB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,mBAAmB,CAC7B,SAAS,EACT,SAAS,EACT,eAAe,WAAW,CAAC,EAAE,EAAE,CAChC,CAAC;QACF,GAAG,CACD,eAAe,WAAW,CAAC,EAAE,UAAU,EACvC,aAAa,EACb,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,EAC/C,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAC7G,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,eAAe,WAAW,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7J,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { GeneratorContext as ResolvedGeneratorContext } from '../context.js';
2
+ type GeneratorContext = Pick<ResolvedGeneratorContext, 'stack'> & {
3
+ npm: Pick<ResolvedGeneratorContext['npm'], 'frontend'>;
4
+ };
5
+ import type { AddArtifact } from '../../template-types.js';
6
+ import type { ApiProjectPlan } from '../../domain/project/contracts.js';
7
+ export declare function addFrontendArtifacts(add: AddArtifact, plan: ApiProjectPlan, context: GeneratorContext): void;
8
+ export declare function renderFrontendPackage(plan: ApiProjectPlan, context: GeneratorContext): string;
9
+ export declare function renderFrontendIndex(plan: ApiProjectPlan): string;
10
+ export declare function renderFrontendMain(): string;
11
+ export declare function renderFrontendApp(plan: ApiProjectPlan): string;
12
+ export declare function renderFrontendStyles(): string;
13
+ export declare function renderFrontendViteConfig(): string;
14
+ export declare function renderFrontendTailwindConfig(): string;
15
+ export {};