container-superposition 0.1.3 → 0.1.5

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 (141) hide show
  1. package/README.md +72 -1014
  2. package/dist/scripts/init.js +512 -238
  3. package/dist/scripts/init.js.map +1 -1
  4. package/dist/tool/commands/adopt.d.ts +62 -0
  5. package/dist/tool/commands/adopt.d.ts.map +1 -0
  6. package/dist/tool/commands/adopt.js +767 -0
  7. package/dist/tool/commands/adopt.js.map +1 -0
  8. package/dist/tool/commands/doctor.js +2 -2
  9. package/dist/tool/commands/explain.d.ts.map +1 -1
  10. package/dist/tool/commands/explain.js +88 -0
  11. package/dist/tool/commands/explain.js.map +1 -1
  12. package/dist/tool/commands/hash.d.ts +36 -0
  13. package/dist/tool/commands/hash.d.ts.map +1 -0
  14. package/dist/tool/commands/hash.js +242 -0
  15. package/dist/tool/commands/hash.js.map +1 -0
  16. package/dist/tool/commands/plan.d.ts +53 -0
  17. package/dist/tool/commands/plan.d.ts.map +1 -1
  18. package/dist/tool/commands/plan.js +784 -42
  19. package/dist/tool/commands/plan.js.map +1 -1
  20. package/dist/tool/questionnaire/composer.d.ts +12 -3
  21. package/dist/tool/questionnaire/composer.d.ts.map +1 -1
  22. package/dist/tool/questionnaire/composer.js +133 -20
  23. package/dist/tool/questionnaire/composer.js.map +1 -1
  24. package/dist/tool/schema/project-config.d.ts +15 -0
  25. package/dist/tool/schema/project-config.d.ts.map +1 -0
  26. package/dist/tool/schema/project-config.js +359 -0
  27. package/dist/tool/schema/project-config.js.map +1 -0
  28. package/dist/tool/schema/types.d.ts +57 -1
  29. package/dist/tool/schema/types.d.ts.map +1 -1
  30. package/dist/tool/utils/backup.d.ts +23 -0
  31. package/dist/tool/utils/backup.d.ts.map +1 -0
  32. package/dist/tool/utils/backup.js +123 -0
  33. package/dist/tool/utils/backup.js.map +1 -0
  34. package/dist/tool/utils/gitignore.d.ts +15 -0
  35. package/dist/tool/utils/gitignore.d.ts.map +1 -0
  36. package/dist/tool/utils/gitignore.js +41 -0
  37. package/dist/tool/utils/gitignore.js.map +1 -0
  38. package/dist/tool/utils/services-export.d.ts +14 -0
  39. package/dist/tool/utils/services-export.d.ts.map +1 -0
  40. package/dist/tool/utils/services-export.js +478 -0
  41. package/dist/tool/utils/services-export.js.map +1 -0
  42. package/dist/tool/utils/summary.d.ts +69 -0
  43. package/dist/tool/utils/summary.d.ts.map +1 -0
  44. package/dist/tool/utils/summary.js +260 -0
  45. package/dist/tool/utils/summary.js.map +1 -0
  46. package/docs/README.md +12 -2
  47. package/docs/adopt.md +196 -0
  48. package/docs/custom-patches.md +1 -1
  49. package/docs/discovery-commands.md +55 -3
  50. package/docs/examples.md +40 -6
  51. package/docs/filesystem-contract.md +58 -0
  52. package/docs/hash.md +183 -0
  53. package/docs/minimal-and-editor.md +1 -1
  54. package/docs/overlays.md +108 -5
  55. package/docs/presets-architecture.md +1 -1
  56. package/docs/presets.md +1 -1
  57. package/docs/publishing.md +36 -23
  58. package/docs/security.md +43 -0
  59. package/docs/specs/001-verbose-plan-graph/checklists/requirements.md +36 -0
  60. package/docs/specs/001-verbose-plan-graph/contracts/plan-verbose-output.md +96 -0
  61. package/docs/specs/001-verbose-plan-graph/data-model.md +111 -0
  62. package/docs/specs/001-verbose-plan-graph/plan.md +127 -0
  63. package/docs/specs/001-verbose-plan-graph/quickstart.md +106 -0
  64. package/docs/specs/001-verbose-plan-graph/research.md +100 -0
  65. package/docs/specs/001-verbose-plan-graph/spec.md +128 -0
  66. package/docs/specs/001-verbose-plan-graph/tasks.md +223 -0
  67. package/docs/specs/002-superposition-config-file/checklists/requirements.md +36 -0
  68. package/docs/specs/002-superposition-config-file/contracts/init-project-config.md +98 -0
  69. package/docs/specs/002-superposition-config-file/data-model.md +126 -0
  70. package/docs/specs/002-superposition-config-file/plan.md +208 -0
  71. package/docs/specs/002-superposition-config-file/quickstart.md +140 -0
  72. package/docs/specs/002-superposition-config-file/research.md +144 -0
  73. package/docs/specs/002-superposition-config-file/spec.md +130 -0
  74. package/docs/specs/002-superposition-config-file/tasks.md +213 -0
  75. package/docs/team-workflow.md +27 -1
  76. package/docs/workflows.md +136 -0
  77. package/overlays/.presets/microservice.yml +32 -6
  78. package/overlays/.presets/sdd.yml +84 -0
  79. package/overlays/.presets/web-api.yml +76 -56
  80. package/overlays/README.md +7 -1
  81. package/overlays/amp/README.md +70 -0
  82. package/overlays/amp/devcontainer.patch.json +3 -0
  83. package/overlays/amp/overlay.yml +15 -0
  84. package/overlays/amp/setup.sh +21 -0
  85. package/overlays/amp/verify.sh +21 -0
  86. package/overlays/claude-code/README.md +83 -0
  87. package/overlays/claude-code/devcontainer.patch.json +3 -0
  88. package/overlays/claude-code/overlay.yml +15 -0
  89. package/overlays/claude-code/setup.sh +21 -0
  90. package/overlays/claude-code/verify.sh +21 -0
  91. package/overlays/cloudflared/README.md +190 -0
  92. package/overlays/cloudflared/devcontainer.patch.json +3 -0
  93. package/overlays/cloudflared/overlay.yml +15 -0
  94. package/overlays/cloudflared/setup.sh +49 -0
  95. package/overlays/cloudflared/verify.sh +21 -0
  96. package/overlays/direnv/README.md +6 -4
  97. package/overlays/direnv/setup.sh +0 -12
  98. package/overlays/gemini-cli/README.md +77 -0
  99. package/overlays/gemini-cli/devcontainer.patch.json +3 -0
  100. package/overlays/gemini-cli/overlay.yml +15 -0
  101. package/overlays/gemini-cli/setup.sh +21 -0
  102. package/overlays/gemini-cli/verify.sh +21 -0
  103. package/overlays/grpc-tools/README.md +242 -0
  104. package/overlays/grpc-tools/devcontainer.patch.json +14 -0
  105. package/overlays/grpc-tools/overlay.yml +14 -0
  106. package/overlays/grpc-tools/setup.sh +57 -0
  107. package/overlays/grpc-tools/verify.sh +47 -0
  108. package/overlays/keycloak/.env.example +5 -0
  109. package/overlays/keycloak/README.md +238 -0
  110. package/overlays/keycloak/devcontainer.patch.json +17 -0
  111. package/overlays/keycloak/docker-compose.yml +32 -0
  112. package/overlays/keycloak/overlay.yml +23 -0
  113. package/overlays/keycloak/verify.sh +54 -0
  114. package/overlays/mailpit/.env.example +4 -0
  115. package/overlays/mailpit/README.md +191 -0
  116. package/overlays/mailpit/devcontainer.patch.json +20 -0
  117. package/overlays/mailpit/docker-compose.yml +17 -0
  118. package/overlays/mailpit/overlay.yml +26 -0
  119. package/overlays/mailpit/verify.sh +52 -0
  120. package/overlays/ngrok/overlay.yml +2 -1
  121. package/overlays/opencode/README.md +76 -0
  122. package/overlays/opencode/devcontainer.patch.json +3 -0
  123. package/overlays/opencode/overlay.yml +14 -0
  124. package/overlays/opencode/setup.sh +21 -0
  125. package/overlays/opencode/verify.sh +21 -0
  126. package/overlays/python/README.md +51 -35
  127. package/overlays/python/devcontainer.patch.json +7 -4
  128. package/overlays/python/setup.sh +50 -23
  129. package/overlays/python/verify.sh +29 -1
  130. package/overlays/spec-kit/README.md +181 -0
  131. package/overlays/spec-kit/devcontainer.patch.json +6 -0
  132. package/overlays/spec-kit/overlay.yml +19 -0
  133. package/overlays/spec-kit/setup.sh +45 -0
  134. package/overlays/spec-kit/verify.sh +33 -0
  135. package/overlays/windsurf-cli/README.md +69 -0
  136. package/overlays/windsurf-cli/devcontainer.patch.json +3 -0
  137. package/overlays/windsurf-cli/overlay.yml +15 -0
  138. package/overlays/windsurf-cli/setup.sh +21 -0
  139. package/overlays/windsurf-cli/verify.sh +21 -0
  140. package/package.json +1 -1
  141. package/tool/schema/config.schema.json +138 -9
@@ -0,0 +1,45 @@
1
+ #!/bin/bash
2
+ # spec-kit setup — install specify-cli for Spec-Driven Development
3
+
4
+ set -e
5
+
6
+ echo "📦 Installing prerequisites for spec-kit..."
7
+
8
+ # Ensure uv tool bin directory is always on PATH (uv puts shims here regardless
9
+ # of whether uv itself was pre-installed or freshly installed in this script)
10
+ export PATH="$HOME/.local/bin:$PATH"
11
+
12
+ # Ensure uv is available (fast Python package manager)
13
+ if ! command -v uv &>/dev/null; then
14
+ echo " Installing uv..."
15
+ curl -LsSf https://astral.sh/uv/install.sh | sh
16
+ # Re-source in case the installer wrote to a non-standard location
17
+ export PATH="$HOME/.cargo/bin:$HOME/.local/bin:$PATH"
18
+ fi
19
+
20
+ echo "📦 Installing specify-cli..."
21
+ # Pin to a uv-managed Python (avoids broken system Python 3.13 on Debian trixie
22
+ # where stdlib modules like shutil/os can be missing due to Debian's split packages)
23
+ UV_PYTHON_VERSION="3.12"
24
+ echo " Ensuring uv-managed Python ${UV_PYTHON_VERSION} is available..."
25
+ uv python install "${UV_PYTHON_VERSION}"
26
+
27
+ # Install specify-cli using the uv-managed Python, not the system interpreter
28
+ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git \
29
+ --python "${UV_PYTHON_VERSION}"
30
+
31
+ # Verify — use the full path as a fallback in case the shim dir is not yet in PATH
32
+ SPECIFY_BIN="$(uv tool dir 2>/dev/null)/specify-cli/bin/specify"
33
+ if command -v specify &>/dev/null; then
34
+ echo "✓ specify-cli installed: $(specify --version 2>/dev/null || echo 'ok')"
35
+ elif [ -x "$SPECIFY_BIN" ]; then
36
+ echo "✓ specify-cli installed at $SPECIFY_BIN (add ~/.local/bin to PATH)"
37
+ else
38
+ echo "✗ specify-cli installation failed"
39
+ exit 1
40
+ fi
41
+
42
+ echo "✓ spec-kit setup complete"
43
+ echo "ℹ️ Spec Kit: https://github.com/github/spec-kit"
44
+ echo "ℹ️ Usage: specify init <PROJECT_NAME> --ai <agent>"
45
+ echo "ℹ️ Agents: codex, claude, gemini, copilot, cursor-agent, windsurf, amp, ..."
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ # spec-kit overlay verification script
3
+
4
+ set -e
5
+
6
+ # uv installs shims to ~/.local/bin; ensure it is on PATH
7
+ export PATH="$HOME/.local/bin:$PATH"
8
+
9
+ echo "🔍 Verifying spec-kit overlay setup..."
10
+
11
+ # Check uv is available
12
+ if ! command -v uv &>/dev/null; then
13
+ echo "✗ uv not found"
14
+ exit 1
15
+ fi
16
+
17
+ echo "✓ uv is installed: $(uv --version 2>/dev/null || echo 'installed')"
18
+
19
+ # Check specify CLI is available
20
+ if ! command -v specify &>/dev/null; then
21
+ echo "✗ specify not found"
22
+ exit 1
23
+ fi
24
+
25
+ echo "✓ specify is installed: $(specify --version 2>/dev/null || echo 'installed')"
26
+
27
+ echo ""
28
+ echo "✅ spec-kit overlay verification complete!"
29
+ echo ""
30
+ echo "💡 Tips:"
31
+ echo " - Run 'specify --help' to see available commands"
32
+ echo " - Initialize a project: specify init <PROJECT_NAME> --ai <agent>"
33
+ echo " - Supported agents: codex, claude, gemini, copilot, cursor-agent, windsurf, amp, ..."
@@ -0,0 +1,69 @@
1
+ # Windsurf CLI Overlay
2
+
3
+ Adds the Codeium Windsurf CLI (`windsurf`) for AI-powered development assistance in the terminal.
4
+
5
+ ## Features
6
+
7
+ - **Windsurf CLI** — Codeium's AI coding agent for terminal use
8
+ - **Cascade flows** — AI-driven multi-step development tasks
9
+
10
+ ## What is Windsurf CLI?
11
+
12
+ Windsurf CLI is Codeium's headless agentic coding assistant that brings the power of the Windsurf IDE agent to the command line:
13
+
14
+ - **Agentic coding** — Autonomous multi-step task execution
15
+ - **Codebase understanding** — Deep indexing of your repository
16
+ - **Code generation** — Create features from natural language
17
+ - **Refactoring** — Improve existing code with AI guidance
18
+
19
+ ## How It Works
20
+
21
+ This overlay installs the Windsurf CLI globally via npm, making the `windsurf` command available in your devcontainer.
22
+
23
+ ## Common Commands
24
+
25
+ ```bash
26
+ # Start an interactive session
27
+ windsurf
28
+
29
+ # Check version
30
+ windsurf --version
31
+ ```
32
+
33
+ ## Use Cases
34
+
35
+ - **Feature implementation** — Describe what you want, Windsurf implements it
36
+ - **Code exploration** — Understand large or complex codebases
37
+ - **Spec-Driven Development** — Works with `spec-kit` overlay via `specify init --ai windsurf`
38
+
39
+ **Integrates well with:**
40
+
41
+ - `spec-kit` — Use Windsurf with the SDD workflow
42
+ - `nodejs` — Required for installation
43
+ - `git-helpers` — Git integration for AI-generated code
44
+
45
+ ## Configuration
46
+
47
+ Authenticate with your Codeium account:
48
+
49
+ ```bash
50
+ windsurf auth
51
+ ```
52
+
53
+ ## Verification
54
+
55
+ ```bash
56
+ bash .devcontainer/scripts/verify-windsurf-cli.sh
57
+ ```
58
+
59
+ ## References
60
+
61
+ - [Windsurf Documentation](https://docs.codeium.com/windsurf/getting-started)
62
+ - [Codeium Platform](https://codeium.com/)
63
+
64
+ **Related Overlays:**
65
+
66
+ - `spec-kit` — Spec-Driven Development with Windsurf as the AI agent
67
+ - `codex` — OpenAI Codex CLI (alternative AI assistant)
68
+ - `claude-code` — Anthropic Claude Code (alternative AI assistant)
69
+ - `nodejs` — Required for npm-based installation
@@ -0,0 +1,3 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json"
3
+ }
@@ -0,0 +1,15 @@
1
+ id: windsurf-cli
2
+ name: Windsurf CLI
3
+ description: Codeium Windsurf CLI for AI-powered development assistance
4
+ category: dev
5
+ supports: []
6
+ requires:
7
+ - nodejs
8
+ suggests: []
9
+ conflicts: []
10
+ tags:
11
+ - dev
12
+ - ai
13
+ - windsurf
14
+ - codeium
15
+ ports: []
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # windsurf-cli setup script - Install Codeium Windsurf CLI
3
+
4
+ set -e
5
+
6
+ echo "📦 Installing Codeium Windsurf CLI..."
7
+
8
+ # Install windsurf globally via npm
9
+ npm install -g @codeium/windsurf-cli
10
+
11
+ # Verify installation
12
+ if command -v windsurf &>/dev/null; then
13
+ echo "✓ Windsurf CLI installed successfully: $(windsurf --version 2>/dev/null || echo 'installed')"
14
+ else
15
+ echo "✗ Windsurf CLI installation failed"
16
+ exit 1
17
+ fi
18
+
19
+ echo "✓ windsurf-cli setup complete"
20
+ echo "ℹ️ Codeium Windsurf: https://docs.codeium.com/windsurf/getting-started"
21
+ echo "ℹ️ Run 'windsurf --help' to get started"
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # windsurf-cli overlay verification script
3
+
4
+ set -e
5
+
6
+ echo "🔍 Verifying windsurf-cli overlay setup..."
7
+
8
+ # Check if windsurf CLI is installed
9
+ if ! command -v windsurf &>/dev/null; then
10
+ echo "✗ windsurf CLI is not installed or not in PATH"
11
+ exit 1
12
+ fi
13
+
14
+ echo "✓ windsurf CLI is installed: $(windsurf --version 2>/dev/null || echo 'installed')"
15
+
16
+ echo ""
17
+ echo "✅ windsurf-cli overlay verification complete!"
18
+ echo ""
19
+ echo "💡 Tips:"
20
+ echo " - Run 'windsurf --help' to see available commands"
21
+ echo " - Authenticate with your Codeium account"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "container-superposition",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Solution-ready devcontainer templates and features with guided initialization",
5
5
  "type": "module",
6
6
  "main": "dist/scripts/init.js",
@@ -11,28 +11,67 @@
11
11
  },
12
12
  "baseImage": {
13
13
  "type": "string",
14
- "enum": ["bookworm", "trixie", "custom"],
14
+ "enum": ["bookworm", "trixie", "alpine", "ubuntu", "custom"],
15
15
  "default": "bookworm",
16
- "description": "Base Debian image version"
16
+ "description": "Base image / Linux distro variant (or 'custom' for a user-defined image)"
17
17
  },
18
18
  "customImage": {
19
19
  "type": "string",
20
20
  "description": "Custom base image (only when baseImage is 'custom')"
21
21
  },
22
+ "containerName": {
23
+ "type": "string",
24
+ "description": "Container/project name to write into devcontainer.json"
25
+ },
26
+ "preset": {
27
+ "type": "string",
28
+ "description": "Preset ID to expand during generation"
29
+ },
30
+ "presetChoices": {
31
+ "type": "object",
32
+ "additionalProperties": {
33
+ "type": "string"
34
+ },
35
+ "description": "Preset parameter choices keyed by parameter name"
36
+ },
22
37
  "language": {
23
38
  "type": "array",
24
39
  "items": {
25
40
  "type": "string",
26
- "enum": ["dotnet", "nodejs", "python", "mkdocs"]
41
+ "enum": [
42
+ "dotnet",
43
+ "nodejs",
44
+ "python",
45
+ "mkdocs",
46
+ "java",
47
+ "go",
48
+ "rust",
49
+ "bun",
50
+ "powershell"
51
+ ]
27
52
  },
28
53
  "default": [],
29
54
  "description": "Language/framework overlays"
30
55
  },
31
56
  "database": {
32
- "type": "string",
33
- "enum": ["none", "postgres", "redis", "postgres+redis"],
34
- "default": "none",
35
- "description": "Database requirements"
57
+ "type": "array",
58
+ "items": {
59
+ "type": "string",
60
+ "enum": [
61
+ "postgres",
62
+ "redis",
63
+ "mongodb",
64
+ "mysql",
65
+ "sqlserver",
66
+ "sqlite",
67
+ "minio",
68
+ "rabbitmq",
69
+ "redpanda",
70
+ "nats"
71
+ ]
72
+ },
73
+ "default": [],
74
+ "description": "Database overlays"
36
75
  },
37
76
  "playwright": {
38
77
  "type": "boolean",
@@ -43,11 +82,38 @@
43
82
  "type": "array",
44
83
  "items": {
45
84
  "type": "string",
46
- "enum": ["azure-cli", "aws-cli", "kubectl-helm", "docker-in-docker", "docker-sock"]
85
+ "enum": ["azure-cli", "aws-cli", "gcloud", "kubectl-helm", "terraform", "pulumi"]
47
86
  },
48
87
  "default": [],
49
88
  "description": "Cloud/orchestration tools to include"
50
89
  },
90
+ "devTools": {
91
+ "type": "array",
92
+ "items": {
93
+ "type": "string",
94
+ "enum": [
95
+ "docker-in-docker",
96
+ "docker-sock",
97
+ "codex",
98
+ "playwright",
99
+ "git-helpers",
100
+ "pre-commit",
101
+ "commitlint",
102
+ "just",
103
+ "direnv",
104
+ "modern-cli-tools",
105
+ "ngrok",
106
+ "spec-kit",
107
+ "claude-code",
108
+ "gemini-cli",
109
+ "amp",
110
+ "windsurf-cli",
111
+ "opencode"
112
+ ]
113
+ },
114
+ "default": [],
115
+ "description": "Developer tooling overlays"
116
+ },
51
117
  "observability": {
52
118
  "type": "array",
53
119
  "items": {
@@ -59,13 +125,76 @@
59
125
  },
60
126
  "portOffset": {
61
127
  "type": "number",
128
+ "minimum": 0,
62
129
  "description": "Port offset for running multiple instances"
63
130
  },
64
131
  "outputPath": {
65
132
  "type": "string",
66
133
  "default": "./.devcontainer",
67
134
  "description": "Where to write the devcontainer configuration"
135
+ },
136
+ "target": {
137
+ "type": "string",
138
+ "enum": ["local", "codespaces", "gitpod", "devpod"],
139
+ "description": "Target environment for compatibility checks"
140
+ },
141
+ "minimal": {
142
+ "type": "boolean",
143
+ "description": "Exclude optional overlays marked as minimal"
144
+ },
145
+ "editor": {
146
+ "type": "string",
147
+ "enum": ["vscode", "jetbrains", "none"],
148
+ "description": "Editor customization profile"
149
+ },
150
+ "customizations": {
151
+ "type": "object",
152
+ "properties": {
153
+ "devcontainerPatch": {
154
+ "type": "object",
155
+ "description": "Additional devcontainer.json content merged during generation"
156
+ },
157
+ "dockerComposePatch": {
158
+ "type": "object",
159
+ "description": "Additional docker-compose content merged during generation"
160
+ },
161
+ "environment": {
162
+ "type": "object",
163
+ "additionalProperties": {
164
+ "type": "string"
165
+ },
166
+ "description": "Environment variables written to custom/environment.env"
167
+ },
168
+ "scripts": {
169
+ "type": "object",
170
+ "properties": {
171
+ "postCreate": {
172
+ "type": "array",
173
+ "items": { "type": "string" }
174
+ },
175
+ "postStart": {
176
+ "type": "array",
177
+ "items": { "type": "string" }
178
+ }
179
+ },
180
+ "additionalProperties": false
181
+ },
182
+ "files": {
183
+ "type": "array",
184
+ "items": {
185
+ "type": "object",
186
+ "properties": {
187
+ "path": { "type": "string" },
188
+ "content": { "type": "string" }
189
+ },
190
+ "required": ["path", "content"],
191
+ "additionalProperties": false
192
+ }
193
+ }
194
+ },
195
+ "additionalProperties": false
68
196
  }
69
197
  },
70
- "required": ["stack"]
198
+ "required": [],
199
+ "additionalProperties": false
71
200
  }