diff --git a/benchmarks/annotations/abseil-cpp.json b/benchmarks/annotations/abseil-cpp.json new file mode 100644 index 0000000..5c34234 --- /dev/null +++ b/benchmarks/annotations/abseil-cpp.json @@ -0,0 +1,122 @@ +[ + { + "query": "absl::flat_hash_map and flat_hash_set hash table containers", + "relevant": ["absl/container/flat_hash_map.h"], + "secondary": ["absl/container/flat_hash_set.h"], + "category": "semantic" + }, + { + "query": "raw_hash_set open addressing SIMD group-based slot probing implementation", + "relevant": ["absl/container/internal/raw_hash_set.h"], + "secondary": [], + "category": "architecture" + }, + { + "query": "absl::string_view for non-owning string references", + "relevant": ["absl/strings/string_view.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::StrCat and StrAppend for efficient string concatenation", + "relevant": ["absl/strings/str_cat.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::StrSplit and StrJoin for string splitting and joining", + "relevant": ["absl/strings/str_split.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::Status and StatusOr for error propagation", + "relevant": ["absl/status/status.h"], + "secondary": ["absl/status/statusor.h"], + "category": "semantic" + }, + { + "query": "absl::Time and absl::Duration for time representation", + "relevant": ["absl/time/time.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::optional and absl::variant for vocabulary types", + "relevant": ["absl/types/optional.h"], + "secondary": ["absl/types/variant.h"], + "category": "semantic" + }, + { + "query": "absl::Mutex and MutexLock for synchronization", + "relevant": ["absl/synchronization/mutex.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl logging macros ABSL_LOG and ABSL_CHECK", + "relevant": ["absl/log/absl_log.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::Span for non-owning sequence view", + "relevant": ["absl/types/span.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::node_hash_map for pointer-stable hash map", + "relevant": ["absl/container/node_hash_map.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::Hash and the Abseil hashing framework", + "relevant": ["absl/hash/hash.h"], + "secondary": [], + "category": "architecture" + }, + { + "query": "absl::Notification for one-time event signaling between threads", + "relevant": ["absl/synchronization/notification.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::AnyInvocable for move-only callable wrapper", + "relevant": ["absl/functional/any_invocable.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::btree_map and btree_set sorted containers", + "relevant": ["absl/container/btree_map.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "absl::StrFormat and string formatting API", + "relevant": ["absl/strings/str_format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "flat_hash_map", + "relevant": ["absl/container/flat_hash_map.h"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Status", + "relevant": ["absl/status/status.h"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Mutex", + "relevant": ["absl/synchronization/mutex.h"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/aeson.json b/benchmarks/annotations/aeson.json new file mode 100644 index 0000000..9204778 --- /dev/null +++ b/benchmarks/annotations/aeson.json @@ -0,0 +1,122 @@ +[ + { + "query": "parsing a JSON object field with the (.:) operator", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how withObject expects a JSON object and runs a parser on it", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how typeMismatch produces an error message for wrong JSON types", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parseEither runs a parser and returns Either String", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parseMaybe runs a parser and returns Nothing on failure", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how withText parses a JSON string value", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how withArray parses a JSON array value", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Template Haskell derives FromJSON and ToJSON instances", + "relevant": ["src/Data/Aeson/TH.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how genericToJSON uses GHC generics to encode a value", + "relevant": ["src/Data/Aeson/Types/ToJSON.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how camelCase field names are converted to snake_case for JSON keys", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how modifyFailure customizes error messages in a parser", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how optional fields use (.:?) with a default value via (.!=)", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how JSON encoding produces Encoding without materializing a Value", + "relevant": ["src/Data/Aeson/Encoding.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Key type is used as object field identifier", + "relevant": ["src/Data/Aeson/KeyMap.hs"], + "secondary": ["src/Data/Aeson/Key.hs"], + "category": "semantic" + }, + { + "query": "how withScientific parses a JSON number as Scientific", + "relevant": ["src/Data/Aeson/Types/FromJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the Parser monad accumulates and reports JSON path errors", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how toJSONKeyText creates a ToJSONKey instance from a text function", + "relevant": ["src/Data/Aeson/Types/ToJSON.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how emptyObject and emptyArray constants are defined", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how sum types are encoded with tag and contents fields", + "relevant": ["src/Data/Aeson/Types/ToJSON.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how formatError formats a JSONPath and message into a string", + "relevant": ["src/Data/Aeson/Types/Internal.hs"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/aiohttp.json b/benchmarks/annotations/aiohttp.json index ea00500..748d2ab 100644 --- a/benchmarks/annotations/aiohttp.json +++ b/benchmarks/annotations/aiohttp.json @@ -1,90 +1,195 @@ [ { "query": "how the async HTTP client session works", - "relevant": ["aiohttp/client.py"], - "secondary": [] + "relevant": [ + "aiohttp/client.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "connection pooling and TCP connector", - "relevant": ["aiohttp/connector.py"], - "secondary": [] + "relevant": [ + "aiohttp/connector.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "WebSocket client implementation", - "relevant": ["aiohttp/client_ws.py"], - "secondary": ["aiohttp/_websocket/reader.py"] + "relevant": [ + "aiohttp/client_ws.py" + ], + "secondary": [ + "aiohttp/_websocket/reader.py" + ], + "category": "semantic" }, { "query": "request and response object internals", - "relevant": ["aiohttp/client_reqrep.py"], - "secondary": [] + "relevant": [ + "aiohttp/client_reqrep.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "URL routing and resource dispatching", - "relevant": ["aiohttp/web_urldispatcher.py"], - "secondary": [] + "relevant": [ + "aiohttp/web_urldispatcher.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "server-side middleware execution", - "relevant": ["aiohttp/web_middlewares.py"], - "secondary": ["aiohttp/web_app.py"] + "relevant": [ + "aiohttp/web_middlewares.py" + ], + "secondary": [ + "aiohttp/web_app.py" + ], + "category": "semantic" }, { "query": "multipart and form data handling", - "relevant": ["aiohttp/multipart.py"], - "secondary": ["aiohttp/formdata.py"] + "relevant": [ + "aiohttp/multipart.py" + ], + "secondary": [ + "aiohttp/formdata.py" + ], + "category": "semantic" }, { "query": "response streaming and payload", - "relevant": ["aiohttp/streams.py"], - "secondary": ["aiohttp/payload.py"] + "relevant": [ + "aiohttp/streams.py" + ], + "secondary": [ + "aiohttp/payload.py" + ], + "category": "semantic" }, { "query": "HTTP exception types and error responses", - "relevant": ["aiohttp/web_exceptions.py"], - "secondary": ["aiohttp/client_exceptions.py"] + "relevant": [ + "aiohttp/web_exceptions.py" + ], + "secondary": [ + "aiohttp/client_exceptions.py" + ], + "category": "semantic" }, { "query": "request tracing and observability hooks", - "relevant": ["aiohttp/tracing.py"], - "secondary": [] + "relevant": [ + "aiohttp/tracing.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how chunked transfer encoding is parsed", - "relevant": ["aiohttp/http_parser.py"], - "secondary": [] + "relevant": [ + "aiohttp/http_parser.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how DNS resolution is handled asynchronously", - "relevant": ["aiohttp/resolver.py"], - "secondary": ["aiohttp/connector.py"] + "relevant": [ + "aiohttp/resolver.py" + ], + "secondary": [ + "aiohttp/connector.py" + ], + "category": "architecture" }, { "query": "how backpressure and flow control work in streaming", - "relevant": ["aiohttp/streams.py"], - "secondary": [] + "relevant": [ + "aiohttp/streams.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how connection draining and cleanup happen on close", - "relevant": ["aiohttp/connector.py"], - "secondary": ["aiohttp/client_proto.py"] + "relevant": [ + "aiohttp/connector.py" + ], + "secondary": [ + "aiohttp/client_proto.py" + ], + "category": "architecture" }, { "query": "how the web application sets up and tears down on startup", - "relevant": ["aiohttp/web_app.py"], - "secondary": ["aiohttp/web_runner.py"] + "relevant": [ + "aiohttp/web_app.py" + ], + "secondary": [ + "aiohttp/web_runner.py" + ], + "category": "architecture" + }, + { + "query": "ClientSession", + "relevant": [ + "aiohttp/client.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "TCPConnector", + "relevant": [ + "aiohttp/connector.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "UrlDispatcher", + "relevant": [ + "aiohttp/web_urldispatcher.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ClientResponse", + "relevant": [ + "aiohttp/client_reqrep.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "TraceConfig", + "relevant": [ + "aiohttp/tracing.py" + ], + "secondary": [], + "category": "symbol" }, - {"query": "ClientSession", "relevant": ["aiohttp/client.py"], "secondary": []}, - {"query": "TCPConnector", "relevant": ["aiohttp/connector.py"], "secondary": []}, - {"query": "UrlDispatcher", "relevant": ["aiohttp/web_urldispatcher.py"], "secondary": []}, - {"query": "ClientResponse", "relevant": ["aiohttp/client_reqrep.py"], "secondary": []}, - {"query": "TraceConfig", "relevant": ["aiohttp/tracing.py"], "secondary": []}, { "query": "how ClientSession acquires and releases connections from the connector", - "relevant": ["aiohttp/client.py"], - "secondary": ["aiohttp/connector.py"], + "relevant": [ + "aiohttp/client.py" + ], + "secondary": [ + "aiohttp/connector.py" + ], "category": "architecture", - "seed": {"path": "aiohttp/client.py", "line": 374}, - "related": ["aiohttp/connector.py"] + "seed": { + "path": "aiohttp/client.py", + "line": 374 + }, + "related": [ + "aiohttp/connector.py" + ] } ] diff --git a/benchmarks/annotations/alamofire.json b/benchmarks/annotations/alamofire.json index df5ee2b..fd9fc3f 100644 --- a/benchmarks/annotations/alamofire.json +++ b/benchmarks/annotations/alamofire.json @@ -1,99 +1,172 @@ [ { "query": "how the Session manages the underlying URLSession and dispatches requests", - "relevant": ["Source/Core/Session.swift"], - "secondary": ["Source/Core/SessionDelegate.swift"], + "relevant": [ + "Source/Core/Session.swift" + ], + "secondary": [ + "Source/Core/SessionDelegate.swift" + ], "category": "architecture" }, { "query": "how request retrying is implemented with backoff and retry conditions", - "relevant": ["Source/Features/RetryPolicy.swift"], - "secondary": ["Source/Features/RequestInterceptor.swift"], + "relevant": [ + "Source/Features/RetryPolicy.swift" + ], + "secondary": [ + "Source/Features/RequestInterceptor.swift" + ], "category": "architecture" }, { "query": "how response validation checks status codes and content types", - "relevant": ["Source/Features/Validation.swift"], + "relevant": [ + "Source/Features/Validation.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how response serialization decodes JSON, Decodable, and strings", - "relevant": ["Source/Features/ResponseSerialization.swift"], + "relevant": [ + "Source/Features/ResponseSerialization.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how multipart form data encodes fields and file attachments", - "relevant": ["Source/Features/MultipartFormData.swift"], - "secondary": ["Source/Features/MultipartUpload.swift"], + "relevant": [ + "Source/Features/MultipartFormData.swift" + ], + "secondary": [ + "Source/Features/MultipartUpload.swift" + ], "category": "semantic" }, { "query": "how authentication interceptors handle credential challenges", - "relevant": ["Source/Features/AuthenticationInterceptor.swift"], + "relevant": [ + "Source/Features/AuthenticationInterceptor.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how server trust evaluation handles SSL certificate pinning", - "relevant": ["Source/Features/ServerTrustEvaluation.swift"], + "relevant": [ + "Source/Features/ServerTrustEvaluation.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how URL query parameters are encoded from Encodable values", - "relevant": ["Source/Features/URLEncodedFormEncoder.swift"], - "secondary": ["Source/Core/ParameterEncoder.swift"], + "relevant": [ + "Source/Features/URLEncodedFormEncoder.swift" + ], + "secondary": [ + "Source/Core/ParameterEncoder.swift" + ], "category": "semantic" }, { "query": "how network reachability is monitored to detect connectivity changes", - "relevant": ["Source/Features/NetworkReachabilityManager.swift"], + "relevant": [ + "Source/Features/NetworkReachabilityManager.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how download requests save responses to disk", - "relevant": ["Source/Core/DownloadRequest.swift"], + "relevant": [ + "Source/Core/DownloadRequest.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how request and response events are logged via EventMonitor", - "relevant": ["Source/Features/EventMonitor.swift"], + "relevant": [ + "Source/Features/EventMonitor.swift" + ], "secondary": [], "category": "semantic" }, { "query": "how the Request class tracks lifecycle state transitions", - "relevant": ["Source/Core/Request.swift"], + "relevant": [ + "Source/Core/Request.swift" + ], "secondary": [], "category": "architecture" }, { "query": "Session", - "relevant": ["Source/Core/Session.swift"], - "secondary": [] + "relevant": [ + "Source/Core/Session.swift" + ], + "secondary": [], + "category": "symbol" }, { "query": "AFError", - "relevant": ["Source/Core/AFError.swift"], - "secondary": [] + "relevant": [ + "Source/Core/AFError.swift" + ], + "secondary": [], + "category": "symbol" }, { "query": "RetryPolicy", - "relevant": ["Source/Features/RetryPolicy.swift"], - "secondary": [] + "relevant": [ + "Source/Features/RetryPolicy.swift" + ], + "secondary": [], + "category": "symbol" }, { "query": "ServerTrustEvaluating", - "relevant": ["Source/Features/ServerTrustEvaluation.swift"], - "secondary": [] + "relevant": [ + "Source/Features/ServerTrustEvaluation.swift" + ], + "secondary": [], + "category": "symbol" }, { "query": "HTTPHeaders", - "relevant": ["Source/Core/HTTPHeaders.swift"], - "secondary": [] + "relevant": [ + "Source/Core/HTTPHeaders.swift" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how upload requests stream data to the server", + "relevant": [ + "Source/Core/UploadRequest.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "parameter encoding for URL and JSON request bodies", + "relevant": [ + "Source/Core/ParameterEncoding.swift" + ], + "secondary": [ + "Source/Core/ParameterEncoder.swift" + ], + "category": "semantic" + }, + { + "query": "URLConvertible", + "relevant": [ + "Source/Core/URLConvertible+URLRequestConvertible.swift" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/axios.json b/benchmarks/annotations/axios.json index 3466c21..301b3b4 100644 --- a/benchmarks/annotations/axios.json +++ b/benchmarks/annotations/axios.json @@ -42,5 +42,83 @@ "relevant": [{"path": "lib/core/mergeConfig.js", "start_line": 17, "end_line": 106}], "secondary": [], "category": "symbol" + }, + { + "query": "XHR browser adapter implementation", + "relevant": ["lib/adapters/xhr.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "request cancellation and abort controller support", + "relevant": ["lib/cancel/CancelToken.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "URL building and query parameter serialization", + "relevant": ["lib/helpers/buildURL.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "HTTP response settling and status code validation", + "relevant": ["lib/core/settle.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "axios default configuration and request/response transformers", + "relevant": ["lib/defaults/index.js"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how axios instances are created with custom base config", + "relevant": ["lib/core/Axios.js"], + "secondary": ["lib/axios.js"], + "category": "architecture" + }, + { + "query": "header management and case-insensitive normalization", + "relevant": ["lib/core/AxiosHeaders.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "error types and axios-specific error enrichment", + "relevant": ["lib/core/AxiosError.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how request and response data is transformed in the pipeline", + "relevant": ["lib/core/dispatchRequest.js"], + "secondary": ["lib/defaults/index.js"], + "category": "architecture" + }, + { + "query": "general utility functions for type checking and extending", + "relevant": ["lib/utils.js"], + "secondary": [], + "category": "semantic" + }, + { + "query": "CancelToken", + "relevant": ["lib/cancel/CancelToken.js"], + "secondary": [], + "category": "symbol" + }, + { + "query": "AxiosError", + "relevant": ["lib/core/AxiosError.js"], + "secondary": [], + "category": "symbol" + }, + { + "query": "AxiosHeaders", + "relevant": ["lib/core/AxiosHeaders.js"], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/axum.json b/benchmarks/annotations/axum.json new file mode 100644 index 0000000..16341fc --- /dev/null +++ b/benchmarks/annotations/axum.json @@ -0,0 +1,162 @@ +[ + { + "query": "how axum Handler trait dispatches requests to async handler functions", + "relevant": [ + "axum/src/handler/mod.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Router path_router implementation for storing and matching routes", + "relevant": [ + "axum/src/routing/path_router.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how extractors implement FromRequest and FromRequestParts", + "relevant": [ + "axum/src/extract/mod.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Path extractor for capturing URL path parameters", + "relevant": [ + "axum/src/extract/path/mod.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "State extractor for sharing application state across handlers", + "relevant": [ + "axum/src/extract/state.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Json extractor and response for deserializing and serializing JSON bodies", + "relevant": [ + "axum/src/json.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how IntoResponse converts handler return values to HTTP responses", + "relevant": [ + "axum/src/response/mod.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "from_fn middleware for wrapping handlers with async functions", + "relevant": [ + "axum/src/middleware/from_fn.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "error handling and how errors are converted to responses", + "relevant": [ + "axum/src/error_handling/mod.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how axum nests routers and merges router trees", + "relevant": [ + "axum/src/routing/mod.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Form extractor for parsing URL-encoded request bodies", + "relevant": [ + "axum/src/form.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "WebSocket upgrade and handler", + "relevant": [ + "axum/src/extract/ws.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how MethodRouter dispatches GET POST PUT DELETE by HTTP method", + "relevant": [ + "axum/src/routing/method_routing.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "BoxedIntoRoute and type-erased route storage", + "relevant": [ + "axum/src/routing/route.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "parsing uploaded binary file parts from HTTP requests", + "relevant": [ + "axum/src/extract/multipart.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how axum maps Tower middleware layers onto the router", + "relevant": [ + "axum/src/middleware/mod.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "rejection types and rejection responses for failed extractions", + "relevant": [ + "axum/src/extract/rejection.rs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Router", + "relevant": [ + "axum/src/routing/mod.rs" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "IntoResponse", + "relevant": [ + "axum/src/response/mod.rs" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "FromRequest", + "relevant": [ + "axum/src/extract/mod.rs" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/bash-it.json b/benchmarks/annotations/bash-it.json new file mode 100644 index 0000000..bbd7bea --- /dev/null +++ b/benchmarks/annotations/bash-it.json @@ -0,0 +1,176 @@ +[ + { + "query": "how bash-it loads and enables plugins", + "relevant": [ + "lib/helpers.bash" + ], + "secondary": [ + "bash_it.sh" + ], + "category": "semantic" + }, + { + "query": "function to enable a bash-it component like plugin or alias", + "relevant": [ + "lib/helpers.bash" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how command duration is measured and displayed in prompt", + "relevant": [ + "lib/command_duration.bash" + ], + "secondary": [ + "lib/preexec.bash" + ], + "category": "semantic" + }, + { + "query": "battery level detection for shell prompt", + "relevant": [ + "lib/battery.bash" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "bash-it search functionality for finding plugins and aliases", + "relevant": [ + "lib/search.bash" + ], + "secondary": [ + "lib/helpers.bash" + ], + "category": "semantic" + }, + { + "query": "logging utilities for bash-it debug output", + "relevant": [ + "lib/log.bash" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "color definitions and terminal color support", + "relevant": [ + "lib/colors.bash" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "bash history configuration and deduplication", + "relevant": [ + "lib/history.bash" + ], + "secondary": [ + "plugins/available/history-eternal.plugin.bash" + ], + "category": "semantic" + }, + { + "query": "how tab completion scripts are sourced and activated", + "relevant": [ + "lib/completion.bash" + ], + "secondary": [ + "plugins/available/alias-completion.plugin.bash" + ], + "category": "semantic" + }, + { + "query": "preexec and precmd hook implementation", + "relevant": [ + "lib/preexec.bash" + ], + "secondary": [ + "lib/command_duration.bash" + ], + "category": "semantic" + }, + { + "query": "pyenv integration plugin for bash", + "relevant": [ + "plugins/available/pyenv.plugin.bash" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ssh agent plugin for managing ssh keys", + "relevant": [ + "plugins/available/ssh.plugin.bash" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "jump plugin for bookmarking directories", + "relevant": [ + "plugins/available/jump.plugin.bash" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "node version manager nvm integration", + "relevant": [ + "plugins/available/node.plugin.bash" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "rvm ruby version manager plugin", + "relevant": [ + "plugins/available/rvm.plugin.bash" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "bash-it utility functions for string manipulation", + "relevant": [ + "lib/utilities.bash" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "hub github cli aliases and helpers", + "relevant": [ + "plugins/available/hub.plugin.bash" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "xterm terminal title setting functions", + "relevant": [ + "plugins/available/xterm.plugin.bash" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "bash-it main entry point and initialization", + "relevant": [ + "bash_it.sh" + ], + "secondary": [ + "lib/helpers.bash" + ], + "category": "semantic" + }, + { + "query": "projects plugin for switching between project directories", + "relevant": [ + "plugins/available/projects.plugin.bash" + ], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/bats-core.json b/benchmarks/annotations/bats-core.json new file mode 100644 index 0000000..32fa85e --- /dev/null +++ b/benchmarks/annotations/bats-core.json @@ -0,0 +1,122 @@ +[ + { + "query": "how the run command captures output and exit status of a command under test", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats loads external helper libraries with load", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats_pipe chains commands and captures their exit codes", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how skip aborts a test without marking it as a failure", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats_separate_lines splits command output into an array", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parallel test execution is gated with a semaphore", + "relevant": ["lib/bats-core/semaphore.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how a test file is preprocessed before execution", + "relevant": ["lib/bats-core/preprocessing.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how stack traces are captured on test failure", + "relevant": ["lib/bats-core/tracing.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how test function metadata is registered", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how bats formats test result output", + "relevant": ["lib/bats-core/formatter.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats validates the test count across parallel workers", + "relevant": ["lib/bats-core/validator.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how bats finds a library in the BATS_LIB_PATH", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats_errexit_subshell runs a command in a subshell with errexit", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how setup and teardown hooks are called around each test", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how warnings are emitted for deprecated bats features", + "relevant": ["lib/bats-core/warnings.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the preprocessed test source is evaluated", + "relevant": ["lib/bats-core/preprocessing.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how flock and shlock provide mutual exclusion on file locks", + "relevant": ["lib/bats-core/semaphore.bash"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the failed command line is printed in a stack trace", + "relevant": ["lib/bats-core/tracing.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats_load_library loads a library by slug name", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how bats should retry a flaky test", + "relevant": ["lib/bats-core/test_functions.bash"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/cats.json b/benchmarks/annotations/cats.json index 4140db6..344feac 100644 --- a/benchmarks/annotations/cats.json +++ b/benchmarks/annotations/cats.json @@ -1,99 +1,169 @@ [ { "query": "how the Functor type class defines mapping over a context", - "relevant": ["core/src/main/scala/cats/Functor.scala"], + "relevant": [ + "core/src/main/scala/cats/Functor.scala" + ], "secondary": [], "category": "architecture" }, { "query": "how Monad composes dependent effectful computations with flatMap", - "relevant": ["core/src/main/scala/cats/Monad.scala"], - "secondary": ["core/src/main/scala/cats/FlatMap.scala"], + "relevant": [ + "core/src/main/scala/cats/Monad.scala" + ], + "secondary": [ + "core/src/main/scala/cats/FlatMap.scala" + ], "category": "architecture" }, { "query": "how Applicative combines independent effects", - "relevant": ["core/src/main/scala/cats/Applicative.scala"], - "secondary": ["core/src/main/scala/cats/Apply.scala"], + "relevant": [ + "core/src/main/scala/cats/Applicative.scala" + ], + "secondary": [ + "core/src/main/scala/cats/Apply.scala" + ], "category": "architecture" }, { "query": "how errors are handled and recovered in ApplicativeError and MonadError", - "relevant": ["core/src/main/scala/cats/ApplicativeError.scala"], - "secondary": ["core/src/main/scala/cats/MonadError.scala"], + "relevant": [ + "core/src/main/scala/cats/ApplicativeError.scala" + ], + "secondary": [ + "core/src/main/scala/cats/MonadError.scala" + ], "category": "semantic" }, { "query": "how Validated accumulates errors across independent computations", - "relevant": ["core/src/main/scala/cats/data/Validated.scala"], + "relevant": [ + "core/src/main/scala/cats/data/Validated.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how EitherT combines the Either monad with another effect", - "relevant": ["core/src/main/scala/cats/data/EitherT.scala"], + "relevant": [ + "core/src/main/scala/cats/data/EitherT.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how Kleisli composes functions that return monadic values", - "relevant": ["core/src/main/scala/cats/data/Kleisli.scala"], + "relevant": [ + "core/src/main/scala/cats/data/Kleisli.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how Eval provides lazy and memoized evaluation", - "relevant": ["core/src/main/scala/cats/Eval.scala"], + "relevant": [ + "core/src/main/scala/cats/Eval.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how Foldable traverses and reduces elements in a container", - "relevant": ["core/src/main/scala/cats/Foldable.scala"], + "relevant": [ + "core/src/main/scala/cats/Foldable.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how Chain provides O(1) concatenation as an alternative to List", - "relevant": ["core/src/main/scala/cats/data/Chain.scala"], + "relevant": [ + "core/src/main/scala/cats/data/Chain.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how natural transformations map between type constructors", - "relevant": ["core/src/main/scala/cats/arrow/FunctionK.scala"], + "relevant": [ + "core/src/main/scala/cats/arrow/FunctionK.scala" + ], "secondary": [], "category": "semantic" }, { "query": "how the Contravariant functor reverses the mapping direction", - "relevant": ["core/src/main/scala/cats/Contravariant.scala"], + "relevant": [ + "core/src/main/scala/cats/Contravariant.scala" + ], "secondary": [], "category": "semantic" }, { "query": "Monad", - "relevant": ["core/src/main/scala/cats/Monad.scala"], - "secondary": [] + "relevant": [ + "core/src/main/scala/cats/Monad.scala" + ], + "secondary": [], + "category": "symbol" }, { "query": "Functor", - "relevant": ["core/src/main/scala/cats/Functor.scala"], - "secondary": [] + "relevant": [ + "core/src/main/scala/cats/Functor.scala" + ], + "secondary": [], + "category": "symbol" }, { "query": "EitherT", - "relevant": ["core/src/main/scala/cats/data/EitherT.scala"], - "secondary": [] + "relevant": [ + "core/src/main/scala/cats/data/EitherT.scala" + ], + "secondary": [], + "category": "symbol" }, { "query": "Validated", - "relevant": ["core/src/main/scala/cats/data/Validated.scala"], - "secondary": [] + "relevant": [ + "core/src/main/scala/cats/data/Validated.scala" + ], + "secondary": [], + "category": "symbol" }, { "query": "Kleisli", - "relevant": ["core/src/main/scala/cats/data/Kleisli.scala"], - "secondary": [] + "relevant": [ + "core/src/main/scala/cats/data/Kleisli.scala" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how Traverse sequences effects over a structure", + "relevant": [ + "core/src/main/scala/cats/Traverse.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "MonoidK and SemigroupK type classes for combining higher-kinded values", + "relevant": [ + "core/src/main/scala/cats/MonoidK.scala", + "core/src/main/scala/cats/SemigroupK.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Foldable", + "relevant": [ + "core/src/main/scala/cats/Foldable.scala" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/chi.json b/benchmarks/annotations/chi.json index 38223b5..d8c131f 100644 --- a/benchmarks/annotations/chi.json +++ b/benchmarks/annotations/chi.json @@ -1,32 +1,156 @@ [ { "query": "HTTP router and middleware composition", - "relevant": ["mux.go"], - "secondary": ["chain.go"], + "relevant": [ + "mux.go" + ], + "secondary": [ + "chain.go" + ], "category": "architecture" }, { "query": "radix tree path matching", - "relevant": ["tree.go"], + "relevant": [ + "tree.go" + ], "secondary": [], "category": "semantic" }, { "query": "request routing context storage", - "relevant": ["context.go"], - "secondary": ["mux.go"], + "relevant": [ + "context.go" + ], + "secondary": [ + "mux.go" + ], "category": "architecture" }, { "query": "request logging middleware", - "relevant": ["middleware/logger.go"], + "relevant": [ + "middleware/logger.go" + ], "secondary": [], "category": "semantic" }, { "query": "Mux", - "relevant": ["mux.go"], + "relevant": [ + "mux.go" + ], "secondary": [], "category": "symbol" + }, + { + "query": "panic recovery middleware", + "relevant": [ + "middleware/recoverer.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "request timeout enforcement middleware", + "relevant": [ + "middleware/timeout.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "request throttling and concurrency limiting", + "relevant": [ + "middleware/throttle.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "gzip response compression middleware", + "relevant": [ + "middleware/compress.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "real IP extraction from forwarded headers", + "relevant": [ + "middleware/realip.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "URL path stripping and rewriting middleware", + "relevant": [ + "middleware/strip.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "basic HTTP authentication middleware", + "relevant": [ + "middleware/basic_auth.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how middleware chains are composed and ordered", + "relevant": [ + "chain.go" + ], + "secondary": [ + "mux.go" + ], + "category": "architecture" + }, + { + "query": "route grouping with sub-routers", + "relevant": [ + "mux.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how URL parameters are extracted from path segments at request time", + "relevant": [ + "context.go" + ], + "secondary": [ + "tree.go" + ], + "category": "architecture" + }, + { + "query": "Router", + "relevant": [ + "mux.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "RouteContext", + "relevant": [ + "context.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how chi resolves named URL parameters and wildcards during routing", + "relevant": [ + "tree.go" + ], + "secondary": [ + "context.go" + ], + "category": "architecture" } ] diff --git a/benchmarks/annotations/circe.json b/benchmarks/annotations/circe.json new file mode 100644 index 0000000..65ae00b --- /dev/null +++ b/benchmarks/annotations/circe.json @@ -0,0 +1,154 @@ +[ + { + "query": "how Encoder typeclass converts Scala values to JSON", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Encoder.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Decoder typeclass parses JSON into Scala values", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Decoder.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Json ADT representing JSON values null boolean number string array object", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Json.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Codec combining Encoder and Decoder for bidirectional conversion", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Codec.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "HCursor and cursor navigation for traversing JSON trees", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/HCursor.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "ACursor abstract cursor for JSON traversal with error accumulation", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/ACursor.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonObject for key-value JSON object representation", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/JsonObject.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonNumber representation for precise numeric values", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/JsonNumber.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how circe derives Encoder and Decoder instances for case classes", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Encoder.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Printer for controlling JSON serialization formatting", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Printer.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "accumulating decoder errors with andAccumulating", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Decoder.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "emap and flatMap on Decoder for validation and transformation", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Decoder.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how circe parses a JSON string into a Json value", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Parser.scala" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "KeyEncoder and KeyDecoder for Map key serialization", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/KeyEncoder.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "DecodingFailure and ParsingFailure error types for handling circe errors", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Error.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "down field and array index cursor operations", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/HCursor.scala" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Encoder", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Encoder.scala" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Decoder", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Decoder.scala" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Json", + "relevant": [ + "modules/core/shared/src/main/scala/io/circe/Json.scala" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/click.json b/benchmarks/annotations/click.json new file mode 100644 index 0000000..9f3a61a --- /dev/null +++ b/benchmarks/annotations/click.json @@ -0,0 +1,122 @@ +[ + { + "query": "how commands are structured and invoked", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "architecture" + }, + { + "query": "command group and subcommand dispatch", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "context management and nesting across commands", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "architecture" + }, + { + "query": "decorator API for defining commands, options, and arguments", + "relevant": ["src/click/decorators.py"], + "secondary": ["src/click/core.py"], + "category": "architecture" + }, + { + "query": "parameter type coercion and value validation", + "relevant": ["src/click/types.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "exception types for user errors and abort", + "relevant": ["src/click/exceptions.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "help text formatting and usage rendering", + "relevant": ["src/click/formatting.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "test runner for CLI commands in isolation", + "relevant": ["src/click/testing.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "terminal output, prompts, and progress bars", + "relevant": ["src/click/termui.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "global context stack and current context access", + "relevant": ["src/click/globals.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "option parser and long/short option resolution", + "relevant": ["src/click/parser.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "shell tab completion support", + "relevant": ["src/click/shell_completion.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pass_context passes the Context as the first argument", + "relevant": ["src/click/decorators.py"], + "secondary": ["src/click/core.py"], + "category": "architecture" + }, + { + "query": "how multi-value options and nargs are handled", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how default values are resolved from environment variables", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "architecture" + }, + { + "query": "file and path parameter types", + "relevant": ["src/click/types.py"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Command", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Group", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Context", + "relevant": ["src/click/core.py"], + "secondary": [], + "category": "symbol" + }, + { + "query": "CliRunner", + "relevant": ["src/click/testing.py"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/cobra.json b/benchmarks/annotations/cobra.json index c8d97a2..de99e4b 100644 --- a/benchmarks/annotations/cobra.json +++ b/benchmarks/annotations/cobra.json @@ -1,32 +1,172 @@ [ { "query": "core command execution and command tree", - "relevant": ["command.go"], + "relevant": [ + "command.go" + ], "secondary": [], "category": "architecture" }, { "query": "shell completion request handling", - "relevant": ["completions.go"], + "relevant": [ + "completions.go" + ], "secondary": [], "category": "semantic" }, { "query": "bash completion generation", - "relevant": ["bash_completions.go"], - "secondary": ["completions.go"], + "relevant": [ + "bash_completions.go" + ], + "secondary": [ + "completions.go" + ], "category": "semantic" }, { "query": "positional argument validators", - "relevant": ["args.go"], + "relevant": [ + "args.go" + ], "secondary": [], "category": "semantic" }, { "query": "Command", - "relevant": ["command.go"], + "relevant": [ + "command.go" + ], "secondary": [], "category": "symbol" + }, + { + "query": "help text generation and usage template formatting", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "zsh shell completion generation", + "relevant": [ + "zsh_completions.go" + ], + "secondary": [ + "completions.go" + ], + "category": "semantic" + }, + { + "query": "fish shell completion generation", + "relevant": [ + "fish_completions.go" + ], + "secondary": [ + "completions.go" + ], + "category": "semantic" + }, + { + "query": "PowerShell completion generation", + "relevant": [ + "powershell_completions.go" + ], + "secondary": [ + "completions.go" + ], + "category": "semantic" + }, + { + "query": "how persistent flags are inherited by child commands", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how command suggestions work for mistyped input", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the root command traverses the tree to find the active subcommand", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how command aliases are resolved during lookup", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "command hooks: PersistentPreRun, PreRun, PostRun lifecycle", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "error printing and exit code management", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Args", + "relevant": [ + "args.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "CompletionOptions", + "relevant": [ + "completions.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how cobra integrates pflags for typed flag values", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "required flags validation before command execution", + "relevant": [ + "command.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "documentation generation for man pages and markdown", + "relevant": [ + "doc/md_docs.go" + ], + "secondary": [ + "doc/man_docs.go" + ], + "category": "semantic" } ] diff --git a/benchmarks/annotations/commons-lang.json b/benchmarks/annotations/commons-lang.json index 9d51c0c..c26fe12 100644 --- a/benchmarks/annotations/commons-lang.json +++ b/benchmarks/annotations/commons-lang.json @@ -1,43 +1,194 @@ [ { "query": "null-safe string operations and text helpers", - "relevant": ["src/main/java/org/apache/commons/lang3/StringUtils.java"], + "relevant": [ + "src/main/java/org/apache/commons/lang3/StringUtils.java" + ], "secondary": [], "category": "semantic" }, { "query": "argument validation helpers and exception rules", - "relevant": ["src/main/java/org/apache/commons/lang3/Validate.java"], + "relevant": [ + "src/main/java/org/apache/commons/lang3/Validate.java" + ], "secondary": [], "category": "semantic" }, { "query": "reflection-based equals implementation", - "relevant": ["src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java"], - "secondary": ["src/main/java/org/apache/commons/lang3/ClassUtils.java"], + "relevant": [ + "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java" + ], + "secondary": [ + "src/main/java/org/apache/commons/lang3/ClassUtils.java" + ], "category": "architecture" }, { "query": "range object with inclusive bounds and comparator support", - "relevant": ["src/main/java/org/apache/commons/lang3/Range.java"], + "relevant": [ + "src/main/java/org/apache/commons/lang3/Range.java" + ], "secondary": [], "category": "semantic" }, { "query": "StringUtils", - "relevant": ["src/main/java/org/apache/commons/lang3/StringUtils.java"], + "relevant": [ + "src/main/java/org/apache/commons/lang3/StringUtils.java" + ], "secondary": [], "category": "symbol" }, { "query": "reflection equals builder internals", - "relevant": [{"path": "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java", "start_line": 89, "end_line": 99}], + "relevant": [ + { + "path": "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java", + "start_line": 179, + "end_line": 318 + } + ], "secondary": [], "category": "architecture", - "seed": {"path": "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java", "line": 89}, + "seed": { + "path": "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java", + "line": 89 + }, "related": [ - {"path": "src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java", "start_line": 105, "end_line": 141}, - {"path": "src/main/java/org/apache/commons/lang3/builder/IDKey.java", "start_line": 27, "end_line": 74} + { + "path": "src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java", + "start_line": 105, + "end_line": 141 + }, + { + "path": "src/main/java/org/apache/commons/lang3/builder/IDKey.java", + "start_line": 27, + "end_line": 74 + } ] + }, + { + "query": "array utility operations and safe type conversion", + "relevant": [ + "src/main/java/org/apache/commons/lang3/ArrayUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "null-safe object utility methods and identity helpers", + "relevant": [ + "src/main/java/org/apache/commons/lang3/ObjectUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "boolean conversion and parsing helpers", + "relevant": [ + "src/main/java/org/apache/commons/lang3/BooleanUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "number parsing with defaults and range checks", + "relevant": [ + "src/main/java/org/apache/commons/lang3/math/NumberUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "exception cause chain traversal and stack trace utilities", + "relevant": [ + "src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "toString builder for human-readable object descriptions", + "relevant": [ + "src/main/java/org/apache/commons/lang3/builder/ToStringBuilder.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "hash code builder for consistent hashCode implementation", + "relevant": [ + "src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "immutable pair container for two related values", + "relevant": [ + "src/main/java/org/apache/commons/lang3/tuple/Pair.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "triple container for three related values", + "relevant": [ + "src/main/java/org/apache/commons/lang3/tuple/Triple.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Java runtime and OS system property helpers", + "relevant": [ + "src/main/java/org/apache/commons/lang3/SystemUtils.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how EqualsBuilder and HashCodeBuilder enforce value equality contracts", + "relevant": [ + "src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java" + ], + "secondary": [ + "src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java" + ], + "category": "architecture" + }, + { + "query": "ArrayUtils", + "relevant": [ + "src/main/java/org/apache/commons/lang3/ArrayUtils.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ExceptionUtils", + "relevant": [ + "src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ObjectUtils", + "relevant": [ + "src/main/java/org/apache/commons/lang3/ObjectUtils.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "class utility methods for reflection and package navigation", + "relevant": [ + "src/main/java/org/apache/commons/lang3/ClassUtils.java" + ], + "secondary": [], + "category": "semantic" } ] diff --git a/benchmarks/annotations/curl.json b/benchmarks/annotations/curl.json new file mode 100644 index 0000000..94a8939 --- /dev/null +++ b/benchmarks/annotations/curl.json @@ -0,0 +1,122 @@ +[ + { + "query": "how curl resolves and connects to a remote host", + "relevant": ["lib/connect.c"], + "secondary": ["lib/url.c"], + "category": "architecture" + }, + { + "query": "how a new easy handle is initialized with default settings", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "parsing the URL and filling the connection struct", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how curl checks whether an existing connection can be reused", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how HTTP authentication headers are selected and output", + "relevant": ["lib/http.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how curl decides whether to retry a failed request", + "relevant": ["lib/transfer.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "pre-transfer setup: resolving credentials, ranges, and timers", + "relevant": ["lib/transfer.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the multi interface drives socket event loop transfers", + "relevant": ["lib/multi.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "cookie parsing and storage", + "relevant": ["lib/cookie.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how progress reporting works during a transfer", + "relevant": ["lib/progress.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "MIME multipart body construction for form uploads", + "relevant": ["lib/mime.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the easy interface wraps the multi interface for synchronous use", + "relevant": ["lib/easy.c"], + "secondary": ["lib/multi.c"], + "category": "architecture" + }, + { + "query": "how curl checks if HTTP If-Modified-Since condition is met", + "relevant": ["lib/transfer.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "connection filter chain setup for proxies and TLS", + "relevant": ["lib/connect.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how SSL is configured on a connection", + "relevant": ["lib/url.c"], + "secondary": ["lib/connect.c"], + "category": "architecture" + }, + { + "query": "how data is sent and received during a transfer", + "relevant": ["lib/transfer.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how curl keepalive and connection upkeep works", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how an existing connection is detected as dead before reuse", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "freeing all resources when closing an easy handle", + "relevant": ["lib/url.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how HTTP proxy tunnel CONNECT method is initiated", + "relevant": ["lib/http.c"], + "secondary": [], + "category": "architecture" + } +] diff --git a/benchmarks/annotations/dapper.json b/benchmarks/annotations/dapper.json new file mode 100644 index 0000000..a88bd52 --- /dev/null +++ b/benchmarks/annotations/dapper.json @@ -0,0 +1,122 @@ +[ + { + "query": "how Dapper Query maps SQL results to typed objects", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Execute and ExecuteScalar for running SQL commands", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "async Query and Execute methods for database operations", + "relevant": ["Dapper/SqlMapper.Async.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "DynamicParameters for passing dynamic SQL parameters", + "relevant": ["Dapper/DynamicParameters.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Dapper maps columns to object properties by name", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "multi-mapping QueryMultiple for reading multiple result sets", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "CommandDefinition for parameterized command configuration", + "relevant": ["Dapper/CommandDefinition.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "DbString for specifying varchar vs nvarchar parameters", + "relevant": ["Dapper/DbString.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Dapper caches parameter and deserializer IL", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "TypeHandler and custom type mapping", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "split-on multi-mapping for joining related objects", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "table-valued parameter support", + "relevant": ["Dapper/TableValuedParameter.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how IDataReader is consumed and results materialized", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "QueryFirst and QuerySingle for single-row queries", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "transaction support in Dapper queries", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "FeatureSupport and database dialect detection", + "relevant": ["Dapper/FeatureSupport.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "wrapping IDbConnection extension methods", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "SqlMapper", + "relevant": ["Dapper/SqlMapper.cs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "DynamicParameters", + "relevant": ["Dapper/DynamicParameters.cs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "CommandDefinition", + "relevant": ["Dapper/CommandDefinition.cs"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/dio.json b/benchmarks/annotations/dio.json new file mode 100644 index 0000000..dbbd1b9 --- /dev/null +++ b/benchmarks/annotations/dio.json @@ -0,0 +1,122 @@ +[ + { + "query": "how dio sends an HTTP request through its interceptor chain", + "relevant": ["dio_mixin.dart"], + "secondary": ["interceptor.dart"], + "category": "architecture" + }, + { + "query": "how dio interceptors modify requests and responses", + "relevant": ["interceptor.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how dio's CancelToken aborts an in-flight request", + "relevant": ["cancel_token.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio handles multipart form data uploads", + "relevant": ["form_data.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio manages request and response options like timeouts and headers", + "relevant": ["options.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio transforms response body bytes using a Transformer", + "relevant": ["transformer.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how DioException represents and categorizes HTTP errors", + "relevant": ["dio_exception.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio manages response headers from HTTP replies", + "relevant": ["headers.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio's IOAdapter sends requests using dart:io HttpClient", + "relevant": ["adapters/io_adapter.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how dio tracks download progress with a stream", + "relevant": ["progress_stream/io_progress_stream.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio's LogInterceptor logs request and response details", + "relevant": ["interceptors/log.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio handles redirect records across HTTP redirects", + "relevant": ["redirect_record.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio encodes query parameters into the URL", + "relevant": ["parameter.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio's Response object holds status code and parsed data", + "relevant": ["response.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio's ImplyContentTypeInterceptor sets Content-Type automatically", + "relevant": ["interceptors/imply_content_type.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio handles streaming responses incrementally", + "relevant": ["response/response_stream_handler.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio utility functions help with request processing", + "relevant": ["utils.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the Dio class exposes get, post, put, delete convenience methods", + "relevant": ["dio.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how dio's browser adapter handles requests in web environments", + "relevant": ["adapters/browser_adapter.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how empty response bodies are transformed to null by the transformer", + "relevant": ["transformers/util/transform_empty_to_null.dart"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/ecto.json b/benchmarks/annotations/ecto.json new file mode 100644 index 0000000..ed986bd --- /dev/null +++ b/benchmarks/annotations/ecto.json @@ -0,0 +1,154 @@ +[ + { + "query": "how Ecto.Schema defines database-backed structs and associations", + "relevant": [ + "lib/ecto/schema.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Ecto.Changeset for validating and transforming data", + "relevant": [ + "lib/ecto/changeset.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Ecto.Query DSL for composing SQL queries", + "relevant": [ + "lib/ecto/query.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Ecto.Repo behaviour for database interactions", + "relevant": [ + "lib/ecto/repo.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "cast and validate_required in changesets", + "relevant": [ + "lib/ecto/changeset.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "has_many belongs_to and many-to-many association definitions", + "relevant": [ + "lib/ecto/schema.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "from where select and order_by query expressions", + "relevant": [ + "lib/ecto/query.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "preload for loading associations eagerly", + "relevant": [ + "lib/ecto/query.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Ecto.Type for custom field type definitions", + "relevant": [ + "lib/ecto/type.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "insert update delete and transaction repo callbacks", + "relevant": [ + "lib/ecto/repo.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Ecto handles embedded schemas", + "relevant": [ + "lib/ecto/schema.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "validate_format validate_length and constraint validators", + "relevant": [ + "lib/ecto/changeset.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Ecto.Queryable protocol for query composition", + "relevant": [ + "lib/ecto/queryable.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Multi for composing multiple database operations in a transaction", + "relevant": [ + "lib/ecto/multi.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "optimistic locking with lock_version in changesets", + "relevant": [ + "lib/ecto/changeset.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "association and embeds_many embeds_one for nested data", + "relevant": [ + "lib/ecto/schema.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Schema", + "relevant": [ + "lib/ecto/schema.ex" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Changeset", + "relevant": [ + "lib/ecto/changeset.ex" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Query", + "relevant": [ + "lib/ecto/query.ex" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/exposed.json b/benchmarks/annotations/exposed.json new file mode 100644 index 0000000..fe031ec --- /dev/null +++ b/benchmarks/annotations/exposed.json @@ -0,0 +1,167 @@ +[ + { + "query": "how Table defines columns and constraints in Exposed DSL", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Table.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Column definition and column types in Exposed", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Column.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how SQL queries are built with the Exposed query DSL", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/AbstractQuery.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Transaction block and database session management", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Transaction.kt", + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/transactions/Transactions.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Database connection configuration and dialect selection", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/DatabaseApi.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "insert insertAndGetId and batch insert operations", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/InsertStatement.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "update and delete statement builders", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/UpdateStatement.kt" + ], + "secondary": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/DeleteStatement.kt" + ], + "category": "semantic" + }, + { + "query": "Op and SqlExpressionBuilder for composing WHERE conditions", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Op.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "aggregate functions sum count avg and groupBy", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Function.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "SchemaUtils for creating and dropping database tables", + "relevant": [ + "exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/v1/jdbc/SchemaUtils.kt" + ], + "secondary": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/SchemaUtilityApi.kt" + ], + "category": "semantic" + }, + { + "query": "how expressions and SQL operators are composed in Exposed", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Expression.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "vendor-specific SQL generation and database dialect interface", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/vendors/DatabaseDialect.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "ResultRow and how query results are read by column", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/ResultRow.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "index and unique constraint definition on tables", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Constraints.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "ColumnType mapping between Kotlin types and SQL types", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/ColumnType.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "upsert and batch upsert statement for insert-or-update", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/UpsertStatement.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "database exceptions and error handling in Exposed", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Exceptions.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Table", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Table.kt" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Transaction", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/Transaction.kt" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ResultRow", + "relevant": [ + "exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/ResultRow.kt" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/express.json b/benchmarks/annotations/express.json index dd82ccf..858e949 100644 --- a/benchmarks/annotations/express.json +++ b/benchmarks/annotations/express.json @@ -1,31 +1,209 @@ [ { "query": "application initialization and default configuration", - "relevant": ["lib/application.js"], - "secondary": ["lib/express.js"], + "relevant": [ + "lib/application.js" + ], + "secondary": [ + "lib/express.js" + ], "category": "architecture" }, { "query": "request API helpers and header access", - "relevant": ["lib/request.js"], + "relevant": [ + "lib/request.js" + ], "secondary": [], "category": "semantic" }, { "query": "response sending and content negotiation", - "relevant": ["lib/response.js"], + "relevant": [ + "lib/response.js" + ], "secondary": [], "category": "semantic" }, { "query": "template view lookup and rendering", - "relevant": ["lib/view.js"], - "secondary": ["lib/application.js"], + "relevant": [ + "lib/view.js" + ], + "secondary": [ + "lib/application.js" + ], "category": "architecture" }, { "query": "response", - "relevant": ["lib/response.js"], + "relevant": [ + "lib/response.js" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "utility functions for content type detection and MIME handling", + "relevant": [ + "lib/utils.js" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how sub-applications are mounted with use() and path prefix stripping", + "relevant": [ + "lib/application.js" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how express creates the app function and attaches prototype methods", + "relevant": [ + "lib/express.js" + ], + "secondary": [ + "lib/application.js" + ], + "category": "architecture" + }, + { + "query": "application", + "relevant": [ + "lib/application.js" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "res.send body encoding and ETag generation", + "relevant": [ + { + "path": "lib/response.js", + "start_line": 125, + "end_line": 230 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON response serialization and JSONP callback support", + "relevant": [ + { + "path": "lib/response.js", + "start_line": 232, + "end_line": 320 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how res.redirect builds the Location header and status code", + "relevant": [ + { + "path": "lib/response.js", + "start_line": 812, + "end_line": 873 + } + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "cookie setting and signing on the response", + "relevant": [ + { + "path": "lib/response.js", + "start_line": 709, + "end_line": 791 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how app.render resolves views and calls the template engine", + "relevant": [ + { + "path": "lib/application.js", + "start_line": 522, + "end_line": 596 + } + ], + "secondary": [ + "lib/view.js" + ], + "category": "architecture" + }, + { + "query": "app.set and settings storage", + "relevant": [ + { + "path": "lib/application.js", + "start_line": 351, + "end_line": 397 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how app.handle dispatches requests through the middleware stack", + "relevant": [ + { + "path": "lib/application.js", + "start_line": 152, + "end_line": 188 + } + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "content negotiation with req.accepts", + "relevant": [ + { + "path": "lib/request.js", + "start_line": 127, + "end_line": 200 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "request hostname and IP address resolution behind proxies", + "relevant": [ + { + "path": "lib/request.js", + "start_line": 297, + "end_line": 400 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "static file serving with res.sendFile", + "relevant": [ + { + "path": "lib/response.js", + "start_line": 371, + "end_line": 431 + } + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "view", + "relevant": [ + "lib/view.js" + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/fastapi.json b/benchmarks/annotations/fastapi.json index 23a990b..50afa13 100644 --- a/benchmarks/annotations/fastapi.json +++ b/benchmarks/annotations/fastapi.json @@ -1,111 +1,224 @@ [ { "query": "how does dependency injection work", - "relevant": ["fastapi/dependencies/utils.py"], - "secondary": ["fastapi/dependencies/models.py", "fastapi/params.py"] + "relevant": [ + "fastapi/dependencies/utils.py" + ], + "secondary": [ + "fastapi/dependencies/models.py", + "fastapi/params.py" + ], + "category": "architecture" }, { "query": "request validation and error handling", - "relevant": ["fastapi/exceptions.py"], - "secondary": ["fastapi/exception_handlers.py"] + "relevant": [ + "fastapi/exceptions.py" + ], + "secondary": [ + "fastapi/exception_handlers.py" + ], + "category": "semantic" }, { "query": "how are routes registered", - "relevant": ["fastapi/routing.py"], - "secondary": ["fastapi/applications.py"] + "relevant": [ + "fastapi/routing.py" + ], + "secondary": [ + "fastapi/applications.py" + ], + "category": "architecture" }, { "query": "websocket endpoint implementation", - "relevant": ["fastapi/websockets.py"], - "secondary": ["fastapi/routing.py"] + "relevant": [ + "fastapi/websockets.py" + ], + "secondary": [ + "fastapi/routing.py" + ], + "category": "semantic" }, { "query": "OpenAPI schema generation", - "relevant": ["fastapi/openapi/utils.py"], - "secondary": ["fastapi/openapi/models.py"] + "relevant": [ + "fastapi/openapi/utils.py" + ], + "secondary": [ + "fastapi/openapi/models.py" + ], + "category": "semantic" }, { "query": "middleware stack and CORS", - "relevant": ["fastapi/middleware/cors.py"], - "secondary": ["fastapi/applications.py"] + "relevant": [ + "fastapi/middleware/cors.py" + ], + "secondary": [ + "fastapi/applications.py" + ], + "category": "semantic" }, { "query": "file upload handling", - "relevant": ["fastapi/datastructures.py"], - "secondary": [] + "relevant": [ + "fastapi/datastructures.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "response model serialization", - "relevant": ["fastapi/encoders.py"], - "secondary": ["fastapi/routing.py"] - }, - { - "query": "background tasks", - "relevant": ["fastapi/background.py"], - "secondary": [] + "relevant": [ + "fastapi/encoders.py" + ], + "secondary": [ + "fastapi/routing.py" + ], + "category": "semantic" + }, + { + "query": "running work after returning an HTTP response without blocking", + "relevant": [ + "fastapi/background.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "security and OAuth2 authentication", - "relevant": ["fastapi/security/oauth2.py"], - "secondary": ["fastapi/security/http.py"] + "relevant": [ + "fastapi/security/oauth2.py" + ], + "secondary": [ + "fastapi/security/http.py" + ], + "category": "semantic" }, { "query": "how is response validation and serialization applied before sending", - "relevant": ["fastapi/routing.py"], - "secondary": ["fastapi/encoders.py"] + "relevant": [ + "fastapi/routing.py" + ], + "secondary": [ + "fastapi/encoders.py" + ], + "category": "architecture" }, { "query": "how are nested and sub-dependencies resolved", - "relevant": ["fastapi/dependencies/utils.py"], - "secondary": [] + "relevant": [ + "fastapi/dependencies/utils.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how does FastAPI run sync route functions without blocking", - "relevant": ["fastapi/concurrency.py"], - "secondary": ["fastapi/routing.py"] + "relevant": [ + "fastapi/concurrency.py" + ], + "secondary": [ + "fastapi/routing.py" + ], + "category": "architecture" }, { "query": "how are path parameters extracted and type-converted", - "relevant": ["fastapi/routing.py"], - "secondary": ["fastapi/dependencies/utils.py"] + "relevant": [ + "fastapi/routing.py" + ], + "secondary": [ + "fastapi/dependencies/utils.py" + ], + "category": "architecture" }, { "query": "how does exception propagation work through dependency injection", - "relevant": ["fastapi/dependencies/utils.py"], - "secondary": ["fastapi/routing.py"] + "relevant": [ + "fastapi/dependencies/utils.py" + ], + "secondary": [ + "fastapi/routing.py" + ], + "category": "architecture" }, { "query": "Depends", - "relevant": [{"path": "fastapi/params.py", "start_line": 746, "end_line": 749}], - "secondary": ["fastapi/param_functions.py"], + "relevant": [ + { + "path": "fastapi/params.py", + "start_line": 746, + "end_line": 749 + } + ], + "secondary": [ + "fastapi/param_functions.py" + ], "category": "symbol", - "seed": {"path": "fastapi/params.py", "line": 746}, + "seed": { + "path": "fastapi/params.py", + "line": 746 + }, "related": [ - {"path": "fastapi/params.py", "start_line": 434, "end_line": 468}, - {"path": "fastapi/params.py", "start_line": 627, "end_line": 664} + { + "path": "fastapi/params.py", + "start_line": 434, + "end_line": 468 + }, + { + "path": "fastapi/params.py", + "start_line": 627, + "end_line": 664 + } ] }, { "query": "HTTPException", - "relevant": [{"path": "fastapi/exceptions.py", "start_line": 17, "end_line": 66}], + "relevant": [ + { + "path": "fastapi/exceptions.py", + "start_line": 17, + "end_line": 66 + } + ], "secondary": [], "category": "symbol" }, { "query": "APIRouter", - "relevant": [{"path": "fastapi/routing.py", "start_line": 1005, "end_line": 1030}], + "relevant": [ + { + "path": "fastapi/routing.py", + "start_line": 1005, + "end_line": 1030 + } + ], "secondary": [], "category": "symbol" }, { "query": "BackgroundTasks", - "relevant": [{"path": "fastapi/background.py", "start_line": 11, "end_line": 39}], + "relevant": [ + { + "path": "fastapi/background.py", + "start_line": 11, + "end_line": 39 + } + ], "secondary": [], "category": "symbol" }, { "query": "OAuth2PasswordBearer", - "relevant": [{"path": "fastapi/security/oauth2.py", "start_line": 433, "end_line": 471}], + "relevant": [ + { + "path": "fastapi/security/oauth2.py", + "start_line": 433, + "end_line": 471 + } + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/flask.json b/benchmarks/annotations/flask.json index de9fd41..4a0c52a 100644 --- a/benchmarks/annotations/flask.json +++ b/benchmarks/annotations/flask.json @@ -1,90 +1,203 @@ [ { "query": "how are routes registered", - "relevant": ["src/flask/sansio/scaffold.py"], - "secondary": ["src/flask/sansio/app.py"] + "relevant": [ + "src/flask/sansio/scaffold.py" + ], + "secondary": [ + "src/flask/sansio/app.py" + ], + "category": "architecture" }, { "query": "request context handling", - "relevant": ["src/flask/ctx.py"], - "secondary": [] + "relevant": [ + "src/flask/ctx.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "session management", - "relevant": ["src/flask/sessions.py"], - "secondary": [] + "relevant": [ + "src/flask/sessions.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "blueprint registration", - "relevant": ["src/flask/sansio/blueprints.py"], - "secondary": ["src/flask/blueprints.py"] + "relevant": [ + "src/flask/sansio/blueprints.py" + ], + "secondary": [ + "src/flask/blueprints.py" + ], + "category": "semantic" }, { "query": "configuration loading", - "relevant": ["src/flask/config.py"], - "secondary": [] + "relevant": [ + "src/flask/config.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "template rendering", - "relevant": ["src/flask/templating.py"], - "secondary": [] + "relevant": [ + "src/flask/templating.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "error handlers", - "relevant": ["src/flask/sansio/scaffold.py"], - "secondary": ["src/flask/app.py"] + "relevant": [ + "src/flask/sansio/scaffold.py" + ], + "secondary": [ + "src/flask/app.py" + ], + "category": "semantic" }, { "query": "CLI commands", - "relevant": ["src/flask/cli.py"], - "secondary": [] + "relevant": [ + "src/flask/cli.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "testing client", - "relevant": ["src/flask/testing.py"], - "secondary": [] + "relevant": [ + "src/flask/testing.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "JSON response helpers", - "relevant": ["src/flask/json/provider.py"], - "secondary": ["src/flask/helpers.py"] + "relevant": [ + "src/flask/json/provider.py" + ], + "secondary": [ + "src/flask/helpers.py" + ], + "category": "semantic" }, { "query": "how does the application context push and pop around requests", - "relevant": ["src/flask/ctx.py"], - "secondary": ["src/flask/app.py"] + "relevant": [ + "src/flask/ctx.py" + ], + "secondary": [ + "src/flask/app.py" + ], + "category": "architecture" }, { "query": "how does Flask select which error handler to invoke for an exception", - "relevant": ["src/flask/app.py"], - "secondary": ["src/flask/sansio/app.py"] + "relevant": [ + "src/flask/app.py" + ], + "secondary": [ + "src/flask/sansio/app.py" + ], + "category": "architecture" }, { "query": "how is g used to store data scoped to the current request", - "relevant": ["src/flask/ctx.py"], - "secondary": ["src/flask/globals.py"] + "relevant": [ + "src/flask/ctx.py" + ], + "secondary": [ + "src/flask/globals.py" + ], + "category": "architecture" }, { "query": "how are request lifecycle signals emitted", - "relevant": ["src/flask/signals.py"], - "secondary": ["src/flask/app.py"] + "relevant": [ + "src/flask/signals.py" + ], + "secondary": [ + "src/flask/app.py" + ], + "category": "architecture" }, { "query": "how does Flask convert a view return value into a response object", - "relevant": ["src/flask/app.py"], - "secondary": ["src/flask/wrappers.py"] + "relevant": [ + "src/flask/app.py" + ], + "secondary": [ + "src/flask/wrappers.py" + ], + "category": "architecture" + }, + { + "query": "Blueprint", + "relevant": [ + "src/flask/sansio/blueprints.py" + ], + "secondary": [ + "src/flask/blueprints.py" + ], + "category": "symbol" + }, + { + "query": "render_template", + "relevant": [ + "src/flask/templating.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Flask", + "relevant": [ + "src/flask/app.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "session", + "relevant": [ + "src/flask/sessions.py" + ], + "secondary": [ + "src/flask/globals.py" + ], + "category": "semantic" + }, + { + "query": "g", + "relevant": [ + "src/flask/globals.py" + ], + "secondary": [ + "src/flask/ctx.py" + ], + "category": "semantic" }, - {"query": "Blueprint", "relevant": ["src/flask/sansio/blueprints.py"], "secondary": ["src/flask/blueprints.py"]}, - {"query": "render_template", "relevant": ["src/flask/templating.py"], "secondary": []}, - {"query": "Flask", "relevant": ["src/flask/app.py"], "secondary": []}, - {"query": "session", "relevant": ["src/flask/sessions.py"], "secondary": ["src/flask/globals.py"]}, - {"query": "g", "relevant": ["src/flask/globals.py"], "secondary": ["src/flask/ctx.py"]}, { "query": "how Blueprint inherits routing behaviour from its sansio base class", - "relevant": ["src/flask/sansio/blueprints.py"], - "secondary": ["src/flask/blueprints.py"], + "relevant": [ + "src/flask/sansio/blueprints.py" + ], + "secondary": [ + "src/flask/blueprints.py" + ], "category": "architecture", - "seed": {"path": "src/flask/blueprints.py", "line": 18}, - "related": ["src/flask/sansio/blueprints.py"] + "seed": { + "path": "src/flask/blueprints.py", + "line": 18 + }, + "related": [ + "src/flask/sansio/blueprints.py" + ] } ] diff --git a/benchmarks/annotations/fmtlib.json b/benchmarks/annotations/fmtlib.json new file mode 100644 index 0000000..f5b75b2 --- /dev/null +++ b/benchmarks/annotations/fmtlib.json @@ -0,0 +1,122 @@ +[ + { + "query": "how fmt::format and fmt::print format strings at runtime", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "architecture" + }, + { + "query": "basic_format_args and format_arg argument storage and type erasure", + "relevant": ["include/fmt/base.h"], + "secondary": [], + "category": "architecture" + }, + { + "query": "formatter specialization for custom type formatting", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "compile-time format string checking and FMT_COMPILE macro", + "relevant": ["include/fmt/compile.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "color and text style formatting for terminal output", + "relevant": ["include/fmt/color.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "formatting ranges containers and tuples", + "relevant": ["include/fmt/ranges.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "chrono duration and time point formatting", + "relevant": ["include/fmt/chrono.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "ostream integration for writing to std::ostream", + "relevant": ["include/fmt/ostream.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "printf-compatible formatting with fmt::printf and fmt::sprintf", + "relevant": ["include/fmt/printf.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "format_to and back_insert_iterator output adapters", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "memory buffer and basic_memory_buffer for efficient allocation", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "dynamic_format_arg_store for building argument lists at runtime", + "relevant": ["include/fmt/args.h"], + "secondary": [], + "category": "architecture" + }, + { + "query": "std::filesystem path formatting support", + "relevant": ["include/fmt/std.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "format_error and error handling for invalid format strings", + "relevant": ["include/fmt/base.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "width precision fill and alignment format specifiers", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "fmt::arg named arguments for use in format strings", + "relevant": ["include/fmt/args.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how fmt handles integer floating point and string formatting", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "semantic" + }, + { + "query": "formatter", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "symbol" + }, + { + "query": "basic_format_args", + "relevant": ["include/fmt/base.h"], + "secondary": [], + "category": "symbol" + }, + { + "query": "basic_memory_buffer", + "relevant": ["include/fmt/format.h"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/gin.json b/benchmarks/annotations/gin.json index 2ba38bc..a826c1d 100644 --- a/benchmarks/annotations/gin.json +++ b/benchmarks/annotations/gin.json @@ -1,40 +1,181 @@ [ { "query": "how routes are grouped and registered", - "relevant": ["routergroup.go"], - "secondary": ["gin.go"], + "relevant": [ + "routergroup.go" + ], + "secondary": [ + "gin.go" + ], "category": "architecture" }, { "query": "radix tree path matching", - "relevant": ["tree.go"], + "relevant": [ + "tree.go" + ], "secondary": [], "category": "semantic" }, { "query": "request context lifecycle and helpers", - "relevant": ["context.go"], + "relevant": [ + "context.go" + ], "secondary": [], "category": "semantic" }, { - "query": "panic recovery middleware", - "relevant": ["recovery.go"], + "query": "catching runtime panics in request handlers and returning 500", + "relevant": [ + "recovery.go" + ], "secondary": [], "category": "semantic" }, { "query": "JSON request binding and validation", - "relevant": ["binding/json.go"], - "secondary": ["binding/default_validator.go"], + "relevant": [ + "binding/json.go" + ], + "secondary": [ + "binding/default_validator.go" + ], "category": "architecture" }, { "query": "how the Gin Engine embeds RouterGroup and uses Context per request", - "relevant": ["gin.go"], - "secondary": ["routergroup.go", "context.go"], + "relevant": [ + "gin.go" + ], + "secondary": [ + "routergroup.go", + "context.go" + ], "category": "architecture", - "seed": {"path": "gin.go", "line": 92}, - "related": ["context.go", "routergroup.go"] + "seed": { + "path": "gin.go", + "line": 92 + }, + "related": [ + "context.go", + "routergroup.go" + ] + }, + { + "query": "logging middleware and access log format", + "relevant": [ + "logger.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON response rendering", + "relevant": [ + "render/json.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "HTML template rendering", + "relevant": [ + "render/html.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "query parameter and URL path variable extraction", + "relevant": [ + "context.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "multipart form and file upload handling", + "relevant": [ + "context.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "error types and per-request error collection", + "relevant": [ + "errors.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "form data binding for URL-encoded requests", + "relevant": [ + "binding/form.go" + ], + "secondary": [ + "binding/default_validator.go" + ], + "category": "semantic" + }, + { + "query": "how validators are plugged in for struct binding", + "relevant": [ + "binding/default_validator.go" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how middleware is applied globally and to route groups", + "relevant": [ + "routergroup.go" + ], + "secondary": [ + "gin.go" + ], + "category": "architecture" + }, + { + "query": "utility helpers for path detection and content-type formatting", + "relevant": [ + "utils.go" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Engine", + "relevant": [ + "gin.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Context", + "relevant": [ + "context.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "RouterGroup", + "relevant": [ + "routergroup.go" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how Abort and response writing prevent further handler execution", + "relevant": [ + "context.go" + ], + "secondary": [], + "category": "architecture" } ] diff --git a/benchmarks/annotations/gson.json b/benchmarks/annotations/gson.json index 46c2f5e..432034d 100644 --- a/benchmarks/annotations/gson.json +++ b/benchmarks/annotations/gson.json @@ -1,31 +1,169 @@ [ { "query": "main Gson API for toJson and fromJson", - "relevant": ["gson/src/main/java/com/google/gson/Gson.java"], + "relevant": [ + "gson/src/main/java/com/google/gson/Gson.java" + ], "secondary": [], "category": "semantic" }, { - "query": "GsonBuilder configuration and create", - "relevant": ["gson/src/main/java/com/google/gson/GsonBuilder.java"], + "query": "configuring custom serialization options before building Gson instance", + "relevant": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], "secondary": [], "category": "semantic" }, { "query": "reflection-based field serialization and deserialization", - "relevant": ["gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java"], + "relevant": [ + "gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java" + ], "secondary": [], "category": "architecture" }, { "query": "TypeAdapter", - "relevant": ["gson/src/main/java/com/google/gson/TypeAdapter.java"], + "relevant": [ + "gson/src/main/java/com/google/gson/TypeAdapter.java" + ], "secondary": [], "category": "symbol" }, { "query": "JsonParser", - "relevant": ["gson/src/main/java/com/google/gson/JsonParser.java"], + "relevant": [ + "gson/src/main/java/com/google/gson/JsonParser.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "streaming JSON reader and token parsing", + "relevant": [ + "gson/src/main/java/com/google/gson/stream/JsonReader.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "streaming JSON writer and token generation", + "relevant": [ + "gson/src/main/java/com/google/gson/stream/JsonWriter.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "generic type token for parameterized types", + "relevant": [ + "gson/src/main/java/com/google/gson/reflect/TypeToken.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "serialization exclusion strategies for fields and classes", + "relevant": [ + "gson/src/main/java/com/google/gson/ExclusionStrategy.java" + ], + "secondary": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], + "category": "semantic" + }, + { + "query": "field naming policy and key transformation", + "relevant": [ + "gson/src/main/java/com/google/gson/FieldNamingPolicy.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how custom serializers and deserializers are registered and resolved", + "relevant": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], + "secondary": [ + "gson/src/main/java/com/google/gson/Gson.java" + ], + "category": "architecture" + }, + { + "query": "how null values are handled during serialization", + "relevant": [ + "gson/src/main/java/com/google/gson/Gson.java" + ], + "secondary": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], + "category": "architecture" + }, + { + "query": "JSON element hierarchy and tree model", + "relevant": [ + "gson/src/main/java/com/google/gson/JsonElement.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON array operations and element access", + "relevant": [ + "gson/src/main/java/com/google/gson/JsonArray.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON object with named fields", + "relevant": [ + "gson/src/main/java/com/google/gson/JsonObject.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how type adapter factories are registered and selected for a given type", + "relevant": [ + "gson/src/main/java/com/google/gson/Gson.java" + ], + "secondary": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], + "category": "architecture" + }, + { + "query": "GsonBuilder", + "relevant": [ + "gson/src/main/java/com/google/gson/GsonBuilder.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "TypeToken", + "relevant": [ + "gson/src/main/java/com/google/gson/reflect/TypeToken.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "JsonReader", + "relevant": [ + "gson/src/main/java/com/google/gson/stream/JsonReader.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "JsonObject", + "relevant": [ + "gson/src/main/java/com/google/gson/JsonObject.java" + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/guzzle.json b/benchmarks/annotations/guzzle.json index 2bbbf02..a6d6513 100644 --- a/benchmarks/annotations/guzzle.json +++ b/benchmarks/annotations/guzzle.json @@ -1,91 +1,171 @@ [ { "query": "HTTP client request sending and defaults", - "relevant": ["src/Client.php"], - "secondary": ["src/ClientTrait.php"], + "relevant": [ + "src/Client.php" + ], + "secondary": [ + "src/ClientTrait.php" + ], "category": "semantic" }, { "query": "middleware handler stack composition", - "relevant": ["src/HandlerStack.php"], - "secondary": ["src/Middleware.php"], + "relevant": [ + "src/HandlerStack.php" + ], + "secondary": [ + "src/Middleware.php" + ], "category": "architecture" }, { "query": "retry middleware and exponential backoff", - "relevant": ["src/RetryMiddleware.php"], + "relevant": [ + "src/RetryMiddleware.php" + ], "secondary": [], "category": "semantic" }, { "query": "cookie jar implementation", - "relevant": ["src/Cookie/CookieJar.php"], - "secondary": ["src/Cookie/SetCookie.php"], + "relevant": [ + "src/Cookie/CookieJar.php" + ], + "secondary": [ + "src/Cookie/SetCookie.php" + ], "category": "semantic" }, { "query": "redirect following and location header handling", - "relevant": ["src/RedirectMiddleware.php"], + "relevant": [ + "src/RedirectMiddleware.php" + ], "secondary": [], "category": "semantic" }, { "query": "curl-based HTTP handler and connection management", - "relevant": ["src/Handler/CurlFactory.php"], - "secondary": ["src/Handler/CurlHandler.php"], + "relevant": [ + "src/Handler/CurlFactory.php" + ], + "secondary": [ + "src/Handler/CurlHandler.php" + ], "category": "semantic" }, { "query": "mock handler for simulating HTTP responses in tests", - "relevant": ["src/Handler/MockHandler.php"], + "relevant": [ + "src/Handler/MockHandler.php" + ], "secondary": [], "category": "semantic" }, { "query": "concurrent request pool with limited parallelism", - "relevant": ["src/Pool.php"], + "relevant": [ + "src/Pool.php" + ], "secondary": [], "category": "semantic" }, { "query": "available request options and their configuration", - "relevant": ["src/RequestOptions.php"], + "relevant": [ + "src/RequestOptions.php" + ], "secondary": [], "category": "semantic" }, { "query": "HTTP message formatting and request logging", - "relevant": ["src/MessageFormatter.php"], + "relevant": [ + "src/MessageFormatter.php" + ], "secondary": [], "category": "semantic" }, { "query": "how request body and content-type are prepared before sending", - "relevant": ["src/PrepareBodyMiddleware.php"], + "relevant": [ + "src/PrepareBodyMiddleware.php" + ], "secondary": [], "category": "semantic" }, { "query": "exception hierarchy for HTTP and transfer errors", - "relevant": ["src/Exception/RequestException.php"], - "secondary": ["src/Exception/GuzzleException.php"], + "relevant": [ + "src/Exception/RequestException.php" + ], + "secondary": [ + "src/Exception/GuzzleException.php" + ], "category": "semantic" }, { "query": "Client", - "relevant": ["src/Client.php"], + "relevant": [ + "src/Client.php" + ], "secondary": [], "category": "symbol" }, { "query": "HandlerStack", - "relevant": ["src/HandlerStack.php"], + "relevant": [ + "src/HandlerStack.php" + ], "secondary": [], "category": "symbol" }, { "query": "RedirectMiddleware", - "relevant": ["src/RedirectMiddleware.php"], + "relevant": [ + "src/RedirectMiddleware.php" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how the handler stack wraps middleware around the HTTP send", + "relevant": [ + "src/HandlerStack.php" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "retry middleware and backoff logic", + "relevant": [ + "src/RetryMiddleware.php" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how redirect responses are followed and redirect history tracked", + "relevant": [ + "src/RedirectMiddleware.php" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "transfer statistics and timing information", + "relevant": [ + "src/TransferStats.php" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "HandlerStack", + "relevant": [ + "src/HandlerStack.php" + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/http-dart.json b/benchmarks/annotations/http-dart.json new file mode 100644 index 0000000..59bf5a4 --- /dev/null +++ b/benchmarks/annotations/http-dart.json @@ -0,0 +1,122 @@ +[ + { + "query": "how a GET request is sent and a Response returned", + "relevant": ["pkgs/http/lib/src/client.dart"], + "secondary": ["pkgs/http/lib/src/base_client.dart"], + "category": "semantic" + }, + { + "query": "how BaseClient implements convenience methods on top of send", + "relevant": ["pkgs/http/lib/src/base_client.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how a multipart form POST request is constructed with files and fields", + "relevant": ["pkgs/http/lib/src/multipart_request.dart"], + "secondary": ["pkgs/http/lib/src/multipart_file.dart"], + "category": "semantic" + }, + { + "query": "how a Response is decoded from bytes and headers", + "relevant": ["pkgs/http/lib/src/response.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how IOClient wraps dart:io HttpClient to send requests", + "relevant": ["pkgs/http/lib/src/io_client.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how MockClient provides a test double for the HTTP client", + "relevant": ["pkgs/http/lib/src/mock_client.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how a streamed response delivers body bytes as a stream", + "relevant": ["pkgs/http/lib/src/streamed_response.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how a streamed POST request sends body data incrementally", + "relevant": ["pkgs/http/lib/src/streamed_request.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how ClientException reports HTTP errors with the URI", + "relevant": ["pkgs/http/lib/src/exception.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how a multipart boundary string is generated", + "relevant": ["pkgs/http/lib/src/multipart_request.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the abortable request supports cancellation via a trigger", + "relevant": ["pkgs/http/lib/src/abortable.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how BaseRequest validates the HTTP method and URL", + "relevant": ["pkgs/http/lib/src/base_request.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how response body is decoded using the charset from Content-Type", + "relevant": ["pkgs/http/lib/src/response.dart"], + "secondary": ["pkgs/http/lib/src/utils.dart"], + "category": "semantic" + }, + { + "query": "how a multipart file part header is formatted", + "relevant": ["pkgs/http/lib/src/multipart_request.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the client lifecycle close method releases resources", + "relevant": ["pkgs/http/lib/src/client.dart"], + "secondary": ["pkgs/http/lib/src/io_client.dart"], + "category": "semantic" + }, + { + "query": "how a Response is constructed from a StreamedResponse", + "relevant": ["pkgs/http/lib/src/response.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how POST sends a body with content type and encoding", + "relevant": ["pkgs/http/lib/src/base_client.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how ByteStream converts a list of bytes into a stream", + "relevant": ["pkgs/http/lib/src/byte_stream.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how request headers are managed and validated", + "relevant": ["pkgs/http/lib/src/base_request.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how a multipart file is created from a file path on disk", + "relevant": ["pkgs/http/lib/src/multipart_file_io.dart"], + "secondary": ["pkgs/http/lib/src/multipart_file.dart"], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/http4s.json b/benchmarks/annotations/http4s.json new file mode 100644 index 0000000..b6e08d9 --- /dev/null +++ b/benchmarks/annotations/http4s.json @@ -0,0 +1,122 @@ +[ + { + "query": "how HttpRoutes define pattern-matched HTTP request handlers", + "relevant": ["core/shared/src/main/scala/org/http4s/HttpRoutes.scala"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Message Request and Response HTTP message representation", + "relevant": ["core/shared/src/main/scala/org/http4s/Message.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "EntityDecoder for parsing request bodies", + "relevant": ["core/shared/src/main/scala/org/http4s/EntityDecoder.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "EntityEncoder for serializing response bodies", + "relevant": ["core/shared/src/main/scala/org/http4s/EntityEncoder.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Headers and individual Header types", + "relevant": ["core/shared/src/main/scala/org/http4s/Headers.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Uri parsing and construction", + "relevant": ["core/shared/src/main/scala/org/http4s/Uri.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Kleisli and OptionT power the Http and HttpRoutes algebra", + "relevant": ["core/shared/src/main/scala/org/http4s/Http.scala"], + "secondary": ["core/shared/src/main/scala/org/http4s/HttpRoutes.scala"], + "category": "architecture" + }, + { + "query": "Status codes and HTTP response status", + "relevant": ["core/shared/src/main/scala/org/http4s/Status.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Method HTTP verb enumeration", + "relevant": ["core/shared/src/main/scala/org/http4s/Method.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how query parameters are extracted and decoded from URIs", + "relevant": ["core/shared/src/main/scala/org/http4s/QueryParam.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "StaticFile for serving static assets", + "relevant": ["core/shared/src/main/scala/org/http4s/StaticFile.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Media type and content type handling", + "relevant": ["core/shared/src/main/scala/org/http4s/MediaType.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how http4s HttpApp lifts routes to a cats-effect IO application", + "relevant": ["core/shared/src/main/scala/org/http4s/HttpApp.scala"], + "secondary": [], + "category": "architecture" + }, + { + "query": "cookie parsing and Set-Cookie header handling", + "relevant": ["core/shared/src/main/scala/org/http4s/headers/Set-Cookie.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "MessageFailure and http4s error types", + "relevant": ["core/shared/src/main/scala/org/http4s/MessageFailure.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Entity body representation and streaming", + "relevant": ["core/shared/src/main/scala/org/http4s/Entity.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "FormDataDecoder for parsing URL-encoded form bodies", + "relevant": ["core/shared/src/main/scala/org/http4s/FormDataDecoder.scala"], + "secondary": [], + "category": "semantic" + }, + { + "query": "HttpRoutes", + "relevant": ["core/shared/src/main/scala/org/http4s/HttpRoutes.scala"], + "secondary": [], + "category": "symbol" + }, + { + "query": "EntityDecoder", + "relevant": ["core/shared/src/main/scala/org/http4s/EntityDecoder.scala"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Uri", + "relevant": ["core/shared/src/main/scala/org/http4s/Uri.scala"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/httpx.json b/benchmarks/annotations/httpx.json index 08edd0c..c52dee4 100644 --- a/benchmarks/annotations/httpx.json +++ b/benchmarks/annotations/httpx.json @@ -1,90 +1,197 @@ [ { "query": "how are HTTP requests sent", - "relevant": ["httpx/_client.py"], - "secondary": [] + "relevant": [ + "httpx/_client.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "authentication and credentials", - "relevant": ["httpx/_auth.py"], - "secondary": [] + "relevant": [ + "httpx/_auth.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "connection pooling and transport", - "relevant": ["httpx/_transports/default.py"], - "secondary": ["httpx/_transports/base.py"] + "relevant": [ + "httpx/_transports/default.py" + ], + "secondary": [ + "httpx/_transports/base.py" + ], + "category": "semantic" }, { "query": "URL parsing and construction", - "relevant": ["httpx/_urlparse.py"], - "secondary": ["httpx/_urls.py"] + "relevant": [ + "httpx/_urlparse.py" + ], + "secondary": [ + "httpx/_urls.py" + ], + "category": "semantic" }, { "query": "response decoding and content", - "relevant": ["httpx/_decoders.py"], - "secondary": ["httpx/_models.py"] + "relevant": [ + "httpx/_decoders.py" + ], + "secondary": [ + "httpx/_models.py" + ], + "category": "semantic" }, { "query": "timeout configuration", - "relevant": ["httpx/_config.py"], - "secondary": [] + "relevant": [ + "httpx/_config.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "cookie handling", - "relevant": ["httpx/_models.py"], - "secondary": ["httpx/_client.py"] + "relevant": [ + "httpx/_models.py" + ], + "secondary": [ + "httpx/_client.py" + ], + "category": "semantic" }, { "query": "multipart file upload", - "relevant": ["httpx/_multipart.py"], - "secondary": ["httpx/_content.py"] + "relevant": [ + "httpx/_multipart.py" + ], + "secondary": [ + "httpx/_content.py" + ], + "category": "semantic" }, { "query": "redirect following", - "relevant": ["httpx/_client.py"], - "secondary": [] + "relevant": [ + "httpx/_client.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "error and exception types", - "relevant": ["httpx/_exceptions.py"], - "secondary": [] + "relevant": [ + "httpx/_exceptions.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how does digest authentication handle the challenge-response flow", - "relevant": ["httpx/_auth.py"], - "secondary": [] + "relevant": [ + "httpx/_auth.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how are keep-alive connections managed and reused", - "relevant": ["httpx/_transports/default.py"], - "secondary": ["httpx/_config.py"] + "relevant": [ + "httpx/_transports/default.py" + ], + "secondary": [ + "httpx/_config.py" + ], + "category": "architecture" }, { "query": "how does streaming response body iteration work", - "relevant": ["httpx/_models.py"], - "secondary": ["httpx/_decoders.py"] + "relevant": [ + "httpx/_models.py" + ], + "secondary": [ + "httpx/_decoders.py" + ], + "category": "architecture" }, { "query": "how are query parameters encoded into the URL", - "relevant": ["httpx/_urls.py"], - "secondary": ["httpx/_urlparse.py"] + "relevant": [ + "httpx/_urls.py" + ], + "secondary": [ + "httpx/_urlparse.py" + ], + "category": "architecture" }, { "query": "how are retries and transport errors surfaced to the caller", - "relevant": ["httpx/_exceptions.py"], - "secondary": ["httpx/_transports/default.py"] + "relevant": [ + "httpx/_exceptions.py" + ], + "secondary": [ + "httpx/_transports/default.py" + ], + "category": "architecture" + }, + { + "query": "DigestAuth", + "relevant": [ + "httpx/_auth.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "AsyncClient", + "relevant": [ + "httpx/_client.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Timeout", + "relevant": [ + "httpx/_config.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "HTTPStatusError", + "relevant": [ + "httpx/_exceptions.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "URL", + "relevant": [ + "httpx/_urls.py" + ], + "secondary": [], + "category": "symbol" }, - {"query": "DigestAuth", "relevant": ["httpx/_auth.py"], "secondary": []}, - {"query": "AsyncClient", "relevant": ["httpx/_client.py"], "secondary": []}, - {"query": "Timeout", "relevant": ["httpx/_config.py"], "secondary": []}, - {"query": "HTTPStatusError", "relevant": ["httpx/_exceptions.py"], "secondary": []}, - {"query": "URL", "relevant": ["httpx/_urls.py"], "secondary": []}, { "query": "how the HTTP transport backend sends requests over the wire", - "relevant": ["httpx/_transports/default.py"], - "secondary": ["httpx/_transports/base.py"], + "relevant": [ + "httpx/_transports/default.py" + ], + "secondary": [ + "httpx/_transports/base.py" + ], "category": "architecture", - "seed": {"path": "httpx/_client.py", "line": 731}, - "related": ["httpx/_transports/default.py"] + "seed": { + "path": "httpx/_client.py", + "line": 731 + }, + "related": [ + "httpx/_transports/default.py" + ] } ] diff --git a/benchmarks/annotations/jackson-databind.json b/benchmarks/annotations/jackson-databind.json index 079d2b6..aa3f1b9 100644 --- a/benchmarks/annotations/jackson-databind.json +++ b/benchmarks/annotations/jackson-databind.json @@ -1,49 +1,202 @@ [ { "query": "ObjectMapper entry point for reading and writing JSON", - "relevant": ["src/main/java/tools/jackson/databind/ObjectMapper.java"], + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectMapper.java" + ], "secondary": [], "category": "semantic" }, { "query": "JSON-specific mapper builder", - "relevant": ["src/main/java/tools/jackson/databind/json/JsonMapper.java"], - "secondary": ["src/main/java/tools/jackson/databind/ObjectMapper.java"], + "relevant": [ + "src/main/java/tools/jackson/databind/json/JsonMapper.java" + ], + "secondary": [ + "src/main/java/tools/jackson/databind/ObjectMapper.java" + ], "category": "architecture" }, { "query": "mutable JSON object node with named field operations", - "relevant": ["src/main/java/tools/jackson/databind/node/ObjectNode.java"], - "secondary": ["src/main/java/tools/jackson/databind/node/JsonNodeFactory.java"], + "relevant": [ + "src/main/java/tools/jackson/databind/node/ObjectNode.java" + ], + "secondary": [ + "src/main/java/tools/jackson/databind/node/JsonNodeFactory.java" + ], "category": "semantic" }, { "query": "polymorphic type resolution", - "relevant": ["src/main/java/tools/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java"], - "secondary": ["src/main/java/tools/jackson/databind/jsontype/impl/TypeDeserializerBase.java"], + "relevant": [ + "src/main/java/tools/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java" + ], + "secondary": [ + "src/main/java/tools/jackson/databind/jsontype/impl/TypeDeserializerBase.java" + ], "category": "architecture" }, { "query": "ObjectMapper", - "relevant": [{"path": "src/main/java/tools/jackson/databind/ObjectMapper.java", "start_line": 93, "end_line": 132}], + "relevant": [ + { + "path": "src/main/java/tools/jackson/databind/ObjectMapper.java", + "start_line": 93, + "end_line": 132 + } + ], "secondary": [], "category": "symbol", - "seed": {"path": "src/main/java/tools/jackson/databind/ObjectMapper.java", "line": 109}, + "seed": { + "path": "src/main/java/tools/jackson/databind/ObjectMapper.java", + "line": 109 + }, "related": [ - {"path": "src/main/java/tools/jackson/databind/ObjectMapper.java", "start_line": 356, "end_line": 387}, - {"path": "src/main/java/tools/jackson/databind/cfg/MapperBuilder.java", "start_line": 338, "end_line": 344} + { + "path": "src/main/java/tools/jackson/databind/ObjectMapper.java", + "start_line": 356, + "end_line": 387 + }, + { + "path": "src/main/java/tools/jackson/databind/cfg/MapperBuilder.java", + "start_line": 338, + "end_line": 344 + } ] }, { "query": "JsonMapper", - "relevant": [{"path": "src/main/java/tools/jackson/databind/json/JsonMapper.java", "start_line": 16, "end_line": 44}], - "secondary": ["src/main/java/tools/jackson/databind/ObjectMapper.java"], + "relevant": [ + { + "path": "src/main/java/tools/jackson/databind/json/JsonMapper.java", + "start_line": 16, + "end_line": 44 + } + ], + "secondary": [ + "src/main/java/tools/jackson/databind/ObjectMapper.java" + ], "category": "symbol" }, { "query": "ObjectNode", - "relevant": [{"path": "src/main/java/tools/jackson/databind/node/ObjectNode.java", "start_line": 21, "end_line": 60}], + "relevant": [ + { + "path": "src/main/java/tools/jackson/databind/node/ObjectNode.java", + "start_line": 21, + "end_line": 60 + } + ], "secondary": [], "category": "symbol" + }, + { + "query": "reading and deserializing JSON into Java objects with type control", + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectReader.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "writing and serializing Java objects to JSON with configuration", + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectWriter.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "bean deserialization from JSON properties", + "relevant": [ + "src/main/java/tools/jackson/databind/deser/bean/BeanDeserializer.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "bean serialization of Java object fields to JSON", + "relevant": [ + "src/main/java/tools/jackson/databind/ser/BeanSerializer.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "type factory for parameterized and collection types", + "relevant": [ + "src/main/java/tools/jackson/databind/type/TypeFactory.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "deserialization context and error accumulation during parsing", + "relevant": [ + "src/main/java/tools/jackson/databind/DeserializationContext.java" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "mapper builder fluent configuration API", + "relevant": [ + "src/main/java/tools/jackson/databind/cfg/MapperBuilder.java" + ], + "secondary": [ + "src/main/java/tools/jackson/databind/ObjectMapper.java" + ], + "category": "architecture" + }, + { + "query": "deserialization feature flags and configuration options", + "relevant": [ + "src/main/java/tools/jackson/databind/DeserializationFeature.java" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the mapper resolves a deserializer for a given Java type", + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectMapper.java" + ], + "secondary": [ + "src/main/java/tools/jackson/databind/deser/BeanDeserializerFactory.java" + ], + "category": "architecture" + }, + { + "query": "ObjectReader", + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectReader.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ObjectWriter", + "relevant": [ + "src/main/java/tools/jackson/databind/ObjectWriter.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "TypeFactory", + "relevant": [ + "src/main/java/tools/jackson/databind/type/TypeFactory.java" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "JSON array node with indexed element access", + "relevant": [ + "src/main/java/tools/jackson/databind/node/ArrayNode.java" + ], + "secondary": [], + "category": "semantic" } ] diff --git a/benchmarks/annotations/kotlinx-coroutines.json b/benchmarks/annotations/kotlinx-coroutines.json new file mode 100644 index 0000000..4dc39f2 --- /dev/null +++ b/benchmarks/annotations/kotlinx-coroutines.json @@ -0,0 +1,162 @@ +[ + { + "query": "how launch and async coroutine builders start coroutines", + "relevant": [ + "kotlinx-coroutines-core/common/src/Builders.common.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Deferred and await for async result computation", + "relevant": [ + "kotlinx-coroutines-core/common/src/Deferred.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Job interface and coroutine lifecycle management", + "relevant": [ + "kotlinx-coroutines-core/common/src/Job.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how coroutine lifetime is tied to a parent scope", + "relevant": [ + "kotlinx-coroutines-core/common/src/CoroutineScope.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "CoroutineContext and coroutine context elements", + "relevant": [ + "kotlinx-coroutines-core/common/src/CoroutineContext.common.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Flow interface and cold stream definition", + "relevant": [ + "kotlinx-coroutines-core/common/src/flow/Flow.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "flow builder and how cold flows are created", + "relevant": [ + "kotlinx-coroutines-core/common/src/flow/Builders.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "flow operators map filter transform and collect", + "relevant": [ + "kotlinx-coroutines-core/common/src/flow/operators/Transform.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Channel for sending and receiving values between coroutines", + "relevant": [ + "kotlinx-coroutines-core/common/src/channels/Channel.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how select expression waits on multiple suspending operations", + "relevant": [ + "kotlinx-coroutines-core/common/src/selects/Select.kt" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Mutex and Semaphore for coroutine synchronization", + "relevant": [ + "kotlinx-coroutines-core/common/src/sync/Mutex.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "withContext for switching coroutine dispatcher context", + "relevant": [ + "kotlinx-coroutines-core/common/src/Builders.common.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "CoroutineDispatcher and dispatching coroutines to threads", + "relevant": [ + "kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "StateFlow and SharedFlow for hot reactive state", + "relevant": [ + "kotlinx-coroutines-core/common/src/flow/StateFlow.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "coroutine exception handling and CoroutineExceptionHandler", + "relevant": [ + "kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "SupervisorJob and supervisor scope for isolated failure handling", + "relevant": [ + "kotlinx-coroutines-core/common/src/Supervisor.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "delay and withTimeout suspending time functions", + "relevant": [ + "kotlinx-coroutines-core/common/src/Delay.kt" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Job", + "relevant": [ + "kotlinx-coroutines-core/common/src/Job.kt" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Flow", + "relevant": [ + "kotlinx-coroutines-core/common/src/flow/Flow.kt" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Channel", + "relevant": [ + "kotlinx-coroutines-core/common/src/channels/Channel.kt" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/ktor.json b/benchmarks/annotations/ktor.json index b2aa38b..f35b83c 100644 --- a/benchmarks/annotations/ktor.json +++ b/benchmarks/annotations/ktor.json @@ -1,93 +1,184 @@ [ { "query": "how the HttpClient is configured with plugins and an engine", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt" + ], "category": "architecture" }, { "query": "how request and response pipelines process interceptors", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt" + ], "category": "architecture" }, { "query": "how HTTP caching stores and validates cached responses", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cache/HttpCache.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cache/HttpCacheEntry.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cache/HttpCache.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cache/HttpCacheEntry.kt" + ], "category": "architecture" }, { "query": "how HTTP status codes are checked and exceptions raised on failure", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt" + ], "secondary": [], "category": "semantic" }, { "query": "how request and response timeouts are enforced", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt" + ], "secondary": [], "category": "semantic" }, { "query": "how HTTP redirects are followed automatically", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt" + ], "secondary": [], "category": "semantic" }, { "query": "how cookies are stored and sent with requests", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/HttpCookies.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/AcceptAllCookiesStorage.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/HttpCookies.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/AcceptAllCookiesStorage.kt" + ], "category": "semantic" }, { "query": "how multipart form data uploads are constructed", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/FormDataContent.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/formDsl.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/FormDataContent.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/request/forms/formDsl.kt" + ], "category": "semantic" }, { "query": "how WebSocket connections are established and messages exchanged", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/ClientSessions.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/ClientSessions.kt" + ], "category": "architecture" }, { "query": "how server-sent events are received and parsed from a streaming response", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/sse/SSE.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/sse/DefaultClientSSESession.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/sse/SSE.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/sse/DefaultClientSSESession.kt" + ], "category": "semantic" }, { "query": "how the engine abstraction separates the client API from the transport", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt"], - "secondary": ["ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt"], + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt" + ], "category": "architecture" }, { "query": "HttpClient", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt"], - "secondary": [] + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt" + ], + "secondary": [], + "category": "symbol" }, { "query": "HttpTimeout", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt"], - "secondary": [] + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt" + ], + "secondary": [], + "category": "symbol" }, { "query": "HttpRedirect", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt"], - "secondary": [] + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt" + ], + "secondary": [], + "category": "symbol" }, { "query": "HttpCookies", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/HttpCookies.kt"], - "secondary": [] + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/cookies/HttpCookies.kt" + ], + "secondary": [], + "category": "symbol" }, { "query": "HttpClientEngine", - "relevant": ["ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt"], - "secondary": [] + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how the HttpClient plugin installation and configuration pipeline works", + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/api/ClientPluginBuilder.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt" + ], + "category": "architecture" + }, + { + "query": "how client plugins intercept and transform requests and responses", + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/api/ClientPluginBuilder.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/api/ClientPluginInstance.kt" + ], + "category": "architecture" + }, + { + "query": "HTTP client engine abstraction and engine factory", + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt" + ], + "secondary": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineFactory.kt" + ], + "category": "semantic" + }, + { + "query": "HttpClientCall", + "relevant": [ + "ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/laravel-framework.json b/benchmarks/annotations/laravel-framework.json index 376c82e..e0bfe82 100644 --- a/benchmarks/annotations/laravel-framework.json +++ b/benchmarks/annotations/laravel-framework.json @@ -28,5 +28,95 @@ "relevant": ["src/Illuminate/Queue/QueueManager.php"], "secondary": [], "category": "symbol" + }, + { + "query": "routing HTTP requests to controllers", + "relevant": ["src/Illuminate/Routing/Router.php"], + "secondary": [], + "category": "architecture" + }, + { + "query": "route parameter binding and model resolution", + "relevant": ["src/Illuminate/Routing/Route.php"], + "secondary": ["src/Illuminate/Routing/Router.php"], + "category": "semantic" + }, + { + "query": "HTTP request input and header access", + "relevant": ["src/Illuminate/Http/Request.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "HTTP response construction and headers", + "relevant": ["src/Illuminate/Http/Response.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "service container dependency injection and binding resolution", + "relevant": ["src/Illuminate/Container/Container.php"], + "secondary": [], + "category": "architecture" + }, + { + "query": "database query builder and fluent SQL interface", + "relevant": ["src/Illuminate/Database/Query/Builder.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "event dispatching and listener registration", + "relevant": ["src/Illuminate/Events/Dispatcher.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "cache store repository and driver abstraction", + "relevant": ["src/Illuminate/Cache/Repository.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "validation rules and error message collection", + "relevant": ["src/Illuminate/Validation/Validator.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how middleware is applied through the pipeline", + "relevant": ["src/Illuminate/Pipeline/Pipeline.php"], + "secondary": ["src/Illuminate/Routing/Router.php"], + "category": "architecture" + }, + { + "query": "how the application bootstraps and registers service providers", + "relevant": ["src/Illuminate/Foundation/Application.php"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Router", + "relevant": ["src/Illuminate/Routing/Router.php"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Container", + "relevant": ["src/Illuminate/Container/Container.php"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Request", + "relevant": ["src/Illuminate/Http/Request.php"], + "secondary": [], + "category": "symbol" + }, + { + "query": "how Blade templates are compiled and rendered by the view factory", + "relevant": ["src/Illuminate/View/Factory.php"], + "secondary": [], + "category": "architecture" } ] diff --git a/benchmarks/annotations/lazy.nvim.json b/benchmarks/annotations/lazy.nvim.json new file mode 100644 index 0000000..f9b54df --- /dev/null +++ b/benchmarks/annotations/lazy.nvim.json @@ -0,0 +1,122 @@ +[ + { + "query": "how lazy.nvim loads a plugin on demand when its trigger fires", + "relevant": ["lua/lazy/core/loader.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how plugin specs are parsed and normalized from user config", + "relevant": ["lua/lazy/core/plugin.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how lazy caches the module loader to speed up startup", + "relevant": ["lua/lazy/core/cache.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how plugin installations and updates are managed with tasks", + "relevant": ["lua/lazy/manage/init.lua"], + "secondary": ["lua/lazy/manage/runner.lua"], + "category": "architecture" + }, + { + "query": "how lazy.nvim checks for plugin updates from git", + "relevant": ["lua/lazy/manage/checker.lua"], + "secondary": ["lua/lazy/manage/git.lua"], + "category": "semantic" + }, + { + "query": "parsing and comparing semver version strings for plugin version constraints", + "relevant": ["lua/lazy/manage/semver.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how lazy.nvim renders the plugin UI view", + "relevant": ["lua/lazy/view/render.lua"], + "secondary": ["lua/lazy/view/init.lua"], + "category": "architecture" + }, + { + "query": "how the lockfile pins plugin commits for reproducible installs", + "relevant": ["lua/lazy/manage/lock.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "spawning and aborting async subprocess commands with uv", + "relevant": ["lua/lazy/manage/process.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how event handlers trigger lazy loading on Neovim events", + "relevant": ["lua/lazy/core/handler/event.lua"], + "secondary": ["lua/lazy/core/handler/init.lua"], + "category": "architecture" + }, + { + "query": "how lazy.nvim config is validated and merged with defaults", + "relevant": ["lua/lazy/core/config.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how M.load activates a plugin and sources its files", + "relevant": ["lua/lazy/core/loader.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how plugin fragments handle multiple specs for the same plugin", + "relevant": ["lua/lazy/core/fragments.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "reloading changed plugin files by detecting lua module changes", + "relevant": ["lua/lazy/manage/reloader.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "reading and writing lazy plugin state to disk between sessions", + "relevant": ["lua/lazy/state.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the floating window for the lazy UI is created", + "relevant": ["lua/lazy/view/float.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how text sections are rendered in the lazy view", + "relevant": ["lua/lazy/view/sections.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how git diff output is shown for plugin updates", + "relevant": ["lua/lazy/view/diff.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the startup sequence initializes lazy and loads start plugins", + "relevant": ["lua/lazy/core/loader.lua"], + "secondary": ["lua/lazy/init.lua"], + "category": "architecture" + }, + { + "query": "how lazy util functions provide error handling and module loading", + "relevant": ["lua/lazy/core/util.lua"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/libuv.json b/benchmarks/annotations/libuv.json new file mode 100644 index 0000000..19f5418 --- /dev/null +++ b/benchmarks/annotations/libuv.json @@ -0,0 +1,184 @@ +[ + { + "query": "how libuv implements the event loop run and tick", + "relevant": [ + "src/unix/core.c" + ], + "secondary": [ + "src/win/core.c" + ], + "category": "semantic" + }, + { + "query": "timer implementation and heap-based scheduling", + "relevant": [ + "src/timer.c" + ], + "secondary": [ + "src/heap-inl.h" + ], + "category": "semantic" + }, + { + "query": "thread pool and work queue for async operations", + "relevant": [ + "src/threadpool.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "async handle for waking up the event loop from another thread", + "relevant": [ + "src/unix/async.c" + ], + "secondary": [ + "src/unix/core.c" + ], + "category": "semantic" + }, + { + "query": "file system operations like read write open stat", + "relevant": [ + "src/unix/fs.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "TCP stream connect and accept implementation", + "relevant": [ + "src/unix/tcp.c" + ], + "secondary": [ + "src/unix/stream.c" + ], + "category": "semantic" + }, + { + "query": "UDP socket send and receive", + "relevant": [ + "src/unix/udp.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "resolving hostnames asynchronously using the thread pool", + "relevant": [ + "src/unix/getaddrinfo.c" + ], + "secondary": [ + "src/threadpool.c" + ], + "category": "semantic" + }, + { + "query": "pipe IPC between processes", + "relevant": [ + "src/unix/pipe.c" + ], + "secondary": [ + "src/unix/stream.c" + ], + "category": "semantic" + }, + { + "query": "child process spawning and management", + "relevant": [ + "src/unix/process.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "signal handling integration with event loop", + "relevant": [ + "src/unix/signal.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "file system event watching with inotify or kqueue", + "relevant": [ + "src/unix/fsevents.c" + ], + "secondary": [ + "src/fs-poll.c" + ], + "category": "semantic" + }, + { + "query": "idle and prepare handle callbacks before blocking", + "relevant": [ + "src/unix/core.c" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "random number generation using OS entropy", + "relevant": [ + "src/random.c" + ], + "secondary": [ + "src/unix/random-devurandom.c" + ], + "category": "semantic" + }, + { + "query": "shared library dlopen and dlsym wrapper", + "relevant": [ + "src/unix/dl.c" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "network interface address enumeration", + "relevant": [ + "src/unix/bsd-ifaddrs.c" + ], + "secondary": [ + "src/unix/linux.c" + ], + "category": "semantic" + }, + { + "query": "libuv handle reference counting and close", + "relevant": [ + "src/uv-common.c" + ], + "secondary": [ + "src/unix/core.c" + ], + "category": "semantic" + }, + { + "query": "thread creation and mutex synchronization primitives", + "relevant": [ + "src/unix/thread.c" + ], + "secondary": [ + "src/thread-common.c" + ], + "category": "semantic" + }, + { + "query": "IDNA internationalized domain name encoding", + "relevant": [ + "src/idna.c" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "tty terminal raw mode and window size", + "relevant": [ + "src/unix/tty.c" + ], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/messagepack-csharp.json b/benchmarks/annotations/messagepack-csharp.json index df6a60c..4471645 100644 --- a/benchmarks/annotations/messagepack-csharp.json +++ b/benchmarks/annotations/messagepack-csharp.json @@ -1,98 +1,173 @@ [ { "query": "how objects are serialized to MessagePack binary format", - "relevant": ["src/MessagePack/MessagePackSerializer.cs"], - "secondary": ["src/MessagePack/MessagePackWriter.cs"], + "relevant": [ + "src/MessagePack/MessagePackSerializer.cs" + ], + "secondary": [ + "src/MessagePack/MessagePackWriter.cs" + ], "category": "architecture" }, { "query": "how binary data is deserialized back into typed C# objects", - "relevant": ["src/MessagePack/MessagePackSerializer.cs"], - "secondary": ["src/MessagePack/MessagePackReader.cs"], + "relevant": [ + "src/MessagePack/MessagePackSerializer.cs" + ], + "secondary": [ + "src/MessagePack/MessagePackReader.cs" + ], "category": "architecture" }, { "query": "how custom formatters are registered and resolved for types", - "relevant": ["src/MessagePack/IFormatterResolver.cs"], - "secondary": ["src/MessagePack/Resolvers/CompositeResolver.cs"], + "relevant": [ + "src/MessagePack/IFormatterResolver.cs" + ], + "secondary": [ + "src/MessagePack/Resolvers/CompositeResolver.cs" + ], "category": "architecture" }, { "query": "how the dynamic object resolver generates serialization code at runtime", - "relevant": ["src/MessagePack/Resolvers/DynamicObjectResolver.cs"], + "relevant": [ + "src/MessagePack/Resolvers/DynamicObjectResolver.cs" + ], "secondary": [], "category": "semantic" }, { "query": "how collections and arrays are serialized", - "relevant": ["src/MessagePack/Formatters/CollectionFormatter.cs"], + "relevant": [ + "src/MessagePack/Formatters/CollectionFormatter.cs" + ], "secondary": [], "category": "semantic" }, { "query": "how union types with subtypes are handled in serialization", - "relevant": ["src/MessagePack/Resolvers/DynamicUnionResolver.cs"], + "relevant": [ + "src/MessagePack/Resolvers/DynamicUnionResolver.cs" + ], "secondary": [], "category": "semantic" }, { "query": "how serializer options control compression and resolver configuration", - "relevant": ["src/MessagePack/MessagePackSerializerOptions.cs"], + "relevant": [ + "src/MessagePack/MessagePackSerializerOptions.cs" + ], "secondary": [], "category": "semantic" }, { "query": "how enums are serialized as integers or strings", - "relevant": ["src/MessagePack/Resolvers/DynamicEnumResolver.cs"], - "secondary": ["src/MessagePack/Formatters/GenericEnumFormatter`1.cs", "src/MessagePack/Formatters/EnumAsStringFormatter`1.cs"], + "relevant": [ + "src/MessagePack/Resolvers/DynamicEnumResolver.cs" + ], + "secondary": [ + "src/MessagePack/Formatters/GenericEnumFormatter`1.cs", + "src/MessagePack/Formatters/EnumAsStringFormatter`1.cs" + ], "category": "semantic" }, { "query": "reading MessagePack data from a stream incrementally", - "relevant": ["src/MessagePack/MessagePackStreamReader.cs"], + "relevant": [ + "src/MessagePack/MessagePackStreamReader.cs" + ], "secondary": [], "category": "semantic" }, { "query": "how the sequence pool manages buffer reuse during serialization", - "relevant": ["src/MessagePack/SequencePool.cs"], - "secondary": ["src/MessagePack/BufferWriter.cs"], + "relevant": [ + "src/MessagePack/SequencePool.cs" + ], + "secondary": [ + "src/MessagePack/BufferWriter.cs" + ], "category": "architecture" }, { "query": "how LZ4 compression is applied to MessagePack payloads", - "relevant": ["src/MessagePack/MessagePackSerializer.cs"], + "relevant": [ + "src/MessagePack/MessagePackSerializer.cs" + ], "secondary": [], "category": "semantic" }, { "query": "MessagePackSerializer", - "relevant": ["src/MessagePack/MessagePackSerializer.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/MessagePackSerializer.cs" + ], + "secondary": [], + "category": "symbol" }, { "query": "MessagePackReader", - "relevant": ["src/MessagePack/MessagePackReader.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/MessagePackReader.cs" + ], + "secondary": [], + "category": "symbol" }, { "query": "IMessagePackFormatter", - "relevant": ["src/MessagePack/Formatters/IMessagePackFormatter`1.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/Formatters/IMessagePackFormatter`1.cs" + ], + "secondary": [], + "category": "symbol" }, { "query": "CompositeResolver", - "relevant": ["src/MessagePack/Resolvers/CompositeResolver.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/Resolvers/CompositeResolver.cs" + ], + "secondary": [], + "category": "symbol" }, { "query": "MessagePackSerializerOptions", - "relevant": ["src/MessagePack/MessagePackSerializerOptions.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/MessagePackSerializerOptions.cs" + ], + "secondary": [], + "category": "symbol" }, { "query": "StandardResolver", - "relevant": ["src/MessagePack/Resolvers/StandardResolver.cs"], - "secondary": [] + "relevant": [ + "src/MessagePack/Resolvers/StandardResolver.cs" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "how the MessagePack binary format codes map to types", + "relevant": [ + "src/MessagePack/MessagePackCode.cs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "security options and depth limits for deserialization", + "relevant": [ + "src/MessagePack/MessagePackSecurity.cs" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "MessagePackSecurity", + "relevant": [ + "src/MessagePack/MessagePackSecurity.cs" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/mini.nvim.json b/benchmarks/annotations/mini.nvim.json new file mode 100644 index 0000000..b7bb951 --- /dev/null +++ b/benchmarks/annotations/mini.nvim.json @@ -0,0 +1,122 @@ +[ + { + "query": "how mini.completion provides LSP-based autocompletion", + "relevant": ["lua/mini/completion.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how mini.files implements a file explorer in a floating buffer", + "relevant": ["lua/mini/files.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how mini.pick implements a fuzzy finder picker", + "relevant": ["lua/mini/pick.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how mini.diff shows inline git diff signs in buffers", + "relevant": ["lua/mini/diff.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.comment toggles line and block comments", + "relevant": ["lua/mini/comment.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.ai extends text objects for selecting around and inside", + "relevant": ["lua/mini/ai.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.statusline builds a configurable Neovim status line", + "relevant": ["lua/mini/statusline.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.animate smoothly animates cursor movement and scrolling", + "relevant": ["lua/mini/animate.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.deps manages Neovim plugin installation and updates", + "relevant": ["lua/mini/deps.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how mini.git provides git integration for files and hunks", + "relevant": ["lua/mini/git.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.indentscope highlights the indent scope of the cursor block", + "relevant": ["lua/mini/indentscope.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.fuzzy scores and ranks fuzzy matches", + "relevant": ["lua/mini/fuzzy.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.hipatterns highlights configurable text patterns in buffers", + "relevant": ["lua/mini/hipatterns.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.jump implements single-character jump navigation", + "relevant": ["lua/mini/jump.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.align aligns text using configurable separators", + "relevant": ["lua/mini/align.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.bufremove safely removes buffers without closing windows", + "relevant": ["lua/mini/bufremove.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.colors manages and creates Neovim color schemes", + "relevant": ["lua/mini/colors.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.clue shows pending keybinding hints as a popup", + "relevant": ["lua/mini/clue.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.base16 builds a full color scheme from a 16-color palette", + "relevant": ["lua/mini/base16.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mini.misc provides utility functions shared across mini modules", + "relevant": ["lua/mini/misc.lua"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/model2vec.json b/benchmarks/annotations/model2vec.json index ad58320..a4bdf04 100644 --- a/benchmarks/annotations/model2vec.json +++ b/benchmarks/annotations/model2vec.json @@ -1,82 +1,182 @@ [ { "query": "how the StaticModel encodes text to embeddings", - "relevant": ["model2vec/model.py"], - "secondary": ["model2vec/inference/model.py"] + "relevant": [ + "model2vec/model.py" + ], + "secondary": [ + "model2vec/inference/model.py" + ], + "category": "architecture" }, { "query": "how a model is distilled from a sentence transformer", - "relevant": ["model2vec/distill/distillation.py"], - "secondary": [] + "relevant": [ + "model2vec/distill/distillation.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "tokenizer construction and vocabulary building", - "relevant": ["model2vec/tokenizer/tokenizer.py"], - "secondary": ["model2vec/distill/utils.py"] + "relevant": [ + "model2vec/tokenizer/tokenizer.py" + ], + "secondary": [ + "model2vec/distill/utils.py" + ], + "category": "semantic" }, { "query": "saving and loading models from disk", - "relevant": ["model2vec/persistence/persistence.py"], - "secondary": ["model2vec/persistence/datamodels.py"] + "relevant": [ + "model2vec/persistence/persistence.py" + ], + "secondary": [ + "model2vec/persistence/datamodels.py" + ], + "category": "semantic" }, { - "query": "quantization of model weights", - "relevant": ["model2vec/quantization.py"], - "secondary": ["model2vec/vocabulary_quantization.py"] + "query": "reducing embedding precision to smaller integer representations", + "relevant": [ + "model2vec/quantization.py" + ], + "secondary": [ + "model2vec/vocabulary_quantization.py" + ], + "category": "semantic" }, { "query": "pushing and loading models from HuggingFace Hub", - "relevant": ["model2vec/persistence/hf.py"], - "secondary": [] + "relevant": [ + "model2vec/persistence/hf.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "distillation inference and embedding extraction", - "relevant": ["model2vec/distill/inference.py"], - "secondary": [] + "relevant": [ + "model2vec/distill/inference.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "training a classifier on top of embeddings", - "relevant": ["model2vec/train/classifier.py"], - "secondary": ["model2vec/train/base.py"] + "relevant": [ + "model2vec/train/classifier.py" + ], + "secondary": [ + "model2vec/train/base.py" + ], + "category": "semantic" }, { "query": "generating model cards for publication", - "relevant": ["model2vec/modelcards/modelcards.py"], - "secondary": [] + "relevant": [ + "model2vec/modelcards/modelcards.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "utility functions used across the package", - "relevant": ["model2vec/utils.py"], - "secondary": ["model2vec/distill/utils.py"] + "relevant": [ + "model2vec/utils.py" + ], + "secondary": [ + "model2vec/distill/utils.py" + ], + "category": "semantic" }, { "query": "how mean pooling is applied over token embeddings during distillation", - "relevant": ["model2vec/distill/inference.py"], - "secondary": [] + "relevant": [ + "model2vec/distill/inference.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how PCA reduces embedding dimensionality", - "relevant": ["model2vec/distill/distillation.py"], - "secondary": ["model2vec/distill/inference.py"] + "relevant": [ + "model2vec/distill/distillation.py" + ], + "secondary": [ + "model2vec/distill/inference.py" + ], + "category": "architecture" }, { "query": "how out-of-vocabulary tokens are handled at inference time", - "relevant": ["model2vec/model.py"], - "secondary": ["model2vec/tokenizer/tokenizer.py"] + "relevant": [ + "model2vec/model.py" + ], + "secondary": [ + "model2vec/tokenizer/tokenizer.py" + ], + "category": "architecture" }, { "query": "how vocabulary is pruned during distillation", - "relevant": ["model2vec/distill/utils.py"], - "secondary": ["model2vec/distill/distillation.py"] + "relevant": [ + "model2vec/distill/utils.py" + ], + "secondary": [ + "model2vec/distill/distillation.py" + ], + "category": "architecture" }, { "query": "how subword token weights are aggregated for whole-word embeddings", - "relevant": ["model2vec/distill/inference.py"], - "secondary": ["model2vec/distill/distillation.py"] - }, - {"query": "StaticModel", "relevant": ["model2vec/model.py"], "secondary": []}, - {"query": "distill", "relevant": ["model2vec/distill/distillation.py"], "secondary": []}, - {"query": "PoolingMode", "relevant": ["model2vec/distill/inference.py"], "secondary": []}, - {"query": "quantize", "relevant": ["model2vec/quantization.py"], "secondary": []}, - {"query": "Tokenizer", "relevant": ["model2vec/tokenizer/tokenizer.py"], "secondary": []} + "relevant": [ + "model2vec/distill/inference.py" + ], + "secondary": [ + "model2vec/distill/distillation.py" + ], + "category": "architecture" + }, + { + "query": "StaticModel", + "relevant": [ + "model2vec/model.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "distill", + "relevant": [ + "model2vec/distill/distillation.py" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "PoolingMode", + "relevant": [ + "model2vec/distill/inference.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "quantize", + "relevant": [ + "model2vec/quantization.py" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Tokenizer", + "relevant": [ + "model2vec/tokenizer/tokenizer.py" + ], + "secondary": [], + "category": "symbol" + } ] diff --git a/benchmarks/annotations/monolog.json b/benchmarks/annotations/monolog.json index 5b53451..8905be4 100644 --- a/benchmarks/annotations/monolog.json +++ b/benchmarks/annotations/monolog.json @@ -48,5 +48,77 @@ "category": "architecture", "seed": {"path": "src/Monolog/Logger.php", "line": 207}, "related": ["src/Monolog/Handler/AbstractHandler.php", "src/Monolog/Handler/HandlerInterface.php"] + }, + { + "query": "rotating file handler for log rotation by date", + "relevant": ["src/Monolog/Handler/RotatingFileHandler.php"], + "secondary": ["src/Monolog/Handler/StreamHandler.php"], + "category": "semantic" + }, + { + "query": "syslog handler for system-level logging", + "relevant": ["src/Monolog/Handler/SyslogHandler.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "filter handler for level-based record filtering", + "relevant": ["src/Monolog/Handler/FilterHandler.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "group handler to broadcast log records to multiple handlers", + "relevant": ["src/Monolog/Handler/GroupHandler.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "PSR-3 log message placeholder processor", + "relevant": ["src/Monolog/Processor/PsrLogMessageProcessor.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "introspection processor adding caller class and method to records", + "relevant": ["src/Monolog/Processor/IntrospectionProcessor.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "normalizer formatter for converting complex values to arrays", + "relevant": ["src/Monolog/Formatter/NormalizerFormatter.php"], + "secondary": [], + "category": "semantic" + }, + { + "query": "abstract processing handler with formatting lifecycle", + "relevant": ["src/Monolog/Handler/AbstractProcessingHandler.php"], + "secondary": ["src/Monolog/Handler/AbstractHandler.php"], + "category": "architecture" + }, + { + "query": "how log records propagate through the handler bubble chain", + "relevant": ["src/Monolog/Logger.php"], + "secondary": ["src/Monolog/Handler/AbstractHandler.php"], + "category": "architecture" + }, + { + "query": "how formatters transform log records into output strings", + "relevant": ["src/Monolog/Formatter/LineFormatter.php"], + "secondary": ["src/Monolog/Formatter/NormalizerFormatter.php"], + "category": "architecture" + }, + { + "query": "RotatingFileHandler", + "relevant": ["src/Monolog/Handler/RotatingFileHandler.php"], + "secondary": [], + "category": "symbol" + }, + { + "query": "PsrLogMessageProcessor", + "relevant": ["src/Monolog/Processor/PsrLogMessageProcessor.php"], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/newtonsoft-json.json b/benchmarks/annotations/newtonsoft-json.json new file mode 100644 index 0000000..3931dad --- /dev/null +++ b/benchmarks/annotations/newtonsoft-json.json @@ -0,0 +1,122 @@ +[ + { + "query": "how JsonConvert serializes and deserializes objects", + "relevant": ["Src/Newtonsoft.Json/JsonConvert.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "JsonSerializer core serialization and deserialization engine", + "relevant": ["Src/Newtonsoft.Json/JsonSerializer.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "JsonReader base class and token reading API", + "relevant": ["Src/Newtonsoft.Json/JsonReader.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonWriter base class and token writing API", + "relevant": ["Src/Newtonsoft.Json/JsonWriter.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonTextReader for reading JSON from text input", + "relevant": ["Src/Newtonsoft.Json/JsonTextReader.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonTextWriter for writing JSON to text output", + "relevant": ["Src/Newtonsoft.Json/JsonTextWriter.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JToken JObject JArray LINQ to JSON object model", + "relevant": ["Src/Newtonsoft.Json/Linq/JToken.cs"], + "secondary": ["Src/Newtonsoft.Json/Linq/JObject.cs"], + "category": "architecture" + }, + { + "query": "JObject for dynamic JSON object manipulation", + "relevant": ["Src/Newtonsoft.Json/Linq/JObject.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonConverter abstract class for custom type conversion", + "relevant": ["Src/Newtonsoft.Json/JsonConverter.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how JsonSerializerSettings configures serializer behavior", + "relevant": ["Src/Newtonsoft.Json/JsonSerializerSettings.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "contract resolver and how JSON property names are determined", + "relevant": ["Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the internal serializer writer maps .NET objects to JSON tokens", + "relevant": ["Src/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the internal serializer reader maps JSON tokens to .NET objects", + "relevant": ["Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "NullValueHandling and reference loop handling settings", + "relevant": ["Src/Newtonsoft.Json/JsonSerializerSettings.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonProperty and JsonObject attribute for controlling serialization", + "relevant": ["Src/Newtonsoft.Json/JsonPropertyAttribute.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonException and JSON error types", + "relevant": ["Src/Newtonsoft.Json/JsonException.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "date handling and ISO 8601 parsing in Newtonsoft.Json", + "relevant": ["Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JsonConvert", + "relevant": ["Src/Newtonsoft.Json/JsonConvert.cs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "JToken", + "relevant": ["Src/Newtonsoft.Json/Linq/JToken.cs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "JsonConverter", + "relevant": ["Src/Newtonsoft.Json/JsonConverter.cs"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/nlohmann-json.json b/benchmarks/annotations/nlohmann-json.json new file mode 100644 index 0000000..f33ebf3 --- /dev/null +++ b/benchmarks/annotations/nlohmann-json.json @@ -0,0 +1,174 @@ +[ + { + "query": "how JSON values are stored as a discriminated union of types", + "relevant": [ + "include/nlohmann/json.hpp" + ], + "secondary": [ + "include/nlohmann/detail/value_t.hpp" + ], + "category": "architecture" + }, + { + "query": "JSON parser and tokenizer", + "relevant": [ + "include/nlohmann/detail/input/parser.hpp" + ], + "secondary": [ + "include/nlohmann/detail/input/lexer.hpp" + ], + "category": "architecture" + }, + { + "query": "JSON lexer and token scanning", + "relevant": [ + "include/nlohmann/detail/input/lexer.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON serialization to string output", + "relevant": [ + "include/nlohmann/detail/output/serializer.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "ADL-based to_json and from_json conversion hooks for custom types", + "relevant": [ + "include/nlohmann/adl_serializer.hpp" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "exception types for parse and type errors", + "relevant": [ + "include/nlohmann/detail/exceptions.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how from_json populates a custom C++ type from JSON", + "relevant": [ + "include/nlohmann/detail/conversions/from_json.hpp" + ], + "secondary": [ + "include/nlohmann/adl_serializer.hpp" + ], + "category": "architecture" + }, + { + "query": "how to_json serializes a custom C++ type to JSON", + "relevant": [ + "include/nlohmann/detail/conversions/to_json.hpp" + ], + "secondary": [ + "include/nlohmann/adl_serializer.hpp" + ], + "category": "architecture" + }, + { + "query": "JSON Pointer (RFC 6901) for navigating nested values", + "relevant": [ + "include/nlohmann/detail/json_pointer.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "ordered map for insertion-order-preserving JSON objects", + "relevant": [ + "include/nlohmann/ordered_map.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "type traits and SFINAE utilities for serialization detection", + "relevant": [ + "include/nlohmann/detail/meta/type_traits.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "SAX-style event-driven JSON parsing interface", + "relevant": [ + "include/nlohmann/detail/input/json_sax.hpp" + ], + "secondary": [ + "include/nlohmann/detail/input/parser.hpp" + ], + "category": "architecture" + }, + { + "query": "value type enum for JSON null, boolean, number, string, array, object", + "relevant": [ + "include/nlohmann/detail/value_t.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "binary format support for BSON, CBOR, and MessagePack", + "relevant": [ + "include/nlohmann/detail/output/binary_writer.hpp" + ], + "secondary": [ + "include/nlohmann/detail/input/binary_reader.hpp" + ], + "category": "semantic" + }, + { + "query": "how operator[] and at() access and create nested JSON values", + "relevant": [ + "include/nlohmann/json.hpp" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "JSON merge patch and diff operations", + "relevant": [ + "include/nlohmann/json.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "iterator implementation for JSON arrays and objects", + "relevant": [ + "include/nlohmann/detail/iterators/iter_impl.hpp" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "basic_json", + "relevant": [ + "include/nlohmann/json.hpp" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "json_pointer", + "relevant": [ + "include/nlohmann/detail/json_pointer.hpp" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "adl_serializer", + "relevant": [ + "include/nlohmann/adl_serializer.hpp" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/nvm.json b/benchmarks/annotations/nvm.json new file mode 100644 index 0000000..f85bced --- /dev/null +++ b/benchmarks/annotations/nvm.json @@ -0,0 +1,122 @@ +[ + { + "query": "how nvm installs a specific Node.js version", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how nvm downloads a Node.js tarball from the remote", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm resolves an alias or version string to a concrete version", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm switches the active Node.js version in the current shell", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm finds the nearest .nvmrc file by walking up the directory tree", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm_find_project_dir locates the project root directory", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm lists installed and available Node.js versions", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm detects whether a version is already installed", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm manages the PATH to point to the active Node.js bin", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how nvm_download wraps curl or wget for fetching remote resources", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm handles the default alias to set the default Node.js version", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm detects and uses system Node.js as a fallback", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm installs the latest npm for a given Node.js version", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm processes and validates the contents of an .nvmrc file", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm_has checks whether a command exists on the system", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm uninstalls a Node.js version and cleans up its directory", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm checks curl supports libz compression", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm_get_latest fetches the latest available Node.js version", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm sanitizes the auth header in download requests", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how nvm detects color support and conditionally uses ANSI codes", + "relevant": ["nvm.sh"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/pandoc.json b/benchmarks/annotations/pandoc.json new file mode 100644 index 0000000..a35515d --- /dev/null +++ b/benchmarks/annotations/pandoc.json @@ -0,0 +1,122 @@ +[ + { + "query": "how pandoc reads and parses Markdown into an AST", + "relevant": ["Readers/Markdown.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc writes an AST to HTML output", + "relevant": ["Writers/HTML.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc converts a document to LaTeX", + "relevant": ["Writers/LaTeX.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the PandocMonad typeclass abstracts IO for readers and writers", + "relevant": ["Class.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc handles YAML metadata blocks in documents", + "relevant": ["Readers/Markdown.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc applies document transforms like header shifting", + "relevant": ["Transforms.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc reads a DocBook XML document", + "relevant": ["Readers/DocBook.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc handles citations and bibliography processing", + "relevant": ["Citeproc.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc options control output format and extensions", + "relevant": ["Options.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc parses table structures in documents", + "relevant": ["Parsing/GridTable.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc fetches and embeds media into self-contained output", + "relevant": ["SelfContained.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc writes CommonMark Markdown output", + "relevant": ["Writers/CommonMark.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc reads RST reStructuredText documents", + "relevant": ["Readers/RST.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc handles Lua filter scripting", + "relevant": ["Scripting.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc's app module orchestrates reading, filtering, and writing", + "relevant": ["App.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc handles TeX math in documents", + "relevant": ["TeX.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc parses generic parsing utilities for readers", + "relevant": ["Parsing/General.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc generates PDF output via LaTeX or other backends", + "relevant": ["PDF.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pandoc templates are processed and rendered", + "relevant": ["Templates.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how pandoc error types represent conversion failures", + "relevant": ["Error.hs"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/phoenix.json b/benchmarks/annotations/phoenix.json new file mode 100644 index 0000000..5dfcf01 --- /dev/null +++ b/benchmarks/annotations/phoenix.json @@ -0,0 +1,158 @@ +[ + { + "query": "how Phoenix routes are defined and dispatched to controller actions", + "relevant": [ + "lib/phoenix/router.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "controller actions and request handling helpers", + "relevant": [ + "lib/phoenix/controller.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "real-time channel messaging, topics, and join/leave", + "relevant": [ + "lib/phoenix/channel.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "channel server process and message routing", + "relevant": [ + "lib/phoenix/channel/server.ex" + ], + "secondary": [ + "lib/phoenix/channel.ex" + ], + "category": "semantic" + }, + { + "query": "endpoint and plug pipeline configuration", + "relevant": [ + "lib/phoenix/endpoint.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "WebSocket and long-poll socket transport", + "relevant": [ + "lib/phoenix/socket.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "presence tracking, diffs, and broadcast", + "relevant": [ + "lib/phoenix/presence.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "verified routes for compile-time URL validation", + "relevant": [ + "lib/phoenix/verified_routes.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Phoenix logs request and response lifecycle events", + "relevant": [ + "lib/phoenix/logger.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how channels handle incoming messages and replies", + "relevant": [ + "lib/phoenix/channel.ex" + ], + "secondary": [ + "lib/phoenix/channel/server.ex" + ], + "category": "architecture" + }, + { + "query": "how the router matches path segments to controller/action", + "relevant": [ + "lib/phoenix/router.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "named URL generation from route helpers", + "relevant": [ + "lib/phoenix/router.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how controllers render views and JSON responses", + "relevant": [ + "lib/phoenix/controller.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Param protocol for extracting URL-safe IDs", + "relevant": [ + "lib/phoenix/param.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "naming conventions for controllers and view modules", + "relevant": [ + "lib/phoenix/naming.ex" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Phoenix Endpoint supervises and starts the HTTP server", + "relevant": [ + "lib/phoenix/endpoint.ex" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Router", + "relevant": [ + "lib/phoenix/router.ex" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Controller", + "relevant": [ + "lib/phoenix/controller.ex" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Channel", + "relevant": [ + "lib/phoenix/channel.ex" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/plug.json b/benchmarks/annotations/plug.json new file mode 100644 index 0000000..466e411 --- /dev/null +++ b/benchmarks/annotations/plug.json @@ -0,0 +1,122 @@ +[ + { + "query": "Plug.Conn struct and HTTP connection representation", + "relevant": ["lib/plug/conn.ex"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how the Plug behaviour defines call/2 for composable middleware", + "relevant": ["lib/plug/builder.ex"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Plug.Router for pattern-matched route dispatch", + "relevant": ["lib/plug/router.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Plug.Parsers for parsing request body content types", + "relevant": ["lib/plug/parsers.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON body parser plug", + "relevant": ["lib/plug/parsers/json.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "URL-encoded form body parser", + "relevant": ["lib/plug/parsers/urlencoded.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "multipart body parser and file upload handling", + "relevant": ["lib/plug/parsers/multipart.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Plug.Session for cookie and server-side session management", + "relevant": ["lib/plug/session.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "cookie store for Plug.Session", + "relevant": ["lib/plug/session/cookie.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "CSRF protection plug", + "relevant": ["lib/plug/csrf_protection.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Plug.Static for serving static files", + "relevant": ["lib/plug/static.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Plug.Builder pipelines multiple plugs together", + "relevant": ["lib/plug/builder.ex"], + "secondary": [], + "category": "architecture" + }, + { + "query": "request path and query string helpers on Plug.Conn", + "relevant": ["lib/plug/conn.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how halt stops a plug pipeline from continuing", + "relevant": ["lib/plug/conn.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "sending responses and setting response status in Plug", + "relevant": ["lib/plug/conn.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Plug.SSL for HTTPS enforcement and HSTS headers", + "relevant": ["lib/plug/ssl.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "request path parameter extraction in Plug.Router", + "relevant": ["lib/plug/router/utils.ex"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Conn", + "relevant": ["lib/plug/conn.ex"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Router", + "relevant": ["lib/plug/router.ex"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Builder", + "relevant": ["lib/plug/builder.ex"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/pydantic.json b/benchmarks/annotations/pydantic.json index 1484adc..e2ad7a7 100644 --- a/benchmarks/annotations/pydantic.json +++ b/benchmarks/annotations/pydantic.json @@ -1,82 +1,178 @@ [ { "query": "how is BaseModel defined and instantiated", - "relevant": ["pydantic/main.py"], - "secondary": [] + "relevant": [ + "pydantic/main.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how are model fields declared and constrained", - "relevant": ["pydantic/fields.py"], - "secondary": ["pydantic/types.py"] + "relevant": [ + "pydantic/fields.py" + ], + "secondary": [ + "pydantic/types.py" + ], + "category": "architecture" }, { "query": "JSON schema generation from models", - "relevant": ["pydantic/json_schema.py"], - "secondary": [] + "relevant": [ + "pydantic/json_schema.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "custom field and model validators", - "relevant": ["pydantic/functional_validators.py"], - "secondary": ["pydantic/class_validators.py"] + "relevant": [ + "pydantic/functional_validators.py" + ], + "secondary": [ + "pydantic/class_validators.py" + ], + "category": "semantic" }, { "query": "how to serialize models to JSON", - "relevant": ["pydantic/functional_serializers.py"], - "secondary": ["pydantic/main.py"] + "relevant": [ + "pydantic/functional_serializers.py" + ], + "secondary": [ + "pydantic/main.py" + ], + "category": "architecture" }, { "query": "network types like URLs and email addresses", - "relevant": ["pydantic/networks.py"], - "secondary": [] + "relevant": [ + "pydantic/networks.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "model configuration and settings", - "relevant": ["pydantic/config.py"], - "secondary": [] + "relevant": [ + "pydantic/config.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "validating data without a model using TypeAdapter", - "relevant": ["pydantic/type_adapter.py"], - "secondary": [] + "relevant": [ + "pydantic/type_adapter.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "alias handling for field names", - "relevant": ["pydantic/aliases.py"], - "secondary": ["pydantic/alias_generators.py"] + "relevant": [ + "pydantic/aliases.py" + ], + "secondary": [ + "pydantic/alias_generators.py" + ], + "category": "semantic" }, { "query": "root model for wrapping a single value", - "relevant": ["pydantic/root_model.py"], - "secondary": [] + "relevant": [ + "pydantic/root_model.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how discriminated unions select the right model variant", - "relevant": ["pydantic/types.py"], - "secondary": ["pydantic/main.py"] + "relevant": [ + "pydantic/types.py" + ], + "secondary": [ + "pydantic/main.py" + ], + "category": "architecture" }, { "query": "how computed fields are defined on a model", - "relevant": ["pydantic/fields.py"], - "secondary": ["pydantic/functional_serializers.py"] + "relevant": [ + "pydantic/fields.py" + ], + "secondary": [ + "pydantic/functional_serializers.py" + ], + "category": "architecture" }, { "query": "what runs after model initialisation in model_post_init", - "relevant": ["pydantic/main.py"], - "secondary": [] + "relevant": [ + "pydantic/main.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how model inheritance and field overriding works", - "relevant": ["pydantic/main.py"], - "secondary": ["pydantic/fields.py"] + "relevant": [ + "pydantic/main.py" + ], + "secondary": [ + "pydantic/fields.py" + ], + "category": "architecture" }, { "query": "how to validate a function's arguments with pydantic", - "relevant": ["pydantic/validate_call_decorator.py"], - "secondary": ["pydantic/decorator.py"] - }, - {"query": "BaseModel", "relevant": ["pydantic/main.py"], "secondary": []}, - {"query": "field_validator", "relevant": ["pydantic/functional_validators.py"], "secondary": []}, - {"query": "model_validator", "relevant": ["pydantic/functional_validators.py"], "secondary": []}, - {"query": "ConfigDict", "relevant": ["pydantic/config.py"], "secondary": []}, - {"query": "Field", "relevant": ["pydantic/fields.py"], "secondary": []} + "relevant": [ + "pydantic/validate_call_decorator.py" + ], + "secondary": [ + "pydantic/decorator.py" + ], + "category": "architecture" + }, + { + "query": "BaseModel", + "relevant": [ + "pydantic/main.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "field_validator", + "relevant": [ + "pydantic/functional_validators.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "model_validator", + "relevant": [ + "pydantic/functional_validators.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ConfigDict", + "relevant": [ + "pydantic/config.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Field", + "relevant": [ + "pydantic/fields.py" + ], + "secondary": [], + "category": "symbol" + } ] diff --git a/benchmarks/annotations/rack.json b/benchmarks/annotations/rack.json index 037b6b1..2266fad 100644 --- a/benchmarks/annotations/rack.json +++ b/benchmarks/annotations/rack.json @@ -1,43 +1,153 @@ [ { "query": "HTTP request wrapper and forwarded headers", - "relevant": ["lib/rack/request.rb"], + "relevant": [ + "lib/rack/request.rb" + ], "secondary": [], "category": "semantic" }, { - "query": "HTTP response construction", - "relevant": ["lib/rack/response.rb"], + "query": "building and sending an HTTP reply with headers and body", + "relevant": [ + "lib/rack/response.rb" + ], "secondary": [], "category": "semantic" }, { "query": "middleware builder DSL", - "relevant": ["lib/rack/builder.rb"], + "relevant": [ + "lib/rack/builder.rb" + ], "secondary": [], "category": "architecture" }, { "query": "URL path mapping across mounted apps", - "relevant": ["lib/rack/urlmap.rb"], + "relevant": [ + "lib/rack/urlmap.rb" + ], "secondary": [], "category": "architecture" }, { "query": "Request", - "relevant": ["lib/rack/request.rb"], + "relevant": [ + "lib/rack/request.rb" + ], "secondary": [], "category": "symbol" }, { "query": "Rack::Response", - "relevant": [{"path": "lib/rack/response.rb", "start_line": 23, "end_line": 62}], + "relevant": [ + { + "path": "lib/rack/response.rb", + "start_line": 23, + "end_line": 62 + } + ], "secondary": [], "category": "symbol" }, { "query": "Rack::Builder", - "relevant": [{"path": "lib/rack/builder.rb", "start_line": 36, "end_line": 80}], + "relevant": [ + { + "path": "lib/rack/builder.rb", + "start_line": 36, + "end_line": 80 + } + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "ETag caching and conditional response headers", + "relevant": [ + "lib/rack/etag.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "static file serving middleware", + "relevant": [ + "lib/rack/static.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "serving a file index page for a folder on disk", + "relevant": [ + "lib/rack/directory.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "MIME type detection from file extensions", + "relevant": [ + "lib/rack/mime.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "utility methods for parameter parsing and URL encoding", + "relevant": [ + "lib/rack/utils.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "splitting multipart/form-data bodies into individual fields", + "relevant": [ + "lib/rack/multipart.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Rack spec conformance validator", + "relevant": [ + "lib/rack/lint.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "deferred body proxy for lazy response bodies", + "relevant": [ + "lib/rack/body_proxy.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the Builder DSL assembles the middleware stack with use and run", + "relevant": [ + "lib/rack/builder.rb" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Utils", + "relevant": [ + "lib/rack/utils.rb" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Lint", + "relevant": [ + "lib/rack/lint.rb" + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/rails.json b/benchmarks/annotations/rails.json index 9b5d376..c4286c8 100644 --- a/benchmarks/annotations/rails.json +++ b/benchmarks/annotations/rails.json @@ -45,5 +45,83 @@ "relevant": ["railties/lib/rails/paths.rb"], "secondary": [], "category": "symbol" + }, + { + "query": "railtie extension point for Rails plugins", + "relevant": ["railties/lib/rails/railtie.rb"], + "secondary": [], + "category": "semantic" + }, + { + "query": "generator framework and base generator class", + "relevant": ["railties/lib/rails/generators/base.rb"], + "secondary": ["railties/lib/rails/generators.rb"], + "category": "architecture" + }, + { + "query": "application generator and default app scaffolding", + "relevant": ["railties/lib/rails/generators/rails/app/app_generator.rb"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Rails command dispatch and subcommand routing", + "relevant": ["railties/lib/rails/command.rb"], + "secondary": [], + "category": "semantic" + }, + { + "query": "initializable module for ordered initialization steps", + "relevant": ["railties/lib/rails/initializable.rb"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how railties are sorted by initialization dependency", + "relevant": ["railties/lib/rails/railtie.rb"], + "secondary": ["railties/lib/rails/initializable.rb"], + "category": "architecture" + }, + { + "query": "default middleware stack configuration", + "relevant": ["railties/lib/rails/application/default_middleware_stack.rb"], + "secondary": [], + "category": "architecture" + }, + { + "query": "application routes reloader for development mode", + "relevant": ["railties/lib/rails/application/routes_reloader.rb"], + "secondary": [], + "category": "semantic" + }, + { + "query": "server command and rack handler configuration", + "relevant": ["railties/lib/rails/commands/server/server_command.rb"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Railtie", + "relevant": ["railties/lib/rails/railtie.rb"], + "secondary": [], + "category": "symbol" + }, + { + "query": "how rake tasks are loaded and registered from railties", + "relevant": ["railties/lib/rails/railtie.rb"], + "secondary": [], + "category": "architecture" + }, + { + "query": "engine middleware insertion and plugin loading", + "relevant": ["railties/lib/rails/engine.rb"], + "secondary": ["railties/lib/rails/application/default_middleware_stack.rb"], + "category": "architecture" + }, + { + "query": "how generators are discovered and registered", + "relevant": ["railties/lib/rails/generators.rb"], + "secondary": ["railties/lib/rails/generators/base.rb"], + "category": "architecture" } ] diff --git a/benchmarks/annotations/redis.json b/benchmarks/annotations/redis.json new file mode 100644 index 0000000..e11e176 --- /dev/null +++ b/benchmarks/annotations/redis.json @@ -0,0 +1,122 @@ +[ + { + "query": "how Redis implements the SET command with options like NX, EX, PX", + "relevant": ["src/t_string.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how active key expiration cycle works", + "relevant": ["src/expire.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how RDB persistence serializes the database to disk", + "relevant": ["src/rdb.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how append-only file logging records write commands", + "relevant": ["src/aof.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how pub/sub message delivery works to subscribers", + "relevant": ["src/pubsub.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how master-replica replication syncs data to replicas", + "relevant": ["src/replication.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "reading and parsing client commands from the network", + "relevant": ["src/networking.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how sorted sets score-based range queries work", + "relevant": ["src/t_zset.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Redis hash objects store and retrieve fields", + "relevant": ["src/t_hash.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how SETRANGE modifies a substring within a string value", + "relevant": ["src/t_string.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the event loop handles file events and time events", + "relevant": ["src/ae.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "expiring keys set with EXPIRE or TTL commands", + "relevant": ["src/expire.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how slave keys with expiry are tracked in replication", + "relevant": ["src/expire.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "server startup initialization and configuration loading", + "relevant": ["src/server.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how RDB saves LZF-compressed string objects", + "relevant": ["src/rdb.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Redis cluster handles slot assignment and routing", + "relevant": ["src/cluster.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how list push and pop operations are implemented", + "relevant": ["src/t_list.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how set intersection and union operations work", + "relevant": ["src/t_set.c"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the database keyspace stores and looks up keys", + "relevant": ["src/db.c"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how server logging formats and writes log messages", + "relevant": ["src/server.c"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/redux.json b/benchmarks/annotations/redux.json index b551227..229f67c 100644 --- a/benchmarks/annotations/redux.json +++ b/benchmarks/annotations/redux.json @@ -28,5 +28,95 @@ "relevant": ["src/createStore.ts"], "secondary": [], "category": "symbol" + }, + { + "query": "action creator binding to a dispatch function", + "relevant": ["src/bindActionCreators.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how listeners are subscribed and notified after state changes", + "relevant": ["src/createStore.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how combineReducers validates reducer return values in development", + "relevant": ["src/combineReducers.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "store type definition and dispatch overloads", + "relevant": ["src/types/store.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "action and action creator type definitions", + "relevant": ["src/types/actions.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "middleware type signature and API shape", + "relevant": ["src/types/middleware.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "reducer type definition", + "relevant": ["src/types/reducers.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "runtime type identification utility", + "relevant": ["src/utils/kindOf.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "development-only warning helper", + "relevant": ["src/utils/warning.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how replaceReducer swaps the root reducer at runtime", + "relevant": ["src/createStore.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how applyMiddleware wraps getState and dispatch for the middleware chain", + "relevant": ["src/applyMiddleware.ts"], + "secondary": ["src/compose.ts"], + "category": "architecture" + }, + { + "query": "combineReducers", + "relevant": ["src/combineReducers.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "applyMiddleware", + "relevant": ["src/applyMiddleware.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "bindActionCreators", + "relevant": ["src/bindActionCreators.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Middleware", + "relevant": ["src/types/middleware.ts"], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/requests.json b/benchmarks/annotations/requests.json index 067c6c2..c71fb51 100644 --- a/benchmarks/annotations/requests.json +++ b/benchmarks/annotations/requests.json @@ -1,108 +1,202 @@ [ { "query": "how HTTP sessions manage state and connections", - "relevant": ["src/requests/sessions.py"], - "secondary": [] + "relevant": [ + "src/requests/sessions.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "authentication mechanisms and credential handling", - "relevant": ["src/requests/auth.py"], - "secondary": [] + "relevant": [ + "src/requests/auth.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "transport adapters and connection pooling", - "relevant": ["src/requests/adapters.py"], - "secondary": [] + "relevant": [ + "src/requests/adapters.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "cookie storage and persistence", - "relevant": ["src/requests/cookies.py"], - "secondary": [] + "relevant": [ + "src/requests/cookies.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how redirects are followed", - "relevant": ["src/requests/sessions.py"], - "secondary": ["src/requests/models.py"] + "relevant": [ + "src/requests/sessions.py" + ], + "secondary": [ + "src/requests/models.py" + ], + "category": "architecture" }, { "query": "error and exception types", - "relevant": ["src/requests/exceptions.py"], - "secondary": [] + "relevant": [ + "src/requests/exceptions.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "request and response model internals", - "relevant": ["src/requests/models.py"], - "secondary": [] + "relevant": [ + "src/requests/models.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "SSL certificate verification", - "relevant": ["src/requests/adapters.py"], - "secondary": ["src/requests/certs.py"] + "relevant": [ + "src/requests/adapters.py" + ], + "secondary": [ + "src/requests/certs.py" + ], + "category": "semantic" }, { "query": "event hooks system", - "relevant": ["src/requests/hooks.py"], - "secondary": [] + "relevant": [ + "src/requests/hooks.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "utility functions for encoding and headers", - "relevant": ["src/requests/utils.py"], - "secondary": [] + "relevant": [ + "src/requests/utils.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how a PreparedRequest is built from user-supplied arguments", - "relevant": ["src/requests/models.py"], - "secondary": ["src/requests/sessions.py"] + "relevant": [ + "src/requests/models.py" + ], + "secondary": [ + "src/requests/sessions.py" + ], + "category": "architecture" }, { "query": "how digest authentication implements the challenge-response handshake", - "relevant": ["src/requests/auth.py"], - "secondary": [] + "relevant": [ + "src/requests/auth.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how response encoding is detected from headers and content", - "relevant": ["src/requests/utils.py"], - "secondary": ["src/requests/models.py"] + "relevant": [ + "src/requests/utils.py" + ], + "secondary": [ + "src/requests/models.py" + ], + "category": "architecture" }, { "query": "how proxy settings are read from environment variables", - "relevant": ["src/requests/utils.py"], - "secondary": ["src/requests/sessions.py"] + "relevant": [ + "src/requests/utils.py" + ], + "secondary": [ + "src/requests/sessions.py" + ], + "category": "architecture" }, { "query": "how connection keep-alive and pooling limits are configured", - "relevant": ["src/requests/adapters.py"], - "secondary": [] + "relevant": [ + "src/requests/adapters.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "Session", - "relevant": [{"path": "src/requests/sessions.py", "start_line": 356, "end_line": 394}], + "relevant": [ + { + "path": "src/requests/sessions.py", + "start_line": 356, + "end_line": 394 + } + ], "secondary": [], "category": "symbol" }, { "query": "HTTPDigestAuth", - "relevant": [{"path": "src/requests/auth.py", "start_line": 107, "end_line": 136}], + "relevant": [ + { + "path": "src/requests/auth.py", + "start_line": 107, + "end_line": 136 + } + ], "secondary": [], "category": "symbol" }, { "query": "PreparedRequest", - "relevant": [{"path": "src/requests/models.py", "start_line": 315, "end_line": 364}], + "relevant": [ + { + "path": "src/requests/models.py", + "start_line": 315, + "end_line": 364 + } + ], "secondary": [], "category": "symbol", - "seed": {"path": "src/requests/sessions.py", "line": 485}, - "related": [{"path": "src/requests/models.py", "start_line": 315, "end_line": 353}] + "seed": { + "path": "src/requests/sessions.py", + "line": 485 + }, + "related": [ + { + "path": "src/requests/models.py", + "start_line": 315, + "end_line": 353 + } + ] }, { "query": "HTTPAdapter", - "relevant": [{"path": "src/requests/adapters.py", "start_line": 144, "end_line": 192}], + "relevant": [ + { + "path": "src/requests/adapters.py", + "start_line": 144, + "end_line": 192 + } + ], "secondary": [], "category": "symbol" }, { "query": "Response", - "relevant": [{"path": "src/requests/models.py", "start_line": 642, "end_line": 691}], + "relevant": [ + { + "path": "src/requests/models.py", + "start_line": 642, + "end_line": 691 + } + ], "secondary": [], "category": "symbol" } diff --git a/benchmarks/annotations/riverpod.json b/benchmarks/annotations/riverpod.json new file mode 100644 index 0000000..83ce58a --- /dev/null +++ b/benchmarks/annotations/riverpod.json @@ -0,0 +1,122 @@ +[ + { + "query": "how ProviderContainer manages provider state and lifecycle", + "relevant": ["core/provider_container.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Ref allows providers to read and watch other providers", + "relevant": ["core/ref.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how AsyncValue represents loading, data, and error states", + "relevant": ["core/async_value.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how providers notify listeners when their state changes", + "relevant": ["core/element.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how provider subscriptions track and dispose of listeners", + "relevant": ["core/provider_subscription.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the riverpod scheduler batches provider state updates", + "relevant": ["core/scheduler.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how provider families parameterize providers with arguments", + "relevant": ["core/family.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how select filters provider state to avoid unnecessary rebuilds", + "relevant": ["core/modifiers/select.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how NotifierProvider wraps a Notifier class for state management", + "relevant": ["core/provider/notifier_provider.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how provider overrides substitute implementations for testing", + "relevant": ["core/override.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how a functional provider is defined with a create function", + "relevant": ["core/provider/functional_provider.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the future modifier converts async providers to FutureProvider", + "relevant": ["core/modifiers/future.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how riverpod's common Result type wraps success and error", + "relevant": ["common/result.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how mutations represent write operations on provider state", + "relevant": ["core/mutations.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the listenable base class supports subscription and notification", + "relevant": ["common/listenable.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how provider persistence saves and restores state across sessions", + "relevant": ["core/persist.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the framework.dart entry point wires all riverpod components", + "relevant": ["framework.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how provider foundation types define the base provider contract", + "relevant": ["core/foundation.dart"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how select_async filters an async provider's value stream", + "relevant": ["core/modifiers/select_async.dart"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how proxy_provider_listenable delegates listening to another provider", + "relevant": ["core/proxy_provider_listenable.dart"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/rxswift.json b/benchmarks/annotations/rxswift.json new file mode 100644 index 0000000..55116b6 --- /dev/null +++ b/benchmarks/annotations/rxswift.json @@ -0,0 +1,175 @@ +[ + { + "query": "how Observable represents an asynchronous sequence of events", + "relevant": [ + "Sources/RxSwift/ObservableType.swift" + ], + "secondary": [ + "Sources/RxSwift/Observable.swift" + ], + "category": "architecture" + }, + { + "query": "ObserverType protocol and event delivery contract", + "relevant": [ + "Sources/RxSwift/ObserverType.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how subscribe attaches an observer to an observable sequence", + "relevant": [ + "Sources/RxSwift/ObservableType+Extensions.swift" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Disposable and CompositeDisposable for subscription management", + "relevant": [ + "Sources/RxSwift/Disposable.swift" + ], + "secondary": [ + "Sources/RxSwift/CompositeDisposable.swift" + ], + "category": "semantic" + }, + { + "query": "PublishSubject for broadcasting events to multiple observers", + "relevant": [ + "Sources/RxSwift/PublishSubject.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "BehaviorSubject for holding and replaying the latest value", + "relevant": [ + "Sources/RxSwift/BehaviorSubject.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "ReplaySubject for buffering and replaying past events", + "relevant": [ + "Sources/RxSwift/ReplaySubject.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "map filter and flatMap operators for transforming observable sequences", + "relevant": [ + "Sources/RxSwift/Map.swift" + ], + "secondary": [ + "Sources/RxSwift/Filter.swift" + ], + "category": "semantic" + }, + { + "query": "combineLatest for merging multiple observable streams", + "relevant": [ + "Sources/RxSwift/CombineLatest.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "SchedulerType protocol and scheduler implementations for threading", + "relevant": [ + "Sources/RxSwift/SchedulerType.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Single Completable and Maybe trait types for finite sequences", + "relevant": [ + "Sources/RxSwift/Single.swift" + ], + "secondary": [ + "Sources/RxSwift/Completable.swift" + ], + "category": "semantic" + }, + { + "query": "throttle and debounce time-based filtering operators", + "relevant": [ + "Sources/RxSwift/Throttle.swift" + ], + "secondary": [ + "Sources/RxSwift/Debounce.swift" + ], + "category": "semantic" + }, + { + "query": "retry and catch error recovery operators", + "relevant": [ + "Sources/RxSwift/Catch.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "zip operator for pairing emissions from multiple observables", + "relevant": [ + "Sources/RxSwift/Zip.swift", + "Sources/RxSwift/Zip+arity.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "share and replay scope for multicasting a single subscription", + "relevant": [ + "Sources/RxSwift/ShareReplayScope.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "take skip and filter sequence trimming operators", + "relevant": [ + "Sources/RxSwift/Take.swift" + ], + "secondary": [ + "Sources/RxSwift/Skip.swift" + ], + "category": "semantic" + }, + { + "query": "Event enum for next error and completed signals", + "relevant": [ + "Sources/RxSwift/Event.swift" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "Observable", + "relevant": [ + "Sources/RxSwift/Observable.swift" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Disposable", + "relevant": [ + "Sources/RxSwift/Disposable.swift" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "PublishSubject", + "relevant": [ + "Sources/RxSwift/PublishSubject.swift" + ], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/serde.json b/benchmarks/annotations/serde.json new file mode 100644 index 0000000..485da87 --- /dev/null +++ b/benchmarks/annotations/serde.json @@ -0,0 +1,122 @@ +[ + { + "query": "Serialize and Serializer trait definitions", + "relevant": ["serde_core/src/ser/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Deserialize and Deserializer trait definitions", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "Visitor pattern for deserializer implementations", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "standard library type Serialize implementations", + "relevant": ["serde_core/src/ser/impls.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "standard library type Deserialize implementations", + "relevant": ["serde_core/src/de/impls.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "value-based deserialization for self-describing formats", + "relevant": ["serde_core/src/de/value.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "IgnoredAny type for silently discarding unknown fields during deserialization", + "relevant": ["serde_core/src/de/ignored_any.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how serde_derive generates Serialize impl with serialize_field and serialize_struct", + "relevant": ["serde_derive/src/ser.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how derive macros generate Deserialize code for structs and enums", + "relevant": ["serde_derive/src/de.rs"], + "secondary": ["serde_derive/src/internals/ast.rs"], + "category": "architecture" + }, + { + "query": "how derive macros parse and apply field-level serde attributes", + "relevant": ["serde_derive/src/internals/attr.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how serde handles sequences and maps during serialization", + "relevant": ["serde_core/src/ser/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "MapAccess and SeqAccess for deserializing collections", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how serde handles lifetime-bound deserialization and borrowed data", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how EnumAccess and VariantAccess work for enum deserialization", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "derive proc macro entry point and registered derives", + "relevant": ["serde_derive/src/lib.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "serde_derive Container Variant and Field AST types for Rust struct and enum introspection", + "relevant": ["serde_derive/src/internals/ast.rs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Serialize", + "relevant": ["serde_core/src/ser/mod.rs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Deserialize", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Serializer", + "relevant": ["serde_core/src/ser/mod.rs"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Visitor", + "relevant": ["serde_core/src/de/mod.rs"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/sinatra.json b/benchmarks/annotations/sinatra.json index ddec420..ea4049d 100644 --- a/benchmarks/annotations/sinatra.json +++ b/benchmarks/annotations/sinatra.json @@ -1,100 +1,189 @@ [ { "query": "core Sinatra DSL and routing behavior", - "relevant": ["lib/sinatra/base.rb"], + "relevant": [ + "lib/sinatra/base.rb" + ], "secondary": [], "category": "semantic" }, { "query": "application startup and command line entrypoint", - "relevant": ["lib/sinatra/main.rb"], + "relevant": [ + "lib/sinatra/main.rb" + ], "secondary": [], "category": "architecture" }, { "query": "exception rendering and stack traces", - "relevant": ["lib/sinatra/show_exceptions.rb"], + "relevant": [ + "lib/sinatra/show_exceptions.rb" + ], "secondary": [], "category": "semantic" }, { "query": "request logging middleware", - "relevant": ["lib/sinatra/middleware/logger.rb"], + "relevant": [ + "lib/sinatra/middleware/logger.rb" + ], "secondary": [], "category": "semantic" }, { "query": "how route handlers are compiled and URL patterns matched", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 1795, "end_line": 1817}], + "relevant": [ + "lib/sinatra/base.rb" + ], "secondary": [], "category": "semantic" }, { "query": "before and after filter hooks for the request lifecycle", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 1486, "end_line": 1505}], + "relevant": [ + { + "path": "lib/sinatra/base.rb", + "start_line": 1486, + "end_line": 1505 + } + ], "secondary": [], "category": "semantic" }, { "query": "response helper methods: halt, pass and redirect", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 286, "end_line": 741}], + "relevant": [ + "lib/sinatra/base.rb" + ], "secondary": [], "category": "semantic" }, { "query": "how templates are rendered with erb haml and other engines", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 742, "end_line": 948}], + "relevant": [ + { + "path": "lib/sinatra/base.rb", + "start_line": 742, + "end_line": 948 + } + ], "secondary": [], "category": "semantic" }, { "query": "how the Rack middleware stack is assembled before requests are handled", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 1819, "end_line": 1888}], + "relevant": [ + "lib/sinatra/base.rb" + ], "secondary": [], "category": "architecture" }, { "query": "case-insensitive hash for request params", - "relevant": ["lib/sinatra/indifferent_hash.rb"], + "relevant": [ + "lib/sinatra/indifferent_hash.rb" + ], "secondary": [], "category": "semantic" }, { "query": "Sinatra::Base", - "relevant": ["lib/sinatra/base.rb"], + "relevant": [ + "lib/sinatra/base.rb" + ], "secondary": [], "category": "symbol" }, { "query": "Sinatra::Application", - "relevant": ["lib/sinatra/main.rb"], - "secondary": ["lib/sinatra/base.rb"], + "relevant": [ + "lib/sinatra/main.rb" + ], + "secondary": [ + "lib/sinatra/base.rb" + ], "category": "symbol" }, { "query": "Sinatra::ShowExceptions", - "relevant": ["lib/sinatra/show_exceptions.rb"], + "relevant": [ + "lib/sinatra/show_exceptions.rb" + ], "secondary": [], "category": "symbol" }, { "query": "Sinatra::Helpers", - "relevant": [{"path": "lib/sinatra/base.rb", "start_line": 286, "end_line": 741}], + "relevant": [ + { + "path": "lib/sinatra/base.rb", + "start_line": 286, + "end_line": 1050 + } + ], "secondary": [], "category": "symbol" }, { "query": "IndifferentHash", - "relevant": ["lib/sinatra/indifferent_hash.rb"], + "relevant": [ + "lib/sinatra/indifferent_hash.rb" + ], "secondary": [], "category": "symbol" }, { "query": "how Sinatra::Application inherits and configures Base for standalone use", - "relevant": ["lib/sinatra/main.rb"], - "secondary": ["lib/sinatra/base.rb"], + "relevant": [ + "lib/sinatra/main.rb" + ], + "secondary": [ + "lib/sinatra/base.rb" + ], "category": "architecture", - "seed": {"path": "lib/sinatra/main.rb", "line": 30}, - "related": ["lib/sinatra/base.rb"] + "seed": { + "path": "lib/sinatra/main.rb", + "line": 30 + }, + "related": [ + "lib/sinatra/base.rb" + ] + }, + { + "query": "how route conditions are evaluated before dispatching", + "relevant": [ + { + "path": "lib/sinatra/base.rb", + "start_line": 1048, + "end_line": 1100 + } + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "show_exceptions middleware for development error pages", + "relevant": [ + "lib/sinatra/show_exceptions.rb" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Sinatra::Base registers class-level route helpers like get post put delete", + "relevant": [ + "lib/sinatra/base.rb" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "IndifferentHash", + "relevant": [ + "lib/sinatra/indifferent_hash.rb" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/starlette.json b/benchmarks/annotations/starlette.json index f588020..9d1f40c 100644 --- a/benchmarks/annotations/starlette.json +++ b/benchmarks/annotations/starlette.json @@ -1,90 +1,191 @@ [ { "query": "how are URL routes registered and matched", - "relevant": ["starlette/routing.py"], - "secondary": ["starlette/convertors.py"] + "relevant": [ + "starlette/routing.py" + ], + "secondary": [ + "starlette/convertors.py" + ], + "category": "architecture" }, { "query": "how does authentication middleware work", - "relevant": ["starlette/middleware/authentication.py"], - "secondary": ["starlette/authentication.py"] + "relevant": [ + "starlette/middleware/authentication.py" + ], + "secondary": [ + "starlette/authentication.py" + ], + "category": "architecture" }, { "query": "websocket connection and message handling", - "relevant": ["starlette/websockets.py"], - "secondary": [] + "relevant": [ + "starlette/websockets.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how are static files served", - "relevant": ["starlette/staticfiles.py"], - "secondary": [] + "relevant": [ + "starlette/staticfiles.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "parsing form data and file uploads", - "relevant": ["starlette/formparsers.py"], - "secondary": ["starlette/datastructures.py"] + "relevant": [ + "starlette/formparsers.py" + ], + "secondary": [ + "starlette/datastructures.py" + ], + "category": "semantic" }, { "query": "how does the test client simulate requests", - "relevant": ["starlette/testclient.py"], - "secondary": [] + "relevant": [ + "starlette/testclient.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "background task scheduling and execution", - "relevant": ["starlette/background.py"], - "secondary": [] + "relevant": [ + "starlette/background.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "application lifespan startup and shutdown events", - "relevant": ["starlette/routing.py"], - "secondary": ["starlette/applications.py"] + "relevant": [ + "starlette/routing.py" + ], + "secondary": [ + "starlette/applications.py" + ], + "category": "semantic" }, { "query": "streaming response implementation", - "relevant": ["starlette/responses.py"], - "secondary": [] + "relevant": [ + "starlette/responses.py" + ], + "secondary": [], + "category": "semantic" }, { "query": "how base middleware wraps request handling", - "relevant": ["starlette/middleware/base.py"], - "secondary": [] + "relevant": [ + "starlette/middleware/base.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how request state persists arbitrary data across middleware", - "relevant": ["starlette/requests.py"], - "secondary": [] + "relevant": [ + "starlette/requests.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how path convertor types work for route parameters", - "relevant": ["starlette/convertors.py"], - "secondary": ["starlette/routing.py"] + "relevant": [ + "starlette/convertors.py" + ], + "secondary": [ + "starlette/routing.py" + ], + "category": "architecture" }, { "query": "how session data is signed and stored in cookies", - "relevant": ["starlette/middleware/sessions.py"], - "secondary": [] + "relevant": [ + "starlette/middleware/sessions.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how CORS preflight requests are handled", - "relevant": ["starlette/middleware/cors.py"], - "secondary": [] + "relevant": [ + "starlette/middleware/cors.py" + ], + "secondary": [], + "category": "architecture" }, { "query": "how errors in ASGI apps are caught and turned into responses", - "relevant": ["starlette/middleware/errors.py"], - "secondary": ["starlette/middleware/exceptions.py"] + "relevant": [ + "starlette/middleware/errors.py" + ], + "secondary": [ + "starlette/middleware/exceptions.py" + ], + "category": "architecture" + }, + { + "query": "BaseHTTPMiddleware", + "relevant": [ + "starlette/middleware/base.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Request", + "relevant": [ + "starlette/requests.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "WebSocket", + "relevant": [ + "starlette/websockets.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "BackgroundTask", + "relevant": [ + "starlette/background.py" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "Router", + "relevant": [ + "starlette/routing.py" + ], + "secondary": [], + "category": "symbol" }, - {"query": "BaseHTTPMiddleware", "relevant": ["starlette/middleware/base.py"], "secondary": []}, - {"query": "Request", "relevant": ["starlette/requests.py"], "secondary": []}, - {"query": "WebSocket", "relevant": ["starlette/websockets.py"], "secondary": []}, - {"query": "BackgroundTask", "relevant": ["starlette/background.py"], "secondary": []}, - {"query": "Router", "relevant": ["starlette/routing.py"], "secondary": []}, { "query": "how the Starlette application delegates routing and lifespan to Router", - "relevant": ["starlette/applications.py"], - "secondary": ["starlette/routing.py"], + "relevant": [ + "starlette/applications.py" + ], + "secondary": [ + "starlette/routing.py" + ], "category": "architecture", - "seed": {"path": "starlette/applications.py", "line": 19}, - "related": ["starlette/routing.py"] + "seed": { + "path": "starlette/applications.py", + "line": 19 + }, + "related": [ + "starlette/routing.py" + ] } ] diff --git a/benchmarks/annotations/telescope.nvim.json b/benchmarks/annotations/telescope.nvim.json new file mode 100644 index 0000000..0c79247 --- /dev/null +++ b/benchmarks/annotations/telescope.nvim.json @@ -0,0 +1,122 @@ +[ + { + "query": "how Picker:find opens a floating window and starts fuzzy finding", + "relevant": ["lua/telescope/pickers.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Sorter:score ranks a prompt against a candidate entry", + "relevant": ["lua/telescope/sorters.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how finders feed entries into a picker results buffer", + "relevant": ["lua/telescope/finders.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how telescope actions map keys to picker operations", + "relevant": ["lua/telescope/actions/init.lua"], + "secondary": ["lua/telescope/mappings.lua"], + "category": "architecture" + }, + { + "query": "how previewers render a selected entry in the preview window", + "relevant": ["lua/telescope/previewers/buffer_previewer.lua"], + "secondary": ["lua/telescope/previewers/previewer.lua"], + "category": "architecture" + }, + { + "query": "how make_entry creates display strings and ordinals for results", + "relevant": ["lua/telescope/make_entry.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how picker layout strategies position the floating windows", + "relevant": ["lua/telescope/pickers/layout_strategies.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how telescope config sets defaults for all pickers", + "relevant": ["lua/telescope/config.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how builtin file_files picker searches and presents files", + "relevant": ["lua/telescope/builtin/__files.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "TelescopeGlobalState storing picker status keyed by prompt bufnr", + "relevant": ["lua/telescope/state.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how git status changes are listed in a picker", + "relevant": ["lua/telescope/builtin/__git.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how LSP references and definitions are shown in telescope", + "relevant": ["lua/telescope/builtin/__lsp.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Picker:get_selection returns the currently highlighted entry", + "relevant": ["lua/telescope/pickers.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how themes modify the layout for dropdown or cursor pickers", + "relevant": ["lua/telescope/themes.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how entry_manager stores and retrieves picker results", + "relevant": ["lua/telescope/entry_manager.lua"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how utils provides path and string helper functions", + "relevant": ["lua/telescope/utils.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how diagnostic entries are displayed with severity in telescope", + "relevant": ["lua/telescope/builtin/__diagnostics.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how operators apply actions to multiple selected entries", + "relevant": ["lua/telescope/operators.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Picker:move_selection changes the highlighted row", + "relevant": ["lua/telescope/pickers.lua"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how async_job runs an external command and streams results", + "relevant": ["lua/telescope/async_job.lua"], + "secondary": [], + "category": "architecture" + } +] diff --git a/benchmarks/annotations/tokio.json b/benchmarks/annotations/tokio.json index a902e16..421be7e 100644 --- a/benchmarks/annotations/tokio.json +++ b/benchmarks/annotations/tokio.json @@ -1,99 +1,168 @@ [ { "query": "how spawned tasks are scheduled onto threads", - "relevant": ["tokio/src/runtime/scheduler/multi_thread/worker.rs"], - "secondary": ["tokio/src/task/spawn.rs"], + "relevant": [ + "tokio/src/runtime/scheduler/multi_thread/worker.rs" + ], + "secondary": [ + "tokio/src/task/spawn.rs" + ], "category": "architecture" }, { "query": "how the async mutex prevents concurrent access", - "relevant": ["tokio/src/sync/mutex.rs"], + "relevant": [ + "tokio/src/sync/mutex.rs" + ], "secondary": [], "category": "semantic" }, { "query": "how a broadcast channel delivers messages to multiple receivers", - "relevant": ["tokio/src/sync/broadcast.rs"], + "relevant": [ + "tokio/src/sync/broadcast.rs" + ], "secondary": [], "category": "architecture" }, { "query": "how the timer wheel tracks sleep deadlines", - "relevant": ["tokio/src/runtime/time/wheel/level.rs"], - "secondary": ["tokio/src/time/sleep.rs"], + "relevant": [ + "tokio/src/runtime/time/wheel/level.rs" + ], + "secondary": [ + "tokio/src/time/sleep.rs" + ], "category": "architecture" }, { "query": "running non-async blocking code inside the async runtime", - "relevant": ["tokio/src/task/blocking.rs"], + "relevant": [ + "tokio/src/task/blocking.rs" + ], "secondary": [], "category": "semantic" }, { "query": "how tasks that are not Send can run on a single thread", - "relevant": ["tokio/src/task/local.rs"], + "relevant": [ + "tokio/src/task/local.rs" + ], "secondary": [], "category": "architecture" }, { "query": "waiting for any of several futures to complete", - "relevant": ["tokio/src/macros/select.rs"], + "relevant": [ + "tokio/src/macros/select.rs" + ], "secondary": [], "category": "semantic" }, { "query": "how the runtime builder configures thread pool size and flavour", - "relevant": ["tokio/src/runtime/builder.rs"], + "relevant": [ + "tokio/src/runtime/builder.rs" + ], "secondary": [], "category": "architecture" }, { "query": "rate-limiting concurrent operations with a semaphore", - "relevant": ["tokio/src/sync/semaphore.rs"], + "relevant": [ + "tokio/src/sync/semaphore.rs" + ], "secondary": [], "category": "semantic" }, { "query": "watching a value and being notified when it changes", - "relevant": ["tokio/src/sync/watch.rs"], + "relevant": [ + "tokio/src/sync/watch.rs" + ], "secondary": [], "category": "semantic" }, { "query": "collecting results from a dynamic set of spawned tasks", - "relevant": ["tokio/src/task/join_set.rs"], + "relevant": [ + "tokio/src/task/join_set.rs" + ], "secondary": [], "category": "semantic" }, { "query": "integrating a non-async file descriptor with the tokio reactor", - "relevant": ["tokio/src/io/async_fd.rs"], + "relevant": [ + "tokio/src/io/async_fd.rs" + ], "secondary": [], "category": "semantic" }, { "query": "JoinSet", - "relevant": ["tokio/src/task/join_set.rs"], - "secondary": [] + "relevant": [ + "tokio/src/task/join_set.rs" + ], + "secondary": [], + "category": "symbol" }, { "query": "Semaphore", - "relevant": ["tokio/src/sync/semaphore.rs"], - "secondary": [] + "relevant": [ + "tokio/src/sync/semaphore.rs" + ], + "secondary": [], + "category": "symbol" }, { "query": "MissedTickBehavior", - "relevant": ["tokio/src/time/interval.rs"], - "secondary": [] + "relevant": [ + "tokio/src/time/interval.rs" + ], + "secondary": [], + "category": "symbol" }, { "query": "LocalSet", - "relevant": ["tokio/src/task/local.rs"], - "secondary": [] + "relevant": [ + "tokio/src/task/local.rs" + ], + "secondary": [], + "category": "symbol" }, { "query": "Notify", - "relevant": ["tokio/src/sync/notify.rs"], - "secondary": [] + "relevant": [ + "tokio/src/sync/notify.rs" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "async file I/O operations", + "relevant": [ + "tokio/src/fs/file.rs" + ], + "secondary": [ + "tokio/src/fs/mod.rs" + ], + "category": "semantic" + }, + { + "query": "how the tokio runtime builder configures and starts the multi-thread scheduler", + "relevant": [ + "tokio/src/runtime/builder.rs" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "Runtime", + "relevant": [ + "tokio/src/runtime/runtime.rs" + ], + "secondary": [], + "category": "symbol" } ] diff --git a/benchmarks/annotations/trpc.json b/benchmarks/annotations/trpc.json index f3f8d25..e0a96bc 100644 --- a/benchmarks/annotations/trpc.json +++ b/benchmarks/annotations/trpc.json @@ -1,99 +1,178 @@ [ { "query": "how a tRPC router is created and procedures are registered", - "relevant": ["packages/server/src/unstable-core-do-not-import/router.ts"], - "secondary": ["packages/server/src/unstable-core-do-not-import/procedureBuilder.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/router.ts" + ], + "secondary": [ + "packages/server/src/unstable-core-do-not-import/procedureBuilder.ts" + ], "category": "architecture" }, { "query": "how middleware chains context transformations between procedures", - "relevant": ["packages/server/src/unstable-core-do-not-import/middleware.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/middleware.ts" + ], "secondary": [], "category": "architecture" }, { "query": "how input validation and parsing works for procedures", - "relevant": ["packages/server/src/unstable-core-do-not-import/parser.ts"], - "secondary": ["packages/server/src/unstable-core-do-not-import/procedureBuilder.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/parser.ts" + ], + "secondary": [ + "packages/server/src/unstable-core-do-not-import/procedureBuilder.ts" + ], "category": "semantic" }, { "query": "how HTTP requests are resolved to tRPC procedures", - "relevant": ["packages/server/src/unstable-core-do-not-import/http/resolveResponse.ts"], - "secondary": ["packages/server/src/http.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/http/resolveResponse.ts" + ], + "secondary": [ + "packages/server/src/http.ts" + ], "category": "architecture" }, { "query": "how error formatting and serialization works", - "relevant": ["packages/server/src/unstable-core-do-not-import/error/formatter.ts"], - "secondary": ["packages/server/src/unstable-core-do-not-import/error/TRPCError.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/error/formatter.ts" + ], + "secondary": [ + "packages/server/src/unstable-core-do-not-import/error/TRPCError.ts" + ], "category": "semantic" }, { "query": "how server-sent events and subscriptions are streamed to the client", - "relevant": ["packages/server/src/unstable-core-do-not-import/stream/sse.ts"], - "secondary": ["packages/server/src/unstable-core-do-not-import/stream/jsonl.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/stream/sse.ts" + ], + "secondary": [ + "packages/server/src/unstable-core-do-not-import/stream/jsonl.ts" + ], "category": "architecture" }, { "query": "how the observable pattern is used for subscriptions", - "relevant": ["packages/server/src/observable/observable.ts"], - "secondary": ["packages/server/src/observable/operators.ts"], + "relevant": [ + "packages/server/src/observable/observable.ts" + ], + "secondary": [ + "packages/server/src/observable/operators.ts" + ], "category": "semantic" }, { "query": "how type inference extracts input and output types from procedures", - "relevant": ["packages/server/src/unstable-core-do-not-import/clientish/inference.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/clientish/inference.ts" + ], "secondary": [], "category": "semantic" }, { "query": "adapting tRPC to run as a Node.js HTTP server handler", - "relevant": ["packages/server/src/adapters/node-http/nodeHTTPRequestHandler.ts"], - "secondary": ["packages/server/src/adapters/node-http/incomingMessageToRequest.ts"], + "relevant": [ + "packages/server/src/adapters/node-http/nodeHTTPRequestHandler.ts" + ], + "secondary": [ + "packages/server/src/adapters/node-http/incomingMessageToRequest.ts" + ], "category": "architecture" }, { "query": "WebSocket adapter for real-time subscriptions", - "relevant": ["packages/server/src/adapters/ws.ts"], + "relevant": [ + "packages/server/src/adapters/ws.ts" + ], "secondary": [], "category": "semantic" }, { "query": "how tRPC is initialized with root config and context factory", - "relevant": ["packages/server/src/unstable-core-do-not-import/initTRPC.ts"], - "secondary": ["packages/server/src/unstable-core-do-not-import/rootConfig.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/initTRPC.ts" + ], + "secondary": [ + "packages/server/src/unstable-core-do-not-import/rootConfig.ts" + ], "category": "architecture" }, { "query": "how data transformer is applied to serialize and deserialize procedure payloads", - "relevant": ["packages/server/src/unstable-core-do-not-import/transformer.ts"], + "relevant": [ + "packages/server/src/unstable-core-do-not-import/transformer.ts" + ], "secondary": [], "category": "semantic" }, { "query": "TRPCError", - "relevant": ["packages/server/src/unstable-core-do-not-import/error/TRPCError.ts"], - "secondary": [] + "relevant": [ + "packages/server/src/unstable-core-do-not-import/error/TRPCError.ts" + ], + "secondary": [], + "category": "symbol" }, { "query": "AnyRouter", - "relevant": ["packages/server/src/unstable-core-do-not-import/router.ts"], - "secondary": [] + "relevant": [ + "packages/server/src/unstable-core-do-not-import/router.ts" + ], + "secondary": [], + "category": "symbol" }, { "query": "MiddlewareBuilder", - "relevant": ["packages/server/src/unstable-core-do-not-import/middleware.ts"], - "secondary": [] + "relevant": [ + "packages/server/src/unstable-core-do-not-import/middleware.ts" + ], + "secondary": [], + "category": "symbol" }, { "query": "inferProcedureInput", - "relevant": ["packages/server/src/unstable-core-do-not-import/procedure.ts"], - "secondary": [] + "relevant": [ + "packages/server/src/unstable-core-do-not-import/procedure.ts" + ], + "secondary": [], + "category": "symbol" }, { "query": "fetchRequestHandler", - "relevant": ["packages/server/src/adapters/fetch/fetchRequestHandler.ts"], - "secondary": [] + "relevant": [ + "packages/server/src/adapters/fetch/fetchRequestHandler.ts" + ], + "secondary": [], + "category": "symbol" + }, + { + "query": "WebSocket adapter for real-time tRPC subscriptions", + "relevant": [ + "packages/server/src/adapters/ws.ts" + ], + "secondary": [], + "category": "semantic" + }, + { + "query": "how tRPC procedures are defined and chained with input and output validation", + "relevant": [ + "packages/server/src/unstable-core-do-not-import/procedure.ts" + ], + "secondary": [], + "category": "architecture" + }, + { + "query": "how tRPC routers are created and merged", + "relevant": [ + "packages/server/src/unstable-core-do-not-import/router.ts" + ], + "secondary": [], + "category": "architecture" } ] diff --git a/benchmarks/annotations/vapor.json b/benchmarks/annotations/vapor.json new file mode 100644 index 0000000..e4fc723 --- /dev/null +++ b/benchmarks/annotations/vapor.json @@ -0,0 +1,122 @@ +[ + { + "query": "how Application configures and boots a Vapor server", + "relevant": ["Sources/Vapor/Application.swift"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how routes are registered on the RoutesBuilder", + "relevant": ["Sources/Vapor/Routing/RoutesBuilder+Method.swift"], + "secondary": ["Sources/Vapor/Routing/RoutesBuilder.swift"], + "category": "architecture" + }, + { + "query": "Request type and HTTP request representation in Vapor", + "relevant": ["Sources/Vapor/Request/Request.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Response type and HTTP response construction in Vapor", + "relevant": ["Sources/Vapor/Response/Response.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Content protocol for encoding and decoding request and response bodies", + "relevant": ["Sources/Vapor/Content/Content.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Middleware protocol and how middleware wraps request handling", + "relevant": ["Sources/Vapor/Middleware/Middleware.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Vapor Application stores and retrieves services via Storage", + "relevant": ["Sources/Vapor/Utilities/Storage.swift"], + "secondary": [], + "category": "architecture" + }, + { + "query": "WebSocket upgrade and handler registration in Vapor", + "relevant": ["Sources/Vapor/Routing/RoutesBuilder+WebSocket.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Abort error and HTTP error response throwing", + "relevant": ["Sources/Vapor/Error/Abort.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Sessions and session driver for server-side session storage", + "relevant": ["Sources/Vapor/Sessions/Session.swift"], + "secondary": ["Sources/Vapor/Sessions/SessionsMiddleware.swift"], + "category": "semantic" + }, + { + "query": "Validations and Validatable for request body validation", + "relevant": ["Sources/Vapor/Validation/Validations.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how route groups and route collections compose routes", + "relevant": ["Sources/Vapor/Routing/RoutesBuilder+Group.swift"], + "secondary": ["Sources/Vapor/Routing/RouteCollection.swift"], + "category": "semantic" + }, + { + "query": "FileMiddleware for serving static files", + "relevant": ["Sources/Vapor/Middleware/FileMiddleware.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how serve and boot commands start the Vapor HTTP server", + "relevant": ["Sources/Vapor/Commands/ServeCommand.swift"], + "secondary": ["Sources/Vapor/HTTP/Server/HTTPServer.swift"], + "category": "semantic" + }, + { + "query": "Environment configuration for development production and testing", + "relevant": ["Sources/Vapor/Environment/Environment.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "CORS middleware for cross-origin resource sharing", + "relevant": ["Sources/Vapor/Middleware/CORSMiddleware.swift"], + "secondary": [], + "category": "semantic" + }, + { + "query": "HTTP status codes and media types in Vapor", + "relevant": ["Sources/Vapor/HTTP/HTTPStatus.swift"], + "secondary": ["Sources/Vapor/HTTP/Headers/HTTPMediaType.swift"], + "category": "semantic" + }, + { + "query": "Application", + "relevant": ["Sources/Vapor/Application.swift"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Request", + "relevant": ["Sources/Vapor/Request/Request.swift"], + "secondary": [], + "category": "symbol" + }, + { + "query": "Middleware", + "relevant": ["Sources/Vapor/Middleware/Middleware.swift"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/vitest.json b/benchmarks/annotations/vitest.json new file mode 100644 index 0000000..534de07 --- /dev/null +++ b/benchmarks/annotations/vitest.json @@ -0,0 +1,122 @@ +[ + { + "query": "how vitest discovers and runs test files", + "relevant": ["packages/vitest/src/node/core.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "test runner worker pool scheduling and execution", + "relevant": ["packages/vitest/src/node/pools/pool.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how vitest statically collects describe it and test block locations for test discovery", + "relevant": ["packages/vitest/src/node/ast-collect.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "expect assertion API and matchers", + "relevant": ["packages/vitest/src/integrations/chai/index.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "vi mock and spy utilities for mocking modules and functions", + "relevant": ["packages/vitest/src/integrations/vi.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "snapshot testing serialization and comparison", + "relevant": ["packages/vitest/src/integrations/snapshot/chai.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "coverage provider and instrumentation integration", + "relevant": ["packages/vitest/src/node/coverage.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "vitest configuration options and defineConfig", + "relevant": ["packages/vitest/src/node/types/config.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how beforeAll afterAll and lifecycle hooks affect the test execution order", + "relevant": ["packages/vitest/src/node/test-run.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "test reporter interface for listening to test events and results", + "relevant": ["packages/vitest/src/public/reporters.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how vitest initializes worker threads for parallel test execution", + "relevant": ["packages/vitest/src/runtime/workers/init.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "module mocker for intercepting and replacing module imports at runtime", + "relevant": ["packages/vitest/src/runtime/moduleRunner/moduleMocker.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "task state and task result tracking", + "relevant": ["packages/vitest/src/utils/tasks.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "fake timers and timer mocking utilities", + "relevant": ["packages/vitest/src/integrations/mock/timers.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the StateManager tracks running cancelled and completed test state", + "relevant": ["packages/vitest/src/node/state.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "project-level configuration and workspace projects", + "relevant": ["packages/vitest/src/node/project.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "test watcher for file changes in watch mode", + "relevant": ["packages/vitest/src/node/watcher.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "Vitest", + "relevant": ["packages/vitest/src/node/core.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "VitestProject", + "relevant": ["packages/vitest/src/node/project.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "StateManager", + "relevant": ["packages/vitest/src/node/state.ts"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/annotations/xmonad.json b/benchmarks/annotations/xmonad.json new file mode 100644 index 0000000..2aabafd --- /dev/null +++ b/benchmarks/annotations/xmonad.json @@ -0,0 +1,122 @@ +[ + { + "query": "how xmonad's X monad wraps IO with display and window state", + "relevant": ["Core.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how xmonad manages and tiles windows using StackSet", + "relevant": ["StackSet.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how xmonad handles window focus and workspace switching", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad applies layout algorithms to arrange windows on screen", + "relevant": ["Layout.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how xmonad's ManageHook routes new windows to workspaces", + "relevant": ["ManageHook.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad reads and applies user configuration at startup", + "relevant": ["Config.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad handles X11 events in its event loop", + "relevant": ["Main.hs"], + "secondary": ["Operations.hs"], + "category": "architecture" + }, + { + "query": "how xmonad kills a window and cleans up its state", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad uses withDisplay to get the X11 Display handle", + "relevant": ["Core.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad's StackSet tracks the focused window in a workspace", + "relevant": ["StackSet.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad redraws and refreshes windows after a layout change", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad manages multiple screens with multiple workspaces", + "relevant": ["StackSet.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how xmonad moves a window to a different workspace", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how userCode wraps user actions to catch exceptions", + "relevant": ["Core.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad sets window border and title properties", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad handles floating windows separately from tiled ones", + "relevant": ["Operations.hs"], + "secondary": ["StackSet.hs"], + "category": "architecture" + }, + { + "query": "how xmonad's runX executes an X action with its config and state", + "relevant": ["Core.hs"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how xmonad initializes the display and root window at startup", + "relevant": ["Main.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Layout typeclass allows pluggable tiling algorithms", + "relevant": ["Layout.hs"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how xmonad's windows function atomically applies StackSet transformations", + "relevant": ["Operations.hs"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/zig-clap.json b/benchmarks/annotations/zig-clap.json new file mode 100644 index 0000000..c72508c --- /dev/null +++ b/benchmarks/annotations/zig-clap.json @@ -0,0 +1,122 @@ +[ + { + "query": "how zig-clap parses command-line arguments into a typed result", + "relevant": ["clap.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Param defines a named CLI parameter with short and long flags", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parseParams parses a string of parameter definitions at comptime", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap Result type holds parsed argument values", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap streaming parser processes arguments one token at a time", + "relevant": ["clap/streaming.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zig-clap iterates over OS process arguments", + "relevant": ["clap/args.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap built-in parsers convert strings to typed values", + "relevant": ["clap/parsers.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap prints help text for all defined parameters", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap prints usage summary for a command", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Diagnostic captures and reports argument parsing errors", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Values enum controls whether a flag expects zero or one argument", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parseParamsComptime creates a parameter array at compile time", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how ParseOptions customize the parsing behavior for edge cases", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Names resolves the longest name for display and matching", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap handles positional arguments without a flag prefix", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how parseEx provides a lower-level parsing API with custom iterators", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how ResultEx extends Result with extra context for advanced use", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zig-clap detects and handles unrecognized flags as errors", + "relevant": ["clap/streaming.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how helpToFile writes formatted help output to a file handle", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how Help struct stores help text associated with a parameter", + "relevant": ["clap.zig"], + "secondary": [], + "category": "semantic" + } +] diff --git a/benchmarks/annotations/zig.json b/benchmarks/annotations/zig.json new file mode 100644 index 0000000..2144e78 --- /dev/null +++ b/benchmarks/annotations/zig.json @@ -0,0 +1,122 @@ +[ + { + "query": "how AutoHashMap provides a hash map with auto-derived hash and equality", + "relevant": ["lib/std/hash_map.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how ArrayList manages a growable array with an allocator", + "relevant": ["lib/std/array_list.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.mem.eql compares two slices for equality", + "relevant": ["lib/std/mem.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.fmt.bufPrint formats a string into a fixed buffer", + "relevant": ["lib/std/fmt.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.json parses JSON from a slice into a typed struct", + "relevant": ["lib/std/json/static.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the JSON scanner tokenizes a JSON byte stream", + "relevant": ["lib/std/json/Scanner.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how Thread.spawn creates and starts a new OS thread", + "relevant": ["lib/std/Thread.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.testing.expect and expectEqual assert conditions in tests", + "relevant": ["lib/std/testing.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.mem.sort and sortUnstable sort a slice in place", + "relevant": ["lib/std/mem.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.fs.cwd opens the current working directory", + "relevant": ["lib/std/fs.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.process.args returns command-line argument iterator", + "relevant": ["lib/std/process.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how comptime hash functions are auto-derived for arbitrary types", + "relevant": ["lib/std/hash_map.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how std.fmt.parseInt parses a string to an integer", + "relevant": ["lib/std/fmt.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.mem.copyForwards and copyBackwards copy overlapping slices", + "relevant": ["lib/std/mem.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how debug.print outputs to stderr for debugging", + "relevant": ["lib/std/debug.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the JSON Stringify module serializes a value to JSON", + "relevant": ["lib/std/json/Stringify.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.mem.span converts a null-terminated pointer to a slice", + "relevant": ["lib/std/mem.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.testing.checkAllAllocationFailures tests allocator failure paths", + "relevant": ["lib/std/testing.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how std.mem.zeroes initializes a type to all zero bytes", + "relevant": ["lib/std/mem.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how the JSON scanner feeds input incrementally and emits tokens", + "relevant": ["lib/std/json/Scanner.zig"], + "secondary": [], + "category": "architecture" + } +] diff --git a/benchmarks/annotations/zls.json b/benchmarks/annotations/zls.json new file mode 100644 index 0000000..181c95a --- /dev/null +++ b/benchmarks/annotations/zls.json @@ -0,0 +1,122 @@ +[ + { + "query": "how zls analyzes Zig source code to resolve types and declarations", + "relevant": ["analysis.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls DocumentStore loads and caches Zig source files", + "relevant": ["DocumentStore.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls provides goto definition for symbols", + "relevant": ["features/goto.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls generates completion items from declarations and types", + "relevant": ["features/completions.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls provides hover information for symbols under the cursor", + "relevant": ["features/hover.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls finds all references to a symbol across the project", + "relevant": ["features/references.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls handles LSP initialize and shutdown requests", + "relevant": ["Server.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls generates diagnostic errors and warnings", + "relevant": ["features/diagnostics.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls provides inlay hints for parameter names and types", + "relevant": ["features/inlay_hints.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls traverses the Zig AST to resolve symbol scopes", + "relevant": ["ast.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls provides code actions for quick fixes", + "relevant": ["features/code_actions.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls computes semantic tokens for syntax highlighting", + "relevant": ["features/semantic_tokens.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls provides document symbols for the outline view", + "relevant": ["features/document_symbol.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls provides signature help when calling functions", + "relevant": ["features/signature_help.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls computes document scope for variable visibility", + "relevant": ["DocumentScope.zig"], + "secondary": [], + "category": "architecture" + }, + { + "query": "how zls configuration is loaded and validated", + "relevant": ["configuration.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls provides workspace symbol search", + "relevant": ["features/workspace_symbols.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls gets doc comments for a token or node", + "relevant": ["analysis.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls translates C headers for Zig interop", + "relevant": ["translate_c.zig"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how zls uses trigram indexing for fast symbol lookup", + "relevant": ["TrigramStore.zig"], + "secondary": [], + "category": "architecture" + } +] diff --git a/benchmarks/annotations/zod.json b/benchmarks/annotations/zod.json new file mode 100644 index 0000000..6ba85c1 --- /dev/null +++ b/benchmarks/annotations/zod.json @@ -0,0 +1,122 @@ +[ + { + "query": "how ZodType base class parses and validates input values", + "relevant": ["packages/zod/src/v4/core/schemas.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "core public API functions for building schemas", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "architecture" + }, + { + "query": "ZodError structure and issue formatting", + "relevant": ["packages/zod/src/v4/core/errors.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "ZodCheck and check execution pipeline for string min max and number range validations", + "relevant": ["packages/zod/src/v4/core/checks.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "JSON Schema to Zod schema conversion", + "relevant": ["packages/zod/src/v4/classic/from-json-schema.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "ZodObject shape definition and object schema", + "relevant": ["packages/zod/src/v4/classic/schemas.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "union and discriminated union schema types", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": ["packages/zod/src/v4/core/schemas.ts"], + "category": "semantic" + }, + { + "query": "optional and nullable type wrappers", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "z.transform and z.pipe for chaining Zod output transformations", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "how safeParse returns a success/error result without throwing", + "relevant": ["packages/zod/src/v4/core/parse.ts"], + "secondary": ["packages/zod/src/v4/core/schemas.ts"], + "category": "architecture" + }, + { + "query": "how .refine and .superRefine add custom validation to a schema via the public API", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": ["packages/zod/src/v4/core/checks.ts"], + "category": "architecture" + }, + { + "query": "classic Zod v4 array and tuple schema types", + "relevant": ["packages/zod/src/v4/classic/schemas.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "classic Zod v4 string schema with built-in validations", + "relevant": ["packages/zod/src/v4/classic/schemas.ts"], + "secondary": ["packages/zod/src/v4/core/checks.ts"], + "category": "semantic" + }, + { + "query": "v3 compatibility error types and ZodError", + "relevant": ["packages/zod/src/v3/errors.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "z.record and z.map schema builders for key-value types", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "ZodDefault and ZodCatch schema wrappers that supply fallback values on parse failure", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "enum schema types for literal value sets", + "relevant": ["packages/zod/src/v4/core/api.ts"], + "secondary": [], + "category": "semantic" + }, + { + "query": "ZodType", + "relevant": ["packages/zod/src/v4/core/schemas.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "ZodError", + "relevant": ["packages/zod/src/v4/core/errors.ts"], + "secondary": [], + "category": "symbol" + }, + { + "query": "ZodObject", + "relevant": ["packages/zod/src/v4/classic/schemas.ts"], + "secondary": [], + "category": "symbol" + } +] diff --git a/benchmarks/repos.json b/benchmarks/repos.json index 56e36e2..29e8a72 100644 --- a/benchmarks/repos.json +++ b/benchmarks/repos.json @@ -198,5 +198,263 @@ "url": "https://github.com/Alamofire/Alamofire.git", "revision": "e938f8c66708e7352fc7e3512647fa54255b267a", "benchmark_root": "Source" + }, + { + "name": "click", + "language": "python", + "url": "https://github.com/pallets/click.git", + "revision": "04ef3a6f473deb2499721a8d11f92a7d2c0912f2", + "benchmark_root": "src/click" + }, + { + "name": "serde", + "language": "rust", + "url": "https://github.com/serde-rs/serde.git", + "revision": "fa7da4a93567ed347ad0735c28e439fca688ef26" + }, + { + "name": "zod", + "language": "typescript", + "url": "https://github.com/colinhacks/zod.git", + "revision": "c7805073fef5b6b8857307c3d4b3597a70613bc2", + "benchmark_root": "packages/zod/src" + }, + { + "name": "nlohmann-json", + "language": "cpp", + "url": "https://github.com/nlohmann/json.git", + "revision": "3946872265598aed5a7aea68cad4d9d1f168bd4b", + "benchmark_root": "include/nlohmann" + }, + { + "name": "phoenix", + "language": "elixir", + "url": "https://github.com/phoenixframework/phoenix.git", + "revision": "c88da921ef8009e0aca8643d5334585cd35d5573", + "benchmark_root": "lib" + }, + { + "name": "axum", + "language": "rust", + "url": "https://github.com/tokio-rs/axum.git", + "revision": "309d1bd9530eec2217134cb262760af1df42ee3b", + "benchmark_root": "axum/src" + }, + { + "name": "vitest", + "language": "typescript", + "url": "https://github.com/vitest-dev/vitest.git", + "revision": "596f73986abe2161a9a06f0ca03df68e82690b21", + "benchmark_root": "packages/vitest/src" + }, + { + "name": "newtonsoft-json", + "language": "csharp", + "url": "https://github.com/JamesNK/Newtonsoft.Json.git", + "revision": "4f73e74372445108d2c1bda37b36e6f5e43402e0", + "benchmark_root": "Src/Newtonsoft.Json" + }, + { + "name": "dapper", + "language": "csharp", + "url": "https://github.com/DapperLib/Dapper.git", + "revision": "288730e69b05c32cac898d9b55ebea219ea8a2d1", + "benchmark_root": "Dapper" + }, + { + "name": "kotlinx-coroutines", + "language": "kotlin", + "url": "https://github.com/Kotlin/kotlinx.coroutines.git", + "revision": "643c1aa554139a82f60724a59e79b801f303fdfe", + "benchmark_root": "kotlinx-coroutines-core/common/src" + }, + { + "name": "exposed", + "language": "kotlin", + "url": "https://github.com/JetBrains/Exposed.git", + "revision": "7c80ed943b529f293b33ee7e0facdfd880cf4aec", + "benchmark_root": "exposed-core/src/main/kotlin" + }, + { + "name": "circe", + "language": "scala", + "url": "https://github.com/circe/circe.git", + "revision": "cd16ce270257daec47f4a011163a03da5df9a630", + "benchmark_root": "modules/core/shared/src/main/scala" + }, + { + "name": "http4s", + "language": "scala", + "url": "https://github.com/http4s/http4s.git", + "revision": "9f17a8e727d22692e637b5f01de15a222fb66092", + "benchmark_root": "core/shared/src/main/scala" + }, + { + "name": "vapor", + "language": "swift", + "url": "https://github.com/vapor/vapor.git", + "revision": "cfd8f434843ac7850e2d97f46c1aa5ddb906cf1c", + "benchmark_root": "Sources/Vapor" + }, + { + "name": "rxswift", + "language": "swift", + "url": "https://github.com/ReactiveX/RxSwift.git", + "revision": "132aea4f236ccadc51590b38af0357a331d51fa2", + "benchmark_root": "Sources/RxSwift" + }, + { + "name": "plug", + "language": "elixir", + "url": "https://github.com/elixir-plug/plug.git", + "revision": "47649aa7bb910f481b66cc3e98c14b2c3b761c3c", + "benchmark_root": "lib/plug" + }, + { + "name": "ecto", + "language": "elixir", + "url": "https://github.com/elixir-ecto/ecto.git", + "revision": "cf3a5b7219a552c24aae24bf5eef7354c1184b8a", + "benchmark_root": "lib/ecto" + }, + { + "name": "abseil-cpp", + "language": "cpp", + "url": "https://github.com/abseil/abseil-cpp.git", + "revision": "b9536c952c6f6bbcb37a5edb4fa88ee62d27cd7e", + "benchmark_root": "absl" + }, + { + "name": "fmtlib", + "language": "cpp", + "url": "https://github.com/fmtlib/fmt.git", + "revision": "382609a920d2c43c00f2951233bc0d578a783982", + "benchmark_root": "include/fmt" + }, + { + "name": "curl", + "language": "c", + "url": "https://github.com/curl/curl.git", + "revision": "021a87cf81638af5317e142610ea0dd9f9fb4890", + "benchmark_root": "lib" + }, + { + "name": "redis", + "language": "c", + "url": "https://github.com/redis/redis.git", + "revision": "47575618616b6419562356b0cfbd4b17bb443bdd", + "benchmark_root": "src" + }, + { + "name": "libuv", + "language": "c", + "url": "https://github.com/libuv/libuv.git", + "revision": "40178b916e5937ed43c557aa051bdb3f86f6ca93", + "benchmark_root": "src" + }, + { + "name": "bats-core", + "language": "bash", + "url": "https://github.com/bats-core/bats-core.git", + "revision": "d9faff0d7bc32e7adebc6552446f978118d3ab3b", + "benchmark_root": "lib" + }, + { + "name": "aeson", + "language": "haskell", + "url": "https://github.com/haskell/aeson.git", + "revision": "cd59793ca2405353ecee65f25b18ad7610104914", + "benchmark_root": "src/Data/Aeson" + }, + { + "name": "http-dart", + "language": "dart", + "url": "https://github.com/dart-lang/http.git", + "revision": "fa2d2c21cf6f8d9e72bb962d2cd5f613a7102a71", + "benchmark_root": "pkgs/http/lib" + }, + { + "name": "telescope.nvim", + "language": "lua", + "url": "https://github.com/nvim-telescope/telescope.nvim.git", + "revision": "471eebb1037899fd942cc0f52c012f8773505da1", + "benchmark_root": "lua/telescope" + }, + { + "name": "lazy.nvim", + "language": "lua", + "url": "https://github.com/folke/lazy.nvim.git", + "revision": "306a05526ada86a7b30af95c5cc81ffba93fef97", + "benchmark_root": "lua/lazy" + }, + { + "name": "zig", + "language": "zig", + "url": "https://github.com/ziglang/zig.git", + "revision": "738d2be9d6b6ef3ff3559130c05159ef53336224", + "benchmark_root": "lib/std" + }, + { + "name": "nvm", + "language": "bash", + "url": "https://github.com/nvm-sh/nvm.git", + "revision": "d200a215594bdda07e130117c9d392fff29cba84", + "benchmark_root": null + }, + { + "name": "bash-it", + "language": "bash", + "url": "https://github.com/Bash-it/bash-it.git", + "revision": "d281c8265f3c48b8276624d46284a3599d359a75", + "benchmark_root": null + }, + { + "name": "pandoc", + "language": "haskell", + "url": "https://github.com/jgm/pandoc.git", + "revision": "d9838eba11ae18216f52e233dbbca735f0f97ccb", + "benchmark_root": "src/Text/Pandoc" + }, + { + "name": "xmonad", + "language": "haskell", + "url": "https://github.com/xmonad/xmonad.git", + "revision": "59107a6c6f30d82d74449795a5c9149503f176ac", + "benchmark_root": "src/XMonad" + }, + { + "name": "dio", + "language": "dart", + "url": "https://github.com/cfug/dio.git", + "revision": "85aa6f1216203b1ca707289e82e35bcff5070b54", + "benchmark_root": "dio/lib/src" + }, + { + "name": "riverpod", + "language": "dart", + "url": "https://github.com/rrousselGit/riverpod.git", + "revision": "cac77b1ec1c4b4c0ca7c6e9b1436f80250b4edc0", + "benchmark_root": "packages/riverpod/lib/src" + }, + { + "name": "mini.nvim", + "language": "lua", + "url": "https://github.com/echasnovski/mini.nvim.git", + "revision": "29447d7b0e1fc9bc9d0384953e63be3fae816736", + "benchmark_root": "lua/mini" + }, + { + "name": "zls", + "language": "zig", + "url": "https://github.com/zigtools/zls.git", + "revision": "295cedd8ddd040c77e6666ddab6ef6da8c0beffa", + "benchmark_root": "src" + }, + { + "name": "zig-clap", + "language": "zig", + "url": "https://github.com/Hejsil/zig-clap.git", + "revision": "fc1e5cc3f6d9d3001112385ee6256d694e959d2f", + "benchmark_root": null } ] diff --git a/benchmarks/results/077d94072ef6.json b/benchmarks/results/077d94072ef6.json new file mode 100644 index 0000000..0804f28 --- /dev/null +++ b/benchmarks/results/077d94072ef6.json @@ -0,0 +1,1307 @@ +{ + "sha": "077d94072ef67e396a47f54c682d4be1fdfa4b6f", + "model": "minishlab/potion-code-16M", + "summary": { + "ndcg10": 0.8323, + "p50_ms": 0.725, + "p90_ms": 3.509, + "p95_ms": 3.967, + "p99_ms": 4.259, + "index_ms": 470.4, + "by_category": { + "architecture": 0.7825, + "semantic": 0.8314, + "symbol": 0.9341 + } + }, + "by_language": { + "bash": { + "repos": 3, + "ndcg10": 0.8283, + "p50_ms": 0.555, + "p90_ms": 0.619, + "p95_ms": 0.64, + "p99_ms": 0.655, + "index_ms": 121.3 + }, + "c": { + "repos": 3, + "ndcg10": 0.7125, + "p50_ms": 0.833, + "p90_ms": 0.973, + "p95_ms": 1.004, + "p99_ms": 1.057, + "index_ms": 1520.3 + }, + "cpp": { + "repos": 3, + "ndcg10": 0.922, + "p50_ms": 0.623, + "p90_ms": 4.246, + "p95_ms": 5.282, + "p99_ms": 5.655, + "index_ms": 776.8 + }, + "csharp": { + "repos": 3, + "ndcg10": 0.824, + "p50_ms": 0.797, + "p90_ms": 5.161, + "p95_ms": 6.102, + "p99_ms": 7.602, + "index_ms": 448.5 + }, + "dart": { + "repos": 3, + "ndcg10": 0.7621, + "p50_ms": 0.607, + "p90_ms": 0.663, + "p95_ms": 0.675, + "p99_ms": 0.697, + "index_ms": 72.3 + }, + "elixir": { + "repos": 3, + "ndcg10": 0.8663, + "p50_ms": 0.573, + "p90_ms": 4.744, + "p95_ms": 5.1, + "p99_ms": 5.6, + "index_ms": 203.2 + }, + "go": { + "repos": 3, + "ndcg10": 0.8927, + "p50_ms": 0.6, + "p90_ms": 3.399, + "p95_ms": 3.869, + "p99_ms": 4.116, + "index_ms": 155.8 + }, + "haskell": { + "repos": 3, + "ndcg10": 0.7462, + "p50_ms": 0.712, + "p90_ms": 0.784, + "p95_ms": 0.795, + "p99_ms": 0.809, + "index_ms": 474.9 + }, + "java": { + "repos": 3, + "ndcg10": 0.8249, + "p50_ms": 1.132, + "p90_ms": 9.325, + "p95_ms": 12.948, + "p99_ms": 13.381, + "index_ms": 969.0 + }, + "javascript": { + "repos": 3, + "ndcg10": 0.8985, + "p50_ms": 0.442, + "p90_ms": 1.667, + "p95_ms": 1.755, + "p99_ms": 1.934, + "index_ms": 33.9 + }, + "kotlin": { + "repos": 3, + "ndcg10": 0.814, + "p50_ms": 0.843, + "p90_ms": 4.427, + "p95_ms": 4.832, + "p99_ms": 5.611, + "index_ms": 235.0 + }, + "lua": { + "repos": 3, + "ndcg10": 0.8218, + "p50_ms": 0.607, + "p90_ms": 0.706, + "p95_ms": 0.732, + "p99_ms": 0.746, + "index_ms": 364.9 + }, + "php": { + "repos": 3, + "ndcg10": 0.8141, + "p50_ms": 0.928, + "p90_ms": 6.838, + "p95_ms": 6.961, + "p99_ms": 6.982, + "index_ms": 728.2 + }, + "python": { + "repos": 9, + "ndcg10": 0.8598, + "p50_ms": 0.509, + "p90_ms": 3.314, + "p95_ms": 3.503, + "p99_ms": 3.691, + "index_ms": 154.8 + }, + "ruby": { + "repos": 3, + "ndcg10": 0.9007, + "p50_ms": 0.605, + "p90_ms": 4.554, + "p95_ms": 5.553, + "p99_ms": 5.926, + "index_ms": 100.1 + }, + "rust": { + "repos": 3, + "ndcg10": 0.8378, + "p50_ms": 0.822, + "p90_ms": 5.164, + "p95_ms": 5.562, + "p99_ms": 5.879, + "index_ms": 503.8 + }, + "scala": { + "repos": 3, + "ndcg10": 0.8982, + "p50_ms": 0.822, + "p90_ms": 4.061, + "p95_ms": 4.153, + "p99_ms": 4.261, + "index_ms": 384.4 + }, + "swift": { + "repos": 3, + "ndcg10": 0.8358, + "p50_ms": 0.728, + "p90_ms": 3.77, + "p95_ms": 4.013, + "p99_ms": 4.528, + "index_ms": 242.3 + }, + "typescript": { + "repos": 3, + "ndcg10": 0.7185, + "p50_ms": 0.889, + "p90_ms": 4.826, + "p95_ms": 4.897, + "p99_ms": 5.073, + "index_ms": 446.0 + }, + "zig": { + "repos": 3, + "ndcg10": 0.8685, + "p50_ms": 0.878, + "p90_ms": 0.946, + "p95_ms": 0.96, + "p99_ms": 0.983, + "index_ms": 1472.4 + } + }, + "repos": [ + { + "repo": "abseil-cpp", + "language": "cpp", + "chunks": 3083, + "ndcg5": 0.913500228802621, + "ndcg10": 0.913500228802621, + "p50_ms": 0.8288329991046339, + "p90_ms": 7.644358408288099, + "p95_ms": 7.874565255769995, + "p99_ms": 8.383480237971526, + "index_ms": 1695.0073750049341, + "by_category": { + "architecture": 1.0, + "semantic": 0.9180003050701615, + "symbol": 0.8333333333333334 + } + }, + { + "repo": "aeson", + "language": "haskell", + "chunks": 393, + "ndcg5": 0.787707118843058, + "ndcg10": 0.8075975589033458, + "p50_ms": 0.5029794992879033, + "p90_ms": 0.5684624949935824, + "p95_ms": 0.598820838786196, + "p99_ms": 0.6036977711482905, + "index_ms": 166.75454200594686, + "by_category": { + "architecture": 0.6722706232293573, + "semantic": 0.852706537461342 + } + }, + { + "repo": "aiohttp", + "language": "python", + "chunks": 756, + "ndcg5": 0.7595501987615106, + "ndcg10": 0.8051055391429651, + "p50_ms": 0.5858750082552433, + "p90_ms": 4.032541997730732, + "p95_ms": 4.340999992564321, + "p99_ms": 4.6775663970038295, + "index_ms": 242.41833400446922, + "by_category": { + "architecture": 0.8356195986270888, + "semantic": 0.6730976812902937, + "symbol": 1.0 + } + }, + { + "repo": "alamofire", + "language": "swift", + "chunks": 649, + "ndcg5": 0.9613147192765459, + "ndcg10": 0.9613147192765459, + "p50_ms": 0.538958513061516, + "p90_ms": 4.011783419991843, + "p95_ms": 4.366625644615852, + "p99_ms": 5.66875873308163, + "index_ms": 215.27604199945927, + "by_category": { + "architecture": 0.9732402630493958, + "semantic": 0.9369612360347936, + "symbol": 1.0 + } + }, + { + "repo": "axios", + "language": "javascript", + "chunks": 166, + "ndcg5": 0.8648468052243118, + "ndcg10": 0.8908186768484192, + "p50_ms": 0.6152499991003424, + "p90_ms": 2.756246086210013, + "p95_ms": 2.975497588340659, + "p99_ms": 3.4415995157905845, + "index_ms": 58.68120800005272, + "by_category": { + "architecture": 0.6793305495640389, + "semantic": 0.9355245321275762, + "symbol": 1.0 + } + }, + { + "repo": "axum", + "language": "rust", + "chunks": 509, + "ndcg5": 0.7324356157188728, + "ndcg10": 0.7826858855802271, + "p50_ms": 0.6296034989645705, + "p90_ms": 3.627721415250562, + "p95_ms": 3.6631476148613733, + "p99_ms": 4.011829532973933, + "index_ms": 177.1654589974787, + "by_category": { + "architecture": 0.7297596420238124, + "semantic": 0.8040593595314548, + "symbol": 0.7854023957026741 + } + }, + { + "repo": "bash-it", + "language": "bash", + "chunks": 723, + "ndcg5": 0.6075207382645395, + "ndcg10": 0.6574637191224815, + "p50_ms": 0.9839580015977845, + "p90_ms": 1.1318125005345792, + "p95_ms": 1.1711499988450669, + "p99_ms": 1.1962299907463603, + "index_ms": 278.2070839894004, + "by_category": { + "architecture": 0.7153382790366966, + "semantic": 0.5836667746772907, + "symbol": 0.8261859507142916 + } + }, + { + "repo": "bats-core", + "language": "bash", + "chunks": 48, + "ndcg5": 0.9011859507142915, + "ndcg10": 0.9011859507142915, + "p50_ms": 0.35145849687978625, + "p90_ms": 0.3723627974977717, + "p95_ms": 0.3865687453071587, + "p99_ms": 0.40471375075867394, + "index_ms": 20.100541994906962, + "by_category": { + "architecture": 0.8231227867347022, + "semantic": 0.9432199620879166 + } + }, + { + "repo": "cats", + "language": "scala", + "chunks": 1254, + "ndcg5": 0.9132034061286296, + "ndcg10": 0.9132034061286296, + "p50_ms": 0.9875210089376196, + "p90_ms": 4.95432531752158, + "p95_ms": 5.011820839717984, + "p99_ms": 5.16299775801599, + "index_ms": 629.3801249994431, + "by_category": { + "architecture": 0.8467132018086354, + "semantic": 0.8877215315338048, + "symbol": 1.0 + } + }, + { + "repo": "chi", + "language": "go", + "chunks": 262, + "ndcg5": 0.8121926566738839, + "ndcg10": 0.8342931456297593, + "p50_ms": 0.6947704969206825, + "p90_ms": 3.024499787716195, + "p95_ms": 3.1808037048904225, + "p99_ms": 3.2018279371550307, + "index_ms": 96.05349999037571, + "by_category": { + "architecture": 0.6259028523654583, + "semantic": 0.9589921948412731, + "symbol": 0.8769765845238192 + } + }, + { + "repo": "circe", + "language": "scala", + "chunks": 192, + "ndcg5": 0.8591297799361982, + "ndcg10": 0.8591297799361982, + "p50_ms": 0.5594169779215008, + "p90_ms": 2.7055004029534757, + "p95_ms": 2.731363082421012, + "p99_ms": 2.8683726029703394, + "index_ms": 91.02870899369009, + "by_category": { + "architecture": 0.7261859507142916, + "semantic": 0.8811396422923916, + "symbol": 1.0 + } + }, + { + "repo": "click", + "language": "python", + "chunks": 315, + "ndcg5": 1.0, + "ndcg10": 1.0, + "p50_ms": 0.4284165188437328, + "p90_ms": 3.32115450873971, + "p95_ms": 3.3433961390983313, + "p99_ms": 3.4608792315702885, + "index_ms": 109.89029100164771, + "by_category": { + "architecture": 1.0, + "semantic": 1.0, + "symbol": 1.0 + } + }, + { + "repo": "cobra", + "language": "go", + "chunks": 394, + "ndcg5": 0.967519867361079, + "ndcg10": 0.967519867361079, + "p50_ms": 0.546520488569513, + "p90_ms": 3.5891666833777, + "p95_ms": 4.766246155486442, + "p99_ms": 5.039149236981756, + "index_ms": 147.52787500037812, + "by_category": { + "architecture": 1.0, + "semantic": 0.94094521338378, + "symbol": 1.0 + } + }, + { + "repo": "commons-lang", + "language": "java", + "chunks": 3152, + "ndcg5": 0.8696123574829959, + "ndcg10": 0.8958857274902101, + "p50_ms": 0.9761250112205744, + "p90_ms": 8.967500005383044, + "p95_ms": 18.8575419888366, + "p99_ms": 19.31890841224231, + "index_ms": 1046.8531670048833, + "by_category": { + "architecture": 0.7216293209723186, + "semantic": 0.9034794510269613, + "symbol": 1.0 + } + }, + { + "repo": "curl", + "language": "c", + "chunks": 4444, + "ndcg5": 0.5564993486741835, + "ndcg10": 0.6602872366816288, + "p50_ms": 0.976354000158608, + "p90_ms": 1.1134833126561716, + "p95_ms": 1.1474247090518475, + "p99_ms": 1.203918531537056, + "index_ms": 1525.944624998374, + "by_category": { + "architecture": 0.5728575877940218, + "semantic": 0.7318205857714887 + } + }, + { + "repo": "dapper", + "language": "csharp", + "chunks": 411, + "ndcg5": 0.7946394630357186, + "ndcg10": 0.8457831557244532, + "p50_ms": 0.553229489014484, + "p90_ms": 3.1310503080021603, + "p95_ms": 4.086462511622816, + "p99_ms": 7.731992511253332, + "index_ms": 161.88154101837426, + "by_category": { + "architecture": 0.5801175685032033, + "semantic": 0.920327929761907, + "symbol": 0.8769765845238192 + } + }, + { + "repo": "dio", + "language": "dart", + "chunks": 153, + "ndcg5": 0.6945949461156704, + "ndcg10": 0.6945949461156704, + "p50_ms": 0.5910000036237761, + "p90_ms": 0.6526541808852926, + "p95_ms": 0.6720711608068086, + "p99_ms": 0.6896142222103663, + "index_ms": 60.18616698565893, + "by_category": { + "architecture": 0.6421082758814111, + "semantic": 0.7077166136742353 + } + }, + { + "repo": "ecto", + "language": "elixir", + "chunks": 755, + "ndcg5": 0.8822031319548903, + "ndcg10": 0.9009508786447862, + "p50_ms": 0.5307499959599227, + "p90_ms": 6.834600010188296, + "p95_ms": 7.2031833027722305, + "p99_ms": 7.355703074135818, + "index_ms": 300.08620899752714, + "by_category": { + "architecture": 1.0, + "semantic": 0.9220874569753447, + "symbol": 0.7103099178571526 + } + }, + { + "repo": "exposed", + "language": "kotlin", + "chunks": 744, + "ndcg5": 0.714389356842921, + "ndcg10": 0.7597867547058971, + "p50_ms": 0.9064374899026006, + "p90_ms": 4.080029402393849, + "p95_ms": 4.999353543098551, + "p99_ms": 6.30370429571485, + "index_ms": 262.4458329810295, + "by_category": { + "architecture": 0.6547543623015969, + "semantic": 0.7308194290866535, + "symbol": 1.0 + } + }, + { + "repo": "express", + "language": "javascript", + "chunks": 52, + "ndcg5": 0.8775325271359822, + "ndcg10": 0.9108658604693156, + "p50_ms": 0.2892705088015646, + "p90_ms": 0.32750380923971534, + "p95_ms": 0.34718479582807055, + "p99_ms": 0.4177705544861964, + "index_ms": 19.9750000028871, + "by_category": { + "architecture": 0.8932934460687887, + "semantic": 0.8964263086904791, + "symbol": 1.0 + } + }, + { + "repo": "fastapi", + "language": "python", + "chunks": 597, + "ndcg5": 0.7297297540684241, + "ndcg10": 0.7869838171738259, + "p50_ms": 0.5158960120752454, + "p90_ms": 3.550083900336176, + "p95_ms": 3.5727746479096822, + "p99_ms": 3.626987723109778, + "index_ms": 192.3647919902578, + "by_category": { + "architecture": 0.6392000559545565, + "semantic": 0.7831594939743279, + "symbol": 1.0 + } + }, + { + "repo": "flask", + "language": "python", + "chunks": 291, + "ndcg5": 0.9023391842683456, + "ndcg10": 0.921528857296809, + "p50_ms": 0.4447920073289424, + "p90_ms": 2.793624997138977, + "p95_ms": 3.002292010933161, + "p99_ms": 3.515158407390118, + "index_ms": 96.16287500830367, + "by_category": { + "architecture": 0.8548201992475203, + "semantic": 0.9425786007727588, + "symbol": 1.0 + } + }, + { + "repo": "fmtlib", + "language": "cpp", + "chunks": 476, + "ndcg5": 0.9715338279036697, + "ndcg10": 0.9715338279036697, + "p50_ms": 0.46768749598413706, + "p90_ms": 0.8212952059693678, + "p95_ms": 3.5719746359973215, + "p99_ms": 3.640627732675057, + "index_ms": 346.1054160143249, + "by_category": { + "architecture": 1.0, + "semantic": 0.9593340398623853, + "symbol": 1.0 + } + }, + { + "repo": "gin", + "language": "go", + "chunks": 576, + "ndcg5": 0.8763658848604823, + "ndcg10": 0.8763658848604823, + "p50_ms": 0.5581455043284222, + "p90_ms": 3.583649976644665, + "p95_ms": 3.6604666238417853, + "p99_ms": 4.10645974043291, + "index_ms": 223.8528750021942, + "by_category": { + "architecture": 0.9638734584787886, + "semantic": 0.7949160860306287, + "symbol": 1.0 + } + }, + { + "repo": "gson", + "language": "java", + "chunks": 1460, + "ndcg5": 0.8466901155768763, + "ndcg10": 0.8576104874177843, + "p50_ms": 0.9703960095066577, + "p90_ms": 6.001195311546327, + "p95_ms": 6.6798568674130365, + "p99_ms": 7.073504165164194, + "index_ms": 478.8982500031125, + "by_category": { + "architecture": 0.677192486230418, + "semantic": 0.8443439803434017, + "symbol": 1.0 + } + }, + { + "repo": "guzzle", + "language": "php", + "chunks": 206, + "ndcg5": 0.9140510731804075, + "ndcg10": 0.9140510731804075, + "p50_ms": 0.6020834989612922, + "p90_ms": 2.956729498691857, + "p95_ms": 3.0089273874182254, + "p99_ms": 3.041385473916307, + "index_ms": 65.15933401533403, + "by_category": { + "architecture": 1.0, + "semantic": 0.8677708818160114, + "symbol": 1.0 + } + }, + { + "repo": "http-dart", + "language": "dart", + "chunks": 89, + "ndcg5": 0.7566124015300086, + "ndcg10": 0.784641880764834, + "p50_ms": 0.547791991266422, + "p90_ms": 0.582012502127327, + "p95_ms": 0.5892666435102001, + "p99_ms": 0.6123197247507051, + "index_ms": 37.57270800997503, + "by_category": { + "architecture": 0.75, + "semantic": 0.7884909786275932 + } + }, + { + "repo": "http4s", + "language": "scala", + "chunks": 952, + "ndcg5": 0.9221719901717009, + "ndcg10": 0.9221719901717009, + "p50_ms": 0.9176874882541597, + "p90_ms": 4.522633095621131, + "p95_ms": 4.716569404990878, + "p99_ms": 4.750547480944078, + "index_ms": 432.83587499172427, + "by_category": { + "architecture": 0.9732402630493958, + "semantic": 0.8945513581632737, + "symbol": 1.0 + } + }, + { + "repo": "httpx", + "language": "python", + "chunks": 248, + "ndcg5": 0.879316171195208, + "ndcg10": 0.8890486663184692, + "p50_ms": 0.48129100468941033, + "p90_ms": 2.6347090024501085, + "p95_ms": 2.995792019646615, + "p99_ms": 3.084624803159386, + "index_ms": 86.85887500178069, + "by_category": { + "architecture": 0.8281337292123195, + "semantic": 0.8747873209112909, + "symbol": 1.0 + } + }, + { + "repo": "jackson-databind", + "language": "java", + "chunks": 4570, + "ndcg5": 0.6754072534454754, + "ndcg10": 0.7212470920357018, + "p50_ms": 1.4495830109808594, + "p90_ms": 13.007562805432826, + "p95_ms": 13.306881245807745, + "p99_ms": 13.74967623327393, + "index_ms": 1381.1816250090487, + "by_category": { + "architecture": 0.6403142945053555, + "semantic": 0.6233581306024223, + "symbol": 0.9355245321275764 + } + }, + { + "repo": "kotlinx-coroutines", + "language": "kotlin", + "chunks": 884, + "ndcg5": 0.8780803155822425, + "ndcg10": 0.8958906749376437, + "p50_ms": 0.7357709982898086, + "p90_ms": 4.328983896994032, + "p95_ms": 4.495772591326387, + "p99_ms": 5.232054519001394, + "index_ms": 297.71074999007396, + "by_category": { + "architecture": 0.8102255193577976, + "semantic": 0.8919383529056771, + "symbol": 1.0 + } + }, + { + "repo": "ktor", + "language": "kotlin", + "chunks": 425, + "ndcg5": 0.7385032847341471, + "ndcg10": 0.7863363921346742, + "p50_ms": 0.8865210111252964, + "p90_ms": 4.872666989103891, + "p95_ms": 5.0001607494778, + "p99_ms": 5.29646574956132, + "index_ms": 144.9417079857085, + "by_category": { + "architecture": 0.665712506739421, + "semantic": 0.7238200422167912, + "symbol": 1.0 + } + }, + { + "repo": "laravel-framework", + "language": "php", + "chunks": 6197, + "ndcg5": 0.6294399888351122, + "ndcg10": 0.6678420402122851, + "p50_ms": 1.2531874963315204, + "p90_ms": 13.804049722966738, + "p95_ms": 14.04194585775258, + "p99_ms": 14.07152275700355, + "index_ms": 1988.6437079985626, + "by_category": { + "architecture": 0.6041947436776243, + "semantic": 0.6662830938812081, + "symbol": 0.7827324383928644 + } + }, + { + "repo": "lazy.nvim", + "language": "lua", + "chunks": 300, + "ndcg5": 0.6371951400189322, + "ndcg10": 0.6989634817893211, + "p50_ms": 0.6456870032707229, + "p90_ms": 0.6823410920333117, + "p95_ms": 0.6849752957350574, + "p99_ms": 0.701061472936999, + "index_ms": 115.83154200343415, + "by_category": { + "architecture": 0.7937228666330852, + "semantic": 0.6214330760080596 + } + }, + { + "repo": "libuv", + "language": "c", + "chunks": 1345, + "ndcg5": 0.5778481246570202, + "ndcg10": 0.6109903736184, + "p50_ms": 0.6311875040410087, + "p90_ms": 0.7627499988302588, + "p95_ms": 0.7889853950473481, + "p99_ms": 0.8799634626484475, + "index_ms": 459.9294580111746, + "by_category": { + "architecture": 0.6309297535714575, + "semantic": 0.608774886956949, + "symbol": 0.6309297535714575 + } + }, + { + "repo": "messagepack-csharp", + "language": "csharp", + "chunks": 1125, + "ndcg5": 0.8625205636356418, + "ndcg10": 0.8695839122786332, + "p50_ms": 0.9685624827397987, + "p90_ms": 5.381412213318982, + "p95_ms": 5.9620146013912745, + "p99_ms": 6.1237365115084685, + "index_ms": 438.20912498631515, + "by_category": { + "architecture": 0.622590627025877, + "semantic": 0.8779239708299064, + "symbol": 1.0 + } + }, + { + "repo": "mini.nvim", + "language": "lua", + "chunks": 2156, + "ndcg5": 0.9815464876785729, + "ndcg10": 0.9815464876785729, + "p50_ms": 0.5754584999522194, + "p90_ms": 0.7932624808745459, + "p95_ms": 0.8019666391192004, + "p99_ms": 0.8128597162431106, + "index_ms": 793.3844999934081, + "by_category": { + "architecture": 1.0, + "semantic": 0.9769331095982161 + } + }, + { + "repo": "model2vec", + "language": "python", + "chunks": 107, + "ndcg5": 0.6563614357577399, + "ndcg10": 0.6955916766562531, + "p50_ms": 0.4668334877351299, + "p90_ms": 2.1846040908712894, + "p95_ms": 2.252278554078657, + "p99_ms": 2.2748893234529532, + "index_ms": 40.3084589925129, + "by_category": { + "architecture": 0.6343453280002408, + "semantic": 0.7084563429888835, + "symbol": 0.7956176024115139 + } + }, + { + "repo": "monolog", + "language": "php", + "chunks": 417, + "ndcg5": 0.8516433990956823, + "ndcg10": 0.8605053634348847, + "p50_ms": 0.9274579933844507, + "p90_ms": 3.752950284979306, + "p95_ms": 3.833195846527815, + "p99_ms": 3.8342727720737457, + "index_ms": 130.6636660010554, + "by_category": { + "architecture": 0.619392015186447, + "semantic": 0.9113147192765458, + "symbol": 1.0 + } + }, + { + "repo": "newtonsoft-json", + "language": "csharp", + "chunks": 2152, + "ndcg5": 0.7249554830799518, + "ndcg10": 0.7566736495298176, + "p50_ms": 0.8702919876668602, + "p90_ms": 6.970825017197059, + "p95_ms": 8.257966689416207, + "p99_ms": 8.950960536603814, + "index_ms": 745.3908750030678, + "by_category": { + "architecture": 0.8229172249923645, + "semantic": 0.6541790582401968, + "symbol": 1.0 + } + }, + { + "repo": "nlohmann-json", + "language": "cpp", + "chunks": 791, + "ndcg5": 0.8699118594962764, + "ndcg10": 0.8808322313371845, + "p50_ms": 0.5722290079575032, + "p90_ms": 4.273767012637109, + "p95_ms": 4.399139914312401, + "p99_ms": 4.940227980841882, + "index_ms": 289.2793339851778, + "by_category": { + "architecture": 0.8478663329217984, + "semantic": 0.8681580296291103, + "symbol": 1.0 + } + }, + { + "repo": "nvm", + "language": "bash", + "chunks": 153, + "ndcg5": 0.9261859507142916, + "ndcg10": 0.9261859507142916, + "p50_ms": 0.32816700695548207, + "p90_ms": 0.3530455083819106, + "p95_ms": 0.3617684211349115, + "p99_ms": 0.36268648866098374, + "index_ms": 65.55141700664535, + "by_category": { + "architecture": 0.8154648767857288, + "semantic": 0.9384882922619097 + } + }, + { + "repo": "pandoc", + "language": "haskell", + "chunks": 3090, + "ndcg5": 0.6333247437591728, + "ndcg10": 0.6650429102090386, + "p50_ms": 1.2137705052737147, + "p90_ms": 1.332991395611316, + "p95_ms": 1.3356294919503853, + "p99_ms": 1.371159497066401, + "index_ms": 1204.971207975177, + "by_category": { + "architecture": 0.6368991050595311, + "semantic": 0.6838054469753768 + } + }, + { + "repo": "phoenix", + "language": "elixir", + "chunks": 546, + "ndcg5": 0.7696427696468264, + "ndcg10": 0.7848567078740838, + "p50_ms": 0.6014159880578518, + "p90_ms": 4.199699993478134, + "p95_ms": 4.508924976107662, + "p99_ms": 5.321984985494055, + "index_ms": 205.2227079984732, + "by_category": { + "architecture": 0.8547262294684788, + "semantic": 0.8270092609025553, + "symbol": 0.47689218602446437 + } + }, + { + "repo": "plug", + "language": "elixir", + "chunks": 249, + "ndcg5": 0.9130929753571457, + "ndcg10": 0.9130929753571457, + "p50_ms": 0.5853954935446382, + "p90_ms": 3.1964041991159324, + "p95_ms": 3.5883940639905636, + "p99_ms": 4.121945200022309, + "index_ms": 104.35420801513828, + "by_category": { + "architecture": 1.0, + "semantic": 0.902209268112247, + "symbol": 0.8769765845238192 + } + }, + { + "repo": "pydantic", + "language": "python", + "chunks": 1518, + "ndcg5": 0.7393950348587884, + "ndcg10": 0.7605345265791209, + "p50_ms": 0.6604795053135604, + "p90_ms": 5.447254210594111, + "p95_ms": 5.821569039835595, + "p99_ms": 5.901780218700878, + "index_ms": 490.41895900154486, + "by_category": { + "architecture": 0.7517473446718608, + "semantic": 0.7577007889556063, + "symbol": 0.7773705614469083 + } + }, + { + "repo": "rack", + "language": "ruby", + "chunks": 249, + "ndcg5": 0.8884601594287914, + "ndcg10": 0.8884601594287914, + "p50_ms": 0.5929789913352579, + "p90_ms": 3.9219375932589187, + "p95_ms": 5.466704546415711, + "p99_ms": 6.389408104296305, + "index_ms": 97.69187500933185, + "by_category": { + "architecture": 1.0, + "semantic": 0.7992282869718244, + "symbol": 1.0 + } + }, + { + "repo": "rails", + "language": "ruby", + "chunks": 465, + "ndcg5": 0.8788952563203779, + "ndcg10": 0.8788952563203779, + "p50_ms": 0.8620834996690974, + "p90_ms": 4.538450008840302, + "p95_ms": 5.960535441408865, + "p99_ms": 6.122574293403886, + "index_ms": 173.81158398347907, + "by_category": { + "architecture": 0.815634157070918, + "semantic": 1.0, + "symbol": 0.809299428192324 + } + }, + { + "repo": "redis", + "language": "c", + "chunks": 6289, + "ndcg5": 0.8661732909393883, + "ndcg10": 0.8661732909393883, + "p50_ms": 0.8907290175557137, + "p90_ms": 1.0437753022415563, + "p95_ms": 1.0747333508334123, + "p99_ms": 1.085880286700558, + "index_ms": 2575.1486669760197, + "by_category": { + "architecture": 0.8761859507142915, + "semantic": 0.8561606311644849 + } + }, + { + "repo": "redux", + "language": "javascript", + "chunks": 53, + "ndcg5": 0.8678612069551187, + "ndcg10": 0.8937566584607637, + "p50_ms": 0.422958008130081, + "p90_ms": 1.9178203074261546, + "p95_ms": 1.9417568444623612, + "p99_ms": 1.9424841806176119, + "index_ms": 22.948625002754852, + "by_category": { + "architecture": 0.756966639313657, + "semantic": 0.925925925925926, + "symbol": 1.0 + } + }, + { + "repo": "requests", + "language": "python", + "chunks": 169, + "ndcg5": 0.9341423065816494, + "ndcg10": 0.9341423065816494, + "p50_ms": 0.42527100595179945, + "p90_ms": 2.9855417058570315, + "p95_ms": 3.2606377761112526, + "p99_ms": 3.366593951941468, + "index_ms": 57.89774999720976, + "by_category": { + "architecture": 0.9144279211792, + "semantic": 0.9102313354223237, + "symbol": 1.0 + } + }, + { + "repo": "riverpod", + "language": "dart", + "chunks": 316, + "ndcg5": 0.7920624189796882, + "ndcg10": 0.8071139187628873, + "p50_ms": 0.6823959993198514, + "p90_ms": 0.7544374791905284, + "p95_ms": 0.7622937511769123, + "p99_ms": 0.7876587673672475, + "index_ms": 119.0645000024233, + "by_category": { + "architecture": 0.7542345811355592, + "semantic": 0.8355874082545255 + } + }, + { + "repo": "rxswift", + "language": "swift", + "chunks": 686, + "ndcg5": 0.7523234224425189, + "ndcg10": 0.7786614092900491, + "p50_ms": 0.8203329925891012, + "p90_ms": 3.4378000069409613, + "p95_ms": 3.5955812491010875, + "p99_ms": 3.8153162633534516, + "index_ms": 222.92145801475272, + "by_category": { + "architecture": 0.6934264036172708, + "semantic": 0.7457583585710961, + "symbol": 1.0 + } + }, + { + "repo": "serde", + "language": "rust", + "chunks": 1164, + "ndcg5": 0.7430676558073394, + "ndcg10": 0.7755075663132924, + "p50_ms": 0.9294374904129654, + "p90_ms": 4.370783301419579, + "p95_ms": 4.873083012353163, + "p99_ms": 4.911083014158066, + "index_ms": 386.9259159837384, + "by_category": { + "architecture": 0.7974500308912245, + "semantic": 0.6726085028922673, + "symbol": 0.875 + } + }, + { + "repo": "sinatra", + "language": "ruby", + "chunks": 68, + "ndcg5": 0.9346268032608155, + "ndcg10": 0.9346268032608155, + "p50_ms": 0.3585210070014, + "p90_ms": 5.2018788090208545, + "p95_ms": 5.232611868996173, + "p99_ms": 5.265988775063306, + "index_ms": 28.934290981851518, + "by_category": { + "architecture": 0.7385072130432616, + "semantic": 1.0, + "symbol": 1.0 + } + }, + { + "repo": "starlette", + "language": "python", + "chunks": 213, + "ndcg5": 0.9360462354097291, + "ndcg10": 0.945257016534361, + "p50_ms": 0.570459000300616, + "p90_ms": 2.878166997106746, + "p95_ms": 2.9334589780773968, + "p99_ms": 3.3104581933002923, + "index_ms": 77.1868750161957, + "by_category": { + "architecture": 0.8954906679292346, + "semantic": 1.0, + "symbol": 1.0 + } + }, + { + "repo": "telescope.nvim", + "language": "lua", + "chunks": 540, + "ndcg5": 0.7850340567062908, + "ndcg10": 0.7850340567062908, + "p50_ms": 0.6001249857945368, + "p90_ms": 0.6422707781894134, + "p95_ms": 0.7076309484546073, + "p99_ms": 0.7235597717226483, + "index_ms": 185.51724997814745, + "by_category": { + "architecture": 0.8557660725862154, + "semantic": 0.7469475866171005 + } + }, + { + "repo": "tokio", + "language": "rust", + "chunks": 2730, + "ndcg5": 0.9459860394574093, + "ndcg10": 0.9552148242963877, + "p50_ms": 0.9074164991034195, + "p90_ms": 7.492941711097957, + "p95_ms": 8.149402408162132, + "p99_ms": 8.713480472797526, + "index_ms": 947.3822079889942, + "by_category": { + "architecture": 0.8507160809879593, + "semantic": 1.0, + "symbol": 1.0 + } + }, + { + "repo": "trpc", + "language": "typescript", + "chunks": 362, + "ndcg5": 0.7517036349312507, + "ndcg10": 0.7810815764501158, + "p50_ms": 0.8975829987321049, + "p90_ms": 3.512270489591174, + "p95_ms": 3.5603892378276214, + "p99_ms": 3.565044251154177, + "index_ms": 126.7516250081826, + "by_category": { + "architecture": 0.6937431130989311, + "semantic": 0.724526660601552, + "symbol": 1.0 + } + }, + { + "repo": "vapor", + "language": "swift", + "chunks": 780, + "ndcg5": 0.714347895854399, + "ndcg10": 0.7673794037674891, + "p50_ms": 0.8243544871220365, + "p90_ms": 3.859366389224306, + "p95_ms": 4.077123204478994, + "p99_ms": 4.099257421912625, + "index_ms": 288.58216700609773, + "by_category": { + "architecture": 0.42599353221896225, + "semantic": 0.790686248478064, + "symbol": 1.0 + } + }, + { + "repo": "vitest", + "language": "typescript", + "chunks": 1079, + "ndcg5": 0.6517782560805999, + "ndcg10": 0.7024504745746012, + "p50_ms": 0.8783960074651986, + "p90_ms": 4.964179504895583, + "p95_ms": 5.021564898197539, + "p99_ms": 5.122612976119854, + "index_ms": 369.3518330110237, + "by_category": { + "architecture": 0.5291699572630004, + "semantic": 0.7158172498103655, + "symbol": 1.0 + } + }, + { + "repo": "xmonad", + "language": "haskell", + "chunks": 123, + "ndcg5": 0.7558852054218812, + "ndcg10": 0.7661043253013055, + "p50_ms": 0.42020798719022423, + "p90_ms": 0.44975028722546995, + "p95_ms": 0.4516541550401598, + "p99_ms": 0.4520972410682589, + "index_ms": 53.085833991644904, + "by_category": { + "architecture": 0.7998908847793088, + "semantic": 0.7435799523159697 + } + }, + { + "repo": "zig", + "language": "zig", + "chunks": 13059, + "ndcg5": 0.8696394630357187, + "ndcg10": 0.8696394630357187, + "p50_ms": 1.5533534897258505, + "p90_ms": 1.6347368946298957, + "p95_ms": 1.6436208519735374, + "p99_ms": 1.700557782605756, + "index_ms": 3760.8449169783853, + "by_category": { + "architecture": 0.6666666666666666, + "semantic": 0.9054581918067278 + } + }, + { + "repo": "zig-clap", + "language": "zig", + "chunks": 99, + "ndcg5": 0.9130929753571457, + "ndcg10": 0.9130929753571457, + "p50_ms": 0.4285210161469877, + "p90_ms": 0.45732120343018323, + "p95_ms": 0.47131314931903034, + "p99_ms": 0.47479621425736696, + "index_ms": 51.674541988177225, + "by_category": { + "architecture": 1.0, + "semantic": 0.9034366392857175 + } + }, + { + "repo": "zls", + "language": "zig", + "chunks": 1300, + "ndcg5": 0.8077324383928645, + "ndcg10": 0.8227839381760635, + "p50_ms": 0.6527079967781901, + "p90_ms": 0.7461169880116358, + "p95_ms": 0.7652794985915534, + "p99_ms": 0.7726894886582159, + "index_ms": 604.5829160138965, + "by_category": { + "architecture": 0.7946985004009851, + "semantic": 0.837906866208798 + } + }, + { + "repo": "zod", + "language": "typescript", + "chunks": 1777, + "ndcg5": 0.6721003911969763, + "ndcg10": 0.6721003911969763, + "p50_ms": 0.8918749954318628, + "p90_ms": 6.001283889054321, + "p95_ms": 6.109603859658819, + "p99_ms": 6.531720783968921, + "index_ms": 841.8217909929808, + "by_category": { + "architecture": 0.6577324383928644, + "semantic": 0.6393136977206204, + "symbol": 0.8333333333333334 + } + } + ] +} diff --git a/benchmarks/results/4266a1e40ab5.json b/benchmarks/results/4266a1e40ab5.json deleted file mode 100644 index c211e15..0000000 --- a/benchmarks/results/4266a1e40ab5.json +++ /dev/null @@ -1,346 +0,0 @@ -{ - "sha": "4266a1e40ab5040e06759f15032dae121ceb07d0", - "model": "minishlab/potion-code-16M", - "summary": { - "ndcg10": 0.8668, - "p50_ms": 0.699, - "index_ms": 341.1 - }, - "by_language": { - "csharp": { - "repos": 1, - "ndcg10": 0.8263, - "p50_ms": 0.971, - "index_ms": 491.9 - }, - "go": { - "repos": 3, - "ndcg10": 0.9515, - "p50_ms": 0.508, - "index_ms": 155.9 - }, - "java": { - "repos": 3, - "ndcg10": 0.842, - "p50_ms": 1.231, - "index_ms": 975.4 - }, - "javascript": { - "repos": 3, - "ndcg10": 0.9282, - "p50_ms": 0.406, - "index_ms": 37.4 - }, - "kotlin": { - "repos": 1, - "ndcg10": 0.7631, - "p50_ms": 0.861, - "index_ms": 160.5 - }, - "php": { - "repos": 3, - "ndcg10": 0.906, - "p50_ms": 0.991, - "index_ms": 737.2 - }, - "python": { - "repos": 8, - "ndcg10": 0.8233, - "p50_ms": 0.496, - "index_ms": 164.5 - }, - "ruby": { - "repos": 3, - "ndcg10": 0.8911, - "p50_ms": 0.634, - "index_ms": 97.5 - }, - "rust": { - "repos": 1, - "ndcg10": 0.8878, - "p50_ms": 0.859, - "index_ms": 934.0 - }, - "scala": { - "repos": 1, - "ndcg10": 0.8415, - "p50_ms": 0.917, - "index_ms": 631.3 - }, - "swift": { - "repos": 1, - "ndcg10": 0.9316, - "p50_ms": 0.519, - "index_ms": 227.6 - }, - "typescript": { - "repos": 1, - "ndcg10": 0.7431, - "p50_ms": 0.86, - "index_ms": 119.8 - } - }, - "repos": [ - { - "repo": "aiohttp", - "language": "python", - "chunks": 756, - "ndcg5": 0.7132626857513019, - "ndcg10": 0.7821229638714016, - "p50_ms": 0.5862920006620698, - "index_ms": 266.62812499853317 - }, - { - "repo": "alamofire", - "language": "swift", - "chunks": 649, - "ndcg5": 0.900172569211564, - "ndcg10": 0.9315768229529695, - "p50_ms": 0.5190410010982305, - "index_ms": 227.64933299913537 - }, - { - "repo": "axios", - "language": "javascript", - "chunks": 166, - "ndcg5": 0.9671522420975631, - "ndcg10": 0.9671522420975631, - "p50_ms": 0.5850419984199107, - "index_ms": 61.9216669947491 - }, - { - "repo": "cats", - "language": "scala", - "chunks": 1254, - "ndcg5": 0.8157722039023972, - "ndcg10": 0.8414671964692401, - "p50_ms": 0.9170829944196157, - "index_ms": 631.3122919964371 - }, - { - "repo": "chi", - "language": "go", - "chunks": 262, - "ndcg5": 0.9455120441745608, - "ndcg10": 0.9455120441745608, - "p50_ms": 0.6326660004560836, - "index_ms": 100.20974999497412 - }, - { - "repo": "cobra", - "language": "go", - "chunks": 394, - "ndcg5": 0.970068981106951, - "ndcg10": 0.970068981106951, - "p50_ms": 0.41312499524792656, - "index_ms": 146.42495799489552 - }, - { - "repo": "commons-lang", - "language": "java", - "chunks": 3152, - "ndcg5": 0.7688578654609097, - "ndcg10": 0.8052591049306037, - "p50_ms": 0.9467080017202534, - "index_ms": 1020.9785000042757 - }, - { - "repo": "express", - "language": "javascript", - "chunks": 52, - "ndcg5": 0.9593872208972474, - "ndcg10": 0.9593872208972474, - "p50_ms": 0.2626249988679774, - "index_ms": 22.719332999258768 - }, - { - "repo": "fastapi", - "language": "python", - "chunks": 597, - "ndcg5": 0.7314364449312006, - "ndcg10": 0.7693095302894921, - "p50_ms": 0.46908400690881535, - "index_ms": 187.92545799806248 - }, - { - "repo": "flask", - "language": "python", - "chunks": 291, - "ndcg5": 0.8570900833760776, - "ndcg10": 0.8767012186349079, - "p50_ms": 0.44070799776818603, - "index_ms": 95.70033299678471 - }, - { - "repo": "gin", - "language": "go", - "chunks": 576, - "ndcg5": 0.8807555442147937, - "ndcg10": 0.939064318485603, - "p50_ms": 0.47812500270083547, - "index_ms": 221.14516699366504 - }, - { - "repo": "gson", - "language": "java", - "chunks": 1460, - "ndcg5": 0.9261859507142916, - "ndcg10": 0.9261859507142916, - "p50_ms": 1.1770420023822226, - "index_ms": 509.99808400229085 - }, - { - "repo": "guzzle", - "language": "php", - "chunks": 206, - "ndcg5": 0.8326908338735671, - "ndcg10": 0.844506786325837, - "p50_ms": 0.573749995965045, - "index_ms": 83.04195899836486 - }, - { - "repo": "httpx", - "language": "python", - "chunks": 248, - "ndcg5": 0.8519694264932337, - "ndcg10": 0.871159099521697, - "p50_ms": 0.4645420049200766, - "index_ms": 86.70345899736276 - }, - { - "repo": "jackson-databind", - "language": "java", - "chunks": 4570, - "ndcg5": 0.7667968319202225, - "ndcg10": 0.7944291752941182, - "p50_ms": 1.5702919990872033, - "index_ms": 1395.3167500003474 - }, - { - "repo": "ktor", - "language": "kotlin", - "chunks": 425, - "ndcg5": 0.726275662513606, - "ndcg10": 0.7630927329648237, - "p50_ms": 0.8605420007370412, - "index_ms": 160.50025000004098 - }, - { - "repo": "laravel-framework", - "language": "php", - "chunks": 6197, - "ndcg5": 0.967888315659275, - "ndcg10": 0.967888315659275, - "p50_ms": 1.4591669969377108, - "index_ms": 1993.087208000361 - }, - { - "repo": "messagepack-csharp", - "language": "csharp", - "chunks": 1125, - "ndcg5": 0.8164536328001585, - "ndcg10": 0.8262866007393468, - "p50_ms": 0.971207999100443, - "index_ms": 491.9366670001182 - }, - { - "repo": "model2vec", - "language": "python", - "chunks": 107, - "ndcg5": 0.6593701861221591, - "ndcg10": 0.695271294655741, - "p50_ms": 0.42779200157383457, - "index_ms": 42.165958002442494 - }, - { - "repo": "monolog", - "language": "php", - "chunks": 417, - "ndcg5": 0.9055096182921145, - "ndcg10": 0.9055096182921145, - "p50_ms": 0.939208002819214, - "index_ms": 135.56754199817078 - }, - { - "repo": "pydantic", - "language": "python", - "chunks": 1518, - "ndcg5": 0.6795591269045096, - "ndcg10": 0.7070408064407742, - "p50_ms": 0.6680410006083548, - "index_ms": 506.09699999768054 - }, - { - "repo": "rack", - "language": "ruby", - "chunks": 249, - "ndcg5": 1.0, - "ndcg10": 1.0, - "p50_ms": 0.5904999998165295, - "index_ms": 98.91937499924097 - }, - { - "repo": "rails", - "language": "ruby", - "chunks": 465, - "ndcg5": 0.7466134836472739, - "ndcg10": 0.8346443747935481, - "p50_ms": 0.988291998510249, - "index_ms": 165.1744169939775 - }, - { - "repo": "redux", - "language": "javascript", - "chunks": 53, - "ndcg5": 0.8226294385530917, - "ndcg10": 0.8580772959099011, - "p50_ms": 0.3718329971889034, - "index_ms": 27.56891599710798 - }, - { - "repo": "requests", - "language": "python", - "chunks": 169, - "ndcg5": 0.9550842629661954, - "ndcg10": 0.9550842629661954, - "p50_ms": 0.39600000309292227, - "index_ms": 54.466957997647114 - }, - { - "repo": "sinatra", - "language": "ruby", - "chunks": 68, - "ndcg5": 0.8387325493217617, - "ndcg10": 0.8387325493217617, - "p50_ms": 0.3239169964217581, - "index_ms": 28.267499998037238 - }, - { - "repo": "starlette", - "language": "python", - "chunks": 213, - "ndcg5": 0.9058681185722455, - "ndcg10": 0.9294136613951622, - "p50_ms": 0.51375000475673, - "index_ms": 76.53999999456573 - }, - { - "repo": "tokio", - "language": "rust", - "chunks": 2730, - "ndcg5": 0.8750003941122573, - "ndcg10": 0.8878478903956787, - "p50_ms": 0.8585420000599697, - "index_ms": 934.0497500015772 - }, - { - "repo": "trpc", - "language": "typescript", - "chunks": 362, - "ndcg5": 0.6949834508995433, - "ndcg10": 0.7431267778412411, - "p50_ms": 0.8599580032750964, - "index_ms": 119.76291600149125 - } - ] -} diff --git a/benchmarks/results/820b38638cad.json b/benchmarks/results/820b38638cad.json deleted file mode 100644 index d593ea6..0000000 --- a/benchmarks/results/820b38638cad.json +++ /dev/null @@ -1,472 +0,0 @@ -{ - "sha": "820b38638cad14aa264b4f83a36d110b7b9ecc6c", - "model": "minishlab/potion-code-16M", - "summary": { - "ndcg10": 0.8823, - "p50_ms": 0.708, - "p90_ms": 4.334, - "p95_ms": 4.748, - "p99_ms": 5.199, - "index_ms": 339.4 - }, - "by_language": { - "csharp": { - "repos": 1, - "ndcg10": 0.8383, - "p50_ms": 0.935, - "p90_ms": 5.233, - "p95_ms": 5.431, - "p99_ms": 5.84, - "index_ms": 462.9 - }, - "go": { - "repos": 3, - "ndcg10": 0.9647, - "p50_ms": 0.732, - "p90_ms": 2.155, - "p95_ms": 2.589, - "p99_ms": 2.936, - "index_ms": 165.9 - }, - "java": { - "repos": 3, - "ndcg10": 0.8476, - "p50_ms": 1.079, - "p90_ms": 9.252, - "p95_ms": 10.968, - "p99_ms": 12.341, - "index_ms": 962.0 - }, - "javascript": { - "repos": 3, - "ndcg10": 0.9502, - "p50_ms": 0.425, - "p90_ms": 1.431, - "p95_ms": 1.548, - "p99_ms": 1.642, - "index_ms": 40.4 - }, - "kotlin": { - "repos": 1, - "ndcg10": 0.8112, - "p50_ms": 0.882, - "p90_ms": 4.818, - "p95_ms": 4.989, - "p99_ms": 5.119, - "index_ms": 168.9 - }, - "php": { - "repos": 3, - "ndcg10": 0.915, - "p50_ms": 0.904, - "p90_ms": 5.078, - "p95_ms": 5.916, - "p99_ms": 6.601, - "index_ms": 715.0 - }, - "python": { - "repos": 8, - "ndcg10": 0.8471, - "p50_ms": 0.506, - "p90_ms": 3.269, - "p95_ms": 3.395, - "p99_ms": 3.795, - "index_ms": 162.8 - }, - "ruby": { - "repos": 3, - "ndcg10": 0.8901, - "p50_ms": 0.649, - "p90_ms": 5.475, - "p95_ms": 5.625, - "p99_ms": 5.749, - "index_ms": 101.1 - }, - "rust": { - "repos": 1, - "ndcg10": 0.8983, - "p50_ms": 0.838, - "p90_ms": 7.244, - "p95_ms": 7.474, - "p99_ms": 7.809, - "index_ms": 931.8 - }, - "scala": { - "repos": 1, - "ndcg10": 0.8442, - "p50_ms": 0.982, - "p90_ms": 4.654, - "p95_ms": 4.828, - "p99_ms": 4.85, - "index_ms": 655.8 - }, - "swift": { - "repos": 1, - "ndcg10": 0.952, - "p50_ms": 0.555, - "p90_ms": 4.089, - "p95_ms": 4.534, - "p99_ms": 5.608, - "index_ms": 245.9 - }, - "typescript": { - "repos": 1, - "ndcg10": 0.7633, - "p50_ms": 0.911, - "p90_ms": 3.328, - "p95_ms": 3.35, - "p99_ms": 3.377, - "index_ms": 122.7 - } - }, - "repos": [ - { - "repo": "aiohttp", - "language": "python", - "chunks": 756, - "ndcg5": 0.7752393448492159, - "ndcg10": 0.8107234959810621, - "p50_ms": 0.5831250018673018, - "p90_ms": 4.214999993564561, - "p95_ms": 4.230500009725802, - "p99_ms": 5.991300006280655, - "index_ms": 272.914708009921 - }, - { - "repo": "alamofire", - "language": "swift", - "chunks": 649, - "ndcg5": 0.9519875830423987, - "ndcg10": 0.9519875830423987, - "p50_ms": 0.5546250031329691, - "p90_ms": 4.088749794755131, - "p95_ms": 4.533633394748903, - "p99_ms": 5.608460279763676, - "index_ms": 245.9404160035774 - }, - { - "repo": "axios", - "language": "javascript", - "chunks": 166, - "ndcg5": 0.9770630826137678, - "ndcg10": 0.9770630826137678, - "p50_ms": 0.5838329961989075, - "p90_ms": 2.6197420025710016, - "p95_ms": 2.6515795005252585, - "p99_ms": 2.677049498888664, - "index_ms": 65.399916988099 - }, - { - "repo": "cats", - "language": "scala", - "chunks": 1254, - "ndcg5": 0.8313056228772555, - "ndcg10": 0.844153119160677, - "p50_ms": 0.9820830018725246, - "p90_ms": 4.653983601019718, - "p95_ms": 4.8278338013915345, - "p99_ms": 4.850233161705546, - "index_ms": 655.8479169907514 - }, - { - "repo": "chi", - "language": "go", - "chunks": 262, - "ndcg5": 0.9508861261352198, - "ndcg10": 0.9508861261352198, - "p50_ms": 0.6950419920030981, - "p90_ms": 2.2261250065639615, - "p95_ms": 2.7111250063171606, - "p99_ms": 3.0991250061197206, - "index_ms": 122.88979100412689 - }, - { - "repo": "cobra", - "language": "go", - "chunks": 394, - "ndcg5": 0.9839441578296375, - "ndcg10": 0.9839441578296375, - "p50_ms": 0.9769590105861425, - "p90_ms": 3.679574804846198, - "p95_ms": 4.49414140312001, - "p99_ms": 5.145794681739062, - "index_ms": 153.86750000470784 - }, - { - "repo": "commons-lang", - "language": "java", - "chunks": 3152, - "ndcg5": 0.8083908175891258, - "ndcg10": 0.8083908175891258, - "p50_ms": 0.8923545028665103, - "p90_ms": 9.845125001447741, - "p95_ms": 14.286145498772385, - "p99_ms": 17.838961896632103, - "index_ms": 1037.4199579964625 - }, - { - "repo": "express", - "language": "javascript", - "chunks": 52, - "ndcg5": 0.9839441578296375, - "ndcg10": 0.9839441578296375, - "p50_ms": 0.30524999601766467, - "p90_ms": 0.35119140811730176, - "p95_ms": 0.36065820895601064, - "p99_ms": 0.36823164962697774, - "index_ms": 25.441249992582016 - }, - { - "repo": "fastapi", - "language": "python", - "chunks": 597, - "ndcg5": 0.7638559078873687, - "ndcg10": 0.8116601052320185, - "p50_ms": 0.48493749636691064, - "p90_ms": 3.481445793295279, - "p95_ms": 3.4897559504315723, - "p99_ms": 3.555084784893552, - "index_ms": 201.4504999970086 - }, - { - "repo": "flask", - "language": "python", - "chunks": 291, - "ndcg5": 0.8926694749581663, - "ndcg10": 0.9014587938524314, - "p50_ms": 0.4546670097624883, - "p90_ms": 2.860082997358404, - "p95_ms": 2.8620410012081265, - "p99_ms": 3.4979417920112614, - "index_ms": 91.81595800328068 - }, - { - "repo": "gin", - "language": "go", - "chunks": 576, - "ndcg5": 0.9593950568449062, - "ndcg10": 0.9593950568449062, - "p50_ms": 0.5225625063758343, - "p90_ms": 0.5592704983428121, - "p95_ms": 0.5617182468995452, - "p99_ms": 0.5636764457449317, - "index_ms": 221.08395799295977 - }, - { - "repo": "gson", - "language": "java", - "chunks": 1460, - "ndcg5": 0.9261859507142916, - "ndcg10": 0.9261859507142916, - "p50_ms": 1.0274590022163466, - "p90_ms": 5.729733596672304, - "p95_ms": 5.772658795467578, - "p99_ms": 5.806998954503797, - "index_ms": 474.41158299625386 - }, - { - "repo": "guzzle", - "language": "php", - "chunks": 206, - "ndcg5": 0.8408764795176972, - "ndcg10": 0.8554369753055748, - "p50_ms": 0.6017500127200037, - "p90_ms": 2.870599998277612, - "p95_ms": 2.9140373997506686, - "p99_ms": 2.992973887885455, - "index_ms": 77.42929201049265 - }, - { - "repo": "httpx", - "language": "python", - "chunks": 248, - "ndcg5": 0.8831389907595801, - "ndcg10": 0.8928714858828413, - "p50_ms": 0.4792079998878762, - "p90_ms": 2.5800419971346855, - "p95_ms": 2.9380829946603626, - "p99_ms": 3.021583001827821, - "index_ms": 83.10679200803861 - }, - { - "repo": "jackson-databind", - "language": "java", - "chunks": 4570, - "ndcg5": 0.7789412530088333, - "ndcg10": 0.808138738378617, - "p50_ms": 1.3176659995224327, - "p90_ms": 12.182007802766748, - "p95_ms": 12.84629540023161, - "p99_ms": 13.3777254782035, - "index_ms": 1374.070459001814 - }, - { - "repo": "ktor", - "language": "kotlin", - "chunks": 425, - "ndcg5": 0.779649714096162, - "ndcg10": 0.8112379886744412, - "p50_ms": 0.8824994947644882, - "p90_ms": 4.817603999981657, - "p95_ms": 4.988843502360396, - "p99_ms": 5.119068696512841, - "index_ms": 168.9095829933649 - }, - { - "repo": "laravel-framework", - "language": "php", - "chunks": 6197, - "ndcg5": 0.9839441578296375, - "ndcg10": 0.9839441578296375, - "p50_ms": 1.2023750023217872, - "p90_ms": 8.66541659925133, - "p95_ms": 11.126791799324563, - "p99_ms": 13.095891959383152, - "index_ms": 1936.7720419977559 - }, - { - "repo": "messagepack-csharp", - "language": "csharp", - "chunks": 1125, - "ndcg5": 0.8382594866301668, - "ndcg10": 0.8382594866301668, - "p50_ms": 0.935125004616566, - "p90_ms": 5.233242001850158, - "p95_ms": 5.430550404707901, - "p99_ms": 5.840177281643264, - "index_ms": 462.87883300101385 - }, - { - "repo": "model2vec", - "language": "python", - "chunks": 107, - "ndcg5": 0.6983335146725586, - "ndcg10": 0.7270859190720488, - "p50_ms": 0.445937504991889, - "p90_ms": 2.183838099881541, - "p95_ms": 2.240556244942127, - "p99_ms": 2.264211259171134, - "index_ms": 40.34541700093541 - }, - { - "repo": "monolog", - "language": "php", - "chunks": 417, - "ndcg5": 0.9055096182921145, - "ndcg10": 0.9055096182921145, - "p50_ms": 0.9090624953387305, - "p90_ms": 3.6973877096897922, - "p95_ms": 3.7062983588839415, - "p99_ms": 3.713426878239261, - "index_ms": 130.88779200916179 - }, - { - "repo": "pydantic", - "language": "python", - "chunks": 1518, - "ndcg5": 0.7086416233828772, - "ndcg10": 0.729233315404649, - "p50_ms": 0.6620834974455647, - "p90_ms": 5.207604102906771, - "p95_ms": 5.446263944031671, - "p99_ms": 5.759352796012535, - "index_ms": 485.02158299379516 - }, - { - "repo": "rack", - "language": "ruby", - "chunks": 249, - "ndcg5": 1.0, - "ndcg10": 1.0, - "p50_ms": 0.5813340103486553, - "p90_ms": 5.474224794306792, - "p95_ms": 5.812487393268383, - "p99_ms": 6.0830974724376565, - "index_ms": 103.11483399709687 - }, - { - "repo": "rails", - "language": "ruby", - "chunks": 465, - "ndcg5": 0.8182228886961148, - "ndcg10": 0.8182228886961148, - "p50_ms": 1.0228329920209944, - "p90_ms": 5.9262002032483, - "p95_ms": 5.974037601845339, - "p99_ms": 6.01230752072297, - "index_ms": 170.24212499381974 - }, - { - "repo": "redux", - "language": "javascript", - "chunks": 53, - "ndcg5": 0.8488153892673832, - "ndcg10": 0.8896918687850803, - "p50_ms": 0.38658399716950953, - "p90_ms": 1.3228832045570016, - "p95_ms": 1.6325666045304386, - "p99_ms": 1.8803133245091885, - "index_ms": 30.36975000577513 - }, - { - "repo": "requests", - "language": "python", - "chunks": 169, - "ndcg5": 0.9652540586697873, - "ndcg10": 0.9652540586697873, - "p50_ms": 0.4093329989700578, - "p90_ms": 2.73469169769669, - "p95_ms": 2.9982461499457713, - "p99_ms": 3.045049224019749, - "index_ms": 52.48629199923016 - }, - { - "repo": "sinatra", - "language": "ruby", - "chunks": 68, - "ndcg5": 0.8519331095982161, - "ndcg10": 0.8519331095982161, - "p50_ms": 0.34402049641357735, - "p90_ms": 5.025583501264919, - "p95_ms": 5.089218753710156, - "p99_ms": 5.152143752638949, - "index_ms": 29.88087499397807 - }, - { - "repo": "starlette", - "language": "python", - "chunks": 213, - "ndcg5": 0.9117150083180527, - "ndcg10": 0.9384097504464579, - "p50_ms": 0.532125006429851, - "p90_ms": 2.8864580090157688, - "p95_ms": 2.954542011138983, - "p99_ms": 3.2278748025419195, - "index_ms": 75.41920899529941 - }, - { - "repo": "tokio", - "language": "rust", - "chunks": 2730, - "ndcg5": 0.8750003941122573, - "ndcg10": 0.8982737307947403, - "p50_ms": 0.8380000072065741, - "p90_ms": 7.244300001184456, - "p95_ms": 7.474166800966486, - "p99_ms": 7.808700551977381, - "index_ms": 931.7533749999711 - }, - { - "repo": "trpc", - "language": "typescript", - "chunks": 362, - "ndcg5": 0.7276113706872143, - "ndcg10": 0.7633387548746389, - "p50_ms": 0.9107090008910745, - "p90_ms": 3.3279749943176284, - "p95_ms": 3.3500665944302455, - "p99_ms": 3.3770797174656764, - "index_ms": 122.73824999283534 - } - ] -} diff --git a/benchmarks/run_benchmark.py b/benchmarks/run_benchmark.py index 4c42a41..c19dd19 100644 --- a/benchmarks/run_benchmark.py +++ b/benchmarks/run_benchmark.py @@ -4,7 +4,8 @@ import subprocess import sys import time -from dataclasses import asdict, dataclass +from collections import defaultdict +from dataclasses import asdict, dataclass, field from pathlib import Path from typing import cast @@ -49,6 +50,7 @@ class RepoResult: p95_ms: float p99_ms: float index_ms: float + by_category: dict[str, float] = field(default_factory=dict) def _dcg(relevances: list[int]) -> float: @@ -68,11 +70,14 @@ def _ndcg_at_k(relevant_ranks: list[int], n_relevant: int, k: int) -> float: return _dcg(relevances) / ideal if ideal > 0 else 0.0 -def _evaluate(index: SembleIndex, tasks: list[Task], *, verbose: bool = False) -> tuple[float, float, list[float]]: - """Return mean NDCG@5, NDCG@10, and median query latency (ms) across all tasks.""" +def _evaluate( + index: SembleIndex, tasks: list[Task], *, verbose: bool = False +) -> tuple[float, float, list[float], dict[str, float]]: + """Return mean NDCG@5, NDCG@10, median query latency (ms), and per-category NDCG@10.""" ndcg5_sum = 0.0 ndcg10_sum = 0.0 latencies: list[float] = [] + cat_ndcg10: dict[str, list[float]] = defaultdict(list) for task in tasks: query_latencies: list[float] = [] @@ -82,18 +87,17 @@ def _evaluate(index: SembleIndex, tasks: list[Task], *, verbose: bool = False) - started = time.perf_counter() results = index.search(task.query, top_k=_DIRECT_TOP_K) query_latencies.append((time.perf_counter() - started) * 1000) - latencies.append(np.median(query_latencies)) + latencies.append(float(np.median(query_latencies))) relevant_ranks = [rank for target in task.all_relevant if (rank := _target_rank(results, target)) is not None] - n_relevant = sum( - 1 - for target in task.all_relevant - if any(target_matches_location(c.file_path, c.start_line, c.end_line, target) for c in index.chunks) - ) + # Use annotation count as ideal, not index coverage. If the indexer drops a + # target file, ideal DCG should not shrink and make NDCG look artificially good. + n_relevant = len(task.all_relevant) q_ndcg5 = _ndcg_at_k(relevant_ranks, n_relevant, 5) q_ndcg10 = _ndcg_at_k(relevant_ranks, n_relevant, 10) ndcg5_sum += q_ndcg5 ndcg10_sum += q_ndcg10 + cat_ndcg10[task.category or "unknown"].append(q_ndcg10) if verbose: cat = task.category or "?" @@ -109,7 +113,8 @@ def _evaluate(index: SembleIndex, tasks: list[Task], *, verbose: bool = False) - print(f" top-5: {top_files}", file=sys.stderr) total = len(tasks) - return ndcg5_sum / total, ndcg10_sum / total, latencies + by_category = {cat: sum(vals) / len(vals) for cat, vals in sorted(cat_ndcg10.items())} + return ndcg5_sum / total, ndcg10_sum / total, latencies, by_category def _print_summary(results: list[RepoResult]) -> None: @@ -118,12 +123,19 @@ def _print_summary(results: list[RepoResult]) -> None: by_language = {lang: [r for r in results if r.language == lang] for lang in languages} columns = ["Avg", *[lang.title() for lang in languages]] - avg_ndcg10 = sum(r.ndcg10 for r in results) / len(results) - avg_p50 = sum(r.p50_ms for r in results) / len(results) - avg_p90 = sum(r.p90_ms for r in results) / len(results) - avg_p95 = sum(r.p95_ms for r in results) / len(results) - avg_p99 = sum(r.p99_ms for r in results) / len(results) - avg_index = sum(r.index_ms for r in results) / len(results) + # Headline: mean of per-language means (one vote per language, not per repo). + lang_ndcg10 = [sum(r.ndcg10 for r in g) / len(g) for g in by_language.values()] + lang_p50 = [sum(r.p50_ms for r in g) / len(g) for g in by_language.values()] + lang_p90 = [sum(r.p90_ms for r in g) / len(g) for g in by_language.values()] + lang_p95 = [sum(r.p95_ms for r in g) / len(g) for g in by_language.values()] + lang_p99 = [sum(r.p99_ms for r in g) / len(g) for g in by_language.values()] + lang_index = [sum(r.index_ms for r in g) / len(g) for g in by_language.values()] + avg_ndcg10 = sum(lang_ndcg10) / len(lang_ndcg10) + avg_p50 = sum(lang_p50) / len(lang_p50) + avg_p90 = sum(lang_p90) / len(lang_p90) + avg_p95 = sum(lang_p95) / len(lang_p95) + avg_p99 = sum(lang_p99) / len(lang_p99) + avg_index = sum(lang_index) / len(lang_index) print(file=sys.stderr) print("By language", file=sys.stderr) @@ -168,6 +180,16 @@ def _print_summary(results: list[RepoResult]) -> None: print(f" {'q-p99':<28} " + " ".join(p99_row), file=sys.stderr) print(f" {'index':<28} " + " ".join(index_row), file=sys.stderr) + # Per-category NDCG@10 summary (flat mean across all repos). + all_categories = sorted({cat for r in results for cat in r.by_category}) + if all_categories: + print(file=sys.stderr) + print("By category (NDCG@10, mean over all repos)", file=sys.stderr) + for cat in all_categories: + vals = [r.by_category[cat] for r in results if cat in r.by_category] + mean_val = sum(vals) / len(vals) if vals else 0.0 + print(f" {cat:<16} {mean_val:.3f} (n={len(vals)} repos)", file=sys.stderr) + def _bench_quality( repo_tasks: dict[str, list[Task]], model: StaticModel, specs: dict[str, RepoSpec], *, verbose: bool = False @@ -188,7 +210,7 @@ def _bench_quality( started = time.perf_counter() index = SembleIndex.from_path(spec.benchmark_dir, model=model) index_ms = (time.perf_counter() - started) * 1000 - ndcg5, ndcg10, latencies = _evaluate(index, tasks, verbose=verbose) + ndcg5, ndcg10, latencies, by_category = _evaluate(index, tasks, verbose=verbose) p50, p90, p95, p99 = np.percentile(latencies, [50, 90, 95, 99]).tolist() result = RepoResult( repo=repo, @@ -201,6 +223,7 @@ def _bench_quality( p95_ms=p95, p99_ms=p99, index_ms=index_ms, + by_category=by_category, ) results.append(result) print( @@ -221,28 +244,52 @@ def _save_results(results: list[RepoResult]) -> None: languages = sorted({r.language for r in results}) by_language = {lang: [r for r in results if r.language == lang] for lang in languages} + # Headline: mean of per-language means (one vote per language, not per repo). + lang_means = { + lang: { + "ndcg10": sum(r.ndcg10 for r in grouped) / len(grouped), + "p50_ms": sum(r.p50_ms for r in grouped) / len(grouped), + "p90_ms": sum(r.p90_ms for r in grouped) / len(grouped), + "p95_ms": sum(r.p95_ms for r in grouped) / len(grouped), + "p99_ms": sum(r.p99_ms for r in grouped) / len(grouped), + "index_ms": sum(r.index_ms for r in grouped) / len(grouped), + } + for lang, grouped in by_language.items() + } + n_langs = len(lang_means) + + # Aggregate per-category NDCG@10 across all repos (flat mean over all tasks). + all_categories: set[str] = set() + for r in results: + all_categories.update(r.by_category) + cat_means: dict[str, float] = {} + for cat in sorted(all_categories): + vals = [r.by_category[cat] for r in results if cat in r.by_category] + cat_means[cat] = round(sum(vals) / len(vals), 4) if vals else 0.0 + output = { "sha": sha, "model": _DEFAULT_MODEL_NAME, "summary": { - "ndcg10": round(sum(r.ndcg10 for r in results) / len(results), 4), - "p50_ms": round(sum(r.p50_ms for r in results) / len(results), 3), - "p90_ms": round(sum(r.p90_ms for r in results) / len(results), 3), - "p95_ms": round(sum(r.p95_ms for r in results) / len(results), 3), - "p99_ms": round(sum(r.p99_ms for r in results) / len(results), 3), - "index_ms": round(sum(r.index_ms for r in results) / len(results), 1), + "ndcg10": round(sum(v["ndcg10"] for v in lang_means.values()) / n_langs, 4), + "p50_ms": round(sum(v["p50_ms"] for v in lang_means.values()) / n_langs, 3), + "p90_ms": round(sum(v["p90_ms"] for v in lang_means.values()) / n_langs, 3), + "p95_ms": round(sum(v["p95_ms"] for v in lang_means.values()) / n_langs, 3), + "p99_ms": round(sum(v["p99_ms"] for v in lang_means.values()) / n_langs, 3), + "index_ms": round(sum(v["index_ms"] for v in lang_means.values()) / n_langs, 1), + "by_category": cat_means, }, "by_language": { lang: { - "repos": len(grouped), - "ndcg10": round(sum(r.ndcg10 for r in grouped) / len(grouped), 4), - "p50_ms": round(sum(r.p50_ms for r in grouped) / len(grouped), 3), - "p90_ms": round(sum(r.p90_ms for r in grouped) / len(grouped), 3), - "p95_ms": round(sum(r.p95_ms for r in grouped) / len(grouped), 3), - "p99_ms": round(sum(r.p99_ms for r in grouped) / len(grouped), 3), - "index_ms": round(sum(r.index_ms for r in grouped) / len(grouped), 1), + "repos": len(by_language[lang]), + "ndcg10": round(v["ndcg10"], 4), + "p50_ms": round(v["p50_ms"], 3), + "p90_ms": round(v["p90_ms"], 3), + "p95_ms": round(v["p95_ms"], 3), + "p99_ms": round(v["p99_ms"], 3), + "index_ms": round(v["index_ms"], 1), } - for lang, grouped in by_language.items() + for lang, v in lang_means.items() }, "repos": [asdict(r) for r in results], } diff --git a/src/semble/index/file_walker.py b/src/semble/index/file_walker.py index ecb7d0b..61833cc 100644 --- a/src/semble/index/file_walker.py +++ b/src/semble/index/file_walker.py @@ -39,10 +39,15 @@ class FileType: ".swift": FileType("swift", FileTypeType.CODE), ".scala": FileType("scala", FileTypeType.CODE), ".sbt": FileType("scala", FileTypeType.CODE), + ".ex": FileType("elixir", FileTypeType.CODE), + ".exs": FileType("elixir", FileTypeType.CODE), ".dart": FileType("dart", FileTypeType.CODE), ".lua": FileType("lua", FileTypeType.CODE), ".sql": FileType("sql", FileTypeType.CODE), ".sh": FileType("bash", FileTypeType.CODE), + ".bash": FileType("bash", FileTypeType.CODE), + ".zig": FileType("zig", FileTypeType.CODE), + ".hs": FileType("haskell", FileTypeType.CODE), ".md": FileType("markdown", FileTypeType.DOCUMENT), ".yaml": FileType("yaml", FileTypeType.DOCUMENT), ".yml": FileType("yaml", FileTypeType.DOCUMENT), diff --git a/src/semble/ranking/boosting.py b/src/semble/ranking/boosting.py index 7da5d4b..994f1f4 100644 --- a/src/semble/ranking/boosting.py +++ b/src/semble/ranking/boosting.py @@ -22,7 +22,7 @@ # Alpha values for query-adaptive blending. _ALPHA_SYMBOL = 0.3 # Symbol queries: lean BM25 for exact keyword matching -_ALPHA_NL = 0.6 # Natural language queries: lean semantic for meaning matching +_ALPHA_NL = 0.5 # Natural language queries: balanced semantic + BM25 # Definition keywords used across common languages. # Case-sensitive: most language keywords are lowercase by convention, and applying @@ -71,7 +71,7 @@ _DEFINITION_BOOST_MULTIPLIER = 2.0 # Additive boost multiplier for NL queries when file stems match query words. -_STEM_BOOST_MULTIPLIER = 0.5 +_STEM_BOOST_MULTIPLIER = 1.0 # Common English stopwords excluded from file-stem matching for NL queries. _STOPWORDS = frozenset( @@ -260,5 +260,5 @@ def _boost_stem_matches( n_matches = _fuzzy_keyword_overlap(keywords, path_cache[chunk.file_path]) if n_matches > 0: match_ratio = n_matches / len(keywords) - if match_ratio >= 0.20: + if match_ratio >= 0.10: boosted[chunk] += boost * match_ratio