codesift-mcp 0.3.0 → 0.5.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 +215 -23
- 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/help.d.ts.map +1 -1
- package/dist/cli/help.js +8 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/platform.d.ts.map +1 -1
- package/dist/cli/platform.js +12 -14
- package/dist/cli/platform.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +27 -3
- 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 +521 -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 +39 -38
- 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 +334 -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 +209 -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/parse-cache.d.ts +39 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +87 -0
- package/dist/parser/parse-cache.js.map +1 -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 +93 -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 +38 -2
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +2444 -195
- 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/search/tool-ranker.d.ts +90 -0
- package/dist/search/tool-ranker.d.ts.map +1 -0
- package/dist/search/tool-ranker.js +420 -0
- package/dist/search/tool-ranker.js.map +1 -0
- 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 +47 -14
- 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/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +4 -1
- package/dist/storage/usage-tracker.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-actions.d.ts +54 -0
- package/dist/tools/astro-actions.d.ts.map +1 -0
- package/dist/tools/astro-actions.js +561 -0
- package/dist/tools/astro-actions.js.map +1 -0
- package/dist/tools/astro-audit.d.ts +87 -0
- package/dist/tools/astro-audit.d.ts.map +1 -0
- package/dist/tools/astro-audit.js +345 -0
- package/dist/tools/astro-audit.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-content-collections.d.ts +44 -0
- package/dist/tools/astro-content-collections.d.ts.map +1 -0
- package/dist/tools/astro-content-collections.js +630 -0
- package/dist/tools/astro-content-collections.js.map +1 -0
- package/dist/tools/astro-islands.d.ts +63 -0
- package/dist/tools/astro-islands.d.ts.map +1 -0
- package/dist/tools/astro-islands.js +255 -0
- package/dist/tools/astro-islands.js.map +1 -0
- package/dist/tools/astro-migration.d.ts +31 -0
- package/dist/tools/astro-migration.d.ts.map +1 -0
- package/dist/tools/astro-migration.js +378 -0
- package/dist/tools/astro-migration.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/async-correctness.d.ts +26 -0
- package/dist/tools/async-correctness.d.ts.map +1 -0
- package/dist/tools/async-correctness.js +166 -0
- package/dist/tools/async-correctness.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/django-view-security-tools.d.ts +32 -0
- package/dist/tools/django-view-security-tools.d.ts.map +1 -0
- package/dist/tools/django-view-security-tools.js +184 -0
- package/dist/tools/django-view-security-tools.js.map +1 -0
- package/dist/tools/fastapi-depends.d.ts +63 -0
- package/dist/tools/fastapi-depends.d.ts.map +1 -0
- package/dist/tools/fastapi-depends.js +191 -0
- package/dist/tools/fastapi-depends.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 +94 -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 +112 -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 +70 -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 +102 -0
- package/dist/tools/hono-dead-routes.js.map +1 -0
- package/dist/tools/hono-entry-resolver.d.ts +27 -0
- package/dist/tools/hono-entry-resolver.d.ts.map +1 -0
- package/dist/tools/hono-entry-resolver.js +31 -0
- package/dist/tools/hono-entry-resolver.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 +59 -0
- package/dist/tools/hono-inline-analyze.js.map +1 -0
- package/dist/tools/hono-middleware-chain.d.ts +40 -0
- package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
- package/dist/tools/hono-middleware-chain.js +121 -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 +118 -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 +76 -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 +49 -0
- package/dist/tools/hono-rpc-types.js.map +1 -0
- package/dist/tools/hono-security.d.ts +31 -0
- package/dist/tools/hono-security.d.ts.map +1 -0
- package/dist/tools/hono-security.js +269 -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 +64 -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 +207 -0
- package/dist/tools/nest-ext-tools.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools.js +752 -0
- package/dist/tools/nest-ext-tools.js.map +1 -0
- package/dist/tools/nest-tools.d.ts +198 -0
- package/dist/tools/nest-tools.d.ts.map +1 -0
- package/dist/tools/nest-tools.js +1142 -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-readers.d.ts +101 -0
- package/dist/tools/nextjs-component-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-component-readers.js +287 -0
- package/dist/tools/nextjs-component-readers.js.map +1 -0
- package/dist/tools/nextjs-component-tools.d.ts +51 -0
- package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-component-tools.js +212 -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 +60 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.js +394 -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-readers.d.ts +81 -0
- package/dist/tools/nextjs-route-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-route-readers.js +340 -0
- package/dist/tools/nextjs-route-readers.js.map +1 -0
- package/dist/tools/nextjs-route-tools.d.ts +36 -0
- package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-route-tools.js +175 -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 +651 -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 +185 -0
- package/dist/tools/php-tools.d.ts.map +1 -0
- package/dist/tools/php-tools.js +645 -0
- package/dist/tools/php-tools.js.map +1 -0
- package/dist/tools/plan-turn-tools.d.ts +89 -0
- package/dist/tools/plan-turn-tools.d.ts.map +1 -0
- package/dist/tools/plan-turn-tools.js +508 -0
- package/dist/tools/plan-turn-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 +116 -7
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +595 -218
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pydantic-models.d.ts +46 -0
- package/dist/tools/pydantic-models.d.ts.map +1 -0
- package/dist/tools/pydantic-models.js +249 -0
- package/dist/tools/pydantic-models.js.map +1 -0
- 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-audit.d.ts +40 -0
- package/dist/tools/python-audit.d.ts.map +1 -0
- package/dist/tools/python-audit.js +244 -0
- package/dist/tools/python-audit.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-constants-tools.d.ts +44 -0
- package/dist/tools/python-constants-tools.d.ts.map +1 -0
- package/dist/tools/python-constants-tools.js +525 -0
- package/dist/tools/python-constants-tools.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 +263 -0
- package/dist/tools/react-tools.d.ts.map +1 -0
- package/dist/tools/react-tools.js +839 -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 +5 -4
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +157 -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/search-tools.d.ts +3 -2
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +16 -3
- package/dist/tools/search-tools.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 +274 -0
- package/dist/tools/sql-tools.d.ts.map +1 -0
- package/dist/tools/sql-tools.js +1160 -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 +75 -4
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint-tools.d.ts +43 -0
- package/dist/tools/taint-tools.d.ts.map +1 -0
- package/dist/tools/taint-tools.js +922 -0
- package/dist/tools/taint-tools.js.map +1 -0
- 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 +42 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +248 -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 +4 -3
- package/rules/codesift.md +71 -5
- package/rules/codesift.mdc +71 -5
- package/rules/codex.md +71 -5
- package/rules/gemini.md +71 -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,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.5.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",
|
|
@@ -27,10 +27,11 @@
|
|
|
27
27
|
"lint": "tsc --noEmit",
|
|
28
28
|
"download-wasm": "tsx scripts/download-wasm.ts",
|
|
29
29
|
"prepublishOnly": "npm run build && npm test",
|
|
30
|
-
"postinstall": "echo '\n ✨ CodeSift MCP installed. Run setup for your platform:\n\n codesift setup claude
|
|
30
|
+
"postinstall": "echo '\n ✨ CodeSift MCP installed. Run setup for your platform:\n\n codesift setup claude # Claude Code\n codesift setup cursor # Cursor\n codesift setup codex # Codex CLI\n codesift setup gemini # Gemini CLI\n codesift setup antigravity # Google Antigravity\n codesift setup all # All platforms\n'"
|
|
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,16 @@ The `repo` param is optional — it auto-resolves from CWD. Just call CodeSift t
|
|
|
21
21
|
|
|
22
22
|
## Tool Discovery
|
|
23
23
|
|
|
24
|
-
**
|
|
24
|
+
**146 MCP tools total** (51 core visible + 95 discoverable).
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
51 core tools appear in ListTools. The remaining 95 niche tools are discovered on demand:
|
|
27
27
|
|
|
28
|
-
- `
|
|
28
|
+
- `plan_turn(query="find dead code in auth")` — natural-language router: ranked tool/symbol/file recommendations with auto-reveal of hidden tools (preferred entry point at start of a task)
|
|
29
|
+
- `discover_tools(query="dead code")` — keyword search across all 146 tools
|
|
29
30
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
30
31
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
31
32
|
|
|
32
|
-
Core tools (
|
|
33
|
+
Core tools (51) always visible — includes search, symbols, context, analysis, architecture, conversations, meta, and `plan_turn`. Use `plan_turn` when you don't know which tool fits the task. Use `discover_tools` for direct keyword search over 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
34
|
|
|
34
35
|
## Tool Mapping
|
|
35
36
|
|
|
@@ -73,6 +74,56 @@ Use this table to pick the right tool for each task:
|
|
|
73
74
|
| index conversations | `index_conversations` |
|
|
74
75
|
| structural diff | `diff_outline(since=)` |
|
|
75
76
|
| what changed | `changed_symbols(since=)` |
|
|
77
|
+
| start of task / unclear where to begin | `plan_turn(query=...)` |
|
|
78
|
+
| React component tree | `trace_component_tree` |
|
|
79
|
+
| React hook analysis | `analyze_hooks` |
|
|
80
|
+
| React re-render analysis | `analyze_renders` |
|
|
81
|
+
| React context graph | `analyze_context_graph` |
|
|
82
|
+
| find components | `search_symbols(kind="component")` |
|
|
83
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
84
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
85
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
86
|
+
| Astro route map | `astro_route_map` |
|
|
87
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
88
|
+
| Next.js full audit | `framework_audit` |
|
|
89
|
+
| route map + rendering | `nextjs_route_map` |
|
|
90
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
91
|
+
| server actions security | `framework_audit(checks=["server-actions"])` |
|
|
92
|
+
| API contract extraction | `framework_audit(checks=["api-contract"])` |
|
|
93
|
+
| client boundary / bundle | `framework_audit(checks=["boundary"])` |
|
|
94
|
+
| broken internal links | `framework_audit(checks=["link-integrity"])` |
|
|
95
|
+
| data fetch waterfalls | `framework_audit(checks=["data-flow"])` |
|
|
96
|
+
| middleware coverage gaps | `framework_audit(checks=["middleware"])` |
|
|
97
|
+
| server vs client classify | `framework_audit(checks=["components"])` |
|
|
98
|
+
| Python project health audit | `python_audit` (compound: 8 checks, health score) |
|
|
99
|
+
| Django/Flask/FastAPI routes | `trace_route(path="/api/users")` |
|
|
100
|
+
| Python anti-patterns | `search_patterns("mutable-default"\|"bare-except"\|"eval-exec"\|"shell-true"\|"pickle-load"\|"n-plus-one-django")` |
|
|
101
|
+
| async/await pitfalls | `analyze_async_correctness` (blocking requests/sleep, sync ORM in async) |
|
|
102
|
+
| FastAPI Depends() graph | `trace_fastapi_depends` (Security, scopes, yield deps) |
|
|
103
|
+
| Pydantic model schemas | `get_pydantic_models(output_format="mermaid")` |
|
|
104
|
+
| Django/SQLAlchemy ORM graph | `get_model_graph` |
|
|
105
|
+
| Django settings security audit | `analyze_django_settings` (15 checks) |
|
|
106
|
+
| pytest fixture graph | `get_test_fixtures` (conftest hierarchy, scope, autouse) |
|
|
107
|
+
| Celery task + canvas tracing | `python_audit(checks=["celery"])` |
|
|
108
|
+
| Django signals / Celery / middleware | `find_framework_wiring` |
|
|
109
|
+
| Python cross-module callers | `find_python_callers(target_name=)` |
|
|
110
|
+
| Python circular imports | `python_audit(checks=["circular-imports"])` |
|
|
111
|
+
| run Ruff on Python | `run_ruff(categories=["B","PERF","SIM","S"])` |
|
|
112
|
+
| run mypy / pyright | `run_mypy` or `run_pyright` |
|
|
113
|
+
| parse pyproject.toml | `parse_pyproject` |
|
|
114
|
+
| Python dep freshness + CVEs | `analyze_python_deps(check_pypi=true, check_vulns=true)` |
|
|
115
|
+
| Hono full overview | `analyze_hono_app` |
|
|
116
|
+
| Hono middleware chain (route/scope/app-wide modes) | `trace_middleware_chain` |
|
|
117
|
+
| Hono conditional middleware (applied_when) | `trace_middleware_chain(only_conditional=true)` |
|
|
118
|
+
| Hono inline handler analysis | `analyze_inline_handler` |
|
|
119
|
+
| Hono context variables | `trace_context_flow` |
|
|
120
|
+
| Hono API contract / OpenAPI | `extract_api_contract` |
|
|
121
|
+
| Hono response types (Issue #4270) | `extract_response_types` |
|
|
122
|
+
| Hono RPC types / Issue #3869 | `trace_rpc_types` |
|
|
123
|
+
| Hono security + env-regression audit / #3587 | `audit_hono_security` |
|
|
124
|
+
| Hono architecture modules / #4121 | `detect_hono_modules` |
|
|
125
|
+
| Hono dead routes | `find_dead_hono_routes` |
|
|
126
|
+
| Hono route visualization | `visualize_hono_routes` |
|
|
76
127
|
|
|
77
128
|
## When to Use (Situational Triggers)
|
|
78
129
|
|
|
@@ -103,6 +154,21 @@ Use this table to pick the right tool for each task:
|
|
|
103
154
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
104
155
|
| code audit | `search_patterns("empty-catch")` |
|
|
105
156
|
| past decisions | `find_conversations_for_symbol` |
|
|
157
|
+
| starting a task, want tool recommendations | `plan_turn(query=...)` |
|
|
158
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
159
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
160
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
161
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
162
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
163
|
+
| security review (Next.js) | `framework_audit(checks=["server-actions"])` |
|
|
164
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
165
|
+
| bundle size concerns | `framework_audit(checks=["boundary"])` |
|
|
166
|
+
| new Hono project (first look) | `analyze_hono_app` |
|
|
167
|
+
| Hono middleware order bug | `trace_middleware_chain` |
|
|
168
|
+
| Hono auth false positive (blog pattern) | `trace_middleware_chain(only_conditional=true)` |
|
|
169
|
+
| Hono handler introspection | `analyze_inline_handler` |
|
|
170
|
+
| Hono RPC compile time slow | `trace_rpc_types` (flags Issue #3869 slow pattern) |
|
|
171
|
+
| Hono enterprise architecture | `detect_hono_modules` (Issue #4121) |
|
|
106
172
|
|
|
107
173
|
## Key Parameters
|
|
108
174
|
|
|
@@ -110,7 +176,7 @@ Use this table to pick the right tool for each task:
|
|
|
110
176
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
111
177
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
112
178
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
113
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
179
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
114
180
|
- `include_source=true` — include source code in results
|
|
115
181
|
|
|
116
182
|
### search_text
|
package/rules/codesift.mdc
CHANGED
|
@@ -15,15 +15,16 @@ For multi-repo sessions, call `list_repos()` to discover available repos.
|
|
|
15
15
|
|
|
16
16
|
## Tool Discovery
|
|
17
17
|
|
|
18
|
-
**
|
|
18
|
+
**146 MCP tools total** (51 core visible + 95 discoverable).
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
51 core tools appear in ListTools. The remaining 95 niche tools are discovered on demand:
|
|
21
21
|
|
|
22
|
-
- `
|
|
22
|
+
- `plan_turn(query="...")` — natural-language router with auto-reveal (preferred start-of-task entry point)
|
|
23
|
+
- `discover_tools(query="dead code")` — keyword search across all 146 tools
|
|
23
24
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
24
25
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
25
26
|
|
|
26
|
-
Core tools (
|
|
27
|
+
Core tools (51) always visible — includes search, symbols, context, analysis, architecture, conversations, meta, and `plan_turn`. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, etc.
|
|
27
28
|
|
|
28
29
|
## Tool Mapping
|
|
29
30
|
|
|
@@ -67,6 +68,56 @@ Use this table to pick the right tool for each task:
|
|
|
67
68
|
| index conversations | `index_conversations` |
|
|
68
69
|
| structural diff | `diff_outline(since=)` |
|
|
69
70
|
| what changed | `changed_symbols(since=)` |
|
|
71
|
+
| start of task / unclear where to begin | `plan_turn(query=...)` |
|
|
72
|
+
| React component tree | `trace_component_tree` |
|
|
73
|
+
| React hook analysis | `analyze_hooks` |
|
|
74
|
+
| React re-render analysis | `analyze_renders` |
|
|
75
|
+
| React context graph | `analyze_context_graph` |
|
|
76
|
+
| find components | `search_symbols(kind="component")` |
|
|
77
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
78
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
79
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
80
|
+
| Astro route map | `astro_route_map` |
|
|
81
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
82
|
+
| Next.js full audit | `framework_audit` |
|
|
83
|
+
| route map + rendering | `nextjs_route_map` |
|
|
84
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
85
|
+
| server actions security | `framework_audit(checks=["server-actions"])` |
|
|
86
|
+
| API contract extraction | `framework_audit(checks=["api-contract"])` |
|
|
87
|
+
| client boundary / bundle | `framework_audit(checks=["boundary"])` |
|
|
88
|
+
| broken internal links | `framework_audit(checks=["link-integrity"])` |
|
|
89
|
+
| data fetch waterfalls | `framework_audit(checks=["data-flow"])` |
|
|
90
|
+
| middleware coverage gaps | `framework_audit(checks=["middleware"])` |
|
|
91
|
+
| server vs client classify | `framework_audit(checks=["components"])` |
|
|
92
|
+
| Python project health audit | `python_audit` (compound: 8 checks, health score) |
|
|
93
|
+
| Django/Flask/FastAPI routes | `trace_route(path="/api/users")` |
|
|
94
|
+
| Python anti-patterns | `search_patterns("mutable-default"\|"bare-except"\|"eval-exec"\|"shell-true"\|"pickle-load"\|"n-plus-one-django")` |
|
|
95
|
+
| async/await pitfalls | `analyze_async_correctness` (blocking requests/sleep, sync ORM in async) |
|
|
96
|
+
| FastAPI Depends() graph | `trace_fastapi_depends` (Security, scopes, yield deps) |
|
|
97
|
+
| Pydantic model schemas | `get_pydantic_models(output_format="mermaid")` |
|
|
98
|
+
| Django/SQLAlchemy ORM graph | `get_model_graph` |
|
|
99
|
+
| Django settings security audit | `analyze_django_settings` (15 checks) |
|
|
100
|
+
| pytest fixture graph | `get_test_fixtures` (conftest hierarchy, scope, autouse) |
|
|
101
|
+
| Celery task + canvas tracing | `python_audit(checks=["celery"])` |
|
|
102
|
+
| Django signals / Celery / middleware | `find_framework_wiring` |
|
|
103
|
+
| Python cross-module callers | `find_python_callers(target_name=)` |
|
|
104
|
+
| Python circular imports | `python_audit(checks=["circular-imports"])` |
|
|
105
|
+
| run Ruff on Python | `run_ruff(categories=["B","PERF","SIM","S"])` |
|
|
106
|
+
| run mypy / pyright | `run_mypy` or `run_pyright` |
|
|
107
|
+
| parse pyproject.toml | `parse_pyproject` |
|
|
108
|
+
| Python dep freshness + CVEs | `analyze_python_deps(check_pypi=true, check_vulns=true)` |
|
|
109
|
+
| Hono full overview | `analyze_hono_app` |
|
|
110
|
+
| Hono middleware chain (route/scope/app-wide modes) | `trace_middleware_chain` |
|
|
111
|
+
| Hono conditional middleware (applied_when) | `trace_middleware_chain(only_conditional=true)` |
|
|
112
|
+
| Hono inline handler analysis | `analyze_inline_handler` |
|
|
113
|
+
| Hono context variables | `trace_context_flow` |
|
|
114
|
+
| Hono API contract / OpenAPI | `extract_api_contract` |
|
|
115
|
+
| Hono response types (Issue #4270) | `extract_response_types` |
|
|
116
|
+
| Hono RPC types / Issue #3869 | `trace_rpc_types` |
|
|
117
|
+
| Hono security + env-regression audit / #3587 | `audit_hono_security` |
|
|
118
|
+
| Hono architecture modules / #4121 | `detect_hono_modules` |
|
|
119
|
+
| Hono dead routes | `find_dead_hono_routes` |
|
|
120
|
+
| Hono route visualization | `visualize_hono_routes` |
|
|
70
121
|
|
|
71
122
|
## When to Use (Situational Triggers)
|
|
72
123
|
|
|
@@ -97,6 +148,21 @@ Use this table to pick the right tool for each task:
|
|
|
97
148
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
98
149
|
| code audit | `search_patterns("empty-catch")` |
|
|
99
150
|
| past decisions | `find_conversations_for_symbol` |
|
|
151
|
+
| starting a task, want tool recommendations | `plan_turn(query=...)` |
|
|
152
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
153
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
154
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
155
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
156
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
157
|
+
| security review (Next.js) | `framework_audit(checks=["server-actions"])` |
|
|
158
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
159
|
+
| bundle size concerns | `framework_audit(checks=["boundary"])` |
|
|
160
|
+
| new Hono project (first look) | `analyze_hono_app` |
|
|
161
|
+
| Hono middleware order bug | `trace_middleware_chain` |
|
|
162
|
+
| Hono auth false positive (blog pattern) | `trace_middleware_chain(only_conditional=true)` |
|
|
163
|
+
| Hono handler introspection | `analyze_inline_handler` |
|
|
164
|
+
| Hono RPC compile time slow | `trace_rpc_types` (flags Issue #3869 slow pattern) |
|
|
165
|
+
| Hono enterprise architecture | `detect_hono_modules` (Issue #4121) |
|
|
100
166
|
|
|
101
167
|
## Key Parameters
|
|
102
168
|
|
|
@@ -104,7 +170,7 @@ Use this table to pick the right tool for each task:
|
|
|
104
170
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
105
171
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
106
172
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
107
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
173
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
108
174
|
- `include_source=true` — include source code in results
|
|
109
175
|
|
|
110
176
|
### search_text
|
package/rules/codex.md
CHANGED
|
@@ -10,15 +10,16 @@ For multi-repo sessions, call `list_repos()` to discover available repos.
|
|
|
10
10
|
|
|
11
11
|
## Tool Discovery
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**146 MCP tools total** (51 core visible + 95 discoverable).
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
51 core tools appear in ListTools. The remaining 95 niche tools are discovered on demand:
|
|
16
16
|
|
|
17
|
-
- `
|
|
17
|
+
- `plan_turn(query="...")` — natural-language router with auto-reveal (preferred start-of-task entry point)
|
|
18
|
+
- `discover_tools(query="dead code")` — keyword search across all 146 tools
|
|
18
19
|
- `describe_tools(names=["find_dead_code"])` — get full parameter schema
|
|
19
20
|
- `describe_tools(names=["find_dead_code"], reveal=true)` — also reveal in ListTools
|
|
20
21
|
|
|
21
|
-
Core tools (
|
|
22
|
+
Core tools (51) always visible — includes search, symbols, context, analysis, architecture, conversations, meta, and `plan_turn`. Use `discover_tools` for niche tools like `classify_roles`, `find_unused_imports`, `rename_symbol`, `ast_query`, etc.
|
|
22
23
|
|
|
23
24
|
## Tool Mapping
|
|
24
25
|
|
|
@@ -62,6 +63,56 @@ Use this table to pick the right tool for each task:
|
|
|
62
63
|
| index conversations | `index_conversations` |
|
|
63
64
|
| structural diff | `diff_outline(since=)` |
|
|
64
65
|
| what changed | `changed_symbols(since=)` |
|
|
66
|
+
| start of task / unclear where to begin | `plan_turn(query=...)` |
|
|
67
|
+
| React component tree | `trace_component_tree` |
|
|
68
|
+
| React hook analysis | `analyze_hooks` |
|
|
69
|
+
| React re-render analysis | `analyze_renders` |
|
|
70
|
+
| React context graph | `analyze_context_graph` |
|
|
71
|
+
| find components | `search_symbols(kind="component")` |
|
|
72
|
+
| find hooks | `search_symbols(kind="hook")` |
|
|
73
|
+
| Astro islands/hydration | `astro_analyze_islands` |
|
|
74
|
+
| Astro hydration audit | `astro_hydration_audit` |
|
|
75
|
+
| Astro route map | `astro_route_map` |
|
|
76
|
+
| Astro config analysis | `astro_config_analyze` |
|
|
77
|
+
| Next.js full audit | `framework_audit` |
|
|
78
|
+
| route map + rendering | `nextjs_route_map` |
|
|
79
|
+
| SEO / metadata gaps | `nextjs_metadata_audit` |
|
|
80
|
+
| server actions security | `framework_audit(checks=["server-actions"])` |
|
|
81
|
+
| API contract extraction | `framework_audit(checks=["api-contract"])` |
|
|
82
|
+
| client boundary / bundle | `framework_audit(checks=["boundary"])` |
|
|
83
|
+
| broken internal links | `framework_audit(checks=["link-integrity"])` |
|
|
84
|
+
| data fetch waterfalls | `framework_audit(checks=["data-flow"])` |
|
|
85
|
+
| middleware coverage gaps | `framework_audit(checks=["middleware"])` |
|
|
86
|
+
| server vs client classify | `framework_audit(checks=["components"])` |
|
|
87
|
+
| Python project health audit | `python_audit` (compound: 8 checks, health score) |
|
|
88
|
+
| Django/Flask/FastAPI routes | `trace_route(path="/api/users")` |
|
|
89
|
+
| Python anti-patterns | `search_patterns("mutable-default"\|"bare-except"\|"eval-exec"\|"shell-true"\|"pickle-load"\|"n-plus-one-django")` |
|
|
90
|
+
| async/await pitfalls | `analyze_async_correctness` (blocking requests/sleep, sync ORM in async) |
|
|
91
|
+
| FastAPI Depends() graph | `trace_fastapi_depends` (Security, scopes, yield deps) |
|
|
92
|
+
| Pydantic model schemas | `get_pydantic_models(output_format="mermaid")` |
|
|
93
|
+
| Django/SQLAlchemy ORM graph | `get_model_graph` |
|
|
94
|
+
| Django settings security audit | `analyze_django_settings` (15 checks) |
|
|
95
|
+
| pytest fixture graph | `get_test_fixtures` (conftest hierarchy, scope, autouse) |
|
|
96
|
+
| Celery task + canvas tracing | `python_audit(checks=["celery"])` |
|
|
97
|
+
| Django signals / Celery / middleware | `find_framework_wiring` |
|
|
98
|
+
| Python cross-module callers | `find_python_callers(target_name=)` |
|
|
99
|
+
| Python circular imports | `python_audit(checks=["circular-imports"])` |
|
|
100
|
+
| run Ruff on Python | `run_ruff(categories=["B","PERF","SIM","S"])` |
|
|
101
|
+
| run mypy / pyright | `run_mypy` or `run_pyright` |
|
|
102
|
+
| parse pyproject.toml | `parse_pyproject` |
|
|
103
|
+
| Python dep freshness + CVEs | `analyze_python_deps(check_pypi=true, check_vulns=true)` |
|
|
104
|
+
| Hono full overview | `analyze_hono_app` |
|
|
105
|
+
| Hono middleware chain (route/scope/app-wide modes) | `trace_middleware_chain` |
|
|
106
|
+
| Hono conditional middleware (applied_when) | `trace_middleware_chain(only_conditional=true)` |
|
|
107
|
+
| Hono inline handler analysis | `analyze_inline_handler` |
|
|
108
|
+
| Hono context variables | `trace_context_flow` |
|
|
109
|
+
| Hono API contract / OpenAPI | `extract_api_contract` |
|
|
110
|
+
| Hono response types (Issue #4270) | `extract_response_types` |
|
|
111
|
+
| Hono RPC types / Issue #3869 | `trace_rpc_types` |
|
|
112
|
+
| Hono security + env-regression audit / #3587 | `audit_hono_security` |
|
|
113
|
+
| Hono architecture modules / #4121 | `detect_hono_modules` |
|
|
114
|
+
| Hono dead routes | `find_dead_hono_routes` |
|
|
115
|
+
| Hono route visualization | `visualize_hono_routes` |
|
|
65
116
|
|
|
66
117
|
## When to Use (Situational Triggers)
|
|
67
118
|
|
|
@@ -92,6 +143,21 @@ Use this table to pick the right tool for each task:
|
|
|
92
143
|
| security audit | `scan_secrets(min_confidence="high")` |
|
|
93
144
|
| code audit | `search_patterns("empty-catch")` |
|
|
94
145
|
| past decisions | `find_conversations_for_symbol` |
|
|
146
|
+
| starting a task, want tool recommendations | `plan_turn(query=...)` |
|
|
147
|
+
| React codebase | `trace_component_tree("App")` + `analyze_hooks` |
|
|
148
|
+
| React anti-patterns | `search_patterns("hook-in-condition")` |
|
|
149
|
+
| React call graph (clean) | `trace_call_chain(filter_react_hooks=true)` |
|
|
150
|
+
| new Next.js project (first look) | `framework_audit` |
|
|
151
|
+
| SEO audit / metadata review | `nextjs_metadata_audit` |
|
|
152
|
+
| security review (Next.js) | `framework_audit(checks=["server-actions"])` |
|
|
153
|
+
| rendering strategy check | `nextjs_route_map` |
|
|
154
|
+
| bundle size concerns | `framework_audit(checks=["boundary"])` |
|
|
155
|
+
| new Hono project (first look) | `analyze_hono_app` |
|
|
156
|
+
| Hono middleware order bug | `trace_middleware_chain` |
|
|
157
|
+
| Hono auth false positive (blog pattern) | `trace_middleware_chain(only_conditional=true)` |
|
|
158
|
+
| Hono handler introspection | `analyze_inline_handler` |
|
|
159
|
+
| Hono RPC compile time slow | `trace_rpc_types` (flags Issue #3869 slow pattern) |
|
|
160
|
+
| Hono enterprise architecture | `detect_hono_modules` (Issue #4121) |
|
|
95
161
|
|
|
96
162
|
## Key Parameters
|
|
97
163
|
|
|
@@ -99,7 +165,7 @@ Use this table to pick the right tool for each task:
|
|
|
99
165
|
- `detail_level="compact"` — locations only (~15 tok/result vs ~150 default)
|
|
100
166
|
- `token_budget=N` — cap output instead of guessing `top_k`
|
|
101
167
|
- `file_pattern=` — always pass when scope is known (e.g. `"*.ts"`, `"src/tools/"`)
|
|
102
|
-
- `kind=` — filter by type: `function`, `class`, `type`, `interface`
|
|
168
|
+
- `kind=` — filter by type: `function`, `class`, `type`, `interface`, `component`, `hook`
|
|
103
169
|
- `include_source=true` — include source code in results
|
|
104
170
|
|
|
105
171
|
### search_text
|