summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoropencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>2026-04-10 17:27:31 +0000
committeropencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>2026-04-10 17:27:31 +0000
commit59d08683eaa7dce988641c53dbaea3c64f24f58e (patch)
tree91f88f7fdeee5683a8aaa38c1347e8170039a023
parentf7514d9ecaaac58663fe8e3ee94536de80cc2fc9 (diff)
downloadopencode-59d08683eaa7dce988641c53dbaea3c64f24f58e.tar.gz
opencode-59d08683eaa7dce988641c53dbaea3c64f24f58e.zip
chore: generate
-rw-r--r--packages/opencode/src/tool/bash.ts69
-rw-r--r--packages/opencode/test/tool/bash.test.ts4
2 files changed, 37 insertions, 36 deletions
diff --git a/packages/opencode/src/tool/bash.ts b/packages/opencode/src/tool/bash.ts
index 8e79ffd62..abcb9e327 100644
--- a/packages/opencode/src/tool/bash.ts
+++ b/packages/opencode/src/tool/bash.ts
@@ -182,7 +182,6 @@ function prefix(text: string) {
return text.slice(0, match.index)
}
-
function pathArgs(list: Part[], ps: boolean) {
if (!ps) {
return list
@@ -210,7 +209,6 @@ function pathArgs(list: Part[], ps: boolean) {
return out
}
-
function preview(text: string) {
if (text.length <= MAX_METADATA_LENGTH) return text
return text.slice(0, MAX_METADATA_LENGTH) + "\n\n..."
@@ -249,7 +247,6 @@ const ask = Effect.fn("BashTool.ask")(function* (ctx: Tool.Context, scan: Scan)
)
})
-
function cmd(shell: string, name: string, command: string, cwd: string, env: NodeJS.ProcessEnv) {
if (process.platform === "win32" && PS.has(name)) {
return ChildProcess.make(shell, ["-NoLogo", "-NoProfile", "-NonInteractive", "-Command", command], {
@@ -269,7 +266,6 @@ function cmd(shell: string, name: string, command: string, cwd: string, env: Nod
})
}
-
const parser = lazy(async () => {
const { Parser } = await import("web-tree-sitter")
const { default: treeWasm } = await import("web-tree-sitter/tree-sitter.wasm" as string, {
@@ -306,9 +302,9 @@ export const BashTool = Tool.defineEffect(
const plugin = yield* Plugin.Service
const cygpath = Effect.fn("BashTool.cygpath")(function* (shell: string, text: string) {
- const lines = yield* spawner.lines(
- ChildProcess.make(shell, ["-lc", 'cygpath -w -- "$1"', "_", text]),
- ).pipe(Effect.catch(() => Effect.succeed([] as string[])))
+ const lines = yield* spawner
+ .lines(ChildProcess.make(shell, ["-lc", 'cygpath -w -- "$1"', "_", text]))
+ .pipe(Effect.catch(() => Effect.succeed([] as string[])))
const file = lines[0]?.trim()
if (!file) return
return AppFileSystem.normalizePath(file)
@@ -366,7 +362,11 @@ export const BashTool = Tool.defineEffect(
})
const shellEnv = Effect.fn("BashTool.shellEnv")(function* (ctx: Tool.Context, cwd: string) {
- const extra = yield* plugin.trigger("shell.env", { cwd, sessionID: ctx.sessionID, callID: ctx.callID }, { env: {} })
+ const extra = yield* plugin.trigger(
+ "shell.env",
+ { cwd, sessionID: ctx.sessionID, callID: ctx.callID },
+ { env: {} },
+ )
return {
...process.env,
...extra.env,
@@ -477,31 +477,34 @@ export const BashTool = Tool.defineEffect(
.replaceAll("${maxLines}", String(Truncate.MAX_LINES))
.replaceAll("${maxBytes}", String(Truncate.MAX_BYTES)),
parameters: Parameters,
- execute: (params: z.infer<typeof Parameters>, ctx: Tool.Context) =>
- Effect.gen(function* () {
- const cwd = params.workdir
- ? yield* resolvePath(params.workdir, Instance.directory, shell)
- : Instance.directory
- if (params.timeout !== undefined && params.timeout < 0) {
- throw new Error(`Invalid timeout value: ${params.timeout}. Timeout must be a positive number.`)
- }
- const timeout = params.timeout ?? DEFAULT_TIMEOUT
- const ps = PS.has(name)
- const root = yield* parse(params.command, ps)
- const scan = yield* collect(root, cwd, ps, shell)
- if (!Instance.containsPath(cwd)) scan.dirs.add(cwd)
- yield* ask(ctx, scan)
-
- return yield* run({
- shell,
- name,
- command: params.command,
- cwd,
- env: yield* shellEnv(ctx, cwd),
- timeout,
- description: params.description,
- }, ctx)
- }).pipe(Effect.orDie, Effect.runPromise),
+ execute: (params: z.infer<typeof Parameters>, ctx: Tool.Context) =>
+ Effect.gen(function* () {
+ const cwd = params.workdir
+ ? yield* resolvePath(params.workdir, Instance.directory, shell)
+ : Instance.directory
+ if (params.timeout !== undefined && params.timeout < 0) {
+ throw new Error(`Invalid timeout value: ${params.timeout}. Timeout must be a positive number.`)
+ }
+ const timeout = params.timeout ?? DEFAULT_TIMEOUT
+ const ps = PS.has(name)
+ const root = yield* parse(params.command, ps)
+ const scan = yield* collect(root, cwd, ps, shell)
+ if (!Instance.containsPath(cwd)) scan.dirs.add(cwd)
+ yield* ask(ctx, scan)
+
+ return yield* run(
+ {
+ shell,
+ name,
+ command: params.command,
+ cwd,
+ env: yield* shellEnv(ctx, cwd),
+ timeout,
+ description: params.description,
+ },
+ ctx,
+ )
+ }).pipe(Effect.orDie, Effect.runPromise),
}
}
}),
diff --git a/packages/opencode/test/tool/bash.test.ts b/packages/opencode/test/tool/bash.test.ts
index abdc69061..15518fa57 100644
--- a/packages/opencode/test/tool/bash.test.ts
+++ b/packages/opencode/test/tool/bash.test.ts
@@ -19,9 +19,7 @@ const runtime = ManagedRuntime.make(
)
function initBash() {
- return runtime.runPromise(
- BashTool.pipe(Effect.flatMap((info) => Effect.promise(() => info.init()))),
- )
+ return runtime.runPromise(BashTool.pipe(Effect.flatMap((info) => Effect.promise(() => info.init()))))
}
const ctx = {