container-superposition 0.1.6 → 0.1.8

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 (238) hide show
  1. package/README.md +24 -15
  2. package/dist/scripts/init.js +1 -1534
  3. package/dist/scripts/init.js.map +1 -1
  4. package/dist/tool/cli/args.d.ts +20 -0
  5. package/dist/tool/cli/args.d.ts.map +1 -0
  6. package/dist/tool/cli/args.js +325 -0
  7. package/dist/tool/cli/args.js.map +1 -0
  8. package/dist/tool/cli/run.d.ts +2 -0
  9. package/dist/tool/cli/run.d.ts.map +1 -0
  10. package/dist/tool/cli/run.js +318 -0
  11. package/dist/tool/cli/run.js.map +1 -0
  12. package/dist/tool/commands/adopt.d.ts.map +1 -1
  13. package/dist/tool/commands/adopt.js +1 -27
  14. package/dist/tool/commands/adopt.js.map +1 -1
  15. package/dist/tool/commands/doctor.d.ts +3 -0
  16. package/dist/tool/commands/doctor.d.ts.map +1 -1
  17. package/dist/tool/commands/doctor.js +1068 -70
  18. package/dist/tool/commands/doctor.js.map +1 -1
  19. package/dist/tool/commands/explain.d.ts.map +1 -1
  20. package/dist/tool/commands/explain.js +18 -0
  21. package/dist/tool/commands/explain.js.map +1 -1
  22. package/dist/tool/commands/migrate.d.ts +7 -0
  23. package/dist/tool/commands/migrate.d.ts.map +1 -0
  24. package/dist/tool/commands/migrate.js +52 -0
  25. package/dist/tool/commands/migrate.js.map +1 -0
  26. package/dist/tool/questionnaire/answers.d.ts +16 -0
  27. package/dist/tool/questionnaire/answers.d.ts.map +1 -0
  28. package/dist/tool/questionnaire/answers.js +102 -0
  29. package/dist/tool/questionnaire/answers.js.map +1 -0
  30. package/dist/tool/questionnaire/composer.d.ts +3 -3
  31. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  32. package/dist/tool/questionnaire/composer.js +902 -37
  33. package/dist/tool/questionnaire/composer.js.map +1 -1
  34. package/dist/tool/questionnaire/presets.d.ts +60 -0
  35. package/dist/tool/questionnaire/presets.d.ts.map +1 -0
  36. package/dist/tool/questionnaire/presets.js +164 -0
  37. package/dist/tool/questionnaire/presets.js.map +1 -0
  38. package/dist/tool/questionnaire/questionnaire.d.ts +10 -0
  39. package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -0
  40. package/dist/tool/questionnaire/questionnaire.js +580 -0
  41. package/dist/tool/questionnaire/questionnaire.js.map +1 -0
  42. package/dist/tool/schema/manifest-migrations.d.ts +5 -0
  43. package/dist/tool/schema/manifest-migrations.d.ts.map +1 -1
  44. package/dist/tool/schema/manifest-migrations.js +45 -0
  45. package/dist/tool/schema/manifest-migrations.js.map +1 -1
  46. package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
  47. package/dist/tool/schema/overlay-loader.js +25 -0
  48. package/dist/tool/schema/overlay-loader.js.map +1 -1
  49. package/dist/tool/schema/project-config.d.ts +14 -2
  50. package/dist/tool/schema/project-config.d.ts.map +1 -1
  51. package/dist/tool/schema/project-config.js +277 -34
  52. package/dist/tool/schema/project-config.js.map +1 -1
  53. package/dist/tool/schema/target-rules.d.ts +78 -0
  54. package/dist/tool/schema/target-rules.d.ts.map +1 -0
  55. package/dist/tool/schema/target-rules.js +367 -0
  56. package/dist/tool/schema/target-rules.js.map +1 -0
  57. package/dist/tool/schema/types.d.ts +123 -12
  58. package/dist/tool/schema/types.d.ts.map +1 -1
  59. package/dist/tool/utils/merge.d.ts.map +1 -1
  60. package/dist/tool/utils/merge.js +9 -0
  61. package/dist/tool/utils/merge.js.map +1 -1
  62. package/dist/tool/utils/parameters.d.ts +76 -0
  63. package/dist/tool/utils/parameters.d.ts.map +1 -0
  64. package/dist/tool/utils/parameters.js +125 -0
  65. package/dist/tool/utils/parameters.js.map +1 -0
  66. package/dist/tool/utils/paths.d.ts +2 -0
  67. package/dist/tool/utils/paths.d.ts.map +1 -0
  68. package/dist/tool/utils/paths.js +31 -0
  69. package/dist/tool/utils/paths.js.map +1 -0
  70. package/docs/creating-overlays.md +151 -2
  71. package/docs/deployment-targets.md +88 -56
  72. package/docs/examples.md +20 -17
  73. package/docs/filesystem-contract.md +5 -0
  74. package/docs/minimal-and-editor.md +65 -5
  75. package/docs/overlay-imports.md +202 -101
  76. package/docs/overlays.md +162 -34
  77. package/docs/quick-reference.md +99 -0
  78. package/docs/specs/003-mkdocs2-overlay/spec.md +114 -0
  79. package/docs/specs/004-doctor-fix/spec.md +70 -0
  80. package/docs/specs/005-cuda-overlay/spec.md +101 -0
  81. package/docs/specs/006-rocm-overlay/spec.md +109 -0
  82. package/docs/specs/007-init-project-file/spec.md +66 -0
  83. package/docs/specs/007-target-aware-generation/spec.md +126 -0
  84. package/docs/specs/008-project-file-canonical/spec.md +83 -0
  85. package/docs/specs/009-project-env/spec.md +147 -0
  86. package/docs/specs/010-compose-env-materialization/spec.md +130 -0
  87. package/docs/specs/011-overlay-parameters/spec.md +235 -0
  88. package/overlays/.shared/README.md +105 -21
  89. package/overlays/.shared/compose/common-healthchecks.md +60 -0
  90. package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -0
  91. package/overlays/.shared/vscode/recommended-extensions.json +15 -11
  92. package/overlays/alertmanager/setup.sh +4 -19
  93. package/overlays/alertmanager/verify.sh +8 -9
  94. package/overlays/all/README.md +43 -0
  95. package/overlays/all/devcontainer.patch.json +6 -0
  96. package/overlays/all/overlay.yml +14 -0
  97. package/overlays/amp/setup.sh +5 -0
  98. package/overlays/bun/setup.sh +10 -1
  99. package/overlays/bun/verify.sh +6 -1
  100. package/overlays/claude-code/setup.sh +5 -0
  101. package/overlays/cloudflared/setup.sh +9 -12
  102. package/overlays/codex/README.md +9 -6
  103. package/overlays/codex/devcontainer.patch.json +7 -1
  104. package/overlays/codex/setup.sh +5 -0
  105. package/overlays/codex/verify.sh +8 -0
  106. package/overlays/comfyui/.env.example +34 -0
  107. package/overlays/comfyui/README.md +342 -0
  108. package/overlays/comfyui/devcontainer.patch.json +15 -0
  109. package/overlays/comfyui/docker-compose.yml +39 -0
  110. package/overlays/comfyui/overlay.yml +20 -0
  111. package/overlays/comfyui/setup.sh +36 -0
  112. package/overlays/comfyui/verify.sh +103 -0
  113. package/overlays/commitlint/setup.sh +5 -0
  114. package/overlays/cuda/README.md +179 -0
  115. package/overlays/cuda/devcontainer.patch.json +7 -0
  116. package/overlays/cuda/overlay.yml +17 -0
  117. package/overlays/cuda/setup.sh +32 -0
  118. package/overlays/cuda/verify.sh +38 -0
  119. package/overlays/devcontainer-cli/README.md +50 -0
  120. package/overlays/devcontainer-cli/devcontainer.patch.json +13 -0
  121. package/overlays/devcontainer-cli/overlay.yml +16 -0
  122. package/overlays/devcontainer-cli/setup.sh +14 -0
  123. package/overlays/direnv/devcontainer.patch.json +6 -0
  124. package/overlays/direnv/setup.sh +7 -6
  125. package/overlays/dotnet/setup.sh +14 -7
  126. package/overlays/duckdb/devcontainer.patch.json +1 -2
  127. package/overlays/gcloud/devcontainer.patch.json +0 -6
  128. package/overlays/gcloud/setup.sh +51 -0
  129. package/overlays/gemini-cli/setup.sh +5 -0
  130. package/overlays/git-helpers/devcontainer.patch.json +2 -1
  131. package/overlays/go/setup.sh +15 -14
  132. package/overlays/jaeger/overlay.yml +2 -0
  133. package/overlays/just/setup.sh +5 -17
  134. package/overlays/k3d/README.md +201 -0
  135. package/overlays/k3d/devcontainer.patch.json +9 -0
  136. package/overlays/k3d/overlay.yml +19 -0
  137. package/overlays/k3d/setup.sh +34 -0
  138. package/overlays/k3d/verify.sh +38 -0
  139. package/overlays/keycloak/docker-compose.yml +6 -4
  140. package/overlays/keycloak/verify.sh +4 -3
  141. package/overlays/kind/devcontainer.patch.json +1 -2
  142. package/overlays/kind/setup.sh +8 -17
  143. package/overlays/minio/setup.sh +10 -18
  144. package/overlays/mkdocs/overlay.yml +2 -1
  145. package/overlays/mkdocs2/README.md +135 -0
  146. package/overlays/mkdocs2/devcontainer.patch.json +19 -0
  147. package/overlays/mkdocs2/overlay.yml +17 -0
  148. package/overlays/mkdocs2/setup.sh +67 -0
  149. package/overlays/mkdocs2/verify.sh +35 -0
  150. package/overlays/modern-cli-tools/devcontainer.patch.json +7 -1
  151. package/overlays/modern-cli-tools/setup.sh +21 -71
  152. package/overlays/mongodb/devcontainer.patch.json +0 -6
  153. package/overlays/mongodb/setup.sh +59 -0
  154. package/overlays/mysql/verify.sh +4 -3
  155. package/overlays/nats/.env.example +1 -1
  156. package/overlays/nats/README.md +1 -1
  157. package/overlays/nats/docker-compose.yml +1 -1
  158. package/overlays/ngrok/setup.sh +9 -6
  159. package/overlays/nodejs/setup.sh +5 -0
  160. package/overlays/ollama/.env.example +14 -0
  161. package/overlays/ollama/README.md +325 -0
  162. package/overlays/ollama/devcontainer.patch.json +14 -0
  163. package/overlays/ollama/docker-compose.yml +24 -0
  164. package/overlays/ollama/overlay.yml +22 -0
  165. package/overlays/ollama/setup.sh +106 -0
  166. package/overlays/ollama/verify.sh +99 -0
  167. package/overlays/open-webui/.env.example +5 -0
  168. package/overlays/open-webui/README.md +162 -0
  169. package/overlays/open-webui/devcontainer.patch.json +14 -0
  170. package/overlays/open-webui/docker-compose.yml +23 -0
  171. package/overlays/open-webui/overlay.yml +38 -0
  172. package/overlays/openapi-tools/devcontainer.patch.json +1 -2
  173. package/overlays/openapi-tools/setup.sh +9 -8
  174. package/overlays/opencode/setup.sh +5 -0
  175. package/overlays/otel-collector/overlay.yml +2 -0
  176. package/overlays/otel-collector/setup.sh +3 -16
  177. package/overlays/otel-demo-nodejs/verify.sh +8 -9
  178. package/overlays/otel-demo-python/verify.sh +16 -10
  179. package/overlays/pandoc/README.md +22 -15
  180. package/overlays/pandoc/devcontainer.patch.json +6 -2
  181. package/overlays/pandoc/setup.sh +217 -18
  182. package/overlays/pandoc/verify.sh +16 -4
  183. package/overlays/pgvector/.env.example +6 -0
  184. package/overlays/pgvector/README.md +215 -0
  185. package/overlays/pgvector/devcontainer.patch.json +23 -0
  186. package/overlays/pgvector/docker-compose.yml +32 -0
  187. package/overlays/pgvector/overlay.yml +44 -0
  188. package/overlays/playwright/devcontainer.patch.json +3 -1
  189. package/overlays/playwright/setup.sh +37 -0
  190. package/overlays/postgres/.env.example +5 -5
  191. package/overlays/postgres/devcontainer.patch.json +4 -4
  192. package/overlays/postgres/docker-compose.yml +15 -5
  193. package/overlays/postgres/overlay.yml +19 -1
  194. package/overlays/powershell/setup.sh +49 -13
  195. package/overlays/pre-commit/setup.sh +12 -3
  196. package/overlays/prometheus/overlay.yml +2 -0
  197. package/overlays/promtail/verify.sh +16 -10
  198. package/overlays/pulumi/devcontainer.patch.json +1 -1
  199. package/overlays/python/setup.sh +28 -9
  200. package/overlays/python/verify.sh +4 -2
  201. package/overlays/qdrant/.env.example +4 -0
  202. package/overlays/qdrant/README.md +216 -0
  203. package/overlays/qdrant/devcontainer.patch.json +20 -0
  204. package/overlays/qdrant/docker-compose.yml +25 -0
  205. package/overlays/qdrant/overlay.yml +40 -0
  206. package/overlays/redpanda/docker-compose.yml +3 -5
  207. package/overlays/rocm/README.md +227 -0
  208. package/overlays/rocm/devcontainer.patch.json +4 -0
  209. package/overlays/rocm/overlay.yml +17 -0
  210. package/overlays/rocm/setup.sh +45 -0
  211. package/overlays/rocm/verify.sh +47 -0
  212. package/overlays/rust/setup.sh +11 -18
  213. package/overlays/skaffold/README.md +256 -0
  214. package/overlays/skaffold/devcontainer.patch.json +9 -0
  215. package/overlays/skaffold/overlay.yml +20 -0
  216. package/overlays/skaffold/setup.sh +33 -0
  217. package/overlays/skaffold/verify.sh +24 -0
  218. package/overlays/spec-kit/setup.sh +7 -3
  219. package/overlays/sqlite/setup.sh +14 -14
  220. package/overlays/sqlserver/docker-compose.yml +3 -3
  221. package/overlays/sqlserver/verify.sh +22 -5
  222. package/overlays/tempo/verify.sh +16 -10
  223. package/overlays/tilt/devcontainer.patch.json +1 -2
  224. package/overlays/tilt/setup.sh +14 -4
  225. package/overlays/windsurf-cli/setup.sh +27 -4
  226. package/overlays/windsurf-cli/verify.sh +13 -3
  227. package/package.json +4 -2
  228. package/templates/scripts/setup-utils.sh +228 -0
  229. package/tool/schema/config.schema.json +141 -9
  230. package/tool/schema/overlay-manifest.schema.json +38 -0
  231. package/overlays/.shared/compose/common-healthchecks.yml +0 -38
  232. /package/overlays/otel-demo-nodejs/{Dockerfile-otel-demo-nodejs → Dockerfile} +0 -0
  233. /package/overlays/otel-demo-nodejs/{package-otel-demo-nodejs.json → package.json} +0 -0
  234. /package/overlays/otel-demo-nodejs/{server-otel-demo-nodejs.js → server.js} +0 -0
  235. /package/overlays/otel-demo-nodejs/{tracing-otel-demo-nodejs.js → tracing.js} +0 -0
  236. /package/overlays/otel-demo-python/{Dockerfile-otel-demo-python → Dockerfile} +0 -0
  237. /package/overlays/otel-demo-python/{app-otel-demo-python.py → app.py} +0 -0
  238. /package/overlays/otel-demo-python/{requirements-otel-demo-python.txt → requirements.txt} +0 -0
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Target-aware generation rules.
3
+ *
4
+ * Each non-local deployment target has a TargetRule implementation that:
5
+ * - patches devcontainer.json with target-specific fields
6
+ * - generates target-specific workspace files and user guidance
7
+ * - declares the files it owns (for stale-artifact cleanup on target switch)
8
+ */
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
12
+ /** Collect all exposed ports across selected overlays, applying the offset. */
13
+ function collectPorts(overlays, overlayMetadata, portOffset) {
14
+ const result = [];
15
+ for (const id of overlays) {
16
+ const meta = overlayMetadata.get(id);
17
+ if (!meta?.ports)
18
+ continue;
19
+ for (const p of meta.ports) {
20
+ if (typeof p === 'number') {
21
+ result.push({
22
+ port: p + portOffset,
23
+ service: id,
24
+ description: '',
25
+ protocol: 'tcp',
26
+ });
27
+ }
28
+ else {
29
+ result.push({
30
+ port: p.port + portOffset,
31
+ service: p.service ?? id,
32
+ description: p.description ?? '',
33
+ protocol: p.protocol ?? 'tcp',
34
+ });
35
+ }
36
+ }
37
+ }
38
+ return result;
39
+ }
40
+ // ─── Local rule (no-op) ───────────────────────────────────────────────────────
41
+ class LocalTargetRule {
42
+ target = 'local';
43
+ devcontainerPatch(_ctx) {
44
+ return {};
45
+ }
46
+ generateFiles(_ctx) {
47
+ return new Map();
48
+ }
49
+ ownedFiles() {
50
+ return [];
51
+ }
52
+ }
53
+ // ─── Codespaces rule ─────────────────────────────────────────────────────────
54
+ class CodespacesTargetRule {
55
+ target = 'codespaces';
56
+ devcontainerPatch(ctx) {
57
+ // Recommend a machine size based on the number of services selected.
58
+ // More services → larger machine recommendation.
59
+ const serviceOverlays = ctx.overlays.filter((id) => {
60
+ const meta = ctx.overlayMetadata.get(id);
61
+ return meta?.category === 'database' || meta?.category === 'observability';
62
+ });
63
+ let cpus = 2;
64
+ let memoryGb = 4;
65
+ if (serviceOverlays.length >= 4) {
66
+ cpus = 8;
67
+ memoryGb = 16;
68
+ }
69
+ else if (serviceOverlays.length >= 2) {
70
+ cpus = 4;
71
+ memoryGb = 8;
72
+ }
73
+ return {
74
+ hostRequirements: {
75
+ cpus,
76
+ memory: `${memoryGb}gb`,
77
+ storage: '32gb',
78
+ },
79
+ };
80
+ }
81
+ generateFiles(ctx) {
82
+ const files = new Map();
83
+ const overlayNames = ctx.overlays
84
+ .map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
85
+ .join(', ');
86
+ const serviceOverlays = ctx.overlays.filter((id) => {
87
+ const meta = ctx.overlayMetadata.get(id);
88
+ return meta?.category === 'database' || meta?.category === 'observability';
89
+ });
90
+ let machineNote = '**2-core** machine (default)';
91
+ if (serviceOverlays.length >= 4) {
92
+ machineNote = '**8-core** machine (recommended — many services selected)';
93
+ }
94
+ else if (serviceOverlays.length >= 2) {
95
+ machineNote = '**4-core** machine (recommended — multiple services selected)';
96
+ }
97
+ const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
98
+ const portSection = ports.length > 0
99
+ ? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
100
+ : '';
101
+ const content = `# GitHub Codespaces Setup
102
+
103
+ This devcontainer was generated with **\`--target codespaces\`** and is optimized for
104
+ [GitHub Codespaces](https://github.com/features/codespaces).
105
+
106
+ ## Opening in a Codespace
107
+
108
+ 1. Push this repository (including the \`.devcontainer/\` directory) to GitHub.
109
+ 2. Click **Code → Codespaces → Create codespace on <branch>**.
110
+ 3. GitHub will pick up \`.devcontainer/devcontainer.json\` automatically.
111
+
112
+ ## Recommended Machine Type
113
+
114
+ The generated \`devcontainer.json\` includes \`hostRequirements\` recommending a
115
+ ${machineNote} for the selected stack.
116
+
117
+ **Selected overlays**: ${overlayNames || '(none)'}
118
+
119
+ ## Port Forwarding
120
+
121
+ Codespaces automatically forwards ports declared in \`devcontainer.json\`.
122
+ Forwarded ports appear in the **Ports** panel inside VS Code or the Codespaces UI.
123
+ ${portSection}
124
+ ## Notes
125
+
126
+ - **docker-sock** is not available in Codespaces — use \`docker-in-docker\` instead.
127
+ - Secrets can be added under *Settings → Codespaces → Secrets*.
128
+ - To set environment variables, copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\`
129
+ and add the file to your Codespaces secrets or repository environment.
130
+
131
+ ## References
132
+
133
+ - [GitHub Codespaces documentation](https://docs.github.com/en/codespaces)
134
+ - [devcontainer.json reference — hostRequirements](https://containers.dev/implementors/json_reference/#hostRequirementsProperties)
135
+ `;
136
+ files.set('CODESPACES.md', content);
137
+ return files;
138
+ }
139
+ ownedFiles() {
140
+ return ['CODESPACES.md'];
141
+ }
142
+ }
143
+ // ─── Gitpod rule ─────────────────────────────────────────────────────────────
144
+ class GitpodTargetRule {
145
+ target = 'gitpod';
146
+ devcontainerPatch(_ctx) {
147
+ return {};
148
+ }
149
+ generateFiles(ctx) {
150
+ const files = new Map();
151
+ const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
152
+ const portsSection = ports.length > 0
153
+ ? ports
154
+ .map((p) => ` - port: ${p.port}\n onOpen: notify-user\n name: ${p.service}\n description: ${p.description || p.service}`)
155
+ .join('\n')
156
+ : '';
157
+ const devcontainerRef = ctx.stack === 'compose' ? '.devcontainer/devcontainer.json' : '.devcontainer';
158
+ const gitpodYml = [
159
+ '# Gitpod workspace configuration',
160
+ '# Generated by container-superposition with --target gitpod',
161
+ '#',
162
+ '# See: https://www.gitpod.io/docs/references/gitpod-yml',
163
+ '',
164
+ 'image:',
165
+ ` file: ${devcontainerRef}`,
166
+ '',
167
+ 'tasks:',
168
+ ' - name: Setup',
169
+ ' init: |',
170
+ ' echo "Workspace initialized — run your setup commands here"',
171
+ ' command: |',
172
+ ' echo "Workspace ready"',
173
+ '',
174
+ ...(portsSection
175
+ ? ['ports:', portsSection, '']
176
+ : ['# ports: [] # No overlay ports declared', '']),
177
+ 'vscode:',
178
+ ' extensions: []',
179
+ ].join('\n');
180
+ // .gitpod.yml must live in the repository root (one level above .devcontainer/)
181
+ files.set('../.gitpod.yml', gitpodYml);
182
+ const overlayNames = ctx.overlays
183
+ .map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
184
+ .join(', ');
185
+ const portSection = ports.length > 0
186
+ ? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
187
+ : '';
188
+ const repoUrl = '<!-- Replace with your repository URL -->';
189
+ const gitpodMd = `# Gitpod Setup
190
+
191
+ This devcontainer was generated with **\`--target gitpod\`** and includes a
192
+ \`.gitpod.yml\` at the repository root for use with [Gitpod](https://www.gitpod.io).
193
+
194
+ ## Opening in Gitpod
195
+
196
+ 1. Push this repository (including \`.devcontainer/\` and \`.gitpod.yml\`) to a
197
+ Git hosting provider supported by Gitpod (GitHub, GitLab, Bitbucket).
198
+ 2. Prefix your repository URL with \`https://gitpod.io/#\`:
199
+
200
+ \`\`\`
201
+ https://gitpod.io/#${repoUrl}
202
+ \`\`\`
203
+
204
+ Or add an **Open in Gitpod** badge to your README:
205
+
206
+ \`\`\`markdown
207
+ [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#${repoUrl})
208
+ \`\`\`
209
+
210
+ **Selected overlays**: ${overlayNames || '(none)'}
211
+ ${portSection}
212
+ ## Notes
213
+
214
+ - **docker-sock** is not available in Gitpod — use \`docker-in-docker\` instead.
215
+ - Environment variables can be set under *Gitpod Settings → Variables*.
216
+ - Copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\` and configure locally.
217
+ - The generated \`.gitpod.yml\` references your devcontainer via its \`image.file\`
218
+ field — Gitpod reads devcontainer.json automatically.
219
+
220
+ ## References
221
+
222
+ - [Gitpod documentation](https://www.gitpod.io/docs)
223
+ - [Gitpod .gitpod.yml reference](https://www.gitpod.io/docs/references/gitpod-yml)
224
+ - [Gitpod + devcontainers](https://www.gitpod.io/docs/references/ides-and-editors/vscode)
225
+ `;
226
+ files.set('GITPOD.md', gitpodMd);
227
+ return files;
228
+ }
229
+ ownedFiles() {
230
+ // '../.gitpod.yml' resolves to project root; 'GITPOD.md' is in outputPath.
231
+ return ['../.gitpod.yml', 'GITPOD.md'];
232
+ }
233
+ }
234
+ // ─── DevPod rule ──────────────────────────────────────────────────────────────
235
+ class DevPodTargetRule {
236
+ target = 'devpod';
237
+ devcontainerPatch(_ctx) {
238
+ return {};
239
+ }
240
+ generateFiles(ctx) {
241
+ const files = new Map();
242
+ const devcontainerPath = ctx.stack === 'compose' ? '.devcontainer/devcontainer.json' : '.devcontainer';
243
+ const devpodYaml = [
244
+ '# DevPod workspace configuration',
245
+ '# Generated by container-superposition with --target devpod',
246
+ '#',
247
+ '# See: https://devpod.sh/docs/managing-workspaces/workspace-configuration',
248
+ '',
249
+ `devcontainerPath: ${devcontainerPath}`,
250
+ ].join('\n');
251
+ // devpod.yaml lives at the project root
252
+ files.set('../devpod.yaml', devpodYaml);
253
+ const overlayNames = ctx.overlays
254
+ .map((id) => ctx.overlayMetadata.get(id)?.name ?? id)
255
+ .join(', ');
256
+ const ports = collectPorts(ctx.overlays, ctx.overlayMetadata, ctx.portOffset);
257
+ const portSection = ports.length > 0
258
+ ? `\n## Exposed Ports\n\n${ports.map((p) => `- **${p.port}** — ${p.service}${p.description ? ` (${p.description})` : ''}`).join('\n')}\n`
259
+ : '';
260
+ const devpodMd = `# DevPod Setup
261
+
262
+ This devcontainer was generated with **\`--target devpod\`** and includes a
263
+ \`devpod.yaml\` at the repository root for use with [DevPod](https://devpod.sh).
264
+
265
+ ## Provisioning with DevPod
266
+
267
+ 1. [Install DevPod](https://devpod.sh/docs/getting-started/install).
268
+ 2. From the repository root run:
269
+
270
+ \`\`\`bash
271
+ devpod up .
272
+ \`\`\`
273
+
274
+ DevPod reads \`devpod.yaml\` and the referenced \`${devcontainerPath}\` automatically.
275
+
276
+ 3. To use a specific provider:
277
+
278
+ \`\`\`bash
279
+ devpod up . --provider docker # Local Docker
280
+ devpod up . --provider aws # AWS EC2
281
+ \`\`\`
282
+
283
+ **Selected overlays**: ${overlayNames || '(none)'}
284
+ ${portSection}
285
+ ## Notes
286
+
287
+ - Copy \`.devcontainer/.env.example\` to \`.devcontainer/.env\` and edit credentials
288
+ before running \`devpod up\`.
289
+ - DevPod respects \`hostRequirements\` in \`devcontainer.json\` for cloud providers.
290
+ - To stop and destroy the workspace: \`devpod delete <workspace-name>\`.
291
+
292
+ ## References
293
+
294
+ - [DevPod documentation](https://devpod.sh/docs)
295
+ - [DevPod workspace configuration](https://devpod.sh/docs/managing-workspaces/workspace-configuration)
296
+ - [DevPod providers](https://devpod.sh/docs/managing-providers/add-provider)
297
+ `;
298
+ files.set('DEVPOD.md', devpodMd);
299
+ return files;
300
+ }
301
+ ownedFiles() {
302
+ return ['../devpod.yaml', 'DEVPOD.md'];
303
+ }
304
+ }
305
+ // ─── Registry ────────────────────────────────────────────────────────────────
306
+ const TARGET_RULES = {
307
+ local: new LocalTargetRule(),
308
+ codespaces: new CodespacesTargetRule(),
309
+ gitpod: new GitpodTargetRule(),
310
+ devpod: new DevPodTargetRule(),
311
+ };
312
+ /**
313
+ * Return the target rule for the given deployment target.
314
+ * Throws a clear error when the target has no defined rule (future-proofing).
315
+ */
316
+ export function getTargetRule(target) {
317
+ const rule = TARGET_RULES[target];
318
+ if (!rule) {
319
+ const valid = Object.keys(TARGET_RULES).join(', ');
320
+ throw new Error(`No target rule defined for '${target}'. Valid targets are: ${valid}`);
321
+ }
322
+ return rule;
323
+ }
324
+ /**
325
+ * Resolve a path produced by TargetRule.generateFiles() to an absolute
326
+ * filesystem path.
327
+ *
328
+ * Keys starting with '../' are resolved relative to projectRoot (i.e. the
329
+ * repository root, one level above .devcontainer/). All other keys are
330
+ * resolved relative to outputPath (.devcontainer/).
331
+ */
332
+ export function resolveTargetFilePath(key, outputPath, projectRoot) {
333
+ if (key.startsWith('../')) {
334
+ return path.join(projectRoot, key.slice(3));
335
+ }
336
+ return path.join(outputPath, key);
337
+ }
338
+ /**
339
+ * Remove stale project-root artifacts left by a previous target.
340
+ *
341
+ * Only project-root files (keys starting with '../') are removed here; files
342
+ * inside outputPath are handled automatically by cleanupStaleFiles via the
343
+ * FileRegistry.
344
+ *
345
+ * @param previousTarget Target used in the previous generation run.
346
+ * @param nextTarget Target for the current generation run.
347
+ * @param projectRoot Absolute path to the project root.
348
+ */
349
+ export function removeStaleTargetArtifacts(previousTarget, nextTarget, projectRoot) {
350
+ if (previousTarget === nextTarget) {
351
+ return;
352
+ }
353
+ const previousRule = TARGET_RULES[previousTarget];
354
+ if (!previousRule) {
355
+ return;
356
+ }
357
+ for (const ownedKey of previousRule.ownedFiles()) {
358
+ if (!ownedKey.startsWith('../')) {
359
+ continue; // outputPath files handled by FileRegistry
360
+ }
361
+ const absPath = path.join(projectRoot, ownedKey.slice(3));
362
+ if (fs.existsSync(absPath)) {
363
+ fs.unlinkSync(absPath);
364
+ }
365
+ }
366
+ }
367
+ //# sourceMappingURL=target-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-rules.js","sourceRoot":"","sources":["../../../tool/schema/target-rules.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,16 @@ export type PackageManager = 'apt' | 'apk';
9
9
  * Determines environment-specific optimizations and compatibility checks
10
10
  */
11
11
  export type DeploymentTarget = 'local' | 'codespaces' | 'gitpod' | 'devpod';
12
- export type LanguageOverlay = 'dotnet' | 'nodejs' | 'python' | 'mkdocs' | 'java' | 'go' | 'rust' | 'bun' | 'powershell';
13
- export type DatabaseOverlay = 'postgres' | 'redis' | 'mongodb' | 'mysql' | 'sqlserver' | 'sqlite' | 'minio' | 'rabbitmq' | 'redpanda' | 'nats';
14
- export type CloudTool = 'azure-cli' | 'aws-cli' | 'gcloud' | 'kubectl-helm' | 'terraform' | 'pulumi';
15
- export type DevTool = 'docker-in-docker' | 'docker-sock' | 'codex' | 'playwright' | 'git-helpers' | 'pre-commit' | 'commitlint' | 'just' | 'direnv' | 'modern-cli-tools' | 'ngrok' | 'spec-kit' | 'claude-code' | 'gemini-cli' | 'amp' | 'windsurf-cli' | 'opencode';
16
- export type ObservabilityTool = 'otel-collector' | 'jaeger' | 'prometheus' | 'grafana' | 'loki';
12
+ export type LanguageOverlay = 'dotnet' | 'nodejs' | 'python' | 'mkdocs' | 'java' | 'go' | 'rust' | 'bun' | 'jupyter' | 'powershell';
13
+ export type DatabaseOverlay = 'postgres' | 'redis' | 'mongodb' | 'mysql' | 'sqlserver' | 'sqlite' | 'duckdb' | 'minio' | 'rabbitmq' | 'redpanda' | 'nats';
14
+ export type CloudTool = 'azure-cli' | 'aws-cli' | 'gcloud' | 'cloudflared' | 'kubectl-helm' | 'kind' | 'localstack' | 'terraform' | 'pulumi';
15
+ export type DevTool = 'docker-in-docker' | 'docker-sock' | 'codex' | 'playwright' | 'git-helpers' | 'grpc-tools' | 'keycloak' | 'mailpit' | 'pre-commit' | 'commitlint' | 'just' | 'direnv' | 'modern-cli-tools' | 'ngrok' | 'openapi-tools' | 'pandoc' | 'spec-kit' | 'tilt' | 'claude-code' | 'gemini-cli' | 'amp' | 'windsurf-cli' | 'opencode' | 'mkdocs2' | 'devcontainer-cli';
16
+ export type ObservabilityTool = 'alertmanager' | 'otel-collector' | 'otel-demo-nodejs' | 'otel-demo-python' | 'jaeger' | 'prometheus' | 'promtail' | 'grafana' | 'loki' | 'tempo';
17
+ /**
18
+ * Union of all overlay ID types — used for the flat `overlays` field
19
+ * in project config and anywhere an overlay ID is accepted regardless of category.
20
+ */
21
+ export type OverlayId = LanguageOverlay | DatabaseOverlay | CloudTool | DevTool | ObservabilityTool;
17
22
  export type Database = 'none' | 'postgres' | 'redis' | 'postgres+redis';
18
23
  export interface DevContainerConfig {
19
24
  /**
@@ -49,6 +54,11 @@ export interface DevContainerConfig {
49
54
  * Editor profile for customizations
50
55
  */
51
56
  export type EditorProfile = 'vscode' | 'jetbrains' | 'none';
57
+ export type ProjectEnvTarget = 'auto' | 'remoteEnv' | 'composeEnv';
58
+ export interface ProjectEnvVar {
59
+ value: string;
60
+ target?: ProjectEnvTarget;
61
+ }
52
62
  /**
53
63
  * Questionnaire response interface
54
64
  */
@@ -72,7 +82,9 @@ export interface QuestionnaireAnswers {
72
82
  target?: DeploymentTarget;
73
83
  minimal?: boolean;
74
84
  editor?: EditorProfile;
85
+ projectEnv?: Record<string, ProjectEnvVar>;
75
86
  customizations?: CustomizationConfig;
87
+ overlayParameters?: Record<string, string>;
76
88
  }
77
89
  /**
78
90
  * Port attributes configuration
@@ -100,6 +112,9 @@ export interface DevContainer {
100
112
  extensions?: string[];
101
113
  settings?: Record<string, any>;
102
114
  };
115
+ jetbrains?: {
116
+ backend: string;
117
+ };
103
118
  };
104
119
  forwardPorts?: number[];
105
120
  portsAttributes?: Record<string, PortAttributes>;
@@ -133,6 +148,15 @@ export interface PortMetadata {
133
148
  export interface NormalizedPort extends PortMetadata {
134
149
  actualPort: number;
135
150
  }
151
+ /**
152
+ * Declaration of a single configurable parameter for an overlay.
153
+ * Parameters are resolved at generation time using {{cs.PARAM_NAME}} substitution.
154
+ */
155
+ export interface OverlayParameterDefinition {
156
+ description: string;
157
+ default?: string;
158
+ sensitive?: boolean;
159
+ }
136
160
  /**
137
161
  * Overlay metadata from overlays.yml
138
162
  */
@@ -149,7 +173,10 @@ export interface OverlayMetadata {
149
173
  ports?: (number | PortMetadata)[];
150
174
  order?: number;
151
175
  imports?: string[];
176
+ compose_imports?: string[];
152
177
  minimal?: boolean;
178
+ hidden?: boolean;
179
+ parameters?: Record<string, OverlayParameterDefinition>;
153
180
  }
154
181
  /**
155
182
  * User choice configuration for presets
@@ -249,6 +276,9 @@ export interface SuperpositionManifest {
249
276
  reason: string;
250
277
  };
251
278
  containerName?: string;
279
+ target?: DeploymentTarget;
280
+ minimal?: boolean;
281
+ editor?: EditorProfile;
252
282
  customizations?: {
253
283
  enabled: boolean;
254
284
  location: string;
@@ -268,6 +298,8 @@ export interface CustomizationConfig {
268
298
  files?: Array<{
269
299
  source: string;
270
300
  destination: string;
301
+ /** Pre-loaded file content; avoids re-reading from disk when available (e.g. when materialized from a project config). */
302
+ content?: string;
271
303
  }>;
272
304
  }
273
305
  export interface ProjectConfigFileEntry {
@@ -277,7 +309,7 @@ export interface ProjectConfigFileEntry {
277
309
  export interface ProjectConfigCustomizationsInput {
278
310
  devcontainerPatch?: DevContainer;
279
311
  dockerComposePatch?: Record<string, any>;
280
- environment?: Record<string, string>;
312
+ envTemplate?: Record<string, string>;
281
313
  scripts?: {
282
314
  postCreate?: string[];
283
315
  postStart?: string[];
@@ -287,6 +319,88 @@ export interface ProjectConfigCustomizationsInput {
287
319
  content: string;
288
320
  }>;
289
321
  }
322
+ export type DiagnosticCategory = 'environment' | 'overlay' | 'manifest' | 'merge' | 'ports';
323
+ /**
324
+ * Whether a diagnostic finding can be automatically remediated.
325
+ */
326
+ export type FixEligibility = 'automatic' | 'manual-only' | 'not-applicable';
327
+ export type RecheckScope = 'environment' | 'manifest' | 'devcontainer' | 'full';
328
+ export type SafetyClass = 'safe-unattended' | 'requires-manual-action';
329
+ export type ExecutionKind = 'shell-command' | 'manifest-migration' | 'regeneration' | 'no-op';
330
+ export type FixOutcome = 'fixed' | 'already-compliant' | 'skipped' | 'requires-manual-action';
331
+ export type ExitDisposition = 'success' | 'repaired-with-warnings' | 'unresolved-failures';
332
+ /**
333
+ * A single diagnostic finding produced by the doctor command.
334
+ * Extends the internal CheckResult with structured fix metadata.
335
+ */
336
+ export interface DiagnosticFinding {
337
+ id: string;
338
+ category: DiagnosticCategory;
339
+ name: string;
340
+ status: 'pass' | 'warn' | 'fail';
341
+ message: string;
342
+ details?: string[];
343
+ fixEligibility: FixEligibility;
344
+ remediationKey?: string;
345
+ recheckScope: RecheckScope;
346
+ }
347
+ /**
348
+ * A remediation action registered for a specific finding.
349
+ */
350
+ export interface RemediationAction {
351
+ key: string;
352
+ findingId: string;
353
+ safetyClass: SafetyClass;
354
+ executionKind: ExecutionKind;
355
+ preconditions: string[];
356
+ plannedChanges: string[];
357
+ manualFallback: string[];
358
+ }
359
+ /**
360
+ * Result of executing a single remediation action.
361
+ */
362
+ export interface FixExecution {
363
+ findingId: string;
364
+ remediationKey: string;
365
+ attempted: boolean;
366
+ outcome: FixOutcome;
367
+ reason: string;
368
+ commands?: string[];
369
+ changedFiles?: string[];
370
+ backupPath?: string;
371
+ rechecked: boolean;
372
+ }
373
+ /**
374
+ * Aggregated outcome counts for a fix run.
375
+ */
376
+ export interface FixOutcomeSummary {
377
+ fixed: number;
378
+ alreadyCompliant: number;
379
+ skipped: number;
380
+ requiresManualAction: number;
381
+ total: number;
382
+ }
383
+ /**
384
+ * Complete record of a doctor --fix execution.
385
+ */
386
+ export interface FixRun {
387
+ outputPath: string;
388
+ requestedJson: boolean;
389
+ initialFindings: DiagnosticFinding[];
390
+ executions: FixExecution[];
391
+ finalFindings: DiagnosticFinding[];
392
+ summary: FixOutcomeSummary;
393
+ exitDisposition: ExitDisposition;
394
+ }
395
+ /**
396
+ * Resolved composition input — produced by mergeAnswers() after all user input has been
397
+ * collected and defaults applied. Guarantees that array fields which QuestionnaireAnswers
398
+ * leaves optional are present (empty arrays at minimum), making downstream code type-safe.
399
+ */
400
+ export interface CompositionInput extends QuestionnaireAnswers {
401
+ language: LanguageOverlay[];
402
+ database: DatabaseOverlay[];
403
+ }
290
404
  export interface ProjectConfigSelection {
291
405
  stack?: Stack;
292
406
  baseImage?: BaseImage;
@@ -294,17 +408,14 @@ export interface ProjectConfigSelection {
294
408
  containerName?: string;
295
409
  preset?: string;
296
410
  presetChoices?: Record<string, string>;
297
- language?: LanguageOverlay[];
298
- database?: DatabaseOverlay[];
299
- observability?: ObservabilityTool[];
300
- cloudTools?: CloudTool[];
301
- devTools?: DevTool[];
302
- playwright?: boolean;
411
+ overlays?: OverlayId[];
303
412
  outputPath?: string;
304
413
  portOffset?: number;
305
414
  target?: DeploymentTarget;
306
415
  minimal?: boolean;
307
416
  editor?: EditorProfile;
417
+ env?: Record<string, ProjectEnvVar>;
308
418
  customizations?: ProjectConfigCustomizationsInput;
419
+ parameters?: Record<string, string>;
309
420
  }
310
421
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../tool/schema/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../tool/schema/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../tool/utils/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CA6BvD;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAgB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAuBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe/E;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../tool/utils/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAuCvD;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAgB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAuBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe/E;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC"}
@@ -45,6 +45,15 @@ export function deepMerge(target, source) {
45
45
  // Special handling for remoteEnv to merge PATH variables intelligently
46
46
  output[key] = mergeRemoteEnv(target[key], source[key]);
47
47
  }
48
+ else if (key === 'postCreateCommand' ||
49
+ key === 'postStartCommand' ||
50
+ key === 'postAttachCommand') {
51
+ // Normalise string commands to objects before merging so that
52
+ // spreading a string ("npx ...") never produces { 0:'n', 1:'p', ... }
53
+ const t = typeof target[key] === 'string' ? { default: target[key] } : target[key];
54
+ const s = typeof source[key] === 'string' ? { default: source[key] } : source[key];
55
+ output[key] = deepMerge(t, s);
56
+ }
48
57
  else {
49
58
  // Recursively merge objects
50
59
  output[key] = deepMerge(target[key], source[key]);