@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
@@ -0,0 +1,92 @@
1
+ # Spec workflows and agents
2
+
3
+ Spec-driven governance and coding-agent integration are common to every
4
+ Liftoff workload.
5
+
6
+ ## Choose a spec workflow
7
+
8
+ ### OpenSpec
9
+
10
+ OpenSpec organizes proposed behavior changes as reviewable artifacts before
11
+ implementation. Liftoff runs the pinned official OpenSpec initializer in
12
+ temporary staging and passes every selected coding agent in stable order.
13
+
14
+ Generated projects contain `openspec/` plus the selected agent integration
15
+ markers.
16
+
17
+ ### Spec Kit
18
+
19
+ Spec Kit provides a specification, planning, and implementation workflow.
20
+ Liftoff initializes the selected default coding agent first, adds every
21
+ secondary integration, and records the default separately from the full agent
22
+ set.
23
+
24
+ Generated projects contain `.specify/`, `specs/`, and the selected agent
25
+ integration markers.
26
+
27
+ Liftoff does not hand-write framework-owned core or integration output. It
28
+ executes the tested official initializer, confines its writes to allowed roots,
29
+ and validates the declared markers before merging.
30
+
31
+ ## Select coding agents
32
+
33
+ Liftoff supports:
34
+
35
+ - GitHub Copilot.
36
+ - Claude Code.
37
+ - Both agents together.
38
+
39
+ On a real TTY, use the arrow keys to move, Space to mark or unmark an agent,
40
+ and Enter to confirm. At least one agent is required.
41
+
42
+ When standard input is redirected, the deterministic fallback accepts a
43
+ comma-separated value such as:
44
+
45
+ ```text
46
+ copilot,claude
47
+ ```
48
+
49
+ Noninteractive commands use:
50
+
51
+ ```bash
52
+ --agents copilot,claude
53
+ ```
54
+
55
+ Spec Kit additionally requires `--default-agent copilot` or
56
+ `--default-agent claude` when both are selected. OpenSpec does not record a
57
+ default agent.
58
+
59
+ ## Readiness and ownership
60
+
61
+ The selected framework CLI and every selected agent are blocking workstation
62
+ requirements. Liftoff may detect Copilot through its CLI or supported VS Code
63
+ extensions. Claude Code is checked through version and health probes.
64
+
65
+ Framework files remain owned by the official initializer. Liftoff validates
66
+ them but excludes framework-owned output from durable artifact hashes so a
67
+ framework can manage its own lifecycle.
68
+
69
+ ## Optional Code Apps plugin
70
+
71
+ Power Apps projects can request Microsoft's
72
+ `code-apps-preview@power-platform-skills` plugin. The integration is optional,
73
+ Preview, and independent for each selected agent.
74
+
75
+ Liftoff runs only allowlisted read-only plugin-list probes. A missing or
76
+ unobservable plugin produces advisory guidance and never makes initialization
77
+ or doctor fail by itself.
78
+
79
+ Install the targeted plugin manually inside the selected agent:
80
+
81
+ ```text
82
+ /plugin marketplace add microsoft/power-platform-skills
83
+ /plugin install code-apps-preview@power-platform-skills
84
+ ```
85
+
86
+ Liftoff does not run Microsoft's broad marketplace installer and does not
87
+ invoke `/create-code-app`. The plugin's connector and deployment skills remain
88
+ available for post-creation work.
89
+
90
+ Changing the valid plugin preference in `liftoff.config.json` is reconciled by
91
+ `liftoff update`; it updates generated guidance and manifest intent without
92
+ creating API or infrastructure artifacts.
@@ -0,0 +1,133 @@
1
+ # Troubleshooting
2
+
3
+ ## The installed version is older than canonical npm
4
+
5
+ Check the canonical release:
6
+
7
+ ```bash
8
+ npm view @msn-control/liftoff@latest version --registry=https://registry.npmjs.org
9
+ liftoff --version
10
+ ```
11
+
12
+ Versions before 0.3.0 are unsupported.
13
+
14
+ If a managed registry exposes an older version, stop onboarding and ask the
15
+ mirror owner to synchronize or approve the release. Liftoff does not modify
16
+ `.npmrc`. A successful installation of an older mirrored package does not make
17
+ that version supported.
18
+
19
+ ## An installed tool is still reported missing
20
+
21
+ Installers that change `PATH` may require a new terminal. Open one, rerun:
22
+
23
+ ```bash
24
+ liftoff doctor
25
+ ```
26
+
27
+ Do not assume installer exit code 0 proves readiness; the requirement probe
28
+ must pass.
29
+
30
+ ## Initialization wants to create a child folder
31
+
32
+ In-place initialization occurs only when the current directory exactly matches
33
+ the Git worktree root:
34
+
35
+ ```bash
36
+ git rev-parse --show-toplevel
37
+ pwd
38
+ ```
39
+
40
+ Change to that root and rerun `liftoff init`. See
41
+ [existing repositories](existing-repositories.md).
42
+
43
+ ## Initialization reports replacement conflicts
44
+
45
+ Review the complete replacement list. Approve interactively or rerun with
46
+ `--force` only when every listed regular file may be replaced.
47
+
48
+ `--force` cannot bypass directories, symlinks, unsafe ancestors, an existing
49
+ manifest, or a non-empty migration target. Move or rename the structural
50
+ conflict and retry.
51
+
52
+ ## A handled write failed
53
+
54
+ Liftoff reports whether rollback completed. Correct the filesystem problem and
55
+ retry. If rollback was incomplete, stop and inspect every reported path before
56
+ running another write command.
57
+
58
+ ## Validation reports a malformed or unsafe manifest
59
+
60
+ Manifest paths must be portable path-part arrays confined to the project.
61
+ Traversal, absolute, drive-qualified, UNC, embedded-separator, empty, and
62
+ symlink-escaping paths are rejected before artifact access.
63
+
64
+ Restore `liftoff.manifest.json` from version control or regenerate the project
65
+ with the matching Liftoff version. Do not weaken path validation or retain a
66
+ hand-edited unsafe path.
67
+
68
+ ## Update reports conflicts or orphans
69
+
70
+ `liftoff update` does not write. Review the report:
71
+
72
+ - Apply safe changes with `liftoff update --apply`.
73
+ - Developer conflicts remain untouched unless you explicitly use
74
+ `liftoff update --apply --force`.
75
+ - Orphans are never deleted automatically.
76
+
77
+ Commit local work before applying when possible.
78
+
79
+ ## Power Apps dependencies or CLI are missing
80
+
81
+ From the project root:
82
+
83
+ ```bash
84
+ npm ci
85
+ npx --no-install power-apps --version
86
+ npm run dev
87
+ ```
88
+
89
+ The CLI is project-local. Do not replace the locked install with an unrelated
90
+ global package.
91
+
92
+ ## The Code Apps plugin is missing or not observable
93
+
94
+ Plugin state is advisory. In each selected agent session, use:
95
+
96
+ ```text
97
+ /plugin marketplace add microsoft/power-platform-skills
98
+ /plugin install code-apps-preview@power-platform-skills
99
+ ```
100
+
101
+ Then rerun `liftoff doctor`. Do not run `/create-code-app` in a Liftoff project.
102
+ Liftoff does not run Microsoft's broad plugin installer.
103
+
104
+ ## Terminal output is hard to read or being captured
105
+
106
+ Rich output requires a wide TTY. Redirected output automatically uses
107
+ deterministic plain text. To disable color while retaining layout:
108
+
109
+ ```bash
110
+ NO_COLOR=1 liftoff doctor
111
+ ```
112
+
113
+ Use `--json` with validate, doctor, or update for machine consumption.
114
+
115
+ ## `liftoff create` is rejected
116
+
117
+ Use:
118
+
119
+ ```bash
120
+ liftoff init
121
+ ```
122
+
123
+ The old command has no compatibility alias.
124
+
125
+ ## Get command syntax
126
+
127
+ ```bash
128
+ liftoff help
129
+ liftoff init --help
130
+ liftoff update --help
131
+ ```
132
+
133
+ Unknown or incompatible inputs fail instead of falling back to another action.
@@ -0,0 +1,128 @@
1
+ # Workloads
2
+
3
+ Liftoff asks for one workload first, then routes only the questions,
4
+ prerequisites, generated artifacts, and maintenance checks that apply to it.
5
+
6
+ ## At a glance
7
+
8
+ | Workload | Primary choices | Required runtime | Liftoff-generated platform areas |
9
+ | --- | --- | --- | --- |
10
+ | GenAI application | Pattern, Azure region, environments, optional frontend | Python 3.12 and Node.js 20.19+ | API, orchestration, data, messaging, Docker, Azure OpenTofu |
11
+ | API application | Python, Node.js, or Go API stack; Azure region; environments; optional frontend | Selected API runtime and Node.js 20.19+ | API, data, Docker, Azure OpenTofu |
12
+ | Power Apps code app | Spec workflow, agents, optional Code Apps plugin | Node.js 22.12+ | Official React/Vite starter and project-local Power Apps tooling |
13
+
14
+ All three workloads continue into the common OpenSpec or Spec Kit and coding
15
+ agent flow.
16
+
17
+ ## GenAI application
18
+
19
+ ### Questions
20
+
21
+ - Project name.
22
+ - GenAI pattern such as prompt, chatbot, RAG, agent, multi-agent, or workflow.
23
+ - Azure region and generated environments.
24
+ - Whether to generate a frontend.
25
+ - Spec workflow and coding agents.
26
+
27
+ The selected pattern fixes the API stack to Python, FastAPI, and PydanticAI.
28
+
29
+ ### Generated output
30
+
31
+ - FastAPI backend and Scalar/OpenAPI integration.
32
+ - PydanticAI orchestration, prompts, and model configuration boundaries.
33
+ - PostgreSQL and pattern-specific Redis or Azure Service Bus boundaries.
34
+ - Offline-testable tracing and integration adapters.
35
+ - Docker Compose and Azure OpenTofu.
36
+ - Optional Vue frontend and pattern-specific Azure Functions workers.
37
+
38
+ ### Deferred actions
39
+
40
+ Liftoff does not insert model credentials, sign in to cloud services, or deploy
41
+ resources. Configure `.env`, authenticate separately, and review generated
42
+ infrastructure before applying it.
43
+
44
+ ## API application
45
+
46
+ ### Questions
47
+
48
+ - Project name.
49
+ - API stack: Python/FastAPI, Node.js/Fastify with TypeScript, or Go/Huma v2
50
+ with Chi.
51
+ - Azure region and generated environments.
52
+ - Whether to generate a frontend.
53
+ - Spec workflow and coding agents.
54
+
55
+ ### Generated output
56
+
57
+ - Stack-native API, OpenAPI, tests, and database migrations.
58
+ - PostgreSQL, Redis, Azurite, and Mailpit local services where applicable.
59
+ - Docker Compose and Azure OpenTofu.
60
+ - Optional Vue frontend.
61
+
62
+ ### Deferred actions
63
+
64
+ Service secrets, cloud authentication, external integrations, and deployment
65
+ remain explicit developer or delivery-pipeline actions.
66
+
67
+ ## Power Apps code app
68
+
69
+ Power Apps uses an immutable, packaged snapshot of Microsoft's official
70
+ [`PowerAppsCodeApps/templates/starter`](https://github.com/microsoft/PowerAppsCodeApps/tree/main/templates/starter).
71
+ Initialization and update do not fetch the mutable upstream branch.
72
+
73
+ ### Questions
74
+
75
+ - Project name.
76
+ - OpenSpec or Spec Kit.
77
+ - GitHub Copilot, Claude Code, or both.
78
+ - Spec Kit default agent when both are selected.
79
+ - Whether to request the optional Microsoft Code Apps agent plugin
80
+ (Preview).
81
+
82
+ Power Apps does not ask for an API stack, GenAI pattern, cloud, region, API
83
+ environment, API frontend, Docker, or OpenTofu selection.
84
+
85
+ ### Generated output
86
+
87
+ - React, Vite, TypeScript, Tailwind, and the Power Apps SDK and Vite plugin.
88
+ - Locked root `package.json` and `package-lock.json`.
89
+ - Project-local `power-apps` CLI supplied by the generated dependency graph.
90
+ - `liftoff.config.json`, schema-v4 `liftoff.manifest.json`, starter provenance,
91
+ and third-party attribution.
92
+ - Official OpenSpec or Spec Kit output and every selected agent marker.
93
+
94
+ Liftoff does not create an API backend, `docker-compose.yml`,
95
+ `infrastructure/`, API environments, or an environment-bound
96
+ `power.config.json` for this workload.
97
+
98
+ ### Deferred actions
99
+
100
+ After initialization:
101
+
102
+ ```bash
103
+ npm ci
104
+ npm run dev
105
+ npx --no-install power-apps --version
106
+ ```
107
+
108
+ Environment binding, connector creation, authentication, and deployment remain
109
+ outside initialization. Follow Microsoft's current Code Apps documentation
110
+ before running `power-apps init` or `power-apps push`.
111
+
112
+ If the optional Code Apps plugin was requested, install only the targeted
113
+ plugin from an agent session:
114
+
115
+ ```text
116
+ /plugin marketplace add microsoft/power-platform-skills
117
+ /plugin install code-apps-preview@power-platform-skills
118
+ ```
119
+
120
+ Do not run `/create-code-app` inside the generated project; Liftoff already
121
+ created the application.
122
+
123
+ ## Change workload later
124
+
125
+ `liftoff update` reconciles supported desired-state changes within the recorded
126
+ workload. It does not convert among GenAI, API, and Power Apps or change an API
127
+ stack, GenAI pattern, or user-supplied starter identity. Initialize a fresh
128
+ project or use a supported migration flow instead.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@msn-control/liftoff",
3
- "version": "0.4.0",
4
- "description": "Mission Control Liftoff CLI for scaffolding governed GenAI and standard API applications.",
3
+ "version": "0.5.0",
4
+ "description": "Interactive CLI for governed GenAI, API, and Power Apps code app projects.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",
7
7
  "homepage": "https://github.com/voyager163/liftoff#readme",
@@ -21,6 +21,7 @@
21
21
  "fastify",
22
22
  "golang",
23
23
  "pydanticai",
24
+ "power-apps",
24
25
  "opentofu",
25
26
  "openspec",
26
27
  "mission-control"
@@ -31,6 +32,8 @@
31
32
  "files": [
32
33
  "dist",
33
34
  "assets/locks",
35
+ "assets/power-apps-code-app",
36
+ "docs",
34
37
  "README.md",
35
38
  "LICENSE"
36
39
  ],
@@ -41,7 +44,9 @@
41
44
  "scripts": {
42
45
  "build": "tsc -p tsconfig.json",
43
46
  "test": "vitest run",
47
+ "refresh:power-apps-starter": "node scripts/refresh-power-apps-starter.mjs",
44
48
  "smoke:package": "npm run build && node scripts/package-smoke-test.mjs",
49
+ "verify:power-apps-starter": "npm run build && node scripts/verify-power-apps-starter.mjs",
45
50
  "verify:release-identity": "npm run build && node scripts/verify-release-identity.mjs",
46
51
  "verify:published": "npm run build && node scripts/verify-published-package.mjs",
47
52
  "check": "npm run build && npm test"
@@ -56,6 +61,7 @@
56
61
  "vitest": "^4.1.9"
57
62
  },
58
63
  "dependencies": {
64
+ "@inquirer/prompts": "^7.10.1",
59
65
  "cross-spawn": "^7.0.6",
60
66
  "picocolors": "^1.1.1"
61
67
  }