@msn-control/liftoff 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +65 -224
  2. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +21 -0
  3. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +520 -0
  4. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +27 -0
  5. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +25 -0
  6. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +22 -0
  7. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +23 -0
  8. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +13 -0
  9. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +6597 -0
  10. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +60 -0
  11. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +55 -0
  12. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +17 -0
  13. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +1 -0
  14. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +37 -0
  15. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +46 -0
  16. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +60 -0
  17. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +211 -0
  18. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +92 -0
  19. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +355 -0
  20. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +32 -0
  21. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +184 -0
  22. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +141 -0
  23. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +257 -0
  24. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +21 -0
  25. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +22 -0
  26. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +46 -0
  27. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +29 -0
  28. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +185 -0
  29. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +26 -0
  30. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +13 -0
  31. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +114 -0
  32. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +66 -0
  33. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +18 -0
  34. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +61 -0
  35. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +11 -0
  36. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +131 -0
  37. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +6 -0
  38. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +10 -0
  39. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +31 -0
  40. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +59 -0
  41. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +14 -0
  42. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +26 -0
  43. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +23 -0
  44. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +64 -0
  45. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +24 -0
  46. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +34 -0
  47. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +13 -0
  48. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +26 -0
  49. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +19 -0
  50. package/assets/power-apps-code-app/README.md +27 -0
  51. package/dist/args.d.ts +33 -0
  52. package/dist/args.js +100 -38
  53. package/dist/args.js.map +1 -1
  54. package/dist/catalogs.d.ts +3 -1
  55. package/dist/catalogs.js +23 -0
  56. package/dist/catalogs.js.map +1 -1
  57. package/dist/cli.js +6 -1
  58. package/dist/cli.js.map +1 -1
  59. package/dist/code-apps-plugin.d.ts +13 -0
  60. package/dist/code-apps-plugin.js +69 -0
  61. package/dist/code-apps-plugin.js.map +1 -0
  62. package/dist/commands.d.ts +4 -0
  63. package/dist/commands.js +669 -321
  64. package/dist/commands.js.map +1 -1
  65. package/dist/file-system.d.ts +16 -1
  66. package/dist/file-system.js +320 -10
  67. package/dist/file-system.js.map +1 -1
  68. package/dist/framework-adapters.d.ts +5 -2
  69. package/dist/framework-adapters.js +5 -2
  70. package/dist/framework-adapters.js.map +1 -1
  71. package/dist/genai-templates.d.ts +6 -6
  72. package/dist/genai-templates.js +0 -3
  73. package/dist/genai-templates.js.map +1 -1
  74. package/dist/interactive.d.ts +80 -6
  75. package/dist/interactive.js +338 -142
  76. package/dist/interactive.js.map +1 -1
  77. package/dist/migrate-plan.d.ts +4 -4
  78. package/dist/migrate-plan.js +1 -1
  79. package/dist/migrate-plan.js.map +1 -1
  80. package/dist/planner.d.ts +5 -0
  81. package/dist/planner.js +197 -53
  82. package/dist/planner.js.map +1 -1
  83. package/dist/power-apps-assets.d.ts +30 -0
  84. package/dist/power-apps-assets.js +131 -0
  85. package/dist/power-apps-assets.js.map +1 -0
  86. package/dist/power-apps-templates.d.ts +3 -0
  87. package/dist/power-apps-templates.js +140 -0
  88. package/dist/power-apps-templates.js.map +1 -0
  89. package/dist/power-apps-validation.d.ts +1 -0
  90. package/dist/power-apps-validation.js +79 -0
  91. package/dist/power-apps-validation.js.map +1 -0
  92. package/dist/process-runner.js +9 -6
  93. package/dist/process-runner.js.map +1 -1
  94. package/dist/project-dependencies.d.ts +7 -4
  95. package/dist/project-dependencies.js +16 -4
  96. package/dist/project-dependencies.js.map +1 -1
  97. package/dist/published-verifier.js +1 -1
  98. package/dist/published-verifier.js.map +1 -1
  99. package/dist/standard-templates.d.ts +4 -4
  100. package/dist/standard-templates.js.map +1 -1
  101. package/dist/templates.d.ts +2 -2
  102. package/dist/templates.js +196 -50
  103. package/dist/templates.js.map +1 -1
  104. package/dist/terminal.d.ts +99 -3
  105. package/dist/terminal.js +482 -66
  106. package/dist/terminal.js.map +1 -1
  107. package/dist/types.d.ts +73 -15
  108. package/dist/workstation.d.ts +10 -5
  109. package/dist/workstation.js +25 -10
  110. package/dist/workstation.js.map +1 -1
  111. package/docs/assets/liftoff-terminal.svg +33 -0
  112. package/docs/azure-deployment.md +66 -0
  113. package/docs/cli-reference.md +128 -0
  114. package/docs/configuration-and-manifests.md +102 -0
  115. package/docs/existing-repositories.md +87 -0
  116. package/docs/getting-started.md +114 -0
  117. package/docs/prerequisites.md +99 -0
  118. package/docs/project-structure.md +119 -0
  119. package/docs/safety-and-consent.md +98 -0
  120. package/docs/spec-workflows-and-agents.md +92 -0
  121. package/docs/troubleshooting.md +133 -0
  122. package/docs/workloads.md +128 -0
  123. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"standard-templates.js","sourceRoot":"","sources":["../src/standard-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standard-templates.js","sourceRoot":"","sources":["../src/standard-templates.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GeneratedArtifact, LiftoffManifest, ProjectPlan } from './types.js';
1
+ import type { ApiProjectPlan, GeneratedArtifact, LiftoffManifest, ProjectPlan } from './types.js';
2
2
  export declare const AZURE_NAME_LIMITS: {
3
3
  readonly resourceGroup: 90;
4
4
  readonly containerRegistry: 50;
@@ -16,7 +16,7 @@ export declare const AZURE_NAME_LIMITS: {
16
16
  readonly keyVault: 24;
17
17
  };
18
18
  export type AzureResourceNames = Record<keyof typeof AZURE_NAME_LIMITS, string>;
19
- export declare function buildAzureResourceNames(plan: ProjectPlan, environment: string, resourceSuffix: string): AzureResourceNames;
19
+ export declare function buildAzureResourceNames(plan: ApiProjectPlan, environment: string, resourceSuffix: string): AzureResourceNames;
20
20
  export declare function buildArtifacts(plan: ProjectPlan): GeneratedArtifact[];
21
21
  export declare function partitionGeneratedArtifacts(artifacts: GeneratedArtifact[]): {
22
22
  durable: GeneratedArtifact[];
package/dist/templates.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { addGenAiExtensionArtifacts } from './genai-templates.js';
3
+ import { addPowerAppsCodeAppArtifacts } from './power-apps-templates.js';
3
4
  import { addStandardStackArtifacts, renderStandardDockerfile, renderStandardEnv } from './standard-templates.js';
4
5
  import { liftoffVersion } from './version.js';
5
6
  import { renderNpmLock, renderNpmPackage } from './npm-template-assets.js';
@@ -56,35 +57,28 @@ const sourceString = (value) => JSON.stringify(value);
56
57
  const scriptSourceString = (value) => sourceString(value).replaceAll('<', '\\u003c');
57
58
  const escapeHtml = (value) => value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;');
58
59
  const genAiPattern = (plan) => {
59
- if (plan.projectType.id !== 'genai' || !plan.pattern) {
60
- throw new Error('GenAI template rendering requires a GenAI pattern.');
61
- }
62
60
  return plan.pattern;
63
61
  };
64
- const hasFunctionWorker = (plan) => plan.projectType.id === 'genai' && plan.provider.id === 'azure' && genAiPattern(plan).worker;
65
- const functionWorkerName = (plan) => `${genAiPattern(plan).id}-worker`;
62
+ const hasFunctionWorker = (plan) => plan.workload === 'genai' && plan.provider.id === 'azure' && plan.pattern.worker;
63
+ const functionWorkerName = (plan) => `${plan.pattern.id}-worker`;
66
64
  export function buildArtifacts(plan) {
67
65
  const artifacts = [];
68
66
  const add = (logicalName, category, pathParts, content) => {
69
67
  artifacts.push({ logicalName, category, pathParts, content: ensureTrailingNewline(content) });
70
68
  };
71
- addBaseArtifacts(add, plan);
72
- if (plan.projectType.id === 'genai') {
73
- addGenAiExtensionArtifacts(add, plan, {
74
- backend: addBackendArtifacts,
75
- database: addDatabaseArtifacts,
76
- pattern: addPatternArtifacts,
77
- functions: addFunctionArtifacts
78
- });
69
+ switch (plan.workload) {
70
+ case 'genai':
71
+ addGenAiWorkloadArtifacts(add, plan);
72
+ break;
73
+ case 'standard':
74
+ addStandardWorkloadArtifacts(add, plan);
75
+ break;
76
+ case 'power-apps-code-app':
77
+ addPowerAppsWorkloadArtifacts(add, plan);
78
+ break;
79
79
  }
80
- else {
81
- addStandardStackArtifacts(add, plan);
82
- }
83
- addEnvironmentArtifacts(add, plan);
84
- addDockerArtifacts(add, plan);
85
- addInfrastructureArtifacts(add, plan);
86
80
  addGovernanceArtifacts(add, plan);
87
- if (plan.includeFrontend) {
81
+ if (plan.workload !== 'power-apps-code-app' && plan.includeFrontend) {
88
82
  addFrontendArtifacts(add, plan);
89
83
  }
90
84
  const manifest = buildManifest(plan, artifacts);
@@ -96,6 +90,30 @@ export function buildArtifacts(plan) {
96
90
  });
97
91
  return artifacts;
98
92
  }
93
+ function addGenAiWorkloadArtifacts(add, plan) {
94
+ addBaseArtifacts(add, plan);
95
+ addGenAiExtensionArtifacts(add, plan, {
96
+ backend: addBackendArtifacts,
97
+ database: addDatabaseArtifacts,
98
+ pattern: addPatternArtifacts,
99
+ functions: addFunctionArtifacts
100
+ });
101
+ addApiWorkloadOperations(add, plan);
102
+ }
103
+ function addStandardWorkloadArtifacts(add, plan) {
104
+ addBaseArtifacts(add, plan);
105
+ addStandardStackArtifacts(add, plan);
106
+ addApiWorkloadOperations(add, plan);
107
+ }
108
+ function addPowerAppsWorkloadArtifacts(add, plan) {
109
+ addPowerAppsCodeAppArtifacts(add, plan);
110
+ addPowerAppsProjectConfig(add, plan);
111
+ }
112
+ function addApiWorkloadOperations(add, plan) {
113
+ addEnvironmentArtifacts(add, plan);
114
+ addDockerArtifacts(add, plan);
115
+ addInfrastructureArtifacts(add, plan);
116
+ }
99
117
  export function partitionGeneratedArtifacts(artifacts) {
100
118
  const manifest = artifacts.find((artifact) => artifact.logicalName === 'manifest');
101
119
  if (!manifest) {
@@ -111,22 +129,40 @@ export function partitionGeneratedArtifacts(artifacts) {
111
129
  export function buildManifest(plan, artifacts, options = {}) {
112
130
  const frameworkState = options.frameworkState ?? 'initialized';
113
131
  const agents = frameworkState === 'initialized' ? plan.agents.map((agent) => agent.id) : [];
132
+ const workload = plan.workload === 'power-apps-code-app'
133
+ ? {
134
+ kind: 'power-apps-code-app',
135
+ starter: plan.starter,
136
+ codeAppsPlugin: plan.codeAppsPlugin
137
+ }
138
+ : plan.workload === 'genai'
139
+ ? {
140
+ kind: 'genai',
141
+ apiStack: plan.apiStack.id,
142
+ pattern: plan.pattern.id,
143
+ cloud: plan.provider.id,
144
+ region: plan.region.slug,
145
+ frontend: plan.includeFrontend,
146
+ environments: plan.environments.map((environment) => environment.id)
147
+ }
148
+ : {
149
+ kind: 'standard',
150
+ apiStack: plan.apiStack.id,
151
+ cloud: plan.provider.id,
152
+ region: plan.region.slug,
153
+ frontend: plan.includeFrontend,
154
+ environments: plan.environments.map((environment) => environment.id)
155
+ };
114
156
  return {
115
- artifactVersion: 3,
157
+ artifactVersion: 4,
116
158
  generatedBy: 'Mission Control Liftoff',
117
159
  liftoffVersion,
118
160
  project: {
119
161
  name: plan.projectName,
120
- projectType: plan.projectType.id,
121
- apiStack: plan.apiStack.id,
122
- ...(plan.pattern ? { pattern: plan.pattern.id } : {}),
123
- cloud: plan.provider.id,
124
- region: plan.region.slug,
125
- frontend: plan.includeFrontend,
162
+ workload,
126
163
  specWorkflow: plan.specWorkflow.id,
127
164
  agents,
128
165
  ...(frameworkState === 'initialized' && plan.defaultAgent ? { defaultAgent: plan.defaultAgent.id } : {}),
129
- environments: plan.environments.map((environment) => environment.id)
130
166
  },
131
167
  framework: {
132
168
  state: frameworkState,
@@ -150,7 +186,7 @@ function addBaseArtifacts(add, plan) {
150
186
  projectName: plan.projectName,
151
187
  projectType: plan.projectType.id,
152
188
  apiStack: plan.apiStack.id,
153
- ...(plan.pattern ? { pattern: plan.pattern.id } : {}),
189
+ ...(plan.workload === 'genai' ? { pattern: plan.pattern.id } : {}),
154
190
  cloud: plan.provider.id,
155
191
  region: plan.region.slug,
156
192
  includeFrontend: plan.includeFrontend,
@@ -160,7 +196,17 @@ function addBaseArtifacts(add, plan) {
160
196
  ...(plan.defaultAgent ? { defaultAgent: plan.defaultAgent.id } : {})
161
197
  }, null, 2));
162
198
  add('env-example', 'configuration', ['.env.example'], renderEnvExample(plan));
163
- add('backend-dockerfile', 'runtime', ['Dockerfile'], plan.projectType.id === 'genai' ? renderBackendDockerfile() : renderStandardDockerfile(plan));
199
+ add('backend-dockerfile', 'runtime', ['Dockerfile'], plan.workload === 'genai' ? renderBackendDockerfile() : renderStandardDockerfile(plan));
200
+ }
201
+ function addPowerAppsProjectConfig(add, plan) {
202
+ add('liftoff-config', 'project', ['liftoff.config.json'], JSON.stringify({
203
+ projectName: plan.projectName,
204
+ projectType: plan.projectType.id,
205
+ specWorkflow: plan.specWorkflow.id,
206
+ agents: plan.agents.map((agent) => agent.id),
207
+ ...(plan.defaultAgent ? { defaultAgent: plan.defaultAgent.id } : {}),
208
+ codeAppsPlugin: plan.codeAppsPlugin
209
+ }, null, 2));
164
210
  }
165
211
  function addBackendArtifacts(add, plan) {
166
212
  const routeModule = pyModule(genAiPattern(plan).id);
@@ -228,8 +274,8 @@ function addFunctionArtifacts(add, plan) {
228
274
  }
229
275
  function addEnvironmentArtifacts(add, plan) {
230
276
  for (const environment of plan.environments) {
231
- add(`environment-${environment.id}-backend`, 'environment', ['environments', environment.id, 'backend.env'], plan.projectType.id === 'genai' ? renderBackendEnv(plan, environment.id) : renderStandardEnv(plan, environment.id));
232
- if (hasFunctionWorker(plan)) {
277
+ add(`environment-${environment.id}-backend`, 'environment', ['environments', environment.id, 'backend.env'], plan.workload === 'genai' ? renderBackendEnv(plan, environment.id) : renderStandardEnv(plan, environment.id));
278
+ if (plan.workload === 'genai' && hasFunctionWorker(plan)) {
233
279
  add(`environment-${environment.id}-functions`, 'environment', ['environments', environment.id, 'functions.env'], renderFunctionsEnv(plan, environment.id));
234
280
  }
235
281
  }
@@ -252,6 +298,24 @@ function addInfrastructureArtifacts(add, plan) {
252
298
  }
253
299
  }
254
300
  function addGovernanceArtifacts(add, plan) {
301
+ if (plan.workload === 'power-apps-code-app') {
302
+ if (plan.specWorkflow.id === 'openspec') {
303
+ const changeName = `bootstrap-${plan.safeProjectName}`;
304
+ add('openspec-config', 'seed', ['openspec', 'config.yaml'], renderPowerAppsOpenSpecConfig(plan));
305
+ add('openspec-seed-change-metadata', 'seed', ['openspec', 'changes', changeName, '.openspec.yaml'], 'schema: spec-driven');
306
+ add('openspec-seed-proposal', 'seed', ['openspec', 'changes', changeName, 'proposal.md'], renderPowerAppsSeedProposal(plan));
307
+ add('openspec-seed-design', 'seed', ['openspec', 'changes', changeName, 'design.md'], renderPowerAppsSeedDesign(plan));
308
+ add('openspec-seed-tasks', 'seed', ['openspec', 'changes', changeName, 'tasks.md'], renderSeedTasks());
309
+ add('openspec-spec-placeholder', 'seed', ['openspec', 'specs', '.gitkeep'], '');
310
+ }
311
+ else {
312
+ add('spec-kit-constitution', 'seed', ['.specify', 'memory', 'constitution.md'], renderPowerAppsSpecKitConstitution(plan));
313
+ add('spec-kit-spec-template', 'framework', ['.specify', 'templates', 'spec-template.md'], renderSpecKitSpecTemplate());
314
+ add('spec-kit-plan-template', 'framework', ['.specify', 'templates', 'plan-template.md'], renderSpecKitPlanTemplate());
315
+ add('specs-placeholder', 'seed', ['specs', '.gitkeep'], '');
316
+ }
317
+ return;
318
+ }
255
319
  if (plan.specWorkflow.id === 'openspec') {
256
320
  const changeName = `bootstrap-${plan.safeProjectName}`;
257
321
  add('openspec-config', 'seed', ['openspec', 'config.yaml'], renderOpenSpecConfig(plan));
@@ -268,6 +332,84 @@ function addGovernanceArtifacts(add, plan) {
268
332
  add('specs-placeholder', 'seed', ['specs', '.gitkeep'], '');
269
333
  }
270
334
  }
335
+ function renderPowerAppsOpenSpecConfig(plan) {
336
+ return `schema: spec-driven
337
+ context: |
338
+ Project: ${plan.projectName}
339
+ Workload: Microsoft Power Apps code app
340
+ Stack: React, Vite, TypeScript, Tailwind CSS, Power Apps SDK
341
+ Starter: ${plan.starter.repository}/${plan.starter.path}@${plan.starter.commit}
342
+ Runtime boundary: browser-hosted code app with connector-first data access
343
+ Environment binding: explicit post-scaffold Power Apps CLI action
344
+ rules:
345
+ proposal:
346
+ - Keep tenant, environment, connection, solution, and deployment choices explicit.
347
+ design:
348
+ - Prefer Power Platform connectors and generated service modules over custom APIs.
349
+ - Do not add Liftoff-owned Azure or API infrastructure unless a later change explicitly introduces it.
350
+ tasks:
351
+ - Include npm lint and build verification.
352
+ `;
353
+ }
354
+ function renderPowerAppsSeedProposal(plan) {
355
+ return `# Proposal: bootstrap-${plan.safeProjectName}
356
+
357
+ ## Why
358
+
359
+ Establish the first governed feature on the generated ${plan.projectName} Power Apps code app.
360
+
361
+ ## What Changes
362
+
363
+ - Define the initial React user experience and routes.
364
+ - Add connector-backed data access through generated service modules.
365
+ - Keep Power Apps environment binding, authentication, connections, and deployment explicit.
366
+
367
+ ## Impact
368
+
369
+ - Affected source: \`src/\`
370
+ - No Liftoff-owned backend API, Docker stack, Azure resources, or \`power.config.json\`.
371
+ `;
372
+ }
373
+ function renderPowerAppsSeedDesign(plan) {
374
+ return `# Design: bootstrap-${plan.safeProjectName}
375
+
376
+ ## Context
377
+
378
+ The project uses React, Vite, TypeScript, Tailwind CSS, and Microsoft's Power Apps SDK.
379
+ It was initialized from \`${plan.starter.path}\` at \`${plan.starter.commit}\`.
380
+
381
+ ## Decisions
382
+
383
+ - Keep pages under \`src/pages\` and shared UI under \`src/components\`.
384
+ - Keep connector and generated service boundaries explicit under \`src\`.
385
+ - Use TanStack Query for server state and Zustand only for local client state.
386
+ - Bind to a tenant and environment only through Microsoft's Power Apps CLI.
387
+ `;
388
+ }
389
+ function renderPowerAppsSpecKitConstitution(plan) {
390
+ return `# ${plan.projectName} Constitution
391
+
392
+ ## I. Power Apps workload boundary
393
+
394
+ The application MUST remain a Power Apps code app using React, Vite, TypeScript, Tailwind CSS,
395
+ the Power Apps SDK, and the Power Apps Vite plugin. Tenant and environment binding MUST remain
396
+ an explicit developer action.
397
+
398
+ ## II. Connector-first integration
399
+
400
+ Features MUST prefer Power Platform connectors and generated service modules. A custom API or
401
+ Azure resource requires an explicit specification and MUST NOT be inferred from this scaffold.
402
+
403
+ ## III. Project structure
404
+
405
+ Pages belong under \`src/pages\`, shared UI under \`src/components\`, and reusable providers or
406
+ connector boundaries under named \`src\` modules. \`power.config.json\` is never fabricated.
407
+
408
+ ## IV. Quality gates
409
+
410
+ Every change MUST pass the applicable npm lint and build checks plus \`liftoff validate\`.
411
+ `;
412
+ }
271
413
  function addFrontendArtifacts(add, plan) {
272
414
  add('frontend-package', 'frontend', ['frontend', 'package.json'], renderFrontendPackage(plan));
273
415
  add('frontend-lock', 'frontend', ['frontend', 'package-lock.json'], renderNpmLock('frontend', `${plan.safeProjectName}-frontend`));
@@ -282,7 +424,7 @@ function addFrontendArtifacts(add, plan) {
282
424
  }
283
425
  function renderDirectBuildAndTestGuide(plan) {
284
426
  let backendCommands;
285
- if (plan.projectType.id === 'genai' || plan.apiStack.id === 'python-fastapi') {
427
+ if (plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi') {
286
428
  backendCommands = `# macOS and Linux
287
429
  python3 -m venv .venv
288
430
  .venv/bin/python -m pip install -e "./backend[test]"
@@ -310,7 +452,7 @@ npm ci
310
452
  npm run build
311
453
  \`\`\`
312
454
  ` : '';
313
- const windowsPythonCommands = plan.projectType.id === 'genai' || plan.apiStack.id === 'python-fastapi'
455
+ const windowsPythonCommands = plan.workload === 'genai' || plan.apiStack.id === 'python-fastapi'
314
456
  ? `
315
457
 
316
458
  Equivalent Windows dependency commands:
@@ -321,7 +463,7 @@ py -3 -m venv .venv
321
463
  \`\`\`
322
464
  `
323
465
  : '';
324
- const functionCommands = hasFunctionWorker(plan) ? `
466
+ const functionCommands = plan.workload === 'genai' && hasFunctionWorker(plan) ? `
325
467
 
326
468
  Run the Function worker unit tests from the same Python virtual environment:
327
469
 
@@ -391,7 +533,7 @@ function renderGeneratedConfigurationGuide(plan) {
391
533
  const frontendConfiguration = plan.includeFrontend
392
534
  ? '\n- `frontend/.env` configures `VITE_API_BASE_URL`; the production build does not contact the backend.'
393
535
  : '';
394
- if (plan.projectType.id === 'standard') {
536
+ if (plan.workload === 'standard') {
395
537
  return `## Runtime Configuration
396
538
 
397
539
  Copy \`.env.example\` to \`.env\` before running outside Docker Compose. 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\`.${frontendConfiguration}
@@ -417,7 +559,7 @@ Liftoff rejects malformed, traversal, absolute, drive-qualified, UNC, separator-
417
559
  `;
418
560
  }
419
561
  function renderRootReadme(plan) {
420
- if (plan.projectType.id === 'standard') {
562
+ if (plan.workload === 'standard') {
421
563
  return `# ${plan.projectName}
422
564
 
423
565
  Generated by Mission Control Liftoff.
@@ -524,7 +666,7 @@ migration/legacy/
524
666
  `;
525
667
  }
526
668
  function renderEnvExample(plan) {
527
- if (plan.projectType.id === 'standard') {
669
+ if (plan.workload === 'standard') {
528
670
  return renderStandardEnv(plan);
529
671
  }
530
672
  const pattern = genAiPattern(plan);
@@ -1717,7 +1859,7 @@ function renderDockerCompose(plan) {
1717
1859
  depends_on:
1718
1860
  - backend
1719
1861
  ` : '';
1720
- const postgresImage = plan.projectType.id === 'genai' ? 'pgvector/pgvector:pg16' : 'postgres:16-alpine';
1862
+ const postgresImage = plan.workload === 'genai' ? 'pgvector/pgvector:pg16' : 'postgres:16-alpine';
1721
1863
  return `services:
1722
1864
  backend:
1723
1865
  build:
@@ -1761,7 +1903,7 @@ ${frontendService}
1761
1903
  ports:
1762
1904
  - "8025:8025"
1763
1905
 
1764
- ${plan.projectType.id === 'genai' ? ` langfuse:
1906
+ ${plan.workload === 'genai' ? ` langfuse:
1765
1907
  image: langfuse/langfuse:2
1766
1908
  profiles:
1767
1909
  - observability
@@ -1861,12 +2003,14 @@ ${functionVariables}
1861
2003
  `;
1862
2004
  }
1863
2005
  function renderTofuMain(plan) {
1864
- const functionPattern = hasFunctionWorker(plan) ? genAiPattern(plan) : undefined;
2006
+ const functionPattern = plan.workload === 'genai' && hasFunctionWorker(plan)
2007
+ ? genAiPattern(plan)
2008
+ : undefined;
1865
2009
  const names = buildAzureResourceNames(plan, '${var.environment}', '${var.resource_suffix}');
1866
2010
  const queueName = hasFunctionWorker(plan)
1867
2011
  ? 'var.function_worker_queue_name'
1868
2012
  : JSON.stringify(DEFAULT_FUNCTION_WORKER_QUEUE_NAME);
1869
- const projectIdentityEnv = plan.projectType.id === 'genai' ? `
2013
+ const projectIdentityEnv = plan.workload === 'genai' ? `
1870
2014
  env {
1871
2015
  name = "GENAI_PATTERN"
1872
2016
  value = "${genAiPattern(plan).id}"
@@ -2214,7 +2358,7 @@ function renderTofuRemoteStateExample() {
2214
2358
  }
2215
2359
  function renderTofuReadme(plan) {
2216
2360
  const env = plan.environments[0]?.id ?? 'dev';
2217
- const functionSection = hasFunctionWorker(plan) ? `
2361
+ const functionSection = plan.workload === 'genai' && hasFunctionWorker(plan) ? `
2218
2362
  ## Azure Functions Worker
2219
2363
 
2220
2364
  This project includes an Azure Functions worker under \`functions/${functionWorkerName(plan)}\`. The OpenTofu configuration attaches one user-assigned identity, grants its principal the Service Bus Data Receiver role, and selects it through \`ServiceBusConnection__clientId\` plus \`ServiceBusConnection__fullyQualifiedNamespace\`. \`function_worker_queue_name\` provisions the queue, configures \`SERVICEBUS_QUEUE_NAME\`, and drives the worker queue output. Function host storage uses the complete key-backed \`AzureWebJobsStorage\` connection setting.
@@ -2283,7 +2427,7 @@ function renderTofuTfvars(plan, environment) {
2283
2427
  }
2284
2428
  function renderOpenSpecConfig(plan) {
2285
2429
  const frontendRule = plan.includeFrontend ? '\n - Keep frontend code under frontend.' : '';
2286
- if (plan.projectType.id === 'standard') {
2430
+ if (plan.workload === 'standard') {
2287
2431
  const backendRule = plan.apiStack.id === 'python-fastapi'
2288
2432
  ? 'Keep backend API code under backend/apis.'
2289
2433
  : plan.apiStack.id === 'node-fastify'
@@ -2358,7 +2502,7 @@ ${functionsRule}
2358
2502
  `;
2359
2503
  }
2360
2504
  function renderSeedProposal(plan) {
2361
- if (plan.projectType.id === 'standard') {
2505
+ if (plan.workload === 'standard') {
2362
2506
  return `## Why
2363
2507
 
2364
2508
  Bootstrap the generated ${plan.apiStack.label} standard application baseline created by Mission Control Liftoff.
@@ -2411,7 +2555,7 @@ ${functionsChange}
2411
2555
  `;
2412
2556
  }
2413
2557
  function renderSeedDesign(plan) {
2414
- if (plan.projectType.id === 'standard') {
2558
+ if (plan.workload === 'standard') {
2415
2559
  return `## Context
2416
2560
 
2417
2561
  This standard project was generated with Liftoff using ${plan.apiStack.label}, Azure, OpenTofu, and ${plan.specWorkflow.label}.
@@ -2475,7 +2619,7 @@ function renderSeedTasks() {
2475
2619
  `;
2476
2620
  }
2477
2621
  function renderSpecKitConstitution(plan) {
2478
- if (plan.projectType.id === 'standard') {
2622
+ if (plan.workload === 'standard') {
2479
2623
  const backendLayout = plan.apiStack.id === 'python-fastapi'
2480
2624
  ? 'backend/apis'
2481
2625
  : plan.apiStack.id === 'node-fastify' ? 'backend/src' : 'backend/cmd/api and backend/internal';
@@ -2497,7 +2641,9 @@ Projects MUST include Docker Compose for local development with PostgreSQL, Redi
2497
2641
  Services MUST use structured logging and environment-specific configuration for ${plan.environments.map((environment) => environment.id).join(', ')}.
2498
2642
  `;
2499
2643
  }
2500
- const functionsLayout = hasFunctionWorker(plan) ? ` Azure Functions trigger adapters live under functions/${functionWorkerName(plan)} and call shared orchestration from backend/orchestration.` : '';
2644
+ const functionsLayout = plan.workload === 'genai' && hasFunctionWorker(plan)
2645
+ ? ` Azure Functions trigger adapters live under functions/${functionWorkerName(plan)} and call shared orchestration from backend/orchestration.`
2646
+ : '';
2501
2647
  return `# Mission Control Liftoff Constitution
2502
2648
 
2503
2649
  ## Principle 1: Approved Application Stack
@@ -2551,8 +2697,8 @@ createApp(App).mount('#app');
2551
2697
  `;
2552
2698
  }
2553
2699
  function renderFrontendApp(plan) {
2554
- const descriptor = plan.projectType.id === 'genai' ? `${genAiPattern(plan).label} starter` : `${plan.apiStack.label} starter`;
2555
- const apiContract = plan.projectType.id === 'standard'
2700
+ const descriptor = plan.workload === 'genai' ? `${genAiPattern(plan).label} starter` : `${plan.apiStack.label} starter`;
2701
+ const apiContract = plan.workload === 'standard'
2556
2702
  ? { route: '/api', method: 'GET', bodyField: '', queryParameter: '', requiresInput: false }
2557
2703
  : genAiPattern(plan).id === 'rag'
2558
2704
  ? { route: `${genAiPattern(plan).routePrefix}/query`, method: 'POST', bodyField: 'question', queryParameter: '', requiresInput: true }