From aeaabc39287ae06dcc21883b6c7b18022c19dc48 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Sun, 21 Jun 2026 17:05:03 -0400 Subject: [PATCH] fix(core): align terminal failures with current runner --- packages/core/src/session/event.ts | 2 +- packages/core/src/session/execution/local.ts | 2 +- packages/core/test/session-run-coordinator.test.ts | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/core/src/session/event.ts b/packages/core/src/session/event.ts index 9d0ede00ff..11a9bd6af7 100644 --- a/packages/core/src/session/event.ts +++ b/packages/core/src/session/event.ts @@ -124,7 +124,7 @@ export namespace Run { ...options, schema: { ...Base, - reason: Schema.Literals(["execution-failed", "step-limit-exceeded", "unknown"]), + reason: Schema.Literals(["execution-failed", "unknown"]), input: Schema.Struct({ messageID: SessionMessageID.ID, admittedSeq: NonNegativeInt, diff --git a/packages/core/src/session/execution/local.ts b/packages/core/src/session/execution/local.ts index d44f47eead..2840810491 100644 --- a/packages/core/src/session/execution/local.ts +++ b/packages/core/src/session/execution/local.ts @@ -41,7 +41,7 @@ export const layer = Layer.effect( yield* events.publish(SessionEvent.Run.Failed, { sessionID, timestamp: yield* DateTime.now, - reason: error instanceof SessionRunner.StepLimitExceededError ? "step-limit-exceeded" : "execution-failed", + reason: error === undefined ? "unknown" : "execution-failed", ...(input === undefined ? {} : { diff --git a/packages/core/test/session-run-coordinator.test.ts b/packages/core/test/session-run-coordinator.test.ts index 39fb5779d3..4cfaf02311 100644 --- a/packages/core/test/session-run-coordinator.test.ts +++ b/packages/core/test/session-run-coordinator.test.ts @@ -915,19 +915,24 @@ describe("SessionRunCoordinator", () => { Effect.gen(function* () { const failure = new Error("wake failed") const reported: Cause.Cause[] = [] + const contexts: Array<{ readonly mode: "wake"; readonly seq?: number }> = [] const reportedOnce = yield* Deferred.make() const coordinator = yield* SessionRunCoordinator.make({ drain: () => Effect.fail(failure), - onFailure: (_key, cause) => - Effect.sync(() => reported.push(cause)).pipe(Effect.andThen(Deferred.succeed(reportedOnce, undefined))), + onFailure: (_key, cause, context) => + Effect.sync(() => { + reported.push(cause) + contexts.push(context) + }).pipe(Effect.andThen(Deferred.succeed(reportedOnce, undefined))), }) - yield* coordinator.wake("session") + yield* coordinator.wake("session", 7) yield* Deferred.await(reportedOnce) yield* Effect.yieldNow expect(reported).toHaveLength(1) expect(Cause.squash(reported[0]!)).toBe(failure) + expect(contexts).toEqual([{ mode: "wake", seq: 7 }]) }), ), )