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.
- package/README.md +24 -15
- package/dist/scripts/init.js +1 -1534
- package/dist/scripts/init.js.map +1 -1
- package/dist/tool/cli/args.d.ts +20 -0
- package/dist/tool/cli/args.d.ts.map +1 -0
- package/dist/tool/cli/args.js +325 -0
- package/dist/tool/cli/args.js.map +1 -0
- package/dist/tool/cli/run.d.ts +2 -0
- package/dist/tool/cli/run.d.ts.map +1 -0
- package/dist/tool/cli/run.js +318 -0
- package/dist/tool/cli/run.js.map +1 -0
- package/dist/tool/commands/adopt.d.ts.map +1 -1
- package/dist/tool/commands/adopt.js +1 -27
- package/dist/tool/commands/adopt.js.map +1 -1
- package/dist/tool/commands/doctor.d.ts +3 -0
- package/dist/tool/commands/doctor.d.ts.map +1 -1
- package/dist/tool/commands/doctor.js +1068 -70
- package/dist/tool/commands/doctor.js.map +1 -1
- package/dist/tool/commands/explain.d.ts.map +1 -1
- package/dist/tool/commands/explain.js +18 -0
- package/dist/tool/commands/explain.js.map +1 -1
- package/dist/tool/commands/migrate.d.ts +7 -0
- package/dist/tool/commands/migrate.d.ts.map +1 -0
- package/dist/tool/commands/migrate.js +52 -0
- package/dist/tool/commands/migrate.js.map +1 -0
- package/dist/tool/questionnaire/answers.d.ts +16 -0
- package/dist/tool/questionnaire/answers.d.ts.map +1 -0
- package/dist/tool/questionnaire/answers.js +102 -0
- package/dist/tool/questionnaire/answers.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +3 -3
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +902 -37
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/questionnaire/presets.d.ts +60 -0
- package/dist/tool/questionnaire/presets.d.ts.map +1 -0
- package/dist/tool/questionnaire/presets.js +164 -0
- package/dist/tool/questionnaire/presets.js.map +1 -0
- package/dist/tool/questionnaire/questionnaire.d.ts +10 -0
- package/dist/tool/questionnaire/questionnaire.d.ts.map +1 -0
- package/dist/tool/questionnaire/questionnaire.js +580 -0
- package/dist/tool/questionnaire/questionnaire.js.map +1 -0
- package/dist/tool/schema/manifest-migrations.d.ts +5 -0
- package/dist/tool/schema/manifest-migrations.d.ts.map +1 -1
- package/dist/tool/schema/manifest-migrations.js +45 -0
- package/dist/tool/schema/manifest-migrations.js.map +1 -1
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -1
- package/dist/tool/schema/overlay-loader.js +25 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +14 -2
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +277 -34
- package/dist/tool/schema/project-config.js.map +1 -1
- package/dist/tool/schema/target-rules.d.ts +78 -0
- package/dist/tool/schema/target-rules.d.ts.map +1 -0
- package/dist/tool/schema/target-rules.js +367 -0
- package/dist/tool/schema/target-rules.js.map +1 -0
- package/dist/tool/schema/types.d.ts +123 -12
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/dist/tool/utils/merge.d.ts.map +1 -1
- package/dist/tool/utils/merge.js +9 -0
- package/dist/tool/utils/merge.js.map +1 -1
- package/dist/tool/utils/parameters.d.ts +76 -0
- package/dist/tool/utils/parameters.d.ts.map +1 -0
- package/dist/tool/utils/parameters.js +125 -0
- package/dist/tool/utils/parameters.js.map +1 -0
- package/dist/tool/utils/paths.d.ts +2 -0
- package/dist/tool/utils/paths.d.ts.map +1 -0
- package/dist/tool/utils/paths.js +31 -0
- package/dist/tool/utils/paths.js.map +1 -0
- package/docs/creating-overlays.md +151 -2
- package/docs/deployment-targets.md +88 -56
- package/docs/examples.md +20 -17
- package/docs/filesystem-contract.md +5 -0
- package/docs/minimal-and-editor.md +65 -5
- package/docs/overlay-imports.md +202 -101
- package/docs/overlays.md +162 -34
- package/docs/quick-reference.md +99 -0
- package/docs/specs/003-mkdocs2-overlay/spec.md +114 -0
- package/docs/specs/004-doctor-fix/spec.md +70 -0
- package/docs/specs/005-cuda-overlay/spec.md +101 -0
- package/docs/specs/006-rocm-overlay/spec.md +109 -0
- package/docs/specs/007-init-project-file/spec.md +66 -0
- package/docs/specs/007-target-aware-generation/spec.md +126 -0
- package/docs/specs/008-project-file-canonical/spec.md +83 -0
- package/docs/specs/009-project-env/spec.md +147 -0
- package/docs/specs/010-compose-env-materialization/spec.md +130 -0
- package/docs/specs/011-overlay-parameters/spec.md +235 -0
- package/overlays/.shared/README.md +105 -21
- package/overlays/.shared/compose/common-healthchecks.md +60 -0
- package/overlays/.shared/compose/nvidia-gpu-devcontainer.yml +22 -0
- package/overlays/.shared/vscode/recommended-extensions.json +15 -11
- package/overlays/alertmanager/setup.sh +4 -19
- package/overlays/alertmanager/verify.sh +8 -9
- package/overlays/all/README.md +43 -0
- package/overlays/all/devcontainer.patch.json +6 -0
- package/overlays/all/overlay.yml +14 -0
- package/overlays/amp/setup.sh +5 -0
- package/overlays/bun/setup.sh +10 -1
- package/overlays/bun/verify.sh +6 -1
- package/overlays/claude-code/setup.sh +5 -0
- package/overlays/cloudflared/setup.sh +9 -12
- package/overlays/codex/README.md +9 -6
- package/overlays/codex/devcontainer.patch.json +7 -1
- package/overlays/codex/setup.sh +5 -0
- package/overlays/codex/verify.sh +8 -0
- package/overlays/comfyui/.env.example +34 -0
- package/overlays/comfyui/README.md +342 -0
- package/overlays/comfyui/devcontainer.patch.json +15 -0
- package/overlays/comfyui/docker-compose.yml +39 -0
- package/overlays/comfyui/overlay.yml +20 -0
- package/overlays/comfyui/setup.sh +36 -0
- package/overlays/comfyui/verify.sh +103 -0
- package/overlays/commitlint/setup.sh +5 -0
- package/overlays/cuda/README.md +179 -0
- package/overlays/cuda/devcontainer.patch.json +7 -0
- package/overlays/cuda/overlay.yml +17 -0
- package/overlays/cuda/setup.sh +32 -0
- package/overlays/cuda/verify.sh +38 -0
- package/overlays/devcontainer-cli/README.md +50 -0
- package/overlays/devcontainer-cli/devcontainer.patch.json +13 -0
- package/overlays/devcontainer-cli/overlay.yml +16 -0
- package/overlays/devcontainer-cli/setup.sh +14 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/setup.sh +7 -6
- package/overlays/dotnet/setup.sh +14 -7
- package/overlays/duckdb/devcontainer.patch.json +1 -2
- package/overlays/gcloud/devcontainer.patch.json +0 -6
- package/overlays/gcloud/setup.sh +51 -0
- package/overlays/gemini-cli/setup.sh +5 -0
- package/overlays/git-helpers/devcontainer.patch.json +2 -1
- package/overlays/go/setup.sh +15 -14
- package/overlays/jaeger/overlay.yml +2 -0
- package/overlays/just/setup.sh +5 -17
- package/overlays/k3d/README.md +201 -0
- package/overlays/k3d/devcontainer.patch.json +9 -0
- package/overlays/k3d/overlay.yml +19 -0
- package/overlays/k3d/setup.sh +34 -0
- package/overlays/k3d/verify.sh +38 -0
- package/overlays/keycloak/docker-compose.yml +6 -4
- package/overlays/keycloak/verify.sh +4 -3
- package/overlays/kind/devcontainer.patch.json +1 -2
- package/overlays/kind/setup.sh +8 -17
- package/overlays/minio/setup.sh +10 -18
- package/overlays/mkdocs/overlay.yml +2 -1
- package/overlays/mkdocs2/README.md +135 -0
- package/overlays/mkdocs2/devcontainer.patch.json +19 -0
- package/overlays/mkdocs2/overlay.yml +17 -0
- package/overlays/mkdocs2/setup.sh +67 -0
- package/overlays/mkdocs2/verify.sh +35 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +7 -1
- package/overlays/modern-cli-tools/setup.sh +21 -71
- package/overlays/mongodb/devcontainer.patch.json +0 -6
- package/overlays/mongodb/setup.sh +59 -0
- package/overlays/mysql/verify.sh +4 -3
- package/overlays/nats/.env.example +1 -1
- package/overlays/nats/README.md +1 -1
- package/overlays/nats/docker-compose.yml +1 -1
- package/overlays/ngrok/setup.sh +9 -6
- package/overlays/nodejs/setup.sh +5 -0
- package/overlays/ollama/.env.example +14 -0
- package/overlays/ollama/README.md +325 -0
- package/overlays/ollama/devcontainer.patch.json +14 -0
- package/overlays/ollama/docker-compose.yml +24 -0
- package/overlays/ollama/overlay.yml +22 -0
- package/overlays/ollama/setup.sh +106 -0
- package/overlays/ollama/verify.sh +99 -0
- package/overlays/open-webui/.env.example +5 -0
- package/overlays/open-webui/README.md +162 -0
- package/overlays/open-webui/devcontainer.patch.json +14 -0
- package/overlays/open-webui/docker-compose.yml +23 -0
- package/overlays/open-webui/overlay.yml +38 -0
- package/overlays/openapi-tools/devcontainer.patch.json +1 -2
- package/overlays/openapi-tools/setup.sh +9 -8
- package/overlays/opencode/setup.sh +5 -0
- package/overlays/otel-collector/overlay.yml +2 -0
- package/overlays/otel-collector/setup.sh +3 -16
- package/overlays/otel-demo-nodejs/verify.sh +8 -9
- package/overlays/otel-demo-python/verify.sh +16 -10
- package/overlays/pandoc/README.md +22 -15
- package/overlays/pandoc/devcontainer.patch.json +6 -2
- package/overlays/pandoc/setup.sh +217 -18
- package/overlays/pandoc/verify.sh +16 -4
- package/overlays/pgvector/.env.example +6 -0
- package/overlays/pgvector/README.md +215 -0
- package/overlays/pgvector/devcontainer.patch.json +23 -0
- package/overlays/pgvector/docker-compose.yml +32 -0
- package/overlays/pgvector/overlay.yml +44 -0
- package/overlays/playwright/devcontainer.patch.json +3 -1
- package/overlays/playwright/setup.sh +37 -0
- package/overlays/postgres/.env.example +5 -5
- package/overlays/postgres/devcontainer.patch.json +4 -4
- package/overlays/postgres/docker-compose.yml +15 -5
- package/overlays/postgres/overlay.yml +19 -1
- package/overlays/powershell/setup.sh +49 -13
- package/overlays/pre-commit/setup.sh +12 -3
- package/overlays/prometheus/overlay.yml +2 -0
- package/overlays/promtail/verify.sh +16 -10
- package/overlays/pulumi/devcontainer.patch.json +1 -1
- package/overlays/python/setup.sh +28 -9
- package/overlays/python/verify.sh +4 -2
- package/overlays/qdrant/.env.example +4 -0
- package/overlays/qdrant/README.md +216 -0
- package/overlays/qdrant/devcontainer.patch.json +20 -0
- package/overlays/qdrant/docker-compose.yml +25 -0
- package/overlays/qdrant/overlay.yml +40 -0
- package/overlays/redpanda/docker-compose.yml +3 -5
- package/overlays/rocm/README.md +227 -0
- package/overlays/rocm/devcontainer.patch.json +4 -0
- package/overlays/rocm/overlay.yml +17 -0
- package/overlays/rocm/setup.sh +45 -0
- package/overlays/rocm/verify.sh +47 -0
- package/overlays/rust/setup.sh +11 -18
- package/overlays/skaffold/README.md +256 -0
- package/overlays/skaffold/devcontainer.patch.json +9 -0
- package/overlays/skaffold/overlay.yml +20 -0
- package/overlays/skaffold/setup.sh +33 -0
- package/overlays/skaffold/verify.sh +24 -0
- package/overlays/spec-kit/setup.sh +7 -3
- package/overlays/sqlite/setup.sh +14 -14
- package/overlays/sqlserver/docker-compose.yml +3 -3
- package/overlays/sqlserver/verify.sh +22 -5
- package/overlays/tempo/verify.sh +16 -10
- package/overlays/tilt/devcontainer.patch.json +1 -2
- package/overlays/tilt/setup.sh +14 -4
- package/overlays/windsurf-cli/setup.sh +27 -4
- package/overlays/windsurf-cli/verify.sh +13 -3
- package/package.json +4 -2
- package/templates/scripts/setup-utils.sh +228 -0
- package/tool/schema/config.schema.json +141 -9
- package/tool/schema/overlay-manifest.schema.json +38 -0
- package/overlays/.shared/compose/common-healthchecks.yml +0 -38
- /package/overlays/otel-demo-nodejs/{Dockerfile-otel-demo-nodejs → Dockerfile} +0 -0
- /package/overlays/otel-demo-nodejs/{package-otel-demo-nodejs.json → package.json} +0 -0
- /package/overlays/otel-demo-nodejs/{server-otel-demo-nodejs.js → server.js} +0 -0
- /package/overlays/otel-demo-nodejs/{tracing-otel-demo-nodejs.js → tracing.js} +0 -0
- /package/overlays/otel-demo-python/{Dockerfile-otel-demo-python → Dockerfile} +0 -0
- /package/overlays/otel-demo-python/{app-otel-demo-python.py → app.py} +0 -0
- /package/overlays/otel-demo-python/{requirements-otel-demo-python.txt → requirements.txt} +0 -0
package/docs/overlays.md
CHANGED
|
@@ -69,12 +69,13 @@ Jupyter notebook server for interactive computing and data science
|
|
|
69
69
|
|
|
70
70
|
Material for MkDocs - professional documentation generator
|
|
71
71
|
|
|
72
|
-
| Property
|
|
73
|
-
|
|
|
74
|
-
| **Category**
|
|
75
|
-
| **Requires**
|
|
76
|
-
| **
|
|
77
|
-
| **
|
|
72
|
+
| Property | Value |
|
|
73
|
+
| ------------- | ----------------------------------- |
|
|
74
|
+
| **Category** | language |
|
|
75
|
+
| **Requires** | `python` |
|
|
76
|
+
| **Conflicts** | `mkdocs2` |
|
|
77
|
+
| **Tags** | `documentation`, `mkdocs`, `python` |
|
|
78
|
+
| **Ports** | 8000 |
|
|
78
79
|
|
|
79
80
|
### Node.js (`nodejs`)
|
|
80
81
|
|
|
@@ -145,18 +146,18 @@ MongoDB 8 with Mongo Express web UI
|
|
|
145
146
|
| **Category** | database |
|
|
146
147
|
| **Supports** | compose |
|
|
147
148
|
| **Tags** | `database`, `nosql`, `mongodb`, `document` |
|
|
148
|
-
| **Ports** |
|
|
149
|
+
| **Ports** | 27017/tcp, 8081/http |
|
|
149
150
|
|
|
150
151
|
### MySQL (`mysql`)
|
|
151
152
|
|
|
152
153
|
MySQL 8 with phpMyAdmin web UI
|
|
153
154
|
|
|
154
|
-
| Property | Value
|
|
155
|
-
| ------------ |
|
|
156
|
-
| **Category** | database
|
|
157
|
-
| **Supports** | compose
|
|
158
|
-
| **Tags** | `database`, `sql`, `mysql`
|
|
159
|
-
| **Ports** |
|
|
155
|
+
| Property | Value |
|
|
156
|
+
| ------------ | -------------------------- |
|
|
157
|
+
| **Category** | database |
|
|
158
|
+
| **Supports** | compose |
|
|
159
|
+
| **Tags** | `database`, `sql`, `mysql` |
|
|
160
|
+
| **Ports** | 3306/tcp, 8080/http |
|
|
160
161
|
|
|
161
162
|
### NATS (`nats`)
|
|
162
163
|
|
|
@@ -167,18 +168,44 @@ Lightweight pub/sub messaging with JetStream
|
|
|
167
168
|
| **Category** | database |
|
|
168
169
|
| **Supports** | compose |
|
|
169
170
|
| **Tags** | `database`, `messaging`, `pubsub`, `nats`, `jetstream` |
|
|
170
|
-
| **Ports** |
|
|
171
|
+
| **Ports** | 4222/tcp, 8222/http |
|
|
172
|
+
|
|
173
|
+
### pgvector (PostgreSQL + vector) (`pgvector`)
|
|
174
|
+
|
|
175
|
+
PostgreSQL 16 with the pgvector extension for vector similarity search
|
|
176
|
+
|
|
177
|
+
| Property | Value |
|
|
178
|
+
| ------------- | ----------------------------------------------------------------- |
|
|
179
|
+
| **Category** | database |
|
|
180
|
+
| **Supports** | compose |
|
|
181
|
+
| **Suggests** | `ollama`, `python`, `nodejs` |
|
|
182
|
+
| **Conflicts** | `postgres` |
|
|
183
|
+
| **Tags** | `database`, `sql`, `vector`, `embeddings`, `postgres`, `pgvector` |
|
|
184
|
+
| **Ports** | 5432/tcp |
|
|
171
185
|
|
|
172
186
|
### PostgreSQL (`postgres`)
|
|
173
187
|
|
|
174
188
|
PostgreSQL 16 database
|
|
175
189
|
|
|
176
|
-
| Property
|
|
177
|
-
|
|
|
178
|
-
| **Category**
|
|
179
|
-
| **Supports**
|
|
180
|
-
| **
|
|
181
|
-
| **
|
|
190
|
+
| Property | Value |
|
|
191
|
+
| ------------- | ----------------------------- |
|
|
192
|
+
| **Category** | database |
|
|
193
|
+
| **Supports** | compose |
|
|
194
|
+
| **Conflicts** | `pgvector` |
|
|
195
|
+
| **Tags** | `database`, `sql`, `postgres` |
|
|
196
|
+
| **Ports** | 5432/tcp |
|
|
197
|
+
|
|
198
|
+
### Qdrant (`qdrant`)
|
|
199
|
+
|
|
200
|
+
High-performance vector database for similarity search and embeddings
|
|
201
|
+
|
|
202
|
+
| Property | Value |
|
|
203
|
+
| ------------ | ------------------------------------------------------ |
|
|
204
|
+
| **Category** | database |
|
|
205
|
+
| **Supports** | compose |
|
|
206
|
+
| **Suggests** | `ollama`, `python`, `nodejs` |
|
|
207
|
+
| **Tags** | `database`, `vector`, `embeddings`, `search`, `qdrant` |
|
|
208
|
+
| **Ports** | 6333/http, 6334/grpc |
|
|
182
209
|
|
|
183
210
|
### RabbitMQ (`rabbitmq`)
|
|
184
211
|
|
|
@@ -189,7 +216,7 @@ Message broker with AMQP protocol and management UI
|
|
|
189
216
|
| **Category** | database |
|
|
190
217
|
| **Supports** | compose |
|
|
191
218
|
| **Tags** | `database`, `messaging`, `queue`, `rabbitmq`, `amqp` |
|
|
192
|
-
| **Ports** |
|
|
219
|
+
| **Ports** | 5672/tcp, 15672/http |
|
|
193
220
|
|
|
194
221
|
### Redis (`redis`)
|
|
195
222
|
|
|
@@ -200,7 +227,7 @@ Redis 7 cache
|
|
|
200
227
|
| **Category** | database |
|
|
201
228
|
| **Supports** | compose |
|
|
202
229
|
| **Tags** | `database`, `cache`, `redis` |
|
|
203
|
-
| **Ports** |
|
|
230
|
+
| **Ports** | 6379/tcp |
|
|
204
231
|
|
|
205
232
|
### Redpanda (`redpanda`)
|
|
206
233
|
|
|
@@ -241,13 +268,13 @@ SQLite with litecli and VS Code extensions
|
|
|
241
268
|
|
|
242
269
|
Distributed tracing backend
|
|
243
270
|
|
|
244
|
-
| Property | Value
|
|
245
|
-
| ------------- |
|
|
246
|
-
| **Category** | observability
|
|
247
|
-
| **Supports** | compose
|
|
248
|
-
| **Conflicts** | `tempo`
|
|
249
|
-
| **Tags** | `observability`, `tracing`, `jaeger`
|
|
250
|
-
| **Ports** |
|
|
271
|
+
| Property | Value |
|
|
272
|
+
| ------------- | ------------------------------------ |
|
|
273
|
+
| **Category** | observability |
|
|
274
|
+
| **Supports** | compose |
|
|
275
|
+
| **Conflicts** | `tempo` |
|
|
276
|
+
| **Tags** | `observability`, `tracing`, `jaeger` |
|
|
277
|
+
| **Ports** | 16686/http, 14250/grpc, 14268/http |
|
|
251
278
|
|
|
252
279
|
### Loki (`loki`)
|
|
253
280
|
|
|
@@ -259,7 +286,7 @@ Log aggregation system
|
|
|
259
286
|
| **Supports** | compose |
|
|
260
287
|
| **Suggests** | `promtail` |
|
|
261
288
|
| **Tags** | `observability`, `logs`, `loki` |
|
|
262
|
-
| **Ports** |
|
|
289
|
+
| **Ports** | 3100/http |
|
|
263
290
|
|
|
264
291
|
### Prometheus (`prometheus`)
|
|
265
292
|
|
|
@@ -271,7 +298,7 @@ Metrics collection and monitoring
|
|
|
271
298
|
| **Supports** | compose |
|
|
272
299
|
| **Suggests** | `alertmanager` |
|
|
273
300
|
| **Tags** | `observability`, `metrics`, `prometheus` |
|
|
274
|
-
| **Ports** |
|
|
301
|
+
| **Ports** | 9090/http |
|
|
275
302
|
|
|
276
303
|
### Tempo (`tempo`)
|
|
277
304
|
|
|
@@ -332,7 +359,7 @@ Observability visualization dashboard with auto-provisioning
|
|
|
332
359
|
| **Requires** | `prometheus` |
|
|
333
360
|
| **Suggests** | `loki`, `jaeger`, `tempo`, `promtail` |
|
|
334
361
|
| **Tags** | `observability`, `ui`, `visualization` |
|
|
335
|
-
| **Ports** |
|
|
362
|
+
| **Ports** | 3000/http |
|
|
336
363
|
|
|
337
364
|
### OTel Demo (Node.js) (`otel-demo-nodejs`)
|
|
338
365
|
|
|
@@ -389,6 +416,18 @@ Google Cloud Platform command-line tools (gcloud, gsutil, bq)
|
|
|
389
416
|
| **Category** | cloud |
|
|
390
417
|
| **Tags** | `cloud`, `gcp`, `google`, `cli` |
|
|
391
418
|
|
|
419
|
+
### k3d (`k3d`)
|
|
420
|
+
|
|
421
|
+
Lightweight local Kubernetes clusters using k3s in Docker
|
|
422
|
+
|
|
423
|
+
| Property | Value |
|
|
424
|
+
| ------------- | ----------------------------------------------------- |
|
|
425
|
+
| **Category** | cloud |
|
|
426
|
+
| **Requires** | `docker-in-docker` |
|
|
427
|
+
| **Suggests** | `kubectl-helm` |
|
|
428
|
+
| **Conflicts** | `kind` |
|
|
429
|
+
| **Tags** | `cloud`, `kubernetes`, `k8s`, `k3d`, `k3s`, `testing` |
|
|
430
|
+
|
|
392
431
|
### kind (Kubernetes in Docker) (`kind`)
|
|
393
432
|
|
|
394
433
|
Local Kubernetes cluster for development and testing
|
|
@@ -502,6 +541,18 @@ OpenAI Codex CLI for AI-powered code generation and assistance
|
|
|
502
541
|
| **Requires** | `nodejs` |
|
|
503
542
|
| **Tags** | `dev`, `ai`, `code-generation` |
|
|
504
543
|
|
|
544
|
+
### ComfyUI (`comfyui`)
|
|
545
|
+
|
|
546
|
+
Node-based image/video generation UI for Stable Diffusion and generative AI workflows
|
|
547
|
+
|
|
548
|
+
| Property | Value |
|
|
549
|
+
| ------------ | -------------------------------------------------------------- |
|
|
550
|
+
| **Category** | dev |
|
|
551
|
+
| **Supports** | compose |
|
|
552
|
+
| **Suggests** | `cuda`, `python`, `ollama` |
|
|
553
|
+
| **Tags** | `dev`, `ai`, `image-generation`, `stable-diffusion`, `comfyui` |
|
|
554
|
+
| **Ports** | 8188 |
|
|
555
|
+
|
|
505
556
|
### Commitlint (`commitlint`)
|
|
506
557
|
|
|
507
558
|
Conventional commits validation for automated releases
|
|
@@ -513,6 +564,26 @@ Conventional commits validation for automated releases
|
|
|
513
564
|
| **Suggests** | `pre-commit` |
|
|
514
565
|
| **Tags** | `dev`, `git`, `commits`, `semantic-release` |
|
|
515
566
|
|
|
567
|
+
### CUDA (NVIDIA GPU) (`cuda`)
|
|
568
|
+
|
|
569
|
+
NVIDIA CUDA libraries and GPU passthrough for containerized ML/inference workloads
|
|
570
|
+
|
|
571
|
+
| Property | Value |
|
|
572
|
+
| ------------- | ------------------------------------------------- |
|
|
573
|
+
| **Category** | dev |
|
|
574
|
+
| **Conflicts** | `rocm` |
|
|
575
|
+
| **Tags** | `dev`, `gpu`, `cuda`, `nvidia`, `ml`, `inference` |
|
|
576
|
+
|
|
577
|
+
### Dev Container CLI (`devcontainer-cli`)
|
|
578
|
+
|
|
579
|
+
Official devcontainer CLI for building and testing devcontainer configurations
|
|
580
|
+
|
|
581
|
+
| Property | Value |
|
|
582
|
+
| ------------ | --------------------------------------- |
|
|
583
|
+
| **Category** | dev |
|
|
584
|
+
| **Suggests** | `docker-sock`, `docker-in-docker` |
|
|
585
|
+
| **Tags** | `dev`, `devcontainer`, `cli`, `testing` |
|
|
586
|
+
|
|
516
587
|
### direnv (`direnv`)
|
|
517
588
|
|
|
518
589
|
Per-directory environment variable management
|
|
@@ -589,7 +660,7 @@ Open-source identity and access management (OIDC/OAuth2)
|
|
|
589
660
|
| **Supports** | compose |
|
|
590
661
|
| **Requires** | `postgres` |
|
|
591
662
|
| **Tags** | `dev`, `auth`, `oidc`, `oauth2`, `identity` |
|
|
592
|
-
| **Ports** |
|
|
663
|
+
| **Ports** | 8180/http |
|
|
593
664
|
|
|
594
665
|
### Mailpit (`mailpit`)
|
|
595
666
|
|
|
@@ -600,7 +671,19 @@ Email testing tool with web UI and SMTP server
|
|
|
600
671
|
| **Category** | dev |
|
|
601
672
|
| **Supports** | compose |
|
|
602
673
|
| **Tags** | `dev`, `email`, `smtp`, `testing` |
|
|
603
|
-
| **Ports** |
|
|
674
|
+
| **Ports** | 8025/http, 1025/tcp |
|
|
675
|
+
|
|
676
|
+
### MkDocs 2 (`mkdocs2`)
|
|
677
|
+
|
|
678
|
+
MkDocs 2.0 pre-release (encode/mkdocs) — smart, simple website design tool
|
|
679
|
+
|
|
680
|
+
| Property | Value |
|
|
681
|
+
| ------------- | ------------------------------------------ |
|
|
682
|
+
| **Category** | dev |
|
|
683
|
+
| **Requires** | `python` |
|
|
684
|
+
| **Conflicts** | `mkdocs` |
|
|
685
|
+
| **Tags** | `dev`, `documentation`, `mkdocs`, `python` |
|
|
686
|
+
| **Ports** | 8000 |
|
|
604
687
|
|
|
605
688
|
### Modern CLI Tools (`modern-cli-tools`)
|
|
606
689
|
|
|
@@ -622,6 +705,30 @@ Secure tunneling for webhook testing and external access
|
|
|
622
705
|
| **Tags** | `dev`, `tunneling`, `webhooks` |
|
|
623
706
|
| **Ports** | 4040 |
|
|
624
707
|
|
|
708
|
+
### Ollama (`ollama`)
|
|
709
|
+
|
|
710
|
+
Local LLM inference server with OpenAI-compatible API
|
|
711
|
+
|
|
712
|
+
| Property | Value |
|
|
713
|
+
| ------------ | ----------------------------------------- |
|
|
714
|
+
| **Category** | dev |
|
|
715
|
+
| **Supports** | compose |
|
|
716
|
+
| **Suggests** | `codex`, `claude-code`, `amp` |
|
|
717
|
+
| **Tags** | `dev`, `ai`, `llm`, `inference`, `ollama` |
|
|
718
|
+
| **Ports** | 11434 |
|
|
719
|
+
|
|
720
|
+
### Open WebUI (`open-webui`)
|
|
721
|
+
|
|
722
|
+
Browser-based chat UI for Ollama and OpenAI-compatible LLM backends
|
|
723
|
+
|
|
724
|
+
| Property | Value |
|
|
725
|
+
| ------------ | --------------------------------------------- |
|
|
726
|
+
| **Category** | dev |
|
|
727
|
+
| **Supports** | compose |
|
|
728
|
+
| **Suggests** | `ollama` |
|
|
729
|
+
| **Tags** | `dev`, `ai`, `llm`, `ui`, `chat`, `openwebui` |
|
|
730
|
+
| **Ports** | 3000/http |
|
|
731
|
+
|
|
625
732
|
### OpenAPI Tools (`openapi-tools`)
|
|
626
733
|
|
|
627
734
|
OpenAPI/Swagger tooling for API development and documentation
|
|
@@ -662,6 +769,27 @@ Automated code quality gates with pre-commit hooks
|
|
|
662
769
|
| **Suggests** | `commitlint` |
|
|
663
770
|
| **Tags** | `dev`, `git`, `quality`, `hooks` |
|
|
664
771
|
|
|
772
|
+
### ROCm (AMD GPU) (`rocm`)
|
|
773
|
+
|
|
774
|
+
AMD ROCm libraries and GPU passthrough for containerized ML/inference workloads
|
|
775
|
+
|
|
776
|
+
| Property | Value |
|
|
777
|
+
| ------------- | ---------------------------------------------- |
|
|
778
|
+
| **Category** | dev |
|
|
779
|
+
| **Conflicts** | `cuda` |
|
|
780
|
+
| **Tags** | `dev`, `gpu`, `rocm`, `amd`, `ml`, `inference` |
|
|
781
|
+
|
|
782
|
+
### Skaffold (`skaffold`)
|
|
783
|
+
|
|
784
|
+
Continuous development and deployment pipeline for Kubernetes applications
|
|
785
|
+
|
|
786
|
+
| Property | Value |
|
|
787
|
+
| ------------- | ------------------------------------------------------------ |
|
|
788
|
+
| **Category** | dev |
|
|
789
|
+
| **Suggests** | `kubectl-helm`, `kind`, `k3d` |
|
|
790
|
+
| **Conflicts** | `tilt` |
|
|
791
|
+
| **Tags** | `dev`, `kubernetes`, `k8s`, `cicd`, `deployment`, `skaffold` |
|
|
792
|
+
|
|
665
793
|
### Tilt (`tilt`)
|
|
666
794
|
|
|
667
795
|
Live update and orchestration for Kubernetes development
|
package/docs/quick-reference.md
CHANGED
|
@@ -162,6 +162,105 @@ npm run init -- \
|
|
|
162
162
|
--cloud-tools aws-cli,azure-cli,kubectl-helm
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
+
## Doctor Command
|
|
166
|
+
|
|
167
|
+
The `doctor` command validates the current environment and devcontainer configuration.
|
|
168
|
+
|
|
169
|
+
### Basic Diagnostics
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Run diagnostics against the default .devcontainer/
|
|
173
|
+
container-superposition doctor
|
|
174
|
+
|
|
175
|
+
# Specify a custom path
|
|
176
|
+
container-superposition doctor --output ./my-project/.devcontainer
|
|
177
|
+
|
|
178
|
+
# Point to a manifest file directly (outputPath is derived from the manifest)
|
|
179
|
+
container-superposition doctor --from-manifest ./superposition.json
|
|
180
|
+
|
|
181
|
+
# Load the output path from the repository project file (superposition.yml)
|
|
182
|
+
container-superposition doctor --from-project
|
|
183
|
+
|
|
184
|
+
# Run discovery relative to a different repository root
|
|
185
|
+
container-superposition doctor --project-root /path/to/repo
|
|
186
|
+
|
|
187
|
+
# Machine-readable JSON output
|
|
188
|
+
container-superposition doctor --json
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Auto-Repair with `--fix`
|
|
192
|
+
|
|
193
|
+
The `--fix` flag runs the full diagnosis and then attempts to automatically repair
|
|
194
|
+
any fixable issues:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Interactive auto-repair (text output)
|
|
198
|
+
container-superposition doctor --fix
|
|
199
|
+
|
|
200
|
+
# Machine-readable repair output (for CI/scripting)
|
|
201
|
+
container-superposition doctor --fix --json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Fix run output vocabulary:**
|
|
205
|
+
|
|
206
|
+
| Outcome | Meaning |
|
|
207
|
+
| ------------------------ | ---------------------------------------------------- |
|
|
208
|
+
| `fixed` | Tool changed the environment; re-check now passes |
|
|
209
|
+
| `already compliant` | No change needed — check already passed |
|
|
210
|
+
| `skipped` | Not attempted (prerequisite step failed) |
|
|
211
|
+
| `requires manual action` | Automation unsafe/unavailable; manual steps provided |
|
|
212
|
+
|
|
213
|
+
**Fixable issue classes:**
|
|
214
|
+
|
|
215
|
+
| Issue | Auto-fix condition |
|
|
216
|
+
| -------------------------------------------- | ---------------------------------------------------------- |
|
|
217
|
+
| Stale / legacy `superposition.json` manifest | Always — migrate to current schema |
|
|
218
|
+
| Missing or corrupt `devcontainer.json` | When a valid manifest is present — regenerate |
|
|
219
|
+
| Unsupported Node.js runtime | Only when `nvm`, `fnm`, or `volta` is installed |
|
|
220
|
+
| Docker daemon not accessible | Manual only — platform-specific restart instructions shown |
|
|
221
|
+
|
|
222
|
+
**Remediation ordering:** Manifest migration always runs before devcontainer regeneration.
|
|
223
|
+
If migration fails, regeneration is skipped and marked as `skipped`.
|
|
224
|
+
|
|
225
|
+
**Safety:** All file mutations use atomic write (write to `.tmp`, then rename).
|
|
226
|
+
A timestamped backup is created before any manifest is modified.
|
|
227
|
+
|
|
228
|
+
**Exit codes:**
|
|
229
|
+
|
|
230
|
+
- `0` — all findings resolved (success or already-compliant)
|
|
231
|
+
- `0` — some findings require manual action (`repaired-with-warnings`)
|
|
232
|
+
- `1` — unresolved failures remain after fix run
|
|
233
|
+
|
|
234
|
+
### JSON Fix Run Structure
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"outputPath": "./.devcontainer",
|
|
239
|
+
"requestedJson": true,
|
|
240
|
+
"initialFindings": [...],
|
|
241
|
+
"executions": [
|
|
242
|
+
{
|
|
243
|
+
"findingId": "manifest-version",
|
|
244
|
+
"remediationKey": "manifest-migration",
|
|
245
|
+
"attempted": true,
|
|
246
|
+
"outcome": "fixed",
|
|
247
|
+
"reason": "Manifest migrated to current schema version",
|
|
248
|
+
"changedFiles": [".devcontainer/superposition.json"],
|
|
249
|
+
"backupPath": ".devcontainer/superposition.json.backup-2026-03-19-..."
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
"finalFindings": [...],
|
|
253
|
+
"summary": {
|
|
254
|
+
"fixed": 1,
|
|
255
|
+
"alreadyCompliant": 3,
|
|
256
|
+
"skipped": 0,
|
|
257
|
+
"requiresManualAction": 0,
|
|
258
|
+
"total": 4
|
|
259
|
+
},
|
|
260
|
+
"exitDisposition": "success"
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
165
264
|
## Output Structure
|
|
166
265
|
|
|
167
266
|
### Minimal (plain + language)
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Feature Specification: MkDocs 2.x Overlay
|
|
2
|
+
|
|
3
|
+
**Feature Branch**: `copilot/add-mkdocs2-overlay`
|
|
4
|
+
**Created**: 2026-03-16
|
|
5
|
+
**Status**: Final
|
|
6
|
+
**Input**: Add a new `mkdocs2` overlay that installs MkDocs 2.x with the Material theme via direct `pip` install, keeping the existing `mkdocs` (MkDocs 1.x) overlay untouched for backward compatibility.
|
|
7
|
+
|
|
8
|
+
## Review & Approval _(mandatory before implementation)_
|
|
9
|
+
|
|
10
|
+
- **Spec Path**: `docs/specs/003-mkdocs2-overlay/spec.md`
|
|
11
|
+
- **Commit Status**: Committed
|
|
12
|
+
- **Review Status**: Approved
|
|
13
|
+
- **Implementation Gate**: No implementation code may begin until this spec is committed and reviewed.
|
|
14
|
+
|
|
15
|
+
## User Scenarios & Testing _(mandatory)_
|
|
16
|
+
|
|
17
|
+
### User Story 1 - Use MkDocs 2.x in a devcontainer (Priority: P1)
|
|
18
|
+
|
|
19
|
+
A developer wants to write documentation using MkDocs 2.x with the Material theme inside a devcontainer without manually managing Python packages.
|
|
20
|
+
|
|
21
|
+
**Why this priority**: MkDocs 2.x is the currently maintained release. Users starting new documentation projects need a working overlay that installs the supported version.
|
|
22
|
+
|
|
23
|
+
**Independent Test**: Select the `mkdocs2` overlay (with `python` as a required dependency), rebuild the container, and confirm that `mkdocs --version` reports a 2.x release, `mkdocs new .` succeeds, and `mkdocs serve` starts the dev server on port 8000.
|
|
24
|
+
|
|
25
|
+
**Acceptance Scenarios**:
|
|
26
|
+
|
|
27
|
+
1. **Given** a user selects the `mkdocs2` overlay, **When** the devcontainer is built, **Then** `mkdocs --version` reports a version matching `2.x`.
|
|
28
|
+
2. **Given** the container is running, **When** the user runs `mkdocs serve`, **Then** the development server starts on port 8000 and VS Code forwards the port automatically.
|
|
29
|
+
3. **Given** a `mkdocs.yml` with `theme: {name: material}`, **When** the user runs `mkdocs build`, **Then** the site is generated without errors into the `site/` directory.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### User Story 2 - Conflict enforcement between mkdocs and mkdocs2 (Priority: P1)
|
|
34
|
+
|
|
35
|
+
A user selects both `mkdocs` (1.x) and `mkdocs2` (2.x) and expects the tool to report a conflict.
|
|
36
|
+
|
|
37
|
+
**Why this priority**: Both overlays install incompatible versions of the `mkdocs` command into the same environment. Allowing both would produce unpredictable results.
|
|
38
|
+
|
|
39
|
+
**Independent Test**: Attempt to generate a devcontainer with both `mkdocs` and `mkdocs2` selected and confirm the tool surfaces a conflict and blocks generation.
|
|
40
|
+
|
|
41
|
+
**Acceptance Scenarios**:
|
|
42
|
+
|
|
43
|
+
1. **Given** a user selects `mkdocs` and `mkdocs2` simultaneously, **When** the questionnaire processes the selection, **Then** a conflict is reported and the user is prompted to choose one.
|
|
44
|
+
2. **Given** `mkdocs` conflicts with `mkdocs2` in `overlays/mkdocs/overlay.yml`, **When** the overlay loader reads both manifests, **Then** the conflict is recognised bidirectionally.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### User Story 3 - Backward compatibility for existing mkdocs users (Priority: P2)
|
|
49
|
+
|
|
50
|
+
An existing user who already has the `mkdocs` overlay selected is unaffected by the addition of the new overlay.
|
|
51
|
+
|
|
52
|
+
**Why this priority**: Introducing a new overlay must not break users who rely on the existing one.
|
|
53
|
+
|
|
54
|
+
**Independent Test**: Generate a devcontainer using only the `mkdocs` overlay and confirm the output is identical to what it was before `mkdocs2` was added.
|
|
55
|
+
|
|
56
|
+
**Acceptance Scenarios**:
|
|
57
|
+
|
|
58
|
+
1. **Given** a user's `superposition.json` references only `mkdocs`, **When** they run `regen`, **Then** the output is identical to before and contains no `mkdocs2`-related changes.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Design
|
|
63
|
+
|
|
64
|
+
### Installation Method
|
|
65
|
+
|
|
66
|
+
The `mkdocs2` overlay installs packages via `pip` directly into the workspace
|
|
67
|
+
`.venv` virtual environment (created by the `python` overlay, which is a hard
|
|
68
|
+
dependency). The overlay's `setup.sh` creates the `.venv` if it does not exist
|
|
69
|
+
yet, so it is self-contained even when run before the `python` overlay's setup
|
|
70
|
+
script completes.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
pip install --no-cache-dir \
|
|
74
|
+
"mkdocs>=2.0,<3.0" \
|
|
75
|
+
"mkdocs-material>=9.0" \
|
|
76
|
+
"mkdocs-minify-plugin" \
|
|
77
|
+
"mkdocs-redirects" \
|
|
78
|
+
"pymdown-extensions"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This approach is preferred over the `ghcr.io/devcontainers-extra/features/mkdocs:2`
|
|
82
|
+
devcontainer feature because it gives precise version control and installs into
|
|
83
|
+
the same virtual environment used by the rest of the project.
|
|
84
|
+
|
|
85
|
+
### Category
|
|
86
|
+
|
|
87
|
+
`dev` — MkDocs is a documentation tool, not a language runtime. This differs
|
|
88
|
+
from the legacy `mkdocs` overlay which uses `language` for historical reasons.
|
|
89
|
+
|
|
90
|
+
### Conflict Model
|
|
91
|
+
|
|
92
|
+
`mkdocs` ↔ `mkdocs2` conflict is bidirectional:
|
|
93
|
+
|
|
94
|
+
- `overlays/mkdocs/overlay.yml`: `conflicts: [mkdocs2]`
|
|
95
|
+
- `overlays/mkdocs2/overlay.yml`: `conflicts: [mkdocs]`
|
|
96
|
+
|
|
97
|
+
### TypeScript Type
|
|
98
|
+
|
|
99
|
+
`mkdocs2` is added to the `DevTool` union in `tool/schema/types.ts`, making it
|
|
100
|
+
part of the `OverlayId` union used throughout the type system.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Files
|
|
105
|
+
|
|
106
|
+
| File | Description |
|
|
107
|
+
| ------------------------------------------ | -------------------------------------------------- |
|
|
108
|
+
| `overlays/mkdocs2/overlay.yml` | Overlay manifest |
|
|
109
|
+
| `overlays/mkdocs2/devcontainer.patch.json` | Port 8000 forwarding + VS Code Markdown extensions |
|
|
110
|
+
| `overlays/mkdocs2/setup.sh` | Pip install into `.venv` |
|
|
111
|
+
| `overlays/mkdocs2/verify.sh` | Confirms MkDocs 2.x is installed |
|
|
112
|
+
| `overlays/mkdocs2/README.md` | User documentation |
|
|
113
|
+
| `overlays/mkdocs/overlay.yml` | Updated to add bidirectional conflict |
|
|
114
|
+
| `tool/schema/types.ts` | Adds `mkdocs2` to `DevTool` |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Feature Specification: `doctor --fix` — Interactive Auto-Repair
|
|
2
|
+
|
|
3
|
+
**Feature Branch**: `004-doctor-fix`
|
|
4
|
+
**Created**: 2026-03-19
|
|
5
|
+
**Status**: Final
|
|
6
|
+
**Input**: GitHub issue: Implement `doctor --fix` — interactive auto-repair for environment issues
|
|
7
|
+
|
|
8
|
+
## Review & Approval _(mandatory before implementation)_
|
|
9
|
+
|
|
10
|
+
- **Spec Path**: `docs/specs/004-doctor-fix/spec.md`
|
|
11
|
+
- **Commit Status**: Committed
|
|
12
|
+
- **Review Status**: APPROVED
|
|
13
|
+
- **Implementation Gate**: No implementation code may begin until this spec is committed and reviewed.
|
|
14
|
+
|
|
15
|
+
## Summary
|
|
16
|
+
|
|
17
|
+
The `doctor` command validates the environment. The `--fix` path was a placeholder. This spec
|
|
18
|
+
describes the full implementation of an interactive, safe, deterministic auto-repair flow for
|
|
19
|
+
common environment issues.
|
|
20
|
+
|
|
21
|
+
## Initial Auto-Fix Scope
|
|
22
|
+
|
|
23
|
+
| # | Issue class | Automation condition |
|
|
24
|
+
| --- | ------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
25
|
+
| 1 | Stale or legacy `superposition.json` metadata | Always supported (manifest migration) |
|
|
26
|
+
| 2 | Derived `.devcontainer/` drift or missing generated artifacts | Supported when a valid manifest is present (regeneration) |
|
|
27
|
+
| 3 | Unsupported Node runtime | Supported only when `nvm`, `fnm`, or `volta` is already available |
|
|
28
|
+
| 4 | Docker / Compose tooling drift | Supported only when a known safe host repair command is available |
|
|
29
|
+
|
|
30
|
+
## Outcome Vocabulary
|
|
31
|
+
|
|
32
|
+
Every finding evaluated by the fix flow resolves to exactly one of:
|
|
33
|
+
|
|
34
|
+
- **`fixed`** — tool changed the environment and targeted re-check now passes
|
|
35
|
+
- **`already compliant`** — fix path found no change was needed
|
|
36
|
+
- **`skipped`** — not attempted because an earlier failure or prerequisite blocked it
|
|
37
|
+
- **`requires manual action`** — issue remains; automation is unsafe or unavailable
|
|
38
|
+
|
|
39
|
+
## Data Model
|
|
40
|
+
|
|
41
|
+
### `DiagnosticFinding`
|
|
42
|
+
|
|
43
|
+
Fields: `id`, `category`, `name`, `status`, `message`, `details?`, `fixEligibility`, `remediationKey?`, `recheckScope`
|
|
44
|
+
|
|
45
|
+
### `RemediationAction`
|
|
46
|
+
|
|
47
|
+
Fields: `key`, `findingId`, `safetyClass`, `executionKind`, `preconditions`, `plannedChanges`, `manualFallback`
|
|
48
|
+
|
|
49
|
+
### `FixExecution`
|
|
50
|
+
|
|
51
|
+
Fields: `findingId`, `remediationKey`, `attempted`, `outcome`, `reason`, `commands?`, `changedFiles?`, `backupPath?`, `rechecked`
|
|
52
|
+
|
|
53
|
+
### `FixRun`
|
|
54
|
+
|
|
55
|
+
Fields: `outputPath`, `requestedJson`, `initialFindings`, `executions`, `finalFindings`, `summary`, `exitDisposition`
|
|
56
|
+
|
|
57
|
+
## CLI Contract
|
|
58
|
+
|
|
59
|
+
- `doctor` without `--fix` — no change to current diagnostics behavior
|
|
60
|
+
- `doctor --fix` — diagnose → remediate in stable order → re-check → print summary
|
|
61
|
+
- `doctor --fix --json` — same flow, machine-readable JSON output
|
|
62
|
+
|
|
63
|
+
## Remediation Ordering
|
|
64
|
+
|
|
65
|
+
Prerequisites before dependents:
|
|
66
|
+
|
|
67
|
+
1. Stale manifest migration (must complete before regeneration)
|
|
68
|
+
2. Missing artifacts / devcontainer drift (regeneration from manifest)
|
|
69
|
+
3. Node version fix (only if version manager available)
|
|
70
|
+
4. Docker tooling fix (only if repair command available)
|