| 150 | }) |
| 151 | }, |
| 152 | getAssistant(messageID) { |
| 153 | return Effect.gen(function* () { |
| 154 | const row = yield* db |
| 155 | .select() |
| 156 | .from(SessionMessageTable) |
| 157 | .where( |
| 158 | and( |
| 159 | eq(SessionMessageTable.id, messageID), |
| 160 | eq(SessionMessageTable.session_id, event.data.sessionID), |
| 161 | eq(SessionMessageTable.type, "assistant"), |
| 162 | ), |
| 163 | ) |
| 164 | .get() |
| 165 | .pipe(Effect.orDie) |
| 166 | if (!row) return |
| 167 | const message = decodeRow(row) |
| 168 | return message.type === "assistant" ? message : undefined |
| 169 | }) |
| 170 | }, |
| 171 | getCurrentShell(callID) { |
| 172 | return Effect.gen(function* () { |
| 173 | const rows = yield* db |