Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
09a3595
feat(image-resize): migrate to iii-sdk 0.22.0-alpha.2 with namespace …
guibeira Jul 25, 2026
d9b1efe
feat(claude-code): migrate to iii-sdk 0.22.0-alpha.2 with namespace s…
guibeira Jul 25, 2026
014897b
feat(hermes): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
ad7f675
feat(acp): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
3a3a869
feat(opencode): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
320e77e
feat(pi): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
0ee27b0
feat(scrapling): migrate to iii-sdk 0.22.0-alpha.2 with namespace sup…
guibeira Jul 25, 2026
a1ea5b1
feat(approval-gate): migrate to iii-sdk 0.22.0-alpha.2 with namespace…
guibeira Jul 25, 2026
18cda9d
feat(bridge): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
0b3272a
feat(browser): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
7fe7081
feat(codex): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
5d28aa4
feat(context-manager): migrate to iii-sdk 0.22.0-alpha.2 with namespa…
guibeira Jul 25, 2026
d93d772
feat(cron): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
f6723bf
feat(database): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
43b9b97
feat(devin): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
1007cf1
feat(fp): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
4302df4
feat(github): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
afce331
feat(grok): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
36e690b
feat(harness): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
0d69d29
feat(http): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
dc24493
feat(iii-directory): migrate to iii-sdk 0.22.0-alpha.2 with namespace…
guibeira Jul 25, 2026
5184f0b
feat(llm-router): migrate to iii-sdk 0.22.0-alpha.2 with namespace su…
guibeira Jul 25, 2026
52c2daa
feat(mcp): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
3d96fe2
feat(memory): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
a302c82
feat(memory-consolidate): migrate to iii-sdk 0.22.0-alpha.2 with name…
guibeira Jul 25, 2026
4ad01f3
feat(provider-anthropic): migrate to iii-sdk 0.22.0-alpha.2 with name…
guibeira Jul 25, 2026
4f85af1
feat(provider-kimi): migrate to iii-sdk 0.22.0-alpha.2 with namespace…
guibeira Jul 25, 2026
95d047e
feat(provider-llamacpp): migrate to iii-sdk 0.22.0-alpha.2 with names…
guibeira Jul 25, 2026
34bf951
feat(provider-openai): migrate to iii-sdk 0.22.0-alpha.2 with namespa…
guibeira Jul 25, 2026
ce12509
feat(provider-openai-codex): migrate to iii-sdk 0.22.0-alpha.2 with n…
guibeira Jul 25, 2026
45ec56f
feat(provider-xai): migrate to iii-sdk 0.22.0-alpha.2 with namespace …
guibeira Jul 25, 2026
fe90624
feat(provider-zai): migrate to iii-sdk 0.22.0-alpha.2 with namespace …
guibeira Jul 25, 2026
4145121
feat(pubsub): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
41f96be
feat(queue): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
d79a184
feat(rbac-proxy): migrate to iii-sdk 0.22.0-alpha.2 with namespace su…
guibeira Jul 25, 2026
0ab6b8a
feat(session-manager): migrate to iii-sdk 0.22.0-alpha.2 with namespa…
guibeira Jul 25, 2026
785688e
feat(shell): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
4231bec
feat(slack): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
bfe9f53
feat(state): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
3984272
feat(storage): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
2aa757d
feat(telegram-bot): migrate to iii-sdk 0.22.0-alpha.2 with namespace …
guibeira Jul 25, 2026
aff98a9
feat(web): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
69b814e
feat(workflow): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
efe1aca
feat(worktree): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
3e3e985
feat(console): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
d681db2
feat(email): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
e995007
feat(lsp): migrate to iii-sdk 0.22.0-alpha.2 with namespace support
guibeira Jul 25, 2026
da74aed
fix(llm-router): route provider->router calls to the worker's namespace
guibeira Jul 25, 2026
c84a0fb
fix(provider-kimi): route router calls to the worker's namespace
guibeira Jul 25, 2026
6a02a76
fix(approval-gate): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
78c2f45
fix(context-manager): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
96e2565
fix(email): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
4c58b51
fix(harness): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
114ccfd
fix(iii-directory): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
a5b563f
fix(memory): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
e5b8272
fix(memory-consolidate): route cross-worker calls to the worker's nam…
guibeira Jul 26, 2026
f7ca62e
fix(slack): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
01c56bd
fix(telegram-bot): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
704b6ee
fix(workflow): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
1d81e9c
fix(worktree): route cross-worker calls to the worker's namespace
guibeira Jul 26, 2026
692d2a2
fix(harness): gate dynamic fan-out namespacing on the builtin check
guibeira Jul 26, 2026
bbd1220
fix(email): gate dynamic fan-out namespacing on the builtin check
guibeira Jul 26, 2026
5f9e485
fix(workflow): gate dynamic fan-out namespacing on the builtin check
guibeira Jul 26, 2026
23b358b
fix(worktree): gate dynamic fan-out namespacing on the builtin check
guibeira Jul 26, 2026
04c0fe9
fix(memory): gate dynamic fan-out namespacing on the builtin check
guibeira Jul 26, 2026
b86443d
fix(approval-gate): gate dynamic fan-out namespacing on the builtin c…
guibeira Jul 26, 2026
78f6cfb
fix(iii-directory): gate dynamic fan-out namespacing on the builtin c…
guibeira Jul 26, 2026
9d80e23
chore(state): bump iii-sdk and iii-helpers to 0.22.0-alpha.3
guibeira Jul 26, 2026
1b2bb23
chore(http): bump iii-sdk and iii-helpers to 0.22.0-alpha.3
guibeira Jul 26, 2026
8b47aa1
chore(pubsub): bump iii-sdk and iii-helpers to 0.22.0-alpha.3
guibeira Jul 27, 2026
72cd752
chore(cron): bump iii-sdk and iii-helpers to 0.22.0-alpha.3
guibeira Jul 27, 2026
4424b1b
chore(queue): bump iii-sdk and iii-helpers to 0.22.0-alpha.3
guibeira Jul 27, 2026
6275002
Merge branch 'main' into feat/new-sdk-migration
guibeira Jul 27, 2026
f9be400
chore: bump iii-sdk dependencies to 0.22.0-alpha.3
guibeira Jul 27, 2026
259fdad
fix: add namespaces to trigger test fixtures
guibeira Jul 27, 2026
ece5b0a
fix(queue): carry the target namespace from enqueue through to delivery
anthonyiscoding Jul 29, 2026
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
8 changes: 4 additions & 4 deletions acp/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion acp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ name = "iii-acp"
path = "src/main.rs"

[dependencies]
iii-sdk = "=0.21.6"
iii-sdk = "=0.22.0-alpha.3"
tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-std", "io-util", "sync", "time", "signal"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Expand Down
3 changes: 3 additions & 0 deletions acp/src/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,9 @@ fn register_event_subscriber(
function_id: fn_id,
config: json!({ "stream_name": AGENT_EVENTS_STREAM }),
metadata: None,
// Resolve the trigger's target in this worker's namespace so it matches
// where the function was registered (None => engine default).
namespace: iii.namespace(),
}) {
Ok(t) => Some(t),
Err(e) => {
Expand Down
8 changes: 4 additions & 4 deletions approval-gate/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion approval-gate/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ name = "approval_gate"
path = "src/lib.rs"

[dependencies]
iii-sdk = "=0.21.6"
iii-sdk = "=0.22.0-alpha.3"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Expand Down
3 changes: 3 additions & 0 deletions approval-gate/src/configuration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ pub fn bind_hook(iii: &IIIClient) {
"on_error": HOOK_ON_ERROR,
}),
metadata: None,
namespace: iii.namespace(),
}) {
Ok(_) => tracing::info!(
trigger_type = "harness::hook::pre-trigger",
Expand Down Expand Up @@ -157,6 +158,7 @@ pub fn bind_filesystem_access_watch_hook(iii: &IIIClient) {
"on_error": FILESYSTEM_ACCESS_WATCH_ON_ERROR,
}),
metadata: None,
namespace: iii.namespace(),
}) {
Ok(_) => tracing::info!(
trigger_type = "harness::hook::post-trigger",
Expand Down Expand Up @@ -262,6 +264,7 @@ pub fn register_config_trigger(iii: &IIIClient, cell: ConfigCell) -> Result<(),
"event_types": ["configuration:updated"],
}),
metadata: None,
namespace: iii.namespace(),
})?;
Ok(())
}
Expand Down
40 changes: 31 additions & 9 deletions approval-gate/src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,15 +253,36 @@ impl Emitter {
) {
for binding in set.snapshot() {
if binding_matches(&binding.filter, session_id, session_metadata) {
let res = self
.iii
.trigger(TriggerRequest {
function_id: binding.function_id.clone(),
payload: payload.clone(),
action: Some(TriggerAction::Void),
timeout_ms: None,
})
.await;
let request = TriggerRequest {
function_id: binding.function_id.clone(),
payload: payload.clone(),
action: Some(TriggerAction::Void),
timeout_ms: None,
};
let route_ns = self.iii.namespace().filter(|_| {
!matches!(
binding.function_id.split("::").next(),
Some(
"state"
| "stream"
| "queue"
| "pubsub"
| "configuration"
| "cron"
| "http"
| "engine"
| "sandbox"
| "log"
| "secret"
| "kv"
| "iii"
)
)
});
let res = match route_ns {
Some(ns) => self.iii.trigger(request.namespace(ns)).await,
None => self.iii.trigger(request).await,
};
if let Err(e) = res {
tracing::warn!(
function_id = %binding.function_id,
Expand Down Expand Up @@ -314,6 +335,7 @@ mod tests {
function_id: function_id.into(),
config,
metadata: None,
namespace: None,
}
}

Expand Down
45 changes: 26 additions & 19 deletions approval-gate/src/harness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ use iii_sdk::IIIClient;
use serde_json::{json, Value};

pub async fn function_resolve(iii: &IIIClient, payload: Value) -> Result<Value, Error> {
iii.trigger(TriggerRequest {
let request = TriggerRequest {
function_id: "harness::function::resolve".into(),
payload,
action: None,
timeout_ms: None,
})
.await
};
match iii.namespace() {
Some(ns) => iii.trigger(request.namespace(ns)).await,
None => iii.trigger(request).await,
}
}

fn parse_roots(reply: &Value) -> Vec<String> {
Expand All @@ -36,14 +39,16 @@ fn parse_roots(reply: &Value) -> Vec<String> {
/// error on "no grants" — only on transport/RPC failure, e.g. an older
/// harness that doesn't implement this control plane yet).
pub async fn filesystem_grants(iii: &IIIClient, session_id: &str) -> Result<Vec<String>, Error> {
let reply = iii
.trigger(TriggerRequest {
function_id: "harness::filesystem::grants".into(),
payload: json!({ "session_id": session_id }),
action: None,
timeout_ms: None,
})
.await?;
let request = TriggerRequest {
function_id: "harness::filesystem::grants".into(),
payload: json!({ "session_id": session_id }),
action: None,
timeout_ms: None,
};
let reply = match iii.namespace() {
Some(ns) => iii.trigger(request.namespace(ns)).await?,
None => iii.trigger(request).await?,
};
Ok(parse_roots(&reply))
}

Expand All @@ -55,13 +60,15 @@ pub async fn filesystem_grant(
session_id: &str,
root: &str,
) -> Result<Vec<String>, Error> {
let reply = iii
.trigger(TriggerRequest {
function_id: "harness::filesystem::grant".into(),
payload: json!({ "session_id": session_id, "root": root }),
action: None,
timeout_ms: None,
})
.await?;
let request = TriggerRequest {
function_id: "harness::filesystem::grant".into(),
payload: json!({ "session_id": session_id, "root": root }),
action: None,
timeout_ms: None,
};
let reply = match iii.namespace() {
Some(ns) => iii.trigger(request.namespace(ns)).await?,
None => iii.trigger(request).await?,
};
Ok(parse_roots(&reply))
}
1 change: 1 addition & 0 deletions approval-gate/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ fn bind_best_effort(
function_id: function_id.to_string(),
config,
metadata: None,
namespace: iii.namespace(),
});
match res {
Ok(_) => tracing::info!(trigger_type, function_id, "trigger binding requested"),
Expand Down
9 changes: 6 additions & 3 deletions approval-gate/src/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ use iii_sdk::IIIClient;
use serde_json::{json, Value};

pub async fn get(iii: &IIIClient, session_id: &str) -> Result<Value, Error> {
iii.trigger(TriggerRequest {
let request = TriggerRequest {
function_id: "session::get".into(),
payload: json!({ "session_id": session_id }),
action: None,
timeout_ms: None,
})
.await
};
match iii.namespace() {
Some(ns) => iii.trigger(request.namespace(ns)).await,
None => iii.trigger(request).await,
}
}
2 changes: 2 additions & 0 deletions approval-gate/src/testkit/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,13 +459,15 @@ pub async fn boot(engine: &Engine, opts: BootOpts) -> TestStack {
function_id: "recorder::on_created".to_string(),
config: json!({}),
metadata: None,
namespace: iii.namespace(),
})
.expect("bind pending_created");
iii.register_trigger(RegisterTriggerInput {
trigger_type: PENDING_RESOLVED.to_string(),
function_id: "recorder::on_resolved".to_string(),
config: json!({}),
metadata: None,
namespace: iii.namespace(),
})
.expect("bind pending_resolved");

Expand Down
8 changes: 4 additions & 4 deletions bridge/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion bridge/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ name = "bridge"
path = "src/main.rs"

[dependencies]
iii-sdk = "=0.21.6"
iii-sdk = "=0.22.0-alpha.3"
async-trait = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time"] }
serde = { version = "1", features = ["derive"] }
Expand Down
40 changes: 17 additions & 23 deletions bridge/src/boot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ pub async fn start(iii: Arc<IIIClient>, config: BridgeConfig) -> anyhow::Result<
/// `bridge.invoke` + `bridge.invoke_async` on the local engine — exact
/// function ids and descriptions from the builtin (mod.rs:96-191).
///
/// Both use `new_async_with_bad_request` with the typed [`functions::
/// Both use `new_async` with the typed [`functions::
/// InvokeInput`]: the SDK auto-extracts a real request schema instead of the
/// permissive `AnyValue` a `Value` closure param would emit, while
/// [`functions::invoke_bad_request`] keeps owning the `deserialization_error`
Expand All @@ -133,33 +133,27 @@ pub fn register_bridge_functions(iii: &Arc<IIIClient>, remote: RemoteCell) {
let caller = caller.clone();
iii.register_function(
functions::INVOKE_FN,
RegisterFunction::new_async_with_bad_request(
move |req: functions::InvokeInput| {
let caller = caller.clone();
async move {
functions::handle_invoke_typed(caller.as_ref(), req)
.await
.map_err(Error::from)
}
},
functions::invoke_bad_request,
)
.description("Invoke a function on the remote III instance"),
);
}
iii.register_function(
functions::INVOKE_ASYNC_FN,
RegisterFunction::new_async_with_bad_request(
move |req: functions::InvokeInput| {
RegisterFunction::new_async(move |req: functions::InvokeInput| {
let caller = caller.clone();
async move {
functions::handle_invoke_async_typed(caller.as_ref(), req)
functions::handle_invoke_typed(caller.as_ref(), req)
.await
.map_err(Error::from)
}
},
functions::invoke_bad_request,
)
})
.description("Invoke a function on the remote III instance"),
);
}
iii.register_function(
functions::INVOKE_ASYNC_FN,
RegisterFunction::new_async(move |req: functions::InvokeInput| {
let caller = caller.clone();
async move {
functions::handle_invoke_async_typed(caller.as_ref(), req)
.await
.map_err(Error::from)
}
})
.description("Fire-and-forget invoke on the remote III instance"),
);
}
Expand Down
1 change: 1 addition & 0 deletions bridge/src/configuration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ pub async fn register_config_trigger(iii: &Arc<IIIClient>, boot: &BootHandle) ->
"event_types": ["configuration:updated"],
}),
metadata: None,
namespace: iii.namespace(),
})?;
Ok(())
}
Expand Down
8 changes: 4 additions & 4 deletions browser/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion browser/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ name = "browser"
path = "src/lib.rs"

[dependencies]
iii-sdk = "=0.21.6"
iii-sdk = "=0.22.0-alpha.3"
arc-swap = "1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "signal", "time", "process"] }
serde = { version = "1", features = ["derive"] }
Expand Down
Loading
Loading