)]}'
{
  "log": [
    {
      "commit": "882e7ea7097129ff75e3595b049df585976e12a1",
      "tree": "bdf436800495b973f3b8d808dc4ec9fdc83d4b31",
      "parents": [
        "1f8fe9c0531de311dc3847f766f748da28fc3368"
      ],
      "author": {
        "name": "philip.zeyliger",
        "email": "philip.zeyliger@gmail.com",
        "time": "Fri Jun 20 14:31:16 2025 +0000"
      },
      "committer": {
        "name": "Philip Zeyliger",
        "email": "philip@bold.dev",
        "time": "Fri Jun 20 08:21:42 2025 -0700"
      },
      "message": "loop: preserve cumulative usage across conversation compaction\n\nconversation: add optional CumulativeUsage parameter to New function\n\nUpdate CompactConversation to preserve cumulative usage statistics when\nresetting the conversation, preventing usage numbers from being lost during\ncompaction.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s11dcb84790847494k\n"
    },
    {
      "commit": "a3e28fb8e570ab7e43f84d2f5c5fcecb81d00618",
      "tree": "5469d620466a368eae9f342bd240178e0e0cf57b",
      "parents": [
        "15cc2e75ed6dc840c78bc7f2b2075d40d5f22470"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri May 30 15:53:23 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri May 30 12:34:24 2025 -0700"
      },
      "message": "llm/conversation: fix duplicate tool results in insertMissingToolResults\n\nFix critical bug in insertMissingToolResults function that created duplicate\ntool_result blocks when multiple tool uses were missing results, causing\nClaude API 400 errors with message \"each tool_use must have a single result\".\n\nProblem Analysis:\nThe function was designed to add error tool results for tool uses that\nwere requested but had no corresponding tool_result in the user message\n(e.g., when hitting budget limits). However, when multiple tool uses\nwere missing results, the function incorrectly duplicated results:\n\n1. First iteration: adds tool1 result to prefix, sets msg.Content \u003d [tool1] + original\n2. Second iteration: adds tool2 to prefix, sets msg.Content \u003d [tool1, tool2] + [tool1] + original\n\nThis created duplicate tool_result blocks with the same tool_use_id, violating\nClaude\u0027s API requirements and causing 400 Bad Request errors.\n\nRoot Cause:\nThe msg.Content assignment was inside the loop that builds the prefix:\n\nSolution:\nMove the msg.Content assignment outside the loop, after all missing\ntool results have been collected:\n\nTesting:\nAdded comprehensive test coverage for insertMissingToolResults with scenarios:\n- Single missing tool result\n- Multiple missing tool results (the problematic case)\n- No missing results when results already present\n- No tool uses in previous message\n\nThe test specifically verifies no duplicate tool_use_ids are created\nand that all expected tool results are present exactly once.\n\nThis fix resolves the \"multiple tool_result blocks with id\" error\nthat was occurring in deep conversations with tool usage.\n\nFixes #121\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s07f278af38b745aak"
    },
    {
      "commit": "495c1fa247565e21b36bcb847c6cd3f08e0e196f",
      "tree": "5c7031ad37f4f0181824664f15220f87c7314861",
      "parents": [
        "b6bc113f9ebb00084285e8c3aeaf2fd4a648afc0"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu May 29 00:37:22 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Thu May 29 15:12:53 2025 -0700"
      },
      "message": "claudetool: add just-in-time tool installation for bash commands\n\nImplements automatic tool installation when bash commands use missing tools,\nproviding a seamless experience for the LLM to Just Use tools it knows ought to exist.\n\nCore Features:\n\n1. Command Analysis Pipeline:\n   - Parse bash commands to extract individual tools/programs\n   - Use exec.LookPath to check if tools exist in PATH\n   - Handle shell built-ins, absolute/relative paths correctly\n   - Support complex command chaining with \u0026\u0026, ||, ;, and |\n\n2. Subagent Tool Installation:\n   - Spawn dedicated subagents to install missing tools\n\nThe system preserves existing bash tool behavior while adding invisible\ntool installation. Original commands run regardless of installation\nsuccess/failure, avoiding agent confusion.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s226cd6260a6469e9k\n"
    },
    {
      "commit": "3659d8714d31bad050d36043b67efd76a8d53b77",
      "tree": "2803c54c63628e397e63bdbbe4fa2647a4d5f556",
      "parents": [
        "021557a7d33dacd4fedb9a4677fc93c48569d57a"
      ],
      "author": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Mon May 05 17:52:23 2025 -0700"
      },
      "committer": {
        "name": "David Crawshaw",
        "email": "david@zentus.com",
        "time": "Mon May 05 17:52:27 2025 -0700"
      },
      "message": "all: more gemini key plumbing\n"
    },
    {
      "commit": "4f84ab729ddbf428b0e891940f08f70b4edee05c",
      "tree": "f2e52e4a01c188ada1f5acf8b2a013029b999495",
      "parents": [
        "44f9b4cec11e269a52fbfc099989ab425b8e125f"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 22 16:40:54 2025 -0700"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri May 02 12:57:44 2025 -0700"
      },
      "message": "all: support openai-compatible models\n\nThe support is rather minimal at this point:\nOnly hard-coded models, only -unsafe, only -skabandaddr\u003d\"\".\n\nThe \"shared\" LLM package is strongly Claude-flavored.\n\nWe can fix all of this and more over time, if we are inspired to.\n(Maybe we\u0027ll switch to https://github.com/maruel/genai?)\n\nThe goal for now is to get the rough structure in place.\nI\u0027ve rebased and rebuilt this more times than I care to remember.\n"
    }
  ]
}
