container-superposition 0.1.9 → 0.1.11
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 +3 -0
- package/dist/scripts/generate-schema.d.ts +14 -0
- package/dist/scripts/generate-schema.d.ts.map +1 -0
- package/dist/scripts/generate-schema.js +406 -0
- package/dist/scripts/generate-schema.js.map +1 -0
- package/dist/tool/cli/args.d.ts.map +1 -1
- package/dist/tool/cli/args.js +1 -1
- package/dist/tool/cli/args.js.map +1 -1
- package/dist/tool/commands/adopt.d.ts.map +1 -1
- package/dist/tool/commands/adopt.js +14 -20
- package/dist/tool/commands/adopt.js.map +1 -1
- package/dist/tool/questionnaire/composer.d.ts.map +1 -1
- package/dist/tool/questionnaire/composer.js +186 -2
- package/dist/tool/questionnaire/composer.js.map +1 -1
- package/dist/tool/readme/readme-generator.d.ts.map +1 -1
- package/dist/tool/readme/readme-generator.js +1 -1
- package/dist/tool/readme/readme-generator.js.map +1 -1
- package/dist/tool/schema/project-config.d.ts +8 -1
- package/dist/tool/schema/project-config.d.ts.map +1 -1
- package/dist/tool/schema/project-config.js +180 -6
- package/dist/tool/schema/project-config.js.map +1 -1
- package/dist/tool/schema/types.d.ts +51 -1
- package/dist/tool/schema/types.d.ts.map +1 -1
- package/docs/README.md +1 -0
- package/docs/overlays.md +40 -0
- package/docs/specs/019-project-mounts/spec.md +176 -0
- package/docs/specs/020-superposition-yml-schema.md +83 -0
- package/docs/specs/021-deterministic-generated-readme/spec.md +70 -0
- package/docs/superposition-yml.md +481 -0
- package/overlays/ansible/README.md +163 -0
- package/overlays/ansible/devcontainer.patch.json +14 -0
- package/overlays/ansible/overlay.yml +18 -0
- package/overlays/argocd/README.md +158 -0
- package/overlays/argocd/devcontainer.patch.json +9 -0
- package/overlays/argocd/overlay.yml +17 -0
- package/overlays/argocd/setup.sh +29 -0
- package/overlays/argocd/verify.sh +14 -0
- package/overlays/pi/README.md +141 -0
- package/overlays/pi/devcontainer.patch.json +6 -0
- package/overlays/pi/overlay.yml +15 -0
- package/overlays/pi/setup.sh +28 -0
- package/overlays/pi/verify.sh +23 -0
- package/overlays/task/README.md +47 -0
- package/overlays/task/devcontainer.patch.json +9 -0
- package/overlays/task/overlay.yml +16 -0
- package/overlays/task/setup.sh +29 -0
- package/overlays/task/verify.sh +14 -0
- package/package.json +2 -1
- package/tool/schema/config.schema.json +77 -2
- package/tool/schema/superposition.schema.json +569 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Argo CD CLI Overlay
|
|
2
|
+
|
|
3
|
+
Adds the [`argocd`](https://argo-cd.readthedocs.io/) CLI for managing GitOps workflows with an Argo CD server — log in, inspect apps, trigger syncs, and manage rollouts without leaving your devcontainer.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Argo CD CLI** — `argocd` client for login, app sync, rollback, and lifecycle operations
|
|
8
|
+
- **Release install** — binary downloaded from official Argo CD GitHub releases
|
|
9
|
+
- **Architecture-aware** — installs `amd64` or `arm64` automatically
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
The `argocd` binary is downloaded from the official Argo CD GitHub releases page (`github.com/argoproj/argo-cd`) during devcontainer creation via `setup.sh`.
|
|
14
|
+
|
|
15
|
+
- Detects host architecture (`amd64` / `arm64`) automatically
|
|
16
|
+
- Downloads the matching pre-built binary and places it in `/usr/local/bin/argocd`
|
|
17
|
+
- No Argo CD server is run inside the devcontainer — the CLI connects to an external (or locally port-forwarded) Argo CD server
|
|
18
|
+
|
|
19
|
+
**Dependencies:** None required. Pair with `kubectl-helm` for full cluster access, and `k3d` or `kind` for local Kubernetes clusters where you can deploy Argo CD for testing.
|
|
20
|
+
|
|
21
|
+
## Common Commands
|
|
22
|
+
|
|
23
|
+
### Authentication
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Login to an Argo CD server
|
|
27
|
+
argocd login argocd.example.com
|
|
28
|
+
|
|
29
|
+
# Login with TLS disabled (for local/dev servers)
|
|
30
|
+
argocd login localhost:8080 --insecure
|
|
31
|
+
|
|
32
|
+
# Login and save context (avoids re-entering credentials)
|
|
33
|
+
argocd login argocd.example.com --grpc-web
|
|
34
|
+
|
|
35
|
+
# Check current logged-in context
|
|
36
|
+
argocd context
|
|
37
|
+
|
|
38
|
+
# Switch context
|
|
39
|
+
argocd context my-cluster
|
|
40
|
+
|
|
41
|
+
# Logout
|
|
42
|
+
argocd logout argocd.example.com
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Application Management
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# List all applications
|
|
49
|
+
argocd app list
|
|
50
|
+
|
|
51
|
+
# Get detailed status of an app
|
|
52
|
+
argocd app get my-app
|
|
53
|
+
|
|
54
|
+
# Create an app (GitOps source)
|
|
55
|
+
argocd app create my-app \
|
|
56
|
+
--repo https://github.com/myorg/my-manifests.git \
|
|
57
|
+
--path k8s/overlays/dev \
|
|
58
|
+
--dest-server https://kubernetes.default.svc \
|
|
59
|
+
--dest-namespace my-app
|
|
60
|
+
|
|
61
|
+
# Sync (deploy) an app
|
|
62
|
+
argocd app sync my-app
|
|
63
|
+
|
|
64
|
+
# Wait for sync to complete
|
|
65
|
+
argocd app wait my-app --sync
|
|
66
|
+
|
|
67
|
+
# Delete an app (without deleting cluster resources)
|
|
68
|
+
argocd app delete my-app
|
|
69
|
+
|
|
70
|
+
# Delete an app and all managed cluster resources
|
|
71
|
+
argocd app delete my-app --cascade
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Sync Operations
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Sync only specific resources
|
|
78
|
+
argocd app sync my-app --resource apps:Deployment:my-app
|
|
79
|
+
|
|
80
|
+
# Force sync (ignores resource health)
|
|
81
|
+
argocd app sync my-app --force
|
|
82
|
+
|
|
83
|
+
# Dry-run sync (show diff without applying)
|
|
84
|
+
argocd app diff my-app
|
|
85
|
+
|
|
86
|
+
# Rollback to a previous revision
|
|
87
|
+
argocd app rollback my-app 3
|
|
88
|
+
|
|
89
|
+
# View app history
|
|
90
|
+
argocd app history my-app
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Projects & RBAC
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# List projects
|
|
97
|
+
argocd proj list
|
|
98
|
+
|
|
99
|
+
# Create a project
|
|
100
|
+
argocd proj create my-project \
|
|
101
|
+
--description "My project" \
|
|
102
|
+
--src https://github.com/myorg/my-manifests.git \
|
|
103
|
+
--dest https://kubernetes.default.svc,my-namespace
|
|
104
|
+
|
|
105
|
+
# List project roles
|
|
106
|
+
argocd proj role list my-project
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Local Port-Forward Workflow
|
|
110
|
+
|
|
111
|
+
When testing Argo CD in a local cluster (k3d / kind):
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Install Argo CD in the cluster
|
|
115
|
+
kubectl create namespace argocd
|
|
116
|
+
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
|
|
117
|
+
|
|
118
|
+
# Wait for pods to be ready
|
|
119
|
+
kubectl -n argocd wait --for=condition=ready pod -l app.kubernetes.io/name=argocd-server --timeout=120s
|
|
120
|
+
|
|
121
|
+
# Port-forward the API server
|
|
122
|
+
kubectl -n argocd port-forward svc/argocd-server 8080:443 &
|
|
123
|
+
|
|
124
|
+
# Get the initial admin password
|
|
125
|
+
argocd admin initial-password -n argocd
|
|
126
|
+
|
|
127
|
+
# Login
|
|
128
|
+
argocd login localhost:8080 --insecure
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Use Cases
|
|
132
|
+
|
|
133
|
+
- **GitOps deployments** — Sync Kubernetes manifests from Git to a cluster via Argo CD
|
|
134
|
+
- **Multi-environment promotion** — Manage dev/staging/production app variants with app-of-apps patterns
|
|
135
|
+
- **Rollback workflows** — Inspect history and revert to a previous known-good revision
|
|
136
|
+
- **Local GitOps testing** — Deploy Argo CD to a local `k3d` or `kind` cluster to test GitOps pipelines without a cloud environment
|
|
137
|
+
- **Drift detection** — Use `argocd app diff` to detect config drift before syncing
|
|
138
|
+
|
|
139
|
+
**Integrates well with:**
|
|
140
|
+
|
|
141
|
+
- `kubectl-helm` — Kubernetes CLI and Helm for inspecting or patching resources managed by Argo CD
|
|
142
|
+
- `k3d` — Lightweight local clusters for GitOps development and testing
|
|
143
|
+
- `kind` — Full-conformance local clusters for Argo CD testing
|
|
144
|
+
- `terraform` — Provision the cluster and bootstrap Argo CD with Terraform, then manage apps with the CLI
|
|
145
|
+
|
|
146
|
+
## References
|
|
147
|
+
|
|
148
|
+
- [Argo CD Documentation](https://argo-cd.readthedocs.io/)
|
|
149
|
+
- [Argo CD CLI Reference](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/)
|
|
150
|
+
- [Argo CD GitHub Releases](https://github.com/argoproj/argo-cd/releases)
|
|
151
|
+
- [Argo CD Getting Started](https://argo-cd.readthedocs.io/en/stable/getting_started/)
|
|
152
|
+
- [App of Apps Pattern](https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/)
|
|
153
|
+
|
|
154
|
+
**Related Overlays:**
|
|
155
|
+
|
|
156
|
+
- [`kubectl-helm`](../kubectl-helm/README.md) — Kubernetes CLI and Helm package manager
|
|
157
|
+
- [`k3d`](../k3d/README.md) — Lightweight local Kubernetes clusters
|
|
158
|
+
- [`kind`](../kind/README.md) — Full-conformance local Kubernetes clusters
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"postCreateCommand": {
|
|
4
|
+
"setup-argocd": "bash .devcontainer/scripts/setup-argocd.sh"
|
|
5
|
+
},
|
|
6
|
+
"postStartCommand": {
|
|
7
|
+
"verify-argocd": "bash .devcontainer/scripts/verify-argocd.sh"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
id: argocd
|
|
2
|
+
name: Argo CD CLI
|
|
3
|
+
description: GitOps CLI for managing Argo CD applications and sync workflows
|
|
4
|
+
category: cloud
|
|
5
|
+
supports: []
|
|
6
|
+
requires: []
|
|
7
|
+
suggests:
|
|
8
|
+
- kubectl-helm
|
|
9
|
+
- k3d
|
|
10
|
+
- kind
|
|
11
|
+
conflicts: []
|
|
12
|
+
tags:
|
|
13
|
+
- cloud
|
|
14
|
+
- kubernetes
|
|
15
|
+
- gitops
|
|
16
|
+
- argocd
|
|
17
|
+
ports: []
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Setup script for Argo CD CLI
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔧 Setting up Argo CD CLI..."
|
|
7
|
+
|
|
8
|
+
# Source shared setup utilities
|
|
9
|
+
# shellcheck source=setup-utils.sh
|
|
10
|
+
source "$(dirname "${BASH_SOURCE[0]}")/setup-utils.sh"
|
|
11
|
+
|
|
12
|
+
detect_arch
|
|
13
|
+
|
|
14
|
+
ARGOCD_VERSION="${ARGOCD_VERSION:-v2.14.12}"
|
|
15
|
+
echo "📦 Installing argocd ${ARGOCD_VERSION}..."
|
|
16
|
+
|
|
17
|
+
install_binary \
|
|
18
|
+
"https://github.com/argoproj/argo-cd/releases/download/${ARGOCD_VERSION}/argocd-linux-${CS_ARCH}" \
|
|
19
|
+
"argocd"
|
|
20
|
+
|
|
21
|
+
if command -v argocd >/dev/null 2>&1; then
|
|
22
|
+
echo "✅ Argo CD CLI installed successfully"
|
|
23
|
+
argocd version --client --short || argocd version --client
|
|
24
|
+
else
|
|
25
|
+
echo "❌ Argo CD CLI installation failed"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "✅ Argo CD CLI setup complete"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verification script for Argo CD CLI overlay
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔍 Verifying Argo CD CLI overlay..."
|
|
7
|
+
|
|
8
|
+
if command -v argocd >/dev/null 2>&1; then
|
|
9
|
+
argocd version --client --short || argocd version --client
|
|
10
|
+
echo "✅ Argo CD CLI is installed"
|
|
11
|
+
else
|
|
12
|
+
echo "❌ Argo CD CLI is not installed"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Pi Overlay
|
|
2
|
+
|
|
3
|
+
Adds the [Pi](https://pi.dev) terminal coding agent (`pi`) — a minimal, open-source, self-extensible AI coding harness that lets you use LLMs directly in your terminal to read, write, edit, and run code.
|
|
4
|
+
|
|
5
|
+
## What is Pi?
|
|
6
|
+
|
|
7
|
+
Pi is a deliberately minimal terminal coding agent. Unlike heavier AI coding tools, Pi keeps its core tiny and pushes everything extra (MCP, sub-agents, themes, prompt templates) to a TypeScript extension and package system. It supports a wide range of LLM providers, including Anthropic Claude, OpenAI GPT, Google Gemini, DeepSeek, Mistral, Groq, and many more.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Interactive TUI** — Four-panel terminal UI with file reference (`@`), inline shell commands (`!cmd`), and message queueing
|
|
12
|
+
- **Multi-provider LLM support** — Anthropic, OpenAI, Google Gemini, DeepSeek, Mistral, Groq, xAI, OpenRouter, Azure OpenAI, Amazon Bedrock, GitHub Copilot, and more
|
|
13
|
+
- **Built-in tools** — `read`, `write`, `edit`, `bash`, `grep`, `find`, `ls`
|
|
14
|
+
- **Session management** — Auto-saved sessions with branching, forking, compaction, and resumption
|
|
15
|
+
- **Non-interactive mode** — `pi -p "prompt"` for scripted use or CI pipelines
|
|
16
|
+
- **Extensible** — TypeScript extensions, Skills (SKILL.md), prompt templates, and pi packages
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
This overlay installs Pi via npm (`@earendil-works/pi-coding-agent`), which is the same package installed by the official installer at [pi.dev/install.sh](https://pi.dev/install.sh).
|
|
21
|
+
|
|
22
|
+
## How It Works
|
|
23
|
+
|
|
24
|
+
This overlay installs `@earendil-works/pi-coding-agent` globally via npm, making the `pi` command available in your devcontainer.
|
|
25
|
+
|
|
26
|
+
## Common Commands
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Start an interactive session in the current project
|
|
30
|
+
pi
|
|
31
|
+
|
|
32
|
+
# One-shot non-interactive prompt
|
|
33
|
+
pi -p "Summarize this codebase"
|
|
34
|
+
|
|
35
|
+
# Pipe content to Pi
|
|
36
|
+
cat README.md | pi -p "Summarize this"
|
|
37
|
+
|
|
38
|
+
# Resume the last session
|
|
39
|
+
pi /resume
|
|
40
|
+
|
|
41
|
+
# Check version
|
|
42
|
+
pi --version
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Use Cases
|
|
46
|
+
|
|
47
|
+
- **Terminal-first coding assistant** — Use Pi interactively while editing and debugging from the CLI
|
|
48
|
+
- **Automated one-shot tasks** — Run `pi -p "..."` in scripts or CI pipelines
|
|
49
|
+
- **Multi-provider flexibility** — Switch between Anthropic, OpenAI, Gemini, and other supported providers
|
|
50
|
+
|
|
51
|
+
## Authentication
|
|
52
|
+
|
|
53
|
+
Set one or more provider API keys as environment variables:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Anthropic Claude
|
|
57
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
58
|
+
|
|
59
|
+
# OpenAI
|
|
60
|
+
export OPENAI_API_KEY=sk-...
|
|
61
|
+
|
|
62
|
+
# Google Gemini
|
|
63
|
+
export GEMINI_API_KEY=...
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Alternatively, use the interactive login command inside Pi:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
/login
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Configuration
|
|
73
|
+
|
|
74
|
+
Settings are stored in `~/.pi/agent/settings.json` (global) or `.pi/settings.json` (project-local):
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"defaultProvider": "anthropic",
|
|
79
|
+
"defaultModel": "claude-sonnet-4-20250514",
|
|
80
|
+
"compaction": { "enabled": true }
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
| Environment Variable | Description |
|
|
85
|
+
| ----------------------- | -------------------------------------------------- |
|
|
86
|
+
| `ANTHROPIC_API_KEY` | Anthropic Claude API key |
|
|
87
|
+
| `OPENAI_API_KEY` | OpenAI API key |
|
|
88
|
+
| `GEMINI_API_KEY` | Google Gemini API key |
|
|
89
|
+
| `PI_OFFLINE` | Disable startup network operations |
|
|
90
|
+
| `PI_SKIP_VERSION_CHECK` | Skip automatic version update check |
|
|
91
|
+
| `PI_CODING_AGENT_DIR` | Override config directory (default: `~/.pi/agent`) |
|
|
92
|
+
|
|
93
|
+
## Verification
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
bash .devcontainer/scripts/verify-pi.sh
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Usage
|
|
100
|
+
|
|
101
|
+
### Interactive session
|
|
102
|
+
|
|
103
|
+
Run `pi` in any project directory to start an interactive TUI session. Use `@` to reference files, `!cmd` to run a shell command and send its output to the LLM, and `/help` to list available slash commands.
|
|
104
|
+
|
|
105
|
+
### Non-interactive / CI mode
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Print response and exit
|
|
109
|
+
pi -p "What tests should I write for this function?"
|
|
110
|
+
|
|
111
|
+
# Output all events as JSONL (for scripting or piping)
|
|
112
|
+
pi --mode json -p "List TODOs in this repo"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Extending Pi
|
|
116
|
+
|
|
117
|
+
Pi supports TypeScript extensions, Skills, and npm/git packages:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Install a pi package
|
|
121
|
+
pi install <package-name>
|
|
122
|
+
|
|
123
|
+
# List installed packages
|
|
124
|
+
pi /packages
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## References
|
|
128
|
+
|
|
129
|
+
- [Pi Website](https://pi.dev)
|
|
130
|
+
- [GitHub Repository](https://github.com/earendil-works/pi)
|
|
131
|
+
- [Usage Documentation](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/usage.md)
|
|
132
|
+
- [Provider Documentation](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/providers.md)
|
|
133
|
+
- [Extensions Documentation](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md)
|
|
134
|
+
|
|
135
|
+
**Related Overlays:**
|
|
136
|
+
|
|
137
|
+
- `nodejs` — Required for npm-based installation
|
|
138
|
+
- `claude-code` — Anthropic Claude Code CLI (alternative AI assistant)
|
|
139
|
+
- `codex` — OpenAI Codex CLI (alternative AI assistant)
|
|
140
|
+
- `gemini-cli` — Google Gemini CLI (alternative AI assistant)
|
|
141
|
+
- `opencode` — opencode AI coding agent (alternative)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# pi setup script - Install Pi terminal coding agent
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
# Source shared setup utilities (provides load_nvm)
|
|
7
|
+
# shellcheck source=setup-utils.sh
|
|
8
|
+
source "$(dirname "${BASH_SOURCE[0]}")/setup-utils.sh"
|
|
9
|
+
load_nvm
|
|
10
|
+
|
|
11
|
+
echo "📦 Installing Pi terminal coding agent..."
|
|
12
|
+
|
|
13
|
+
# Install @earendil-works/pi-coding-agent globally via npm
|
|
14
|
+
# (same package installed by curl -fsSL https://pi.dev/install.sh | sh)
|
|
15
|
+
npm install -g @earendil-works/pi-coding-agent
|
|
16
|
+
|
|
17
|
+
# Verify installation
|
|
18
|
+
if command -v pi &>/dev/null; then
|
|
19
|
+
echo "✓ Pi installed successfully: $(pi --version 2>/dev/null || echo 'installed')"
|
|
20
|
+
else
|
|
21
|
+
echo "✗ Pi installation failed"
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
echo "✓ pi setup complete"
|
|
26
|
+
echo "ℹ️ Pi terminal coding agent: https://pi.dev"
|
|
27
|
+
echo "ℹ️ GitHub: https://github.com/earendil-works/pi"
|
|
28
|
+
echo "ℹ️ Run 'pi --help' to get started"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# pi overlay verification script
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔍 Verifying pi overlay setup..."
|
|
7
|
+
|
|
8
|
+
# Check if pi CLI is installed
|
|
9
|
+
if ! command -v pi &>/dev/null; then
|
|
10
|
+
echo "✗ pi is not installed or not in PATH"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "✓ pi is installed: $(pi --version 2>/dev/null || echo 'installed')"
|
|
15
|
+
|
|
16
|
+
echo ""
|
|
17
|
+
echo "✅ pi overlay verification complete!"
|
|
18
|
+
echo ""
|
|
19
|
+
echo "💡 Tips:"
|
|
20
|
+
echo " - Run 'pi' in any project directory to start an interactive session"
|
|
21
|
+
echo " - Run 'pi --help' to see available commands"
|
|
22
|
+
echo " - Run 'pi -p \"<prompt>\"' for a non-interactive one-shot prompt"
|
|
23
|
+
echo " - Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY to authenticate"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Taskfile (task) Overlay
|
|
2
|
+
|
|
3
|
+
Adds [Task](https://taskfile.dev/) (`task`) to run project automation via `Taskfile.yml`.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Task CLI** — fast, modern task runner (`task`)
|
|
8
|
+
- **Taskfile workflows** — declarative task definitions with dependencies and variables
|
|
9
|
+
- **Architecture-aware install** — installs amd64 or arm64 binary automatically
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
task --version
|
|
15
|
+
task --list
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Create a basic `Taskfile.yml`:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
version: '3'
|
|
22
|
+
|
|
23
|
+
tasks:
|
|
24
|
+
default:
|
|
25
|
+
cmds:
|
|
26
|
+
- task --list
|
|
27
|
+
|
|
28
|
+
lint:
|
|
29
|
+
cmds:
|
|
30
|
+
- npm run lint
|
|
31
|
+
|
|
32
|
+
test:
|
|
33
|
+
cmds:
|
|
34
|
+
- npm test
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Run tasks:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
task lint
|
|
41
|
+
task test
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Suggested Pairings
|
|
45
|
+
|
|
46
|
+
- `modern-cli-tools` — useful companion CLIs for day-to-day development
|
|
47
|
+
- `kubectl-helm` — pair task automation with Kubernetes workflows
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"postCreateCommand": {
|
|
4
|
+
"setup-task": "bash .devcontainer/scripts/setup-task.sh"
|
|
5
|
+
},
|
|
6
|
+
"postStartCommand": {
|
|
7
|
+
"verify-task": "bash .devcontainer/scripts/verify-task.sh"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
id: task
|
|
2
|
+
name: Taskfile (task)
|
|
3
|
+
description: Modern task runner and build tool using Taskfiles
|
|
4
|
+
category: dev
|
|
5
|
+
supports: []
|
|
6
|
+
requires: []
|
|
7
|
+
suggests:
|
|
8
|
+
- modern-cli-tools
|
|
9
|
+
- kubectl-helm
|
|
10
|
+
conflicts: []
|
|
11
|
+
tags:
|
|
12
|
+
- dev
|
|
13
|
+
- automation
|
|
14
|
+
- taskfile
|
|
15
|
+
- build
|
|
16
|
+
ports: []
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Setup script for Taskfile (task)
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔧 Setting up Taskfile (task)..."
|
|
7
|
+
|
|
8
|
+
# Source shared setup utilities
|
|
9
|
+
# shellcheck source=setup-utils.sh
|
|
10
|
+
source "$(dirname "${BASH_SOURCE[0]}")/setup-utils.sh"
|
|
11
|
+
|
|
12
|
+
detect_arch
|
|
13
|
+
|
|
14
|
+
TASK_VERSION="${TASK_VERSION:-v3.45.4}"
|
|
15
|
+
echo "📦 Installing task ${TASK_VERSION}..."
|
|
16
|
+
|
|
17
|
+
install_binary_from_tar \
|
|
18
|
+
"https://github.com/go-task/task/releases/download/${TASK_VERSION}/task_linux_${CS_ARCH}.tar.gz" \
|
|
19
|
+
"task"
|
|
20
|
+
|
|
21
|
+
if command -v task >/dev/null 2>&1; then
|
|
22
|
+
echo "✅ task installed successfully"
|
|
23
|
+
task --version
|
|
24
|
+
else
|
|
25
|
+
echo "❌ task installation failed"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "✅ Taskfile setup complete"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Verification script for Taskfile (task) overlay
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔍 Verifying Taskfile overlay..."
|
|
7
|
+
|
|
8
|
+
if command -v task >/dev/null 2>&1; then
|
|
9
|
+
task --version
|
|
10
|
+
echo "✅ task is installed"
|
|
11
|
+
else
|
|
12
|
+
echo "❌ task is not installed"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "container-superposition",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "Solution-ready devcontainer templates and features with guided initialization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/scripts/init.js",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"test:integration": "INTEGRATION=true vitest run tool/__tests__/overlay-features-integration.test.ts",
|
|
18
18
|
"test:smoke": "bash scripts/test.sh",
|
|
19
19
|
"docs:generate": "tsx docs/generate-docs.ts && prettier --write docs/overlays.md",
|
|
20
|
+
"schema:generate": "tsx scripts/generate-schema.ts && prettier --write tool/schema/superposition.schema.json",
|
|
20
21
|
"lint": "tsc --noEmit && npm run format:check",
|
|
21
22
|
"lint:fix": "npm run format",
|
|
22
23
|
"format": "prettier --write \"**/*.{ts,js,json,md,yaml,yml}\"",
|