feat(tools): PythonTool (run_python) — isolated venv Python execution - #35
Merged
Conversation
A first-class SwiftAgentKitTools tool that runs Python 3 in a dedicated venv: ensures the venv exists, pip-installs requested `packages` into it (isolated from system Python), stages `code` to a temp file, runs it with the venv interpreter, and returns stdout/stderr + exit code. requiresConfirmation, configurable venvPath/timeout/maxOutput, wall-clock timeout, macOS-only. Replaces having the model orchestrate venv + pip via raw shell. Tests: confirmation flag; gated live test creates a venv, installs cowsay into it, runs code, and verifies the package landed in the venv (isolation). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a first-class
run_pythontool toSwiftAgentKitTools, so on-device Python is a real capability instead of something the model orchestrates with raw shell commands.PythonTool(venvPath:):packagesinto it (isolated from system Python),codeto a temp file and runs it with the venv interpreter,requiresConfirmation(running code ≈ shell power), configurablevenvPath/timeoutSeconds/maxOutputChars, wall-clock timeout (no pipe deadlock), macOS-only.Tests
pythonToolRequiresConfirmation(hermetic).pythonToolRunsInIsolatedVenv(gated live): creates a temp venv, runsprint('PY_OK', 6*7)→PY_OK 42, installscowsayinto the venv and imports it, and verifies the package is in the venv (not system Python). Passed ~4s. All 131 tests pass.