regcode 0.8.0__tar.gz → 0.8.1__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 (46) hide show
  1. {regcode-0.8.0 → regcode-0.8.1}/PKG-INFO +2 -1
  2. {regcode-0.8.0 → regcode-0.8.1}/pyproject.toml +2 -1
  3. {regcode-0.8.0 → regcode-0.8.1}/regcode/__init__.py +1 -1
  4. {regcode-0.8.0 → regcode-0.8.1}/regcode/main.py +7 -11
  5. {regcode-0.8.0 → regcode-0.8.1}/uv.lock +52 -1
  6. {regcode-0.8.0 → regcode-0.8.1}/.gitignore +0 -0
  7. {regcode-0.8.0 → regcode-0.8.1}/.gitlab-ci.yml +0 -0
  8. {regcode-0.8.0 → regcode-0.8.1}/.python-version +0 -0
  9. {regcode-0.8.0 → regcode-0.8.1}/.qwen/settings.json +0 -0
  10. {regcode-0.8.0 → regcode-0.8.1}/AGENTS.md +0 -0
  11. {regcode-0.8.0 → regcode-0.8.1}/GOALS.md +0 -0
  12. {regcode-0.8.0 → regcode-0.8.1}/README.md +0 -0
  13. {regcode-0.8.0 → regcode-0.8.1}/config.yaml.template +0 -0
  14. {regcode-0.8.0 → regcode-0.8.1}/main.py +0 -0
  15. {regcode-0.8.0 → regcode-0.8.1}/regcode/cli.py +0 -0
  16. {regcode-0.8.0 → regcode-0.8.1}/regcode/clipboard.py +0 -0
  17. {regcode-0.8.0 → regcode-0.8.1}/regcode/config.py +0 -0
  18. {regcode-0.8.0 → regcode-0.8.1}/regcode/conversation_manager.py +0 -0
  19. {regcode-0.8.0 → regcode-0.8.1}/regcode/dependencies.py +0 -0
  20. {regcode-0.8.0 → regcode-0.8.1}/regcode/monty_sandbox.py +0 -0
  21. {regcode-0.8.0 → regcode-0.8.1}/regcode/paste.py +0 -0
  22. {regcode-0.8.0 → regcode-0.8.1}/regcode/permissions.py +0 -0
  23. {regcode-0.8.0 → regcode-0.8.1}/regcode/sandbox.py +0 -0
  24. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/__init__.py +0 -0
  25. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/base.py +0 -0
  26. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/builtins.py +0 -0
  27. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/registry.py +0 -0
  28. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/review_notes.py +0 -0
  29. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/web_crawl.py +0 -0
  30. {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/web_search.py +0 -0
  31. {regcode-0.8.0 → regcode-0.8.1}/regcode/tracing.py +0 -0
  32. {regcode-0.8.0 → regcode-0.8.1}/regcode/tui.py +0 -0
  33. {regcode-0.8.0 → regcode-0.8.1}/tests/__init__.py +0 -0
  34. {regcode-0.8.0 → regcode-0.8.1}/tests/conftest.py +0 -0
  35. {regcode-0.8.0 → regcode-0.8.1}/tests/test_api.py +0 -0
  36. {regcode-0.8.0 → regcode-0.8.1}/tests/test_cli.py +0 -0
  37. {regcode-0.8.0 → regcode-0.8.1}/tests/test_clipboard.py +0 -0
  38. {regcode-0.8.0 → regcode-0.8.1}/tests/test_config.py +0 -0
  39. {regcode-0.8.0 → regcode-0.8.1}/tests/test_context_manager.py +0 -0
  40. {regcode-0.8.0 → regcode-0.8.1}/tests/test_dependencies.py +0 -0
  41. {regcode-0.8.0 → regcode-0.8.1}/tests/test_main.py +0 -0
  42. {regcode-0.8.0 → regcode-0.8.1}/tests/test_monty_sandbox.py +0 -0
  43. {regcode-0.8.0 → regcode-0.8.1}/tests/test_osv_cve.py +0 -0
  44. {regcode-0.8.0 → regcode-0.8.1}/tests/test_provider_extra.py +0 -0
  45. {regcode-0.8.0 → regcode-0.8.1}/tests/test_review_notes.py +0 -0
  46. {regcode-0.8.0 → regcode-0.8.1}/tests/test_web_search.py +0 -0
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: regcode
3
- Version: 0.8.0
3
+ Version: 0.8.1
4
4
  Summary: Minimalistic coding agent with Python API and CLI
5
5
  Requires-Python: >=3.10
6
+ Requires-Dist: boto3>=1.43.40
6
7
  Requires-Dist: click>=8.0
7
8
  Requires-Dist: crawl4ai>=0.4.0
8
9
  Requires-Dist: litellm>=1.83.17
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "regcode"
3
- version = "0.8.0"
3
+ version = "0.8.1"
4
4
  description = "Minimalistic coding agent with Python API and CLI"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -17,6 +17,7 @@ dependencies = [
17
17
  "textual>=2.0.0",
18
18
  "pathspec>=1.1.1",
19
19
  "pyperclip>=1.9.0",
20
+ "boto3>=1.43.40",
20
21
  ]
21
22
 
22
23
  [project.scripts]
@@ -2,4 +2,4 @@ from regcode.config import Config
2
2
  from regcode.main import Agent, AgentStatus, ToolCall
3
3
 
4
4
  __all__ = ["Agent", "Config", "AgentStatus", "ToolCall"]
5
- __version__ = "0.8.0"
5
+ __version__ = "0.8.1"
@@ -5,13 +5,13 @@ from __future__ import annotations
5
5
  import json
6
6
  import logging
7
7
  import sys
8
- import warnings
9
8
  from datetime import datetime, timezone
10
9
  from enum import Enum
11
10
  from pathlib import Path
12
11
  from typing import Any, Callable
13
12
 
14
13
  import litellm
14
+ from pydantic import BaseModel
15
15
 
16
16
  from regcode.config import Config
17
17
  from regcode.conversation_manager import ConversationManager
@@ -432,6 +432,7 @@ class Agent:
432
432
  max_tool_calls: int = 10,
433
433
  messages: list[dict[str, Any]] | None = None,
434
434
  on_text_chunk: Callable[[str], None] | None = None,
435
+ response_format: BaseModel | None = None,
435
436
  ) -> str:
436
437
  """Send a message and get a response, with automatic tool use.
437
438
 
@@ -442,6 +443,7 @@ class Agent:
442
443
  stream: Whether to stream the final response.
443
444
  max_tool_calls: Maximum number of tool call turns.
444
445
  messages: Pre-built message list (overrides 'message' parameter).
446
+ response_format: Pydantic model for formatting the response.
445
447
 
446
448
  Returns:
447
449
  The agent's final response string.
@@ -533,6 +535,8 @@ class Agent:
533
535
  elif self._tool_budget_exhausted:
534
536
  # Explicitly tell the LLM no tools are available
535
537
  completion_kwargs["tool_choice"] = "none"
538
+ if response_format is not None:
539
+ completion_kwargs["response_format"] = response_format
536
540
 
537
541
  response = litellm.completion(**completion_kwargs)
538
542
 
@@ -1343,7 +1347,7 @@ class Agent:
1343
1347
  max_tool_calls: int = 20,
1344
1348
  stream: bool = False,
1345
1349
  extra_instructions: str | None = None,
1346
- review_instruction: str | None = None,
1350
+ response_format: BaseModel | None = None,
1347
1351
  ) -> str:
1348
1352
  """Perform a code review on the given directory.
1349
1353
 
@@ -1366,15 +1370,6 @@ class Agent:
1366
1370
  Returns:
1367
1371
  The agent's review response string.
1368
1372
  """
1369
- if review_instruction is not None:
1370
- warnings.warn(
1371
- "The 'review_instruction' parameter is deprecated; "
1372
- "use 'extra_instructions' instead.",
1373
- DeprecationWarning,
1374
- stacklevel=2,
1375
- )
1376
- if extra_instructions is None:
1377
- extra_instructions = review_instruction
1378
1373
  # Scan the directory structure
1379
1374
  dir_tree = self._scan_directory_tree(code_root_dir)
1380
1375
 
@@ -1398,6 +1393,7 @@ class Agent:
1398
1393
  messages=messages,
1399
1394
  max_tool_calls=max_tool_calls,
1400
1395
  stream=stream,
1396
+ response_format=response_format
1401
1397
  )
1402
1398
 
1403
1399
  def cleanup(self) -> None:
@@ -295,6 +295,34 @@ wheels = [
295
295
  { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" },
296
296
  ]
297
297
 
298
+ [[package]]
299
+ name = "boto3"
300
+ version = "1.43.40"
301
+ source = { registry = "https://pypi.org/simple" }
302
+ dependencies = [
303
+ { name = "botocore" },
304
+ { name = "jmespath" },
305
+ { name = "s3transfer" },
306
+ ]
307
+ sdist = { url = "https://files.pythonhosted.org/packages/3b/43/38cdaf9c7bb50f0922ef87e6b6696c6aa589d978e4311a8287537e84ecf7/boto3-1.43.40.tar.gz", hash = "sha256:a7108b9ce25b8f92d1ce96b9e35090794d5c58b219ff2f6a7a65c8986a4ed6f4", size = 112655, upload-time = "2026-07-03T00:28:26.776Z" }
308
+ wheels = [
309
+ { url = "https://files.pythonhosted.org/packages/d7/3b/2abcc7f47e955a8cb45a6378ec69cd8ed2dcb3d14ceb67717dea020a794a/boto3-1.43.40-py3-none-any.whl", hash = "sha256:5fa80de4b4b7bab383dd8c563e235d51fcc7df4502662af56f0a2472c3c15651", size = 140029, upload-time = "2026-07-03T00:28:25.028Z" },
310
+ ]
311
+
312
+ [[package]]
313
+ name = "botocore"
314
+ version = "1.43.40"
315
+ source = { registry = "https://pypi.org/simple" }
316
+ dependencies = [
317
+ { name = "jmespath" },
318
+ { name = "python-dateutil" },
319
+ { name = "urllib3" },
320
+ ]
321
+ sdist = { url = "https://files.pythonhosted.org/packages/d0/50/269986277f852cc83029bccbdcdc0b343a685cfd570599e58029792808d8/botocore-1.43.40.tar.gz", hash = "sha256:2085a4314cfd2c8bc1d08ab8039f76c92e99278db0d2a0e2437010526d5d5d70", size = 15639899, upload-time = "2026-07-03T00:28:16.125Z" }
322
+ wheels = [
323
+ { url = "https://files.pythonhosted.org/packages/dc/8c/5f7e73fd66b28f0705bc55d7060d41ef72328b656b86ca53e75765b3ba2c/botocore-1.43.40-py3-none-any.whl", hash = "sha256:0bc9d352267c9e48415c5d7bb61ff05c3f193eac2fc7e69cfd229a05fbab67d6", size = 15323870, upload-time = "2026-07-03T00:28:12.56Z" },
324
+ ]
325
+
298
326
  [[package]]
299
327
  name = "brotli"
300
328
  version = "1.2.0"
@@ -1758,6 +1786,15 @@ wheels = [
1758
1786
  { url = "https://files.pythonhosted.org/packages/c8/8d/302cb2057b7513327b4d575cff6b1d066ee6431a5357fc3f8867cd684406/jiter-0.15.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d5d6090cdc1b7c9e780dfb04949a990adb1e301a2fc0bbcee7de4638d33f9a", size = 344469, upload-time = "2026-05-19T10:09:46.864Z" },
1759
1787
  ]
1760
1788
 
1789
+ [[package]]
1790
+ name = "jmespath"
1791
+ version = "1.1.0"
1792
+ source = { registry = "https://pypi.org/simple" }
1793
+ sdist = { url = "https://files.pythonhosted.org/packages/d3/59/322338183ecda247fb5d1763a6cbe46eff7222eaeebafd9fa65d4bf5cb11/jmespath-1.1.0.tar.gz", hash = "sha256:472c87d80f36026ae83c6ddd0f1d05d4e510134ed462851fd5f754c8c3cbb88d", size = 27377, upload-time = "2026-01-22T16:35:26.279Z" }
1794
+ wheels = [
1795
+ { url = "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", hash = "sha256:a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", size = 20419, upload-time = "2026-01-22T16:35:24.919Z" },
1796
+ ]
1797
+
1761
1798
  [[package]]
1762
1799
  name = "joblib"
1763
1800
  version = "1.5.3"
@@ -3823,9 +3860,10 @@ wheels = [
3823
3860
 
3824
3861
  [[package]]
3825
3862
  name = "regcode"
3826
- version = "0.8.0"
3863
+ version = "0.8.1"
3827
3864
  source = { editable = "." }
3828
3865
  dependencies = [
3866
+ { name = "boto3" },
3829
3867
  { name = "click" },
3830
3868
  { name = "crawl4ai" },
3831
3869
  { name = "litellm" },
@@ -3842,6 +3880,7 @@ dependencies = [
3842
3880
 
3843
3881
  [package.metadata]
3844
3882
  requires-dist = [
3883
+ { name = "boto3", specifier = ">=1.43.40" },
3845
3884
  { name = "click", specifier = ">=8.0" },
3846
3885
  { name = "crawl4ai", specifier = ">=0.4.0" },
3847
3886
  { name = "litellm", specifier = ">=1.83.17" },
@@ -4313,6 +4352,18 @@ wheels = [
4313
4352
  { url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size = 11343498, upload-time = "2026-06-25T17:20:35.03Z" },
4314
4353
  ]
4315
4354
 
4355
+ [[package]]
4356
+ name = "s3transfer"
4357
+ version = "0.19.0"
4358
+ source = { registry = "https://pypi.org/simple" }
4359
+ dependencies = [
4360
+ { name = "botocore" },
4361
+ ]
4362
+ sdist = { url = "https://files.pythonhosted.org/packages/f6/94/dcdaeb1713cab9c84def276cfac7388b17c7d9855bbcfe88d77e4dbafd44/s3transfer-0.19.0.tar.gz", hash = "sha256:ce436931687addc4c1712d52d40b32f53e88315723f107ffa20ba82b05a0f685", size = 165171, upload-time = "2026-06-16T19:44:51.599Z" }
4363
+ wheels = [
4364
+ { url = "https://files.pythonhosted.org/packages/46/5f/4c174edad94f82de888ac00a5ddd8d07b35609b6c94f0bdf4d74af57703e/s3transfer-0.19.0-py3-none-any.whl", hash = "sha256:777cc2415536f1debadb5c2ef7779275d0fc0fe0e042411cdd6caebeb2685262", size = 90101, upload-time = "2026-06-16T19:44:50.439Z" },
4365
+ ]
4366
+
4316
4367
  [[package]]
4317
4368
  name = "scikit-learn"
4318
4369
  version = "1.7.2"
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