7 Commits
Author SHA1 Message Date
zooqueen d2724d8380 Merge remote-tracking branch 'origin/main' 2026-09-07 14:48:52 -07:00
zooqueen 02e4433e37 A conversation is the member's who opened it
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.
2026-09-07 14:46:14 -07:00
zooqueen 2360c8b186 The transcript gets a door of its own
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.
2026-08-28 20:02:05 -07:00
zooqueenandHanzo Dev 148b2a34d1 ci: read the tag list a line at a time
`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]>
2026-08-09 12:43:11 -07:00
zooqueenandHanzo Dev b97d67ce6f docs: tidy LLM.md indexes; CLAUDE.md -> LLM.md symlink convention
Co-authored-by: Hanzo Dev <[email protected]>
2026-06-17 10:01:58 -07:00
c741f84573 docs(README): fix broken imports and API in Multi-Agent Network + Orchestrated Workflow examples (#8)
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]>
2026-06-16 22:02:41 -07:00
zooqueenandHanzo Dev 1febdd8ae3 feat(billing): add prepaid credit enforcement to control-plane
- 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]>
2026-02-18 13:20:36 -08:00