purecontext-mcp 1.0.1
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/LICENSE +21 -0
- package/README.md +207 -0
- package/dist/adapters/actix-web.d.ts +28 -0
- package/dist/adapters/actix-web.d.ts.map +1 -0
- package/dist/adapters/actix-web.js +362 -0
- package/dist/adapters/actix-web.js.map +1 -0
- package/dist/adapters/adapter-registry.d.ts +34 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +92 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/angular.d.ts +13 -0
- package/dist/adapters/angular.d.ts.map +1 -0
- package/dist/adapters/angular.js +348 -0
- package/dist/adapters/angular.js.map +1 -0
- package/dist/adapters/axum.d.ts +16 -0
- package/dist/adapters/axum.d.ts.map +1 -0
- package/dist/adapters/axum.js +299 -0
- package/dist/adapters/axum.js.map +1 -0
- package/dist/adapters/django-orm.d.ts +28 -0
- package/dist/adapters/django-orm.d.ts.map +1 -0
- package/dist/adapters/django-orm.js +464 -0
- package/dist/adapters/django-orm.js.map +1 -0
- package/dist/adapters/django.d.ts +16 -0
- package/dist/adapters/django.d.ts.map +1 -0
- package/dist/adapters/django.js +257 -0
- package/dist/adapters/django.js.map +1 -0
- package/dist/adapters/echo.d.ts +15 -0
- package/dist/adapters/echo.d.ts.map +1 -0
- package/dist/adapters/echo.js +142 -0
- package/dist/adapters/echo.js.map +1 -0
- package/dist/adapters/express.d.ts +15 -0
- package/dist/adapters/express.d.ts.map +1 -0
- package/dist/adapters/express.js +126 -0
- package/dist/adapters/express.js.map +1 -0
- package/dist/adapters/fastapi.d.ts +16 -0
- package/dist/adapters/fastapi.d.ts.map +1 -0
- package/dist/adapters/fastapi.js +113 -0
- package/dist/adapters/fastapi.js.map +1 -0
- package/dist/adapters/fastify.d.ts +14 -0
- package/dist/adapters/fastify.d.ts.map +1 -0
- package/dist/adapters/fastify.js +124 -0
- package/dist/adapters/fastify.js.map +1 -0
- package/dist/adapters/fiber.d.ts +15 -0
- package/dist/adapters/fiber.d.ts.map +1 -0
- package/dist/adapters/fiber.js +147 -0
- package/dist/adapters/fiber.js.map +1 -0
- package/dist/adapters/flask.d.ts +18 -0
- package/dist/adapters/flask.d.ts.map +1 -0
- package/dist/adapters/flask.js +175 -0
- package/dist/adapters/flask.js.map +1 -0
- package/dist/adapters/flutter.d.ts +19 -0
- package/dist/adapters/flutter.d.ts.map +1 -0
- package/dist/adapters/flutter.js +251 -0
- package/dist/adapters/flutter.js.map +1 -0
- package/dist/adapters/gin.d.ts +16 -0
- package/dist/adapters/gin.d.ts.map +1 -0
- package/dist/adapters/gin.js +159 -0
- package/dist/adapters/gin.js.map +1 -0
- package/dist/adapters/hibernate.d.ts +24 -0
- package/dist/adapters/hibernate.d.ts.map +1 -0
- package/dist/adapters/hibernate.js +448 -0
- package/dist/adapters/hibernate.js.map +1 -0
- package/dist/adapters/ktor.d.ts +18 -0
- package/dist/adapters/ktor.d.ts.map +1 -0
- package/dist/adapters/ktor.js +219 -0
- package/dist/adapters/ktor.js.map +1 -0
- package/dist/adapters/laravel.d.ts +19 -0
- package/dist/adapters/laravel.d.ts.map +1 -0
- package/dist/adapters/laravel.js +370 -0
- package/dist/adapters/laravel.js.map +1 -0
- package/dist/adapters/micronaut.d.ts +21 -0
- package/dist/adapters/micronaut.d.ts.map +1 -0
- package/dist/adapters/micronaut.js +435 -0
- package/dist/adapters/micronaut.js.map +1 -0
- package/dist/adapters/nestjs.d.ts +12 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nestjs.js +401 -0
- package/dist/adapters/nestjs.js.map +1 -0
- package/dist/adapters/nextjs.d.ts +49 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.js +412 -0
- package/dist/adapters/nextjs.js.map +1 -0
- package/dist/adapters/nuxt.d.ts +44 -0
- package/dist/adapters/nuxt.d.ts.map +1 -0
- package/dist/adapters/nuxt.js +243 -0
- package/dist/adapters/nuxt.js.map +1 -0
- package/dist/adapters/quarkus.d.ts +21 -0
- package/dist/adapters/quarkus.d.ts.map +1 -0
- package/dist/adapters/quarkus.js +395 -0
- package/dist/adapters/quarkus.js.map +1 -0
- package/dist/adapters/rails.d.ts +18 -0
- package/dist/adapters/rails.d.ts.map +1 -0
- package/dist/adapters/rails.js +363 -0
- package/dist/adapters/rails.js.map +1 -0
- package/dist/adapters/react.d.ts +18 -0
- package/dist/adapters/react.d.ts.map +1 -0
- package/dist/adapters/react.js +95 -0
- package/dist/adapters/react.js.map +1 -0
- package/dist/adapters/rocket.d.ts +19 -0
- package/dist/adapters/rocket.d.ts.map +1 -0
- package/dist/adapters/rocket.js +271 -0
- package/dist/adapters/rocket.js.map +1 -0
- package/dist/adapters/sinatra.d.ts +16 -0
- package/dist/adapters/sinatra.d.ts.map +1 -0
- package/dist/adapters/sinatra.js +114 -0
- package/dist/adapters/sinatra.js.map +1 -0
- package/dist/adapters/spring-boot.d.ts +24 -0
- package/dist/adapters/spring-boot.d.ts.map +1 -0
- package/dist/adapters/spring-boot.js +399 -0
- package/dist/adapters/spring-boot.js.map +1 -0
- package/dist/adapters/spring-kotlin.d.ts +19 -0
- package/dist/adapters/spring-kotlin.d.ts.map +1 -0
- package/dist/adapters/spring-kotlin.js +297 -0
- package/dist/adapters/spring-kotlin.js.map +1 -0
- package/dist/adapters/sqlalchemy.d.ts +28 -0
- package/dist/adapters/sqlalchemy.d.ts.map +1 -0
- package/dist/adapters/sqlalchemy.js +435 -0
- package/dist/adapters/sqlalchemy.js.map +1 -0
- package/dist/adapters/symfony.d.ts +16 -0
- package/dist/adapters/symfony.d.ts.map +1 -0
- package/dist/adapters/symfony.js +242 -0
- package/dist/adapters/symfony.js.map +1 -0
- package/dist/adapters/vapor.d.ts +21 -0
- package/dist/adapters/vapor.d.ts.map +1 -0
- package/dist/adapters/vapor.js +269 -0
- package/dist/adapters/vapor.js.map +1 -0
- package/dist/adapters/vue-preprocessor.d.ts +26 -0
- package/dist/adapters/vue-preprocessor.d.ts.map +1 -0
- package/dist/adapters/vue-preprocessor.js +82 -0
- package/dist/adapters/vue-preprocessor.js.map +1 -0
- package/dist/adapters/vue.d.ts +13 -0
- package/dist/adapters/vue.d.ts.map +1 -0
- package/dist/adapters/vue.js +134 -0
- package/dist/adapters/vue.js.map +1 -0
- package/dist/config/cli.d.ts +26 -0
- package/dist/config/cli.d.ts.map +1 -0
- package/dist/config/cli.js +291 -0
- package/dist/config/cli.js.map +1 -0
- package/dist/config/config-loader.d.ts +26 -0
- package/dist/config/config-loader.d.ts.map +1 -0
- package/dist/config/config-loader.js +168 -0
- package/dist/config/config-loader.js.map +1 -0
- package/dist/config/config-schema.d.ts +228 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +400 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/keys-cli.d.ts +37 -0
- package/dist/config/keys-cli.d.ts.map +1 -0
- package/dist/config/keys-cli.js +179 -0
- package/dist/config/keys-cli.js.map +1 -0
- package/dist/config/workspaces-cli.d.ts +2 -0
- package/dist/config/workspaces-cli.d.ts.map +1 -0
- package/dist/config/workspaces-cli.js +84 -0
- package/dist/config/workspaces-cli.js.map +1 -0
- package/dist/core/db/api-keys.d.ts +95 -0
- package/dist/core/db/api-keys.d.ts.map +1 -0
- package/dist/core/db/api-keys.js +293 -0
- package/dist/core/db/api-keys.js.map +1 -0
- package/dist/core/db/dep-store.d.ts +18 -0
- package/dist/core/db/dep-store.d.ts.map +1 -0
- package/dist/core/db/dep-store.js +155 -0
- package/dist/core/db/dep-store.js.map +1 -0
- package/dist/core/db/embedding-store.d.ts +40 -0
- package/dist/core/db/embedding-store.d.ts.map +1 -0
- package/dist/core/db/embedding-store.js +120 -0
- package/dist/core/db/embedding-store.js.map +1 -0
- package/dist/core/db/file-store.d.ts +27 -0
- package/dist/core/db/file-store.d.ts.map +1 -0
- package/dist/core/db/file-store.js +101 -0
- package/dist/core/db/file-store.js.map +1 -0
- package/dist/core/db/request-log.d.ts +40 -0
- package/dist/core/db/request-log.d.ts.map +1 -0
- package/dist/core/db/request-log.js +90 -0
- package/dist/core/db/request-log.js.map +1 -0
- package/dist/core/db/savings-store.d.ts +9 -0
- package/dist/core/db/savings-store.d.ts.map +1 -0
- package/dist/core/db/savings-store.js +64 -0
- package/dist/core/db/savings-store.js.map +1 -0
- package/dist/core/db/schema.d.ts +14 -0
- package/dist/core/db/schema.d.ts.map +1 -0
- package/dist/core/db/schema.js +235 -0
- package/dist/core/db/schema.js.map +1 -0
- package/dist/core/db/symbol-store.d.ts +64 -0
- package/dist/core/db/symbol-store.d.ts.map +1 -0
- package/dist/core/db/symbol-store.js +243 -0
- package/dist/core/db/symbol-store.js.map +1 -0
- package/dist/core/db/tenants.d.ts +91 -0
- package/dist/core/db/tenants.d.ts.map +1 -0
- package/dist/core/db/tenants.js +219 -0
- package/dist/core/db/tenants.js.map +1 -0
- package/dist/core/errors.d.ts +72 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +140 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/file-discovery.d.ts +17 -0
- package/dist/core/file-discovery.d.ts.map +1 -0
- package/dist/core/file-discovery.js +136 -0
- package/dist/core/file-discovery.js.map +1 -0
- package/dist/core/file-processor.d.ts +21 -0
- package/dist/core/file-processor.d.ts.map +1 -0
- package/dist/core/file-processor.js +110 -0
- package/dist/core/file-processor.js.map +1 -0
- package/dist/core/hash-cache.d.ts +18 -0
- package/dist/core/hash-cache.d.ts.map +1 -0
- package/dist/core/hash-cache.js +35 -0
- package/dist/core/hash-cache.js.map +1 -0
- package/dist/core/index-manager.d.ts +18 -0
- package/dist/core/index-manager.d.ts.map +1 -0
- package/dist/core/index-manager.js +461 -0
- package/dist/core/index-manager.js.map +1 -0
- package/dist/core/indexing-worker.d.ts +60 -0
- package/dist/core/indexing-worker.d.ts.map +1 -0
- package/dist/core/indexing-worker.js +128 -0
- package/dist/core/indexing-worker.js.map +1 -0
- package/dist/core/logger.d.ts +10 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +40 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/parse-dispatcher.d.ts +18 -0
- package/dist/core/parse-dispatcher.d.ts.map +1 -0
- package/dist/core/parse-dispatcher.js +74 -0
- package/dist/core/parse-dispatcher.js.map +1 -0
- package/dist/core/search/query-preprocessor.d.ts +22 -0
- package/dist/core/search/query-preprocessor.d.ts.map +1 -0
- package/dist/core/search/query-preprocessor.js +77 -0
- package/dist/core/search/query-preprocessor.js.map +1 -0
- package/dist/core/search/relevance-ranker.d.ts +34 -0
- package/dist/core/search/relevance-ranker.d.ts.map +1 -0
- package/dist/core/search/relevance-ranker.js +132 -0
- package/dist/core/search/relevance-ranker.js.map +1 -0
- package/dist/core/security.d.ts +40 -0
- package/dist/core/security.d.ts.map +1 -0
- package/dist/core/security.js +133 -0
- package/dist/core/security.js.map +1 -0
- package/dist/core/telemetry.d.ts +19 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +101 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/tenant-context.d.ts +22 -0
- package/dist/core/tenant-context.d.ts.map +1 -0
- package/dist/core/tenant-context.js +16 -0
- package/dist/core/tenant-context.js.map +1 -0
- package/dist/core/token-tracker.d.ts +39 -0
- package/dist/core/token-tracker.d.ts.map +1 -0
- package/dist/core/token-tracker.js +153 -0
- package/dist/core/token-tracker.js.map +1 -0
- package/dist/core/types.d.ts +145 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/watcher/file-watcher.d.ts +18 -0
- package/dist/core/watcher/file-watcher.d.ts.map +1 -0
- package/dist/core/watcher/file-watcher.js +123 -0
- package/dist/core/watcher/file-watcher.js.map +1 -0
- package/dist/core/worker-pool.d.ts +24 -0
- package/dist/core/worker-pool.d.ts.map +1 -0
- package/dist/core/worker-pool.js +92 -0
- package/dist/core/worker-pool.js.map +1 -0
- package/dist/graph/graph-builder.d.ts +16 -0
- package/dist/graph/graph-builder.d.ts.map +1 -0
- package/dist/graph/graph-builder.js +51 -0
- package/dist/graph/graph-builder.js.map +1 -0
- package/dist/graph/graph-traversal.d.ts +57 -0
- package/dist/graph/graph-traversal.d.ts.map +1 -0
- package/dist/graph/graph-traversal.js +144 -0
- package/dist/graph/graph-traversal.js.map +1 -0
- package/dist/graph/path-resolver.d.ts +13 -0
- package/dist/graph/path-resolver.d.ts.map +1 -0
- package/dist/graph/path-resolver.js +161 -0
- package/dist/graph/path-resolver.js.map +1 -0
- package/dist/handlers/c.d.ts +3 -0
- package/dist/handlers/c.d.ts.map +1 -0
- package/dist/handlers/c.js +473 -0
- package/dist/handlers/c.js.map +1 -0
- package/dist/handlers/cpp.d.ts +3 -0
- package/dist/handlers/cpp.d.ts.map +1 -0
- package/dist/handlers/cpp.js +682 -0
- package/dist/handlers/cpp.js.map +1 -0
- package/dist/handlers/csharp.d.ts +3 -0
- package/dist/handlers/csharp.d.ts.map +1 -0
- package/dist/handlers/csharp.js +369 -0
- package/dist/handlers/csharp.js.map +1 -0
- package/dist/handlers/dart.d.ts +3 -0
- package/dist/handlers/dart.d.ts.map +1 -0
- package/dist/handlers/dart.js +596 -0
- package/dist/handlers/dart.js.map +1 -0
- package/dist/handlers/elixir.d.ts +8 -0
- package/dist/handlers/elixir.d.ts.map +1 -0
- package/dist/handlers/elixir.js +412 -0
- package/dist/handlers/elixir.js.map +1 -0
- package/dist/handlers/go.d.ts +3 -0
- package/dist/handlers/go.d.ts.map +1 -0
- package/dist/handlers/go.js +262 -0
- package/dist/handlers/go.js.map +1 -0
- package/dist/handlers/handler-registry.d.ts +20 -0
- package/dist/handlers/handler-registry.d.ts.map +1 -0
- package/dist/handlers/handler-registry.js +69 -0
- package/dist/handlers/handler-registry.js.map +1 -0
- package/dist/handlers/haskell.d.ts +17 -0
- package/dist/handlers/haskell.d.ts.map +1 -0
- package/dist/handlers/haskell.js +356 -0
- package/dist/handlers/haskell.js.map +1 -0
- package/dist/handlers/java.d.ts +3 -0
- package/dist/handlers/java.d.ts.map +1 -0
- package/dist/handlers/java.js +350 -0
- package/dist/handlers/java.js.map +1 -0
- package/dist/handlers/javascript.d.ts +3 -0
- package/dist/handlers/javascript.d.ts.map +1 -0
- package/dist/handlers/javascript.js +232 -0
- package/dist/handlers/javascript.js.map +1 -0
- package/dist/handlers/kotlin.d.ts +3 -0
- package/dist/handlers/kotlin.d.ts.map +1 -0
- package/dist/handlers/kotlin.js +317 -0
- package/dist/handlers/kotlin.js.map +1 -0
- package/dist/handlers/lua.d.ts +3 -0
- package/dist/handlers/lua.d.ts.map +1 -0
- package/dist/handlers/lua.js +328 -0
- package/dist/handlers/lua.js.map +1 -0
- package/dist/handlers/php.d.ts +3 -0
- package/dist/handlers/php.d.ts.map +1 -0
- package/dist/handlers/php.js +343 -0
- package/dist/handlers/php.js.map +1 -0
- package/dist/handlers/python.d.ts +3 -0
- package/dist/handlers/python.d.ts.map +1 -0
- package/dist/handlers/python.js +343 -0
- package/dist/handlers/python.js.map +1 -0
- package/dist/handlers/r.d.ts +9 -0
- package/dist/handlers/r.d.ts.map +1 -0
- package/dist/handlers/r.js +452 -0
- package/dist/handlers/r.js.map +1 -0
- package/dist/handlers/ruby.d.ts +8 -0
- package/dist/handlers/ruby.d.ts.map +1 -0
- package/dist/handlers/ruby.js +271 -0
- package/dist/handlers/ruby.js.map +1 -0
- package/dist/handlers/rust.d.ts +3 -0
- package/dist/handlers/rust.d.ts.map +1 -0
- package/dist/handlers/rust.js +420 -0
- package/dist/handlers/rust.js.map +1 -0
- package/dist/handlers/scala.d.ts +9 -0
- package/dist/handlers/scala.d.ts.map +1 -0
- package/dist/handlers/scala.js +480 -0
- package/dist/handlers/scala.js.map +1 -0
- package/dist/handlers/swift.d.ts +3 -0
- package/dist/handlers/swift.d.ts.map +1 -0
- package/dist/handlers/swift.js +553 -0
- package/dist/handlers/swift.js.map +1 -0
- package/dist/handlers/typescript.d.ts +4 -0
- package/dist/handlers/typescript.d.ts.map +1 -0
- package/dist/handlers/typescript.js +325 -0
- package/dist/handlers/typescript.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +266 -0
- package/dist/index.js.map +1 -0
- package/dist/semantic/embedding-provider.d.ts +66 -0
- package/dist/semantic/embedding-provider.d.ts.map +1 -0
- package/dist/semantic/embedding-provider.js +176 -0
- package/dist/semantic/embedding-provider.js.map +1 -0
- package/dist/semantic/hnsw-index.d.ts +96 -0
- package/dist/semantic/hnsw-index.d.ts.map +1 -0
- package/dist/semantic/hnsw-index.js +364 -0
- package/dist/semantic/hnsw-index.js.map +1 -0
- package/dist/semantic/hybrid-search.d.ts +46 -0
- package/dist/semantic/hybrid-search.d.ts.map +1 -0
- package/dist/semantic/hybrid-search.js +164 -0
- package/dist/semantic/hybrid-search.js.map +1 -0
- package/dist/semantic/query-expansion.d.ts +25 -0
- package/dist/semantic/query-expansion.d.ts.map +1 -0
- package/dist/semantic/query-expansion.js +150 -0
- package/dist/semantic/query-expansion.js.map +1 -0
- package/dist/semantic/semantic-indexer.d.ts +64 -0
- package/dist/semantic/semantic-indexer.d.ts.map +1 -0
- package/dist/semantic/semantic-indexer.js +162 -0
- package/dist/semantic/semantic-indexer.js.map +1 -0
- package/dist/semantic/text-preparation.d.ts +23 -0
- package/dist/semantic/text-preparation.d.ts.map +1 -0
- package/dist/semantic/text-preparation.js +56 -0
- package/dist/semantic/text-preparation.js.map +1 -0
- package/dist/semantic/vector-store.d.ts +81 -0
- package/dist/semantic/vector-store.d.ts.map +1 -0
- package/dist/semantic/vector-store.js +157 -0
- package/dist/semantic/vector-store.js.map +1 -0
- package/dist/server/admin-api.d.ts +88 -0
- package/dist/server/admin-api.d.ts.map +1 -0
- package/dist/server/admin-api.js +661 -0
- package/dist/server/admin-api.js.map +1 -0
- package/dist/server/auth/api-key.d.ts +105 -0
- package/dist/server/auth/api-key.d.ts.map +1 -0
- package/dist/server/auth/api-key.js +276 -0
- package/dist/server/auth/api-key.js.map +1 -0
- package/dist/server/http-server.d.ts +100 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +823 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/mcp-server.d.ts +23 -0
- package/dist/server/mcp-server.d.ts.map +1 -0
- package/dist/server/mcp-server.js +214 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/server/rate-limit-store.d.ts +25 -0
- package/dist/server/rate-limit-store.d.ts.map +1 -0
- package/dist/server/rate-limit-store.js +46 -0
- package/dist/server/rate-limit-store.js.map +1 -0
- package/dist/server/rate-limiter.d.ts +59 -0
- package/dist/server/rate-limiter.d.ts.map +1 -0
- package/dist/server/rate-limiter.js +85 -0
- package/dist/server/rate-limiter.js.map +1 -0
- package/dist/server/tools/_meta.d.ts +24 -0
- package/dist/server/tools/_meta.d.ts.map +1 -0
- package/dist/server/tools/_meta.js +35 -0
- package/dist/server/tools/_meta.js.map +1 -0
- package/dist/server/tools/find-dead-code.d.ts +11 -0
- package/dist/server/tools/find-dead-code.d.ts.map +1 -0
- package/dist/server/tools/find-dead-code.js +45 -0
- package/dist/server/tools/find-dead-code.js.map +1 -0
- package/dist/server/tools/find-importers.d.ts +13 -0
- package/dist/server/tools/find-importers.d.ts.map +1 -0
- package/dist/server/tools/find-importers.js +46 -0
- package/dist/server/tools/find-importers.js.map +1 -0
- package/dist/server/tools/get-blast-radius.d.ts +15 -0
- package/dist/server/tools/get-blast-radius.d.ts.map +1 -0
- package/dist/server/tools/get-blast-radius.js +51 -0
- package/dist/server/tools/get-blast-radius.js.map +1 -0
- package/dist/server/tools/get-context-bundle.d.ts +15 -0
- package/dist/server/tools/get-context-bundle.d.ts.map +1 -0
- package/dist/server/tools/get-context-bundle.js +53 -0
- package/dist/server/tools/get-context-bundle.js.map +1 -0
- package/dist/server/tools/get-file-outline.d.ts +13 -0
- package/dist/server/tools/get-file-outline.d.ts.map +1 -0
- package/dist/server/tools/get-file-outline.js +42 -0
- package/dist/server/tools/get-file-outline.js.map +1 -0
- package/dist/server/tools/get-file-tree.d.ts +11 -0
- package/dist/server/tools/get-file-tree.d.ts.map +1 -0
- package/dist/server/tools/get-file-tree.js +63 -0
- package/dist/server/tools/get-file-tree.js.map +1 -0
- package/dist/server/tools/get-graph.d.ts +46 -0
- package/dist/server/tools/get-graph.d.ts.map +1 -0
- package/dist/server/tools/get-graph.js +168 -0
- package/dist/server/tools/get-graph.js.map +1 -0
- package/dist/server/tools/get-layer-violations.d.ts +37 -0
- package/dist/server/tools/get-layer-violations.d.ts.map +1 -0
- package/dist/server/tools/get-layer-violations.js +138 -0
- package/dist/server/tools/get-layer-violations.js.map +1 -0
- package/dist/server/tools/get-repo-outline.d.ts +13 -0
- package/dist/server/tools/get-repo-outline.d.ts.map +1 -0
- package/dist/server/tools/get-repo-outline.js +72 -0
- package/dist/server/tools/get-repo-outline.js.map +1 -0
- package/dist/server/tools/get-savings-stats.d.ts +11 -0
- package/dist/server/tools/get-savings-stats.d.ts.map +1 -0
- package/dist/server/tools/get-savings-stats.js +56 -0
- package/dist/server/tools/get-savings-stats.js.map +1 -0
- package/dist/server/tools/get-symbol-source.d.ts +13 -0
- package/dist/server/tools/get-symbol-source.d.ts.map +1 -0
- package/dist/server/tools/get-symbol-source.js +93 -0
- package/dist/server/tools/get-symbol-source.js.map +1 -0
- package/dist/server/tools/index-folder.d.ts +15 -0
- package/dist/server/tools/index-folder.d.ts.map +1 -0
- package/dist/server/tools/index-folder.js +45 -0
- package/dist/server/tools/index-folder.js.map +1 -0
- package/dist/server/tools/index-repo.d.ts +26 -0
- package/dist/server/tools/index-repo.d.ts.map +1 -0
- package/dist/server/tools/index-repo.js +164 -0
- package/dist/server/tools/index-repo.js.map +1 -0
- package/dist/server/tools/list-repos.d.ts +11 -0
- package/dist/server/tools/list-repos.d.ts.map +1 -0
- package/dist/server/tools/list-repos.js +60 -0
- package/dist/server/tools/list-repos.js.map +1 -0
- package/dist/server/tools/resolve-repo.d.ts +11 -0
- package/dist/server/tools/resolve-repo.d.ts.map +1 -0
- package/dist/server/tools/resolve-repo.js +44 -0
- package/dist/server/tools/resolve-repo.js.map +1 -0
- package/dist/server/tools/search-semantic.d.ts +56 -0
- package/dist/server/tools/search-semantic.d.ts.map +1 -0
- package/dist/server/tools/search-semantic.js +187 -0
- package/dist/server/tools/search-semantic.js.map +1 -0
- package/dist/server/tools/search-symbols.d.ts +43 -0
- package/dist/server/tools/search-symbols.d.ts.map +1 -0
- package/dist/server/tools/search-symbols.js +197 -0
- package/dist/server/tools/search-symbols.js.map +1 -0
- package/dist/server/tools/search-text.d.ts +21 -0
- package/dist/server/tools/search-text.d.ts.map +1 -0
- package/dist/server/tools/search-text.js +131 -0
- package/dist/server/tools/search-text.js.map +1 -0
- package/dist/server/transport.d.ts +59 -0
- package/dist/server/transport.d.ts.map +1 -0
- package/dist/server/transport.js +92 -0
- package/dist/server/transport.js.map +1 -0
- package/dist/summarizer/ai-summarizer.d.ts +71 -0
- package/dist/summarizer/ai-summarizer.d.ts.map +1 -0
- package/dist/summarizer/ai-summarizer.js +228 -0
- package/dist/summarizer/ai-summarizer.js.map +1 -0
- package/dist/summarizer/docstring-extractor.d.ts +9 -0
- package/dist/summarizer/docstring-extractor.d.ts.map +1 -0
- package/dist/summarizer/docstring-extractor.js +89 -0
- package/dist/summarizer/docstring-extractor.js.map +1 -0
- package/dist/summarizer/embeddings.d.ts +29 -0
- package/dist/summarizer/embeddings.d.ts.map +1 -0
- package/dist/summarizer/embeddings.js +133 -0
- package/dist/summarizer/embeddings.js.map +1 -0
- package/dist/summarizer/summarizer.d.ts +22 -0
- package/dist/summarizer/summarizer.d.ts.map +1 -0
- package/dist/summarizer/summarizer.js +86 -0
- package/dist/summarizer/summarizer.js.map +1 -0
- package/dist/ui/assets/BlastRadius-ccQ3ktbv.js +1 -0
- package/dist/ui/assets/DependencyGraph-BZV40eAE.css +1 -0
- package/dist/ui/assets/DependencyGraph-Ca84q89b.js +27 -0
- package/dist/ui/assets/NotFound-C1wVKP-6.js +1 -0
- package/dist/ui/assets/RepoDetail-B_8qid2Y.js +1 -0
- package/dist/ui/assets/RepoList-BuPu-ODM.js +1 -0
- package/dist/ui/assets/Search-BzZ9Og8E.js +1 -0
- package/dist/ui/assets/SymbolView-FdpKlzql.js +14 -0
- package/dist/ui/assets/client-BANW_tIp.js +1 -0
- package/dist/ui/assets/index-CnwwQi_S.js +61 -0
- package/dist/ui/assets/index-SS2IXr8I.css +1 -0
- package/dist/ui/assets/repoStore-SbGR6YI6.js +1 -0
- package/dist/ui/assets/useSearch-DHyve22h.js +1 -0
- package/dist/ui/index.html +13 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/grammars/tree-sitter-c.wasm +0 -0
- package/grammars/tree-sitter-cpp.wasm +0 -0
- package/grammars/tree-sitter-csharp.wasm +0 -0
- package/grammars/tree-sitter-dart.wasm +0 -0
- package/grammars/tree-sitter-elixir.wasm +0 -0
- package/grammars/tree-sitter-go.wasm +0 -0
- package/grammars/tree-sitter-haskell.wasm +0 -0
- package/grammars/tree-sitter-java.wasm +0 -0
- package/grammars/tree-sitter-javascript.wasm +0 -0
- package/grammars/tree-sitter-kotlin.wasm +0 -0
- package/grammars/tree-sitter-lua.wasm +0 -0
- package/grammars/tree-sitter-php.wasm +0 -0
- package/grammars/tree-sitter-python.wasm +0 -0
- package/grammars/tree-sitter-r.wasm +0 -0
- package/grammars/tree-sitter-ruby.wasm +0 -0
- package/grammars/tree-sitter-rust.wasm +0 -0
- package/grammars/tree-sitter-scala.wasm +0 -0
- package/grammars/tree-sitter-swift.wasm +0 -0
- package/grammars/tree-sitter-tsx.wasm +0 -0
- package/grammars/tree-sitter-typescript.wasm +0 -0
- package/package.json +104 -0
- package/scripts/check-sqlite.js +41 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-store.js","sourceRoot":"","sources":["../../../src/core/db/symbol-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TenantStore — manages tenant records in the central auth database.
|
|
3
|
+
*
|
|
4
|
+
* Tenants are the top-level isolation boundary for multi-tenant deployments.
|
|
5
|
+
* Each tenant owns a set of repos, API keys, and a storage quota.
|
|
6
|
+
*
|
|
7
|
+
* The tenants table lives in the auth DB (~/.purecontext/auth.db), separate from
|
|
8
|
+
* the per-repo index databases.
|
|
9
|
+
*/
|
|
10
|
+
import type Database from 'better-sqlite3';
|
|
11
|
+
export interface Tenant {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
/** Tenant-specific JSON config (e.g. custom rate-limit overrides). */
|
|
16
|
+
settings: Record<string, unknown> | null;
|
|
17
|
+
/** Max bytes the tenant may store across all repos. null = unlimited. */
|
|
18
|
+
storageQuotaBytes: number | null;
|
|
19
|
+
/** Current storage used by the tenant, in bytes. */
|
|
20
|
+
storageUsedBytes: number;
|
|
21
|
+
/** Subscription plan — controls per-plan limits. Defaults to 'team'. */
|
|
22
|
+
plan: 'free' | 'team' | 'enterprise';
|
|
23
|
+
/** Number of members in this workspace (populated by list()). */
|
|
24
|
+
memberCount?: number;
|
|
25
|
+
}
|
|
26
|
+
export type WorkspaceRole = 'owner' | 'admin' | 'member' | 'readonly';
|
|
27
|
+
export interface WorkspaceMember {
|
|
28
|
+
workspaceId: string;
|
|
29
|
+
userId: string;
|
|
30
|
+
role: WorkspaceRole;
|
|
31
|
+
addedAt: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* SQL to extend the tenants table with quota fields.
|
|
35
|
+
* Called as part of the auth DB migration (runAuthMigrations).
|
|
36
|
+
* SQLite ADD COLUMN is idempotent-safe when called through the migration guard.
|
|
37
|
+
*/
|
|
38
|
+
export declare const TENANTS_QUOTA_MIGRATION = "\nALTER TABLE tenants ADD COLUMN settings TEXT;\nALTER TABLE tenants ADD COLUMN storage_quota_bytes INTEGER;\nALTER TABLE tenants ADD COLUMN storage_used_bytes INTEGER NOT NULL DEFAULT 0;\n";
|
|
39
|
+
export declare class TenantStore {
|
|
40
|
+
private readonly db;
|
|
41
|
+
constructor(db: Database.Database);
|
|
42
|
+
/**
|
|
43
|
+
* Create a new tenant with a randomly generated 8-char hex ID.
|
|
44
|
+
* Returns the created Tenant.
|
|
45
|
+
*/
|
|
46
|
+
create(name: string, options?: {
|
|
47
|
+
storageQuotaBytes?: number;
|
|
48
|
+
settings?: Record<string, unknown>;
|
|
49
|
+
plan?: 'free' | 'team' | 'enterprise';
|
|
50
|
+
}): Tenant;
|
|
51
|
+
/** Retrieve a tenant by ID. Returns null when not found. */
|
|
52
|
+
get(id: string): Tenant | null;
|
|
53
|
+
/** Update mutable tenant fields. Ignores unknown keys. */
|
|
54
|
+
update(id: string, updates: Partial<Pick<Tenant, 'name' | 'settings' | 'storageQuotaBytes' | 'plan'>>): void;
|
|
55
|
+
/**
|
|
56
|
+
* Delete a tenant and all their data.
|
|
57
|
+
* The ON DELETE CASCADE on api_keys ensures keys are removed automatically.
|
|
58
|
+
* Repo data (per-repo DBs) must be cleaned up separately by the caller.
|
|
59
|
+
*/
|
|
60
|
+
delete(id: string): void;
|
|
61
|
+
/** List all tenants, newest first. Includes memberCount from workspace_members. */
|
|
62
|
+
list(): Tenant[];
|
|
63
|
+
/** Upsert a workspace member record. */
|
|
64
|
+
addMember(workspaceId: string, userId: string, role: WorkspaceRole): void;
|
|
65
|
+
/** Remove a workspace member. No-op if the member does not exist. */
|
|
66
|
+
removeMember(workspaceId: string, userId: string): void;
|
|
67
|
+
/** List all members of a workspace. */
|
|
68
|
+
listMembers(workspaceId: string): WorkspaceMember[];
|
|
69
|
+
/**
|
|
70
|
+
* Atomically increment (or decrement with a negative delta) the tenant's
|
|
71
|
+
* storage_used_bytes counter. Safe for concurrent updates in SQLite WAL mode.
|
|
72
|
+
*/
|
|
73
|
+
updateStorageUsed(id: string, deltaBytes: number): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check whether `additionalBytes` can be stored without exceeding the tenant's
|
|
76
|
+
* quota. Throws `QuotaExceededError` when the quota would be exceeded.
|
|
77
|
+
* Does nothing when quota is null (unlimited) or tenant not found.
|
|
78
|
+
*/
|
|
79
|
+
checkQuota(id: string, additionalBytes: number): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Ensure the default "local" tenant exists in the auth DB.
|
|
83
|
+
* Called during single-tenant startup so stdio mode always has a valid tenant.
|
|
84
|
+
*/
|
|
85
|
+
export declare function ensureDefaultTenant(db: Database.Database): void;
|
|
86
|
+
/**
|
|
87
|
+
* Create a workspace (tenant) with the given name and plan.
|
|
88
|
+
* Convenience wrapper around TenantStore.create().
|
|
89
|
+
*/
|
|
90
|
+
export declare function createWorkspace(db: Database.Database, name: string, plan?: 'free' | 'team' | 'enterprise'): Tenant;
|
|
91
|
+
//# sourceMappingURL=tenants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenants.d.ts","sourceRoot":"","sources":["../../../src/core/db/tenants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,yEAAyE;IACzE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;IACrC,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,kMAInC,CAAC;AAIF,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;OAGG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;KAClC,GACL,MAAM;IAoCT,4DAA4D;IAC5D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO9B,0DAA0D;IAC1D,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,mBAAmB,GAAG,MAAM,CAAC,CAAC,GACjF,IAAI;IAiCP;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,mFAAmF;IACnF,IAAI,IAAI,MAAM,EAAE;IAiBhB,wCAAwC;IACxC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAUzE,qEAAqE;IACrE,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAMvD,uCAAuC;IACvC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE;IASnD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUvD;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;CActD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAe/D;AA4CD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GACpC,MAAM,CAGR"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TenantStore — manages tenant records in the central auth database.
|
|
3
|
+
*
|
|
4
|
+
* Tenants are the top-level isolation boundary for multi-tenant deployments.
|
|
5
|
+
* Each tenant owns a set of repos, API keys, and a storage quota.
|
|
6
|
+
*
|
|
7
|
+
* The tenants table lives in the auth DB (~/.purecontext/auth.db), separate from
|
|
8
|
+
* the per-repo index databases.
|
|
9
|
+
*/
|
|
10
|
+
import { randomBytes } from 'node:crypto';
|
|
11
|
+
import { StorageError, QuotaExceededError } from '../errors.js';
|
|
12
|
+
import { DEFAULT_TENANT_ID } from '../tenant-context.js';
|
|
13
|
+
// ─── DDL extension (migration adds these columns to an existing tenants table) ─
|
|
14
|
+
/**
|
|
15
|
+
* SQL to extend the tenants table with quota fields.
|
|
16
|
+
* Called as part of the auth DB migration (runAuthMigrations).
|
|
17
|
+
* SQLite ADD COLUMN is idempotent-safe when called through the migration guard.
|
|
18
|
+
*/
|
|
19
|
+
export const TENANTS_QUOTA_MIGRATION = `
|
|
20
|
+
ALTER TABLE tenants ADD COLUMN settings TEXT;
|
|
21
|
+
ALTER TABLE tenants ADD COLUMN storage_quota_bytes INTEGER;
|
|
22
|
+
ALTER TABLE tenants ADD COLUMN storage_used_bytes INTEGER NOT NULL DEFAULT 0;
|
|
23
|
+
`;
|
|
24
|
+
// ─── TenantStore ──────────────────────────────────────────────────────────────
|
|
25
|
+
export class TenantStore {
|
|
26
|
+
db;
|
|
27
|
+
constructor(db) {
|
|
28
|
+
this.db = db;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a new tenant with a randomly generated 8-char hex ID.
|
|
32
|
+
* Returns the created Tenant.
|
|
33
|
+
*/
|
|
34
|
+
create(name, options = {}) {
|
|
35
|
+
const id = randomBytes(4).toString('hex'); // 8 hex chars
|
|
36
|
+
const createdAt = new Date().toISOString();
|
|
37
|
+
const plan = options.plan ?? 'team';
|
|
38
|
+
const tenant = {
|
|
39
|
+
id,
|
|
40
|
+
name,
|
|
41
|
+
createdAt,
|
|
42
|
+
settings: options.settings ?? null,
|
|
43
|
+
storageQuotaBytes: options.storageQuotaBytes ?? null,
|
|
44
|
+
storageUsedBytes: 0,
|
|
45
|
+
plan,
|
|
46
|
+
};
|
|
47
|
+
try {
|
|
48
|
+
this.db
|
|
49
|
+
.prepare(`INSERT INTO tenants (id, name, created_at, settings, storage_quota_bytes, storage_used_bytes, plan)
|
|
50
|
+
VALUES (@id, @name, @createdAt, @settings, @storageQuotaBytes, @storageUsedBytes, @plan)`)
|
|
51
|
+
.run({
|
|
52
|
+
id: tenant.id,
|
|
53
|
+
name: tenant.name,
|
|
54
|
+
createdAt: tenant.createdAt,
|
|
55
|
+
settings: tenant.settings !== null ? JSON.stringify(tenant.settings) : null,
|
|
56
|
+
storageQuotaBytes: tenant.storageQuotaBytes ?? null,
|
|
57
|
+
storageUsedBytes: tenant.storageUsedBytes,
|
|
58
|
+
plan: tenant.plan,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw new StorageError(`Failed to create tenant "${name}"`, 'create', err);
|
|
63
|
+
}
|
|
64
|
+
return tenant;
|
|
65
|
+
}
|
|
66
|
+
/** Retrieve a tenant by ID. Returns null when not found. */
|
|
67
|
+
get(id) {
|
|
68
|
+
const row = this.db
|
|
69
|
+
.prepare('SELECT * FROM tenants WHERE id = ?')
|
|
70
|
+
.get(id);
|
|
71
|
+
return row ? rowToTenant(row) : null;
|
|
72
|
+
}
|
|
73
|
+
/** Update mutable tenant fields. Ignores unknown keys. */
|
|
74
|
+
update(id, updates) {
|
|
75
|
+
const current = this.get(id);
|
|
76
|
+
if (current === null) {
|
|
77
|
+
throw new StorageError(`Tenant "${id}" not found`, 'update');
|
|
78
|
+
}
|
|
79
|
+
const fields = [];
|
|
80
|
+
const params = { id };
|
|
81
|
+
if (updates.name !== undefined) {
|
|
82
|
+
fields.push('name = @name');
|
|
83
|
+
params['name'] = updates.name;
|
|
84
|
+
}
|
|
85
|
+
if (updates.settings !== undefined) {
|
|
86
|
+
fields.push('settings = @settings');
|
|
87
|
+
params['settings'] = updates.settings !== null ? JSON.stringify(updates.settings) : null;
|
|
88
|
+
}
|
|
89
|
+
if (updates.storageQuotaBytes !== undefined) {
|
|
90
|
+
fields.push('storage_quota_bytes = @storageQuotaBytes');
|
|
91
|
+
params['storageQuotaBytes'] = updates.storageQuotaBytes;
|
|
92
|
+
}
|
|
93
|
+
if (updates.plan !== undefined) {
|
|
94
|
+
fields.push('plan = @plan');
|
|
95
|
+
params['plan'] = updates.plan;
|
|
96
|
+
}
|
|
97
|
+
if (fields.length === 0)
|
|
98
|
+
return;
|
|
99
|
+
this.db
|
|
100
|
+
.prepare(`UPDATE tenants SET ${fields.join(', ')} WHERE id = @id`)
|
|
101
|
+
.run(params);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Delete a tenant and all their data.
|
|
105
|
+
* The ON DELETE CASCADE on api_keys ensures keys are removed automatically.
|
|
106
|
+
* Repo data (per-repo DBs) must be cleaned up separately by the caller.
|
|
107
|
+
*/
|
|
108
|
+
delete(id) {
|
|
109
|
+
this.db.prepare('DELETE FROM tenants WHERE id = ?').run(id);
|
|
110
|
+
}
|
|
111
|
+
/** List all tenants, newest first. Includes memberCount from workspace_members. */
|
|
112
|
+
list() {
|
|
113
|
+
const rows = this.db
|
|
114
|
+
.prepare('SELECT * FROM tenants ORDER BY created_at DESC')
|
|
115
|
+
.all();
|
|
116
|
+
return rows.map((row) => {
|
|
117
|
+
const tenant = rowToTenant(row);
|
|
118
|
+
const countRow = this.db
|
|
119
|
+
.prepare('SELECT COUNT(*) AS cnt FROM workspace_members WHERE workspace_id = ?')
|
|
120
|
+
.get(row.id);
|
|
121
|
+
tenant.memberCount = countRow?.cnt ?? 0;
|
|
122
|
+
return tenant;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/** Upsert a workspace member record. */
|
|
126
|
+
addMember(workspaceId, userId, role) {
|
|
127
|
+
this.db
|
|
128
|
+
.prepare(`INSERT INTO workspace_members (workspace_id, user_id, role, added_at)
|
|
129
|
+
VALUES (?, ?, ?, ?)
|
|
130
|
+
ON CONFLICT(workspace_id, user_id) DO UPDATE SET role = excluded.role`)
|
|
131
|
+
.run(workspaceId, userId, role, new Date().toISOString());
|
|
132
|
+
}
|
|
133
|
+
/** Remove a workspace member. No-op if the member does not exist. */
|
|
134
|
+
removeMember(workspaceId, userId) {
|
|
135
|
+
this.db
|
|
136
|
+
.prepare('DELETE FROM workspace_members WHERE workspace_id = ? AND user_id = ?')
|
|
137
|
+
.run(workspaceId, userId);
|
|
138
|
+
}
|
|
139
|
+
/** List all members of a workspace. */
|
|
140
|
+
listMembers(workspaceId) {
|
|
141
|
+
return this.db
|
|
142
|
+
.prepare('SELECT * FROM workspace_members WHERE workspace_id = ? ORDER BY added_at ASC')
|
|
143
|
+
.all(workspaceId)
|
|
144
|
+
.map(rowToMember);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Atomically increment (or decrement with a negative delta) the tenant's
|
|
148
|
+
* storage_used_bytes counter. Safe for concurrent updates in SQLite WAL mode.
|
|
149
|
+
*/
|
|
150
|
+
updateStorageUsed(id, deltaBytes) {
|
|
151
|
+
this.db
|
|
152
|
+
.prepare(`UPDATE tenants
|
|
153
|
+
SET storage_used_bytes = MAX(0, storage_used_bytes + ?)
|
|
154
|
+
WHERE id = ?`)
|
|
155
|
+
.run(deltaBytes, id);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check whether `additionalBytes` can be stored without exceeding the tenant's
|
|
159
|
+
* quota. Throws `QuotaExceededError` when the quota would be exceeded.
|
|
160
|
+
* Does nothing when quota is null (unlimited) or tenant not found.
|
|
161
|
+
*/
|
|
162
|
+
checkQuota(id, additionalBytes) {
|
|
163
|
+
const tenant = this.get(id);
|
|
164
|
+
if (tenant === null || tenant.storageQuotaBytes === null)
|
|
165
|
+
return;
|
|
166
|
+
const projected = tenant.storageUsedBytes + additionalBytes;
|
|
167
|
+
if (projected > tenant.storageQuotaBytes) {
|
|
168
|
+
throw new QuotaExceededError(id, tenant.storageQuotaBytes, tenant.storageUsedBytes, additionalBytes);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// ─── Default-tenant bootstrap ─────────────────────────────────────────────────
|
|
173
|
+
/**
|
|
174
|
+
* Ensure the default "local" tenant exists in the auth DB.
|
|
175
|
+
* Called during single-tenant startup so stdio mode always has a valid tenant.
|
|
176
|
+
*/
|
|
177
|
+
export function ensureDefaultTenant(db) {
|
|
178
|
+
const exists = db
|
|
179
|
+
.prepare('SELECT id FROM tenants WHERE id = ?')
|
|
180
|
+
.get(DEFAULT_TENANT_ID);
|
|
181
|
+
if (!exists) {
|
|
182
|
+
try {
|
|
183
|
+
db.prepare(`INSERT INTO tenants (id, name, created_at, settings, storage_quota_bytes, storage_used_bytes, plan)
|
|
184
|
+
VALUES (?, ?, ?, NULL, NULL, 0, 'team')`).run(DEFAULT_TENANT_ID, 'Local', new Date().toISOString());
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Another process may have inserted concurrently — ignore duplicate
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function rowToTenant(row) {
|
|
192
|
+
return {
|
|
193
|
+
id: row.id,
|
|
194
|
+
name: row.name,
|
|
195
|
+
createdAt: row.created_at,
|
|
196
|
+
settings: row.settings !== null ? JSON.parse(row.settings) : null,
|
|
197
|
+
storageQuotaBytes: row.storage_quota_bytes ?? null,
|
|
198
|
+
storageUsedBytes: row.storage_used_bytes ?? 0,
|
|
199
|
+
plan: row.plan ?? 'team',
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function rowToMember(row) {
|
|
203
|
+
return {
|
|
204
|
+
workspaceId: row.workspace_id,
|
|
205
|
+
userId: row.user_id,
|
|
206
|
+
role: row.role,
|
|
207
|
+
addedAt: row.added_at,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// ─── Convenience factory ──────────────────────────────────────────────────────
|
|
211
|
+
/**
|
|
212
|
+
* Create a workspace (tenant) with the given name and plan.
|
|
213
|
+
* Convenience wrapper around TenantStore.create().
|
|
214
|
+
*/
|
|
215
|
+
export function createWorkspace(db, name, plan) {
|
|
216
|
+
const store = new TenantStore(db);
|
|
217
|
+
return store.create(name, { plan: plan ?? 'team' });
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=tenants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenants.js","sourceRoot":"","sources":["../../../src/core/db/tenants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export declare class PureContextError extends Error {
|
|
2
|
+
readonly cause?: unknown | undefined;
|
|
3
|
+
/** Human-readable message for the end user — no internal paths or stack traces. */
|
|
4
|
+
userMessage?: string;
|
|
5
|
+
/** Specific, actionable command or config change the user should try. */
|
|
6
|
+
suggestion?: string;
|
|
7
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
8
|
+
}
|
|
9
|
+
export declare class NativeDependencyError extends PureContextError {
|
|
10
|
+
userMessage: string;
|
|
11
|
+
suggestion: string;
|
|
12
|
+
constructor(cause?: unknown);
|
|
13
|
+
}
|
|
14
|
+
export declare class GrammarNotFoundError extends PureContextError {
|
|
15
|
+
readonly language: string;
|
|
16
|
+
userMessage: string;
|
|
17
|
+
suggestion: string;
|
|
18
|
+
constructor(language: string, cause?: unknown);
|
|
19
|
+
}
|
|
20
|
+
export declare class ProjectTooLargeError extends PureContextError {
|
|
21
|
+
readonly fileCount: number;
|
|
22
|
+
readonly limit: number;
|
|
23
|
+
userMessage: string;
|
|
24
|
+
suggestion: string;
|
|
25
|
+
constructor(fileCount: number, limit: number);
|
|
26
|
+
}
|
|
27
|
+
export declare class ConfigValidationError extends PureContextError {
|
|
28
|
+
userMessage: string;
|
|
29
|
+
suggestion: string;
|
|
30
|
+
constructor(formattedErrors: string, configPath?: string);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Format a PureContextError as a bordered box for stderr display.
|
|
34
|
+
*
|
|
35
|
+
* Example output:
|
|
36
|
+
* ┌─ PureContext Error ───────────────────────────────────────────────────────┐
|
|
37
|
+
* │ Could not load SQLite driver. │
|
|
38
|
+
* │ │
|
|
39
|
+
* │ Try: npm rebuild better-sqlite3 │
|
|
40
|
+
* └───────────────────────────────────────────────────────────────────────────┘
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatErrorBox(userMessage: string, suggestion: string): string;
|
|
43
|
+
export declare class IndexError extends PureContextError {
|
|
44
|
+
readonly filePath?: string | undefined;
|
|
45
|
+
constructor(message: string, filePath?: string | undefined, cause?: unknown);
|
|
46
|
+
}
|
|
47
|
+
export declare class ParseError extends PureContextError {
|
|
48
|
+
readonly filePath: string;
|
|
49
|
+
constructor(message: string, filePath: string, cause?: unknown);
|
|
50
|
+
}
|
|
51
|
+
export declare class ConfigError extends PureContextError {
|
|
52
|
+
}
|
|
53
|
+
export declare class StorageError extends PureContextError {
|
|
54
|
+
readonly operation?: string | undefined;
|
|
55
|
+
constructor(message: string, operation?: string | undefined, cause?: unknown);
|
|
56
|
+
}
|
|
57
|
+
export declare class QuotaExceededError extends PureContextError {
|
|
58
|
+
readonly tenantId: string;
|
|
59
|
+
readonly quotaBytes: number;
|
|
60
|
+
readonly usedBytes: number;
|
|
61
|
+
readonly requestedBytes: number;
|
|
62
|
+
constructor(tenantId: string, quotaBytes: number, usedBytes: number, requestedBytes: number);
|
|
63
|
+
}
|
|
64
|
+
export declare class WorkspaceLimitError extends PureContextError {
|
|
65
|
+
readonly limitType: 'repos' | 'files';
|
|
66
|
+
readonly limit: number;
|
|
67
|
+
readonly current: number;
|
|
68
|
+
userMessage: string;
|
|
69
|
+
suggestion: string;
|
|
70
|
+
constructor(limitType: 'repos' | 'files', limit: number, current: number);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;aAQvB,KAAK,CAAC,EAAE,OAAO;IAPjC,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;gBAGlB,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAQlC;AAID,qBAAa,qBAAsB,SAAQ,gBAAgB;IAChD,WAAW,SAAmD;IAC9D,UAAU,SAE+C;gBAEtD,KAAK,CAAC,EAAE,OAAO;CAG5B;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;aAI5B,QAAQ,EAAE,MAAM;IAHnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,SAA6D;gBAEpD,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAI9D;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;aAI5B,SAAS,EAAE,MAAM;aAAkB,KAAK,EAAE,MAAM;IAHnE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;gBAEA,SAAS,EAAE,MAAM,EAAkB,KAAK,EAAE,MAAM;CAK7E;AAED,qBAAa,qBAAsB,SAAQ,gBAAgB;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,SAAwE;gBAE/E,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAMzD;AAID;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiB9E;AAED,qBAAa,UAAW,SAAQ,gBAAgB;aAG5B,QAAQ,CAAC,EAAE,MAAM;gBADjC,OAAO,EAAE,MAAM,EACC,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjC,KAAK,CAAC,EAAE,OAAO;CAIlB;AAED,qBAAa,UAAW,SAAQ,gBAAgB;aAG5B,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChC,KAAK,CAAC,EAAE,OAAO;CAIlB;AAED,qBAAa,WAAY,SAAQ,gBAAgB;CAAG;AAEpD,qBAAa,YAAa,SAAQ,gBAAgB;aAG9B,SAAS,CAAC,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,SAAS,CAAC,EAAE,MAAM,YAAA,EAClC,KAAK,CAAC,EAAE,OAAO;CAIlB;AAED,qBAAa,kBAAmB,SAAQ,gBAAgB;aAEpC,QAAQ,EAAE,MAAM;aAChB,UAAU,EAAE,MAAM;aAClB,SAAS,EAAE,MAAM;aACjB,cAAc,EAAE,MAAM;gBAHtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM;CAOzC;AAED,qBAAa,mBAAoB,SAAQ,gBAAgB;aAKrC,SAAS,EAAE,OAAO,GAAG,OAAO;aAC5B,KAAK,EAAE,MAAM;aACb,OAAO,EAAE,MAAM;IANxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;gBAGV,SAAS,EAAE,OAAO,GAAG,OAAO,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM;CAWlC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
export class PureContextError extends Error {
|
|
2
|
+
cause;
|
|
3
|
+
/** Human-readable message for the end user — no internal paths or stack traces. */
|
|
4
|
+
userMessage;
|
|
5
|
+
/** Specific, actionable command or config change the user should try. */
|
|
6
|
+
suggestion;
|
|
7
|
+
constructor(message, cause) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.cause = cause;
|
|
10
|
+
this.name = this.constructor.name;
|
|
11
|
+
if (cause instanceof Error && cause.stack) {
|
|
12
|
+
this.stack = `${this.stack ?? ''}\nCaused by: ${cause.stack}`;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// ─── User-facing error classes ────────────────────────────────────────────────
|
|
17
|
+
export class NativeDependencyError extends PureContextError {
|
|
18
|
+
userMessage = 'PureContext could not load its SQLite driver.';
|
|
19
|
+
suggestion = 'This is usually a Node.js version mismatch. Try: npm rebuild better-sqlite3\n' +
|
|
20
|
+
'Still broken? https://github.com/gococ/purecontext-mcp/issues';
|
|
21
|
+
constructor(cause) {
|
|
22
|
+
super('Failed to load better-sqlite3 native addon', cause);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class GrammarNotFoundError extends PureContextError {
|
|
26
|
+
language;
|
|
27
|
+
userMessage;
|
|
28
|
+
suggestion = 'Try reinstalling: npm install -g purecontext-mcp@latest';
|
|
29
|
+
constructor(language, cause) {
|
|
30
|
+
super(`Grammar file not found for language: ${language}`, cause);
|
|
31
|
+
this.language = language;
|
|
32
|
+
this.userMessage = `Grammar file not found for language: ${language}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class ProjectTooLargeError extends PureContextError {
|
|
36
|
+
fileCount;
|
|
37
|
+
limit;
|
|
38
|
+
userMessage;
|
|
39
|
+
suggestion;
|
|
40
|
+
constructor(fileCount, limit) {
|
|
41
|
+
super(`Project has ${fileCount} files, which exceeds fileLimit (${limit})`);
|
|
42
|
+
this.fileCount = fileCount;
|
|
43
|
+
this.limit = limit;
|
|
44
|
+
this.userMessage = `Project has ${fileCount} files, which exceeds fileLimit (${limit}).`;
|
|
45
|
+
this.suggestion = `Raise fileLimit in ~/.purecontext/config.json:\n { "fileLimit": ${fileCount + 1000} }`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class ConfigValidationError extends PureContextError {
|
|
49
|
+
userMessage;
|
|
50
|
+
suggestion = "Run 'purecontext-mcp config --check' to validate your config file.";
|
|
51
|
+
constructor(formattedErrors, configPath) {
|
|
52
|
+
const location = configPath ? ` in ${configPath}` : '';
|
|
53
|
+
const msg = `Config error${location}:\n${formattedErrors}`;
|
|
54
|
+
super(msg);
|
|
55
|
+
this.userMessage = msg;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// ─── Error box formatter ──────────────────────────────────────────────────────
|
|
59
|
+
/**
|
|
60
|
+
* Format a PureContextError as a bordered box for stderr display.
|
|
61
|
+
*
|
|
62
|
+
* Example output:
|
|
63
|
+
* ┌─ PureContext Error ───────────────────────────────────────────────────────┐
|
|
64
|
+
* │ Could not load SQLite driver. │
|
|
65
|
+
* │ │
|
|
66
|
+
* │ Try: npm rebuild better-sqlite3 │
|
|
67
|
+
* └───────────────────────────────────────────────────────────────────────────┘
|
|
68
|
+
*/
|
|
69
|
+
export function formatErrorBox(userMessage, suggestion) {
|
|
70
|
+
const INNER = 73; // characters between │ and │ margins (including the 1-space padding on each side)
|
|
71
|
+
const pad = (s) => `│ ${s.padEnd(INNER)} │`;
|
|
72
|
+
const blank = pad('');
|
|
73
|
+
const msgLines = userMessage.split('\n').map(pad);
|
|
74
|
+
const sugLines = suggestion ? suggestion.split('\n').map(pad) : [];
|
|
75
|
+
const top = '┌─ PureContext Error ' + '─'.repeat(INNER - 17) + '┐';
|
|
76
|
+
const bottom = '└' + '─'.repeat(INNER + 2) + '┘';
|
|
77
|
+
const parts = [top, ...msgLines];
|
|
78
|
+
if (sugLines.length > 0) {
|
|
79
|
+
parts.push(blank, ...sugLines);
|
|
80
|
+
}
|
|
81
|
+
parts.push(bottom);
|
|
82
|
+
return parts.join('\n');
|
|
83
|
+
}
|
|
84
|
+
export class IndexError extends PureContextError {
|
|
85
|
+
filePath;
|
|
86
|
+
constructor(message, filePath, cause) {
|
|
87
|
+
super(filePath ? `${message}: ${filePath}` : message, cause);
|
|
88
|
+
this.filePath = filePath;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export class ParseError extends PureContextError {
|
|
92
|
+
filePath;
|
|
93
|
+
constructor(message, filePath, cause) {
|
|
94
|
+
super(`${message}: ${filePath}`, cause);
|
|
95
|
+
this.filePath = filePath;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export class ConfigError extends PureContextError {
|
|
99
|
+
}
|
|
100
|
+
export class StorageError extends PureContextError {
|
|
101
|
+
operation;
|
|
102
|
+
constructor(message, operation, cause) {
|
|
103
|
+
super(operation ? `[${operation}] ${message}` : message, cause);
|
|
104
|
+
this.operation = operation;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export class QuotaExceededError extends PureContextError {
|
|
108
|
+
tenantId;
|
|
109
|
+
quotaBytes;
|
|
110
|
+
usedBytes;
|
|
111
|
+
requestedBytes;
|
|
112
|
+
constructor(tenantId, quotaBytes, usedBytes, requestedBytes) {
|
|
113
|
+
super(`Storage quota exceeded for tenant "${tenantId}": ` +
|
|
114
|
+
`${usedBytes + requestedBytes} bytes needed, ${quotaBytes} bytes allowed`);
|
|
115
|
+
this.tenantId = tenantId;
|
|
116
|
+
this.quotaBytes = quotaBytes;
|
|
117
|
+
this.usedBytes = usedBytes;
|
|
118
|
+
this.requestedBytes = requestedBytes;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export class WorkspaceLimitError extends PureContextError {
|
|
122
|
+
limitType;
|
|
123
|
+
limit;
|
|
124
|
+
current;
|
|
125
|
+
userMessage;
|
|
126
|
+
suggestion;
|
|
127
|
+
constructor(limitType, limit, current) {
|
|
128
|
+
const msg = limitType === 'repos'
|
|
129
|
+
? `Free plan is limited to ${limit} repos (you have ${current}). Upgrade to Team at purecontext.dev/pricing.`
|
|
130
|
+
: `Free plan repos are limited to ${limit} files (project has more). Upgrade to Team at purecontext.dev/pricing.`;
|
|
131
|
+
super(msg);
|
|
132
|
+
this.limitType = limitType;
|
|
133
|
+
this.limit = limit;
|
|
134
|
+
this.current = current;
|
|
135
|
+
this.userMessage = msg;
|
|
136
|
+
this.suggestion =
|
|
137
|
+
'Upgrade to Team plan at purecontext.dev/pricing for unlimited repos and files.';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DiscoveredFile } from './types.js';
|
|
2
|
+
export declare const DEFAULT_FILE_LIMIT = 10000;
|
|
3
|
+
export interface DiscoveryOptions {
|
|
4
|
+
extensions?: string[];
|
|
5
|
+
/** Maximum files to return. 0 = unlimited. Default: DEFAULT_FILE_LIMIT. */
|
|
6
|
+
fileLimit?: number;
|
|
7
|
+
extraExcludePatterns?: string[];
|
|
8
|
+
/** Maximum file size in bytes — files larger than this are skipped. Default: 1 MB. */
|
|
9
|
+
maxFileSizeBytes?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface DiscoveryResult {
|
|
12
|
+
files: DiscoveredFile[];
|
|
13
|
+
/** Total files found before the fileLimit was applied. */
|
|
14
|
+
totalBeforeLimit: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function discoverFiles(rootPath: string, options?: DiscoveryOptions): DiscoveryResult;
|
|
17
|
+
//# sourceMappingURL=file-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../src/core/file-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiCjD,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAIxC,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAqBjB"}
|