Repository navigation
v0.121.2
Install or update: npm i -g cotal-ai@0.121.2
Changes in this release
-
Report a remote signed-in user's current read, post, direct-message and capability grant in
cotal whoami. The stock issuer returns the authoritative grant beside each fresh bearer, while unavailable, refused and older issuers remain unknown instead of being inferred from the token or a successful exchange. -
Report the recorded connection failure when sends or DMs cannot bind, including a
refused first presence write. Inbox replies now identify a connection that is not
ready while continuing to return locally buffered messages.A timed-out presence update reports that its outcome is unknown and may have landed.
-
Report the concrete publish subject and unknown storage outcome when a channel send or direct message times out. A missing publish acknowledgement does not prove that the broker rejected the message.
-
Keep static managed seats' self-stop, persona and spawn calls bound to their launching manager without changing their class-only credential grants.
-
assertValidKindvalidates endpoint kinds ("agent"or"endpoint").CotalEndpoint,configFromEnv,loadAgentFile, andsaveAgentFileshare it, soCOTAL_KINDandcard.kindrefuse any other value instead of passing an unvalidated string through to the card. -
Derive
Frame.depthandEngineFrame.depthfromkeys.path.lengthas a getter instead of storing a separate constructor field and incrementing it alongsidekeys.branch. -
Keep the signed sender principal stable across one-shot sends from the same OS login and host on a static-auth mesh. Each send retains a fresh, short-lived credential with the existing operator permissions. Explicit credentials and signed-in user identities are unchanged.
-
Explain confirmed Claude Code hook deliveries when a later inbox read has no unread messages. The receipt names the latest handoff without returning message bodies again or changing acknowledgements.
-
Keep Claude Code hook context below its inline output limit. Deliver only complete messages that fit, count the remainder, and leave omitted or oversized messages unacknowledged for the inbox or a later hook.
-
Retain SIGINT and SIGTERM in the host's final shutdown diagnostic so a pty manager can name the received signal without inventing its sender.
-
Name an OpenAI-compatible model-not-found refusal during Jcode startup even when the harness wraps it as an internal error. Keep provider output private.
-
Validate
terminal.tailinorca.readScreenso malformedterminal read --screen --jsonresponses throw an error naming the command and terminal handle instead of a rawTypeError. -
currentTerminalandcurrentTerminalForWaitnow shareresolveTerminalandisGoneCode, so the synchronous status probe and the asynchronous exit wait resolve a terminal fromterminal listandterminal showby one rule and classify gone error codes in one place. When a terminal'sptyIdleavesterminal list,currentTerminalreturnsundefinedwithout callingterminal showon the stale handle, and whenterminal showreturns anokenvelope with no terminal for a handle-only seat,currentTerminalthrows the same authoritative-state error ascurrentTerminalForWaitinstead of returning the caller's input. -
Both barrier evictors build their unverified eviction result, and the note they use when the delivery-admin rail cannot be reached, through one helper each. A change to that result or that note can no longer land in only one evictor. The helper logs through the options it is given, on each call, so a logger that reads its options keeps them.
-
cotal service add <name> --preset brokerworks again. A preset option named in camelCase, such as the broker'slogFile, now takes its dashed flag (--log-file, ascotal upspells it) instead of refusing the whole preset as UNSUPPORTED. -
A legacy bare
cotal downnow reads the delivery lease after it stops the delivery daemon. The daemon gives its lease release two seconds after the signal and then exits anyway, anddownused to report it stopped and delete its credential in every case. When the release had not landed, the nextcotal upcould not recognise the row as the stopped daemon's, and its new daemon was refused with "a live lease already exists". When the row still names the stopped daemon's credential, or the lease cannot be read,downnow keeps the credential and prints a line saying so, and the nextupwaits the row out and starts the new daemon. -
Name
cotal attach --name <seat>in backticks in the refusals for a Claude selection menu and for input that cannot be inspected. -
Refuse terminal text input at Claude selection menus with guidance to attach and use arrow keys, instead of confirming the highlighted answer.
What's Changed
- fix(connector-jcode): name a wrapped model-not-found refusal at startup by @davidfarah2003 in #5152
- fix(claude): explain hook deliveries in empty inbox replies by @davidfarah2003 in #5156
- fix(core): name the subject and unknown outcome when a publish times out by @davidfarah2003 in #5155
- fix(manager): refuse pasted answers at Claude selection menus by @davidfarah2003 in #5159
- fix(cli): keep one-shot operator sender principals stable by @davidfarah2003 in #5160
- fix(auth): share one unverified eviction result and log it through its options by @davidfarah2003 in #5163
- fix(orca): resolve terminals and classify gone codes by one rule by @davidfarah2003 in #5164
- fix(cli): keep the delivery credential when down leaves the daemon's lease row by @davidfarah2003 in #5165
- fix(examples): parse face-term options with strict parseArgs and validate --expr by @davidfarah2003 in #5166
- fix(connector): keep static managed launch-local calls on their manager by @davidfarah2003 in #5162
- fix(lang): derive frame depth from keys.path.length on both engines by @davidfarah2003 in #5167
- fix(core,connector-core): validate endpoint kind across configFromEnv and CotalEndpoint by @davidfarah2003 in #5168
- fix(orca): validate terminal.tail in readScreen (#3259) by @davidfarah2003 in #5169
- fix(cli): give a camelCase preset option its dashed flag by @davidfarah2003 in #5173
- chore: drop the changeset for the private frontier-faces example by @davidfarah2003 in #5174
- fix(connectors): report presence failure causes and inbox connection state by @davidfarah2003 in #5153
- fix(claude): keep hook context within the inline output limit by @davidfarah2003 in #5170
- fix(cli): report remote user grants in whoami by @davidfarah2003 in #5177
- fix(connector-jcode): name the received signal in the shutdown diagnostic by @davidfarah2003 in #5172
- chore(release): version packages by @davidfarah2003 in #5161
Full Changelog: v0.121.1...v0.121.2