patchpal 0.21.2__tar.gz → 0.21.4__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.4}/PKG-INFO +27 -1
- {patchpal-0.21.2 → patchpal-0.21.4}/README.md +26 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/__init__.py +1 -1
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/sandbox.py +30 -15
- {patchpal-0.21.2 → patchpal-0.21.4/patchpal.egg-info}/PKG-INFO +27 -1
- {patchpal-0.21.2 → patchpal-0.21.4}/LICENSE +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/MANIFEST.in +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/agent/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/agent/function_calling.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/agent/react.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/autopilot.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/interactive.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/mcp.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/cli/streaming.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/config.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/context.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/permissions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/prompts/react_prompt.md +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/prompts/system_prompt.md +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/skills.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/__init__.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/code_analysis.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/common.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/definitions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/file_reading.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/file_writing.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/find_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/grep_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/image_handler.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/mcp.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/repo_map.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/shell_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/todo_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/tool_schema.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/user_interaction.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal/tools/web_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal.egg-info/SOURCES.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal.egg-info/dependency_links.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal.egg-info/entry_points.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal.egg-info/requires.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/patchpal.egg-info/top_level.txt +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/pyproject.toml +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/setup.cfg +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_agent.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_cli.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_config_dynamic.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_context.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_custom_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_enabled_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_find_tool.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_guardrails.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_image_blocking.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_maximum_security.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_mcp_config.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_memory.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_operational_safety.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_optional_tools.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_permissions.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_react.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_reasoning_content.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_repo_map.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_simplified_prompt.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_skills.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/tests/test_streaming.py +0 -0
- {patchpal-0.21.2 → patchpal-0.21.4}/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.4
|
|
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
|
|
@@ -314,8 +322,9 @@ ENVIRONMENT VARIABLES:
|
|
|
314
322
|
# Custom endpoints (optional)
|
|
315
323
|
OPENAI_BASE_URL=https://your-proxy.com/v1
|
|
316
324
|
|
|
317
|
-
# Disable permissions for
|
|
318
|
-
|
|
325
|
+
# Optional: Disable permissions for interactive mode
|
|
326
|
+
# (Not needed for autopilot - it disables permissions automatically)
|
|
327
|
+
# PATCHPAL_REQUIRE_PERMISSION=false
|
|
319
328
|
|
|
320
329
|
Note: SSL_CERT_FILE and REQUESTS_CA_BUNDLE paths are auto-mounted if they exist.
|
|
321
330
|
|
|
@@ -329,10 +338,15 @@ SECURITY:
|
|
|
329
338
|
- No resource limits by default (trust Docker/Podman and OS limits)
|
|
330
339
|
- Clean environment on each run (--rm flag)
|
|
331
340
|
- Workspace files visible but container has limited privileges
|
|
341
|
+
- Permissions behavior:
|
|
342
|
+
* Interactive mode (default): Permissions ENABLED (prompts before operations)
|
|
343
|
+
* Autopilot mode: Permissions DISABLED automatically (autonomous operation)
|
|
332
344
|
|
|
333
345
|
NOTES:
|
|
334
|
-
-
|
|
335
|
-
-
|
|
346
|
+
- Default image (ghcr.io/amaiya/patchpal-sandbox:latest) has patchpal pre-installed for fast startup
|
|
347
|
+
- First run downloads the image (~150MB, one-time)
|
|
348
|
+
- Subsequent runs start instantly (no pip install needed)
|
|
349
|
+
- For latest patchpal from PyPI use: --image python:3.11-slim (slower, ~10-30s pip install)
|
|
336
350
|
- Current directory mounted at /workspace (read-write)
|
|
337
351
|
- ~/.patchpal mounted at /root/.patchpal if it exists
|
|
338
352
|
- SSL certificates auto-mounted from /etc/ssl/certs if present
|
|
@@ -356,17 +370,18 @@ CORPORATE NETWORKS (Linux/WSL):
|
|
|
356
370
|
You may need to add certificates to Docker Desktop's trusted CAs.
|
|
357
371
|
|
|
358
372
|
EXAMPLES:
|
|
359
|
-
# Cloud LLM: Load API keys from .env file
|
|
360
|
-
patchpal-sandbox --env-file .env -- --model openai/gpt-5.2-codex
|
|
361
|
-
patchpal-sandbox --env-file ~/.config/patchpal/.env -- --model anthropic/claude-sonnet-4-5
|
|
362
373
|
|
|
363
|
-
#
|
|
374
|
+
# Interactive mode - permissions ENABLED (prompts before operations)
|
|
364
375
|
patchpal-sandbox -- --model anthropic/claude-sonnet-4-5
|
|
365
376
|
|
|
366
|
-
#
|
|
367
|
-
patchpal-sandbox --env-file .env --
|
|
377
|
+
# Interactive mode - load API keys from .env file
|
|
378
|
+
patchpal-sandbox --env-file .env -- --model openai/gpt-5.2-codex
|
|
379
|
+
patchpal-sandbox --env-file ~/.config/patchpal/.env -- --model anthropic/claude-sonnet-4-5
|
|
380
|
+
|
|
381
|
+
# AutoPilot mode - permissions automatically DISABLED
|
|
382
|
+
patchpal-sandbox -- autopilot --model openai/gpt-5-mini --prompt "Add error handling to auth.py" --completion-promise "COMPLETE"
|
|
368
383
|
|
|
369
|
-
# AutoPilot
|
|
384
|
+
# AutoPilot mode - read file containing prompt and and .env file
|
|
370
385
|
patchpal-sandbox --env-file .env -- autopilot --model openai/gpt-5.2-codex --prompt-file task.md --completion-promise "DONE"
|
|
371
386
|
|
|
372
387
|
# Ollama: Linux/WSL requires host network to reach Ollama on localhost
|
|
@@ -411,7 +426,7 @@ def main():
|
|
|
411
426
|
|
|
412
427
|
# Parse sandbox arguments
|
|
413
428
|
parser = argparse.ArgumentParser(add_help=False) # We handle help manually
|
|
414
|
-
parser.add_argument("--image", default="
|
|
429
|
+
parser.add_argument("--image", default="ghcr.io/amaiya/patchpal-sandbox:latest")
|
|
415
430
|
parser.add_argument("--network", default="bridge")
|
|
416
431
|
parser.add_argument("--no-network", action="store_true")
|
|
417
432
|
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.4
|
|
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
|