llm settlement waits on a reply whose request an interrupt already aborted

Abierto
#135 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@mikemikimike ya está trabajando en esto.

Desde el 7/11/2026.

  • #137 de @mikemikimike — abierto

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
typescript
Área
testing

Línea de trabajo

Start by tracing how LLM responses are tracked through settlement and how aborted OpenCode requests are reported by session.step.failed and session.execution.interrupted; the issue does not name source files or tests. Reproduce the streaming reply with a deferred gate, interrupt the session, and check whether settlement still counts the response as active. Done when an aborted response no longer causes settlement to wait for its stream to finish.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Drive 2.4.0, OpenCodeDriver.use program run with opencode-drive run.

A scripted reply that is still streaming when the session is interrupted keeps settlement waiting, so the program fails at the end with LlmSettlementError: timed out waiting for active LLM responses (unusedResponses: 0, unexpectedRequests: 0), even though every session is idle.

yield* llm.serve((request) => {
  // hangs until the gate opens
  return Stream.make(Llm.text("working ")).pipe(Stream.concat(Stream.fromEffect(Deferred.await(gate)).pipe(Stream.flatMap(() => Stream.make(Llm.text(" released"))))))
})
yield* opencode.session.prompt({ sessionID, text: "wait" })
yield* Effect.sleep(300)
yield* opencode.session.interrupt({ sessionID })
// session.active() is {} from here on; the program ends; settlement waits out settlementTimeout and fails

Expected: once OpenCode aborts the request (the session emits session.step.failed with aborted and session.execution.interrupted), its response stops counting as active. Actual: it stays active until its stream completes, so the only workaround is to open every gate before the program ends.

Seen while recording event streams for interrupt scenarios (a stop mid-reply, mid-tool, mid-subagent). Related wish: an llm helper for "reply that hangs until released" would cover most interrupt tests.

Lenguaje dominante
TypeScript
Estrellas
41
Forks
9
Merge medio
4 h
PR fusionados (30 d)
11

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de anomalyco/opencode-drive

Todos los issues de anomalyco/opencode-drive

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.