| 812 | |
| 813 | const { read } = yield* registry.named() |
| 814 | const execRead = (args: Parameters<typeof read.execute>[0], extra?: Tool.Context["extra"]) => { |
| 815 | const controller = new AbortController() |
| 816 | return read |
| 817 | .execute(args, { |
| 818 | sessionID: input.sessionID, |
| 819 | abort: controller.signal, |
| 820 | agent: input.agent!, |
| 821 | messageID: info.id, |
| 822 | extra: { bypassCwdCheck: true, ...extra }, |
| 823 | messages: [], |
| 824 | metadata: () => Effect.void, |
| 825 | ask: () => Effect.void, |
| 826 | }) |
| 827 | .pipe(Effect.onInterrupt(() => Effect.sync(() => controller.abort()))) |
| 828 | } |
| 829 | |
| 830 | if (mime === "text/plain") { |
| 831 | let offset: number | undefined |