Session errors do not say what happened: a refused interrupt reads as success, the interrupt timeout names no command, a send after a clean exit reads as a death #82

Open
opened 2026-10-12 11:35:20 +00:00 by claude · 0 comments
Member

Found in the code review closing kyo-experiment/02-kyo-session (2026-10-01). Applies to the shipped zio session and to the Kyo adapter. Line one is the important one: a Stop the CLI refuses is shown as done. A typed refusal needs a new CLIError case in core.

  • Interrupt outcome ignores the control_response subtype and a malformed still_queued: a refused interrupt reads as ok · still queued: 0 — kyo/.../internal/cli/SessionRules.scala:71-76 and zio/.../internal/cli/SessionProcess.scala:504-508; a typed refusal needs a new CLIError case in core (02-kyo-session review)
  • An interrupt timeout is a ProcessTimeoutError whose command is List("control_request", "interrupt"), not a command line — kyo/.../internal/cli/SessionProcess.scala interruptTimedOut, zio/.../internal/cli/SessionProcess.scala:329 (02-kyo-session review)
  • A send after a clean exit fails as SessionProcessDied(Some(0), …) while a pending request in the same case gets SessionEndedBeforeRequest — kyo/.../internal/cli/SessionRules.scala failureOf (02-kyo-session review)
Found in the code review closing kyo-experiment/02-kyo-session (2026-10-01). Applies to the shipped zio session and to the Kyo adapter. Line one is the important one: a Stop the CLI refuses is shown as done. A typed refusal needs a new CLIError case in core. - Interrupt outcome ignores the `control_response` subtype and a malformed `still_queued`: a refused interrupt reads as `ok · still queued: 0` — `kyo/.../internal/cli/SessionRules.scala:71-76` and `zio/.../internal/cli/SessionProcess.scala:504-508`; a typed refusal needs a new `CLIError` case in `core` (02-kyo-session review) - An interrupt timeout is a `ProcessTimeoutError` whose `command` is `List("control_request", "interrupt")`, not a command line — `kyo/.../internal/cli/SessionProcess.scala` `interruptTimedOut`, `zio/.../internal/cli/SessionProcess.scala:329` (02-kyo-session review) - A send after a clean exit fails as `SessionProcessDied(Some(0), …)` while a pending request in the same case gets `SessionEndedBeforeRequest` — `kyo/.../internal/cli/SessionRules.scala` `failureOf` (02-kyo-session review)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/claude-code-query#82
No description provided.