patchpal 0.21.2__tar.gz → 0.21.3__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.
- {patchpal-0.21.2/patchpal.egg-info → patchpal-0.21.3}/PKG-INFO +27 -1
- {patchpal-0.21.2 → patchpal-0.21.3}/README.md +26 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/__init__.py +1 -1
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/sandbox.py +16 -6
- {patchpal-0.21.2 → patchpal-0.21.3/patchpal.egg-info}/PKG-INFO +27 -1
- {patchpal-0.21.2 → patchpal-0.21.3}/LICENSE +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/MANIFEST.in +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/agent/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/agent/function_calling.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/agent/react.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/autopilot.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/interactive.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/mcp.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/cli/streaming.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/config.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/context.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/permissions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/prompts/react_prompt.md +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/prompts/system_prompt.md +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/skills.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/code_analysis.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/common.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/definitions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/file_reading.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/file_writing.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/find_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/grep_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/image_handler.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/mcp.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/repo_map.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/shell_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/todo_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/tool_schema.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/user_interaction.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal/tools/web_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal.egg-info/SOURCES.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal.egg-info/dependency_links.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal.egg-info/entry_points.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal.egg-info/requires.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/patchpal.egg-info/top_level.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/pyproject.toml +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/setup.cfg +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_agent.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_cli.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_config_dynamic.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_context.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_custom_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_enabled_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_find_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_guardrails.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_image_blocking.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_maximum_security.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_mcp_config.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_memory.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_operational_safety.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_optional_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_permissions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_react.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_reasoning_content.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_repo_map.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_simplified_prompt.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_skills.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_streaming.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.3}/tests/test_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: patchpal
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.3
|
|
4
4
|
Summary: An agentic coding and automation assistant, supporting both local and cloud LLMs
|
|
5
5
|
Author: PatchPal Contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -79,6 +79,32 @@ $ patchpal # start
|
|
|
79
79
|
|
|
80
80
|
> Platform support: Linux, macOS, and Windows are all supported
|
|
81
81
|
|
|
82
|
+
**Alternative: Run with Docker/Podman (no installation required)**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Using pre-built image with patchpal installed (default model)
|
|
86
|
+
docker run -it --rm \
|
|
87
|
+
-v $(pwd):/workspace \
|
|
88
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
89
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
90
|
+
patchpal
|
|
91
|
+
|
|
92
|
+
# Or with Podman
|
|
93
|
+
podman run -it --rm \
|
|
94
|
+
-v $(pwd):/workspace \
|
|
95
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
96
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
97
|
+
patchpal
|
|
98
|
+
|
|
99
|
+
# Specify a different model with --model
|
|
100
|
+
docker run -it --rm \
|
|
101
|
+
-v $(pwd):/workspace \
|
|
102
|
+
-e OPENAI_API_KEY=$OPENAI_API_KEY \
|
|
103
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
104
|
+
patchpal --model openai/gpt-5-mini
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
|
|
82
108
|
## Setup
|
|
83
109
|
0. **Install**: `pip install patchpal`
|
|
84
110
|
1. **Get an API key or a Local LLM Engine**:
|
|
@@ -30,6 +30,32 @@ $ patchpal # start
|
|
|
30
30
|
|
|
31
31
|
> Platform support: Linux, macOS, and Windows are all supported
|
|
32
32
|
|
|
33
|
+
**Alternative: Run with Docker/Podman (no installation required)**
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Using pre-built image with patchpal installed (default model)
|
|
37
|
+
docker run -it --rm \
|
|
38
|
+
-v $(pwd):/workspace \
|
|
39
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
40
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
41
|
+
patchpal
|
|
42
|
+
|
|
43
|
+
# Or with Podman
|
|
44
|
+
podman run -it --rm \
|
|
45
|
+
-v $(pwd):/workspace \
|
|
46
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
47
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
48
|
+
patchpal
|
|
49
|
+
|
|
50
|
+
# Specify a different model with --model
|
|
51
|
+
docker run -it --rm \
|
|
52
|
+
-v $(pwd):/workspace \
|
|
53
|
+
-e OPENAI_API_KEY=$OPENAI_API_KEY \
|
|
54
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
55
|
+
patchpal --model openai/gpt-5-mini
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
|
|
33
59
|
## Setup
|
|
34
60
|
0. **Install**: `pip install patchpal`
|
|
35
61
|
1. **Get an API key or a Local LLM Engine**:
|
|
@@ -247,7 +247,14 @@ def build_container_args(sandbox_args, patchpal_args):
|
|
|
247
247
|
import shlex
|
|
248
248
|
|
|
249
249
|
quoted_args = " ".join(shlex.quote(arg) for arg in patchpal_cmd_args)
|
|
250
|
-
|
|
250
|
+
|
|
251
|
+
# If using pre-built patchpal-sandbox image, skip pip install
|
|
252
|
+
# Otherwise, install patchpal first (fallback for custom images)
|
|
253
|
+
if "patchpal-sandbox" in sandbox_args.image:
|
|
254
|
+
shell_cmd = f"{patchpal_cmd} {quoted_args}"
|
|
255
|
+
else:
|
|
256
|
+
shell_cmd = f"pip install -q patchpal && {patchpal_cmd} {quoted_args}"
|
|
257
|
+
|
|
251
258
|
container_args.extend(["bash", "-c", shell_cmd])
|
|
252
259
|
|
|
253
260
|
return container_args, runtime
|
|
@@ -269,7 +276,7 @@ DESCRIPTION:
|
|
|
269
276
|
- Network access (required for cloud LLMs like OpenAI, Anthropic)
|
|
270
277
|
- No resource limits by default (uses Docker/Podman defaults)
|
|
271
278
|
- Current directory mounted as /workspace
|
|
272
|
-
-
|
|
279
|
+
- Pre-built image with patchpal installed (fast startup)
|
|
273
280
|
- Auto-mounts ~/.patchpal for custom tools, config, and memory
|
|
274
281
|
- Custom tools work automatically (from ~/.patchpal/tools/ and <repo>/.patchpal/tools/)
|
|
275
282
|
- Auto-sets OLLAMA_CONTEXT_LENGTH for Ollama models:
|
|
@@ -279,7 +286,8 @@ DESCRIPTION:
|
|
|
279
286
|
Recommended for autopilot mode and high-risk operations.
|
|
280
287
|
|
|
281
288
|
SCRIPT OPTIONS:
|
|
282
|
-
--image IMAGE Container image to use (default:
|
|
289
|
+
--image IMAGE Container image to use (default: ghcr.io/amaiya/patchpal-sandbox:latest)
|
|
290
|
+
Use python:3.11-slim to get latest patchpal from PyPI (slower startup)
|
|
283
291
|
--no-network Disable network access (incompatible with cloud LLMs)
|
|
284
292
|
--host-network Use host network (for local Ollama/vLLM servers on localhost)
|
|
285
293
|
--memory LIMIT Memory limit (e.g., 2g, 4g) - optional, no limit by default
|
|
@@ -331,8 +339,10 @@ SECURITY:
|
|
|
331
339
|
- Workspace files visible but container has limited privileges
|
|
332
340
|
|
|
333
341
|
NOTES:
|
|
334
|
-
-
|
|
335
|
-
-
|
|
342
|
+
- Default image (ghcr.io/amaiya/patchpal-sandbox:latest) has patchpal pre-installed for fast startup
|
|
343
|
+
- First run downloads the image (~150MB, one-time)
|
|
344
|
+
- Subsequent runs start instantly (no pip install needed)
|
|
345
|
+
- For latest patchpal from PyPI use: --image python:3.11-slim (slower, ~10-30s pip install)
|
|
336
346
|
- Current directory mounted at /workspace (read-write)
|
|
337
347
|
- ~/.patchpal mounted at /root/.patchpal if it exists
|
|
338
348
|
- SSL certificates auto-mounted from /etc/ssl/certs if present
|
|
@@ -411,7 +421,7 @@ def main():
|
|
|
411
421
|
|
|
412
422
|
# Parse sandbox arguments
|
|
413
423
|
parser = argparse.ArgumentParser(add_help=False) # We handle help manually
|
|
414
|
-
parser.add_argument("--image", default="
|
|
424
|
+
parser.add_argument("--image", default="ghcr.io/amaiya/patchpal-sandbox:latest")
|
|
415
425
|
parser.add_argument("--network", default="bridge")
|
|
416
426
|
parser.add_argument("--no-network", action="store_true")
|
|
417
427
|
parser.add_argument("--host-network", action="store_true")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: patchpal
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.3
|
|
4
4
|
Summary: An agentic coding and automation assistant, supporting both local and cloud LLMs
|
|
5
5
|
Author: PatchPal Contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -79,6 +79,32 @@ $ patchpal # start
|
|
|
79
79
|
|
|
80
80
|
> Platform support: Linux, macOS, and Windows are all supported
|
|
81
81
|
|
|
82
|
+
**Alternative: Run with Docker/Podman (no installation required)**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Using pre-built image with patchpal installed (default model)
|
|
86
|
+
docker run -it --rm \
|
|
87
|
+
-v $(pwd):/workspace \
|
|
88
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
89
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
90
|
+
patchpal
|
|
91
|
+
|
|
92
|
+
# Or with Podman
|
|
93
|
+
podman run -it --rm \
|
|
94
|
+
-v $(pwd):/workspace \
|
|
95
|
+
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
|
|
96
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
97
|
+
patchpal
|
|
98
|
+
|
|
99
|
+
# Specify a different model with --model
|
|
100
|
+
docker run -it --rm \
|
|
101
|
+
-v $(pwd):/workspace \
|
|
102
|
+
-e OPENAI_API_KEY=$OPENAI_API_KEY \
|
|
103
|
+
ghcr.io/amaiya/patchpal-sandbox:latest \
|
|
104
|
+
patchpal --model openai/gpt-5-mini
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
|
|
82
108
|
## Setup
|
|
83
109
|
0. **Install**: `pip install patchpal`
|
|
84
110
|
1. **Get an API key or a Local LLM Engine**:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|