codesift-mcp 0.14.0 → 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 -867
- 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/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/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-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/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-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 +5 -61
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +33 -414
- 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 +169 -8
- 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/telemetry/config.d.ts.map +1 -1
- package/dist/storage/telemetry/config.js +3 -2
- package/dist/storage/telemetry/config.js.map +1 -1
- package/dist/storage/telemetry/retro-aggregator.d.ts +21 -0
- package/dist/storage/telemetry/retro-aggregator.d.ts.map +1 -1
- package/dist/storage/telemetry/retro-aggregator.js +58 -16
- package/dist/storage/telemetry/retro-aggregator.js.map +1 -1
- package/dist/storage/telemetry/sanitizer.d.ts +16 -0
- package/dist/storage/telemetry/sanitizer.d.ts.map +1 -1
- package/dist/storage/telemetry/sanitizer.js +2 -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 +158 -21
- package/dist/storage/telemetry/uploader.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 +47 -2
- 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 +19 -0
- package/dist/tools/index-tools/registry.d.ts.map +1 -1
- package/dist/tools/index-tools/registry.js +88 -2
- 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.map +1 -1
- package/dist/tools/index-tools.js +3 -1
- 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/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/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 -270
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +7 -1131
- 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/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 +1 -1
- package/rules/codesift.md +11 -2
- package/rules/codesift.mdc +11 -2
- package/rules/codex.md +11 -2
- package/rules/gemini.md +11 -2
|
@@ -3,107 +3,24 @@ import { statSync } from "node:fs";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { atomicWriteFile } from "./_shared.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (summary.workspaces !== undefined)
|
|
16
|
-
out.workspaces = [...summary.workspaces];
|
|
17
|
-
return out;
|
|
18
|
-
}
|
|
19
|
-
export function resetSummaryCacheForTesting() {
|
|
20
|
-
summaryCache.clear();
|
|
21
|
-
}
|
|
22
|
-
/** Serialize concurrent writes to the same index path. */
|
|
23
|
-
const writeLocks = new Map();
|
|
24
|
-
/**
|
|
25
|
-
* Which on-disk format to use.
|
|
26
|
-
*
|
|
27
|
-
* `CODESIFT_INDEX_BACKEND=json` pins the legacy path (the documented rollback);
|
|
28
|
-
* `=sqlite` demands the new one and fails loudly if `node:sqlite` is missing, so a CI run
|
|
29
|
-
* cannot quietly exercise the wrong backend. Unset auto-detects, which is what keeps the
|
|
30
|
-
* `engines: >=20` floor honest: Node 20 has no `node:sqlite` and simply stays on JSON.
|
|
31
|
-
*
|
|
32
|
-
* Read from the environment here rather than `config.ts` because the choice must be
|
|
33
|
-
* resolvable from the short-lived `codesift postindex-file` hook process too, which never
|
|
34
|
-
* builds a full config.
|
|
35
|
-
*/
|
|
36
|
-
let backendPromise;
|
|
37
|
-
export async function resolveIndexBackend() {
|
|
38
|
-
backendPromise ??= computeIndexBackend();
|
|
39
|
-
return backendPromise;
|
|
40
|
-
}
|
|
41
|
-
async function computeIndexBackend() {
|
|
42
|
-
const explicit = process.env["CODESIFT_INDEX_BACKEND"];
|
|
43
|
-
if (explicit === "json")
|
|
44
|
-
return "json";
|
|
45
|
-
if (explicit === "sqlite") {
|
|
46
|
-
if (!(await isSqliteAvailable())) {
|
|
47
|
-
throw new Error("CODESIFT_INDEX_BACKEND=sqlite but node:sqlite is unavailable (requires Node >= 22.5)");
|
|
48
|
-
}
|
|
49
|
-
return "sqlite";
|
|
50
|
-
}
|
|
51
|
-
return (await isSqliteAvailable()) ? "sqlite" : "json";
|
|
52
|
-
}
|
|
53
|
-
export function resetIndexBackendForTesting() {
|
|
54
|
-
backendPromise = undefined;
|
|
55
|
-
}
|
|
56
|
-
/** `<hash>.index.json` -> `<hash>.index.db`, so both formats sit side by side and the JSON
|
|
57
|
-
* stays available as the rollback artifact. */
|
|
58
|
-
export function sqlitePathFor(indexPath) {
|
|
59
|
-
return indexPath.endsWith(".json")
|
|
60
|
-
? `${indexPath.slice(0, -".json".length)}.db`
|
|
61
|
-
: `${indexPath}.db`;
|
|
62
|
-
}
|
|
63
|
-
/** Guards one-time JSON->SQLite migration per index path. */
|
|
64
|
-
const migrations = new Map();
|
|
65
|
-
/**
|
|
66
|
-
* Bring an existing JSON index across on first touch.
|
|
67
|
-
*
|
|
68
|
-
* Deliberately non-destructive: the source `.json` is left in place. Deleting it would make
|
|
69
|
-
* `CODESIFT_INDEX_BACKEND=json` a one-way door, and the whole point of shipping a rollback
|
|
70
|
-
* switch is that it still has something to roll back to.
|
|
71
|
-
*/
|
|
6
|
+
import { loadIndexSqlite, saveIndexSqlite, saveIncrementalSqlite, removeFileFromIndexSqlite, getFileEntrySqlite, getDataVersion, classifyStorageError, IndexStorageError, loadIndexSummarySqlite, } from "./sqlite-index-store.js";
|
|
7
|
+
import { cacheLoadedIndex, cacheLoadedSummary, getCachedIndex, getCachedSummary, invalidateIndexCache, } from "./index-cache.js";
|
|
8
|
+
import { assertCanonicalIndexPath, ensureSqliteMigrated as migrateLegacyIndex, resolveIndexBackend, sqlitePathFor, } from "./index-migration.js";
|
|
9
|
+
import { isExtractorVersionCurrent, loadVersionAwareIndex, } from "./index-version.js";
|
|
10
|
+
import { removeFileFromJsonIndex, saveIncrementalJson, } from "./index-json-mutations.js";
|
|
11
|
+
export { getIndexCacheBytesForTesting, getIndexCacheSizeForTesting, resetIndexCacheForTesting, resetSummaryCacheForTesting, } from "./index-cache.js";
|
|
12
|
+
export { resetIndexBackendForTesting, resetMigrationCacheForTesting, resolveIndexBackend, sqlitePathFor, } from "./index-migration.js";
|
|
13
|
+
export { collectExtractorVersionMismatches, isExtractorVersionCurrent, } from "./index-version.js";
|
|
14
|
+
export { getIndexWriteCountForTesting, resetIndexWriteCountForTesting, } from "./index-json-mutations.js";
|
|
72
15
|
async function ensureSqliteMigrated(indexPath, dbPath) {
|
|
73
|
-
|
|
74
|
-
if (inFlight)
|
|
75
|
-
return inFlight;
|
|
76
|
-
const run = (async () => {
|
|
77
|
-
if ((await loadIndexSqlite(dbPath)) !== null)
|
|
78
|
-
return; // already migrated
|
|
79
|
-
const legacy = await loadJsonIndex(indexPath);
|
|
80
|
-
// importLegacyIndexIfEmpty re-checks emptiness under the write lock, so a second
|
|
81
|
-
// process that raced us here imports nothing instead of overwriting our rows.
|
|
82
|
-
if (legacy)
|
|
83
|
-
await importLegacyIndexIfEmpty(dbPath, legacy);
|
|
84
|
-
})();
|
|
85
|
-
migrations.set(dbPath, run);
|
|
86
|
-
try {
|
|
87
|
-
await run;
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
// A failed migration is retried, not remembered as done — and we do NOT re-read the same
|
|
91
|
-
// failing database to decide that. Probing it again inside a `finally` would hit an
|
|
92
|
-
// already-struggling store a second time AND, if that probe throws too, JS try/finally
|
|
93
|
-
// semantics would replace the original error with the second one.
|
|
94
|
-
migrations.delete(dbPath);
|
|
95
|
-
throw err;
|
|
96
|
-
}
|
|
97
|
-
migrations.set(dbPath, Promise.resolve());
|
|
98
|
-
}
|
|
99
|
-
export function resetMigrationCacheForTesting() {
|
|
100
|
-
migrations.clear();
|
|
16
|
+
await migrateLegacyIndex(indexPath, dbPath, loadJsonIndex);
|
|
101
17
|
}
|
|
102
18
|
/**
|
|
103
19
|
* Save a code index atomically.
|
|
104
20
|
* Writes to a temp file first, then renames to prevent partial reads.
|
|
105
21
|
*/
|
|
106
22
|
export async function saveIndex(indexPath, index, opts) {
|
|
23
|
+
assertCanonicalIndexPath(indexPath);
|
|
107
24
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
108
25
|
const dbPath = sqlitePathFor(indexPath);
|
|
109
26
|
await saveIndexSqlite(dbPath, index, opts);
|
|
@@ -143,6 +60,7 @@ export async function loadIndex(indexPath, currentVersions) {
|
|
|
143
60
|
* The JSON backend keeps the old cost; there is no way to read one record out of a blob.
|
|
144
61
|
*/
|
|
145
62
|
export async function getFileEntry(indexPath, filePath) {
|
|
63
|
+
assertCanonicalIndexPath(indexPath);
|
|
146
64
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
147
65
|
const dbPath = sqlitePathFor(indexPath);
|
|
148
66
|
await ensureSqliteMigrated(indexPath, dbPath);
|
|
@@ -151,84 +69,6 @@ export async function getFileEntry(indexPath, filePath) {
|
|
|
151
69
|
const index = await loadJsonIndex(indexPath);
|
|
152
70
|
return index?.files.find((f) => f.path === filePath);
|
|
153
71
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Bounded, LRU by insertion order. A materialised index is the largest object this process
|
|
156
|
-
* holds — the JSON equivalent is 262 MB on tgm-survey-platform — and `codesift serve` is a
|
|
157
|
-
* long-lived daemon that touches many repos. An unbounded map here would have been the one
|
|
158
|
-
* cache in this codebase without a ceiling, next to an embedding cache that is explicitly
|
|
159
|
-
* RAM-budgeted (`CODESIFT_MAX_EMBEDDING_MEM_MB`); that asymmetry is how the OOM reports
|
|
160
|
-
* documented in CLAUDE.md started.
|
|
161
|
-
*/
|
|
162
|
-
// `|| 3` would be wrong here: an operator setting 0 to minimise memory would get 3, because
|
|
163
|
-
// 0 is falsy. Only a non-numeric value should fall back.
|
|
164
|
-
const MAX_CACHED_INDEXES = (() => {
|
|
165
|
-
const raw = process.env["CODESIFT_MAX_CACHED_INDEXES"];
|
|
166
|
-
const parsed = raw === undefined ? 3 : Number(raw);
|
|
167
|
-
return Math.max(1, Number.isNaN(parsed) ? 3 : parsed);
|
|
168
|
-
})();
|
|
169
|
-
const indexCache = new Map();
|
|
170
|
-
function cachedBytes() {
|
|
171
|
-
let total = 0;
|
|
172
|
-
for (const entry of indexCache.values())
|
|
173
|
-
total += indexFootprintBytes(entry.index);
|
|
174
|
-
return total;
|
|
175
|
-
}
|
|
176
|
-
function cacheIndex(dbPath, entry) {
|
|
177
|
-
// Re-insert to move to the most-recent end of Map iteration order.
|
|
178
|
-
indexCache.delete(dbPath);
|
|
179
|
-
indexCache.set(dbPath, entry);
|
|
180
|
-
const budget = indexCacheMemBudgetBytes();
|
|
181
|
-
// Evict oldest-first on EITHER bound. The count cap alone let three repos of any size sit
|
|
182
|
-
// resident, and index sizes span two orders of magnitude — the measured tgm-survey-platform
|
|
183
|
-
// index is 411 MB against a few MB for a small repo, so "three indexes" was a ceiling only in
|
|
184
|
-
// name. The byte bound is the real one; the count cap stays as a cheap upper limit on entries.
|
|
185
|
-
//
|
|
186
|
-
// The running total is decremented per eviction rather than re-summed in the loop condition.
|
|
187
|
-
// `MAX_CACHED_INDEXES` has a floor but no ceiling (`CODESIFT_MAX_CACHED_INDEXES` is operator
|
|
188
|
-
// input), and re-summing would make each insert O(n²) in exactly the many-repo daemon this
|
|
189
|
-
// budget was written for.
|
|
190
|
-
let total = cachedBytes();
|
|
191
|
-
while (indexCache.size > 1 && (indexCache.size > MAX_CACHED_INDEXES || total > budget)) {
|
|
192
|
-
const oldest = indexCache.entries().next();
|
|
193
|
-
if (oldest.done)
|
|
194
|
-
break;
|
|
195
|
-
const [key, entry] = oldest.value;
|
|
196
|
-
total -= indexFootprintBytes(entry.index);
|
|
197
|
-
indexCache.delete(key);
|
|
198
|
-
}
|
|
199
|
-
// `size > 1` above deliberately keeps the entry just inserted even when it alone exceeds the
|
|
200
|
-
// budget. Evicting it would mean re-reading the same index on the very next call and evicting
|
|
201
|
-
// it again — an unbounded reload loop that costs far more than the memory it reclaims. A repo
|
|
202
|
-
// bigger than the whole budget is a reason to raise CODESIFT_MAX_INDEX_CACHE_MB, not to stop
|
|
203
|
-
// caching it.
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Detach the two arrays callers actually touch.
|
|
207
|
-
*
|
|
208
|
-
* A bare `{...index}` only stops a caller REASSIGNING `files`/`symbols`; an in-place
|
|
209
|
-
* `push`/`sort`/`splice` would still hit the array the cache holds — and `data_version`
|
|
210
|
-
* cannot see an in-memory mutation, so the corruption would survive every later hit. The
|
|
211
|
-
* elements stay shared (symbols are treated as immutable records); this copies the two
|
|
212
|
-
* array containers, which is the boundary that was actually being crossed.
|
|
213
|
-
*/
|
|
214
|
-
function copyIndex(index) {
|
|
215
|
-
return { ...index, files: [...index.files], symbols: [...index.symbols] };
|
|
216
|
-
}
|
|
217
|
-
function invalidateIndexCache(dbPath) {
|
|
218
|
-
indexCache.delete(dbPath);
|
|
219
|
-
// Our own writes do not move `data_version`, so the summary must be dropped explicitly too —
|
|
220
|
-
// otherwise a save would leave `index_status` reporting the pre-write counts indefinitely.
|
|
221
|
-
summaryCache.delete(dbPath);
|
|
222
|
-
}
|
|
223
|
-
export function resetIndexCacheForTesting() {
|
|
224
|
-
indexCache.clear();
|
|
225
|
-
}
|
|
226
|
-
export function getIndexCacheSizeForTesting() {
|
|
227
|
-
return indexCache.size;
|
|
228
|
-
}
|
|
229
|
-
export function getIndexCacheBytesForTesting() {
|
|
230
|
-
return cachedBytes();
|
|
231
|
-
}
|
|
232
72
|
/**
|
|
233
73
|
* Read an index's files and metadata WITHOUT constructing its symbols (ADR-004 stage 2).
|
|
234
74
|
*
|
|
@@ -237,6 +77,7 @@ export function getIndexCacheBytesForTesting() {
|
|
|
237
77
|
* callers can be written once against the narrow shape rather than branching on the backend.
|
|
238
78
|
*/
|
|
239
79
|
export async function loadIndexSummary(indexPath) {
|
|
80
|
+
assertCanonicalIndexPath(indexPath);
|
|
240
81
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
241
82
|
const dbPath = sqlitePathFor(indexPath);
|
|
242
83
|
await ensureSqliteMigrated(indexPath, dbPath);
|
|
@@ -246,25 +87,13 @@ export async function loadIndexSummary(indexPath) {
|
|
|
246
87
|
// behind it. A summary is small (3 MB against 349 MB on the measured index), so this is not
|
|
247
88
|
// budgeted against `CODESIFT_MAX_INDEX_CACHE_MB`; it is bounded by entry count instead.
|
|
248
89
|
const dataVersion = await getDataVersion(dbPath);
|
|
249
|
-
const cached =
|
|
250
|
-
if (cached
|
|
251
|
-
|
|
252
|
-
summaryCache.set(dbPath, cached); // move to the recent end (LRU, as in cacheIndex)
|
|
253
|
-
return copySummary(cached.summary);
|
|
254
|
-
}
|
|
90
|
+
const cached = getCachedSummary(dbPath, dataVersion);
|
|
91
|
+
if (cached !== null)
|
|
92
|
+
return cached;
|
|
255
93
|
const summary = await loadIndexSummarySqlite(dbPath);
|
|
256
94
|
if (summary === null)
|
|
257
95
|
return null;
|
|
258
|
-
|
|
259
|
-
while (summaryCache.size > MAX_CACHED_SUMMARIES) {
|
|
260
|
-
const oldest = summaryCache.keys().next();
|
|
261
|
-
if (oldest.done)
|
|
262
|
-
break;
|
|
263
|
-
summaryCache.delete(oldest.value);
|
|
264
|
-
}
|
|
265
|
-
// Copy on the miss path too, for the same reason `readIndex` does: handing back the stored
|
|
266
|
-
// object lets the first caller mutate the entry every later reader is about to be given.
|
|
267
|
-
return copySummary(summary);
|
|
96
|
+
return cacheLoadedSummary(dbPath, summary, dataVersion);
|
|
268
97
|
}
|
|
269
98
|
warnIfRollbackIsStale(indexPath);
|
|
270
99
|
const index = await loadJsonIndex(indexPath);
|
|
@@ -302,26 +131,18 @@ export function summariseIndex(index) {
|
|
|
302
131
|
}
|
|
303
132
|
/** Backend-agnostic read, without version enforcement. */
|
|
304
133
|
async function readIndex(indexPath) {
|
|
134
|
+
assertCanonicalIndexPath(indexPath);
|
|
305
135
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
306
136
|
const dbPath = sqlitePathFor(indexPath);
|
|
307
137
|
await ensureSqliteMigrated(indexPath, dbPath);
|
|
308
138
|
const dataVersion = await getDataVersion(dbPath);
|
|
309
|
-
const cached =
|
|
310
|
-
if (cached
|
|
311
|
-
|
|
312
|
-
// the hottest repo would be evicted the moment an (N+1)th repo is touched, while a
|
|
313
|
-
// repo read once and never again outlives it. That thrashes exactly the working set
|
|
314
|
-
// the cache exists to keep warm.
|
|
315
|
-
cacheIndex(dbPath, cached);
|
|
316
|
-
return copyIndex(cached.index);
|
|
317
|
-
}
|
|
139
|
+
const cached = getCachedIndex(dbPath, dataVersion);
|
|
140
|
+
if (cached !== null)
|
|
141
|
+
return cached;
|
|
318
142
|
const index = await loadIndexSqlite(dbPath);
|
|
319
143
|
if (!index)
|
|
320
144
|
return null;
|
|
321
|
-
|
|
322
|
-
// Copy on the miss path too: returning the freshly-cached object itself would let the
|
|
323
|
-
// very first caller mutate the entry every later reader is about to be handed.
|
|
324
|
-
return copyIndex(index);
|
|
145
|
+
return cacheLoadedIndex(dbPath, index, dataVersion);
|
|
325
146
|
}
|
|
326
147
|
warnIfRollbackIsStale(indexPath);
|
|
327
148
|
return loadJsonIndex(indexPath);
|
|
@@ -408,43 +229,11 @@ async function loadJsonIndex(indexPath) {
|
|
|
408
229
|
return null; // malformed JSON is a rebuildable index, not a storage fault
|
|
409
230
|
}
|
|
410
231
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
indexedLanguages.add(file.language);
|
|
417
|
-
const out = [];
|
|
418
|
-
// Degenerate index: no files AND no version keys — treat as empty/uninitialized.
|
|
419
|
-
// Use the sentinel language "*" so callers and operators can recognize the case
|
|
420
|
-
// instead of being misled into thinking a specific extractor drifted (the prior
|
|
421
|
-
// implementation reported `Object.keys(currentVersions)[0]`, which was arbitrary).
|
|
422
|
-
if (index.files.length === 0 && storedKeys.length === 0) {
|
|
423
|
-
const langKeys = Object.keys(currentVersions);
|
|
424
|
-
if (langKeys.length === 0)
|
|
425
|
-
return [];
|
|
426
|
-
out.push({
|
|
427
|
-
language: "*",
|
|
428
|
-
expected: "any",
|
|
429
|
-
actual: "empty_index",
|
|
430
|
-
});
|
|
431
|
-
return out;
|
|
432
|
-
}
|
|
433
|
-
for (const lang of Object.keys(currentVersions)) {
|
|
434
|
-
const expected = currentVersions[lang];
|
|
435
|
-
const actual = stored[lang];
|
|
436
|
-
if (expected === actual)
|
|
437
|
-
continue;
|
|
438
|
-
if (actual === undefined && !indexedLanguages.has(lang))
|
|
439
|
-
continue;
|
|
440
|
-
out.push({
|
|
441
|
-
language: lang,
|
|
442
|
-
expected: expected ?? "unknown",
|
|
443
|
-
actual: actual ?? "missing",
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
return out;
|
|
447
|
-
}
|
|
232
|
+
/** Discriminated union returned by loadIndexOrStale: distinguishes a healthy
|
|
233
|
+
* load from a version-mismatch stale-index case. Tools route through this
|
|
234
|
+
* helper instead of calling loadIndex directly so stale indexes surface as
|
|
235
|
+
* structured errors via staleToMcpError (src/tools/_helpers.ts) rather than
|
|
236
|
+
* silent empty results. */
|
|
448
237
|
/** Load an index with version-aware stale detection.
|
|
449
238
|
*
|
|
450
239
|
* Returns:
|
|
@@ -463,164 +252,16 @@ export function collectExtractorVersionMismatches(index, currentVersions) {
|
|
|
463
252
|
* to `loadIndex(...)` returning null. Callers must still handle null (no
|
|
464
253
|
* structured error) for those cases. */
|
|
465
254
|
export async function loadIndexOrStale(indexPath, currentVersions) {
|
|
466
|
-
|
|
467
|
-
try {
|
|
468
|
-
parsed = await readIndex(indexPath);
|
|
469
|
-
}
|
|
470
|
-
catch (err) {
|
|
471
|
-
const code = classifyStorageError(err);
|
|
472
|
-
if (code === null)
|
|
473
|
-
throw err;
|
|
474
|
-
return {
|
|
475
|
-
status: "unreadable",
|
|
476
|
-
reason: "storage_error",
|
|
477
|
-
code,
|
|
478
|
-
message: err instanceof Error ? err.message : String(err),
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
try {
|
|
482
|
-
if (!parsed)
|
|
483
|
-
return null;
|
|
484
|
-
const mismatches = collectExtractorVersionMismatches(parsed, currentVersions);
|
|
485
|
-
if (mismatches.length > 0) {
|
|
486
|
-
const first = mismatches[0];
|
|
487
|
-
return {
|
|
488
|
-
status: "stale",
|
|
489
|
-
reason: "extractor_version_mismatch",
|
|
490
|
-
language: first.language,
|
|
491
|
-
expected_version: first.expected,
|
|
492
|
-
actual_version: first.actual,
|
|
493
|
-
...(mismatches.length > 1
|
|
494
|
-
? {
|
|
495
|
-
mismatch_detail: mismatches
|
|
496
|
-
.map((m) => `${m.language}: expected ${m.expected}, got ${m.actual}`)
|
|
497
|
-
.join("; "),
|
|
498
|
-
}
|
|
499
|
-
: {}),
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
return { status: "ok", index: parsed };
|
|
503
|
-
}
|
|
504
|
-
catch {
|
|
505
|
-
return null;
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* Check whether the stored `extractor_version` snapshot matches the current
|
|
510
|
-
* set of extractor versions. Returns false when any language present in BOTH
|
|
511
|
-
* `currentVersions` and `index.files` is missing from the stored snapshot or
|
|
512
|
-
* has a different value. Languages added to `currentVersions` after this index
|
|
513
|
-
* was written are tolerated when the index has no files in that language —
|
|
514
|
-
* matches the tolerance applied by `collectExtractorVersionMismatches`. A missing
|
|
515
|
-
* `extractor_version` field on a fully legacy index is still treated as a
|
|
516
|
-
* version miss.
|
|
517
|
-
*/
|
|
518
|
-
export function isExtractorVersionCurrent(index, currentVersions) {
|
|
519
|
-
if (!index.extractor_version)
|
|
520
|
-
return false;
|
|
521
|
-
return collectExtractorVersionMismatches(index, currentVersions).length === 0;
|
|
522
|
-
}
|
|
523
|
-
const pendingMutations = new Map();
|
|
524
|
-
const scheduledFlushes = new Map();
|
|
525
|
-
/**
|
|
526
|
-
* Count of full index rewrites. Exposed for tests: the whole point of batching
|
|
527
|
-
* is that N queued edits cost fewer than N rewrites, and ESM will not let a
|
|
528
|
-
* test spy on `node:fs/promises` to measure that from the outside.
|
|
529
|
-
*/
|
|
530
|
-
let indexWriteCount = 0;
|
|
531
|
-
export function getIndexWriteCountForTesting() {
|
|
532
|
-
return indexWriteCount;
|
|
533
|
-
}
|
|
534
|
-
export function resetIndexWriteCountForTesting() {
|
|
535
|
-
indexWriteCount = 0;
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Fold every queued mutation for one index into a SINGLE load + save.
|
|
539
|
-
*
|
|
540
|
-
* The index is one JSON blob per repo, so each write costs a full parse plus a
|
|
541
|
-
* full stringify of the whole thing — 263 MB on tgm-survey-platform, 391 MB on
|
|
542
|
-
* Mobi3. Agents edit in bursts and the PostToolUse hook calls index_file once
|
|
543
|
-
* per edit, so the old one-write-per-edit path re-serialised the entire repo N
|
|
544
|
-
* times for N files. Telemetry over 10,613 index_file calls: 235 ms median
|
|
545
|
-
* overall, but 3.7 s median / 15.2 s p90 on tgm-survey-platform, 7.5 h of wall
|
|
546
|
-
* clock in total. Batching collapses a burst of N edits to one parse+write.
|
|
547
|
-
*
|
|
548
|
-
* Ordering and durability are unchanged: mutations still apply in submission
|
|
549
|
-
* order, and a caller's promise still resolves only once its own edit is on
|
|
550
|
-
* disk. This does not fix the underlying whole-blob format — it removes the
|
|
551
|
-
* repeated cost of it.
|
|
552
|
-
*/
|
|
553
|
-
async function flushIndexMutations(indexPath) {
|
|
554
|
-
const batch = pendingMutations.get(indexPath);
|
|
555
|
-
if (!batch || batch.length === 0)
|
|
556
|
-
return;
|
|
557
|
-
// Take ownership before the first await: anything queued from here on belongs
|
|
558
|
-
// to the next flush, which the scheduler chains after this one.
|
|
559
|
-
pendingMutations.delete(indexPath);
|
|
560
|
-
try {
|
|
561
|
-
const existing = await loadIndex(indexPath);
|
|
562
|
-
if (!existing) {
|
|
563
|
-
// Updates need an index to update; removals against a missing index are
|
|
564
|
-
// already in the desired state.
|
|
565
|
-
for (const mutation of batch) {
|
|
566
|
-
if (mutation.missing === "throw") {
|
|
567
|
-
mutation.reject(new Error(`Cannot incrementally update: index not found at ${indexPath}`));
|
|
568
|
-
}
|
|
569
|
-
else {
|
|
570
|
-
mutation.resolve();
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
return;
|
|
574
|
-
}
|
|
575
|
-
let changed = false;
|
|
576
|
-
for (const mutation of batch) {
|
|
577
|
-
if (mutation.apply(existing))
|
|
578
|
-
changed = true;
|
|
579
|
-
}
|
|
580
|
-
// A batch of pure no-ops (e.g. removing files the index never had) must not
|
|
581
|
-
// rewrite the whole blob — that was the point of the old early return.
|
|
582
|
-
if (changed) {
|
|
583
|
-
existing.updated_at = Date.now();
|
|
584
|
-
indexWriteCount++;
|
|
585
|
-
await saveIndex(indexPath, existing);
|
|
586
|
-
}
|
|
587
|
-
for (const mutation of batch)
|
|
588
|
-
mutation.resolve();
|
|
589
|
-
}
|
|
590
|
-
catch (err) {
|
|
591
|
-
for (const mutation of batch)
|
|
592
|
-
mutation.reject(err);
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
/** Queue a mutation and make sure exactly one flush is pending per index. */
|
|
596
|
-
function enqueueIndexMutation(indexPath, missing, apply) {
|
|
597
|
-
return new Promise((resolve, reject) => {
|
|
598
|
-
const queue = pendingMutations.get(indexPath);
|
|
599
|
-
if (queue)
|
|
600
|
-
queue.push({ apply, missing, resolve, reject });
|
|
601
|
-
else
|
|
602
|
-
pendingMutations.set(indexPath, [{ apply, missing, resolve, reject }]);
|
|
603
|
-
// A flush already waiting has not drained yet, so it will pick this up.
|
|
604
|
-
if (scheduledFlushes.has(indexPath))
|
|
605
|
-
return;
|
|
606
|
-
const prev = writeLocks.get(indexPath) ?? Promise.resolve();
|
|
607
|
-
const next = prev.then(() => {
|
|
608
|
-
// Release the slot before draining so mutations that arrive during the
|
|
609
|
-
// load/save schedule their own follow-up flush instead of being lost.
|
|
610
|
-
scheduledFlushes.delete(indexPath);
|
|
611
|
-
return flushIndexMutations(indexPath);
|
|
612
|
-
});
|
|
613
|
-
scheduledFlushes.set(indexPath, next);
|
|
614
|
-
// Swallow errors on the lock chain so one failure cannot block later writers.
|
|
615
|
-
writeLocks.set(indexPath, next.catch(() => { }));
|
|
616
|
-
});
|
|
255
|
+
return loadVersionAwareIndex(indexPath, currentVersions, readIndex);
|
|
617
256
|
}
|
|
257
|
+
const jsonMutationIo = { loadIndex, saveIndex };
|
|
618
258
|
/**
|
|
619
259
|
* Incrementally update an index for a single changed file.
|
|
620
260
|
* Removes old symbols for the file, adds new ones, and saves atomically.
|
|
621
261
|
* Serialized per indexPath to prevent read-modify-write races.
|
|
622
262
|
*/
|
|
623
263
|
export async function saveIncremental(indexPath, updatedFile, newSymbols, fileEntry) {
|
|
264
|
+
assertCanonicalIndexPath(indexPath);
|
|
624
265
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
625
266
|
const dbPath = sqlitePathFor(indexPath);
|
|
626
267
|
await ensureSqliteMigrated(indexPath, dbPath);
|
|
@@ -630,26 +271,14 @@ export async function saveIncremental(indexPath, updatedFile, newSymbols, fileEn
|
|
|
630
271
|
invalidateIndexCache(dbPath);
|
|
631
272
|
return;
|
|
632
273
|
}
|
|
633
|
-
return
|
|
634
|
-
const filtered = existing.symbols.filter((symbol) => symbol.file !== updatedFile);
|
|
635
|
-
const merged = [...filtered, ...newSymbols];
|
|
636
|
-
existing.symbols = merged;
|
|
637
|
-
existing.symbol_count = merged.length;
|
|
638
|
-
// Update files[] to keep it in sync
|
|
639
|
-
if (fileEntry) {
|
|
640
|
-
existing.files = existing.files.filter((f) => f.path !== updatedFile);
|
|
641
|
-
existing.files.push(fileEntry);
|
|
642
|
-
existing.file_count = existing.files.length;
|
|
643
|
-
}
|
|
644
|
-
// A re-index of a file always rewrites its symbols, so this is never a no-op.
|
|
645
|
-
return true;
|
|
646
|
-
});
|
|
274
|
+
return saveIncrementalJson(indexPath, updatedFile, newSymbols, fileEntry, jsonMutationIo);
|
|
647
275
|
}
|
|
648
276
|
/**
|
|
649
277
|
* Remove all symbols and the file entry for a deleted file.
|
|
650
278
|
* Serialized per indexPath to prevent read-modify-write races.
|
|
651
279
|
*/
|
|
652
280
|
export async function removeFileFromIndex(indexPath, deletedFile) {
|
|
281
|
+
assertCanonicalIndexPath(indexPath);
|
|
653
282
|
if ((await resolveIndexBackend()) === "sqlite") {
|
|
654
283
|
const dbPath = sqlitePathFor(indexPath);
|
|
655
284
|
await ensureSqliteMigrated(indexPath, dbPath);
|
|
@@ -657,17 +286,7 @@ export async function removeFileFromIndex(indexPath, deletedFile) {
|
|
|
657
286
|
invalidateIndexCache(dbPath);
|
|
658
287
|
return;
|
|
659
288
|
}
|
|
660
|
-
return
|
|
661
|
-
const hadSymbols = existing.symbols.some((s) => s.file === deletedFile);
|
|
662
|
-
const hadFile = existing.files.some((f) => f.path === deletedFile);
|
|
663
|
-
if (!hadSymbols && !hadFile)
|
|
664
|
-
return false;
|
|
665
|
-
existing.symbols = existing.symbols.filter((s) => s.file !== deletedFile);
|
|
666
|
-
existing.symbol_count = existing.symbols.length;
|
|
667
|
-
existing.files = existing.files.filter((f) => f.path !== deletedFile);
|
|
668
|
-
existing.file_count = existing.files.length;
|
|
669
|
-
return true;
|
|
670
|
-
});
|
|
289
|
+
return removeFileFromJsonIndex(indexPath, deletedFile, jsonMutationIo);
|
|
671
290
|
}
|
|
672
291
|
/**
|
|
673
292
|
* Derive a deterministic index file path from a repo root.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../src/storage/index-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { CodeIndex } from "../types.js";
|
|
2
|
+
/** Result of a version-aware index load. */
|
|
3
|
+
export type IndexOrStaleResult = {
|
|
4
|
+
status: "ok";
|
|
5
|
+
index: CodeIndex;
|
|
6
|
+
} | {
|
|
7
|
+
status: "unreadable";
|
|
8
|
+
reason: "storage_error";
|
|
9
|
+
code: string;
|
|
10
|
+
message: string;
|
|
11
|
+
} | {
|
|
12
|
+
status: "stale";
|
|
13
|
+
reason: "extractor_version_mismatch";
|
|
14
|
+
language: string;
|
|
15
|
+
expected_version: string;
|
|
16
|
+
actual_version: string;
|
|
17
|
+
mismatch_detail?: string;
|
|
18
|
+
};
|
|
19
|
+
export type ExtractorVersionMismatchRow = {
|
|
20
|
+
language: string;
|
|
21
|
+
expected: string;
|
|
22
|
+
actual: string;
|
|
23
|
+
};
|
|
24
|
+
/** Only the fields required to validate extractor versions. */
|
|
25
|
+
export type ExtractorVersionCheckable = Pick<CodeIndex, "extractor_version" | "files">;
|
|
26
|
+
/**
|
|
27
|
+
* Return every language whose stored extractor version differs from the bundled version.
|
|
28
|
+
* Newly added extractors are tolerated until the index actually contains that language.
|
|
29
|
+
*/
|
|
30
|
+
export declare function collectExtractorVersionMismatches(index: ExtractorVersionCheckable, currentVersions: Record<string, string>): ExtractorVersionMismatchRow[];
|
|
31
|
+
export declare function isExtractorVersionCurrent(index: ExtractorVersionCheckable, currentVersions: Record<string, string>): boolean;
|
|
32
|
+
type IndexReader = (indexPath: string) => Promise<CodeIndex | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Load an index and turn extractor drift or storage failures into structured results.
|
|
35
|
+
* The facade injects its backend-agnostic reader to keep this module independent of it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadVersionAwareIndex(indexPath: string, currentVersions: Record<string, string>, readIndex: IndexReader): Promise<IndexOrStaleResult | null>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=index-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-version.d.ts","sourceRoot":"","sources":["../../src/storage/index-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,4CAA4C;AAC5C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClC;IACE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,4BAA4B,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;AAEvF;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,yBAAyB,EAChC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,2BAA2B,EAAE,CA0B/B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,yBAAyB,EAChC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAGT;AAED,KAAK,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;AAEpE;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAuCpC"}
|