cortexcode 0.9.0__tar.gz → 0.10.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.
- {cortexcode-0.9.0 → cortexcode-0.10.0}/PKG-INFO +21 -44
- {cortexcode-0.9.0 → cortexcode-0.10.0}/README.md +19 -42
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/doc_generator.py +5 -5
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/architecture.py +15 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexer.py +18 -3
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/build.py +10 -3
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/defaults.py +1 -1
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/filtering.py +1 -1
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/imports_exports.py +7 -0
- cortexcode-0.10.0/cortexcode/indexing/nx_projects.py +228 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/pipeline.py +1 -1
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/profile.py +48 -3
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/resolution.py +75 -10
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/performance/performance_config.py +20 -0
- cortexcode-0.10.0/cortexcode/reports/markdown/structure.py +46 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/tech.py +12 -1
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/PKG-INFO +21 -44
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/SOURCES.txt +5 -1
- {cortexcode-0.9.0 → cortexcode-0.10.0}/pyproject.toml +2 -2
- cortexcode-0.10.0/tests/test_nx_indexer.py +75 -0
- cortexcode-0.10.0/tests/test_nx_projects.py +178 -0
- cortexcode-0.10.0/tests/test_nx_resolution.py +110 -0
- cortexcode-0.9.0/cortexcode/reports/markdown/structure.py +0 -19
- {cortexcode-0.9.0 → cortexcode-0.10.0}/LICENSE +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_cycles.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_docs.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_duplicates.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_endpoints.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_search.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis/advanced_analysis_security.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/advanced_analysis.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/config.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/doc_cache.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/doc_lookup.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/doc_models.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/explainer.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/llm_client.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/page_generator.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/prompts.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/ai_docs/report_runner.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/analysis/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/analysis/analysis_complexity.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/analysis/analysis_dead_code.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/analysis/analysis_impact.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/analysis.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_ai_docs.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_bundle.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_complexity.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_config.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_context.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_dashboard.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_dead_code.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_diagrams.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_diff.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_docs.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_explain.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_find.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_githook.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_impact.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_index.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_jobs.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_package.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_report.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_scan.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_search.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_servers.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_shell.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_stats.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_support.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_trace.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_watch.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_wiki.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/cli/cli_workspace.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/config.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/context/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/context/context_format.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/context/context_query.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/context/context_tokens.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/context.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/dashboard.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/call_graph.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/class_diagram.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/dependencies.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/directory_tree.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/entities.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/file_tree.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/imports.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/save.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/sequence.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/state.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/diagrams/utils.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/diagrams.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/generator.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/html_generators.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/javascript.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/javascript_sections.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs/templates.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/docs.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/git_diff.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/calls.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/config.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/dispatch.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/entities.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extensions.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractor_mixin.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/csharp.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/dart.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/generic.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/java.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/javascript.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/kotlin.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/extractors/swift.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/frameworks.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/gitignore.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/incremental.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/languages.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/metadata.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/nodes.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/output.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/params.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/parsers.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/routes.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/session.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/storage.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/indexing/walk.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/build.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/citations.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/concepts.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/models.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/snippets.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/knowledge/usage.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/lsp_server.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/main.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/mcp_protocol.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/mcp_registry.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/mcp_server.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/mcp_tool_handlers.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/mcp/mcp_transport.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/performance/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/performance/performance_index_storage.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/performance/performance_preview.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/performance.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/plugins.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/html/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/html/dashboard.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/html/dashboard_fragments.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/html/view_model.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/api.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/flows.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/insights.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/markdown/readme.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/site/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/site/generator.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/reports/site/viz.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/semantic_search.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/__init__.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/analysis.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/completion.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/headers.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/prompts.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/reports.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/terminal/stats.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/vuln_scan.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/watcher.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode/workspace.py +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/dependency_links.txt +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/entry_points.txt +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/requires.txt +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/cortexcode.egg-info/top_level.txt +0 -0
- {cortexcode-0.9.0 → cortexcode-0.10.0}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cortexcode
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Lightweight code indexing for AI assistants —
|
|
3
|
+
Version: 0.10.0
|
|
4
|
+
Summary: Lightweight code indexing for AI assistants — build a searchable codegraph and grounded context
|
|
5
5
|
Author-email: Naveen <naveen_joshi07@outlook.com>
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/naveen-joshi/cortexcode
|
|
@@ -55,44 +55,36 @@ Dynamic: license-file
|
|
|
55
55
|
<h1 align="center">CortexCode</h1>
|
|
56
56
|
<p align="center">
|
|
57
57
|
<strong>Lightweight code indexing for AI assistants</strong><br>
|
|
58
|
-
|
|
58
|
+
Build a searchable codegraph, generate documentation, and give AI assistants grounded context.
|
|
59
59
|
</p>
|
|
60
60
|
</p>
|
|
61
61
|
|
|
62
|
-
<p align="center">
|
|
63
|
-
<a href="https://pypi.org/project/cortexcode/"><img src="https://img.shields.io/pypi/v/cortexcode?style=flat-square&color=blue" alt="PyPI"></a>
|
|
64
|
-
<a href="https://pypi.org/project/cortexcode/"><img src="https://img.shields.io/pypi/pyversions/cortexcode?style=flat-square" alt="Python"></a>
|
|
65
|
-
<a href="https://github.com/naveen-joshi/cortexcode/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
|
|
66
|
-
<a href="https://github.com/naveen-joshi/cortexcode"><img src="https://img.shields.io/github/stars/naveen-joshi/cortexcode?style=flat-square" alt="Stars"></a>
|
|
67
|
-
<a href="https://marketplace.visualstudio.com/items?itemName=cortexcode.cortexcode-vscode"><img src="https://img.shields.io/visual-studio-marketplace/v/cortexcode.cortexcode-vscode?style=flat-square" alt="VS Code"></a>
|
|
68
|
-
</p>
|
|
69
|
-
|
|
70
62
|
---
|
|
71
63
|
|
|
72
64
|
## The Problem
|
|
73
65
|
|
|
74
66
|
AI coding assistants (Copilot, Cursor, Windsurf, etc.) need to understand your codebase. The current approach: **dump entire source files into the context window**. This is:
|
|
75
67
|
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
68
|
+
- **Noisy** — Important signals are buried inside large files
|
|
69
|
+
- **Fragile** — Assistants miss architecture, relationships, and runtime surface area
|
|
70
|
+
- **Hard to reuse** — Raw file dumps do not become a durable project map
|
|
79
71
|
|
|
80
72
|
## The Solution
|
|
81
73
|
|
|
82
|
-
CortexCode indexes your codebase using **AST parsing** (tree-sitter) and
|
|
74
|
+
CortexCode indexes your codebase using **AST parsing** (tree-sitter) and builds a structured, searchable codegraph. You can explore symbols, trace flows, generate docs and diagrams, produce CodeWiki pages, and connect AI tools through MCP.
|
|
83
75
|
|
|
84
76
|
```
|
|
85
77
|
┌─────────────────────────────────────────────────┐
|
|
86
78
|
│ Without CortexCode With CortexCode │
|
|
87
79
|
│ │
|
|
88
|
-
│
|
|
89
|
-
│
|
|
90
|
-
│
|
|
91
|
-
│ No
|
|
80
|
+
│ Raw files only → Searchable codegraph │
|
|
81
|
+
│ Manual digging → Linked symbols │
|
|
82
|
+
│ Ad-hoc prompts → Reusable context │
|
|
83
|
+
│ No project map → Docs + diagrams │
|
|
92
84
|
└─────────────────────────────────────────────────┘
|
|
93
85
|
```
|
|
94
86
|
|
|
95
|
-
Run `cortexcode
|
|
87
|
+
Run `cortexcode index` on your project to generate the codegraph and start exploring.
|
|
96
88
|
|
|
97
89
|
## Quick Start
|
|
98
90
|
|
|
@@ -108,9 +100,6 @@ cd cortexcode && pip install -e .
|
|
|
108
100
|
cd your-project
|
|
109
101
|
cortexcode index
|
|
110
102
|
|
|
111
|
-
# See token savings
|
|
112
|
-
cortexcode stats
|
|
113
|
-
|
|
114
103
|
# Get context for AI
|
|
115
104
|
cortexcode context "handleAuth"
|
|
116
105
|
|
|
@@ -159,24 +148,14 @@ Parses source code into structured symbols using tree-sitter grammars.
|
|
|
159
148
|
- **Entities** — Database models and ORM definitions
|
|
160
149
|
- **Framework Detection** — React components, Angular services, etc.
|
|
161
150
|
|
|
162
|
-
###
|
|
151
|
+
### Project Exploration & Context
|
|
163
152
|
|
|
164
|
-
CortexCode
|
|
153
|
+
Use CortexCode to inspect structure and answer practical questions about a codebase:
|
|
165
154
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
│ Source files 154 files │
|
|
171
|
-
│ Raw project tokens 203,847 │
|
|
172
|
-
│ Full index tokens 45,291 │
|
|
173
|
-
│ Context query tokens 487 │
|
|
174
|
-
│ │
|
|
175
|
-
│ Tokens saved 203,360 │
|
|
176
|
-
│ Savings 99.8% │
|
|
177
|
-
│ Compression ratio 418.6x │
|
|
178
|
-
╰─────────────────────────────────────────╯
|
|
179
|
-
```
|
|
155
|
+
- **Context lookup** — Pull relevant symbols and files for a query
|
|
156
|
+
- **Call graph tracing** — Follow how behavior moves across modules
|
|
157
|
+
- **Architecture visibility** — Inspect routes, entities, dependencies, and layers
|
|
158
|
+
- **Reusable index** — Keep a structured project map that tools can build on
|
|
180
159
|
|
|
181
160
|
### Interactive HTML Documentation
|
|
182
161
|
|
|
@@ -211,7 +190,6 @@ cortexcode wiki --no-modules # Skip per-module pages (faster)
|
|
|
211
190
|
- **Mermaid diagrams** — Auto-generated flow diagrams
|
|
212
191
|
- **Concept mapping** — Maps technical concepts to symbols and files
|
|
213
192
|
- **Concept search** — Ask "how does authentication work?" and get grounded answers
|
|
214
|
-
- **Token tracking** — See exactly how many tokens each page used
|
|
215
193
|
|
|
216
194
|
**Output:** `.cortexcode/wiki/index.html` — Open directly or serve locally.
|
|
217
195
|
|
|
@@ -262,12 +240,12 @@ CortexCode supports both a short form (`cc`) and full form (`cortexcode`). Comma
|
|
|
262
240
|
| Command | Description |
|
|
263
241
|
|---------|-------------|
|
|
264
242
|
| `cc analyze context [query]` | Get relevant context for AI |
|
|
265
|
-
| `cc analyze context [query] --tokens` | Show
|
|
243
|
+
| `cc analyze context [query] --tokens` | Show context size estimates for a query |
|
|
266
244
|
| `cc analyze search [query]` | Grep-like symbol search with type/file filters |
|
|
267
245
|
| `cc analyze find [query]` | Semantic search by meaning ("auth handler") |
|
|
268
246
|
| `cc analyze diff` | Show changed symbols since last commit |
|
|
269
247
|
| `cc analyze diff --ref HEAD~3` | Compare against any git ref |
|
|
270
|
-
| `cc analyze stats` | Show project
|
|
248
|
+
| `cc analyze stats` | Show project index and analysis stats |
|
|
271
249
|
| `cc analyze scan` | Scan dependencies for security warnings |
|
|
272
250
|
| `cc analyze trace <symbol>` | Trace code flow through call graph |
|
|
273
251
|
| `cc analyze flow <concept>` | Analyze code flow grouped by file |
|
|
@@ -372,7 +350,7 @@ Add to `~/.windsurf/config.json`:
|
|
|
372
350
|
|
|
373
351
|
```bash
|
|
374
352
|
# Paste this output into your AI chat
|
|
375
|
-
cortexcode context "useAuth"
|
|
353
|
+
cortexcode context "useAuth"
|
|
376
354
|
```
|
|
377
355
|
|
|
378
356
|
### 2. JSON Index (programmatic)
|
|
@@ -569,7 +547,6 @@ CortexCode respects `.gitignore` files (including nested ones) and has built-in
|
|
|
569
547
|
## Roadmap
|
|
570
548
|
|
|
571
549
|
- [x] MCP server for direct AI agent integration
|
|
572
|
-
- [x] Tiktoken-based accurate token counting
|
|
573
550
|
- [x] Semantic search over symbols (TF-IDF + synonym expansion)
|
|
574
551
|
- [x] Cross-file type inference
|
|
575
552
|
- [x] Git diff-aware context (show only changed symbols)
|
|
@@ -2,44 +2,36 @@
|
|
|
2
2
|
<h1 align="center">CortexCode</h1>
|
|
3
3
|
<p align="center">
|
|
4
4
|
<strong>Lightweight code indexing for AI assistants</strong><br>
|
|
5
|
-
|
|
5
|
+
Build a searchable codegraph, generate documentation, and give AI assistants grounded context.
|
|
6
6
|
</p>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
|
-
<p align="center">
|
|
10
|
-
<a href="https://pypi.org/project/cortexcode/"><img src="https://img.shields.io/pypi/v/cortexcode?style=flat-square&color=blue" alt="PyPI"></a>
|
|
11
|
-
<a href="https://pypi.org/project/cortexcode/"><img src="https://img.shields.io/pypi/pyversions/cortexcode?style=flat-square" alt="Python"></a>
|
|
12
|
-
<a href="https://github.com/naveen-joshi/cortexcode/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
|
|
13
|
-
<a href="https://github.com/naveen-joshi/cortexcode"><img src="https://img.shields.io/github/stars/naveen-joshi/cortexcode?style=flat-square" alt="Stars"></a>
|
|
14
|
-
<a href="https://marketplace.visualstudio.com/items?itemName=cortexcode.cortexcode-vscode"><img src="https://img.shields.io/visual-studio-marketplace/v/cortexcode.cortexcode-vscode?style=flat-square" alt="VS Code"></a>
|
|
15
|
-
</p>
|
|
16
|
-
|
|
17
9
|
---
|
|
18
10
|
|
|
19
11
|
## The Problem
|
|
20
12
|
|
|
21
13
|
AI coding assistants (Copilot, Cursor, Windsurf, etc.) need to understand your codebase. The current approach: **dump entire source files into the context window**. This is:
|
|
22
14
|
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
- **
|
|
15
|
+
- **Noisy** — Important signals are buried inside large files
|
|
16
|
+
- **Fragile** — Assistants miss architecture, relationships, and runtime surface area
|
|
17
|
+
- **Hard to reuse** — Raw file dumps do not become a durable project map
|
|
26
18
|
|
|
27
19
|
## The Solution
|
|
28
20
|
|
|
29
|
-
CortexCode indexes your codebase using **AST parsing** (tree-sitter) and
|
|
21
|
+
CortexCode indexes your codebase using **AST parsing** (tree-sitter) and builds a structured, searchable codegraph. You can explore symbols, trace flows, generate docs and diagrams, produce CodeWiki pages, and connect AI tools through MCP.
|
|
30
22
|
|
|
31
23
|
```
|
|
32
24
|
┌─────────────────────────────────────────────────┐
|
|
33
25
|
│ Without CortexCode With CortexCode │
|
|
34
26
|
│ │
|
|
35
|
-
│
|
|
36
|
-
│
|
|
37
|
-
│
|
|
38
|
-
│ No
|
|
27
|
+
│ Raw files only → Searchable codegraph │
|
|
28
|
+
│ Manual digging → Linked symbols │
|
|
29
|
+
│ Ad-hoc prompts → Reusable context │
|
|
30
|
+
│ No project map → Docs + diagrams │
|
|
39
31
|
└─────────────────────────────────────────────────┘
|
|
40
32
|
```
|
|
41
33
|
|
|
42
|
-
Run `cortexcode
|
|
34
|
+
Run `cortexcode index` on your project to generate the codegraph and start exploring.
|
|
43
35
|
|
|
44
36
|
## Quick Start
|
|
45
37
|
|
|
@@ -55,9 +47,6 @@ cd cortexcode && pip install -e .
|
|
|
55
47
|
cd your-project
|
|
56
48
|
cortexcode index
|
|
57
49
|
|
|
58
|
-
# See token savings
|
|
59
|
-
cortexcode stats
|
|
60
|
-
|
|
61
50
|
# Get context for AI
|
|
62
51
|
cortexcode context "handleAuth"
|
|
63
52
|
|
|
@@ -106,24 +95,14 @@ Parses source code into structured symbols using tree-sitter grammars.
|
|
|
106
95
|
- **Entities** — Database models and ORM definitions
|
|
107
96
|
- **Framework Detection** — React components, Angular services, etc.
|
|
108
97
|
|
|
109
|
-
###
|
|
98
|
+
### Project Exploration & Context
|
|
110
99
|
|
|
111
|
-
CortexCode
|
|
100
|
+
Use CortexCode to inspect structure and answer practical questions about a codebase:
|
|
112
101
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
│ Source files 154 files │
|
|
118
|
-
│ Raw project tokens 203,847 │
|
|
119
|
-
│ Full index tokens 45,291 │
|
|
120
|
-
│ Context query tokens 487 │
|
|
121
|
-
│ │
|
|
122
|
-
│ Tokens saved 203,360 │
|
|
123
|
-
│ Savings 99.8% │
|
|
124
|
-
│ Compression ratio 418.6x │
|
|
125
|
-
╰─────────────────────────────────────────╯
|
|
126
|
-
```
|
|
102
|
+
- **Context lookup** — Pull relevant symbols and files for a query
|
|
103
|
+
- **Call graph tracing** — Follow how behavior moves across modules
|
|
104
|
+
- **Architecture visibility** — Inspect routes, entities, dependencies, and layers
|
|
105
|
+
- **Reusable index** — Keep a structured project map that tools can build on
|
|
127
106
|
|
|
128
107
|
### Interactive HTML Documentation
|
|
129
108
|
|
|
@@ -158,7 +137,6 @@ cortexcode wiki --no-modules # Skip per-module pages (faster)
|
|
|
158
137
|
- **Mermaid diagrams** — Auto-generated flow diagrams
|
|
159
138
|
- **Concept mapping** — Maps technical concepts to symbols and files
|
|
160
139
|
- **Concept search** — Ask "how does authentication work?" and get grounded answers
|
|
161
|
-
- **Token tracking** — See exactly how many tokens each page used
|
|
162
140
|
|
|
163
141
|
**Output:** `.cortexcode/wiki/index.html` — Open directly or serve locally.
|
|
164
142
|
|
|
@@ -209,12 +187,12 @@ CortexCode supports both a short form (`cc`) and full form (`cortexcode`). Comma
|
|
|
209
187
|
| Command | Description |
|
|
210
188
|
|---------|-------------|
|
|
211
189
|
| `cc analyze context [query]` | Get relevant context for AI |
|
|
212
|
-
| `cc analyze context [query] --tokens` | Show
|
|
190
|
+
| `cc analyze context [query] --tokens` | Show context size estimates for a query |
|
|
213
191
|
| `cc analyze search [query]` | Grep-like symbol search with type/file filters |
|
|
214
192
|
| `cc analyze find [query]` | Semantic search by meaning ("auth handler") |
|
|
215
193
|
| `cc analyze diff` | Show changed symbols since last commit |
|
|
216
194
|
| `cc analyze diff --ref HEAD~3` | Compare against any git ref |
|
|
217
|
-
| `cc analyze stats` | Show project
|
|
195
|
+
| `cc analyze stats` | Show project index and analysis stats |
|
|
218
196
|
| `cc analyze scan` | Scan dependencies for security warnings |
|
|
219
197
|
| `cc analyze trace <symbol>` | Trace code flow through call graph |
|
|
220
198
|
| `cc analyze flow <concept>` | Analyze code flow grouped by file |
|
|
@@ -319,7 +297,7 @@ Add to `~/.windsurf/config.json`:
|
|
|
319
297
|
|
|
320
298
|
```bash
|
|
321
299
|
# Paste this output into your AI chat
|
|
322
|
-
cortexcode context "useAuth"
|
|
300
|
+
cortexcode context "useAuth"
|
|
323
301
|
```
|
|
324
302
|
|
|
325
303
|
### 2. JSON Index (programmatic)
|
|
@@ -516,7 +494,6 @@ CortexCode respects `.gitignore` files (including nested ones) and has built-in
|
|
|
516
494
|
## Roadmap
|
|
517
495
|
|
|
518
496
|
- [x] MCP server for direct AI agent integration
|
|
519
|
-
- [x] Tiktoken-based accurate token counting
|
|
520
497
|
- [x] Semantic search over symbols (TF-IDF + synonym expansion)
|
|
521
498
|
- [x] Cross-file type inference
|
|
522
499
|
- [x] Git diff-aware context (show only changed symbols)
|
|
@@ -60,7 +60,7 @@ class AIDocGenerator:
|
|
|
60
60
|
messages = prompts.generate_project_overview_prompt(index_data)
|
|
61
61
|
output.overview = self._generate(messages, "overview")
|
|
62
62
|
if output.overview:
|
|
63
|
-
(output_dir / "AI_OVERVIEW.md").write_text(output.overview)
|
|
63
|
+
(output_dir / "AI_OVERVIEW.md").write_text(output.overview, encoding="utf-8")
|
|
64
64
|
print(" -> AI_OVERVIEW.md")
|
|
65
65
|
|
|
66
66
|
if "api" in docs:
|
|
@@ -68,7 +68,7 @@ class AIDocGenerator:
|
|
|
68
68
|
messages = prompts.generate_api_docs_prompt(index_data)
|
|
69
69
|
output.api_docs = self._generate(messages, "api")
|
|
70
70
|
if output.api_docs:
|
|
71
|
-
(output_dir / "AI_API.md").write_text(output.api_docs)
|
|
71
|
+
(output_dir / "AI_API.md").write_text(output.api_docs, encoding="utf-8")
|
|
72
72
|
print(" -> AI_API.md")
|
|
73
73
|
|
|
74
74
|
if "architecture" in docs:
|
|
@@ -76,7 +76,7 @@ class AIDocGenerator:
|
|
|
76
76
|
messages = prompts.generate_architecture_prompt(index_data)
|
|
77
77
|
output.architecture = self._generate(messages, "architecture")
|
|
78
78
|
if output.architecture:
|
|
79
|
-
(output_dir / "AI_ARCHITECTURE.md").write_text(output.architecture)
|
|
79
|
+
(output_dir / "AI_ARCHITECTURE.md").write_text(output.architecture, encoding="utf-8")
|
|
80
80
|
print(" -> AI_ARCHITECTURE.md")
|
|
81
81
|
|
|
82
82
|
if "flows" in docs:
|
|
@@ -84,7 +84,7 @@ class AIDocGenerator:
|
|
|
84
84
|
messages = prompts.generate_flow_docs_prompt(index_data)
|
|
85
85
|
output.flows = self._generate(messages, "flows")
|
|
86
86
|
if output.flows:
|
|
87
|
-
(output_dir / "AI_FLOWS.md").write_text(output.flows)
|
|
87
|
+
(output_dir / "AI_FLOWS.md").write_text(output.flows, encoding="utf-8")
|
|
88
88
|
print(" -> AI_FLOWS.md")
|
|
89
89
|
|
|
90
90
|
return output
|
|
@@ -107,7 +107,7 @@ class AIDocGenerator:
|
|
|
107
107
|
result = self._generate(messages, f"module_{module_name}")
|
|
108
108
|
|
|
109
109
|
if output_path and result:
|
|
110
|
-
Path(output_path).write_text(result)
|
|
110
|
+
Path(output_path).write_text(result, encoding="utf-8")
|
|
111
111
|
|
|
112
112
|
return result
|
|
113
113
|
|
|
@@ -35,6 +35,21 @@ def generate_architecture_diagram(index_data: dict[str, Any]) -> str:
|
|
|
35
35
|
lines.append(f" {framework_id}[\"{framework.get('name', 'unknown')} ({framework.get('count', 0)})\"]")
|
|
36
36
|
lines.append(" end")
|
|
37
37
|
|
|
38
|
+
# Nx project graph overlay
|
|
39
|
+
nx_graph = project_profile.get("nx_project_graph", {})
|
|
40
|
+
nx_projects = project_profile.get("nx_projects", [])
|
|
41
|
+
if nx_graph and nx_projects:
|
|
42
|
+
lines.append(" subgraph nx_workspace [Nx Workspace]")
|
|
43
|
+
for proj_name in nx_projects:
|
|
44
|
+
proj_id = sanitize_id(f"nx_{proj_name}")
|
|
45
|
+
lines.append(f" {proj_id}[\"{proj_name}\"]")
|
|
46
|
+
lines.append(" end")
|
|
47
|
+
for proj_name, deps in nx_graph.items():
|
|
48
|
+
proj_id = sanitize_id(f"nx_{proj_name}")
|
|
49
|
+
for dep in deps[:10]:
|
|
50
|
+
dep_id = sanitize_id(f"nx_{dep}")
|
|
51
|
+
lines.append(f" {proj_id} --> {dep_id}")
|
|
52
|
+
|
|
38
53
|
return "\n".join(lines)
|
|
39
54
|
|
|
40
55
|
files = index_data.get("files", {})
|
|
@@ -27,6 +27,7 @@ from cortexcode.indexing.resolution import (
|
|
|
27
27
|
build_file_dependencies,
|
|
28
28
|
build_type_map,
|
|
29
29
|
)
|
|
30
|
+
from cortexcode.indexing.nx_projects import parse_nx_workspace, build_nx_project_graph
|
|
30
31
|
from cortexcode.plugins import plugin_registry
|
|
31
32
|
|
|
32
33
|
|
|
@@ -223,18 +224,32 @@ class CodeIndexer(IndexerExtractorMixin):
|
|
|
223
224
|
|
|
224
225
|
def _build_index(self, root: Path) -> dict[str, Any]:
|
|
225
226
|
"""Build the final index structure."""
|
|
227
|
+
nx_workspace = parse_nx_workspace(root)
|
|
228
|
+
tsconfig_paths = nx_workspace.get("tsconfig_paths", {}) if nx_workspace else {}
|
|
229
|
+
|
|
230
|
+
def _build_file_deps(ts_paths=None):
|
|
231
|
+
return build_file_dependencies(self.file_symbols, ts_paths)
|
|
232
|
+
|
|
233
|
+
def _build_type_map(ts_paths=None):
|
|
234
|
+
return build_type_map(self.file_symbols, ts_paths)
|
|
235
|
+
|
|
236
|
+
def _build_project_profile(_root, file_deps, nx=None):
|
|
237
|
+
return build_project_profile(self.file_symbols, self.call_graph, file_deps, nx)
|
|
238
|
+
|
|
226
239
|
result = build_index_result(
|
|
227
240
|
root=root,
|
|
228
241
|
file_symbols=self.file_symbols,
|
|
229
242
|
call_graph=self.call_graph,
|
|
230
243
|
timestamp=timestamp_now(),
|
|
231
244
|
file_hashes=compute_hashes(root, self.file_symbols),
|
|
232
|
-
build_file_dependencies_fn=lambda:
|
|
233
|
-
build_type_map_fn=lambda:
|
|
234
|
-
build_project_profile_fn=lambda _root, file_deps:
|
|
245
|
+
build_file_dependencies_fn=lambda ts_paths=tsconfig_paths: _build_file_deps(ts_paths),
|
|
246
|
+
build_type_map_fn=lambda ts_paths=tsconfig_paths: _build_type_map(ts_paths),
|
|
247
|
+
build_project_profile_fn=lambda _root, file_deps, nx=nx_workspace: _build_project_profile(_root, file_deps, nx),
|
|
235
248
|
language_map=LANGUAGE_MAP,
|
|
236
249
|
regex_languages=REGEX_LANGUAGES,
|
|
237
250
|
plugin_registry=plugin_registry,
|
|
251
|
+
nx_workspace=nx_workspace,
|
|
252
|
+
tsconfig_paths=tsconfig_paths,
|
|
238
253
|
)
|
|
239
254
|
# Add source code for context retrieval
|
|
240
255
|
result["source_code"] = self.source_code
|
|
@@ -18,6 +18,8 @@ def build_index_result(
|
|
|
18
18
|
language_map: LanguageMap,
|
|
19
19
|
regex_languages: RegexLanguages,
|
|
20
20
|
plugin_registry,
|
|
21
|
+
nx_workspace: dict[str, Any] | None = None,
|
|
22
|
+
tsconfig_paths: dict[str, str] | None = None,
|
|
21
23
|
) -> dict[str, Any]:
|
|
22
24
|
languages = set()
|
|
23
25
|
for file_path in file_symbols.keys():
|
|
@@ -30,9 +32,9 @@ def build_index_result(
|
|
|
30
32
|
else:
|
|
31
33
|
languages.add(ext.lstrip("."))
|
|
32
34
|
|
|
33
|
-
file_deps = build_file_dependencies_fn()
|
|
34
|
-
type_map = build_type_map_fn()
|
|
35
|
-
project_profile = build_project_profile_fn(root, file_deps)
|
|
35
|
+
file_deps = build_file_dependencies_fn(tsconfig_paths)
|
|
36
|
+
type_map = build_type_map_fn(tsconfig_paths)
|
|
37
|
+
project_profile = build_project_profile_fn(root, file_deps, nx_workspace)
|
|
36
38
|
|
|
37
39
|
result = {
|
|
38
40
|
"project_root": str(root),
|
|
@@ -48,4 +50,9 @@ def build_index_result(
|
|
|
48
50
|
if type_map:
|
|
49
51
|
result["type_map"] = type_map
|
|
50
52
|
|
|
53
|
+
if nx_workspace:
|
|
54
|
+
result["nx_workspace"] = nx_workspace
|
|
55
|
+
if tsconfig_paths:
|
|
56
|
+
result["nx_workspace"]["tsconfig_paths"] = tsconfig_paths
|
|
57
|
+
|
|
51
58
|
return plugin_registry.run_post_processors(result)
|
|
@@ -4,7 +4,7 @@ DEFAULT_IGNORE_PATTERNS = {
|
|
|
4
4
|
"*.egg-info", ".eggs", "*.pyc", "*.pyo",
|
|
5
5
|
"node_modules", ".npm", ".yarn", ".pnpm-store", "bower_components",
|
|
6
6
|
"dist", "build", "out", "output", "target", "bin", "obj",
|
|
7
|
-
".build", "_build", "public/build",
|
|
7
|
+
".build", "_build", "public/build",
|
|
8
8
|
".next", ".nuxt", ".svelte-kit", ".angular", ".turbo",
|
|
9
9
|
".parcel-cache", ".webpack", ".rollup.cache", ".vite",
|
|
10
10
|
".expo", ".gradle", "Pods", "DerivedData",
|
|
@@ -22,7 +22,7 @@ def should_ignore_file(
|
|
|
22
22
|
rel_posix = rel_path.as_posix()
|
|
23
23
|
|
|
24
24
|
for pattern in default_ignore_patterns:
|
|
25
|
-
if pattern in
|
|
25
|
+
if pattern in rel_str or pattern in rel_posix:
|
|
26
26
|
return True
|
|
27
27
|
|
|
28
28
|
for pattern in exclude_patterns:
|
|
@@ -139,6 +139,13 @@ def find_js_exports(node: Any, exports: list[dict[str, Any]], get_node_name: Get
|
|
|
139
139
|
name = export_clause_child.child_by_field_name("name")
|
|
140
140
|
if name:
|
|
141
141
|
exports.append({"name": name.text.decode("utf-8"), "type": "named"})
|
|
142
|
+
elif child.type == "export_clause":
|
|
143
|
+
# Barrel re-export: export { Button } from './lib/button'
|
|
144
|
+
for export_clause_child in child.children:
|
|
145
|
+
if export_clause_child.type == "export_specifier":
|
|
146
|
+
name = export_clause_child.child_by_field_name("name")
|
|
147
|
+
if name:
|
|
148
|
+
exports.append({"name": name.text.decode("utf-8"), "type": "re-export"})
|
|
142
149
|
elif child.type == "variable_declaration":
|
|
143
150
|
for declaration_child in child.children:
|
|
144
151
|
if declaration_child.type == "variable_declarator":
|