Skip to content

powerqueue v0.10.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:12
· 35 commits to main since this release
3251f2f

Sessions can run inside containers (or anywhere the daemon's powerqueue
binary cannot run); see docs/containers.md.

Added

  • claude.binary, codex.binary and gemini.binary are command templates:
    a command line split like a shell would, with per-task placeholders
    ({key}, {slug}, {task_id}, {session_id}, {worktree},
    {task_dir}, {repo}, {attempt}, {model}), e.g. docker exec -it --env-file {task_dir}/env -w {worktree} pq-{slug} claude. A plain
    program still works as before. config validate reports unbalanced
    quotes and unknown placeholders; doctor, service status and the
    usage probes use the template's program, and skip the login check with a
    note when the command is per-task.
  • <provider>.shim = true: the launcher writes a POSIX shell shim to
    <task dir>/bin/powerqueue and points the hooks, Claude Code's status
    line, Codex's notify and the prompt's completion protocol at it. The
    shim writes one file per call into <task dir>/inbox/; the daemon drains
    it every tick (new inbox phase before the hooks) and applies the
    messages as powerqueue hook / task complete / task block would
    (events inbox.complete, inbox.block, inbox.error, inbox.rejected;
    doctor reports parked unreadable messages). Claude sessions get
    Bash(<shim> task *) in --allowedTools; prompt templates can use
    {{powerqueue}}.
  • POWERQUEUE_BIN in the session environment names the powerqueue
    command the session should run (the host binary, or the shim) unless the
    provider's env sets it.
  • repo.setup gets POWERQUEUE_TASK_SLUG, POWERQUEUE_TASK_DIR,
    POWERQUEUE_DATA_DIR and POWERQUEUE_STATE_DIR; cleanup.run gets
    POWERQUEUE_TASK_SLUG.
  • claude.env.CLAUDE_CONFIG_DIR is also where the daemon reads transcripts
    and seeds workspace trust (like codex.env.CODEX_HOME for rollouts), so a
    config directory mounted into a container at the same path works on both
    sides.
  • docs/containers.md, docs/examples/Dockerfile.agent (Claude Code + Codex
    on Node 22) and docs/examples/agent-container.sh (up / down / exec
    for a per-task container); end-to-end tests of the shim on the host and,
    with POWERQUEUE_E2E_DOCKER=1, of Claude and Codex sessions through
    docker exec.

Fixed

  • A task completed by powerqueue task complete whose session exited
    between the hook and probe phases of one tick was released without
    cleanup (no push, no cleanup.run, no source-issue update): the probe
    marked the session exited and finalize_terminal never saw it. The
    session is now left live for finalize_terminal (event
    session.pane_gone).