v2026.10.7
·
313 commits
to main
since this release
@code-yeongyu/senpi
Breaking Changes
Added
- Extensions can provide and read a session-scoped
EvalHandleHost(pi.provideEvalHandleHost(host)/ctx.evalHandleHost): the capability behind codemode's in-cellwait()andhandle()helpers, fenced by owner session, id and run epoch. It is absent until a task owner provides it and is cleared when the session runtime is replaced (#2687).
Changed
Fixed
- After an upgrade, an old host that was still serving the client's own socket with no session open can now be replaced:
host handoff(which the desktop runs when the engine changed) starts the new engine there instead of refusingunknown_owner, so the first turn no longer fails with "No provider available" until the old host is drained by hand. A host from before layout 2 is sent a drain only while a recount still finds no session, a host nothing proves is never signalled (it drains itself once it loses the socket), and a host that holds a session is still refused, with the command that retires it (#2701). host statusnow reports the right engine version for a host generation started by a handoff to a different build: the generation's record names the build the new host reported, not the build of the process that ran the handoff (#2698).
Removed
@code-yeongyu/senpi-ai
Breaking Changes
Added
Changed
Fixed
Removed
@code-yeongyu/senpi-agent-core
Breaking Changes
Added
Changed
Fixed
Removed
@code-yeongyu/senpi-codemode
Breaking Changes
Added
- JavaScript kernel tools:
tool.defined()lists the defined kernel tools andtool.undefine(name)removes one;tool(fn, { name })registers a tool under an explicit name while keeping the function's argument order (#2452). - In-cell
wait(handles, {timeout, mode})barrier andhandle(node | ref | {pool_id})rich views in all four kernels:waitreturns values in input order (all), the first success (any) or every outcome (settled), times out witheval_wait_timeoutwithout cancelling work, and pauses the run budget while parked;handle(node).controloffersstatus(),output(),send(),cancel()andwait()fenced by owner, id andrun_epochthrough the host'sEvalHandleHostcapability (agent and workpool handles fail witheval_wait_unavailableon a host without it);completion(prompt, {handle: true})returns an opt-in completion handle bounded by its cell's hard deadline;tool_schema("eval:helpers")andtool_schema("eval:wait")document the surface and the removed-tool hint forwaitpoints at them. The legacyagent(..., {handle: true})record, the eval description and the eval input schema are unchanged; the Python runner's dispatcher was renamed_handle_messagesohandle()is the helper (#2687).
Changed
Fixed
- The Ruby kernel's memory notice names the largest globals again on Ruby 2.6 (the sizer used a Ruby 2.7 method) (#2696).
- Eval no longer fails with "codemode session manager is disposed" for the rest of a session after a session switch or fork that another extension cancelled: codemode only tears its kernels down when the session actually ends (#1706).
- A session whose codemode runtime failed to start is recovered by the next eval call (once, with one stderr line naming the failed start); if re-creation also fails, the call says "codemode runtime could not be re-created: " and how to bring eval back (#1706).