SDK parity

Check before you commit to a language: which Duraton features TypeScript, Python, and Go each support today, side by side.

Duraton ships three runner SDKs that speak the same connect protocol. The TypeScript SDK is the reference and carries every feature first; Python and Go follow. This page is the single place to check what each language supports today, so you do not have to read a per-feature callout on every page.

Yes means a first-class, typed API. Not yet means the feature is not exposed in that SDK - the engine supports it, and the SDK will. Two escape hatches let Python reach a few knobs before they are typed; see the notes under each table.

Workflow definition and flow control

FeatureTypeScriptPythonGo
defineWorkflow (name, triggers, handler)YesYesYes
retry - maxAttemptsYesYesYes
retry - backoff / initialDelayMs / maxDelayMsYesNot yetNot yet
concurrencyYesYesYes
throttle / rateLimit / debounce / batch / priority / singleton / idempotencyYesNot yet 1Yes
cap (per-run AI ceiling)YesYesYes
budget / tokenThrottleYesNot yet 1Yes
Step manifest (steps)YesNot yet 1Not yet
onFailure handlerYesYesYes

1 Python's define_workflow takes an extra dict that is forwarded verbatim to the wire registration, so these knobs can be set today as raw camelCase keys (e.g. extra={"budget": {...}}). They simply have no typed field yet.

Triggers

FeatureTypeScriptPythonGo
Event triggerYesYesYes
Event trigger if (CEL)YesYes 2Yes
Cron triggerYesYes 2Yes
Cron runOnStartYesYes 2Not yet

2 Python has no typed trigger type; triggers are plain dicts forwarded to the wire, so if, cron, and runOnStart are set as dict keys.

Durable steps

FeatureTypeScriptPythonGo
step.runYesYesYes
step.run with recorded inputYesYesYes
Per-step retry overrideYesNot yetNot yet
step.skipYesNot yetNot yet
step.sleep / step.sleepUntilYesYesYes
step.waitForEventYesYesYes
step.waitForEvent if (CEL)YesNot yetNot yet
step.runWorkflow (child run)YesYesYes
step.runWorkflow tagsYesNot yetNot yet
step.emitYesYesYes
step.emit dedupeIdYesNot yetNot yet
step.approvalYesYesYes
step.webhook.sendYesYesYes
step.ai.* (generate, wrap, embed, loop, infer)YesYesYes

Evals

FeatureTypeScriptPythonGo
ctx.scoreYesYesYes
ctx.assert (usedStep / sequence / equals)YesYesNot yet

Runner

FeatureTypeScriptPythonGo
connect (outbound WebSocket)YesYesYes
serve (HTTP framework adapters)YesNot yetNot yet
Middleware (onInvoke / onResult)YesNot yetNot yet

REST client

FeatureTypeScriptPythonGo
runs read (list, get, wait, steps, logs)YesYesYes
runs.list tag filterYesNot yetYes
runs.watch (per-run stream)YesYesYes
runs.watchAllYesYesYes
runs.watchFilteredYesNot yetNot yet
runs control (cancel, pause, resume, replay, retryFromStep, fork)YesYesYes
runs.bulkReplayYesYesYes
runs.bulkCancelYesNot yetNot yet
runs.score / runs.scoresYesYesYes
runs.explainYesYesNot yet
events.sendYesYesYes
events.send tagsYesYesYes
events.send dedupeIdYesYesYes
events read (list, get, stream)YesYesYes
workflows.trigger (manual run, any workflow)YesYesYes
approvals resourceYesYesYes
datasets resourceYesYesNot yet
webhooks resource (sources / endpoints / deliveries)YesYesNot yet
webhooks.sourceDeliveries (inbound delivery log + replay)YesNot yetNot yet
Webhook signing scheme selectionYesNot yetNot yet

Next steps

On this page