Skip to content

refactor(sdk)!: cross-language parity, @iii-dev/helpers, and submodule reorg#1848

Open
guibeira wants to merge 30 commits into
mainfrom
sdk-refactor
Open

refactor(sdk)!: cross-language parity, @iii-dev/helpers, and submodule reorg#1848
guibeira wants to merge 30 commits into
mainfrom
sdk-refactor

Conversation

@guibeira

@guibeira guibeira commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

What

A large, intentionally breaking reorganization of the three SDKs (Node, Python, Rust) to give them a consistent, well-factored public surface. Upgrading from 0.19.x to 0.20.x requires code changes — see Breaking changes below. It lands the staged refactor plus a final clean break:

Why

The root SDK had grown a wide, inconsistent surface: names diverged across languages, low-level/internal types sat next to the worker API, and several types were duplicated. This refactor gives a single source of truth for the shared contract (@iii-dev/helpers), groups the rest of the surface by concern, and aligns the three SDKs so the same import means the same thing everywhere.

New import surface

Shared types move into the @iii-dev/helpers package, by submodule:

Submodule Import (Node / Python / Rust) Contents
queue @iii-dev/helpers/queue / iii_helpers.queue / iii_helpers::queue EnqueueResult (also re-exported from the SDK root)
http .../http HttpAuthConfig, HttpInvocationConfig, HttpMethod, the http helper, buffered HttpRequest/HttpResponse
worker-connection-manager .../worker-connection-manager AuthInput, AuthResult, the six On{Function,Trigger,TriggerType}Registration{Input,Result}
stream .../stream stream trigger configs, events, IO inputs, auth/results, and the update operations (UpdateOp, UpdateOpError, MergePath, Update*)
observability .../observability Logger, initOtel/init_otel, withSpan/with_span, executeTracedRequest/execute_traced_request, and the rest of the observability API

The rest of the root surface is grouped into in-package submodules (iii-sdk/<name> / iii.<name> / iii_sdk::<name>): runtime, channel, trigger, errors, engine, protocol, internal, and (Python) utils.

Breaking changes / migration

This is a clean break: there are no deprecated re-export or alias shims for the renamed/relocated SDK symbols. 0.19.x imports of these symbols will not resolve on 0.20.x — update to the canonical path / new name.

Moved symbols are removed from the SDK root. Import them from their submodule or from @iii-dev/helpers:

- import { HttpAuthConfig, RegisterTriggerInput } from 'iii-sdk'
+ import { HttpAuthConfig } from '@iii-dev/helpers/http'
+ import { RegisterTriggerInput } from 'iii-sdk/protocol'
- from iii import HttpInvocationConfig, AuthInput, TriggerRequest
+ from iii_helpers.http import HttpInvocationConfig
+ from iii_helpers.worker_connection_manager import AuthInput
+ from iii.protocol import TriggerRequest
- use iii_sdk::{HttpAuthConfig, StreamTriggerConfig, TriggerRequest};
+ use iii_helpers::http::HttpAuthConfig;
+ use iii_helpers::stream::StreamTriggerConfig;
+ use iii_sdk::protocol::TriggerRequest;

Relocated to in-package submodules and removed from the root in all three SDKs (no shim): the channel, trigger, and runtime type groups. Import from iii-sdk/channel / iii.channel / iii_sdk::channel (and …/trigger, …/runtime).

Cross-language renames — the old names are removed (no deprecated alias):

  • Main client/handle aligned to IIIClient (was Node ISdk, Rust III).
  • Error types drop the III prefix and move to the errors submodule: IIIInvocationErrorInvocationError, Rust IIIErrorError.
  • Telemetry config aligned to TelemetryOptions (was Rust WorkerTelemetryMeta).
  • Buffered HTTP request/response renamed ApiRequest/ApiResponseHttpRequest/HttpResponse; streaming keeps StreamRequest/StreamResponse. Rust StreamCallRequest/StreamJoinLeaveCallRequestStreamChangeEvent/StreamJoinLeaveEvent.
  • Stream helper type names aligned across the three SDKs: the change-event detail is StreamChangeEventDetail, the result types are StreamSetResult/StreamUpdateResult/StreamDeleteResult, and MergePath is a named export everywhere.
  • Removed entirely: UpdateBuilder, the Rust Value re-export, IIIForbiddenError/IIITimeoutError (Python), TriggerActionType alias, the Rust FieldPath path helper, and the root Logger/OTel re-exports.

Observability (deprecated, not yet removed)

The observability surface moves into @iii-dev/helpers/observability (#1874). The standalone packages — @iii-dev/observability (npm), iii-observability (PyPI), iii-observability (crate) — remain published as deprecated shims that re-export the helpers submodule and emit a deprecation signal, so observability consumers are not broken in 0.20. Their removal is deferred to a later release. Prefer @iii-dev/helpers/observability / iii_helpers.observability / iii_helpers::observability for new code.

The engine builtin worker named iii-observability is unrelated and unchanged.

What stays at the SDK root

Symbols that reference core-only types stay at the root in all three languages (moving them would create a helpers → core dependency cycle): MiddlewareFunctionInput, IStream, StreamRequest/StreamResponse, TriggerActionEnqueue, plus the worker entry points (register_worker, InitOptions, TriggerAction, builders). Additionally, EnqueueResult (all SDKs) and TriggerActionVoid (Python) are re-exported at the root as companions to TriggerAction even though their canonical home is the queue/trigger submodule.

Notes

  • @iii-dev/helpers publishing is wired into the tag-driven release pipeline (helpers-npm/helpers-py/helpers-rust); nothing publishes until the next iii/vX.Y.Z tag.
  • iii-helpers has no dependency on the root SDK in any language (no cycle). The root SDK and the engine import moved types from the submodules internally where their own code needs them.
  • The engine crate and the other workspace crates (crates/iii-worker, console) were repointed to the new submodule/helpers paths and to the renamed symbols.
  • Verified across all three SDKs and the engine: Node build + tsc --noEmit; Python pytest + mypy + ruff; Rust build + lib/doc tests (including compile_fail guards asserting the moved/renamed symbols are unreachable from the crate root) + clippy -D warnings + fmt; cargo build --workspace + engine test compile.
  • Reference docs: docs/next/sdk-reference/helpers-lib.mdx and the per-language *-sdk.mdx pages; the 0.20.0 changelog entries under docs/changelog/0-20-0/.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 499 files, which is 349 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: deec619b-8569-42ba-831d-6063a6bded0e

📥 Commits

Reviewing files that changed from the base of the PR and between 2375580 and 02c4ed8.

⛔ Files ignored due to path filters (7)
  • Cargo.lock is excluded by !**/*.lock
  • docs/next/tutorials/linkly/console-traces.png is excluded by !**/*.png
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • sdk/packages/python/helpers/uv.lock is excluded by !**/*.lock
  • sdk/packages/python/iii-example/uv.lock is excluded by !**/*.lock
  • sdk/packages/python/iii/uv.lock is excluded by !**/*.lock
  • sdk/packages/python/observability/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (499)
  • .github/scripts/bump_manifests.py
  • .github/scripts/test_bump_manifests.py
  • .github/workflows/alpha-release.yml
  • .github/workflows/ci.yml
  • .github/workflows/create-tag.yml
  • .github/workflows/generate-api-docs.yml
  • .github/workflows/release-iii.yml
  • .gitignore
  • .skill-check.yaml
  • Cargo.toml
  • console/packages/console-rust/Cargo.toml
  • console/packages/console-rust/src/bridge/error.rs
  • console/packages/console-rust/src/bridge/functions.rs
  • console/packages/console-rust/src/bridge/triggers.rs
  • console/packages/console-rust/src/main.rs
  • crates/iii-worker/Cargo.toml
  • crates/iii-worker/src/cli/sandbox.rs
  • crates/iii-worker/src/cli/worker_manager_daemon.rs
  • crates/iii-worker/src/cli/worker_trigger.rs
  • crates/iii-worker/src/sandbox_daemon/errors.rs
  • crates/iii-worker/src/sandbox_daemon/fs/chmod.rs
  • crates/iii-worker/src/sandbox_daemon/fs/grep.rs
  • crates/iii-worker/src/sandbox_daemon/fs/ls.rs
  • crates/iii-worker/src/sandbox_daemon/fs/mkdir.rs
  • crates/iii-worker/src/sandbox_daemon/fs/mod.rs
  • crates/iii-worker/src/sandbox_daemon/fs/mv.rs
  • crates/iii-worker/src/sandbox_daemon/fs/read.rs
  • crates/iii-worker/src/sandbox_daemon/fs/rm.rs
  • crates/iii-worker/src/sandbox_daemon/fs/sed.rs
  • crates/iii-worker/src/sandbox_daemon/fs/stat.rs
  • crates/iii-worker/src/sandbox_daemon/fs/write.rs
  • crates/iii-worker/src/sandbox_daemon/mod.rs
  • crates/iii-worker/src/sandbox_daemon/run.rs
  • crates/iii-worker/tests/fixtures/templates/worker-bare/src/main.rs
  • crates/iii-worker/tests/sandbox_fs_read_buffer_boundary.rs
  • docs/0-18-0/creating-workers/channels.mdx.skill.md
  • docs/0-18-0/creating-workers/functions.mdx.skill.md
  • docs/0-18-0/creating-workers/index.mdx.skill.md
  • docs/0-18-0/creating-workers/triggers.mdx.skill.md
  • docs/0-18-0/creating-workers/workers-registry.mdx.skill.md
  • docs/0-18-0/creating-workers/workers.mdx.skill.md
  • docs/0-18-0/how-to/build-a-realtime-todo-app.mdx.skill.md
  • docs/0-18-0/how-to/schedule-cron-task.mdx.skill.md
  • docs/0-18-0/how-to/use-trigger-conditions.mdx.skill.md
  • docs/0-18-0/index.mdx.skill.md
  • docs/0-18-0/install.mdx.skill.md
  • docs/0-18-0/patterns/adapter-pattern.mdx.skill.md
  • docs/0-18-0/patterns/reactive-state-pattern.mdx.skill.md
  • docs/0-18-0/quickstart.mdx.skill.md
  • docs/0-18-0/sdk-reference/browser-sdk.mdx.skill.md
  • docs/0-18-0/sdk-reference/engine-sdk.mdx.skill.md
  • docs/0-18-0/sdk-reference/node-sdk.mdx.skill.md
  • docs/0-18-0/sdk-reference/python-sdk.mdx.skill.md
  • docs/0-18-0/sdk-reference/rust-sdk.mdx.skill.md
  • docs/0-18-0/tutorials/build-an-agent/define-tools.mdx.skill.md
  • docs/0-18-0/tutorials/build-an-agent/memory-and-state.mdx.skill.md
  • docs/0-18-0/tutorials/build-an-agent/orchestration-loop.mdx.skill.md
  • docs/0-18-0/tutorials/build-an-agent/overview.mdx.skill.md
  • docs/0-18-0/tutorials/incremental-adoption/migrate-persistence.mdx.skill.md
  • docs/0-18-0/tutorials/incremental-adoption/offload-to-queue.mdx.skill.md
  • docs/0-18-0/tutorials/incremental-adoption/overview.mdx.skill.md
  • docs/0-18-0/tutorials/incremental-adoption/wrap-existing-api.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/channels.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/durable-execution.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/foundations.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/frontend.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/observability.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/overview.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/persistence.mdx.skill.md
  • docs/0-18-0/tutorials/linkly/streaming.mdx.skill.md
  • docs/0-18-0/tutorials/reactive-crud/crud-endpoints.mdx.skill.md
  • docs/0-18-0/tutorials/reactive-crud/model-and-store.mdx.skill.md
  • docs/0-18-0/tutorials/reactive-crud/overview.mdx.skill.md
  • docs/0-18-0/tutorials/reactive-crud/realtime-subscriptions.mdx.skill.md
  • docs/0-18-0/understanding-iii/channels.mdx.skill.md
  • docs/0-18-0/understanding-iii/engine.mdx.skill.md
  • docs/0-18-0/understanding-iii/index.mdx.skill.md
  • docs/0-18-0/using-iii/cli.mdx.skill.md
  • docs/0-18-0/using-iii/console.mdx.skill.md
  • docs/0-18-0/using-iii/deployment.mdx.skill.md
  • docs/0-18-0/using-iii/engine.mdx.skill.md
  • docs/0-18-0/using-iii/functions.mdx.skill.md
  • docs/0-18-0/using-iii/triggers.mdx.skill.md
  • docs/0-18-0/using-iii/workers-registry.mdx.skill.md
  • docs/0-18-0/using-iii/workers.mdx.skill.md
  • docs/changelog/0-20-0/cross-language-parity.mdx
  • docs/changelog/0-20-0/extract-helpers-lib.mdx
  • docs/changelog/0-20-0/observability-into-helpers.mdx
  • docs/changelog/0-20-0/organize-sdk-imports.mdx
  • docs/changelog/0-20-0/submodule-clean-break.mdx
  • docs/changelog/index.mdx
  • docs/cli-reference/index.mdx.skill.md
  • docs/creating-workers/channels.mdx.skill.md
  • docs/creating-workers/functions.mdx.skill.md
  • docs/creating-workers/index.mdx.skill.md
  • docs/creating-workers/triggers.mdx.skill.md
  • docs/creating-workers/worker-manifest.mdx.skill.md
  • docs/creating-workers/workers-registry.mdx.skill.md
  • docs/creating-workers/workers.mdx.skill.md
  • docs/docs.json
  • docs/how-to/build-a-realtime-todo-app.mdx.skill.md
  • docs/how-to/schedule-cron-task.mdx.skill.md
  • docs/how-to/use-trigger-conditions.mdx.skill.md
  • docs/index.mdx.skill.md
  • docs/install.mdx.skill.md
  • docs/next/api-reference/helpers-node.mdx
  • docs/next/api-reference/helpers-node.mdx.skill.md
  • docs/next/api-reference/helpers-python.mdx
  • docs/next/api-reference/helpers-python.mdx.skill.md
  • docs/next/api-reference/helpers-rust.mdx
  • docs/next/api-reference/helpers-rust.mdx.skill.md
  • docs/next/api-reference/sdk-browser.mdx
  • docs/next/api-reference/sdk-browser.mdx.skill.md
  • docs/next/api-reference/sdk-node.mdx
  • docs/next/api-reference/sdk-node.mdx.skill.md
  • docs/next/api-reference/sdk-python.mdx
  • docs/next/api-reference/sdk-python.mdx.skill.md
  • docs/next/api-reference/sdk-rust.mdx
  • docs/next/api-reference/sdk-rust.mdx.skill.md
  • docs/next/creating-workers/channels.mdx
  • docs/next/creating-workers/channels.mdx.skill.md
  • docs/next/creating-workers/functions.mdx
  • docs/next/creating-workers/functions.mdx.skill.md
  • docs/next/creating-workers/http.mdx
  • docs/next/creating-workers/http.mdx.skill.md
  • docs/next/creating-workers/index.mdx
  • docs/next/creating-workers/index.mdx.skill.md
  • docs/next/creating-workers/observability.mdx
  • docs/next/creating-workers/observability.mdx.skill.md
  • docs/next/creating-workers/queues.mdx
  • docs/next/creating-workers/queues.mdx.skill.md
  • docs/next/creating-workers/sandboxes.mdx
  • docs/next/creating-workers/sandboxes.mdx.skill.md
  • docs/next/creating-workers/triggers.mdx
  • docs/next/creating-workers/triggers.mdx.skill.md
  • docs/next/creating-workers/worker-manager.mdx
  • docs/next/creating-workers/worker-manager.mdx.skill.md
  • docs/next/creating-workers/worker-manifest.mdx
  • docs/next/creating-workers/worker-manifest.mdx.skill.md
  • docs/next/creating-workers/workers-registry.mdx.skill.md
  • docs/next/creating-workers/workers.mdx
  • docs/next/creating-workers/workers.mdx.skill.md
  • docs/next/scripts/compare-exports.mts
  • docs/next/scripts/generate-api-docs.mts
  • docs/next/scripts/parsers/parse-griffe.mts
  • docs/next/scripts/parsers/parse-rustdoc.mts
  • docs/next/scripts/parsers/parse-typedoc.mts
  • docs/next/scripts/renderers/components.mts
  • docs/next/scripts/renderers/render-mdx.mts
  • docs/next/scripts/types.mts
  • docs/next/sdk-reference/browser-sdk.mdx
  • docs/next/sdk-reference/browser-sdk.mdx.skill.md
  • docs/next/sdk-reference/node-sdk.mdx
  • docs/next/sdk-reference/node-sdk.mdx.skill.md
  • docs/next/sdk-reference/python-sdk.mdx
  • docs/next/sdk-reference/python-sdk.mdx.skill.md
  • docs/next/sdk-reference/rust-sdk.mdx
  • docs/next/sdk-reference/rust-sdk.mdx.skill.md
  • docs/next/tutorials/linkly/channels.mdx
  • docs/next/tutorials/linkly/channels.mdx.skill.md
  • docs/next/tutorials/linkly/durable-execution.mdx
  • docs/next/tutorials/linkly/durable-execution.mdx.skill.md
  • docs/next/tutorials/linkly/foundations.mdx
  • docs/next/tutorials/linkly/foundations.mdx.skill.md
  • docs/next/tutorials/linkly/frontend.mdx
  • docs/next/tutorials/linkly/frontend.mdx.skill.md
  • docs/next/tutorials/linkly/observability.mdx
  • docs/next/tutorials/linkly/observability.mdx.skill.md
  • docs/next/tutorials/linkly/persistence.mdx
  • docs/next/tutorials/linkly/persistence.mdx.skill.md
  • docs/next/tutorials/linkly/streaming.mdx
  • docs/next/tutorials/linkly/streaming.mdx.skill.md
  • docs/next/upgrading/from-0-19-x.mdx
  • docs/next/upgrading/from-0-19-x.mdx.skill.md
  • docs/next/using-iii/cli.mdx
  • docs/next/using-iii/cli.mdx.skill.md
  • docs/next/using-iii/functions.mdx
  • docs/next/using-iii/functions.mdx.skill.md
  • docs/next/using-iii/triggers.mdx.skill.md
  • docs/next/using-iii/workers.mdx
  • docs/next/using-iii/workers.mdx.skill.md
  • docs/patterns/adapter-pattern.mdx.skill.md
  • docs/patterns/reactive-state-pattern.mdx.skill.md
  • docs/quickstart.mdx.skill.md
  • docs/sdk-reference/browser-sdk.mdx.skill.md
  • docs/sdk-reference/engine-sdk.mdx.skill.md
  • docs/sdk-reference/node-sdk.mdx.skill.md
  • docs/sdk-reference/python-sdk.mdx.skill.md
  • docs/sdk-reference/rust-sdk.mdx.skill.md
  • docs/troubleshooting.mdx.skill.md
  • docs/tutorials/build-an-agent/define-tools.mdx.skill.md
  • docs/tutorials/build-an-agent/memory-and-state.mdx.skill.md
  • docs/tutorials/build-an-agent/orchestration-loop.mdx.skill.md
  • docs/tutorials/build-an-agent/overview.mdx.skill.md
  • docs/tutorials/incremental-adoption/migrate-persistence.mdx.skill.md
  • docs/tutorials/incremental-adoption/offload-to-queue.mdx.skill.md
  • docs/tutorials/incremental-adoption/overview.mdx.skill.md
  • docs/tutorials/incremental-adoption/wrap-existing-api.mdx.skill.md
  • docs/tutorials/linkly/channels.mdx.skill.md
  • docs/tutorials/linkly/durable-execution.mdx.skill.md
  • docs/tutorials/linkly/foundations.mdx.skill.md
  • docs/tutorials/linkly/frontend.mdx.skill.md
  • docs/tutorials/linkly/observability.mdx.skill.md
  • docs/tutorials/linkly/overview.mdx.skill.md
  • docs/tutorials/linkly/persistence.mdx.skill.md
  • docs/tutorials/linkly/streaming.mdx.skill.md
  • docs/tutorials/reactive-crud/crud-endpoints.mdx.skill.md
  • docs/tutorials/reactive-crud/model-and-store.mdx.skill.md
  • docs/tutorials/reactive-crud/overview.mdx.skill.md
  • docs/tutorials/reactive-crud/realtime-subscriptions.mdx.skill.md
  • docs/understanding-iii/channels.mdx.skill.md
  • docs/understanding-iii/engine.mdx.skill.md
  • docs/understanding-iii/index.mdx.skill.md
  • docs/using-iii/cli.mdx.skill.md
  • docs/using-iii/console.mdx.skill.md
  • docs/using-iii/deployment.mdx.skill.md
  • docs/using-iii/engine.mdx.skill.md
  • docs/using-iii/functions.mdx.skill.md
  • docs/using-iii/triggers.mdx.skill.md
  • docs/using-iii/workers-registry.mdx.skill.md
  • docs/using-iii/workers.mdx.skill.md
  • engine/Cargo.toml
  • engine/benches/kv_store_bench.rs
  • engine/benches/state_adapter_bench.rs
  • engine/src/builtins/kv.rs
  • engine/src/cli_trigger/exec.rs
  • engine/src/cli_trigger/help.rs
  • engine/src/main.rs
  • engine/src/update_ops.rs
  • engine/src/workers/bridge_client/mod.rs
  • engine/src/workers/configuration/adapters/bridge.rs
  • engine/src/workers/engine_fn/skills/SKILL.md
  • engine/src/workers/observability/otel.rs
  • engine/src/workers/queue/adapters/bridge.rs
  • engine/src/workers/state/adapters/bridge.rs
  • engine/src/workers/state/adapters/kv_store.rs
  • engine/src/workers/state/adapters/mod.rs
  • engine/src/workers/state/adapters/redis_adapter.rs
  • engine/src/workers/state/state.rs
  • engine/src/workers/state/structs.rs
  • engine/src/workers/state/trigger.rs
  • engine/src/workers/stream/adapters/bridge.rs
  • engine/src/workers/stream/adapters/kv_store.rs
  • engine/src/workers/stream/adapters/mod.rs
  • engine/src/workers/stream/adapters/redis_adapter.rs
  • engine/src/workers/stream/socket.rs
  • engine/src/workers/stream/stream.rs
  • engine/src/workers/stream/structs.rs
  • engine/src/workers/worker/skills/SKILL.md
  • engine/tests/state_stream_update_e2e.rs
  • engine/tests/state_stream_update_redis_e2e.rs
  • engine/tests/worker_trigger_e2e.rs
  • pnpm-workspace.yaml
  • sdk/packages/node/helpers/README.md
  • sdk/packages/node/helpers/package.json
  • sdk/packages/node/helpers/src/http/index.ts
  • sdk/packages/node/helpers/src/observability/http-instrumentation.test.ts
  • sdk/packages/node/helpers/src/observability/http-instrumentation.ts
  • sdk/packages/node/helpers/src/observability/index.ts
  • sdk/packages/node/helpers/src/observability/internal.ts
  • sdk/packages/node/helpers/src/observability/logger.test.ts
  • sdk/packages/node/helpers/src/observability/logger.ts
  • sdk/packages/node/helpers/src/observability/otel-worker-gauges.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/baggage-span-processor.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/connection.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/context.test.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/context.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/exporters.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/fetch-instrumentation.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/index.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/log-exporter.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/metrics-exporter.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/payload.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/span-exporter.test.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/span-exporter.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/span-ops.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/types.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/utils.test.ts
  • sdk/packages/node/helpers/src/observability/telemetry-system/utils.ts
  • sdk/packages/node/helpers/src/observability/types.ts
  • sdk/packages/node/helpers/src/observability/utils.ts
  • sdk/packages/node/helpers/src/observability/worker-metrics.ts
  • sdk/packages/node/helpers/src/queue/index.ts
  • sdk/packages/node/helpers/src/stream/index.ts
  • sdk/packages/node/helpers/src/worker-connection-manager/index.ts
  • sdk/packages/node/helpers/tsconfig.json
  • sdk/packages/node/helpers/tsdown.config.ts
  • sdk/packages/node/helpers/typedoc.json
  • sdk/packages/node/helpers/vitest.config.ts
  • sdk/packages/node/iii-browser/src/iii-types.ts
  • sdk/packages/node/iii-browser/src/iii.ts
  • sdk/packages/node/iii-browser/src/stream.ts
  • sdk/packages/node/iii-browser/src/types.ts
  • sdk/packages/node/iii-example/package.json
  • sdk/packages/node/iii-example/src/hooks.ts
  • sdk/packages/node/iii-example/src/queue-basic.ts
  • sdk/packages/node/iii-example/src/queue-dlq.ts
  • sdk/packages/node/iii-example/src/queue-financial.ts
  • sdk/packages/node/iii-example/src/trigger-types.ts
  • sdk/packages/node/iii/package.json
  • sdk/packages/node/iii/src/channel.ts
  • sdk/packages/node/iii/src/engine.ts
  • sdk/packages/node/iii/src/errors.ts
  • sdk/packages/node/iii/src/helpers.ts
  • sdk/packages/node/iii/src/iii-types.ts
  • sdk/packages/node/iii/src/iii.ts
  • sdk/packages/node/iii/src/index.ts
  • sdk/packages/node/iii/src/internal.ts
  • sdk/packages/node/iii/src/protocol.ts
  • sdk/packages/node/iii/src/runtime.ts
  • sdk/packages/node/iii/src/state.ts
  • sdk/packages/node/iii/src/stream.ts
  • sdk/packages/node/iii/src/trigger.ts
  • sdk/packages/node/iii/src/triggers.ts
  • sdk/packages/node/iii/src/types.ts
  • sdk/packages/node/iii/src/utils.ts
  • sdk/packages/node/iii/tests/api-triggers.test.ts
  • sdk/packages/node/iii/tests/baggage-span-processor.test.ts
  • sdk/packages/node/iii/tests/bridge-stream.test.ts
  • sdk/packages/node/iii/tests/bridge-utils.ts
  • sdk/packages/node/iii/tests/data-channels.test.ts
  • sdk/packages/node/iii/tests/errors.test.ts
  • sdk/packages/node/iii/tests/exports.test.ts
  • sdk/packages/node/iii/tests/fetch-instrumentation.test.ts
  • sdk/packages/node/iii/tests/healthcheck.test.ts
  • sdk/packages/node/iii/tests/helpers.test.ts
  • sdk/packages/node/iii/tests/logger-runtime.test.ts
  • sdk/packages/node/iii/tests/logger.test.ts
  • sdk/packages/node/iii/tests/middleware.test.ts
  • sdk/packages/node/iii/tests/otel-defaults.test.ts
  • sdk/packages/node/iii/tests/otel-worker-gauges.test.ts
  • sdk/packages/node/iii/tests/payload.test.ts
  • sdk/packages/node/iii/tests/rbac-workers.test.ts
  • sdk/packages/node/iii/tests/service-triggers.test.ts
  • sdk/packages/node/iii/tests/span-ops.test.ts
  • sdk/packages/node/iii/tests/state.test.ts
  • sdk/packages/node/iii/tests/stream.test.ts
  • sdk/packages/node/iii/tests/trigger-registration-error.test.ts
  • sdk/packages/node/iii/tests/trigger-type-lifecycle.test.ts
  • sdk/packages/node/iii/tests/utils.ts
  • sdk/packages/node/iii/tests/worker-metrics.test.ts
  • sdk/packages/node/iii/tsdown.config.ts
  • sdk/packages/node/iii/typedoc.json
  • sdk/packages/node/iii/vitest.config.ts
  • sdk/packages/node/observability/README.md
  • sdk/packages/node/observability/package.json
  • sdk/packages/node/observability/src/index.ts
  • sdk/packages/node/observability/src/internal.ts
  • sdk/packages/python/helpers/README.md
  • sdk/packages/python/helpers/pyproject.toml
  • sdk/packages/python/helpers/src/iii_helpers/__init__.py
  • sdk/packages/python/helpers/src/iii_helpers/http/__init__.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/__init__.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/baggage_span_processor.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/http_instrumentation.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/logger.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/payload.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/reconnection.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/span_ops.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/telemetry.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/telemetry_exporters.py
  • sdk/packages/python/helpers/src/iii_helpers/observability/telemetry_types.py
  • sdk/packages/python/helpers/src/iii_helpers/py.typed
  • sdk/packages/python/helpers/src/iii_helpers/queue/__init__.py
  • sdk/packages/python/helpers/src/iii_helpers/stream/__init__.py
  • sdk/packages/python/helpers/src/iii_helpers/worker_connection_manager/__init__.py
  • sdk/packages/python/helpers/tests/__init__.py
  • sdk/packages/python/helpers/tests/test_observability_http_instrumentation.py
  • sdk/packages/python/helpers/tests/test_observability_telemetry.py
  • sdk/packages/python/iii-example/pyproject.toml
  • sdk/packages/python/iii-example/src/hooks.py
  • sdk/packages/python/iii-example/src/main.py
  • sdk/packages/python/iii-example/src/stream.py
  • sdk/packages/python/iii-example/src/trigger_types.py
  • sdk/packages/python/iii/pyproject.toml
  • sdk/packages/python/iii/src/iii/__init__.py
  • sdk/packages/python/iii/src/iii/channel.py
  • sdk/packages/python/iii/src/iii/engine.py
  • sdk/packages/python/iii/src/iii/errors.py
  • sdk/packages/python/iii/src/iii/format_utils.py
  • sdk/packages/python/iii/src/iii/helpers.py
  • sdk/packages/python/iii/src/iii/iii.py
  • sdk/packages/python/iii/src/iii/iii_constants.py
  • sdk/packages/python/iii/src/iii/iii_types.py
  • sdk/packages/python/iii/src/iii/internal.py
  • sdk/packages/python/iii/src/iii/protocol.py
  • sdk/packages/python/iii/src/iii/runtime.py
  • sdk/packages/python/iii/src/iii/state.py
  • sdk/packages/python/iii/src/iii/stream.py
  • sdk/packages/python/iii/src/iii/trigger.py
  • sdk/packages/python/iii/src/iii/triggers.py
  • sdk/packages/python/iii/src/iii/types.py
  • sdk/packages/python/iii/src/iii/utils.py
  • sdk/packages/python/iii/tests/test_api_triggers.py
  • sdk/packages/python/iii/tests/test_baggage_span_processor.py
  • sdk/packages/python/iii/tests/test_channel_submodule.py
  • sdk/packages/python/iii/tests/test_context_propagation.py
  • sdk/packages/python/iii/tests/test_engine_constants.py
  • sdk/packages/python/iii/tests/test_errors.py
  • sdk/packages/python/iii/tests/test_helpers.py
  • sdk/packages/python/iii/tests/test_hold_process.py
  • sdk/packages/python/iii/tests/test_http_external_functions_integration.py
  • sdk/packages/python/iii/tests/test_iii_registration_dedup.py
  • sdk/packages/python/iii/tests/test_init_api.py
  • sdk/packages/python/iii/tests/test_logger_function_ids.py
  • sdk/packages/python/iii/tests/test_logger_otel.py
  • sdk/packages/python/iii/tests/test_payload.py
  • sdk/packages/python/iii/tests/test_rbac_workers.py
  • sdk/packages/python/iii/tests/test_register_function_args.py
  • sdk/packages/python/iii/tests/test_runtime_submodule.py
  • sdk/packages/python/iii/tests/test_span_ops.py
  • sdk/packages/python/iii/tests/test_stream_models.py
  • sdk/packages/python/iii/tests/test_stream_types.py
  • sdk/packages/python/iii/tests/test_streams.py
  • sdk/packages/python/iii/tests/test_sync_api.py
  • sdk/packages/python/iii/tests/test_telemetry.py
  • sdk/packages/python/iii/tests/test_telemetry_exporters.py
  • sdk/packages/python/iii/tests/test_telemetry_types.py
  • sdk/packages/python/iii/tests/test_trace_helpers.py
  • sdk/packages/python/iii/tests/test_trigger_submodule.py
  • sdk/packages/python/iii/tests/test_trigger_type_lifecycle.py
  • sdk/packages/python/observability/pyproject.toml
  • sdk/packages/python/observability/src/iii_observability/__init__.py
  • sdk/packages/rust/helpers/Cargo.toml
  • sdk/packages/rust/helpers/README.md
  • sdk/packages/rust/helpers/src/http.rs
  • sdk/packages/rust/helpers/src/lib.rs
  • sdk/packages/rust/helpers/src/observability/logger.rs
  • sdk/packages/rust/helpers/src/observability/mod.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/baggage_span_processor.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/connection.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/context.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/http_instrumentation.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/json_serializer.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/log_exporter.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/metrics_exporter.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/mod.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/otel_worker_gauges.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/payload.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/span_exporter.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/span_ops.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/types.rs
  • sdk/packages/rust/helpers/src/observability/telemetry/worker_metrics.rs
  • sdk/packages/rust/helpers/src/queue.rs
  • sdk/packages/rust/helpers/src/stream.rs
  • sdk/packages/rust/helpers/src/worker_connection_manager.rs
  • sdk/packages/rust/helpers/tests/observability_context_test.rs
  • sdk/packages/rust/helpers/tests/observability_init_test.rs
  • sdk/packages/rust/helpers/tests/observability_logger_test.rs
  • sdk/packages/rust/helpers/tests/observability_payload_test.rs
  • sdk/packages/rust/helpers/tests/observability_types_test.rs
  • sdk/packages/rust/iii-example/Cargo.toml
  • sdk/packages/rust/iii-example/src/cron_trigger_example.rs
  • sdk/packages/rust/iii-example/src/custom_trigger_example.rs
  • sdk/packages/rust/iii-example/src/http_example.rs
  • sdk/packages/rust/iii-example/src/logger_example.rs
  • sdk/packages/rust/iii-example/src/main.rs
  • sdk/packages/rust/iii-example/src/trigger_type_example.rs
  • sdk/packages/rust/iii/Cargo.toml
  • sdk/packages/rust/iii/README.md
  • sdk/packages/rust/iii/src/builtin_triggers.rs
  • sdk/packages/rust/iii/src/channels.rs
  • sdk/packages/rust/iii/src/engine.rs
  • sdk/packages/rust/iii/src/error.rs
  • sdk/packages/rust/iii/src/helpers.rs
  • sdk/packages/rust/iii/src/iii.rs
  • sdk/packages/rust/iii/src/lib.rs
  • sdk/packages/rust/iii/src/protocol.rs
  • sdk/packages/rust/iii/src/stream_provider.rs
  • sdk/packages/rust/iii/src/structs.rs
  • sdk/packages/rust/iii/src/triggers.rs
  • sdk/packages/rust/iii/src/types.rs
  • sdk/packages/rust/iii/tests/api_triggers.rs
  • sdk/packages/rust/iii/tests/bridge.rs
  • sdk/packages/rust/iii/tests/common/mod.rs
  • sdk/packages/rust/iii/tests/data_channels.rs
  • sdk/packages/rust/iii/tests/error_wire.rs
  • sdk/packages/rust/iii/tests/healthcheck.rs
  • sdk/packages/rust/iii/tests/hold_process.rs
  • sdk/packages/rust/iii/tests/http_external_functions.rs
  • sdk/packages/rust/iii/tests/init_api.rs
  • sdk/packages/rust/iii/tests/middleware.rs
  • sdk/packages/rust/iii/tests/payload_capture.rs
  • sdk/packages/rust/iii/tests/pubsub.rs
  • sdk/packages/rust/iii/tests/queue_integration.rs
  • sdk/packages/rust/iii/tests/rbac_workers.rs
  • sdk/packages/rust/iii/tests/registration_dedup.rs
  • sdk/packages/rust/iii/tests/span_ops_api.rs
  • sdk/packages/rust/iii/tests/state.rs
  • sdk/packages/rust/iii/tests/stream.rs
  • sdk/packages/rust/iii/tests/stream_provider_trait.rs
  • sdk/packages/rust/iii/tests/trigger_type_lifecycle.rs
  • sdk/packages/rust/observability/Cargo.toml
  • sdk/packages/rust/observability/src/lib.rs
  • skills/iii-architecture-patterns/SKILL.md
  • skills/iii-core-primitives/SKILL.md
  • skills/iii-error-handling/SKILL.md
  • skills/iii-getting-started/SKILL.md
  • skills/iii-sdk-reference/SKILL.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sdk-refactor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
iii-website Ready Ready Preview, Comment Jun 23, 2026 10:32pm

Request Review

@mintlify

mintlify Bot commented Jun 12, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
iii 🟢 Ready View Preview Jun 12, 2026, 7:25 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

skill-check — docs

536 verified, 0 skipped.

11 warnings across the verified workers.

File Approximate line Severity Violation
docs/next/tutorials/incremental-adoption/overview.mdx ~27 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/next/understanding-iii/index.mdx ~80 warning [Terminology.Hedges] Weak intensifier/hedge 'actually' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/next/understanding-iii/index.mdx ~196 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/next/understanding-iii/index.mdx ~277 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/next/using-iii/console.mdx ~166 warning [Terminology.Hedges] Weak intensifier/hedge 'actually' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/tutorials/incremental-adoption/overview.mdx ~27 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/tutorials/linkly/persistence.mdx ~164 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/understanding-iii/index.mdx ~80 warning [Terminology.Hedges] Weak intensifier/hedge 'actually' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/understanding-iii/index.mdx ~196 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/understanding-iii/index.mdx ~277 warning [Terminology.Hedges] Weak intensifier/hedge 'just' adds emphasis, not information. Cut it or state the claim directly. (warning)
docs/using-iii/console.mdx ~166 warning [Terminology.Hedges] Weak intensifier/hedge 'actually' adds emphasis, not information. Cut it or state the claim directly. (warning)

@guibeira guibeira changed the title Sdk refactor refactor(sdk)!: cross-language parity, @iii-dev/helpers, and submodule reorg Jun 13, 2026
@guibeira guibeira marked this pull request as ready for review June 15, 2026 20:11
guibeira and others added 13 commits June 23, 2026 16:50
- iii.rs: use Error (IIIError alias dropped from module scope)
- engine: import UpdateOp/UpdateOpError/MergePath from iii_helpers::stream
- regenerate Cargo.lock
main bumped the workspace to 0.19.5-next.1 but the helpers packages (added on
this branch) were still on their pre-rebase versions. Align @iii-dev/helpers
(node) and iii-helpers (python) to 0.19.5-next.1 / 0.19.5.dev1 to match the
rest of the workspace and regenerate the uv locks. (The rust iii-helpers crate
was already bumped during conflict resolution.)
Co-authored-by: Guilherme de S. Vieira Beira <guilherme.vieira.beira@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…isc fixes (#1861)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… and Rust pages

The Python (griffe) and Rust (rustdoc) parsers dropped any type defined in the
helpers package, even when the core SDK re-exports it. The Node (typedoc) parser
inlines such re-exports, so EnqueueResult and the re-exported stream/state types
appeared only on the Node SDK page.

- parse-griffe: index iii_helpers from the dump and widen the package filter to
  accept both iii and iii_helpers, so re-exported aliases resolve.
- parse-rustdoc: read the helpers crate JSON and document types the SDK
  re-exports via `pub use iii_helpers::...` (e.g. EnqueueResult).
- generate-api-docs: pass the helpers crate JSON to the Rust parser.
- generate-api-docs.yml: dump iii_helpers alongside iii for griffe.
- Regenerate sdk-python and sdk-rust pages (+ skill artifacts).
…state delete

Node and Python state modules each defined both StateDeleteResult and a
redundant DeleteResult alias with identical shape. IState.delete now returns
StateDeleteResult, matching the StateSetResult/StateUpdateResult naming.
Regenerated api-reference mdx and skill artifacts.
…ample

The catch-invocation_stopped example still imported the pre-0.20
IIIInvocationError from the package root. 0.20 renamed it to InvocationError
(no deprecated alias) and moved it to the errors subpath. Update the Node and
Python snippets to import InvocationError from iii-sdk/errors and iii.errors.
guibeira added 2 commits June 23, 2026 19:00
quickstart and troubleshooting skill artifacts pointed at docs/next/*.mdx
sources but the files live at docs/*.mdx. Re-rendered with iii-skill-render
0.4.28 so the generated header matches the actual source path. Unblocks the
skill-check drift gate.
Rust 1.96's clippy promoted doc_nested_refdefs to deny-by-default. Doc-list
items of the form `- [`Type::method`]: desc` parse as link reference
definitions. Add `[]` between each label and colon so they render as intra-doc
links instead. Unblocks the SDK Rust Tests clippy gate.
The exclude list only covered the 0-10-0 and 0-11-0 archives. When skill-check
falls back to a full scan (PR diff unavailable), it lints the 0-12-0..0-18-0
frozen archives too, failing on pre-existing Vale errors (em dashes,
negation-contrast) in content that must stay frozen. Exclude those archives,
matching the existing treatment of 0-10-0/0-11-0.
The register_trigger_type, register_trigger, and trigger doc examples bind the
client as iii in their hidden setup but called worker.method(), so the doctests
failed to compile (E0425). These were masked until the clippy fix let the doc
build proceed. Use iii.method() to match the binding. All 37 doctests pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants