patchpal 0.21.7__tar.gz → 0.21.8__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 (66) hide show
  1. {patchpal-0.21.7/patchpal.egg-info → patchpal-0.21.8}/PKG-INFO +2 -2
  2. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/__init__.py +1 -1
  3. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/agent/function_calling.py +24 -6
  4. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/sandbox.py +10 -2
  5. {patchpal-0.21.7 → patchpal-0.21.8/patchpal.egg-info}/PKG-INFO +2 -2
  6. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal.egg-info/requires.txt +1 -1
  7. {patchpal-0.21.7 → patchpal-0.21.8}/pyproject.toml +1 -1
  8. {patchpal-0.21.7 → patchpal-0.21.8}/LICENSE +0 -0
  9. {patchpal-0.21.7 → patchpal-0.21.8}/MANIFEST.in +0 -0
  10. {patchpal-0.21.7 → patchpal-0.21.8}/README.md +0 -0
  11. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/agent/__init__.py +0 -0
  12. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/agent/react.py +0 -0
  13. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/__init__.py +0 -0
  14. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/autopilot.py +0 -0
  15. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/interactive.py +0 -0
  16. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/mcp.py +0 -0
  17. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/cli/streaming.py +0 -0
  18. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/config.py +0 -0
  19. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/context.py +0 -0
  20. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/permissions.py +0 -0
  21. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/prompts/react_prompt.md +0 -0
  22. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/prompts/system_prompt.md +0 -0
  23. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/skills.py +0 -0
  24. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/__init__.py +0 -0
  25. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/code_analysis.py +0 -0
  26. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/common.py +0 -0
  27. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/definitions.py +0 -0
  28. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/file_reading.py +0 -0
  29. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/file_writing.py +0 -0
  30. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/find_tool.py +0 -0
  31. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/grep_tool.py +0 -0
  32. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/image_handler.py +0 -0
  33. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/mcp.py +0 -0
  34. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/repo_map.py +0 -0
  35. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/shell_tools.py +0 -0
  36. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/todo_tools.py +0 -0
  37. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/tool_schema.py +0 -0
  38. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/user_interaction.py +0 -0
  39. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal/tools/web_tools.py +0 -0
  40. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal.egg-info/SOURCES.txt +0 -0
  41. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal.egg-info/dependency_links.txt +0 -0
  42. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal.egg-info/entry_points.txt +0 -0
  43. {patchpal-0.21.7 → patchpal-0.21.8}/patchpal.egg-info/top_level.txt +0 -0
  44. {patchpal-0.21.7 → patchpal-0.21.8}/setup.cfg +0 -0
  45. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_agent.py +0 -0
  46. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_cli.py +0 -0
  47. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_config_dynamic.py +0 -0
  48. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_context.py +0 -0
  49. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_custom_tools.py +0 -0
  50. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_enabled_tools.py +0 -0
  51. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_find_tool.py +0 -0
  52. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_guardrails.py +0 -0
  53. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_image_blocking.py +0 -0
  54. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_maximum_security.py +0 -0
  55. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_mcp_config.py +0 -0
  56. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_memory.py +0 -0
  57. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_operational_safety.py +0 -0
  58. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_optional_tools.py +0 -0
  59. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_permissions.py +0 -0
  60. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_react.py +0 -0
  61. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_reasoning_content.py +0 -0
  62. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_repo_map.py +0 -0
  63. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_simplified_prompt.py +0 -0
  64. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_skills.py +0 -0
  65. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_streaming.py +0 -0
  66. {patchpal-0.21.7 → patchpal-0.21.8}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: patchpal
3
- Version: 0.21.7
3
+ Version: 0.21.8
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
@@ -19,7 +19,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
19
  Requires-Python: >=3.10
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: litellm>=1.0.0
22
+ Requires-Dist: litellm<=1.82.6
23
23
  Requires-Dist: requests>=2.31.0
24
24
  Requires-Dist: beautifulsoup4>=4.12.0
25
25
  Requires-Dist: ddgs>=1.0.0
@@ -1,6 +1,6 @@
1
1
  """PatchPal - An open-source Claude Code clone implemented purely in Python."""
2
2
 
3
- __version__ = "0.21.7"
3
+ __version__ = "0.21.8"
4
4
 
5
5
  from patchpal.agent import create_agent, create_react_agent
6
6
  from patchpal.cli.autopilot import autopilot_loop
@@ -67,13 +67,21 @@ def _setup_bedrock_env():
67
67
  """Set up Bedrock-specific environment variables for LiteLLM.
68
68
 
69
69
  Configures custom region and endpoint URL for AWS Bedrock (including GovCloud and VPC endpoints).
70
- Maps PatchPal's environment variables to LiteLLM's expected format.
70
+ Maps AWS SDK standard variables and PatchPal-specific variables to LiteLLM's expected format.
71
+
72
+ Region precedence:
73
+ 1. AWS_BEDROCK_REGION (PatchPal-specific)
74
+ 2. AWS_REGION (AWS SDK standard)
75
+ 3. AWS_DEFAULT_REGION (AWS SDK standard)
76
+ 4. AWS_REGION_NAME (LiteLLM-specific)
77
+
78
+ Endpoint precedence:
79
+ 1. AWS_BEDROCK_ENDPOINT (PatchPal-specific)
80
+ 2. AWS_ENDPOINT_URL_BEDROCK_RUNTIME (AWS SDK standard, boto3 1.28.0+)
81
+ 3. AWS_ENDPOINT_URL (AWS SDK global, boto3 1.28.0+)
82
+ 4. AWS_BEDROCK_RUNTIME_ENDPOINT (LiteLLM-specific)
71
83
  """
72
84
  # Set custom region (e.g., us-gov-east-1 for GovCloud)
73
- # LiteLLM checks these environment variables in order:
74
- # 1. AWS_REGION_NAME (LiteLLM-specific)
75
- # 2. AWS_REGION (standard AWS)
76
- # 3. AWS_DEFAULT_REGION (standard AWS)
77
85
  bedrock_region = (
78
86
  os.getenv("AWS_BEDROCK_REGION")
79
87
  or os.getenv("AWS_REGION")
@@ -90,7 +98,17 @@ def _setup_bedrock_env():
90
98
  os.environ["AWS_REGION"] = bedrock_region
91
99
 
92
100
  # Set custom endpoint URL (e.g., VPC endpoint or GovCloud endpoint)
93
- bedrock_endpoint = os.getenv("AWS_BEDROCK_ENDPOINT")
101
+ # Check for custom endpoint in order of precedence:
102
+ # 1. AWS_BEDROCK_ENDPOINT (PatchPal-specific)
103
+ # 2. AWS_ENDPOINT_URL_BEDROCK_RUNTIME (AWS SDK standard, boto3 1.28.0+)
104
+ # 3. AWS_ENDPOINT_URL (AWS SDK global endpoint, boto3 1.28.0+)
105
+ # 4. AWS_BEDROCK_RUNTIME_ENDPOINT (LiteLLM-specific)
106
+ bedrock_endpoint = (
107
+ os.getenv("AWS_BEDROCK_ENDPOINT")
108
+ or os.getenv("AWS_ENDPOINT_URL_BEDROCK_RUNTIME")
109
+ or os.getenv("AWS_ENDPOINT_URL")
110
+ or os.getenv("AWS_BEDROCK_RUNTIME_ENDPOINT")
111
+ )
94
112
  if bedrock_endpoint and not os.getenv("AWS_BEDROCK_RUNTIME_ENDPOINT"):
95
113
  os.environ["AWS_BEDROCK_RUNTIME_ENDPOINT"] = bedrock_endpoint
96
114
 
@@ -246,10 +246,10 @@ def build_container_args(sandbox_args, patchpal_args):
246
246
  container_args.extend(["-v", f"{ssl_cert_dir}:{ssl_cert_dir}:ro"])
247
247
  mounted_paths.add(ssl_cert_dir)
248
248
 
249
- # Mount SSL_CERT_FILE and REQUESTS_CA_BUNDLE if set
249
+ # Mount SSL_CERT_FILE, REQUESTS_CA_BUNDLE, and CURL_CA_BUNDLE if set
250
250
  # Map host cert files to /tmp inside container since parent dirs may not exist
251
251
  cert_mapping = {} # Track host path -> container path mappings
252
- for env_var in ["SSL_CERT_FILE", "REQUESTS_CA_BUNDLE"]:
252
+ for env_var in ["SSL_CERT_FILE", "REQUESTS_CA_BUNDLE", "CURL_CA_BUNDLE"]:
253
253
  cert_path = os.environ.get(env_var)
254
254
  if cert_path and os.path.isfile(cert_path):
255
255
  if cert_path not in cert_mapping:
@@ -262,6 +262,14 @@ def build_container_args(sandbox_args, patchpal_args):
262
262
  # Always set the environment variable to point to the container path
263
263
  container_args.extend(["-e", f"{env_var}={cert_mapping[cert_path]}"])
264
264
 
265
+ # Mount SSL_CERT_DIR if set and is a directory
266
+ ssl_cert_dir_env = os.environ.get("SSL_CERT_DIR")
267
+ if ssl_cert_dir_env and os.path.isdir(ssl_cert_dir_env):
268
+ container_cert_dir = "/tmp/ssl-cert-dir"
269
+ container_args.extend(["-v", f"{ssl_cert_dir_env}:{container_cert_dir}:ro"])
270
+ container_args.extend(["-e", f"SSL_CERT_DIR={container_cert_dir}"])
271
+ mounted_paths.add(ssl_cert_dir_env)
272
+
265
273
  # Add image
266
274
  container_args.append(sandbox_args.image)
267
275
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: patchpal
3
- Version: 0.21.7
3
+ Version: 0.21.8
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
@@ -19,7 +19,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
19
  Requires-Python: >=3.10
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
- Requires-Dist: litellm>=1.0.0
22
+ Requires-Dist: litellm<=1.82.6
23
23
  Requires-Dist: requests>=2.31.0
24
24
  Requires-Dist: beautifulsoup4>=4.12.0
25
25
  Requires-Dist: ddgs>=1.0.0
@@ -1,4 +1,4 @@
1
- litellm>=1.0.0
1
+ litellm<=1.82.6
2
2
  requests>=2.31.0
3
3
  beautifulsoup4>=4.12.0
4
4
  ddgs>=1.0.0
@@ -25,7 +25,7 @@ classifiers = [
25
25
  ]
26
26
  requires-python = ">=3.10"
27
27
  dependencies = [
28
- "litellm>=1.0.0",
28
+ "litellm<=1.82.6",
29
29
  "requests>=2.31.0",
30
30
  "beautifulsoup4>=4.12.0",
31
31
  "ddgs>=1.0.0",
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