ctrlcode 0.1.0__py3-none-any.whl
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.
- ctrlcode/__init__.py +8 -0
- ctrlcode/agents/__init__.py +29 -0
- ctrlcode/agents/cleanup.py +388 -0
- ctrlcode/agents/communication.py +439 -0
- ctrlcode/agents/observability.py +421 -0
- ctrlcode/agents/react_loop.py +297 -0
- ctrlcode/agents/registry.py +211 -0
- ctrlcode/agents/result_parser.py +242 -0
- ctrlcode/agents/workflow.py +723 -0
- ctrlcode/analysis/__init__.py +28 -0
- ctrlcode/analysis/ast_diff.py +163 -0
- ctrlcode/analysis/bug_detector.py +149 -0
- ctrlcode/analysis/code_graphs.py +329 -0
- ctrlcode/analysis/semantic.py +205 -0
- ctrlcode/analysis/static.py +183 -0
- ctrlcode/analysis/synthesizer.py +281 -0
- ctrlcode/analysis/tests.py +189 -0
- ctrlcode/cleanup/__init__.py +16 -0
- ctrlcode/cleanup/auto_merge.py +350 -0
- ctrlcode/cleanup/doc_gardening.py +388 -0
- ctrlcode/cleanup/pr_automation.py +330 -0
- ctrlcode/cleanup/scheduler.py +356 -0
- ctrlcode/config.py +380 -0
- ctrlcode/embeddings/__init__.py +6 -0
- ctrlcode/embeddings/embedder.py +192 -0
- ctrlcode/embeddings/vector_store.py +213 -0
- ctrlcode/fuzzing/__init__.py +24 -0
- ctrlcode/fuzzing/analyzer.py +280 -0
- ctrlcode/fuzzing/budget.py +112 -0
- ctrlcode/fuzzing/context.py +665 -0
- ctrlcode/fuzzing/context_fuzzer.py +506 -0
- ctrlcode/fuzzing/derived_orchestrator.py +732 -0
- ctrlcode/fuzzing/oracle_adapter.py +135 -0
- ctrlcode/linters/__init__.py +11 -0
- ctrlcode/linters/hand_rolled_utils.py +221 -0
- ctrlcode/linters/yolo_parsing.py +217 -0
- ctrlcode/metrics/__init__.py +6 -0
- ctrlcode/metrics/dashboard.py +283 -0
- ctrlcode/metrics/tech_debt.py +663 -0
- ctrlcode/paths.py +68 -0
- ctrlcode/permissions.py +179 -0
- ctrlcode/providers/__init__.py +15 -0
- ctrlcode/providers/anthropic.py +138 -0
- ctrlcode/providers/base.py +77 -0
- ctrlcode/providers/openai.py +197 -0
- ctrlcode/providers/parallel.py +104 -0
- ctrlcode/server.py +871 -0
- ctrlcode/session/__init__.py +6 -0
- ctrlcode/session/baseline.py +57 -0
- ctrlcode/session/manager.py +967 -0
- ctrlcode/skills/__init__.py +10 -0
- ctrlcode/skills/builtin/commit.toml +29 -0
- ctrlcode/skills/builtin/docs.toml +25 -0
- ctrlcode/skills/builtin/refactor.toml +33 -0
- ctrlcode/skills/builtin/review.toml +28 -0
- ctrlcode/skills/builtin/test.toml +28 -0
- ctrlcode/skills/loader.py +111 -0
- ctrlcode/skills/registry.py +139 -0
- ctrlcode/storage/__init__.py +19 -0
- ctrlcode/storage/history_db.py +708 -0
- ctrlcode/tools/__init__.py +220 -0
- ctrlcode/tools/bash.py +112 -0
- ctrlcode/tools/browser.py +352 -0
- ctrlcode/tools/executor.py +153 -0
- ctrlcode/tools/explore.py +486 -0
- ctrlcode/tools/mcp.py +108 -0
- ctrlcode/tools/observability.py +561 -0
- ctrlcode/tools/registry.py +193 -0
- ctrlcode/tools/todo.py +291 -0
- ctrlcode/tools/update.py +266 -0
- ctrlcode/tools/webfetch.py +147 -0
- ctrlcode-0.1.0.dist-info/METADATA +93 -0
- ctrlcode-0.1.0.dist-info/RECORD +75 -0
- ctrlcode-0.1.0.dist-info/WHEEL +4 -0
- ctrlcode-0.1.0.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""Baseline code tracking for differential analysis."""
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class Baseline:
|
|
9
|
+
"""Stores baseline code for comparison during fuzzing."""
|
|
10
|
+
|
|
11
|
+
code: str
|
|
12
|
+
file_path: Optional[str] = None
|
|
13
|
+
language: str = "python"
|
|
14
|
+
context: dict[str, str] = field(default_factory=dict)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BaselineManager:
|
|
18
|
+
"""Manages baseline code extraction and storage."""
|
|
19
|
+
|
|
20
|
+
def __init__(self):
|
|
21
|
+
self.baselines: dict[str, Baseline] = {}
|
|
22
|
+
|
|
23
|
+
def store(self, session_id: str, baseline: Baseline) -> None:
|
|
24
|
+
"""Store baseline for a session."""
|
|
25
|
+
self.baselines[session_id] = baseline
|
|
26
|
+
|
|
27
|
+
def get(self, session_id: str) -> Optional[Baseline]:
|
|
28
|
+
"""Retrieve baseline for a session."""
|
|
29
|
+
return self.baselines.get(session_id)
|
|
30
|
+
|
|
31
|
+
def has_baseline(self, session_id: str) -> bool:
|
|
32
|
+
"""Check if session has a baseline."""
|
|
33
|
+
return session_id in self.baselines
|
|
34
|
+
|
|
35
|
+
def clear(self, session_id: str) -> None:
|
|
36
|
+
"""Clear baseline for a session."""
|
|
37
|
+
if session_id in self.baselines:
|
|
38
|
+
del self.baselines[session_id]
|
|
39
|
+
|
|
40
|
+
def extract_from_request(self, user_input: str) -> Optional[str]:
|
|
41
|
+
"""
|
|
42
|
+
Extract existing code from user request.
|
|
43
|
+
|
|
44
|
+
Looks for code blocks in the request that represent
|
|
45
|
+
the current implementation to be improved.
|
|
46
|
+
"""
|
|
47
|
+
# Simple extraction: look for ```python blocks
|
|
48
|
+
import re
|
|
49
|
+
|
|
50
|
+
pattern = r"```(?:python)?\n(.*?)\n```"
|
|
51
|
+
matches = re.findall(pattern, user_input, re.DOTALL)
|
|
52
|
+
|
|
53
|
+
if matches:
|
|
54
|
+
# Return first code block as baseline
|
|
55
|
+
return matches[0]
|
|
56
|
+
|
|
57
|
+
return None
|