codebeacon 0.1.2__py3-none-any.whl

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 (59) hide show
  1. codebeacon/__init__.py +1 -0
  2. codebeacon/__main__.py +3 -0
  3. codebeacon/cache.py +136 -0
  4. codebeacon/cli.py +391 -0
  5. codebeacon/common/__init__.py +0 -0
  6. codebeacon/common/filters.py +170 -0
  7. codebeacon/common/symbols.py +121 -0
  8. codebeacon/common/types.py +98 -0
  9. codebeacon/config.py +144 -0
  10. codebeacon/contextmap/__init__.py +0 -0
  11. codebeacon/contextmap/generator.py +602 -0
  12. codebeacon/discover/__init__.py +0 -0
  13. codebeacon/discover/detector.py +388 -0
  14. codebeacon/discover/scanner.py +192 -0
  15. codebeacon/export/__init__.py +0 -0
  16. codebeacon/export/mcp.py +515 -0
  17. codebeacon/export/obsidian.py +812 -0
  18. codebeacon/extract/__init__.py +22 -0
  19. codebeacon/extract/base.py +372 -0
  20. codebeacon/extract/components.py +357 -0
  21. codebeacon/extract/dependencies.py +140 -0
  22. codebeacon/extract/entities.py +575 -0
  23. codebeacon/extract/queries/README.md +116 -0
  24. codebeacon/extract/queries/actix.scm +115 -0
  25. codebeacon/extract/queries/angular.scm +155 -0
  26. codebeacon/extract/queries/aspnet.scm +159 -0
  27. codebeacon/extract/queries/django.scm +122 -0
  28. codebeacon/extract/queries/express.scm +124 -0
  29. codebeacon/extract/queries/fastapi.scm +152 -0
  30. codebeacon/extract/queries/flask.scm +120 -0
  31. codebeacon/extract/queries/gin.scm +142 -0
  32. codebeacon/extract/queries/ktor.scm +144 -0
  33. codebeacon/extract/queries/laravel.scm +172 -0
  34. codebeacon/extract/queries/nestjs.scm +183 -0
  35. codebeacon/extract/queries/rails.scm +114 -0
  36. codebeacon/extract/queries/react.scm +111 -0
  37. codebeacon/extract/queries/spring_boot.scm +204 -0
  38. codebeacon/extract/queries/svelte.scm +73 -0
  39. codebeacon/extract/queries/vapor.scm +130 -0
  40. codebeacon/extract/queries/vue.scm +123 -0
  41. codebeacon/extract/routes.py +910 -0
  42. codebeacon/extract/semantic.py +280 -0
  43. codebeacon/extract/services.py +597 -0
  44. codebeacon/graph/__init__.py +1 -0
  45. codebeacon/graph/analyze.py +281 -0
  46. codebeacon/graph/build.py +320 -0
  47. codebeacon/graph/cluster.py +160 -0
  48. codebeacon/graph/enrich.py +206 -0
  49. codebeacon/skill/SKILL.md +127 -0
  50. codebeacon/wave.py +292 -0
  51. codebeacon/wiki/__init__.py +0 -0
  52. codebeacon/wiki/generator.py +376 -0
  53. codebeacon/wiki/index.py +95 -0
  54. codebeacon/wiki/templates.py +467 -0
  55. codebeacon-0.1.2.dist-info/METADATA +319 -0
  56. codebeacon-0.1.2.dist-info/RECORD +59 -0
  57. codebeacon-0.1.2.dist-info/WHEEL +4 -0
  58. codebeacon-0.1.2.dist-info/entry_points.txt +2 -0
  59. codebeacon-0.1.2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,319 @@
1
+ Metadata-Version: 2.4
2
+ Name: codebeacon
3
+ Version: 0.1.2
4
+ Summary: Source code AST analysis tool for AI context generation — unified multi-framework knowledge graph
5
+ Project-URL: Homepage, https://github.com/codebeacon/codebeacon
6
+ Project-URL: Repository, https://github.com/codebeacon/codebeacon
7
+ Project-URL: Issues, https://github.com/codebeacon/codebeacon/issues
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: ai-context,ast,claude,codebase,knowledge-graph,mcp
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Software Development :: Build Tools
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: networkx>=3.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: tree-sitter-c-sharp>=0.23
24
+ Requires-Dist: tree-sitter-go>=0.23
25
+ Requires-Dist: tree-sitter-html>=0.23
26
+ Requires-Dist: tree-sitter-java>=0.23
27
+ Requires-Dist: tree-sitter-javascript>=0.23
28
+ Requires-Dist: tree-sitter-kotlin>=0.23
29
+ Requires-Dist: tree-sitter-php>=0.23
30
+ Requires-Dist: tree-sitter-python>=0.23
31
+ Requires-Dist: tree-sitter-ruby>=0.23
32
+ Requires-Dist: tree-sitter-rust>=0.23
33
+ Requires-Dist: tree-sitter-svelte>=0.23
34
+ Requires-Dist: tree-sitter-swift>=0.0.1
35
+ Requires-Dist: tree-sitter-typescript>=0.23
36
+ Requires-Dist: tree-sitter>=0.23
37
+ Provides-Extra: cluster
38
+ Requires-Dist: graspologic>=1.0; extra == 'cluster'
39
+ Provides-Extra: dev
40
+ Requires-Dist: pytest-cov>=4.0; extra == 'dev'
41
+ Requires-Dist: pytest>=7.0; extra == 'dev'
42
+ Description-Content-Type: text/markdown
43
+
44
+ <p align="center">
45
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.md"><img src="https://img.shields.io/badge/lang-English-blue" alt="English"></a>
46
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ko.md"><img src="https://img.shields.io/badge/lang-한국어-red" alt="Korean"></a>
47
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.ja.md"><img src="https://img.shields.io/badge/lang-日本語-green" alt="Japanese"></a>
48
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.zh-CN.md"><img src="https://img.shields.io/badge/lang-简体中文-orange" alt="Chinese"></a>
49
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.es.md"><img src="https://img.shields.io/badge/lang-Español-yellow" alt="Spanish"></a>
50
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.fr.md"><img src="https://img.shields.io/badge/lang-Français-blueviolet" alt="French"></a>
51
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.de.md"><img src="https://img.shields.io/badge/lang-Deutsch-lightgrey" alt="German"></a>
52
+ <a href="https://github.com/codebeacon/codebeacon/blob/main/README.pt-BR.md"><img src="https://img.shields.io/badge/lang-Português_(BR)-brightgreen" alt="Portuguese (Brazil)"></a>
53
+ </p>
54
+
55
+ <h1 align="center">codebeacon</h1>
56
+
57
+ <p align="center">
58
+ Source code AST analysis and AI context generation — unified multi-framework knowledge graph
59
+ </p>
60
+
61
+ <p align="center">
62
+ <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/v/codebeacon" alt="PyPI"></a>
63
+ <a href="https://pypi.org/project/codebeacon/"><img src="https://img.shields.io/pypi/pyversions/codebeacon" alt="Python"></a>
64
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License"></a>
65
+ <a href="https://github.com/codebeacon/codebeacon/stargazers"><img src="https://img.shields.io/github/stars/codebeacon/codebeacon" alt="GitHub Stars"></a>
66
+ <a href="https://github.com/codebeacon/codebeacon/commits/main"><img src="https://img.shields.io/github/last-commit/codebeacon/codebeacon" alt="Last Commit"></a>
67
+ </p>
68
+
69
+ ---
70
+
71
+ ## Why codebeacon?
72
+
73
+ Every time you open a new AI coding session, your assistant starts blind. It doesn't know your routes, your service layer, your entity model, or how your microservices call each other. You spend the first chunk of every session just getting the AI back up to speed — pasting files, explaining structure, re-establishing context.
74
+
75
+ Existing tools solve this partially. Route analyzers map your controllers but miss service dependencies. Knowledge graph tools capture relationships but ignore your API surface. You end up running both, stitching output manually, and repeating it every time the codebase changes.
76
+
77
+ **codebeacon unifies both approaches in a single CLI.** One command scans your entire codebase with tree-sitter AST parsing, resolves dependency injection across files, detects community clusters in your architecture, and writes a ready-to-use context map directly into `CLAUDE.md`, `.cursorrules`, and `AGENTS.md` — so your AI assistant walks into every session already knowing your codebase.
78
+
79
+ ---
80
+
81
+ ## Key Features
82
+
83
+ - **Unified pipeline** — route/controller analysis + knowledge graph in one tool, no manual stitching
84
+ - **17 frameworks, 9 languages** — Spring Boot, NestJS, Django, FastAPI, Rails, Express, React, Vue, Angular, Svelte, Gin, Laravel, Actix-Web, ASP.NET Core, Vapor, Ktor, and more
85
+ - **Tree-sitter based** — structural AST parsing, not regex; all 17 language grammars included out of the box
86
+ - **Two-pass DI resolution** — Pass 1 extracts local AST nodes; Pass 2 builds a global symbol table and resolves Interface → Implementation mappings that single-pass tools miss
87
+ - **Wave merge architecture** — files processed in parallel chunks, results merged globally; handles large monorepos without memory blowouts
88
+ - **Multiple output formats** — JSON knowledge graph, Markdown wiki, Obsidian vault, AI context maps, MCP server
89
+ - **Community detection** — Leiden/Louvain clustering reveals your actual architectural boundaries
90
+ - **Incremental cache** — SHA-256 based; only re-extracts files that changed since the last scan
91
+ - **Zero configuration** — auto-detects frameworks and languages; generates `codebeacon.yaml` for repeat runs
92
+
93
+ ---
94
+
95
+ ## Quick Start
96
+
97
+ ```bash
98
+ pip install codebeacon
99
+
100
+ codebeacon scan .
101
+ ```
102
+
103
+ That's it. codebeacon detects your project types, extracts routes/services/entities/components, builds a knowledge graph, and writes everything to `.codebeacon/`.
104
+
105
+ For a multi-project workspace:
106
+
107
+ ```bash
108
+ codebeacon scan /path/to/workspace # auto-detects all projects, generates codebeacon.yaml
109
+ codebeacon sync # subsequent runs via config
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Supported Frameworks
115
+
116
+ | Language | Frameworks |
117
+ |----------|-----------|
118
+ | Java / Kotlin | Spring Boot, Ktor |
119
+ | Python | Django, FastAPI, Flask |
120
+ | JavaScript / TypeScript | Express, NestJS, React, Vue, Angular, Svelte |
121
+ | Go | Gin |
122
+ | Ruby | Rails |
123
+ | PHP | Laravel |
124
+ | Rust | Actix-Web |
125
+ | C# | ASP.NET Core |
126
+ | Swift | Vapor |
127
+
128
+ ---
129
+
130
+ ## Architecture
131
+
132
+ codebeacon runs a two-pass extraction pipeline:
133
+
134
+ ```
135
+ [Config] → [Discover] → [Wave / Extract] → [Resolve] → [Filter] → [Enrich] → [Graph] → [Wiki] → [ContextMap] → [Export]
136
+ │ │ │ │
137
+ Local AST Symbol Cross-lang HTTP API
138
+ per chunk table artifact Shared DB
139
+ (Pass 1) matching removal entity edges
140
+ (Pass 2)
141
+ ```
142
+
143
+ **Pass 1 — Wave extraction:** Files are processed in parallel chunks via `ThreadPoolExecutor`. Each file runs through five extractors: routes, services, entities, components, and dependencies. Results are cached by SHA-256 for incremental re-scans.
144
+
145
+ **Pass 2 — Graph build:** All wave results are merged. A global symbol table resolves unresolved dependency injection references — mapping interfaces to implementations in the way Spring's implicit Bean wiring or TypeScript's injection tokens require. Filters remove build artifacts, spurious cross-language imports, and false cross-service edges.
146
+
147
+ **Post-processing:** HTTP API edges connect frontend URL calls to matching backend routes. Community detection (Leiden → Louvain → connected components fallback) partitions the graph into architectural clusters. A structural report identifies god nodes, surprising cross-cluster connections, and hub files.
148
+
149
+ ---
150
+
151
+ ## Output Structure
152
+
153
+ After a scan, everything lands in `.codebeacon/`:
154
+
155
+ ```
156
+ .codebeacon/
157
+ beacon.json ← full knowledge graph (node-link JSON, queryable)
158
+ REPORT.md ← god nodes, surprising connections, hub files
159
+ CLAUDE.md ← AI context map (also written to project root)
160
+ .cursorrules ← Cursor IDE context
161
+ AGENTS.md ← OpenAI Agents / Codex context
162
+ wiki/
163
+ index.md ← global index (~200 tokens)
164
+ overview.md ← platform stats + cross-project connections
165
+ routes.md ← all routes table
166
+ cross-project/
167
+ connections.md ← cross-service edges
168
+ <project>/
169
+ index.md
170
+ routes.md
171
+ controllers/<Name>.md
172
+ services/<Name>.md
173
+ entities/<Name>.md
174
+ components/<Name>.md
175
+ obsidian/ ← Obsidian vault (one note per graph node)
176
+ ```
177
+
178
+ ---
179
+
180
+ ## Installation Options
181
+
182
+ ```bash
183
+ pip install codebeacon # all 17 language grammars included
184
+ pip install codebeacon[cluster] # + Leiden community detection (graspologic)
185
+ pip install --upgrade codebeacon # upgrade to latest version with all dependencies
186
+ ```
187
+
188
+ All language parsers (Java, Kotlin, Python, JavaScript, TypeScript, Go, Ruby, PHP, C#, Rust, Swift, HTML, Svelte) are bundled by default — no extra flags needed.
189
+
190
+ ---
191
+
192
+ ## CLI Reference
193
+
194
+ ```bash
195
+ # Scan a project or workspace
196
+ codebeacon scan <path> [options]
197
+ codebeacon scan . # current directory
198
+ codebeacon scan /workspace # workspace root (multi-project)
199
+ codebeacon scan . --update # incremental: only re-extract changed files
200
+ codebeacon scan . --wiki-only # regenerate wiki without re-extracting
201
+ codebeacon scan . --obsidian-dir <path> # write Obsidian vault to custom location
202
+ codebeacon scan . --semantic # enable LLM semantic extraction
203
+ codebeacon scan . --list-only # detect frameworks only, don't extract
204
+
205
+ # Config-driven mode
206
+ codebeacon init [path] # auto-generate codebeacon.yaml
207
+ codebeacon sync # run from codebeacon.yaml
208
+ codebeacon sync --config <file> # use a specific config file
209
+
210
+ # Query the knowledge graph (coming soon)
211
+ codebeacon query <term> # search nodes and edges
212
+ codebeacon path <source> <target> # shortest path between two nodes
213
+
214
+ # Integrations
215
+ codebeacon serve [--dir .codebeacon] # start MCP server (stdio)
216
+ codebeacon install # install Claude Code skill
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Configuration
222
+
223
+ Run `codebeacon init` to generate `codebeacon.yaml`, or write it manually:
224
+
225
+ ```yaml
226
+ version: 1
227
+
228
+ projects:
229
+ - name: api-server
230
+ path: ./api-server
231
+ type: spring-boot # optional: auto-detected if omitted
232
+
233
+ - name: frontend
234
+ path: ./frontend
235
+ type: react
236
+
237
+ output:
238
+ dir: .codebeacon
239
+ wiki: true
240
+ obsidian: true
241
+ graph_html: true
242
+ context_map:
243
+ targets: [CLAUDE.md, .cursorrules, AGENTS.md]
244
+
245
+ wave:
246
+ auto: true
247
+ chunk_size: 300 # files per chunk
248
+ max_parallel: 5 # parallel threads
249
+
250
+ semantic:
251
+ enabled: false # override with --semantic flag
252
+ ```
253
+
254
+ ---
255
+
256
+ ## How It Compares
257
+
258
+ | | codesight | graphify | **codebeacon** |
259
+ |---|---|---|---|
260
+ | Route / controller analysis | ✅ | ❌ | ✅ |
261
+ | Service / DI graph | partial | ✅ | ✅ |
262
+ | Interface → Impl resolution | ❌ | ❌ | ✅ |
263
+ | Entity / ORM model extraction | ✅ | ❌ | ✅ |
264
+ | Frontend component analysis | ✅ | ❌ | ✅ |
265
+ | Community detection | ❌ | ✅ | ✅ |
266
+ | Obsidian vault export | ❌ | ✅ | ✅ |
267
+ | MCP server | ✅ | ❌ | ✅ |
268
+ | AI context map (CLAUDE.md) | ✅ | ✅ | ✅ |
269
+ | Multi-project workspace | partial | ❌ | ✅ |
270
+ | Python-based | ❌ | ✅ | ✅ |
271
+
272
+ codebeacon is not a replacement for either tool — it's the union of what both do, built around a shared extraction and graph layer.
273
+
274
+ ---
275
+
276
+ ## Benchmarks
277
+
278
+ | Codebase | Stack | Files | Nodes | Edges | Communities | Scan time |
279
+ |----------|-------|-------|-------|-------|-------------|-----------|
280
+ | multi-service SaaS app | SvelteKit + Next.js + Spring Boot (3 projects) | 444 | 382 | 553 | 175 | ~12s |
281
+
282
+ ---
283
+
284
+ ## Privacy & Security
285
+
286
+ All processing is local. Your source code never leaves your machine.
287
+
288
+ - Tree-sitter AST parsing runs entirely in-process
289
+ - No telemetry, no analytics, no network calls during normal operation
290
+ - The `--semantic` flag (disabled by default) sends code excerpts to your configured LLM API — only enable it explicitly
291
+
292
+ ---
293
+
294
+ ## Contributing
295
+
296
+ ```bash
297
+ git clone https://github.com/codebeacon/codebeacon
298
+ cd codebeacon
299
+ pip install -e ".[dev,cluster]"
300
+ pytest
301
+ ```
302
+
303
+ The easiest entry point for adding new framework support is writing a tree-sitter query file in `codebeacon/extract/queries/`. See [`codebeacon/extract/queries/README.md`](codebeacon/extract/queries/README.md) for the full guide — it walks through grammar setup, `.scm` query syntax, capture naming conventions, and how to wire up a new extractor.
304
+
305
+ Contributions welcome: new framework queries, language parsers, output formats, and benchmark datasets.
306
+
307
+ ---
308
+
309
+ ## License
310
+
311
+ MIT — see [LICENSE](LICENSE).
312
+
313
+ ---
314
+
315
+ ## Acknowledgments
316
+
317
+ Built on [tree-sitter](https://tree-sitter.github.io/tree-sitter/) for structural AST parsing, [NetworkX](https://networkx.org/) for graph operations, and [graspologic](https://microsoft.github.io/graspologic/) for Leiden community detection.
318
+
319
+ Inspired by the complementary approaches of [codesight](https://github.com/Houseofmvps/codesight) and [graphify](https://github.com/safishamsi/graphify).
@@ -0,0 +1,59 @@
1
+ codebeacon/__init__.py,sha256=YvuYzWnKtqBb-IqG8HAu-nhIYAsgj9Vmc_b9o7vO-js,22
2
+ codebeacon/__main__.py,sha256=Jw8VAvcOZg6M1SD2UzL6lgCGMuZ6XK3f6qEuc-iVZQU,40
3
+ codebeacon/cache.py,sha256=JtT3UfvfnPVlqxE8aNfbnme8v3AoGUn3F5ioidn6Xwc,4441
4
+ codebeacon/cli.py,sha256=sI7_N0GtWNJ3c1ZvInPCWTDYEnuRmjphkedrILDLlG8,13995
5
+ codebeacon/config.py,sha256=zchVUGYT1AtZEh5yX3Ck7mCZ1C1fMq7iS0mpicVqpL4,4238
6
+ codebeacon/wave.py,sha256=ZywFn7C9AqdmdfgtXYIsMjEWUqx1GnGsGy98M-tF51k,10482
7
+ codebeacon/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ codebeacon/common/filters.py,sha256=YfmI-JliwfO78yOHt6kinYxP0qkubOYedqKFei8l7NY,5475
9
+ codebeacon/common/symbols.py,sha256=B_ArKtUyKupZVsDaivih8DGTtEZoI19JbX5mqWVwW9A,4487
10
+ codebeacon/common/types.py,sha256=xb6FlPnpcDKnKS49OH6hTLjIZ_V7w3PyTd_NLVwAn2c,3351
11
+ codebeacon/contextmap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ codebeacon/contextmap/generator.py,sha256=PU1VCLWNt4191ZF_sMhJhHd9VJClKKBEnYsKxu26Hw8,21579
13
+ codebeacon/discover/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ codebeacon/discover/detector.py,sha256=CRtGCtpy0EZCXtuyWwdnQAvYoiCk4ZrVjOt6bmA7MxQ,13858
15
+ codebeacon/discover/scanner.py,sha256=WK-24ukvuxLbzQCaC_VXEokXEkQpn2wrjzOL_h4FOvI,4984
16
+ codebeacon/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ codebeacon/export/mcp.py,sha256=sW1LZZClaCDa3shf3HNQuEn2PnObdC_nmc002JtHMYc,18194
18
+ codebeacon/export/obsidian.py,sha256=ohJvzcDvITeGJqQfwJnUujGVjgWr8xsKRT-dNAJPngU,28926
19
+ codebeacon/extract/__init__.py,sha256=fNsS0fwWPcU-ydO9j-0xE8JxodNxerU82cgNiBhCVy0,884
20
+ codebeacon/extract/base.py,sha256=Jvcnzta5yBFNho1LfNMpGUoiuzl-V7MCNnc-M-sD_vA,13428
21
+ codebeacon/extract/components.py,sha256=LbKVS77CyxxeK19NF4AD_gWsdUeUfIbAIgxpas0yPfY,11574
22
+ codebeacon/extract/dependencies.py,sha256=BlI6KXFySs5gwX1p9LGpalk5np6Ou-gDjLUocRGuZLE,4355
23
+ codebeacon/extract/entities.py,sha256=K55PbgZ-QWYg5kRsLMtjPoYHk_coLvVZq1ZR8M29QU4,21296
24
+ codebeacon/extract/routes.py,sha256=m0Vh4_vSD5JoKzUsJYON-QPZX75vBye-lsmSS073T1g,37278
25
+ codebeacon/extract/semantic.py,sha256=UDyNOPwQvTEMM3UzwbYdrP_C1O0Vh5idR1aKI42wXLQ,10223
26
+ codebeacon/extract/services.py,sha256=s8xR62cbAZCT_v3qdxWALaGDEV5rNMqoT92-wtTjMpQ,22585
27
+ codebeacon/extract/queries/README.md,sha256=cLxO4n6FaUqJMtysQ2N3YFqrYlMWospb3DSJxqPRfFA,3548
28
+ codebeacon/extract/queries/actix.scm,sha256=UAxVPkfhHZZzEwbgUwsQ_muQQVFY1m0fB0jc_16dSh0,4046
29
+ codebeacon/extract/queries/angular.scm,sha256=RbVkLtQ8FFuKb8lXC_w4d9DTDWQhPxvB8SloM-RRcVM,4983
30
+ codebeacon/extract/queries/aspnet.scm,sha256=f0ubY9qx7EI_FHonZj1RoNXR898A0oqslaTp1LTgHXM,5540
31
+ codebeacon/extract/queries/django.scm,sha256=gwnarHH0EHGf8lrlV1Ocj5-DtY6TCMRwONLUVYZBL9U,4285
32
+ codebeacon/extract/queries/express.scm,sha256=9P_Sv8RpxspH44Ibb3aAqgITWVi8c_k5-L4ml-2ckS0,3881
33
+ codebeacon/extract/queries/fastapi.scm,sha256=Acq5CKkm6ZbcdaSOJH6Wt-O-r6WmbhBnqo9INehrhyg,4786
34
+ codebeacon/extract/queries/flask.scm,sha256=J9eMl4_MGH1yXecm277xGZ-1ZA_ulDRFAfKANfXlrNU,3819
35
+ codebeacon/extract/queries/gin.scm,sha256=nTmGWxc3M7CyZ-brc9lFio-ZR01mymzNNKgLdZfHyGQ,4716
36
+ codebeacon/extract/queries/ktor.scm,sha256=w5NnUI2Yw6sz7QALfUIqXGcE4ECfFbNdu7RiVbgQ_4I,4902
37
+ codebeacon/extract/queries/laravel.scm,sha256=v1YgXPz6RykkSlAFZaAMuz1XdsqKjUhPavkkybRlVuA,6025
38
+ codebeacon/extract/queries/nestjs.scm,sha256=P4Zc6846k81t1wCIT-xiMQeUnyZZmr7QnJnebYskF0M,5648
39
+ codebeacon/extract/queries/rails.scm,sha256=2ThcFtYV4J6M_xfaqRmKkmG0PFWCq01AHJWcPsejJOo,4066
40
+ codebeacon/extract/queries/react.scm,sha256=SuYDiy3ScVuTEtOZXukYAKHWR2qSII9i46fdxtVVVMk,4068
41
+ codebeacon/extract/queries/spring_boot.scm,sha256=CLOFLJzHiFqrSN2EdWg4_vLLpzXE3jMtPwtmqXiEN0s,7214
42
+ codebeacon/extract/queries/svelte.scm,sha256=FcWTXkifZ_9jPhaBHdXVnqksW8nmiPaWjK48E2AZJLs,3053
43
+ codebeacon/extract/queries/vapor.scm,sha256=vD5pKbuzP6Zwn1n6OQ1li3G3V8JLdbyZW1jCGSDRPs0,4361
44
+ codebeacon/extract/queries/vue.scm,sha256=WC0il4m5u9Y2puUE9lG7mYwCP_a-03-iUk3_74Rb9VA,4119
45
+ codebeacon/graph/__init__.py,sha256=ug1wEeheKYIO3bCjewSIJG1usuZNaoZ4h1UevQTY10M,64
46
+ codebeacon/graph/analyze.py,sha256=3fZvbtSgLVG6aEKg5lsSr7-pGmH2o6FWJpAVTIizylY,8929
47
+ codebeacon/graph/build.py,sha256=WGUBkRy4WnsfE8MBTqsuCGeJtXXXH43JGe4RjwMP3v0,10937
48
+ codebeacon/graph/cluster.py,sha256=MoGP15Iw9kkUjImbO6n8ii1ni_iPmxYM6bW3MLkWstw,5104
49
+ codebeacon/graph/enrich.py,sha256=CZIWMxBiaV4VtPiAdbO_G2L0li6yPlZFY36avn7cR0w,7376
50
+ codebeacon/skill/SKILL.md,sha256=oNdQYO3o1dBwSHWB4smKD87u3C_MGMvSTGNxxAf8iy0,3957
51
+ codebeacon/wiki/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ codebeacon/wiki/generator.py,sha256=CVq7AjRFjGNQXVWJMrqMN_t9Fqk1mCBeoLJObbf41e4,14009
53
+ codebeacon/wiki/index.py,sha256=Cxgg8TpgUyTaHA0t49AbAT5i_CtZLQRLfhdo09esURY,3397
54
+ codebeacon/wiki/templates.py,sha256=3UaxMmGnON9Uk0l2bTvlC3yPMZ4MMiZOJGDkYg_pMOw,15883
55
+ codebeacon-0.1.2.dist-info/METADATA,sha256=VnYu72GsfIuzSn-ql38xuJ1lN6NPGeGHQulB8khONqk,14065
56
+ codebeacon-0.1.2.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
57
+ codebeacon-0.1.2.dist-info/entry_points.txt,sha256=PREJtJHtP-5peBsxynOAklCl9Yq_KHiDnkR1ruojxsQ,51
58
+ codebeacon-0.1.2.dist-info/licenses/LICENSE,sha256=bjTdJsSZONg8LgvrDTRCHseKPiBXwCtYjkH7ytHyu-4,1080
59
+ codebeacon-0.1.2.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ codebeacon = codebeacon.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 codebeacon contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.