inspect-swe 0.2.6__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/PKG-INFO +1 -1
  2. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/claude_code.py +25 -9
  3. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_version.py +2 -2
  4. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/.gitignore +0 -0
  5. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/LICENSE +0 -0
  6. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/README.md +0 -0
  7. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/pyproject.toml +0 -0
  8. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/__init__.py +0 -0
  9. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/__init__.py +0 -0
  10. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/install/__init__.py +0 -0
  11. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/install/cache.py +0 -0
  12. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/install/download.py +0 -0
  13. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_claude_code/install/install.py +0 -0
  14. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_registry.py +0 -0
  15. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_tools/__init__.py +0 -0
  16. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_tools/download.py +0 -0
  17. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/__init__.py +0 -0
  18. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/_async.py +0 -0
  19. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/_yaml.py +0 -0
  20. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/appdirs.py +0 -0
  21. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/checksum.py +0 -0
  22. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/constants.py +0 -0
  23. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/download.py +0 -0
  24. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/platform.py +0 -0
  25. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/sandbox.py +0 -0
  26. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/_util/trace.py +0 -0
  27. {inspect_swe-0.2.6 → inspect_swe-0.2.7}/src/inspect_swe/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: inspect_swe
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Software engineering agents for Inspect AI.
5
5
  Project-URL: Documentation, https://meridianlabs-ai.github.io/inspect_swe/
6
6
  Project-URL: Source Code, https://github.com/meridianlabs-ai/inspect_swe
@@ -29,6 +29,8 @@ def claude_code(
29
29
  """),
30
30
  system_prompt: str | None = None,
31
31
  mcp_servers: Sequence[MCPServerConfig] | None = None,
32
+ allowed_tools: list[str] | None = None,
33
+ disallowed_tools: list[str] | None = None,
32
34
  attempts: int | AgentAttempts = 1,
33
35
  model: str | None = None,
34
36
  small_model: str | None = None,
@@ -43,6 +45,8 @@ def claude_code(
43
45
 
44
46
  The agent can either use a version of Claude Code installed in the sandbox, or can download a version and install it in the sandbox (see docs on `version` option below for details).
45
47
 
48
+ Use `allowed_tools` and `disallowed_tools` to control access to tools. See [Tools available to Claude](https://docs.anthropic.com/en/docs/claude-code/settings#tools-available-to-claude) for the list of built-in tools and [How to use Allowed Tools in Claude Code](https://www.instructa.ai/blog/claude-code/how-to-use-allowed-tools-in-claude-code) for details on the supported syntax. Note that `allowed_tools` enables you to filter allowed parameter values and `disallowed_tools` enables you to remove tools entirely. In other words, `allowed_tools` is not a complete list of what tools are available but rather just filters on tool parameters---to remove tools you need to explicitly set `disallowed_tools`.
49
+
46
50
  Use the `attempts` option to enable additional submissions if the initial
47
51
  submission(s) are incorrect (by default, no additional attempts are permitted).
48
52
 
@@ -51,6 +55,8 @@ def claude_code(
51
55
  description: Agent description (used in multi-agent systems with `as_tool()` and `handoff()`)
52
56
  system_prompt: Additional system prompt to append to default system prompt.
53
57
  mcp_servers: MCP servers to make available to the agent.
58
+ allowed_tools: Parameter filters for built-in tools.
59
+ disallowed_tools: List of tool names to disallow entirely.
54
60
  attempts: Configure agent to make multiple attempts.
55
61
  model: Model name to use for Opus and Sonnet calls (defaults to main model for task).
56
62
  small_model: Model to use for Haiku calls (defaults to main model for task).
@@ -99,8 +105,19 @@ def claude_code(
99
105
  cmd.extend(["--append-system-prompt", "\n\n".join(system_messages)])
100
106
 
101
107
  # mcp servers
108
+ cmd_allowed_tools = allowed_tools or []
102
109
  if mcp_servers:
103
- cmd.extend(mcp_server_args(mcp_servers))
110
+ mcp_server_args, mcp_allowed_tools = resolve_mcp_servers(mcp_servers)
111
+ cmd.extend(mcp_server_args)
112
+ cmd_allowed_tools.extend(mcp_allowed_tools)
113
+
114
+ # add allowed and disallowed tools
115
+ if len(cmd_allowed_tools) > 0:
116
+ cmd.append("--allowed-tools")
117
+ cmd.append(",".join(cmd_allowed_tools))
118
+ if disallowed_tools is not None and len(disallowed_tools) > 0:
119
+ cmd.append("--disallowed-tools")
120
+ cmd.append(",".join(disallowed_tools))
104
121
 
105
122
  # user prompt
106
123
  prompt = "\n\n".join(
@@ -174,7 +191,9 @@ def claude_code(
174
191
  return agent_with(execute, name=name, description=description)
175
192
 
176
193
 
177
- def mcp_server_args(mcp_servers: Sequence[MCPServerConfig]) -> list[str]:
194
+ def resolve_mcp_servers(
195
+ mcp_servers: Sequence[MCPServerConfig],
196
+ ) -> tuple[list[str], list[str]]:
178
197
  # build servers and allowed tools
179
198
  mcp_servers_json: dict[str, dict[str, Any]] = {}
180
199
  allowed_tools: list[str] = []
@@ -194,14 +213,11 @@ def mcp_server_args(mcp_servers: Sequence[MCPServerConfig]) -> list[str]:
194
213
  )
195
214
 
196
215
  # map to cli args
197
- cmds: list[str] = []
216
+ mcp_config_cmds: list[str] = []
198
217
  if len(mcp_servers_json) > 0:
199
- cmds.append("--mcp-config")
200
- cmds.append(
218
+ mcp_config_cmds.append("--mcp-config")
219
+ mcp_config_cmds.append(
201
220
  to_json({"mcpServers": mcp_servers_json}, exclude_none=True).decode()
202
221
  )
203
- if len(allowed_tools):
204
- cmds.append("--allowed-tools")
205
- cmds.append(",".join(allowed_tools))
206
222
 
207
- return cmds
223
+ return mcp_config_cmds, allowed_tools
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.2.6'
32
- __version_tuple__ = version_tuple = (0, 2, 6)
31
+ __version__ = version = '0.2.7'
32
+ __version_tuple__ = version_tuple = (0, 2, 7)
33
33
 
34
34
  __commit_id__ = commit_id = None
File without changes
File without changes
File without changes
File without changes