Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/create-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ on:
- provider-anthropic
- provider-openai
- provider-router
- session-inbox
- session-tree
- session
- shell
- storage
- todo-worker
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ on:
- 'provider-anthropic/v*'
- 'provider-openai/v*'
- 'provider-router/v*'
- 'session-inbox/v*'
- 'session-tree/v*'
- 'session/v*'
- 'shell/v*'
- 'iii-directory/v*'
- 'storage/v*'
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ matching GitHub Release asset for the host's target triple.
| Worker | Kind | Summary |
|---|---|---|
| [`auth-credentials`](auth-credentials/) | Rust | Provider credential vault under `auth::*` — API keys and OAuth tokens. |
| [`session-inbox`](session-inbox/) | Rust | Per-session inbox under `session-inbox::*` (push, drain, peek). |
| [`session`](session/) | Rust | Session storage under `session-tree::*` and per-session inbox under `session-inbox::*` (push, drain, peek). |
| [`provider-router`](provider-router/) | Rust | `router::stream_assistant` provider router plus `router::abort` and `router::push_steering` / `push_followup` helpers. |
| [`hook-fanout`](hook-fanout/) | Rust | Reusable publish-collect primitive under `hook-fanout::publish_collect` — fans an event to subscribers and merges replies. |
| [`iii-lsp`](iii-lsp/) | Rust | Language Server for iii function ids, trigger configs, and worker discovery. Autocomplete/hover across JS/TS, Python, Rust. |
Expand All @@ -28,7 +28,6 @@ matching GitHub Release asset for the host's target triple.
| [`proof`](proof/) | Node | AI-driven browser testing — diffs changes, generates test plans, drives Playwright. |
| [`provider-anthropic`](provider-anthropic/) | Rust | Native Anthropic Messages API streaming provider under `provider::anthropic::*`. |
| [`provider-openai`](provider-openai/) | Rust | OpenAI Chat Completions provider under `provider::openai::*`. |
| [`session-tree`](session-tree/) | Rust | Session storage as a parent-id tree of typed entries under `session::*`. |
| [`shell-bash`](shell-bash/) | Rust | Sandboxed shell execution under `shell::bash::*` — wraps the engine `sandbox::exec` primitive. |
| [`shell-filesystem`](shell-filesystem/) | Rust | Sandboxed filesystem operations under `shell::fs::*` — read, write, list, stat, glob. |
| [`turn-orchestrator`](turn-orchestrator/) | Rust | Durable `run::start` state machine driving each agent turn through provisioning, assistant, tools, steering, and tearing-down. |
Expand Down
2 changes: 1 addition & 1 deletion harness/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ server-side. The model passes `function` (a bus id such as
| Group | Workers | Role |
|---|---|---|
| Orchestration | `turn-orchestrator`, `provider-router` | Runs a turn end-to-end: fan a request to a provider and dispatch function calls. |
| Sessions / state | `session-tree`, `session-inbox` | Persisted message trees and a steering/follow-up inbox queue. |
| Sessions / state | `session` | Persisted message trees (`session-tree::*`) and a steering/follow-up inbox queue (`session-inbox::*`). |
| Catalog | `models-catalog` | Model metadata. |
| Auth | `auth-credentials` | Provider credentials store. |
| Policy / safety | `policy-denylist`, `llm-budget` | Hook subscriber on `agent::before_function_call` and budget tracking. |
Expand Down
2 changes: 1 addition & 1 deletion harness/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ LOGS_DIR := $(DEMO_DIR)/logs

WORKERS := \
turn-orchestrator provider-router \
session-tree session-inbox \
session \
models-catalog hook-fanout policy-denylist \
shell \
provider-anthropic provider-openai \
Expand Down
3 changes: 1 addition & 2 deletions harness/iii.worker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ dependencies:
iii-http: "^0.11.0"
turn-orchestrator: "^0.1.0"
provider-router: "^0.1.0"
session-tree: "^0.1.0"
session-inbox: "^0.1.0"
session: "^0.1.0"
models-catalog: "^0.1.0"
hook-fanout: "^0.1.0"
policy-denylist: "^0.1.0"
Expand Down
2 changes: 1 addition & 1 deletion harness/scripts/demo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ DEMO_ENGINE_WS="${III_DEMO_ENGINE_URL:-ws://127.0.0.1:49134}"

WORKERS=(
turn-orchestrator provider-router
session-tree session-inbox
session
models-catalog hook-fanout policy-denylist
shell
provider-anthropic provider-openai
Expand Down
6 changes: 3 additions & 3 deletions harness/scripts/real-usage.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/usr/bin/env bash
# Real end-to-end usage of the demo harness.
#
# Important: turn-orchestrator and session-tree use DIFFERENT stores.
# Important: turn-orchestrator and session-tree::* use DIFFERENT stores.
# - run::start_and_wait persists to engine state under scope="agent",
# key="session/<id>/messages" (and a few sibling keys).
# - session::tree / session::messages read session-tree's own store,
# populated only by explicit session::create + session::append calls.
# - session-tree::tree / session-tree::messages read session-tree::*'s own
# store, populated only by explicit session-tree::create + append calls.
# This script uses the run::start path. To enumerate, we list state keys
# under scope="agent".
#
Expand Down
2 changes: 1 addition & 1 deletion provider-router/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ from `llm-router` when installed), abort via `state::set`, and steering /
follow-up messages through `session-inbox::push`. The turn loop itself lives in
`turn-orchestrator`; this worker only registers handlers and HTTP triggers.

`iii worker add` pulls declared worker dependencies (`session-inbox`,
`iii worker add` pulls declared worker dependencies (`session`,
`llm-budget`). Function ids use `::` throughout (see
[`src/register.rs`](src/register.rs)).

Expand Down
2 changes: 1 addition & 1 deletion provider-router/iii.worker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ scripts:
start: cargo run

dependencies:
session-inbox: "^0.1.0"
session: "^0.1.0"
llm-budget: "^0.1.0"
23 changes: 6 additions & 17 deletions registry/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -251,34 +251,23 @@
"default_config": {},
"version": "0.1.0"
},
"session-inbox": {
"session": {
"type": "binary",
"description": "Per-session inbox (session-inbox::push, drain, peek) backed by iii state.",
"description": "Session storage (session-tree::*) + per-session inbox (session-inbox::*) backed by iii state.",
"repo": "iii-hq/workers",
"tag_prefix": "session-inbox",
"tag_prefix": "session",
"supported_targets": [
"aarch64-apple-darwin",
"x86_64-unknown-linux-gnu"
],
"has_checksum": true,
"default_config": {
"max_inline_bytes": 262144
"store_backend": "iii_state",
"engine_url": "ws://127.0.0.1:49134",
"state_scope": "agent"
},
"version": "0.1.0"
},
"session-tree": {
"type": "binary",
"description": "Session storage as a parent-id tree of typed entries under session-tree::*.",
"repo": "iii-hq/workers",
"tag_prefix": "session-tree",
"supported_targets": [
"aarch64-apple-darwin",
"x86_64-unknown-linux-gnu"
],
"has_checksum": true,
"default_config": {},
"version": "0.1.0"
},
"shell": {
"type": "binary",
"description": "Unix shell + filesystem worker — exec with allowlist/denylist/timeout/output caps and background jobs; fs::ls|stat|mkdir|rm|chmod|mv|grep|sed|read|write with host jail, denylist, size caps, and sandbox-target forwarding",
Expand Down
Loading
Loading