From 441582dbb89228390d288fe9b141fe4730c1ca57 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Fri, 27 Feb 2026 09:17:14 -0800 Subject: [PATCH] Use typed errors for unavailable Claude runtime path Co-authored-by: codex --- .../src/provider/Layers/ClaudeCodeAdapter.ts | 58 ++++++++++++++++--- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/apps/server/src/provider/Layers/ClaudeCodeAdapter.ts b/apps/server/src/provider/Layers/ClaudeCodeAdapter.ts index b6ebe5eb9a654a51436ba0ee119ee6ea6341f4dd..6d4b7621949596050a29ec4a1011a04ae527e27c 100644 --- a/apps/server/src/provider/Layers/ClaudeCodeAdapter.ts +++ b/apps/server/src/provider/Layers/ClaudeCodeAdapter.ts @@ -116,16 +116,58 @@ function toRequestError( }); } -const unavailableRuntimeError = () => new Error("Claude Code runtime is not configured."); - function makeUnavailableRuntime(): ClaudeCodeRuntime { + const unavailableDetail = "Claude Code runtime is not configured."; + return { - startSession: () => Effect.fail(unavailableRuntimeError()), - sendTurn: () => Effect.fail(unavailableRuntimeError()), - interruptTurn: () => Effect.fail(unavailableRuntimeError()), - readThread: () => Effect.fail(unavailableRuntimeError()), - rollbackThread: () => Effect.fail(unavailableRuntimeError()), - respondToRequest: () => Effect.fail(unavailableRuntimeError()), + startSession: () => + Effect.fail( + new ProviderAdapterProcessError({ + provider: PROVIDER, + sessionId: "pending", + detail: unavailableDetail, + }), + ), + sendTurn: (_input) => + Effect.fail( + new ProviderAdapterRequestError({ + provider: PROVIDER, + method: "turn/start", + detail: unavailableDetail, + }), + ), + interruptTurn: (_sessionId) => + Effect.fail( + new ProviderAdapterRequestError({ + provider: PROVIDER, + method: "turn/interrupt", + detail: unavailableDetail, + }), + ), + readThread: (_sessionId) => + Effect.fail( + new ProviderAdapterRequestError({ + provider: PROVIDER, + method: "thread/read", + detail: unavailableDetail, + }), + ), + rollbackThread: (_sessionId) => + Effect.fail( + new ProviderAdapterRequestError({ + provider: PROVIDER, + method: "thread/rollback", + detail: unavailableDetail, + }), + ), + respondToRequest: (_sessionId) => + Effect.fail( + new ProviderAdapterRequestError({ + provider: PROVIDER, + method: "item/requestApproval/decision", + detail: unavailableDetail, + }), + ), stopSession: () => Effect.void, listSessions: () => Effect.succeed([]), hasSession: () => Effect.succeed(false), -- 2.54.0