Skip to content

v0.141.0

Choose a tag to compare

@davidfarah2003 davidfarah2003 released this 04 Nov 03:01
387f772

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

Changes in this release

  • An agent can define its helper on the spawn itself. cotal_spawn takes a persona record (the persona prompt, role, model, variant, description, channels and capabilities) next to name, and the helper runs from a private snapshot of it. persona.save: true also writes a catalog copy under that name, owned by the spawner. A cotal-lang program does the same with spawn({ name, prompt, ... }, opts), and the run journal records the definition and its digest, so a resume never submits another one. cotal_persona takes capabilities and says how a saved persona is removed.

    A helper never gets more than its spawner holds. On a static mesh every spawn is measured against the spawner's issued evidence: each channel, the role and each capability token it does not hold is refused by name, and a spawner whose evidence does not resolve hands on nothing. Operator commands and admin agents are exempt. A workflow run's spawns are bounded by what its starter held when the run was admitted, on its host and on any other static manager its spawn reaches, which reads the run's admission. A cotal run start --local run's helpers get only channels within the --admit-read and --admit-publish ceiling. The static agent mint now grants task-queue rows for each role:<r> capability, so a spawner hands on a role it was given either way. On a participant manager the issuing host makes the agent that asked for a helper its ledger parent, taking the caller from the spawn request it observed, and a run's helper is parented to the run's starter and also bounded by the grant its admission recorded. A run revoked mid-step starts no further helper, and a persona a run saves is owned by its starter. The loopback verify-enrollment door a host platform asks decides the same parent and bound and answers parent, and a retry of the same enrollment gets the same answer.

    A seat started by foreground cotal spawn, or a bare cotal join, on a static mesh is now issued against its own lifecycle. Its credential has no expiry unless --expires-in or --expires-at is passed, is never renewed, and is retired when the seat leaves cleanly.

    Breaking: a static spawner that hands its helpers channels, capabilities or a role it does not hold is refused, an older issuing host refuses the new enrollment field, an older manager refuses a run's spawn, which now names its run, an older reader refuses an admission carrying spawnExempt or delegation, and an enrollment retry is refused when its read set is not its grant's, which is the case for a grant an older host wrote for a helper that named only a subscribe set. See UPGRADING.

What's Changed

Full Changelog: v0.140.8...v0.141.0