codeboarding 0.13.10__tar.gz → 0.13.11__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 (219) hide show
  1. {codeboarding-0.13.10/codeboarding.egg-info → codeboarding-0.13.11}/PKG-INFO +1 -1
  2. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/llm_config.py +33 -12
  3. {codeboarding-0.13.10 → codeboarding-0.13.11/codeboarding.egg-info}/PKG-INFO +1 -1
  4. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding.egg-info/SOURCES.txt +0 -1
  5. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/file_index.py +2 -2
  6. {codeboarding-0.13.10 → codeboarding-0.13.11}/pyproject.toml +1 -1
  7. codeboarding-0.13.10/health_main.py +0 -152
  8. {codeboarding-0.13.10 → codeboarding-0.13.11}/LICENSE +0 -0
  9. {codeboarding-0.13.10 → codeboarding-0.13.11}/PYPI.md +0 -0
  10. {codeboarding-0.13.10 → codeboarding-0.13.11}/README.md +0 -0
  11. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/__init__.py +0 -0
  12. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/abstraction_agent.py +0 -0
  13. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/agent.py +0 -0
  14. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/agent_responses.py +0 -0
  15. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/change_status.py +0 -0
  16. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/component_ownership.py +0 -0
  17. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/constants.py +0 -0
  18. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/content_hash.py +0 -0
  19. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/dependency_discovery.py +0 -0
  20. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/details_agent.py +0 -0
  21. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/file_index_models.py +0 -0
  22. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/incremental_agent.py +0 -0
  23. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/incremental_results.py +0 -0
  24. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/llm_errors.py +0 -0
  25. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/llm_renderers/__init__.py +0 -0
  26. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/llm_renderers/call_graph.py +0 -0
  27. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/llm_renderers/clustering.py +0 -0
  28. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/meta_agent.py +0 -0
  29. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/model_capabilities.py +0 -0
  30. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/planner_agent.py +0 -0
  31. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/__init__.py +0 -0
  32. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/abstract_prompt_factory.py +0 -0
  33. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/claude_prompts.py +0 -0
  34. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/deepseek_prompts.py +0 -0
  35. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/gemini_flash_prompts.py +0 -0
  36. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/glm_prompts.py +0 -0
  37. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/gpt_prompts.py +0 -0
  38. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/kimi_prompts.py +0 -0
  39. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/prompts/prompt_factory.py +0 -0
  40. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/relation_edges.py +0 -0
  41. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/repair.py +0 -0
  42. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/retry.py +0 -0
  43. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/scope_ids.py +0 -0
  44. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/static_analysis_enricher_mixin.py +0 -0
  45. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/__init__.py +0 -0
  46. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/base.py +0 -0
  47. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/component_bridge_edges.py +0 -0
  48. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/get_external_deps.py +0 -0
  49. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/get_method_invocations.py +0 -0
  50. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/list_git_changes.py +0 -0
  51. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_cfg.py +0 -0
  52. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_docs.py +0 -0
  53. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_file.py +0 -0
  54. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_file_structure.py +0 -0
  55. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_packages.py +0 -0
  56. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_source.py +0 -0
  57. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/read_structure.py +0 -0
  58. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/tools/toolkit.py +0 -0
  59. {codeboarding-0.13.10 → codeboarding-0.13.11}/agents/validation.py +0 -0
  60. {codeboarding-0.13.10 → codeboarding-0.13.11}/caching/__init__.py +0 -0
  61. {codeboarding-0.13.10 → codeboarding-0.13.11}/caching/cache.py +0 -0
  62. {codeboarding-0.13.10 → codeboarding-0.13.11}/caching/meta_cache.py +0 -0
  63. {codeboarding-0.13.10 → codeboarding-0.13.11}/clustering_ids.py +0 -0
  64. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding.egg-info/dependency_links.txt +0 -0
  65. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding.egg-info/entry_points.txt +0 -0
  66. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding.egg-info/requires.txt +0 -0
  67. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding.egg-info/top_level.txt +0 -0
  68. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/__init__.py +0 -0
  69. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/bootstrap.py +0 -0
  70. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/commands/__init__.py +0 -0
  71. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/commands/full_analysis.py +0 -0
  72. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/commands/incremental_analysis.py +0 -0
  73. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/commands/partial_analysis.py +0 -0
  74. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/render.py +0 -0
  75. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_cli/view_instructions.py +0 -0
  76. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/__init__.py +0 -0
  77. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/analysis.py +0 -0
  78. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/orchestration.py +0 -0
  79. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/sources/__init__.py +0 -0
  80. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/sources/local.py +0 -0
  81. {codeboarding-0.13.10 → codeboarding-0.13.11}/codeboarding_workflows/sources/remote.py +0 -0
  82. {codeboarding-0.13.10 → codeboarding-0.13.11}/constants.py +0 -0
  83. {codeboarding-0.13.10 → codeboarding-0.13.11}/core/__init__.py +0 -0
  84. {codeboarding-0.13.10 → codeboarding-0.13.11}/core/plugin_loader.py +0 -0
  85. {codeboarding-0.13.10 → codeboarding-0.13.11}/core/protocols.py +0 -0
  86. {codeboarding-0.13.10 → codeboarding-0.13.11}/core/registry.py +0 -0
  87. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/__init__.py +0 -0
  88. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/analysis_json.py +0 -0
  89. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/diagram_generator.py +0 -0
  90. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/exceptions.py +0 -0
  91. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/file_coverage.py +0 -0
  92. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/incremental_changes.py +0 -0
  93. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/io_utils.py +0 -0
  94. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/run_context.py +0 -0
  95. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/run_mode.py +0 -0
  96. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/scope_plan.py +0 -0
  97. {codeboarding-0.13.10 → codeboarding-0.13.11}/diagram_analysis/tree_shape.py +0 -0
  98. {codeboarding-0.13.10 → codeboarding-0.13.11}/github_action.py +0 -0
  99. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/__init__.py +0 -0
  100. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/checks/__init__.py +0 -0
  101. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/checks/circular_deps.py +0 -0
  102. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/checks/function_size.py +0 -0
  103. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/checks/unused_code_diagnostics.py +0 -0
  104. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/config.py +0 -0
  105. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/models.py +0 -0
  106. {codeboarding-0.13.10 → codeboarding-0.13.11}/health/runner.py +0 -0
  107. {codeboarding-0.13.10 → codeboarding-0.13.11}/install.py +0 -0
  108. {codeboarding-0.13.10 → codeboarding-0.13.11}/logging_config.py +0 -0
  109. {codeboarding-0.13.10 → codeboarding-0.13.11}/main.py +0 -0
  110. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/__init__.py +0 -0
  111. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/callbacks.py +0 -0
  112. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/context.py +0 -0
  113. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/mixin.py +0 -0
  114. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/paths.py +0 -0
  115. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/stats.py +0 -0
  116. {codeboarding-0.13.10 → codeboarding-0.13.11}/monitoring/writers.py +0 -0
  117. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/__init__.py +0 -0
  118. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/html.py +0 -0
  119. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/html_template.py +0 -0
  120. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/markdown.py +0 -0
  121. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/mdx.py +0 -0
  122. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/rendering.py +0 -0
  123. {codeboarding-0.13.10 → codeboarding-0.13.11}/output_generators/sphinx.py +0 -0
  124. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/__init__.py +0 -0
  125. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/change_detector.py +0 -0
  126. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/errors.py +0 -0
  127. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/fingerprint_diff.py +0 -0
  128. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/git_ops.py +0 -0
  129. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/ignore.py +0 -0
  130. {codeboarding-0.13.10 → codeboarding-0.13.11}/repo_utils/path_utils.py +0 -0
  131. {codeboarding-0.13.10 → codeboarding-0.13.11}/setup.cfg +0 -0
  132. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/__init__.py +0 -0
  133. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/analysis_cache.py +0 -0
  134. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/analysis_result.py +0 -0
  135. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/cfg/__init__.py +0 -0
  136. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/cfg/call_graph.py +0 -0
  137. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/cfg/edge.py +0 -0
  138. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/cfg/location_key.py +0 -0
  139. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/cluster_relations.py +0 -0
  140. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/__init__.py +0 -0
  141. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/cache.py +0 -0
  142. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/delta.py +0 -0
  143. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/engine.py +0 -0
  144. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/exceptions.py +0 -0
  145. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/expansion.py +0 -0
  146. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/grouping.py +0 -0
  147. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/models.py +0 -0
  148. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/service.py +0 -0
  149. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/clustering/snapshot.py +0 -0
  150. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/config.py +0 -0
  151. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/csharp_config_scanner.py +0 -0
  152. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/dotnet_sdk.py +0 -0
  153. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/__init__.py +0 -0
  154. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/__init__.py +0 -0
  155. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/csharp_adapter.py +0 -0
  156. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/go_adapter.py +0 -0
  157. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/java_adapter.py +0 -0
  158. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/php_adapter.py +0 -0
  159. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/python_adapter.py +0 -0
  160. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/rust_adapter.py +0 -0
  161. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/adapters/typescript_adapter.py +0 -0
  162. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/call_graph_builder.py +0 -0
  163. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/edge_build_context.py +0 -0
  164. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/edge_builder.py +0 -0
  165. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/hierarchy_builder.py +0 -0
  166. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/language_adapter.py +0 -0
  167. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/lsp_client.py +0 -0
  168. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/lsp_constants.py +0 -0
  169. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/lsp_recycler.py +0 -0
  170. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/models.py +0 -0
  171. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/process_memory.py +0 -0
  172. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/progress.py +0 -0
  173. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/protocols.py +0 -0
  174. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/result_converter.py +0 -0
  175. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/source_inspector.py +0 -0
  176. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/symbol_table.py +0 -0
  177. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/engine/utils.py +0 -0
  178. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/incremental_orchestrator.py +0 -0
  179. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/internal_references.py +0 -0
  180. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/java_config_scanner.py +0 -0
  181. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/java_utils.py +0 -0
  182. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/language_results.py +0 -0
  183. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/leiden_utils.py +0 -0
  184. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/lsp_client/__init__.py +0 -0
  185. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/lsp_client/diagnostics.py +0 -0
  186. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/node.py +0 -0
  187. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/programming_language.py +0 -0
  188. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/reference_resolver.py +0 -0
  189. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/scanner.py +0 -0
  190. {codeboarding-0.13.10 → codeboarding-0.13.11}/static_analyzer/typescript_config_scanner.py +0 -0
  191. {codeboarding-0.13.10 → codeboarding-0.13.11}/telemetry/__init__.py +0 -0
  192. {codeboarding-0.13.10 → codeboarding-0.13.11}/telemetry/device_id.py +0 -0
  193. {codeboarding-0.13.10 → codeboarding-0.13.11}/telemetry/events.py +0 -0
  194. {codeboarding-0.13.10 → codeboarding-0.13.11}/telemetry/schemas.py +0 -0
  195. {codeboarding-0.13.10 → codeboarding-0.13.11}/telemetry/service.py +0 -0
  196. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_cli_parser.py +0 -0
  197. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_github_action.py +0 -0
  198. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_install.py +0 -0
  199. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_logging_config.py +0 -0
  200. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_main.py +0 -0
  201. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_persisted_analysis_artifacts.py +0 -0
  202. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_pyproject_packages.py +0 -0
  203. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_registry_coverage.py +0 -0
  204. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_telemetry_events.py +0 -0
  205. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_telemetry_service.py +0 -0
  206. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_tool_registry.py +0 -0
  207. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_user_config.py +0 -0
  208. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_view_instructions.py +0 -0
  209. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_vscode_constants.py +0 -0
  210. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_windows_compatibility.py +0 -0
  211. {codeboarding-0.13.10 → codeboarding-0.13.11}/tests/test_windows_encoding.py +0 -0
  212. {codeboarding-0.13.10 → codeboarding-0.13.11}/tool_registry/__init__.py +0 -0
  213. {codeboarding-0.13.10 → codeboarding-0.13.11}/tool_registry/installers.py +0 -0
  214. {codeboarding-0.13.10 → codeboarding-0.13.11}/tool_registry/manifest.py +0 -0
  215. {codeboarding-0.13.10 → codeboarding-0.13.11}/tool_registry/paths.py +0 -0
  216. {codeboarding-0.13.10 → codeboarding-0.13.11}/tool_registry/registry.py +0 -0
  217. {codeboarding-0.13.10 → codeboarding-0.13.11}/user_config.py +0 -0
  218. {codeboarding-0.13.10 → codeboarding-0.13.11}/utils.py +0 -0
  219. {codeboarding-0.13.10 → codeboarding-0.13.11}/vscode_constants.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.13.10
3
+ Version: 0.13.11
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -91,6 +91,8 @@ class LLMConfig:
91
91
  selection_envs: Env vars that select this provider — any one being set selects it.
92
92
  api_key_env: Env var holding the provider's secret, or None when the
93
93
  underlying SDK reads its credentials from the environment itself.
94
+ base_url_env: Env var that overrides the provider endpoint, or an empty string when unsupported.
95
+ default_base_url: Built-in endpoint used when base_url_env is unset, or an empty string for the SDK default.
94
96
  agent_model: The "agent" model used for complex reasoning and agentic tasks.
95
97
  parsing_model: The "parsing" model used for fast, cost-effective extraction and parsing tasks.
96
98
  agent_temperature: Temperature for the agent model. Defaults to 0 for deterministic behavior
@@ -109,6 +111,8 @@ class LLMConfig:
109
111
  parsing_temperature: float = LLMDefaults.DEFAULT_PARSING_TEMPERATURE
110
112
  extra_args: dict[str, Any] = field(default_factory=dict)
111
113
  api_key_env: str | None = None
114
+ base_url_env: str = ""
115
+ default_base_url: str = ""
112
116
  keyless_capable: bool = False
113
117
  """Whether this provider can run without a real API key.
114
118
 
@@ -139,6 +143,10 @@ class LLMConfig:
139
143
  value = v() if callable(v) else v
140
144
  if value is not None:
141
145
  resolved[k] = value
146
+ if self.base_url_env:
147
+ base_url = os.getenv(self.base_url_env, self.default_base_url or None)
148
+ if base_url is not None:
149
+ resolved["base_url"] = base_url
142
150
  return resolved
143
151
 
144
152
 
@@ -152,8 +160,8 @@ LLM_PROVIDERS = {
152
160
  parsing_model="gpt-4o-mini",
153
161
  llm_type=LLMType.GPT4,
154
162
  keyless_capable=True,
163
+ base_url_env="OPENAI_BASE_URL",
155
164
  extra_args={
156
- "base_url": lambda: os.getenv("OPENAI_BASE_URL"),
157
165
  "max_tokens": None,
158
166
  "timeout": None,
159
167
  "max_retries": 0,
@@ -166,8 +174,9 @@ LLM_PROVIDERS = {
166
174
  agent_model="google/gemini-3.7-flash",
167
175
  parsing_model="openai/gpt-5-mini",
168
176
  llm_type=LLMType.GEMINI_FLASH,
177
+ base_url_env="VERCEL_BASE_URL",
178
+ default_base_url="https://ai-gateway.vercel.sh/v1",
169
179
  extra_args={
170
- "base_url": lambda: os.getenv("VERCEL_BASE_URL", f"https://ai-gateway.vercel.sh/v1"),
171
180
  "max_tokens": None,
172
181
  "timeout": None,
173
182
  "max_retries": 0,
@@ -180,8 +189,8 @@ LLM_PROVIDERS = {
180
189
  agent_model="claude-sonnet-5",
181
190
  parsing_model="claude-haiku-4-5",
182
191
  llm_type=LLMType.CLAUDE,
192
+ base_url_env="ANTHROPIC_BASE_URL",
183
193
  extra_args={
184
- "base_url": lambda: os.getenv("ANTHROPIC_BASE_URL"),
185
194
  "thinking": {"type": "disabled"},
186
195
  "max_tokens": 8192,
187
196
  "timeout": None,
@@ -239,9 +248,7 @@ LLM_PROVIDERS = {
239
248
  llm_type=LLMType.GEMINI_FLASH,
240
249
  agent_temperature=LLMDefaults.DEFAULT_AGENT_TEMPERATURE,
241
250
  parsing_temperature=LLMDefaults.DEFAULT_PARSING_TEMPERATURE,
242
- extra_args={
243
- "base_url": lambda: os.getenv("OLLAMA_BASE_URL"),
244
- },
251
+ base_url_env="OLLAMA_BASE_URL",
245
252
  ),
246
253
  "deepseek": LLMConfig(
247
254
  chat_class=ChatOpenAI,
@@ -250,8 +257,9 @@ LLM_PROVIDERS = {
250
257
  agent_model="deepseek-v4-flash",
251
258
  parsing_model="deepseek-v4-flash",
252
259
  llm_type=LLMType.DEEPSEEK,
260
+ base_url_env="DEEPSEEK_BASE_URL",
261
+ default_base_url="https://api.deepseek.com/v1",
253
262
  extra_args={
254
- "base_url": lambda: os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1"),
255
263
  "max_tokens": None,
256
264
  "timeout": None,
257
265
  "max_retries": 0,
@@ -264,8 +272,9 @@ LLM_PROVIDERS = {
264
272
  agent_model="glm-4.7-flash",
265
273
  parsing_model="glm-4.7-flash",
266
274
  llm_type=LLMType.GLM,
275
+ base_url_env="GLM_BASE_URL",
276
+ default_base_url="https://open.bigmodel.cn/api/paas/v4",
267
277
  extra_args={
268
- "base_url": lambda: os.getenv("GLM_BASE_URL", "https://open.bigmodel.cn/api/paas/v4"),
269
278
  "max_tokens": None,
270
279
  "timeout": None,
271
280
  "max_retries": 0,
@@ -278,8 +287,9 @@ LLM_PROVIDERS = {
278
287
  agent_model="kimi-k2.6",
279
288
  parsing_model="kimi-k2.6",
280
289
  llm_type=LLMType.KIMI,
290
+ base_url_env="KIMI_BASE_URL",
291
+ default_base_url="https://api.moonshot.cn/v1",
281
292
  extra_args={
282
- "base_url": lambda: os.getenv("KIMI_BASE_URL", "https://api.moonshot.cn/v1"),
283
293
  "max_tokens": None,
284
294
  "timeout": None,
285
295
  "max_retries": 0,
@@ -292,8 +302,9 @@ LLM_PROVIDERS = {
292
302
  agent_model="google/gemini-3.7-flash",
293
303
  parsing_model="google/gemini-3.7-flash",
294
304
  llm_type=LLMType.GEMINI_FLASH,
305
+ base_url_env="OPENROUTER_BASE_URL",
306
+ default_base_url="https://openrouter.ai/api/v1",
295
307
  extra_args={
296
- "base_url": lambda: os.getenv("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1"),
297
308
  "max_tokens": None,
298
309
  "timeout": None,
299
310
  "max_retries": 0,
@@ -306,8 +317,9 @@ LLM_PROVIDERS = {
306
317
  agent_model="openai/gpt-5.4-mini",
307
318
  parsing_model="openai/gpt-5.4-mini",
308
319
  llm_type=LLMType.GPT4,
320
+ base_url_env="ORCAROUTER_BASE_URL",
321
+ default_base_url="https://api.orcarouter.ai/v1",
309
322
  extra_args={
310
- "base_url": lambda: os.getenv("ORCAROUTER_BASE_URL", "https://api.orcarouter.ai/v1"),
311
323
  "max_tokens": None,
312
324
  "timeout": None,
313
325
  "max_retries": 0,
@@ -323,8 +335,8 @@ LLM_PROVIDERS = {
323
335
  parsing_model="gpt-4o-mini",
324
336
  llm_type=LLMType.GPT4,
325
337
  keyless_capable=True,
338
+ base_url_env="LITELLM_BASE_URL",
326
339
  extra_args={
327
- "base_url": lambda: os.getenv("LITELLM_BASE_URL"),
328
340
  "max_tokens": None,
329
341
  "timeout": None,
330
342
  "max_retries": 0,
@@ -333,6 +345,15 @@ LLM_PROVIDERS = {
333
345
  }
334
346
 
335
347
 
348
+ LLM_PROVIDER_ENV_VARS: frozenset[str] = frozenset(
349
+ var
350
+ for config in LLM_PROVIDERS.values()
351
+ for var in [*config.selection_envs, config.api_key_env, config.base_url_env]
352
+ if var
353
+ )
354
+ LLM_ENV_VARS: frozenset[str] = LLM_PROVIDER_ENV_VARS | frozenset({"AGENT_MODEL", "PARSING_MODEL"})
355
+
356
+
336
357
  def _all_selection_envs() -> list[str]:
337
358
  return sorted({var for config in LLM_PROVIDERS.values() for var in config.selection_envs})
338
359
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.13.10
3
+ Version: 0.13.11
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -4,7 +4,6 @@ README.md
4
4
  clustering_ids.py
5
5
  constants.py
6
6
  github_action.py
7
- health_main.py
8
7
  install.py
9
8
  logging_config.py
10
9
  main.py
@@ -27,7 +27,7 @@ def build_file_methods_from_nodes(
27
27
  source_cache: SourceCache | None = None,
28
28
  ) -> list[FileMethodGroup]:
29
29
  """Build sorted file/method groups from assigned CFG nodes."""
30
- by_file: dict[str, dict[tuple[int, int, str, str], MethodEntry]] = defaultdict(dict)
30
+ by_file: dict[str, dict[tuple[int, int, int, str, str], MethodEntry]] = defaultdict(dict)
31
31
  file_cache = source_cache if source_cache is not None else {}
32
32
 
33
33
  for node in nodes:
@@ -35,7 +35,7 @@ def build_file_methods_from_nodes(
35
35
  continue
36
36
  file_path = normalize_repo_path(node.file_path, repo_dir)
37
37
  method_name = node.fully_qualified_name.split(".")[-1]
38
- dedupe_key = (node.line_start, node.line_end, node.type.name, method_name)
38
+ dedupe_key = (node.line_start, node.line_end, node.col_start, node.type.name, method_name)
39
39
  candidate = MethodEntry(
40
40
  qualified_name=node.fully_qualified_name,
41
41
  start_line=node.line_start,
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codeboarding"
7
- version = "0.13.10"
7
+ version = "0.13.11"
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 CODEBOARDING_DIR_NAME, 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_DIR_NAME
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_DIR_NAME
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