Help me improve BoltAI

For a bug report, please include the following information:

  • Your OS version.

  • Your BoltAI app version.

  • Are you a Setapp user.

  • The AI provider & model you’re using.

  • Steps to reproduce the issue.

  • The error message

Constant halts using MCP file/directory reads/writes/searches per this:

BoltAI2's MCP file tools are thin wrappers around POSIX file APIs. They're designed for simplicity, not scale. The serializer bottleneck (JSON validation before payload size check) is architectural—it affects ANY tool in this MCP server that uses JSON parameter arrays. The serializer limit is a BoltAI2 server constraint, not a file-tool defect. Even if you swapped the underlying tool, you'd hit the same JSON validation ceiling on the MCP protocol layer. Better Strategy Than Tool Swapping: Instead of replacing BoltAI2's tools, adopt a hybrid workflow: For reads >100 kB: Use ripgrep-based search tools (no size limit on results). For writes >1,500 chars: Pre-split into chunks BEFORE calling edit_file (we're already doing this). For bulk file ops: Use the mcp__directory_tree_17ba7w to get the structure first, then target individual small edits. For escape-sensitive paths with spaces: NEVER use bash; always use the file tool wrappers.

Nigel Protter about 6 hours ago

2
🐛

Bug Reports

Zod schema validation error when Gemini streams tool calls (missing index field)

Description: When using Google Gemini models (gemini-flash-lite-latest, Gemini 2.0 / 2.5) with tool calls enabled (e.g., Web Search via brave_search), streaming responses continuously fail with a Zod invalid_union / invalid_type error. Cause: Google's Gemini OpenAI-compatibility API endpoint drops the index property inside delta.tool_calls[0] when streaming a response. Because BoltAI's streaming parser expects strict OpenAI completion formatting where tool_calls[0].index must be an integer, the schema validation fails and crashes the stream before the function/tool can execute. Raw Error Log: JSON Type validation failed: Value: {"choices":[{"delta":{"role":"assistant","tool_calls":[{"extra_content":{"google":{"thought_signature":"... "}},"function":{"arguments":"{\"query\":\"...\"}","name":"brave_search"},"id":"a4Fsai5e","type":"function"}]},"index":0}],"created":1785262181,"id":"...","model":"models/gemini-flash-lite-latest","object":"chat.completion.chunk","usage":{"completion_tokens":29,"prompt_tokens":651,"total_tokens":680}} Error message: [{"code":"invalid_union","errors":[[{"expected":"number","code":"invalid_type","path":["choices",0,"delta","tool_calls",0,"index"],"message":"Invalid input"}],[{"expected":"object","code":"invalid_type","path":["error"],"message":"Invalid input"}]],"path":[],"message":"Invalid input"}] Suggested Fix: In BoltAI's streaming delta parser schema, make index an optional property inside tool_calls, or fallback to defaulting tool_calls[i].index to 0 when parsing chunks from Google Gemini endpoints.

injectedlinen about 7 hours ago

1
🐛

Bug Reports

Local MCP server 𝐓𝐨𝐨𝐥-𝐂𝐚𝐥𝐥 𝐋𝐨𝐨𝐩 𝐁𝐮𝐠

The hanging behavior is a known technical issue in the integration between the local client application (the chat interface or terminal wrapper) and the LLM API. It is called a Tool-Call Loop Hang. Here is the step-by-step sequence that causes the freeze: AI Initiates Tool: The user requests a file modification or read. The AI generates a tool call (e.g., mcp_edit_file_6lpu9l) and stops generating text, as required by the API protocol. MCP Server Executes: The local MCP server successfully executes the file edit and returns the result (the diff or file contents) to the client application. The Integration Gap (The Hang): In a fully automated integration, the client application is supposed to immediately feed the tool's output back to the LLM to trigger the next text generation turn. However, in this specific client setup, the application fails to auto-trigger the next turn. It pauses and waits. The Wake-Up: Because the client is waiting for the AI, and the AI is waiting for the client to send the tool results, the interface hangs. When the user types any message (e.g., "are you stuck again?"), it forces the client application to package the entire conversation history—including the pending tool results—and send it to the LLM. This instantly wakes the AI up, resulting in the immediate "AI-OK" response. 𝐇𝐨𝐰 𝐭𝐨 𝐅𝐢𝐱 𝐨𝐫 𝐌𝐢𝐭𝐢𝐠𝐚𝐭𝐞 𝐭𝐡𝐞 𝐈𝐬𝐬𝐮𝐞 Client-Side Configuration (Permanent Fix): The developer of the client application or terminal wrapper must update the execution logic. The client must automatically post the tool output back to the LLM API endpoint to request the next completion turn without waiting for manual user input. User Workaround (Immediate Fix): Whenever a tool call completes (you will see the green tool response block in the interface) and the interface pauses for more than 3 seconds, type a single character (such as a period . or go) and press Enter. This forces the client to send the tool results to the LLM and resumes execution instantly. AI Mitigation (Combining Steps): The AI will minimize sequential tool calls where possible, combining reads or edits into single multi-file operations to reduce the number of turn transitions.

Nigel Protter 15 days ago

1
🐛

Bug Reports