codeboarding 0.14.4__tar.gz → 0.15.0__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 (209) hide show
  1. {codeboarding-0.14.4/codeboarding.egg-info → codeboarding-0.15.0}/PKG-INFO +4 -2
  2. {codeboarding-0.14.4 → codeboarding-0.15.0}/PYPI.md +2 -1
  3. codeboarding-0.15.0/README.md +286 -0
  4. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/agent_responses.py +1 -1
  5. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/content_hash.py +1 -1
  6. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/llm_config.py +25 -6
  7. codeboarding-0.15.0/agents/llm_errors.py +251 -0
  8. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/llm_renderers/scope.py +81 -8
  9. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/model_capabilities.py +2 -2
  10. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/prompts/shared.py +4 -1
  11. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/relation_edges.py +2 -2
  12. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/retry.py +26 -0
  13. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/scope_analysis_agent.py +110 -7
  14. codeboarding-0.15.0/agents/scope_ids.py +3 -0
  15. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/tools/read_file.py +1 -1
  16. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/tree_planner_agent.py +18 -10
  17. {codeboarding-0.14.4 → codeboarding-0.15.0/codeboarding.egg-info}/PKG-INFO +4 -2
  18. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding.egg-info/SOURCES.txt +46 -52
  19. codeboarding-0.15.0/codeboarding.egg-info/entry_points.txt +4 -0
  20. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding.egg-info/requires.txt +1 -0
  21. codeboarding-0.15.0/codeboarding.egg-info/top_level.txt +8 -0
  22. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/bootstrap.py +6 -6
  23. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/commands/full_analysis.py +14 -9
  24. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/commands/incremental_analysis.py +6 -1
  25. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/commands/partial_analysis.py +2 -2
  26. {codeboarding-0.14.4 → codeboarding-0.15.0/codeboarding_cli}/github_action.py +2 -2
  27. {codeboarding-0.14.4 → codeboarding-0.15.0/codeboarding_cli}/main.py +18 -6
  28. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/render.py +1 -1
  29. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/analysis.py +37 -19
  30. {codeboarding-0.14.4/repo_utils → codeboarding-0.15.0/codeboarding_workflows}/fingerprint_diff.py +1 -1
  31. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/sources/remote.py +2 -2
  32. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/analysis_json.py +1 -1
  33. {codeboarding-0.14.4/static_analyzer → codeboarding-0.15.0/diagram_analysis}/cluster_relations.py +2 -2
  34. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/diagram_generator.py +46 -25
  35. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/exceptions.py +12 -0
  36. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/file_coverage.py +3 -3
  37. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/file_index.py +2 -2
  38. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/incremental_changes.py +2 -2
  39. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/incremental_update.py +17 -4
  40. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/io_utils.py +17 -1
  41. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/run_context.py +2 -2
  42. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/scope_assembly.py +4 -4
  43. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/scope_plan.py +1 -1
  44. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/checks/function_size.py +1 -1
  45. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/config.py +2 -2
  46. codeboarding-0.14.4/health_main.py → codeboarding-0.15.0/health/main.py +8 -8
  47. {codeboarding-0.14.4/core → codeboarding-0.15.0/health/plugins}/__init__.py +7 -7
  48. {codeboarding-0.14.4/core → codeboarding-0.15.0/health/plugins}/plugin_loader.py +1 -1
  49. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/runner.py +2 -2
  50. codeboarding-0.15.0/infra/__init__.py +1 -0
  51. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/install.py +28 -11
  52. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/__init__.py +2 -2
  53. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/callbacks.py +6 -2
  54. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/context.py +1 -1
  55. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/mixin.py +2 -2
  56. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/paths.py +1 -1
  57. {codeboarding-0.14.4 → codeboarding-0.15.0/infra/monitoring}/telemetry/__init__.py +1 -1
  58. {codeboarding-0.14.4 → codeboarding-0.15.0/infra/monitoring}/telemetry/events.py +3 -3
  59. {codeboarding-0.14.4 → codeboarding-0.15.0/infra/monitoring}/telemetry/service.py +1 -1
  60. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/writers.py +1 -1
  61. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/__init__.py +4 -4
  62. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/change_detector.py +1 -1
  63. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/ignore.py +1 -3
  64. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/tool_registry/__init__.py +6 -0
  65. codeboarding-0.15.0/infra/tool_registry/grammars.py +47 -0
  66. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/tool_registry/installers.py +97 -11
  67. codeboarding-0.14.4/static_analyzer/java_utils.py → codeboarding-0.15.0/infra/tool_registry/java.py +6 -109
  68. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/tool_registry/manifest.py +24 -10
  69. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/tool_registry/paths.py +1 -1
  70. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/tool_registry/registry.py +48 -7
  71. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/user_config.py +5 -1
  72. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/utils.py +4 -4
  73. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/vscode_constants.py +12 -0
  74. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/html.py +1 -1
  75. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/markdown.py +1 -1
  76. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/mdx.py +1 -1
  77. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/rendering.py +2 -2
  78. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/sphinx.py +1 -1
  79. {codeboarding-0.14.4 → codeboarding-0.15.0}/pyproject.toml +10 -19
  80. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/__init__.py +221 -162
  81. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/analysis_cache.py +5 -3
  82. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/cfg/call_graph.py +10 -10
  83. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/models.py +1 -1
  84. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/draft.py +1 -1
  85. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/inventory.py +1 -1
  86. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/spec.py +1 -1
  87. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/service.py +2 -2
  88. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/config.py +5 -0
  89. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/csharp_config_scanner.py +1 -1
  90. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/dotnet_sdk.py +1 -1
  91. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/__init__.py +2 -0
  92. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/csharp_adapter.py +4 -3
  93. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/go_adapter.py +2 -2
  94. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/java_adapter.py +1 -1
  95. codeboarding-0.15.0/static_analyzer/engine/adapters/kotlin_adapter.py +348 -0
  96. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/php_adapter.py +1 -1
  97. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/python_adapter.py +1 -1
  98. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/rust_adapter.py +1 -1
  99. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/adapters/typescript_adapter.py +5 -1
  100. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/call_graph_builder.py +20 -4
  101. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/edge_builder.py +69 -11
  102. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/hierarchy_builder.py +83 -3
  103. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/language_adapter.py +85 -5
  104. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/lsp_client.py +118 -9
  105. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/lsp_constants.py +6 -3
  106. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/lsp_recycler.py +12 -5
  107. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/process_memory.py +0 -8
  108. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/protocols.py +11 -0
  109. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/result_converter.py +31 -22
  110. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/source_inspector.py +279 -27
  111. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/exceptions.py +4 -0
  112. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/external_calls.py +38 -5
  113. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/graph_definitions.py +14 -3
  114. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/incremental_orchestrator.py +3 -1
  115. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/java_config_scanner.py +1 -1
  116. codeboarding-0.15.0/static_analyzer/java_utils.py +112 -0
  117. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/language_results.py +19 -3
  118. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/scanner.py +3 -3
  119. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/typescript_config_scanner.py +75 -25
  120. codeboarding-0.15.0/static_analyzer/workspace_dependencies.py +93 -0
  121. {codeboarding-0.14.4 → codeboarding-0.15.0}/tests/test_persisted_analysis_artifacts.py +3 -3
  122. {codeboarding-0.14.4 → codeboarding-0.15.0}/tests/test_pyproject_packages.py +2 -9
  123. {codeboarding-0.14.4 → codeboarding-0.15.0}/tests/test_windows_compatibility.py +13 -13
  124. codeboarding-0.14.4/README.md +0 -242
  125. codeboarding-0.14.4/agents/llm_errors.py +0 -139
  126. codeboarding-0.14.4/agents/scope_ids.py +0 -3
  127. codeboarding-0.14.4/codeboarding.egg-info/entry_points.txt +0 -4
  128. codeboarding-0.14.4/codeboarding.egg-info/top_level.txt +0 -21
  129. codeboarding-0.14.4/tests/test_cli_parser.py +0 -265
  130. codeboarding-0.14.4/tests/test_github_action.py +0 -477
  131. codeboarding-0.14.4/tests/test_install.py +0 -303
  132. codeboarding-0.14.4/tests/test_logging_config.py +0 -267
  133. codeboarding-0.14.4/tests/test_main.py +0 -658
  134. codeboarding-0.14.4/tests/test_registry_coverage.py +0 -396
  135. codeboarding-0.14.4/tests/test_telemetry_events.py +0 -199
  136. codeboarding-0.14.4/tests/test_telemetry_service.py +0 -205
  137. codeboarding-0.14.4/tests/test_tool_registry.py +0 -1740
  138. codeboarding-0.14.4/tests/test_user_config.py +0 -299
  139. codeboarding-0.14.4/tests/test_vscode_constants.py +0 -239
  140. {codeboarding-0.14.4 → codeboarding-0.15.0}/LICENSE +0 -0
  141. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/__init__.py +0 -0
  142. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/change_status.py +0 -0
  143. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/component_ownership.py +0 -0
  144. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/constants.py +0 -0
  145. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/file_index_models.py +0 -0
  146. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/incremental_results.py +0 -0
  147. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/llm_renderers/__init__.py +0 -0
  148. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/llm_renderers/call_graph.py +0 -0
  149. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/planner_agent.py +0 -0
  150. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/prompts/__init__.py +0 -0
  151. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/prompts/profiles.py +0 -0
  152. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/tools/__init__.py +0 -0
  153. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/tools/base.py +0 -0
  154. {codeboarding-0.14.4 → codeboarding-0.15.0}/agents/tools/get_method_calls.py +0 -0
  155. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding.egg-info/dependency_links.txt +0 -0
  156. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/__init__.py +0 -0
  157. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/commands/__init__.py +0 -0
  158. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_cli/view_instructions.py +0 -0
  159. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/__init__.py +0 -0
  160. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/orchestration.py +0 -0
  161. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/sources/__init__.py +0 -0
  162. {codeboarding-0.14.4 → codeboarding-0.15.0}/codeboarding_workflows/sources/local.py +0 -0
  163. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/__init__.py +0 -0
  164. {codeboarding-0.14.4/static_analyzer → codeboarding-0.15.0/diagram_analysis}/reference_resolver.py +0 -0
  165. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/run_mode.py +0 -0
  166. {codeboarding-0.14.4 → codeboarding-0.15.0}/diagram_analysis/tree_shape.py +0 -0
  167. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/__init__.py +0 -0
  168. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/checks/__init__.py +0 -0
  169. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/checks/circular_deps.py +0 -0
  170. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/checks/unused_code_diagnostics.py +0 -0
  171. {codeboarding-0.14.4 → codeboarding-0.15.0}/health/models.py +0 -0
  172. {codeboarding-0.14.4/core → codeboarding-0.15.0/health/plugins}/protocols.py +0 -0
  173. {codeboarding-0.14.4/core → codeboarding-0.15.0/health/plugins}/registry.py +0 -0
  174. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/clustering_ids.py +0 -0
  175. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/constants.py +0 -0
  176. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/logging_config.py +0 -0
  177. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/monitoring/stats.py +0 -0
  178. {codeboarding-0.14.4 → codeboarding-0.15.0/infra/monitoring}/telemetry/device_id.py +0 -0
  179. {codeboarding-0.14.4 → codeboarding-0.15.0/infra/monitoring}/telemetry/schemas.py +0 -0
  180. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/errors.py +0 -0
  181. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/git_ops.py +0 -0
  182. {codeboarding-0.14.4 → codeboarding-0.15.0/infra}/repo_utils/path_utils.py +0 -0
  183. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/__init__.py +0 -0
  184. {codeboarding-0.14.4 → codeboarding-0.15.0}/output_generators/html_template.py +0 -0
  185. {codeboarding-0.14.4 → codeboarding-0.15.0}/setup.cfg +0 -0
  186. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/analysis_result.py +0 -0
  187. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/cfg/__init__.py +0 -0
  188. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/cfg/edge.py +0 -0
  189. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/cfg/location_key.py +0 -0
  190. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/__init__.py +0 -0
  191. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/exceptions.py +0 -0
  192. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/__init__.py +0 -0
  193. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/frontier.py +0 -0
  194. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/replay.py +0 -0
  195. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/clustering/names/tokens.py +0 -0
  196. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/dotnet_solution.py +0 -0
  197. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/__init__.py +0 -0
  198. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/edge_build_context.py +0 -0
  199. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/models.py +0 -0
  200. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/progress.py +0 -0
  201. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/symbol_table.py +0 -0
  202. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/engine/utils.py +0 -0
  203. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/internal_references.py +0 -0
  204. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/lsp_client/__init__.py +0 -0
  205. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/lsp_client/diagnostics.py +0 -0
  206. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/node.py +0 -0
  207. {codeboarding-0.14.4 → codeboarding-0.15.0}/static_analyzer/programming_language.py +0 -0
  208. {codeboarding-0.14.4 → codeboarding-0.15.0}/tests/test_view_instructions.py +0 -0
  209. {codeboarding-0.14.4 → codeboarding-0.15.0}/tests/test_windows_encoding.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.14.4
3
+ Version: 0.15.0
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -52,6 +52,7 @@ Requires-Dist: tree-sitter-c-sharp==0.23.5
52
52
  Requires-Dist: tree-sitter-go==0.25.0
53
53
  Requires-Dist: tree-sitter-java==0.23.5
54
54
  Requires-Dist: tree-sitter-javascript==0.25.0
55
+ Requires-Dist: tree-sitter-language-pack==1.21.0
55
56
  Requires-Dist: tree-sitter-php==0.24.1
56
57
  Requires-Dist: tree-sitter-python==0.25.0
57
58
  Requires-Dist: tree-sitter-rust==0.24.2
@@ -84,13 +85,14 @@ Dynamic: license-file
84
85
  - Builds layered abstractions with an LLM agent (OpenAI, Anthropic, Google Gemini, Ollama, and more)
85
86
  - Outputs Mermaid.js diagrams ready for docs, IDEs, and CI/CD pipelines
86
87
 
87
- **Supported languages:** Python · TypeScript · JavaScript · Java · Go · PHP
88
+ **Supported languages:** Python · TypeScript · JavaScript · Java · Kotlin · Go · PHP
88
89
 
89
90
  ---
90
91
 
91
92
  ## Requirements
92
93
 
93
94
  - **Python 3.12 or 3.13** — other versions are currently not supported.
95
+ - **Linux:** glibc 2.34 or newer (Ubuntu 22.04, Debian 12, RHEL 9 or later), for the Kotlin parser.
94
96
 
95
97
  ## Installation
96
98
 
@@ -11,13 +11,14 @@
11
11
  - Builds layered abstractions with an LLM agent (OpenAI, Anthropic, Google Gemini, Ollama, and more)
12
12
  - Outputs Mermaid.js diagrams ready for docs, IDEs, and CI/CD pipelines
13
13
 
14
- **Supported languages:** Python · TypeScript · JavaScript · Java · Go · PHP
14
+ **Supported languages:** Python · TypeScript · JavaScript · Java · Kotlin · Go · PHP
15
15
 
16
16
  ---
17
17
 
18
18
  ## Requirements
19
19
 
20
20
  - **Python 3.12 or 3.13** — other versions are currently not supported.
21
+ - **Linux:** glibc 2.34 or newer (Ubuntu 22.04, Debian 12, RHEL 9 or later), for the Kotlin parser.
21
22
 
22
23
  ## Installation
23
24
 
@@ -0,0 +1,286 @@
1
+ # CodeBoarding
2
+
3
+ **Review the change, not the diff.**
4
+
5
+ See what a pull request does to your system before you merge it. CodeBoarding turns code into interactive architecture maps so you can explore components, follow their dependencies, and review analyzed pull requests alongside code diffs.
6
+
7
+ This repository contains the open-source analysis engine and CLI. Static analysis extracts code relationships; language models help name and describe the components. Use the resulting map in the web platform, your editor, CI, or generated documentation.
8
+
9
+ [Discord](https://discord.gg/T5zHTJYFuy) · [VS Code extension](https://marketplace.visualstudio.com/items?itemName=Codeboarding.codeboarding) <img alt="" referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=8a3d26e0-6f6b-49c0-8482-114445de56a5" width="0" height="0" /> · [Open VSX extension](https://open-vsx.org/extension/CodeBoarding/codeboarding) <img alt="" referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=ce87464c-2792-46b0-9ea2-87eefe853d7e" width="0" height="0" /> · [Web platform](https://app.codeboarding.org) · [Website](https://codeboarding.org) <img alt="" referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=0855d476-b2d0-44cc-b93d-69b47504719c" width="0" height="0" /> · [Getting started](https://codeboarding.org/getting-started)
10
+
11
+ [![Website animation: a pull-request diff becomes a six-component system map, revealing a new dependency from Payments to Identity.](docs/images/codeboarding-story.gif)](https://codeboarding.org)
12
+
13
+ *The website's illustrative animation (plays once, about 18 seconds). [View the static map](docs/images/codeboarding-story-static.png) or [replay the interactive story on the website](https://codeboarding.org).*
14
+
15
+ The example starts with a large pull-request diff, then shows the six components it touches. Identity and Payments have changed: a new dependency means a Google sign-in outage can block card payments.
16
+
17
+ [![JavaScript](https://img.shields.io/badge/JavaScript-222222?style=flat-square&logo=javascript&logoColor=F7DF1E)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
18
+ [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
19
+ [![Java](https://img.shields.io/badge/Java-E76F00?style=flat-square&logo=openjdk&logoColor=white)](https://www.java.com/)
20
+ [![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?style=flat-square&logo=kotlin&logoColor=white)](https://kotlinlang.org/)
21
+ [![Python](https://img.shields.io/badge/Python-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/)
22
+ [![Go](https://img.shields.io/badge/Go-00ADD8?style=flat-square&logo=go&logoColor=white)](https://go.dev/)
23
+ [![PHP](https://img.shields.io/badge/PHP-777BB4?style=flat-square&logo=php&logoColor=white)](https://www.php.net/)
24
+ [![Rust](https://img.shields.io/badge/Rust-000000?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org/)
25
+ [![C#](https://custom-icon-badges.demolab.com/badge/C%23-512BD4.svg?style=flat-square&logo=cshrp&logoColor=white)](https://learn.microsoft.com/en-us/dotnet/csharp/)
26
+
27
+ ## Explore the system. Review the change
28
+
29
+ - **Explore:** start with the architecture map, expand components, and navigate to the source behind them. Open prepared public repositories without signing in.
30
+ - **Review:** see changed components and dependencies, read changes grouped by component, and inspect code diffs. PR review requires an available analysis from the GitHub Action; architecture comparisons also need a baseline.
31
+ - **Bring your own analysis:** open an `analysis.json` or compare two local analysis files. Files are parsed and compared in your browser.
32
+ - **Share context:** use component descriptions and diagrams in documentation, reviews, and your coding agent's next prompt.
33
+
34
+ ## What CodeBoarding generates
35
+
36
+ - An `analysis.json` containing the architecture, component descriptions, relationships, and source references.
37
+ - Nested component diagrams for exploring subsystems.
38
+ - Markdown with Mermaid diagrams, HTML, MDX, or reStructuredText documentation when you request rendering.
39
+ - Incremental updates against a previous analysis, or updates to a selected component.
40
+
41
+ ## How it works
42
+
43
+ 1. **Analyze the code.** The engine scans the repository and extracts symbols and relationships with static analysis.
44
+ 2. **Build the map.** It groups code into components and uses your configured model provider to describe their responsibilities. Analysis can send code excerpts to that provider.
45
+ 3. **Explore or review.** Load the analysis in the web platform or editor, render it as documentation, or use the GitHub Action to publish architecture changes on pull requests.
46
+
47
+ The engine's top-level architecture, generated from the [committed analysis](https://github.com/CodeBoarding/CodeBoarding/blob/58291a48b2a609f68e0d19dccd0f3a605907ed28/.codeboarding/analysis.json) dated September 21, 2026:
48
+
49
+ ```mermaid
50
+ graph LR
51
+ Static_Analysis_Engine["Static Analysis Engine"]
52
+ Diagram_Generation_and_Health_Orchestration["Diagram Generation and Health Orchestration"]
53
+ LLM_Planning_and_Analysis_Agents["LLM Planning and Analysis Agents"]
54
+ CLI_Workflows_and_Output_Generators["CLI, Workflows, and Output Generators"]
55
+ Repository_and_File_Utilities["Repository and File Utilities"]
56
+ Application_Entry_Points_and_Runtime_Configuration["Application Entry Points and Runtime Configuration"]
57
+ Execution_Monitoring_and_Metrics["Execution Monitoring and Metrics"]
58
+ Tool_Registry_and_Environment_Installer["Tool Registry and Environment Installer"]
59
+ Static_Analysis_Engine -- "tracks telemetry events" --> Diagram_Generation_and_Health_Orchestration
60
+ Static_Analysis_Engine -- "checks repository ignores and git changes" --> Repository_and_File_Utilities
61
+ Static_Analysis_Engine -- "locates tool binaries and runtime directories" --> Tool_Registry_and_Environment_Installer
62
+ Static_Analysis_Engine -- "builds agent insight models" --> LLM_Planning_and_Analysis_Agents
63
+ Static_Analysis_Engine -- "formats cluster identifiers" --> Application_Entry_Points_and_Runtime_Configuration
64
+ Diagram_Generation_and_Health_Orchestration -- "queries static analysis graphs and specs" --> Static_Analysis_Engine
65
+ Diagram_Generation_and_Health_Orchestration -- "configures LLMs and models file index entries" --> LLM_Planning_and_Analysis_Agents
66
+ Diagram_Generation_and_Health_Orchestration -- "normalizes paths and checks git changes" --> Repository_and_File_Utilities
67
+ Diagram_Generation_and_Health_Orchestration -- "resolves cluster hierarchy and ordering" --> Application_Entry_Points_and_Runtime_Configuration
68
+ Diagram_Generation_and_Health_Orchestration -- "initializes stats writers and logs runs" --> Execution_Monitoring_and_Metrics
69
+ Diagram_Generation_and_Health_Orchestration -- "executes plugin health checks" --> CLI_Workflows_and_Output_Generators
70
+ LLM_Planning_and_Analysis_Agents -- "reads call graph edges and nodes" --> Static_Analysis_Engine
71
+ LLM_Planning_and_Analysis_Agents -- "filters repository files and normalizes paths" --> Repository_and_File_Utilities
72
+ LLM_Planning_and_Analysis_Agents -- "checks cluster hierarchy and loads user configuration" --> Application_Entry_Points_and_Runtime_Configuration
73
+ LLM_Planning_and_Analysis_Agents -- "attaches monitoring callbacks and mixins" --> Execution_Monitoring_and_Metrics
74
+ CLI_Workflows_and_Output_Generators -- "resolves execution context and loads analysis metadata" --> Diagram_Generation_and_Health_Orchestration
75
+ CLI_Workflows_and_Output_Generators -- "initializes LLM credentials and computes source hashes" --> LLM_Planning_and_Analysis_Agents
76
+ CLI_Workflows_and_Output_Generators -- "manages ignore files and repository git operations" --> Repository_and_File_Utilities
77
+ CLI_Workflows_and_Output_Generators -- "loads user configuration and sets up logging" --> Application_Entry_Points_and_Runtime_Configuration
78
+ CLI_Workflows_and_Output_Generators -- "wraps workflow execution in monitoring context" --> Execution_Monitoring_and_Metrics
79
+ CLI_Workflows_and_Output_Generators -- "ensures required tool binaries are installed" --> Tool_Registry_and_Environment_Installer
80
+ CLI_Workflows_and_Output_Generators -- "retrieves node type definitions for output rendering" --> Static_Analysis_Engine
81
+ Repository_and_File_Utilities -- "builds tool configurations from manifest" --> Tool_Registry_and_Environment_Installer
82
+ Repository_and_File_Utilities -- "reads fingerprint data for change detection" --> Diagram_Generation_and_Health_Orchestration
83
+ Repository_and_File_Utilities -- "hashes repository source files for fingerprint comparison" --> LLM_Planning_and_Analysis_Agents
84
+ Application_Entry_Points_and_Runtime_Configuration -- "loads analysis metadata and resolves run context" --> Diagram_Generation_and_Health_Orchestration
85
+ Application_Entry_Points_and_Runtime_Configuration -- "triggers incremental analysis and renders documentation formats" --> CLI_Workflows_and_Output_Generators
86
+ Application_Entry_Points_and_Runtime_Configuration -- "clones and checks out repositories in temporary folders" --> Repository_and_File_Utilities
87
+ Execution_Monitoring_and_Metrics -- "resolves project root directory for monitoring storage" --> Repository_and_File_Utilities
88
+ Tool_Registry_and_Environment_Installer -- "inspects language definitions and runtime environments" --> Static_Analysis_Engine
89
+ Tool_Registry_and_Environment_Installer -- "locates executable runnables and initializes configuration templates" --> Application_Entry_Points_and_Runtime_Configuration
90
+ ```
91
+
92
+ For the engine's own architecture, [open its interactive map](https://app.codeboarding.org/CodeBoarding/CodeBoarding).
93
+
94
+ ## Quick start
95
+
96
+ To try the product without installing anything, [open a public map](https://app.codeboarding.org/CodeBoarding/CodeBoarding). To connect your own repositories, [sign in to the web platform](https://app.codeboarding.org) and choose which repositories CodeBoarding can access. See the [getting-started guide](https://codeboarding.org/getting-started) for the GitHub and editor workflows.
97
+
98
+ To run the analysis engine yourself, use either option below. Both require **Python 3.12** and a [configured model provider](#configuration).
99
+
100
+ ### Run from source
101
+
102
+ ```bash
103
+ git clone https://github.com/CodeBoarding/CodeBoarding.git
104
+ cd CodeBoarding
105
+ uv sync --frozen
106
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
107
+ python -m infra.install
108
+ python -m codeboarding_cli.main full --local /path/to/repo
109
+ ```
110
+
111
+ ### Use the packaged CLI
112
+
113
+ The recommended install method is [pipx](https://pipx.pypa.io), which keeps the CLI in its own isolated environment:
114
+
115
+ ```bash
116
+ pipx install codeboarding --python python3.12
117
+ codeboarding-setup
118
+ codeboarding full --local /path/to/repo
119
+ ```
120
+
121
+ Or, if you prefer pip, install into a virtual environment (not the global Python):
122
+
123
+ ```bash
124
+ pip install codeboarding --extra-index-url https://pip.codeboarding.org/simple/
125
+ codeboarding-setup
126
+ codeboarding full --local /path/to/repo
127
+ ```
128
+
129
+ Output is written to `/path/to/repo/.codeboarding/`. To explore it interactively, open the
130
+ [web platform](https://app.codeboarding.org) and load the generated `analysis.json` through
131
+ the viewer's **Switch source** → **File** picker.
132
+ Local analysis files are parsed and compared in your browser; this is separate from generating
133
+ the analysis with your configured model provider.
134
+
135
+ To also generate `overview` and one file per expanded component, pass `--render` with one of
136
+ `md`, `html`, `mdx`, or `rst`. Rendering is available after full, incremental, and partial local analyses;
137
+ previously generated files for the selected format are reconciled from a renderer-owned manifest:
138
+
139
+ ```bash
140
+ codeboarding full --local /path/to/repo --render md
141
+ codeboarding incremental --local /path/to/repo --render html
142
+ codeboarding partial --local /path/to/repo --component-id "1.2" --render rst
143
+ ```
144
+
145
+ You can render an existing analysis without rerunning analysis or configuring an LLM:
146
+
147
+ ```bash
148
+ codeboarding-render /path/to/repo/.codeboarding/analysis.json
149
+ # Select a format or output directory:
150
+ codeboarding-render /path/to/analysis.json --format mdx --output-dir /path/to/docs
151
+
152
+ # From a source checkout in development:
153
+ python codeboarding_cli/render.py ../../demo/markitdown/.codeboarding/analysis.json --format md
154
+ ```
155
+
156
+ `python -m infra.install` and `codeboarding-setup` download language server binaries to `~/.codeboarding/servers/`, shared across projects. Node.js (and its bundled `npm`) is required for the Python, TypeScript, JavaScript, and PHP language servers; if neither `node` nor `CODEBOARDING_NODE_PATH` is set, setup downloads a pinned Node.js runtime into `~/.codeboarding/servers/nodeenv/` automatically.
157
+
158
+ ## Configuration
159
+
160
+ On first run, CodeBoarding creates `~/.codeboarding/config.toml`. Set one provider there or use environment variables.
161
+
162
+ ```toml
163
+ [provider]
164
+ # openai_api_key = "sk-..."
165
+ # openai_base_url = "https://api.example.com/v1" # any OpenAI-compatible gateway
166
+ # anthropic_api_key = "sk-ant-..."
167
+ # anthropic_base_url = "https://resource.services.ai.azure.com/anthropic" # Azure Foundry
168
+ # google_api_key = "AIza..."
169
+ # vercel_api_key = "vck_..."
170
+ # aws_bearer_token_bedrock = "..."
171
+ # ollama_base_url = "http://localhost:11434"
172
+ # openrouter_api_key = "sk-..."
173
+ # orcarouter_api_key = "sk-orca-..." # model routing gateway (https://www.orcarouter.ai)
174
+ # requesty_api_key = "rqsty-..." # LLM gateway (https://www.requesty.ai)
175
+ # litellm_base_url = "http://localhost:4000" # LiteLLM proxy server URL (required)
176
+ # litellm_api_key = "sk-..." # LiteLLM proxy server key (optional)
177
+
178
+ [llm]
179
+ # agent_model = "gemini-3.8-flash"
180
+ ```
181
+
182
+ `openai_base_url` points CodeBoarding at any OpenAI-compatible gateway, including LM Studio. Set its model ID with `agent_model`; CodeBoarding adapts its prompts for the model families already represented by its provider defaults, including Qwen. The equivalent shell variables are `OPENAI_BASE_URL`, `OPENAI_API_KEY`, and `AGENT_MODEL`.
183
+
184
+ `anthropic_base_url` points the Anthropic client at a compatible Messages API, including Azure Foundry Claude deployments. Set the deployment key as `anthropic_api_key` and use canonical Anthropic model IDs such as `claude-sonnet-5` for `agent_model` so CodeBoarding selects the correct model capabilities and prompts.
185
+
186
+ Shell environment variables such as `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, and `OLLAMA_BASE_URL` take precedence over the config file. For private repositories, set `GITHUB_TOKEN` in your environment.
187
+
188
+ Three environment variables tune the static analysis itself:
189
+
190
+ | Variable | Effect |
191
+ | --- | --- |
192
+ | `CODEBOARDING_LSP_REQUEST_TIMEOUT` | Seconds a language-server request may block *when it uses the per-language default* (120s for C# and Kotlin, 60s elsewhere). Not a hard cap on every request: `initialize` has its own startup budget (the request default), Kotlin's build import is awaited separately (up to 1800s), and the indexing and didOpen-drain probes pass their own scaled budget (60s plus 2s per file, capped at 1800s); neither is affected. Applies to every language in the run. Unset or empty leaves the defaults alone; any other unusable value fails the run rather than falling back. |
193
+ | `CODEBOARDING_MAX_CONCURRENT_ENGINES` | How many language servers an analysis runs at once. Unset or `0`, the CLI and the GitHub Action run one at a time, each stopped when its language is done, and the editor keeps one per project running. Set, the editor's servers also start only for an analysis, so its file queries are unavailable. |
194
+ | `CODEBOARDING_LSP_MEMORY_BUDGET_MB` | Megabytes the language servers running at once share; tsserver's heap is its share less 512. Unset, it is three quarters of the machine's memory (or of a cgroup v2 container's limit, when lower), at most 12 GB. |
195
+
196
+ ## Common commands
197
+
198
+ ```bash
199
+ # Analyze a local repository
200
+ python -m codeboarding_cli.main full --local ./my-project
201
+
202
+ # Raise the depth ceiling to auto-expand deeper (rarely needed — a component that
203
+ # outgrows the leaf ceiling is flagged expandable at whatever depth the run stops
204
+ # and can be expanded on demand; --depth-cap is a safety-valve cap, default 3)
205
+ python -m codeboarding_cli.main full --local ./my-project --depth-cap 5
206
+
207
+ # Re-analyze only changed parts when possible
208
+ python -m codeboarding_cli.main incremental --local ./my-project
209
+
210
+ # Update a single component by ID
211
+ python -m codeboarding_cli.main partial --local ./my-project --component-id "1.2"
212
+
213
+ # Analyze a remote GitHub repository
214
+ python -m codeboarding_cli.main full https://github.com/pytorch/pytorch
215
+ ```
216
+
217
+ `--depth-cap` configures `metadata.depth_cap`; `metadata.depth_level` records the
218
+ depth actually reached. The cap is a maximum, not a target depth. `--depth-level`
219
+ is rejected; there is no compatibility alias.
220
+
221
+ Python callers must use `run_full(..., depth_cap=...)`,
222
+ `build_generator(..., depth_cap=...)`, and `DiagramGenerator(..., depth_cap=...)`.
223
+ The generator attribute is `depth_cap` and the exported default is
224
+ `diagram_analysis.DEFAULT_DEPTH_CAP` (3). The GitHub helper uses `DIAGRAM_DEPTH_CAP`
225
+ and rejects `DIAGRAM_DEPTH_LEVEL`. Telemetry reports configured `depth_cap`, not
226
+ `depth_level`. Readers of analysis results must keep reading `metadata.depth_level`
227
+ for the actual depth. Existing baseline loading behavior is unchanged: prefer
228
+ `metadata.depth_cap`, fall back to legacy `metadata.depth_level`, then use
229
+ `DEFAULT_DEPTH_CAP` if neither exists. This metadata fallback is not a CLI alias.
230
+
231
+ > **Incremental needs a baseline.** `incremental` diffs the working tree against the previous
232
+ > analysis in `.codeboarding/` (`analysis.json` + `fingerprint.json`). That baseline can live
233
+ > purely locally — a prior `full`/`incremental` run in the same output dir is enough. Commit
234
+ > `.codeboarding/` only if you want the baseline to travel with the branch (so a teammate or a
235
+ > fresh checkout can run incremental too). With no baseline at all — or one that predates content
236
+ > versioning — `incremental` fails fast with "run a full analysis first" rather than silently
237
+ > doing a full run. Static-analysis caches are versioned but not migrated; after a cache-version
238
+ > upgrade, run a full analysis once to reindex.
239
+
240
+ ## Where to use it
241
+
242
+ - **CLI:** [CodeBoarding CLI](#quick-start) — this repository — for local analysis, automation, and documentation generation.
243
+ - **Browser:** [web platform](https://app.codeboarding.org) for Explore and Review, public maps, and local analysis files.
244
+ - **Editor:** [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Codeboarding.codeboarding) or [Open VSX](https://open-vsx.org/extension/CodeBoarding/codeboarding) for in-editor architecture exploration.
245
+ - **CI:** [GitHub Action](https://github.com/marketplace/actions/codeboarding-action) to keep analysis updated and post architecture change maps on pull requests.
246
+
247
+ ## Supported stack
248
+
249
+ - Languages: Python, TypeScript, JavaScript, Java, Kotlin, Go, PHP, Rust, C#.
250
+ - Java needs a JDK (21 recommended).
251
+ - Kotlin is analysed with JetBrains' [kotlin-lsp](https://github.com/Kotlin/kotlin-lsp) (about 360 MB with its own Java runtime, under the [JetBrains Free Plugin License](https://github.com/Kotlin/kotlin-lsp/blob/main/kotlin-vscode/LICENSE.txt)) and needs glibc 2.34 or newer on Linux. Kotlin calls into Java are not drawn yet.
252
+ - LLM providers: OpenAI, Anthropic, Google, Vercel AI Gateway, AWS Bedrock, Ollama, OpenRouter, OrcaRouter, Requesty, LiteLLM proxy, and more.
253
+
254
+ ## Examples
255
+
256
+ - [Explore CodeBoarding's architecture](https://app.codeboarding.org/CodeBoarding/CodeBoarding) — the engine, drawn from its own code.
257
+ - [Review CodeBoarding pull request #586](https://app.codeboarding.org/CodeBoarding/CodeBoarding/pull/586) — component changes and code diffs together.
258
+ - [Browse example diagrams](https://codeboarding.org/diagrams).
259
+ - [Awesome Architecture MDs](https://github.com/CodeBoarding/awesome-architecture-mds) — generated architecture documentation for open-source repositories (formerly GeneratedOnBoardings).
260
+
261
+ Public maps need a committed `.codeboarding/analysis.json` at the selected branch or commit.
262
+ Open one at `https://app.codeboarding.org/<owner>/<repo>` without signing in; opening a URL does not generate a new analysis.
263
+
264
+ ## Telemetry
265
+
266
+ CodeBoarding collects usage telemetry (which command ran, success/failure,
267
+ duration, token cost, repository size and languages, and the account the
268
+ repository belongs to) to help us improve the tool. It is on by default and
269
+ never collects source code, file names, repository names, paths, prompts, model
270
+ outputs, or API keys. Opt out anytime:
271
+
272
+ ```bash
273
+ export CODEBOARDING_TELEMETRY=false # or: export DO_NOT_TRACK=1
274
+ ```
275
+
276
+ See [TELEMETRY.md](TELEMETRY.md) for the full list of events and properties.
277
+
278
+ ## Contributing
279
+
280
+ If you want to improve CodeBoarding, open an [issue](https://github.com/CodeBoarding/CodeBoarding/issues) or send a pull request. We welcome improvements to analysis quality, output generators, integrations, and developer experience.
281
+
282
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and testing guidance.
283
+
284
+ ## License
285
+
286
+ The analysis engine and CLI in this repository are released under the [MIT License](LICENSE).
@@ -8,7 +8,7 @@ from enum import StrEnum
8
8
 
9
9
  from pydantic import BaseModel, Field
10
10
 
11
- from clustering_ids import ComponentId
11
+ from infra.clustering_ids import ComponentId
12
12
  from agents.file_index_models import FileEntry, FileMethodGroup, MethodIndexEntry
13
13
  from agents.scope_ids import ROOT_SCOPE_ID
14
14
 
@@ -10,7 +10,7 @@ import os
10
10
  from pathlib import Path
11
11
  from typing import NamedTuple
12
12
 
13
- from repo_utils.ignore import RepoIgnoreManager
13
+ from infra.repo_utils.ignore import RepoIgnoreManager
14
14
 
15
15
  SOURCE_ENCODING = "utf-8"
16
16
  SOURCE_DECODE_ERRORS = "surrogateescape"
@@ -15,12 +15,7 @@ from langchain_openai import ChatOpenAI
15
15
  from agents.constants import LLMDefaults, ModelCapabilities
16
16
  from agents.model_capabilities import ContextWindow, get_context_window
17
17
  from agents.prompts import PromptProfile, resolve_prompt_profile
18
- from monitoring.callbacks import MonitoringCallback
19
-
20
- # Initialize global monitoring callback with its own stats container to avoid ContextVar dependency
21
- from monitoring.stats import RunStats
22
-
23
- MONITORING_CALLBACK = MonitoringCallback(stats_container=RunStats())
18
+ from infra.monitoring.callbacks import MONITORING_CALLBACK
24
19
 
25
20
  logger = logging.getLogger(__name__)
26
21
 
@@ -294,6 +289,19 @@ LLM_PROVIDERS = {
294
289
  "max_retries": 0,
295
290
  },
296
291
  ),
292
+ "requesty": LLMConfig(
293
+ chat_class=ChatOpenAI,
294
+ selection_envs=["REQUESTY_API_KEY"],
295
+ api_key_env="REQUESTY_API_KEY",
296
+ agent_model="gemini-3.8-flash",
297
+ base_url_env="REQUESTY_BASE_URL",
298
+ default_base_url="https://router.requesty.ai/v1",
299
+ extra_args={
300
+ "max_tokens": None,
301
+ "timeout": LLMDefaults.REQUEST_TIMEOUT_SECONDS,
302
+ "max_retries": 0,
303
+ },
304
+ ),
297
305
  "litellm": LLMConfig(
298
306
  chat_class=ChatOpenAI,
299
307
  # Base URL only: a key alone must not select litellm, since there is no
@@ -463,6 +471,15 @@ def get_current_prompt_profile(llm: BaseChatModel | None = None) -> PromptProfil
463
471
  return resolve_prompt_profile(get_current_agent_model_ref())
464
472
 
465
473
 
474
+ #: What CodeBoarding-action writes as ``OPENROUTER_API_KEY`` for hosted credentials: a placeholder its
475
+ #: local relay swaps for a GitHub OIDC token. Keep in step with the action's ``configure-auth.sh``.
476
+ OIDC_RELAY_PLACEHOLDER_KEY = "github-actions-oidc-relay"
477
+
478
+ #: ``key_tail`` for a run on hosted credentials: the placeholder's last four characters name no key
479
+ #: the user holds, so an auth error must not ask them to check it.
480
+ CODEBOARDING_KEY_TAIL = "hosted"
481
+
482
+
466
483
  def current_provider_key_context() -> tuple[str, str]:
467
484
  """The selected provider name and a masked key tail, for auth-error messages.
468
485
 
@@ -476,6 +493,8 @@ def current_provider_key_context() -> tuple[str, str]:
476
493
  return "unknown", "unknown"
477
494
  name = selected[0]
478
495
  key = LLM_PROVIDERS[name].get_api_key()
496
+ if key == OIDC_RELAY_PLACEHOLDER_KEY:
497
+ return name, CODEBOARDING_KEY_TAIL
479
498
  key_tail = key[-4:] if key and len(key) >= 4 else "unknown"
480
499
  return name, key_tail
481
500