codesift-mcp 0.3.0 → 0.5.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 +215 -23
- package/dist/cache/hono-cache.d.ts +50 -0
- package/dist/cache/hono-cache.d.ts.map +1 -0
- package/dist/cache/hono-cache.js +132 -0
- package/dist/cache/hono-cache.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +8 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/platform.d.ts.map +1 -1
- package/dist/cli/platform.js +12 -14
- package/dist/cli/platform.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +27 -3
- package/dist/cli/setup.js.map +1 -1
- package/dist/formatters-shortening.d.ts +13 -0
- package/dist/formatters-shortening.d.ts.map +1 -1
- package/dist/formatters-shortening.js +131 -0
- package/dist/formatters-shortening.js.map +1 -1
- package/dist/formatters.d.ts +38 -0
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +521 -0
- package/dist/formatters.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +39 -38
- package/dist/instructions.js.map +1 -1
- package/dist/lsp/lsp-servers.d.ts.map +1 -1
- package/dist/lsp/lsp-servers.js +5 -0
- package/dist/lsp/lsp-servers.js.map +1 -1
- package/dist/lsp/lsp-tools.d.ts.map +1 -1
- package/dist/lsp/lsp-tools.js +1 -0
- package/dist/lsp/lsp-tools.js.map +1 -1
- package/dist/parser/astro-template.d.ts +47 -0
- package/dist/parser/astro-template.d.ts.map +1 -0
- package/dist/parser/astro-template.js +171 -0
- package/dist/parser/astro-template.js.map +1 -0
- package/dist/parser/extractors/_shared.d.ts +4 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -1
- package/dist/parser/extractors/_shared.js +8 -0
- package/dist/parser/extractors/_shared.js.map +1 -1
- package/dist/parser/extractors/astro.d.ts +4 -5
- package/dist/parser/extractors/astro.d.ts.map +1 -1
- package/dist/parser/extractors/astro.js +102 -26
- package/dist/parser/extractors/astro.js.map +1 -1
- package/dist/parser/extractors/gradle-kts.d.ts +4 -0
- package/dist/parser/extractors/gradle-kts.d.ts.map +1 -0
- package/dist/parser/extractors/gradle-kts.js +246 -0
- package/dist/parser/extractors/gradle-kts.js.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts +34 -0
- package/dist/parser/extractors/hono-inline-analyzer.d.ts.map +1 -0
- package/dist/parser/extractors/hono-inline-analyzer.js +465 -0
- package/dist/parser/extractors/hono-inline-analyzer.js.map +1 -0
- package/dist/parser/extractors/hono-model.d.ts +196 -0
- package/dist/parser/extractors/hono-model.d.ts.map +1 -0
- package/dist/parser/extractors/hono-model.js +10 -0
- package/dist/parser/extractors/hono-model.js.map +1 -0
- package/dist/parser/extractors/hono.d.ts +118 -0
- package/dist/parser/extractors/hono.d.ts.map +1 -0
- package/dist/parser/extractors/hono.js +1527 -0
- package/dist/parser/extractors/hono.js.map +1 -0
- package/dist/parser/extractors/kotlin.d.ts +4 -0
- package/dist/parser/extractors/kotlin.d.ts.map +1 -0
- package/dist/parser/extractors/kotlin.js +521 -0
- package/dist/parser/extractors/kotlin.js.map +1 -0
- package/dist/parser/extractors/php.d.ts +22 -0
- package/dist/parser/extractors/php.d.ts.map +1 -0
- package/dist/parser/extractors/php.js +334 -0
- package/dist/parser/extractors/php.js.map +1 -0
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js +234 -11
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/sql.d.ts +33 -0
- package/dist/parser/extractors/sql.d.ts.map +1 -0
- package/dist/parser/extractors/sql.js +506 -0
- package/dist/parser/extractors/sql.js.map +1 -0
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +209 -3
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/dist/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php.wasm +0 -0
- package/dist/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/dist/parser/languages/tree-sitter-python.wasm +0 -0
- package/dist/parser/parse-cache.d.ts +39 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +87 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/parser-manager.d.ts +32 -0
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +93 -3
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +16 -0
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tools.d.ts +38 -2
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +2444 -195
- package/dist/register-tools.js.map +1 -1
- package/dist/search/reranker.js +1 -1
- package/dist/search/reranker.js.map +1 -1
- package/dist/search/tool-ranker.d.ts +90 -0
- package/dist/search/tool-ranker.d.ts.map +1 -0
- package/dist/search/tool-ranker.js +420 -0
- package/dist/search/tool-ranker.js.map +1 -0
- package/dist/server-helpers.d.ts.map +1 -1
- package/dist/server-helpers.js +11 -0
- package/dist/server-helpers.js.map +1 -1
- package/dist/server.js +47 -14
- package/dist/server.js.map +1 -1
- package/dist/storage/index-store.d.ts +15 -1
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +27 -1
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/session-state.d.ts +1 -1
- package/dist/storage/session-state.d.ts.map +1 -1
- package/dist/storage/session-state.js +6 -4
- package/dist/storage/session-state.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +4 -1
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/tools/agent-config-tools.d.ts +24 -0
- package/dist/tools/agent-config-tools.d.ts.map +1 -0
- package/dist/tools/agent-config-tools.js +119 -0
- package/dist/tools/agent-config-tools.js.map +1 -0
- package/dist/tools/architecture-tools.d.ts +23 -0
- package/dist/tools/architecture-tools.d.ts.map +1 -0
- package/dist/tools/architecture-tools.js +140 -0
- package/dist/tools/architecture-tools.js.map +1 -0
- package/dist/tools/astro-actions.d.ts +54 -0
- package/dist/tools/astro-actions.d.ts.map +1 -0
- package/dist/tools/astro-actions.js +561 -0
- package/dist/tools/astro-actions.js.map +1 -0
- package/dist/tools/astro-audit.d.ts +87 -0
- package/dist/tools/astro-audit.d.ts.map +1 -0
- package/dist/tools/astro-audit.js +345 -0
- package/dist/tools/astro-audit.js.map +1 -0
- package/dist/tools/astro-config.d.ts +33 -0
- package/dist/tools/astro-config.d.ts.map +1 -0
- package/dist/tools/astro-config.js +260 -0
- package/dist/tools/astro-config.js.map +1 -0
- package/dist/tools/astro-content-collections.d.ts +44 -0
- package/dist/tools/astro-content-collections.d.ts.map +1 -0
- package/dist/tools/astro-content-collections.js +630 -0
- package/dist/tools/astro-content-collections.js.map +1 -0
- package/dist/tools/astro-islands.d.ts +63 -0
- package/dist/tools/astro-islands.d.ts.map +1 -0
- package/dist/tools/astro-islands.js +255 -0
- package/dist/tools/astro-islands.js.map +1 -0
- package/dist/tools/astro-migration.d.ts +31 -0
- package/dist/tools/astro-migration.d.ts.map +1 -0
- package/dist/tools/astro-migration.js +378 -0
- package/dist/tools/astro-migration.js.map +1 -0
- package/dist/tools/astro-routes.d.ts +49 -0
- package/dist/tools/astro-routes.d.ts.map +1 -0
- package/dist/tools/astro-routes.js +119 -0
- package/dist/tools/astro-routes.js.map +1 -0
- package/dist/tools/async-correctness.d.ts +26 -0
- package/dist/tools/async-correctness.d.ts.map +1 -0
- package/dist/tools/async-correctness.js +166 -0
- package/dist/tools/async-correctness.js.map +1 -0
- package/dist/tools/audit-tools.d.ts +38 -0
- package/dist/tools/audit-tools.d.ts.map +1 -0
- package/dist/tools/audit-tools.js +248 -0
- package/dist/tools/audit-tools.js.map +1 -0
- package/dist/tools/celery-tools.d.ts +38 -0
- package/dist/tools/celery-tools.d.ts.map +1 -0
- package/dist/tools/celery-tools.js +154 -0
- package/dist/tools/celery-tools.js.map +1 -0
- package/dist/tools/clone-tools.js +1 -1
- package/dist/tools/clone-tools.js.map +1 -1
- package/dist/tools/complexity-tools.d.ts +4 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -1
- package/dist/tools/complexity-tools.js +78 -4
- package/dist/tools/complexity-tools.js.map +1 -1
- package/dist/tools/compose-tools.d.ts +60 -0
- package/dist/tools/compose-tools.d.ts.map +1 -0
- package/dist/tools/compose-tools.js +203 -0
- package/dist/tools/compose-tools.js.map +1 -0
- package/dist/tools/coupling-tools.d.ts +50 -0
- package/dist/tools/coupling-tools.d.ts.map +1 -0
- package/dist/tools/coupling-tools.js +262 -0
- package/dist/tools/coupling-tools.js.map +1 -0
- package/dist/tools/dependency-audit-tools.d.ts +65 -0
- package/dist/tools/dependency-audit-tools.d.ts.map +1 -0
- package/dist/tools/dependency-audit-tools.js +553 -0
- package/dist/tools/dependency-audit-tools.js.map +1 -0
- package/dist/tools/django-settings.d.ts +22 -0
- package/dist/tools/django-settings.d.ts.map +1 -0
- package/dist/tools/django-settings.js +301 -0
- package/dist/tools/django-settings.js.map +1 -0
- package/dist/tools/django-view-security-tools.d.ts +32 -0
- package/dist/tools/django-view-security-tools.d.ts.map +1 -0
- package/dist/tools/django-view-security-tools.js +184 -0
- package/dist/tools/django-view-security-tools.js.map +1 -0
- package/dist/tools/fastapi-depends.d.ts +63 -0
- package/dist/tools/fastapi-depends.d.ts.map +1 -0
- package/dist/tools/fastapi-depends.js +191 -0
- package/dist/tools/fastapi-depends.js.map +1 -0
- package/dist/tools/frequency-tools.js +1 -1
- package/dist/tools/frequency-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +8 -2
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +44 -3
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hilt-tools.d.ts +55 -0
- package/dist/tools/hilt-tools.d.ts.map +1 -0
- package/dist/tools/hilt-tools.js +258 -0
- package/dist/tools/hilt-tools.js.map +1 -0
- package/dist/tools/hono-analyze-app.d.ts +48 -0
- package/dist/tools/hono-analyze-app.d.ts.map +1 -0
- package/dist/tools/hono-analyze-app.js +94 -0
- package/dist/tools/hono-analyze-app.js.map +1 -0
- package/dist/tools/hono-api-contract.d.ts +22 -0
- package/dist/tools/hono-api-contract.d.ts.map +1 -0
- package/dist/tools/hono-api-contract.js +112 -0
- package/dist/tools/hono-api-contract.js.map +1 -0
- package/dist/tools/hono-conditional-middleware.d.ts +27 -0
- package/dist/tools/hono-conditional-middleware.d.ts.map +1 -0
- package/dist/tools/hono-conditional-middleware.js +62 -0
- package/dist/tools/hono-conditional-middleware.js.map +1 -0
- package/dist/tools/hono-context-flow.d.ts +24 -0
- package/dist/tools/hono-context-flow.d.ts.map +1 -0
- package/dist/tools/hono-context-flow.js +70 -0
- package/dist/tools/hono-context-flow.js.map +1 -0
- package/dist/tools/hono-dead-routes.d.ts +26 -0
- package/dist/tools/hono-dead-routes.d.ts.map +1 -0
- package/dist/tools/hono-dead-routes.js +102 -0
- package/dist/tools/hono-dead-routes.js.map +1 -0
- package/dist/tools/hono-entry-resolver.d.ts +27 -0
- package/dist/tools/hono-entry-resolver.d.ts.map +1 -0
- package/dist/tools/hono-entry-resolver.js +31 -0
- package/dist/tools/hono-entry-resolver.js.map +1 -0
- package/dist/tools/hono-env-regression.d.ts +29 -0
- package/dist/tools/hono-env-regression.d.ts.map +1 -0
- package/dist/tools/hono-env-regression.js +157 -0
- package/dist/tools/hono-env-regression.js.map +1 -0
- package/dist/tools/hono-inline-analyze.d.ts +31 -0
- package/dist/tools/hono-inline-analyze.d.ts.map +1 -0
- package/dist/tools/hono-inline-analyze.js +59 -0
- package/dist/tools/hono-inline-analyze.js.map +1 -0
- package/dist/tools/hono-middleware-chain.d.ts +40 -0
- package/dist/tools/hono-middleware-chain.d.ts.map +1 -0
- package/dist/tools/hono-middleware-chain.js +121 -0
- package/dist/tools/hono-middleware-chain.js.map +1 -0
- package/dist/tools/hono-modules.d.ts +22 -0
- package/dist/tools/hono-modules.d.ts.map +1 -0
- package/dist/tools/hono-modules.js +118 -0
- package/dist/tools/hono-modules.js.map +1 -0
- package/dist/tools/hono-response-types.d.ts +37 -0
- package/dist/tools/hono-response-types.d.ts.map +1 -0
- package/dist/tools/hono-response-types.js +76 -0
- package/dist/tools/hono-response-types.js.map +1 -0
- package/dist/tools/hono-rpc-types.d.ts +21 -0
- package/dist/tools/hono-rpc-types.d.ts.map +1 -0
- package/dist/tools/hono-rpc-types.js +49 -0
- package/dist/tools/hono-rpc-types.js.map +1 -0
- package/dist/tools/hono-security.d.ts +31 -0
- package/dist/tools/hono-security.d.ts.map +1 -0
- package/dist/tools/hono-security.js +269 -0
- package/dist/tools/hono-security.js.map +1 -0
- package/dist/tools/hono-visualize.d.ts +13 -0
- package/dist/tools/hono-visualize.d.ts.map +1 -0
- package/dist/tools/hono-visualize.js +64 -0
- package/dist/tools/hono-visualize.js.map +1 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -1
- package/dist/tools/hotspot-tools.js +9 -7
- package/dist/tools/hotspot-tools.js.map +1 -1
- package/dist/tools/index-tools.d.ts +17 -0
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +210 -10
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/kotlin-tools.d.ts +142 -0
- package/dist/tools/kotlin-tools.d.ts.map +1 -0
- package/dist/tools/kotlin-tools.js +572 -0
- package/dist/tools/kotlin-tools.js.map +1 -0
- package/dist/tools/legacy-hono-conventions.d.ts +14 -0
- package/dist/tools/legacy-hono-conventions.d.ts.map +1 -0
- package/dist/tools/legacy-hono-conventions.js +152 -0
- package/dist/tools/legacy-hono-conventions.js.map +1 -0
- package/dist/tools/migration-lint-tools.d.ts +26 -0
- package/dist/tools/migration-lint-tools.d.ts.map +1 -0
- package/dist/tools/migration-lint-tools.js +247 -0
- package/dist/tools/migration-lint-tools.js.map +1 -0
- package/dist/tools/model-tools.d.ts +30 -0
- package/dist/tools/model-tools.d.ts.map +1 -0
- package/dist/tools/model-tools.js +145 -0
- package/dist/tools/model-tools.js.map +1 -0
- package/dist/tools/nest-ext-tools.d.ts +207 -0
- package/dist/tools/nest-ext-tools.d.ts.map +1 -0
- package/dist/tools/nest-ext-tools.js +752 -0
- package/dist/tools/nest-ext-tools.js.map +1 -0
- package/dist/tools/nest-tools.d.ts +198 -0
- package/dist/tools/nest-tools.d.ts.map +1 -0
- package/dist/tools/nest-tools.js +1142 -0
- package/dist/tools/nest-tools.js.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts +14 -0
- package/dist/tools/nextjs-api-contract-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-readers.js +204 -0
- package/dist/tools/nextjs-api-contract-readers.js.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts +57 -0
- package/dist/tools/nextjs-api-contract-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-api-contract-tools.js +144 -0
- package/dist/tools/nextjs-api-contract-tools.js.map +1 -0
- package/dist/tools/nextjs-boundary-tools.d.ts +39 -0
- package/dist/tools/nextjs-boundary-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-boundary-tools.js +152 -0
- package/dist/tools/nextjs-boundary-tools.js.map +1 -0
- package/dist/tools/nextjs-component-readers.d.ts +101 -0
- package/dist/tools/nextjs-component-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-component-readers.js +287 -0
- package/dist/tools/nextjs-component-readers.js.map +1 -0
- package/dist/tools/nextjs-component-tools.d.ts +51 -0
- package/dist/tools/nextjs-component-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-component-tools.js +212 -0
- package/dist/tools/nextjs-component-tools.js.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts +42 -0
- package/dist/tools/nextjs-data-flow-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-data-flow-tools.js +158 -0
- package/dist/tools/nextjs-data-flow-tools.js.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts +60 -0
- package/dist/tools/nextjs-framework-audit-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-framework-audit-tools.js +394 -0
- package/dist/tools/nextjs-framework-audit-tools.js.map +1 -0
- package/dist/tools/nextjs-link-tools.d.ts +41 -0
- package/dist/tools/nextjs-link-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-link-tools.js +157 -0
- package/dist/tools/nextjs-link-tools.js.map +1 -0
- package/dist/tools/nextjs-metadata-tools.d.ts +74 -0
- package/dist/tools/nextjs-metadata-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-metadata-tools.js +252 -0
- package/dist/tools/nextjs-metadata-tools.js.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts +41 -0
- package/dist/tools/nextjs-middleware-coverage-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js +88 -0
- package/dist/tools/nextjs-middleware-coverage-tools.js.map +1 -0
- package/dist/tools/nextjs-route-readers.d.ts +81 -0
- package/dist/tools/nextjs-route-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-route-readers.js +340 -0
- package/dist/tools/nextjs-route-readers.js.map +1 -0
- package/dist/tools/nextjs-route-tools.d.ts +36 -0
- package/dist/tools/nextjs-route-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-route-tools.js +175 -0
- package/dist/tools/nextjs-route-tools.js.map +1 -0
- package/dist/tools/nextjs-security-readers.d.ts +22 -0
- package/dist/tools/nextjs-security-readers.d.ts.map +1 -0
- package/dist/tools/nextjs-security-readers.js +318 -0
- package/dist/tools/nextjs-security-readers.js.map +1 -0
- package/dist/tools/nextjs-security-scoring.d.ts +15 -0
- package/dist/tools/nextjs-security-scoring.d.ts.map +1 -0
- package/dist/tools/nextjs-security-scoring.js +65 -0
- package/dist/tools/nextjs-security-scoring.js.map +1 -0
- package/dist/tools/nextjs-security-tools.d.ts +75 -0
- package/dist/tools/nextjs-security-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-security-tools.js +153 -0
- package/dist/tools/nextjs-security-tools.js.map +1 -0
- package/dist/tools/nextjs-tools.d.ts +15 -0
- package/dist/tools/nextjs-tools.d.ts.map +1 -0
- package/dist/tools/nextjs-tools.js +15 -0
- package/dist/tools/nextjs-tools.js.map +1 -0
- package/dist/tools/outline-tools.d.ts.map +1 -1
- package/dist/tools/outline-tools.js +20 -0
- package/dist/tools/outline-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts +8 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -1
- package/dist/tools/pattern-tools.js +651 -3
- package/dist/tools/pattern-tools.js.map +1 -1
- package/dist/tools/perf-tools.d.ts +32 -0
- package/dist/tools/perf-tools.d.ts.map +1 -0
- package/dist/tools/perf-tools.js +227 -0
- package/dist/tools/perf-tools.js.map +1 -0
- package/dist/tools/php-tools.d.ts +185 -0
- package/dist/tools/php-tools.d.ts.map +1 -0
- package/dist/tools/php-tools.js +645 -0
- package/dist/tools/php-tools.js.map +1 -0
- package/dist/tools/plan-turn-tools.d.ts +89 -0
- package/dist/tools/plan-turn-tools.d.ts.map +1 -0
- package/dist/tools/plan-turn-tools.js +508 -0
- package/dist/tools/plan-turn-tools.js.map +1 -0
- package/dist/tools/prisma-schema-tools.d.ts +44 -0
- package/dist/tools/prisma-schema-tools.d.ts.map +1 -0
- package/dist/tools/prisma-schema-tools.js +358 -0
- package/dist/tools/prisma-schema-tools.js.map +1 -0
- package/dist/tools/project-tools.d.ts +116 -7
- package/dist/tools/project-tools.d.ts.map +1 -1
- package/dist/tools/project-tools.js +595 -218
- package/dist/tools/project-tools.js.map +1 -1
- package/dist/tools/pydantic-models.d.ts +46 -0
- package/dist/tools/pydantic-models.d.ts.map +1 -0
- package/dist/tools/pydantic-models.js +249 -0
- package/dist/tools/pydantic-models.js.map +1 -0
- package/dist/tools/pyproject-tools.d.ts +23 -0
- package/dist/tools/pyproject-tools.d.ts.map +1 -0
- package/dist/tools/pyproject-tools.js +133 -0
- package/dist/tools/pyproject-tools.js.map +1 -0
- package/dist/tools/pytest-tools.d.ts +20 -0
- package/dist/tools/pytest-tools.d.ts.map +1 -0
- package/dist/tools/pytest-tools.js +106 -0
- package/dist/tools/pytest-tools.js.map +1 -0
- package/dist/tools/python-audit.d.ts +40 -0
- package/dist/tools/python-audit.d.ts.map +1 -0
- package/dist/tools/python-audit.js +244 -0
- package/dist/tools/python-audit.js.map +1 -0
- package/dist/tools/python-callers.d.ts +28 -0
- package/dist/tools/python-callers.d.ts.map +1 -0
- package/dist/tools/python-callers.js +110 -0
- package/dist/tools/python-callers.js.map +1 -0
- package/dist/tools/python-circular-imports.d.ts +19 -0
- package/dist/tools/python-circular-imports.d.ts.map +1 -0
- package/dist/tools/python-circular-imports.js +126 -0
- package/dist/tools/python-circular-imports.js.map +1 -0
- package/dist/tools/python-constants-tools.d.ts +44 -0
- package/dist/tools/python-constants-tools.d.ts.map +1 -0
- package/dist/tools/python-constants-tools.js +525 -0
- package/dist/tools/python-constants-tools.js.map +1 -0
- package/dist/tools/python-deps-analyzer.d.ts +46 -0
- package/dist/tools/python-deps-analyzer.d.ts.map +1 -0
- package/dist/tools/python-deps-analyzer.js +227 -0
- package/dist/tools/python-deps-analyzer.js.map +1 -0
- package/dist/tools/query-tools.d.ts +23 -0
- package/dist/tools/query-tools.d.ts.map +1 -0
- package/dist/tools/query-tools.js +256 -0
- package/dist/tools/query-tools.js.map +1 -0
- package/dist/tools/react-tools.d.ts +263 -0
- package/dist/tools/react-tools.d.ts.map +1 -0
- package/dist/tools/react-tools.js +839 -0
- package/dist/tools/react-tools.js.map +1 -0
- package/dist/tools/report-tools.js +47 -0
- package/dist/tools/report-tools.js.map +1 -1
- package/dist/tools/review-diff-tools.d.ts +5 -4
- package/dist/tools/review-diff-tools.d.ts.map +1 -1
- package/dist/tools/review-diff-tools.js +157 -66
- package/dist/tools/review-diff-tools.js.map +1 -1
- package/dist/tools/room-tools.d.ts +36 -0
- package/dist/tools/room-tools.d.ts.map +1 -0
- package/dist/tools/room-tools.js +147 -0
- package/dist/tools/room-tools.js.map +1 -0
- package/dist/tools/route-tools.d.ts +27 -1
- package/dist/tools/route-tools.d.ts.map +1 -1
- package/dist/tools/route-tools.js +744 -18
- package/dist/tools/route-tools.js.map +1 -1
- package/dist/tools/ruff-tools.d.ts +32 -0
- package/dist/tools/ruff-tools.d.ts.map +1 -0
- package/dist/tools/ruff-tools.js +114 -0
- package/dist/tools/ruff-tools.js.map +1 -0
- package/dist/tools/search-ranker.d.ts.map +1 -1
- package/dist/tools/search-ranker.js +7 -0
- package/dist/tools/search-ranker.js.map +1 -1
- package/dist/tools/search-tools.d.ts +3 -2
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +16 -3
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/serialization-tools.d.ts +24 -0
- package/dist/tools/serialization-tools.d.ts.map +1 -0
- package/dist/tools/serialization-tools.js +156 -0
- package/dist/tools/serialization-tools.js.map +1 -0
- package/dist/tools/sql-tools.d.ts +274 -0
- package/dist/tools/sql-tools.d.ts.map +1 -0
- package/dist/tools/sql-tools.js +1160 -0
- package/dist/tools/sql-tools.js.map +1 -0
- package/dist/tools/status-tools.d.ts +10 -0
- package/dist/tools/status-tools.d.ts.map +1 -0
- package/dist/tools/status-tools.js +32 -0
- package/dist/tools/status-tools.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +19 -0
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +75 -4
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/tools/taint-tools.d.ts +43 -0
- package/dist/tools/taint-tools.d.ts.map +1 -0
- package/dist/tools/taint-tools.js +922 -0
- package/dist/tools/taint-tools.js.map +1 -0
- package/dist/tools/test-impact-tools.d.ts +29 -0
- package/dist/tools/test-impact-tools.d.ts.map +1 -0
- package/dist/tools/test-impact-tools.js +156 -0
- package/dist/tools/test-impact-tools.js.map +1 -0
- package/dist/tools/typecheck-tools.d.ts +39 -0
- package/dist/tools/typecheck-tools.d.ts.map +1 -0
- package/dist/tools/typecheck-tools.js +191 -0
- package/dist/tools/typecheck-tools.js.map +1 -0
- package/dist/tools/wiring-tools.d.ts +19 -0
- package/dist/tools/wiring-tools.d.ts.map +1 -0
- package/dist/tools/wiring-tools.js +147 -0
- package/dist/tools/wiring-tools.js.map +1 -0
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/framework-detect.d.ts +18 -2
- package/dist/utils/framework-detect.d.ts.map +1 -1
- package/dist/utils/framework-detect.js +150 -3
- package/dist/utils/framework-detect.js.map +1 -1
- package/dist/utils/import-graph.d.ts +42 -0
- package/dist/utils/import-graph.d.ts.map +1 -1
- package/dist/utils/import-graph.js +248 -9
- package/dist/utils/import-graph.js.map +1 -1
- package/dist/utils/language-detect.d.ts +21 -0
- package/dist/utils/language-detect.d.ts.map +1 -0
- package/dist/utils/language-detect.js +183 -0
- package/dist/utils/language-detect.js.map +1 -0
- package/dist/utils/nextjs-ast-readers.d.ts +44 -0
- package/dist/utils/nextjs-ast-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-ast-readers.js +341 -0
- package/dist/utils/nextjs-ast-readers.js.map +1 -0
- package/dist/utils/nextjs-audit-cache.d.ts +51 -0
- package/dist/utils/nextjs-audit-cache.d.ts.map +1 -0
- package/dist/utils/nextjs-audit-cache.js +116 -0
- package/dist/utils/nextjs-audit-cache.js.map +1 -0
- package/dist/utils/nextjs-metadata-readers.d.ts +65 -0
- package/dist/utils/nextjs-metadata-readers.d.ts.map +1 -0
- package/dist/utils/nextjs-metadata-readers.js +447 -0
- package/dist/utils/nextjs-metadata-readers.js.map +1 -0
- package/dist/utils/nextjs.d.ts +42 -0
- package/dist/utils/nextjs.d.ts.map +1 -0
- package/dist/utils/nextjs.js +284 -0
- package/dist/utils/nextjs.js.map +1 -0
- package/dist/utils/python-import-resolver.d.ts +42 -0
- package/dist/utils/python-import-resolver.d.ts.map +1 -0
- package/dist/utils/python-import-resolver.js +101 -0
- package/dist/utils/python-import-resolver.js.map +1 -0
- package/dist/utils/python-imports.d.ts +28 -0
- package/dist/utils/python-imports.d.ts.map +1 -0
- package/dist/utils/python-imports.js +117 -0
- package/dist/utils/python-imports.js.map +1 -0
- package/dist/utils/react-alias.d.ts +15 -0
- package/dist/utils/react-alias.d.ts.map +1 -0
- package/dist/utils/react-alias.js +31 -0
- package/dist/utils/react-alias.js.map +1 -0
- package/dist/utils/test-file.d.ts.map +1 -1
- package/dist/utils/test-file.js +7 -0
- package/dist/utils/test-file.js.map +1 -1
- package/dist/utils/walk.d.ts +22 -0
- package/dist/utils/walk.d.ts.map +1 -1
- package/dist/utils/walk.js +70 -2
- package/dist/utils/walk.js.map +1 -1
- package/package.json +4 -3
- package/rules/codesift.md +71 -5
- package/rules/codesift.mdc +71 -5
- package/rules/codex.md +71 -5
- package/rules/gemini.md +71 -5
- package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
- package/src/parser/languages/tree-sitter-kotlin.wasm +0 -0
- package/src/parser/languages/tree-sitter-php.wasm +0 -0
- package/src/parser/languages/tree-sitter-php_only.wasm +0 -0
- package/src/parser/languages/tree-sitter-python.wasm +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CodeSift -- Token-efficient code intelligence for AI agents
|
|
2
2
|
|
|
3
|
-
CodeSift indexes your codebase with tree-sitter AST parsing and gives AI agents
|
|
3
|
+
CodeSift indexes your codebase with tree-sitter AST parsing and gives AI agents 146 MCP tools (51 core + 95 discoverable) via CLI or MCP server. It uses 61-95% fewer tokens than raw grep/Read workflows on typical code navigation tasks.
|
|
4
4
|
|
|
5
5
|
**Works with:** Claude Code, Cursor, Codex, Gemini CLI, Zed, Aider, Continue — any MCP client.
|
|
6
6
|
|
|
@@ -17,6 +17,7 @@ codesift setup claude # Claude Code — config + rules + hooks
|
|
|
17
17
|
codesift setup codex # Codex CLI — config + AGENTS.md rules
|
|
18
18
|
codesift setup cursor # Cursor IDE — config + .cursor/rules
|
|
19
19
|
codesift setup gemini # Gemini CLI — config + GEMINI.md rules
|
|
20
|
+
codesift setup antigravity # Google Antigravity — config only
|
|
20
21
|
codesift setup all # All platforms at once
|
|
21
22
|
```
|
|
22
23
|
|
|
@@ -26,7 +27,7 @@ codesift setup all # All platforms at once
|
|
|
26
27
|
|-----------|-------------|---------|
|
|
27
28
|
| **MCP config** | Registers codesift-mcp server | (required) |
|
|
28
29
|
| **Rules file** | Tool mapping, hints, ALWAYS/NEVER rules for your AI agent | `--no-rules` |
|
|
29
|
-
| **Hooks** (
|
|
30
|
+
| **Hooks** (where supported) | Auto-index after Edit/Write, redirect large Read/Bash flows to CodeSift | `--no-hooks` |
|
|
30
31
|
|
|
31
32
|
Additionally, every MCP client receives ~800 tokens of compact guidance automatically via the MCP `instructions` field — zero setup needed.
|
|
32
33
|
|
|
@@ -149,7 +150,7 @@ codesift retrieve local/my-project \
|
|
|
149
150
|
| `codesift impact <repo> --since <ref>` | Blast radius of git changes + affected tests + risk scores per file |
|
|
150
151
|
| `codesift context <repo> <query>` | Assemble relevant code context. Supports `--level L0\|L1\|L2\|L3` for compression. |
|
|
151
152
|
| `codesift knowledge-map <repo>` | Module dependency map with circular dependency detection |
|
|
152
|
-
| `codesift trace-route <repo> <path>` | Trace HTTP route → handler → service → DB calls (NestJS/Next.js/Express) |
|
|
153
|
+
| `codesift trace-route <repo> <path>` | Trace HTTP route → handler → service → DB calls (NestJS/Next.js/Express/Ktor/Spring Boot Kotlin) |
|
|
153
154
|
| `codesift communities <repo>` | Louvain community detection — discover code clusters from import graph |
|
|
154
155
|
|
|
155
156
|
### Code analysis
|
|
@@ -160,7 +161,7 @@ codesift retrieve local/my-project \
|
|
|
160
161
|
| `codesift complexity <repo>` | Cyclomatic complexity + nesting depth per function |
|
|
161
162
|
| `codesift clones <repo>` | Copy-paste detection (hash bucketing + line similarity) |
|
|
162
163
|
| `codesift hotspots <repo>` | Git churn x complexity = risk-ranked file list |
|
|
163
|
-
| `codesift patterns <repo> <pattern>` | Structural anti-pattern search (
|
|
164
|
+
| `codesift patterns <repo> <pattern>` | Structural anti-pattern search (33 built-in + custom regex) |
|
|
164
165
|
|
|
165
166
|
### Cross-repo
|
|
166
167
|
|
|
@@ -185,28 +186,32 @@ codesift retrieve local/my-project \
|
|
|
185
186
|
| `codesift generate-claude-md <repo>` | Generate CLAUDE.md project summary |
|
|
186
187
|
| `codesift list-patterns` | List all built-in anti-pattern names |
|
|
187
188
|
|
|
188
|
-
## MCP tools (
|
|
189
|
+
## MCP tools (146 total — 51 core + 95 discoverable)
|
|
189
190
|
|
|
190
|
-
When running as an MCP server, CodeSift exposes
|
|
191
|
+
When running as an MCP server, CodeSift exposes 51 core tools directly. The remaining 95 niche tools are discoverable via `discover_tools` and `describe_tools`, or via `plan_turn` which routes a natural-language task to the best-fit tools and auto-reveals any hidden ones.
|
|
191
192
|
|
|
192
193
|
| Category | Tools |
|
|
193
194
|
|----------|-------|
|
|
194
195
|
| **Indexing** | `index_folder` (mtime skip, dirty propagation), `index_repo`, `index_file` (single-file reindex, 9ms), `list_repos`, `invalidate_cache` |
|
|
195
|
-
| **Search** | `search_symbols` (detail_level: compact/standard/full, token_budget), `search_text` (auto_group, group_by_file) |
|
|
196
|
-
| **Outline** | `get_file_tree`, `get_file_outline`, `get_repo_outline`, `suggest_queries` |
|
|
197
|
-
| **Symbol retrieval** | `get_symbol`, `get_symbols`, `find_and_show`, `get_context_bundle` |
|
|
198
|
-
| **References & graph** | `find_references` (LSP-enhanced), `trace_call_chain
|
|
196
|
+
| **Search** | `search_symbols` (detail_level: compact/standard/full, token_budget, kind filter incl. `component`/`hook`), `search_text` (auto_group, group_by_file, ranked) |
|
|
197
|
+
| **Outline** | `get_file_tree`, `get_file_outline`, `get_repo_outline`, `suggest_queries` (React-aware: suggests component/hook queries when detected) |
|
|
198
|
+
| **Symbol retrieval** | `get_symbol`, `get_symbols`, `find_and_show`, `get_context_bundle` (React enrichment: hooks_used, child_components, parent_components, wrapper pattern) |
|
|
199
|
+
| **References & graph** | `find_references` (LSP-enhanced), `trace_call_chain` (JSX-aware: `<Component>` = call edge; `filter_react_hooks` option), `impact_analysis`, `trace_route` (HTTP route → handler → DB — NestJS/Next.js/Express/Ktor/Spring Boot/Yii2/Laravel) |
|
|
200
|
+
| **React** | `trace_component_tree` (BFS JSX composition tree with Mermaid output), `analyze_hooks` (hook inventory, Rule of Hooks violations, custom hook composition), `analyze_renders` (re-render risk: inline props, missing memo, children-aware threshold, markdown output), `analyze_context_graph` (createContext → Provider → useContext consumer mapping) |
|
|
199
201
|
| **LSP bridge** | `go_to_definition` (LSP + index fallback), `get_type_info` (hover), `rename_symbol` (cross-file type-safe rename) |
|
|
200
202
|
| **Context & knowledge** | `assemble_context` (level: L0/L1/L2/L3), `get_knowledge_map`, `detect_communities` (Louvain) |
|
|
201
203
|
| **Conversation search** | `index_conversations`, `search_conversations`, `find_conversations_for_symbol` |
|
|
202
204
|
| **Diff** | `diff_outline`, `changed_symbols` |
|
|
203
205
|
| **Batch retrieval** | `codebase_retrieval` (batch multiple sub-queries with shared token budget, incl. `type: "conversation"`) |
|
|
204
206
|
| **Security** | `scan_secrets` (AST-aware secret detection, ~1,100 rules, masked output) |
|
|
205
|
-
| **
|
|
206
|
-
| **
|
|
207
|
+
| **PHP / Yii2** | `resolve_php_namespace` (PSR-4 FQCN→file), `trace_php_event` (event→listener chain), `find_php_views` (render→view mapping), `resolve_php_service` (Yii::\$app→concrete class), `php_security_scan` (compound: SQL injection, XSS, eval, exec, unserialize), `php_project_audit` (meta-tool — includes ActiveRecord analysis, N+1 detection, god-model detection via `checks=` parameter) |
|
|
208
|
+
| **Analysis** | `find_dead_code` (framework-aware incl. React/Next.js route entry points), `analyze_complexity` (React: hook_count, state_count, effect_count, jsx_depth), `find_clones`, `analyze_hotspots`, `search_patterns` (33 built-in: JS/TS ×9, React ×20, Kotlin ×6, PHP ×4), `list_patterns`, `frequency_analysis` (AST subtree clustering), `find_perf_hotspots` (6 perf anti-patterns: unbounded queries, sync I/O, N+1 loops, unbounded parallel, missing pagination, expensive recompute), `explain_query` (Prisma→SQL with EXPLAIN ANALYZE), `audit_scan` (5-gate composite: dead code + clones + patterns + complexity + hotspots) |
|
|
209
|
+
| **Architecture** | `classify_roles` (symbol role classification via call graph), `check_boundaries` (architecture boundary enforcement), `ast_query` (structural grep via tree-sitter), `fan_in_fan_out` (import graph coupling: most-imported, most-dependent, hub files, coupling score 0-100), `co_change_analysis` (temporal coupling from git history: Jaccard similarity, cluster detection), `architecture_summary` (one-call composite: stack + communities + coupling + circular deps + LOC + entry points, Mermaid output) |
|
|
207
210
|
| **Cross-repo** | `cross_repo_search`, `cross_repo_refs` |
|
|
208
211
|
| **Report** | `generate_report` (standalone HTML with complexity, dead code, hotspots, communities) |
|
|
209
212
|
| **Tool discovery** | `discover_tools` (keyword search across hidden tools), `describe_tools` (full schema on demand, optional `reveal`) |
|
|
213
|
+
| **Discovery** | `plan_turn(query=...)` — route natural-language task description to best-fit tools, symbols, and files; returns ranked recommendations with confidence scores, reveal_required hints, and gap analysis |
|
|
214
|
+
| **Meta** | `index_status` (check if repo is indexed: file/symbol counts, language breakdown, text_stub languages), `analyze_project` (stack + conventions detection), `get_extractor_versions` (parser language support) |
|
|
210
215
|
| **Utility** | `generate_claude_md` (architecture + behavioral guidance), `usage_stats` (with token savings tracking) |
|
|
211
216
|
|
|
212
217
|
### Conversation search
|
|
@@ -268,6 +273,51 @@ scan_secrets(repo="local/my-project", file_pattern="src/config/**")
|
|
|
268
273
|
- Severity mapping: cloud keys (AWS, GCP) = critical, API keys (OpenAI, GitHub) = high
|
|
269
274
|
- Inline warnings in `index_file` responses when secrets detected
|
|
270
275
|
|
|
276
|
+
### PHP / Yii2 support
|
|
277
|
+
|
|
278
|
+
Full PHP code intelligence with first-on-market Yii2 framework awareness. No other general-purpose MCP tool provides static Yii2 intelligence.
|
|
279
|
+
|
|
280
|
+
**Symbol extraction** (tree-sitter-based):
|
|
281
|
+
- Namespaces, classes, interfaces, traits, enums (PHP 8.1), functions, methods, properties, constants
|
|
282
|
+
- PHPDoc extraction, signature extraction with type hints and return types
|
|
283
|
+
- PHPUnit test detection: `TestCase` subclass = `test_suite`, `test*` methods = `test_case`, `setUp`/`tearDown` = `test_hook`
|
|
284
|
+
|
|
285
|
+
**Yii2 framework awareness:**
|
|
286
|
+
- Convention routing: `trace_route("site/index")` resolves to `SiteController::actionIndex()` (incl. module nesting)
|
|
287
|
+
- `analyze_project` detects Yii2 via `composer.json` and extracts: controllers, models, modules, widgets, behaviors, components, assets, config files
|
|
288
|
+
- 6 PHP-specific tools: namespace resolution (PSR-4), event/listener tracing, view mapping, service locator resolution, security scanning, project audit (meta-tool with ActiveRecord analysis, N+1 detection, god-model detection via `checks=` parameter)
|
|
289
|
+
- **Auto-load**: PHP tools are automatically enabled when `composer.json` is detected at CWD — no need to call `discover_tools`/`describe_tools` first
|
|
290
|
+
|
|
291
|
+
**Laravel support:**
|
|
292
|
+
- Route tracing via `Route::get('/path', [Controller::class, 'method'])` pattern matching
|
|
293
|
+
- Convention extraction: controllers, middleware, models, routes, migrations
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Trace a Yii2 route
|
|
297
|
+
trace_route(repo, path="site/about")
|
|
298
|
+
|
|
299
|
+
# Analyze ActiveRecord models (via php_project_audit)
|
|
300
|
+
php_project_audit(repo, checks=["activerecord"], model_name="User")
|
|
301
|
+
|
|
302
|
+
# PHP security scan (8 parallel checks)
|
|
303
|
+
php_security_scan(repo)
|
|
304
|
+
|
|
305
|
+
# Resolve PSR-4 namespace to file
|
|
306
|
+
resolve_php_namespace(repo, class_name="App\\Models\\User")
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**LSP bridge:** Intelephense configured for go-to-definition, find-references, type-info, and rename across PHP files.
|
|
310
|
+
|
|
311
|
+
### Next.js intelligence
|
|
312
|
+
|
|
313
|
+
Deep Next.js static analysis — 3 core tools covering routing, rendering, security, SEO, and architecture:
|
|
314
|
+
|
|
315
|
+
- `framework_audit` — one-call meta-audit: runs route map + metadata + server actions + boundary + data flow + middleware + component classification checks. Returns composite score with prioritized findings. Use `checks=` parameter to run individual checks (e.g., `checks=["server-actions"]`, `checks=["boundary"]`, `checks=["link-integrity"]`, `checks=["data-flow"]`, `checks=["middleware"]`, `checks=["components"]`, `checks=["api-contract"]`)
|
|
316
|
+
- `nextjs_route_map` — maps all App Router and Pages Router routes with rendering strategy (SSG/SSR/ISR/PPR), dynamic params, route groups, parallel routes, and intercepting routes
|
|
317
|
+
- `nextjs_metadata_audit` — detects missing/incomplete metadata exports, OpenGraph gaps, missing robots/sitemap, and SEO anti-patterns across all routes
|
|
318
|
+
|
|
319
|
+
**Auto-load**: Next.js tools are automatically enabled when `next` is detected in package.json — no manual discovery needed.
|
|
320
|
+
|
|
271
321
|
## When to use CodeSift vs grep
|
|
272
322
|
|
|
273
323
|
| Task | Best tool | Why |
|
|
@@ -291,11 +341,12 @@ scan_secrets(repo="local/my-project", file_pattern="src/config/**")
|
|
|
291
341
|
| Rename across files | `rename_symbol` | LSP type-safe rename in all files at once |
|
|
292
342
|
| Detect hardcoded secrets | `scan_secrets` | ~1,100 rules, AST-aware, masked output, auto-cached |
|
|
293
343
|
| Ranked text search | `search_text(ranked=true)` | Classifies hits by function, saves follow-up get_symbol calls |
|
|
294
|
-
| Find hidden tools | `discover_tools` + `describe_tools` |
|
|
344
|
+
| Find hidden tools | `discover_tools` + `describe_tools` | 95 tools hidden by default — search by keyword, get full schema |
|
|
345
|
+
| Route task → tools | `plan_turn(query="...")` | Natural-language router: ranked tool/symbol/file recommendations with auto-reveal |
|
|
295
346
|
| Find ALL occurrences | `grep -rn` | Exhaustive, no top_k cap |
|
|
296
347
|
| Count matches | `grep -c` | Simple exact count |
|
|
297
348
|
|
|
298
|
-
## Built-in anti-patterns
|
|
349
|
+
## Built-in anti-patterns (33 total)
|
|
299
350
|
|
|
300
351
|
The `patterns` command searches for common code quality issues across your codebase:
|
|
301
352
|
|
|
@@ -305,17 +356,76 @@ The `patterns` command searches for common code quality issues across your codeb
|
|
|
305
356
|
| `any-type` | `: any` or `as any` — lost type safety |
|
|
306
357
|
| `console-log` | `console.log/debug/info` in production code |
|
|
307
358
|
| `await-in-loop` | Sequential `await` inside `for` loops |
|
|
308
|
-
| `useEffect-no-cleanup` | React useEffect without cleanup return |
|
|
309
359
|
| `no-error-type` | Catch without `instanceof Error` narrowing |
|
|
310
360
|
| `toctou` | Read-then-write without atomic operation |
|
|
311
361
|
| `unbounded-findmany` | Prisma `findMany` without `take` limit |
|
|
312
362
|
| `scaffolding` | TODO/FIXME/HACK markers, Phase/Step stubs, "not implemented" throws |
|
|
363
|
+
| `runblocking-in-coroutine` | Kotlin: `runBlocking` inside suspend function — deadlock risk |
|
|
364
|
+
| `globalscope-launch` | Kotlin: `GlobalScope.launch/async` — lifecycle leak |
|
|
365
|
+
| `data-class-mutable` | Kotlin: `data class` with `var` property — breaks hashCode contract |
|
|
366
|
+
| `lateinit-no-check` | Kotlin: `lateinit var` without `isInitialized` check |
|
|
367
|
+
| `empty-when-branch` | Kotlin: empty `when` branch — swallowed case |
|
|
368
|
+
| `mutable-shared-state` | Kotlin: mutable `var` inside `object`/`companion` — thread-unsafe |
|
|
369
|
+
| **React (14 + 6 below)** | |
|
|
370
|
+
| `useEffect-no-cleanup` | useEffect without cleanup return — memory leak |
|
|
371
|
+
| `hook-in-condition` | Hook inside if/for/while/switch — Rule of Hooks violation |
|
|
372
|
+
| `useEffect-async` | async function directly in useEffect |
|
|
373
|
+
| `useEffect-object-dep` | Object/array literal in dep array — infinite re-render |
|
|
374
|
+
| `missing-display-name` | React.memo/forwardRef without displayName |
|
|
375
|
+
| `index-as-key` | Array index used as React key — incorrect reconciliation |
|
|
376
|
+
| `inline-handler` | Arrow function in JSX event handler — memoization killer |
|
|
377
|
+
| `conditional-render-hook` | Hook called after early return — Rule of Hooks violation |
|
|
378
|
+
| `dangerously-set-html` | dangerouslySetInnerHTML — XSS risk |
|
|
379
|
+
| `direct-dom-access` | document.getElementById/querySelector — use useRef |
|
|
380
|
+
| `unstable-default-value` | `= []`/`= {}` default in params — new ref every render |
|
|
381
|
+
| `jsx-falsy-and` | `{count && <Comp/>}` renders "0" when count is 0 |
|
|
382
|
+
| `nested-component-def` | Component inside component — remounts every render |
|
|
383
|
+
| `usecallback-no-deps` | useCallback/useMemo without dep array — useless memoization |
|
|
384
|
+
| **React 19 (4)** | |
|
|
385
|
+
| `react19-use-without-suspense` | use(promise) call — verify Suspense boundary |
|
|
386
|
+
| `react19-server-action-not-async` | Non-async function in `"use server"` file |
|
|
387
|
+
| `react19-form-action-non-function` | `<form action="url">` instead of action={fn} |
|
|
388
|
+
| `react19-useoptimistic-no-transition` | useOptimistic without useTransition pair |
|
|
389
|
+
| **RSC (2)** | |
|
|
390
|
+
| `rsc-non-serializable-prop` | Function passed as prop across RSC boundary |
|
|
391
|
+
| `rsc-date-prop` | Date object in JSX prop — loses prototype across boundary |
|
|
392
|
+
| **PHP (7)** | |
|
|
393
|
+
| `sql-injection-php` | User input flowing into SQL query |
|
|
394
|
+
| `xss-php` | Unescaped user input echoed to output |
|
|
395
|
+
| `eval-php` / `exec-php` | eval/shell execution — injection risk |
|
|
396
|
+
| `unserialize-php` | `unserialize()` on user input |
|
|
397
|
+
| `unescaped-yii-view` | Yii2 view without `Html::encode()` |
|
|
398
|
+
| `raw-query-yii` | Yii2 createCommand with string interpolation |
|
|
313
399
|
|
|
314
400
|
Custom regex is also supported: `codesift patterns local/project "Promise<.*any>"`.
|
|
315
401
|
|
|
402
|
+
### Performance anti-patterns (`find_perf_hotspots`)
|
|
403
|
+
|
|
404
|
+
A separate tool scans for performance-specific issues with balanced-brace loop body extraction (not just regex):
|
|
405
|
+
|
|
406
|
+
| Pattern | What it finds | Severity |
|
|
407
|
+
|---------|---------------|----------|
|
|
408
|
+
| `unbounded-query` | `findMany`/`find` without `take`/`limit` | high |
|
|
409
|
+
| `sync-in-handler` | `readFileSync`/`execSync` in route/handler/controller files | high |
|
|
410
|
+
| `n-plus-one` | DB/fetch call inside `for`/`while` loop body | high |
|
|
411
|
+
| `unbounded-parallel` | `Promise.all(arr.map(...))` without concurrency control | medium |
|
|
412
|
+
| `missing-pagination` | API response from unbounded list query | medium |
|
|
413
|
+
| `expensive-recompute` | Same method called 2+ times in loop body (excludes common methods) | low |
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# Scan all patterns
|
|
417
|
+
find_perf_hotspots(repo)
|
|
418
|
+
|
|
419
|
+
# Only N+1 and unbounded queries
|
|
420
|
+
find_perf_hotspots(repo, patterns="n-plus-one,unbounded-query")
|
|
421
|
+
|
|
422
|
+
# Scope to API directory
|
|
423
|
+
find_perf_hotspots(repo, file_pattern="src/api")
|
|
424
|
+
```
|
|
425
|
+
|
|
316
426
|
## MCP server setup
|
|
317
427
|
|
|
318
|
-
CodeSift runs as an [MCP](https://modelcontextprotocol.io) server, exposing
|
|
428
|
+
CodeSift runs as an [MCP](https://modelcontextprotocol.io) server, exposing 146 tools to AI agents (51 core + 95 discoverable). The fastest setup method is `codesift setup <platform>` which handles everything automatically. Manual configuration is also supported:
|
|
319
429
|
|
|
320
430
|
### OpenAI Codex
|
|
321
431
|
|
|
@@ -413,13 +523,28 @@ You can also use the Gemini CLI:
|
|
|
413
523
|
gemini mcp add codesift -s user npx -- -y codesift-mcp
|
|
414
524
|
```
|
|
415
525
|
|
|
526
|
+
### Google Antigravity
|
|
527
|
+
|
|
528
|
+
Add this to `~/.gemini/antigravity/mcp_config.json`:
|
|
529
|
+
|
|
530
|
+
```json
|
|
531
|
+
{
|
|
532
|
+
"mcpServers": {
|
|
533
|
+
"codesift": {
|
|
534
|
+
"command": "npx",
|
|
535
|
+
"args": ["-y", "codesift-mcp"]
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
```
|
|
540
|
+
|
|
416
541
|
### All platforms at once
|
|
417
542
|
|
|
418
543
|
```bash
|
|
419
544
|
codesift setup all
|
|
420
545
|
```
|
|
421
546
|
|
|
422
|
-
This configures Codex, Claude Code, Cursor,
|
|
547
|
+
This configures Codex, Claude Code, Cursor, Gemini CLI, and Antigravity in one command. Safe to run multiple times — skips platforms that are already configured.
|
|
423
548
|
|
|
424
549
|
## Semantic search
|
|
425
550
|
|
|
@@ -478,7 +603,7 @@ All configuration is via environment variables.
|
|
|
478
603
|
|
|
479
604
|
7. **Agent onboarding** -- MCP `instructions` field sends ~800 tokens of guidance (tool discovery, hints, ALWAYS/NEVER rules) to every client automatically. `codesift setup` installs full rules files per platform + Claude Code hooks for enforcement.
|
|
480
605
|
|
|
481
|
-
8. **LSP bridge** (optional) -- When a language server is installed (typescript-language-server, pylsp, gopls, rust-analyzer, solargraph, intelephense), CodeSift uses it for type-safe `find_references`, precise `go_to_definition`, `get_type_info` via hover, and cross-file `rename_symbol`. Falls back to tree-sitter/grep when LSP is unavailable. Lazy start + 5 min idle kill — zero overhead when not used.
|
|
606
|
+
8. **LSP bridge** (optional) -- When a language server is installed (typescript-language-server, pylsp, gopls, rust-analyzer, kotlin-language-server, solargraph, intelephense), CodeSift uses it for type-safe `find_references`, precise `go_to_definition`, `get_type_info` via hover, and cross-file `rename_symbol`. Falls back to tree-sitter/grep when LSP is unavailable. Lazy start + 5 min idle kill — zero overhead when not used.
|
|
482
607
|
|
|
483
608
|
## Glob pattern support
|
|
484
609
|
|
|
@@ -490,9 +615,74 @@ File pattern parameters (`file_pattern`) support full glob syntax via [picomatch
|
|
|
490
615
|
- `[!.]*.ts` — character classes
|
|
491
616
|
- `service` — plain substring match (no glob chars)
|
|
492
617
|
|
|
618
|
+
## React workflow with CodeSift
|
|
619
|
+
|
|
620
|
+
CodeSift auto-loads 6 React tools when a React project is detected (package.json with `react` + .tsx/.jsx files). Zero config.
|
|
621
|
+
|
|
622
|
+
### Day 1 — new React codebase (1 command, ~5s)
|
|
623
|
+
|
|
624
|
+
```
|
|
625
|
+
react_quickstart
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
One call returns: component/hook counts, stack (state mgmt, routing, UI lib, form lib, build tool), critical pattern violations, top hooks used, and suggested next queries. Replaces 5+ manual exploration calls.
|
|
629
|
+
|
|
630
|
+
### Daily development
|
|
631
|
+
|
|
632
|
+
```
|
|
633
|
+
analyze_renders("MyComponent") # re-render risk for a specific component
|
|
634
|
+
trace_component_tree("App") # JSX composition hierarchy
|
|
635
|
+
analyze_hooks(component_name="Foo") # hook inventory + Rule of Hooks check
|
|
636
|
+
trace_call_chain("useAuth", filter_react_hooks=true) # hook dependency graph, stdlib filtered
|
|
637
|
+
find_references("UserContext") # where this context is consumed
|
|
638
|
+
analyze_context_graph # all createContext → Provider → useContext flows
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
### PR review
|
|
642
|
+
|
|
643
|
+
```
|
|
644
|
+
review_diff # 10-check composite (React patterns auto-skipped on non-.tsx diffs)
|
|
645
|
+
changed_symbols(since="HEAD~3") # what changed structurally
|
|
646
|
+
search_patterns("hook-in-condition") # Rule of Hooks violations in changed files
|
|
647
|
+
impact_analysis(since="HEAD~3") # blast radius of your changes
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
### CI gates (via `audit_scan` REACT gate + `audit_compiler_readiness`)
|
|
651
|
+
|
|
652
|
+
```
|
|
653
|
+
audit_scan # includes REACT gate: hook-in-condition, useEffect-async,
|
|
654
|
+
# dangerously-set-html, index-as-key, nested-component-def
|
|
655
|
+
audit_compiler_readiness # React Compiler (v1.0) adoption score — flags bailout
|
|
656
|
+
# patterns before migration, counts redundant memo to remove
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Set CI to fail on: any `dangerously-set-html`, any Rule of Hooks violation, any `useEffect-missing-cleanup` in new code.
|
|
660
|
+
|
|
661
|
+
### Common queries — "how do I..."
|
|
662
|
+
|
|
663
|
+
| Question | Command |
|
|
664
|
+
|----------|---------|
|
|
665
|
+
| Find all components | `search_symbols(kind="component")` |
|
|
666
|
+
| Find all custom hooks | `search_symbols(kind="hook")` |
|
|
667
|
+
| Why is my app re-rendering? | `analyze_renders` — ranks components by risk |
|
|
668
|
+
| Is my code React Compiler ready? | `audit_compiler_readiness` — scans 7 bailout patterns |
|
|
669
|
+
| Who uses AuthContext? | `analyze_context_graph` — lists all consumers |
|
|
670
|
+
| Rule of Hooks violations? | `search_patterns("hook-in-condition")` |
|
|
671
|
+
| Memory leaks in useEffect? | `search_patterns("useEffect-missing-cleanup")` |
|
|
672
|
+
| Missing TanStack invalidation? | `search_patterns("tanstack-missing-invalidation")` |
|
|
673
|
+
| Should this class be a function component? | `search_patterns("prefer-function-component")` |
|
|
674
|
+
| XSS risks from dangerouslySetInnerHTML? | `search_patterns("dangerously-set-html")` |
|
|
675
|
+
|
|
493
676
|
## Supported languages
|
|
494
677
|
|
|
495
|
-
TypeScript, JavaScript (JSX/TSX), Python, Go, Rust, Java, Ruby, PHP, Markdown, CSS, Prisma, Astro
|
|
678
|
+
TypeScript, JavaScript (JSX/TSX), Python, Go, Rust, **Kotlin**, Java, Ruby, PHP, Markdown, CSS, Prisma, **Astro**.
|
|
679
|
+
|
|
680
|
+
**React/JSX/TSX** has first-class support across 4 waves + Tier 3 polish: `component` and `hook` SymbolKind values, JSX-aware call graph (all graph tools see `<Component>` usage as call edges), 20 React anti-patterns including multiline `hook-in-condition` and bug-free `nested-component-def` detection, `trace_component_tree` (BFS JSX composition tree), `analyze_hooks` (hook inventory + Rule of Hooks violation detection), `analyze_renders` (re-render risk with children-aware threshold + markdown output), `buildContextGraph` (createContext → Provider → useContext consumer mapping), React complexity metrics (hook_count, state_count, effect_count, jsx_depth), enriched `get_context_bundle` (hooks_used, child_components, parent_components, wrapper pattern incl. forwardRef generics, props_type), `filter_react_hooks` option on `trace_call_chain`, audit_scan REACT gate, React-aware review_diff (skips React patterns on non-.tsx diffs), generate_report React section (component/hook stats, top hooks), React/Next.js/Remix route entry point detection (prevents dead code false positives), shadcn/ui + Tailwind + form library detection in ReactConventions, `@/` alias resolution, RSC boundary detection (`"use client"`/`"use server"`), and build tool detection (Vite, CRA, webpack, Parcel, esbuild, Rspack, Rsbuild, Turbopack). Auto-loaded on React projects (package.json + .tsx files).
|
|
681
|
+
|
|
682
|
+
**Astro** has deep framework intelligence — the first and only static code intelligence for Astro in the MCP ecosystem. 4 dedicated tools: `astro_analyze_islands` (detect all `client:*`/`server:defer` directives, group by framework, track server islands), `astro_hydration_audit` (12 anti-pattern detectors AH01-AH12 with A/B/C/D scoring — catches `client:load` on Astro components, islands in loops, missing framework hints, below-fold eager hydration, and more), `astro_route_map` (file-based routing analysis with dynamic params, route conflicts, rendering mode per page, endpoint method detection), `astro_config_analyze` (tree-sitter AST walker for `astro.config.mjs` — extracts output mode, adapter, integrations, i18n, redirects with `config_resolution` honesty field). Also: 6 Astro anti-patterns in `search_patterns`, Astro-aware `trace_route`, `analyze_project` returns full `astro_conventions`, `.astro` extension normalization in import graph, framework detection for dead-code analysis, `.mdx` file indexing. Template parser (`parseAstroTemplate`) extracts islands, slots, component usages, and directives from HTML template section with balanced-brace tracking, conditional/loop detection, and landmark section awareness.
|
|
683
|
+
|
|
684
|
+
Kotlin support includes full tree-sitter parsing with a dedicated extractor for functions, classes (data/sealed/enum/abstract/annotation), interfaces, objects (singleton + companion), properties (val/var/const), type aliases, extension functions, suspend functions, generics, KDoc comments, and JUnit test detection (@Test, @BeforeEach, @AfterEach, @BeforeAll, @AfterAll). Route tracing supports Ktor DSL and Spring Boot Kotlin. Six Kotlin anti-patterns are built-in.
|
|
685
|
+
| PHP/Yii2 support | src/parser/extractors/php.ts (+ PHPDoc @property/@method synthesis), src/tools/php-tools.ts (6 tools: resolve_php_namespace, trace_php_event, find_php_views, resolve_php_service, php_security_scan, php_project_audit), src/tools/project-tools.ts (Yii2Conventions), src/tools/route-tools.ts (findYii2Handlers, findLaravelHandlers), src/tools/pattern-tools.ts (8 PHP anti-patterns), src/tools/graph-tools.ts (PHP method call detection), src/utils/import-graph.ts (PHP require/include + PSR-4 cross-file edges via resolvePhpNamespace), src/utils/walk.ts (BACKUP_FILE_PATTERNS auto-exclusion), src/parser/parser-manager.ts (error recovery try/catch), src/lsp/lsp-servers.ts (Intelephense), scripts/download-wasm.ts (tree-sitter-php@0.23.12) |
|
|
496
686
|
|
|
497
687
|
## Development
|
|
498
688
|
|
|
@@ -502,7 +692,7 @@ cd codesift-mcp
|
|
|
502
692
|
npm install
|
|
503
693
|
npm run download-wasm # Download tree-sitter WASM grammars
|
|
504
694
|
npm run build # TypeScript compilation
|
|
505
|
-
npm test # Run tests (Vitest,
|
|
695
|
+
npm test # Run tests (Vitest, 2900+ tests)
|
|
506
696
|
npm run test:coverage # Coverage report
|
|
507
697
|
npm run lint # Type check (tsc --noEmit)
|
|
508
698
|
```
|
|
@@ -555,7 +745,7 @@ If using `npx -y codesift-mcp` (the default in MCP config), the latest version i
|
|
|
555
745
|
### Checklist before publishing
|
|
556
746
|
|
|
557
747
|
- [ ] `npm run build` — 0 TypeScript errors
|
|
558
|
-
- [ ] `npm test` —
|
|
748
|
+
- [ ] `npm test` — 2900+ tests pass
|
|
559
749
|
- [ ] `rules/codesift.md` updated if hints or tools changed
|
|
560
750
|
- [ ] `src/instructions.ts` updated if rules changed (compact version)
|
|
561
751
|
- [ ] `README.md` updated if features added
|
|
@@ -570,7 +760,7 @@ BSL-1.1
|
|
|
570
760
|
<!-- Evidence Map
|
|
571
761
|
| Section | Source file(s) |
|
|
572
762
|
|---------|---------------|
|
|
573
|
-
| Tool count (
|
|
763
|
+
| Tool count (146) | src/register-tools.ts (TOOL_DEFINITIONS array, 51 in CORE_TOOL_NAMES, 95 discoverable) |
|
|
574
764
|
| Quick install | package.json:bin (line 8-11) |
|
|
575
765
|
| Quick start | src/cli/commands.ts |
|
|
576
766
|
| Benchmark | benchmarks/ directory, previously measured |
|
|
@@ -585,7 +775,9 @@ BSL-1.1
|
|
|
585
775
|
| Glob support | src/utils/glob.ts (picomatch) |
|
|
586
776
|
| LSP bridge | src/lsp/lsp-client.ts, src/lsp/lsp-manager.ts, src/lsp/lsp-servers.ts, src/lsp/lsp-tools.ts |
|
|
587
777
|
| Secret scanning | src/tools/secret-tools.ts, @sanity-labs/secret-scan (package.json) |
|
|
588
|
-
| Languages | src/parser/parser-manager.ts, src/parser/extractors/ |
|
|
778
|
+
| Languages | src/parser/parser-manager.ts, src/parser/extractors/ (incl. kotlin.ts) |
|
|
779
|
+
| Kotlin support | kotlin.ts, graph-tools KEYWORD_SET, complexity when/?.let, test-file Test.kt, lsp-tools .kt, import-graph FQN, route-tools Ktor/Spring, pattern-tools 6 anti-patterns |
|
|
780
|
+
| PHP/Yii2 support | src/parser/extractors/php.ts (+ PHPDoc @property/@method synthesis), src/tools/php-tools.ts (6 tools: resolve_php_namespace, trace_php_event, find_php_views, resolve_php_service, php_security_scan, php_project_audit), src/tools/project-tools.ts (Yii2Conventions), src/tools/route-tools.ts (findYii2Handlers, findLaravelHandlers), src/tools/pattern-tools.ts (8 PHP anti-patterns), src/tools/graph-tools.ts (PHP method call detection), src/utils/import-graph.ts (PHP require/include + PSR-4 cross-file edges via resolvePhpNamespace), src/utils/walk.ts (BACKUP_FILE_PATTERNS auto-exclusion), src/parser/parser-manager.ts (error recovery try/catch), src/lsp/lsp-servers.ts (Intelephense), scripts/download-wasm.ts (tree-sitter-php@0.23.12) |
|
|
589
781
|
| Development | package.json:scripts (line 19-28) |
|
|
590
782
|
| Git URL | package.json:repository (line 62-64) |
|
|
591
783
|
-->
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HonoCache — in-memory LRU cache for HonoAppModel.
|
|
3
|
+
*
|
|
4
|
+
* Design decisions (spec D4 + adversarial review fixes):
|
|
5
|
+
* - True LRU: delete+set on hit to maintain insertion-order-based recency
|
|
6
|
+
* - Deep freeze on insert: prevent tool-cross-mutation of shared model
|
|
7
|
+
* - Concurrent build protection: in-flight promise deduplication
|
|
8
|
+
* - Path canonicalization in invalidate() for consistent matching
|
|
9
|
+
* - Session-scoped (no persistence): cleared on process exit
|
|
10
|
+
*
|
|
11
|
+
* Spec: docs/specs/2026-04-10-hono-framework-intelligence-spec.md
|
|
12
|
+
* Plan: docs/specs/2026-04-10-hono-framework-intelligence-plan.md (Task 10)
|
|
13
|
+
*/
|
|
14
|
+
import type { HonoAppModel } from "../parser/extractors/hono-model.js";
|
|
15
|
+
interface Extractor {
|
|
16
|
+
parse(entryFile: string): Promise<HonoAppModel>;
|
|
17
|
+
}
|
|
18
|
+
export declare class HonoCache {
|
|
19
|
+
private entries;
|
|
20
|
+
private building;
|
|
21
|
+
private maxEntries;
|
|
22
|
+
constructor(maxEntries?: number);
|
|
23
|
+
/**
|
|
24
|
+
* Get the HonoAppModel for a repo. Builds on miss, returns cached on hit.
|
|
25
|
+
* Concurrent calls during cold start share the same in-flight promise.
|
|
26
|
+
* Returned model is deeply frozen — do NOT attempt to mutate.
|
|
27
|
+
*/
|
|
28
|
+
get(repo: string, entryFile: string, extractor: Extractor): Promise<HonoAppModel>;
|
|
29
|
+
/**
|
|
30
|
+
* Synchronous peek — returns the cached model without building.
|
|
31
|
+
* Returns null on miss. Does NOT reorder LRU (peek is passive).
|
|
32
|
+
* Used by findDeadCode and other hot paths that cannot await.
|
|
33
|
+
*/
|
|
34
|
+
peek(repo: string): HonoAppModel | null;
|
|
35
|
+
/**
|
|
36
|
+
* Invalidate any cache entry whose files_used contains the given path.
|
|
37
|
+
* Canonicalizes via realpath before comparison for symlink/extension safety.
|
|
38
|
+
*/
|
|
39
|
+
invalidate(absolutePath: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Clear cache entries. If repo is provided, only that repo's entries.
|
|
42
|
+
* Otherwise clears all.
|
|
43
|
+
*/
|
|
44
|
+
clear(repo?: string): void;
|
|
45
|
+
private enforceLRU;
|
|
46
|
+
}
|
|
47
|
+
/** Singleton instance for the application. */
|
|
48
|
+
export declare const honoCache: HonoCache;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=hono-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-cache.d.ts","sourceRoot":"","sources":["../../src/cache/hono-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASvE,UAAU,SAAS;IACjB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACjD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,SAAsB;IAI5C;;;;OAIG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,YAAY,CAAC;IAgCxB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAOvC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAYtC;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAY1B,OAAO,CAAC,UAAU;CASnB;AA2BD,8CAA8C;AAC9C,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HonoCache — in-memory LRU cache for HonoAppModel.
|
|
3
|
+
*
|
|
4
|
+
* Design decisions (spec D4 + adversarial review fixes):
|
|
5
|
+
* - True LRU: delete+set on hit to maintain insertion-order-based recency
|
|
6
|
+
* - Deep freeze on insert: prevent tool-cross-mutation of shared model
|
|
7
|
+
* - Concurrent build protection: in-flight promise deduplication
|
|
8
|
+
* - Path canonicalization in invalidate() for consistent matching
|
|
9
|
+
* - Session-scoped (no persistence): cleared on process exit
|
|
10
|
+
*
|
|
11
|
+
* Spec: docs/specs/2026-04-10-hono-framework-intelligence-spec.md
|
|
12
|
+
* Plan: docs/specs/2026-04-10-hono-framework-intelligence-plan.md (Task 10)
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, realpathSync } from "node:fs";
|
|
15
|
+
const DEFAULT_MAX_ENTRIES = 10;
|
|
16
|
+
export class HonoCache {
|
|
17
|
+
entries = new Map();
|
|
18
|
+
building = new Map();
|
|
19
|
+
maxEntries;
|
|
20
|
+
constructor(maxEntries = DEFAULT_MAX_ENTRIES) {
|
|
21
|
+
this.maxEntries = maxEntries;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the HonoAppModel for a repo. Builds on miss, returns cached on hit.
|
|
25
|
+
* Concurrent calls during cold start share the same in-flight promise.
|
|
26
|
+
* Returned model is deeply frozen — do NOT attempt to mutate.
|
|
27
|
+
*/
|
|
28
|
+
async get(repo, entryFile, extractor) {
|
|
29
|
+
const key = `${repo}:${entryFile}`;
|
|
30
|
+
// Cache hit: move to end (true LRU) and return
|
|
31
|
+
const cached = this.entries.get(key);
|
|
32
|
+
if (cached) {
|
|
33
|
+
this.entries.delete(key);
|
|
34
|
+
this.entries.set(key, cached);
|
|
35
|
+
return cached.model;
|
|
36
|
+
}
|
|
37
|
+
// Concurrent build protection: reuse in-flight promise
|
|
38
|
+
const inflight = this.building.get(key);
|
|
39
|
+
if (inflight)
|
|
40
|
+
return inflight;
|
|
41
|
+
// Build new model
|
|
42
|
+
const promise = extractor
|
|
43
|
+
.parse(entryFile)
|
|
44
|
+
.then((model) => {
|
|
45
|
+
const frozen = deepFreeze(model);
|
|
46
|
+
this.entries.set(key, { model: frozen, repo });
|
|
47
|
+
this.enforceLRU();
|
|
48
|
+
return frozen;
|
|
49
|
+
})
|
|
50
|
+
.finally(() => {
|
|
51
|
+
this.building.delete(key);
|
|
52
|
+
});
|
|
53
|
+
this.building.set(key, promise);
|
|
54
|
+
return promise;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Synchronous peek — returns the cached model without building.
|
|
58
|
+
* Returns null on miss. Does NOT reorder LRU (peek is passive).
|
|
59
|
+
* Used by findDeadCode and other hot paths that cannot await.
|
|
60
|
+
*/
|
|
61
|
+
peek(repo) {
|
|
62
|
+
for (const entry of this.entries.values()) {
|
|
63
|
+
if (entry.repo === repo)
|
|
64
|
+
return entry.model;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Invalidate any cache entry whose files_used contains the given path.
|
|
70
|
+
* Canonicalizes via realpath before comparison for symlink/extension safety.
|
|
71
|
+
*/
|
|
72
|
+
invalidate(absolutePath) {
|
|
73
|
+
const canonical = canonicalize(absolutePath);
|
|
74
|
+
for (const [key, entry] of this.entries) {
|
|
75
|
+
const match = entry.model.files_used.some((f) => f === canonical || f === absolutePath);
|
|
76
|
+
if (match) {
|
|
77
|
+
this.entries.delete(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Clear cache entries. If repo is provided, only that repo's entries.
|
|
83
|
+
* Otherwise clears all.
|
|
84
|
+
*/
|
|
85
|
+
clear(repo) {
|
|
86
|
+
if (!repo) {
|
|
87
|
+
this.entries.clear();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
for (const [key, entry] of this.entries) {
|
|
91
|
+
if (entry.repo === repo) {
|
|
92
|
+
this.entries.delete(key);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
enforceLRU() {
|
|
97
|
+
while (this.entries.size > this.maxEntries) {
|
|
98
|
+
// Map.keys() returns in insertion order — first key is LRU
|
|
99
|
+
const oldest = this.entries.keys().next().value;
|
|
100
|
+
if (oldest !== undefined) {
|
|
101
|
+
this.entries.delete(oldest);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function canonicalize(filePath) {
|
|
107
|
+
try {
|
|
108
|
+
if (existsSync(filePath)) {
|
|
109
|
+
return realpathSync.native(filePath);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Fall through
|
|
114
|
+
}
|
|
115
|
+
return filePath;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Recursively freeze an object and all its nested objects/arrays.
|
|
119
|
+
* Prevents tool-cross-mutation when multiple tools share the cached model.
|
|
120
|
+
*/
|
|
121
|
+
function deepFreeze(obj) {
|
|
122
|
+
Object.freeze(obj);
|
|
123
|
+
for (const value of Object.values(obj)) {
|
|
124
|
+
if (value && typeof value === "object" && !Object.isFrozen(value)) {
|
|
125
|
+
deepFreeze(value);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return obj;
|
|
129
|
+
}
|
|
130
|
+
/** Singleton instance for the application. */
|
|
131
|
+
export const honoCache = new HonoCache();
|
|
132
|
+
//# sourceMappingURL=hono-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-cache.js","sourceRoot":"","sources":["../../src/cache/hono-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAW/B,MAAM,OAAO,SAAS;IACZ,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;IACpD,UAAU,CAAS;IAE3B,YAAY,UAAU,GAAG,mBAAmB;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,SAAiB,EACjB,SAAoB;QAEpB,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;QAEnC,+CAA+C;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,kBAAkB;QAClB,MAAM,OAAO,GAAG,SAAS;aACtB,KAAK,CAAC,SAAS,CAAC;aAChB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,IAAY;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,YAAoB;QAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,CAC7C,CAAC;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAa;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,2DAA2D;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAmB,GAAM;IAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,64GAkErB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,64GAkErB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoZ/C,CAAC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -408,15 +408,16 @@ Configure codesift-mcp as an MCP server in an AI coding tool.
|
|
|
408
408
|
By default, installs the MCP server config, rules file, and hooks (where supported).
|
|
409
409
|
|
|
410
410
|
Platforms:
|
|
411
|
-
codex
|
|
412
|
-
claude
|
|
413
|
-
cursor
|
|
414
|
-
gemini
|
|
411
|
+
codex Add to ~/.codex/config.toml + AGENTS.md rules (OpenAI Codex CLI & IDE)
|
|
412
|
+
claude Add to ~/.claude/settings.json + rules + hooks (Claude Code)
|
|
413
|
+
cursor Add to ~/.cursor/mcp.json + .cursor/rules/codesift.mdc (Cursor IDE)
|
|
414
|
+
gemini Add to ~/.gemini/settings.json + GEMINI.md rules (Gemini CLI)
|
|
415
|
+
antigravity Add to ~/.gemini/antigravity/mcp_config.json (Google Antigravity)
|
|
415
416
|
all Configure all platforms at once
|
|
416
417
|
|
|
417
418
|
Options:
|
|
418
419
|
--json Output result as JSON instead of human-readable text
|
|
419
|
-
--hooks
|
|
420
|
+
--hooks Install hooks where supported (default: on)
|
|
420
421
|
--no-hooks Skip hook installation
|
|
421
422
|
--rules Install platform rules file (default: on)
|
|
422
423
|
--no-rules Skip rules file installation
|
|
@@ -426,7 +427,7 @@ What it does:
|
|
|
426
427
|
- Creates the config file if it doesn't exist
|
|
427
428
|
- Adds the codesift MCP server entry if not already present
|
|
428
429
|
- Installs the CodeSift rules file for the platform (use --no-rules to skip)
|
|
429
|
-
- Installs
|
|
430
|
+
- Installs hooks for supported platforms (currently Claude Code, Codex, Gemini)
|
|
430
431
|
- Skips if already configured (safe to run multiple times)
|
|
431
432
|
|
|
432
433
|
Examples:
|
|
@@ -437,6 +438,7 @@ Examples:
|
|
|
437
438
|
codesift setup claude --force
|
|
438
439
|
codesift setup cursor
|
|
439
440
|
codesift setup gemini
|
|
441
|
+
codesift setup antigravity
|
|
440
442
|
codesift setup all`,
|
|
441
443
|
};
|
|
442
444
|
//# sourceMappingURL=help.js.map
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkExB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,KAAK,EAAE;;;;;;;;;;iEAUwD;IAE/D,YAAY,EAAE;;;;;;;;;6DAS6C;IAE3D,qBAAqB,EAAE;;;;;;;;;wEAS+C;IAEtE,KAAK,EAAE;;6CAEoC;IAE3C,UAAU,EAAE;;;;;0DAK4C;IAExD,MAAM,EAAE;;;;;;;;;;;;qEAY2D;IAEnE,OAAO,EAAE;;;;;;;;;;;;;mEAawD;IAEjE,IAAI,EAAE;;;;;;;;;;;;+DAYuD;IAE7D,OAAO,EAAE;;;;;;qDAM0C;IAEnD,cAAc,EAAE;;;;;kCAKgB;IAEhC,MAAM,EAAE;;;;;;qCAM2B;IAEnC,eAAe,EAAE;;;;;;iDAM8B;IAE/C,IAAI,EAAE;;;;;;;;;iEASyD;IAE/D,IAAI,EAAE;;;;;;;;;;8DAUsD;IAE5D,KAAK,EAAE;;;;;;;;;;;;;6DAaoD;IAE3D,MAAM,EAAE;;;;;;;;;;mDAUyC;IAEjD,OAAO,EAAE;;;;;;;;;6DASkD;IAE3D,eAAe,EAAE;;;;;;;;;mDASgC;IAEjD,IAAI,EAAE;;;;;;;;;mDAS2C;IAEjD,OAAO,EAAE;;;;;;;;;mDASwC;IAEjD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;+GAoBmG;IAE7G,KAAK,EAAE;;mDAE0C;IAEjD,oBAAoB,EAAE;;;;;;;;sCAQc;IAEpC,UAAU,EAAE;;;;;;;;;;;0DAW4C;IAExD,WAAW,EAAE;;;;;;;;;iEASkD;IAE/D,QAAQ,EAAE;;;;;;;;;;kEAUsD;IAEhE,WAAW,EAAE;;;;;;;;;;kEAUmD;IAEhE,QAAQ,EAAE;;;;;;;;;;;;;;2DAc+C;IAEzD,aAAa,EAAE;;;;;;;;;;;yDAWwC;IAEvD,eAAe,EAAE;;;;;;;;;;;yEAWsD;IAEvE,eAAe,EAAE;;;;;;;;;;;;uEAYoD;IAErE,gBAAgB,EAAE;;;;;;;;;;yEAUqD;IAEvE,KAAK,EAAE
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkExB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,KAAK,EAAE;;;;;;;;;;iEAUwD;IAE/D,YAAY,EAAE;;;;;;;;;6DAS6C;IAE3D,qBAAqB,EAAE;;;;;;;;;wEAS+C;IAEtE,KAAK,EAAE;;6CAEoC;IAE3C,UAAU,EAAE;;;;;0DAK4C;IAExD,MAAM,EAAE;;;;;;;;;;;;qEAY2D;IAEnE,OAAO,EAAE;;;;;;;;;;;;;mEAawD;IAEjE,IAAI,EAAE;;;;;;;;;;;;+DAYuD;IAE7D,OAAO,EAAE;;;;;;qDAM0C;IAEnD,cAAc,EAAE;;;;;kCAKgB;IAEhC,MAAM,EAAE;;;;;;qCAM2B;IAEnC,eAAe,EAAE;;;;;;iDAM8B;IAE/C,IAAI,EAAE;;;;;;;;;iEASyD;IAE/D,IAAI,EAAE;;;;;;;;;;8DAUsD;IAE5D,KAAK,EAAE;;;;;;;;;;;;;6DAaoD;IAE3D,MAAM,EAAE;;;;;;;;;;mDAUyC;IAEjD,OAAO,EAAE;;;;;;;;;6DASkD;IAE3D,eAAe,EAAE;;;;;;;;;mDASgC;IAEjD,IAAI,EAAE;;;;;;;;;mDAS2C;IAEjD,OAAO,EAAE;;;;;;;;;mDASwC;IAEjD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;+GAoBmG;IAE7G,KAAK,EAAE;;mDAE0C;IAEjD,oBAAoB,EAAE;;;;;;;;sCAQc;IAEpC,UAAU,EAAE;;;;;;;;;;;0DAW4C;IAExD,WAAW,EAAE;;;;;;;;;iEASkD;IAE/D,QAAQ,EAAE;;;;;;;;;;kEAUsD;IAEhE,WAAW,EAAE;;;;;;;;;;kEAUmD;IAEhE,QAAQ,EAAE;;;;;;;;;;;;;;2DAc+C;IAEzD,aAAa,EAAE;;;;;;;;;;;yDAWwC;IAEvD,eAAe,EAAE;;;;;;;;;;;yEAWsD;IAEvE,eAAe,EAAE;;;;;;;;;;;;uEAYoD;IAErE,gBAAgB,EAAE;;;;;;;;;;yEAUqD;IAEvE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAqCY;CACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/cli/platform.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5F;;;GAGG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAK7C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/cli/platform.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5F;;;GAGG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAK7C;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAQ7E"}
|