Skip to content

Zeroshot v10.13.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:03
ffb018b

Changes since v10.12.0.

Features

Guard merges with renewable credentials (#1251)

Local hosts can renew GitHub delivery credentials through a private
token file and validate the exact candidate before publication, during
review and before merge. The controller notifies the trusted helper
immediately after PR creation so applications retain its receipt even if
a later operation fails. Credentials and helper settings stay out of
agent environments, profiles, history and recovery metadata.

Validation can accept, wait, request an authored repair, or refuse
delivery. Accepted validation cannot alter the captured candidate.
Cancellation waits for confirmed helper and process cleanup; unconfirmed
cleanup remains fatal.

Merge queues receive an explicit request for the exact validated PR
head. Before handing a queued candidate back for repair, refusal,
cancellation or failure, delivery drains any in-flight submission and
confirms withdrawal of autonomous merge effects. Lost responses require
authoritative reconciliation. A confirmed exact merge remains final.
Existing required checks, review policy, merge queues and direct-method
restrictions retain authority.

Fixes

Log the cause of runtime failures (#1249)

A run whose supervisor fails outside any node, for example because the
first workspace checkpoint cannot capture the workspace, ended with
failed/runtime_failed. zeroshot logs and the UI run history then
showed only Run failed: runtime_failed. The cause went only to private
operator diagnostics and to the local controller's stderr, which is
discarded, and even there the checkpoint error had dropped its I/O
cause. Failed runs now keep the cause in their ordinary, durable run
log:

Runtime failed: workspace checkpoint is unavailable: candidate contains an unsupported filesystem entry "dev-server.sock"
Run failed: runtime_failed

Related: #1201
(context: #1067)

Redact known credentials split across output blocks (#1252)

Redact known credentials across Claude text blocks, message boundaries,
and thinking/text transitions before output reaches durable run logs.
The assistant-message fallback follows the same rule. Empty blocks do
not accumulate pending metadata.

Keep a Copilot node's accepted answer when session detach fails (#1248)

A Copilot CLI can accept a node’s answer and then reject
session.detach, including protocol-3 CLI 1.0.70. Zeroshot now logs
that teardown failure and preserves the accepted answer. A closed stdin
pipe or complete peer EOF during detach receives the same treatment.

The adapter distinguishes valid provider refusals from malformed RPC
replies. Invalid versions, identities, result/error envelopes, session
events and usage still fail the node. Startup, prompt transmission,
response validation, cancellation, durable output and process cleanup
retain their failure behavior. The change is confined to the Copilot
adapter.

Keep the agent TMPDIR short enough for Unix sockets on Linux (#1253)

On Linux, project tests that a Zeroshot agent runs can now bind Unix
sockets under $TMPDIR.

Each agent's TMPDIR is its execution scratch, <runtime root>/execution-N/tmp, inside the run
storage. Under the default local state directory,
$HOME/.local/state/zeroshot, that path is
already about 100 bytes, and hosted targets keep it below their storage
root. Linux limits a socket
path to 107 bytes plus the terminator. A Go test that binds
t.TempDir()/sidecar-ipc therefore
tries $TMPDIR/TestListenOnUnixSocketFreshPath371951039/001/sidecar-ipc
and fails with
bind: invalid argument, only because of the directory name. No setting
worked around it:
TMPDIR is a reserved run variable, providers never inherit the
invoking shell's value, and even a
very short state directory still leaves the run ID and execution path in
front of the socket.

Providers now receive a short, supervisor-owned symlink, /tmp/zs-<16 random hex digits>
(24 bytes), that points at the same execution scratch. That leaves 83
bytes for project paths.
Files still live in the execution root, so whole-run cleanup, failed-run
retention, runtime-loss
recovery and hosted slot-UID handling are unchanged. Only the link is
outside the run tree, and it
is removed together with the execution root.

Name the cause when a foreground run fails (#1254)

A failed foreground zeroshot run now prints the latest error records
from its durable run log and the zeroshot logs RUN_ID [--target NAME]
command for the complete log. Provider and runtime errors that were
previously available only through logs become visible when the command
fails.

This also fixes a race where the watch stream closed before its terminal
snapshot was durable: the foreground command could exit 0 with empty
stderr even though the run had failed. It now reads run status and
reports the failure with exit status 1. Ctrl-C can still detach during
that status read.

Retain run views and resize inspectors (#1257)

Preserve the selected run, node, execution, replay position, graph
expansion and pan/zoom when switching between Runs and Profiles. Add
shared inspector resizing for profiles and runs, with pointer and
keyboard controls, limits based on available space, and a saved width
preference.

Standalone history observation also calls native browser fetch without a
class receiver, so live streams connect in Chromium.

Saved positions beyond the initial history batch remain pending until
explicit continuation reaches them. Standalone view preferences stay
within the mounted shell; embedded preferences use workspace authority
and run identity.

Documentation

Install Python SDK from release wheels (#1250)

Python install instructions now point to GitHub SDK release wheels and
explain how to choose and install the wheel for your OS and CPU, so they
work when PyPI publishing is unavailable.

Upgrade

npm install -g @the-open-engine-company/zeroshot@10.13.0