codebeacon 0.1.5__tar.gz → 0.1.6__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 (107) hide show
  1. {codebeacon-0.1.5 → codebeacon-0.1.6}/PKG-INFO +1 -1
  2. codebeacon-0.1.6/codebeacon/__init__.py +1 -0
  3. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/discover/detector.py +11 -1
  4. {codebeacon-0.1.5 → codebeacon-0.1.6}/pyproject.toml +1 -1
  5. codebeacon-0.1.5/codebeacon/__init__.py +0 -1
  6. {codebeacon-0.1.5 → codebeacon-0.1.6}/.cursorrules +0 -0
  7. {codebeacon-0.1.5 → codebeacon-0.1.6}/.github/CODEOWNERS +0 -0
  8. {codebeacon-0.1.5 → codebeacon-0.1.6}/.github/dependabot.yml +0 -0
  9. {codebeacon-0.1.5 → codebeacon-0.1.6}/.github/workflows/ci.yml +0 -0
  10. {codebeacon-0.1.5 → codebeacon-0.1.6}/.github/workflows/release.yml +0 -0
  11. {codebeacon-0.1.5 → codebeacon-0.1.6}/.gitignore +0 -0
  12. {codebeacon-0.1.5 → codebeacon-0.1.6}/AGENTS.md +0 -0
  13. {codebeacon-0.1.5 → codebeacon-0.1.6}/CLAUDE.md +0 -0
  14. {codebeacon-0.1.5 → codebeacon-0.1.6}/LICENSE +0 -0
  15. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.de.md +0 -0
  16. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.es.md +0 -0
  17. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.fr.md +0 -0
  18. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.ja.md +0 -0
  19. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.ko.md +0 -0
  20. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.md +0 -0
  21. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.pt-BR.md +0 -0
  22. {codebeacon-0.1.5 → codebeacon-0.1.6}/README.zh-CN.md +0 -0
  23. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/__main__.py +0 -0
  24. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/cache.py +0 -0
  25. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/cli.py +0 -0
  26. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/common/__init__.py +0 -0
  27. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/common/filters.py +0 -0
  28. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/common/symbols.py +0 -0
  29. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/common/types.py +0 -0
  30. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/config.py +0 -0
  31. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/contextmap/__init__.py +0 -0
  32. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/contextmap/generator.py +0 -0
  33. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/discover/__init__.py +0 -0
  34. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/discover/scanner.py +0 -0
  35. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/export/__init__.py +0 -0
  36. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/export/mcp.py +0 -0
  37. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/export/obsidian.py +0 -0
  38. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/__init__.py +0 -0
  39. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/base.py +0 -0
  40. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/components.py +0 -0
  41. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/dependencies.py +0 -0
  42. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/entities.py +0 -0
  43. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/README.md +0 -0
  44. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/actix.scm +0 -0
  45. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/angular.scm +0 -0
  46. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/aspnet.scm +0 -0
  47. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/django.scm +0 -0
  48. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/express.scm +0 -0
  49. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/fastapi.scm +0 -0
  50. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/flask.scm +0 -0
  51. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/gin.scm +0 -0
  52. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/ktor.scm +0 -0
  53. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/laravel.scm +0 -0
  54. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/nestjs.scm +0 -0
  55. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/rails.scm +0 -0
  56. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/react.scm +0 -0
  57. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/spring_boot.scm +0 -0
  58. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/svelte.scm +0 -0
  59. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/tauri.scm +0 -0
  60. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/vapor.scm +0 -0
  61. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/queries/vue.scm +0 -0
  62. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/routes.py +0 -0
  63. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/semantic.py +0 -0
  64. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/extract/services.py +0 -0
  65. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/graph/__init__.py +0 -0
  66. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/graph/analyze.py +0 -0
  67. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/graph/build.py +0 -0
  68. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/graph/cluster.py +0 -0
  69. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/graph/enrich.py +0 -0
  70. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/skill/SKILL.md +0 -0
  71. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/wave.py +0 -0
  72. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/wiki/__init__.py +0 -0
  73. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/wiki/generator.py +0 -0
  74. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/wiki/index.py +0 -0
  75. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon/wiki/templates.py +0 -0
  76. {codebeacon-0.1.5 → codebeacon-0.1.6}/codebeacon.yaml.example +0 -0
  77. {codebeacon-0.1.5 → codebeacon-0.1.6}/docs/TRANSLATION_STATUS.md +0 -0
  78. {codebeacon-0.1.5 → codebeacon-0.1.6}/public-plan.md +0 -0
  79. {codebeacon-0.1.5 → codebeacon-0.1.6}/skill/SKILL.md +0 -0
  80. {codebeacon-0.1.5 → codebeacon-0.1.6}/skill/install.py +0 -0
  81. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/__init__.py +0 -0
  82. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/conftest.py +0 -0
  83. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/actix/main.rs +0 -0
  84. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/angular/app.component.ts +0 -0
  85. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/aspnet/UserController.cs +0 -0
  86. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/django/views.py +0 -0
  87. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/express/userRouter.js +0 -0
  88. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/fastapi/main.py +0 -0
  89. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/flask/app.py +0 -0
  90. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/gin/main.go +0 -0
  91. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/ktor/UserRoutes.kt +0 -0
  92. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/laravel/UserController.php +0 -0
  93. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/nestjs/user.controller.ts +0 -0
  94. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/rails/users_controller.rb +0 -0
  95. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/react/UserPage.tsx +0 -0
  96. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/spring_boot/UserController.java +0 -0
  97. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/sveltekit/+page.svelte +0 -0
  98. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/vapor/routes.swift +0 -0
  99. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/fixtures/vue/UserList.vue +0 -0
  100. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_discover.py +0 -0
  101. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_entities.py +0 -0
  102. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_filters.py +0 -0
  103. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_graph.py +0 -0
  104. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_resolve.py +0 -0
  105. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_routes.py +0 -0
  106. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_services.py +0 -0
  107. {codebeacon-0.1.5 → codebeacon-0.1.6}/tests/test_wiki.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codebeacon
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: Source code AST analysis tool for AI context generation — unified multi-framework knowledge graph
5
5
  Project-URL: Homepage, https://github.com/codebeacon/codebeacon
6
6
  Project-URL: Repository, https://github.com/codebeacon/codebeacon
@@ -0,0 +1 @@
1
+ __version__ = "0.1.6"
@@ -228,6 +228,7 @@ _SKIP_DIRS = {
228
228
  }
229
229
 
230
230
 
231
+
231
232
  def _iter_subdirs(directory: Path) -> list[Path]:
232
233
  """Return immediate subdirectories, skipping common non-project dirs."""
233
234
  try:
@@ -268,13 +269,22 @@ def discover_projects(paths: list[str]) -> list[ProjectInfo]:
268
269
  # Level 2: if a subdir has no signature itself, scan its children
269
270
  # (e.g. WaveLog/server, aptscore/frontend, murmur/landing)
270
271
  subprojects: list[ProjectInfo] = []
272
+ seen_paths: set[str] = set()
271
273
  for subdir in _iter_subdirs(single_path):
272
274
  if _has_project_signature(subdir):
273
275
  subprojects.append(_build_project_info(subdir, multi=True))
276
+ seen_paths.add(str(subdir))
277
+ # Scan children for embedded sub-projects with their own signature
278
+ # (e.g. Tauri: desktop/ has svelte.config.js + desktop/src-tauri/ has Cargo.toml)
279
+ for nested in _iter_subdirs(subdir):
280
+ if str(nested) not in seen_paths and _has_project_signature(nested):
281
+ subprojects.append(_build_project_info(nested, multi=True))
282
+ seen_paths.add(str(nested))
274
283
  else:
275
284
  for nested in _iter_subdirs(subdir):
276
- if _has_project_signature(nested):
285
+ if str(nested) not in seen_paths and _has_project_signature(nested):
277
286
  subprojects.append(_build_project_info(nested, multi=True))
287
+ seen_paths.add(str(nested))
278
288
 
279
289
  if subprojects:
280
290
  return subprojects
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codebeacon"
7
- version = "0.1.5"
7
+ version = "0.1.6"
8
8
  description = "Source code AST analysis tool for AI context generation — unified multi-framework knowledge graph"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1 +0,0 @@
1
- __version__ = "0.1.5"
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