adding fallback to --system-prompt-file when --system-prompt is too long

This commit is contained in:
Mohammed Alshoura 2025-12-17 17:25:25 -05:00
parent 91e65b1927
commit f660af121e

View file

@ -335,6 +335,28 @@ class SubprocessCLITransport(Transport):
# Check if command line is too long (Windows limitation)
cmd_str = " ".join(cmd)
if len(cmd_str) > _CMD_LENGTH_LIMIT and "--system-prompt" in cmd:
# Handle large --system-prompt by switching to --system-prompt-file
try:
sp_idx = cmd.index("--system-prompt")
sp_value = cmd[sp_idx + 1]
if len(sp_value) > _CMD_LENGTH_LIMIT // 2:
temp_file = tempfile.NamedTemporaryFile(
mode="w", suffix=".txt", delete=False, encoding="utf-8"
)
temp_file.write(sp_value)
temp_file.close()
self._temp_files.append(temp_file.name)
# Replace --system-prompt with --system-prompt-file
cmd[sp_idx] = "--system-prompt-file"
cmd[sp_idx + 1] = temp_file.name
logger.info(
f"System prompt length ({len(sp_value)}) exceeds limit. "
f"Using --system-prompt-file: {temp_file.name}"
)
except (ValueError, IndexError) as e:
logger.warning(f"Failed to optimize system prompt length: {e}")
if len(cmd_str) > _CMD_LENGTH_LIMIT and self._options.agents:
# Command is too long - use temp file for agents
# Find the --agents argument and replace its value with @filepath