codeboarding 0.12.2__tar.gz → 0.12.3__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.
- {codeboarding-0.12.2/codeboarding.egg-info → codeboarding-0.12.3}/PKG-INFO +1 -1
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/llm_config.py +20 -4
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_file_structure.py +1 -1
- {codeboarding-0.12.2 → codeboarding-0.12.3/codeboarding.egg-info}/PKG-INFO +1 -1
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/SOURCES.txt +0 -1
- {codeboarding-0.12.2 → codeboarding-0.12.3}/pyproject.toml +1 -1
- codeboarding-0.12.2/health_main.py +0 -152
- {codeboarding-0.12.2 → codeboarding-0.12.3}/LICENSE +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/PYPI.md +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/README.md +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/abstraction_agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/agent_responses.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/change_status.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/cluster_budget.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/cluster_methods_mixin.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/constants.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/dependency_discovery.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/details_agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/incremental_agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/meta_agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/model_capabilities.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/planner_agent.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/abstract_prompt_factory.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/claude_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/deepseek_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/gemini_flash_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/glm_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/gpt_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/kimi_prompts.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/prompt_factory.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/retry.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/base.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/get_external_deps.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/get_method_invocations.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_cfg.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_docs.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_file.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_packages.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_source.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_structure.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/toolkit.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/validation.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/cache.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/details_cache.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/meta_cache.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/dependency_links.txt +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/entry_points.txt +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/requires.txt +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/top_level.txt +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/bootstrap.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/full_analysis.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/incremental_analysis.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/partial_analysis.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/analysis.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/orchestration.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/rendering.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/local.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/remote.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/constants.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/core/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/core/plugin_loader.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/core/protocols.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/core/registry.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/analysis_json.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/cluster_delta.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/cluster_snapshot.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/diagram_generator.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/exceptions.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/file_coverage.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/io_utils.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/run_context.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/run_mode.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/version.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/github_action.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/circular_deps.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/cohesion.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/coupling.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/function_size.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/god_class.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/inheritance.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/instability.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/unused_code_diagnostics.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/config.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/models.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/health/runner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/install.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/logging_config.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/main.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/callbacks.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/context.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/mixin.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/paths.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/stats.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/writers.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/html.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/html_template.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/markdown.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/mdx.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/sphinx.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/change_detector.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/diff_parser.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/errors.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/git_ops.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/ignore.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/setup.cfg +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/analysis_cache.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/analysis_result.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cfg_skip_planner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cluster_helpers.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cluster_relations.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/constants.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/csharp_config_scanner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/dotnet_sdk.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/csharp_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/go_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/java_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/php_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/python_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/rust_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/typescript_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/call_graph_builder.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/edge_build_context.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/edge_builder.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/hierarchy_builder.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/language_adapter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/lsp_client.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/lsp_constants.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/models.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/progress.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/protocols.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/result_converter.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/source_inspector.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/symbol_table.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/utils.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/graph.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/incremental_orchestrator.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/java_config_scanner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/java_utils.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/language_results.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/leiden_utils.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/lsp_client/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/lsp_client/diagnostics.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/node.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/programming_language.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/reference_resolve_mixin.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/scanner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/typescript_config_scanner.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/device_id.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/events.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/schemas.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/service.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_cli_parser.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_github_action.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_install.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_logging_config.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_main.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_pyproject_packages.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_registry_coverage.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_telemetry_events.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_tool_registry.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_user_config.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_vscode_constants.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_windows_compatibility.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_windows_encoding.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/__init__.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/installers.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/manifest.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/paths.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/registry.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/user_config.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/utils.py +0 -0
- {codeboarding-0.12.2 → codeboarding-0.12.3}/vscode_constants.py +0 -0
|
@@ -25,6 +25,23 @@ logger = logging.getLogger(__name__)
|
|
|
25
25
|
|
|
26
26
|
_OPENROUTER_FALLBACK_CONTEXT_WINDOW = ContextWindow(1_048_576, 65_536, is_fallback=True)
|
|
27
27
|
|
|
28
|
+
# Model families that reject sampling params (temperature/top_p/top_k) with HTTP 400.
|
|
29
|
+
# Why: Anthropic removed them starting with Opus 4.7; sending temperature (even 0) 400s.
|
|
30
|
+
# Substrings match bare IDs and Bedrock-prefixed forms (e.g. us.anthropic.claude-opus-4-8-v1:0).
|
|
31
|
+
_SAMPLING_PARAM_FREE_MODEL_SUBSTRINGS = (
|
|
32
|
+
"claude-opus-4-7",
|
|
33
|
+
"claude-opus-4-8",
|
|
34
|
+
"claude-fable-5",
|
|
35
|
+
"claude-mythos-5",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _model_accepts_temperature(model_name: str) -> bool:
|
|
40
|
+
"""False for models that reject sampling params; temperature must be omitted for those."""
|
|
41
|
+
lowered = model_name.lower()
|
|
42
|
+
return not any(s in lowered for s in _SAMPLING_PARAM_FREE_MODEL_SUBSTRINGS)
|
|
43
|
+
|
|
44
|
+
|
|
28
45
|
# ---------------------------------------------------------------------------
|
|
29
46
|
# Module-level model overrides – set once by the orchestrator (main.py) and
|
|
30
47
|
# consumed by initialize_llms() without needing to thread the values through
|
|
@@ -341,10 +358,9 @@ def _initialize_llm(
|
|
|
341
358
|
|
|
342
359
|
logger.info(f"Using {name.title()} {log_prefix}LLM with model: {model_name}")
|
|
343
360
|
|
|
344
|
-
kwargs = {
|
|
345
|
-
|
|
346
|
-
"temperature"
|
|
347
|
-
}
|
|
361
|
+
kwargs: dict[str, Any] = {"model": model_name}
|
|
362
|
+
if _model_accepts_temperature(model_name):
|
|
363
|
+
kwargs["temperature"] = getattr(config, temperature_attr)
|
|
348
364
|
kwargs.update(config.get_resolved_extra_args())
|
|
349
365
|
|
|
350
366
|
# ChatBedrockConverse and ChatOllama take no api_key kwarg; their SDKs read
|
|
@@ -36,7 +36,7 @@ class FileStructureTool(BaseRepoTool):
|
|
|
36
36
|
# Ensure they are sorted by depth for is_subsequence logic
|
|
37
37
|
return sorted(dirs, key=lambda x: len(x.parts))
|
|
38
38
|
|
|
39
|
-
def _run(self, dir: str) -> str:
|
|
39
|
+
def _run(self, dir: str = ".") -> str:
|
|
40
40
|
"""
|
|
41
41
|
Run the tool with the given input.
|
|
42
42
|
"""
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"""Standalone entry point for running health checks on a repository.
|
|
2
|
-
|
|
3
|
-
Runs static analysis and health checks only — no LLM agents or diagram generation.
|
|
4
|
-
Useful for testing health checks in isolation and for CI/CD health gates.
|
|
5
|
-
|
|
6
|
-
Usage:
|
|
7
|
-
# Local repository (output written to <repo>/.codeboarding/health/)
|
|
8
|
-
python health_main.py --local /path/to/repo
|
|
9
|
-
|
|
10
|
-
# Remote repository (cloned to cwd/repos/, output to cwd/<repo_name>/.codeboarding/health/)
|
|
11
|
-
python health_main.py https://github.com/user/repo
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
import argparse
|
|
15
|
-
import logging
|
|
16
|
-
from pathlib import Path
|
|
17
|
-
|
|
18
|
-
from health.runner import run_health_checks
|
|
19
|
-
from health.config import initialize_health_dir, load_health_config
|
|
20
|
-
from logging_config import setup_logging
|
|
21
|
-
from repo_utils import clone_repository, get_repo_name
|
|
22
|
-
from static_analyzer import get_static_analysis
|
|
23
|
-
from utils import get_artifact_dir
|
|
24
|
-
from vscode_constants import update_config
|
|
25
|
-
|
|
26
|
-
logger = logging.getLogger(__name__)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def run_health_check_local(
|
|
30
|
-
repo_path: Path,
|
|
31
|
-
project_name: str | None = None,
|
|
32
|
-
) -> None:
|
|
33
|
-
"""Run health checks on a local repository.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
repo_path: Path to a local repository
|
|
37
|
-
project_name: Optional project name (default: repo directory name)
|
|
38
|
-
"""
|
|
39
|
-
resolved_repo_path = repo_path.resolve()
|
|
40
|
-
if not resolved_repo_path.is_dir():
|
|
41
|
-
raise ValueError(f"Repository path does not exist: {resolved_repo_path}")
|
|
42
|
-
|
|
43
|
-
resolved_project_name = project_name or resolved_repo_path.name
|
|
44
|
-
output_dir = resolved_repo_path / ".codeboarding"
|
|
45
|
-
|
|
46
|
-
output_dir.mkdir(parents=True, exist_ok=True)
|
|
47
|
-
setup_logging(log_dir=output_dir)
|
|
48
|
-
|
|
49
|
-
_run_health_checks(resolved_repo_path, resolved_project_name, output_dir)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def run_health_check_remote(
|
|
53
|
-
repo_url: str,
|
|
54
|
-
project_name: str | None = None,
|
|
55
|
-
) -> None:
|
|
56
|
-
"""Run health checks on a remote repository.
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
repo_url: URL of a remote Git repository
|
|
60
|
-
project_name: Optional project name (default: extracted from URL)
|
|
61
|
-
"""
|
|
62
|
-
repo_root = Path("repos")
|
|
63
|
-
repo_name = clone_repository(repo_url, repo_root)
|
|
64
|
-
resolved_repo_path = repo_root / repo_name
|
|
65
|
-
resolved_project_name = project_name or get_repo_name(repo_url)
|
|
66
|
-
output_dir = Path.cwd() / repo_name / ".codeboarding"
|
|
67
|
-
|
|
68
|
-
output_dir.mkdir(parents=True, exist_ok=True)
|
|
69
|
-
setup_logging(log_dir=output_dir)
|
|
70
|
-
|
|
71
|
-
_run_health_checks(resolved_repo_path, resolved_project_name, output_dir)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def _run_health_checks(repo_path: Path, project_name: str, output_dir: Path) -> None:
|
|
75
|
-
"""Core health check logic shared by local and remote paths."""
|
|
76
|
-
logger.info(f"Running health checks on '{project_name}' at {repo_path}")
|
|
77
|
-
|
|
78
|
-
static_analysis = get_static_analysis(repo_path, cache_dir=get_artifact_dir(repo_path))
|
|
79
|
-
|
|
80
|
-
# Load health check configuration and initialize health config dir
|
|
81
|
-
health_config_dir = output_dir / "health"
|
|
82
|
-
initialize_health_dir(health_config_dir)
|
|
83
|
-
health_config = load_health_config(health_config_dir)
|
|
84
|
-
|
|
85
|
-
report = run_health_checks(static_analysis, project_name, config=health_config, repo_path=repo_path)
|
|
86
|
-
|
|
87
|
-
if report is None:
|
|
88
|
-
logger.warning("Health checks skipped: no languages found in static analysis results")
|
|
89
|
-
return
|
|
90
|
-
|
|
91
|
-
report_path = health_config_dir / "health_report.json"
|
|
92
|
-
report_path.write_text(report.model_dump_json(indent=2, exclude_none=True))
|
|
93
|
-
|
|
94
|
-
logger.info(f"Health report written to {report_path} (overall score: {report.overall_score:.3f})")
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def main():
|
|
98
|
-
"""Main entry point that parses CLI arguments and routes to subcommands."""
|
|
99
|
-
parser = argparse.ArgumentParser(
|
|
100
|
-
description="Run static analysis health checks on a repository (local or remote)",
|
|
101
|
-
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
102
|
-
epilog="""
|
|
103
|
-
Examples:
|
|
104
|
-
# Local repository (output written to <repo>/.codeboarding/health/)
|
|
105
|
-
python health_main.py --local /path/to/repo
|
|
106
|
-
|
|
107
|
-
# Remote repository (cloned to cwd/repos/, output to cwd/<repo_name>/.codeboarding/health/)
|
|
108
|
-
python health_main.py https://github.com/user/repo
|
|
109
|
-
|
|
110
|
-
""",
|
|
111
|
-
)
|
|
112
|
-
parser.add_argument(
|
|
113
|
-
"repositories",
|
|
114
|
-
nargs="*",
|
|
115
|
-
help="One or more remote Git repository URLs to run health checks on",
|
|
116
|
-
)
|
|
117
|
-
parser.add_argument("--local", type=Path, help="Path to a local repository")
|
|
118
|
-
parser.add_argument(
|
|
119
|
-
"--project-name",
|
|
120
|
-
type=str,
|
|
121
|
-
default=None,
|
|
122
|
-
help="Name of the project (default: extracted from repo path or URL)",
|
|
123
|
-
)
|
|
124
|
-
parser.add_argument(
|
|
125
|
-
"--binary-location", type=Path, help="Path to the binary directory for language servers and tools"
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
args = parser.parse_args()
|
|
129
|
-
|
|
130
|
-
# Validate: must provide either remote repos or --local, not both
|
|
131
|
-
has_remote = bool(args.repositories)
|
|
132
|
-
has_local = args.local is not None
|
|
133
|
-
|
|
134
|
-
if has_remote == has_local:
|
|
135
|
-
parser.error("Provide either one or more remote repositories or --local, but not both.")
|
|
136
|
-
|
|
137
|
-
# Resolve binary paths for tools (tokei, LSP servers, etc.)
|
|
138
|
-
if args.binary_location:
|
|
139
|
-
update_config(args.binary_location)
|
|
140
|
-
|
|
141
|
-
try:
|
|
142
|
-
if has_local:
|
|
143
|
-
run_health_check_local(args.local, args.project_name)
|
|
144
|
-
else:
|
|
145
|
-
for repo_url in args.repositories:
|
|
146
|
-
run_health_check_remote(repo_url, args.project_name)
|
|
147
|
-
except ValueError as e:
|
|
148
|
-
parser.error(str(e))
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
if __name__ == "__main__":
|
|
152
|
-
main()
|
|
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
|
{codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/incremental_analysis.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
|
|
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
|
{codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/csharp_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/python_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/typescript_adapter.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
|
|
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
|