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.
Files changed (191) hide show
  1. {codeboarding-0.12.2/codeboarding.egg-info → codeboarding-0.12.3}/PKG-INFO +1 -1
  2. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/llm_config.py +20 -4
  3. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_file_structure.py +1 -1
  4. {codeboarding-0.12.2 → codeboarding-0.12.3/codeboarding.egg-info}/PKG-INFO +1 -1
  5. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/SOURCES.txt +0 -1
  6. {codeboarding-0.12.2 → codeboarding-0.12.3}/pyproject.toml +1 -1
  7. codeboarding-0.12.2/health_main.py +0 -152
  8. {codeboarding-0.12.2 → codeboarding-0.12.3}/LICENSE +0 -0
  9. {codeboarding-0.12.2 → codeboarding-0.12.3}/PYPI.md +0 -0
  10. {codeboarding-0.12.2 → codeboarding-0.12.3}/README.md +0 -0
  11. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/__init__.py +0 -0
  12. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/abstraction_agent.py +0 -0
  13. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/agent.py +0 -0
  14. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/agent_responses.py +0 -0
  15. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/change_status.py +0 -0
  16. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/cluster_budget.py +0 -0
  17. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/cluster_methods_mixin.py +0 -0
  18. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/constants.py +0 -0
  19. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/dependency_discovery.py +0 -0
  20. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/details_agent.py +0 -0
  21. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/incremental_agent.py +0 -0
  22. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/meta_agent.py +0 -0
  23. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/model_capabilities.py +0 -0
  24. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/planner_agent.py +0 -0
  25. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/__init__.py +0 -0
  26. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/abstract_prompt_factory.py +0 -0
  27. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/claude_prompts.py +0 -0
  28. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/deepseek_prompts.py +0 -0
  29. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/gemini_flash_prompts.py +0 -0
  30. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/glm_prompts.py +0 -0
  31. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/gpt_prompts.py +0 -0
  32. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/kimi_prompts.py +0 -0
  33. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/prompts/prompt_factory.py +0 -0
  34. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/retry.py +0 -0
  35. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/__init__.py +0 -0
  36. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/base.py +0 -0
  37. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/get_external_deps.py +0 -0
  38. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/get_method_invocations.py +0 -0
  39. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_cfg.py +0 -0
  40. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_docs.py +0 -0
  41. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_file.py +0 -0
  42. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_packages.py +0 -0
  43. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_source.py +0 -0
  44. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/read_structure.py +0 -0
  45. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/tools/toolkit.py +0 -0
  46. {codeboarding-0.12.2 → codeboarding-0.12.3}/agents/validation.py +0 -0
  47. {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/__init__.py +0 -0
  48. {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/cache.py +0 -0
  49. {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/details_cache.py +0 -0
  50. {codeboarding-0.12.2 → codeboarding-0.12.3}/caching/meta_cache.py +0 -0
  51. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/dependency_links.txt +0 -0
  52. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/entry_points.txt +0 -0
  53. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/requires.txt +0 -0
  54. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding.egg-info/top_level.txt +0 -0
  55. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/__init__.py +0 -0
  56. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/bootstrap.py +0 -0
  57. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/__init__.py +0 -0
  58. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/full_analysis.py +0 -0
  59. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/incremental_analysis.py +0 -0
  60. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_cli/commands/partial_analysis.py +0 -0
  61. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/__init__.py +0 -0
  62. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/analysis.py +0 -0
  63. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/orchestration.py +0 -0
  64. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/rendering.py +0 -0
  65. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/__init__.py +0 -0
  66. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/local.py +0 -0
  67. {codeboarding-0.12.2 → codeboarding-0.12.3}/codeboarding_workflows/sources/remote.py +0 -0
  68. {codeboarding-0.12.2 → codeboarding-0.12.3}/constants.py +0 -0
  69. {codeboarding-0.12.2 → codeboarding-0.12.3}/core/__init__.py +0 -0
  70. {codeboarding-0.12.2 → codeboarding-0.12.3}/core/plugin_loader.py +0 -0
  71. {codeboarding-0.12.2 → codeboarding-0.12.3}/core/protocols.py +0 -0
  72. {codeboarding-0.12.2 → codeboarding-0.12.3}/core/registry.py +0 -0
  73. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/__init__.py +0 -0
  74. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/analysis_json.py +0 -0
  75. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/cluster_delta.py +0 -0
  76. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/cluster_snapshot.py +0 -0
  77. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/diagram_generator.py +0 -0
  78. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/exceptions.py +0 -0
  79. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/file_coverage.py +0 -0
  80. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/io_utils.py +0 -0
  81. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/run_context.py +0 -0
  82. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/run_mode.py +0 -0
  83. {codeboarding-0.12.2 → codeboarding-0.12.3}/diagram_analysis/version.py +0 -0
  84. {codeboarding-0.12.2 → codeboarding-0.12.3}/github_action.py +0 -0
  85. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/__init__.py +0 -0
  86. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/__init__.py +0 -0
  87. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/circular_deps.py +0 -0
  88. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/cohesion.py +0 -0
  89. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/coupling.py +0 -0
  90. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/function_size.py +0 -0
  91. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/god_class.py +0 -0
  92. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/inheritance.py +0 -0
  93. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/instability.py +0 -0
  94. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/checks/unused_code_diagnostics.py +0 -0
  95. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/config.py +0 -0
  96. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/models.py +0 -0
  97. {codeboarding-0.12.2 → codeboarding-0.12.3}/health/runner.py +0 -0
  98. {codeboarding-0.12.2 → codeboarding-0.12.3}/install.py +0 -0
  99. {codeboarding-0.12.2 → codeboarding-0.12.3}/logging_config.py +0 -0
  100. {codeboarding-0.12.2 → codeboarding-0.12.3}/main.py +0 -0
  101. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/__init__.py +0 -0
  102. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/callbacks.py +0 -0
  103. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/context.py +0 -0
  104. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/mixin.py +0 -0
  105. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/paths.py +0 -0
  106. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/stats.py +0 -0
  107. {codeboarding-0.12.2 → codeboarding-0.12.3}/monitoring/writers.py +0 -0
  108. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/__init__.py +0 -0
  109. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/html.py +0 -0
  110. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/html_template.py +0 -0
  111. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/markdown.py +0 -0
  112. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/mdx.py +0 -0
  113. {codeboarding-0.12.2 → codeboarding-0.12.3}/output_generators/sphinx.py +0 -0
  114. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/__init__.py +0 -0
  115. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/change_detector.py +0 -0
  116. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/diff_parser.py +0 -0
  117. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/errors.py +0 -0
  118. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/git_ops.py +0 -0
  119. {codeboarding-0.12.2 → codeboarding-0.12.3}/repo_utils/ignore.py +0 -0
  120. {codeboarding-0.12.2 → codeboarding-0.12.3}/setup.cfg +0 -0
  121. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/__init__.py +0 -0
  122. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/analysis_cache.py +0 -0
  123. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/analysis_result.py +0 -0
  124. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cfg_skip_planner.py +0 -0
  125. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cluster_helpers.py +0 -0
  126. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/cluster_relations.py +0 -0
  127. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/constants.py +0 -0
  128. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/csharp_config_scanner.py +0 -0
  129. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/dotnet_sdk.py +0 -0
  130. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/__init__.py +0 -0
  131. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/__init__.py +0 -0
  132. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/csharp_adapter.py +0 -0
  133. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/go_adapter.py +0 -0
  134. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/java_adapter.py +0 -0
  135. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/php_adapter.py +0 -0
  136. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/python_adapter.py +0 -0
  137. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/rust_adapter.py +0 -0
  138. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/adapters/typescript_adapter.py +0 -0
  139. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/call_graph_builder.py +0 -0
  140. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/edge_build_context.py +0 -0
  141. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/edge_builder.py +0 -0
  142. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/hierarchy_builder.py +0 -0
  143. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/language_adapter.py +0 -0
  144. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/lsp_client.py +0 -0
  145. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/lsp_constants.py +0 -0
  146. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/models.py +0 -0
  147. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/progress.py +0 -0
  148. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/protocols.py +0 -0
  149. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/result_converter.py +0 -0
  150. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/source_inspector.py +0 -0
  151. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/symbol_table.py +0 -0
  152. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/engine/utils.py +0 -0
  153. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/graph.py +0 -0
  154. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/incremental_orchestrator.py +0 -0
  155. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/java_config_scanner.py +0 -0
  156. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/java_utils.py +0 -0
  157. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/language_results.py +0 -0
  158. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/leiden_utils.py +0 -0
  159. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/lsp_client/__init__.py +0 -0
  160. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/lsp_client/diagnostics.py +0 -0
  161. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/node.py +0 -0
  162. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/programming_language.py +0 -0
  163. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/reference_resolve_mixin.py +0 -0
  164. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/scanner.py +0 -0
  165. {codeboarding-0.12.2 → codeboarding-0.12.3}/static_analyzer/typescript_config_scanner.py +0 -0
  166. {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/__init__.py +0 -0
  167. {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/device_id.py +0 -0
  168. {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/events.py +0 -0
  169. {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/schemas.py +0 -0
  170. {codeboarding-0.12.2 → codeboarding-0.12.3}/telemetry/service.py +0 -0
  171. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_cli_parser.py +0 -0
  172. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_github_action.py +0 -0
  173. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_install.py +0 -0
  174. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_logging_config.py +0 -0
  175. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_main.py +0 -0
  176. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_pyproject_packages.py +0 -0
  177. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_registry_coverage.py +0 -0
  178. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_telemetry_events.py +0 -0
  179. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_tool_registry.py +0 -0
  180. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_user_config.py +0 -0
  181. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_vscode_constants.py +0 -0
  182. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_windows_compatibility.py +0 -0
  183. {codeboarding-0.12.2 → codeboarding-0.12.3}/tests/test_windows_encoding.py +0 -0
  184. {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/__init__.py +0 -0
  185. {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/installers.py +0 -0
  186. {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/manifest.py +0 -0
  187. {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/paths.py +0 -0
  188. {codeboarding-0.12.2 → codeboarding-0.12.3}/tool_registry/registry.py +0 -0
  189. {codeboarding-0.12.2 → codeboarding-0.12.3}/user_config.py +0 -0
  190. {codeboarding-0.12.2 → codeboarding-0.12.3}/utils.py +0 -0
  191. {codeboarding-0.12.2 → codeboarding-0.12.3}/vscode_constants.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.12.2
3
+ Version: 0.12.3
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -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
- "model": model_name,
346
- "temperature": getattr(config, temperature_attr),
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.12.2
3
+ Version: 0.12.3
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -3,7 +3,6 @@ PYPI.md
3
3
  README.md
4
4
  constants.py
5
5
  github_action.py
6
- health_main.py
7
6
  install.py
8
7
  logging_config.py
9
8
  main.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codeboarding"
7
- version = "0.12.2"
7
+ version = "0.12.3"
8
8
  description = "Interactive Diagrams for Code"
9
9
  readme = "PYPI.md"
10
10
  license = "MIT"
@@ -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