Repository navigation
v0.77.1
Cotal 0.77.1 is out!
Grab it: npm i cotal-ai@0.77.1
Changes in this release
- The Codex and Jcode hosts now arm the event plane when the session's registration requires events, even without
COTAL_EVENTS. They used to read only that flag, so a hand-driven user-mode launch withCOTAL_EVENTS_REQUIRED=1, or a custom launcher that passedeventsRequiredwith events opted out, ran with no event plane and the required-events policy never applied. The Claude, OpenCode, Codex, Jcode and Pi launches that carryeventsRequirednow also setCOTAL_EVENTSand the workspace root when the launcher passedevents: false, so the armed session has a place for its event log. Both decisions go throughlaunchArmsEventsandeventPlaneArmedin@cotal-ai/connector-core; an OpenCode 2.x session still reads onlyCOTAL_EVENTS. - A seat the manager resumes from a preserved cut now meets the manager's
eventsRequiredpolicy as a fresh spawn does. On a space whose registration requires the event plane, a resumed seat used to launch without that requirement and keep running after its event plane stopped for good, and a seat retained with--no-eventsor on a connector without an event plane resumed with no plane at all. A resumed seat now carries the requirement into its launch material, and one retained without an event plane is refused with the spawn's message before any seat of the cut starts. Spawn and resume take every host-supplied launch field (space, servers, shared MCP servers, env allowlist, resolved harness binaries,eventsRequired, workspace root) from one place and ask the same event-plane gate. - The manager's turn relay now keys each turn by its caller and goal id, the identity the goal plane stores it under. A second caller that submitted a
turnunder a goal id another caller had already used was refused as "accepted under a different submission" although its own goal did not exist. Each caller's turn now gets its own acceptance and its own deadline hold. A seat still yields by goal id alone, so the manager refuses to hand one seat a second caller's turn under an id that seat already holds. Each turn's note now records its deadline hold token, so a turn left pending across the upgrade restart is still adopted under the hold it was minted with.- @cotal-ai/core@0.77.1
- @cotal-ai/workspace@0.77.1
- @cotal-ai/seat@0.77.1
What's Changed
- fix(connector): arm the Codex and Jcode event plane on a required registration by @davidfarah2003 in #3569
- fix(manager): carry eventsRequired into a resumed seat's launch by @davidfarah2003 in #3570
- fix(manager): key the turn relay by caller and goal id by @davidfarah2003 in #3574
Full Changelog: v0.77.0...v0.77.1