codejury 0.14.3__tar.gz → 0.14.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.
- {codejury-0.14.3 → codejury-0.14.4}/PKG-INFO +1 -1
- {codejury-0.14.3 → codejury-0.14.4}/codejury/repo/model.py +4 -1
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/PKG-INFO +1 -1
- {codejury-0.14.3 → codejury-0.14.4}/pyproject.toml +1 -1
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_repo_model.py +21 -0
- {codejury-0.14.3 → codejury-0.14.4}/LICENSE +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/README.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/__init__.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/cli.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/agent/full-review.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/agent/security-review-memory.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/entrypoints.yaml +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/SKILL.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/business-logic.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/code-injection.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/command-injection.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/cross-site-request-forgery.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/cross-site-scripting.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/hardcoded-secrets.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/http-response-splitting.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/improper-authentication.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/information-exposure.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/insecure-cryptography.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/insecure-deserialization.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/insecure-direct-object-reference.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/insecure-transport.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/jwt-validation.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/mass-assignment.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/missing-authorization.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/open-redirect.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/path-traversal.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/race-condition.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/replay-attack.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/server-side-request-forgery.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/server-side-template-injection.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/session-fixation.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/sql-injection.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/data/rules/xml-external-entity.md +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/__init__.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/debate.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/debate_prompts.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/engine.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/findings_filter.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/prompts.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/rules.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/diff/runner.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/domain/__init__.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/domain/finding.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/json_parse.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/__init__.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/anthropic.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/base.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/factory.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/litellm.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/mock.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/openai.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/openai_format.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/providers/retry.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/repo/__init__.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/repo/scaffold.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/report.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury/resources.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/SOURCES.txt +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/dependency_links.txt +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/entry_points.txt +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/requires.txt +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/codejury.egg-info/top_level.txt +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/setup.cfg +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_anthropic_provider.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_cli_audit.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_diff_debate.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_diff_engine.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_json_parse.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_litellm_provider.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_openai_format.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_openai_provider.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_repo_scaffold.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_report.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_retry_provider.py +0 -0
- {codejury-0.14.3 → codejury-0.14.4}/tests/test_rules.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codejury
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.4
|
|
4
4
|
Summary: AI code security review: an adversarial diff-audit engine and an agent-driven whole-repo review methodology, with security knowledge as rich rules
|
|
5
5
|
Author: AISecLabs
|
|
6
6
|
License-Expression: MIT
|
|
@@ -86,7 +86,10 @@ def build_repo_model(root: str | Path, files: dict[str, str], *, signatures: _Si
|
|
|
86
86
|
tree = ast.parse(content)
|
|
87
87
|
except SyntaxError:
|
|
88
88
|
continue
|
|
89
|
-
|
|
89
|
+
# an entrypoint must name a reviewable handler function; drop entries
|
|
90
|
+
# with no resolvable function (a Django include() mount, or a view the
|
|
91
|
+
# AST scan cannot resolve) so the seeded inventory stays clean
|
|
92
|
+
entrypoints.extend(e for e in _entrypoints_in(path, tree, sigs) if e.function)
|
|
90
93
|
return RepoModel(root=str(root), files=tuple(sorted(files)), entrypoints=tuple(entrypoints))
|
|
91
94
|
|
|
92
95
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codejury
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.4
|
|
4
4
|
Summary: AI code security review: an adversarial diff-audit engine and an agent-driven whole-repo review methodology, with security knowledge as rich rules
|
|
5
5
|
Author: AISecLabs
|
|
6
6
|
License-Expression: MIT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codejury"
|
|
3
|
-
version = "0.14.
|
|
3
|
+
version = "0.14.4"
|
|
4
4
|
description = "AI code security review: an adversarial diff-audit engine and an agent-driven whole-repo review methodology, with security knowledge as rich rules"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -59,6 +59,19 @@ urlpatterns = [
|
|
|
59
59
|
]
|
|
60
60
|
'''
|
|
61
61
|
|
|
62
|
+
# include() mounts and class-based views resolve to no handler function: noise
|
|
63
|
+
DJANGO_NOISE = '''
|
|
64
|
+
from django.urls import path, include
|
|
65
|
+
from .views import DashboardView
|
|
66
|
+
|
|
67
|
+
urlpatterns = [
|
|
68
|
+
path("", include("app.urls")),
|
|
69
|
+
path("accounts/", include("allauth.urls")),
|
|
70
|
+
path("profile/", views.profile),
|
|
71
|
+
path("dash/", DashboardView.as_view()),
|
|
72
|
+
]
|
|
73
|
+
'''
|
|
74
|
+
|
|
62
75
|
PLAIN = '''
|
|
63
76
|
def helper(x):
|
|
64
77
|
return x + 1
|
|
@@ -102,6 +115,14 @@ def test_django_path_calls_capture_view_and_route():
|
|
|
102
115
|
}
|
|
103
116
|
|
|
104
117
|
|
|
118
|
+
def test_django_include_and_cbv_with_no_resolvable_function_are_dropped():
|
|
119
|
+
# include() mounts and an unresolved .as_view() carry no handler function;
|
|
120
|
+
# only the plain function-based view survives, no empty `- -` noise entries
|
|
121
|
+
model = _model({"urls.py": DJANGO_NOISE})
|
|
122
|
+
assert _routes(model) == {("http", "django", "profile", "profile/", "")}
|
|
123
|
+
assert all(e.function for e in model.entrypoints)
|
|
124
|
+
|
|
125
|
+
|
|
105
126
|
def test_plain_module_has_no_entrypoints():
|
|
106
127
|
model = _model({"util.py": PLAIN})
|
|
107
128
|
assert model.entrypoints == ()
|
|
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
|
|
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
|