spawn/packer
Ahmed Abushagur e7b6b0b9fd
fix: Packer tier script path relative to repo root (#2266)
* feat: restore Packer DO snapshot pipeline for fast agent boot

Restores the nightly Packer snapshot build pipeline (reverted in #2205)
that pre-bakes agent images as DigitalOcean snapshots. When a snapshot
exists on the user's account, droplet boot skips cloud-init and tarball
install entirely — cutting provisioning from ~10min to ~2min.

- Add `packer/digitalocean.pkr.hcl` HCL2 template with multi-region
  distribution, apt-lock wait, and snapshot marker
- Add `.github/workflows/packer-snapshots.yml` nightly build with
  matrix strategy, auto-cleanup of old snapshots, and injection-safe
  env var handling
- Add `findSpawnSnapshot()` to query DO API for pre-built snapshots
- Add `waitForSshOnly()` for snapshot boots (skip cloud-init wait)
- Modify `createServer()` to accept optional `snapshotId` param
- Wire snapshot detection in DO `main.ts` orchestrator
- Add `skipAgentInstall` to `CloudOrchestrator` interface to skip
  tarball + install steps when booting from snapshot
- Add 5 unit tests for snapshot lookup (happy path, empty, error,
  invalid ID, network failure)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use repo-root-relative path for tier scripts in Packer template

Packer resolves script paths relative to cwd (repo root), not relative
to the .pkr.hcl file. Changed `scripts/tier-*.sh` to
`packer/scripts/tier-*.sh`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:40:57 -08:00
..
scripts fix: capture claude symlink target + verify PATH (#2245) 2026-03-06 10:55:09 -05:00
agents.json fix: tarball workflow failures (root ownership, swapfile, hermes TTY) (#2240) 2026-03-06 05:48:46 -05:00
digitalocean.pkr.hcl fix: Packer tier script path relative to repo root (#2266) 2026-03-06 17:40:57 -08:00