(fx: () => Effect.Effect<A, E, R>)
| 73 | } |
| 74 | |
| 75 | function withSh<A, E, R>(fx: () => Effect.Effect<A, E, R>) { |
| 76 | return Effect.acquireUseRelease( |
| 77 | Effect.sync(() => { |
| 78 | const prev = process.env.SHELL |
| 79 | process.env.SHELL = "/bin/sh" |
| 80 | Shell.preferred.reset() |
| 81 | return prev |
| 82 | }), |
| 83 | () => fx(), |
| 84 | (prev) => |
| 85 | Effect.sync(() => { |
| 86 | if (prev === undefined) delete process.env.SHELL |
| 87 | else process.env.SHELL = prev |
| 88 | Shell.preferred.reset() |
| 89 | }), |
| 90 | ) |
| 91 | } |
| 92 | |
| 93 | function toolPart(parts: SessionV1.Part[]) { |
| 94 | return parts.find((part): part is SessionV1.ToolPart => part.type === "tool") |
no test coverage detected