codebrain 0.3.3__tar.gz → 0.3.4__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 (168) hide show
  1. {codebrain-0.3.3 → codebrain-0.3.4}/PKG-INFO +1 -1
  2. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/__init__.py +1 -1
  3. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/cli.py +1 -1
  4. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/PKG-INFO +1 -1
  5. {codebrain-0.3.3 → codebrain-0.3.4}/pyproject.toml +1 -1
  6. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_cli.py +30 -0
  7. {codebrain-0.3.3 → codebrain-0.3.4}/LICENSE +0 -0
  8. {codebrain-0.3.3 → codebrain-0.3.4}/README.md +0 -0
  9. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/__main__.py +0 -0
  10. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/actions/__init__.py +0 -0
  11. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/actions/base.py +0 -0
  12. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/actions/refactor.py +0 -0
  13. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/actions/reviewer.py +0 -0
  14. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/actions/test_gen.py +0 -0
  15. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/agent_bridge.py +0 -0
  16. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/analyzer.py +0 -0
  17. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/api.py +0 -0
  18. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/api_models.py +0 -0
  19. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/architecture.py +0 -0
  20. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/comprehension.py +0 -0
  21. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/config.py +0 -0
  22. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/context.py +0 -0
  23. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/cross_query.py +0 -0
  24. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/cross_registry.py +0 -0
  25. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/diff_impact.py +0 -0
  26. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/env_migration.py +0 -0
  27. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/equivalence.py +0 -0
  28. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/export.py +0 -0
  29. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/frontend.py +0 -0
  30. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/graph/__init__.py +0 -0
  31. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/graph/query.py +0 -0
  32. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/graph/schema.py +0 -0
  33. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/graph/store.py +0 -0
  34. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/hook_runner.py +0 -0
  35. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/hooks.py +0 -0
  36. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/indexer.py +0 -0
  37. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/kt.py +0 -0
  38. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/kt_video.py +0 -0
  39. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/llm.py +0 -0
  40. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/logging.py +0 -0
  41. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/mcp_lifecycle.py +0 -0
  42. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/mcp_server.py +0 -0
  43. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/memory/__init__.py +0 -0
  44. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/memory/store.py +0 -0
  45. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/migration.py +0 -0
  46. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/modernize.py +0 -0
  47. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/onboard.py +0 -0
  48. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/__init__.py +0 -0
  49. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/base.py +0 -0
  50. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/cobol_parser.py +0 -0
  51. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/config_parser.py +0 -0
  52. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/csharp_parser.py +0 -0
  53. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/dart_parser.py +0 -0
  54. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/fortran_parser.py +0 -0
  55. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/frontend_parser.py +0 -0
  56. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/go_parser.py +0 -0
  57. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/java_parser.py +0 -0
  58. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/kotlin_parser.py +0 -0
  59. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/models.py +0 -0
  60. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/mumps_parser.py +0 -0
  61. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/plsql_parser.py +0 -0
  62. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/python_parser.py +0 -0
  63. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/registry.py +0 -0
  64. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/rust_parser.py +0 -0
  65. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/schema_parser.py +0 -0
  66. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/typescript_parser.py +0 -0
  67. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/typescript_treesitter.py +0 -0
  68. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/parser/vue_parser.py +0 -0
  69. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/py.typed +0 -0
  70. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/resolver.py +0 -0
  71. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/rewriter.py +0 -0
  72. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/schema_migration.py +0 -0
  73. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/settings.py +0 -0
  74. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/susa_auth.py +0 -0
  75. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/test_gaps.py +0 -0
  76. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/test_runner.py +0 -0
  77. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/tour.py +0 -0
  78. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/ui_migration.py +0 -0
  79. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/utils.py +0 -0
  80. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/validator.py +0 -0
  81. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/watcher/__init__.py +0 -0
  82. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain/watcher/file_watcher.py +0 -0
  83. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/SOURCES.txt +0 -0
  84. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/dependency_links.txt +0 -0
  85. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/entry_points.txt +0 -0
  86. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/requires.txt +0 -0
  87. {codebrain-0.3.3 → codebrain-0.3.4}/codebrain.egg-info/top_level.txt +0 -0
  88. {codebrain-0.3.3 → codebrain-0.3.4}/setup.cfg +0 -0
  89. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_actions.py +0 -0
  90. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_agent_bridge.py +0 -0
  91. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_analyzer.py +0 -0
  92. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_api.py +0 -0
  93. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_architecture.py +0 -0
  94. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_ci.py +0 -0
  95. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_comprehension.py +0 -0
  96. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_context.py +0 -0
  97. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_contracts_real.py +0 -0
  98. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_coverage_gaps.py +0 -0
  99. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_cross_repo.py +0 -0
  100. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_csharp_parser.py +0 -0
  101. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_dart_parser.py +0 -0
  102. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_dataflow.py +0 -0
  103. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_dead_code_confidence.py +0 -0
  104. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_diff_impact.py +0 -0
  105. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_env_migration.py +0 -0
  106. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_equivalence.py +0 -0
  107. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_error_recovery.py +0 -0
  108. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_export.py +0 -0
  109. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_fingerprints.py +0 -0
  110. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_frontend.py +0 -0
  111. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_gate_battle.py +0 -0
  112. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_go_parser.py +0 -0
  113. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_hooks.py +0 -0
  114. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_indexer.py +0 -0
  115. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_infra_parser.py +0 -0
  116. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_install.py +0 -0
  117. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_integration.py +0 -0
  118. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_java_parser.py +0 -0
  119. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_jyotishyamitra.py +0 -0
  120. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_kotlin_parser.py +0 -0
  121. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_kt.py +0 -0
  122. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_legacy_parsers.py +0 -0
  123. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_llm.py +0 -0
  124. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_mcp_lifecycle.py +0 -0
  125. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_mcp_server.py +0 -0
  126. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_memory.py +0 -0
  127. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_migration.py +0 -0
  128. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_modernize.py +0 -0
  129. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_multi_project_cli.py +0 -0
  130. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_narratives.py +0 -0
  131. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_onboard.py +0 -0
  132. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_orm_detection.py +0 -0
  133. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_output_quality.py +0 -0
  134. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_parser.py +0 -0
  135. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_plugin_system.py +0 -0
  136. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_production_hardening.py +0 -0
  137. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_query.py +0 -0
  138. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_real_codebase.py +0 -0
  139. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_real_features.py +0 -0
  140. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_real_frontend.py +0 -0
  141. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_real_repos.py +0 -0
  142. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_real_world.py +0 -0
  143. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_resolver.py +0 -0
  144. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_rewriter.py +0 -0
  145. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_rust_parser.py +0 -0
  146. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_scale.py +0 -0
  147. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_scale_optimizations.py +0 -0
  148. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_scale_real.py +0 -0
  149. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_schema.py +0 -0
  150. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_schema_migration.py +0 -0
  151. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_schema_parser.py +0 -0
  152. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_settings.py +0 -0
  153. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_store.py +0 -0
  154. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_test_runner.py +0 -0
  155. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_tour.py +0 -0
  156. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_translate.py +0 -0
  157. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_ts_ast_parser.py +0 -0
  158. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_ts_parser_enhanced.py +0 -0
  159. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_typescript_parser.py +0 -0
  160. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_ui_migration.py +0 -0
  161. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_utils.py +0 -0
  162. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_validation_narratives.py +0 -0
  163. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_validator.py +0 -0
  164. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_validator_scenarios.py +0 -0
  165. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_vscode_extension.py +0 -0
  166. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_watch_validate.py +0 -0
  167. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_watcher.py +0 -0
  168. {codebrain-0.3.3 → codebrain-0.3.4}/tests/test_zoom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codebrain
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: Know what breaks before you break it. Structural knowledge graph for codebases — impact analysis, dead code detection, health scores. No LLM required.
5
5
  Author: CodeBrain Contributors
6
6
  License: MIT License
@@ -7,4 +7,4 @@ try:
7
7
  except PackageNotFoundError:
8
8
  # Source checkout without installation (e.g. running from a worktree).
9
9
  # Keep in sync with [project.version] in pyproject.toml.
10
- __version__ = "0.3.3"
10
+ __version__ = "0.3.4"
@@ -375,7 +375,7 @@ def setup(ctx: click.Context, force: bool) -> None:
375
375
  project_name = repo_root.name
376
376
 
377
377
  # 1. Index if needed
378
- db_path = _get_db(repo_root)
378
+ db_path = _db_path(repo_root)
379
379
  if not db_path.exists():
380
380
  files = discover_files(repo_root)
381
381
  click.echo(f"Indexing {repo_root} ({len(files)} files) ...")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codebrain
3
- Version: 0.3.3
3
+ Version: 0.3.4
4
4
  Summary: Know what breaks before you break it. Structural knowledge graph for codebases — impact analysis, dead code detection, health scores. No LLM required.
5
5
  Author: CodeBrain Contributors
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codebrain"
7
- version = "0.3.3"
7
+ version = "0.3.4"
8
8
  description = "Know what breaks before you break it. Structural knowledge graph for codebases — impact analysis, dead code detection, health scores. No LLM required."
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -39,6 +39,36 @@ class TestInit:
39
39
  assert "Edges:" in result.output
40
40
 
41
41
 
42
+ class TestSetup:
43
+ def test_setup_cold(self, simple_project):
44
+ runner = CliRunner()
45
+ result = _invoke(runner, ["setup"], str(simple_project))
46
+ assert result.exit_code == 0, result.output
47
+ assert (simple_project / "CLAUDE.md").exists()
48
+ config = json.loads((simple_project / ".mcp.json").read_text())
49
+ assert "codebrain" in config["mcpServers"]
50
+ assert config["mcpServers"]["codebrain"]["args"] == ["-m", "codebrain.mcp_server"]
51
+
52
+ def test_setup_preserves_existing_mcp_servers(self, simple_project):
53
+ existing = {"mcpServers": {"other": {"command": "node", "args": ["server.js"]}}}
54
+ (simple_project / ".mcp.json").write_text(json.dumps(existing))
55
+ runner = CliRunner()
56
+ result = _invoke(runner, ["setup"], str(simple_project))
57
+ assert result.exit_code == 0, result.output
58
+ config = json.loads((simple_project / ".mcp.json").read_text())
59
+ assert "other" in config["mcpServers"]
60
+ assert "codebrain" in config["mcpServers"]
61
+
62
+ def test_setup_idempotent_without_force(self, simple_project):
63
+ runner = CliRunner()
64
+ first = _invoke(runner, ["setup"], str(simple_project))
65
+ assert first.exit_code == 0
66
+ (simple_project / "CLAUDE.md").write_text("custom user content")
67
+ second = _invoke(runner, ["setup"], str(simple_project))
68
+ assert second.exit_code == 0
69
+ assert (simple_project / "CLAUDE.md").read_text() == "custom user content"
70
+
71
+
42
72
  class TestStatus:
43
73
  def test_status_text(self, indexed_project):
44
74
  repo_root, store = indexed_project
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes