Session-based execution, patches, and GHCR image
This release is a total refactor that focuses the project on safe, session-based command execution. You can now run multiple commands across multiple requests within the same session, get a patch of the changes produced by those commands, and optionally fail fast on the first error. A Docker image is now built and pushed to GitHub Container Registry on pushes to main
.
⚠️ Breaking changes
- The run commands endpoint is now session-based. You can run multiple commands over multiple requests using the same session.
- The run commands response now returns a patch (diff) of file changes instead of an archive of changed files.
- Removed support to run arbitrary code.
Please review the migration guide below before upgrading.
Highlights
- Session-like API for multi-step executions.
- Patch-first design: concise diffs instead of full archives.
- Safety & ergonomics:
fail_fast
to stop early on errors. - CI enhancement: Docker image automatically published to GHCR.
Migration guide
-
Adopt sessions
- Before: single-shot command execution per request.
- Now: create/use a session, then send one or more command batches tied to that session until you close it.
-
Consume patches instead of archives
- Update downstream tooling to parse unified diffs.
- Apply with standard tools (e.g.,
git apply
orpatch
) if you need to materialize file changes.
-
Stop on first failure (optional)
- Opt into stricter behavior with
fail_fast=true
to abort on the first failing command.
- Opt into stricter behavior with
-
Enable/handle
extract_patch
- Use
extract_patch=true
when you specifically want to retrieve the generated patch artifact.
- Use
-
Audit any arbitrary code execution paths
- Replace usage with explicit command execution via sessions.
Tip: If you previously automated downloads of an archive, switch to saving the returned patch (e.g.,
changes.patch
) and apply it where needed.
Documentation
README.md
has been updated to reflect session-based execution and patch responses.