codesift-mcp 0.13.1 → 0.15.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 +5 -1
- package/dist/cli/commands-admin.d.ts +18 -0
- package/dist/cli/commands-admin.d.ts.map +1 -0
- package/dist/cli/commands-admin.js +187 -0
- package/dist/cli/commands-admin.js.map +1 -0
- package/dist/cli/commands-daemon.d.ts +42 -0
- package/dist/cli/commands-daemon.d.ts.map +1 -0
- package/dist/cli/commands-daemon.js +163 -0
- package/dist/cli/commands-daemon.js.map +1 -0
- package/dist/cli/commands-index.d.ts +12 -0
- package/dist/cli/commands-index.d.ts.map +1 -0
- package/dist/cli/commands-index.js +133 -0
- package/dist/cli/commands-index.js.map +1 -0
- package/dist/cli/commands-maintenance.d.ts +12 -0
- package/dist/cli/commands-maintenance.d.ts.map +1 -0
- package/dist/cli/commands-maintenance.js +409 -0
- package/dist/cli/commands-maintenance.js.map +1 -0
- package/dist/cli/commands-query.d.ts +21 -0
- package/dist/cli/commands-query.d.ts.map +1 -0
- package/dist/cli/commands-query.js +270 -0
- package/dist/cli/commands-query.js.map +1 -0
- package/dist/cli/commands.d.ts +2 -36
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +8 -854
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/embed-child.js +13 -2
- package/dist/cli/embed-child.js.map +1 -1
- package/dist/cli/hooks/pre-tool-use.d.ts +1 -0
- package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/cli/hooks/pre-tool-use.js +11 -2
- package/dist/cli/hooks/pre-tool-use.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/formatters-core.d.ts +7 -0
- package/dist/formatters-core.d.ts.map +1 -1
- package/dist/formatters-core.js +14 -3
- package/dist/formatters-core.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +5 -2
- package/dist/instructions.js.map +1 -1
- package/dist/parser/extractors/hono-inline-analyzer.js +2 -2
- package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -1
- package/dist/parser/extractors/php-class-metadata.d.ts +10 -0
- package/dist/parser/extractors/php-class-metadata.d.ts.map +1 -0
- package/dist/parser/extractors/php-class-metadata.js +65 -0
- package/dist/parser/extractors/php-class-metadata.js.map +1 -0
- package/dist/parser/extractors/php-doc.d.ts +13 -0
- package/dist/parser/extractors/php-doc.d.ts.map +1 -0
- package/dist/parser/extractors/php-doc.js +39 -0
- package/dist/parser/extractors/php-doc.js.map +1 -0
- package/dist/parser/extractors/php-node-metadata.d.ts +26 -0
- package/dist/parser/extractors/php-node-metadata.d.ts.map +1 -0
- package/dist/parser/extractors/php-node-metadata.js +132 -0
- package/dist/parser/extractors/php-node-metadata.js.map +1 -0
- package/dist/parser/extractors/php-symbol-builders.d.ts +13 -0
- package/dist/parser/extractors/php-symbol-builders.d.ts.map +1 -0
- package/dist/parser/extractors/php-symbol-builders.js +58 -0
- package/dist/parser/extractors/php-symbol-builders.js.map +1 -0
- package/dist/parser/extractors/php-walker.d.ts +4 -0
- package/dist/parser/extractors/php-walker.d.ts.map +1 -0
- package/dist/parser/extractors/php-walker.js +238 -0
- package/dist/parser/extractors/php-walker.js.map +1 -0
- package/dist/parser/extractors/php.d.ts +2 -33
- package/dist/parser/extractors/php.d.ts.map +1 -1
- package/dist/parser/extractors/php.js +2 -747
- package/dist/parser/extractors/php.js.map +1 -1
- package/dist/register-tool-groups/core/search.d.ts.map +1 -1
- package/dist/register-tool-groups/core/search.js +14 -0
- package/dist/register-tool-groups/core/search.js.map +1 -1
- package/dist/register-tool-groups/core/symbols.d.ts.map +1 -1
- package/dist/register-tool-groups/core/symbols.js +50 -5
- package/dist/register-tool-groups/core/symbols.js.map +1 -1
- package/dist/register-tool-loaders.d.ts +11 -11
- package/dist/register-tool-loaders.d.ts.map +1 -1
- package/dist/register-tools/runtime.d.ts +11 -0
- package/dist/register-tools/runtime.d.ts.map +1 -1
- package/dist/register-tools/runtime.js +40 -0
- package/dist/register-tools/runtime.js.map +1 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +5 -1
- package/dist/register-tools.js.map +1 -1
- package/dist/retrieval/semantic-handlers.d.ts.map +1 -1
- package/dist/retrieval/semantic-handlers.js +10 -3
- package/dist/retrieval/semantic-handlers.js.map +1 -1
- package/dist/search/semantic.d.ts +2 -0
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +41 -9
- package/dist/search/semantic.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +54 -2
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +21 -0
- package/dist/storage/_shared.d.ts.map +1 -1
- package/dist/storage/_shared.js +36 -0
- package/dist/storage/_shared.js.map +1 -1
- package/dist/storage/chunk-store.d.ts +14 -2
- package/dist/storage/chunk-store.d.ts.map +1 -1
- package/dist/storage/chunk-store.js +214 -34
- package/dist/storage/chunk-store.js.map +1 -1
- package/dist/storage/embedding-store.d.ts +0 -12
- package/dist/storage/embedding-store.d.ts.map +1 -1
- package/dist/storage/embedding-store.js +69 -9
- package/dist/storage/embedding-store.js.map +1 -1
- package/dist/storage/index-cache.d.ts +12 -0
- package/dist/storage/index-cache.d.ts.map +1 -0
- package/dist/storage/index-cache.js +89 -0
- package/dist/storage/index-cache.js.map +1 -0
- package/dist/storage/index-footprint.d.ts +12 -0
- package/dist/storage/index-footprint.d.ts.map +1 -0
- package/dist/storage/index-footprint.js +41 -0
- package/dist/storage/index-footprint.js.map +1 -0
- package/dist/storage/index-json-mutations.d.ts +11 -0
- package/dist/storage/index-json-mutations.d.ts.map +1 -0
- package/dist/storage/index-json-mutations.js +93 -0
- package/dist/storage/index-json-mutations.js.map +1 -0
- package/dist/storage/index-migration.d.ts +22 -0
- package/dist/storage/index-migration.d.ts.map +1 -0
- package/dist/storage/index-migration.js +80 -0
- package/dist/storage/index-migration.js.map +1 -0
- package/dist/storage/index-store.d.ts +26 -55
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +82 -350
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/index-version.d.ts +39 -0
- package/dist/storage/index-version.d.ts.map +1 -0
- package/dist/storage/index-version.js +87 -0
- package/dist/storage/index-version.js.map +1 -0
- package/dist/storage/registry.d.ts +9 -1
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +233 -9
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/shared-embedding-cache.d.ts +23 -3
- package/dist/storage/shared-embedding-cache.d.ts.map +1 -1
- package/dist/storage/shared-embedding-cache.js +300 -45
- package/dist/storage/shared-embedding-cache.js.map +1 -1
- package/dist/storage/sqlite/accessors.d.ts +34 -0
- package/dist/storage/sqlite/accessors.d.ts.map +1 -0
- package/dist/storage/sqlite/accessors.js +178 -0
- package/dist/storage/sqlite/accessors.js.map +1 -0
- package/dist/storage/sqlite/connection.d.ts +43 -0
- package/dist/storage/sqlite/connection.d.ts.map +1 -0
- package/dist/storage/sqlite/connection.js +241 -0
- package/dist/storage/sqlite/connection.js.map +1 -0
- package/dist/storage/sqlite/errors.d.ts +38 -0
- package/dist/storage/sqlite/errors.d.ts.map +1 -0
- package/dist/storage/sqlite/errors.js +150 -0
- package/dist/storage/sqlite/errors.js.map +1 -0
- package/dist/storage/sqlite/index-io.d.ts +49 -0
- package/dist/storage/sqlite/index-io.d.ts.map +1 -0
- package/dist/storage/sqlite/index-io.js +268 -0
- package/dist/storage/sqlite/index-io.js.map +1 -0
- package/dist/storage/sqlite/meta.d.ts +41 -0
- package/dist/storage/sqlite/meta.d.ts.map +1 -0
- package/dist/storage/sqlite/meta.js +28 -0
- package/dist/storage/sqlite/meta.js.map +1 -0
- package/dist/storage/sqlite/rows.d.ts +64 -0
- package/dist/storage/sqlite/rows.d.ts.map +1 -0
- package/dist/storage/sqlite/rows.js +186 -0
- package/dist/storage/sqlite/rows.js.map +1 -0
- package/dist/storage/sqlite/runtime.d.ts +6 -0
- package/dist/storage/sqlite/runtime.d.ts.map +1 -0
- package/dist/storage/sqlite/runtime.js +31 -0
- package/dist/storage/sqlite/runtime.js.map +1 -0
- package/dist/storage/sqlite/schema.d.ts +34 -0
- package/dist/storage/sqlite/schema.d.ts.map +1 -0
- package/dist/storage/sqlite/schema.js +98 -0
- package/dist/storage/sqlite/schema.js.map +1 -0
- package/dist/storage/sqlite-index-store.d.ts +40 -80
- package/dist/storage/sqlite-index-store.d.ts.map +1 -1
- package/dist/storage/sqlite-index-store.js +32 -577
- package/dist/storage/sqlite-index-store.js.map +1 -1
- package/dist/storage/telemetry/config.d.ts.map +1 -1
- package/dist/storage/telemetry/config.js +15 -3
- package/dist/storage/telemetry/config.js.map +1 -1
- package/dist/storage/telemetry/payload.d.ts.map +1 -1
- package/dist/storage/telemetry/payload.js +4 -1
- package/dist/storage/telemetry/payload.js.map +1 -1
- package/dist/storage/telemetry/retro-aggregator.d.ts +48 -0
- package/dist/storage/telemetry/retro-aggregator.d.ts.map +1 -0
- package/dist/storage/telemetry/retro-aggregator.js +221 -0
- package/dist/storage/telemetry/retro-aggregator.js.map +1 -0
- package/dist/storage/telemetry/sanitizer.d.ts +46 -0
- package/dist/storage/telemetry/sanitizer.d.ts.map +1 -1
- package/dist/storage/telemetry/sanitizer.js +25 -0
- package/dist/storage/telemetry/sanitizer.js.map +1 -1
- package/dist/storage/telemetry/uploader.d.ts +3 -1
- package/dist/storage/telemetry/uploader.d.ts.map +1 -1
- package/dist/storage/telemetry/uploader.js +161 -18
- package/dist/storage/telemetry/uploader.js.map +1 -1
- package/dist/storage/workspace-resolver.js +1 -1
- package/dist/storage/workspace-resolver.js.map +1 -1
- package/dist/tools/cross-repo-contract-adapters.d.ts +39 -0
- package/dist/tools/cross-repo-contract-adapters.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-adapters.js +70 -0
- package/dist/tools/cross-repo-contract-adapters.js.map +1 -0
- package/dist/tools/cross-repo-contract-group.d.ts +17 -0
- package/dist/tools/cross-repo-contract-group.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-group.js +89 -0
- package/dist/tools/cross-repo-contract-group.js.map +1 -0
- package/dist/tools/cross-repo-contract-matcher.d.ts +24 -0
- package/dist/tools/cross-repo-contract-matcher.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-matcher.js +134 -0
- package/dist/tools/cross-repo-contract-matcher.js.map +1 -0
- package/dist/tools/cross-repo-contract-resolver.d.ts +9 -0
- package/dist/tools/cross-repo-contract-resolver.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-resolver.js +86 -0
- package/dist/tools/cross-repo-contract-resolver.js.map +1 -0
- package/dist/tools/cross-repo-contract-tools.d.ts +12 -135
- package/dist/tools/cross-repo-contract-tools.d.ts.map +1 -1
- package/dist/tools/cross-repo-contract-tools.js +8 -589
- package/dist/tools/cross-repo-contract-tools.js.map +1 -1
- package/dist/tools/cross-repo-contract-types.d.ts +30 -0
- package/dist/tools/cross-repo-contract-types.d.ts.map +1 -0
- package/dist/tools/cross-repo-contract-types.js +3 -0
- package/dist/tools/cross-repo-contract-types.js.map +1 -0
- package/dist/tools/cross-repo-outbound-calls.d.ts +28 -0
- package/dist/tools/cross-repo-outbound-calls.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-calls.js +347 -0
- package/dist/tools/cross-repo-outbound-calls.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.js +2 -0
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.js.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer/types.d.ts +2 -0
- package/dist/tools/cross-repo-outbound-lexer/types.d.ts.map +1 -1
- package/dist/tools/index-tools/file-indexer.js +3 -3
- package/dist/tools/index-tools/file-indexer.js.map +1 -1
- package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
- package/dist/tools/index-tools/folder-indexer.js +51 -3
- package/dist/tools/index-tools/folder-indexer.js.map +1 -1
- package/dist/tools/index-tools/parse.d.ts +12 -3
- package/dist/tools/index-tools/parse.d.ts.map +1 -1
- package/dist/tools/index-tools/parse.js +33 -8
- package/dist/tools/index-tools/parse.js.map +1 -1
- package/dist/tools/index-tools/registry.d.ts +35 -0
- package/dist/tools/index-tools/registry.d.ts.map +1 -1
- package/dist/tools/index-tools/registry.js +167 -3
- package/dist/tools/index-tools/registry.js.map +1 -1
- package/dist/tools/index-tools/state.d.ts +31 -0
- package/dist/tools/index-tools/state.d.ts.map +1 -1
- package/dist/tools/index-tools/state.js +53 -0
- package/dist/tools/index-tools/state.js.map +1 -1
- package/dist/tools/index-tools/types.d.ts +9 -0
- package/dist/tools/index-tools/types.d.ts.map +1 -1
- package/dist/tools/index-tools/watcher.js +3 -3
- package/dist/tools/index-tools/watcher.js.map +1 -1
- package/dist/tools/index-tools/worktree-seed.d.ts +44 -0
- package/dist/tools/index-tools/worktree-seed.d.ts.map +1 -0
- package/dist/tools/index-tools/worktree-seed.js +302 -0
- package/dist/tools/index-tools/worktree-seed.js.map +1 -0
- package/dist/tools/index-tools.d.ts +2 -2
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +5 -3
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/nest-ext-tools/graphql.d.ts +17 -0
- package/dist/tools/nest-ext-tools/graphql.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/graphql.js +54 -0
- package/dist/tools/nest-ext-tools/graphql.js.map +1 -0
- package/dist/tools/nest-ext-tools/microservice.d.ts +17 -0
- package/dist/tools/nest-ext-tools/microservice.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/microservice.js +51 -0
- package/dist/tools/nest-ext-tools/microservice.js.map +1 -0
- package/dist/tools/nest-ext-tools/openapi.d.ts +81 -0
- package/dist/tools/nest-ext-tools/openapi.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/openapi.js +254 -0
- package/dist/tools/nest-ext-tools/openapi.js.map +1 -0
- package/dist/tools/nest-ext-tools/queue.d.ts +27 -0
- package/dist/tools/nest-ext-tools/queue.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/queue.js +95 -0
- package/dist/tools/nest-ext-tools/queue.js.map +1 -0
- package/dist/tools/nest-ext-tools/schedule.d.ts +19 -0
- package/dist/tools/nest-ext-tools/schedule.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/schedule.js +89 -0
- package/dist/tools/nest-ext-tools/schedule.js.map +1 -0
- package/dist/tools/nest-ext-tools/scope.d.ts +19 -0
- package/dist/tools/nest-ext-tools/scope.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/scope.js +151 -0
- package/dist/tools/nest-ext-tools/scope.js.map +1 -0
- package/dist/tools/nest-ext-tools/shared.d.ts +33 -0
- package/dist/tools/nest-ext-tools/shared.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/shared.js +279 -0
- package/dist/tools/nest-ext-tools/shared.js.map +1 -0
- package/dist/tools/nest-ext-tools/typeorm.d.ts +22 -0
- package/dist/tools/nest-ext-tools/typeorm.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/typeorm.js +59 -0
- package/dist/tools/nest-ext-tools/typeorm.js.map +1 -0
- package/dist/tools/nest-ext-tools/websocket.d.ts +21 -0
- package/dist/tools/nest-ext-tools/websocket.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools/websocket.js +70 -0
- package/dist/tools/nest-ext-tools/websocket.js.map +1 -0
- package/dist/tools/nest-ext-tools.d.ts +10 -204
- package/dist/tools/nest-ext-tools.d.ts.map +1 -1
- package/dist/tools/nest-ext-tools.js +10 -749
- package/dist/tools/nest-ext-tools.js.map +1 -1
- package/dist/tools/perf-tools.js +2 -2
- package/dist/tools/plan-turn/stale-index.d.ts +32 -0
- package/dist/tools/plan-turn/stale-index.d.ts.map +1 -1
- package/dist/tools/plan-turn/stale-index.js +42 -5
- package/dist/tools/plan-turn/stale-index.js.map +1 -1
- package/dist/tools/python-audit/checks/dead-code.d.ts +1 -1
- package/dist/tools/python-audit/checks/dead-code.d.ts.map +1 -1
- package/dist/tools/python-constants/constant-match.d.ts +5 -0
- package/dist/tools/python-constants/constant-match.d.ts.map +1 -0
- package/dist/tools/python-constants/constant-match.js +24 -0
- package/dist/tools/python-constants/constant-match.js.map +1 -0
- package/dist/tools/python-constants/file-context.d.ts +5 -0
- package/dist/tools/python-constants/file-context.d.ts.map +1 -0
- package/dist/tools/python-constants/file-context.js +91 -0
- package/dist/tools/python-constants/file-context.js.map +1 -0
- package/dist/tools/python-constants/function-defaults.d.ts +5 -0
- package/dist/tools/python-constants/function-defaults.d.ts.map +1 -0
- package/dist/tools/python-constants/function-defaults.js +98 -0
- package/dist/tools/python-constants/function-defaults.js.map +1 -0
- package/dist/tools/python-constants/model.d.ts +78 -0
- package/dist/tools/python-constants/model.d.ts.map +1 -0
- package/dist/tools/python-constants/model.js +2 -0
- package/dist/tools/python-constants/model.js.map +1 -0
- package/dist/tools/python-constants/syntax.d.ts +22 -0
- package/dist/tools/python-constants/syntax.d.ts.map +1 -0
- package/dist/tools/python-constants/syntax.js +93 -0
- package/dist/tools/python-constants/syntax.js.map +1 -0
- package/dist/tools/python-constants/value-resolver.d.ts +6 -0
- package/dist/tools/python-constants/value-resolver.d.ts.map +1 -0
- package/dist/tools/python-constants/value-resolver.js +320 -0
- package/dist/tools/python-constants/value-resolver.js.map +1 -0
- package/dist/tools/python-constants-tools.d.ts +3 -45
- package/dist/tools/python-constants-tools.d.ts.map +1 -1
- package/dist/tools/python-constants-tools.js +2 -505
- package/dist/tools/python-constants-tools.js.map +1 -1
- package/dist/tools/route-tools/django.d.ts +8 -0
- package/dist/tools/route-tools/django.d.ts.map +1 -0
- package/dist/tools/route-tools/django.js +52 -0
- package/dist/tools/route-tools/django.js.map +1 -0
- package/dist/tools/route-tools/express.d.ts +5 -0
- package/dist/tools/route-tools/express.d.ts.map +1 -0
- package/dist/tools/route-tools/express.js +33 -0
- package/dist/tools/route-tools/express.js.map +1 -0
- package/dist/tools/route-tools/file-sources.d.ts +7 -0
- package/dist/tools/route-tools/file-sources.d.ts.map +1 -0
- package/dist/tools/route-tools/file-sources.js +15 -0
- package/dist/tools/route-tools/file-sources.js.map +1 -0
- package/dist/tools/route-tools/handler-discovery.d.ts +4 -0
- package/dist/tools/route-tools/handler-discovery.d.ts.map +1 -0
- package/dist/tools/route-tools/handler-discovery.js +38 -0
- package/dist/tools/route-tools/handler-discovery.js.map +1 -0
- package/dist/tools/route-tools/hono.d.ts +5 -0
- package/dist/tools/route-tools/hono.d.ts.map +1 -0
- package/dist/tools/route-tools/hono.js +61 -0
- package/dist/tools/route-tools/hono.js.map +1 -0
- package/dist/tools/route-tools/ktor.d.ts +5 -0
- package/dist/tools/route-tools/ktor.d.ts.map +1 -0
- package/dist/tools/route-tools/ktor.js +76 -0
- package/dist/tools/route-tools/ktor.js.map +1 -0
- package/dist/tools/route-tools/laravel.d.ts +5 -0
- package/dist/tools/route-tools/laravel.d.ts.map +1 -0
- package/dist/tools/route-tools/laravel.js +45 -0
- package/dist/tools/route-tools/laravel.js.map +1 -0
- package/dist/tools/route-tools/mermaid-call-chain.d.ts +3 -0
- package/dist/tools/route-tools/mermaid-call-chain.d.ts.map +1 -0
- package/dist/tools/route-tools/mermaid-call-chain.js +50 -0
- package/dist/tools/route-tools/mermaid-call-chain.js.map +1 -0
- package/dist/tools/route-tools/nest.d.ts +5 -0
- package/dist/tools/route-tools/nest.d.ts.map +1 -0
- package/dist/tools/route-tools/nest.js +75 -0
- package/dist/tools/route-tools/nest.js.map +1 -0
- package/dist/tools/route-tools/next-trace.d.ts +4 -0
- package/dist/tools/route-tools/next-trace.d.ts.map +1 -0
- package/dist/tools/route-tools/next-trace.js +48 -0
- package/dist/tools/route-tools/next-trace.js.map +1 -0
- package/dist/tools/route-tools/next.d.ts +7 -0
- package/dist/tools/route-tools/next.d.ts.map +1 -0
- package/dist/tools/route-tools/next.js +77 -0
- package/dist/tools/route-tools/next.js.map +1 -0
- package/dist/tools/route-tools/python-decorators.d.ts +7 -0
- package/dist/tools/route-tools/python-decorators.d.ts.map +1 -0
- package/dist/tools/route-tools/python-decorators.js +53 -0
- package/dist/tools/route-tools/python-decorators.js.map +1 -0
- package/dist/tools/route-tools/route-mermaid.d.ts +4 -0
- package/dist/tools/route-tools/route-mermaid.d.ts.map +1 -0
- package/dist/tools/route-tools/route-mermaid.js +53 -0
- package/dist/tools/route-tools/route-mermaid.js.map +1 -0
- package/dist/tools/route-tools/spring-kotlin.d.ts +5 -0
- package/dist/tools/route-tools/spring-kotlin.d.ts.map +1 -0
- package/dist/tools/route-tools/spring-kotlin.js +52 -0
- package/dist/tools/route-tools/spring-kotlin.js.map +1 -0
- package/dist/tools/route-tools/trace-analysis.d.ts +4 -0
- package/dist/tools/route-tools/trace-analysis.d.ts.map +1 -0
- package/dist/tools/route-tools/trace-analysis.js +37 -0
- package/dist/tools/route-tools/trace-analysis.js.map +1 -0
- package/dist/tools/route-tools/trace-route.d.ts +6 -0
- package/dist/tools/route-tools/trace-route.d.ts.map +1 -0
- package/dist/tools/route-tools/trace-route.js +53 -0
- package/dist/tools/route-tools/trace-route.js.map +1 -0
- package/dist/tools/route-tools/types.d.ts +35 -0
- package/dist/tools/route-tools/types.d.ts.map +1 -0
- package/dist/tools/route-tools/types.js +2 -0
- package/dist/tools/route-tools/types.js.map +1 -0
- package/dist/tools/route-tools/yii2.d.ts +5 -0
- package/dist/tools/route-tools/yii2.d.ts.map +1 -0
- package/dist/tools/route-tools/yii2.js +73 -0
- package/dist/tools/route-tools/yii2.js.map +1 -0
- package/dist/tools/route-tools.d.ts +7 -49
- package/dist/tools/route-tools.d.ts.map +1 -1
- package/dist/tools/route-tools.js +5 -978
- package/dist/tools/route-tools.js.map +1 -1
- package/dist/tools/search-tools/types.d.ts +20 -0
- package/dist/tools/search-tools/types.d.ts.map +1 -1
- package/dist/tools/search-tools/zero-hit.d.ts.map +1 -1
- package/dist/tools/search-tools/zero-hit.js +0 -0
- package/dist/tools/search-tools/zero-hit.js.map +1 -1
- package/dist/tools/status-tools.d.ts +10 -0
- package/dist/tools/status-tools.d.ts.map +1 -1
- package/dist/tools/status-tools.js +14 -4
- package/dist/tools/status-tools.js.map +1 -1
- package/dist/tools/symbol-analysis-tools.d.ts +81 -0
- package/dist/tools/symbol-analysis-tools.d.ts.map +1 -0
- package/dist/tools/symbol-analysis-tools.js +327 -0
- package/dist/tools/symbol-analysis-tools.js.map +1 -0
- package/dist/tools/symbol-context-tools.d.ts +68 -0
- package/dist/tools/symbol-context-tools.d.ts.map +1 -0
- package/dist/tools/symbol-context-tools.js +232 -0
- package/dist/tools/symbol-context-tools.js.map +1 -0
- package/dist/tools/symbol-lookup-tools.d.ts +77 -0
- package/dist/tools/symbol-lookup-tools.d.ts.map +1 -0
- package/dist/tools/symbol-lookup-tools.js +305 -0
- package/dist/tools/symbol-lookup-tools.js.map +1 -0
- package/dist/tools/symbol-reference-tools.d.ts +38 -0
- package/dist/tools/symbol-reference-tools.d.ts.map +1 -0
- package/dist/tools/symbol-reference-tools.js +253 -0
- package/dist/tools/symbol-reference-tools.js.map +1 -0
- package/dist/tools/symbol-tool-internals.d.ts +9 -0
- package/dist/tools/symbol-tool-internals.d.ts.map +1 -0
- package/dist/tools/symbol-tool-internals.js +47 -0
- package/dist/tools/symbol-tool-internals.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +11 -176
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +7 -975
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint/python-context.d.ts +10 -0
- package/dist/tools/taint/python-context.d.ts.map +1 -0
- package/dist/tools/taint/python-context.js +150 -0
- package/dist/tools/taint/python-context.js.map +1 -0
- package/dist/tools/taint/taint-analyzer.d.ts +2 -0
- package/dist/tools/taint/taint-analyzer.d.ts.map +1 -0
- package/dist/tools/taint/taint-analyzer.js +2 -0
- package/dist/tools/taint/taint-analyzer.js.map +1 -0
- package/dist/tools/taint/taint-expression.d.ts +18 -0
- package/dist/tools/taint/taint-expression.d.ts.map +1 -0
- package/dist/tools/taint/taint-expression.js +265 -0
- package/dist/tools/taint/taint-expression.js.map +1 -0
- package/dist/tools/taint/taint-flow.d.ts +10 -0
- package/dist/tools/taint/taint-flow.d.ts.map +1 -0
- package/dist/tools/taint/taint-flow.js +178 -0
- package/dist/tools/taint/taint-flow.js.map +1 -0
- package/dist/tools/taint/taint-model.d.ts +113 -0
- package/dist/tools/taint/taint-model.d.ts.map +1 -0
- package/dist/tools/taint/taint-model.js +277 -0
- package/dist/tools/taint/taint-model.js.map +1 -0
- package/dist/tools/taint-tools.d.ts +2 -34
- package/dist/tools/taint-tools.d.ts.map +1 -1
- package/dist/tools/taint-tools.js +2 -852
- package/dist/tools/taint-tools.js.map +1 -1
- package/dist/tools/typescript-constants/file-context.d.ts +7 -0
- package/dist/tools/typescript-constants/file-context.d.ts.map +1 -0
- package/dist/tools/typescript-constants/file-context.js +219 -0
- package/dist/tools/typescript-constants/file-context.js.map +1 -0
- package/dist/tools/typescript-constants/symbol-resolver.d.ts +7 -0
- package/dist/tools/typescript-constants/symbol-resolver.d.ts.map +1 -0
- package/dist/tools/typescript-constants/symbol-resolver.js +165 -0
- package/dist/tools/typescript-constants/symbol-resolver.js.map +1 -0
- package/dist/tools/typescript-constants/types.d.ts +44 -0
- package/dist/tools/typescript-constants/types.d.ts.map +1 -0
- package/dist/tools/typescript-constants/types.js +2 -0
- package/dist/tools/typescript-constants/types.js.map +1 -0
- package/dist/tools/typescript-constants/value-evaluator.d.ts +8 -0
- package/dist/tools/typescript-constants/value-evaluator.d.ts.map +1 -0
- package/dist/tools/typescript-constants/value-evaluator.js +404 -0
- package/dist/tools/typescript-constants/value-evaluator.js.map +1 -0
- package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
- package/dist/tools/typescript-constants-tools.js +19 -709
- package/dist/tools/typescript-constants-tools.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/git-head.d.ts +12 -0
- package/dist/utils/git-head.d.ts.map +1 -1
- package/dist/utils/git-head.js +25 -0
- package/dist/utils/git-head.js.map +1 -1
- package/dist/utils/import-graph/collect.d.ts +5 -0
- package/dist/utils/import-graph/collect.d.ts.map +1 -0
- package/dist/utils/import-graph/collect.js +47 -0
- package/dist/utils/import-graph/collect.js.map +1 -0
- package/dist/utils/import-graph/edge-accumulator.d.ts +7 -0
- package/dist/utils/import-graph/edge-accumulator.d.ts.map +1 -0
- package/dist/utils/import-graph/edge-accumulator.js +47 -0
- package/dist/utils/import-graph/edge-accumulator.js.map +1 -0
- package/dist/utils/import-graph/language-imports.d.ts +6 -0
- package/dist/utils/import-graph/language-imports.d.ts.map +1 -0
- package/dist/utils/import-graph/language-imports.js +84 -0
- package/dist/utils/import-graph/language-imports.js.map +1 -0
- package/dist/utils/import-graph/metrics.d.ts +6 -0
- package/dist/utils/import-graph/metrics.d.ts.map +1 -0
- package/dist/utils/import-graph/metrics.js +51 -0
- package/dist/utils/import-graph/metrics.js.map +1 -0
- package/dist/utils/import-graph/path-map.d.ts +7 -0
- package/dist/utils/import-graph/path-map.d.ts.map +1 -0
- package/dist/utils/import-graph/path-map.js +56 -0
- package/dist/utils/import-graph/path-map.js.map +1 -0
- package/dist/utils/import-graph/python-php-edge-collectors.d.ts +5 -0
- package/dist/utils/import-graph/python-php-edge-collectors.d.ts.map +1 -0
- package/dist/utils/import-graph/python-php-edge-collectors.js +56 -0
- package/dist/utils/import-graph/python-php-edge-collectors.js.map +1 -0
- package/dist/utils/import-graph/source-edge-collector.d.ts +13 -0
- package/dist/utils/import-graph/source-edge-collector.d.ts.map +1 -0
- package/dist/utils/import-graph/source-edge-collector.js +42 -0
- package/dist/utils/import-graph/source-edge-collector.js.map +1 -0
- package/dist/utils/import-graph/source-imports.d.ts +5 -0
- package/dist/utils/import-graph/source-imports.d.ts.map +1 -0
- package/dist/utils/import-graph/source-imports.js +33 -0
- package/dist/utils/import-graph/source-imports.js.map +1 -0
- package/dist/utils/import-graph/types.d.ts +15 -0
- package/dist/utils/import-graph/types.d.ts.map +1 -0
- package/dist/utils/import-graph/types.js +2 -0
- package/dist/utils/import-graph/types.js.map +1 -0
- package/dist/utils/import-graph/typescript-edge-collector.d.ts +7 -0
- package/dist/utils/import-graph/typescript-edge-collector.d.ts.map +1 -0
- package/dist/utils/import-graph/typescript-edge-collector.js +58 -0
- package/dist/utils/import-graph/typescript-edge-collector.js.map +1 -0
- package/dist/utils/import-graph/workspace-alias.d.ts +7 -0
- package/dist/utils/import-graph/workspace-alias.d.ts.map +1 -0
- package/dist/utils/import-graph/workspace-alias.js +95 -0
- package/dist/utils/import-graph/workspace-alias.js.map +1 -0
- package/dist/utils/import-graph/workspace-entry.d.ts +3 -0
- package/dist/utils/import-graph/workspace-entry.d.ts.map +1 -0
- package/dist/utils/import-graph/workspace-entry.js +81 -0
- package/dist/utils/import-graph/workspace-entry.js.map +1 -0
- package/dist/utils/import-graph.d.ts +10 -94
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +6 -702
- package/dist/utils/import-graph.js.map +1 -1
- package/package.json +6 -4
- package/rules/codesift.md +11 -2
- package/rules/codesift.mdc +11 -2
- package/rules/codex.md +11 -2
- package/rules/gemini.md +11 -2
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { promisify } from "node:util";
|
|
5
|
+
import { findReferencesLsp } from "../lsp/lsp-tools.js";
|
|
6
|
+
import { matchFilePattern } from "../utils/glob.js";
|
|
7
|
+
import { isNoisePath, MAX_CONTEXT_LENGTH, MAX_REFERENCES, requireCodeIndex, wordBoundaryPattern, } from "./symbol-tool-internals.js";
|
|
8
|
+
/**
|
|
9
|
+
* Batch find references for multiple symbols in one pass.
|
|
10
|
+
* Reads each file once instead of N times — critical for large repos.
|
|
11
|
+
*/
|
|
12
|
+
export async function findReferencesBatch(repo, symbolNames, filePattern, sink) {
|
|
13
|
+
const index = await requireCodeIndex(repo);
|
|
14
|
+
const uniqueNames = [...new Set(symbolNames)];
|
|
15
|
+
const patterns = uniqueNames.map((name) => ({
|
|
16
|
+
name,
|
|
17
|
+
regex: wordBoundaryPattern(name),
|
|
18
|
+
}));
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const name of uniqueNames)
|
|
21
|
+
result[name] = [];
|
|
22
|
+
let filesScanned = 0;
|
|
23
|
+
let filesSkippedNoise = 0;
|
|
24
|
+
let filesUnreadable = 0;
|
|
25
|
+
let timedOut = false;
|
|
26
|
+
const searchStart = Date.now();
|
|
27
|
+
for (const fileEntry of index.files) {
|
|
28
|
+
if (Date.now() - searchStart > SEARCH_TIMEOUT_MS) {
|
|
29
|
+
timedOut = true;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
if (filePattern && !matchFilePattern(fileEntry.path, filePattern))
|
|
33
|
+
continue;
|
|
34
|
+
if (!filePattern && isNoisePath(fileEntry.path)) {
|
|
35
|
+
// Sensible default — but it means "no references" really means "none outside generated
|
|
36
|
+
// and vendored code", and the caller could not tell that scoping had happened.
|
|
37
|
+
filesSkippedNoise++;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
let content;
|
|
41
|
+
try {
|
|
42
|
+
content = await readFile(join(index.root, fileEntry.path), "utf-8");
|
|
43
|
+
filesScanned++;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// A reference living only in a file we could not read is invisible here, and the symbol
|
|
47
|
+
// then looks unused.
|
|
48
|
+
filesUnreadable++;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const lines = content.split("\n");
|
|
52
|
+
for (let i = 0; i < lines.length; i++) {
|
|
53
|
+
const line = lines[i];
|
|
54
|
+
if (line === undefined)
|
|
55
|
+
continue;
|
|
56
|
+
for (const { name, regex } of patterns) {
|
|
57
|
+
const refs = result[name];
|
|
58
|
+
if (refs.length >= MAX_REFERENCES)
|
|
59
|
+
continue;
|
|
60
|
+
const match = regex.exec(line);
|
|
61
|
+
if (match) {
|
|
62
|
+
const rawContext = line.trimEnd();
|
|
63
|
+
refs.push({
|
|
64
|
+
file: fileEntry.path,
|
|
65
|
+
line: i + 1,
|
|
66
|
+
col: match.index + 1,
|
|
67
|
+
context: rawContext.length > MAX_CONTEXT_LENGTH
|
|
68
|
+
? rawContext.slice(0, MAX_CONTEXT_LENGTH) + "..."
|
|
69
|
+
: rawContext,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (sink) {
|
|
76
|
+
const capped = uniqueNames.filter((n) => (result[n]?.length ?? 0) >= MAX_REFERENCES);
|
|
77
|
+
const complete = !timedOut && filesSkippedNoise === 0 && filesUnreadable === 0 && capped.length === 0;
|
|
78
|
+
const reasons = [];
|
|
79
|
+
if (filesSkippedNoise > 0) {
|
|
80
|
+
reasons.push(`${filesSkippedNoise} generated/vendored files skipped (pass file_pattern to include them)`);
|
|
81
|
+
}
|
|
82
|
+
if (filesUnreadable > 0)
|
|
83
|
+
reasons.push(`${filesUnreadable} files could not be read`);
|
|
84
|
+
if (timedOut)
|
|
85
|
+
reasons.push(`scan exceeded ${SEARCH_TIMEOUT_MS}ms`);
|
|
86
|
+
if (capped.length > 0)
|
|
87
|
+
reasons.push(`${capped.length} symbol(s) hit the ${MAX_REFERENCES}-reference cap`);
|
|
88
|
+
sink.coverage = {
|
|
89
|
+
status: complete ? "complete" : "partial",
|
|
90
|
+
files_indexed: index.files.length,
|
|
91
|
+
files_scanned: filesScanned,
|
|
92
|
+
...(filesSkippedNoise > 0 ? { files_skipped_noise: filesSkippedNoise } : {}),
|
|
93
|
+
...(filesUnreadable > 0 ? { files_unreadable: filesUnreadable } : {}),
|
|
94
|
+
...(capped.length > 0 ? { capped_symbols: capped } : {}),
|
|
95
|
+
...(complete
|
|
96
|
+
? {}
|
|
97
|
+
: {
|
|
98
|
+
detail: `${reasons.join("; ")} — an empty or short result is about what was scanned, ` +
|
|
99
|
+
`not proof the symbol is unused`,
|
|
100
|
+
}),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
const SEARCH_TIMEOUT_MS = 30_000;
|
|
106
|
+
/** Directories to exclude from ripgrep reference search */
|
|
107
|
+
const RG_EXCLUDE_DIRS = [
|
|
108
|
+
"node_modules", ".git", ".next", "dist", ".codesift", "coverage",
|
|
109
|
+
".playwright-mcp", "__pycache__", "__snapshots__",
|
|
110
|
+
];
|
|
111
|
+
/** Detect whether `rg` (ripgrep) is available. Cached at module level. */
|
|
112
|
+
let rgAvailable = null;
|
|
113
|
+
function hasRipgrep() {
|
|
114
|
+
if (rgAvailable !== null)
|
|
115
|
+
return rgAvailable;
|
|
116
|
+
try {
|
|
117
|
+
execFileSync("rg", ["--version"], { stdio: "pipe", timeout: 2000 });
|
|
118
|
+
rgAvailable = true;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
rgAvailable = false;
|
|
122
|
+
}
|
|
123
|
+
return rgAvailable;
|
|
124
|
+
}
|
|
125
|
+
const execFileAsync = promisify(execFile);
|
|
126
|
+
/**
|
|
127
|
+
* Find references using ripgrep with word-boundary matching.
|
|
128
|
+
* Returns compact `file:line: context` string when results ≤ threshold.
|
|
129
|
+
*/
|
|
130
|
+
async function findReferencesWithRipgrep(root, symbolName, maxResults, filePattern) {
|
|
131
|
+
const args = [
|
|
132
|
+
"-n", "--no-heading", "-F",
|
|
133
|
+
"--max-columns", String(MAX_CONTEXT_LENGTH),
|
|
134
|
+
"--max-columns-preview",
|
|
135
|
+
"--max-count", String(Math.min(maxResults * 2, 5000)),
|
|
136
|
+
];
|
|
137
|
+
if (filePattern) {
|
|
138
|
+
args.push("--glob", filePattern);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
for (const dir of RG_EXCLUDE_DIRS)
|
|
142
|
+
args.push("--glob", `!${dir}`);
|
|
143
|
+
for (const ext of [".snap", ".lock", ".map", ".svg", ".png", ".jpg", ".ico", ".woff", ".woff2", ".md", ".json", ".yaml", ".yml", ".toml", ".css", ".scss", ".html"]) {
|
|
144
|
+
args.push("--glob", `!*${ext}`);
|
|
145
|
+
}
|
|
146
|
+
// Default to code files only (matches what agent would grep for)
|
|
147
|
+
args.push("--type-add", "code:*.{ts,tsx,js,jsx,py,go,rs,java,kt,kts,rb,php,vue,svelte}");
|
|
148
|
+
args.push("--type", "code");
|
|
149
|
+
}
|
|
150
|
+
args.push("--", symbolName, root);
|
|
151
|
+
let stdout;
|
|
152
|
+
try {
|
|
153
|
+
const result = await execFileAsync("rg", args, {
|
|
154
|
+
encoding: "utf-8",
|
|
155
|
+
maxBuffer: 20 * 1024 * 1024,
|
|
156
|
+
timeout: SEARCH_TIMEOUT_MS,
|
|
157
|
+
});
|
|
158
|
+
stdout = result.stdout;
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
if (err && typeof err === "object" && "code" in err && err.code === 1)
|
|
162
|
+
return [];
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const rootPrefix = root.endsWith("/") ? root : root + "/";
|
|
166
|
+
const lines = stdout.split("\n").filter(Boolean);
|
|
167
|
+
const refs = [];
|
|
168
|
+
const identifierPattern = wordBoundaryPattern(symbolName);
|
|
169
|
+
for (const rawLine of lines) {
|
|
170
|
+
if (refs.length >= maxResults)
|
|
171
|
+
break;
|
|
172
|
+
const match = rawLine.match(/^(.+?):(\d+):(.*)/);
|
|
173
|
+
if (!match || !match[1] || !match[2] || match[3] === undefined)
|
|
174
|
+
continue;
|
|
175
|
+
const absPath = match[1];
|
|
176
|
+
const relPath = absPath.startsWith(rootPrefix) ? absPath.slice(rootPrefix.length) : absPath;
|
|
177
|
+
if (!filePattern && isNoisePath(relPath))
|
|
178
|
+
continue;
|
|
179
|
+
// `rg -w` is incorrect for valid identifiers such as `$store` and `#handler`. The literal
|
|
180
|
+
// search keeps metacharacters safe; this Unicode-aware filter supplies language boundaries.
|
|
181
|
+
if (!identifierPattern.test(match[3]))
|
|
182
|
+
continue;
|
|
183
|
+
refs.push({
|
|
184
|
+
file: relPath,
|
|
185
|
+
line: parseInt(match[2], 10),
|
|
186
|
+
context: match[3].length > MAX_CONTEXT_LENGTH ? match[3].slice(0, MAX_CONTEXT_LENGTH) + "..." : match[3],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return refs;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Find references to a symbol name across indexed files.
|
|
193
|
+
* Matches whole words only using word-boundary regex.
|
|
194
|
+
*/
|
|
195
|
+
export async function findReferences(repo, symbolName, filePattern) {
|
|
196
|
+
// Try LSP first (type-safe, no false positives)
|
|
197
|
+
if (!filePattern) {
|
|
198
|
+
const lspRefs = await findReferencesLsp(repo, symbolName);
|
|
199
|
+
if (lspRefs !== null)
|
|
200
|
+
return lspRefs;
|
|
201
|
+
}
|
|
202
|
+
// Use ripgrep when available (10x+ faster than Node.js file walk)
|
|
203
|
+
if (!filePattern && hasRipgrep()) {
|
|
204
|
+
const index = await requireCodeIndex(repo);
|
|
205
|
+
const result = await findReferencesWithRipgrep(index.root, symbolName, MAX_REFERENCES, filePattern);
|
|
206
|
+
if (result !== null)
|
|
207
|
+
return result;
|
|
208
|
+
// Any rg failure other than its explicit no-match exit falls through to the index-backed scan.
|
|
209
|
+
}
|
|
210
|
+
// Node.js fallback
|
|
211
|
+
const index = await requireCodeIndex(repo);
|
|
212
|
+
const pattern = wordBoundaryPattern(symbolName);
|
|
213
|
+
const searchStart = Date.now();
|
|
214
|
+
const refs = [];
|
|
215
|
+
for (const fileEntry of index.files) {
|
|
216
|
+
if (refs.length >= MAX_REFERENCES)
|
|
217
|
+
break;
|
|
218
|
+
if (Date.now() - searchStart > SEARCH_TIMEOUT_MS)
|
|
219
|
+
break;
|
|
220
|
+
if (filePattern && !matchFilePattern(fileEntry.path, filePattern))
|
|
221
|
+
continue;
|
|
222
|
+
if (!filePattern && isNoisePath(fileEntry.path))
|
|
223
|
+
continue;
|
|
224
|
+
let content;
|
|
225
|
+
try {
|
|
226
|
+
content = await readFile(join(index.root, fileEntry.path), "utf-8");
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
const lines = content.split("\n");
|
|
232
|
+
for (let i = 0; i < lines.length; i++) {
|
|
233
|
+
if (refs.length >= MAX_REFERENCES)
|
|
234
|
+
break;
|
|
235
|
+
const line = lines[i];
|
|
236
|
+
if (line === undefined)
|
|
237
|
+
continue;
|
|
238
|
+
const match = pattern.exec(line);
|
|
239
|
+
if (match) {
|
|
240
|
+
const rawContext = line.trimEnd();
|
|
241
|
+
refs.push({
|
|
242
|
+
file: fileEntry.path,
|
|
243
|
+
line: i + 1,
|
|
244
|
+
context: rawContext.length > MAX_CONTEXT_LENGTH
|
|
245
|
+
? rawContext.slice(0, MAX_CONTEXT_LENGTH) + "..."
|
|
246
|
+
: rawContext,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return refs;
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=symbol-reference-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-reference-tools.js","sourceRoot":"","sources":["../../src/tools/symbol-reference-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BM25Index } from "../search/bm25.js";
|
|
2
|
+
import type { CodeIndex } from "../types.js";
|
|
3
|
+
export declare const MAX_REFERENCES = 100;
|
|
4
|
+
export declare const MAX_CONTEXT_LENGTH = 200;
|
|
5
|
+
export declare function isNoisePath(filePath: string): boolean;
|
|
6
|
+
export declare function requireCodeIndex(repo: string): Promise<CodeIndex>;
|
|
7
|
+
export declare function requireBM25Index(repo: string): Promise<BM25Index>;
|
|
8
|
+
export declare function wordBoundaryPattern(name: string): RegExp;
|
|
9
|
+
//# sourceMappingURL=symbol-tool-internals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-tool-internals.d.ts","sourceRoot":"","sources":["../../src/tools/symbol-tool-internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAsBtC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIrD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAMvE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAMvE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getBM25Index, getCodeIndex } from "./index-tools.js";
|
|
2
|
+
export const MAX_REFERENCES = 100;
|
|
3
|
+
export const MAX_CONTEXT_LENGTH = 200;
|
|
4
|
+
const NOISE_PATH_PREFIXES = [
|
|
5
|
+
".next/",
|
|
6
|
+
"dist/",
|
|
7
|
+
"build/",
|
|
8
|
+
"coverage/",
|
|
9
|
+
"node_modules/",
|
|
10
|
+
"__snapshots__/",
|
|
11
|
+
];
|
|
12
|
+
const NOISE_EXTENSIONS = new Set([
|
|
13
|
+
".snap",
|
|
14
|
+
".lock",
|
|
15
|
+
".map",
|
|
16
|
+
".svg",
|
|
17
|
+
".png",
|
|
18
|
+
".jpg",
|
|
19
|
+
".ico",
|
|
20
|
+
".woff",
|
|
21
|
+
".woff2",
|
|
22
|
+
]);
|
|
23
|
+
export function isNoisePath(filePath) {
|
|
24
|
+
if (NOISE_PATH_PREFIXES.some((prefix) => filePath.startsWith(prefix)))
|
|
25
|
+
return true;
|
|
26
|
+
const dot = filePath.lastIndexOf(".");
|
|
27
|
+
return dot >= 0 && NOISE_EXTENSIONS.has(filePath.slice(dot));
|
|
28
|
+
}
|
|
29
|
+
export async function requireCodeIndex(repo) {
|
|
30
|
+
const index = await getCodeIndex(repo);
|
|
31
|
+
if (!index) {
|
|
32
|
+
throw new Error(`Repository "${repo}" not found. Index it first with index_folder.`);
|
|
33
|
+
}
|
|
34
|
+
return index;
|
|
35
|
+
}
|
|
36
|
+
export async function requireBM25Index(repo) {
|
|
37
|
+
const index = await getBM25Index(repo);
|
|
38
|
+
if (!index) {
|
|
39
|
+
throw new Error(`Repository "${repo}" not found. Index it first with index_folder.`);
|
|
40
|
+
}
|
|
41
|
+
return index;
|
|
42
|
+
}
|
|
43
|
+
export function wordBoundaryPattern(name) {
|
|
44
|
+
const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
45
|
+
return new RegExp(`(?<![$_\\p{ID_Continue}])${escaped}(?![$_\\u200C\\u200D\\p{ID_Continue}])`, "u");
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=symbol-tool-internals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-tool-internals.js","sourceRoot":"","sources":["../../src/tools/symbol-tool-internals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC,MAAM,mBAAmB,GAAG;IAC1B,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,WAAW;IACX,eAAe;IACf,gBAAgB;CACjB,CAAC;AACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gDAAgD,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gDAAgD,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,IAAI,MAAM,CAAC,4BAA4B,OAAO,wCAAwC,EAAE,GAAG,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -1,180 +1,15 @@
|
|
|
1
|
-
import type { CodeSymbol, Reference, SymbolKind } from "../types.js";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
* hallucinated symbol IDs (telemetry shows 24-26% of get_symbol/get_symbols
|
|
5
|
-
* calls return zero results). Extracts a name candidate from the requested
|
|
6
|
-
* ID and returns up to `limit` symbols whose name matches case-insensitively.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Resolve a non-canonical symbol reference to a real symbol ID when it is
|
|
10
|
-
* UNAMBIGUOUS.
|
|
11
|
-
*
|
|
12
|
-
* Symbol IDs are `repo:file:name:line` — they embed the declaration line, so no
|
|
13
|
-
* caller can construct one by hand. Agents therefore pass a bare name
|
|
14
|
-
* ("getOptions") or a half-remembered path, and the lookup returns null; the
|
|
15
|
-
* measured miss rate was 24% of get_symbol calls and 26% of get_symbols. The old
|
|
16
|
-
* behaviour answered with a suggestion list, which is a second round trip for a
|
|
17
|
-
* question we can already answer.
|
|
18
|
-
*
|
|
19
|
-
* Only an EXACT, SINGLE name match resolves. Two symbols named `handler` must
|
|
20
|
-
* stay ambiguous — silently picking one would return the wrong source with no
|
|
21
|
-
* signal, which is worse than the miss it replaces.
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Best-effort symbol NAME out of whatever the caller passed.
|
|
2
|
+
* Stable public facade for symbol-oriented tools.
|
|
25
3
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* a well-formed-but-stale id was silently useless. Skip trailing numeric
|
|
29
|
-
* segments, then fall back to the last non-empty one.
|
|
30
|
-
*/
|
|
31
|
-
export declare function extractSymbolNameGuess(requestedId: string): string;
|
|
32
|
-
export declare function resolveSymbolIdExact(repo: string, requestedId: string): Promise<string | null>;
|
|
33
|
-
export declare function findSimilarSymbols(repo: string, requestedId: string, limit?: number): Promise<Array<{
|
|
34
|
-
id: string;
|
|
35
|
-
name: string;
|
|
36
|
-
kind: string;
|
|
37
|
-
file: string;
|
|
38
|
-
start_line: number;
|
|
39
|
-
}>>;
|
|
40
|
-
/**
|
|
41
|
-
* Retrieve a single symbol by ID with fresh source from disk.
|
|
42
|
-
* When include_related is true (default), auto-prefetches:
|
|
43
|
-
* - children (for classes/interfaces) — saves follow-up get_symbols call
|
|
44
|
-
* - symbols in the same file that reference this symbol — saves find_references call
|
|
45
|
-
*/
|
|
46
|
-
export declare function getSymbol(repo: string, symbolId: string, options?: {
|
|
47
|
-
include_related?: boolean;
|
|
48
|
-
}): Promise<{
|
|
49
|
-
symbol: CodeSymbol;
|
|
50
|
-
related?: CodeSymbol[];
|
|
51
|
-
} | null>;
|
|
52
|
-
/**
|
|
53
|
-
* Retrieve multiple symbols by ID with fresh source from disk.
|
|
54
|
-
* Groups reads by file to minimize disk I/O.
|
|
55
|
-
*/
|
|
56
|
-
export declare function getSymbols(repo: string, symbolIds: string[]): Promise<CodeSymbol[]>;
|
|
57
|
-
/**
|
|
58
|
-
* Find references to a symbol name across indexed files.
|
|
59
|
-
* Matches whole words only using word-boundary regex.
|
|
60
|
-
*/
|
|
61
|
-
/**
|
|
62
|
-
* Batch find references for multiple symbols in one pass.
|
|
63
|
-
* Reads each file once instead of N times — critical for large repos.
|
|
64
|
-
*/
|
|
65
|
-
export declare function findReferencesBatch(repo: string, symbolNames: string[], filePattern?: string): Promise<Record<string, Reference[]>>;
|
|
66
|
-
export declare function findReferences(repo: string, symbolName: string, filePattern?: string): Promise<Reference[]>;
|
|
67
|
-
/** Format references as compact string for MCP output. Groups by file to avoid repeating paths. */
|
|
68
|
-
export declare function formatRefsCompact(refs: Reference[]): string;
|
|
69
|
-
/** Format a CodeSymbol as compact text: header line + source. ~70% less tokens than JSON. */
|
|
70
|
-
export declare function formatSymbolCompact(sym: CodeSymbol): string;
|
|
71
|
-
/** Format multiple CodeSymbols as compact text, separated by blank lines. */
|
|
72
|
-
export declare function formatSymbolsCompact(syms: CodeSymbol[]): string;
|
|
73
|
-
/** Format ContextBundle as compact text. */
|
|
74
|
-
export declare function formatBundleCompact(bundle: {
|
|
75
|
-
symbol: CodeSymbol;
|
|
76
|
-
imports: string[];
|
|
77
|
-
siblings: Array<{
|
|
78
|
-
name: string;
|
|
79
|
-
kind: string;
|
|
80
|
-
start_line: number;
|
|
81
|
-
end_line: number;
|
|
82
|
-
}>;
|
|
83
|
-
types_used: string[];
|
|
84
|
-
}): string;
|
|
85
|
-
/**
|
|
86
|
-
* Search for a symbol by query and return it with full source.
|
|
87
|
-
* Optionally includes references across the codebase.
|
|
88
|
-
*/
|
|
89
|
-
export declare function findAndShow(repo: string, query: string, includeRefs?: boolean): Promise<{
|
|
90
|
-
symbol: CodeSymbol;
|
|
91
|
-
references?: Reference[];
|
|
92
|
-
} | null>;
|
|
93
|
-
export interface ReactContext {
|
|
94
|
-
/** Props type name extracted from the component's parameter type annotation */
|
|
95
|
-
props_type: string | null;
|
|
96
|
-
/** Source of the props interface/type declaration when found in the index (Tier 4 — Item 16) */
|
|
97
|
-
props_interface_source: string | null;
|
|
98
|
-
/** React hooks called inside this component (use*() patterns) */
|
|
99
|
-
hooks_used: Array<{
|
|
100
|
-
name: string;
|
|
101
|
-
is_stdlib: boolean;
|
|
102
|
-
}>;
|
|
103
|
-
/** Child components rendered via JSX (<PascalCase>) */
|
|
104
|
-
child_components: string[];
|
|
105
|
-
/** Parent components that render this one via JSX */
|
|
106
|
-
parent_components: string[];
|
|
107
|
-
/** Detected wrapper pattern (memo, forwardRef, lazy) or null */
|
|
108
|
-
wrapper: "memo" | "forwardRef" | "lazy" | null;
|
|
109
|
-
}
|
|
110
|
-
export interface ContextBundle {
|
|
111
|
-
symbol: CodeSymbol;
|
|
112
|
-
imports: string[];
|
|
113
|
-
siblings: Array<{
|
|
114
|
-
name: string;
|
|
115
|
-
kind: SymbolKind;
|
|
116
|
-
start_line: number;
|
|
117
|
-
end_line: number;
|
|
118
|
-
}>;
|
|
119
|
-
types_used: string[];
|
|
120
|
-
/** Only populated when symbol.kind === "component" */
|
|
121
|
-
react_context?: ReactContext;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get a symbol with its file's imports and sibling symbols in one call.
|
|
125
|
-
* Saves 2-3 round-trips vs get_symbol + search_text(imports) + get_file_outline.
|
|
126
|
-
*/
|
|
127
|
-
export declare function getContextBundle(repo: string, symbolName: string): Promise<ContextBundle | null>;
|
|
128
|
-
export interface DeadCodeCandidate {
|
|
129
|
-
name: string;
|
|
130
|
-
kind: SymbolKind;
|
|
131
|
-
file: string;
|
|
132
|
-
start_line: number;
|
|
133
|
-
end_line: number;
|
|
134
|
-
reason: string;
|
|
135
|
-
}
|
|
136
|
-
export interface DeadCodeResult {
|
|
137
|
-
candidates: DeadCodeCandidate[];
|
|
138
|
-
scanned_symbols: number;
|
|
139
|
-
scanned_files: number;
|
|
140
|
-
truncated?: boolean;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Find potentially dead code: exported symbols with 0 references outside their own file.
|
|
144
|
-
* Scans all indexed files for word-boundary matches of each exported symbol name.
|
|
145
|
-
*
|
|
146
|
-
* F14 fixes (2026-05-05):
|
|
147
|
-
* - Test files are now ALWAYS scanned for references regardless of
|
|
148
|
-
* `include_tests`. The flag now gates only candidate selection (whether
|
|
149
|
-
* test-internal exports can themselves be flagged dead). Symbols used
|
|
150
|
-
* only in tests are no longer false-positive dead.
|
|
151
|
-
* - Re-exports via `export * from './x'` and `export { Y } from './x'`
|
|
152
|
-
* now mark `./x` as live; previously the lack of textual mention in the
|
|
153
|
-
* barrel made every barrel-forwarded symbol look dead.
|
|
154
|
-
* - MAX_SCAN_FILES raised 2000 → 5000; truncation now surfaces in the
|
|
155
|
-
* `truncated` field so callers can react.
|
|
156
|
-
*/
|
|
157
|
-
export declare function findDeadCode(repo: string, options?: {
|
|
158
|
-
file_pattern?: string | undefined;
|
|
159
|
-
include_tests?: boolean | undefined;
|
|
160
|
-
}): Promise<DeadCodeResult>;
|
|
161
|
-
export interface UnusedImport {
|
|
162
|
-
file: string;
|
|
163
|
-
line: number;
|
|
164
|
-
import_text: string;
|
|
165
|
-
imported_name: string;
|
|
166
|
-
}
|
|
167
|
-
export interface UnusedImportsResult {
|
|
168
|
-
unused: UnusedImport[];
|
|
169
|
-
scanned_files: number;
|
|
170
|
-
truncated?: boolean;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Find imports whose imported names are never referenced in the file body.
|
|
174
|
-
* Supports ES module named imports: import { A, B } from '...'
|
|
4
|
+
* Deferred tool loaders and external consumers import this exact module path.
|
|
5
|
+
* Keep exports explicit so internal split helpers cannot accidentally become public.
|
|
175
6
|
*/
|
|
176
|
-
export
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
7
|
+
export { AmbiguousSymbolIdError, extractSymbolNameGuess, findSimilarSymbols, getSymbol, getSymbols, isAmbiguousSymbolIdError, resolveSymbolIdExact, } from "./symbol-lookup-tools.js";
|
|
8
|
+
export type { SymbolIdAmbiguity } from "./symbol-lookup-tools.js";
|
|
9
|
+
export { findReferences, findReferencesBatch, } from "./symbol-reference-tools.js";
|
|
10
|
+
export type { ReferenceScanCoverage, ReferenceScanSink, } from "./symbol-reference-tools.js";
|
|
11
|
+
export { findAndShow, formatBundleCompact, formatRefsCompact, formatSymbolCompact, formatSymbolsCompact, getContextBundle, } from "./symbol-context-tools.js";
|
|
12
|
+
export type { ContextBundle, ReactContext, } from "./symbol-context-tools.js";
|
|
13
|
+
export { findDeadCode, findUnusedImports, } from "./symbol-analysis-tools.js";
|
|
14
|
+
export type { DeadCodeCandidate, DeadCodeResult, UnusedImport, UnusedImportsResult, } from "./symbol-analysis-tools.js";
|
|
180
15
|
//# sourceMappingURL=symbol-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-tools.d.ts","sourceRoot":"","sources":["../../src/tools/symbol-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"symbol-tools.d.ts","sourceRoot":"","sources":["../../src/tools/symbol-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EACL,cAAc,EACd,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,aAAa,EACb,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
|