Production-blocking fixes
If your code was hitting <exception str() failed> errors, or workflows.get() / workflows.run() / jobs.initiate() returning HTTP 500/400, this release fixes them.
OpusError.__str__no longer crashes on list-shaped error bodies (NestJS validator shape). You'll now see the real message.workflows.get(uuid)works again — calls v2 endpoint, returns fullWorkflowObject(nodes, edges, schemas, version).workflows.run()/jobs.initiate()work again with v2 workflow UUIDs.- Credits endpoints rewritten:
credits.history()/credits.current_balance()replace the deadget_balance/get_usage. Removed methods raiseNotSupportedErrorwith a migration hint. - Cookie-only endpoints (
users.list,policies.list,files.search) raiseNotSupportedErrorinstead of a misleading 401.
New
WorkflowObject,WorkflowNode,WorkflowEdgetypes modelling the v2 graph.WorkflowObject.find_sub_workflows()for tracing master → sub workflow edges.workflows.list_versions(uuid)lists every version of a v2 workflow.api_keys.scopes()/users.projects()aliases.NotSupportedErrorexception type.
Migration
Read MIGRATION_v0.5.md. TL;DR: pass UUIDs (not 16-char short IDs), and your existing code will keep working — most of what looks like "breaking changes" are fixes to calls that were already failing on the platform side.
Install
```
pip install --upgrade opus-aaico
```
114 tests passing. Live-tested end-to-end against a real v2 workflow.