Skip to content

mu 3.11.3

Choose a tag to compare

@github-actions github-actions released this 11 Oct 09:04
· 101 commits to main since this release

Escape no longer loses delegate answers; spawn and DB-open fixes.
An Escape that drops queued delegate answers leaves a pointer to each
one. A fresh DB survives a parallel fan-out, and --next-free skips
names whose workspace dir is left on disk.

Upgrade with npm i -g @mu-crew/mu@3.11.3, then /reload in running
pi sessions to pick up the extension. No schema change. Both sides of a
delegate need 3.11.3 for the session-file pointer: an older delegate
falls back to the copy and mu agent read.

Added

  • Escape no longer loses queued delegate answers. Escape clears
    pi's follow-up queue, so an answer waiting there was gone. The
    extension now copies each dropped answer to
    ~/.cache/mu/delegate-answers/ ($XDG_CACHE_HOME/mu) and writes
    one line per answer into the conversation, without starting a turn,
    naming the copy and the delegate's pi session file. The copy is
    cache: the session file keeps the original.
  • mu agent wait --json reports a pi agent's sessionFile, the
    transcript of the run it waited for. The control socket's wait
    reply carries it.

Fixed

  • spawn --next-free skips a name whose workspace dir is left on
    disk.
    A dead agent's checkout outlives its row, kept as evidence.
    --next-free checked only agent rows, so it picked that name again,
    and --workspace then failed with WorkspacePathNotEmptyError
    instead of moving on. mu_delegate with workspace: true hit this
    when a label repeated. The leftover dir is untouched; the spawn takes
    the next name.
  • Parallel mu calls on a fresh DB no longer drop one. The first
    fan-out into a new DB (a new machine or MU_DB_PATH) could lose a
    process two ways. Switching the file to WAL returns SQLITE_BUSY
    without honouring busy_timeout, so a loser exited db locked; it is
    now retried for up to 5 s. A process reading the schema version while
    another created the tables could see a half-built DB and refuse it as
    v1 (SchemaTooOldError); the version is now read in one transaction.