codesift-mcp 0.10.1 → 0.11.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/dist/cache/hono-cache.d.ts.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +104 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/embed-child-marker.d.ts +10 -0
- package/dist/cli/embed-child-marker.d.ts.map +1 -0
- package/dist/cli/embed-child-marker.js +10 -0
- package/dist/cli/embed-child-marker.js.map +1 -0
- package/dist/cli/embed-child.d.ts +2 -0
- package/dist/cli/embed-child.d.ts.map +1 -0
- package/dist/cli/embed-child.js +52 -0
- package/dist/cli/embed-child.js.map +1 -0
- package/dist/cli/git-hooks-installer.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +22 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/cli/hooks/pre-tool-use.js +197 -10
- package/dist/cli/hooks/pre-tool-use.js.map +1 -1
- package/dist/cli/hooks/shared.d.ts +17 -0
- package/dist/cli/hooks/shared.d.ts.map +1 -1
- package/dist/cli/hooks/shared.js +51 -0
- package/dist/cli/hooks/shared.js.map +1 -1
- package/dist/cli/service.d.ts +133 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +317 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/cli/setup/fs.js.map +1 -1
- package/dist/cli/setup/mcp.d.ts.map +1 -1
- package/dist/cli/setup/mcp.js +5 -2
- package/dist/cli/setup/mcp.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/telemetry-commands.js.map +1 -1
- package/dist/cli.js +29 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/formatter-dispatch.d.ts.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +1 -0
- package/dist/instructions.js.map +1 -1
- package/dist/lsp/lsp-client.d.ts.map +1 -1
- package/dist/lsp/lsp-client.js.map +1 -1
- package/dist/lsp/lsp-manager.d.ts.map +1 -1
- package/dist/lsp/lsp-tools.d.ts.map +1 -1
- package/dist/lsp/lsp-tools.js +21 -1
- package/dist/lsp/lsp-tools.js.map +1 -1
- package/dist/parser/astro-template/state.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.d.ts +4 -4
- package/dist/parser/extractors/_shared.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/conversation.js.map +1 -1
- package/dist/parser/extractors/go.d.ts +2 -2
- package/dist/parser/extractors/go.d.ts.map +1 -1
- package/dist/parser/extractors/go.js.map +1 -1
- package/dist/parser/extractors/gradle-kts.d.ts +2 -2
- package/dist/parser/extractors/gradle-kts.d.ts.map +1 -1
- package/dist/parser/extractors/gradle-kts.js.map +1 -1
- package/dist/parser/extractors/hono-app-discovery.d.ts +2 -2
- package/dist/parser/extractors/hono-app-discovery.d.ts.map +1 -1
- package/dist/parser/extractors/hono-app-discovery.js.map +1 -1
- package/dist/parser/extractors/hono-ast-utils.d.ts +4 -4
- package/dist/parser/extractors/hono-ast-utils.d.ts.map +1 -1
- package/dist/parser/extractors/hono-ast-utils.js.map +1 -1
- package/dist/parser/extractors/hono-context-extractor.d.ts +2 -2
- package/dist/parser/extractors/hono-context-extractor.d.ts.map +1 -1
- package/dist/parser/extractors/hono-context-extractor.js.map +1 -1
- package/dist/parser/extractors/hono-inline-analyzer.d.ts +2 -2
- package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -1
- package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -1
- package/dist/parser/extractors/hono-middleware-extractor.d.ts +2 -2
- package/dist/parser/extractors/hono-middleware-extractor.d.ts.map +1 -1
- package/dist/parser/extractors/hono-middleware-extractor.js.map +1 -1
- package/dist/parser/extractors/hono-openapi-extractor.d.ts +2 -2
- package/dist/parser/extractors/hono-openapi-extractor.d.ts.map +1 -1
- package/dist/parser/extractors/hono-openapi-extractor.js.map +1 -1
- package/dist/parser/extractors/hono-route-extractor.d.ts +2 -2
- package/dist/parser/extractors/hono-route-extractor.d.ts.map +1 -1
- package/dist/parser/extractors/hono-route-extractor.js.map +1 -1
- package/dist/parser/extractors/hono-route-utils.d.ts +2 -2
- package/dist/parser/extractors/hono-route-utils.d.ts.map +1 -1
- package/dist/parser/extractors/hono-route-utils.js.map +1 -1
- package/dist/parser/extractors/hono-runtime-extractor.d.ts +2 -2
- package/dist/parser/extractors/hono-runtime-extractor.d.ts.map +1 -1
- package/dist/parser/extractors/hono-runtime-extractor.js.map +1 -1
- package/dist/parser/extractors/hono.d.ts.map +1 -1
- package/dist/parser/extractors/hono.js.map +1 -1
- package/dist/parser/extractors/javascript.d.ts +2 -2
- package/dist/parser/extractors/javascript.d.ts.map +1 -1
- package/dist/parser/extractors/javascript.js.map +1 -1
- package/dist/parser/extractors/kotlin-ast-helpers.d.ts +9 -9
- package/dist/parser/extractors/kotlin-ast-helpers.d.ts.map +1 -1
- package/dist/parser/extractors/kotlin-ast-helpers.js.map +1 -1
- package/dist/parser/extractors/kotlin-test-symbols.d.ts +4 -4
- package/dist/parser/extractors/kotlin-test-symbols.d.ts.map +1 -1
- package/dist/parser/extractors/kotlin-test-symbols.js.map +1 -1
- package/dist/parser/extractors/kotlin.d.ts +2 -2
- package/dist/parser/extractors/kotlin.d.ts.map +1 -1
- package/dist/parser/extractors/kotlin.js.map +1 -1
- package/dist/parser/extractors/php.d.ts +2 -2
- package/dist/parser/extractors/php.d.ts.map +1 -1
- package/dist/parser/extractors/php.js.map +1 -1
- package/dist/parser/extractors/python.d.ts +2 -2
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/rust.d.ts +2 -2
- package/dist/parser/extractors/rust.d.ts.map +1 -1
- package/dist/parser/extractors/rust.js.map +1 -1
- package/dist/parser/extractors/sql-boundaries.js.map +1 -1
- package/dist/parser/extractors/typescript-cjs-nodes.d.ts +3 -3
- package/dist/parser/extractors/typescript-cjs-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-cjs-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript-class-nodes.d.ts +6 -6
- package/dist/parser/extractors/typescript-class-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-class-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript-declaration-nodes.d.ts +3 -3
- package/dist/parser/extractors/typescript-declaration-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-declaration-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript-module-nodes.d.ts +4 -4
- package/dist/parser/extractors/typescript-module-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-module-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript-react.d.ts +6 -6
- package/dist/parser/extractors/typescript-react.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-react.js.map +1 -1
- package/dist/parser/extractors/typescript-shared.d.ts +8 -8
- package/dist/parser/extractors/typescript-shared.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-shared.js.map +1 -1
- package/dist/parser/extractors/typescript-test-nodes.d.ts +2 -2
- package/dist/parser/extractors/typescript-test-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-test-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript-type-nodes.d.ts +4 -4
- package/dist/parser/extractors/typescript-type-nodes.d.ts.map +1 -1
- package/dist/parser/extractors/typescript-type-nodes.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts +2 -2
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parse-cache.d.ts +3 -3
- package/dist/parser/parse-cache.d.ts.map +1 -1
- package/dist/parser/parse-cache.js.map +1 -1
- package/dist/parser/parser-manager.d.ts +3 -2
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +9 -3
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/parser-pool.d.ts.map +1 -1
- package/dist/parser/parser-pool.js +39 -8
- package/dist/parser/parser-pool.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts +2 -2
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tool-groups/core/search.d.ts.map +1 -1
- package/dist/register-tool-groups/core/search.js +12 -2
- 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 +45 -6
- package/dist/register-tool-groups/core/symbols.js.map +1 -1
- package/dist/register-tool-groups/meta.js.map +1 -1
- package/dist/register-tool-groups/shared.d.ts.map +1 -1
- package/dist/register-tools/discovery.d.ts +18 -0
- package/dist/register-tools/discovery.d.ts.map +1 -1
- package/dist/register-tools/discovery.js +71 -0
- package/dist/register-tools/discovery.js.map +1 -1
- package/dist/register-tools.d.ts +31 -1
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +76 -6
- package/dist/register-tools.js.map +1 -1
- package/dist/retrieval/codebase-retrieval.js.map +1 -1
- package/dist/retrieval/retrieval-schemas.d.ts +13 -13
- package/dist/retrieval/semantic-handlers.d.ts.map +1 -1
- package/dist/retrieval/semantic-handlers.js +15 -1
- package/dist/retrieval/semantic-handlers.js.map +1 -1
- package/dist/search/semantic.d.ts +63 -3
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +196 -37
- package/dist/search/semantic.js.map +1 -1
- package/dist/search/static-embedding-provider.d.ts.map +1 -1
- package/dist/search/static-embedding-provider.js.map +1 -1
- package/dist/search/tool-embedding-storage.d.ts.map +1 -1
- package/dist/search/tool-embedding-storage.js +5 -1
- package/dist/search/tool-embedding-storage.js.map +1 -1
- package/dist/server-helpers/repo-resolution.d.ts +18 -4
- package/dist/server-helpers/repo-resolution.d.ts.map +1 -1
- package/dist/server-helpers/repo-resolution.js +50 -11
- package/dist/server-helpers/repo-resolution.js.map +1 -1
- package/dist/server-helpers/response-hints.d.ts.map +1 -1
- package/dist/server-helpers/response-hints.js +41 -0
- package/dist/server-helpers/response-hints.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +15 -3
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +15 -0
- package/dist/storage/_shared.d.ts.map +1 -1
- package/dist/storage/_shared.js +39 -2
- package/dist/storage/_shared.js.map +1 -1
- package/dist/storage/chunk-store.d.ts.map +1 -1
- package/dist/storage/chunk-store.js +38 -6
- package/dist/storage/chunk-store.js.map +1 -1
- package/dist/storage/embedding-store.d.ts +1 -1
- package/dist/storage/embedding-store.d.ts.map +1 -1
- package/dist/storage/embedding-store.js +54 -4
- package/dist/storage/embedding-store.js.map +1 -1
- package/dist/storage/index-store.d.ts +2 -0
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +101 -22
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +48 -19
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/telemetry/env-profile.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts +13 -0
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +58 -4
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/agent-config-tools.js.map +1 -1
- package/dist/tools/ast-query-tools.d.ts.map +1 -1
- package/dist/tools/ast-query-tools.js +12 -2
- package/dist/tools/ast-query-tools.js.map +1 -1
- package/dist/tools/astro-actions/ast.d.ts +7 -7
- package/dist/tools/astro-actions/ast.d.ts.map +1 -1
- package/dist/tools/astro-actions/ast.js.map +1 -1
- package/dist/tools/astro-actions/parser.d.ts.map +1 -1
- package/dist/tools/astro-actions/parser.js +3 -0
- package/dist/tools/astro-actions/parser.js.map +1 -1
- package/dist/tools/astro-actions/types.d.ts.map +1 -1
- package/dist/tools/astro-actions/zod-ast.d.ts +3 -3
- package/dist/tools/astro-actions/zod-ast.d.ts.map +1 -1
- package/dist/tools/astro-actions/zod-ast.js.map +1 -1
- package/dist/tools/astro-audit.js.map +1 -1
- package/dist/tools/astro-config.d.ts.map +1 -1
- package/dist/tools/astro-config.js +3 -0
- package/dist/tools/astro-config.js.map +1 -1
- package/dist/tools/astro-content-collections/discovery.d.ts +2 -2
- package/dist/tools/astro-content-collections/discovery.d.ts.map +1 -1
- package/dist/tools/astro-content-collections/discovery.js.map +1 -1
- package/dist/tools/astro-content-collections/schema.d.ts +2 -2
- package/dist/tools/astro-content-collections/schema.d.ts.map +1 -1
- package/dist/tools/astro-content-collections/schema.js.map +1 -1
- package/dist/tools/astro-content-collections.d.ts.map +1 -1
- package/dist/tools/astro-content-collections.js +5 -1
- package/dist/tools/astro-content-collections.js.map +1 -1
- package/dist/tools/astro-db-audit.d.ts.map +1 -1
- package/dist/tools/astro-db-audit.js +8 -0
- package/dist/tools/astro-db-audit.js.map +1 -1
- package/dist/tools/astro-db-parser.d.ts.map +1 -1
- package/dist/tools/astro-db-parser.js +3 -0
- package/dist/tools/astro-db-parser.js.map +1 -1
- package/dist/tools/astro-env-validator.d.ts.map +1 -1
- package/dist/tools/astro-env-validator.js +4 -0
- package/dist/tools/astro-env-validator.js.map +1 -1
- package/dist/tools/astro-helpers.d.ts +6 -6
- package/dist/tools/astro-helpers.d.ts.map +1 -1
- package/dist/tools/astro-helpers.js.map +1 -1
- package/dist/tools/astro-middleware.d.ts.map +1 -1
- package/dist/tools/astro-middleware.js +4 -0
- package/dist/tools/astro-middleware.js.map +1 -1
- package/dist/tools/astro-sessions.d.ts.map +1 -1
- package/dist/tools/astro-sessions.js +4 -0
- package/dist/tools/astro-sessions.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +51 -15
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/conversation-cache.d.ts.map +1 -1
- package/dist/tools/conversation-cache.js +2 -1
- package/dist/tools/conversation-cache.js.map +1 -1
- package/dist/tools/conversation-index-tools.d.ts +3 -1
- package/dist/tools/conversation-index-tools.d.ts.map +1 -1
- package/dist/tools/conversation-index-tools.js +24 -8
- package/dist/tools/conversation-index-tools.js.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer/context.d.ts.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer/context.js.map +1 -1
- package/dist/tools/dependency-audit-lockfile-tools.js.map +1 -1
- package/dist/tools/hono-api-contract.js.map +1 -1
- package/dist/tools/hono-visualize.js.map +1 -1
- package/dist/tools/index-shared.d.ts.map +1 -1
- package/dist/tools/index-tools/folder-indexer.d.ts +8 -0
- package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -1
- package/dist/tools/index-tools/folder-indexer.js +59 -8
- package/dist/tools/index-tools/folder-indexer.js.map +1 -1
- package/dist/tools/index-tools/parse.d.ts.map +1 -1
- package/dist/tools/index-tools/parse.js +2 -1
- package/dist/tools/index-tools/parse.js.map +1 -1
- package/dist/tools/index-tools/registry.d.ts.map +1 -1
- package/dist/tools/index-tools/registry.js +26 -1
- package/dist/tools/index-tools/registry.js.map +1 -1
- package/dist/tools/index-tools/snapshots.js.map +1 -1
- package/dist/tools/insights-tools.js.map +1 -1
- package/dist/tools/journal-generator-helpers.d.ts.map +1 -1
- package/dist/tools/journal-generator-helpers.js.map +1 -1
- package/dist/tools/journal-git-client.js.map +1 -1
- package/dist/tools/journal-llm-client.d.ts.map +1 -1
- package/dist/tools/journal-llm-client.js.map +1 -1
- package/dist/tools/journal-migrator.d.ts.map +1 -1
- package/dist/tools/journal-phase-detector.d.ts.map +1 -1
- package/dist/tools/journal-sentinel.d.ts.map +1 -1
- package/dist/tools/nest-audit-tools.js.map +1 -1
- package/dist/tools/nest-ext-tools.js.map +1 -1
- package/dist/tools/nextjs-api-contract-readers.d.ts +5 -5
- package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -1
- package/dist/tools/nextjs-api-contract-readers.js.map +1 -1
- package/dist/tools/nextjs-boundary-tools.d.ts +2 -2
- package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -1
- package/dist/tools/nextjs-boundary-tools.js.map +1 -1
- package/dist/tools/nextjs-component-readers.d.ts +3 -3
- package/dist/tools/nextjs-component-readers.d.ts.map +1 -1
- package/dist/tools/nextjs-component-readers.js.map +1 -1
- package/dist/tools/nextjs-framework-audit-tools.js.map +1 -1
- package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -1
- package/dist/tools/nextjs-route-readers.d.ts +2 -2
- package/dist/tools/nextjs-route-readers.d.ts.map +1 -1
- package/dist/tools/nextjs-route-readers.js.map +1 -1
- package/dist/tools/nextjs-security-readers.d.ts +6 -6
- package/dist/tools/nextjs-security-readers.d.ts.map +1 -1
- package/dist/tools/nextjs-security-readers.js.map +1 -1
- package/dist/tools/pg-introspection.js.map +1 -1
- package/dist/tools/php-active-record-tools.js.map +1 -1
- package/dist/tools/php-view-tools.js.map +1 -1
- package/dist/tools/plan-turn/orchestrator.d.ts.map +1 -1
- package/dist/tools/plan-turn/orchestrator.js +14 -4
- package/dist/tools/plan-turn/orchestrator.js.map +1 -1
- package/dist/tools/plan-turn/recommendations.js +2 -2
- package/dist/tools/plan-turn/recommendations.js.map +1 -1
- package/dist/tools/project-profile-extractors.js.map +1 -1
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pydantic-models.js.map +1 -1
- package/dist/tools/python-audit/aggregate.js.map +1 -1
- package/dist/tools/python-circular-imports.d.ts.map +1 -1
- package/dist/tools/python-circular-imports.js +3 -0
- package/dist/tools/python-circular-imports.js.map +1 -1
- package/dist/tools/python-constants-tools.d.ts.map +1 -1
- package/dist/tools/python-constants-tools.js +14 -0
- package/dist/tools/python-constants-tools.js.map +1 -1
- package/dist/tools/query-tools.js.map +1 -1
- package/dist/tools/review-diff/constants.d.ts.map +1 -1
- package/dist/tools/search-tools/text-search.js.map +1 -1
- package/dist/tools/symbol-tools.d.ts +25 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +50 -2
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint-tools.d.ts.map +1 -1
- package/dist/tools/taint-tools.js +4 -0
- package/dist/tools/taint-tools.js.map +1 -1
- package/dist/tools/typescript-constants-tools.d.ts.map +1 -1
- package/dist/tools/typescript-constants-tools.js +14 -0
- package/dist/tools/typescript-constants-tools.js.map +1 -1
- package/dist/tools/wiki-manifest.js.map +1 -1
- package/dist/tools/workspace-tools.d.ts.map +1 -1
- package/dist/tools/yii-migrations-tools.js.map +1 -1
- package/dist/tools/yii-modules-tools.js.map +1 -1
- package/dist/utils/git-head.js.map +1 -1
- package/dist/utils/git-validation.d.ts.map +1 -1
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +10 -0
- package/dist/utils/import-graph.js.map +1 -1
- package/dist/utils/language-detect.d.ts.map +1 -1
- package/dist/utils/language-detect.js +6 -3
- package/dist/utils/language-detect.js.map +1 -1
- package/dist/utils/nextjs-ast-readers.d.ts +3 -3
- package/dist/utils/nextjs-ast-readers.d.ts.map +1 -1
- package/dist/utils/nextjs-ast-readers.js.map +1 -1
- package/dist/utils/nextjs-audit-cache.d.ts +3 -3
- package/dist/utils/nextjs-audit-cache.d.ts.map +1 -1
- package/dist/utils/nextjs-audit-cache.js.map +1 -1
- package/dist/utils/nextjs-metadata-readers.d.ts +4 -4
- package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -1
- package/dist/utils/nextjs-metadata-readers.js.map +1 -1
- package/dist/utils/overlay-cache.d.ts.map +1 -1
- package/dist/utils/overlay-cache.js.map +1 -1
- package/dist/utils/python-imports.d.ts +2 -2
- package/dist/utils/python-imports.d.ts.map +1 -1
- package/dist/utils/python-imports.js.map +1 -1
- package/dist/utils/ts-imports.d.ts +2 -2
- package/dist/utils/ts-imports.d.ts.map +1 -1
- package/dist/utils/ts-imports.js.map +1 -1
- package/dist/utils/walk/limits.d.ts.map +1 -1
- package/dist/utils/worktree.d.ts +60 -0
- package/dist/utils/worktree.d.ts.map +1 -0
- package/dist/utils/worktree.js +170 -0
- package/dist/utils/worktree.js.map +1 -0
- package/package.json +10 -7
- package/rules/codesift.md +5 -1
- package/rules/codesift.mdc +5 -1
- package/rules/codex.md +5 -1
- package/rules/gemini.md +5 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { closeSync, constants, fstatSync, openSync, readSync, statSync } from "node:fs";
|
|
2
2
|
import { extname } from "node:path";
|
|
3
|
-
import { CODE_EXTENSIONS, DEFAULT_MIN_LINES, denyTool, isCurrentRepoIndexed } from "./shared.js";
|
|
3
|
+
import { CODE_EXTENSIONS, DEFAULT_MIN_LINES, denyTool, isCodesiftServerRunning, isCurrentRepoIndexed } from "./shared.js";
|
|
4
4
|
import { parseHookInput, readRawInput } from "./input.js";
|
|
5
5
|
import { tryLoadWikiSummary } from "./wiki.js";
|
|
6
6
|
const DEFAULT_MAX_BYTES = 20_000;
|
|
@@ -90,7 +90,7 @@ export async function handlePrecheckRead() {
|
|
|
90
90
|
process.exit(0);
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
|
-
if (!isCurrentRepoIndexed()) {
|
|
93
|
+
if (!isCurrentRepoIndexed() || !isCodesiftServerRunning()) {
|
|
94
94
|
process.exit(0);
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
@@ -134,16 +134,191 @@ export async function handlePrecheckRead() {
|
|
|
134
134
|
process.exit(0);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
+
/** Wrapper commands that precede the real command word (`sudo rg`, `xargs -0 rg`). */
|
|
138
|
+
const COMMAND_PREFIXES = new Set([
|
|
139
|
+
"sudo", "env", "time", "command", "nohup", "nice", "stdbuf", "exec", "builtin", "xargs",
|
|
140
|
+
"if", "elif", "then", "else", "while", "until", "do", "!",
|
|
141
|
+
]);
|
|
142
|
+
/**
|
|
143
|
+
* Lex a command line into segments, each starting at a command position.
|
|
144
|
+
*
|
|
145
|
+
* A regex over the raw string cannot do this correctly, and the two failure
|
|
146
|
+
* modes both showed up in practice:
|
|
147
|
+
*
|
|
148
|
+
* - Quoted text was treated as shell code, so any command that merely MENTIONS
|
|
149
|
+
* a search tool got intercepted — `echo "use rg instead"`, or a python/node
|
|
150
|
+
* analysis script passed via `-c`/heredoc whose source contains `'rg'`.
|
|
151
|
+
* - Flags were matched across the whole line, so `grep -ic x "$f" | sort -rn`
|
|
152
|
+
* read as a recursive grep because of `sort`'s `-rn`.
|
|
153
|
+
*
|
|
154
|
+
* Quoted regions therefore stay inert for separator splitting but keep their
|
|
155
|
+
* text (so `"rg" "TODO"` is still recognised as ripgrep). UNQUOTED command
|
|
156
|
+
* substitutions (`$(...)`, backticks) split into their own segment so the inner
|
|
157
|
+
* command is still checked. Heredoc bodies are skipped entirely — they are
|
|
158
|
+
* data, not commands.
|
|
159
|
+
*
|
|
160
|
+
* Known limit: a substitution nested INSIDE double quotes (`echo "$(rg x)"`) is
|
|
161
|
+
* consumed as one quoted token, so the inner command is not inspected. That is
|
|
162
|
+
* an accepted under-block: this hook is a nudge toward CodeSift, not a security
|
|
163
|
+
* boundary, and the costly direction is over-blocking — a false deny stops
|
|
164
|
+
* legitimate work, a missed nudge only means the agent used grep.
|
|
165
|
+
*/
|
|
166
|
+
function lexShellSegments(cmd) {
|
|
167
|
+
const segments = [];
|
|
168
|
+
let segment = [];
|
|
169
|
+
let text = "";
|
|
170
|
+
let quoted = false;
|
|
171
|
+
let started = false;
|
|
172
|
+
const endToken = () => {
|
|
173
|
+
if (!started)
|
|
174
|
+
return;
|
|
175
|
+
segment.push({ text, quoted });
|
|
176
|
+
text = "";
|
|
177
|
+
quoted = false;
|
|
178
|
+
started = false;
|
|
179
|
+
};
|
|
180
|
+
const endSegment = () => {
|
|
181
|
+
endToken();
|
|
182
|
+
if (segment.length > 0)
|
|
183
|
+
segments.push(segment);
|
|
184
|
+
segment = [];
|
|
185
|
+
};
|
|
186
|
+
let i = 0;
|
|
187
|
+
while (i < cmd.length) {
|
|
188
|
+
const ch = cmd[i];
|
|
189
|
+
// Herestring (`<<<WORD`) is NOT a heredoc and has no body. Without this the
|
|
190
|
+
// scanner skips the first `<`, then reads the remaining `<<WORD` as a
|
|
191
|
+
// heredoc open, finds no closing `WORD` line, and swallows the REST OF THE
|
|
192
|
+
// COMMAND as body — so `cat <<<EOF; rg "TODO" src/` silently under-blocks.
|
|
193
|
+
if (ch === "<" && cmd[i + 1] === "<" && cmd[i + 2] === "<") {
|
|
194
|
+
endToken();
|
|
195
|
+
i += 3;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
// Heredoc (`<<EOF`, `<<-EOF`, `<<'EOF'`) — skip the redirect and its body.
|
|
199
|
+
if (ch === "<" && cmd[i + 1] === "<") {
|
|
200
|
+
const marker = /^<<-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1/.exec(cmd.slice(i));
|
|
201
|
+
if (marker) {
|
|
202
|
+
endToken();
|
|
203
|
+
i += marker[0].length;
|
|
204
|
+
const rest = cmd.slice(i);
|
|
205
|
+
const end = new RegExp(`\\n[ \\t]*${marker[2]}[ \\t]*(?:\\n|$)`).exec(rest);
|
|
206
|
+
i += end ? end.index + end[0].length : rest.length;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (ch === "'") {
|
|
211
|
+
started = true;
|
|
212
|
+
quoted = true;
|
|
213
|
+
i++;
|
|
214
|
+
while (i < cmd.length && cmd[i] !== "'") {
|
|
215
|
+
text += cmd[i];
|
|
216
|
+
i++;
|
|
217
|
+
}
|
|
218
|
+
i++;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (ch === '"') {
|
|
222
|
+
started = true;
|
|
223
|
+
quoted = true;
|
|
224
|
+
i++;
|
|
225
|
+
while (i < cmd.length && cmd[i] !== '"') {
|
|
226
|
+
if (cmd[i] === "\\" && i + 1 < cmd.length) {
|
|
227
|
+
text += cmd[i + 1];
|
|
228
|
+
i += 2;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
text += cmd[i];
|
|
232
|
+
i++;
|
|
233
|
+
}
|
|
234
|
+
i++;
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (ch === "\\" && i + 1 < cmd.length) {
|
|
238
|
+
started = true;
|
|
239
|
+
text += cmd[i + 1];
|
|
240
|
+
i += 2;
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (ch === "\n") {
|
|
244
|
+
endSegment();
|
|
245
|
+
i++;
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
if (/\s/.test(ch)) {
|
|
249
|
+
endToken();
|
|
250
|
+
i++;
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
// Backtick substitution splits like `$(...)` does. Without this the tick
|
|
254
|
+
// glues onto the command word (`` `grep `` != `grep`) and the whole
|
|
255
|
+
// invocation slips past unrecognised.
|
|
256
|
+
if (ch === ";" || ch === "|" || ch === "&" || ch === "(" || ch === ")" || ch === "{" || ch === "}" || ch === "`") {
|
|
257
|
+
endSegment();
|
|
258
|
+
i++;
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
started = true;
|
|
262
|
+
text += ch;
|
|
263
|
+
i++;
|
|
264
|
+
}
|
|
265
|
+
endSegment();
|
|
266
|
+
return segments;
|
|
267
|
+
}
|
|
268
|
+
/** The command a segment actually invokes, plus its unquoted argument tokens. */
|
|
269
|
+
function segmentInvocation(tokens) {
|
|
270
|
+
let i = 0;
|
|
271
|
+
while (i < tokens.length) {
|
|
272
|
+
const token = tokens[i];
|
|
273
|
+
// Skip `FOO=bar` env assignments and shell/wrapper words like `sudo`, `do`.
|
|
274
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(token.text)) {
|
|
275
|
+
i++;
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
const base = token.text.split("/").pop() ?? token.text;
|
|
279
|
+
if (COMMAND_PREFIXES.has(base)) {
|
|
280
|
+
i++;
|
|
281
|
+
// A wrapper's own flags (`xargs -0 rg`) precede the real command.
|
|
282
|
+
while (i < tokens.length && tokens[i].text.startsWith("-"))
|
|
283
|
+
i++;
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
return { name: base, args: tokens.slice(i + 1) };
|
|
287
|
+
}
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
/** Flags only count when they were written unquoted — `grep "x -r y" f` is a pattern. */
|
|
291
|
+
function hasFlag(args, pattern) {
|
|
292
|
+
return args.some((token) => !token.quoted && pattern.test(token.text));
|
|
293
|
+
}
|
|
137
294
|
function isFileFindCommand(cmd) {
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
295
|
+
for (const segment of lexShellSegments(cmd)) {
|
|
296
|
+
const invocation = segmentInvocation(segment);
|
|
297
|
+
if (invocation?.name !== "find")
|
|
298
|
+
continue;
|
|
299
|
+
const hasNameFilter = hasFlag(invocation.args, /^-i?name$/);
|
|
300
|
+
const hasDestructive = hasFlag(invocation.args, /^-(?:exec|delete|ok)$/) ||
|
|
301
|
+
invocation.args.some((token) => !token.quoted && (token.text === "rm" || token.text === "mv"));
|
|
302
|
+
if (hasNameFilter && !hasDestructive)
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
return false;
|
|
142
306
|
}
|
|
143
307
|
function isContentGrepCommand(cmd) {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
308
|
+
for (const segment of lexShellSegments(cmd)) {
|
|
309
|
+
const invocation = segmentInvocation(segment);
|
|
310
|
+
if (!invocation)
|
|
311
|
+
continue;
|
|
312
|
+
if (invocation.name === "rg")
|
|
313
|
+
return true;
|
|
314
|
+
// `git grep` lexes as command `git` with args `grep …`, so it never matches
|
|
315
|
+
// here — which is intended: it is repo-aware already and is left alone.
|
|
316
|
+
if (invocation.name !== "grep" && invocation.name !== "egrep")
|
|
317
|
+
continue;
|
|
318
|
+
if (hasFlag(invocation.args, /^--recursive$/) || hasFlag(invocation.args, /^-[A-Za-z]*[rR]/))
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
return false;
|
|
147
322
|
}
|
|
148
323
|
export async function handlePrecheckBash() {
|
|
149
324
|
try {
|
|
@@ -162,7 +337,7 @@ export async function handlePrecheckBash() {
|
|
|
162
337
|
process.exit(0);
|
|
163
338
|
return;
|
|
164
339
|
}
|
|
165
|
-
if (!isCurrentRepoIndexed()) {
|
|
340
|
+
if (!isCurrentRepoIndexed() || !isCodesiftServerRunning()) {
|
|
166
341
|
process.exit(0);
|
|
167
342
|
return;
|
|
168
343
|
}
|
|
@@ -189,6 +364,13 @@ export async function handlePrecheckGlob() {
|
|
|
189
364
|
process.exit(0);
|
|
190
365
|
return;
|
|
191
366
|
}
|
|
367
|
+
// "CodeSift is available" must be true before we say it. This denied
|
|
368
|
+
// unconditionally, so a dead server left callers with neither Glob nor the
|
|
369
|
+
// tools it advertised.
|
|
370
|
+
if (!isCodesiftServerRunning()) {
|
|
371
|
+
process.exit(0);
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
192
374
|
denyTool(`CodeSift is available. Use CodeSift instead of Glob:\n` +
|
|
193
375
|
` get_file_tree(compact=true, name_pattern="*.ts") — find files\n` +
|
|
194
376
|
` search_symbols(query="name", kind="function") — find symbols`);
|
|
@@ -204,6 +386,11 @@ export async function handlePrecheckGrep() {
|
|
|
204
386
|
process.exit(0);
|
|
205
387
|
return;
|
|
206
388
|
}
|
|
389
|
+
// Same as Glob above: never redirect to tools the caller cannot reach.
|
|
390
|
+
if (!isCodesiftServerRunning()) {
|
|
391
|
+
process.exit(0);
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
207
394
|
denyTool(`CodeSift is available. Use CodeSift instead of Grep:\n` +
|
|
208
395
|
` search_text(query="pattern", file_pattern="*.ts") — BM25-ranked full-text search\n` +
|
|
209
396
|
` search_symbols(query="name", include_source=true) — find functions/classes`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/cli/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/cli/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
export declare const CODE_EXTENSIONS: ReadonlySet<string>;
|
|
2
2
|
export declare const DEFAULT_MIN_LINES = 200;
|
|
3
3
|
export declare function isCwdInsideRepo(cwd: string, repoRoot: string): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* True when a CodeSift MCP server is actually running, i.e. the agent plausibly
|
|
6
|
+
* HAS the tools these hooks redirect to.
|
|
7
|
+
*
|
|
8
|
+
* Without this check the hooks only ask "is the repo indexed on disk?" — which
|
|
9
|
+
* stays true long after the server dies. Three independent agents were observed
|
|
10
|
+
* being denied `grep`/`find`/`Read` and told to "use CodeSift MCP tools" while
|
|
11
|
+
* having no CodeSift tools at all; each ended up smuggling the same search
|
|
12
|
+
* through an inline `python3` script, so the block bought nothing and cost every
|
|
13
|
+
* one of them a detour. Redirecting to a capability the caller does not have is
|
|
14
|
+
* strictly worse than allowing the fallback.
|
|
15
|
+
*
|
|
16
|
+
* Deliberately fails OPEN: any error, or an unreadable process table, means we
|
|
17
|
+
* do not block. The `ps` spawn only happens on the deny path (a find/grep in an
|
|
18
|
+
* indexed repo), never on the common path.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isCodesiftServerRunning(): boolean;
|
|
4
21
|
export declare function isCurrentRepoIndexed(): boolean;
|
|
5
22
|
export declare function denyTool(reason: string): never;
|
|
6
23
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAmB9C,CAAC;AAEH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAMrC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CA8BjD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAoB9C;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAS9C"}
|
package/dist/cli/hooks/shared.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
2
3
|
import { join, posix as pathPosix, win32 as pathWin32 } from "node:path";
|
|
3
4
|
import { homedir } from "node:os";
|
|
4
5
|
export const CODE_EXTENSIONS = new Set([
|
|
@@ -32,6 +33,56 @@ export function isCwdInsideRepo(cwd, repoRoot) {
|
|
|
32
33
|
return true;
|
|
33
34
|
return rel !== ".." && !rel.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(rel);
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* True when a CodeSift MCP server is actually running, i.e. the agent plausibly
|
|
38
|
+
* HAS the tools these hooks redirect to.
|
|
39
|
+
*
|
|
40
|
+
* Without this check the hooks only ask "is the repo indexed on disk?" — which
|
|
41
|
+
* stays true long after the server dies. Three independent agents were observed
|
|
42
|
+
* being denied `grep`/`find`/`Read` and told to "use CodeSift MCP tools" while
|
|
43
|
+
* having no CodeSift tools at all; each ended up smuggling the same search
|
|
44
|
+
* through an inline `python3` script, so the block bought nothing and cost every
|
|
45
|
+
* one of them a detour. Redirecting to a capability the caller does not have is
|
|
46
|
+
* strictly worse than allowing the fallback.
|
|
47
|
+
*
|
|
48
|
+
* Deliberately fails OPEN: any error, or an unreadable process table, means we
|
|
49
|
+
* do not block. The `ps` spawn only happens on the deny path (a find/grep in an
|
|
50
|
+
* indexed repo), never on the common path.
|
|
51
|
+
*/
|
|
52
|
+
export function isCodesiftServerRunning() {
|
|
53
|
+
try {
|
|
54
|
+
// Static import — this file ships as ESM, where `require` is undefined. Using
|
|
55
|
+
// it here threw ReferenceError straight into the catch below, which returns
|
|
56
|
+
// true, so the guard silently reported "server running" every single time and
|
|
57
|
+
// never actually unblocked anything.
|
|
58
|
+
const out = execFileSync("ps", ["-Ao", "command"], {
|
|
59
|
+
encoding: "utf-8",
|
|
60
|
+
timeout: 2000,
|
|
61
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
62
|
+
});
|
|
63
|
+
// Match the SERVER entrypoint only. Matching any command containing
|
|
64
|
+
// "codesift-mcp" is far too loose: the CLI hooks themselves
|
|
65
|
+
// (postindex-file, precheck-*) resolve through
|
|
66
|
+
// .../node_modules/codesift-mcp/dist/cli.js, so every edit-triggered hook
|
|
67
|
+
// looked like a running server and the guard never fired.
|
|
68
|
+
return out.split("\n").some((line) => {
|
|
69
|
+
const cmd = line.trim();
|
|
70
|
+
if (!cmd || cmd.includes("precheck-") || cmd.includes("postindex-"))
|
|
71
|
+
return false;
|
|
72
|
+
if (cmd.includes("dist/server.js"))
|
|
73
|
+
return true; // absolute OR relative invocation
|
|
74
|
+
return /(^|\/)codesift-mcp(\s|$)/.test(cmd); // the codesift-mcp bin, no subcommand
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Fail OPEN, as the contract above promises. This used to `return true`
|
|
79
|
+
// ("assume running"), which inverted it: callers treat true as "server is
|
|
80
|
+
// up" and go on to deny the tool, so an unreadable process table produced
|
|
81
|
+
// exactly the outage this function exists to prevent — the agent loses the
|
|
82
|
+
// native fallback AND has no CodeSift tools to redirect to.
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
35
86
|
export function isCurrentRepoIndexed() {
|
|
36
87
|
try {
|
|
37
88
|
const raw = readFileSync(getRegistryPath(), "utf-8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IAC1D,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,IAAI;IACJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,QAAgB;IAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAChD,MAAM,IAAI,GAAG,IAAgD,CAAC;YAC9D,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,SAAS;YACnF,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM;SACjC;KACF,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/cli/hooks/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codesift service` — run the shared daemon as a supervised background service.
|
|
3
|
+
*
|
|
4
|
+
* Without this, `codesift serve` is a foreground process: it dies with the
|
|
5
|
+
* terminal that launched it, does not come back after a crash, and is not there
|
|
6
|
+
* after a reboot. Every client is then configured to talk to a daemon that
|
|
7
|
+
* isn't running. Supervision is what makes the shared-daemon model safe to
|
|
8
|
+
* depend on — it turns "one process for everyone" from a single point of
|
|
9
|
+
* failure into a service that restarts itself.
|
|
10
|
+
*
|
|
11
|
+
* macOS gets a per-user LaunchAgent, Linux a systemd *user* unit. Both are
|
|
12
|
+
* per-user and unprivileged by design: nothing here needs root, and a daemon
|
|
13
|
+
* holding every index on the machine is exactly the thing that should not run
|
|
14
|
+
* as root.
|
|
15
|
+
*/
|
|
16
|
+
export declare const SERVICE_LABEL = "com.codesift.daemon";
|
|
17
|
+
export declare const DEFAULT_SERVICE_PORT = 7077;
|
|
18
|
+
/**
|
|
19
|
+
* PATH handed to the service.
|
|
20
|
+
*
|
|
21
|
+
* launchd does NOT give an agent the login shell's PATH — it gets a minimal
|
|
22
|
+
* one. CodeSift shells out to `git` (repo detection, churn analysis, diff
|
|
23
|
+
* tools) and optionally to `rg`, so a daemon started by launchd with the
|
|
24
|
+
* default PATH silently loses those features while looking healthy. Homebrew
|
|
25
|
+
* differs by arch (/opt/homebrew on Apple Silicon, /usr/local on Intel), so
|
|
26
|
+
* both are listed.
|
|
27
|
+
*/
|
|
28
|
+
export declare const SERVICE_PATH_ENTRIES: string[];
|
|
29
|
+
export interface ServicePlan {
|
|
30
|
+
label: string;
|
|
31
|
+
port: number;
|
|
32
|
+
host: string;
|
|
33
|
+
/** Absolute path to the node binary that will run the daemon. */
|
|
34
|
+
execPath: string;
|
|
35
|
+
/** Absolute path to the codesift CLI entry point. */
|
|
36
|
+
cliPath: string;
|
|
37
|
+
/** Where the unit file goes. */
|
|
38
|
+
unitPath: string;
|
|
39
|
+
stdoutLog: string;
|
|
40
|
+
stderrLog: string;
|
|
41
|
+
dataDir: string;
|
|
42
|
+
}
|
|
43
|
+
/** Escape a string for inclusion in XML text content. */
|
|
44
|
+
export declare function escapeXml(value: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* True for addresses that keep the daemon reachable only from this machine.
|
|
47
|
+
*
|
|
48
|
+
* This matters more than it looks: the daemon answers MCP tool calls that read
|
|
49
|
+
* any indexed repository, so binding it to a routable interface publishes the
|
|
50
|
+
* user's entire source tree — and their indexed conversation history — to
|
|
51
|
+
* anything that can reach the port. There is no authentication by default.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
54
|
+
/** Resolve the CLI entry point for the currently running codesift install. */
|
|
55
|
+
export declare function resolveCliPath(): string;
|
|
56
|
+
export declare function buildServicePlan(opts: {
|
|
57
|
+
port?: number;
|
|
58
|
+
host?: string;
|
|
59
|
+
dataDir: string;
|
|
60
|
+
execPath?: string;
|
|
61
|
+
cliPath?: string;
|
|
62
|
+
home?: string;
|
|
63
|
+
os?: NodeJS.Platform;
|
|
64
|
+
}): ServicePlan;
|
|
65
|
+
/**
|
|
66
|
+
* macOS LaunchAgent.
|
|
67
|
+
*
|
|
68
|
+
* `KeepAlive` restarts the daemon whenever it exits for any reason — crash, OOM
|
|
69
|
+
* kill, or a `kill` from a user cleaning up processes. `ThrottleInterval` is the
|
|
70
|
+
* guard that keeps that from becoming a restart storm if the daemon cannot
|
|
71
|
+
* start at all (port taken by something else, corrupt install): launchd waits
|
|
72
|
+
* between attempts instead of spinning. `RunAtLoad` covers login and reboot.
|
|
73
|
+
*
|
|
74
|
+
* To stop it deliberately, unload the agent (`codesift service uninstall`) —
|
|
75
|
+
* killing the process alone just makes launchd start it again, which is the
|
|
76
|
+
* whole point.
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildLaunchAgentPlist(plan: ServicePlan): string;
|
|
79
|
+
/** Linux systemd *user* unit — same supervision contract as the LaunchAgent. */
|
|
80
|
+
export declare function buildSystemdUnit(plan: ServicePlan): string;
|
|
81
|
+
export declare function renderUnit(plan: ServicePlan, os: NodeJS.Platform): string;
|
|
82
|
+
export interface InstallResult {
|
|
83
|
+
status: "installed" | "already-installed" | "unsupported";
|
|
84
|
+
unitPath: string;
|
|
85
|
+
url: string;
|
|
86
|
+
activated: boolean;
|
|
87
|
+
note?: string;
|
|
88
|
+
}
|
|
89
|
+
/** Injectable so tests can exercise install/uninstall without touching launchd. */
|
|
90
|
+
export type CommandRunner = (cmd: string, args: string[]) => {
|
|
91
|
+
ok: boolean;
|
|
92
|
+
message: string;
|
|
93
|
+
};
|
|
94
|
+
export declare function installService(opts: {
|
|
95
|
+
port?: number;
|
|
96
|
+
host?: string;
|
|
97
|
+
dataDir: string;
|
|
98
|
+
force?: boolean;
|
|
99
|
+
os?: NodeJS.Platform;
|
|
100
|
+
home?: string;
|
|
101
|
+
runner?: CommandRunner;
|
|
102
|
+
}): InstallResult;
|
|
103
|
+
export declare function uninstallService(opts: {
|
|
104
|
+
dataDir: string;
|
|
105
|
+
os?: NodeJS.Platform;
|
|
106
|
+
home?: string;
|
|
107
|
+
runner?: CommandRunner;
|
|
108
|
+
}): {
|
|
109
|
+
status: "removed" | "not-installed";
|
|
110
|
+
unitPath: string;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Installed / starting / running, kept distinct on purpose.
|
|
114
|
+
*
|
|
115
|
+
* The daemon writes `daemon.pid` when it takes the lock but `daemon.port` only
|
|
116
|
+
* once the HTTP listener is actually up, and on a machine with large indexes
|
|
117
|
+
* that gap is tens of seconds. Collapsing the gap into "running" reports a
|
|
118
|
+
* daemon nothing can connect to yet as healthy, which sends whoever is
|
|
119
|
+
* debugging a client straight past the real answer ("wait, then retry").
|
|
120
|
+
*/
|
|
121
|
+
export declare function serviceStatus(opts: {
|
|
122
|
+
dataDir: string;
|
|
123
|
+
os?: NodeJS.Platform;
|
|
124
|
+
home?: string;
|
|
125
|
+
}): {
|
|
126
|
+
installed: boolean;
|
|
127
|
+
unitPath: string;
|
|
128
|
+
state: "not-installed" | "stopped" | "starting" | "running";
|
|
129
|
+
running: boolean;
|
|
130
|
+
pid: number | null;
|
|
131
|
+
port: number | null;
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
|