cmux-vm: receiver policy names its device owners' earliest key expiry
cmux-vm's receiver-policy read now returns ownerExpiresAt: the earliest API-key expiry among the owners of the peers it lists, or null when none expires. That value was already folded into expiresAt. Named on its own, it lets cmux-platform bound the receiver's longer local-admission horizon (cmux#36014, cmux-platform#827, design cmuxterm-hq#7144), so a kept policy never outlives an owner's key.
Additive response field. openapi.json and the SDK schema are regenerated. Clients that don't know the field ignore it.
Tests (cmux-ci test): vitest run test/workers/mesh-vm-receiver.test.ts passes 16 tests, now asserting ownerExpiresAt both null and set. typecheck and lint are clean.
Changelog
none
Agent session: agent session
š¤ Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith Ā· Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds ownerExpiresAt to cmux-vm's receiver-policy read: the earliest API-key expiry among the device owners of the peers the policy lists, or null when none expires. The value was already folded into expiresAt; naming it on its own lets cmux-platform bound the receiver's longer local-admission horizon so a kept policy never outlives an owner's key (cmux#36014, cmux-platform#827, design cmuxterm-hq#7144).
The field is additive ā clients that don't know it ignore it. OpenAPI spec, SDK schema, and Rust client are regenerated, and the classic API decode now accepts the field. Tests assert ownerExpiresAt both null and set.