Overview
The build-time tools. A lint rule set that catches non-determinism inside a workflow body before it ever runs, plus build-time codegen — workflow and step barrels, and a typed client for the dashboard API.
You don't need either of these to run a workflow. Linting catches, at author time, a mistake the engine would only discover once it was too late. Codegen moves work from boot time to build time and gives you typed access to the dashboard API.
- Linting for non-determinism: a workflow body must be deterministic, and the engine only notices it wasn't when a replay diverges, often long after the deploy.
@adonis-agora/durable-eslint-plugincatchesDate.now(),Math.random(),process.env, swallowed control-flow signals and direct I/O inside a workflow body. It understands both theengine.register()function form and aBaseWorkflowclass. - Codegen: Assembler
inithooks generate barrels ofapp/workflowsandapp/stepsat build and dev time, so the provider skips its runtime directory scan. The dashboard API's OpenAPI 3.1 document lets you generate a typed client for it.
The runtime-side developer tools live on their own pages: Testing covers the in-memory createTestEngine harness and replay CI, and CLI covers the durable:* ace commands.
Python
Python is a first-class durable runtime for Agora too. Implement steps an AdonisJS workflow calls, OR author whole workflows in Python that the Adonis engine drives — both over the same Redis wire, with the engine owning durable state.
Linting for non-determinism
Catch Date.now(), Math.random(), process.env, swallowed control-flow signals and direct I/O inside a workflow body at author time with @adonis-agora/durable-eslint-plugin — AST-scoped ESLint rules that know both the engine.register() function form and a BaseWorkflow class.