| ... | @@ -116,16 +116,58 @@ function toRequestError( | ... | @@ -116,16 +116,58 @@ function toRequestError( |
| 116 | }); | 116 | }); |
| 117 | } | 117 | } |
| 118 | | 118 | |
| 119 | const unavailableRuntimeError = () => new Error("Claude Code runtime is not configured."); | | |
| 120 | | | |
| 121 | function makeUnavailableRuntime(): ClaudeCodeRuntime { | 119 | function makeUnavailableRuntime(): ClaudeCodeRuntime { |
| | 120 | const unavailableDetail = "Claude Code runtime is not configured."; |
| | 121 | |
| 122 | return { | 122 | return { |
| 123 | startSession: () => Effect.fail(unavailableRuntimeError()), | 123 | startSession: () => |
| 124 | sendTurn: () => Effect.fail(unavailableRuntimeError()), | 124 | Effect.fail( |
| 125 | interruptTurn: () => Effect.fail(unavailableRuntimeError()), | 125 | new ProviderAdapterProcessError({ |
| 126 | readThread: () => Effect.fail(unavailableRuntimeError()), | 126 | provider: PROVIDER, |
| 127 | rollbackThread: () => Effect.fail(unavailableRuntimeError()), | 127 | sessionId: "pending", |
| 128 | respondToRequest: () => Effect.fail(unavailableRuntimeError()), | 128 | detail: unavailableDetail, |
| | 129 | }), |
| | 130 | ), |
| | 131 | sendTurn: (_input) => |
| | 132 | Effect.fail( |
| | 133 | new ProviderAdapterRequestError({ |
| | 134 | provider: PROVIDER, |
| | 135 | method: "turn/start", |
| | 136 | detail: unavailableDetail, |
| | 137 | }), |
| | 138 | ), |
| | 139 | interruptTurn: (_sessionId) => |
| | 140 | Effect.fail( |
| | 141 | new ProviderAdapterRequestError({ |
| | 142 | provider: PROVIDER, |
| | 143 | method: "turn/interrupt", |
| | 144 | detail: unavailableDetail, |
| | 145 | }), |
| | 146 | ), |
| | 147 | readThread: (_sessionId) => |
| | 148 | Effect.fail( |
| | 149 | new ProviderAdapterRequestError({ |
| | 150 | provider: PROVIDER, |
| | 151 | method: "thread/read", |
| | 152 | detail: unavailableDetail, |
| | 153 | }), |
| | 154 | ), |
| | 155 | rollbackThread: (_sessionId) => |
| | 156 | Effect.fail( |
| | 157 | new ProviderAdapterRequestError({ |
| | 158 | provider: PROVIDER, |
| | 159 | method: "thread/rollback", |
| | 160 | detail: unavailableDetail, |
| | 161 | }), |
| | 162 | ), |
| | 163 | respondToRequest: (_sessionId) => |
| | 164 | Effect.fail( |
| | 165 | new ProviderAdapterRequestError({ |
| | 166 | provider: PROVIDER, |
| | 167 | method: "item/requestApproval/decision", |
| | 168 | detail: unavailableDetail, |
| | 169 | }), |
| | 170 | ), |
| 129 | stopSession: () => Effect.void, | 171 | stopSession: () => Effect.void, |
| 130 | listSessions: () => Effect.succeed([]), | 172 | listSessions: () => Effect.succeed([]), |
| 131 | hasSession: () => Effect.succeed(false), | 173 | hasSession: () => Effect.succeed(false), |