| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
`session:input_state`, `session:required_action` and `session:task_ready` leave the supported surface. All three continue to be emitted by the server and to reach callers unchanged; the SDK no longer models them and makes no commitment about them. ## Why each one goes `session:input_state` described whether the composer accepts input. It was also the SDK's signal that a turn had ended, and recording a live session showed why that does not hold: the event arrives twice at the very start of a turn, before the agent has said anything. A turn ending on it truncates the reply. `session:required_action` restated in a dedicated event what other events already carry. `session:task_ready` reports what a task will cost. The server computes `confirmed` from the balance and, when it is sufficient, starts the task itself — so the event asks nothing of a client and its absence costs a client nothing. ## What a client keeps A session stopped on its credit balance is still visible: `session:state` is in scope and its values include `credits_exhausted` and `task_paused`. Together with `session:restriction` and `session:error` — and `is_stale` over REST for an expired session — every condition that halts a session remains reportable except one. The exception is an outstanding phone verification, which is a provisioning prerequisite with no in-session remedy and now no in-session signal. The README says so rather than leaving it implicit. `session:task_ready` was also counted towards the SDK's judgement that an agent had responded, which governs how long a turn waits between events. Removing it narrows that set — an accurate narrowing, since a cost estimate is not a reply. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Summary
Three events leave the supported protocol scope: session:input_state, session:required_action and session:task_ready. The supported surface goes from nineteen events to sixteen.
All three continue to be emitted by the server and to reach callers unchanged. What changes is that the SDK no longer models them and makes no compatibility commitment about them — the same treatment every other unsupported event receives.
Why each one leaves
session:input_state described whether the composer accepts input, and served as the SDK's signal that a turn had ended. Recording a live session showed the signal does not hold: the event arrives twice at the very start of a turn, before the agent has produced anything.
A turn that ends on this event ends before the reply. The exit path that depended on it is removed with it.
session:required_action restated in a dedicated event what other events already carry. Nothing in the SDK consumed it.
session:task_ready reports what a task will cost in credits. The server computes confirmed from the account balance and, when the balance is sufficient, starts the task itself. The event asks nothing of a client.
What a client keeps
A session stopped on its credit balance remains visible. session:state is in scope, and its values include credits_exhausted and task_paused.
The exception is phone verification, a provisioning prerequisite that has no in-session remedy and now no in-session signal. The README states this rather than leaving it implicit.
Removed from the public API
InputState, InputStateCode, RequiredActionData and TaskReadyData, along with the three S2CEvent members. Callers that need these payloads can still read them off the raw event.
session:task_ready was also counted towards the SDK's judgement that an agent had responded, which governs how long a turn waits between events. Removing it narrows that set — an accurate narrowing, since a cost estimate is not a reply.
Verification
Note on 0.4.0
0.4.0 is unreleased — PyPI is on 0.3.3 — so these changes fold into its changelog entry rather than opening a new version.
🤖 Generated with Claude Code