Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
12345678910111213141516171819202122232425262728export * as SessionShell from "./shell.js"
import type { Session } from "@opencode/schema/session"import { Effect } from "effect"import { Instance } from "../instance/service.js"import { Plugin } from "../plugin/service.js"import { Shell } from "../shell.js"import { ShellResult } from "../shell/result.js"
export const start = Effect.fn("SessionShell.start")(function* (input: { session: Session.Info; command: string }) { const instances = yield* Instance.Service const shell = yield* Plugin.awaitActivation.pipe(Effect.andThen(Shell.Service), instances.provide(input.session)) const info = yield* shell.create({ command: input.command, cwd: input.session.location.directory, timeout: 0, metadata: { sessionID: input.session.id, background: true }, }) // Keep completion tied to the original shell even if the Session moves. return { info, result: shell.result(info), output: shell .output(info.id, { limit: 1024 * 1024 }) .pipe(Effect.catchTag("Shell.NotFoundError", () => Effect.succeed(ShellResult.unavailable))), }})