Language migration guide: 0.3 to 0.6¶
Language versions are opt-in. Existing explicitly versioned files retain their behavior.
0.3 to 0.4¶
Add language "0.4"; to use effects, idempotency, deployment requirements, budgets, or evaluations. Existing tasks default to unspecified effects/idempotency. Declare external writes accurately before adding retries; unsafe retries become static errors. Move provider/model settings into deployment JSON when portability matters.
0.4 to 0.5¶
Add language "0.5"; for parallel map, race, task/tool scheduler limits, and approve. Contextual native handlers should observe Invocation.cancellation. Durable runs should supply both --event-store and a stable --execution-id; resume must use unchanged source and deployment.
0.5 to 0.6¶
Add language "0.6"; for imports and packages. Visibility now defaults to private, so mark imported APIs public. Replace cross-file global names with alias::name, create agl.json, and check in the generated agl.lock. Generate an API snapshot before a release so breaking changes can enforce a major version bump.
Python plugins must use protocol version 1; the bundled bridge adds this envelope automatically. Native extensions declare extension API version 1.