Skip to content
Back to skills

Sdk Reference

ASecurity

{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */} <Note> This page is a hand-authored snapshot of the planned public surface. The final reference will be generated from the SDK source. The Browser SDK is a standalone implementation alongside the Node SDK, not a build of it. </Note>

  • 18,821 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 3, 2026
developmenttypescriptbashnodeapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 11 files and shows the line behind each finding

Scanned June 3, 2026

npx -y skills add iii-hq/iii --skill sdk-reference --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sdk Reference?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sdk Reference
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iii-hq-sdk-reference/badge)](https://www.skillsdirectory.com/skills/iii-hq-sdk-reference)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!-- generated by iii-skill-render. DO NOT EDIT (changes here are overwritten on the next render). Edit docs/0-12-0/sdk-reference/browser-sdk.mdx. -->

# Browser SDK


{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */}

<Note>
  This page is a hand-authored snapshot of the planned public surface. The final reference will be
  generated from the SDK source. The Browser SDK is a standalone implementation alongside the
  Node SDK, not a build of it.
</Note>

## Installation

```bash
npm install iii-browser-sdk
```

## Common methods

### `registerWorker`

Connect a browser tab to a running iii engine and return its handle.

```typescript
function registerWorker(address: string, options?: InitOptions): ISdk;
```

`address` is the engine's SDK WebSocket URL. The returned `ISdk` carries every method below.

### `registerFunction`

Register a callable function in this tab.

```typescript
worker.registerFunction(
  functionId: string,
  handler: RemoteFunctionHandler,
  options?: RegisterFunctionOptions,
): FunctionRef;
```

### `registerTrigger`

Bind a registered function to a configured trigger instance.

```typescript
worker.registerTrigger(trigger: RegisterTriggerInput): Trigger;
```

Drop the trigger with `Trigger.unregister()` on the returned handle. There is no top-level
`unregisterTrigger`.

### `registerTriggerType`

Declare a new trigger type that this tab advertises.

```typescript
worker.registerTriggerType<TConfig>(
  triggerType: RegisterTriggerTypeInput,
  handler: TriggerHandler<TConfig>,
): TriggerTypeRef<TConfig>;
```

### `unregisterTriggerType`

Remove a previously registered trigger type.

```typescript
worker.unregisterTriggerType(triggerType: RegisterTriggerTypeInput): void;
```

### `trigger`

Invoke a registered function.

```typescript
worker.trigger<TInput, TOutput>(request: TriggerRequest<TInput>): Promise<TOutput>;
```

Resolves with the function's return value for synchronous calls, with an `EnqueueResult` for
`TriggerAction.Enqueue` actions, and with `undefined` for `TriggerAction.Void`.

### `shutdown`

Disconnect from the engine and release resources.

```typescript
worker.shutdown(): Promise<void>;
```

## Trigger actions

`TriggerAction` is a runtime const that produces the value passed to `trigger`'s `action` field.

```typescript
TriggerAction.Void();                       // fire-and-forget
TriggerAction.Enqueue({ queue: "math" });   // route through iii-queue
```

The underlying type is `{ type: "enqueue"; queue: string } | { type: "void" }`.

## Channels

`ChannelReader` and `ChannelWriter` are runtime classes wrapping the engine's stream WebSockets
using the browser's native WebSocket API. `StreamChannelRef` is the type passed between SDK calls
to identify a channel:

```typescript
type StreamChannelRef = {
  channel_id: string;
  access_key: string;
  direction: "read" | "write";
};
```

`ChannelReader` exposes `onMessage`, `onBinary`, `readAll`, and `close`. `ChannelWriter` exposes
`sendMessage(msg: string)`, `sendBinary(data: Uint8Array)`, and `close()`.

## Connection state

`IIIConnectionState` is the literal-type alias `"disconnected" | "connecting" | "connected" |
"reconnecting" | "failed"`, exported from the package root.

## Info types

- `FunctionInfo`. `function_id`, optional `description`, optional `request_format` /
  `response_format`, optional `metadata`.
- `TriggerInfo`. `id`, `trigger_type`, `function_id`, optional `config` / `metadata`.

`WorkerInfo` and `WorkerMetadata` are not part of this SDK. Use the engine introspection
functions ([`engine::workers::list`](./engine-sdk#engine-discovery-functions)) when a
browser client needs metadata about other workers.

## `MessageType`

A runtime enum naming every wire frame the SDK exchanges with the engine. Rarely needed by
callers.

## Surfaces not in this SDK

- **`Logger`.** The Browser SDK does not ship a structured logger; use the browser's built-in
  `console` and rely on the OpenTelemetry surfaces provided by the
  iii-observability worker for export.
- **Error class.** There is no `IIIError` / `IIIInvocationError` class. Failures are surfaced as
  rejected promises carrying `Error` instances; inspect the message and any attached `code` for
  the engine error code.

Files in this skill

  • browser-sdk.mdx4.2 KB
  • browser-sdk.mdx.skill.md4.2 KB
  • engine-sdk.mdx10.5 KB
  • engine-sdk.mdx.skill.md10.5 KB
  • node-sdk.mdx5.4 KB
  • node-sdk.mdx.skill.md5.5 KB
  • python-sdk.mdx5.7 KB
  • python-sdk.mdx.skill.md5.8 KB
  • rust-sdk.mdx5.5 KB
  • rust-sdk.mdx.skill.md5.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.