Skip to content

Wisp param resilience, subagent max_iterations, and shared volume fixes#274

Merged
rockfordlhotka merged 1 commit intomainfrom
wisp-resilience-and-subagent-iterations
Apr 15, 2026
Merged

Wisp param resilience, subagent max_iterations, and shared volume fixes#274
rockfordlhotka merged 1 commit intomainfrom
wisp-resilience-and-subagent-iterations

Conversation

@rockfordlhotka
Copy link
Copy Markdown
Member

Summary

  • Wisp param resilience: LLMs consistently put MCP tool arguments in wrong fields (input, arguments, input_from instead of params). WispStep.ResolvedParams now checks all plausible fields and rescues JSON objects from input_from. MCP gateway rejects steps with no params with an actionable error message.
  • Subagent max_iterations override: Primary agent can now pass max_iterations to spawn_subagent to elevate the iteration cap for heavy tasks. Flows through AsyncLocal so the singleton FunctionInvokingChatClient picks it up per-request.
  • Shared volume file permissions: Files written by wisps and file_write are now 666 so script containers and MCP servers running as different users can overwrite them.
  • Script tool guide: Strengthened to emphasize absolute paths via ROCKBOT_SHARED_PATH and call out the wisp output_to → script relative path trap.
  • Subagent preamble: Now coaches subagents to use spawn_wisps for repetitive parallel work.

Test plan

  • All 800+ existing tests pass
  • New tests for wisp input/arguments/input_from aliases (deserialization + gateway routing)
  • New tests for max_iterations parsing in SpawnSubagentExecutor
  • Deployed to k8s and verified wisps succeed with params field
  • Verified script containers can read/write shared volume files

🤖 Generated with Claude Code

…olume fixes

Wisps failed consistently because LLMs put MCP tool arguments in the wrong
JSON field (input, arguments, input_from instead of params). Rather than
chasing each alias, WispStep.ResolvedParams now checks all plausible fields
including rescuing JSON objects from input_from. MCP gateway rejects steps
with no params at all with an actionable error message.

Subagents hitting the 25-iteration cap on large tasks can now be spawned
with max_iterations to override the model default. The override flows
through an AsyncLocal context so the singleton FunctionInvokingChatClient
picks it up per-request.

Files written to the shared volume by wisps and file_write are now
world-writable (666) so script containers and MCP servers running as
different users can overwrite them. Script tool guide strengthened to
emphasize absolute paths via ROCKBOT_SHARED_PATH.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rockfordlhotka rockfordlhotka merged commit 818ae27 into main Apr 15, 2026
2 checks passed
@rockfordlhotka rockfordlhotka deleted the wisp-resilience-and-subagent-iterations branch April 15, 2026 04:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant