@msn-control/liftoff 0.10.4 → 0.11.1

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 (643) hide show
  1. package/DEVELOPER.md +220 -77
  2. package/README.md +28 -28
  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 +23 -0
  32. package/dist/adapters/filesystem/project-transaction.js +158 -0
  33. package/dist/adapters/filesystem/project-transaction.js.map +1 -0
  34. package/dist/adapters/git/governance-assessment.d.ts +22 -0
  35. package/dist/adapters/git/governance-assessment.js +161 -0
  36. package/dist/adapters/git/governance-assessment.js.map +1 -0
  37. package/dist/adapters/github/governance-assessment.d.ts +2 -0
  38. package/dist/adapters/github/governance-assessment.js +18 -0
  39. package/dist/adapters/github/governance-assessment.js.map +1 -0
  40. package/dist/adapters/packaged-assets/package-root.d.ts +3 -0
  41. package/dist/adapters/packaged-assets/package-root.js +21 -0
  42. package/dist/adapters/packaged-assets/package-root.js.map +1 -0
  43. package/dist/adapters/packaged-assets/supported-stack.d.ts +4 -0
  44. package/dist/adapters/packaged-assets/supported-stack.js +18 -0
  45. package/dist/adapters/packaged-assets/supported-stack.js.map +1 -0
  46. package/dist/adapters/packaged-assets/template-assets.d.ts +23 -0
  47. package/dist/adapters/packaged-assets/template-assets.js +36 -0
  48. package/dist/adapters/packaged-assets/template-assets.js.map +1 -0
  49. package/dist/adapters/process/shell-command.d.ts +5 -0
  50. package/dist/adapters/process/shell-command.js +21 -0
  51. package/dist/adapters/process/shell-command.js.map +1 -0
  52. package/dist/application/context.d.ts +20 -0
  53. package/dist/application/context.js +2 -0
  54. package/dist/application/context.js.map +1 -0
  55. package/dist/application/diagnose/doctor.d.ts +21 -0
  56. package/dist/application/diagnose/doctor.js +586 -0
  57. package/dist/application/diagnose/doctor.js.map +1 -0
  58. package/dist/application/diagnose/generated-project.d.ts +1 -0
  59. package/dist/application/diagnose/generated-project.js +105 -0
  60. package/dist/application/diagnose/generated-project.js.map +1 -0
  61. package/dist/application/diagnose/validate.d.ts +6 -0
  62. package/dist/application/diagnose/validate.js +27 -0
  63. package/dist/application/diagnose/validate.js.map +1 -0
  64. package/dist/application/initialize/fixture.d.ts +2 -0
  65. package/dist/application/initialize/fixture.js +39 -0
  66. package/dist/application/initialize/fixture.js.map +1 -0
  67. package/dist/application/initialize/inputs.d.ts +3 -0
  68. package/dist/application/initialize/inputs.js +35 -0
  69. package/dist/application/initialize/inputs.js.map +1 -0
  70. package/dist/application/initialize/use-case.d.ts +23 -0
  71. package/dist/application/initialize/use-case.js +360 -0
  72. package/dist/application/initialize/use-case.js.map +1 -0
  73. package/dist/application/migrate/use-case.d.ts +7 -0
  74. package/dist/application/migrate/use-case.js +378 -0
  75. package/dist/application/migrate/use-case.js.map +1 -0
  76. package/dist/application/project/catalog.d.ts +46 -0
  77. package/dist/application/project/catalog.js +12 -0
  78. package/dist/application/project/catalog.js.map +1 -0
  79. package/dist/application/project/manifest.d.ts +2 -0
  80. package/dist/application/project/manifest.js +29 -0
  81. package/dist/application/project/manifest.js.map +1 -0
  82. package/dist/application/project/planning.d.ts +6 -0
  83. package/dist/application/project/planning.js +12 -0
  84. package/dist/application/project/planning.js.map +1 -0
  85. package/dist/application/update/planning.d.ts +40 -0
  86. package/dist/application/update/planning.js +293 -0
  87. package/dist/application/update/planning.js.map +1 -0
  88. package/dist/application/update/reporting.d.ts +42 -0
  89. package/dist/application/update/reporting.js +325 -0
  90. package/dist/application/update/reporting.js.map +1 -0
  91. package/dist/application/update/use-case.d.ts +8 -0
  92. package/dist/application/update/use-case.js +600 -0
  93. package/dist/application/update/use-case.js.map +1 -0
  94. package/dist/application/upgrade/use-case.d.ts +6 -0
  95. package/dist/application/upgrade/use-case.js +82 -0
  96. package/dist/application/upgrade/use-case.js.map +1 -0
  97. package/dist/args.d.ts +5 -65
  98. package/dist/args.js +4 -472
  99. package/dist/args.js.map +1 -1
  100. package/dist/artifact-lifecycle.d.ts +1 -21
  101. package/dist/artifact-lifecycle.js +1 -75
  102. package/dist/artifact-lifecycle.js.map +1 -1
  103. package/dist/catalogs.d.ts +1 -50
  104. package/dist/catalogs.js +1 -472
  105. package/dist/catalogs.js.map +1 -1
  106. package/dist/cli/args/contracts.d.ts +51 -0
  107. package/dist/cli/args/contracts.js +2 -0
  108. package/dist/cli/args/contracts.js.map +1 -0
  109. package/dist/cli/args/definitions.d.ts +6 -0
  110. package/dist/cli/args/definitions.js +187 -0
  111. package/dist/cli/args/definitions.js.map +1 -0
  112. package/dist/cli/args/help.d.ts +5 -0
  113. package/dist/cli/args/help.js +130 -0
  114. package/dist/cli/args/help.js.map +1 -0
  115. package/dist/cli/args/parser.d.ts +5 -0
  116. package/dist/cli/args/parser.js +145 -0
  117. package/dist/cli/args/parser.js.map +1 -0
  118. package/dist/cli/args/readers.d.ts +4 -0
  119. package/dist/cli/args/readers.js +19 -0
  120. package/dist/cli/args/readers.js.map +1 -0
  121. package/dist/cli/commands/diagnose.d.ts +4 -0
  122. package/dist/cli/commands/diagnose.js +12 -0
  123. package/dist/cli/commands/diagnose.js.map +1 -0
  124. package/dist/cli/commands/dispatch.d.ts +3 -0
  125. package/dist/cli/commands/dispatch.js +94 -0
  126. package/dist/cli/commands/dispatch.js.map +1 -0
  127. package/dist/cli/commands/help.d.ts +3 -0
  128. package/dist/cli/commands/help.js +32 -0
  129. package/dist/cli/commands/help.js.map +1 -0
  130. package/dist/cli/commands/helpers.d.ts +8 -0
  131. package/dist/cli/commands/helpers.js +97 -0
  132. package/dist/cli/commands/helpers.js.map +1 -0
  133. package/dist/cli/commands/initialize.d.ts +3 -0
  134. package/dist/cli/commands/initialize.js +7 -0
  135. package/dist/cli/commands/initialize.js.map +1 -0
  136. package/dist/cli/commands/migrate.d.ts +3 -0
  137. package/dist/cli/commands/migrate.js +8 -0
  138. package/dist/cli/commands/migrate.js.map +1 -0
  139. package/dist/cli/commands/plan.d.ts +3 -0
  140. package/dist/cli/commands/plan.js +34 -0
  141. package/dist/cli/commands/plan.js.map +1 -0
  142. package/dist/cli/commands/reference.d.ts +5 -0
  143. package/dist/cli/commands/reference.js +43 -0
  144. package/dist/cli/commands/reference.js.map +1 -0
  145. package/dist/cli/commands/update.d.ts +3 -0
  146. package/dist/cli/commands/update.js +9 -0
  147. package/dist/cli/commands/update.js.map +1 -0
  148. package/dist/cli/commands/upgrade.d.ts +3 -0
  149. package/dist/cli/commands/upgrade.js +7 -0
  150. package/dist/cli/commands/upgrade.js.map +1 -0
  151. package/dist/cli/context.d.ts +1 -0
  152. package/dist/cli/context.js +2 -0
  153. package/dist/cli/context.js.map +1 -0
  154. package/dist/cli/project-options.d.ts +3 -0
  155. package/dist/cli/project-options.js +41 -0
  156. package/dist/cli/project-options.js.map +1 -0
  157. package/dist/cli.d.ts +3 -3
  158. package/dist/cli.js +2 -2
  159. package/dist/cli.js.map +1 -1
  160. package/dist/commands.d.ts +4 -35
  161. package/dist/commands.js +3 -2969
  162. package/dist/commands.js.map +1 -1
  163. package/dist/container-validation.d.ts +1 -1
  164. package/dist/domain/governance/activation/approvals.d.ts +351 -0
  165. package/dist/domain/governance/activation/approvals.js +528 -0
  166. package/dist/domain/governance/activation/approvals.js.map +1 -0
  167. package/dist/domain/governance/activation/canonical-json.d.ts +4 -0
  168. package/dist/domain/governance/activation/canonical-json.js +39 -0
  169. package/dist/domain/governance/activation/canonical-json.js.map +1 -0
  170. package/dist/domain/governance/activation/capabilities.d.ts +7 -0
  171. package/dist/domain/governance/activation/capabilities.js +33 -0
  172. package/dist/domain/governance/activation/capabilities.js.map +1 -0
  173. package/dist/domain/governance/activation/evidence.d.ts +63 -0
  174. package/dist/domain/governance/activation/evidence.js +444 -0
  175. package/dist/domain/governance/activation/evidence.js.map +1 -0
  176. package/dist/domain/governance/activation/graph.d.ts +397 -0
  177. package/dist/domain/governance/activation/graph.js +441 -0
  178. package/dist/domain/governance/activation/graph.js.map +1 -0
  179. package/dist/domain/governance/activation/inputs.d.ts +25 -0
  180. package/dist/domain/governance/activation/inputs.js +63 -0
  181. package/dist/domain/governance/activation/inputs.js.map +1 -0
  182. package/dist/domain/governance/activation/operations.d.ts +19 -0
  183. package/dist/domain/governance/activation/operations.js +181 -0
  184. package/dist/domain/governance/activation/operations.js.map +1 -0
  185. package/dist/domain/governance/activation/readiness.d.ts +27 -0
  186. package/dist/domain/governance/activation/readiness.js +269 -0
  187. package/dist/domain/governance/activation/readiness.js.map +1 -0
  188. package/dist/domain/governance/activation/types.d.ts +399 -0
  189. package/dist/domain/governance/activation/types.js +109 -0
  190. package/dist/domain/governance/activation/types.js.map +1 -0
  191. package/dist/domain/governance/activation/validators.d.ts +22 -0
  192. package/dist/domain/governance/activation/validators.js +1347 -0
  193. package/dist/domain/governance/activation/validators.js.map +1 -0
  194. package/dist/domain/governance/assessment/catalog.d.ts +14 -0
  195. package/dist/domain/governance/assessment/catalog.js +105 -0
  196. package/dist/domain/governance/assessment/catalog.js.map +1 -0
  197. package/dist/domain/governance/assessment/errors.d.ts +10 -0
  198. package/dist/domain/governance/assessment/errors.js +22 -0
  199. package/dist/domain/governance/assessment/errors.js.map +1 -0
  200. package/dist/domain/governance/assessment/index.d.ts +8 -0
  201. package/dist/domain/governance/assessment/index.js +9 -0
  202. package/dist/domain/governance/assessment/index.js.map +1 -0
  203. package/dist/domain/governance/assessment/live-normalize.d.ts +19 -0
  204. package/dist/domain/governance/assessment/live-normalize.js +403 -0
  205. package/dist/domain/governance/assessment/live-normalize.js.map +1 -0
  206. package/dist/domain/governance/assessment/predicates.d.ts +36 -0
  207. package/dist/domain/governance/assessment/predicates.js +545 -0
  208. package/dist/domain/governance/assessment/predicates.js.map +1 -0
  209. package/dist/domain/governance/assessment/report.d.ts +23 -0
  210. package/dist/domain/governance/assessment/report.js +266 -0
  211. package/dist/domain/governance/assessment/report.js.map +1 -0
  212. package/dist/domain/governance/assessment/sanitize.d.ts +8 -0
  213. package/dist/domain/governance/assessment/sanitize.js +60 -0
  214. package/dist/domain/governance/assessment/sanitize.js.map +1 -0
  215. package/dist/domain/governance/assessment/types.d.ts +174 -0
  216. package/dist/domain/governance/assessment/types.js +13 -0
  217. package/dist/domain/governance/assessment/types.js.map +1 -0
  218. package/dist/domain/governance/assessment/yaml.d.ts +6 -0
  219. package/dist/domain/governance/assessment/yaml.js +30 -0
  220. package/dist/domain/governance/assessment/yaml.js.map +1 -0
  221. package/dist/domain/governance/policy/identity.d.ts +64 -0
  222. package/dist/domain/governance/policy/identity.js +112 -0
  223. package/dist/domain/governance/policy/identity.js.map +1 -0
  224. package/dist/domain/migration/dependencies.d.ts +7 -0
  225. package/dist/domain/migration/dependencies.js +221 -0
  226. package/dist/domain/migration/dependencies.js.map +1 -0
  227. package/dist/domain/migration/inventory.d.ts +3 -0
  228. package/dist/domain/migration/inventory.js +15 -0
  229. package/dist/domain/migration/inventory.js.map +1 -0
  230. package/dist/domain/project/artifact-lifecycle.d.ts +69 -0
  231. package/dist/domain/project/artifact-lifecycle.js +137 -0
  232. package/dist/domain/project/artifact-lifecycle.js.map +1 -0
  233. package/dist/domain/project/catalog.d.ts +48 -0
  234. package/dist/domain/project/catalog.js +507 -0
  235. package/dist/domain/project/catalog.js.map +1 -0
  236. package/dist/domain/project/contracts.d.ts +247 -0
  237. package/dist/domain/project/contracts.js +2 -0
  238. package/dist/domain/project/contracts.js.map +1 -0
  239. package/dist/domain/project/errors.d.ts +3 -0
  240. package/dist/domain/project/errors.js +7 -0
  241. package/dist/domain/project/errors.js.map +1 -0
  242. package/dist/domain/project/infrastructure-layout.d.ts +26 -0
  243. package/dist/domain/project/infrastructure-layout.js +124 -0
  244. package/dist/domain/project/infrastructure-layout.js.map +1 -0
  245. package/dist/domain/project/inputs.d.ts +21 -0
  246. package/dist/domain/project/inputs.js +41 -0
  247. package/dist/domain/project/inputs.js.map +1 -0
  248. package/dist/domain/project/manifest/artifacts.d.ts +8 -0
  249. package/dist/domain/project/manifest/artifacts.js +150 -0
  250. package/dist/domain/project/manifest/artifacts.js.map +1 -0
  251. package/dist/domain/project/manifest/context.d.ts +13 -0
  252. package/dist/domain/project/manifest/context.js +2 -0
  253. package/dist/domain/project/manifest/context.js.map +1 -0
  254. package/dist/domain/project/manifest/fields.d.ts +6 -0
  255. package/dist/domain/project/manifest/fields.js +36 -0
  256. package/dist/domain/project/manifest/fields.js.map +1 -0
  257. package/dist/domain/project/manifest/governance.d.ts +8 -0
  258. package/dist/domain/project/manifest/governance.js +161 -0
  259. package/dist/domain/project/manifest/governance.js.map +1 -0
  260. package/dist/domain/project/manifest/project-identity.d.ts +6 -0
  261. package/dist/domain/project/manifest/project-identity.js +273 -0
  262. package/dist/domain/project/manifest/project-identity.js.map +1 -0
  263. package/dist/domain/project/manifest/reader.d.ts +9 -0
  264. package/dist/domain/project/manifest/reader.js +141 -0
  265. package/dist/domain/project/manifest/reader.js.map +1 -0
  266. package/dist/domain/project/paths.d.ts +2 -0
  267. package/dist/domain/project/paths.js +29 -0
  268. package/dist/domain/project/paths.js.map +1 -0
  269. package/dist/domain/project/planning.d.ts +19 -0
  270. package/dist/domain/project/planning.js +329 -0
  271. package/dist/domain/project/planning.js.map +1 -0
  272. package/dist/domain/project/retired-workload.d.ts +4 -0
  273. package/dist/domain/project/retired-workload.js +18 -0
  274. package/dist/domain/project/retired-workload.js.map +1 -0
  275. package/dist/domain/project/supported-stack.d.ts +113 -0
  276. package/dist/domain/project/supported-stack.js +426 -0
  277. package/dist/domain/project/supported-stack.js.map +1 -0
  278. package/dist/domain/workstation/constraints.d.ts +6 -0
  279. package/dist/domain/workstation/constraints.js +8 -0
  280. package/dist/domain/workstation/constraints.js.map +1 -0
  281. package/dist/file-system.d.ts +10 -44
  282. package/dist/file-system.js +9 -1245
  283. package/dist/file-system.js.map +1 -1
  284. package/dist/framework-adapters.d.ts +1 -1
  285. package/dist/framework-validation.d.ts +1 -1
  286. package/dist/framework-validation.js +1 -1
  287. package/dist/framework-validation.js.map +1 -1
  288. package/dist/genai-templates.d.ts +2 -9
  289. package/dist/genai-templates.js +4 -5
  290. package/dist/genai-templates.js.map +1 -1
  291. package/dist/generators/common/artifacts.d.ts +6 -0
  292. package/dist/generators/common/artifacts.js +30 -0
  293. package/dist/generators/common/artifacts.js.map +1 -0
  294. package/dist/generators/common/base.d.ts +17 -0
  295. package/dist/generators/common/base.js +421 -0
  296. package/dist/generators/common/base.js.map +1 -0
  297. package/dist/generators/common/dotenv-validation.d.ts +2 -0
  298. package/dist/generators/common/dotenv-validation.js +80 -0
  299. package/dist/generators/common/dotenv-validation.js.map +1 -0
  300. package/dist/generators/common/environments.d.ts +3 -0
  301. package/dist/generators/common/environments.js +15 -0
  302. package/dist/generators/common/environments.js.map +1 -0
  303. package/dist/generators/common/frontend.d.ts +15 -0
  304. package/dist/generators/common/frontend.js +166 -0
  305. package/dist/generators/common/frontend.js.map +1 -0
  306. package/dist/generators/common/python-settings.d.ts +2 -0
  307. package/dist/generators/common/python-settings.js +70 -0
  308. package/dist/generators/common/python-settings.js.map +1 -0
  309. package/dist/generators/common/spec-workflow.d.ts +28 -0
  310. package/dist/generators/common/spec-workflow.js +567 -0
  311. package/dist/generators/common/spec-workflow.js.map +1 -0
  312. package/dist/generators/common/values.d.ts +13 -0
  313. package/dist/generators/common/values.js +16 -0
  314. package/dist/generators/common/values.js.map +1 -0
  315. package/dist/generators/containers/compose.d.ts +7 -0
  316. package/dist/generators/containers/compose.js +196 -0
  317. package/dist/generators/containers/compose.js.map +1 -0
  318. package/dist/generators/containers/context.d.ts +1 -0
  319. package/dist/generators/containers/context.js +43 -0
  320. package/dist/generators/containers/context.js.map +1 -0
  321. package/dist/generators/containers/images.d.ts +7 -0
  322. package/dist/generators/containers/images.js +119 -0
  323. package/dist/generators/containers/images.js.map +1 -0
  324. package/dist/generators/context.d.ts +42 -0
  325. package/dist/generators/context.js +38 -0
  326. package/dist/generators/context.js.map +1 -0
  327. package/dist/generators/genai/backend.d.ts +20 -0
  328. package/dist/generators/genai/backend.js +667 -0
  329. package/dist/generators/genai/backend.js.map +1 -0
  330. package/dist/generators/genai/configuration.d.ts +3 -0
  331. package/dist/generators/genai/configuration.js +43 -0
  332. package/dist/generators/genai/configuration.js.map +1 -0
  333. package/dist/generators/genai/database.d.ts +7 -0
  334. package/dist/generators/genai/database.js +71 -0
  335. package/dist/generators/genai/database.js.map +1 -0
  336. package/dist/generators/genai/functions.d.ts +15 -0
  337. package/dist/generators/genai/functions.js +156 -0
  338. package/dist/generators/genai/functions.js.map +1 -0
  339. package/dist/generators/genai/index.d.ts +8 -0
  340. package/dist/generators/genai/index.js +11 -0
  341. package/dist/generators/genai/index.js.map +1 -0
  342. package/dist/generators/genai/patterns.d.ts +9 -0
  343. package/dist/generators/genai/patterns.js +309 -0
  344. package/dist/generators/genai/patterns.js.map +1 -0
  345. package/dist/generators/infrastructure/azure.d.ts +18 -0
  346. package/dist/generators/infrastructure/azure.js +655 -0
  347. package/dist/generators/infrastructure/azure.js.map +1 -0
  348. package/dist/generators/infrastructure/names.d.ts +23 -0
  349. package/dist/generators/infrastructure/names.js +51 -0
  350. package/dist/generators/infrastructure/names.js.map +1 -0
  351. package/dist/generators/standard/configuration.d.ts +3 -0
  352. package/dist/generators/standard/configuration.js +26 -0
  353. package/dist/generators/standard/configuration.js.map +1 -0
  354. package/dist/generators/standard/go.d.ts +17 -0
  355. package/dist/generators/standard/go.js +338 -0
  356. package/dist/generators/standard/go.js.map +1 -0
  357. package/dist/generators/standard/index.d.ts +12 -0
  358. package/dist/generators/standard/index.js +12 -0
  359. package/dist/generators/standard/index.js.map +1 -0
  360. package/dist/generators/standard/node.d.ts +20 -0
  361. package/dist/generators/standard/node.js +314 -0
  362. package/dist/generators/standard/node.js.map +1 -0
  363. package/dist/generators/standard/python.d.ts +18 -0
  364. package/dist/generators/standard/python.js +191 -0
  365. package/dist/generators/standard/python.js.map +1 -0
  366. package/dist/go-template-assets.js +3 -3
  367. package/dist/go-template-assets.js.map +1 -1
  368. package/dist/governance-activation/activation-state.d.ts +1 -1
  369. package/dist/governance-activation/activation-state.js +46 -9
  370. package/dist/governance-activation/activation-state.js.map +1 -1
  371. package/dist/governance-activation/approvals.d.ts +1 -188
  372. package/dist/governance-activation/approvals.js +1 -507
  373. package/dist/governance-activation/approvals.js.map +1 -1
  374. package/dist/governance-activation/canonical-json.d.ts +1 -3
  375. package/dist/governance-activation/canonical-json.js +1 -35
  376. package/dist/governance-activation/canonical-json.js.map +1 -1
  377. package/dist/governance-activation/commands.d.ts +1 -1
  378. package/dist/governance-activation/commands.js +72 -106
  379. package/dist/governance-activation/commands.js.map +1 -1
  380. package/dist/governance-activation/compatibility.d.ts +11 -3
  381. package/dist/governance-activation/compatibility.js +31 -4
  382. package/dist/governance-activation/compatibility.js.map +1 -1
  383. package/dist/governance-activation/credentials.d.ts +3 -3
  384. package/dist/governance-activation/credentials.js +5 -5
  385. package/dist/governance-activation/credentials.js.map +1 -1
  386. package/dist/governance-activation/doctor.d.ts +1 -1
  387. package/dist/governance-activation/doctor.js +28 -96
  388. package/dist/governance-activation/doctor.js.map +1 -1
  389. package/dist/governance-activation/evidence.d.ts +1 -49
  390. package/dist/governance-activation/evidence.js +1 -245
  391. package/dist/governance-activation/evidence.js.map +1 -1
  392. package/dist/governance-activation/git-ignore.d.ts +9 -0
  393. package/dist/governance-activation/git-ignore.js +76 -0
  394. package/dist/governance-activation/git-ignore.js.map +1 -0
  395. package/dist/governance-activation/graph.d.ts +1 -397
  396. package/dist/governance-activation/graph.js +1 -440
  397. package/dist/governance-activation/graph.js.map +1 -1
  398. package/dist/governance-activation/identity.d.ts +1 -35
  399. package/dist/governance-activation/identity.js +1 -88
  400. package/dist/governance-activation/identity.js.map +1 -1
  401. package/dist/governance-activation/index.d.ts +3 -0
  402. package/dist/governance-activation/index.js +3 -0
  403. package/dist/governance-activation/index.js.map +1 -1
  404. package/dist/governance-activation/inputs.d.ts +8 -0
  405. package/dist/governance-activation/inputs.js +146 -0
  406. package/dist/governance-activation/inputs.js.map +1 -0
  407. package/dist/governance-activation/migration.d.ts +4 -3
  408. package/dist/governance-activation/migration.js +14 -6
  409. package/dist/governance-activation/migration.js.map +1 -1
  410. package/dist/governance-activation/phase-bootstrap-state.d.ts +3 -0
  411. package/dist/governance-activation/phase-bootstrap-state.js +128 -0
  412. package/dist/governance-activation/phase-bootstrap-state.js.map +1 -0
  413. package/dist/governance-activation/phase-discovery.d.ts +2 -0
  414. package/dist/governance-activation/phase-discovery.js +88 -0
  415. package/dist/governance-activation/phase-discovery.js.map +1 -0
  416. package/dist/governance-activation/phase-governance.d.ts +4 -0
  417. package/dist/governance-activation/phase-governance.js +141 -0
  418. package/dist/governance-activation/phase-governance.js.map +1 -0
  419. package/dist/governance-activation/phase-publication.d.ts +8 -0
  420. package/dist/governance-activation/phase-publication.js +318 -0
  421. package/dist/governance-activation/phase-publication.js.map +1 -0
  422. package/dist/governance-activation/read-only.d.ts +30 -0
  423. package/dist/governance-activation/read-only.js +93 -0
  424. package/dist/governance-activation/read-only.js.map +1 -0
  425. package/dist/governance-activation/readiness.d.ts +1 -25
  426. package/dist/governance-activation/readiness.js +1 -222
  427. package/dist/governance-activation/readiness.js.map +1 -1
  428. package/dist/governance-activation/reconciliation.d.ts +1 -1
  429. package/dist/governance-activation/reconciliation.js +3 -3
  430. package/dist/governance-activation/reconciliation.js.map +1 -1
  431. package/dist/governance-activation/release-integrity.d.ts +1 -1
  432. package/dist/governance-activation/release-integrity.js +2 -2
  433. package/dist/governance-activation/release-integrity.js.map +1 -1
  434. package/dist/governance-activation/seed-lifecycle.d.ts +9 -1
  435. package/dist/governance-activation/seed-lifecycle.js +197 -63
  436. package/dist/governance-activation/seed-lifecycle.js.map +1 -1
  437. package/dist/governance-activation/source-of-truth.d.ts +5 -3
  438. package/dist/governance-activation/source-of-truth.js +32 -52
  439. package/dist/governance-activation/source-of-truth.js.map +1 -1
  440. package/dist/governance-activation/spec-kit-seed.d.ts +9 -0
  441. package/dist/governance-activation/spec-kit-seed.js +43 -0
  442. package/dist/governance-activation/spec-kit-seed.js.map +1 -0
  443. package/dist/governance-activation/task-projection.d.ts +1 -1
  444. package/dist/governance-activation/transition-planning.d.ts +15 -0
  445. package/dist/governance-activation/transition-planning.js +250 -0
  446. package/dist/governance-activation/transition-planning.js.map +1 -0
  447. package/dist/governance-activation/transition-ports.d.ts +150 -0
  448. package/dist/governance-activation/transition-ports.js +2 -0
  449. package/dist/governance-activation/transition-ports.js.map +1 -0
  450. package/dist/governance-activation/transition-process.d.ts +7 -0
  451. package/dist/governance-activation/transition-process.js +21 -0
  452. package/dist/governance-activation/transition-process.js.map +1 -0
  453. package/dist/governance-activation/transition-records.d.ts +56 -0
  454. package/dist/governance-activation/transition-records.js +208 -0
  455. package/dist/governance-activation/transition-records.js.map +1 -0
  456. package/dist/governance-activation/transitions.d.ts +6 -165
  457. package/dist/governance-activation/transitions.js +142 -2055
  458. package/dist/governance-activation/transitions.js.map +1 -1
  459. package/dist/governance-activation/types.d.ts +1 -390
  460. package/dist/governance-activation/types.js +1 -107
  461. package/dist/governance-activation/types.js.map +1 -1
  462. package/dist/governance-activation/validators.d.ts +1 -17
  463. package/dist/governance-activation/validators.js +1 -1304
  464. package/dist/governance-activation/validators.js.map +1 -1
  465. package/dist/governance-assessment/catalog.d.ts +1 -2
  466. package/dist/governance-assessment/catalog.js +18 -85
  467. package/dist/governance-assessment/catalog.js.map +1 -1
  468. package/dist/governance-assessment/command.d.ts +1 -1
  469. package/dist/governance-assessment/command.js +8 -12
  470. package/dist/governance-assessment/command.js.map +1 -1
  471. package/dist/governance-assessment/engine.d.ts +6 -11
  472. package/dist/governance-assessment/engine.js +463 -114
  473. package/dist/governance-assessment/engine.js.map +1 -1
  474. package/dist/governance-assessment/live-normalize.d.ts +1 -19
  475. package/dist/governance-assessment/live-normalize.js +1 -402
  476. package/dist/governance-assessment/live-normalize.js.map +1 -1
  477. package/dist/governance-assessment/live-transport.d.ts +2 -6
  478. package/dist/governance-assessment/live-transport.js +10 -22
  479. package/dist/governance-assessment/live-transport.js.map +1 -1
  480. package/dist/governance-assessment/live.js +55 -5
  481. package/dist/governance-assessment/live.js.map +1 -1
  482. package/dist/governance-assessment/predicates.d.ts +1 -27
  483. package/dist/governance-assessment/predicates.js +1 -329
  484. package/dist/governance-assessment/predicates.js.map +1 -1
  485. package/dist/governance-assessment/project.d.ts +13 -17
  486. package/dist/governance-assessment/project.js +59 -149
  487. package/dist/governance-assessment/project.js.map +1 -1
  488. package/dist/governance-assessment/readers.d.ts +1 -5
  489. package/dist/governance-assessment/readers.js +5 -13
  490. package/dist/governance-assessment/readers.js.map +1 -1
  491. package/dist/governance-assessment/report.d.ts +1 -23
  492. package/dist/governance-assessment/report.js +1 -265
  493. package/dist/governance-assessment/report.js.map +1 -1
  494. package/dist/governance-assessment/sanitize.d.ts +1 -8
  495. package/dist/governance-assessment/sanitize.js +1 -56
  496. package/dist/governance-assessment/sanitize.js.map +1 -1
  497. package/dist/governance-assessment/types.d.ts +1 -173
  498. package/dist/governance-assessment/types.js +1 -12
  499. package/dist/governance-assessment/types.js.map +1 -1
  500. package/dist/governance-assessment/yaml.d.ts +1 -6
  501. package/dist/governance-assessment/yaml.js +1 -29
  502. package/dist/governance-assessment/yaml.js.map +1 -1
  503. package/dist/init-filesystem.d.ts +1 -1
  504. package/dist/init-filesystem.js +126 -174
  505. package/dist/init-filesystem.js.map +1 -1
  506. package/dist/interactive.d.ts +2 -2
  507. package/dist/interactive.js +42 -41
  508. package/dist/interactive.js.map +1 -1
  509. package/dist/migrate-plan.d.ts +1 -1
  510. package/dist/migrate-plan.js +14 -8
  511. package/dist/migrate-plan.js.map +1 -1
  512. package/dist/npm-template-assets.js +5 -4
  513. package/dist/npm-template-assets.js.map +1 -1
  514. package/dist/openspec-profile.d.ts +1 -1
  515. package/dist/opentofu-template-assets.js +3 -3
  516. package/dist/opentofu-template-assets.js.map +1 -1
  517. package/dist/package-identity.d.ts +3 -0
  518. package/dist/package-identity.js +13 -2
  519. package/dist/package-identity.js.map +1 -1
  520. package/dist/planner.d.ts +1 -19
  521. package/dist/planner.js +1 -565
  522. package/dist/planner.js.map +1 -1
  523. package/dist/process-runner.d.ts +1 -1
  524. package/dist/project-dependencies.d.ts +5 -3
  525. package/dist/project-dependencies.js +74 -63
  526. package/dist/project-dependencies.js.map +1 -1
  527. package/dist/published-verifier.js +61 -30
  528. package/dist/published-verifier.js.map +1 -1
  529. package/dist/python-template-assets.js +6 -9
  530. package/dist/python-template-assets.js.map +1 -1
  531. package/dist/reconcile.d.ts +1 -1
  532. package/dist/reconcile.js +2 -2
  533. package/dist/reconcile.js.map +1 -1
  534. package/dist/repository-governance.d.ts +5 -2
  535. package/dist/repository-governance.js +126 -112
  536. package/dist/repository-governance.js.map +1 -1
  537. package/dist/runtime.js +1 -1
  538. package/dist/runtime.js.map +1 -1
  539. package/dist/scan.d.ts +6 -2
  540. package/dist/scan.js +78 -30
  541. package/dist/scan.js.map +1 -1
  542. package/dist/self-upgrade.d.ts +1 -1
  543. package/dist/self-upgrade.js +20 -7
  544. package/dist/self-upgrade.js.map +1 -1
  545. package/dist/stable-release.js +7 -1
  546. package/dist/stable-release.js.map +1 -1
  547. package/dist/standard-templates.d.ts +2 -2
  548. package/dist/standard-templates.js +6 -841
  549. package/dist/standard-templates.js.map +1 -1
  550. package/dist/supported-stack.d.ts +3 -115
  551. package/dist/supported-stack.js +4 -438
  552. package/dist/supported-stack.js.map +1 -1
  553. package/dist/telemetry/index.d.ts +1 -1
  554. package/dist/templates.d.ts +10 -20
  555. package/dist/templates.js +52 -3261
  556. package/dist/templates.js.map +1 -1
  557. package/dist/types.d.ts +1 -263
  558. package/dist/types.js +1 -1
  559. package/dist/types.js.map +1 -1
  560. package/dist/version.js +2 -6
  561. package/dist/version.js.map +1 -1
  562. package/dist/workstation-catalog.d.ts +5 -2
  563. package/dist/workstation-catalog.js +33 -2
  564. package/dist/workstation-catalog.js.map +1 -1
  565. package/dist/workstation.d.ts +4 -3
  566. package/dist/workstation.js +86 -32
  567. package/dist/workstation.js.map +1 -1
  568. package/docs/assets/liftoff-terminal.svg +3 -3
  569. package/docs/azure-deployment.md +107 -10
  570. package/docs/cli-reference.md +49 -13
  571. package/docs/configuration-and-manifests.md +139 -34
  572. package/docs/existing-repositories.md +33 -6
  573. package/docs/getting-started.md +44 -31
  574. package/docs/prerequisites.md +34 -35
  575. package/docs/project-structure.md +39 -46
  576. package/docs/repository-governance.md +90 -24
  577. package/docs/safety-and-consent.md +65 -12
  578. package/docs/spec-workflows-and-agents.md +31 -28
  579. package/docs/supported-stack.md +11 -9
  580. package/docs/troubleshooting.md +107 -49
  581. package/docs/workloads.md +46 -62
  582. package/package.json +4 -7
  583. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +0 -21
  584. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +0 -520
  585. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +0 -27
  586. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +0 -25
  587. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +0 -22
  588. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +0 -23
  589. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +0 -13
  590. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +0 -6156
  591. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +0 -60
  592. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +0 -55
  593. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +0 -17
  594. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +0 -1
  595. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +0 -37
  596. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +0 -46
  597. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +0 -60
  598. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +0 -211
  599. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +0 -92
  600. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +0 -355
  601. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +0 -32
  602. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +0 -184
  603. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +0 -141
  604. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +0 -257
  605. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +0 -21
  606. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +0 -22
  607. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +0 -46
  608. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +0 -29
  609. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +0 -185
  610. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +0 -26
  611. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +0 -13
  612. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +0 -114
  613. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +0 -66
  614. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +0 -18
  615. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +0 -61
  616. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +0 -11
  617. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +0 -131
  618. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +0 -6
  619. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +0 -10
  620. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +0 -31
  621. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +0 -59
  622. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +0 -14
  623. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +0 -26
  624. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +0 -23
  625. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +0 -64
  626. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +0 -24
  627. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +0 -34
  628. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +0 -13
  629. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +0 -26
  630. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +0 -19
  631. package/assets/power-apps-code-app/README.md +0 -27
  632. package/dist/code-apps-plugin.d.ts +0 -13
  633. package/dist/code-apps-plugin.js +0 -69
  634. package/dist/code-apps-plugin.js.map +0 -1
  635. package/dist/power-apps-assets.d.ts +0 -30
  636. package/dist/power-apps-assets.js +0 -131
  637. package/dist/power-apps-assets.js.map +0 -1
  638. package/dist/power-apps-templates.d.ts +0 -3
  639. package/dist/power-apps-templates.js +0 -177
  640. package/dist/power-apps-templates.js.map +0 -1
  641. package/dist/power-apps-validation.d.ts +0 -1
  642. package/dist/power-apps-validation.js +0 -79
  643. package/dist/power-apps-validation.js.map +0 -1
@@ -0,0 +1,421 @@
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 only 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. Use \`liftoff update --check\` for a read-only core report, or \`liftoff update --check --json\` as an automation gate that exits 0 when core state is clean and 2 when maintenance is available.
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
+ 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.
254
+
255
+ ${plan.governanceProfile.id === 'none'
256
+ ? 'No `/liftoff-governance-assess` integration is generated while governance is disabled.'
257
+ : renderGovernanceAssessmentGuide()}
258
+ `;
259
+ }
260
+ export function renderRootInfrastructureGuide(plan) {
261
+ const environment = selectedEnvironmentId(plan);
262
+ const governanceGate = plan.governanceProfile.id === 'none'
263
+ ? ''
264
+ : `These commands are reference material, not the next setup action. Do not run this
265
+ sequence until the separately approved \`application-foundation\` governance phase
266
+ authorizes the exact infrastructure mutation. \`/liftoff-setup\` can evaluate and
267
+ resume managed phases, but it does not imply that every managed phase has an
268
+ executable production adapter. An unavailable production adapter remains a
269
+ blocker; do not bypass it by running the reference commands directly.
270
+
271
+ `;
272
+ return `## Infrastructure
273
+
274
+ ${governanceGate}\`\`\`bash
275
+ cd infrastructure/opentofu/azure/environments/${environment}
276
+ tofu init
277
+ tofu plan -var-file=${environment}.tfvars
278
+ tofu apply -var-file=${environment}.tfvars
279
+ \`\`\`
280
+
281
+ 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.
282
+ `;
283
+ }
284
+ export function renderRootReadme(plan) {
285
+ if (plan.workload === 'standard') {
286
+ return `# ${plan.projectName}
287
+
288
+ Generated by Mission Control Liftoff.
289
+
290
+ ## Stack
291
+
292
+ - Project type: Standard application
293
+ - API: ${plan.apiStack.label}
294
+ - Database tooling: ${plan.apiStack.databaseTooling}
295
+ - API reference: Scalar with OpenAPI
296
+ - Cloud: ${plan.provider.label} (${plan.region.slug})
297
+ - Infrastructure: OpenTofu
298
+ - Database: PostgreSQL
299
+ - Cache and local messaging: Redis
300
+ - Local development: Docker Compose
301
+ ${plan.includeFrontend ? '- Frontend: Vue 3 with Tailwind\n' : ''}
302
+ ${renderDeterministicSetupGuide(plan)}
303
+ ## Local Development
304
+
305
+ \`\`\`bash
306
+ docker compose up --build
307
+ \`\`\`
308
+
309
+ The backend API is available on port 8000. Health and readiness endpoints are available at \`/health\` and \`/ready\`; Scalar is exposed at \`/scalar\`.
310
+
311
+ ${renderGeneratedConfigurationGuide(plan)}
312
+ ${renderDirectBuildAndTestGuide(plan)}
313
+ ${renderGeneratedUpdateGuide(plan)}
314
+ ${renderRootInfrastructureGuide(plan)}
315
+ ${renderSpecWorkflowGuide(plan)}
316
+ `;
317
+ }
318
+ const pattern = genAiPattern(plan);
319
+ const functionsStackLine = hasFunctionWorker(plan) ? `- Azure Functions worker: Python v2 Service Bus trigger under \`functions/${functionWorkerName(plan)}\`
320
+ ` : '';
321
+ const functionsSection = hasFunctionWorker(plan) ? `
322
+ ## Azure Functions Worker
323
+
324
+ 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.
325
+ ` : '';
326
+ const genericSection = pattern.id === 'generic' ? `
327
+ ## Choosing A Specialization Later
328
+
329
+ 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.
330
+
331
+ 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.
332
+ ` : '';
333
+ return `# ${plan.projectName}
334
+
335
+ Generated by Mission Control Liftoff.
336
+
337
+ ## Stack
338
+
339
+ - Backend: FastAPI, PydanticAI, Pydantic settings, Scalar
340
+ - Pattern: ${pattern.label}
341
+ - Starter maturity: ${pattern.scaffoldStatus}
342
+ - Generated capability: ${pattern.description}
343
+ - Cloud: ${plan.provider.label} (${plan.region.slug})
344
+ - Infrastructure: OpenTofu
345
+ - Database: PostgreSQL with Alembic migrations${pattern.id === 'rag' ? ' and a pgvector storage foundation (retrieval is not implemented)' : ''}
346
+ - Cache and local messaging: Redis
347
+ - Observability: Langfuse
348
+ - Local development: Docker Compose
349
+ ${functionsStackLine}
350
+ ${plan.includeFrontend ? '- Frontend: Vue 3 with Tailwind\n' : ''}
351
+ ## Starter Capability Limits
352
+
353
+ This release provides model invocation, injectable messaging publishers, and optional tracing.
354
+ Pattern names identify extension points, not implemented specialization. Retrieval/citations,
355
+ conversation history, tools, prompt-file loading, multi-agent coordination, fine-tuning,
356
+ workflow stages, and incremental streaming remain project work. The streaming pattern
357
+ emits one buffered SSE result after model completion; it is not real-time token streaming.
358
+
359
+ ${renderDeterministicSetupGuide(plan)}
360
+ ## Local Development
361
+
362
+ \`\`\`bash
363
+ docker compose up --build
364
+ docker compose --profile observability up --build
365
+ \`\`\`
366
+
367
+ The backend API is available on port 8000. Scalar is exposed at \`/scalar\`.
368
+
369
+ ${renderGeneratedConfigurationGuide(plan)}
370
+ ${renderDirectBuildAndTestGuide(plan)}
371
+ ${renderGeneratedUpdateGuide(plan)}
372
+ ${renderRootInfrastructureGuide(plan)}
373
+ ${renderSpecWorkflowGuide(plan)}
374
+ ${functionsSection}
375
+ ${genericSection}
376
+ `;
377
+ }
378
+ export function renderGeneratedGitignore() {
379
+ return `.venv/
380
+ __pycache__/
381
+ .pytest_cache/
382
+ node_modules/
383
+ dist/
384
+ .env
385
+ runtime.config.json
386
+ migration/legacy/
387
+ *.tfstate
388
+ *.tfstate.*
389
+ .terraform/
390
+ `;
391
+ }
392
+ export function renderEnvExample(plan) {
393
+ if (plan.workload === 'standard') {
394
+ return renderStandardEnv(plan);
395
+ }
396
+ const pattern = genAiPattern(plan);
397
+ return `APP_ENV=dev
398
+ APP_NAME=${plan.safeProjectName}
399
+ GENAI_PATTERN=${pattern.id}
400
+ CLOUD_PROVIDER=${plan.provider.id}
401
+ AZURE_REGION=${plan.region.slug}
402
+ DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/${plan.safeProjectName.replace(/-/g, '_')}
403
+ REDIS_URL=redis://redis:6379/0
404
+ REDIS_STREAM_NAME=liftoff-events
405
+ MESSAGING_TRANSPORT=redis-streams
406
+ SERVICE_BUS_QUEUE_NAME=${DEFAULT_FUNCTION_WORKER_QUEUE_NAME}
407
+ SERVICE_BUS_AUTH_MODE=managed-identity
408
+ SERVICE_BUS_CONNECTION_STRING=
409
+ SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE=
410
+ AZURE_CLIENT_ID=
411
+ BLOB_ENDPOINT=http://azurite:10000/devstoreaccount1
412
+ CORS_ALLOWED_ORIGINS=http://localhost:5173
413
+ PYDANTIC_AI_MODEL=
414
+ OPENAI_API_KEY=
415
+ OPENAI_BASE_URL=https://api.openai.com/v1
416
+ LANGFUSE_HOST=http://langfuse:3000
417
+ LANGFUSE_PUBLIC_KEY=
418
+ LANGFUSE_SECRET_KEY=
419
+ `;
420
+ }
421
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/generators/common/base.ts"],"names":[],"mappings":"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"}
@@ -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 {};