generated from coulomb/repo-seed
Add meta-framework spec, pydantic schemas, profile/extension YAML, extension registry, ext.compose-ssh backend, SandboxManager with State Hub events, CLI commands, integration docs, capability registry entry, and compose-e2e runbook. Nine unit tests pass. T10 remote smoke test remains for operator.
50 lines
1.1 KiB
Markdown
50 lines
1.1 KiB
Markdown
## Stack
|
|
|
|
- **Language:** Python 3.11+
|
|
- **Package manager:** [uv](https://docs.astral.sh/uv/)
|
|
- **Build:** hatchling (src layout: `src/sandboxer/`)
|
|
- **CLI:** typer (`sandboxer` entry point)
|
|
- **Test:** pytest
|
|
- **Lint / format:** ruff
|
|
|
|
## Dev Commands
|
|
|
|
Run from the repo root. First-time setup:
|
|
|
|
```bash
|
|
make setup # uv sync --all-groups → .venv
|
|
```
|
|
|
|
Day-to-day verification (run before committing):
|
|
|
|
```bash
|
|
make check # lint + test
|
|
make test # pytest
|
|
make lint # ruff check
|
|
make format # ruff format (apply fixes)
|
|
make build # uv build (wheel + sdist)
|
|
make cli-version # smoke test: sandboxer version
|
|
```
|
|
|
|
Sandbox CLI (v0):
|
|
|
|
```bash
|
|
sandboxer create --profile profile.compose-e2e --input repo=/path/to/repo
|
|
sandboxer get <id>
|
|
sandboxer list
|
|
sandboxer destroy <id>
|
|
sandboxer recreate <id>
|
|
```
|
|
|
|
Equivalent `uv` invocations without Make:
|
|
|
|
```bash
|
|
uv sync --all-groups
|
|
uv run pytest
|
|
uv run ruff check .
|
|
uv run ruff format .
|
|
uv build
|
|
uv run sandboxer version
|
|
```
|
|
|
|
No long-running service yet — API and provisioner land in SAND-WP-0002. |