claude-code-generator 0.4.0__tar.gz → 0.4.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.
- {claude_code_generator-0.4.0/src/claude_code_generator.egg-info → claude_code_generator-0.4.1}/PKG-INFO +1 -1
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/pyproject.toml +1 -1
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1/src/claude_code_generator.egg-info}/PKG-INFO +1 -1
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/__init__.py +1 -1
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/effort.py +23 -14
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_effort.py +18 -5
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/LICENSE +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/README.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/setup.cfg +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/claude_code_generator.egg-info/SOURCES.txt +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/claude_code_generator.egg-info/dependency_links.txt +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/claude_code_generator.egg-info/entry_points.txt +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/claude_code_generator.egg-info/requires.txt +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/claude_code_generator.egg-info/top_level.txt +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/agents.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/cli.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_bench_io.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_crash_recovery.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_detect.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_dispatch.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_resume.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_validators.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/bench.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/bench_compare.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/bench_export.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/generate.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/init.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/optimize.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/review.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/status.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/env.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/core.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/issues.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/labels.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/milestones.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/git_ops.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/logging_setup.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/memory.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/_client_lifecycle.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/_comments.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/_memory_writers.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/_phase5_precommit.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/cycle_loop.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase0_complexity.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase1_plan.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase2_review.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase3_4_implement.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase5_closure.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase6_test.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/orchestrator/phase7_commit.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/preflight.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/hashes.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-optimize-requirements.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-0-complexity.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-1-planning.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-2-issue-review.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-3-implementation.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-5-final-review.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-6-test.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-phase-7-commit.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/prompt-review.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/repo_info.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/repomap.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/requirements_structure.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/_telemetry.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/batch.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/fake_runner.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/mcp.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/message_parsing.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/options.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/protocol.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/rate_limit.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/retry.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/sdk_runner.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/soft_reset.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/state_guard.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/subprocess_runner.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/types.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/utils.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/state.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/state_retention.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/__init__.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/angular.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/base.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/fastapi.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/finance.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/fullstack.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/nestjs.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/python-cli.md +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_agents.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_bench.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_bench_compare.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_bench_export.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_bench_fixture.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_bench_regression.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_changelog.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_claude_md.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_client_lifecycle.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_comments.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_commit_message.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_crash_recovery.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_cycle_loop.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_cycle_loop_multicycle.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_delta_planning.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_dependencies.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_detect.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_docs_no_default_max_turns.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_env.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_generate.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_generate_resume.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_gh.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_gh_labels.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_gh_milestones.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_gh_repo_threading.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_gh_submodules.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_git_ops.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_init.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_logging_setup.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_max_turns_cli_flag.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_mcp.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_memory.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_memory_writers.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_message_parsing.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_no_max_turns_in_call_sites.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_no_max_turns_literal.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_non_goals_grep_guard.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_optimize.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_options.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase0.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase1.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase2.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase2_batch.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase3_4.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase5.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase5_precommit.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase6.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase7.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase_mcp_regression.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase_token_logging.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_preflight.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompt_drift.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompt_prefix_snapshots.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompt_prefix_stability.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompts.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_rate_limit.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_repo_info.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_repomap.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_requirements_structure.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_retry.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_review.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_runner_protocol.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_runner_protocol_annotations.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_runner_types.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_runner_utils.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_sdk_runner.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_sdk_runner_shared.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_session_mode.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_state.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_state_guard.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_state_retention.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_status.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_subprocess_runner.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_telemetry.py +0 -0
- {claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_version.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-code-generator"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.1"
|
|
8
8
|
description = "Orchestrator CLI that drives Claude Code end-to-end to generate whole projects from a requirements.md file."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -26,7 +26,7 @@ if TYPE_CHECKING:
|
|
|
26
26
|
# Public types
|
|
27
27
|
# ---------------------------------------------------------------------------
|
|
28
28
|
|
|
29
|
-
EffortLiteral = Literal["low", "medium", "high", "max"]
|
|
29
|
+
EffortLiteral = Literal["low", "medium", "high", "xhigh", "max"]
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class InvalidEffortInput(ValueError):
|
|
@@ -45,6 +45,7 @@ class EffortLevel(StrEnum):
|
|
|
45
45
|
LOW = "low"
|
|
46
46
|
MEDIUM = "medium"
|
|
47
47
|
HIGH = "high"
|
|
48
|
+
XHIGH = "xhigh"
|
|
48
49
|
MAX = "max"
|
|
49
50
|
|
|
50
51
|
|
|
@@ -53,14 +54,14 @@ class EffortLevel(StrEnum):
|
|
|
53
54
|
# ---------------------------------------------------------------------------
|
|
54
55
|
|
|
55
56
|
_BASELINE: dict[int, EffortLevel] = {
|
|
56
|
-
0: EffortLevel.
|
|
57
|
-
1: EffortLevel.
|
|
58
|
-
2: EffortLevel.
|
|
59
|
-
3: EffortLevel.MEDIUM, # implement (lower bound of 3+4 combined)
|
|
60
|
-
4: EffortLevel.MEDIUM, # implement (upper bound of 3+4 combined)
|
|
61
|
-
5: EffortLevel.
|
|
62
|
-
6: EffortLevel.LOW, # tests (escalated by retry_count)
|
|
63
|
-
7: EffortLevel.LOW, # commit
|
|
57
|
+
0: EffortLevel.XHIGH, # complexity analysis + cycle decomposition (architectural)
|
|
58
|
+
1: EffortLevel.XHIGH, # plan
|
|
59
|
+
2: EffortLevel.XHIGH, # review
|
|
60
|
+
3: EffortLevel.MEDIUM, # implement (lower bound of 3+4 combined; Sonnet)
|
|
61
|
+
4: EffortLevel.MEDIUM, # implement (upper bound of 3+4 combined; Sonnet)
|
|
62
|
+
5: EffortLevel.XHIGH, # closure (cross-module review)
|
|
63
|
+
6: EffortLevel.LOW, # tests (Sonnet; escalated by retry_count)
|
|
64
|
+
7: EffortLevel.LOW, # commit (mechanical, Opus)
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
_COMPLEXITY_HIGH_LABEL = "complexity:high"
|
|
@@ -96,19 +97,27 @@ def _test_effort(retry_count: int) -> EffortLevel:
|
|
|
96
97
|
_OPUS_MODEL = "claude-opus-4-7"
|
|
97
98
|
|
|
98
99
|
|
|
100
|
+
_OPUS_ONLY_EFFORTS: frozenset[str] = frozenset({"xhigh", "max"})
|
|
101
|
+
|
|
102
|
+
|
|
99
103
|
def validate_effort(effort: str | None, model: str) -> None:
|
|
100
|
-
"""Raise ValueError when
|
|
104
|
+
"""Raise ValueError when an Opus-only effort is paired with a non-Opus model.
|
|
105
|
+
|
|
106
|
+
``xhigh`` and ``max`` are gated to Opus 4.7+ (introduced in 4.7); Sonnet
|
|
107
|
+
and Haiku do not expose them.
|
|
101
108
|
|
|
102
109
|
Parameters
|
|
103
110
|
----------
|
|
104
111
|
effort:
|
|
105
|
-
Effort level string (``"low"`` / ``"medium"`` / ``"high"`` / ``"
|
|
106
|
-
or ``None`` (no-op).
|
|
112
|
+
Effort level string (``"low"`` / ``"medium"`` / ``"high"`` / ``"xhigh"``
|
|
113
|
+
/ ``"max"``), or ``None`` (no-op).
|
|
107
114
|
model:
|
|
108
115
|
Anthropic model ID (e.g. ``"claude-opus-4-7"``).
|
|
109
116
|
"""
|
|
110
|
-
if effort
|
|
111
|
-
raise ValueError(
|
|
117
|
+
if effort in _OPUS_ONLY_EFFORTS and model != _OPUS_MODEL:
|
|
118
|
+
raise ValueError(
|
|
119
|
+
f"effort={effort!r} is only allowed with {_OPUS_MODEL!r}, got {model!r}."
|
|
120
|
+
)
|
|
112
121
|
|
|
113
122
|
|
|
114
123
|
def resolve_effort(
|
|
@@ -17,10 +17,10 @@ from code_generator.effort import EffortLevel, InvalidEffortInput, resolve_effor
|
|
|
17
17
|
@pytest.mark.parametrize(
|
|
18
18
|
("phase", "expected"),
|
|
19
19
|
[
|
|
20
|
-
(0, EffortLevel.
|
|
21
|
-
(1, EffortLevel.
|
|
22
|
-
(2, EffortLevel.
|
|
23
|
-
(5, EffortLevel.
|
|
20
|
+
(0, EffortLevel.XHIGH),
|
|
21
|
+
(1, EffortLevel.XHIGH),
|
|
22
|
+
(2, EffortLevel.XHIGH),
|
|
23
|
+
(5, EffortLevel.XHIGH),
|
|
24
24
|
(3, EffortLevel.MEDIUM),
|
|
25
25
|
(4, EffortLevel.MEDIUM),
|
|
26
26
|
(7, EffortLevel.LOW),
|
|
@@ -128,7 +128,7 @@ def test_effort_hint_none_does_not_override() -> None:
|
|
|
128
128
|
result = resolve_effort(
|
|
129
129
|
phase=0, complexity="low", issue_labels=[], retry_count=0, effort_hint=None
|
|
130
130
|
)
|
|
131
|
-
assert result == EffortLevel.
|
|
131
|
+
assert result == EffortLevel.XHIGH
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
# ---------------------------------------------------------------------------
|
|
@@ -141,6 +141,7 @@ def test_effort_level_string_values() -> None:
|
|
|
141
141
|
assert EffortLevel.LOW == "low"
|
|
142
142
|
assert EffortLevel.MEDIUM == "medium"
|
|
143
143
|
assert EffortLevel.HIGH == "high"
|
|
144
|
+
assert EffortLevel.XHIGH == "xhigh"
|
|
144
145
|
assert EffortLevel.MAX == "max"
|
|
145
146
|
|
|
146
147
|
|
|
@@ -165,6 +166,11 @@ def test_validate_effort_max_with_opus_passes() -> None:
|
|
|
165
166
|
validate_effort("max", "claude-opus-4-7") # must not raise
|
|
166
167
|
|
|
167
168
|
|
|
169
|
+
def test_validate_effort_xhigh_with_opus_passes() -> None:
|
|
170
|
+
"""xhigh effort is allowed for claude-opus-4-7 (introduced in 4.7)."""
|
|
171
|
+
validate_effort("xhigh", "claude-opus-4-7") # must not raise
|
|
172
|
+
|
|
173
|
+
|
|
168
174
|
@pytest.mark.parametrize("model", ["claude-sonnet-4-6", "claude-haiku-4-5"])
|
|
169
175
|
def test_validate_effort_max_with_non_opus_raises(model: str) -> None:
|
|
170
176
|
"""max effort raises ValueError for Sonnet and Haiku models."""
|
|
@@ -172,6 +178,13 @@ def test_validate_effort_max_with_non_opus_raises(model: str) -> None:
|
|
|
172
178
|
validate_effort("max", model)
|
|
173
179
|
|
|
174
180
|
|
|
181
|
+
@pytest.mark.parametrize("model", ["claude-sonnet-4-6", "claude-haiku-4-5"])
|
|
182
|
+
def test_validate_effort_xhigh_with_non_opus_raises(model: str) -> None:
|
|
183
|
+
"""xhigh effort raises ValueError for Sonnet and Haiku models."""
|
|
184
|
+
with pytest.raises(ValueError, match="xhigh"):
|
|
185
|
+
validate_effort("xhigh", model)
|
|
186
|
+
|
|
187
|
+
|
|
175
188
|
@pytest.mark.parametrize(
|
|
176
189
|
("effort", "model"),
|
|
177
190
|
[
|
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/__init__.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_bench_io.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_detect.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_dispatch.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/_resume.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/bench.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/generate.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/init.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/optimize.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/review.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/commands/status.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/gh/milestones.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/logging_setup.py
RENAMED
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/__init__.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/prompts/hashes.py
RENAMED
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/__init__.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/_telemetry.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/batch.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/fake_runner.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/mcp.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/options.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/protocol.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/rate_limit.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/retry.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/sdk_runner.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/soft_reset.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/state_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/types.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/runner/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/state_retention.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/__init__.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/angular.md
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/base.md
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/fastapi.md
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/finance.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/src/code_generator/templates/nestjs.md
RENAMED
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_cycle_loop_multicycle.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_docs_no_default_max_turns.py
RENAMED
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_max_turns_cli_flag.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_no_max_turns_in_call_sites.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_no_max_turns_literal.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_non_goals_grep_guard.py
RENAMED
|
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
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase_mcp_regression.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_phase_token_logging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompt_prefix_snapshots.py
RENAMED
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_prompt_prefix_stability.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_generator-0.4.0 → claude_code_generator-0.4.1}/tests/test_requirements_structure.py
RENAMED
|
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
|