Browse Source

Make the MAX_OUTPUT_LENGTH in bash.ts overridable by OPENCODE_EXPERIMENTAL_BASH_MAX_OUTPUT_LENGTH (#4497)

Co-authored-by: Björn Jacobs <bjoern.jacobs.ext@bundesanzeiger.de>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>
cc-bjojac 11 months ago
parent
commit
a9c56b813a
2 changed files with 8 additions and 1 deletions
  1. 2 0
      packages/opencode/src/flag/flag.ts
  2. 6 1
      packages/opencode/src/tool/bash.ts

+ 2 - 0
packages/opencode/src/flag/flag.ts

@@ -11,6 +11,8 @@ export namespace Flag {
   export const OPENCODE_ENABLE_EXPERIMENTAL_MODELS = truthy("OPENCODE_ENABLE_EXPERIMENTAL_MODELS")
   export const OPENCODE_DISABLE_AUTOCOMPACT = truthy("OPENCODE_DISABLE_AUTOCOMPACT")
   export const OPENCODE_FAKE_VCS = process.env["OPENCODE_FAKE_VCS"]
+  export const OPENCODE_EXPERIMENTAL_BASH_MAX_OUTPUT_LENGTH =
+    process.env["OPENCODE_EXPERIMENTAL_BASH_MAX_OUTPUT_LENGTH"]
 
   // Experimental
   export const OPENCODE_EXPERIMENTAL = truthy("OPENCODE_EXPERIMENTAL")

+ 6 - 1
packages/opencode/src/tool/bash.ts

@@ -12,9 +12,14 @@ import { Filesystem } from "@/util/filesystem"
 import { Wildcard } from "@/util/wildcard"
 import { Permission } from "@/permission"
 import { fileURLToPath } from "url"
+import { Flag } from "@/flag/flag.ts"
 import path from "path"
 
-const MAX_OUTPUT_LENGTH = 30_000
+const DEFAULT_MAX_OUTPUT_LENGTH = 30_000
+const MAX_OUTPUT_LENGTH = (() => {
+  const parsed = Number(Flag.OPENCODE_EXPERIMENTAL_BASH_MAX_OUTPUT_LENGTH)
+  return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_OUTPUT_LENGTH
+})()
 const DEFAULT_TIMEOUT = 1 * 60 * 1000
 const MAX_TIMEOUT = 10 * 60 * 1000
 const SIGKILL_TIMEOUT_MS = 200