Skip to content

v0.138.0

Choose a tag to compare

@davidfarah2003 davidfarah2003 released this 03 Nov 17:12
0d3e4d2

Install or update: npm i -g cotal-ai@0.138.0

Changes in this release

  • Make the coordination tools say what to do next. The results of cotal_send, cotal_dm and cotal_spawn now say where the post, message or seat went and the next move. A post says the agents on the channel see it, and a post to a new name says so and names close matches. A DM says other agents can't read it and points anything others could use at the task's channel. A started seat names its join channels, or says it starts only on the channels its persona lists. The descriptions of cotal_send, cotal_dm, cotal_anycast, cotal_spawn, cotal_persona, cotal_despawn, cotal_join, cotal_leave, cotal_channels, cotal_channel_info and cotal_run say what each tool is for, when a neighbouring tool fits better, and give one example, and the briefing's channel guidance agrees with them. The briefing and cotal_dm both say to post a status meant for one peer on the shared channel with a mention, and to keep DMs for what that peer alone needs. The briefing and cotal_send say a post on a live channel misses an agent that is disconnected or busy, unless it mentions that agent and the agent may read the channel, and the briefing and cotal_spawn say once works on Claude Code, jcode, OpenCode and pi helpers. A persona that would not load is refused as Couldn't define <name>: it would not load: <reason>. MeshAgent.describeSendChannel returns { known, hints } instead of a sentence.
  • Show reported conditions and status, activity and work ages in the dashboard's roster, waiting cards and agent details, including graph details. Use core's canonical age functions through its new browser-safe presence-ages subpath, so a 90-second heartbeat displays as 1m rather than rounding to 2m. Wrap the fact lines instead of hiding them behind ellipses.
  • Move terminal attach from @cotal-ai/cli into @cotal-ai/workspace, exported as @cotal-ai/workspace/attach: the detach key, the terminal hold, the session client over a mesh session (attachClient, meshSessionTransport), and the attach loop that establishes a session, re-establishes it when the link drops and hands back abandoned sessions (attachSeat). A caller passes a ControlClient, the command a seat-miss refusal names, an optional remedy for a seat with no terminal, and an optional sink for the notices the loop prints, so the library never imports CLI code. cotal attach, the console's attach and spawn-then-attach behave as before.
  • Move the chat session layer from @cotal-ai/cli into @cotal-ai/workspace, exported as @cotal-ai/workspace/chat: the session contract, the participant engine, the native session, and the open, static and user-mode adapters. openChatSession admits a session through the adapter the target's recorded mode names, and a caller passes a ControlClient for the manager calls a static session makes at its open and its retirement, so the library never imports CLI code. cotal chat and cotal channels behave as before.

What's Changed

Full Changelog: v0.137.0...v0.138.0