Skip to main content

What changed

The flat root export surface of the three SDKs is reorganized into named submodules. This slice covers four groups. The old root import paths are removed in 0.20.0, so upgrading requires moving these imports to their new paths.
GroupNode subpathPython submoduleRust module
errorsiii-sdk/errorsiii.errorsiii_sdk::errors
channeliii-sdk/channeliii.channeliii_sdk::channel
triggeriii-sdk/triggeriii.triggeriii_sdk::trigger
runtimeiii-sdk/runtimeiii.runtimeiii_sdk::runtime

Errors renamed

The III prefix is dropped from the invocation error types.
SDKBeforeAfterCanonical path
NodeIIIInvocationErrorInvocationErroriii-sdk/errors
NodeIIIInvocationErrorInitInvocationErrorInitiii-sdk/errors
PythonIIIInvocationErrorInvocationErroriii.errors
RustIIIErrorErroriii_sdk::errors::Error
Behavior is unchanged. In Node, the thrown error’s name is now InvocationError. The old names are removed from the package root in 0.20.0; import the new names from their canonical paths.

Submodule contents

GroupSymbols
channelChannelReader, ChannelWriter, StreamChannelRef, Channel
triggerTrigger, TriggerConfig, TriggerHandler (Rust also: IIITrigger)
runtimeFunctionRef, TriggerTypeRef (Rust also: IIIConnectionState, WorkerMetadata, FunctionInfo, TriggerInfo, WorkerInfo)
The set per language matches each SDK’s existing surface. Symbols absent from a language are not added in this slice; cross language parity is tracked separately.

Migration

Update imports to the new paths. The old root paths are removed in 0.20.0, so this move is required. Node:
// Before
import { IIIInvocationError, ChannelReader, FunctionRef } from 'iii-sdk'
// After
import { InvocationError } from 'iii-sdk/errors'
import { ChannelReader } from 'iii-sdk/channel'
import type { FunctionRef } from 'iii-sdk/runtime'
Python:
# Before
from iii import IIIInvocationError, ChannelReader, FunctionRef
# After
from iii.errors import InvocationError
from iii.channel import ChannelReader
from iii.runtime import FunctionRef
Rust:
// Before
use iii_sdk::{ChannelReader, FunctionRef, IIIError};
// After
use iii_sdk::channel::ChannelReader;
use iii_sdk::errors::Error;
use iii_sdk::runtime::FunctionRef;

Why

The SDK root re-exported dozens of symbols flatly. Grouping them into errors, channel, trigger, and runtime submodules makes the surface navigable and prepares for extracting standalone libraries later. 0.20.0 is a clean break: the old root paths are removed rather than kept as aliases.