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
package/README.md
CHANGED
|
@@ -724,7 +724,11 @@ Design rationale and rejected alternatives: [`docs/adr/ADR-003-index-storage-for
|
|
|
724
724
|
|
|
725
725
|
CodeSift sends **anonymous, aggregate** usage stats so the tool can be improved based on how it's actually used. It is **opt-out** and sends **only** the fields below — never your queries, file paths, repo/file/symbol names, code, hostname, username, or IP.
|
|
726
726
|
|
|
727
|
-
**Exactly what is sent (allowlist):** a random per-install id (not derived from your machine); bucketed environment (OS, arch, RAM bucket, cores, Node & CodeSift version, repo-size bucket, top-3 file extensions); and per-tool-per-day aggregates (call count, latency p50/p95/max, error rate, empty-result rate, cache-hit rate) plus response-hint emission counts.
|
|
727
|
+
**Exactly what is sent (allowlist):** a random per-install id (not derived from your machine); bucketed environment (OS, arch, RAM bucket, cores, Node & CodeSift version, repo-size bucket, top-3 file extensions); and per-tool-per-day aggregates (call count, latency p50/p95/max, error rate, empty-result rate, cache-hit rate) plus response-hint emission counts.
|
|
728
|
+
|
|
729
|
+
**If [zuvo](https://github.com/greglas75/zuvo-plugin) is also installed**, anonymous per-skill rollups are included as well: which skill ran, its friction category, whether the audit/adversarial gates produced a verdict or were skipped, and median effort — as daily medians and counts, never sums, so total workload does not leak. A retro line's four identifying fields (project, branch, commit sha, free-text note) are **never read at all** — they are omitted from the field map rather than read and scrubbed, so anonymity survives a format change instead of depending on one. The key is absent entirely when no zuvo is installed, so "absent" and "ran but produced nothing" stay distinguishable. With no zuvo on the machine, nothing in this paragraph applies.
|
|
730
|
+
|
|
731
|
+
The allowlist is enforced in code — see [`src/storage/telemetry/sanitizer.ts`](src/storage/telemetry/sanitizer.ts) — and the first-run notice is held to it by a test that fails if the payload can emit a dimension the notice does not name.
|
|
728
732
|
|
|
729
733
|
**See the exact payload** that would be sent from your machine:
|
|
730
734
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Flags } from "./args.js";
|
|
2
|
+
declare function handleComplexity(args: string[], flags: Flags): Promise<void>;
|
|
3
|
+
declare function handleDeadCode(args: string[], flags: Flags): Promise<void>;
|
|
4
|
+
declare function handleHotspots(args: string[], flags: Flags): Promise<void>;
|
|
5
|
+
declare function handleCommunities(args: string[], flags: Flags): Promise<void>;
|
|
6
|
+
declare function handlePatterns(args: string[], flags: Flags): Promise<void>;
|
|
7
|
+
declare function handleSetup(args: string[], flags: Flags): Promise<void>;
|
|
8
|
+
declare function handleFindClones(args: string[], flags: Flags): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* `codesift service install|uninstall|status` — supervise the shared daemon.
|
|
11
|
+
*
|
|
12
|
+
* `serve` alone dies with the terminal that started it and never comes back
|
|
13
|
+
* after a crash or reboot, which is precisely the failure the shared-daemon
|
|
14
|
+
* model cannot tolerate: every client is configured to talk to one process.
|
|
15
|
+
*/
|
|
16
|
+
declare function handleService(args: string[], flags: Flags): Promise<void>;
|
|
17
|
+
export { handleComplexity, handleDeadCode, handleHotspots, handleCommunities, handlePatterns, handleSetup, handleFindClones, handleService, };
|
|
18
|
+
//# sourceMappingURL=commands-admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-admin.d.ts","sourceRoot":"","sources":["../../src/cli/commands-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAOvC,iBAAe,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E;AAED,iBAAe,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AAED,iBAAe,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzE;AAED,iBAAe,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5E;AAED,iBAAe,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzE;AAED,iBAAe,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EtE;AAED,iBAAe,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E;AAGD;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CxE;AAED,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,aAAa,GACd,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { getFlag, getBoolFlag, getNumFlag, requireArg, requireFlag, output, die } from "./args.js";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Analysis commands
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
async function handleComplexity(args, flags) {
|
|
6
|
+
const repo = requireArg(args, 0, "repo");
|
|
7
|
+
const { analyzeComplexity } = await import("../tools/complexity-tools.js");
|
|
8
|
+
const result = await analyzeComplexity(repo, {
|
|
9
|
+
file_pattern: getFlag(flags, "file-pattern"),
|
|
10
|
+
top_n: getNumFlag(flags, "top-n"),
|
|
11
|
+
min_complexity: getNumFlag(flags, "min-complexity"),
|
|
12
|
+
include_tests: getBoolFlag(flags, "include-tests"),
|
|
13
|
+
});
|
|
14
|
+
output(result, flags);
|
|
15
|
+
}
|
|
16
|
+
async function handleDeadCode(args, flags) {
|
|
17
|
+
const repo = requireArg(args, 0, "repo");
|
|
18
|
+
const { findDeadCode } = await import("../tools/symbol-tools.js");
|
|
19
|
+
const result = await findDeadCode(repo, {
|
|
20
|
+
file_pattern: getFlag(flags, "file-pattern"),
|
|
21
|
+
include_tests: getBoolFlag(flags, "include-tests"),
|
|
22
|
+
});
|
|
23
|
+
output(result, flags);
|
|
24
|
+
}
|
|
25
|
+
async function handleHotspots(args, flags) {
|
|
26
|
+
const repo = requireArg(args, 0, "repo");
|
|
27
|
+
const { analyzeHotspots } = await import("../tools/hotspot-tools.js");
|
|
28
|
+
const result = await analyzeHotspots(repo, {
|
|
29
|
+
since_days: getNumFlag(flags, "since-days"),
|
|
30
|
+
top_n: getNumFlag(flags, "top-n"),
|
|
31
|
+
file_pattern: getFlag(flags, "file-pattern"),
|
|
32
|
+
});
|
|
33
|
+
output(result, flags);
|
|
34
|
+
}
|
|
35
|
+
async function handleCommunities(args, flags) {
|
|
36
|
+
const repo = requireArg(args, 0, "repo");
|
|
37
|
+
const { detectCommunities } = await import("../tools/community-tools.js");
|
|
38
|
+
const result = await detectCommunities(repo, getFlag(flags, "focus"), getNumFlag(flags, "resolution"), getFlag(flags, "output-format"));
|
|
39
|
+
output(result, flags);
|
|
40
|
+
}
|
|
41
|
+
async function handlePatterns(args, flags) {
|
|
42
|
+
const repo = requireArg(args, 0, "repo");
|
|
43
|
+
const pattern = requireFlag(flags, "pattern");
|
|
44
|
+
const { searchPatterns } = await import("../tools/pattern-tools.js");
|
|
45
|
+
const result = await searchPatterns(repo, pattern, {
|
|
46
|
+
file_pattern: getFlag(flags, "file-pattern"),
|
|
47
|
+
include_tests: getBoolFlag(flags, "include-tests"),
|
|
48
|
+
max_results: getNumFlag(flags, "max-results"),
|
|
49
|
+
});
|
|
50
|
+
output(result, flags);
|
|
51
|
+
}
|
|
52
|
+
async function handleSetup(args, flags) {
|
|
53
|
+
const platform = args[0];
|
|
54
|
+
const { formatSetupLines, SUPPORTED_PLATFORMS } = await import("./setup.js");
|
|
55
|
+
if (!platform) {
|
|
56
|
+
die(`Missing platform. Usage: codesift setup <${SUPPORTED_PLATFORMS.join("|")}|all>`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const hooks = getBoolFlag(flags, "no-hooks")
|
|
60
|
+
? false
|
|
61
|
+
: (getBoolFlag(flags, "hooks") ?? true);
|
|
62
|
+
const rules = getBoolFlag(flags, "no-rules")
|
|
63
|
+
? false
|
|
64
|
+
: (getBoolFlag(flags, "rules") ?? true);
|
|
65
|
+
const force = getBoolFlag(flags, "force") ?? false;
|
|
66
|
+
// `--no-git-hooks` is a standalone boolean flag (parseArgs stores "no-git-hooks", not "git-hooks": false).
|
|
67
|
+
const gitHooks = getBoolFlag(flags, "no-git-hooks")
|
|
68
|
+
? false
|
|
69
|
+
: (getBoolFlag(flags, "git-hooks") ?? hooks);
|
|
70
|
+
// --http points the client at the shared `codesift serve` daemon (one process
|
|
71
|
+
// per machine) instead of spawning a stdio server per editor window.
|
|
72
|
+
const http = getBoolFlag(flags, "http") ?? false;
|
|
73
|
+
const port = getNumFlag(flags, "port");
|
|
74
|
+
// A SHARED daemon needs a host and a token; without these `--http` could only
|
|
75
|
+
// ever mean "the daemon on this machine", which defeats the point of having
|
|
76
|
+
// one process serve several.
|
|
77
|
+
const daemonHost = getFlag(flags, "host");
|
|
78
|
+
const daemonToken = getFlag(flags, "token") ?? process.env["CODESIFT_HTTP_TOKEN"];
|
|
79
|
+
// A bearer token on a plaintext link to another machine is refused unless the operator either
|
|
80
|
+
// asks for https or states that the transport is already encrypted (tailnet/VPN/SSH tunnel).
|
|
81
|
+
const rawScheme = getFlag(flags, "scheme");
|
|
82
|
+
const daemonScheme = rawScheme === "https" ? "https" : rawScheme === "http" ? "http" : undefined;
|
|
83
|
+
const insecureTransport = getBoolFlag(flags, "insecure-transport") ?? false;
|
|
84
|
+
const options = {
|
|
85
|
+
hooks, rules, force, gitHooks, http,
|
|
86
|
+
...(port !== undefined ? { port } : {}),
|
|
87
|
+
...(daemonHost ? { host: daemonHost } : {}),
|
|
88
|
+
...(daemonToken ? { token: daemonToken } : {}),
|
|
89
|
+
...(daemonScheme ? { scheme: daemonScheme } : {}),
|
|
90
|
+
...(insecureTransport ? { insecureTransport } : {}),
|
|
91
|
+
};
|
|
92
|
+
/** Global post-commit backlog hook — wired here because `formatSetupLines` stays editor-setup only (see setup/setupAll for programmatic installs). */
|
|
93
|
+
async function emitGlobalGitHooksIfRequested() {
|
|
94
|
+
if (options.gitHooks === false)
|
|
95
|
+
return;
|
|
96
|
+
// Match setup(): git hooks accompany editor hooks by default; allow `--git-hooks` without `--hooks`.
|
|
97
|
+
const wantGitHooks = options.hooks || getBoolFlag(flags, "git-hooks") === true;
|
|
98
|
+
if (!wantGitHooks)
|
|
99
|
+
return;
|
|
100
|
+
const { installGitHooks } = await import("./git-hooks-installer.js");
|
|
101
|
+
const result = await installGitHooks({ force });
|
|
102
|
+
if (result.reason) {
|
|
103
|
+
process.stdout.write(`⚠️ git hooks: ${result.reason}\n`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
process.stdout.write(`✓ git post-commit hook → ${result.hooksPath}\n`);
|
|
107
|
+
if (result.hooksPathSkippedReason) {
|
|
108
|
+
process.stdout.write(` (${result.hooksPathSkippedReason})\n`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (platform === "all") {
|
|
112
|
+
for (const p of SUPPORTED_PLATFORMS) {
|
|
113
|
+
const lines = await formatSetupLines(p, options);
|
|
114
|
+
for (const line of lines)
|
|
115
|
+
process.stdout.write(line + "\n");
|
|
116
|
+
}
|
|
117
|
+
await emitGlobalGitHooksIfRequested();
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const lines = await formatSetupLines(platform, options);
|
|
121
|
+
for (const line of lines)
|
|
122
|
+
process.stdout.write(line + "\n");
|
|
123
|
+
await emitGlobalGitHooksIfRequested();
|
|
124
|
+
}
|
|
125
|
+
async function handleFindClones(args, flags) {
|
|
126
|
+
const repo = requireArg(args, 0, "repo");
|
|
127
|
+
const { findClones } = await import("../tools/clone-tools.js");
|
|
128
|
+
const result = await findClones(repo, {
|
|
129
|
+
file_pattern: getFlag(flags, "file-pattern"),
|
|
130
|
+
min_similarity: getNumFlag(flags, "threshold"),
|
|
131
|
+
min_lines: getNumFlag(flags, "min-lines"),
|
|
132
|
+
include_tests: getBoolFlag(flags, "include-tests"),
|
|
133
|
+
});
|
|
134
|
+
output(result, flags);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* `codesift service install|uninstall|status` — supervise the shared daemon.
|
|
138
|
+
*
|
|
139
|
+
* `serve` alone dies with the terminal that started it and never comes back
|
|
140
|
+
* after a crash or reboot, which is precisely the failure the shared-daemon
|
|
141
|
+
* model cannot tolerate: every client is configured to talk to one process.
|
|
142
|
+
*/
|
|
143
|
+
async function handleService(args, flags) {
|
|
144
|
+
const { installService, uninstallService, serviceStatus, DEFAULT_SERVICE_PORT } = await import("./service.js");
|
|
145
|
+
const { loadConfig } = await import("../config.js");
|
|
146
|
+
const dataDir = loadConfig().dataDir;
|
|
147
|
+
const sub = args[0] ?? "status";
|
|
148
|
+
try {
|
|
149
|
+
if (sub === "install") {
|
|
150
|
+
const port = getNumFlag(flags, "port") ?? DEFAULT_SERVICE_PORT;
|
|
151
|
+
const host = getFlag(flags, "host") ?? "127.0.0.1";
|
|
152
|
+
// A routable bind needs a token; the server enforces the same rule.
|
|
153
|
+
const token = getFlag(flags, "token") ?? process.env["CODESIFT_HTTP_TOKEN"];
|
|
154
|
+
// Carry the caller's CODESIFT_* environment into the unit. A service gets
|
|
155
|
+
// almost nothing from the shell, so an embedding provider set only in the
|
|
156
|
+
// shell is silently lost and the daemon falls back to on-CPU ONNX.
|
|
157
|
+
const inheritedEnv = {};
|
|
158
|
+
for (const [k, v] of Object.entries(process.env)) {
|
|
159
|
+
if (k.startsWith("CODESIFT_") && k !== "CODESIFT_HTTP_TOKEN" && typeof v === "string") {
|
|
160
|
+
inheritedEnv[k] = v;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
output(installService({
|
|
164
|
+
dataDir, port, host,
|
|
165
|
+
...(token ? { token } : {}),
|
|
166
|
+
...(Object.keys(inheritedEnv).length > 0 ? { env: inheritedEnv } : {}),
|
|
167
|
+
force: getBoolFlag(flags, "force") === true,
|
|
168
|
+
}), flags);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (sub === "uninstall") {
|
|
172
|
+
output(uninstallService({ dataDir }), flags);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (sub === "status") {
|
|
176
|
+
output(serviceStatus({ dataDir }), flags);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
die(`service: ${e.message}`);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
die(`service: unknown subcommand "${sub}" (expected install, uninstall or status)`);
|
|
185
|
+
}
|
|
186
|
+
export { handleComplexity, handleDeadCode, handleHotspots, handleCommunities, handlePatterns, handleSetup, handleFindClones, handleService, };
|
|
187
|
+
//# sourceMappingURL=commands-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-admin.js","sourceRoot":"","sources":["../../src/cli/commands-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Flags } from "./args.js";
|
|
2
|
+
import type { HttpServerHandle } from "../server.js";
|
|
3
|
+
/** Default daemon port — clients point here via `setup --http`. */
|
|
4
|
+
export declare const DEFAULT_DAEMON_PORT = 7077;
|
|
5
|
+
export type DaemonHandle = HttpServerHandle;
|
|
6
|
+
/** Lockfile paths for the daemon in a given data dir (~/.codesift). */
|
|
7
|
+
export declare function daemonLockPaths(dataDir: string): {
|
|
8
|
+
pidPath: string;
|
|
9
|
+
portPath: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* True if a process with `pid` is alive. `process.kill(pid, 0)` sends no signal
|
|
13
|
+
* but performs the permission/existence check: ESRCH = dead, EPERM = alive but
|
|
14
|
+
* owned by another user (still alive).
|
|
15
|
+
*/
|
|
16
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
17
|
+
/** Read the current daemon lock, or null if absent/unparseable. */
|
|
18
|
+
export declare function readDaemonLock(dataDir: string): {
|
|
19
|
+
pid: number;
|
|
20
|
+
port: number;
|
|
21
|
+
} | null;
|
|
22
|
+
/**
|
|
23
|
+
* Acquire the daemon lock and start the shared HTTP server.
|
|
24
|
+
*
|
|
25
|
+
* Refuses if another daemon holds the dedicated SQLite transaction lock. The
|
|
26
|
+
* OS releases that lock on kill -9/OOM/crash, so stale pid metadata can never
|
|
27
|
+
* wedge restart and no read-then-unlink race can create two owners.
|
|
28
|
+
*
|
|
29
|
+
* `close()` removes the lockfiles, so a graceful SIGTERM leaves a clean slate.
|
|
30
|
+
*/
|
|
31
|
+
export declare function startDaemon(opts?: {
|
|
32
|
+
dataDir?: string;
|
|
33
|
+
port?: number;
|
|
34
|
+
host?: string;
|
|
35
|
+
token?: string;
|
|
36
|
+
}): Promise<DaemonHandle>;
|
|
37
|
+
/**
|
|
38
|
+
* `codesift serve` — boot the shared daemon and stay alive until SIGTERM/SIGINT.
|
|
39
|
+
*/
|
|
40
|
+
declare function handleServe(_args: string[], flags: Flags): Promise<void>;
|
|
41
|
+
export { handleServe };
|
|
42
|
+
//# sourceMappingURL=commands-daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-daemon.d.ts","sourceRoot":"","sources":["../../src/cli/commands-daemon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUpF;AAWD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5E,OAAO,CAAC,YAAY,CAAC,CA4DvB;AAED;;GAEG;AACH,iBAAe,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBvE;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { readFileSync, writeFileSync, mkdirSync, unlinkSync } from "node:fs";
|
|
3
|
+
import { getFlag, getNumFlag, output, die } from "./args.js";
|
|
4
|
+
/** Default daemon port — clients point here via `setup --http`. */
|
|
5
|
+
export const DEFAULT_DAEMON_PORT = 7077;
|
|
6
|
+
/** Lockfile paths for the daemon in a given data dir (~/.codesift). */
|
|
7
|
+
export function daemonLockPaths(dataDir) {
|
|
8
|
+
return { pidPath: join(dataDir, "daemon.pid"), portPath: join(dataDir, "daemon.port") };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* True if a process with `pid` is alive. `process.kill(pid, 0)` sends no signal
|
|
12
|
+
* but performs the permission/existence check: ESRCH = dead, EPERM = alive but
|
|
13
|
+
* owned by another user (still alive).
|
|
14
|
+
*/
|
|
15
|
+
export function isProcessAlive(pid) {
|
|
16
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
17
|
+
return false;
|
|
18
|
+
try {
|
|
19
|
+
process.kill(pid, 0);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
return e.code === "EPERM";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Read the current daemon lock, or null if absent/unparseable. */
|
|
27
|
+
export function readDaemonLock(dataDir) {
|
|
28
|
+
const { pidPath, portPath } = daemonLockPaths(dataDir);
|
|
29
|
+
try {
|
|
30
|
+
const pid = parseInt(readFileSync(pidPath, "utf-8").trim(), 10);
|
|
31
|
+
const port = parseInt(readFileSync(portPath, "utf-8").trim(), 10);
|
|
32
|
+
if (!Number.isInteger(pid) || !Number.isInteger(port))
|
|
33
|
+
return null;
|
|
34
|
+
return { pid, port };
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function readDaemonPid(pidPath) {
|
|
41
|
+
try {
|
|
42
|
+
const pid = parseInt(readFileSync(pidPath, "utf-8").trim(), 10);
|
|
43
|
+
return Number.isInteger(pid) && pid > 0 ? pid : null;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Acquire the daemon lock and start the shared HTTP server.
|
|
51
|
+
*
|
|
52
|
+
* Refuses if another daemon holds the dedicated SQLite transaction lock. The
|
|
53
|
+
* OS releases that lock on kill -9/OOM/crash, so stale pid metadata can never
|
|
54
|
+
* wedge restart and no read-then-unlink race can create two owners.
|
|
55
|
+
*
|
|
56
|
+
* `close()` removes the lockfiles, so a graceful SIGTERM leaves a clean slate.
|
|
57
|
+
*/
|
|
58
|
+
export async function startDaemon(opts = {}) {
|
|
59
|
+
const { loadConfig } = await import("../config.js");
|
|
60
|
+
const dataDir = opts.dataDir ?? loadConfig().dataDir;
|
|
61
|
+
const { pidPath, portPath } = daemonLockPaths(dataDir);
|
|
62
|
+
mkdirSync(dataDir, { recursive: true });
|
|
63
|
+
const { DatabaseSync } = await import("node:sqlite");
|
|
64
|
+
const lockDb = new DatabaseSync(join(dataDir, "daemon-lock.db"));
|
|
65
|
+
try {
|
|
66
|
+
lockDb.exec("PRAGMA busy_timeout = 0; CREATE TABLE IF NOT EXISTS daemon_lock (id INTEGER PRIMARY KEY);");
|
|
67
|
+
lockDb.exec("BEGIN EXCLUSIVE");
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
try {
|
|
71
|
+
lockDb.close();
|
|
72
|
+
}
|
|
73
|
+
catch { /* preserve the lock error */ }
|
|
74
|
+
const existing = readDaemonLock(dataDir);
|
|
75
|
+
const detail = existing ? ` (pid ${existing.pid}, port ${existing.port})` : "";
|
|
76
|
+
throw new Error(`codesift serve already running or starting${detail}. Stop it first.`, { cause: error });
|
|
77
|
+
}
|
|
78
|
+
const release = () => {
|
|
79
|
+
if (readDaemonPid(pidPath) === process.pid) {
|
|
80
|
+
try {
|
|
81
|
+
unlinkSync(pidPath);
|
|
82
|
+
}
|
|
83
|
+
catch { /* already gone */ }
|
|
84
|
+
try {
|
|
85
|
+
unlinkSync(portPath);
|
|
86
|
+
}
|
|
87
|
+
catch { /* already gone */ }
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
lockDb.exec("ROLLBACK");
|
|
91
|
+
}
|
|
92
|
+
catch { /* already released */ }
|
|
93
|
+
try {
|
|
94
|
+
lockDb.close();
|
|
95
|
+
}
|
|
96
|
+
catch { /* already closed */ }
|
|
97
|
+
};
|
|
98
|
+
let handle;
|
|
99
|
+
try {
|
|
100
|
+
// PID and port are metadata only. Holding the SQLite transaction is the
|
|
101
|
+
// ownership proof, so stale or malformed files are safe to overwrite.
|
|
102
|
+
writeFileSync(pidPath, String(process.pid));
|
|
103
|
+
try {
|
|
104
|
+
unlinkSync(portPath);
|
|
105
|
+
}
|
|
106
|
+
catch { /* stale or absent */ }
|
|
107
|
+
const { startHttpServer } = await import("../server.js");
|
|
108
|
+
const httpOpts = {};
|
|
109
|
+
if (opts.port !== undefined)
|
|
110
|
+
httpOpts.port = opts.port;
|
|
111
|
+
if (opts.host !== undefined)
|
|
112
|
+
httpOpts.host = opts.host;
|
|
113
|
+
if (opts.token !== undefined)
|
|
114
|
+
httpOpts.token = opts.token;
|
|
115
|
+
handle = await startHttpServer(httpOpts);
|
|
116
|
+
writeFileSync(portPath, String(handle.port));
|
|
117
|
+
const origClose = handle.close;
|
|
118
|
+
return {
|
|
119
|
+
...handle,
|
|
120
|
+
close: async () => {
|
|
121
|
+
try {
|
|
122
|
+
await origClose();
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
release();
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (handle) {
|
|
132
|
+
try {
|
|
133
|
+
await handle.close();
|
|
134
|
+
}
|
|
135
|
+
catch { /* preserve the startup error */ }
|
|
136
|
+
}
|
|
137
|
+
release();
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* `codesift serve` — boot the shared daemon and stay alive until SIGTERM/SIGINT.
|
|
143
|
+
*/
|
|
144
|
+
async function handleServe(_args, flags) {
|
|
145
|
+
const port = getNumFlag(flags, "port") ?? DEFAULT_DAEMON_PORT;
|
|
146
|
+
const host = getFlag(flags, "host");
|
|
147
|
+
let handle;
|
|
148
|
+
try {
|
|
149
|
+
handle = await startDaemon({ port, ...(host ? { host } : {}) });
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
die(`serve: ${e.message}`);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
output({ status: "serving", url: handle.url, port: handle.port, pid: process.pid }, flags);
|
|
156
|
+
const shutdown = () => {
|
|
157
|
+
void handle.close().then(() => process.exit(0));
|
|
158
|
+
};
|
|
159
|
+
process.on("SIGTERM", shutdown);
|
|
160
|
+
process.on("SIGINT", shutdown);
|
|
161
|
+
}
|
|
162
|
+
export { handleServe };
|
|
163
|
+
//# sourceMappingURL=commands-daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-daemon.js","sourceRoot":"","sources":["../../src/cli/commands-daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Flags } from "./args.js";
|
|
2
|
+
export declare function scanEmbeddingMarker(tail: string, chunk: string, marker: string): {
|
|
3
|
+
sawMarker: boolean;
|
|
4
|
+
tail: string;
|
|
5
|
+
};
|
|
6
|
+
declare function handleIndex(args: string[], flags: Flags): Promise<void>;
|
|
7
|
+
declare function handleIndexRepo(args: string[], flags: Flags): Promise<void>;
|
|
8
|
+
declare function handleRepos(_args: string[], flags: Flags): Promise<void>;
|
|
9
|
+
declare function handleInvalidate(args: string[], flags: Flags): Promise<void>;
|
|
10
|
+
declare function handleIndexConversations(args: string[], flags: Flags): Promise<void>;
|
|
11
|
+
export { handleIndex, handleIndexRepo, handleRepos, handleInvalidate, handleIndexConversations };
|
|
12
|
+
//# sourceMappingURL=commands-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-index.d.ts","sourceRoot":"","sources":["../../src/cli/commands-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGvC,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMtC;AA6DD,iBAAe,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtE;AAED,iBAAe,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB1E;AAED,iBAAe,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED,iBAAe,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3E;AAED,iBAAe,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { getFlag, getBoolFlag, requireArg, parseCommaSeparated, output } from "./args.js";
|
|
2
|
+
export function scanEmbeddingMarker(tail, chunk, marker) {
|
|
3
|
+
const combined = tail + chunk;
|
|
4
|
+
return {
|
|
5
|
+
sawMarker: combined.includes(marker),
|
|
6
|
+
tail: marker.length > 1 ? combined.slice(-(marker.length - 1)) : "",
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Index commands
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Run the embedding phase in a separate process and wait for it.
|
|
14
|
+
*
|
|
15
|
+
* The child's EXIT CODE is deliberately not trusted. Once onnxruntime has run,
|
|
16
|
+
* the process aborts during native teardown (`mutex lock failed`, exit 134)
|
|
17
|
+
* even though every file was written correctly first — so the child prints a
|
|
18
|
+
* marker after its last successful write and that marker, not the status, is
|
|
19
|
+
* what decides success. See src/cli/embed-child.ts.
|
|
20
|
+
*
|
|
21
|
+
* Failures here are reported but never fatal: BM25 and symbol search work
|
|
22
|
+
* without embeddings, and the index itself is already committed to disk.
|
|
23
|
+
*/
|
|
24
|
+
async function runEmbeddingChild(repoName, rootPath) {
|
|
25
|
+
const { getIndexPath } = await import("../storage/index-store.js");
|
|
26
|
+
const { loadConfig } = await import("../config.js");
|
|
27
|
+
const { spawn } = await import("node:child_process");
|
|
28
|
+
const { fileURLToPath } = await import("node:url");
|
|
29
|
+
const { dirname, join } = await import("node:path");
|
|
30
|
+
const config = loadConfig();
|
|
31
|
+
if (!config.embeddingProvider)
|
|
32
|
+
return; // lite mode — nothing to embed
|
|
33
|
+
const indexPath = getIndexPath(config.dataDir, rootPath);
|
|
34
|
+
const childScript = join(dirname(fileURLToPath(import.meta.url)), "embed-child.js");
|
|
35
|
+
const { EMBED_CHILD_OK_MARKER } = await import("./embed-child-marker.js");
|
|
36
|
+
await new Promise((resolve) => {
|
|
37
|
+
const child = spawn(process.execPath, [childScript, indexPath, repoName, rootPath], {
|
|
38
|
+
stdio: ["ignore", "pipe", "inherit"],
|
|
39
|
+
env: { ...process.env, CODESIFT_EMBED_OUT_OF_PROCESS: "0" },
|
|
40
|
+
});
|
|
41
|
+
let sawMarker = false;
|
|
42
|
+
let markerTail = "";
|
|
43
|
+
child.stdout.on("data", (buf) => {
|
|
44
|
+
const scan = scanEmbeddingMarker(markerTail, buf.toString(), EMBED_CHILD_OK_MARKER);
|
|
45
|
+
if (scan.sawMarker)
|
|
46
|
+
sawMarker = true;
|
|
47
|
+
markerTail = scan.tail;
|
|
48
|
+
});
|
|
49
|
+
child.on("error", (err) => {
|
|
50
|
+
process.stderr.write(`[codesift] embedding skipped: ${err.message}\n`);
|
|
51
|
+
resolve();
|
|
52
|
+
});
|
|
53
|
+
child.on("close", (code, signal) => {
|
|
54
|
+
if (!sawMarker) {
|
|
55
|
+
process.stderr.write(`[codesift] embedding did not complete (exit ${code ?? signal}) — ` +
|
|
56
|
+
`search falls back to BM25 for this repo.\n`);
|
|
57
|
+
}
|
|
58
|
+
resolve();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function handleIndex(args, flags) {
|
|
63
|
+
const path = requireArg(args, 0, "path");
|
|
64
|
+
const { indexFolder } = await import("../tools/index-tools.js");
|
|
65
|
+
// Keep onnxruntime out of THIS process; the embedding runs in a child below.
|
|
66
|
+
process.env["CODESIFT_EMBED_OUT_OF_PROCESS"] = "1";
|
|
67
|
+
const result = await indexFolder(path, {
|
|
68
|
+
incremental: getBoolFlag(flags, "incremental"),
|
|
69
|
+
include_paths: parseCommaSeparated(flags, "include-paths"),
|
|
70
|
+
watch: getBoolFlag(flags, "no-watch") === true ? false : undefined,
|
|
71
|
+
});
|
|
72
|
+
// Any in-process embedding scheduled before the opt-out (or by another code
|
|
73
|
+
// path) still has to finish before we exit, or the command reports success
|
|
74
|
+
// having written nothing.
|
|
75
|
+
const { awaitPendingEmbeddings } = await import("../tools/index-tools/folder-indexer.js");
|
|
76
|
+
await awaitPendingEmbeddings();
|
|
77
|
+
const repo = result?.repo;
|
|
78
|
+
const root = result?.root;
|
|
79
|
+
if (repo && root)
|
|
80
|
+
await runEmbeddingChild(repo, root);
|
|
81
|
+
output(result, flags);
|
|
82
|
+
// Without `--no-watch` this command does not return: the watcher keeps the
|
|
83
|
+
// event loop alive so the index stays current. That is the intended default,
|
|
84
|
+
// but a process that prints a finished-looking result and then sits there is
|
|
85
|
+
// indistinguishable from a hang — long enough that I read it as one and spent
|
|
86
|
+
// a `timeout 240` proving otherwise, on a run whose indexing took 125 ms. Say
|
|
87
|
+
// which of the two it is. On stderr, so `codesift index … | jq` still works.
|
|
88
|
+
if (getBoolFlag(flags, "no-watch") !== true) {
|
|
89
|
+
console.error(`[codesift] watching ${root ?? path} for changes — Ctrl-C to stop, `
|
|
90
|
+
+ "or re-run with --no-watch to exit when indexing finishes.");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function handleIndexRepo(args, flags) {
|
|
94
|
+
const url = requireArg(args, 0, "url");
|
|
95
|
+
const { indexRepo } = await import("../tools/index-tools.js");
|
|
96
|
+
// Same three protections as handleIndex. Without them this entry point still
|
|
97
|
+
// exits while the fire-and-forget embedding chain is in flight, so the repo
|
|
98
|
+
// ends up with partial or zero embeddings and the command reports success —
|
|
99
|
+
// the exact bug handleIndex was fixed for, left behind on this path.
|
|
100
|
+
process.env["CODESIFT_EMBED_OUT_OF_PROCESS"] = "1";
|
|
101
|
+
const result = await indexRepo(url, {
|
|
102
|
+
branch: getFlag(flags, "branch"),
|
|
103
|
+
include_paths: parseCommaSeparated(flags, "include-paths"),
|
|
104
|
+
});
|
|
105
|
+
const { awaitPendingEmbeddings } = await import("../tools/index-tools/folder-indexer.js");
|
|
106
|
+
await awaitPendingEmbeddings();
|
|
107
|
+
const repo = result?.repo;
|
|
108
|
+
const root = result?.root;
|
|
109
|
+
if (repo && root)
|
|
110
|
+
await runEmbeddingChild(repo, root);
|
|
111
|
+
output(result, flags);
|
|
112
|
+
}
|
|
113
|
+
async function handleRepos(_args, flags) {
|
|
114
|
+
const { listAllRepos } = await import("../tools/index-tools.js");
|
|
115
|
+
const result = await listAllRepos();
|
|
116
|
+
output(result, flags);
|
|
117
|
+
}
|
|
118
|
+
async function handleInvalidate(args, flags) {
|
|
119
|
+
const repo = requireArg(args, 0, "repo");
|
|
120
|
+
const { invalidateCache } = await import("../tools/index-tools.js");
|
|
121
|
+
const result = await invalidateCache(repo);
|
|
122
|
+
output({ invalidated: result, repo }, flags);
|
|
123
|
+
}
|
|
124
|
+
async function handleIndexConversations(args, flags) {
|
|
125
|
+
const projectPath = args[0];
|
|
126
|
+
const { indexConversations } = await import("../tools/conversation-tools.js");
|
|
127
|
+
const result = await indexConversations(projectPath);
|
|
128
|
+
if (!getBoolFlag(flags, "quiet")) {
|
|
129
|
+
output(result, flags);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export { handleIndex, handleIndexRepo, handleRepos, handleInvalidate, handleIndexConversations };
|
|
133
|
+
//# sourceMappingURL=commands-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-index.js","sourceRoot":"","sources":["../../src/cli/commands-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Flags } from "./args.js";
|
|
2
|
+
/**
|
|
3
|
+
* Delete orphaned per-repo cache artifacts (embeddings/index/meta/bm25/graph)
|
|
4
|
+
* whose hash stem is no longer in the registry. These accumulate from
|
|
5
|
+
* re-indexes (hash changes) and ephemeral/test repos that were indexed then
|
|
6
|
+
* deleted — each leaves multi-GB embedding files behind. Use --dry-run to
|
|
7
|
+
* preview. Regenerable: re-indexing recreates anything still needed.
|
|
8
|
+
*/
|
|
9
|
+
declare function handlePrune(_args: string[], flags: Flags): Promise<void>;
|
|
10
|
+
declare function handleCleanupProcesses(_args: string[], flags: Flags): Promise<void>;
|
|
11
|
+
export { handlePrune, handleCleanupProcesses };
|
|
12
|
+
//# sourceMappingURL=commands-maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-maintenance.d.ts","sourceRoot":"","sources":["../../src/cli/commands-maintenance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGvC;;;;;;GAMG;AACH,iBAAe,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAiWD,iBAAe,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ClF;AAED,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC"}
|