Files
orca/src
Merge Sim f4a75f68b9 Floor the structured option catalog on the seed the client already holds
`structuredAgentSessionOptionCatalog` runs on the client, over a result a host of
any version published — both `use-structured-agent-session.ts` and mobile's
`use-mobile-structured-agent-options.ts` hand it straight off the
`agentSession.options` wire. It mapped `result.models` through unchanged, so an
empty list reached the snapshot, which correctly returns `[]` for an empty
catalog, and the model pill and effort pill both vanished.

On `origin/main` that was unreachable: this function unconditionally pushed
`current.model`, so the list was never empty. Withholding unofficial ids removed
that push, so the exposure is this PR's. Flooring only the host-side readers
closes it for new hosts; a new client paired with an older host still hits it,
which is the divergence `docs/reference/remote-wire-compatibility.md` covers
when a host changes what it publishes.

The floor uses `seed.models`, the catalog the client already passes in, so it
holds for Claude and any future structured agent rather than one provider. The
reader-side floors stay as defence in depth.
2026-09-09 13:47:35 -07:00
..