@msn-control/liftoff 0.6.2 → 0.8.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 (111) hide show
  1. package/README.md +15 -1
  2. package/assets/governance/single-maintainer-gitflow/policy.md +705 -0
  3. package/assets/locks/frontend/package-lock.json +1012 -1694
  4. package/assets/locks/frontend/package.json +5 -6
  5. package/assets/locks/go-backend/go.mod +17 -0
  6. package/assets/locks/go-backend/go.sum +159 -0
  7. package/assets/locks/node-backend/package-lock.json +1473 -2320
  8. package/assets/locks/node-backend/package.json +8 -7
  9. package/assets/locks/opentofu-azure/.terraform.lock.hcl +39 -0
  10. package/assets/locks/opentofu-azure/versions.tf +10 -0
  11. package/assets/locks/python-genai/function-requirements.txt +1734 -0
  12. package/assets/locks/python-genai/liftoff_template_python_genai.egg-info/PKG-INFO +25 -0
  13. package/assets/locks/python-genai/liftoff_template_python_genai.egg-info/SOURCES.txt +6 -0
  14. package/assets/locks/python-genai/liftoff_template_python_genai.egg-info/dependency_links.txt +1 -0
  15. package/assets/locks/python-genai/liftoff_template_python_genai.egg-info/requires.txt +23 -0
  16. package/assets/locks/python-genai/liftoff_template_python_genai.egg-info/top_level.txt +1 -0
  17. package/assets/locks/python-genai/pyproject.toml +42 -0
  18. package/assets/locks/python-genai/uv.lock +2536 -0
  19. package/assets/locks/python-standard/pyproject.toml +36 -0
  20. package/assets/locks/python-standard/uv.lock +1780 -0
  21. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +4 -4
  22. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +667 -1108
  23. package/assets/supported-stack.json +711 -0
  24. package/dist/args.js +26 -1
  25. package/dist/args.js.map +1 -1
  26. package/dist/catalogs.d.ts +3 -1
  27. package/dist/catalogs.js +29 -7
  28. package/dist/catalogs.js.map +1 -1
  29. package/dist/cli.js +2 -1
  30. package/dist/cli.js.map +1 -1
  31. package/dist/commands.d.ts +6 -0
  32. package/dist/commands.js +364 -172
  33. package/dist/commands.js.map +1 -1
  34. package/dist/container-validation.d.ts +2 -0
  35. package/dist/container-validation.js +26 -0
  36. package/dist/container-validation.js.map +1 -0
  37. package/dist/file-system.d.ts +1 -0
  38. package/dist/file-system.js +141 -7
  39. package/dist/file-system.js.map +1 -1
  40. package/dist/framework-adapters.js +1 -0
  41. package/dist/framework-adapters.js.map +1 -1
  42. package/dist/go-template-assets.d.ts +2 -0
  43. package/dist/go-template-assets.js +14 -0
  44. package/dist/go-template-assets.js.map +1 -0
  45. package/dist/init-filesystem.js +5 -4
  46. package/dist/init-filesystem.js.map +1 -1
  47. package/dist/interactive.d.ts +0 -5
  48. package/dist/interactive.js +11 -73
  49. package/dist/interactive.js.map +1 -1
  50. package/dist/opentofu-template-assets.d.ts +2 -0
  51. package/dist/opentofu-template-assets.js +10 -0
  52. package/dist/opentofu-template-assets.js.map +1 -0
  53. package/dist/package-identity.d.ts +8 -0
  54. package/dist/package-identity.js +16 -0
  55. package/dist/package-identity.js.map +1 -0
  56. package/dist/planner.js +42 -3
  57. package/dist/planner.js.map +1 -1
  58. package/dist/power-apps-templates.js +6 -0
  59. package/dist/power-apps-templates.js.map +1 -1
  60. package/dist/project-dependencies.d.ts +1 -1
  61. package/dist/project-dependencies.js +15 -34
  62. package/dist/project-dependencies.js.map +1 -1
  63. package/dist/published-verifier.js +11 -1
  64. package/dist/published-verifier.js.map +1 -1
  65. package/dist/python-template-assets.d.ts +4 -0
  66. package/dist/python-template-assets.js +34 -0
  67. package/dist/python-template-assets.js.map +1 -0
  68. package/dist/repository-governance.d.ts +17 -0
  69. package/dist/repository-governance.js +507 -0
  70. package/dist/repository-governance.js.map +1 -0
  71. package/dist/runtime.d.ts +1 -1
  72. package/dist/runtime.js +3 -1
  73. package/dist/runtime.js.map +1 -1
  74. package/dist/self-upgrade.d.ts +77 -0
  75. package/dist/self-upgrade.js +499 -0
  76. package/dist/self-upgrade.js.map +1 -0
  77. package/dist/stable-release.d.ts +18 -0
  78. package/dist/stable-release.js +66 -0
  79. package/dist/stable-release.js.map +1 -0
  80. package/dist/standard-templates.js +28 -97
  81. package/dist/standard-templates.js.map +1 -1
  82. package/dist/supported-stack.d.ts +115 -0
  83. package/dist/supported-stack.js +439 -0
  84. package/dist/supported-stack.js.map +1 -0
  85. package/dist/telemetry/contract.d.ts +1 -1
  86. package/dist/telemetry/contract.js +1 -0
  87. package/dist/telemetry/contract.js.map +1 -1
  88. package/dist/templates.js +216 -125
  89. package/dist/templates.js.map +1 -1
  90. package/dist/types.d.ts +18 -1
  91. package/dist/workstation-catalog.js +15 -12
  92. package/dist/workstation-catalog.js.map +1 -1
  93. package/dist/workstation.js +16 -6
  94. package/dist/workstation.js.map +1 -1
  95. package/docs/cli-reference.md +99 -22
  96. package/docs/configuration-and-manifests.md +14 -7
  97. package/docs/existing-repositories.md +27 -6
  98. package/docs/getting-started.md +23 -7
  99. package/docs/prerequisites.md +30 -4
  100. package/docs/project-structure.md +20 -1
  101. package/docs/repository-governance.md +91 -0
  102. package/docs/safety-and-consent.md +42 -17
  103. package/docs/spec-workflows-and-agents.md +22 -8
  104. package/docs/supported-stack.md +89 -0
  105. package/docs/telemetry.md +6 -0
  106. package/docs/troubleshooting.md +84 -8
  107. package/docs/workloads.md +18 -5
  108. package/package.json +14 -6
  109. package/dist/update-impact.d.ts +0 -23
  110. package/dist/update-impact.js +0 -127
  111. package/dist/update-impact.js.map +0 -1
@@ -0,0 +1,711 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "2026.08.31",
4
+ "verifiedOn": "2026-08-31",
5
+ "supportedHostPlatforms": [
6
+ "darwin/arm64",
7
+ "darwin/x64",
8
+ "linux/arm64",
9
+ "linux/x64",
10
+ "win32/x64"
11
+ ],
12
+ "runtimes": {
13
+ "node": {
14
+ "version": "24.20.0",
15
+ "minimumVersion": "24.20.0",
16
+ "releaseLine": "24",
17
+ "channel": "lts",
18
+ "source": "https://nodejs.org/en/about/previous-releases"
19
+ },
20
+ "python": {
21
+ "version": "3.14.7",
22
+ "minimumVersion": "3.14.0",
23
+ "releaseLine": "3.14",
24
+ "channel": "stable",
25
+ "source": "https://www.python.org/downloads/"
26
+ },
27
+ "go": {
28
+ "version": "1.27.0",
29
+ "minimumVersion": "1.27.0",
30
+ "releaseLine": "1.27",
31
+ "channel": "stable",
32
+ "source": "https://go.dev/dl/"
33
+ },
34
+ "opentofu": {
35
+ "version": "1.12.6",
36
+ "minimumVersion": "1.12.6",
37
+ "releaseLine": "1.12",
38
+ "channel": "stable",
39
+ "source": "https://github.com/opentofu/opentofu/releases/tag/v1.12.6"
40
+ }
41
+ },
42
+ "packageManagers": {
43
+ "npm": {
44
+ "version": "12.0.2",
45
+ "minimumVersion": "12.0.2",
46
+ "releaseLine": "12",
47
+ "channel": "stable",
48
+ "source": "https://www.npmjs.com/package/npm"
49
+ },
50
+ "uv": {
51
+ "version": "0.12.7",
52
+ "minimumVersion": "0.12.7",
53
+ "releaseLine": "0.12",
54
+ "channel": "stable",
55
+ "source": "https://github.com/astral-sh/uv/releases/tag/0.12.7"
56
+ }
57
+ },
58
+ "frameworks": {
59
+ "openspec": {
60
+ "version": "1.11.0",
61
+ "minimumVersion": "1.11.0",
62
+ "releaseLine": "1.11",
63
+ "channel": "stable",
64
+ "source": "https://www.npmjs.com/package/@fission-ai/openspec"
65
+ },
66
+ "spec-kit": {
67
+ "version": "1.0.1",
68
+ "minimumVersion": "1.0.1",
69
+ "releaseLine": "1.0",
70
+ "channel": "stable",
71
+ "source": "https://pypi.org/project/specify-cli/1.0.1/"
72
+ }
73
+ },
74
+ "npmProjects": {
75
+ "liftoff": {
76
+ "manifestPathParts": [
77
+ "package.json"
78
+ ],
79
+ "lockPathParts": [
80
+ "package-lock.json"
81
+ ],
82
+ "freshnessPolicy": "latest",
83
+ "requirements": {
84
+ "dependencies": {
85
+ "@inquirer/prompts": "^8.6.0",
86
+ "cross-spawn": "^7.0.6",
87
+ "picocolors": "^1.1.1"
88
+ },
89
+ "devDependencies": {
90
+ "@types/cross-spawn": "^6.0.6",
91
+ "@types/node": "^24.6.0",
92
+ "typescript": "^7.0.2",
93
+ "vite": "8.2.2",
94
+ "vitest": "4.1.11"
95
+ }
96
+ },
97
+ "resolved": {
98
+ "dependencies": {
99
+ "@inquirer/prompts": "8.6.0",
100
+ "cross-spawn": "7.0.6",
101
+ "picocolors": "1.1.1"
102
+ },
103
+ "devDependencies": {
104
+ "@types/cross-spawn": "6.0.6",
105
+ "@types/node": "24.13.3",
106
+ "typescript": "7.0.2",
107
+ "vite": "8.2.2",
108
+ "vitest": "4.1.11"
109
+ }
110
+ }
111
+ },
112
+ "telemetry-ingest": {
113
+ "manifestPathParts": [
114
+ "services",
115
+ "telemetry-ingest",
116
+ "package.json"
117
+ ],
118
+ "lockPathParts": [
119
+ "services",
120
+ "telemetry-ingest",
121
+ "package-lock.json"
122
+ ],
123
+ "freshnessPolicy": "latest",
124
+ "requirements": {
125
+ "dependencies": {
126
+ "@azure/identity": "4.13.2",
127
+ "@azure/monitor-ingestion": "1.2.0"
128
+ },
129
+ "devDependencies": {
130
+ "@types/node": "^24.6.0",
131
+ "typescript": "^7.0.2",
132
+ "vite": "8.2.2",
133
+ "vitest": "4.1.11"
134
+ }
135
+ },
136
+ "resolved": {
137
+ "dependencies": {
138
+ "@azure/identity": "4.13.2",
139
+ "@azure/monitor-ingestion": "1.2.0"
140
+ },
141
+ "devDependencies": {
142
+ "@types/node": "24.13.3",
143
+ "typescript": "7.0.2",
144
+ "vite": "8.2.2",
145
+ "vitest": "4.1.11"
146
+ }
147
+ }
148
+ },
149
+ "node-backend": {
150
+ "manifestPathParts": [
151
+ "assets",
152
+ "locks",
153
+ "node-backend",
154
+ "package.json"
155
+ ],
156
+ "lockPathParts": [
157
+ "assets",
158
+ "locks",
159
+ "node-backend",
160
+ "package-lock.json"
161
+ ],
162
+ "freshnessPolicy": "latest",
163
+ "requirements": {
164
+ "dependencies": {
165
+ "@fastify/cors": "^11.3.0",
166
+ "@fastify/swagger": "^9.5.2",
167
+ "drizzle-orm": "^0.45.2",
168
+ "fastify": "^5.12.1",
169
+ "pg": "^8.23.0"
170
+ },
171
+ "devDependencies": {
172
+ "@types/node": "^24.6.0",
173
+ "@types/pg": "^8.15.0",
174
+ "drizzle-kit": "^0.31.0",
175
+ "tsx": "^4.20.0",
176
+ "typescript": "^5.5.4",
177
+ "vite": "8.2.2",
178
+ "vitest": "4.1.11"
179
+ }
180
+ },
181
+ "resolved": {
182
+ "dependencies": {
183
+ "@fastify/cors": "11.3.0",
184
+ "@fastify/swagger": "9.8.1",
185
+ "drizzle-orm": "0.45.2",
186
+ "fastify": "5.12.1",
187
+ "pg": "8.23.0"
188
+ },
189
+ "devDependencies": {
190
+ "@types/node": "24.13.3",
191
+ "@types/pg": "8.20.0",
192
+ "drizzle-kit": "0.31.10",
193
+ "tsx": "4.23.1",
194
+ "typescript": "5.9.3",
195
+ "vite": "8.2.2",
196
+ "vitest": "4.1.11"
197
+ }
198
+ }
199
+ },
200
+ "frontend": {
201
+ "manifestPathParts": [
202
+ "assets",
203
+ "locks",
204
+ "frontend",
205
+ "package.json"
206
+ ],
207
+ "lockPathParts": [
208
+ "assets",
209
+ "locks",
210
+ "frontend",
211
+ "package-lock.json"
212
+ ],
213
+ "freshnessPolicy": "latest",
214
+ "requirements": {
215
+ "dependencies": {
216
+ "@tailwindcss/vite": "^4.3.3",
217
+ "@vitejs/plugin-vue": "^6.0.8",
218
+ "tailwindcss": "^4.3.3",
219
+ "vite": "^8.2.2",
220
+ "vue": "^3.5.41"
221
+ },
222
+ "devDependencies": {}
223
+ },
224
+ "resolved": {
225
+ "dependencies": {
226
+ "@tailwindcss/vite": "4.3.3",
227
+ "@vitejs/plugin-vue": "6.0.8",
228
+ "tailwindcss": "4.3.3",
229
+ "vite": "8.2.2",
230
+ "vue": "3.5.41"
231
+ },
232
+ "devDependencies": {}
233
+ }
234
+ },
235
+ "power-apps-code-app": {
236
+ "manifestPathParts": [
237
+ "assets",
238
+ "power-apps-code-app",
239
+ "3438c352483e40982f6c5c0fc36fd71f8e7adbbb",
240
+ "starter",
241
+ "package.json"
242
+ ],
243
+ "lockPathParts": [
244
+ "assets",
245
+ "power-apps-code-app",
246
+ "3438c352483e40982f6c5c0fc36fd71f8e7adbbb",
247
+ "starter",
248
+ "package-lock.json"
249
+ ],
250
+ "freshnessPolicy": "declared-range",
251
+ "requirements": {
252
+ "dependencies": {
253
+ "@microsoft/power-apps": "^1.2.5",
254
+ "@radix-ui/react-checkbox": "^1.3.3",
255
+ "@radix-ui/react-dialog": "^1.1.15",
256
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
257
+ "@radix-ui/react-label": "^2.1.7",
258
+ "@radix-ui/react-popover": "^1.1.15",
259
+ "@radix-ui/react-progress": "^1.1.7",
260
+ "@radix-ui/react-select": "^2.2.6",
261
+ "@radix-ui/react-separator": "^1.1.7",
262
+ "@radix-ui/react-slot": "^1.2.3",
263
+ "@radix-ui/react-tabs": "^1.1.13",
264
+ "@radix-ui/react-tooltip": "^1.2.8",
265
+ "@tailwindcss/vite": "^4.1.16",
266
+ "@tanstack/react-query": "^5.90.5",
267
+ "@tanstack/react-table": "^8.21.3",
268
+ "class-variance-authority": "^0.7.1",
269
+ "clsx": "^2.1.1",
270
+ "cmdk": "^1.1.1",
271
+ "date-fns": "^4.1.0",
272
+ "lucide-react": "^0.546.0",
273
+ "react": "^19.1.1",
274
+ "react-day-picker": "^9.11.1",
275
+ "react-dom": "^19.1.1",
276
+ "react-router-dom": "^7.9.4",
277
+ "recharts": "^2.15.4",
278
+ "sonner": "^2.0.7",
279
+ "tailwind-merge": "^3.3.1",
280
+ "tailwindcss": "^4.1.16",
281
+ "zustand": "^5.0.10"
282
+ },
283
+ "devDependencies": {
284
+ "@eslint/js": "^9.36.0",
285
+ "@microsoft/power-apps-vite": "^1.0.2",
286
+ "@types/node": "^24.6.0",
287
+ "@types/react": "^19.1.16",
288
+ "@types/react-dom": "^19.1.9",
289
+ "@vitejs/plugin-react": "^5.0.4",
290
+ "eslint": "^9.36.0",
291
+ "eslint-plugin-react-hooks": "^5.2.0",
292
+ "eslint-plugin-react-refresh": "^0.4.22",
293
+ "globals": "^16.4.0",
294
+ "picocolors": "^1.1.1",
295
+ "tw-animate-css": "^1.4.0",
296
+ "typescript": "~5.9.3",
297
+ "typescript-eslint": "^8.45.0",
298
+ "vite": "^7.1.7"
299
+ }
300
+ },
301
+ "resolved": {
302
+ "dependencies": {
303
+ "@microsoft/power-apps": "1.2.7",
304
+ "@radix-ui/react-checkbox": "1.3.11",
305
+ "@radix-ui/react-dialog": "1.1.23",
306
+ "@radix-ui/react-dropdown-menu": "2.1.24",
307
+ "@radix-ui/react-label": "2.1.15",
308
+ "@radix-ui/react-popover": "1.1.23",
309
+ "@radix-ui/react-progress": "1.1.16",
310
+ "@radix-ui/react-select": "2.3.7",
311
+ "@radix-ui/react-separator": "1.1.15",
312
+ "@radix-ui/react-slot": "1.3.3",
313
+ "@radix-ui/react-tabs": "1.1.21",
314
+ "@radix-ui/react-tooltip": "1.2.16",
315
+ "@tailwindcss/vite": "4.3.3",
316
+ "@tanstack/react-query": "5.102.2",
317
+ "@tanstack/react-table": "8.21.3",
318
+ "class-variance-authority": "0.7.1",
319
+ "clsx": "2.1.1",
320
+ "cmdk": "1.1.1",
321
+ "date-fns": "4.4.0",
322
+ "lucide-react": "0.546.0",
323
+ "react": "19.2.8",
324
+ "react-day-picker": "9.14.0",
325
+ "react-dom": "19.2.8",
326
+ "react-router-dom": "7.18.2",
327
+ "recharts": "2.15.4",
328
+ "sonner": "2.0.8",
329
+ "tailwind-merge": "3.6.0",
330
+ "tailwindcss": "4.3.3",
331
+ "zustand": "5.0.15"
332
+ },
333
+ "devDependencies": {
334
+ "@eslint/js": "9.39.5",
335
+ "@microsoft/power-apps-vite": "1.0.2",
336
+ "@types/node": "24.13.3",
337
+ "@types/react": "19.2.18",
338
+ "@types/react-dom": "19.2.5",
339
+ "@vitejs/plugin-react": "5.2.0",
340
+ "eslint": "9.39.5",
341
+ "eslint-plugin-react-hooks": "5.2.0",
342
+ "eslint-plugin-react-refresh": "0.4.26",
343
+ "globals": "16.5.0",
344
+ "picocolors": "1.1.1",
345
+ "tw-animate-css": "1.4.0",
346
+ "typescript": "5.9.3",
347
+ "typescript-eslint": "8.67.0",
348
+ "vite": "7.3.6"
349
+ }
350
+ },
351
+ "selectionExceptions": {
352
+ "@microsoft/power-apps": {
353
+ "selectedVersion": "1.2.7",
354
+ "reviewedCandidateVersion": "1.3.0",
355
+ "reason": "Power Apps SDK 1.2.12 and newer remove the project-local power-apps CLI required by the current Liftoff workload contract; adopting the new global pa CLI requires a separate reviewed workload migration."
356
+ }
357
+ }
358
+ }
359
+ },
360
+ "pythonProjects": {
361
+ "genai-backend": {
362
+ "lockTemplatePathParts": [
363
+ "assets",
364
+ "locks",
365
+ "python-genai",
366
+ "uv.lock"
367
+ ],
368
+ "requiresPython": ">=3.14,<3.15",
369
+ "dependencies": {
370
+ "alembic": "1.19.1",
371
+ "asyncpg": "0.31.0",
372
+ "azure-communication-email": "1.1.0",
373
+ "azure-identity": "1.25.3",
374
+ "azure-servicebus": "7.14.3",
375
+ "azure-storage-blob": "12.30.1",
376
+ "fastapi": "0.141.1",
377
+ "langfuse": "4.14.4",
378
+ "psycopg": "3.3.4",
379
+ "pydantic": "2.13.4",
380
+ "pydantic-ai-slim": "2.33.0",
381
+ "pydantic-settings": "2.15.0",
382
+ "redis": "8.1.0",
383
+ "scalar-fastapi": "1.8.2",
384
+ "sqlalchemy": "2.0.52",
385
+ "uvicorn": "0.52.4"
386
+ },
387
+ "optionalDependencies": {
388
+ "functions": {
389
+ "azure-functions": "2.3.0"
390
+ },
391
+ "test": {
392
+ "httpx2": "2.12.0",
393
+ "pytest": "9.1.1"
394
+ }
395
+ }
396
+ },
397
+ "standard-backend": {
398
+ "lockTemplatePathParts": [
399
+ "assets",
400
+ "locks",
401
+ "python-standard",
402
+ "uv.lock"
403
+ ],
404
+ "requiresPython": ">=3.14,<3.15",
405
+ "dependencies": {
406
+ "alembic": "1.19.1",
407
+ "asyncpg": "0.31.0",
408
+ "azure-communication-email": "1.1.0",
409
+ "azure-servicebus": "7.14.3",
410
+ "azure-storage-blob": "12.30.1",
411
+ "fastapi": "0.141.1",
412
+ "psycopg": "3.3.4",
413
+ "pydantic": "2.13.4",
414
+ "pydantic-settings": "2.15.0",
415
+ "redis": "8.1.0",
416
+ "scalar-fastapi": "1.8.2",
417
+ "sqlalchemy": "2.0.52",
418
+ "uvicorn": "0.52.4"
419
+ },
420
+ "optionalDependencies": {
421
+ "test": {
422
+ "httpx2": "2.12.0",
423
+ "pytest": "9.1.1"
424
+ }
425
+ }
426
+ },
427
+ "function-worker": {
428
+ "lockTemplatePathParts": [
429
+ "assets",
430
+ "locks",
431
+ "python-genai",
432
+ "uv.lock"
433
+ ],
434
+ "requiresPython": ">=3.14,<3.15",
435
+ "dependencies": {
436
+ "azure-functions": "2.3.0"
437
+ },
438
+ "optionalDependencies": {
439
+ "test": {
440
+ "pytest": "9.1.1"
441
+ }
442
+ }
443
+ }
444
+ },
445
+ "goModules": {
446
+ "go-backend": {
447
+ "moduleTemplatePathParts": [
448
+ "assets",
449
+ "locks",
450
+ "go-backend",
451
+ "go.mod"
452
+ ],
453
+ "goVersion": "1.27.0",
454
+ "dependencies": {
455
+ "github.com/danielgtaylor/huma/v2": "v2.39.1",
456
+ "github.com/go-chi/chi/v5": "v5.3.2",
457
+ "github.com/jackc/pgx/v5": "v5.10.0"
458
+ },
459
+ "tools": {
460
+ "github.com/pressly/goose/v3": "v3.27.3"
461
+ }
462
+ }
463
+ },
464
+ "opentofu": {
465
+ "version": {
466
+ "version": "1.12.6",
467
+ "minimumVersion": "1.12.6",
468
+ "releaseLine": "1.12",
469
+ "channel": "stable",
470
+ "source": "https://github.com/opentofu/opentofu/releases/tag/v1.12.6"
471
+ },
472
+ "lockPlatforms": [
473
+ "darwin_amd64",
474
+ "darwin_arm64",
475
+ "linux_amd64",
476
+ "linux_arm64",
477
+ "windows_amd64"
478
+ ],
479
+ "providers": {
480
+ "azapi": {
481
+ "source": "Azure/azapi",
482
+ "version": "2.12.0"
483
+ },
484
+ "azurerm": {
485
+ "source": "hashicorp/azurerm",
486
+ "version": "5.3.0"
487
+ },
488
+ "time": {
489
+ "source": "hashicorp/time",
490
+ "version": "0.14.1"
491
+ }
492
+ }
493
+ },
494
+ "githubActions": {
495
+ "checkout": {
496
+ "repository": "actions/checkout",
497
+ "ref": "v7",
498
+ "commit": "3d3c42e5aac5ba805825da76410c181273ba90b1",
499
+ "source": "https://github.com/actions/checkout/releases/tag/v7"
500
+ },
501
+ "setup-node": {
502
+ "repository": "actions/setup-node",
503
+ "ref": "v7",
504
+ "commit": "820762786026740c76f36085b0efc47a31fe5020",
505
+ "source": "https://github.com/actions/setup-node/releases/tag/v7"
506
+ },
507
+ "setup-python": {
508
+ "repository": "actions/setup-python",
509
+ "ref": "v7",
510
+ "commit": "5fda3b95a4ea91299a34e894583c3862153e4b97",
511
+ "source": "https://github.com/actions/setup-python/releases/tag/v7"
512
+ },
513
+ "setup-go": {
514
+ "repository": "actions/setup-go",
515
+ "ref": "v7",
516
+ "commit": "b7ad1dad31e06c5925ef5d2fc7ad053ef454303e",
517
+ "source": "https://github.com/actions/setup-go/releases/tag/v7"
518
+ },
519
+ "setup-opentofu": {
520
+ "repository": "opentofu/setup-opentofu",
521
+ "ref": "v2",
522
+ "commit": "a1320f892987e89d278cc92dc5adc984fb93aca4",
523
+ "source": "https://github.com/opentofu/setup-opentofu/releases/tag/v2"
524
+ }
525
+ },
526
+ "containers": {
527
+ "python-runtime": {
528
+ "image": "python",
529
+ "tag": "3.14-slim",
530
+ "digest": "sha256:cae66f2ef0ec51a9891263eeee7f987dacf0a9879e8aa9353d5606e0530619a5",
531
+ "platforms": [
532
+ "linux/amd64",
533
+ "linux/arm64"
534
+ ],
535
+ "source": "https://hub.docker.com/_/python"
536
+ },
537
+ "uv-tool": {
538
+ "image": "ghcr.io/astral-sh/uv",
539
+ "tag": "0.12.7",
540
+ "digest": "sha256:95f2aa1fe59274951cfe9b0cbc7972e879ff1004bc8945d130a32eb0dbd85945",
541
+ "platforms": [
542
+ "linux/amd64",
543
+ "linux/arm64"
544
+ ],
545
+ "source": "https://github.com/astral-sh/uv/pkgs/container/uv"
546
+ },
547
+ "node-runtime": {
548
+ "image": "node",
549
+ "tag": "24-alpine",
550
+ "digest": "sha256:e67514e5d0f6c46656005e1b693b2ec9d52e80b641307de684d4a015ba7a4eaf",
551
+ "platforms": [
552
+ "linux/amd64",
553
+ "linux/arm64"
554
+ ],
555
+ "source": "https://hub.docker.com/_/node"
556
+ },
557
+ "go-build": {
558
+ "image": "golang",
559
+ "tag": "1.27-alpine",
560
+ "digest": "sha256:4c9fe60190a2a3350ddc51de80d0224b8a6698d12bdfc999fee45ea9d6c46dbc",
561
+ "platforms": [
562
+ "linux/amd64",
563
+ "linux/arm64"
564
+ ],
565
+ "source": "https://hub.docker.com/_/golang"
566
+ },
567
+ "alpine-runtime": {
568
+ "image": "alpine",
569
+ "tag": "3.24",
570
+ "digest": "sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b",
571
+ "platforms": [
572
+ "linux/amd64",
573
+ "linux/arm64"
574
+ ],
575
+ "source": "https://hub.docker.com/_/alpine"
576
+ },
577
+ "nginx-runtime": {
578
+ "image": "nginx",
579
+ "tag": "1.30-alpine",
580
+ "digest": "sha256:97d490c12ba55b4946b01546d1c3ed324e8d41ab1c9fcb2a616aa470620e5b46",
581
+ "platforms": [
582
+ "linux/amd64",
583
+ "linux/arm64"
584
+ ],
585
+ "source": "https://hub.docker.com/_/nginx"
586
+ },
587
+ "postgres": {
588
+ "image": "postgres",
589
+ "tag": "18-alpine",
590
+ "digest": "sha256:d3e1620b530c944afa6e887d22eb899824da68e19c52024bf98f5220c88a65b2",
591
+ "platforms": [
592
+ "linux/amd64",
593
+ "linux/arm64"
594
+ ],
595
+ "source": "https://hub.docker.com/_/postgres"
596
+ },
597
+ "pgvector": {
598
+ "image": "pgvector/pgvector",
599
+ "tag": "pg18",
600
+ "digest": "sha256:2ba9ca5f2e7daa0f0e7723cba1ee9167bab54efd3640516a44ac1a928dd67e7a",
601
+ "platforms": [
602
+ "linux/amd64",
603
+ "linux/arm64"
604
+ ],
605
+ "source": "https://hub.docker.com/r/pgvector/pgvector"
606
+ },
607
+ "redis": {
608
+ "image": "redis",
609
+ "tag": "8-alpine",
610
+ "digest": "sha256:becdda6c7f4b3fb42e42fd7f120bbf5c54c4caaaf16f26da24e4563d2c1f0576",
611
+ "platforms": [
612
+ "linux/amd64",
613
+ "linux/arm64"
614
+ ],
615
+ "source": "https://hub.docker.com/_/redis"
616
+ },
617
+ "azurite": {
618
+ "image": "mcr.microsoft.com/azure-storage/azurite",
619
+ "tag": "3.37.0",
620
+ "digest": "sha256:830430c1da1a2d537e08f3e6764dd1f5ae00cf0346bcaf625b968ec3f0971fd5",
621
+ "platforms": [
622
+ "linux/amd64",
623
+ "linux/arm64"
624
+ ],
625
+ "source": "https://mcr.microsoft.com/v2/azure-storage/azurite/tags/list"
626
+ },
627
+ "mailpit": {
628
+ "image": "axllent/mailpit",
629
+ "tag": "v1.31.0",
630
+ "digest": "sha256:c96991d9bef73594c246d89ca81411d4e916f03e76a7d2d72fa2ab5dd3c9ce24",
631
+ "platforms": [
632
+ "linux/amd64",
633
+ "linux/arm64"
634
+ ],
635
+ "source": "https://hub.docker.com/r/axllent/mailpit"
636
+ },
637
+ "langfuse-web": {
638
+ "image": "langfuse/langfuse",
639
+ "tag": "4",
640
+ "digest": "sha256:d9be058ee32564854bf54ff24a46603701bef96badecd95dab89c17b1d62171b",
641
+ "platforms": [
642
+ "linux/amd64",
643
+ "linux/arm64"
644
+ ],
645
+ "source": "https://hub.docker.com/r/langfuse/langfuse"
646
+ },
647
+ "langfuse-worker": {
648
+ "image": "langfuse/langfuse-worker",
649
+ "tag": "4",
650
+ "digest": "sha256:d4cbfe486b0eaaead437f8c5f626420b0275557bf7f89229e4edc8fc6683f01e",
651
+ "platforms": [
652
+ "linux/amd64",
653
+ "linux/arm64"
654
+ ],
655
+ "source": "https://hub.docker.com/r/langfuse/langfuse-worker"
656
+ },
657
+ "clickhouse": {
658
+ "image": "clickhouse/clickhouse-server",
659
+ "tag": "25.12",
660
+ "digest": "sha256:8a790dd3468db22b1d4e7b18a176f378ff5ff6053b9c48dd4ea1fa71a24c5ba6",
661
+ "platforms": [
662
+ "linux/amd64",
663
+ "linux/arm64"
664
+ ],
665
+ "source": "https://hub.docker.com/r/clickhouse/clickhouse-server"
666
+ },
667
+ "minio": {
668
+ "image": "minio/minio",
669
+ "tag": "RELEASE.2025-09-07T16-13-09Z",
670
+ "digest": "sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e",
671
+ "platforms": [
672
+ "linux/amd64",
673
+ "linux/arm64"
674
+ ],
675
+ "source": "https://hub.docker.com/r/minio/minio"
676
+ },
677
+ "container-apps-bootstrap": {
678
+ "image": "nginx",
679
+ "tag": "1.30-alpine",
680
+ "digest": "sha256:97d490c12ba55b4946b01546d1c3ed324e8d41ab1c9fcb2a616aa470620e5b46",
681
+ "platforms": [
682
+ "linux/amd64",
683
+ "linux/arm64"
684
+ ],
685
+ "source": "https://hub.docker.com/_/nginx",
686
+ "selectionReason": "The previous Azure sample image publishes only a mutable latest tag; nginx stable serves an unauthenticated port-80 bootstrap endpoint with an immutable multi-architecture digest."
687
+ },
688
+ "telemetry-node": {
689
+ "image": "node",
690
+ "tag": "24-bookworm-slim",
691
+ "digest": "sha256:ba849c60be29959425b8734d57b8b4b7d56f98edd9504c9af091d5281095a71e",
692
+ "platforms": [
693
+ "linux/amd64",
694
+ "linux/arm64"
695
+ ],
696
+ "source": "https://hub.docker.com/_/node"
697
+ }
698
+ },
699
+ "upstreams": {
700
+ "power-apps-code-app": {
701
+ "repository": "https://github.com/microsoft/PowerAppsCodeApps",
702
+ "path": "templates/starter",
703
+ "commit": "3438c352483e40982f6c5c0fc36fd71f8e7adbbb",
704
+ "compatibleSourceCommits": [
705
+ "3438c352483e40982f6c5c0fc36fd71f8e7adbbb",
706
+ "22e5c0bc0ef7ba516d9ad6281d6b0c4eb114df55"
707
+ ],
708
+ "source": "https://github.com/microsoft/PowerAppsCodeApps/commit/3438c352483e40982f6c5c0fc36fd71f8e7adbbb"
709
+ }
710
+ }
711
+ }