Skip to content

feat(ai-autopilot): LocalRunner — first real runner adapter#107

Merged
suleimansh merged 2 commits into
mainfrom
suleimansh/feat/local-runner
Jul 2, 2026
Merged

feat(ai-autopilot): LocalRunner — first real runner adapter#107
suleimansh merged 2 commits into
mainfrom
suleimansh/feat/local-runner

Conversation

@suleimansh

Copy link
Copy Markdown
Member

Closes #106. Part of the ai-autopilot epic (#97).

The runner seam (#99) shipped with only FakeRunner (in-memory sim). This adds the first real adapter.

LocalRunner boots each workspace as a real temp directory on the host:

  • real files via node:fsread/write/remove/list/exists, guarded against path traversal out of the workspace root
  • real commands via child_process (shell) — per-command cwd, env (merged over session + process.env), and timeoutMs (SIGKILL → exit 124)
  • a localhost preview(port)
  • dispose() removes the temp dir (idempotent)

It is the reference the sandboxed adapters (WebContainer / Docker / Flue) mirror. It runs commands unsandboxed on the host, so it is documented for trusted/CI use only, not untrusted agent-authored code.

15 new tests, all green (real fs + real node subprocesses, no mocks); typecheck + build clean. README + barrels + changeset (minor) updated.

…sor + runner + surfaces)

A runnable, offline (AiFake) example that composes all four epic layers into
one build-a-feature flow: a planner routes subtasks to stack personas, the
Supervisor dispatches them, each worker writes Vike/ORM files inside a runner
sandbox via runnerTools, and the surfaces render live progress + a background
handle. Doubles as the integration contract a real FlueRunner must satisfy.

Private workspace example (@gemstack/example-autopilot-quickstart), in turbo
typecheck+test. Capstone for epic #97.
Boots each workspace as a real temp dir on the host: real files
(node:fs, path-traversal guarded), real commands (child_process with
cwd/env/timeout), a localhost preview, and a dispose() that cleans up.
It is the reference the sandboxed adapters (WebContainer/Docker/Flue)
mirror. Runs unsandboxed on the host, so documented as trusted/CI-only.

Closes #106. Part of #97.
@suleimansh suleimansh added enhancement New feature or request priority: medium Worth doing, not urgent labels Jul 2, 2026
@suleimansh suleimansh self-assigned this Jul 2, 2026
@suleimansh suleimansh merged commit 07cc623 into main Jul 2, 2026
2 checks passed
@suleimansh suleimansh deleted the suleimansh/feat/local-runner branch July 2, 2026 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Worth doing, not urgent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ai-autopilot: LocalRunner — first real runner adapter (host fs + child processes)

1 participant