code-mower 0.5.0b5__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.
- code_mower/__init__.py +3 -0
- code_mower/adapters/__init__.py +39 -0
- code_mower/adapters/_base.py +148 -0
- code_mower/adapters/cursor_bugbot.py +97 -0
- code_mower/adapters/gitar.py +111 -0
- code_mower/adapters/greptile.py +191 -0
- code_mower/adapters/qodo.py +140 -0
- code_mower/antigravity_cli_audit_pr.py +241 -0
- code_mower/audit_handoff_log.py +345 -0
- code_mower/audit_labeler_lib.py +311 -0
- code_mower/audit_progress.py +203 -0
- code_mower/blind_review_artifacts.py +562 -0
- code_mower/blind_review_coordinator.py +276 -0
- code_mower/bootstrap.py +524 -0
- code_mower/builder_experiment.py +539 -0
- code_mower/calibration/__init__.py +181 -0
- code_mower/calibration/arms.py +267 -0
- code_mower/calibration/auto_discovery.py +348 -0
- code_mower/calibration/commands.py +192 -0
- code_mower/calibration/context_inputs.py +199 -0
- code_mower/calibration/corpus.py +91 -0
- code_mower/calibration/evidence.py +20 -0
- code_mower/calibration/evidence_report.py +360 -0
- code_mower/calibration/identity.py +27 -0
- code_mower/calibration/metrics.py +18 -0
- code_mower/calibration/overlap.py +103 -0
- code_mower/calibration/planning.py +309 -0
- code_mower/calibration/policy.py +207 -0
- code_mower/calibration/results.py +315 -0
- code_mower/calibration/run_results.py +147 -0
- code_mower/calibration/run_status.py +64 -0
- code_mower/calibration/runner.py +360 -0
- code_mower/calibration/truth.py +188 -0
- code_mower/calibration/value_report.py +142 -0
- code_mower/checks.py +402 -0
- code_mower/claude_audit_pr.py +1126 -0
- code_mower/claude_cli_bounce.py +303 -0
- code_mower/claude_cli_environment.py +73 -0
- code_mower/clear_stale.py +374 -0
- code_mower/cli.py +537 -0
- code_mower/cloud.py +674 -0
- code_mower/cloud_client/__init__.py +173 -0
- code_mower/cloud_client/bundle.py +155 -0
- code_mower/cloud_client/doctor.py +206 -0
- code_mower/cloud_client/dogfood.py +78 -0
- code_mower/cloud_client/endpoints.py +114 -0
- code_mower/cloud_client/errors.py +7 -0
- code_mower/cloud_client/events.py +278 -0
- code_mower/cloud_client/export.py +272 -0
- code_mower/cloud_client/git_metadata.py +46 -0
- code_mower/cloud_client/manifest.py +39 -0
- code_mower/cloud_client/operations.py +448 -0
- code_mower/cloud_client/reports.py +45 -0
- code_mower/cloud_client/setup.py +205 -0
- code_mower/cloud_client/upload.py +97 -0
- code_mower/code_mower_calibration.py +598 -0
- code_mower/code_mower_context_packs.py +591 -0
- code_mower/code_mower_merge.py +227 -0
- code_mower/code_mower_telemetry.py +561 -0
- code_mower/coderabbit_cli_audit_pr.py +526 -0
- code_mower/codex_audit_env_preflight.py +220 -0
- code_mower/codex_audit_pr.py +1738 -0
- code_mower/codex_audit_schema_smoke.py +160 -0
- code_mower/codex_audit_verdict.schema.json +44 -0
- code_mower/config.py +655 -0
- code_mower/doctor.py +161 -0
- code_mower/doctor_checks/__init__.py +104 -0
- code_mower/doctor_checks/cloud.py +129 -0
- code_mower/doctor_checks/common.py +215 -0
- code_mower/doctor_checks/github.py +128 -0
- code_mower/doctor_checks/github_actions.py +11 -0
- code_mower/doctor_checks/github_actions_cost.py +99 -0
- code_mower/doctor_checks/github_actions_cost_summary.py +111 -0
- code_mower/doctor_checks/github_actions_failure_annotations.py +27 -0
- code_mower/doctor_checks/github_actions_failure_models.py +47 -0
- code_mower/doctor_checks/github_actions_failure_scan.py +200 -0
- code_mower/doctor_checks/github_actions_failure_selection.py +63 -0
- code_mower/doctor_checks/github_actions_failures.py +103 -0
- code_mower/doctor_checks/github_actions_permissions.py +55 -0
- code_mower/doctor_checks/github_api.py +79 -0
- code_mower/doctor_checks/github_branch.py +56 -0
- code_mower/doctor_checks/github_config.py +25 -0
- code_mower/doctor_checks/github_provider.py +61 -0
- code_mower/doctor_checks/github_repo.py +120 -0
- code_mower/doctor_checks/groups.py +36 -0
- code_mower/doctor_checks/models.py +96 -0
- code_mower/doctor_checks/output.py +86 -0
- code_mower/doctor_checks/presets.py +64 -0
- code_mower/doctor_checks/privacy.py +20 -0
- code_mower/doctor_checks/provider_api_model.py +138 -0
- code_mower/doctor_checks/provider_api_model_openai.py +29 -0
- code_mower/doctor_checks/provider_api_model_profiles.py +137 -0
- code_mower/doctor_checks/provider_env.py +113 -0
- code_mower/doctor_checks/provider_env_required.py +56 -0
- code_mower/doctor_checks/provider_env_tokens.py +100 -0
- code_mower/doctor_checks/provider_local_cli.py +162 -0
- code_mower/doctor_checks/provider_local_cli_commands.py +47 -0
- code_mower/doctor_checks/provider_local_cli_probe_config.py +70 -0
- code_mower/doctor_checks/provider_probe.py +20 -0
- code_mower/doctor_checks/provider_probe_auth.py +52 -0
- code_mower/doctor_checks/provider_probe_evaluation.py +109 -0
- code_mower/doctor_checks/provider_probe_json.py +45 -0
- code_mower/doctor_checks/provider_probe_remediation.py +39 -0
- code_mower/doctor_checks/providers.py +159 -0
- code_mower/doctor_checks/registry.py +69 -0
- code_mower/doctor_checks/runner.py +188 -0
- code_mower/doctor_checks/runtime.py +89 -0
- code_mower/doctor_checks/runtime_github_auth.py +148 -0
- code_mower/gemini_cli_audit_pr.py +897 -0
- code_mower/hermes_cli_audit_pr.py +436 -0
- code_mower/init.py +888 -0
- code_mower/lane_configs/__init__.py +37 -0
- code_mower/lane_configs/aider.py +32 -0
- code_mower/lane_configs/antigravity_cli.py +35 -0
- code_mower/lane_configs/claude.py +35 -0
- code_mower/lane_configs/codex.py +32 -0
- code_mower/lane_configs/devin.py +33 -0
- code_mower/lane_configs/gemini_cli.py +35 -0
- code_mower/lane_configs/hermes_cli.py +35 -0
- code_mower/lane_configs/local_llm.py +31 -0
- code_mower/local_llm_audit_pr.py +1364 -0
- code_mower/local_llm_bakeoff.py +458 -0
- code_mower/local_llm_calibration.py +441 -0
- code_mower/local_llm_profiles.py +66 -0
- code_mower/migration.py +508 -0
- code_mower/migration_install.py +292 -0
- code_mower/migration_mirror.py +392 -0
- code_mower/migration_readiness.py +237 -0
- code_mower/migration_rehearsal.py +718 -0
- code_mower/next_steps.py +441 -0
- code_mower/package.py +673 -0
- code_mower/package_content.py +444 -0
- code_mower/package_manifest.py +452 -0
- code_mower/package_paths.py +53 -0
- code_mower/package_rendering.py +90 -0
- code_mower/package_static.py +585 -0
- code_mower/prompts.py +267 -0
- code_mower/provider_registry.py +469 -0
- code_mower/provider_runners/__init__.py +60 -0
- code_mower/provider_runners/comments.py +31 -0
- code_mower/provider_runners/git.py +46 -0
- code_mower/provider_runners/github_auth.py +61 -0
- code_mower/provider_runners/github_pr.py +120 -0
- code_mower/provider_runners/process.py +58 -0
- code_mower/provider_runners/repo_paths.py +23 -0
- code_mower/provider_runners/text_schema.py +41 -0
- code_mower/provider_runners/verdict_artifacts.py +103 -0
- code_mower/provider_runners/workspace.py +57 -0
- code_mower/release_readiness.py +549 -0
- code_mower/reviewer_metrics.py +389 -0
- code_mower/saas_reviewer_labeler.py +809 -0
- code_mower/secrets.py +89 -0
- code_mower/templates/builder-experiment.example.json +55 -0
- code_mower/templates/calibration-corpus.example.json +129 -0
- code_mower/templates/calibration-corpus.json +129 -0
- code_mower/templates/code-mower.example.yml +423 -0
- code_mower/templates/context-packs.example.json +150 -0
- code_mower/templates/lane_prompts/base-audit.md +22 -0
- code_mower/templates/lane_prompts/calibration-policy.md +21 -0
- code_mower/templates/lane_prompts/context-driven-quality.md +21 -0
- code_mower/templates/lane_prompts/docs-design.md +12 -0
- code_mower/templates/lane_prompts/generic-programming.md +21 -0
- code_mower/templates/lane_prompts/operability.md +22 -0
- code_mower/templates/lane_prompts/package-runtime.md +12 -0
- code_mower/templates/lane_prompts/security-threat-model.md +22 -0
- code_mower/templates/product-support/code_mower +216 -0
- code_mower/templates/product-support/code_mower_standalone_pin.env +7 -0
- code_mower/templates/product-support/code_mower_standalone_shadow.sh +151 -0
- code_mower/templates/product-support/run_claude_audit_pr.sh +32 -0
- code_mower/templates/product-support/run_codex_audit_pr.sh +32 -0
- code_mower/templates/product-support/safe_gh_comment.py +96 -0
- code_mower/templates/providers.yml +454 -0
- code_mower/templates/reviewer-spend.example.json +28 -0
- code_mower/templates/reviewer-value-report.example.md +20 -0
- code_mower/templates/workflows/private-standalone-shadow.yml.j2 +106 -0
- code_mower/templates/workflows/review-clear-stale.yml.j2 +83 -0
- code_mower/trailer_comment_labeler.py +207 -0
- code_mower/versioning.py +32 -0
- code_mower-0.5.0b5.dist-info/METADATA +302 -0
- code_mower-0.5.0b5.dist-info/RECORD +185 -0
- code_mower-0.5.0b5.dist-info/WHEEL +5 -0
- code_mower-0.5.0b5.dist-info/entry_points.txt +2 -0
- code_mower-0.5.0b5.dist-info/licenses/LICENSE +202 -0
- code_mower-0.5.0b5.dist-info/licenses/NOTICE +10 -0
- code_mower-0.5.0b5.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Lane configuration package for trailer-comment audit labelers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from importlib import import_module
|
|
6
|
+
|
|
7
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
8
|
+
from ..audit_labeler_lib import LaneConfig
|
|
9
|
+
else:
|
|
10
|
+
try:
|
|
11
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
12
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
13
|
+
from audit_labeler_lib import LaneConfig
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def load_lane_config(name: str) -> "LaneConfig":
|
|
17
|
+
normalized = name.replace("-", "_")
|
|
18
|
+
module_roots = []
|
|
19
|
+
if __package__:
|
|
20
|
+
module_roots.append(__package__)
|
|
21
|
+
module_roots.extend(["tools.lane_configs", "lane_configs"])
|
|
22
|
+
seen_roots: set[str] = set()
|
|
23
|
+
last_missing: ModuleNotFoundError | None = None
|
|
24
|
+
for root in module_roots:
|
|
25
|
+
if root in seen_roots:
|
|
26
|
+
continue
|
|
27
|
+
seen_roots.add(root)
|
|
28
|
+
module_name = f"{root}.{normalized}"
|
|
29
|
+
try:
|
|
30
|
+
module = import_module(module_name)
|
|
31
|
+
return module.CONFIG
|
|
32
|
+
except ModuleNotFoundError as exc:
|
|
33
|
+
if exc.name == module_name or exc.name == root.split(".", 1)[0]:
|
|
34
|
+
last_missing = exc
|
|
35
|
+
continue
|
|
36
|
+
raise
|
|
37
|
+
raise ValueError(f"unknown trailer-comment audit lane: {name}") from last_missing
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="aider",
|
|
15
|
+
display_name="Aider",
|
|
16
|
+
needs_label="needs-aider-audit",
|
|
17
|
+
done_label="aider-audit-done",
|
|
18
|
+
blocked_label="aider-audit-blocked",
|
|
19
|
+
trailer_prefix="AIDER_AUDIT_STATE",
|
|
20
|
+
default_authors=("aider-audit-bot", "aider-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="AIDER_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(r"Aider Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*PASS\b", flags=re.IGNORECASE),
|
|
24
|
+
),
|
|
25
|
+
blocked_patterns=(
|
|
26
|
+
re.compile(
|
|
27
|
+
r"Aider Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
28
|
+
flags=re.IGNORECASE,
|
|
29
|
+
),
|
|
30
|
+
),
|
|
31
|
+
token_env_vars=("AIDER_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
32
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="antigravity_cli",
|
|
15
|
+
display_name="Antigravity CLI",
|
|
16
|
+
needs_label="needs-antigravity-cli-audit",
|
|
17
|
+
done_label="antigravity-cli-audit-done",
|
|
18
|
+
blocked_label="antigravity-cli-audit-blocked",
|
|
19
|
+
trailer_prefix="ANTIGRAVITY_CLI_AUDIT_STATE",
|
|
20
|
+
default_authors=("antigravity-cli-audit-bot", "antigravity-cli-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="ANTIGRAVITY_CLI_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(
|
|
24
|
+
r"Antigravity(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*PASS\b",
|
|
25
|
+
flags=re.IGNORECASE,
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
blocked_patterns=(
|
|
29
|
+
re.compile(
|
|
30
|
+
r"Antigravity(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
31
|
+
flags=re.IGNORECASE,
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
token_env_vars=("ANTIGRAVITY_CLI_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
35
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="claude",
|
|
15
|
+
display_name="Claude",
|
|
16
|
+
needs_label="needs-claude-audit",
|
|
17
|
+
done_label="claude-audit-done",
|
|
18
|
+
blocked_label="claude-audit-blocked",
|
|
19
|
+
trailer_prefix="CLAUDE_AUDIT_STATE",
|
|
20
|
+
default_authors=("claude-audit-bot", "claude-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="CLAUDE_AUDIT_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(
|
|
24
|
+
r"<!--\s*CLAUDE_AUDIT_STATE:\s*claude-audit-done\s*-->",
|
|
25
|
+
flags=re.IGNORECASE,
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
blocked_patterns=(
|
|
29
|
+
re.compile(
|
|
30
|
+
r"<!--\s*CLAUDE_AUDIT_STATE:\s*claude-audit-blocked\s*-->",
|
|
31
|
+
flags=re.IGNORECASE,
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
token_env_vars=("CLAUDE_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
35
|
+
)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="codex",
|
|
15
|
+
display_name="Codex",
|
|
16
|
+
needs_label="needs-codex-audit",
|
|
17
|
+
done_label="codex-audit-done",
|
|
18
|
+
blocked_label="codex-audit-blocked",
|
|
19
|
+
trailer_prefix="CODEX_AUDIT_STATE",
|
|
20
|
+
default_authors=("codex-audit-bot", "codex-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="CODEX_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(r"Codex Audit(?:\s+Result)?\s*[—–:-]\s*PASS\b", flags=re.IGNORECASE),
|
|
24
|
+
),
|
|
25
|
+
blocked_patterns=(
|
|
26
|
+
re.compile(
|
|
27
|
+
r"Codex Audit(?:\s+Result)?\s*[—–:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
28
|
+
flags=re.IGNORECASE,
|
|
29
|
+
),
|
|
30
|
+
),
|
|
31
|
+
token_env_vars=("CODEX_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
32
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="devin",
|
|
15
|
+
display_name="Devin",
|
|
16
|
+
needs_label="needs-devin-audit",
|
|
17
|
+
done_label="devin-audit-done",
|
|
18
|
+
blocked_label="devin-audit-blocked",
|
|
19
|
+
trailer_prefix="DEVIN_AUDIT_STATE",
|
|
20
|
+
default_authors=("devin-ai-integration", "devin-ai-integration[bot]"),
|
|
21
|
+
authors_env_var="DEVIN_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(r"Devin Audit(?:\s+Result)?\s*[—–:-]\s*PASS\b", flags=re.IGNORECASE),
|
|
24
|
+
),
|
|
25
|
+
blocked_patterns=(
|
|
26
|
+
re.compile(
|
|
27
|
+
r"Devin Audit(?:\s+Result)?\s*[—–:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
28
|
+
flags=re.IGNORECASE,
|
|
29
|
+
),
|
|
30
|
+
),
|
|
31
|
+
label_state_fallbacks=True,
|
|
32
|
+
token_env_vars=("DEVIN_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
33
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="gemini_cli",
|
|
15
|
+
display_name="Gemini CLI",
|
|
16
|
+
needs_label="needs-gemini-cli-audit",
|
|
17
|
+
done_label="gemini-cli-audit-done",
|
|
18
|
+
blocked_label="gemini-cli-audit-blocked",
|
|
19
|
+
trailer_prefix="GEMINI_CLI_AUDIT_STATE",
|
|
20
|
+
default_authors=("gemini-cli-audit-bot", "gemini-cli-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="GEMINI_CLI_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(
|
|
24
|
+
r"Gemini(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*PASS\b",
|
|
25
|
+
flags=re.IGNORECASE,
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
blocked_patterns=(
|
|
29
|
+
re.compile(
|
|
30
|
+
r"Gemini(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
31
|
+
flags=re.IGNORECASE,
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
token_env_vars=("GEMINI_CLI_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
35
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="hermes_cli",
|
|
15
|
+
display_name="Hermes CLI",
|
|
16
|
+
needs_label="needs-hermes-cli-audit",
|
|
17
|
+
done_label="hermes-cli-audit-done",
|
|
18
|
+
blocked_label="hermes-cli-audit-blocked",
|
|
19
|
+
trailer_prefix="HERMES_CLI_AUDIT_STATE",
|
|
20
|
+
default_authors=("hermes-cli-audit-bot", "hermes-cli-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="HERMES_CLI_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(
|
|
24
|
+
r"Hermes(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*PASS\b",
|
|
25
|
+
flags=re.IGNORECASE,
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
blocked_patterns=(
|
|
29
|
+
re.compile(
|
|
30
|
+
r"Hermes(?: CLI)? Audit(?:\s+Result)?\s*[\u2014\u2013:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
31
|
+
flags=re.IGNORECASE,
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
token_env_vars=("HERMES_CLI_AUDIT_LABEL_TOKEN", "GITHUB_TOKEN"),
|
|
35
|
+
)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
if __package__ and __package__.startswith("code_mower."):
|
|
6
|
+
from ..audit_labeler_lib import LaneConfig
|
|
7
|
+
else:
|
|
8
|
+
try:
|
|
9
|
+
from tools.audit_labeler_lib import LaneConfig
|
|
10
|
+
except ImportError: # pragma: no cover - direct `python tools/foo.py` execution
|
|
11
|
+
from audit_labeler_lib import LaneConfig
|
|
12
|
+
|
|
13
|
+
CONFIG = LaneConfig(
|
|
14
|
+
name="local_llm",
|
|
15
|
+
display_name="Local LLM",
|
|
16
|
+
needs_label="needs-local-llm-audit",
|
|
17
|
+
done_label="local-llm-audit-done",
|
|
18
|
+
blocked_label="local-llm-audit-blocked",
|
|
19
|
+
trailer_prefix="LOCAL_LLM_AUDIT_STATE",
|
|
20
|
+
default_authors=("local-llm-audit-bot", "local-llm-audit-bot[bot]"),
|
|
21
|
+
authors_env_var="LOCAL_LLM_BOT_AUTHORS",
|
|
22
|
+
pass_patterns=(
|
|
23
|
+
re.compile(r"Local LLM Audit(?:\s+Result)?\s*[—–:-]\s*PASS\b", flags=re.IGNORECASE),
|
|
24
|
+
),
|
|
25
|
+
blocked_patterns=(
|
|
26
|
+
re.compile(
|
|
27
|
+
r"Local LLM Audit(?:\s+Result)?\s*[—–:-]\s*(BLOCKED|BLOCKER|INCOMPLETE)\b",
|
|
28
|
+
flags=re.IGNORECASE,
|
|
29
|
+
),
|
|
30
|
+
),
|
|
31
|
+
)
|