recursive-agent 0.8.2

A Rust coding-agent platform: kernel, tools, multi-agent orchestration, HTTP API, MCP, and TUI
Documentation
{
  "_comment": "Fixtures for 17-loop-mode.yaml — schedule_wakeup multi-turn loop. Turn 1 ONLY schedules a wakeup and ends; the wakeup turn (turn 2) writes the output file and ends. Three authoring rules that bite here: (1) arg names must match the schedule_wakeup tool spec — delay_secs/reason/prompt, NOT the legacy seconds/message. A mismatch silently defaults delay_secs to the tool's unwrap_or(60), making the suite sleep 60s. (2) userMessage keys off the LATEST user message, so the wakeup turn (whose latest user msg is the schedule_wakeup prompt, not the goal) needs its own substring ('Continue') absent from the goal. (3) the loop shares the transcript across turns, so turn 2's first call already has hasToolResult=true from turn 1's schedule_wakeup result.",
  "fixtures": [
    {
      "_comment": "Turn 1, LLM call 0: agent schedules an immediate wakeup (goal is latest user msg, no tool result yet)",
      "match": { "userMessage": "multi-loop.txt", "turnIndex": 0, "hasToolResult": false },
      "response": {
        "toolCalls": [
          {
            "name": "schedule_wakeup",
            "arguments": {
              "delay_secs": 1,
              "reason": "continue to write the output file next turn",
              "prompt": "Continue: now write multi-loop.txt with content 'wakeup-done'"
            }
          }
        ]
      }
    },
    {
      "_comment": "Turn 1, LLM call 1 (after schedule_wakeup result): agent ends turn 1 with a closing message (NoMoreToolCalls) so the loop can reschedule",
      "match": { "userMessage": "multi-loop.txt", "turnIndex": 1, "hasToolResult": true },
      "response": {
        "content": "Scheduled a wakeup; I'll write the file on the next turn."
      }
    },
    {
      "_comment": "Turn 2 (wakeup), LLM call 2: latest user msg is the wakeup prompt ('Continue…'), transcript already has turn 1's tool result, so hasToolResult=true",
      "match": { "userMessage": "Continue", "turnIndex": 2, "hasToolResult": true },
      "response": {
        "toolCalls": [
          {
            "name": "write_file",
            "arguments": { "path": "multi-loop.txt", "contents": "wakeup-done" }
          }
        ]
      }
    },
    {
      "_comment": "Turn 2, LLM call 3 (after write_file result): agent finishes without another wakeup, so the loop ends cleanly",
      "match": { "userMessage": "Continue", "turnIndex": 3, "hasToolResult": true },
      "response": {
        "content": "Done! Wrote multi-loop.txt. No further wakeup needed."
      }
    }
  ]
}