| name | provider-runtime-adapter |
| description | Design Ordinus provider runtime adapters for local AI CLIs. Use when working on Codex, Claude, or future provider detection, auth status, run lifecycle, process management, cancellation, event parsing, output capture, or provider-neutral runtime interfaces. |
Provider Runtime Adapter
Objective
Keep local AI CLI integrations provider-neutral, observable, and owned by Electron main process.
Adapter Boundary
Provider adapters should hide provider-specific CLI details behind a shared runtime shape. Start with only the methods needed by current product behavior.
Preferred concepts:
detect: determine whether the CLI is available.
getAuthStatus: report whether the provider appears ready.
startRun: launch one user-approved run.
cancelRun: stop an active run.
parseEvents: normalize stdout/stderr into observable run events when needed.
Do not implement all concepts until the product flow needs them.
Runtime Rules
- Run provider processes from Electron main process or a main-owned worker.
- Do not allow renderer to pass arbitrary shell commands.
- Store run state and events durably only after the run model is intentionally designed.
- Normalize provider behavior without erasing useful provider-specific diagnostics.
- Treat Codex and Claude as peers. Do not let the first provider shape the whole architecture.
- When provider state or events are shown in renderer UI, align user-visible statuses and event labels with the status vocabulary in
DESIGN.md.
Workflow
- Define the user action that needs provider runtime support.
- Add the smallest provider-neutral interface needed for that action.
- Implement detection or process behavior in main process.
- Validate executable paths, workspace boundaries, and allowed arguments in main.
- Stream or record events in a way the UI can explain clearly, using
DESIGN.md status language for user-visible states.
- Support cancellation before adding more automation.
- Run typecheck, lint, build, and a runtime smoke test.
Red Flags
- Renderer sends raw command strings or CLI args.
- Provider-specific flags leak into UI state too early.
- Long-running process state exists only in memory when the UI needs to recover it.
- A provider integration assumes a single operating system.