iii-sdk-reference
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSDK Reference
SDK参考
Use this skill for language-specific SDK details. Use for the common model and
for exception handling.
iii-core-primitivesiii-error-handling本技能适用于查询各语言专属的SDK细节。通用模型相关内容请使用,异常处理相关内容请使用。
iii-core-primitivesiii-error-handlingInstall
安装
bash
undefinedbash
undefinedTypeScript / Node.js
TypeScript / Node.js
npm install iii-sdk
npm install iii-sdk
Browser apps
浏览器应用
npm install iii-browser-sdk
npm install iii-browser-sdk
Python
Python
pip install iii-sdk
pip install iii-sdk
Rust
Rust
cargo add iii-sdk
undefinedcargo add iii-sdk
undefinedChoose the SDK
选择SDK
| SDK | Package | Best for | Important caveat |
|---|---|---|---|
| Node.js | | Server-side TypeScript/JavaScript workers | Supports custom headers, Logger, OpenTelemetry, HTTP-invoked functions |
| Browser | | Web apps and interactive UI callbacks | Connect through an RBAC-protected listener; keep secrets server-side |
| Python | | Sync or async Python workers | Use |
| Rust | | High-performance tokio workers | Handler error type should map into |
| SDK | 包名 | 最适用场景 | 重要注意事项 |
|---|---|---|---|
| Node.js | | 服务端TypeScript/JavaScript Worker | 支持自定义请求头、Logger、OpenTelemetry、HTTP触发的函数 |
| Browser | | Web应用与交互式UI回调 | 通过RBAC保护的监听器连接;敏感信息需保留在服务端 |
| Python | | 同步或异步Python Worker | 在异步处理器内使用 |
| Rust | | 高性能tokio Worker | 处理器错误类型需映射为 |
Common API Map
通用API映射
| Capability | Node | Python | Rust |
|---|---|---|---|
| Connect worker | | | |
| Register local function | | | |
| Register trigger | | | |
| Invoke function | | | |
| Durable enqueue | | | |
| Channels | | | |
| 功能 | Node | Python | Rust |
|---|---|---|---|
| 连接Worker | | | |
| 注册本地函数 | | | |
| 注册触发器 | | | |
| 调用函数 | | | |
| 持久化入队 | | | |
| 通道 | | | |
Node.js
Node.js
typescript
import { Logger, registerWorker } from "iii-sdk";
const iii = registerWorker("ws://localhost:49134", {
workerName: "node-worker",
invocationTimeoutMs: 30000,
});
iii.registerFunction("users::lookup", async (input) => {
new Logger().info("looking up user", { userId: input.userId });
return { userId: input.userId, name: "Ada" };
});Node supports custom WebSocket headers, , OpenTelemetry options, HTTP-invoked function
registration, trigger metadata, channels, and custom trigger types.
Loggertypescript
import { Logger, registerWorker } from "iii-sdk";
const iii = registerWorker("ws://localhost:49134", {
workerName: "node-worker",
invocationTimeoutMs: 30000,
});
iii.registerFunction("users::lookup", async (input) => {
new Logger().info("looking up user", { userId: input.userId });
return { userId: input.userId, name: "Ada" };
});Node.js支持自定义WebSocket请求头、、OpenTelemetry选项、HTTP触发函数注册、触发器元数据、通道以及自定义触发器类型。
LoggerBrowser
浏览器
typescript
import { registerWorker, TriggerAction } from "iii-browser-sdk";
const iii = registerWorker("wss://api.example.com/worker?token=session-token");
const result = await iii.trigger({
function_id: "backend::get-user",
payload: { userId: "123" },
});
await iii.trigger({
function_id: "analytics::track",
payload: { event: "page_view" },
action: TriggerAction.Void(),
});Do not expose the private engine worker port to untrusted browsers. Browser workers cannot send
custom WebSocket headers and must not hold backend secrets.
typescript
import { registerWorker, TriggerAction } from "iii-browser-sdk";
const iii = registerWorker("wss://api.example.com/worker?token=session-token");
const result = await iii.trigger({
function_id: "backend::get-user",
payload: { userId: "123" },
});
await iii.trigger({
function_id: "analytics::track",
payload: { event: "page_view" },
action: TriggerAction.Void(),
});请勿向不可信浏览器暴露私有引擎Worker端口。浏览器Worker无法发送自定义WebSocket请求头,且不得存储后端敏感信息。
Python
Python
python
from iii import InitOptions, Logger, register_worker
iii = register_worker(
address="ws://localhost:49134",
options=InitOptions(worker_name="python-worker"),
)
def lookup_user(data):
Logger().info("looking up user", {"userId": data["userId"]})
return {"userId": data["userId"], "name": "Ada"}
iii.register_function("users::lookup", lookup_user)Python handlers may be sync or async. Use inside async handlers,
and in sync contexts. uses camelCase .
await iii.trigger_async(request)iii.trigger(request)ApiResponsestatusCodepython
from iii import InitOptions, Logger, register_worker
iii = register_worker(
address="ws://localhost:49134",
options=InitOptions(worker_name="python-worker"),
)
def lookup_user(data):
Logger().info("looking up user", {"userId": data["userId"]})
return {"userId": data["userId"], "name": "Ada"}
iii.register_function("users::lookup", lookup_user)Python处理器支持同步或异步模式。异步处理器内请使用,同步上下文则使用。采用小驼峰命名的。
await iii.trigger_async(request)iii.trigger(request)ApiResponsestatusCodeRust
Rust
rust
use iii_sdk::{register_worker, InitOptions, RegisterFunction};
use serde_json::json;
let iii = register_worker("ws://127.0.0.1:49134", InitOptions::default());
iii.register_function(
RegisterFunction::new("users::lookup", |input: serde_json::Value| {
Ok(json!({ "userId": input["userId"], "name": "Ada" }))
}).description("Look up a user"),
)?;Rust supports typed handlers and schema extraction when input/output types derive
. Add the feature when using OpenTelemetry helpers.
schemars::JsonSchemaotelrust
use iii_sdk::{register_worker, InitOptions, RegisterFunction};
use serde_json::json;
let iii = register_worker("ws://127.0.0.1:49134", InitOptions::default());
iii.register_function(
RegisterFunction::new("users::lookup", |input: serde_json::Value| {
Ok(json!({ "userId": input["userId"], "name": "Ada" }))
}).description("Look up a user"),
)?;当输入/输出类型派生自时,Rust支持类型化处理器和Schema提取。使用OpenTelemetry工具时请添加特性。
schemars::JsonSchemaotelChannels
通道
- Use channels for binary data, large payloads, or streaming transfer between workers.
- Pass or
readerRefthrough a function payload.writerRef - Reconstruct readers/writers from refs in consumers when the SDK requires it.
- 通道适用于Worker间的二进制数据、大负载或流式传输场景。
- 通过函数负载传递或
readerRef。writerRef - 当SDK要求时,在消费者端通过引用重构读取器/写入器。
When to Use
使用场景
- Use this skill for package names, SDK exports, initialization options, browser security constraints, channel API details, and language-specific syntax.
- Use this when a task asks for Python or Rust examples and the issue is SDK syntax rather than iii architecture.
- 本技能适用于查询包名、SDK导出内容、初始化选项、浏览器安全约束、通道API细节以及各语言专属语法。
- 当任务需要Python或Rust示例,且问题聚焦于SDK语法而非iii架构时,可使用本技能。
Boundaries
边界说明
- For the common Function/Trigger/Worker model, built-in trigger schemas, custom triggers, and
invocation mode decisions, use .
iii-core-primitives - For deployment config, queue adapter policy, worker manager, RBAC listeners, and ports, use
.
iii-engine-config - For retryability and exception classes, use .
iii-error-handling
- 通用函数/触发器/Worker模型、内置触发器Schema、自定义触发器以及调用模式决策相关内容,请使用。
iii-core-primitives - 部署配置、队列适配器策略、Worker管理器、RBAC监听器以及端口相关内容,请使用。
iii-engine-config - 重试机制与异常类相关内容,请使用。
iii-error-handling