Every thread in an org listed for every member and any id could be read
or appended to. A conversation now records the user who opened it and
lists, opens and takes turns for them alone; one recorded before users
were kept stays the org's.
The round was the only writer, so a surface that streams its turn through
/v1/chat/completions had nowhere to put what was said: an answer, and a thread
list that stays empty however much you talk.
Streaming is transport and the transcript is a store. POST {prefix}/conversations
takes the same two store calls the round takes, in the same order, under the same
per-org isolation — one store, one notion of a thread, readable through the two
GETs already beside it and continuable by the round.
`list` is one tag per line — what build-push-action wants on the line above.
Dropped unquoted into a `for` word list it arrives as a bare newline mid
statement, so bash failed to parse the step and never ran a single check:
line 4: syntax error near unexpected token `ghcr.io/hanzoai/agent:sdk-latest'
The images themselves pushed fine; the step that was supposed to confirm it
is what went red.
Read through the environment instead of interpolating into the script, and
with a here-string rather than a pipe so the loop stays in this shell and its
`exit 1` still fails the step. Checked all three ways: the old form reproduces
that exact message, the new one walks both tags, and an image that never
resolves still exits 1 instead of passing quietly.
Co-authored-by: Hanzo Dev <[email protected]>
The two README examples following "Hosted via Hanzo Network" reference
symbols that don't exist on the import paths shown. Verified against
`src/agents/__init__.py` and `src/agents/orchestration/__init__.py` at
HEAD.
**Multi-Agent Network**
- `from agents import create_network` → `create_network` lives at
`agents.network.create_network` and isn't re-exported from the top
level. Import fails today.
- `from agents.routers import SemanticRouter` → there is no
`agents.routers` module. `SemanticRouter` is defined in
`agents/network/router.py` and re-exported from `agents.network`.
Both fixed by `from agents.network import create_network, SemanticRouter`.
Verified: `agents/network/__init__.py` exports both in `__all__`.
**Orchestrated Workflow**
The example was a richer mockup than the real API supports today:
- `from agents import create_workflow, Step` → `create_workflow`
doesn't exist anywhere in the codebase; `Step` is at
`agents.orchestration.Step`, not the top level.
- `create_workflow(name=..., steps=[...])` → `Workflow.__init__`
takes `(name, description, version)` only; steps are added via
`Workflow.add_*_step()` methods or via
`Orchestrator.create_workflow_from_agents()`.
- `Step.conditional(condition=..., true_step=..., false_step=...)` →
actual signature is `Step.conditional(condition, if_true, if_false)`
(workflow.py:443).
- `Step.transform(...)` → no such static method. Transform steps are
added via `Workflow.add_transform_step()`.
- `workflow.run({...})` → `Workflow` has no `run` method. Execution
is via `Orchestrator.execute_workflow(workflow_id, input)`
(orchestrator.py:108).
Rewritten to mirror the working pattern from
`examples/network_example.py::orchestrated_workflow_example()` —
`Orchestrator(config=OrchestrationConfig(...))`, `register_agent`,
`create_workflow_from_agents`, `register_workflow`, `execute_workflow`.
The lower-level `Workflow` + `Step.{agent,parallel,conditional,loop}`
helpers are mentioned as a pointer for readers who want direct
control.
Also tightened trailing-comma formatting in the Multi-Agent example
(black-style trailing commas on multi-line args) — pure cosmetic, no
behavior change.
No source code changes. README-only.
Co-authored-by: Abhishek Krishna <[email protected]>
- BillingService client calls Commerce API for balance checks and debits
- Balance gate in prepareExecution blocks $0 balance with HTTP 402
- Post-execution billing in completeExecution/failExecution debits actual cost
- Balance proxy endpoint at GET /api/v1/billing/balance
- DB migration adds billing fields to executions table
- K8s deployment wired with BILLING_COMMERCE_URL and admin token secret
Co-authored-by: Hanzo Dev <[email protected]>