feat(core): give limits an id, windowSeconds and scope, and read advance from stdin master
A host tracking quota over time needs to key a limit, know its window, and know which usage counts against it; `label` is display text and says none of that reliably. ABI 4 adds three fields to every limit: - `id`, a stable machine key within the provider: anthropic's `kind`, codex's `primary`/`secondary` and `<metered_feature>.<window>`, antigravity's family, opencode's window key, zai's `<type>:<unit>:<number>` (one type can repeat with another period), alibaba's `five_hour`/`weekly`, hyper's `hypercredits`. - `windowSeconds`, when the provider states it (codex's `limit_window_seconds`, hyper's refresh endpoints) or the plan fixes it; absent when unknown, as for zai's units other than hours. - `scope`, the model family or feature a limit is restricted to: anthropic's body `scope`, or the kind's suffix (`weekly_opus` -> `opus`), codex's additional limit name, antigravity's family. Absent means the limit counts all usage. `advance -` takes the whole call as one JSON envelope on stdin, `{provider, credential, responses: [round...], nowMs?}`, so a credential never lands in argv where other local processes can read it. It stays stateless: the host keeps every round's responses and the CLI replays them through one fresh state, as the argument form does. Mirrored in the TypeScript reference in prime-agent.