From 2dda9803baad12299b2336c58194c2d424d235ef Mon Sep 17 00:00:00 2001 From: "J.A.R.V.I.S." Date: Thu, 4 Jun 2026 22:17:52 +0300 Subject: [PATCH] fix: configurable terminal output truncation to prevent context blowup Root cause: fix_full_output() had hardcoded 1M char threshold (~250K tokens). A grep through minified JS produced 1MB output, exceeding LLM context limits. Changes: - Add max_output_chars config (default: 30000 chars ~ 7.5K tokens) - Patch fix_full_output() to read from plugin config - Add max_output_chars to _get_config() Also patched usr/plugins/tree_sitter (local, gitignored) with .gitignore awareness + default ignore dirs for build_index. --- plugins/_code_execution/default_config.yaml | 3 +++ plugins/_code_execution/tools/code_execution_tool.py | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/_code_execution/default_config.yaml b/plugins/_code_execution/default_config.yaml index 4858a65b28..8cc4f56265 100644 --- a/plugins/_code_execution/default_config.yaml +++ b/plugins/_code_execution/default_config.yaml @@ -37,3 +37,6 @@ dialog_patterns: | yes/no :\s*$ \?\s*$ + +# Maximum terminal output size in characters before truncation (default: 30000 ≈ ~7.5K tokens) +max_output_chars: 30000 diff --git a/plugins/_code_execution/tools/code_execution_tool.py b/plugins/_code_execution/tools/code_execution_tool.py index 7441001d61..5e8424bf68 100644 --- a/plugins/_code_execution/tools/code_execution_tool.py +++ b/plugins/_code_execution/tools/code_execution_tool.py @@ -472,7 +472,9 @@ def get_heading_from_output(self, output: str, skip_lines=0, done=False): def fix_full_output(self, output: str): output = re.sub(r"(? str | None: @@ -550,6 +552,7 @@ def _get_config(agent) -> dict: "output_timeouts": _parse_timeouts(cfg, "output", (120, 60, 600, 5)), "prompt_patterns": _parse_patterns(cfg.get("prompt_patterns", "")), "dialog_patterns": _parse_patterns(cfg.get("dialog_patterns", ""), re.IGNORECASE), + "max_output_chars": int(cfg.get("max_output_chars", 30000)), }