)]}'
{
  "commit": "3d3b7fdaddead83ce262377e5c4ce5b2a843066c",
  "tree": "b3932b45cd471fac7943b2905a31b353ffdc0e02",
  "parents": [
    "07df396bdb15cb52edbe59b4bc2c5648c2203781"
  ],
  "author": {
    "name": "Jacob MacDonald",
    "email": "jakemac@google.com",
    "time": "Mon Apr 13 14:11:43 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Apr 13 14:11:43 2026 -0700"
  },
  "message": "Enable roots tools always, collapse under one tool (#440)\n\nFixes https://github.com/dart-lang/ai/issues/439 - and hopefully all future roots issues.\n\nThis enables adding/removing roots at will and will merge those with any roots set by the client.\n\n## Security implications\n\nThe Dart MCP server in general doesn\u0027t perform destructive operations (outside of dart format), so security implications here are light. It does mean that an agent attached to one workspace, can actually interact with other dart projects through the MCP server, but I think that is generally a plus.\n\nEverything is still guarded behind a tool call, so users can choose to not auto-approve based on their agent settings, and any adding/removing of roots will be explicit in that mode.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6d10bd46d9492ca688ef77c9afef225f076a22b7",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/CHANGELOG.md",
      "new_id": "60abf58442ac78a7d90c725f581f0940922119c0",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "fa2a4cfdd7c7ee86587a0023a14cab378da86ecf",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/README.md",
      "new_id": "d03a9f2b057d4f1252502ca46417f8390ba3f850",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/README.md"
    },
    {
      "type": "modify",
      "old_id": "4ab478b73da92b8db9b190539f38ad015d736656",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/lib/src/arg_parser.dart",
      "new_id": "dbe2ed5d88f114508e3223d7b8a0042525edbd7d",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/lib/src/arg_parser.dart"
    },
    {
      "type": "modify",
      "old_id": "6c036ace78cccb4f571ee1657d4318af62d6c541",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/lib/src/mixins/roots_fallback_support.dart",
      "new_id": "b0c22d75373e7ac6d23685a8610c3cf3fa51262c",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/lib/src/mixins/roots_fallback_support.dart"
    },
    {
      "type": "modify",
      "old_id": "8825ee72f7c9d2472b06f3a620b269b1ba4e4826",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/lib/src/server.dart",
      "new_id": "b20dedecf5ce92be5a391a757551b37fdcb9dbdc",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/lib/src/server.dart"
    },
    {
      "type": "modify",
      "old_id": "94b1b3863155718648fdb5f5f35c70bdf27fca5a",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/lib/src/utils/names.dart",
      "new_id": "db1a2fa577342d7173f4d6b3f270281db9174a12",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/lib/src/utils/names.dart"
    },
    {
      "type": "modify",
      "old_id": "5ca15179fb1ad68e917eeeb5dbcebc7e3cf68ed0",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/test/features_configuration_test.dart",
      "new_id": "f66bfd90a84005d39227b4ade3c081e51eabad5a",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/test/features_configuration_test.dart"
    },
    {
      "type": "modify",
      "old_id": "6a5daa316aefe03172b72e74562f6539f86f5d76",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/test/test_harness.dart",
      "new_id": "0ec03cac3d7d28c2604cdaa6321e872569fece08",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/test/test_harness.dart"
    },
    {
      "type": "modify",
      "old_id": "a9cd906b6ef6a1a424483658fd5858009a9b34b6",
      "old_mode": 33188,
      "old_path": "pkgs/dart_mcp_server/test/tools/roots_fallback_support_test.dart",
      "new_id": "29ecbaca4eed6fc75016da3180ddb85a92d490f6",
      "new_mode": 33188,
      "new_path": "pkgs/dart_mcp_server/test/tools/roots_fallback_support_test.dart"
    }
  ]
}
