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.
- {regcode-0.8.0 → regcode-0.8.1}/PKG-INFO +2 -1
- {regcode-0.8.0 → regcode-0.8.1}/pyproject.toml +2 -1
- {regcode-0.8.0 → regcode-0.8.1}/regcode/__init__.py +1 -1
- {regcode-0.8.0 → regcode-0.8.1}/regcode/main.py +7 -11
- {regcode-0.8.0 → regcode-0.8.1}/uv.lock +52 -1
- {regcode-0.8.0 → regcode-0.8.1}/.gitignore +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/.gitlab-ci.yml +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/.python-version +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/.qwen/settings.json +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/AGENTS.md +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/GOALS.md +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/README.md +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/config.yaml.template +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/main.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/cli.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/clipboard.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/config.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/conversation_manager.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/dependencies.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/monty_sandbox.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/paste.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/permissions.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/sandbox.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/__init__.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/base.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/builtins.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/registry.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/review_notes.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/web_crawl.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tools/web_search.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tracing.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/regcode/tui.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/__init__.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/conftest.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_api.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_cli.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_clipboard.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_config.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_context_manager.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_dependencies.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_main.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_monty_sandbox.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_osv_cve.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_provider_extra.py +0 -0
- {regcode-0.8.0 → regcode-0.8.1}/tests/test_review_notes.py +0 -0
- {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.
|
|
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.
|
|
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]
|
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
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
|