codesift-mcp 0.3.0 → 0.4.0
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.
- package/README.md +143 -20
- package/dist/cache/hono-cache.d.ts +50 -0
- package/dist/cache/hono-cache.d.ts.map +1 -0
- package/dist/cache/hono-cache.js +132 -0
- package/dist/cache/hono-cache.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +17 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/formatters-shortening.d.ts +13 -0
- package/dist/formatters-shortening.d.ts.map +1 -1
- package/dist/formatters-shortening.js +131 -0
- package/dist/formatters-shortening.js.map +1 -1
- package/dist/formatters.d.ts +38 -0
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +498 -0
- package/dist/formatters.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +27 -26
- package/dist/instructions.js.map +1 -1
- package/dist/lsp/lsp-servers.d.ts.map +1 -1
- package/dist/lsp/lsp-servers.js +5 -0
- package/dist/lsp/lsp-servers.js.map +1 -1
- package/dist/lsp/lsp-tools.d.ts.map +1 -1
- package/dist/lsp/lsp-tools.js +1 -0
- package/dist/lsp/lsp-tools.js.map +1 -1
- package/dist/parser/astro-template.d.ts +47 -0
- package/dist/parser/astro-template.d.ts.map +1 -0
- package/dist/parser/astro-template.js +171 -0
- package/dist/parser/astro-template.js.map +1 -0
- package/dist/parser/extractors/_shared.d.ts +4 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.js +8 -0
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/astro.d.ts +4 -5
- package/dist/parser/extractors/astro.d.ts.map +1 -1
- package/dist/parser/extractors/astro.js +102 -26
- package/dist/parser/extractors/astro.js.map +1 -1
- package/dist/parser/extractors/gradle-kts.d.ts +4 -0
- package/dist/parser/extractors/gradle-kts.d.ts.map +1 -0
- package/dist/parser/extractors/gradle-kts.js +246 -0
- package/dist/parser/extractors/gradle-kts.js.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts +34 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.js +465 -0
- package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -0
- package/dist/parser/extractors/hono-model.d.ts +196 -0
- package/dist/parser/extractors/hono-model.d.ts.map +1 -0
- package/dist/parser/extractors/hono-model.js +10 -0
- package/dist/parser/extractors/hono-model.js.map +1 -0
- package/dist/parser/extractors/hono.d.ts +118 -0
- package/dist/parser/extractors/hono.d.ts.map +1 -0
- package/dist/parser/extractors/hono.js +1527 -0
- package/dist/parser/extractors/hono.js.map +1 -0
- package/dist/parser/extractors/kotlin.d.ts +4 -0
- package/dist/parser/extractors/kotlin.d.ts.map +1 -0
- package/dist/parser/extractors/kotlin.js +521 -0
- package/dist/parser/extractors/kotlin.js.map +1 -0
- package/dist/parser/extractors/php.d.ts +22 -0
- package/dist/parser/extractors/php.d.ts.map +1 -0
- package/dist/parser/extractors/php.js +326 -0
- package/dist/parser/extractors/php.js.map +1 -0
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js +234 -11
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/sql.d.ts +33 -0
- package/dist/parser/extractors/sql.d.ts.map +1 -0
- package/dist/parser/extractors/sql.js +506 -0
- package/dist/parser/extractors/sql.js.map +1 -0
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +166 -3
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/dist/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/dist/parser/languages/tree-sitter-python.wasm +0 -0
- package/dist/parser/parser-manager.d.ts +32 -0
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +82 -3
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +16 -0
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tools.d.ts +37 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +2657 -191
- package/dist/register-tools.js.map +1 -1
- package/dist/search/reranker.js +1 -1
- package/dist/search/reranker.js.map +1 -1
- package/dist/server-helpers.d.ts.map +1 -1
- package/dist/server-helpers.js +11 -0
- package/dist/server-helpers.js.map +1 -1
- package/dist/server.js +28 -1
- package/dist/server.js.map +1 -1
- package/dist/storage/index-store.d.ts +15 -1
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +27 -1
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/session-state.d.ts +1 -1
- package/dist/storage/session-state.d.ts.map +1 -1
- package/dist/storage/session-state.js +6 -4
- package/dist/storage/session-state.js.map +1 -1
- package/dist/tools/agent-config-tools.d.ts +24 -0
- package/dist/tools/agent-config-tools.d.ts.map +1 -0
- package/dist/tools/agent-config-tools.js +119 -0
- package/dist/tools/agent-config-tools.js.map +1 -0
- package/dist/tools/architecture-tools.d.ts +23 -0
- package/dist/tools/architecture-tools.d.ts.map +1 -0
- package/dist/tools/architecture-tools.js +140 -0
- package/dist/tools/architecture-tools.js.map +1 -0
- package/dist/tools/astro-config.d.ts +33 -0
- package/dist/tools/astro-config.d.ts.map +1 -0
- package/dist/tools/astro-config.js +260 -0
- package/dist/tools/astro-config.js.map +1 -0
- package/dist/tools/astro-islands.d.ts +61 -0
- package/dist/tools/astro-islands.d.ts.map +1 -0
- package/dist/tools/astro-islands.js +240 -0
- package/dist/tools/astro-islands.js.map +1 -0
- package/dist/tools/astro-routes.d.ts +49 -0
- package/dist/tools/astro-routes.d.ts.map +1 -0
- package/dist/tools/astro-routes.js +119 -0
- package/dist/tools/astro-routes.js.map +1 -0
- package/dist/tools/audit-tools.d.ts +38 -0
- package/dist/tools/audit-tools.d.ts.map +1 -0
- package/dist/tools/audit-tools.js +248 -0
- package/dist/tools/audit-tools.js.map +1 -0
- package/dist/tools/celery-tools.d.ts +38 -0
- package/dist/tools/celery-tools.d.ts.map +1 -0
- package/dist/tools/celery-tools.js +154 -0
- package/dist/tools/celery-tools.js.map +1 -0
- package/dist/tools/clone-tools.js +1 -1
- package/dist/tools/clone-tools.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts +4 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +78 -4
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/compose-tools.d.ts +60 -0
- package/dist/tools/compose-tools.d.ts.map +1 -0
- package/dist/tools/compose-tools.js +203 -0
- package/dist/tools/compose-tools.js.map +1 -0
- package/dist/tools/coupling-tools.d.ts +50 -0
- package/dist/tools/coupling-tools.d.ts.map +1 -0
- package/dist/tools/coupling-tools.js +262 -0
- package/dist/tools/coupling-tools.js.map +1 -0
- package/dist/tools/dependency-audit-tools.d.ts +65 -0
- package/dist/tools/dependency-audit-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-tools.js +553 -0
- package/dist/tools/dependency-audit-tools.js.map +1 -0
- package/dist/tools/django-settings.d.ts +22 -0
- package/dist/tools/django-settings.d.ts.map +1 -0
- package/dist/tools/django-settings.js +301 -0
- package/dist/tools/django-settings.js.map +1 -0
- package/dist/tools/frequency-tools.js +1 -1
- package/dist/tools/frequency-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +8 -2
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +44 -3
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hilt-tools.d.ts +55 -0
- package/dist/tools/hilt-tools.d.ts.map +1 -0
- package/dist/tools/hilt-tools.js +258 -0
- package/dist/tools/hilt-tools.js.map +1 -0
- package/dist/tools/hono-analyze-app.d.ts +48 -0
- package/dist/tools/hono-analyze-app.d.ts.map +1 -0
- package/dist/tools/hono-analyze-app.js +102 -0
- package/dist/tools/hono-analyze-app.js.map +1 -0
- package/dist/tools/hono-api-contract.d.ts +22 -0
- package/dist/tools/hono-api-contract.d.ts.map +1 -0
- package/dist/tools/hono-api-contract.js +80 -0
- package/dist/tools/hono-api-contract.js.map +1 -0
- package/dist/tools/hono-conditional-middleware.d.ts +27 -0
- package/dist/tools/hono-conditional-middleware.d.ts.map +1 -0
- package/dist/tools/hono-conditional-middleware.js +62 -0
- package/dist/tools/hono-conditional-middleware.js.map +1 -0
- package/dist/tools/hono-context-flow.d.ts +24 -0
- package/dist/tools/hono-context-flow.d.ts.map +1 -0
- package/dist/tools/hono-context-flow.js +78 -0
- package/dist/tools/hono-context-flow.js.map +1 -0
- package/dist/tools/hono-dead-routes.d.ts +26 -0
- package/dist/tools/hono-dead-routes.d.ts.map +1 -0
- package/dist/tools/hono-dead-routes.js +109 -0
- package/dist/tools/hono-dead-routes.js.map +1 -0
- package/dist/tools/hono-env-regression.d.ts +29 -0
- package/dist/tools/hono-env-regression.d.ts.map +1 -0
- package/dist/tools/hono-env-regression.js +157 -0
- package/dist/tools/hono-env-regression.js.map +1 -0
- package/dist/tools/hono-inline-analyze.d.ts +31 -0
- package/dist/tools/hono-inline-analyze.d.ts.map +1 -0
- package/dist/tools/hono-inline-analyze.js +67 -0
- package/dist/tools/hono-inline-analyze.js.map +1 -0
- package/dist/tools/hono-middleware-chain.d.ts +22 -0
- package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
- package/dist/tools/hono-middleware-chain.js +84 -0
- package/dist/tools/hono-middleware-chain.js.map +1 -0
- package/dist/tools/hono-modules.d.ts +22 -0
- package/dist/tools/hono-modules.d.ts.map +1 -0
- package/dist/tools/hono-modules.js +126 -0
- package/dist/tools/hono-modules.js.map +1 -0
- package/dist/tools/hono-response-types.d.ts +37 -0
- package/dist/tools/hono-response-types.d.ts.map +1 -0
- package/dist/tools/hono-response-types.js +84 -0
- package/dist/tools/hono-response-types.js.map +1 -0
- package/dist/tools/hono-rpc-types.d.ts +21 -0
- package/dist/tools/hono-rpc-types.d.ts.map +1 -0
- package/dist/tools/hono-rpc-types.js +57 -0
- package/dist/tools/hono-rpc-types.js.map +1 -0
- package/dist/tools/hono-security.d.ts +21 -0
- package/dist/tools/hono-security.d.ts.map +1 -0
- package/dist/tools/hono-security.js +98 -0
- package/dist/tools/hono-security.js.map +1 -0
- package/dist/tools/hono-visualize.d.ts +13 -0
- package/dist/tools/hono-visualize.d.ts.map +1 -0
- package/dist/tools/hono-visualize.js +72 -0
- package/dist/tools/hono-visualize.js.map +1 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -1
- package/dist/tools/hotspot-tools.js +9 -7
- package/dist/tools/hotspot-tools.js.map +1 -1
- package/dist/tools/index-tools.d.ts +17 -0
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +210 -10
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/kotlin-tools.d.ts +142 -0
- package/dist/tools/kotlin-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-tools.js +572 -0
- package/dist/tools/kotlin-tools.js.map +1 -0
- package/dist/tools/legacy-hono-conventions.d.ts +14 -0
- package/dist/tools/legacy-hono-conventions.d.ts.map +1 -0
- package/dist/tools/legacy-hono-conventions.js +152 -0
- package/dist/tools/legacy-hono-conventions.js.map +1 -0
- package/dist/tools/migration-lint-tools.d.ts +26 -0
- package/dist/tools/migration-lint-tools.d.ts.map +1 -0
- package/dist/tools/migration-lint-tools.js +247 -0
- package/dist/tools/migration-lint-tools.js.map +1 -0
- package/dist/tools/model-tools.d.ts +30 -0
- package/dist/tools/model-tools.d.ts.map +1 -0
- package/dist/tools/model-tools.js +145 -0
- package/dist/tools/model-tools.js.map +1 -0
- package/dist/tools/nest-ext-tools.d.ts +92 -0
- package/dist/tools/nest-ext-tools.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools.js +359 -0
- package/dist/tools/nest-ext-tools.js.map +1 -0
- package/dist/tools/nest-tools.d.ts +171 -0
- package/dist/tools/nest-tools.d.ts.map +1 -0
- package/dist/tools/nest-tools.js +1042 -0
- package/dist/tools/nest-tools.js.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts +14 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.js +204 -0
- package/dist/tools/nextjs-api-contract-readers.js.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts +57 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.js +144 -0
- package/dist/tools/nextjs-api-contract-tools.js.map +1 -0
- package/dist/tools/nextjs-boundary-tools.d.ts +39 -0
- package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-boundary-tools.js +152 -0
- package/dist/tools/nextjs-boundary-tools.js.map +1 -0
- package/dist/tools/nextjs-component-tools.d.ts +121 -0
- package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-component-tools.js +460 -0
- package/dist/tools/nextjs-component-tools.js.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts +42 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.js +158 -0
- package/dist/tools/nextjs-data-flow-tools.js.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts +37 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.js +211 -0
- package/dist/tools/nextjs-framework-audit-tools.js.map +1 -0
- package/dist/tools/nextjs-link-tools.d.ts +41 -0
- package/dist/tools/nextjs-link-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-link-tools.js +157 -0
- package/dist/tools/nextjs-link-tools.js.map +1 -0
- package/dist/tools/nextjs-metadata-tools.d.ts +74 -0
- package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-metadata-tools.js +252 -0
- package/dist/tools/nextjs-metadata-tools.js.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts +41 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js +88 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js.map +1 -0
- package/dist/tools/nextjs-route-tools.d.ts +100 -0
- package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-route-tools.js +493 -0
- package/dist/tools/nextjs-route-tools.js.map +1 -0
- package/dist/tools/nextjs-security-readers.d.ts +22 -0
- package/dist/tools/nextjs-security-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-security-readers.js +318 -0
- package/dist/tools/nextjs-security-readers.js.map +1 -0
- package/dist/tools/nextjs-security-scoring.d.ts +15 -0
- package/dist/tools/nextjs-security-scoring.d.ts.map +1 -0
- package/dist/tools/nextjs-security-scoring.js +65 -0
- package/dist/tools/nextjs-security-scoring.js.map +1 -0
- package/dist/tools/nextjs-security-tools.d.ts +75 -0
- package/dist/tools/nextjs-security-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-security-tools.js +153 -0
- package/dist/tools/nextjs-security-tools.js.map +1 -0
- package/dist/tools/nextjs-tools.d.ts +15 -0
- package/dist/tools/nextjs-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-tools.js +15 -0
- package/dist/tools/nextjs-tools.js.map +1 -0
- package/dist/tools/outline-tools.d.ts.map +1 -1
- package/dist/tools/outline-tools.js +20 -0
- package/dist/tools/outline-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts +8 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +561 -3
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/perf-tools.d.ts +32 -0
- package/dist/tools/perf-tools.d.ts.map +1 -0
- package/dist/tools/perf-tools.js +227 -0
- package/dist/tools/perf-tools.js.map +1 -0
- package/dist/tools/php-tools.d.ts +176 -0
- package/dist/tools/php-tools.d.ts.map +1 -0
- package/dist/tools/php-tools.js +543 -0
- package/dist/tools/php-tools.js.map +1 -0
- package/dist/tools/prisma-schema-tools.d.ts +44 -0
- package/dist/tools/prisma-schema-tools.d.ts.map +1 -0
- package/dist/tools/prisma-schema-tools.js +358 -0
- package/dist/tools/prisma-schema-tools.js.map +1 -0
- package/dist/tools/project-tools.d.ts +115 -6
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +594 -217
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pyproject-tools.d.ts +23 -0
- package/dist/tools/pyproject-tools.d.ts.map +1 -0
- package/dist/tools/pyproject-tools.js +133 -0
- package/dist/tools/pyproject-tools.js.map +1 -0
- package/dist/tools/pytest-tools.d.ts +20 -0
- package/dist/tools/pytest-tools.d.ts.map +1 -0
- package/dist/tools/pytest-tools.js +106 -0
- package/dist/tools/pytest-tools.js.map +1 -0
- package/dist/tools/python-callers.d.ts +28 -0
- package/dist/tools/python-callers.d.ts.map +1 -0
- package/dist/tools/python-callers.js +110 -0
- package/dist/tools/python-callers.js.map +1 -0
- package/dist/tools/python-circular-imports.d.ts +19 -0
- package/dist/tools/python-circular-imports.d.ts.map +1 -0
- package/dist/tools/python-circular-imports.js +126 -0
- package/dist/tools/python-circular-imports.js.map +1 -0
- package/dist/tools/python-deps-analyzer.d.ts +46 -0
- package/dist/tools/python-deps-analyzer.d.ts.map +1 -0
- package/dist/tools/python-deps-analyzer.js +227 -0
- package/dist/tools/python-deps-analyzer.js.map +1 -0
- package/dist/tools/query-tools.d.ts +23 -0
- package/dist/tools/query-tools.d.ts.map +1 -0
- package/dist/tools/query-tools.js +256 -0
- package/dist/tools/query-tools.js.map +1 -0
- package/dist/tools/react-tools.d.ts +218 -0
- package/dist/tools/react-tools.d.ts.map +1 -0
- package/dist/tools/react-tools.js +714 -0
- package/dist/tools/react-tools.js.map +1 -0
- package/dist/tools/report-tools.js +47 -0
- package/dist/tools/report-tools.js.map +1 -1
- package/dist/tools/review-diff-tools.d.ts +2 -6
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +51 -66
- package/dist/tools/review-diff-tools.js.map +1 -1
- package/dist/tools/room-tools.d.ts +36 -0
- package/dist/tools/room-tools.d.ts.map +1 -0
- package/dist/tools/room-tools.js +147 -0
- package/dist/tools/room-tools.js.map +1 -0
- package/dist/tools/route-tools.d.ts +27 -1
- package/dist/tools/route-tools.d.ts.map +1 -1
- package/dist/tools/route-tools.js +744 -18
- package/dist/tools/route-tools.js.map +1 -1
- package/dist/tools/ruff-tools.d.ts +32 -0
- package/dist/tools/ruff-tools.d.ts.map +1 -0
- package/dist/tools/ruff-tools.js +114 -0
- package/dist/tools/ruff-tools.js.map +1 -0
- package/dist/tools/search-ranker.d.ts.map +1 -1
- package/dist/tools/search-ranker.js +7 -0
- package/dist/tools/search-ranker.js.map +1 -1
- package/dist/tools/serialization-tools.d.ts +24 -0
- package/dist/tools/serialization-tools.d.ts.map +1 -0
- package/dist/tools/serialization-tools.js +156 -0
- package/dist/tools/serialization-tools.js.map +1 -0
- package/dist/tools/sql-tools.d.ts +234 -0
- package/dist/tools/sql-tools.d.ts.map +1 -0
- package/dist/tools/sql-tools.js +1037 -0
- package/dist/tools/sql-tools.js.map +1 -0
- package/dist/tools/status-tools.d.ts +10 -0
- package/dist/tools/status-tools.d.ts.map +1 -0
- package/dist/tools/status-tools.js +32 -0
- package/dist/tools/status-tools.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +19 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +78 -4
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/test-impact-tools.d.ts +29 -0
- package/dist/tools/test-impact-tools.d.ts.map +1 -0
- package/dist/tools/test-impact-tools.js +156 -0
- package/dist/tools/test-impact-tools.js.map +1 -0
- package/dist/tools/typecheck-tools.d.ts +39 -0
- package/dist/tools/typecheck-tools.d.ts.map +1 -0
- package/dist/tools/typecheck-tools.js +191 -0
- package/dist/tools/typecheck-tools.js.map +1 -0
- package/dist/tools/wiring-tools.d.ts +19 -0
- package/dist/tools/wiring-tools.d.ts.map +1 -0
- package/dist/tools/wiring-tools.js +147 -0
- package/dist/tools/wiring-tools.js.map +1 -0
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/framework-detect.d.ts +18 -2
- package/dist/utils/framework-detect.d.ts.map +1 -1
- package/dist/utils/framework-detect.js +150 -3
- package/dist/utils/framework-detect.js.map +1 -1
- package/dist/utils/import-graph.d.ts +36 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +212 -9
- package/dist/utils/import-graph.js.map +1 -1
- package/dist/utils/language-detect.d.ts +21 -0
- package/dist/utils/language-detect.d.ts.map +1 -0
- package/dist/utils/language-detect.js +183 -0
- package/dist/utils/language-detect.js.map +1 -0
- package/dist/utils/nextjs-ast-readers.d.ts +44 -0
- package/dist/utils/nextjs-ast-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-ast-readers.js +341 -0
- package/dist/utils/nextjs-ast-readers.js.map +1 -0
- package/dist/utils/nextjs-audit-cache.d.ts +51 -0
- package/dist/utils/nextjs-audit-cache.d.ts.map +1 -0
- package/dist/utils/nextjs-audit-cache.js +116 -0
- package/dist/utils/nextjs-audit-cache.js.map +1 -0
- package/dist/utils/nextjs-metadata-readers.d.ts +65 -0
- package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-metadata-readers.js +447 -0
- package/dist/utils/nextjs-metadata-readers.js.map +1 -0
- package/dist/utils/nextjs.d.ts +42 -0
- package/dist/utils/nextjs.d.ts.map +1 -0
- package/dist/utils/nextjs.js +284 -0
- package/dist/utils/nextjs.js.map +1 -0
- package/dist/utils/python-import-resolver.d.ts +42 -0
- package/dist/utils/python-import-resolver.d.ts.map +1 -0
- package/dist/utils/python-import-resolver.js +101 -0
- package/dist/utils/python-import-resolver.js.map +1 -0
- package/dist/utils/python-imports.d.ts +28 -0
- package/dist/utils/python-imports.d.ts.map +1 -0
- package/dist/utils/python-imports.js +117 -0
- package/dist/utils/python-imports.js.map +1 -0
- package/dist/utils/react-alias.d.ts +15 -0
- package/dist/utils/react-alias.d.ts.map +1 -0
- package/dist/utils/react-alias.js +31 -0
- package/dist/utils/react-alias.js.map +1 -0
- package/dist/utils/test-file.d.ts.map +1 -1
- package/dist/utils/test-file.js +7 -0
- package/dist/utils/test-file.js.map +1 -1
- package/dist/utils/walk.d.ts +22 -0
- package/dist/utils/walk.d.ts.map +1 -1
- package/dist/utils/walk.js +70 -2
- package/dist/utils/walk.js.map +1 -1
- package/package.json +3 -2
- package/rules/codesift.md +33 -5
- package/rules/codesift.mdc +33 -5
- package/rules/codex.md +33 -5
- package/rules/gemini.md +33 -5
- package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/src/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/src/parser/languages/tree-sitter-php.wasm +0 -0
- package/src/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/src/parser/languages/tree-sitter-python.wasm +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React/Vite/Next.js path alias resolver — heuristic.
|
|
3
|
+
*
|
|
4
|
+
* Resolves `@/components/Foo` to a real file path within the repo without
|
|
5
|
+
* parsing tsconfig.json. Tries common conventions: src/, lib/, then root.
|
|
6
|
+
*
|
|
7
|
+
* Returns null for non-aliased imports (anything not starting with "@/").
|
|
8
|
+
*
|
|
9
|
+
* Used by trace_component_tree and React-aware analysis to bridge the gap
|
|
10
|
+
* between import statements and actual file locations.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveAlias(importPath: string, files: {
|
|
13
|
+
path: string;
|
|
14
|
+
}[]): string | null;
|
|
15
|
+
//# sourceMappingURL=react-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-alias.d.ts","sourceRoot":"","sources":["../../src/utils/react-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACxB,MAAM,GAAG,IAAI,CAkBf"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React/Vite/Next.js path alias resolver — heuristic.
|
|
3
|
+
*
|
|
4
|
+
* Resolves `@/components/Foo` to a real file path within the repo without
|
|
5
|
+
* parsing tsconfig.json. Tries common conventions: src/, lib/, then root.
|
|
6
|
+
*
|
|
7
|
+
* Returns null for non-aliased imports (anything not starting with "@/").
|
|
8
|
+
*
|
|
9
|
+
* Used by trace_component_tree and React-aware analysis to bridge the gap
|
|
10
|
+
* between import statements and actual file locations.
|
|
11
|
+
*/
|
|
12
|
+
const TS_EXTENSIONS = [".tsx", ".jsx", ".ts", ".js", "/index.tsx", "/index.jsx", "/index.ts", "/index.js"];
|
|
13
|
+
const ROOT_CANDIDATES = ["src", "lib"];
|
|
14
|
+
export function resolveAlias(importPath, files) {
|
|
15
|
+
if (!importPath.startsWith("@/"))
|
|
16
|
+
return null;
|
|
17
|
+
const rest = importPath.slice(2);
|
|
18
|
+
// Try src/, lib/, then root (no prefix)
|
|
19
|
+
const bases = [...ROOT_CANDIDATES.map((r) => `${r}/${rest}`), rest];
|
|
20
|
+
// Build a Set for O(1) lookup — files list can be large
|
|
21
|
+
const fileSet = new Set(files.map((f) => f.path));
|
|
22
|
+
for (const base of bases) {
|
|
23
|
+
for (const ext of TS_EXTENSIONS) {
|
|
24
|
+
const target = base + ext;
|
|
25
|
+
if (fileSet.has(target))
|
|
26
|
+
return target;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=react-alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-alias.js","sourceRoot":"","sources":["../../src/utils/react-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3G,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEvC,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,KAAyB;IAEzB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjC,wCAAwC;IACxC,MAAM,KAAK,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAEpE,wDAAwD;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC;YAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-file.d.ts","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-file.d.ts","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D"}
|
package/dist/utils/test-file.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Test file patterns — shared between BM25 scoring and call graph filtering */
|
|
2
2
|
const TEST_FILE_PATTERNS = [
|
|
3
3
|
".test.", ".spec.", "__tests__/", "test/mocks", "test-utils", "test-helpers",
|
|
4
|
+
"Test.kt", "Tests.kt", "Spec.kt",
|
|
4
5
|
];
|
|
5
6
|
/** Regex-based test file patterns for stricter matching (e.g., call graph filtering) */
|
|
6
7
|
const TEST_FILE_REGEX_PATTERNS = [
|
|
@@ -10,6 +11,12 @@ const TEST_FILE_REGEX_PATTERNS = [
|
|
|
10
11
|
/\/__tests__\//,
|
|
11
12
|
/\/test\//,
|
|
12
13
|
/\/tests\//,
|
|
14
|
+
// Kotlin test conventions
|
|
15
|
+
/Test\.kts?$/, // UserTest.kt, LoginTest.kts
|
|
16
|
+
/Tests\.kts?$/, // UserTests.kt
|
|
17
|
+
/Spec\.kts?$/, // Kotest: UserSpec.kt
|
|
18
|
+
/\/androidTest\//, // Android instrumented tests
|
|
19
|
+
/\/commonTest\//, // Kotlin Multiplatform common tests
|
|
13
20
|
];
|
|
14
21
|
/**
|
|
15
22
|
* Check if a file path looks like a test file using substring matching.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-file.js","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"test-file.js","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc;IAC5E,SAAS,EAAE,UAAU,EAAE,SAAS;CACjC,CAAC;AAEF,wFAAwF;AACxF,MAAM,wBAAwB,GAAG;IAC/B,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,eAAe;IACf,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,aAAa,EAAY,6BAA6B;IACtD,cAAc,EAAW,eAAe;IACxC,aAAa,EAAY,sBAAsB;IAC/C,iBAAiB,EAAQ,6BAA6B;IACtD,gBAAgB,EAAS,oCAAoC;CAC9D,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/utils/walk.d.ts
CHANGED
|
@@ -8,6 +8,16 @@ export declare const IGNORE_DIRS: Set<string>;
|
|
|
8
8
|
* e.g., "node_modules" -> "**\/node_modules/**"
|
|
9
9
|
*/
|
|
10
10
|
export declare function toIgnorePatterns(): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Backup and editor-generated files to exclude by default.
|
|
13
|
+
* These patterns commonly appear in working directories and cause:
|
|
14
|
+
* - Index duplication (e.g. Mobi2 had Survey.php + Survey copy.php)
|
|
15
|
+
* - False references pointing at backup files
|
|
16
|
+
* - Wasted parser time on abandoned code
|
|
17
|
+
*
|
|
18
|
+
* Disabled with env var CODESIFT_INCLUDE_BACKUPS=1.
|
|
19
|
+
*/
|
|
20
|
+
export declare const BACKUP_FILE_PATTERNS: RegExp[];
|
|
11
21
|
export interface WalkOptions {
|
|
12
22
|
/**
|
|
13
23
|
* When provided, only files whose relative path starts with one of these
|
|
@@ -36,6 +46,18 @@ export interface WalkOptions {
|
|
|
36
46
|
* When `false` (default) the returned paths are absolute.
|
|
37
47
|
*/
|
|
38
48
|
relative?: boolean | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* When `true`, follow symlinks and walk their targets.
|
|
51
|
+
* Cycle detection via inode tracking prevents infinite loops.
|
|
52
|
+
* Defaults to `false`.
|
|
53
|
+
*/
|
|
54
|
+
followSymlinks?: boolean | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Glob patterns to exclude (like .gitignore syntax).
|
|
57
|
+
* Matched against relative paths using picomatch.
|
|
58
|
+
* Example: ["dist/**", "*.generated.ts"]
|
|
59
|
+
*/
|
|
60
|
+
excludePatterns?: string[] | undefined;
|
|
39
61
|
}
|
|
40
62
|
/**
|
|
41
63
|
* Walk a directory tree collecting files.
|
package/dist/utils/walk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/utils/walk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/utils/walk.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,WAAW,aAMtB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAQxC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAEpC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAEnE;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiHnB"}
|
package/dist/utils/walk.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { join, relative, extname } from "node:path";
|
|
3
|
+
import picomatch from "picomatch";
|
|
3
4
|
/**
|
|
4
5
|
* Directories to skip during filesystem walks.
|
|
5
6
|
* Shared by index-tools, search-tools, and (via toIgnorePatterns) watcher.
|
|
@@ -19,6 +20,24 @@ export function toIgnorePatterns() {
|
|
|
19
20
|
return [...IGNORE_DIRS].map((dir) => `**/${dir}/**`);
|
|
20
21
|
}
|
|
21
22
|
const DEFAULT_MAX_FILE_SIZE = 1_000_000; // 1MB
|
|
23
|
+
/**
|
|
24
|
+
* Backup and editor-generated files to exclude by default.
|
|
25
|
+
* These patterns commonly appear in working directories and cause:
|
|
26
|
+
* - Index duplication (e.g. Mobi2 had Survey.php + Survey copy.php)
|
|
27
|
+
* - False references pointing at backup files
|
|
28
|
+
* - Wasted parser time on abandoned code
|
|
29
|
+
*
|
|
30
|
+
* Disabled with env var CODESIFT_INCLUDE_BACKUPS=1.
|
|
31
|
+
*/
|
|
32
|
+
export const BACKUP_FILE_PATTERNS = [
|
|
33
|
+
/copy\.php$/i, // macOS Finder "Duplicate" output
|
|
34
|
+
/\.bak$/i, // generic backup
|
|
35
|
+
/\.orig$/i, // merge conflict leftover
|
|
36
|
+
/~$/, // emacs/joe backup
|
|
37
|
+
/\.swp$/i, // vim swap
|
|
38
|
+
/\.swo$/i, // vim swap
|
|
39
|
+
/\.DS_Store$/, // macOS finder metadata
|
|
40
|
+
];
|
|
22
41
|
/**
|
|
23
42
|
* Walk a directory tree collecting files.
|
|
24
43
|
* Skips directories listed in IGNORE_DIRS and hidden directories (dot-prefixed).
|
|
@@ -30,7 +49,20 @@ export async function walkDirectory(rootPath, options) {
|
|
|
30
49
|
const fileFilter = options?.fileFilter;
|
|
31
50
|
const includePaths = options?.includePaths;
|
|
32
51
|
const useRelative = options?.relative ?? false;
|
|
52
|
+
const followSymlinks = options?.followSymlinks ?? false;
|
|
53
|
+
const visitedInodes = new Set();
|
|
33
54
|
let limitReached = false;
|
|
55
|
+
// Compile exclude patterns once (picomatch)
|
|
56
|
+
let isExcluded = null;
|
|
57
|
+
if (options?.excludePatterns && options.excludePatterns.length > 0) {
|
|
58
|
+
try {
|
|
59
|
+
isExcluded = picomatch(options.excludePatterns, { dot: true });
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Malformed patterns — warn and skip filtering
|
|
63
|
+
console.warn("[codesift] walkDirectory: invalid excludePatterns, ignoring");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
34
66
|
async function walk(dirPath) {
|
|
35
67
|
if (limitReached)
|
|
36
68
|
return;
|
|
@@ -45,14 +77,44 @@ export async function walkDirectory(rootPath, options) {
|
|
|
45
77
|
if (limitReached)
|
|
46
78
|
return;
|
|
47
79
|
const fullPath = join(dirPath, entry.name);
|
|
48
|
-
|
|
80
|
+
const isSymlink = entry.isSymbolicLink();
|
|
81
|
+
let isDir = entry.isDirectory();
|
|
82
|
+
let isFile = entry.isFile();
|
|
83
|
+
// Resolve symlinks when followSymlinks is enabled
|
|
84
|
+
if (isSymlink && followSymlinks) {
|
|
85
|
+
try {
|
|
86
|
+
const resolved = await stat(fullPath);
|
|
87
|
+
const ino = resolved.ino;
|
|
88
|
+
if (visitedInodes.has(ino)) {
|
|
89
|
+
// Cycle detected — skip
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
visitedInodes.add(ino);
|
|
93
|
+
isDir = resolved.isDirectory();
|
|
94
|
+
isFile = resolved.isFile();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Broken symlink — skip silently
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (isSymlink) {
|
|
102
|
+
// Not following symlinks — skip
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (isDir) {
|
|
49
106
|
if (IGNORE_DIRS.has(entry.name) || entry.name.startsWith(".")) {
|
|
50
107
|
continue;
|
|
51
108
|
}
|
|
52
109
|
await walk(fullPath);
|
|
53
110
|
}
|
|
54
|
-
else if (
|
|
111
|
+
else if (isFile) {
|
|
55
112
|
const ext = extname(entry.name);
|
|
113
|
+
// Exclude backup / editor-generated files unless env var opts out.
|
|
114
|
+
// Checked before file filter so the noise never reaches the caller.
|
|
115
|
+
if (process.env.CODESIFT_INCLUDE_BACKUPS !== "1" &&
|
|
116
|
+
BACKUP_FILE_PATTERNS.some((re) => re.test(entry.name)))
|
|
117
|
+
continue;
|
|
56
118
|
// Apply caller's file filter (e.g. language check, binary exclusion)
|
|
57
119
|
if (fileFilter && !fileFilter(ext, entry.name))
|
|
58
120
|
continue;
|
|
@@ -63,6 +125,12 @@ export async function walkDirectory(rootPath, options) {
|
|
|
63
125
|
if (!matches)
|
|
64
126
|
continue;
|
|
65
127
|
}
|
|
128
|
+
// Apply exclude patterns
|
|
129
|
+
if (isExcluded) {
|
|
130
|
+
const relPath = relative(rootPath, fullPath);
|
|
131
|
+
if (isExcluded(relPath))
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
66
134
|
// Skip files that are too large
|
|
67
135
|
try {
|
|
68
136
|
const fileStat = await stat(fullPath);
|
package/dist/utils/walk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/utils/walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"walk.js","sourceRoot":"","sources":["../../src/utils/walk.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codesift-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for code intelligence —
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "MCP server for code intelligence — 106 tools for symbol search, call graph, semantic search, route tracing, community detection, LSP bridge, secret detection, conversation search, and Hono framework intelligence",
|
|
5
5
|
"license": "BSL-1.1",
|
|
6
6
|
"author": "Greg Laskowski",
|
|
7
7
|
"type": "module",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
34
|
+
"@mrleebo/prisma-ast": "^0.15.0",
|
|
34
35
|
"@sanity-labs/secret-scan": "^1.1.0",
|
|
35
36
|
"chokidar": "^4.0.0",
|
|
36
37
|
"ignore": "^6.0.0",
|
package/rules/codesift.md
CHANGED
|
@@ -21,15 +21,15 @@ The `repo` param is optional — it auto-resolves from CWD. Just call CodeSift t
|
|
|
21
21
|
|
|
22
22
|
## Tool Discovery
|
|
23
23
|
|
|
24
|
-
**
|
|
24
|
+
**160 MCP tools total** (47 core visible + 113 discoverable).
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
47 core tools appear in ListTools. The remaining 113 niche tools are discovered on demand:
|
|
27
27
|
|
|
28
|
-
- `discover_tools(query="dead code")` — keyword search across all
|
|
28
|
+
- `discover_tools(query="dead code")` — keyword search across all 148 tools
|
|
29
29
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
30
30
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
31
31
|
|
|
32
|
-
Core tools (
|
|
32
|
+
Core tools (46) always visible — includes search, symbols, context, analysis, architecture, conversations, and meta tools. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, `find_perf_hotspots`, `fan_in_fan_out`, `architecture_summary`, `explain_query`, etc.
|
|
33
33
|
|
|
34
34
|
## Tool Mapping
|
|
35
35
|
|
|
@@ -73,6 +73,26 @@ Use this table to pick the right tool for each task:
|
|
|
73
73
|
| index conversations | `index_conversations` |
|
|
74
74
|
| structural diff | `diff_outline(since=)` |
|
|
75
75
|
| what changed | `changed_symbols(since=)` |
|
|
76
|
+
| React component tree | `trace_component_tree` |
|
|
77
|
+
| React hook analysis | `analyze_hooks` |
|
|
78
|
+
| React re-render analysis | `analyze_renders` |
|
|
79
|
+
| React context graph | `analyze_context_graph` |
|
|
80
|
+
| find components | `search_symbols(kind="component")` |
|
|
81
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
82
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
83
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
84
|
+
| Astro route map | `astro_route_map` |
|
|
85
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
86
|
+
| Next.js full audit | `framework_audit` |
|
|
87
|
+
| route map + rendering | `nextjs_route_map` |
|
|
88
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
89
|
+
| server actions security | `nextjs_audit_server_actions` |
|
|
90
|
+
| API contract extraction | `nextjs_api_contract` |
|
|
91
|
+
| client boundary / bundle | `nextjs_boundary_analyzer` |
|
|
92
|
+
| broken internal links | `nextjs_link_integrity` |
|
|
93
|
+
| data fetch waterfalls | `nextjs_data_flow` |
|
|
94
|
+
| middleware coverage gaps | `nextjs_middleware_coverage` |
|
|
95
|
+
| server vs client classify | `analyze_nextjs_components` |
|
|
76
96
|
|
|
77
97
|
## When to Use (Situational Triggers)
|
|
78
98
|
|
|
@@ -103,6 +123,14 @@ Use this table to pick the right tool for each task:
|
|
|
103
123
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
104
124
|
| code audit | `search_patterns("empty-catch")` |
|
|
105
125
|
| past decisions | `find_conversations_for_symbol` |
|
|
126
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
127
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
128
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
129
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
130
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
131
|
+
| security review (Next.js) | `nextjs_audit_server_actions` |
|
|
132
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
133
|
+
| bundle size concerns | `nextjs_boundary_analyzer` |
|
|
106
134
|
|
|
107
135
|
## Key Parameters
|
|
108
136
|
|
|
@@ -110,7 +138,7 @@ Use this table to pick the right tool for each task:
|
|
|
110
138
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
111
139
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
112
140
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
113
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
141
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
114
142
|
- `include_source=true` — include source code in results
|
|
115
143
|
|
|
116
144
|
### search_text
|
package/rules/codesift.mdc
CHANGED
|
@@ -15,15 +15,15 @@ For multi-repo sessions, call `list_repos()` to discover available repos.
|
|
|
15
15
|
|
|
16
16
|
## Tool Discovery
|
|
17
17
|
|
|
18
|
-
**
|
|
18
|
+
**160 MCP tools total** (47 core visible + 113 discoverable).
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
47 core tools appear in ListTools. The remaining 113 niche tools are discovered on demand:
|
|
21
21
|
|
|
22
|
-
- `discover_tools(query="dead code")` — keyword search across all
|
|
22
|
+
- `discover_tools(query="dead code")` — keyword search across all 148 tools
|
|
23
23
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
24
24
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
25
25
|
|
|
26
|
-
Core tools (
|
|
26
|
+
Core tools (46) always visible — includes search, symbols, context, analysis, architecture, conversations, and meta tools. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, etc.
|
|
27
27
|
|
|
28
28
|
## Tool Mapping
|
|
29
29
|
|
|
@@ -67,6 +67,26 @@ Use this table to pick the right tool for each task:
|
|
|
67
67
|
| index conversations | `index_conversations` |
|
|
68
68
|
| structural diff | `diff_outline(since=)` |
|
|
69
69
|
| what changed | `changed_symbols(since=)` |
|
|
70
|
+
| React component tree | `trace_component_tree` |
|
|
71
|
+
| React hook analysis | `analyze_hooks` |
|
|
72
|
+
| React re-render analysis | `analyze_renders` |
|
|
73
|
+
| React context graph | `analyze_context_graph` |
|
|
74
|
+
| find components | `search_symbols(kind="component")` |
|
|
75
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
76
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
77
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
78
|
+
| Astro route map | `astro_route_map` |
|
|
79
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
80
|
+
| Next.js full audit | `framework_audit` |
|
|
81
|
+
| route map + rendering | `nextjs_route_map` |
|
|
82
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
83
|
+
| server actions security | `nextjs_audit_server_actions` |
|
|
84
|
+
| API contract extraction | `nextjs_api_contract` |
|
|
85
|
+
| client boundary / bundle | `nextjs_boundary_analyzer` |
|
|
86
|
+
| broken internal links | `nextjs_link_integrity` |
|
|
87
|
+
| data fetch waterfalls | `nextjs_data_flow` |
|
|
88
|
+
| middleware coverage gaps | `nextjs_middleware_coverage` |
|
|
89
|
+
| server vs client classify | `analyze_nextjs_components` |
|
|
70
90
|
|
|
71
91
|
## When to Use (Situational Triggers)
|
|
72
92
|
|
|
@@ -97,6 +117,14 @@ Use this table to pick the right tool for each task:
|
|
|
97
117
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
98
118
|
| code audit | `search_patterns("empty-catch")` |
|
|
99
119
|
| past decisions | `find_conversations_for_symbol` |
|
|
120
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
121
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
122
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
123
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
124
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
125
|
+
| security review (Next.js) | `nextjs_audit_server_actions` |
|
|
126
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
127
|
+
| bundle size concerns | `nextjs_boundary_analyzer` |
|
|
100
128
|
|
|
101
129
|
## Key Parameters
|
|
102
130
|
|
|
@@ -104,7 +132,7 @@ Use this table to pick the right tool for each task:
|
|
|
104
132
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
105
133
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
106
134
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
107
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
135
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
108
136
|
- `include_source=true` — include source code in results
|
|
109
137
|
|
|
110
138
|
### search_text
|
package/rules/codex.md
CHANGED
|
@@ -10,15 +10,15 @@ For multi-repo sessions, call `list_repos()` to discover available repos.
|
|
|
10
10
|
|
|
11
11
|
## Tool Discovery
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**160 MCP tools total** (47 core visible + 113 discoverable).
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
47 core tools appear in ListTools. The remaining 113 niche tools are discovered on demand:
|
|
16
16
|
|
|
17
|
-
- `discover_tools(query="dead code")` — keyword search across all
|
|
17
|
+
- `discover_tools(query="dead code")` — keyword search across all 148 tools
|
|
18
18
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
19
19
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
20
20
|
|
|
21
|
-
Core tools (
|
|
21
|
+
Core tools (46) always visible — includes search, symbols, context, analysis, architecture, conversations, and meta tools. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, etc.
|
|
22
22
|
|
|
23
23
|
## Tool Mapping
|
|
24
24
|
|
|
@@ -62,6 +62,26 @@ Use this table to pick the right tool for each task:
|
|
|
62
62
|
| index conversations | `index_conversations` |
|
|
63
63
|
| structural diff | `diff_outline(since=)` |
|
|
64
64
|
| what changed | `changed_symbols(since=)` |
|
|
65
|
+
| React component tree | `trace_component_tree` |
|
|
66
|
+
| React hook analysis | `analyze_hooks` |
|
|
67
|
+
| React re-render analysis | `analyze_renders` |
|
|
68
|
+
| React context graph | `analyze_context_graph` |
|
|
69
|
+
| find components | `search_symbols(kind="component")` |
|
|
70
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
71
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
72
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
73
|
+
| Astro route map | `astro_route_map` |
|
|
74
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
75
|
+
| Next.js full audit | `framework_audit` |
|
|
76
|
+
| route map + rendering | `nextjs_route_map` |
|
|
77
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
78
|
+
| server actions security | `nextjs_audit_server_actions` |
|
|
79
|
+
| API contract extraction | `nextjs_api_contract` |
|
|
80
|
+
| client boundary / bundle | `nextjs_boundary_analyzer` |
|
|
81
|
+
| broken internal links | `nextjs_link_integrity` |
|
|
82
|
+
| data fetch waterfalls | `nextjs_data_flow` |
|
|
83
|
+
| middleware coverage gaps | `nextjs_middleware_coverage` |
|
|
84
|
+
| server vs client classify | `analyze_nextjs_components` |
|
|
65
85
|
|
|
66
86
|
## When to Use (Situational Triggers)
|
|
67
87
|
|
|
@@ -92,6 +112,14 @@ Use this table to pick the right tool for each task:
|
|
|
92
112
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
93
113
|
| code audit | `search_patterns("empty-catch")` |
|
|
94
114
|
| past decisions | `find_conversations_for_symbol` |
|
|
115
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
116
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
117
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
118
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
119
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
120
|
+
| security review (Next.js) | `nextjs_audit_server_actions` |
|
|
121
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
122
|
+
| bundle size concerns | `nextjs_boundary_analyzer` |
|
|
95
123
|
|
|
96
124
|
## Key Parameters
|
|
97
125
|
|
|
@@ -99,7 +127,7 @@ Use this table to pick the right tool for each task:
|
|
|
99
127
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
100
128
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
101
129
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
102
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
130
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
103
131
|
- `include_source=true` — include source code in results
|
|
104
132
|
|
|
105
133
|
### search_text
|
package/rules/gemini.md
CHANGED
|
@@ -10,15 +10,15 @@ For multi-repo sessions, call `list_repos()` to discover available repos.
|
|
|
10
10
|
|
|
11
11
|
## Tool Discovery
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**160 MCP tools total** (47 core visible + 113 discoverable).
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
47 core tools appear in ListTools. The remaining 113 niche tools are discovered on demand:
|
|
16
16
|
|
|
17
|
-
- `discover_tools(query="dead code")` — keyword search across all
|
|
17
|
+
- `discover_tools(query="dead code")` — keyword search across all 157 tools
|
|
18
18
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
19
19
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
20
20
|
|
|
21
|
-
Core tools (
|
|
21
|
+
Core tools (46) always visible — includes search, symbols, context, analysis, architecture, conversations, and meta tools. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, etc.
|
|
22
22
|
|
|
23
23
|
## Tool Mapping
|
|
24
24
|
|
|
@@ -62,6 +62,26 @@ Use this table to pick the right tool for each task:
|
|
|
62
62
|
| index conversations | `index_conversations` |
|
|
63
63
|
| structural diff | `diff_outline(since=)` |
|
|
64
64
|
| what changed | `changed_symbols(since=)` |
|
|
65
|
+
| React component tree | `trace_component_tree` |
|
|
66
|
+
| React hook analysis | `analyze_hooks` |
|
|
67
|
+
| React re-render analysis | `analyze_renders` |
|
|
68
|
+
| React context graph | `analyze_context_graph` |
|
|
69
|
+
| find components | `search_symbols(kind="component")` |
|
|
70
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
71
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
72
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
73
|
+
| Astro route map | `astro_route_map` |
|
|
74
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
75
|
+
| Next.js full audit | `framework_audit` |
|
|
76
|
+
| route map + rendering | `nextjs_route_map` |
|
|
77
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
78
|
+
| server actions security | `nextjs_audit_server_actions` |
|
|
79
|
+
| API contract extraction | `nextjs_api_contract` |
|
|
80
|
+
| client boundary / bundle | `nextjs_boundary_analyzer` |
|
|
81
|
+
| broken internal links | `nextjs_link_integrity` |
|
|
82
|
+
| data fetch waterfalls | `nextjs_data_flow` |
|
|
83
|
+
| middleware coverage gaps | `nextjs_middleware_coverage` |
|
|
84
|
+
| server vs client classify | `analyze_nextjs_components` |
|
|
65
85
|
|
|
66
86
|
## When to Use (Situational Triggers)
|
|
67
87
|
|
|
@@ -92,6 +112,14 @@ Use this table to pick the right tool for each task:
|
|
|
92
112
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
93
113
|
| code audit | `search_patterns("empty-catch")` |
|
|
94
114
|
| past decisions | `find_conversations_for_symbol` |
|
|
115
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
116
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
117
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
118
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
119
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
120
|
+
| security review (Next.js) | `nextjs_audit_server_actions` |
|
|
121
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
122
|
+
| bundle size concerns | `nextjs_boundary_analyzer` |
|
|
95
123
|
|
|
96
124
|
## Key Parameters
|
|
97
125
|
|
|
@@ -99,7 +127,7 @@ Use this table to pick the right tool for each task:
|
|
|
99
127
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
100
128
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
101
129
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
102
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
130
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
103
131
|
- `include_source=true` — include source code in results
|
|
104
132
|
|
|
105
133
|
### search_text
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|