codesift-mcp 0.9.5 → 0.10.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 +62 -23
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +92 -2
- package/dist/cli/commands.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 +18 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/hooks/input.d.ts +11 -0
- package/dist/cli/hooks/input.d.ts.map +1 -0
- package/dist/cli/hooks/input.js +111 -0
- package/dist/cli/hooks/input.js.map +1 -0
- package/dist/cli/hooks/post-tool-use.d.ts +2 -0
- package/dist/cli/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/cli/hooks/post-tool-use.js +339 -0
- package/dist/cli/hooks/post-tool-use.js.map +1 -0
- package/dist/cli/hooks/pre-compact.d.ts +2 -0
- package/dist/cli/hooks/pre-compact.d.ts.map +1 -0
- package/dist/cli/hooks/pre-compact.js +41 -0
- package/dist/cli/hooks/pre-compact.js.map +1 -0
- package/dist/cli/hooks/pre-tool-use.d.ts +5 -0
- package/dist/cli/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/cli/hooks/pre-tool-use.js +215 -0
- package/dist/cli/hooks/pre-tool-use.js.map +1 -0
- package/dist/cli/hooks/session.d.ts +5 -0
- package/dist/cli/hooks/session.d.ts.map +1 -0
- package/dist/cli/hooks/session.js +188 -0
- package/dist/cli/hooks/session.js.map +1 -0
- package/dist/cli/hooks/shared.d.ts +6 -0
- package/dist/cli/hooks/shared.d.ts.map +1 -0
- package/dist/cli/hooks/shared.js +70 -0
- package/dist/cli/hooks/shared.js.map +1 -0
- package/dist/cli/hooks/wiki.d.ts +10 -0
- package/dist/cli/hooks/wiki.d.ts.map +1 -0
- package/dist/cli/hooks/wiki.js +202 -0
- package/dist/cli/hooks/wiki.js.map +1 -0
- package/dist/cli/hooks.d.ts +5 -16
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +5 -1132
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/setup/claude.d.ts +4 -0
- package/dist/cli/setup/claude.d.ts.map +1 -0
- package/dist/cli/setup/claude.js +123 -0
- package/dist/cli/setup/claude.js.map +1 -0
- package/dist/cli/setup/codex.d.ts +12 -0
- package/dist/cli/setup/codex.d.ts.map +1 -0
- package/dist/cli/setup/codex.js +182 -0
- package/dist/cli/setup/codex.js.map +1 -0
- package/dist/cli/setup/cursor.d.ts +3 -0
- package/dist/cli/setup/cursor.d.ts.map +1 -0
- package/dist/cli/setup/cursor.js +6 -0
- package/dist/cli/setup/cursor.js.map +1 -0
- package/dist/cli/setup/fs.d.ts +6 -0
- package/dist/cli/setup/fs.d.ts.map +1 -0
- package/dist/cli/setup/fs.js +44 -0
- package/dist/cli/setup/fs.js.map +1 -0
- package/dist/cli/setup/gemini.d.ts +5 -0
- package/dist/cli/setup/gemini.d.ts.map +1 -0
- package/dist/cli/setup/gemini.js +46 -0
- package/dist/cli/setup/gemini.js.map +1 -0
- package/dist/cli/setup/hooks.d.ts +12 -0
- package/dist/cli/setup/hooks.d.ts.map +1 -0
- package/dist/cli/setup/hooks.js +29 -0
- package/dist/cli/setup/hooks.js.map +1 -0
- package/dist/cli/setup/mcp.d.ts +13 -0
- package/dist/cli/setup/mcp.d.ts.map +1 -0
- package/dist/cli/setup/mcp.js +104 -0
- package/dist/cli/setup/mcp.js.map +1 -0
- package/dist/cli/setup/rules.d.ts +4 -0
- package/dist/cli/setup/rules.d.ts.map +1 -0
- package/dist/cli/setup/rules.js +157 -0
- package/dist/cli/setup/rules.js.map +1 -0
- package/dist/cli/setup/types.d.ts +24 -0
- package/dist/cli/setup/types.d.ts.map +1 -0
- package/dist/cli/setup/types.js +2 -0
- package/dist/cli/setup/types.js.map +1 -0
- package/dist/cli/setup.d.ts +8 -48
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +49 -705
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/telemetry-commands.d.ts +2 -0
- package/dist/cli/telemetry-commands.d.ts.map +1 -0
- package/dist/cli/telemetry-commands.js +50 -0
- package/dist/cli/telemetry-commands.js.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -2
- package/dist/config.js.map +1 -1
- package/dist/formatter-dispatch.d.ts +53 -0
- package/dist/formatter-dispatch.d.ts.map +1 -0
- package/dist/formatter-dispatch.js +54 -0
- package/dist/formatter-dispatch.js.map +1 -0
- package/dist/formatters-analysis.d.ts +9 -0
- package/dist/formatters-analysis.d.ts.map +1 -0
- package/dist/formatters-analysis.js +166 -0
- package/dist/formatters-analysis.js.map +1 -0
- package/dist/formatters-core.d.ts +200 -0
- package/dist/formatters-core.d.ts.map +1 -0
- package/dist/formatters-core.js +206 -0
- package/dist/formatters-core.js.map +1 -0
- package/dist/formatters-graph.d.ts +124 -0
- package/dist/formatters-graph.d.ts.map +1 -0
- package/dist/formatters-graph.js +175 -0
- package/dist/formatters-graph.js.map +1 -0
- package/dist/formatters-nextjs.d.ts +22 -0
- package/dist/formatters-nextjs.d.ts.map +1 -0
- package/dist/formatters-nextjs.js +394 -0
- package/dist/formatters-nextjs.js.map +1 -0
- package/dist/formatters.d.ts +8 -349
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +10 -929
- package/dist/formatters.js.map +1 -1
- package/dist/parser/astro-template/preprocess.d.ts +12 -0
- package/dist/parser/astro-template/preprocess.d.ts.map +1 -0
- package/dist/parser/astro-template/preprocess.js +34 -0
- package/dist/parser/astro-template/preprocess.js.map +1 -0
- package/dist/parser/astro-template/resolution.d.ts +16 -0
- package/dist/parser/astro-template/resolution.d.ts.map +1 -0
- package/dist/parser/astro-template/resolution.js +58 -0
- package/dist/parser/astro-template/resolution.js.map +1 -0
- package/dist/parser/astro-template/scanner.d.ts +4 -0
- package/dist/parser/astro-template/scanner.d.ts.map +1 -0
- package/dist/parser/astro-template/scanner.js +71 -0
- package/dist/parser/astro-template/scanner.js.map +1 -0
- package/dist/parser/astro-template/state.d.ts +22 -0
- package/dist/parser/astro-template/state.d.ts.map +1 -0
- package/dist/parser/astro-template/state.js +48 -0
- package/dist/parser/astro-template/state.js.map +1 -0
- package/dist/parser/astro-template/tag-processor.d.ts +3 -0
- package/dist/parser/astro-template/tag-processor.d.ts.map +1 -0
- package/dist/parser/astro-template/tag-processor.js +63 -0
- package/dist/parser/astro-template/tag-processor.js.map +1 -0
- package/dist/parser/astro-template/types.d.ts +42 -0
- package/dist/parser/astro-template/types.d.ts.map +1 -0
- package/dist/parser/astro-template/types.js +2 -0
- package/dist/parser/astro-template/types.js.map +1 -0
- package/dist/parser/astro-template.d.ts +2 -45
- package/dist/parser/astro-template.d.ts.map +1 -1
- package/dist/parser/astro-template.js +7 -168
- package/dist/parser/astro-template.js.map +1 -1
- package/dist/parser/extractors/_shared.js +1 -1
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/astro.js +1 -1
- package/dist/parser/extractors/astro.js.map +1 -1
- package/dist/parser/extractors/conversation.js +1 -1
- package/dist/parser/extractors/conversation.js.map +1 -1
- package/dist/parser/extractors/hono-app-discovery.d.ts +4 -0
- package/dist/parser/extractors/hono-app-discovery.d.ts.map +1 -0
- package/dist/parser/extractors/hono-app-discovery.js +169 -0
- package/dist/parser/extractors/hono-app-discovery.js.map +1 -0
- package/dist/parser/extractors/hono-ast-utils.d.ts +6 -0
- package/dist/parser/extractors/hono-ast-utils.d.ts.map +1 -0
- package/dist/parser/extractors/hono-ast-utils.js +77 -0
- package/dist/parser/extractors/hono-ast-utils.js.map +1 -0
- package/dist/parser/extractors/hono-context-extractor.d.ts +15 -0
- package/dist/parser/extractors/hono-context-extractor.d.ts.map +1 -0
- package/dist/parser/extractors/hono-context-extractor.js +191 -0
- package/dist/parser/extractors/hono-context-extractor.js.map +1 -0
- package/dist/parser/extractors/hono-middleware-extractor.d.ts +38 -0
- package/dist/parser/extractors/hono-middleware-extractor.d.ts.map +1 -0
- package/dist/parser/extractors/hono-middleware-extractor.js +480 -0
- package/dist/parser/extractors/hono-middleware-extractor.js.map +1 -0
- package/dist/parser/extractors/hono-openapi-extractor.d.ts +11 -0
- package/dist/parser/extractors/hono-openapi-extractor.d.ts.map +1 -0
- package/dist/parser/extractors/hono-openapi-extractor.js +119 -0
- package/dist/parser/extractors/hono-openapi-extractor.js.map +1 -0
- package/dist/parser/extractors/hono-route-extractor.d.ts +11 -0
- package/dist/parser/extractors/hono-route-extractor.d.ts.map +1 -0
- package/dist/parser/extractors/hono-route-extractor.js +128 -0
- package/dist/parser/extractors/hono-route-extractor.js.map +1 -0
- package/dist/parser/extractors/hono-route-utils.d.ts +11 -0
- package/dist/parser/extractors/hono-route-utils.d.ts.map +1 -0
- package/dist/parser/extractors/hono-route-utils.js +40 -0
- package/dist/parser/extractors/hono-route-utils.js.map +1 -0
- package/dist/parser/extractors/hono-runtime-extractor.d.ts +17 -0
- package/dist/parser/extractors/hono-runtime-extractor.d.ts.map +1 -0
- package/dist/parser/extractors/hono-runtime-extractor.js +141 -0
- package/dist/parser/extractors/hono-runtime-extractor.js.map +1 -0
- package/dist/parser/extractors/hono.d.ts +5 -79
- package/dist/parser/extractors/hono.d.ts.map +1 -1
- package/dist/parser/extractors/hono.js +32 -1159
- package/dist/parser/extractors/hono.js.map +1 -1
- package/dist/parser/extractors/kotlin-ast-helpers.d.ts +43 -0
- package/dist/parser/extractors/kotlin-ast-helpers.d.ts.map +1 -0
- package/dist/parser/extractors/kotlin-ast-helpers.js +187 -0
- package/dist/parser/extractors/kotlin-ast-helpers.js.map +1 -0
- package/dist/parser/extractors/kotlin-test-symbols.d.ts +21 -0
- package/dist/parser/extractors/kotlin-test-symbols.d.ts.map +1 -0
- package/dist/parser/extractors/kotlin-test-symbols.js +162 -0
- package/dist/parser/extractors/kotlin-test-symbols.js.map +1 -0
- package/dist/parser/extractors/kotlin.d.ts.map +1 -1
- package/dist/parser/extractors/kotlin.js +3 -334
- package/dist/parser/extractors/kotlin.js.map +1 -1
- package/dist/parser/extractors/markdown.js +1 -1
- package/dist/parser/extractors/markdown.js.map +1 -1
- package/dist/parser/extractors/prisma.js +1 -1
- package/dist/parser/extractors/prisma.js.map +1 -1
- package/dist/parser/extractors/sql-boundaries.d.ts +3 -0
- package/dist/parser/extractors/sql-boundaries.d.ts.map +1 -0
- package/dist/parser/extractors/sql-boundaries.js +19 -0
- package/dist/parser/extractors/sql-boundaries.js.map +1 -0
- package/dist/parser/extractors/sql-columns.d.ts +14 -0
- package/dist/parser/extractors/sql-columns.d.ts.map +1 -0
- package/dist/parser/extractors/sql-columns.js +59 -0
- package/dist/parser/extractors/sql-columns.js.map +1 -0
- package/dist/parser/extractors/sql-docstrings.d.ts +2 -0
- package/dist/parser/extractors/sql-docstrings.d.ts.map +1 -0
- package/dist/parser/extractors/sql-docstrings.js +45 -0
- package/dist/parser/extractors/sql-docstrings.js.map +1 -0
- package/dist/parser/extractors/sql-end-scanner.d.ts +5 -0
- package/dist/parser/extractors/sql-end-scanner.d.ts.map +1 -0
- package/dist/parser/extractors/sql-end-scanner.js +84 -0
- package/dist/parser/extractors/sql-end-scanner.js.map +1 -0
- package/dist/parser/extractors/sql-jinja.d.ts +2 -0
- package/dist/parser/extractors/sql-jinja.d.ts.map +1 -0
- package/dist/parser/extractors/sql-jinja.js +8 -0
- package/dist/parser/extractors/sql-jinja.js.map +1 -0
- package/dist/parser/extractors/sql-matcher-catalog.d.ts +9 -0
- package/dist/parser/extractors/sql-matcher-catalog.d.ts.map +1 -0
- package/dist/parser/extractors/sql-matcher-catalog.js +15 -0
- package/dist/parser/extractors/sql-matcher-catalog.js.map +1 -0
- package/dist/parser/extractors/sql-matchers.d.ts +9 -0
- package/dist/parser/extractors/sql-matchers.d.ts.map +1 -0
- package/dist/parser/extractors/sql-matchers.js +20 -0
- package/dist/parser/extractors/sql-matchers.js.map +1 -0
- package/dist/parser/extractors/sql-offsets.d.ts +2 -0
- package/dist/parser/extractors/sql-offsets.d.ts.map +1 -0
- package/dist/parser/extractors/sql-offsets.js +25 -0
- package/dist/parser/extractors/sql-offsets.js.map +1 -0
- package/dist/parser/extractors/sql-parens.d.ts +4 -0
- package/dist/parser/extractors/sql-parens.d.ts.map +1 -0
- package/dist/parser/extractors/sql-parens.js +70 -0
- package/dist/parser/extractors/sql-parens.js.map +1 -0
- package/dist/parser/extractors/sql-symbols.d.ts +11 -0
- package/dist/parser/extractors/sql-symbols.d.ts.map +1 -0
- package/dist/parser/extractors/sql-symbols.js +23 -0
- package/dist/parser/extractors/sql-symbols.js.map +1 -0
- package/dist/parser/extractors/sql.d.ts +2 -30
- package/dist/parser/extractors/sql.d.ts.map +1 -1
- package/dist/parser/extractors/sql.js +23 -496
- package/dist/parser/extractors/sql.js.map +1 -1
- package/dist/parser/extractors/typescript-cjs-nodes.d.ts +5 -0
- package/dist/parser/extractors/typescript-cjs-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-cjs-nodes.js +148 -0
- package/dist/parser/extractors/typescript-cjs-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript-class-nodes.d.ts +8 -0
- package/dist/parser/extractors/typescript-class-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-class-nodes.js +183 -0
- package/dist/parser/extractors/typescript-class-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript-declaration-nodes.d.ts +5 -0
- package/dist/parser/extractors/typescript-declaration-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-declaration-nodes.js +105 -0
- package/dist/parser/extractors/typescript-declaration-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript-module-nodes.d.ts +6 -0
- package/dist/parser/extractors/typescript-module-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-module-nodes.js +151 -0
- package/dist/parser/extractors/typescript-module-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript-react.d.ts +11 -0
- package/dist/parser/extractors/typescript-react.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-react.js +101 -0
- package/dist/parser/extractors/typescript-react.js.map +1 -0
- package/dist/parser/extractors/typescript-shared.d.ts +26 -0
- package/dist/parser/extractors/typescript-shared.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-shared.js +101 -0
- package/dist/parser/extractors/typescript-shared.js.map +1 -0
- package/dist/parser/extractors/typescript-test-nodes.d.ts +4 -0
- package/dist/parser/extractors/typescript-test-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-test-nodes.js +112 -0
- package/dist/parser/extractors/typescript-test-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript-type-nodes.d.ts +6 -0
- package/dist/parser/extractors/typescript-type-nodes.d.ts.map +1 -0
- package/dist/parser/extractors/typescript-type-nodes.js +48 -0
- package/dist/parser/extractors/typescript-type-nodes.js.map +1 -0
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +68 -1127
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +5 -0
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts +1 -12
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +2 -24
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/parser/symbol-utils.d.ts +4 -0
- package/dist/parser/symbol-utils.d.ts.map +1 -0
- package/dist/parser/symbol-utils.js +20 -0
- package/dist/parser/symbol-utils.js.map +1 -0
- package/dist/register-tool-groups/analysis/cross-repo.d.ts +4 -0
- package/dist/register-tool-groups/analysis/cross-repo.d.ts.map +1 -0
- package/dist/register-tool-groups/analysis/cross-repo.js +108 -0
- package/dist/register-tool-groups/analysis/cross-repo.js.map +1 -0
- package/dist/register-tool-groups/analysis/review.d.ts +3 -0
- package/dist/register-tool-groups/analysis/review.d.ts.map +1 -0
- package/dist/register-tool-groups/analysis/review.js +96 -0
- package/dist/register-tool-groups/analysis/review.js.map +1 -0
- package/dist/register-tool-groups/analysis/workspace.d.ts +3 -0
- package/dist/register-tool-groups/analysis/workspace.d.ts.map +1 -0
- package/dist/register-tool-groups/analysis/workspace.js +82 -0
- package/dist/register-tool-groups/analysis/workspace.js.map +1 -0
- package/dist/register-tool-groups/analysis.d.ts +3 -0
- package/dist/register-tool-groups/analysis.d.ts.map +1 -0
- package/dist/register-tool-groups/analysis.js +541 -0
- package/dist/register-tool-groups/analysis.js.map +1 -0
- package/dist/register-tool-groups/astro.d.ts +3 -0
- package/dist/register-tool-groups/astro.d.ts.map +1 -0
- package/dist/register-tool-groups/astro.js +302 -0
- package/dist/register-tool-groups/astro.js.map +1 -0
- package/dist/register-tool-groups/core/index.d.ts +3 -0
- package/dist/register-tool-groups/core/index.d.ts.map +1 -0
- package/dist/register-tool-groups/core/index.js +96 -0
- package/dist/register-tool-groups/core/index.js.map +1 -0
- package/dist/register-tool-groups/core/meta.d.ts +3 -0
- package/dist/register-tool-groups/core/meta.d.ts.map +1 -0
- package/dist/register-tool-groups/core/meta.js +180 -0
- package/dist/register-tool-groups/core/meta.js.map +1 -0
- package/dist/register-tool-groups/core/schema.d.ts +3 -0
- package/dist/register-tool-groups/core/schema.d.ts.map +1 -0
- package/dist/register-tool-groups/core/schema.js +16 -0
- package/dist/register-tool-groups/core/schema.js.map +1 -0
- package/dist/register-tool-groups/core/search.d.ts +4 -0
- package/dist/register-tool-groups/core/search.d.ts.map +1 -0
- package/dist/register-tool-groups/core/search.js +262 -0
- package/dist/register-tool-groups/core/search.js.map +1 -0
- package/dist/register-tool-groups/core/symbols.d.ts +3 -0
- package/dist/register-tool-groups/core/symbols.d.ts.map +1 -0
- package/dist/register-tool-groups/core/symbols.js +338 -0
- package/dist/register-tool-groups/core/symbols.js.map +1 -0
- package/dist/register-tool-groups/core.d.ts +3 -0
- package/dist/register-tool-groups/core.d.ts.map +1 -0
- package/dist/register-tool-groups/core.js +12 -0
- package/dist/register-tool-groups/core.js.map +1 -0
- package/dist/register-tool-groups/deps.d.ts +10 -0
- package/dist/register-tool-groups/deps.d.ts.map +1 -0
- package/dist/register-tool-groups/deps.js +6 -0
- package/dist/register-tool-groups/deps.js.map +1 -0
- package/dist/register-tool-groups/handler-wrappers.d.ts +63 -0
- package/dist/register-tool-groups/handler-wrappers.d.ts.map +1 -0
- package/dist/register-tool-groups/handler-wrappers.js +106 -0
- package/dist/register-tool-groups/handler-wrappers.js.map +1 -0
- package/dist/register-tool-groups/hono.d.ts +3 -0
- package/dist/register-tool-groups/hono.d.ts.map +1 -0
- package/dist/register-tool-groups/hono.js +179 -0
- package/dist/register-tool-groups/hono.js.map +1 -0
- package/dist/register-tool-groups/index.d.ts +3 -0
- package/dist/register-tool-groups/index.d.ts.map +1 -0
- package/dist/register-tool-groups/index.js +28 -0
- package/dist/register-tool-groups/index.js.map +1 -0
- package/dist/register-tool-groups/kotlin.d.ts +3 -0
- package/dist/register-tool-groups/kotlin.d.ts.map +1 -0
- package/dist/register-tool-groups/kotlin.js +162 -0
- package/dist/register-tool-groups/kotlin.js.map +1 -0
- package/dist/register-tool-groups/meta.d.ts +3 -0
- package/dist/register-tool-groups/meta.d.ts.map +1 -0
- package/dist/register-tool-groups/meta.js +563 -0
- package/dist/register-tool-groups/meta.js.map +1 -0
- package/dist/register-tool-groups/nextjs.d.ts +3 -0
- package/dist/register-tool-groups/nextjs.d.ts.map +1 -0
- package/dist/register-tool-groups/nextjs.js +78 -0
- package/dist/register-tool-groups/nextjs.js.map +1 -0
- package/dist/register-tool-groups/php.d.ts +3 -0
- package/dist/register-tool-groups/php.d.ts.map +1 -0
- package/dist/register-tool-groups/php.js +312 -0
- package/dist/register-tool-groups/php.js.map +1 -0
- package/dist/register-tool-groups/python.d.ts +3 -0
- package/dist/register-tool-groups/python.d.ts.map +1 -0
- package/dist/register-tool-groups/python.js +366 -0
- package/dist/register-tool-groups/python.js.map +1 -0
- package/dist/register-tool-groups/react.d.ts +3 -0
- package/dist/register-tool-groups/react.d.ts.map +1 -0
- package/dist/register-tool-groups/react.js +119 -0
- package/dist/register-tool-groups/react.js.map +1 -0
- package/dist/register-tool-groups/shared.d.ts +156 -0
- package/dist/register-tool-groups/shared.d.ts.map +1 -0
- package/dist/register-tool-groups/shared.js +182 -0
- package/dist/register-tool-groups/shared.js.map +1 -0
- package/dist/register-tool-groups/sql.d.ts +3 -0
- package/dist/register-tool-groups/sql.d.ts.map +1 -0
- package/dist/register-tool-groups/sql.js +260 -0
- package/dist/register-tool-groups/sql.js.map +1 -0
- package/dist/register-tool-loaders.d.ts +22 -22
- package/dist/register-tool-loaders.d.ts.map +1 -1
- package/dist/register-tools/autoload.d.ts +8 -0
- package/dist/register-tools/autoload.d.ts.map +1 -0
- package/dist/register-tools/autoload.js +517 -0
- package/dist/register-tools/autoload.js.map +1 -0
- package/dist/register-tools/discovery.d.ts +55 -0
- package/dist/register-tools/discovery.d.ts.map +1 -0
- package/dist/register-tools/discovery.js +206 -0
- package/dist/register-tools/discovery.js.map +1 -0
- package/dist/register-tools/runtime.d.ts +89 -0
- package/dist/register-tools/runtime.d.ts.map +1 -0
- package/dist/register-tools/runtime.js +491 -0
- package/dist/register-tools/runtime.js.map +1 -0
- package/dist/register-tools.d.ts +5 -172
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +27 -4878
- package/dist/register-tools.js.map +1 -1
- package/dist/search/bm25.js +1 -1
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/tool-embedding-cache.d.ts +4 -0
- package/dist/search/tool-embedding-cache.d.ts.map +1 -0
- package/dist/search/tool-embedding-cache.js +44 -0
- package/dist/search/tool-embedding-cache.js.map +1 -0
- package/dist/search/tool-embedding-storage.d.ts +8 -0
- package/dist/search/tool-embedding-storage.d.ts.map +1 -0
- package/dist/search/tool-embedding-storage.js +56 -0
- package/dist/search/tool-embedding-storage.js.map +1 -0
- package/dist/search/tool-ranker-bm25.d.ts +6 -0
- package/dist/search/tool-ranker-bm25.d.ts.map +1 -0
- package/dist/search/tool-ranker-bm25.js +40 -0
- package/dist/search/tool-ranker-bm25.js.map +1 -0
- package/dist/search/tool-ranker-orchestrator.d.ts +3 -0
- package/dist/search/tool-ranker-orchestrator.d.ts.map +1 -0
- package/dist/search/tool-ranker-orchestrator.js +49 -0
- package/dist/search/tool-ranker-orchestrator.js.map +1 -0
- package/dist/search/tool-ranker-reasoning.d.ts +4 -0
- package/dist/search/tool-ranker-reasoning.d.ts.map +1 -0
- package/dist/search/tool-ranker-reasoning.js +35 -0
- package/dist/search/tool-ranker-reasoning.js.map +1 -0
- package/dist/search/tool-ranker-signal-math.d.ts +6 -0
- package/dist/search/tool-ranker-signal-math.d.ts.map +1 -0
- package/dist/search/tool-ranker-signal-math.js +51 -0
- package/dist/search/tool-ranker-signal-math.js.map +1 -0
- package/dist/search/tool-ranker-signals.d.ts +20 -0
- package/dist/search/tool-ranker-signals.d.ts.map +1 -0
- package/dist/search/tool-ranker-signals.js +50 -0
- package/dist/search/tool-ranker-signals.js.map +1 -0
- package/dist/search/tool-ranker-types.d.ts +26 -0
- package/dist/search/tool-ranker-types.d.ts.map +1 -0
- package/dist/search/tool-ranker-types.js +2 -0
- package/dist/search/tool-ranker-types.js.map +1 -0
- package/dist/search/tool-ranker.d.ts +6 -89
- package/dist/search/tool-ranker.d.ts.map +1 -1
- package/dist/search/tool-ranker.js +5 -419
- package/dist/search/tool-ranker.js.map +1 -1
- package/dist/server-helpers/repo-resolution.d.ts +45 -0
- package/dist/server-helpers/repo-resolution.d.ts.map +1 -0
- package/dist/server-helpers/repo-resolution.js +113 -0
- package/dist/server-helpers/repo-resolution.js.map +1 -0
- package/dist/server-helpers/response-hints.d.ts +9 -0
- package/dist/server-helpers/response-hints.d.ts.map +1 -0
- package/dist/server-helpers/response-hints.js +225 -0
- package/dist/server-helpers/response-hints.js.map +1 -0
- package/dist/server-helpers.d.ts +14 -35
- package/dist/server-helpers.d.ts.map +1 -1
- package/dist/server-helpers.js +62 -322
- package/dist/server-helpers.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +45 -0
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +9 -0
- package/dist/storage/_shared.d.ts.map +1 -1
- package/dist/storage/_shared.js +24 -0
- package/dist/storage/_shared.js.map +1 -1
- package/dist/storage/telemetry/aggregator.d.ts +52 -0
- package/dist/storage/telemetry/aggregator.d.ts.map +1 -0
- package/dist/storage/telemetry/aggregator.js +188 -0
- package/dist/storage/telemetry/aggregator.js.map +1 -0
- package/dist/storage/telemetry/anon-id.d.ts +11 -0
- package/dist/storage/telemetry/anon-id.d.ts.map +1 -0
- package/dist/storage/telemetry/anon-id.js +62 -0
- package/dist/storage/telemetry/anon-id.js.map +1 -0
- package/dist/storage/telemetry/config.d.ts +37 -0
- package/dist/storage/telemetry/config.d.ts.map +1 -0
- package/dist/storage/telemetry/config.js +130 -0
- package/dist/storage/telemetry/config.js.map +1 -0
- package/dist/storage/telemetry/env-profile.d.ts +19 -0
- package/dist/storage/telemetry/env-profile.d.ts.map +1 -0
- package/dist/storage/telemetry/env-profile.js +67 -0
- package/dist/storage/telemetry/env-profile.js.map +1 -0
- package/dist/storage/telemetry/payload.d.ts +8 -0
- package/dist/storage/telemetry/payload.d.ts.map +1 -0
- package/dist/storage/telemetry/payload.js +22 -0
- package/dist/storage/telemetry/payload.js.map +1 -0
- package/dist/storage/telemetry/sanitizer.d.ts +48 -0
- package/dist/storage/telemetry/sanitizer.d.ts.map +1 -0
- package/dist/storage/telemetry/sanitizer.js +82 -0
- package/dist/storage/telemetry/sanitizer.js.map +1 -0
- package/dist/storage/telemetry/uploader.d.ts +11 -0
- package/dist/storage/telemetry/uploader.d.ts.map +1 -0
- package/dist/storage/telemetry/uploader.js +140 -0
- package/dist/storage/telemetry/uploader.js.map +1 -0
- 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 +33 -0
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/astro-actions/ast.d.ts +14 -0
- package/dist/tools/astro-actions/ast.d.ts.map +1 -0
- package/dist/tools/astro-actions/ast.js +75 -0
- package/dist/tools/astro-actions/ast.js.map +1 -0
- package/dist/tools/astro-actions/audit.d.ts +5 -0
- package/dist/tools/astro-actions/audit.d.ts.map +1 -0
- package/dist/tools/astro-actions/audit.js +102 -0
- package/dist/tools/astro-actions/audit.js.map +1 -0
- package/dist/tools/astro-actions/callers.d.ts +9 -0
- package/dist/tools/astro-actions/callers.d.ts.map +1 -0
- package/dist/tools/astro-actions/callers.js +84 -0
- package/dist/tools/astro-actions/callers.js.map +1 -0
- package/dist/tools/astro-actions/parser.d.ts +3 -0
- package/dist/tools/astro-actions/parser.d.ts.map +1 -0
- package/dist/tools/astro-actions/parser.js +156 -0
- package/dist/tools/astro-actions/parser.js.map +1 -0
- package/dist/tools/astro-actions/types.d.ts +58 -0
- package/dist/tools/astro-actions/types.d.ts.map +1 -0
- package/dist/tools/astro-actions/types.js +2 -0
- package/dist/tools/astro-actions/types.js.map +1 -0
- package/dist/tools/astro-actions/zod-ast.d.ts +7 -0
- package/dist/tools/astro-actions/zod-ast.d.ts.map +1 -0
- package/dist/tools/astro-actions/zod-ast.js +51 -0
- package/dist/tools/astro-actions/zod-ast.js.map +1 -0
- package/dist/tools/astro-actions.d.ts +6 -46
- package/dist/tools/astro-actions.d.ts.map +1 -1
- package/dist/tools/astro-actions.js +6 -545
- package/dist/tools/astro-actions.js.map +1 -1
- package/dist/tools/astro-content-collections/diagnostics.d.ts +3 -0
- package/dist/tools/astro-content-collections/diagnostics.d.ts.map +1 -0
- package/dist/tools/astro-content-collections/diagnostics.js +277 -0
- package/dist/tools/astro-content-collections/diagnostics.js.map +1 -0
- package/dist/tools/astro-content-collections/discovery.d.ts +6 -0
- package/dist/tools/astro-content-collections/discovery.d.ts.map +1 -0
- package/dist/tools/astro-content-collections/discovery.js +152 -0
- package/dist/tools/astro-content-collections/discovery.js.map +1 -0
- package/dist/tools/astro-content-collections/schema.d.ts +15 -0
- package/dist/tools/astro-content-collections/schema.d.ts.map +1 -0
- package/dist/tools/astro-content-collections/schema.js +119 -0
- package/dist/tools/astro-content-collections/schema.js.map +1 -0
- package/dist/tools/astro-content-collections/types.d.ts +61 -0
- package/dist/tools/astro-content-collections/types.d.ts.map +1 -0
- package/dist/tools/astro-content-collections/types.js +2 -0
- package/dist/tools/astro-content-collections/types.js.map +1 -0
- package/dist/tools/astro-content-collections.d.ts +5 -40
- package/dist/tools/astro-content-collections.d.ts.map +1 -1
- package/dist/tools/astro-content-collections.js +42 -449
- package/dist/tools/astro-content-collections.js.map +1 -1
- package/dist/tools/astro-routes.js +1 -1
- package/dist/tools/astro-routes.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts +6 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +26 -0
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/context-levels/l0.d.ts +4 -0
- package/dist/tools/context-levels/l0.d.ts.map +1 -0
- package/dist/tools/context-levels/l0.js +17 -0
- package/dist/tools/context-levels/l0.js.map +1 -0
- package/dist/tools/context-levels/l1.d.ts +4 -0
- package/dist/tools/context-levels/l1.d.ts.map +1 -0
- package/dist/tools/context-levels/l1.js +26 -0
- package/dist/tools/context-levels/l1.js.map +1 -0
- package/dist/tools/context-levels/l2.d.ts +4 -0
- package/dist/tools/context-levels/l2.d.ts.map +1 -0
- package/dist/tools/context-levels/l2.js +36 -0
- package/dist/tools/context-levels/l2.js.map +1 -0
- package/dist/tools/context-levels/l3.d.ts +4 -0
- package/dist/tools/context-levels/l3.d.ts.map +1 -0
- package/dist/tools/context-levels/l3.js +30 -0
- package/dist/tools/context-levels/l3.js.map +1 -0
- package/dist/tools/context-levels/shared.d.ts +2 -0
- package/dist/tools/context-levels/shared.d.ts.map +1 -0
- package/dist/tools/context-levels/shared.js +4 -0
- package/dist/tools/context-levels/shared.js.map +1 -0
- package/dist/tools/context-levels/types.d.ts +34 -0
- package/dist/tools/context-levels/types.d.ts.map +1 -0
- package/dist/tools/context-levels/types.js +2 -0
- package/dist/tools/context-levels/types.js.map +1 -0
- package/dist/tools/context-tools.d.ts +2 -34
- package/dist/tools/context-tools.d.ts.map +1 -1
- package/dist/tools/context-tools.js +11 -127
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/conversation-cache.d.ts +6 -0
- package/dist/tools/conversation-cache.d.ts.map +1 -0
- package/dist/tools/conversation-cache.js +29 -0
- package/dist/tools/conversation-cache.js.map +1 -0
- package/dist/tools/conversation-index-tools.d.ts +39 -0
- package/dist/tools/conversation-index-tools.d.ts.map +1 -0
- package/dist/tools/conversation-index-tools.js +136 -0
- package/dist/tools/conversation-index-tools.js.map +1 -0
- package/dist/tools/conversation-paths.d.ts +4 -0
- package/dist/tools/conversation-paths.d.ts.map +1 -0
- package/dist/tools/conversation-paths.js +15 -0
- package/dist/tools/conversation-paths.js.map +1 -0
- package/dist/tools/conversation-search-tools.d.ts +52 -0
- package/dist/tools/conversation-search-tools.d.ts.map +1 -0
- package/dist/tools/conversation-search-tools.js +229 -0
- package/dist/tools/conversation-search-tools.js.map +1 -0
- package/dist/tools/conversation-tools.d.ts +6 -112
- package/dist/tools/conversation-tools.d.ts.map +1 -1
- package/dist/tools/conversation-tools.js +4 -425
- package/dist/tools/conversation-tools.js.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts +5 -0
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.js +76 -0
- package/dist/tools/cross-repo-outbound-lexer/call-detectors.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/context.d.ts +18 -0
- package/dist/tools/cross-repo-outbound-lexer/context.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/context.js +33 -0
- package/dist/tools/cross-repo-outbound-lexer/context.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/literal-readers.d.ts +6 -0
- package/dist/tools/cross-repo-outbound-lexer/literal-readers.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/literal-readers.js +65 -0
- package/dist/tools/cross-repo-outbound-lexer/literal-readers.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/non-code-states.d.ts +3 -0
- package/dist/tools/cross-repo-outbound-lexer/non-code-states.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/non-code-states.js +103 -0
- package/dist/tools/cross-repo-outbound-lexer/non-code-states.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/template-reader.d.ts +3 -0
- package/dist/tools/cross-repo-outbound-lexer/template-reader.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/template-reader.js +82 -0
- package/dist/tools/cross-repo-outbound-lexer/template-reader.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/types.d.ts +18 -0
- package/dist/tools/cross-repo-outbound-lexer/types.d.ts.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer/types.js +2 -0
- package/dist/tools/cross-repo-outbound-lexer/types.js.map +1 -0
- package/dist/tools/cross-repo-outbound-lexer.d.ts +5 -31
- package/dist/tools/cross-repo-outbound-lexer.d.ts.map +1 -1
- package/dist/tools/cross-repo-outbound-lexer.js +75 -575
- package/dist/tools/cross-repo-outbound-lexer.js.map +1 -1
- package/dist/tools/dependency-audit-freshness-tools.d.ts +3 -0
- package/dist/tools/dependency-audit-freshness-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-freshness-tools.js +62 -0
- package/dist/tools/dependency-audit-freshness-tools.js.map +1 -0
- package/dist/tools/dependency-audit-license-tools.d.ts +5 -0
- package/dist/tools/dependency-audit-license-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-license-tools.js +75 -0
- package/dist/tools/dependency-audit-license-tools.js.map +1 -0
- package/dist/tools/dependency-audit-lockfile-tools.d.ts +3 -0
- package/dist/tools/dependency-audit-lockfile-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-lockfile-tools.js +147 -0
- package/dist/tools/dependency-audit-lockfile-tools.js.map +1 -0
- package/dist/tools/dependency-audit-tools.d.ts +2 -54
- package/dist/tools/dependency-audit-tools.d.ts.map +1 -1
- package/dist/tools/dependency-audit-tools.js +69 -484
- package/dist/tools/dependency-audit-tools.js.map +1 -1
- package/dist/tools/dependency-audit-types.d.ts +65 -0
- package/dist/tools/dependency-audit-types.d.ts.map +1 -0
- package/dist/tools/dependency-audit-types.js +19 -0
- package/dist/tools/dependency-audit-types.js.map +1 -0
- package/dist/tools/dependency-audit-vulnerability-tools.d.ts +4 -0
- package/dist/tools/dependency-audit-vulnerability-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-vulnerability-tools.js +103 -0
- package/dist/tools/dependency-audit-vulnerability-tools.js.map +1 -0
- package/dist/tools/diff-tools.d.ts.map +1 -1
- package/dist/tools/diff-tools.js +5 -7
- package/dist/tools/diff-tools.js.map +1 -1
- package/dist/tools/impact-tools.d.ts.map +1 -1
- package/dist/tools/impact-tools.js +5 -4
- package/dist/tools/impact-tools.js.map +1 -1
- package/dist/tools/index-shared.d.ts +17 -0
- package/dist/tools/index-shared.d.ts.map +1 -0
- package/dist/tools/index-shared.js +18 -0
- package/dist/tools/index-shared.js.map +1 -0
- package/dist/tools/index-tools/file-indexer.d.ts +27 -0
- package/dist/tools/index-tools/file-indexer.d.ts.map +1 -0
- package/dist/tools/index-tools/file-indexer.js +223 -0
- package/dist/tools/index-tools/file-indexer.js.map +1 -0
- package/dist/tools/index-tools/folder-indexer.d.ts +21 -0
- package/dist/tools/index-tools/folder-indexer.d.ts.map +1 -0
- package/dist/tools/index-tools/folder-indexer.js +399 -0
- package/dist/tools/index-tools/folder-indexer.js.map +1 -0
- package/dist/tools/index-tools/folder-merge.d.ts +23 -0
- package/dist/tools/index-tools/folder-merge.d.ts.map +1 -0
- package/dist/tools/index-tools/folder-merge.js +205 -0
- package/dist/tools/index-tools/folder-merge.js.map +1 -0
- package/dist/tools/index-tools/parse.d.ts +35 -0
- package/dist/tools/index-tools/parse.d.ts.map +1 -0
- package/dist/tools/index-tools/parse.js +262 -0
- package/dist/tools/index-tools/parse.js.map +1 -0
- package/dist/tools/index-tools/registry.d.ts +40 -0
- package/dist/tools/index-tools/registry.d.ts.map +1 -0
- package/dist/tools/index-tools/registry.js +258 -0
- package/dist/tools/index-tools/registry.js.map +1 -0
- package/dist/tools/index-tools/snapshots.d.ts +51 -0
- package/dist/tools/index-tools/snapshots.d.ts.map +1 -0
- package/dist/tools/index-tools/snapshots.js +223 -0
- package/dist/tools/index-tools/snapshots.js.map +1 -0
- package/dist/tools/index-tools/state.d.ts +8 -0
- package/dist/tools/index-tools/state.d.ts.map +1 -0
- package/dist/tools/index-tools/state.js +6 -0
- package/dist/tools/index-tools/state.js.map +1 -0
- package/dist/tools/index-tools/types.d.ts +20 -0
- package/dist/tools/index-tools/types.d.ts.map +1 -0
- package/dist/tools/index-tools/types.js +2 -0
- package/dist/tools/index-tools/types.js.map +1 -0
- package/dist/tools/index-tools/watcher.d.ts +10 -0
- package/dist/tools/index-tools/watcher.d.ts.map +1 -0
- package/dist/tools/index-tools/watcher.js +130 -0
- package/dist/tools/index-tools/watcher.js.map +1 -0
- package/dist/tools/index-tools.d.ts +16 -152
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +12 -1674
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/kotlin-extension-tools.d.ts +16 -0
- package/dist/tools/kotlin-extension-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-extension-tools.js +31 -0
- package/dist/tools/kotlin-extension-tools.js.map +1 -0
- package/dist/tools/kotlin-flow-tools.d.ts +12 -0
- package/dist/tools/kotlin-flow-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-flow-tools.js +72 -0
- package/dist/tools/kotlin-flow-tools.js.map +1 -0
- package/dist/tools/kotlin-kmp-tools.d.ts +29 -0
- package/dist/tools/kotlin-kmp-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-kmp-tools.js +87 -0
- package/dist/tools/kotlin-kmp-tools.js.map +1 -0
- package/dist/tools/kotlin-sealed-tools.d.ts +27 -0
- package/dist/tools/kotlin-sealed-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-sealed-tools.js +130 -0
- package/dist/tools/kotlin-sealed-tools.js.map +1 -0
- package/dist/tools/kotlin-suspend-tools.d.ts +24 -0
- package/dist/tools/kotlin-suspend-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-suspend-tools.js +161 -0
- package/dist/tools/kotlin-suspend-tools.js.map +1 -0
- package/dist/tools/kotlin-tools.d.ts +6 -141
- package/dist/tools/kotlin-tools.d.ts.map +1 -1
- package/dist/tools/kotlin-tools.js +6 -571
- package/dist/tools/kotlin-tools.js.map +1 -1
- package/dist/tools/nest-audit-tools.d.ts +43 -0
- package/dist/tools/nest-audit-tools.d.ts.map +1 -0
- package/dist/tools/nest-audit-tools.js +232 -0
- package/dist/tools/nest-audit-tools.js.map +1 -0
- package/dist/tools/nest-di-tools.d.ts +32 -0
- package/dist/tools/nest-di-tools.d.ts.map +1 -0
- package/dist/tools/nest-di-tools.js +161 -0
- package/dist/tools/nest-di-tools.js.map +1 -0
- package/dist/tools/nest-guard-tools.d.ts +34 -0
- package/dist/tools/nest-guard-tools.d.ts.map +1 -0
- package/dist/tools/nest-guard-tools.js +240 -0
- package/dist/tools/nest-guard-tools.js.map +1 -0
- package/dist/tools/nest-lifecycle-tools.d.ts +16 -0
- package/dist/tools/nest-lifecycle-tools.d.ts.map +1 -0
- package/dist/tools/nest-lifecycle-tools.js +54 -0
- package/dist/tools/nest-lifecycle-tools.js.map +1 -0
- package/dist/tools/nest-module-tools.d.ts +28 -0
- package/dist/tools/nest-module-tools.d.ts.map +1 -0
- package/dist/tools/nest-module-tools.js +86 -0
- package/dist/tools/nest-module-tools.js.map +1 -0
- package/dist/tools/nest-pipeline-tools.d.ts +32 -0
- package/dist/tools/nest-pipeline-tools.d.ts.map +1 -0
- package/dist/tools/nest-pipeline-tools.js +122 -0
- package/dist/tools/nest-pipeline-tools.js.map +1 -0
- package/dist/tools/nest-route-tools.d.ts +43 -0
- package/dist/tools/nest-route-tools.d.ts.map +1 -0
- package/dist/tools/nest-route-tools.js +261 -0
- package/dist/tools/nest-route-tools.js.map +1 -0
- package/dist/tools/nest-shared-tools.d.ts +13 -0
- package/dist/tools/nest-shared-tools.d.ts.map +1 -0
- package/dist/tools/nest-shared-tools.js +36 -0
- package/dist/tools/nest-shared-tools.js.map +1 -0
- package/dist/tools/nest-tools.d.ts +18 -195
- package/dist/tools/nest-tools.d.ts.map +1 -1
- package/dist/tools/nest-tools.js +11 -1140
- package/dist/tools/nest-tools.js.map +1 -1
- package/dist/tools/pattern-registry.d.ts +4 -0
- package/dist/tools/pattern-registry.d.ts.map +1 -0
- package/dist/tools/pattern-registry.js +3 -0
- package/dist/tools/pattern-registry.js.map +1 -0
- package/dist/tools/pattern-tools.d.ts +5 -46
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +4 -1102
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/patterns/adapters/astro.d.ts +3 -0
- package/dist/tools/patterns/adapters/astro.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/astro.js +56 -0
- package/dist/tools/patterns/adapters/astro.js.map +1 -0
- package/dist/tools/patterns/adapters/common.d.ts +3 -0
- package/dist/tools/patterns/adapters/common.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/common.js +38 -0
- package/dist/tools/patterns/adapters/common.js.map +1 -0
- package/dist/tools/patterns/adapters/database.d.ts +3 -0
- package/dist/tools/patterns/adapters/database.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/database.js +32 -0
- package/dist/tools/patterns/adapters/database.js.map +1 -0
- package/dist/tools/patterns/adapters/hono.d.ts +3 -0
- package/dist/tools/patterns/adapters/hono.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/hono.js +32 -0
- package/dist/tools/patterns/adapters/hono.js.map +1 -0
- package/dist/tools/patterns/adapters/kotlin.d.ts +3 -0
- package/dist/tools/patterns/adapters/kotlin.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/kotlin.js +50 -0
- package/dist/tools/patterns/adapters/kotlin.js.map +1 -0
- package/dist/tools/patterns/adapters/nest.d.ts +3 -0
- package/dist/tools/patterns/adapters/nest.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/nest.js +122 -0
- package/dist/tools/patterns/adapters/nest.js.map +1 -0
- package/dist/tools/patterns/adapters/nextjs.d.ts +4 -0
- package/dist/tools/patterns/adapters/nextjs.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/nextjs.js +59 -0
- package/dist/tools/patterns/adapters/nextjs.js.map +1 -0
- package/dist/tools/patterns/adapters/php.d.ts +3 -0
- package/dist/tools/patterns/adapters/php.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/php.js +157 -0
- package/dist/tools/patterns/adapters/php.js.map +1 -0
- package/dist/tools/patterns/adapters/python.d.ts +3 -0
- package/dist/tools/patterns/adapters/python.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/python.js +72 -0
- package/dist/tools/patterns/adapters/python.js.map +1 -0
- package/dist/tools/patterns/adapters/react.d.ts +4 -0
- package/dist/tools/patterns/adapters/react.d.ts.map +1 -0
- package/dist/tools/patterns/adapters/react.js +345 -0
- package/dist/tools/patterns/adapters/react.js.map +1 -0
- package/dist/tools/patterns/catalog.d.ts +8 -0
- package/dist/tools/patterns/catalog.d.ts.map +1 -0
- package/dist/tools/patterns/catalog.js +30 -0
- package/dist/tools/patterns/catalog.js.map +1 -0
- package/dist/tools/patterns/execution.d.ts +38 -0
- package/dist/tools/patterns/execution.d.ts.map +1 -0
- package/dist/tools/patterns/execution.js +298 -0
- package/dist/tools/patterns/execution.js.map +1 -0
- package/dist/tools/patterns/types.d.ts +13 -0
- package/dist/tools/patterns/types.d.ts.map +1 -0
- package/dist/tools/patterns/types.js +2 -0
- package/dist/tools/patterns/types.js.map +1 -0
- package/dist/tools/pg-drift-compare.d.ts +3 -0
- package/dist/tools/pg-drift-compare.d.ts.map +1 -0
- package/dist/tools/pg-drift-compare.js +30 -0
- package/dist/tools/pg-drift-compare.js.map +1 -0
- package/dist/tools/pg-drift-schema.d.ts +5 -0
- package/dist/tools/pg-drift-schema.d.ts.map +1 -0
- package/dist/tools/pg-drift-schema.js +28 -0
- package/dist/tools/pg-drift-schema.js.map +1 -0
- package/dist/tools/pg-drift-types.d.ts +25 -0
- package/dist/tools/pg-drift-types.d.ts.map +1 -0
- package/dist/tools/pg-drift-types.js +2 -0
- package/dist/tools/pg-drift-types.js.map +1 -0
- package/dist/tools/pg-drift.d.ts +5 -0
- package/dist/tools/pg-drift.d.ts.map +1 -0
- package/dist/tools/pg-drift.js +30 -0
- package/dist/tools/pg-drift.js.map +1 -0
- package/dist/tools/pg-introspect-formatters.d.ts +7 -0
- package/dist/tools/pg-introspect-formatters.d.ts.map +1 -0
- package/dist/tools/pg-introspect-formatters.js +66 -0
- package/dist/tools/pg-introspect-formatters.js.map +1 -0
- package/dist/tools/pg-introspect-tools.d.ts +5 -146
- package/dist/tools/pg-introspect-tools.d.ts.map +1 -1
- package/dist/tools/pg-introspect-tools.js +3 -395
- package/dist/tools/pg-introspect-tools.js.map +1 -1
- package/dist/tools/pg-introspection.d.ts +90 -0
- package/dist/tools/pg-introspection.d.ts.map +1 -0
- package/dist/tools/pg-introspection.js +288 -0
- package/dist/tools/pg-introspection.js.map +1 -0
- package/dist/tools/php-active-record-tools.d.ts +22 -0
- package/dist/tools/php-active-record-tools.d.ts.map +1 -0
- package/dist/tools/php-active-record-tools.js +165 -0
- package/dist/tools/php-active-record-tools.js.map +1 -0
- package/dist/tools/php-event-tools.d.ts +21 -0
- package/dist/tools/php-event-tools.d.ts.map +1 -0
- package/dist/tools/php-event-tools.js +205 -0
- package/dist/tools/php-event-tools.js.map +1 -0
- package/dist/tools/php-god-model-tools.d.ts +34 -0
- package/dist/tools/php-god-model-tools.d.ts.map +1 -0
- package/dist/tools/php-god-model-tools.js +88 -0
- package/dist/tools/php-god-model-tools.js.map +1 -0
- package/dist/tools/php-import-utils.d.ts +10 -0
- package/dist/tools/php-import-utils.d.ts.map +1 -0
- package/dist/tools/php-import-utils.js +71 -0
- package/dist/tools/php-import-utils.js.map +1 -0
- package/dist/tools/php-namespace-tools.d.ts +10 -0
- package/dist/tools/php-namespace-tools.d.ts.map +1 -0
- package/dist/tools/php-namespace-tools.js +98 -0
- package/dist/tools/php-namespace-tools.js.map +1 -0
- package/dist/tools/php-nplus1-tools.d.ts +27 -0
- package/dist/tools/php-nplus1-tools.d.ts.map +1 -0
- package/dist/tools/php-nplus1-tools.js +191 -0
- package/dist/tools/php-nplus1-tools.js.map +1 -0
- package/dist/tools/php-project-audit-tools.d.ts +31 -0
- package/dist/tools/php-project-audit-tools.d.ts.map +1 -0
- package/dist/tools/php-project-audit-tools.js +173 -0
- package/dist/tools/php-project-audit-tools.js.map +1 -0
- package/dist/tools/php-security-tools.d.ts +24 -0
- package/dist/tools/php-security-tools.d.ts.map +1 -0
- package/dist/tools/php-security-tools.js +172 -0
- package/dist/tools/php-security-tools.js.map +1 -0
- package/dist/tools/php-service-tools.d.ts +25 -0
- package/dist/tools/php-service-tools.d.ts.map +1 -0
- package/dist/tools/php-service-tools.js +326 -0
- package/dist/tools/php-service-tools.js.map +1 -0
- package/dist/tools/php-tools.d.ts +21 -255
- package/dist/tools/php-tools.d.ts.map +1 -1
- package/dist/tools/php-tools.js +12 -1423
- package/dist/tools/php-tools.js.map +1 -1
- package/dist/tools/php-view-tools.d.ts +76 -0
- package/dist/tools/php-view-tools.d.ts.map +1 -0
- package/dist/tools/php-view-tools.js +413 -0
- package/dist/tools/php-view-tools.js.map +1 -0
- package/dist/tools/plan-turn/formatter.d.ts +3 -0
- package/dist/tools/plan-turn/formatter.d.ts.map +1 -0
- package/dist/tools/plan-turn/formatter.js +88 -0
- package/dist/tools/plan-turn/formatter.js.map +1 -0
- package/dist/tools/plan-turn/framework-context.d.ts +5 -0
- package/dist/tools/plan-turn/framework-context.d.ts.map +1 -0
- package/dist/tools/plan-turn/framework-context.js +68 -0
- package/dist/tools/plan-turn/framework-context.js.map +1 -0
- package/dist/tools/plan-turn/framework-data.d.ts +5 -0
- package/dist/tools/plan-turn/framework-data.d.ts.map +1 -0
- package/dist/tools/plan-turn/framework-data.js +48 -0
- package/dist/tools/plan-turn/framework-data.js.map +1 -0
- package/dist/tools/plan-turn/orchestrator.d.ts +4 -0
- package/dist/tools/plan-turn/orchestrator.d.ts.map +1 -0
- package/dist/tools/plan-turn/orchestrator.js +262 -0
- package/dist/tools/plan-turn/orchestrator.js.map +1 -0
- package/dist/tools/plan-turn/query-parser.d.ts +6 -0
- package/dist/tools/plan-turn/query-parser.d.ts.map +1 -0
- package/dist/tools/plan-turn/query-parser.js +60 -0
- package/dist/tools/plan-turn/query-parser.js.map +1 -0
- package/dist/tools/plan-turn/recommendations.d.ts +11 -0
- package/dist/tools/plan-turn/recommendations.d.ts.map +1 -0
- package/dist/tools/plan-turn/recommendations.js +93 -0
- package/dist/tools/plan-turn/recommendations.js.map +1 -0
- package/dist/tools/plan-turn/stale-index.d.ts +4 -0
- package/dist/tools/plan-turn/stale-index.d.ts.map +1 -0
- package/dist/tools/plan-turn/stale-index.js +17 -0
- package/dist/tools/plan-turn/stale-index.js.map +1 -0
- package/dist/tools/plan-turn/types.d.ts +61 -0
- package/dist/tools/plan-turn/types.d.ts.map +1 -0
- package/dist/tools/plan-turn/types.js +2 -0
- package/dist/tools/plan-turn/types.js.map +1 -0
- package/dist/tools/plan-turn-tools.d.ts +8 -111
- package/dist/tools/plan-turn-tools.d.ts.map +1 -1
- package/dist/tools/plan-turn-tools.js +6 -696
- package/dist/tools/plan-turn-tools.js.map +1 -1
- package/dist/tools/project-profile-express.d.ts +3 -0
- package/dist/tools/project-profile-express.d.ts.map +1 -0
- package/dist/tools/project-profile-express.js +46 -0
- package/dist/tools/project-profile-express.js.map +1 -0
- package/dist/tools/project-profile-extractors.d.ts +9 -0
- package/dist/tools/project-profile-extractors.d.ts.map +1 -0
- package/dist/tools/project-profile-extractors.js +312 -0
- package/dist/tools/project-profile-extractors.js.map +1 -0
- package/dist/tools/project-profile-fs.d.ts +3 -0
- package/dist/tools/project-profile-fs.d.ts.map +1 -0
- package/dist/tools/project-profile-fs.js +19 -0
- package/dist/tools/project-profile-fs.js.map +1 -0
- package/dist/tools/project-profile-hono.d.ts +13 -0
- package/dist/tools/project-profile-hono.d.ts.map +1 -0
- package/dist/tools/project-profile-hono.js +110 -0
- package/dist/tools/project-profile-hono.js.map +1 -0
- package/dist/tools/project-profile-imports.d.ts +6 -0
- package/dist/tools/project-profile-imports.d.ts.map +1 -0
- package/dist/tools/project-profile-imports.js +95 -0
- package/dist/tools/project-profile-imports.js.map +1 -0
- package/dist/tools/project-profile-nest.d.ts +8 -0
- package/dist/tools/project-profile-nest.d.ts.map +1 -0
- package/dist/tools/project-profile-nest.js +352 -0
- package/dist/tools/project-profile-nest.js.map +1 -0
- package/dist/tools/project-profile-next.d.ts +5 -0
- package/dist/tools/project-profile-next.d.ts.map +1 -0
- package/dist/tools/project-profile-next.js +92 -0
- package/dist/tools/project-profile-next.js.map +1 -0
- package/dist/tools/project-profile-persistence.d.ts +3 -0
- package/dist/tools/project-profile-persistence.d.ts.map +1 -0
- package/dist/tools/project-profile-persistence.js +19 -0
- package/dist/tools/project-profile-persistence.js.map +1 -0
- package/dist/tools/project-profile-php.d.ts +8 -0
- package/dist/tools/project-profile-php.d.ts.map +1 -0
- package/dist/tools/project-profile-php.js +76 -0
- package/dist/tools/project-profile-php.js.map +1 -0
- package/dist/tools/project-profile-python.d.ts +5 -0
- package/dist/tools/project-profile-python.d.ts.map +1 -0
- package/dist/tools/project-profile-python.js +51 -0
- package/dist/tools/project-profile-python.js.map +1 -0
- package/dist/tools/project-profile-react.d.ts +6 -0
- package/dist/tools/project-profile-react.d.ts.map +1 -0
- package/dist/tools/project-profile-react.js +106 -0
- package/dist/tools/project-profile-react.js.map +1 -0
- package/dist/tools/project-profile-stack.d.ts +3 -0
- package/dist/tools/project-profile-stack.d.ts.map +1 -0
- package/dist/tools/project-profile-stack.js +354 -0
- package/dist/tools/project-profile-stack.js.map +1 -0
- package/dist/tools/project-profile-summary.d.ts +30 -0
- package/dist/tools/project-profile-summary.d.ts.map +1 -0
- package/dist/tools/project-profile-summary.js +112 -0
- package/dist/tools/project-profile-summary.js.map +1 -0
- package/dist/tools/project-profile-types.d.ts +315 -0
- package/dist/tools/project-profile-types.d.ts.map +1 -0
- package/dist/tools/project-profile-types.js +2 -0
- package/dist/tools/project-profile-types.js.map +1 -0
- package/dist/tools/project-tools.d.ts +20 -383
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +37 -1621
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/python-audit/aggregate.d.ts +3 -0
- package/dist/tools/python-audit/aggregate.d.ts.map +1 -0
- package/dist/tools/python-audit/aggregate.js +103 -0
- package/dist/tools/python-audit/aggregate.js.map +1 -0
- package/dist/tools/python-audit/checks/anti-patterns.d.ts +6 -0
- package/dist/tools/python-audit/checks/anti-patterns.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/anti-patterns.js +14 -0
- package/dist/tools/python-audit/checks/anti-patterns.js.map +1 -0
- package/dist/tools/python-audit/checks/celery.d.ts +2 -0
- package/dist/tools/python-audit/checks/celery.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/celery.js +5 -0
- package/dist/tools/python-audit/checks/celery.js.map +1 -0
- package/dist/tools/python-audit/checks/circular-imports.d.ts +2 -0
- package/dist/tools/python-audit/checks/circular-imports.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/circular-imports.js +5 -0
- package/dist/tools/python-audit/checks/circular-imports.js.map +1 -0
- package/dist/tools/python-audit/checks/dead-code.d.ts +2 -0
- package/dist/tools/python-audit/checks/dead-code.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/dead-code.js +5 -0
- package/dist/tools/python-audit/checks/dead-code.js.map +1 -0
- package/dist/tools/python-audit/checks/dependencies.d.ts +2 -0
- package/dist/tools/python-audit/checks/dependencies.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/dependencies.js +5 -0
- package/dist/tools/python-audit/checks/dependencies.js.map +1 -0
- package/dist/tools/python-audit/checks/django-settings.d.ts +2 -0
- package/dist/tools/python-audit/checks/django-settings.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/django-settings.js +5 -0
- package/dist/tools/python-audit/checks/django-settings.js.map +1 -0
- package/dist/tools/python-audit/checks/framework-wiring.d.ts +2 -0
- package/dist/tools/python-audit/checks/framework-wiring.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/framework-wiring.js +5 -0
- package/dist/tools/python-audit/checks/framework-wiring.js.map +1 -0
- package/dist/tools/python-audit/checks/pytest-fixtures.d.ts +2 -0
- package/dist/tools/python-audit/checks/pytest-fixtures.d.ts.map +1 -0
- package/dist/tools/python-audit/checks/pytest-fixtures.js +5 -0
- package/dist/tools/python-audit/checks/pytest-fixtures.js.map +1 -0
- package/dist/tools/python-audit/runner.d.ts +5 -0
- package/dist/tools/python-audit/runner.d.ts.map +1 -0
- package/dist/tools/python-audit/runner.js +18 -0
- package/dist/tools/python-audit/runner.js.map +1 -0
- package/dist/tools/python-audit/types.d.ts +43 -0
- package/dist/tools/python-audit/types.d.ts.map +1 -0
- package/dist/tools/python-audit/types.js +2 -0
- package/dist/tools/python-audit/types.js.map +1 -0
- package/dist/tools/python-audit.d.ts +3 -39
- package/dist/tools/python-audit.d.ts.map +1 -1
- package/dist/tools/python-audit.js +34 -233
- package/dist/tools/python-audit.js.map +1 -1
- package/dist/tools/react-compiler-tools.d.ts +37 -0
- package/dist/tools/react-compiler-tools.d.ts.map +1 -0
- package/dist/tools/react-compiler-tools.js +104 -0
- package/dist/tools/react-compiler-tools.js.map +1 -0
- package/dist/tools/react-component-tree-tools.d.ts +58 -0
- package/dist/tools/react-component-tree-tools.d.ts.map +1 -0
- package/dist/tools/react-component-tree-tools.js +292 -0
- package/dist/tools/react-component-tree-tools.js.map +1 -0
- package/dist/tools/react-context-tools.d.ts +41 -0
- package/dist/tools/react-context-tools.d.ts.map +1 -0
- package/dist/tools/react-context-tools.js +76 -0
- package/dist/tools/react-context-tools.js.map +1 -0
- package/dist/tools/react-hooks-tools.d.ts +58 -0
- package/dist/tools/react-hooks-tools.d.ts.map +1 -0
- package/dist/tools/react-hooks-tools.js +144 -0
- package/dist/tools/react-hooks-tools.js.map +1 -0
- package/dist/tools/react-quickstart-tools.d.ts +59 -0
- package/dist/tools/react-quickstart-tools.d.ts.map +1 -0
- package/dist/tools/react-quickstart-tools.js +164 -0
- package/dist/tools/react-quickstart-tools.js.map +1 -0
- package/dist/tools/react-render-tools.d.ts +75 -0
- package/dist/tools/react-render-tools.d.ts.map +1 -0
- package/dist/tools/react-render-tools.js +234 -0
- package/dist/tools/react-render-tools.js.map +1 -0
- package/dist/tools/react-shared-tools.d.ts +5 -0
- package/dist/tools/react-shared-tools.d.ts.map +1 -0
- package/dist/tools/react-shared-tools.js +12 -0
- package/dist/tools/react-shared-tools.js.map +1 -0
- package/dist/tools/react-suspense-tools.d.ts +29 -0
- package/dist/tools/react-suspense-tools.d.ts.map +1 -0
- package/dist/tools/react-suspense-tools.js +269 -0
- package/dist/tools/react-suspense-tools.js.map +1 -0
- package/dist/tools/react-tools.d.ts +19 -340
- package/dist/tools/react-tools.d.ts.map +1 -1
- package/dist/tools/react-tools.js +10 -1263
- package/dist/tools/react-tools.js.map +1 -1
- package/dist/tools/review-diff/check-runner.d.ts +5 -0
- package/dist/tools/review-diff/check-runner.d.ts.map +1 -0
- package/dist/tools/review-diff/check-runner.js +26 -0
- package/dist/tools/review-diff/check-runner.js.map +1 -0
- package/dist/tools/review-diff/checks/astro-hydration.d.ts +8 -0
- package/dist/tools/review-diff/checks/astro-hydration.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/astro-hydration.js +54 -0
- package/dist/tools/review-diff/checks/astro-hydration.js.map +1 -0
- package/dist/tools/review-diff/checks/blast-radius.d.ts +7 -0
- package/dist/tools/review-diff/checks/blast-radius.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/blast-radius.js +39 -0
- package/dist/tools/review-diff/checks/blast-radius.js.map +1 -0
- package/dist/tools/review-diff/checks/breaking.d.ts +13 -0
- package/dist/tools/review-diff/checks/breaking.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/breaking.js +115 -0
- package/dist/tools/review-diff/checks/breaking.js.map +1 -0
- package/dist/tools/review-diff/checks/bug-patterns.d.ts +8 -0
- package/dist/tools/review-diff/checks/bug-patterns.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/bug-patterns.js +130 -0
- package/dist/tools/review-diff/checks/bug-patterns.js.map +1 -0
- package/dist/tools/review-diff/checks/complexity.d.ts +8 -0
- package/dist/tools/review-diff/checks/complexity.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/complexity.js +41 -0
- package/dist/tools/review-diff/checks/complexity.js.map +1 -0
- package/dist/tools/review-diff/checks/coupling.d.ts +7 -0
- package/dist/tools/review-diff/checks/coupling.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/coupling.js +52 -0
- package/dist/tools/review-diff/checks/coupling.js.map +1 -0
- package/dist/tools/review-diff/checks/dead-code.d.ts +7 -0
- package/dist/tools/review-diff/checks/dead-code.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/dead-code.js +39 -0
- package/dist/tools/review-diff/checks/dead-code.js.map +1 -0
- package/dist/tools/review-diff/checks/hotspots.d.ts +8 -0
- package/dist/tools/review-diff/checks/hotspots.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/hotspots.js +39 -0
- package/dist/tools/review-diff/checks/hotspots.js.map +1 -0
- package/dist/tools/review-diff/checks/secrets.d.ts +7 -0
- package/dist/tools/review-diff/checks/secrets.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/secrets.js +38 -0
- package/dist/tools/review-diff/checks/secrets.js.map +1 -0
- package/dist/tools/review-diff/checks/test-gaps.d.ts +16 -0
- package/dist/tools/review-diff/checks/test-gaps.d.ts.map +1 -0
- package/dist/tools/review-diff/checks/test-gaps.js +77 -0
- package/dist/tools/review-diff/checks/test-gaps.js.map +1 -0
- package/dist/tools/review-diff/constants.d.ts +6 -0
- package/dist/tools/review-diff/constants.d.ts.map +1 -0
- package/dist/tools/review-diff/constants.js +16 -0
- package/dist/tools/review-diff/constants.js.map +1 -0
- package/dist/tools/review-diff/file-pattern.d.ts +2 -0
- package/dist/tools/review-diff/file-pattern.d.ts.map +1 -0
- package/dist/tools/review-diff/file-pattern.js +9 -0
- package/dist/tools/review-diff/file-pattern.js.map +1 -0
- package/dist/tools/review-diff/orchestrator.d.ts +3 -0
- package/dist/tools/review-diff/orchestrator.d.ts.map +1 -0
- package/dist/tools/review-diff/orchestrator.js +173 -0
- package/dist/tools/review-diff/orchestrator.js.map +1 -0
- package/dist/tools/review-diff/scoring.d.ts +31 -0
- package/dist/tools/review-diff/scoring.d.ts.map +1 -0
- package/dist/tools/review-diff/scoring.js +82 -0
- package/dist/tools/review-diff/scoring.js.map +1 -0
- package/dist/tools/review-diff/timeout.d.ts +5 -0
- package/dist/tools/review-diff/timeout.d.ts.map +1 -0
- package/dist/tools/review-diff/timeout.js +14 -0
- package/dist/tools/review-diff/timeout.js.map +1 -0
- package/dist/tools/review-diff/types.d.ts +56 -0
- package/dist/tools/review-diff/types.d.ts.map +1 -0
- package/dist/tools/review-diff/types.js +2 -0
- package/dist/tools/review-diff/types.js.map +1 -0
- package/dist/tools/review-diff-tools.d.ts +19 -147
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +18 -941
- package/dist/tools/review-diff-tools.js.map +1 -1
- package/dist/tools/route-shared.d.ts +6 -0
- package/dist/tools/route-shared.d.ts.map +1 -0
- package/dist/tools/route-shared.js +37 -0
- package/dist/tools/route-shared.js.map +1 -0
- package/dist/tools/route-tools.d.ts +1 -7
- package/dist/tools/route-tools.d.ts.map +1 -1
- package/dist/tools/route-tools.js +2 -22
- package/dist/tools/route-tools.js.map +1 -1
- package/dist/tools/search-tools/constants.d.ts +33 -0
- package/dist/tools/search-tools/constants.d.ts.map +1 -0
- package/dist/tools/search-tools/constants.js +54 -0
- package/dist/tools/search-tools/constants.js.map +1 -0
- package/dist/tools/search-tools/ripgrep.d.ts +13 -0
- package/dist/tools/search-tools/ripgrep.d.ts.map +1 -0
- package/dist/tools/search-tools/ripgrep.js +138 -0
- package/dist/tools/search-tools/ripgrep.js.map +1 -0
- package/dist/tools/search-tools/semantic-search.d.ts +9 -0
- package/dist/tools/search-tools/semantic-search.d.ts.map +1 -0
- package/dist/tools/search-tools/semantic-search.js +19 -0
- package/dist/tools/search-tools/semantic-search.js.map +1 -0
- package/dist/tools/search-tools/symbol-search.d.ts +4 -0
- package/dist/tools/search-tools/symbol-search.d.ts.map +1 -0
- package/dist/tools/search-tools/symbol-search.js +146 -0
- package/dist/tools/search-tools/symbol-search.js.map +1 -0
- package/dist/tools/search-tools/text-search.d.ts +10 -0
- package/dist/tools/search-tools/text-search.d.ts.map +1 -0
- package/dist/tools/search-tools/text-search.js +260 -0
- package/dist/tools/search-tools/text-search.js.map +1 -0
- package/dist/tools/search-tools/types.d.ts +28 -0
- package/dist/tools/search-tools/types.d.ts.map +1 -0
- package/dist/tools/search-tools/types.js +2 -0
- package/dist/tools/search-tools/types.js.map +1 -0
- package/dist/tools/search-tools/zero-hit.d.ts +3 -0
- package/dist/tools/search-tools/zero-hit.d.ts.map +1 -0
- package/dist/tools/search-tools/zero-hit.js +92 -0
- package/dist/tools/search-tools/zero-hit.js.map +1 -0
- package/dist/tools/search-tools.d.ts +5 -64
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +4 -770
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/secret-detectors.d.ts +12 -0
- package/dist/tools/secret-detectors.d.ts.map +1 -0
- package/dist/tools/secret-detectors.js +86 -0
- package/dist/tools/secret-detectors.js.map +1 -0
- package/dist/tools/secret-file-scanner.d.ts +7 -0
- package/dist/tools/secret-file-scanner.d.ts.map +1 -0
- package/dist/tools/secret-file-scanner.js +52 -0
- package/dist/tools/secret-file-scanner.js.map +1 -0
- package/dist/tools/secret-scan-cache.d.ts +6 -0
- package/dist/tools/secret-scan-cache.d.ts.map +1 -0
- package/dist/tools/secret-scan-cache.js +14 -0
- package/dist/tools/secret-scan-cache.js.map +1 -0
- package/dist/tools/secret-scan-shared.d.ts +5 -0
- package/dist/tools/secret-scan-shared.d.ts.map +1 -0
- package/dist/tools/secret-scan-shared.js +4 -0
- package/dist/tools/secret-scan-shared.js.map +1 -0
- package/dist/tools/secret-scan-types.d.ts +21 -0
- package/dist/tools/secret-scan-types.d.ts.map +1 -0
- package/dist/tools/secret-scan-types.js +2 -0
- package/dist/tools/secret-scan-types.js.map +1 -0
- package/dist/tools/secret-tools.d.ts +3 -75
- package/dist/tools/secret-tools.d.ts.map +1 -1
- package/dist/tools/secret-tools.js +4 -316
- package/dist/tools/secret-tools.js.map +1 -1
- package/dist/tools/sql-audit-tools.d.ts +42 -0
- package/dist/tools/sql-audit-tools.d.ts.map +1 -0
- package/dist/tools/sql-audit-tools.js +130 -0
- package/dist/tools/sql-audit-tools.js.map +1 -0
- package/dist/tools/sql-column-tools.d.ts +28 -0
- package/dist/tools/sql-column-tools.d.ts.map +1 -0
- package/dist/tools/sql-column-tools.js +58 -0
- package/dist/tools/sql-column-tools.js.map +1 -0
- package/dist/tools/sql-complexity-tools.d.ts +22 -0
- package/dist/tools/sql-complexity-tools.d.ts.map +1 -0
- package/dist/tools/sql-complexity-tools.js +60 -0
- package/dist/tools/sql-complexity-tools.js.map +1 -0
- package/dist/tools/sql-dml-safety-tools.d.ts +26 -0
- package/dist/tools/sql-dml-safety-tools.d.ts.map +1 -0
- package/dist/tools/sql-dml-safety-tools.js +104 -0
- package/dist/tools/sql-dml-safety-tools.js.map +1 -0
- package/dist/tools/sql-drift-tools.d.ts +39 -0
- package/dist/tools/sql-drift-tools.d.ts.map +1 -0
- package/dist/tools/sql-drift-tools.js +238 -0
- package/dist/tools/sql-drift-tools.js.map +1 -0
- package/dist/tools/sql-lint-schema-tools.d.ts +28 -0
- package/dist/tools/sql-lint-schema-tools.d.ts.map +1 -0
- package/dist/tools/sql-lint-schema-tools.js +96 -0
- package/dist/tools/sql-lint-schema-tools.js.map +1 -0
- package/dist/tools/sql-migration-diff-tools.d.ts +24 -0
- package/dist/tools/sql-migration-diff-tools.d.ts.map +1 -0
- package/dist/tools/sql-migration-diff-tools.js +120 -0
- package/dist/tools/sql-migration-diff-tools.js.map +1 -0
- package/dist/tools/sql-orphan-table-tools.d.ts +20 -0
- package/dist/tools/sql-orphan-table-tools.d.ts.map +1 -0
- package/dist/tools/sql-orphan-table-tools.js +70 -0
- package/dist/tools/sql-orphan-table-tools.js.map +1 -0
- package/dist/tools/sql-query-tools.d.ts +32 -0
- package/dist/tools/sql-query-tools.d.ts.map +1 -0
- package/dist/tools/sql-query-tools.js +130 -0
- package/dist/tools/sql-query-tools.js.map +1 -0
- package/dist/tools/sql-schema-tools.d.ts +47 -0
- package/dist/tools/sql-schema-tools.d.ts.map +1 -0
- package/dist/tools/sql-schema-tools.js +202 -0
- package/dist/tools/sql-schema-tools.js.map +1 -0
- package/dist/tools/sql-shared-tools.d.ts +6 -0
- package/dist/tools/sql-shared-tools.d.ts.map +1 -0
- package/dist/tools/sql-shared-tools.js +59 -0
- package/dist/tools/sql-shared-tools.js.map +1 -0
- package/dist/tools/sql-tools.d.ts +25 -296
- package/dist/tools/sql-tools.d.ts.map +1 -1
- package/dist/tools/sql-tools.js +15 -1232
- package/dist/tools/sql-tools.js.map +1 -1
- package/dist/tools/status-tools.js +1 -1
- package/dist/tools/status-tools.js.map +1 -1
- package/dist/tools/workspace-tools.d.ts +1 -1
- package/dist/tools/yii3-migration-categories-application.d.ts +4 -0
- package/dist/tools/yii3-migration-categories-application.d.ts.map +1 -0
- package/dist/tools/yii3-migration-categories-application.js +56 -0
- package/dist/tools/yii3-migration-categories-application.js.map +1 -0
- package/dist/tools/yii3-migration-categories-infrastructure.d.ts +4 -0
- package/dist/tools/yii3-migration-categories-infrastructure.d.ts.map +1 -0
- package/dist/tools/yii3-migration-categories-infrastructure.js +67 -0
- package/dist/tools/yii3-migration-categories-infrastructure.js.map +1 -0
- package/dist/tools/yii3-migration-categories-model-view.d.ts +4 -0
- package/dist/tools/yii3-migration-categories-model-view.d.ts.map +1 -0
- package/dist/tools/yii3-migration-categories-model-view.js +59 -0
- package/dist/tools/yii3-migration-categories-model-view.js.map +1 -0
- package/dist/tools/yii3-migration-categories-runtime.d.ts +4 -0
- package/dist/tools/yii3-migration-categories-runtime.d.ts.map +1 -0
- package/dist/tools/yii3-migration-categories-runtime.js +49 -0
- package/dist/tools/yii3-migration-categories-runtime.js.map +1 -0
- package/dist/tools/yii3-migration-categories.d.ts +5 -0
- package/dist/tools/yii3-migration-categories.d.ts.map +1 -0
- package/dist/tools/yii3-migration-categories.js +18 -0
- package/dist/tools/yii3-migration-categories.js.map +1 -0
- package/dist/tools/yii3-migration-report.d.ts +4 -0
- package/dist/tools/yii3-migration-report.d.ts.map +1 -0
- package/dist/tools/yii3-migration-report.js +88 -0
- package/dist/tools/yii3-migration-report.js.map +1 -0
- package/dist/tools/yii3-migration-scanner.d.ts +28 -0
- package/dist/tools/yii3-migration-scanner.d.ts.map +1 -0
- package/dist/tools/yii3-migration-scanner.js +87 -0
- package/dist/tools/yii3-migration-scanner.js.map +1 -0
- package/dist/tools/yii3-migration-tools.d.ts +4 -73
- package/dist/tools/yii3-migration-tools.d.ts.map +1 -1
- package/dist/tools/yii3-migration-tools.js +5 -433
- package/dist/tools/yii3-migration-tools.js.map +1 -1
- package/dist/tools/yii3-migration-types.d.ts +50 -0
- package/dist/tools/yii3-migration-types.d.ts.map +1 -0
- package/dist/tools/yii3-migration-types.js +3 -0
- package/dist/tools/yii3-migration-types.js.map +1 -0
- package/dist/utils/edge-provenance.d.ts +55 -0
- package/dist/utils/edge-provenance.d.ts.map +1 -0
- package/dist/utils/edge-provenance.js +53 -0
- package/dist/utils/edge-provenance.js.map +1 -0
- package/dist/utils/git-validation.d.ts +24 -0
- package/dist/utils/git-validation.d.ts.map +1 -1
- package/dist/utils/git-validation.js +30 -0
- package/dist/utils/git-validation.js.map +1 -1
- package/dist/utils/overlay-cache.d.ts +38 -0
- package/dist/utils/overlay-cache.d.ts.map +1 -0
- package/dist/utils/overlay-cache.js +73 -0
- package/dist/utils/overlay-cache.js.map +1 -0
- package/dist/utils/source-stripper/code-handler.d.ts +3 -0
- package/dist/utils/source-stripper/code-handler.d.ts.map +1 -0
- package/dist/utils/source-stripper/code-handler.js +79 -0
- package/dist/utils/source-stripper/code-handler.js.map +1 -0
- package/dist/utils/source-stripper/comment-handler.d.ts +4 -0
- package/dist/utils/source-stripper/comment-handler.d.ts.map +1 -0
- package/dist/utils/source-stripper/comment-handler.js +24 -0
- package/dist/utils/source-stripper/comment-handler.js.map +1 -0
- package/dist/utils/source-stripper/machine.d.ts +2 -0
- package/dist/utils/source-stripper/machine.d.ts.map +1 -0
- package/dist/utils/source-stripper/machine.js +34 -0
- package/dist/utils/source-stripper/machine.js.map +1 -0
- package/dist/utils/source-stripper/regex-handler.d.ts +3 -0
- package/dist/utils/source-stripper/regex-handler.d.ts.map +1 -0
- package/dist/utils/source-stripper/regex-handler.js +44 -0
- package/dist/utils/source-stripper/regex-handler.js.map +1 -0
- package/dist/utils/source-stripper/state.d.ts +4 -0
- package/dist/utils/source-stripper/state.d.ts.map +1 -0
- package/dist/utils/source-stripper/state.js +20 -0
- package/dist/utils/source-stripper/state.js.map +1 -0
- package/dist/utils/source-stripper/string-handler.d.ts +3 -0
- package/dist/utils/source-stripper/string-handler.d.ts.map +1 -0
- package/dist/utils/source-stripper/string-handler.js +19 -0
- package/dist/utils/source-stripper/string-handler.js.map +1 -0
- package/dist/utils/source-stripper/template-handler.d.ts +4 -0
- package/dist/utils/source-stripper/template-handler.d.ts.map +1 -0
- package/dist/utils/source-stripper/template-handler.js +40 -0
- package/dist/utils/source-stripper/template-handler.js.map +1 -0
- package/dist/utils/source-stripper/types.d.ts +17 -0
- package/dist/utils/source-stripper/types.d.ts.map +1 -0
- package/dist/utils/source-stripper/types.js +4 -0
- package/dist/utils/source-stripper/types.js.map +1 -0
- package/dist/utils/source-stripper.d.ts +0 -21
- package/dist/utils/source-stripper.d.ts.map +1 -1
- package/dist/utils/source-stripper.js +6 -234
- package/dist/utils/source-stripper.js.map +1 -1
- package/dist/utils/walk/errors.d.ts +4 -0
- package/dist/utils/walk/errors.d.ts.map +1 -0
- package/dist/utils/walk/errors.js +18 -0
- package/dist/utils/walk/errors.js.map +1 -0
- package/dist/utils/walk/filters.d.ts +11 -0
- package/dist/utils/walk/filters.d.ts.map +1 -0
- package/dist/utils/walk/filters.js +53 -0
- package/dist/utils/walk/filters.js.map +1 -0
- package/dist/utils/walk/limits.d.ts +10 -0
- package/dist/utils/walk/limits.d.ts.map +1 -0
- package/dist/utils/walk/limits.js +22 -0
- package/dist/utils/walk/limits.js.map +1 -0
- package/dist/utils/walk/traversal.d.ts +9 -0
- package/dist/utils/walk/traversal.d.ts.map +1 -0
- package/dist/utils/walk/traversal.js +38 -0
- package/dist/utils/walk/traversal.js.map +1 -0
- package/dist/utils/walk/types.d.ts +18 -0
- package/dist/utils/walk/types.d.ts.map +1 -0
- package/dist/utils/walk/types.js +2 -0
- package/dist/utils/walk/types.js.map +1 -0
- package/dist/utils/walk.d.ts +4 -65
- package/dist/utils/walk.d.ts.map +1 -1
- package/dist/utils/walk.js +23 -151
- package/dist/utils/walk.js.map +1 -1
- package/package.json +6 -5
|
@@ -1,771 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { searchBM25, applyCutoff } from "../search/bm25.js";
|
|
6
|
-
import { loadConfig } from "../config.js";
|
|
7
|
-
import { walkDirectory } from "../utils/walk.js";
|
|
8
|
-
import { matchFilePattern } from "../utils/glob.js";
|
|
9
|
-
import { raceWallClock } from "../utils/wall-clock.js";
|
|
10
|
-
const DEFAULT_MAX_TEXT_MATCHES = 200;
|
|
11
|
-
const MAX_WALK_FILES = 50_000; // Safety limit — stop walking after this many files
|
|
12
|
-
const SEARCH_TIMEOUT_MS = 30_000; // Abort search after 30s to prevent 100s+ hangs
|
|
13
|
-
/**
|
|
14
|
-
* End-to-end wall-clock cap on a single searchText call. Telemetry showed
|
|
15
|
-
* p95 = 2.4s but a 937s outlier — slow paths exist in semantic enrichment
|
|
16
|
-
* and Node.js fallback walks. Configurable via CODESIFT_SEARCH_TEXT_CAP_MS.
|
|
17
|
-
*/
|
|
18
|
-
const SEARCH_TEXT_WALL_CLOCK_MS = (() => {
|
|
19
|
-
const env = process.env["CODESIFT_SEARCH_TEXT_CAP_MS"];
|
|
20
|
-
const parsed = env ? Number(env) : NaN;
|
|
21
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : 8000;
|
|
22
|
-
})();
|
|
23
|
-
const AUTO_GROUP_THRESHOLD = 50; // Auto-switch to group_by_file above this match count (when auto_group=true)
|
|
24
|
-
const SERVER_AUTO_GROUP_THRESHOLD = 30; // Server-side auto-group when caller omitted ALL grouping opts
|
|
25
|
-
const MAX_RESPONSE_CHARS = 80_000; // ~20K tokens — force group_by_file above this
|
|
26
|
-
const MAX_FIRST_MATCH_CHARS = 300; // Cap first_match preview in grouped output
|
|
27
|
-
const MAX_LINE_CHARS = 500; // Truncate individual match lines (minified JS/JSON can be 100K+)
|
|
28
|
-
const DEFAULT_TOP_K_WITH_SOURCE = 10; // Cap results when include_source=true without file_pattern
|
|
29
|
-
const BM25_FILTER_MULTIPLIER = 5; // Widen BM25 candidate set when filters active
|
|
30
|
-
const BM25_FILTER_MIN_K = 200; // Minimum candidate set size when filters active
|
|
31
|
-
const BM25_FILE_SHORTLIST_K = 60; // top-K BM25 symbol hits → unique file set for identifier-query shortlist
|
|
32
|
-
const IDENTIFIER_QUERY_RX = /^[A-Za-z_][A-Za-z0-9_]{2,}$/; // single identifier ≥3 chars — triggers BM25 shortlist + auto-rank
|
|
33
|
-
const DEFAULT_SOURCE_CHARS_NARROW = 200; // Source truncation without file_pattern (reduce waste)
|
|
34
|
-
const DEFAULT_SOURCE_CHARS_WIDE = 500; // Source truncation with file_pattern
|
|
35
|
-
const CHARS_PER_TOKEN = 3.5; // Approximate chars-per-token for budget calculation
|
|
36
|
-
const DEFAULT_MAX_REGEX_RESULTS = 50; // Regex without file_pattern — tighter cap to limit timeout
|
|
37
|
-
const JSON_OVERHEAD_PER_MATCH = 40; // Estimated JSON serialization overhead per TextMatch
|
|
38
|
-
// SEC-003: Detect common catastrophic backtracking patterns (ReDoS)
|
|
39
|
-
const REDOS_PATTERNS = [
|
|
40
|
-
/\(.*[+*].*\)[+*]/, // Nested quantifiers: (a+)+ or (a*)*
|
|
41
|
-
/\(.*\|.*\)[+*]/, // Alternation with quantifier: (a|b)+
|
|
42
|
-
/\(.*[+*].*\)\{/, // Nested quantifier with range: (a+){2,}
|
|
43
|
-
/\([^)]*\\[dDwWsS][+*].*\)[+*]/, // Character class with nested quantifier
|
|
44
|
-
];
|
|
45
|
-
function isSafeRegex(pattern) {
|
|
46
|
-
return !REDOS_PATTERNS.some((p) => p.test(pattern));
|
|
47
|
-
}
|
|
48
|
-
/** Binary/non-text extensions to skip during text search */
|
|
49
|
-
const BINARY_EXTENSIONS = new Set([
|
|
50
|
-
".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".svg",
|
|
51
|
-
".woff", ".woff2", ".ttf", ".eot", ".otf",
|
|
52
|
-
".zip", ".gz", ".tar", ".bz2", ".7z", ".rar",
|
|
53
|
-
".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx",
|
|
54
|
-
".exe", ".dll", ".so", ".dylib", ".o", ".obj",
|
|
55
|
-
".wasm", ".class", ".pyc", ".pyo",
|
|
56
|
-
".mp3", ".mp4", ".avi", ".mov", ".mkv", ".wav", ".flac",
|
|
57
|
-
".db", ".sqlite", ".sqlite3",
|
|
58
|
-
".lock",
|
|
59
|
-
]);
|
|
60
|
-
// ── Private helpers ─────────────────────────────────────
|
|
61
|
-
function matchesDecoratorFilter(decorators, decoratorFilter) {
|
|
62
|
-
if (!decoratorFilter)
|
|
63
|
-
return true;
|
|
64
|
-
if (!decorators || decorators.length === 0)
|
|
65
|
-
return false;
|
|
66
|
-
const normalizedFilter = decoratorFilter.trim().replace(/^@/, "");
|
|
67
|
-
return decorators.some((decorator) => {
|
|
68
|
-
const normalized = decorator.trim().replace(/^@/, "");
|
|
69
|
-
return normalized === normalizedFilter || normalized.startsWith(`${normalizedFilter}(`);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/** Check if a symbol matches the active kind and file_pattern filters. */
|
|
73
|
-
function matchesSymbolFilters(symbol, options) {
|
|
74
|
-
if (options?.kind && symbol.kind !== options.kind)
|
|
75
|
-
return false;
|
|
76
|
-
if (options?.file_pattern && !matchFilePattern(symbol.file, options.file_pattern))
|
|
77
|
-
return false;
|
|
78
|
-
if (!matchesDecoratorFilter(symbol.decorators, options?.decorator))
|
|
79
|
-
return false;
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Apply detail-level shaping, source truncation, and field cleanup.
|
|
84
|
-
* Compact: ~15 tok/result. Standard: signature + truncated source. Full: unlimited.
|
|
85
|
-
*/
|
|
86
|
-
function shapeSearchResults(results, detail, includeSource, options) {
|
|
87
|
-
if (detail === "compact") {
|
|
88
|
-
return results.map((r) => ({
|
|
89
|
-
symbol: {
|
|
90
|
-
id: r.symbol.id,
|
|
91
|
-
name: r.symbol.name,
|
|
92
|
-
kind: r.symbol.kind,
|
|
93
|
-
file: r.symbol.file,
|
|
94
|
-
start_line: r.symbol.start_line,
|
|
95
|
-
},
|
|
96
|
-
score: r.score,
|
|
97
|
-
}));
|
|
98
|
-
}
|
|
99
|
-
let shaped = results;
|
|
100
|
-
if (!includeSource) {
|
|
101
|
-
shaped = shaped.map((r) => {
|
|
102
|
-
const { source: _source, ...symbolWithoutSource } = r.symbol;
|
|
103
|
-
return { ...r, symbol: symbolWithoutSource };
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
const defaultSourceChars = detail === "full" ? undefined
|
|
107
|
-
: (includeSource && !options?.file_pattern) ? DEFAULT_SOURCE_CHARS_NARROW : DEFAULT_SOURCE_CHARS_WIDE;
|
|
108
|
-
const sourceChars = options?.source_chars ?? (includeSource ? defaultSourceChars : undefined);
|
|
109
|
-
if (includeSource && sourceChars !== undefined && sourceChars > 0) {
|
|
110
|
-
shaped = shaped.map((r) => {
|
|
111
|
-
const source = r.symbol.source;
|
|
112
|
-
if (source && source.length > sourceChars) {
|
|
113
|
-
return { ...r, symbol: { ...r.symbol, source: source.slice(0, sourceChars) + "..." } };
|
|
114
|
-
}
|
|
115
|
-
return r;
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
return shaped.map((r) => {
|
|
119
|
-
const { tokens: _tokens, repo: _repo, ...cleanSymbol } = r.symbol;
|
|
120
|
-
return { ...r, symbol: cleanSymbol };
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
/** Validate regex for ReDoS safety and compile without g/y flags, or throw descriptive error. */
|
|
124
|
-
function compileSearchRegex(query) {
|
|
125
|
-
if (!isSafeRegex(query)) {
|
|
126
|
-
throw new Error("Regex pattern rejected: potential catastrophic backtracking (ReDoS)");
|
|
127
|
-
}
|
|
128
|
-
try {
|
|
129
|
-
// No g/y flags — regex is reused across files; stateful flags cause alternating matches
|
|
130
|
-
return new RegExp(query);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
134
|
-
throw new Error(`Invalid regex pattern: ${message}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// ── Ripgrep backend ────────────────────────────────────
|
|
138
|
-
/** Directories always excluded from ripgrep search */
|
|
139
|
-
const RG_EXCLUDE_DIRS = [
|
|
140
|
-
"node_modules", ".git", ".next", "dist", ".codesift", "coverage",
|
|
141
|
-
".playwright-mcp", "__pycache__", ".mypy_cache", ".tox",
|
|
142
|
-
];
|
|
143
|
-
/** Detect whether `rg` (ripgrep) is available on this system. Cached at module level. */
|
|
144
|
-
let rgAvailable = null;
|
|
145
|
-
function hasRipgrep() {
|
|
146
|
-
if (rgAvailable !== null)
|
|
147
|
-
return rgAvailable;
|
|
148
|
-
try {
|
|
149
|
-
execFileSync("rg", ["--version"], { stdio: "pipe", timeout: 2000 });
|
|
150
|
-
rgAvailable = true;
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
rgAvailable = false;
|
|
154
|
-
}
|
|
155
|
-
return rgAvailable;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Search via ripgrep — fast C-based search, parses `rg -n` output.
|
|
159
|
-
* Falls back to Node.js search if rg is not available.
|
|
160
|
-
*/
|
|
161
|
-
function searchWithRipgrep(root, query, options) {
|
|
162
|
-
const args = [
|
|
163
|
-
"-n", // line numbers
|
|
164
|
-
"--no-heading", // flat output
|
|
165
|
-
"--max-columns", String(MAX_LINE_CHARS),
|
|
166
|
-
"--max-columns-preview", // show truncated preview
|
|
167
|
-
"--max-count", String(Math.min(options.maxResults * 2, 5000)), // per-file cap (generous to hit global max)
|
|
168
|
-
];
|
|
169
|
-
if (!options.regex) {
|
|
170
|
-
args.push("-F"); // fixed string (literal)
|
|
171
|
-
}
|
|
172
|
-
if (options.contextLines > 0) {
|
|
173
|
-
args.push("-C", String(options.contextLines));
|
|
174
|
-
}
|
|
175
|
-
// File pattern → rg glob
|
|
176
|
-
if (options.filePattern) {
|
|
177
|
-
// Handle patterns like "src/**" or "*.ts"
|
|
178
|
-
args.push("--glob", options.filePattern);
|
|
179
|
-
}
|
|
180
|
-
// Exclude dirs (only relevant when scanning the whole root — candidate file lists
|
|
181
|
-
// are explicit paths and bypass the walker)
|
|
182
|
-
if (!options.candidateFiles || options.candidateFiles.length === 0) {
|
|
183
|
-
for (const dir of RG_EXCLUDE_DIRS) {
|
|
184
|
-
args.push("--glob", `!${dir}`);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
if (options.candidateFiles && options.candidateFiles.length > 0) {
|
|
188
|
-
// ripgrep omits the file-path prefix in output when given a single file,
|
|
189
|
-
// and the parser below expects `path:line:content`. `--with-filename`
|
|
190
|
-
// forces the prefix regardless of file count.
|
|
191
|
-
args.push("--with-filename");
|
|
192
|
-
}
|
|
193
|
-
args.push("--", query);
|
|
194
|
-
if (options.candidateFiles && options.candidateFiles.length > 0) {
|
|
195
|
-
// Pass explicit file paths as positional args. Avoids whole-tree walk.
|
|
196
|
-
for (const relPath of options.candidateFiles) {
|
|
197
|
-
args.push(join(root, relPath));
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
args.push(root);
|
|
202
|
-
}
|
|
203
|
-
let stdout;
|
|
204
|
-
try {
|
|
205
|
-
stdout = execFileSync("rg", args, {
|
|
206
|
-
encoding: "utf-8",
|
|
207
|
-
maxBuffer: 20 * 1024 * 1024, // 20MB
|
|
208
|
-
timeout: SEARCH_TIMEOUT_MS,
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
// rg exits 1 = no matches, 2 = error
|
|
213
|
-
if (err && typeof err === "object" && "status" in err) {
|
|
214
|
-
const exitCode = err.status;
|
|
215
|
-
if (exitCode === 1)
|
|
216
|
-
return []; // no matches
|
|
217
|
-
if ("stdout" in err && typeof err.stdout === "string") {
|
|
218
|
-
stdout = err.stdout;
|
|
219
|
-
if (!stdout)
|
|
220
|
-
return [];
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
return [];
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
return [];
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
const matches = [];
|
|
231
|
-
const rootPrefix = root.endsWith("/") ? root : root + "/";
|
|
232
|
-
// Parse context blocks: lines separated by "--" separators
|
|
233
|
-
const blocks = options.contextLines > 0
|
|
234
|
-
? stdout.split(/^--$/m)
|
|
235
|
-
: [stdout];
|
|
236
|
-
for (const block of blocks) {
|
|
237
|
-
if (matches.length >= options.maxResults)
|
|
238
|
-
break;
|
|
239
|
-
const lines = block.split("\n").filter(Boolean);
|
|
240
|
-
// In context mode, find the actual match line (has `:` separator) vs context (has `-` separator)
|
|
241
|
-
// In non-context mode, all lines are matches
|
|
242
|
-
for (const rawLine of lines) {
|
|
243
|
-
if (matches.length >= options.maxResults)
|
|
244
|
-
break;
|
|
245
|
-
// rg format: /abs/path/file.ts:42:content (match)
|
|
246
|
-
// rg format: /abs/path/file.ts-40-content (context, only with -C)
|
|
247
|
-
// We only want match lines (with `:` after line number)
|
|
248
|
-
const matchResult = rawLine.match(/^(.+?):(\d+):(.*)/);
|
|
249
|
-
if (!matchResult)
|
|
250
|
-
continue;
|
|
251
|
-
const [, absPath, lineNumStr, content] = matchResult;
|
|
252
|
-
if (!absPath || !lineNumStr || content === undefined)
|
|
253
|
-
continue;
|
|
254
|
-
const relPath = absPath.startsWith(rootPrefix)
|
|
255
|
-
? absPath.slice(rootPrefix.length)
|
|
256
|
-
: absPath;
|
|
257
|
-
matches.push({
|
|
258
|
-
file: relPath,
|
|
259
|
-
line: parseInt(lineNumStr, 10),
|
|
260
|
-
content: content,
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
// For context mode, we need to re-parse to attach context_before/context_after
|
|
265
|
-
// But context_lines=0 is the default now, so this path is rarely hit
|
|
266
|
-
if (options.contextLines > 0 && blocks.length > 1) {
|
|
267
|
-
return parseRipgrepContextBlocks(stdout, rootPrefix, options.maxResults, options.contextLines);
|
|
268
|
-
}
|
|
269
|
-
return matches;
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Parse rg output with context lines (-C N) into TextMatch[] with context_before/context_after.
|
|
273
|
-
*/
|
|
274
|
-
function parseRipgrepContextBlocks(stdout, rootPrefix, maxResults, contextLines) {
|
|
275
|
-
const matches = [];
|
|
276
|
-
const blocks = stdout.split(/^--$/m);
|
|
277
|
-
for (const block of blocks) {
|
|
278
|
-
if (matches.length >= maxResults)
|
|
279
|
-
break;
|
|
280
|
-
const lines = block.split("\n").filter(Boolean);
|
|
281
|
-
// Separate match lines from context lines
|
|
282
|
-
// Match: path:line:content Context: path-line-content
|
|
283
|
-
const parsed = [];
|
|
284
|
-
for (const raw of lines) {
|
|
285
|
-
// Try match line first (colon after line number)
|
|
286
|
-
const matchLine = raw.match(/^(.+?):(\d+):(.*)/);
|
|
287
|
-
if (matchLine && matchLine[1] && matchLine[2] && matchLine[3] !== undefined) {
|
|
288
|
-
parsed.push({
|
|
289
|
-
path: matchLine[1].startsWith(rootPrefix) ? matchLine[1].slice(rootPrefix.length) : matchLine[1],
|
|
290
|
-
line: parseInt(matchLine[2], 10),
|
|
291
|
-
content: matchLine[3],
|
|
292
|
-
isMatch: true,
|
|
293
|
-
});
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
// Try context line (hyphen after line number)
|
|
297
|
-
const ctxLine = raw.match(/^(.+?)-(\d+)-(.*)/);
|
|
298
|
-
if (ctxLine && ctxLine[1] && ctxLine[2] && ctxLine[3] !== undefined) {
|
|
299
|
-
parsed.push({
|
|
300
|
-
path: ctxLine[1].startsWith(rootPrefix) ? ctxLine[1].slice(rootPrefix.length) : ctxLine[1],
|
|
301
|
-
line: parseInt(ctxLine[2], 10),
|
|
302
|
-
content: ctxLine[3],
|
|
303
|
-
isMatch: false,
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
// Build TextMatch for each match line with surrounding context
|
|
308
|
-
for (let i = 0; i < parsed.length; i++) {
|
|
309
|
-
const p = parsed[i];
|
|
310
|
-
if (!p.isMatch)
|
|
311
|
-
continue;
|
|
312
|
-
if (matches.length >= maxResults)
|
|
313
|
-
break;
|
|
314
|
-
const contextBefore = [];
|
|
315
|
-
const contextAfter = [];
|
|
316
|
-
// Collect context before
|
|
317
|
-
for (let j = Math.max(0, i - contextLines); j < i; j++) {
|
|
318
|
-
const ctx = parsed[j];
|
|
319
|
-
if (ctx && !ctx.isMatch)
|
|
320
|
-
contextBefore.push(ctx.content);
|
|
321
|
-
}
|
|
322
|
-
// Collect context after
|
|
323
|
-
for (let j = i + 1; j <= Math.min(parsed.length - 1, i + contextLines); j++) {
|
|
324
|
-
const ctx = parsed[j];
|
|
325
|
-
if (ctx && !ctx.isMatch)
|
|
326
|
-
contextAfter.push(ctx.content);
|
|
327
|
-
}
|
|
328
|
-
const match = { file: p.path, line: p.line, content: p.content };
|
|
329
|
-
if (contextBefore.length > 0)
|
|
330
|
-
match.context_before = contextBefore;
|
|
331
|
-
if (contextAfter.length > 0)
|
|
332
|
-
match.context_after = contextAfter;
|
|
333
|
-
matches.push(match);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
return matches;
|
|
337
|
-
}
|
|
338
|
-
// ── Node.js fallback search ───────────────────────────
|
|
339
|
-
/** Search file content for line matches, collecting context lines around each hit. */
|
|
340
|
-
function searchFileForMatches(content, filePath, query, regex, contextLines, maxMatches) {
|
|
341
|
-
const lines = content.split("\n");
|
|
342
|
-
const matches = [];
|
|
343
|
-
for (let i = 0; i < lines.length; i++) {
|
|
344
|
-
if (matches.length >= maxMatches)
|
|
345
|
-
break;
|
|
346
|
-
const line = lines[i];
|
|
347
|
-
if (line === undefined)
|
|
348
|
-
continue;
|
|
349
|
-
const isMatch = regex ? regex.test(line) : line.includes(query);
|
|
350
|
-
if (!isMatch)
|
|
351
|
-
continue;
|
|
352
|
-
const contextBefore = [];
|
|
353
|
-
for (let j = Math.max(0, i - contextLines); j < i; j++) {
|
|
354
|
-
const ctxLine = lines[j];
|
|
355
|
-
if (ctxLine !== undefined)
|
|
356
|
-
contextBefore.push(ctxLine);
|
|
357
|
-
}
|
|
358
|
-
const contextAfter = [];
|
|
359
|
-
for (let j = i + 1; j <= Math.min(lines.length - 1, i + contextLines); j++) {
|
|
360
|
-
const ctxLine = lines[j];
|
|
361
|
-
if (ctxLine !== undefined)
|
|
362
|
-
contextAfter.push(ctxLine);
|
|
363
|
-
}
|
|
364
|
-
const truncLine = line.length > MAX_LINE_CHARS
|
|
365
|
-
? line.slice(0, MAX_LINE_CHARS) + "..."
|
|
366
|
-
: line;
|
|
367
|
-
const match = {
|
|
368
|
-
file: filePath,
|
|
369
|
-
line: i + 1,
|
|
370
|
-
content: truncLine,
|
|
371
|
-
};
|
|
372
|
-
if (contextBefore.length > 0)
|
|
373
|
-
match.context_before = contextBefore;
|
|
374
|
-
if (contextAfter.length > 0)
|
|
375
|
-
match.context_after = contextAfter;
|
|
376
|
-
matches.push(match);
|
|
377
|
-
}
|
|
378
|
-
return matches;
|
|
379
|
-
}
|
|
380
|
-
/** Aggregate flat TextMatch[] into per-file groups with counts and first_match preview. */
|
|
381
|
-
function groupMatchesByFile(matches) {
|
|
382
|
-
const groups = new Map();
|
|
383
|
-
for (const m of matches) {
|
|
384
|
-
const existing = groups.get(m.file);
|
|
385
|
-
if (existing) {
|
|
386
|
-
existing.count++;
|
|
387
|
-
existing.lines.push(m.line);
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
groups.set(m.file, {
|
|
391
|
-
file: m.file,
|
|
392
|
-
count: 1,
|
|
393
|
-
lines: [m.line],
|
|
394
|
-
first_match: m.content.length > MAX_FIRST_MATCH_CHARS
|
|
395
|
-
? m.content.slice(0, MAX_FIRST_MATCH_CHARS) + "..."
|
|
396
|
-
: m.content,
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
return [...groups.values()];
|
|
401
|
-
}
|
|
402
|
-
// ── Public API ──────────────────────────────────────────
|
|
403
|
-
/**
|
|
404
|
-
* Search symbols by name/signature/docstring using BM25 ranking.
|
|
405
|
-
* Supports filtering by symbol kind, file pattern, and decorator metadata.
|
|
406
|
-
*
|
|
407
|
-
* When query is empty, returns all symbols matching the filters (up to top_k).
|
|
408
|
-
* When kind, decorator, or file_pattern filters are active, BM25 searches a wider candidate
|
|
409
|
-
* set to avoid post-filter truncation.
|
|
410
|
-
*/
|
|
411
|
-
export async function searchSymbols(repo, query, options) {
|
|
412
|
-
const index = await getBM25Index(repo);
|
|
413
|
-
if (!index) {
|
|
414
|
-
throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
|
|
415
|
-
}
|
|
416
|
-
const config = loadConfig();
|
|
417
|
-
const includeSource = options?.include_source ?? true;
|
|
418
|
-
const defaultK = (includeSource && !options?.file_pattern) ? DEFAULT_TOP_K_WITH_SOURCE : config.defaultTopK;
|
|
419
|
-
const topK = options?.top_k ?? defaultK;
|
|
420
|
-
const hasFilters = !!options?.kind || !!options?.file_pattern || !!options?.decorator;
|
|
421
|
-
let results;
|
|
422
|
-
if (!query.trim()) {
|
|
423
|
-
const allSymbols = [...index.symbols.values()];
|
|
424
|
-
const filtered = allSymbols.filter((s) => matchesSymbolFilters(s, options));
|
|
425
|
-
results = filtered.slice(0, topK).map((symbol) => ({ symbol, score: 0 }));
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
const searchTopK = hasFilters ? Math.max(topK * BM25_FILTER_MULTIPLIER, BM25_FILTER_MIN_K) : topK;
|
|
429
|
-
results = searchBM25(index, query, searchTopK, config.bm25FieldWeights);
|
|
430
|
-
results = results.filter((r) => matchesSymbolFilters(r.symbol, options));
|
|
431
|
-
results = results.slice(0, topK);
|
|
432
|
-
results = applyCutoff(results);
|
|
433
|
-
}
|
|
434
|
-
if (options?.rerank && results.length > 1) {
|
|
435
|
-
const { rerankResults } = await import("../search/reranker.js");
|
|
436
|
-
results = await rerankResults(query, results);
|
|
437
|
-
}
|
|
438
|
-
// Server-side auto-compact: telemetry showed 100% of search_symbols calls
|
|
439
|
-
// omit detail_level/token_budget (post-fact H6 hints don't change agent
|
|
440
|
-
// behavior). When the result count is large and the caller didn't specify
|
|
441
|
-
// detail_level, switch to "compact" — cuts payload roughly in half without
|
|
442
|
-
// losing critical info (location is preserved; agent can fetch source via
|
|
443
|
-
// get_symbol if needed). An EXPLICIT include_source=true opts out: the
|
|
444
|
-
// caller asked for source, compact would silently drop it.
|
|
445
|
-
const SERVER_AUTO_COMPACT_THRESHOLD = 12;
|
|
446
|
-
const callerExplicitlyWantsSource = options?.include_source === true;
|
|
447
|
-
const detail = options?.detail_level
|
|
448
|
-
?? (results.length > SERVER_AUTO_COMPACT_THRESHOLD
|
|
449
|
-
&& !options?.token_budget
|
|
450
|
-
&& !callerExplicitlyWantsSource
|
|
451
|
-
? "compact"
|
|
452
|
-
: "standard");
|
|
453
|
-
const shaped = shapeSearchResults(results, detail, includeSource, options);
|
|
454
|
-
// Token budget: greedily pack results until budget exhausted
|
|
455
|
-
const budget = options?.token_budget;
|
|
456
|
-
if (budget && budget > 0) {
|
|
457
|
-
const packed = [];
|
|
458
|
-
let used = 0;
|
|
459
|
-
for (const r of shaped) {
|
|
460
|
-
const tok = Math.ceil(JSON.stringify(r).length / CHARS_PER_TOKEN);
|
|
461
|
-
if (used + tok > budget)
|
|
462
|
-
break;
|
|
463
|
-
packed.push(r);
|
|
464
|
-
used += tok;
|
|
465
|
-
}
|
|
466
|
-
return packed;
|
|
467
|
-
}
|
|
468
|
-
return shaped;
|
|
469
|
-
}
|
|
470
|
-
export async function searchText(repo, query, options) {
|
|
471
|
-
return raceWallClock(searchTextInner(repo, query, options), SEARCH_TEXT_WALL_CLOCK_MS, () => [{
|
|
472
|
-
file: "<truncated>",
|
|
473
|
-
line: 0,
|
|
474
|
-
content: `search exceeded ${SEARCH_TEXT_WALL_CLOCK_MS}ms — narrow scope with file_pattern (e.g. "src/**/*.ts") or use search_symbols for identifier lookup. Ranked mode runs after the regex scan and does not speed it up.`,
|
|
475
|
-
truncated: true,
|
|
476
|
-
hint: "narrow scope with file_pattern, or use search_symbols for identifier lookup",
|
|
477
|
-
}]);
|
|
478
|
-
}
|
|
479
|
-
async function searchTextInner(repo, query, options) {
|
|
480
|
-
const index = await getCodeIndex(repo);
|
|
481
|
-
if (!index) {
|
|
482
|
-
throw new Error(`Repository "${repo}" not found. Run index_folder first.`);
|
|
483
|
-
}
|
|
484
|
-
const useRegex = options?.regex ?? false;
|
|
485
|
-
const filePattern = options?.file_pattern;
|
|
486
|
-
const maxResults = options?.max_results
|
|
487
|
-
?? (useRegex && !filePattern ? DEFAULT_MAX_REGEX_RESULTS : DEFAULT_MAX_TEXT_MATCHES);
|
|
488
|
-
const contextLines = options?.context_lines ?? 0; // OPT-2: default 0 (was 2) — saves ~30 tokens/match
|
|
489
|
-
// Validate regex safety before passing to ripgrep
|
|
490
|
-
if (useRegex) {
|
|
491
|
-
compileSearchRegex(query); // throws on ReDoS patterns
|
|
492
|
-
}
|
|
493
|
-
// OPT-RANK-1: For single-identifier queries without an explicit file_pattern,
|
|
494
|
-
// shortlist candidate files via BM25 (top-K symbol hits → unique file set)
|
|
495
|
-
// BEFORE scanning. Telemetry showed identifier queries on large repos hit
|
|
496
|
-
// the 8s wall-clock cap because ripgrep walked the entire tree; restricting
|
|
497
|
-
// to ~60 candidate files drops scan time to <500ms while preserving the
|
|
498
|
-
// matches an agent actually wants (definition + usages of the identifier).
|
|
499
|
-
// Skipped when the agent passed file_pattern (already narrowed) or for
|
|
500
|
-
// regex/multi-word queries (BM25 symbol relevance doesn't generalize).
|
|
501
|
-
let candidateFiles;
|
|
502
|
-
if (!useRegex && !filePattern && IDENTIFIER_QUERY_RX.test(query)) {
|
|
503
|
-
try {
|
|
504
|
-
const bm25 = await getBM25Index(repo);
|
|
505
|
-
if (bm25) {
|
|
506
|
-
const config = loadConfig();
|
|
507
|
-
const bm25Hits = searchBM25(bm25, query, BM25_FILE_SHORTLIST_K, config.bm25FieldWeights);
|
|
508
|
-
if (bm25Hits.length > 0) {
|
|
509
|
-
const fileSet = new Set();
|
|
510
|
-
for (const r of bm25Hits)
|
|
511
|
-
fileSet.add(r.symbol.file);
|
|
512
|
-
candidateFiles = [...fileSet];
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
catch {
|
|
517
|
-
// Graceful fallback — full scan if BM25 lookup fails for any reason
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
let matches;
|
|
521
|
-
// OPT-1: Use ripgrep when available (10x faster)
|
|
522
|
-
if (hasRipgrep()) {
|
|
523
|
-
matches = searchWithRipgrep(index.root, query, {
|
|
524
|
-
regex: useRegex,
|
|
525
|
-
filePattern: filePattern,
|
|
526
|
-
maxResults: maxResults,
|
|
527
|
-
contextLines: contextLines,
|
|
528
|
-
candidateFiles: candidateFiles,
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
|
-
else {
|
|
532
|
-
// Node.js fallback
|
|
533
|
-
const regex = useRegex ? compileSearchRegex(query) : null;
|
|
534
|
-
let allFiles;
|
|
535
|
-
if (candidateFiles && candidateFiles.length > 0) {
|
|
536
|
-
// OPT-RANK-1: BM25 shortlist already narrowed the search space — skip the walk.
|
|
537
|
-
allFiles = [...candidateFiles];
|
|
538
|
-
}
|
|
539
|
-
else if (filePattern) {
|
|
540
|
-
allFiles = index.files.map((f) => f.path);
|
|
541
|
-
}
|
|
542
|
-
else {
|
|
543
|
-
allFiles = await walkDirectory(index.root, {
|
|
544
|
-
fileFilter: (ext) => !BINARY_EXTENSIONS.has(ext),
|
|
545
|
-
maxFiles: MAX_WALK_FILES,
|
|
546
|
-
relative: true,
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
matches = [];
|
|
550
|
-
const searchStart = Date.now();
|
|
551
|
-
for (const filePath of allFiles) {
|
|
552
|
-
if (matches.length >= maxResults)
|
|
553
|
-
break;
|
|
554
|
-
if (Date.now() - searchStart > SEARCH_TIMEOUT_MS)
|
|
555
|
-
break;
|
|
556
|
-
if (filePattern && !matchFilePattern(filePath, filePattern))
|
|
557
|
-
continue;
|
|
558
|
-
const fullPath = join(index.root, filePath);
|
|
559
|
-
let content;
|
|
560
|
-
try {
|
|
561
|
-
content = await readFile(fullPath, "utf-8");
|
|
562
|
-
}
|
|
563
|
-
catch {
|
|
564
|
-
continue;
|
|
565
|
-
}
|
|
566
|
-
const fileMatches = searchFileForMatches(content, filePath, query, regex, contextLines, maxResults - matches.length);
|
|
567
|
-
matches.push(...fileMatches);
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
// Server-side auto-promotion of ranked mode for identifier-like queries when
|
|
571
|
-
// the caller passed no grouping/ranking options. Telemetry showed 0/5640
|
|
572
|
-
// calls used ranked=true despite it saving 1-3 follow-up get_symbol calls
|
|
573
|
-
// for "find usages of X" queries — agents simply weren't reaching for it.
|
|
574
|
-
// Conservative trigger: query must look like a single identifier (≥3 chars)
|
|
575
|
-
// and the caller must not have expressed any grouping preference.
|
|
576
|
-
const callerOmittedGroupOpts = options?.group_by_file === undefined
|
|
577
|
-
&& options?.auto_group === undefined
|
|
578
|
-
&& options?.ranked === undefined
|
|
579
|
-
&& options?.compact === undefined;
|
|
580
|
-
const isIdentifierQuery = !useRegex && IDENTIFIER_QUERY_RX.test(query);
|
|
581
|
-
const shouldRank = options?.ranked
|
|
582
|
-
|| (callerOmittedGroupOpts && isIdentifierQuery);
|
|
583
|
-
// Ranked mode: classify hits with symbol context, deduplicate, and sort by centrality.
|
|
584
|
-
// Takes precedence over auto_group/compact — returns TextMatch[] with containing_symbol.
|
|
585
|
-
if (shouldRank && matches.length > 0) {
|
|
586
|
-
try {
|
|
587
|
-
const { classifyHitsWithSymbols } = await import("./search-ranker.js");
|
|
588
|
-
const bm25Idx = await getBM25Index(repo);
|
|
589
|
-
if (bm25Idx) {
|
|
590
|
-
matches = await classifyHitsWithSymbols(matches, index, { centrality: bm25Idx.centrality });
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
catch {
|
|
594
|
-
// Graceful fallback — return unranked matches if pipeline fails
|
|
595
|
-
}
|
|
596
|
-
return matches;
|
|
597
|
-
}
|
|
598
|
-
// OPT-3: Compact format — grep-like `file:line: content` output, ~50% less tokens than JSON
|
|
599
|
-
// Auto-enable when auto_group is set (caller is optimization-aware) and results are small
|
|
600
|
-
const useCompact = options?.compact
|
|
601
|
-
?? (options?.auto_group && contextLines === 0 && matches.length > 0 && matches.length <= AUTO_GROUP_THRESHOLD);
|
|
602
|
-
if (useCompact && !options?.group_by_file) {
|
|
603
|
-
// Group by file to avoid repeating long paths (saves ~30% on multi-match files)
|
|
604
|
-
const groups = new Map();
|
|
605
|
-
for (const m of matches) {
|
|
606
|
-
let g = groups.get(m.file);
|
|
607
|
-
if (!g) {
|
|
608
|
-
g = [];
|
|
609
|
-
groups.set(m.file, g);
|
|
610
|
-
}
|
|
611
|
-
g.push(` ${m.line}: ${m.content}`);
|
|
612
|
-
}
|
|
613
|
-
if (groups.size === matches.length) {
|
|
614
|
-
// Each file has 1 match — flat format is fine
|
|
615
|
-
return matches.map((m) => `${m.file}:${m.line}: ${m.content}`).join("\n");
|
|
616
|
-
}
|
|
617
|
-
// Grouped: file header + indented matches
|
|
618
|
-
const parts = [];
|
|
619
|
-
for (const [file, lines] of groups) {
|
|
620
|
-
parts.push(`${file}\n${lines.join("\n")}`);
|
|
621
|
-
}
|
|
622
|
-
return parts.join("\n");
|
|
623
|
-
}
|
|
624
|
-
// Estimate response size; force grouping when output would be enormous
|
|
625
|
-
const estimatedChars = matches.reduce((sum, m) => {
|
|
626
|
-
let chars = m.file.length + m.content.length + JSON_OVERHEAD_PER_MATCH;
|
|
627
|
-
if (m.context_before)
|
|
628
|
-
chars += m.context_before.reduce((s, l) => s + l.length, 0);
|
|
629
|
-
if (m.context_after)
|
|
630
|
-
chars += m.context_after.reduce((s, l) => s + l.length, 0);
|
|
631
|
-
return sum + chars;
|
|
632
|
-
}, 0);
|
|
633
|
-
// Server-side default grouping: when caller didn't specify any grouping/ranking
|
|
634
|
-
// option AND result count exceeds SERVER_AUTO_GROUP_THRESHOLD, group by file.
|
|
635
|
-
// Telemetry showed 51% of search_text calls omitted these opts entirely;
|
|
636
|
-
// grouping cuts payload by ~50% (975 → 499 avg tokens per call).
|
|
637
|
-
// (callerOmittedGroupOpts hoisted above for shared use with ranked auto-promote)
|
|
638
|
-
const shouldGroup = options?.group_by_file
|
|
639
|
-
|| (options?.auto_group && matches.length > AUTO_GROUP_THRESHOLD)
|
|
640
|
-
|| (callerOmittedGroupOpts && matches.length > SERVER_AUTO_GROUP_THRESHOLD)
|
|
641
|
-
|| estimatedChars > MAX_RESPONSE_CHARS;
|
|
642
|
-
if (shouldGroup) {
|
|
643
|
-
return groupMatchesByFile(matches);
|
|
644
|
-
}
|
|
645
|
-
return matches;
|
|
646
|
-
}
|
|
647
|
-
// ---------------------------------------------------------------------------
|
|
648
|
-
// Semantic search — standalone wrapper around retrieval infrastructure
|
|
649
|
-
// ---------------------------------------------------------------------------
|
|
650
|
-
export async function semanticSearch(repo, query, options) {
|
|
651
|
-
const { handleSemanticQuery } = await import("../retrieval/semantic-handlers.js");
|
|
652
|
-
const result = await handleSemanticQuery(repo, {
|
|
653
|
-
type: "semantic",
|
|
654
|
-
query,
|
|
655
|
-
top_k: options?.top_k,
|
|
656
|
-
file_filter: options?.file_pattern,
|
|
657
|
-
exclude_tests: options?.exclude_tests,
|
|
658
|
-
rerank: options?.rerank,
|
|
659
|
-
});
|
|
660
|
-
return typeof result.data === "string" ? result.data : JSON.stringify(result.data);
|
|
661
|
-
}
|
|
662
|
-
// ---------------------------------------------------------------------------
|
|
663
|
-
// Zero-hit fallback — vocabulary suggestions + semantic rescue
|
|
664
|
-
//
|
|
665
|
-
// Telemetry (30d window, 2026-06): 44% of search_text calls (2,539/5,826)
|
|
666
|
-
// returned zero matches. Each miss costs the agent a turn of re-guessing.
|
|
667
|
-
// On a miss we now return (a) near-miss symbol names from the index
|
|
668
|
-
// vocabulary and (b) semantic results when an embeddings index already
|
|
669
|
-
// exists on disk — never triggering a fresh embedding build on this path.
|
|
670
|
-
// ---------------------------------------------------------------------------
|
|
671
|
-
const ZERO_HIT_SUGGESTION_CAP = 5;
|
|
672
|
-
const ZERO_HIT_SEMANTIC_TOP_K = 5;
|
|
673
|
-
const ZERO_HIT_SEMANTIC_CAP_MS = 4000;
|
|
674
|
-
const ZERO_HIT_EDIT_DISTANCE_MAX = 2;
|
|
675
|
-
const ZERO_HIT_MIN_QUERY_LEN = 3;
|
|
676
|
-
/** Levenshtein distance with early exit once the distance exceeds `max`. */
|
|
677
|
-
function boundedEditDistance(a, b, max) {
|
|
678
|
-
if (Math.abs(a.length - b.length) > max)
|
|
679
|
-
return max + 1;
|
|
680
|
-
let prev = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
681
|
-
for (let i = 1; i <= a.length; i++) {
|
|
682
|
-
const curr = [i];
|
|
683
|
-
let rowMin = i;
|
|
684
|
-
for (let j = 1; j <= b.length; j++) {
|
|
685
|
-
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
686
|
-
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
|
|
687
|
-
if (curr[j] < rowMin)
|
|
688
|
-
rowMin = curr[j];
|
|
689
|
-
}
|
|
690
|
-
if (rowMin > max)
|
|
691
|
-
return max + 1;
|
|
692
|
-
prev = curr;
|
|
693
|
-
}
|
|
694
|
-
return prev[b.length];
|
|
695
|
-
}
|
|
696
|
-
/** Rank symbol names against a single-token query: exact-insensitive first,
|
|
697
|
-
* then substring containment, then small edit distance. */
|
|
698
|
-
function suggestFromVocabulary(query, names) {
|
|
699
|
-
const q = query.toLowerCase();
|
|
700
|
-
const scored = [];
|
|
701
|
-
const seen = new Set();
|
|
702
|
-
for (const name of names) {
|
|
703
|
-
if (seen.has(name))
|
|
704
|
-
continue;
|
|
705
|
-
seen.add(name);
|
|
706
|
-
const n = name.toLowerCase();
|
|
707
|
-
if (n === q)
|
|
708
|
-
continue; // exact match would have been found by the scan
|
|
709
|
-
let score;
|
|
710
|
-
if (n.includes(q) || q.includes(n)) {
|
|
711
|
-
score = Math.abs(n.length - q.length); // tighter containment ranks higher
|
|
712
|
-
}
|
|
713
|
-
else {
|
|
714
|
-
const d = boundedEditDistance(q, n, ZERO_HIT_EDIT_DISTANCE_MAX);
|
|
715
|
-
if (d > ZERO_HIT_EDIT_DISTANCE_MAX)
|
|
716
|
-
continue;
|
|
717
|
-
score = 10 + d; // containment always beats fuzzy
|
|
718
|
-
}
|
|
719
|
-
scored.push({ name, score });
|
|
720
|
-
}
|
|
721
|
-
scored.sort((a, b) => a.score - b.score || a.name.length - b.name.length);
|
|
722
|
-
return scored.slice(0, ZERO_HIT_SUGGESTION_CAP).map((s) => s.name);
|
|
723
|
-
}
|
|
724
|
-
/**
|
|
725
|
-
* Build fallback guidance after a zero-hit text search. Both branches are
|
|
726
|
-
* best-effort: any failure degrades to an empty object, never an error.
|
|
727
|
-
*/
|
|
728
|
-
export async function zeroHitFallback(repo, query) {
|
|
729
|
-
const out = {};
|
|
730
|
-
const trimmed = query.trim();
|
|
731
|
-
if (trimmed.length < ZERO_HIT_MIN_QUERY_LEN)
|
|
732
|
-
return out;
|
|
733
|
-
// (a) Vocabulary suggestions — only meaningful for single-token queries.
|
|
734
|
-
if (!/\s/.test(trimmed)) {
|
|
735
|
-
try {
|
|
736
|
-
const index = await getCodeIndex(repo);
|
|
737
|
-
if (index) {
|
|
738
|
-
const suggestions = suggestFromVocabulary(trimmed, index.symbols.map((s) => s.name));
|
|
739
|
-
if (suggestions.length > 0)
|
|
740
|
-
out.suggestions = suggestions;
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
catch {
|
|
744
|
-
// best-effort
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
// (b) Semantic rescue — gated on a pre-existing embeddings file so a miss
|
|
748
|
-
// never triggers an expensive embedding build.
|
|
749
|
-
try {
|
|
750
|
-
const config = loadConfig();
|
|
751
|
-
const { getRepo } = await import("../storage/registry.js");
|
|
752
|
-
const meta = await getRepo(config.registryPath, repo);
|
|
753
|
-
if (meta) {
|
|
754
|
-
const { existsSync } = await import("node:fs");
|
|
755
|
-
const { getEmbeddingPath } = await import("../storage/embedding-store.js");
|
|
756
|
-
const { getChunkEmbeddingPath } = await import("../storage/chunk-store.js");
|
|
757
|
-
const hasEmbeddings = existsSync(getEmbeddingPath(meta.index_path))
|
|
758
|
-
|| existsSync(getChunkEmbeddingPath(meta.index_path));
|
|
759
|
-
if (hasEmbeddings) {
|
|
760
|
-
const semantic = await raceWallClock(semanticSearch(repo, trimmed, { top_k: ZERO_HIT_SEMANTIC_TOP_K }), ZERO_HIT_SEMANTIC_CAP_MS, () => "");
|
|
761
|
-
if (semantic && semantic !== "(no results)")
|
|
762
|
-
out.semantic_results = semantic;
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
catch {
|
|
767
|
-
// best-effort — no provider, no registry entry, embed timeout, etc.
|
|
768
|
-
}
|
|
769
|
-
return out;
|
|
770
|
-
}
|
|
1
|
+
export { searchSymbols } from "./search-tools/symbol-search.js";
|
|
2
|
+
export { searchText } from "./search-tools/text-search.js";
|
|
3
|
+
export { semanticSearch } from "./search-tools/semantic-search.js";
|
|
4
|
+
export { zeroHitFallback } from "./search-tools/zero-hit.js";
|
|
771
5
|
//# sourceMappingURL=search-tools.js.map
|