swarm-controller: create every agent's subagent stream
swarm-controller now creates `term-sub-<agent>` for every agent a hive is declared to run, at start and every minute after, with the config `swarm_queue_client::subagent_term::open_or_create` spells (subjects `$SWARM.term.<agent>.sub.>`, max_age 24h). An existing stream is opened as it is, as the controller does for its other streams and buckets, under the `$JS.API.STREAM.CREATE.*` grant it already holds. The agent no longer creates the stream: its token is granted publish on `$SWARM.term.<agent>.sub.>` and no `$JS.API.STREAM.CREATE|INFO` subject, and the subagent daemon only publishes. A `CREATE` carries the stream's config in its payload, which no subject grant narrows, so the agent could otherwise pick the stream's subjects and limits.
This commit is contained in:
parent
d6f94e5247
commit
318f67cda9
13 changed files with 135 additions and 102 deletions
|
|
@ -37,8 +37,8 @@ terminal has no turn-state badges.
|
|||
|
||||
The agent's subagent daemon publishes each subagent's terminal rows on
|
||||
`$SWARM.term.<agent>.sub.<subagent>` with the agent's own queue credential,
|
||||
into a stream named `term-sub-<agent>` that it creates on first use. The
|
||||
stream keeps rows for 24 hours. swarm-controller serves the list as
|
||||
into a stream named `term-sub-<agent>` that swarm-controller creates for every
|
||||
declared agent. The stream keeps rows for 24 hours. swarm-controller serves the list as
|
||||
`GET /api/agents/<name>/subagents`, the subagents named by the subjects in that
|
||||
stream, and relays one subagent's rows as SSE on
|
||||
`GET /api/agents/<name>/subagents/<subagent>/term/stream`. An agent with no
|
||||
|
|
|
|||
Loading…
Reference in a new issue