Repository navigation
0.41.0
Loom 0.41.0 makes agents deployable: b10x-loom agent check and agent serve (http binding, A2A), the LoomAgent CRD, the b10x-loom-operator controller and the loom-agents Helm chart, on ESS 0.69.2.
Breaking
No breaking changes.
Changed
b10x-loom agent check --spec <FILE>says whether aloom.agent/1spec can be served: exit 0 with onecheckedline, 3 with the first refusal naming its reason and member, 1 when the file cannot be read (story:agent-check)b10x-loom agent serve --spec <FILE> --state <DIR> [--once]hosts the agent aloom.agent/1spec declares on the plugin host: polls onlychannel.allow, answers each item in a governed turn on the inner loop's protocol under the state whosewhennames the intent, with exactlypolicy.capabilitiesas its authority;reply.sendwrites the recorded proposal to the item's channel through the Connectors command line, at mostwrites.max_per_houran hour, and inwrites.mode: approvalonly afterb10x-loom approve <COMMISSION> reply.send --state <DIR>;b10x-loom agent resume <COMMISSION>performs a granted send now; SIGTERM ends the host after the item (story:agent-serve)- An agent spec's
httpbinding is read by a served turn:source.read {source, kind: get, input: {path, query?}}is one GET of a path exactly inallow_paths(no\, no.or..segment, no encoded separator, even when listed;agent checkrefuses such an entry asMalformed) underbase_url, with the bearer the variablebearer_envnames (unset, empty or blank isBearerMissing), no redirect followed (the refusal carries at most 256 bytes of the location), the body cut atmax_bytesin bytes on a character boundary and marked, never longer thanmax_bytes(a byte that is not UTF-8 is dropped); a refusal (the method, the path, the bearer, a redirect, a failing status) is a refused step the model reads as data (story:agent-http-binding) b10x-loom agent serveanswers A2A when the spec declaresexpose.a2a, on--a2a-address(default0.0.0.0) andexpose.a2a.port: the agent card at/.well-known/agent-card.json,SendMessage(one turn oninbound-answer@1, answered with its record; nothing is sent through A2A) andGetTaskatexpose.a2a.path, and/readyand/live; every other request needsAuthorization: Bearerwith the tokenLOOM_A2A_BEARERholds, and the host refuses to start without it (story:agent-a2a)- The
loom.resourcedomain and theLoomAgentCRD projected from it, held bytask crd-drift(story:loom-agent-resource-domain) b10x-loom-operator, theLoomAgentcontroller:run --config,render --resourceandcrd; it checks the spec before any child exists (story:loom-operator)charts/loom-agents, the Helm chart that installs the CRD and the controller with a namespaced Role, versioned with Loom (story:loom-operator)- Loom requires ESS 0.69.2; the conformance crates take
ess-conformanceandess-primitivesat tag0.69.2