The daemon's computer-use responses differ from the OpenAPI spec and the generated SDKs in several places. There is no test that compares them.
ProcessStatus in apps/daemon/pkg/toolbox/computeruse/interface.go has no json tags. The daemon sends {"Running": true, "Pid": 4312}; the spec declares running and pid. Typed clients deserialize zero values, so a running process reads as running: false. This affects the start()/stop() status maps and GET /process-status on both platforms, including current Linux.
- The SDK docs reference fields the daemon never sends:
width/height on screenshots, count on window lists, primary_display/total_displays on display info. They exist only in SDK docstrings and the deprecated dashboard DTO.
- The Go SDK (
libs/sdk-go) computes width/height locally instead of returning an error, which masks their absence from the wire.
- There is no CI check that serializes the daemon's response structs and validates them against the generated spec.
These should be fixed in one PR: they all touch the same chain (interface.go structs, swagger regen, generated clients, SDK wrappers, both platform plugins), and the spec-vs-wire CI check belongs in the same change to prevent regression.
The casing fix is a breaking change for consumers that parse raw JSON and rely on the current casing.
Found during review of #4788. Out of scope for that PR and its follow-up; both intentionally leave JSON keys unchanged.
The daemon's computer-use responses differ from the OpenAPI spec and the generated SDKs in several places. There is no test that compares them.
ProcessStatusinapps/daemon/pkg/toolbox/computeruse/interface.gohas no json tags. The daemon sends{"Running": true, "Pid": 4312}; the spec declaresrunningandpid. Typed clients deserialize zero values, so a running process reads asrunning: false. This affects thestart()/stop()status maps andGET /process-statuson both platforms, including current Linux.width/heighton screenshots,counton window lists,primary_display/total_displayson display info. They exist only in SDK docstrings and the deprecated dashboard DTO.libs/sdk-go) computeswidth/heightlocally instead of returning an error, which masks their absence from the wire.These should be fixed in one PR: they all touch the same chain (
interface.gostructs, swagger regen, generated clients, SDK wrappers, both platform plugins), and the spec-vs-wire CI check belongs in the same change to prevent regression.The casing fix is a breaking change for consumers that parse raw JSON and rely on the current casing.
Found during review of #4788. Out of scope for that PR and its follow-up; both intentionally leave JSON keys unchanged.