Repository navigation
rpi v0.3.22
·
2 commits
to feature-0.3.22
since this release
Changed
- Align
send_messagewith Pi'striggerTurnanddeliverAs(steer,
followUp,nextTurn) semantics. Default idle sends now append context;
callers that need an immediate reply must passtriggerTurn: true.
Running sends enqueue without reentering the agent. Accept Pi custom-message
payloads and flat or nested delivery options without changing the plugin ABI.
Fixed
- Durably queue context messages appended during a run until its tool batch has
settled. Preserve accepted messages through cancellation, retries and session
recovery without starting extra model turns or splitting tool calls/results. - Repair legacy tool-result ordering within each assistant batch, preserving
reused call IDs across turns and moving message payloads without deep copies. - Preserve reserved entry IDs for steering, follow-up and next-turn messages,
commit them before considering their queue items consumed, and keep next-turn
messages pending across automatic run recovery. - Reset retry message indices and compaction cuts only when the next attempt
starts, preserving successful replies after compaction and avoiding duplicate
tool results when retry waits are cancelled. Bind assistant frame streams to
their reserved entry IDs before committing, so recovery does not replay
replies already written at a context boundary or discard uncommitted progress. - Link retry intents to their actual assistant entry reservations and inspect
only the latest intent during recovery. Successful retries no longer start an
extra turn after a crash, and a begun retry retains its own streamed progress. - Settle queued messages of every accepted role under their reserved entry IDs,
including stored assistant and tool-result messages, so delivered messages do
not return to the queue after restarting. - Rebuild all lane delivery queues from the target session on a session switch,
keeping pending messages in their original session and clearing stale resume
state. Existing lane handles and session clones now follow the shared backing
when it changes. Wait for an active operation to finish before the TUI swaps
sessions, and update plugin session identity only after a successful swap. - Finish context callbacks before admitting a new operation and capture run
outcomes andRunEndfrom the same leaf snapshot. Listener writes remain
durable without changing the completed run's result. - Reserve run admission before automatic resume preparation, so a concurrent
session switch cannot redirect the resumed run. Preserve pending resumes on
rejected admission and persist their chain and attempt count explicitly. - Serialize external usage writes with operation completion and session swaps;
associate them only with an open operation on the same lane, keeping start
and end callback records valid. - Keep all delivery queue records independent of run admission and completion,
includingsteer,follow_upandnext_run. Allow cancellation of pending
queues from older sessions after their accepting run ends, while preserving
enqueue matching and validation of other operation records.