@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
@@ -1,34 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
- "target": "ES2022",
5
- "useDefineForClassFields": true,
6
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
- "module": "ESNext",
8
- "types": ["vite/client"],
9
- "skipLibCheck": true,
10
-
11
- /* Bundler mode */
12
- "moduleResolution": "bundler",
13
- "allowImportingTsExtensions": true,
14
- "verbatimModuleSyntax": true,
15
- "moduleDetection": "force",
16
- "noEmit": true,
17
- "jsx": "react-jsx",
18
-
19
- /* Linting */
20
- "strict": true,
21
- "noUnusedLocals": true,
22
- "noUnusedParameters": true,
23
- "erasableSyntaxOnly": true,
24
- "noFallthroughCasesInSwitch": true,
25
- "noUncheckedSideEffectImports": true,
26
-
27
- /* Paths */
28
- "baseUrl": ".",
29
- "paths": {
30
- "@/*": ["src/*"]
31
- }
32
- },
33
- "include": ["src"]
34
- }
@@ -1,13 +0,0 @@
1
- {
2
- "files": [],
3
- "references": [
4
- { "path": "./tsconfig.app.json" },
5
- { "path": "./tsconfig.node.json" }
6
- ],
7
- "compilerOptions": {
8
- "baseUrl": ".",
9
- "paths": {
10
- "@/*": ["src/*"]
11
- }
12
- }
13
- }
@@ -1,26 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
- "target": "ES2023",
5
- "lib": ["ES2023"],
6
- "module": "ESNext",
7
- "types": ["node"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
-
17
- /* Linting */
18
- "strict": true,
19
- "noUnusedLocals": true,
20
- "noUnusedParameters": true,
21
- "erasableSyntaxOnly": true,
22
- "noFallthroughCasesInSwitch": true,
23
- "noUncheckedSideEffectImports": true
24
- },
25
- "include": ["vite.config.ts"]
26
- }
@@ -1,19 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import path from 'path'
3
- import react from '@vitejs/plugin-react'
4
- import tailwindcss from '@tailwindcss/vite'
5
- import { powerApps } from '@microsoft/power-apps-vite';
6
-
7
- // https://vite.dev/config/
8
- export default defineConfig({
9
- plugins: [
10
- react(),
11
- tailwindcss(),
12
- powerApps()
13
- ],
14
- resolve: {
15
- alias: {
16
- "@": path.resolve(__dirname, "./src"),
17
- },
18
- }
19
- })
@@ -1,27 +0,0 @@
1
- # Power Apps code-app starter asset
2
-
3
- Liftoff packages the official Microsoft starter from:
4
-
5
- - Repository: `https://github.com/microsoft/PowerAppsCodeApps`
6
- - Path: `templates/starter`
7
- - Commit: `3438c352483e40982f6c5c0fc36fd71f8e7adbbb`
8
- - License: MIT
9
-
10
- The versioned directory contains the copied source, generated lockfile, upstream license, and a
11
- catalog of portable paths, logical names, provenance, and SHA-256 hashes. Runtime generation reads
12
- only this checked-in catalog. The upstream `.gitignore` is also copied to the package-safe
13
- `packaged/gitignore` path because npm excludes nested `.gitignore` files from tarballs.
14
-
15
- ## Refresh procedure
16
-
17
- 1. Use Node 22 and run
18
- `npm run refresh:power-apps-starter -- <40-character-immutable-commit>`.
19
- 2. Review the displayed source diff, regenerated lock/catalog, upstream MIT license, package-root
20
- identity, hashes, and pinned metadata change. The command rejects symlinks, generated bindings,
21
- caches, dependencies, and build output.
22
- 3. Update commit-specific expectations, then run `npm run verify:power-apps-starter`, the package
23
- smoke test, and the full Liftoff test suite.
24
- 4. Review `THIRD_PARTY_NOTICES.md` output and packed-package size before release.
25
-
26
- This maintainer-only command downloads the requested immutable archive and never runs during
27
- `liftoff init`, planning, validation, updates, or doctor checks.
@@ -1,13 +0,0 @@
1
- import type { CommandRunner } from './process-runner.js';
2
- import type { CodingAgentDefinition, CodingAgentId } from './types.js';
3
- export type CodeAppsPluginState = 'ready' | 'missing' | 'not-observable';
4
- export interface CodeAppsPluginProbe {
5
- agent: CodingAgentDefinition;
6
- id: `code-apps-plugin:${CodingAgentId}`;
7
- state: CodeAppsPluginState;
8
- detail: string;
9
- remedy?: string;
10
- }
11
- export declare function codeAppsPluginIdentity(): string;
12
- export declare function codeAppsPluginGuidance(agent: CodingAgentDefinition): string;
13
- export declare function probeCodeAppsPlugin(agents: CodingAgentDefinition[], runner: CommandRunner, cwd?: string): Promise<CodeAppsPluginProbe[]>;
@@ -1,69 +0,0 @@
1
- import { codeAppsPlugin } from './catalogs.js';
2
- export function codeAppsPluginIdentity() {
3
- return `${codeAppsPlugin.id}@${codeAppsPlugin.marketplace}`;
4
- }
5
- export function codeAppsPluginGuidance(agent) {
6
- return [
7
- `Open ${agent.label} and add the marketplace with`,
8
- '`/plugin marketplace add microsoft/power-platform-skills`, then install',
9
- `\`/plugin install ${codeAppsPluginIdentity()}\`.`,
10
- 'Do not run `/create-code-app` in this project; use the connector and deployment skills',
11
- 'after Liftoff creates the application.'
12
- ].join(' ');
13
- }
14
- export async function probeCodeAppsPlugin(agents, runner, cwd) {
15
- return Promise.all(agents.map(async (agent) => {
16
- const id = `code-apps-plugin:${agent.id}`;
17
- const command = codeAppsPlugin.probes[agent.id];
18
- if (!command) {
19
- return {
20
- agent,
21
- id,
22
- state: 'not-observable',
23
- detail: `${agent.label} has no allowlisted plugin-list probe.`,
24
- remedy: codeAppsPluginGuidance(agent)
25
- };
26
- }
27
- const result = await runner.run(command, { cwd, timeoutMs: 15_000 });
28
- if (result.errorCode === 'ENOENT' || result.errorCode === 'UNKNOWN') {
29
- return {
30
- agent,
31
- id,
32
- state: 'not-observable',
33
- detail: `${agent.label} is unavailable, so plugin state cannot be observed.`,
34
- remedy: codeAppsPluginGuidance(agent)
35
- };
36
- }
37
- if (result.status !== 0 || result.timedOut) {
38
- return {
39
- agent,
40
- id,
41
- state: 'not-observable',
42
- detail: result.timedOut
43
- ? `${agent.label} plugin-list probe timed out.`
44
- : (result.stderr || result.errorMessage || `${agent.label} does not expose plugin state through this command.`)
45
- .trim()
46
- .split(/\r?\n/)[0],
47
- remedy: codeAppsPluginGuidance(agent)
48
- };
49
- }
50
- const installed = `${result.stdout}\n${result.stderr}`
51
- .toLowerCase()
52
- .includes(codeAppsPlugin.id);
53
- return installed
54
- ? {
55
- agent,
56
- id,
57
- state: 'ready',
58
- detail: `${codeAppsPluginIdentity()} ${codeAppsPlugin.version} is reported by ${agent.label}.`
59
- }
60
- : {
61
- agent,
62
- id,
63
- state: 'missing',
64
- detail: `${codeAppsPluginIdentity()} is not listed by ${agent.label}.`,
65
- remedy: codeAppsPluginGuidance(agent)
66
- };
67
- }));
68
- }
69
- //# sourceMappingURL=code-apps-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-apps-plugin.js","sourceRoot":"","sources":["../src/code-apps-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export interface PowerAppsStarterAsset {
2
- logicalName: string;
3
- pathParts: string[];
4
- assetPath: string;
5
- sha256: string;
6
- provenance: 'upstream' | 'generated-lockfile';
7
- }
8
- export interface PowerAppsStarterCatalog {
9
- schemaVersion: 1;
10
- source: {
11
- repository: string;
12
- path: string;
13
- commit: string;
14
- archiveSha256: string;
15
- };
16
- license: {
17
- spdx: 'MIT';
18
- assetPath: string;
19
- sha256: string;
20
- };
21
- lockfile: {
22
- nodeBaseline: string;
23
- npmVersion: string;
24
- sha256: string;
25
- };
26
- files: PowerAppsStarterAsset[];
27
- }
28
- export declare const powerAppsStarterCatalog: PowerAppsStarterCatalog;
29
- export declare function readPowerAppsStarterAsset(asset: PowerAppsStarterAsset): string;
30
- export declare function readPowerAppsStarterLicense(): string;
@@ -1,131 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { readFileSync } from 'node:fs';
3
- import { fileURLToPath } from 'node:url';
4
- import { powerAppsCodeAppStarter } from './catalogs.js';
5
- const HASH_PATTERN = /^sha256:[0-9a-f]{64}$/;
6
- const ASSET_ROOT = `../assets/power-apps-code-app/${powerAppsCodeAppStarter.commit}/`;
7
- const catalogUrl = new URL(`${ASSET_ROOT}catalog.json`, import.meta.url);
8
- function hash(content) {
9
- return `sha256:${createHash('sha256').update(content).digest('hex')}`;
10
- }
11
- function isRecord(value) {
12
- return typeof value === 'object' && value !== null && !Array.isArray(value);
13
- }
14
- function validatePathParts(value, label) {
15
- if (!Array.isArray(value) || value.length === 0) {
16
- throw new Error(`${label} must be a non-empty path-part array.`);
17
- }
18
- return value.map((part, index) => {
19
- if (typeof part !== 'string' ||
20
- part.length === 0 ||
21
- part === '.' ||
22
- part === '..' ||
23
- part.includes('/') ||
24
- part.includes('\\') ||
25
- part.includes('\0')) {
26
- throw new Error(`${label}[${index}] is not a portable path part.`);
27
- }
28
- return part;
29
- });
30
- }
31
- function requiredString(record, field, label) {
32
- const value = record[field];
33
- if (typeof value !== 'string' || value.length === 0) {
34
- throw new Error(`${label}.${field} must be a non-empty string.`);
35
- }
36
- return value;
37
- }
38
- function parseCatalog() {
39
- const parsed = JSON.parse(readFileSync(fileURLToPath(catalogUrl), 'utf8'));
40
- if (!isRecord(parsed) || parsed.schemaVersion !== 1) {
41
- throw new Error('Power Apps starter catalog must use schema version 1.');
42
- }
43
- if (!isRecord(parsed.source) || !isRecord(parsed.license) || !isRecord(parsed.lockfile)) {
44
- throw new Error('Power Apps starter catalog metadata is incomplete.');
45
- }
46
- const source = {
47
- repository: requiredString(parsed.source, 'repository', 'catalog.source'),
48
- path: requiredString(parsed.source, 'path', 'catalog.source'),
49
- commit: requiredString(parsed.source, 'commit', 'catalog.source'),
50
- archiveSha256: requiredString(parsed.source, 'archiveSha256', 'catalog.source')
51
- };
52
- if (source.repository !== powerAppsCodeAppStarter.repository ||
53
- source.path !== powerAppsCodeAppStarter.path ||
54
- source.commit !== powerAppsCodeAppStarter.commit) {
55
- throw new Error('Power Apps starter catalog identity does not match the pinned workload catalog.');
56
- }
57
- if (!HASH_PATTERN.test(source.archiveSha256)) {
58
- throw new Error('Power Apps starter archive hash is invalid.');
59
- }
60
- const license = {
61
- spdx: requiredString(parsed.license, 'spdx', 'catalog.license'),
62
- assetPath: requiredString(parsed.license, 'assetPath', 'catalog.license'),
63
- sha256: requiredString(parsed.license, 'sha256', 'catalog.license')
64
- };
65
- if (license.spdx !== 'MIT' || !HASH_PATTERN.test(license.sha256)) {
66
- throw new Error('Power Apps starter license metadata is invalid.');
67
- }
68
- const lockfile = {
69
- nodeBaseline: requiredString(parsed.lockfile, 'nodeBaseline', 'catalog.lockfile'),
70
- npmVersion: requiredString(parsed.lockfile, 'npmVersion', 'catalog.lockfile'),
71
- sha256: requiredString(parsed.lockfile, 'sha256', 'catalog.lockfile')
72
- };
73
- if (!HASH_PATTERN.test(lockfile.sha256)) {
74
- throw new Error('Power Apps starter lockfile hash is invalid.');
75
- }
76
- if (!Array.isArray(parsed.files) || parsed.files.length === 0) {
77
- throw new Error('Power Apps starter catalog files must be a non-empty array.');
78
- }
79
- const logicalNames = new Set();
80
- const paths = new Set();
81
- const files = parsed.files.map((value, index) => {
82
- if (!isRecord(value)) {
83
- throw new Error(`catalog.files[${index}] must be an object.`);
84
- }
85
- const logicalName = requiredString(value, 'logicalName', `catalog.files[${index}]`);
86
- const pathParts = validatePathParts(value.pathParts, `catalog.files[${index}].pathParts`);
87
- const assetPath = requiredString(value, 'assetPath', `catalog.files[${index}]`);
88
- const sha256 = requiredString(value, 'sha256', `catalog.files[${index}]`);
89
- const provenance = requiredString(value, 'provenance', `catalog.files[${index}]`);
90
- if (provenance !== 'upstream' && provenance !== 'generated-lockfile') {
91
- throw new Error(`catalog.files[${index}].provenance is invalid.`);
92
- }
93
- const isGitignore = pathParts.length === 1 && pathParts[0] === '.gitignore';
94
- const expectedAssetPath = isGitignore
95
- ? assetPath === 'packaged/gitignore'
96
- : assetPath.startsWith('starter/');
97
- if (!expectedAssetPath || assetPath.includes('..') || !HASH_PATTERN.test(sha256)) {
98
- throw new Error(`catalog.files[${index}] contains unsafe asset metadata.`);
99
- }
100
- const pathKey = pathParts.join('\0');
101
- if (logicalNames.has(logicalName) || paths.has(pathKey)) {
102
- throw new Error(`Power Apps starter catalog contains duplicate entry ${logicalName}.`);
103
- }
104
- logicalNames.add(logicalName);
105
- paths.add(pathKey);
106
- return { logicalName, pathParts, assetPath, sha256, provenance };
107
- });
108
- return {
109
- schemaVersion: 1,
110
- source,
111
- license: { spdx: 'MIT', assetPath: license.assetPath, sha256: license.sha256 },
112
- lockfile,
113
- files
114
- };
115
- }
116
- export const powerAppsStarterCatalog = parseCatalog();
117
- function readVerifiedAsset(assetPath, expectedHash) {
118
- const bytes = readFileSync(fileURLToPath(new URL(`${ASSET_ROOT}${assetPath}`, import.meta.url)));
119
- const actualHash = hash(bytes);
120
- if (actualHash !== expectedHash) {
121
- throw new Error(`Packaged Power Apps asset ${assetPath} failed integrity validation.`);
122
- }
123
- return bytes.toString('utf8');
124
- }
125
- export function readPowerAppsStarterAsset(asset) {
126
- return readVerifiedAsset(asset.assetPath, asset.sha256);
127
- }
128
- export function readPowerAppsStarterLicense() {
129
- return readVerifiedAsset(powerAppsStarterCatalog.license.assetPath, powerAppsStarterCatalog.license.sha256);
130
- }
131
- //# sourceMappingURL=power-apps-assets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"power-apps-assets.js","sourceRoot":"","sources":["../src/power-apps-assets.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AddArtifact } from './template-types.js';
2
- import type { PowerAppsCodeAppProjectPlan } from './types.js';
3
- export declare function addPowerAppsCodeAppArtifacts(add: AddArtifact, plan: PowerAppsCodeAppProjectPlan): void;
@@ -1,177 +0,0 @@
1
- import { codeAppsPlugin } from './catalogs.js';
2
- import { powerAppsStarterCatalog, readPowerAppsStarterAsset, readPowerAppsStarterLicense } from './power-apps-assets.js';
3
- import { renderGovernanceAssessmentGuide } from './repository-governance.js';
4
- import { OPEN_SPEC_DELIVERY, OPEN_SPEC_PROFILE, OPEN_SPEC_WORKFLOW_IDS } from './openspec-profile.js';
5
- function isRecord(value) {
6
- return typeof value === 'object' && value !== null && !Array.isArray(value);
7
- }
8
- function renderPackageJson(content, packageName) {
9
- const parsed = JSON.parse(content);
10
- if (!isRecord(parsed)) {
11
- throw new Error('Packaged Power Apps package.json must be an object.');
12
- }
13
- if (!isRecord(parsed.scripts)) {
14
- throw new Error('Packaged Power Apps package.json scripts must be an object.');
15
- }
16
- return JSON.stringify({
17
- ...parsed,
18
- name: packageName,
19
- scripts: {
20
- ...parsed.scripts,
21
- lint: 'eslint . --rule "react-refresh/only-export-components: off"'
22
- }
23
- }, null, 2);
24
- }
25
- function renderPackageLock(content, packageName) {
26
- const parsed = JSON.parse(content);
27
- if (!isRecord(parsed) || !isRecord(parsed.packages) || !isRecord(parsed.packages[''])) {
28
- throw new Error('Packaged Power Apps package-lock.json has an unsupported shape.');
29
- }
30
- return JSON.stringify({
31
- ...parsed,
32
- name: packageName,
33
- packages: {
34
- ...parsed.packages,
35
- '': {
36
- ...parsed.packages[''],
37
- name: packageName
38
- }
39
- }
40
- }, null, 2);
41
- }
42
- function renderReadme(plan) {
43
- const agents = plan.agents
44
- .map((agent) => `${agent.label}${agent.id === plan.defaultAgent?.id ? ' (default)' : ''}`)
45
- .join(', ');
46
- const pluginGuidance = plan.codeAppsPlugin
47
- ? `
48
- ## Optional Code Apps agent plugin
49
-
50
- This project requests the ${codeAppsPlugin.label}. In a selected agent session, add and install
51
- only the targeted plugin:
52
-
53
- \`\`\`text
54
- /plugin marketplace add microsoft/power-platform-skills
55
- /plugin install ${codeAppsPlugin.id}@${codeAppsPlugin.marketplace}
56
- \`\`\`
57
-
58
- Do not run \`/create-code-app\` here; Liftoff already created the application. Use the plugin's
59
- connector and deployment skills for post-creation work.
60
- `
61
- : '';
62
- const openSpecGuidance = plan.specWorkflow.id === 'openspec'
63
- ? [
64
- `- OpenSpec profile: ${OPEN_SPEC_PROFILE}; delivery: ${OPEN_SPEC_DELIVERY}; workflows: ${OPEN_SPEC_WORKFLOW_IDS.join(', ')}`,
65
- ...(plan.agents.some((agent) => agent.id === 'github-copilot')
66
- ? ['- GitHub Copilot cloud agent: controlled by `githubCopilot.cloudAgent` in `openspec/config.yaml`']
67
- : [])
68
- ].join('\n')
69
- : '';
70
- const governanceGuidance = plan.governanceProfile.id === 'none'
71
- ? 'Repository governance is disabled, so this project has no `/liftoff-setup` integration, managed phase graph, or credential-policy schema.'
72
- : 'When repository governance is enabled, `.liftoff/governance/README.md` explains deterministic setup. Run `/liftoff-setup` next from a selected agent; it completes, syncs, and archives the generated bootstrap seed, then stops at explicit authority gates. Rerun it to resume idempotently. Power Apps context does not invent a Liftoff backend, container, OpenTofu deployment, or API DAST lane.';
73
- return `# ${plan.projectName}
74
-
75
- Power Apps code app generated by Mission Control Liftoff from Microsoft's official starter.
76
-
77
- ## Start locally
78
-
79
- \`\`\`bash
80
- npm ci
81
- npm run dev
82
- \`\`\`
83
-
84
- ## Bind to Power Apps
85
-
86
- After dependencies are installed, initialize the local project with the packaged CLI:
87
-
88
- \`\`\`bash
89
- npx --no-install power-apps init
90
- \`\`\`
91
-
92
- Authentication, environment selection, connections, solutions, and deployment remain explicit
93
- Microsoft Power Platform actions. Liftoff does not generate \`power.config.json\`, tenant data,
94
- credentials, tokens, or connection identities.
95
-
96
- ## AI workflow
97
-
98
- - Spec workflow: ${plan.specWorkflow.label} ${plan.framework.version}
99
- - AI coding agents: ${agents}
100
- ${openSpecGuidance ? `${openSpecGuidance}\n` : ''}
101
- - Microsoft Code Apps preview plugin: ${plan.codeAppsPlugin ? 'requested' : 'not requested'}
102
-
103
- ## Quality checks
104
-
105
- The setup baseline is local only:
106
-
107
- \`\`\`bash
108
- npm run lint
109
- npm run build
110
- liftoff validate
111
- liftoff doctor
112
- \`\`\`
113
-
114
- Backend tests, frontend subproject builds, Docker Compose validation, OpenTofu
115
- format/init/validate, and API DAST are inapplicable because this generated
116
- workload has no Liftoff backend, \`frontend/\`, \`docker-compose.yml\`, or
117
- \`infrastructure/opentofu/azure\`. Setup does not run a live plan or apply, start
118
- containers, deploy, mutate GitHub, or ask for cloud credentials. Commit/push and
119
- Power Platform binding remain explicit; normal OpenSpec or Spec Kit feature and
120
- release work follows after the seed is archived.
121
-
122
- ## Liftoff maintenance
123
-
124
- \`liftoff upgrade --check\` and \`liftoff upgrade\` replace only a supported global Liftoff CLI installation. They do not modify this project. \`liftoff update --check\` and \`liftoff update\` maintain only explicit Liftoff core files.
125
-
126
- The Power Apps starter, package metadata, lockfile, source, assets, and this README are project-owned after generation. No update mode, including \`--force\`, replaces them. Adopting a newer packaged starter is a separately reviewed project migration; the existing non-Liftoff \`migrate\` command does not perform an in-place upgrade.
127
-
128
- 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.
129
-
130
- ${governanceGuidance}
131
- ${plan.governanceProfile.id === 'none'
132
- ? '\nNo `/liftoff-governance-assess` integration is generated while governance is disabled.\n'
133
- : `\n${renderGovernanceAssessmentGuide()}`}
134
- ${pluginGuidance}
135
- ## Source
136
-
137
- - Repository: ${plan.starter.repository}
138
- - Template: \`${plan.starter.path}\`
139
- - Commit: \`${plan.starter.commit}\`
140
- - License: MIT; see \`THIRD_PARTY_NOTICES.md\`
141
- `;
142
- }
143
- function renderAttribution(plan) {
144
- return `# Third-party notices
145
-
146
- ## Microsoft PowerAppsCodeApps starter
147
-
148
- This project includes files derived from:
149
-
150
- - Repository: ${plan.starter.repository}
151
- - Path: \`${plan.starter.path}\`
152
- - Commit: \`${plan.starter.commit}\`
153
- - License: MIT
154
-
155
- Liftoff replaces the starter package name, supplies a deterministic generated lockfile, adjusts
156
- the lint command for starter modules that intentionally export shared variants or context, and
157
- replaces the starter README with workload and environment-binding guidance. Other starter files
158
- are packaged byte-for-byte from the recorded commit.
159
-
160
- ${readPowerAppsStarterLicense().trimEnd()}
161
- `;
162
- }
163
- export function addPowerAppsCodeAppArtifacts(add, plan) {
164
- for (const asset of powerAppsStarterCatalog.files) {
165
- const source = readPowerAppsStarterAsset(asset);
166
- const content = asset.logicalName === 'power-apps-package'
167
- ? renderPackageJson(source, plan.packageName)
168
- : asset.logicalName === 'power-apps-lock'
169
- ? renderPackageLock(source, plan.packageName)
170
- : asset.logicalName === 'power-apps-readme'
171
- ? renderReadme(plan)
172
- : source;
173
- add(asset.logicalName, 'power-apps-starter', asset.pathParts, content);
174
- }
175
- add('power-apps-attribution', 'documentation', ['THIRD_PARTY_NOTICES.md'], renderAttribution(plan));
176
- }
177
- //# sourceMappingURL=power-apps-templates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"power-apps-templates.js","sourceRoot":"","sources":["../src/power-apps-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,WAAmB;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,GAAG,MAAM;QACT,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,OAAO;YACjB,IAAI,EAAE,6DAA6D;SACpE;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,WAAmB;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,GAAG,MAAM;QACT,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE;YACR,GAAG,MAAM,CAAC,QAAQ;YAClB,EAAE,EAAE;gBACF,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtB,IAAI,EAAE,WAAW;aAClB;SACF;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAiC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;SACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzF,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;QACxC,CAAC,CAAC;;;4BAGsB,cAAc,CAAC,KAAK;;;;;kBAK9B,cAAc,CAAC,EAAE,IAAI,cAAc,CAAC,WAAW;;;;;CAKhE;QACG,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,UAAU;QAC1D,CAAC,CAAC;YACE,uBAAuB,iBAAiB,eAAe,kBAAkB,gBAAgB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5H,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,gBAAgB,CAAC;gBAC5D,CAAC,CAAC,CAAC,kGAAkG,CAAC;gBACtG,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,IAAI,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QAC7D,CAAC,CAAC,2IAA2I;QAC7I,CAAC,CAAC,wYAAwY,CAAC;IAC7Y,OAAO,KAAK,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;mBAyBX,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;sBAC9C,MAAM;EAC1B,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE;wCACT,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BzF,kBAAkB;EAClB,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,MAAM;QACpC,CAAC,CAAC,4FAA4F;QAC9F,CAAC,CAAC,KAAK,+BAA+B,EAAE,EAAE;EAC1C,cAAc;;;gBAGA,IAAI,CAAC,OAAO,CAAC,UAAU;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI;cACnB,IAAI,CAAC,OAAO,CAAC,MAAM;;CAEhC,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiC;IAC1D,OAAO;;;;;;gBAMO,IAAI,CAAC,OAAO,CAAC,UAAU;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI;cACf,IAAI,CAAC,OAAO,CAAC,MAAM;;;;;;;;EAQ/B,2BAA2B,EAAE,CAAC,OAAO,EAAE;CACxC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAgB,EAChB,IAAiC;IAEjC,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,KAAK,oBAAoB;YACxD,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;YAC7C,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,iBAAiB;gBACvC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC7C,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,mBAAmB;oBACzC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;oBACpB,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IACD,GAAG,CACD,wBAAwB,EACxB,eAAe,EACf,CAAC,wBAAwB,CAAC,EAC1B,iBAAiB,CAAC,IAAI,CAAC,CACxB,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- export declare function verifyPowerAppsPackageMetadata(projectRoot: string): Promise<string[]>;