claude-local-docs 1.0.22 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +35 -19
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-benchmark-plots.py +336 -0
- package/scripts/queries.json +202 -0
- package/scripts/results/batch1.json +27 -0
- package/scripts/results/batch2.json +27 -0
- package/scripts/results/batch3.json +27 -0
- package/scripts/results/batch4.json +27 -0
- package/scripts/results/batch5.json +27 -0
- package/scripts/results/batch6.json +27 -0
- package/scripts/results/batch7.json +27 -0
- package/scripts/results/batch8.json +27 -0
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"email": "matteodante@users.noreply.github.com"
|
|
8
8
|
},
|
|
9
9
|
"metadata": {
|
|
10
|
-
"version": "1.0.
|
|
10
|
+
"version": "1.0.23"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
14
14
|
"name": "claude-local-docs",
|
|
15
15
|
"description": "Offline-capable documentation search for JS/TS projects. Reads your package.json, fetches docs (preferring llms.txt), and indexes them with a 4-stage RAG pipeline: vector search + BM25 keywords + RRF fusion + cross-encoder reranking. Embeddings and reranking run via TEI (HuggingFace Text Embeddings Inference) Docker containers with auto GPU detection (NVIDIA CUDA, Apple Metal).",
|
|
16
|
-
"version": "1.0.
|
|
16
|
+
"version": "1.0.23",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "matthew"
|
|
19
19
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-local-docs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"description": "Local-first Context7 alternative — indexes JS/TS dependency docs with a 4-stage RAG pipeline (vector + BM25 + RRF + cross-encoder reranking). Uses TEI Docker containers for GPU-accelerated embeddings and reranking.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "matthew",
|
package/README.md
CHANGED
|
@@ -2,22 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
A local-first alternative to Context7 for Claude Code. Indexes your project's dependency documentation **and source code** locally with production-grade semantic search. Embeddings and reranking run via TEI (HuggingFace Text Embeddings Inference) Docker containers with auto GPU detection. Supports JS/TS, Vue, Svelte, and Astro with AST-aware chunking, JSDoc extraction, and git-diff incremental indexing.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Benchmark: Semantic Search vs Grep
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
| **Resilience** | BM25-only fallback when TEI is down, retry + timeout | N/A |
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
Tested on a real-world TypeScript monorepo (957 files, 4,484 indexed code chunks) with 187 generic queries across 16 categories (authentication, database, caching, error handling, etc.).
|
|
10
|
+
|
|
11
|
+
**How scores are computed:**
|
|
12
|
+
- **Semantic search** — scored 0-10 based on the top relevance score returned by the search pipeline (`top_relevance * 9.5 + result_count_bonus`). Zero results = zero score.
|
|
13
|
+
- **Grep** — scored 0-10 using a log-scale penalty for noise (`7.5 - 1.5 * log10(matching_files)`). Few focused matches score high; hundreds of files score low. Capped at 7.5 since grep always requires manual review.
|
|
14
|
+
- **Combined** — `max(Semantic, Grep)` per query. Represents what Claude Code gets when both tools are available.
|
|
15
|
+
|
|
16
|
+
**How the benchmark was run:**
|
|
17
|
+
1. 200 queries were written to cover common code search patterns that apply to any codebase (e.g., "How does error handling work?", "Where are background jobs defined?").
|
|
18
|
+
2. 8 agents ran in parallel (25 queries each). Each query was run through `search_code` (this plugin's MCP tool) and `rg` (ripgrep, same as Claude Code's built-in Grep). The MCP tool returns a relevance score (0-1) and result count; grep returns a file count.
|
|
19
|
+
3. Scores were computed automatically from raw metrics — no manual judgment involved.
|
|
21
20
|
|
|
22
21
|
## Requirements
|
|
23
22
|
|
|
@@ -82,6 +81,23 @@ npm run build
|
|
|
82
81
|
./start-tei.sh
|
|
83
82
|
```
|
|
84
83
|
|
|
84
|
+
## Why not Context7?
|
|
85
|
+
|
|
86
|
+
| | **claude-local-docs** | **Context7** |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| **Runs where** | Your machine (TEI Docker) | Upstash cloud servers |
|
|
89
|
+
| **Privacy** | Docs never leave your machine | Queries sent to cloud API |
|
|
90
|
+
| **Rate limits** | None | API-dependent |
|
|
91
|
+
| **Offline** | Full search works offline | Requires internet |
|
|
92
|
+
| **GPU accelerated** | NVIDIA CUDA / Apple Metal | N/A |
|
|
93
|
+
| **Search quality** | 4-stage RAG (vector + BM25 + RRF + cross-encoder reranking) | Single-stage retrieval |
|
|
94
|
+
| **Doc sources** | Prefers llms.txt, falls back to official docs | Pre-indexed source repos |
|
|
95
|
+
| **Code search** | Semantic AST-level search via Qodo-Embed-1-1.5B | N/A |
|
|
96
|
+
| **Framework support** | JS, TS, Vue, Svelte, Astro (SFC script extraction) | N/A |
|
|
97
|
+
| **Scope** | Your project's actual dependencies + source code | Any library |
|
|
98
|
+
| **Monorepo** | Detects pnpm/npm/yarn workspaces, resolves catalogs | N/A |
|
|
99
|
+
| **Resilience** | Retry with exponential backoff + 30s timeout on TEI calls | N/A |
|
|
100
|
+
|
|
85
101
|
## How it works
|
|
86
102
|
|
|
87
103
|
### Documentation search
|
|
@@ -187,7 +203,7 @@ ML inference runs in TEI (HuggingFace Text Embeddings Inference) containers:
|
|
|
187
203
|
| tei-rerank | `:39282` | `cross-encoder/ms-marco-MiniLM-L-6-v2` | Cross-encoder reranking (docs + code) |
|
|
188
204
|
| tei-code-embed | `:39283` | `Qodo/Qodo-Embed-1-1.5B` | Code embeddings (1536-dim, 68.5 CoIR) |
|
|
189
205
|
|
|
190
|
-
All TEI communication goes through a shared `TeiClient` class (`src/tei-client.ts`) with automatic retry (2 attempts, exponential backoff), 30s timeout, and batch splitting.
|
|
206
|
+
All TEI communication goes through a shared `TeiClient` class (`src/tei-client.ts`) with automatic retry (2 attempts, exponential backoff), 30s timeout, and batch splitting. TEI containers must be running for both indexing and search — there is no fallback mode.
|
|
191
207
|
|
|
192
208
|
### Starting TEI
|
|
193
209
|
|
|
@@ -215,7 +231,7 @@ docker compose -f docker-compose.yml -f docker-compose.nvidia.yml up -d
|
|
|
215
231
|
|
|
216
232
|
## Search pipeline
|
|
217
233
|
|
|
218
|
-
|
|
234
|
+
Doc search uses a 4-stage RAG pipeline. Code search adds a 5th file-path boost signal:
|
|
219
235
|
|
|
220
236
|
| Stage | Technology | Purpose |
|
|
221
237
|
|---|---|---|
|
|
@@ -234,7 +250,7 @@ Both doc search and code search use the same 4-stage RAG pipeline:
|
|
|
234
250
|
- **File-path boost**: Queries containing file names (e.g., "rrf.ts") get a third RRF signal boosting matching files
|
|
235
251
|
- **Neighbor expansion**: Adjacent chunks from the same file are merged for fuller context
|
|
236
252
|
- **Incremental indexing**: Git-diff based (fast, ~50-100ms), falls back to SHA-256 hashing for non-git projects
|
|
237
|
-
- **
|
|
253
|
+
- **No fallback**: TEI must be running — search errors if containers are down
|
|
238
254
|
- **SFC support**: Vue `<script>`/`<script setup>`, Svelte `<script>`/`<script context="module">`, Astro `---` frontmatter + `<script>` tags
|
|
239
255
|
|
|
240
256
|
## Storage
|
|
@@ -323,7 +339,7 @@ claude-local-docs/
|
|
|
323
339
|
│ ├── reranker.ts # TEI cross-encoder reranking
|
|
324
340
|
│ ├── store.ts # LanceDB "docs" table + metadata
|
|
325
341
|
│ ├── code-indexer.ts # AST chunking (tree-sitter) + Qodo-Embed embeddings
|
|
326
|
-
│ ├── code-search.ts # Code search pipeline (
|
|
342
|
+
│ ├── code-search.ts # Code search pipeline (5-stage + neighbor expansion)
|
|
327
343
|
│ ├── code-store.ts # LanceDB "code" table + file hash tracking + schema migration
|
|
328
344
|
│ ├── file-walker.ts # Project file discovery + .gitignore + git-diff
|
|
329
345
|
│ ├── sfc-extractor.ts # Vue/Svelte/Astro <script> block extraction
|
package/dist/index.js
CHANGED
|
@@ -462,6 +462,17 @@ server.registerTool("index_codebase", {
|
|
|
462
462
|
strategy = "git-diff";
|
|
463
463
|
gitChangedPaths = new Set([...gitChanges.modified, ...gitChanges.added]);
|
|
464
464
|
}
|
|
465
|
+
// Backfill: include any walkable file not yet in metadata (never indexed).
|
|
466
|
+
// This handles partial first runs (e.g. with includePaths) and newly
|
|
467
|
+
// created files that pre-date lastIndexedCommit.
|
|
468
|
+
if (strategy === "git-diff" && gitChangedPaths) {
|
|
469
|
+
const indexedPaths = new Set(metadata.files.map(f => f.filePath));
|
|
470
|
+
for (const file of files) {
|
|
471
|
+
if (!indexedPaths.has(file.relativePath)) {
|
|
472
|
+
gitChangedPaths.add(file.relativePath);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
465
476
|
}
|
|
466
477
|
else {
|
|
467
478
|
// No lastIndexedCommit — first run with hash strategy. Still capture HEAD.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-local-docs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"description": "Local-first Context7 alternative — indexes JS/TS dependency docs with a 4-stage RAG pipeline. Uses TEI (Text Embeddings Inference) Docker containers for embeddings and reranking.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Single benchmark dashboard: Semantic Search vs Grep vs Combined
|
|
3
|
+
Tested on a real-world TypeScript monorepo (957 files, 4484 code chunks).
|
|
4
|
+
200 queries across 15 categories, scored automatically from raw search metrics.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import math
|
|
9
|
+
import matplotlib.pyplot as plt
|
|
10
|
+
import matplotlib.gridspec as gridspec
|
|
11
|
+
from matplotlib.patches import FancyBboxPatch
|
|
12
|
+
import numpy as np
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
SCRIPT_DIR = Path(__file__).resolve().parent
|
|
16
|
+
OUT = SCRIPT_DIR.parent / "assets"
|
|
17
|
+
OUT.mkdir(exist_ok=True)
|
|
18
|
+
|
|
19
|
+
# ── Excluded queries ──────────────────────────────────────────────────
|
|
20
|
+
# Testing category (176-185): no tests in benchmark codebase
|
|
21
|
+
# Individual queries where both tools returned 0 (feature doesn't exist):
|
|
22
|
+
# 25 (2FA), 47 (connection pooling), 119 (dead letter queues)
|
|
23
|
+
EXCLUDED_IDS = {25, 47, 119} | set(range(176, 186))
|
|
24
|
+
EXCLUDED_CATS = {"Testing"}
|
|
25
|
+
|
|
26
|
+
# ── Category short labels ─────────────────────────────────────────────
|
|
27
|
+
CAT_SHORT = {
|
|
28
|
+
"Bootstrapping": "Bootstrap",
|
|
29
|
+
"Authentication": "Auth",
|
|
30
|
+
"Error Handling": "Errors",
|
|
31
|
+
"Database": "Database",
|
|
32
|
+
"API Routes": "API",
|
|
33
|
+
"Validation": "Validation",
|
|
34
|
+
"Configuration": "Config",
|
|
35
|
+
"Logging": "Logging",
|
|
36
|
+
"Background Jobs": "Jobs",
|
|
37
|
+
"Caching": "Caching",
|
|
38
|
+
"Email & Notifications": "Notifs",
|
|
39
|
+
"State Management": "State",
|
|
40
|
+
"Types & Interfaces": "Types",
|
|
41
|
+
"Security": "Security",
|
|
42
|
+
"i18n & Localization": "i18n",
|
|
43
|
+
"Payments": "Payments",
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# ── Palette ──────────────────────────────────────────────────────────
|
|
47
|
+
C_SEM = "#8B5CF6"
|
|
48
|
+
C_GREP = "#10B981"
|
|
49
|
+
C_COMB = "#F59E0B"
|
|
50
|
+
C_BG = "#0F172A"
|
|
51
|
+
C_CARD = "#1E293B"
|
|
52
|
+
C_TEXT = "#F1F5F9"
|
|
53
|
+
C_MUTED = "#94A3B8"
|
|
54
|
+
C_GRID = "#334155"
|
|
55
|
+
|
|
56
|
+
plt.rcParams.update({
|
|
57
|
+
"figure.facecolor": C_BG,
|
|
58
|
+
"axes.facecolor": C_CARD,
|
|
59
|
+
"axes.edgecolor": C_GRID,
|
|
60
|
+
"axes.labelcolor": C_TEXT,
|
|
61
|
+
"text.color": C_TEXT,
|
|
62
|
+
"xtick.color": C_MUTED,
|
|
63
|
+
"ytick.color": C_MUTED,
|
|
64
|
+
"grid.color": C_GRID,
|
|
65
|
+
"grid.alpha": 0.25,
|
|
66
|
+
"font.family": "sans-serif",
|
|
67
|
+
"font.size": 13,
|
|
68
|
+
"savefig.dpi": 250,
|
|
69
|
+
"savefig.facecolor": C_BG,
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# ── Scoring functions ────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
def semantic_score(top: float, count: int) -> float:
|
|
76
|
+
"""Score 0-10 for MCP semantic search.
|
|
77
|
+
|
|
78
|
+
High relevance score + multiple results = high score.
|
|
79
|
+
Zero results = zero score.
|
|
80
|
+
"""
|
|
81
|
+
if count == 0:
|
|
82
|
+
return 0.0
|
|
83
|
+
base = top * 9.5
|
|
84
|
+
bonus = min(count, 5) / 5 * 0.5
|
|
85
|
+
return round(min(10.0, base + bonus), 1)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def grep_score(files: int) -> float:
|
|
89
|
+
"""Score 0-10 for grep keyword search.
|
|
90
|
+
|
|
91
|
+
Uses log scale: few focused files = good, hundreds of files = noisy.
|
|
92
|
+
Grep always requires manual file review, so max is 7.5.
|
|
93
|
+
"""
|
|
94
|
+
if files == 0:
|
|
95
|
+
return 0.0
|
|
96
|
+
score = 7.5 - math.log10(max(files, 1)) * 1.5
|
|
97
|
+
return round(max(2.0, min(7.5, score)), 1)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# ── Load data ────────────────────────────────────────────────────────
|
|
101
|
+
|
|
102
|
+
def load_data():
|
|
103
|
+
"""Load queries + batch results, compute scores, group by category."""
|
|
104
|
+
|
|
105
|
+
# Load query metadata
|
|
106
|
+
with open(SCRIPT_DIR / "queries.json") as f:
|
|
107
|
+
queries = {q["id"]: q for q in json.load(f)}
|
|
108
|
+
|
|
109
|
+
# Load all batch results
|
|
110
|
+
results_dir = SCRIPT_DIR / "results"
|
|
111
|
+
raw = {}
|
|
112
|
+
for batch_file in sorted(results_dir.glob("batch*.json")):
|
|
113
|
+
with open(batch_file) as f:
|
|
114
|
+
for entry in json.load(f):
|
|
115
|
+
raw[entry["id"]] = entry
|
|
116
|
+
|
|
117
|
+
# Compute per-query scores
|
|
118
|
+
scored = []
|
|
119
|
+
for qid, entry in sorted(raw.items()):
|
|
120
|
+
if qid in EXCLUDED_IDS:
|
|
121
|
+
continue
|
|
122
|
+
meta = queries.get(qid)
|
|
123
|
+
if not meta or meta["cat"] in EXCLUDED_CATS:
|
|
124
|
+
continue
|
|
125
|
+
|
|
126
|
+
s = semantic_score(entry["mcp_top"], entry["mcp_count"])
|
|
127
|
+
g = grep_score(entry["grep_files"])
|
|
128
|
+
c = round(max(s, g), 1)
|
|
129
|
+
|
|
130
|
+
scored.append({
|
|
131
|
+
"id": qid,
|
|
132
|
+
"cat": meta["cat"],
|
|
133
|
+
"q": meta["q"],
|
|
134
|
+
"sem": s,
|
|
135
|
+
"grep": g,
|
|
136
|
+
"combined": c,
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
# Group by category (preserve order from queries.json)
|
|
140
|
+
cat_order = []
|
|
141
|
+
cat_data = {}
|
|
142
|
+
for item in scored:
|
|
143
|
+
cat = item["cat"]
|
|
144
|
+
if cat not in cat_data:
|
|
145
|
+
cat_order.append(cat)
|
|
146
|
+
cat_data[cat] = {"sem": [], "grep": [], "combined": []}
|
|
147
|
+
cat_data[cat]["sem"].append(item["sem"])
|
|
148
|
+
cat_data[cat]["grep"].append(item["grep"])
|
|
149
|
+
cat_data[cat]["combined"].append(item["combined"])
|
|
150
|
+
|
|
151
|
+
# Average per category
|
|
152
|
+
categories = []
|
|
153
|
+
for cat in cat_order:
|
|
154
|
+
d = cat_data[cat]
|
|
155
|
+
categories.append({
|
|
156
|
+
"name": cat,
|
|
157
|
+
"short": CAT_SHORT.get(cat, cat),
|
|
158
|
+
"sem": round(np.mean(d["sem"]), 1),
|
|
159
|
+
"grep": round(np.mean(d["grep"]), 1),
|
|
160
|
+
"combined": round(np.mean(d["combined"]), 1),
|
|
161
|
+
"count": len(d["sem"]),
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
return scored, categories
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# ── Build dashboard ──────────────────────────────────────────────────
|
|
168
|
+
|
|
169
|
+
def build():
|
|
170
|
+
scored, categories = load_data()
|
|
171
|
+
|
|
172
|
+
all_sem = [q["sem"] for q in scored]
|
|
173
|
+
all_grep = [q["grep"] for q in scored]
|
|
174
|
+
all_comb = [q["combined"] for q in scored]
|
|
175
|
+
|
|
176
|
+
fig = plt.figure(figsize=(20, 14))
|
|
177
|
+
|
|
178
|
+
gs = gridspec.GridSpec(
|
|
179
|
+
2, 3, figure=fig,
|
|
180
|
+
height_ratios=[1, 1.8],
|
|
181
|
+
width_ratios=[1.1, 0.85, 1.2],
|
|
182
|
+
hspace=0.32, wspace=0.32,
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
# ─── TOP-LEFT: Overall scores ────────────────────────────────
|
|
186
|
+
ax1 = fig.add_subplot(gs[0, 0])
|
|
187
|
+
avg_s = round(np.mean(all_sem), 1)
|
|
188
|
+
avg_g = round(np.mean(all_grep), 1)
|
|
189
|
+
avg_c = round(np.mean(all_comb), 1)
|
|
190
|
+
labels = ["Grep", "Semantic\nSearch", "Both\nTogether"]
|
|
191
|
+
vals = [avg_g, avg_s, avg_c]
|
|
192
|
+
colors = [C_GREP, C_SEM, C_COMB]
|
|
193
|
+
|
|
194
|
+
bars = ax1.bar(labels, vals, color=colors, width=0.6, alpha=0.9,
|
|
195
|
+
edgecolor="white", linewidth=0.4, zorder=3)
|
|
196
|
+
for b, v in zip(bars, vals):
|
|
197
|
+
ax1.text(b.get_x() + b.get_width()/2, v + 0.15,
|
|
198
|
+
f"{v:.1f}", ha="center", fontsize=22, fontweight="bold")
|
|
199
|
+
ax1.set_ylim(0, 10)
|
|
200
|
+
ax1.set_title("Average Score", fontsize=17, fontweight="bold", pad=12)
|
|
201
|
+
ax1.set_ylabel("Score (0\u201310)", fontsize=12)
|
|
202
|
+
ax1.grid(axis="y", zorder=0)
|
|
203
|
+
ax1.tick_params(axis="x", labelsize=12)
|
|
204
|
+
|
|
205
|
+
pct = (avg_c - max(avg_s, avg_g)) / max(avg_s, avg_g) * 100
|
|
206
|
+
if pct > 0:
|
|
207
|
+
ax1.annotate(
|
|
208
|
+
f"+{pct:.0f}%", xy=(2, avg_c), xytext=(2.42, 9.0),
|
|
209
|
+
fontsize=17, fontweight="bold", color=C_COMB,
|
|
210
|
+
arrowprops=dict(arrowstyle="-|>", color=C_COMB, lw=2.5),
|
|
211
|
+
ha="center",
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
# ─── TOP-CENTER: Win rate donut ──────────────────────────────
|
|
215
|
+
ax2 = fig.add_subplot(gs[0, 1])
|
|
216
|
+
sw = sum(1 for s, g in zip(all_sem, all_grep) if s > g + 0.5)
|
|
217
|
+
gw = sum(1 for s, g in zip(all_sem, all_grep) if g > s + 0.5)
|
|
218
|
+
tie = len(scored) - sw - gw
|
|
219
|
+
|
|
220
|
+
sizes = [sw, gw]
|
|
221
|
+
pie_labels = [f"Semantic\nwins ({sw})", f"Grep\nwins ({gw})"]
|
|
222
|
+
pie_colors = [C_SEM, C_GREP]
|
|
223
|
+
if tie > 0:
|
|
224
|
+
sizes.append(tie)
|
|
225
|
+
pie_labels.append(f"Tie ({tie})")
|
|
226
|
+
pie_colors.append(C_GRID)
|
|
227
|
+
|
|
228
|
+
wedges, texts, autos = ax2.pie(
|
|
229
|
+
sizes,
|
|
230
|
+
labels=pie_labels,
|
|
231
|
+
colors=pie_colors,
|
|
232
|
+
autopct="%1.0f%%",
|
|
233
|
+
startangle=90, pctdistance=0.72,
|
|
234
|
+
textprops={"fontsize": 11, "fontweight": "bold", "color": C_TEXT},
|
|
235
|
+
wedgeprops={"edgecolor": C_BG, "linewidth": 3},
|
|
236
|
+
)
|
|
237
|
+
for a in autos:
|
|
238
|
+
a.set_fontsize(14)
|
|
239
|
+
a.set_fontweight("bold")
|
|
240
|
+
a.set_color("white")
|
|
241
|
+
ax2.add_artist(plt.Circle((0, 0), 0.45, fc=C_BG))
|
|
242
|
+
ax2.text(0, 0.05, f"{len(scored)}", fontsize=28, fontweight="bold",
|
|
243
|
+
ha="center", va="center")
|
|
244
|
+
ax2.text(0, -0.14, "queries", fontsize=11, ha="center", color=C_MUTED)
|
|
245
|
+
ax2.set_title("Win Rate", fontsize=17, fontweight="bold", pad=12)
|
|
246
|
+
|
|
247
|
+
# ─── TOP-RIGHT: Methodology card ─────────────────────────────
|
|
248
|
+
ax3 = fig.add_subplot(gs[0, 2])
|
|
249
|
+
ax3.axis("off")
|
|
250
|
+
ax3.add_patch(FancyBboxPatch(
|
|
251
|
+
(0.02, 0.02), 0.96, 0.96,
|
|
252
|
+
boxstyle="round,pad=0.04", transform=ax3.transAxes,
|
|
253
|
+
fc=C_CARD, ec=C_GRID, linewidth=1.5,
|
|
254
|
+
))
|
|
255
|
+
|
|
256
|
+
lines = [
|
|
257
|
+
("Benchmark Methodology", C_TEXT, 16, "bold"),
|
|
258
|
+
("", C_TEXT, 6, "normal"),
|
|
259
|
+
(f"Codebase 957 files | 4,484 indexed chunks", C_MUTED, 12, "normal"),
|
|
260
|
+
(f"Queries {len(scored)} across {len(categories)} categories", C_MUTED, 12, "normal"),
|
|
261
|
+
("", C_TEXT, 6, "normal"),
|
|
262
|
+
("Scoring:", C_TEXT, 13, "bold"),
|
|
263
|
+
(" Semantic top_relevance * 9.5 + result_bonus", C_MUTED, 11, "normal"),
|
|
264
|
+
(" Grep 7.5 - 1.5 * log10(matching_files)", C_MUTED, 11, "normal"),
|
|
265
|
+
(" Combined max(Semantic, Grep) per query", C_COMB, 11, "bold"),
|
|
266
|
+
("", C_TEXT, 6, "normal"),
|
|
267
|
+
("Semantic: high when results are relevant", C_SEM, 11.5, "normal"),
|
|
268
|
+
("Grep: penalized by noise (too many matches)", C_GREP, 11.5, "normal"),
|
|
269
|
+
]
|
|
270
|
+
y_pos = 0.92
|
|
271
|
+
for text, color, size, weight in lines:
|
|
272
|
+
if text == "":
|
|
273
|
+
y_pos -= 0.035
|
|
274
|
+
continue
|
|
275
|
+
ax3.text(0.08, y_pos, text, transform=ax3.transAxes,
|
|
276
|
+
fontsize=size, fontweight=weight, color=color,
|
|
277
|
+
fontfamily="monospace")
|
|
278
|
+
y_pos -= 0.075
|
|
279
|
+
|
|
280
|
+
# ─── BOTTOM: Per-category scores (full width) ───────────────
|
|
281
|
+
ax4 = fig.add_subplot(gs[1, :])
|
|
282
|
+
|
|
283
|
+
cat_labels = [c["short"] for c in categories]
|
|
284
|
+
cat_sem = [c["sem"] for c in categories]
|
|
285
|
+
cat_grep = [c["grep"] for c in categories]
|
|
286
|
+
cat_comb = [c["combined"] for c in categories]
|
|
287
|
+
n_cats = len(categories)
|
|
288
|
+
|
|
289
|
+
x = np.arange(n_cats)
|
|
290
|
+
w = 0.25
|
|
291
|
+
|
|
292
|
+
bars_g = ax4.bar(x - w, cat_grep, w, color=C_GREP, alpha=0.88,
|
|
293
|
+
label="Grep (keyword search)", zorder=3)
|
|
294
|
+
bars_s = ax4.bar(x, cat_sem, w, color=C_SEM, alpha=0.88,
|
|
295
|
+
label="Semantic Search (this plugin)", zorder=3)
|
|
296
|
+
bars_c = ax4.bar(x + w, cat_comb, w, color=C_COMB, alpha=0.88,
|
|
297
|
+
label="Both Together", zorder=3)
|
|
298
|
+
|
|
299
|
+
# Value labels on bars
|
|
300
|
+
for bar_group in [bars_g, bars_s, bars_c]:
|
|
301
|
+
for bar in bar_group:
|
|
302
|
+
h = bar.get_height()
|
|
303
|
+
if h >= 0.5:
|
|
304
|
+
ax4.text(bar.get_x() + bar.get_width()/2, h + 0.1,
|
|
305
|
+
f"{h:.1f}", ha="center", va="bottom",
|
|
306
|
+
fontsize=8.5, fontweight="bold", color=C_TEXT)
|
|
307
|
+
|
|
308
|
+
ax4.set_xticks(x)
|
|
309
|
+
ax4.set_xticklabels(cat_labels, fontsize=11.5, rotation=30, ha="right")
|
|
310
|
+
ax4.set_ylabel("Average Score (0\u201310)", fontsize=12)
|
|
311
|
+
ax4.set_ylim(0, 10.5)
|
|
312
|
+
ax4.grid(axis="y", zorder=0)
|
|
313
|
+
ax4.set_title("Score by Category", fontsize=17, fontweight="bold", pad=14)
|
|
314
|
+
ax4.legend(loc="upper right", fontsize=11, framealpha=0.9,
|
|
315
|
+
facecolor=C_CARD, edgecolor=C_GRID)
|
|
316
|
+
|
|
317
|
+
# Query count annotations below each category
|
|
318
|
+
for i, cat in enumerate(categories):
|
|
319
|
+
ax4.text(i, -0.6, f"n={cat['count']}", ha="center",
|
|
320
|
+
fontsize=8, color=C_MUTED)
|
|
321
|
+
|
|
322
|
+
# ─── Suptitle ────────────────────────────────────────────────
|
|
323
|
+
fig.suptitle(
|
|
324
|
+
"Semantic Code Search vs Grep \u2014 Benchmark Results",
|
|
325
|
+
fontsize=22, fontweight="bold", y=0.99, color=C_TEXT,
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
fig.savefig(OUT / "benchmark.png", bbox_inches="tight", pad_inches=0.4)
|
|
329
|
+
plt.close(fig)
|
|
330
|
+
print(f" -> benchmark.png saved to {OUT / 'benchmark.png'}")
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
if __name__ == "__main__":
|
|
334
|
+
print("Generating benchmark dashboard...")
|
|
335
|
+
build()
|
|
336
|
+
print("Done!")
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id":1,"cat":"Bootstrapping","q":"How does the application start up?","grep":"bootstrap|startup|init.*app|createApp|createServer|main"},
|
|
3
|
+
{"id":2,"cat":"Bootstrapping","q":"What is the main entry point of the app?","grep":"entry|main|index\\.ts|app\\.ts"},
|
|
4
|
+
{"id":3,"cat":"Bootstrapping","q":"Where is the server created and started?","grep":"listen|createServer|serve|app\\.use"},
|
|
5
|
+
{"id":4,"cat":"Bootstrapping","q":"What runs during application initialization?","grep":"init|setup|bootstrap|onReady|register"},
|
|
6
|
+
{"id":5,"cat":"Bootstrapping","q":"How are modules or plugins registered?","grep":"register|plugin|module|use\\("},
|
|
7
|
+
{"id":6,"cat":"Bootstrapping","q":"Where are global middleware configured?","grep":"middleware|use\\(|intercept|beforeAll"},
|
|
8
|
+
{"id":7,"cat":"Bootstrapping","q":"How is the runtime environment detected?","grep":"NODE_ENV|process\\.env|environment|isDev|isProd"},
|
|
9
|
+
{"id":8,"cat":"Bootstrapping","q":"What happens before the app is ready to serve?","grep":"ready|loaded|started|listening|warm"},
|
|
10
|
+
{"id":9,"cat":"Bootstrapping","q":"Where are graceful shutdown handlers?","grep":"shutdown|SIGTERM|SIGINT|close|cleanup|exit"},
|
|
11
|
+
{"id":10,"cat":"Bootstrapping","q":"How are database connections established at startup?","grep":"connect|connection|pool|database.*init"},
|
|
12
|
+
{"id":11,"cat":"Bootstrapping","q":"Where is dependency injection configured?","grep":"inject|container|provider|factory|singleton"},
|
|
13
|
+
{"id":12,"cat":"Bootstrapping","q":"How are scheduled tasks registered at boot?","grep":"schedule|cron|interval|register.*job|repeat"},
|
|
14
|
+
{"id":13,"cat":"Bootstrapping","q":"What order do services initialize in?","grep":"init|order|priority|depends|after|before"},
|
|
15
|
+
{"id":14,"cat":"Authentication","q":"How does user login work?","grep":"login|signIn|authenticate|credentials"},
|
|
16
|
+
{"id":15,"cat":"Authentication","q":"Where are passwords hashed and verified?","grep":"hash|bcrypt|argon|password|compare|verify"},
|
|
17
|
+
{"id":16,"cat":"Authentication","q":"How are user sessions created?","grep":"session|createSession|cookie|token.*create"},
|
|
18
|
+
{"id":17,"cat":"Authentication","q":"What happens when a JWT token expires?","grep":"expire|expir|refresh.*token|renew|ttl"},
|
|
19
|
+
{"id":18,"cat":"Authentication","q":"Where is OAuth or social login implemented?","grep":"oauth|google|github|social|callback.*auth"},
|
|
20
|
+
{"id":19,"cat":"Authentication","q":"How are protected routes guarded?","grep":"protect|guard|auth.*middleware|requireAuth|isAuthenticated"},
|
|
21
|
+
{"id":20,"cat":"Authentication","q":"How does the logout flow work?","grep":"logout|signOut|destroySession|clearCookie|revoke"},
|
|
22
|
+
{"id":21,"cat":"Authentication","q":"Where is role-based access control implemented?","grep":"role|permission|rbac|authorize|isAdmin|hasRole"},
|
|
23
|
+
{"id":22,"cat":"Authentication","q":"How are API keys validated?","grep":"apiKey|api.key|bearer|authorization.*header"},
|
|
24
|
+
{"id":23,"cat":"Authentication","q":"Where is the authentication configuration?","grep":"auth.*config|secret|AUTH_SECRET|jwt.*config"},
|
|
25
|
+
{"id":24,"cat":"Authentication","q":"How are auth tokens stored on the client?","grep":"localStorage|sessionStorage|secureStore|cookie|storage.*token"},
|
|
26
|
+
{"id":25,"cat":"Authentication","q":"How is two-factor authentication handled?","grep":"2fa|totp|mfa|two.factor|otp"},
|
|
27
|
+
{"id":26,"cat":"Authentication","q":"What user data is stored in the session?","grep":"session.*data|user.*session|ctx\\.user|req\\.user"},
|
|
28
|
+
{"id":27,"cat":"Authentication","q":"How are auth errors communicated to the client?","grep":"UNAUTHORIZED|401|auth.*error|forbidden|403"},
|
|
29
|
+
{"id":28,"cat":"Error Handling","q":"Where is the global error handler?","grep":"error.*handler|onError|handleError|catch.*all"},
|
|
30
|
+
{"id":29,"cat":"Error Handling","q":"How are unhandled promise rejections caught?","grep":"unhandledRejection|uncaughtException|process\\.on"},
|
|
31
|
+
{"id":30,"cat":"Error Handling","q":"How are validation errors formatted for the client?","grep":"validation.*error|BAD_REQUEST|400|format.*error"},
|
|
32
|
+
{"id":31,"cat":"Error Handling","q":"Where are custom error classes defined?","grep":"extends.*Error|class.*Error|CustomError|AppError"},
|
|
33
|
+
{"id":32,"cat":"Error Handling","q":"How does the app handle database connection failures?","grep":"connection.*error|reconnect|retry.*connect|pool.*error"},
|
|
34
|
+
{"id":33,"cat":"Error Handling","q":"What error codes or error types exist?","grep":"ErrorCode|ERROR_|error.*type|error.*kind"},
|
|
35
|
+
{"id":34,"cat":"Error Handling","q":"How are errors logged and reported?","grep":"logError|captureException|Sentry|error.*log|reportError"},
|
|
36
|
+
{"id":35,"cat":"Error Handling","q":"Where are error boundaries in the UI?","grep":"ErrorBoundary|error.*boundary|fallback.*error|componentDidCatch"},
|
|
37
|
+
{"id":36,"cat":"Error Handling","q":"How are async errors caught in route handlers?","grep":"try.*catch|asyncHandler|wrapAsync|catchAsync"},
|
|
38
|
+
{"id":37,"cat":"Error Handling","q":"What retry logic exists for failed operations?","grep":"retry|backoff|attempt|maxRetries|retryCount"},
|
|
39
|
+
{"id":38,"cat":"Error Handling","q":"How are 404 not-found errors handled?","grep":"404|NOT_FOUND|notFound|fallback.*route"},
|
|
40
|
+
{"id":39,"cat":"Error Handling","q":"How does the app handle timeout errors?","grep":"timeout|TIMEOUT|deadline|abortController|signal"},
|
|
41
|
+
{"id":40,"cat":"Error Handling","q":"Where are user-friendly error messages defined?","grep":"error.*message|toast.*error|alert.*error|errorText"},
|
|
42
|
+
{"id":41,"cat":"Error Handling","q":"How are error stack traces handled in production?","grep":"stack.*trace|stackTrace|production.*error|sanitize.*error"},
|
|
43
|
+
{"id":42,"cat":"Database","q":"How does the app connect to the database?","grep":"database.*url|DATABASE_URL|connect|createClient|prisma"},
|
|
44
|
+
{"id":43,"cat":"Database","q":"Where are database queries written?","grep":"findMany|findFirst|query|select.*from|where\\("},
|
|
45
|
+
{"id":44,"cat":"Database","q":"How are database transactions used?","grep":"transaction|\\$transaction|BEGIN|COMMIT|ROLLBACK"},
|
|
46
|
+
{"id":45,"cat":"Database","q":"Where is the database schema defined?","grep":"schema|model|table|entity|createTable"},
|
|
47
|
+
{"id":46,"cat":"Database","q":"How are database migrations managed?","grep":"migration|migrate|up.*down|alter|addColumn"},
|
|
48
|
+
{"id":47,"cat":"Database","q":"How are database connections pooled?","grep":"pool|connectionLimit|maxConnections|poolSize"},
|
|
49
|
+
{"id":48,"cat":"Database","q":"Where are database seeds or test data?","grep":"seed|fixture|factory|mock.*data|testData"},
|
|
50
|
+
{"id":49,"cat":"Database","q":"How are related records fetched together?","grep":"include|populate|join|eager|relations|with\\("},
|
|
51
|
+
{"id":50,"cat":"Database","q":"How are soft deletes implemented?","grep":"softDelete|deletedAt|isDeleted|paranoid|where.*null"},
|
|
52
|
+
{"id":51,"cat":"Database","q":"Where is the database client exported?","grep":"export.*db|export.*prisma|export.*client|getDb"},
|
|
53
|
+
{"id":52,"cat":"Database","q":"How are database indexes defined?","grep":"index|@@index|createIndex|unique|@@unique"},
|
|
54
|
+
{"id":53,"cat":"Database","q":"What database constraints exist?","grep":"constraint|unique|check|foreign.*key|references"},
|
|
55
|
+
{"id":54,"cat":"Database","q":"How is raw SQL executed when needed?","grep":"rawQuery|\\$queryRaw|executeRaw|sql\\`|query\\("},
|
|
56
|
+
{"id":55,"cat":"Database","q":"How are database enums defined and used?","grep":"enum|Enum|ENUM|enumValues"},
|
|
57
|
+
{"id":56,"cat":"API Routes","q":"What API endpoints are available?","grep":"router|route|get\\(|post\\(|put\\(|delete\\(|patch\\("},
|
|
58
|
+
{"id":57,"cat":"API Routes","q":"How are routes organized into modules?","grep":"Router|createRouter|router\\.use|prefix|namespace"},
|
|
59
|
+
{"id":58,"cat":"API Routes","q":"Where is request body parsing configured?","grep":"bodyParser|json\\(\\)|urlencoded|parse.*body"},
|
|
60
|
+
{"id":59,"cat":"API Routes","q":"How are API responses formatted consistently?","grep":"response|json\\(|send\\(|format.*response|serialize"},
|
|
61
|
+
{"id":60,"cat":"API Routes","q":"Where are webhook handlers defined?","grep":"webhook|hook|callback.*url|event.*handler"},
|
|
62
|
+
{"id":61,"cat":"API Routes","q":"How is pagination implemented?","grep":"paginate|pagination|offset|limit|cursor|page|skip|take"},
|
|
63
|
+
{"id":62,"cat":"API Routes","q":"How are query parameters validated in routes?","grep":"query.*param|searchParams|req\\.query|input.*z\\."},
|
|
64
|
+
{"id":63,"cat":"API Routes","q":"What CORS configuration exists?","grep":"cors|CORS|origin|Access-Control|allowOrigin"},
|
|
65
|
+
{"id":64,"cat":"API Routes","q":"How are route parameters extracted and validated?","grep":"params|param\\(|pathParam|\\[id\\]|\\[slug\\]|:id"},
|
|
66
|
+
{"id":65,"cat":"API Routes","q":"Where are public vs private routes separated?","grep":"public|private|protected|auth.*required|isPublic"},
|
|
67
|
+
{"id":66,"cat":"API Routes","q":"How is API versioning handled?","grep":"v1|v2|version|api.*version|prefix.*v"},
|
|
68
|
+
{"id":67,"cat":"API Routes","q":"How are file upload endpoints implemented?","grep":"upload|multipart|formData|multer|busboy"},
|
|
69
|
+
{"id":68,"cat":"API Routes","q":"Where are health check or status endpoints?","grep":"health|status|ping|ready|alive|heartbeat"},
|
|
70
|
+
{"id":69,"cat":"Validation","q":"How is user input validated?","grep":"validate|validator|parse|safeParse|schema"},
|
|
71
|
+
{"id":70,"cat":"Validation","q":"Where are validation schemas defined?","grep":"z\\.object|z\\.string|schema|yup\\.|joi\\."},
|
|
72
|
+
{"id":71,"cat":"Validation","q":"What validation library is used?","grep":"zod|yup|joi|class-validator|superstruct"},
|
|
73
|
+
{"id":72,"cat":"Validation","q":"How are email addresses validated?","grep":"email|isEmail|emailSchema|email.*regex"},
|
|
74
|
+
{"id":73,"cat":"Validation","q":"How are numeric inputs validated for range?","grep":"min\\(|max\\(|between|range|number.*int"},
|
|
75
|
+
{"id":74,"cat":"Validation","q":"How are required fields enforced?","grep":"required|nonEmpty|min.*1|nonempty"},
|
|
76
|
+
{"id":75,"cat":"Validation","q":"Where are custom validation rules defined?","grep":"refine|custom|superRefine|test\\(|addMethod"},
|
|
77
|
+
{"id":76,"cat":"Validation","q":"How are nested objects validated?","grep":"nested|z\\.object.*z\\.object|shape.*shape"},
|
|
78
|
+
{"id":77,"cat":"Validation","q":"How are file types validated before upload?","grep":"contentType|mimeType|fileType|accept|allowedTypes"},
|
|
79
|
+
{"id":78,"cat":"Validation","q":"How are URL or path inputs sanitized?","grep":"sanitize|escape|xss|encode|purify|slug"},
|
|
80
|
+
{"id":79,"cat":"Validation","q":"How are dates validated and parsed?","grep":"date|Date|parseDate|isDate|dateSchema"},
|
|
81
|
+
{"id":80,"cat":"Validation","q":"What happens when validation fails?","grep":"error.*valid|invalid|BAD_REQUEST|parse.*error"},
|
|
82
|
+
{"id":81,"cat":"Validation","q":"How are array inputs validated?","grep":"z\\.array|array.*of|items\\(|each\\("},
|
|
83
|
+
{"id":82,"cat":"Configuration","q":"Where are environment variables accessed?","grep":"process\\.env|Env|env\\.|import\\.meta\\.env"},
|
|
84
|
+
{"id":83,"cat":"Configuration","q":"How are different environments configured?","grep":"development|production|staging|test|NODE_ENV"},
|
|
85
|
+
{"id":84,"cat":"Configuration","q":"Where are default config values set?","grep":"default|fallback|\\|\\||\\?\\?|defaultConfig"},
|
|
86
|
+
{"id":85,"cat":"Configuration","q":"How are secrets and API keys managed?","grep":"secret|SECRET|API_KEY|credential|private.*key"},
|
|
87
|
+
{"id":86,"cat":"Configuration","q":"Where is the build system configured?","grep":"tsconfig|webpack|vite\\.config|rollup|turbo\\.json|next\\.config"},
|
|
88
|
+
{"id":87,"cat":"Configuration","q":"How are port numbers configured?","grep":"PORT|port|3000|4000|8080|listen"},
|
|
89
|
+
{"id":88,"cat":"Configuration","q":"Where is the linter configured?","grep":"eslint|prettier|lint|.eslintrc|biome"},
|
|
90
|
+
{"id":89,"cat":"Configuration","q":"How is TypeScript configured?","grep":"tsconfig|compilerOptions|strict|paths|baseUrl"},
|
|
91
|
+
{"id":90,"cat":"Configuration","q":"Where are shared constants defined?","grep":"const|CONSTANT|constants|config|DEFAULTS"},
|
|
92
|
+
{"id":91,"cat":"Configuration","q":"How are feature flags implemented?","grep":"feature.*flag|toggle|isEnabled|FF_|ENABLE_"},
|
|
93
|
+
{"id":92,"cat":"Configuration","q":"Where is the package manager configured?","grep":"package\\.json|pnpm|yarn|npm|workspace"},
|
|
94
|
+
{"id":93,"cat":"Configuration","q":"How are path aliases configured?","grep":"paths|alias|@/|~/|resolve.*alias"},
|
|
95
|
+
{"id":94,"cat":"Configuration","q":"What CI/CD configuration exists?","grep":"github.*action|workflow|deploy|pipeline|dockerfile|ci"},
|
|
96
|
+
{"id":95,"cat":"Logging","q":"How is logging implemented?","grep":"logger|log\\.|pino|winston|console\\.log"},
|
|
97
|
+
{"id":96,"cat":"Logging","q":"Where is the logger configured?","grep":"createLogger|logger.*config|log.*level|transport"},
|
|
98
|
+
{"id":97,"cat":"Logging","q":"What log levels are used?","grep":"debug|info|warn|error|trace|fatal"},
|
|
99
|
+
{"id":98,"cat":"Logging","q":"How are structured logs formatted?","grep":"json|structured|format|metadata|context.*log"},
|
|
100
|
+
{"id":99,"cat":"Logging","q":"Where are important business events logged?","grep":"logEvent|logBusiness|audit|track|analytics"},
|
|
101
|
+
{"id":100,"cat":"Logging","q":"How is request logging implemented?","grep":"request.*log|access.*log|morgan|requestId"},
|
|
102
|
+
{"id":101,"cat":"Logging","q":"How is sensitive data excluded from logs?","grep":"redact|mask|sanitize|filter.*log|exclude"},
|
|
103
|
+
{"id":102,"cat":"Logging","q":"Where are performance metrics tracked?","grep":"metric|measure|timing|duration|perf|latency"},
|
|
104
|
+
{"id":103,"cat":"Logging","q":"How are log entries correlated across services?","grep":"traceId|correlationId|requestId|span"},
|
|
105
|
+
{"id":104,"cat":"Logging","q":"Where is error monitoring configured?","grep":"sentry|datadog|newrelic|bugsnag|monitor"},
|
|
106
|
+
{"id":105,"cat":"Logging","q":"How are child loggers created for context?","grep":"child|childLogger|context.*logger|withContext"},
|
|
107
|
+
{"id":106,"cat":"Logging","q":"What health check endpoints exist?","grep":"health|status|ping|readiness|liveness"},
|
|
108
|
+
{"id":107,"cat":"Background Jobs","q":"How are background jobs queued?","grep":"queue|enqueue|add.*job|dispatch|publish"},
|
|
109
|
+
{"id":108,"cat":"Background Jobs","q":"Where are job workers defined?","grep":"worker|Worker|processor|consumer|subscriber"},
|
|
110
|
+
{"id":109,"cat":"Background Jobs","q":"What types of background jobs exist?","grep":"job.*type|QUEUE_NAME|queue.*name|JOB_"},
|
|
111
|
+
{"id":110,"cat":"Background Jobs","q":"How are failed jobs retried?","grep":"retry|attempts|backoff|maxRetries|onFailed"},
|
|
112
|
+
{"id":111,"cat":"Background Jobs","q":"How are recurring jobs scheduled?","grep":"cron|repeat|schedule|interval|recurring"},
|
|
113
|
+
{"id":112,"cat":"Background Jobs","q":"What concurrency limits exist for workers?","grep":"concurrency|limiter|maxConcurrent|parallel"},
|
|
114
|
+
{"id":113,"cat":"Background Jobs","q":"How are job results or progress tracked?","grep":"progress|result|completed|onComplete|status"},
|
|
115
|
+
{"id":114,"cat":"Background Jobs","q":"Where is the job queue connection configured?","grep":"redis.*connect|connection.*queue|bull.*config"},
|
|
116
|
+
{"id":115,"cat":"Background Jobs","q":"How are stale or stuck jobs handled?","grep":"stall|stuck|timeout|lockDuration|abandon"},
|
|
117
|
+
{"id":116,"cat":"Background Jobs","q":"What cleanup runs for completed jobs?","grep":"removeOnComplete|cleanup|prune|retention|trim"},
|
|
118
|
+
{"id":117,"cat":"Background Jobs","q":"How are delayed jobs implemented?","grep":"delay|delayed|schedule.*later|deferred"},
|
|
119
|
+
{"id":118,"cat":"Background Jobs","q":"How are job priorities managed?","grep":"priority|PRIORITY|urgent|critical|importance"},
|
|
120
|
+
{"id":119,"cat":"Background Jobs","q":"Where are dead letter queues configured?","grep":"dead.*letter|failed.*queue|dlq|poison"},
|
|
121
|
+
{"id":120,"cat":"Caching","q":"How is caching implemented?","grep":"cache|Cache|redis|memo|stale"},
|
|
122
|
+
{"id":121,"cat":"Caching","q":"Where is the cache connection configured?","grep":"redis.*url|REDIS_URL|cache.*config|ioredis"},
|
|
123
|
+
{"id":122,"cat":"Caching","q":"How are cache keys generated?","grep":"cache.*key|cacheKey|key.*pattern|prefix.*cache"},
|
|
124
|
+
{"id":123,"cat":"Caching","q":"What cache invalidation strategy is used?","grep":"invalidate|clear.*cache|flush|bust|purge|del\\("},
|
|
125
|
+
{"id":124,"cat":"Caching","q":"How long do cached values live?","grep":"ttl|TTL|expire|maxAge|duration|EX\\b"},
|
|
126
|
+
{"id":125,"cat":"Caching","q":"What data is cached in memory?","grep":"Map|lru|memo|inMemory|memory.*cache"},
|
|
127
|
+
{"id":126,"cat":"Caching","q":"How are cached API responses handled?","grep":"staleWhile|cacheControl|Cache-Control|revalidate"},
|
|
128
|
+
{"id":127,"cat":"Caching","q":"How is the cache warmed on startup?","grep":"warm|preload|prefetch|prime|preCache"},
|
|
129
|
+
{"id":128,"cat":"Caching","q":"How are batch cache lookups done?","grep":"mget|multi|pipeline|batch.*cache|getMany"},
|
|
130
|
+
{"id":129,"cat":"Caching","q":"Where is query result caching implemented?","grep":"queryCache|cacheTime|gcTime|staleTime"},
|
|
131
|
+
{"id":130,"cat":"Caching","q":"How are cache misses handled?","grep":"miss|fallback|fetch.*cache|getOrSet|lookup"},
|
|
132
|
+
{"id":131,"cat":"Caching","q":"How is cache size bounded?","grep":"maxSize|maxEntries|evict|lru|capacity"},
|
|
133
|
+
{"id":132,"cat":"Email & Notifications","q":"How are emails sent?","grep":"sendMail|sendEmail|transporter|smtp|nodemailer"},
|
|
134
|
+
{"id":133,"cat":"Email & Notifications","q":"Where are email templates defined?","grep":"email.*template|html.*email|subject|emailContent"},
|
|
135
|
+
{"id":134,"cat":"Email & Notifications","q":"How are push notifications dispatched?","grep":"pushNotification|push.*send|expo.*push|fcm|apns"},
|
|
136
|
+
{"id":135,"cat":"Email & Notifications","q":"What types of notifications exist?","grep":"NotificationType|NOTIFICATION_|notif.*type"},
|
|
137
|
+
{"id":136,"cat":"Email & Notifications","q":"How are in-app notifications stored and read?","grep":"notification.*create|markAsRead|unread|isRead"},
|
|
138
|
+
{"id":137,"cat":"Email & Notifications","q":"How are notification preferences managed?","grep":"preference|opt.*out|subscribe|unsubscribe|setting"},
|
|
139
|
+
{"id":138,"cat":"Email & Notifications","q":"How are notification delivery failures handled?","grep":"bounce|fail.*deliver|retry.*email|error.*send"},
|
|
140
|
+
{"id":139,"cat":"Email & Notifications","q":"Where is the email provider configured?","grep":"SMTP|smtp|mailgun|sendgrid|ses|email.*config"},
|
|
141
|
+
{"id":140,"cat":"Email & Notifications","q":"How are notifications debounced or batched?","grep":"debounce|batch|digest|throttle|aggregate"},
|
|
142
|
+
{"id":141,"cat":"Email & Notifications","q":"What triggers a notification to be sent?","grep":"trigger.*notif|notify|sendNotif|createNotif"},
|
|
143
|
+
{"id":142,"cat":"Email & Notifications","q":"How are notification messages localized?","grep":"locale|translate|i18n.*notif|lang.*notif"},
|
|
144
|
+
{"id":143,"cat":"Email & Notifications","q":"How are real-time notifications pushed to clients?","grep":"websocket|sse|realtime|socket|EventSource|subscribe"},
|
|
145
|
+
{"id":144,"cat":"State Management","q":"How is client-side state managed?","grep":"store|useState|useReducer|zustand|redux|context"},
|
|
146
|
+
{"id":145,"cat":"State Management","q":"Where is the global store defined?","grep":"createStore|create\\(|configureStore|atom|StoreProvider"},
|
|
147
|
+
{"id":146,"cat":"State Management","q":"How do components access shared state?","grep":"useStore|useContext|useSelector|useAtom|connect"},
|
|
148
|
+
{"id":147,"cat":"State Management","q":"How is form state handled?","grep":"useForm|formState|register|handleSubmit|control"},
|
|
149
|
+
{"id":148,"cat":"State Management","q":"How is server state synchronized?","grep":"useQuery|useMutation|invalidate|refetch|queryClient"},
|
|
150
|
+
{"id":149,"cat":"State Management","q":"What optimistic updates are implemented?","grep":"optimistic|rollback|onMutate|previousData|setQueryData"},
|
|
151
|
+
{"id":150,"cat":"State Management","q":"How are loading and error states managed?","grep":"isLoading|isPending|isError|loading|skeleton"},
|
|
152
|
+
{"id":151,"cat":"State Management","q":"How is state persisted across sessions?","grep":"persist|localStorage|AsyncStorage|secureStore|storage"},
|
|
153
|
+
{"id":152,"cat":"State Management","q":"Where are state selectors or derived values?","grep":"selector|derive|computed|useMemo|reselect"},
|
|
154
|
+
{"id":153,"cat":"State Management","q":"How is state reset on logout or navigation?","grep":"reset|clear.*state|resetStore|initialState"},
|
|
155
|
+
{"id":154,"cat":"State Management","q":"How are state subscriptions managed?","grep":"subscribe|listener|watch|observe|on.*change"},
|
|
156
|
+
{"id":155,"cat":"State Management","q":"How is pagination state tracked?","grep":"page|pageSize|hasMore|cursor|offset|nextPage"},
|
|
157
|
+
{"id":156,"cat":"Types & Interfaces","q":"Where are shared type definitions?","grep":"interface|type\\s+\\w+|export.*type|types\\.ts"},
|
|
158
|
+
{"id":157,"cat":"Types & Interfaces","q":"How are API response types defined?","grep":"Response|Output|Result|ApiResponse|ReturnType"},
|
|
159
|
+
{"id":158,"cat":"Types & Interfaces","q":"What interfaces exist for core data models?","grep":"interface.*User|interface.*Post|type.*Entity|Model"},
|
|
160
|
+
{"id":159,"cat":"Types & Interfaces","q":"How are TypeScript enums defined?","grep":"enum\\s|as\\s+const|ENUM|enumValues"},
|
|
161
|
+
{"id":160,"cat":"Types & Interfaces","q":"Where are generic utility types?","grep":"Partial|Omit|Pick|Record|Exclude|Extract|Awaited"},
|
|
162
|
+
{"id":161,"cat":"Types & Interfaces","q":"How are types shared across packages?","grep":"export.*type|import.*type|shared.*type|@.*types"},
|
|
163
|
+
{"id":162,"cat":"Types & Interfaces","q":"What type guard functions exist?","grep":"is.*\\(.*\\).*boolean|type.*guard|asserts|narrowing"},
|
|
164
|
+
{"id":163,"cat":"Types & Interfaces","q":"How are discriminated unions used?","grep":"discriminat|kind|type.*\\||union|tagged"},
|
|
165
|
+
{"id":164,"cat":"Types & Interfaces","q":"Where are Zod infer types used?","grep":"z\\.infer|z\\.input|z\\.output|InferType|Schema"},
|
|
166
|
+
{"id":165,"cat":"Types & Interfaces","q":"How are nullable types handled?","grep":"null|undefined|optional|maybe|NonNullable"},
|
|
167
|
+
{"id":166,"cat":"Security","q":"How is input sanitized to prevent XSS?","grep":"sanitize|escape|xss|purify|encode.*html"},
|
|
168
|
+
{"id":167,"cat":"Security","q":"Where is SQL injection prevented?","grep":"parameterized|prepared|placeholder|\\$1|bind"},
|
|
169
|
+
{"id":168,"cat":"Security","q":"How are CSRF attacks prevented?","grep":"csrf|CSRF|csrfToken|xsrf|sameSite"},
|
|
170
|
+
{"id":169,"cat":"Security","q":"Where are security headers configured?","grep":"helmet|Content-Security|X-Frame|Strict-Transport|security.*header"},
|
|
171
|
+
{"id":170,"cat":"Security","q":"How is rate limiting implemented?","grep":"rateLimit|rate.*limit|throttle|limiter|TOO_MANY"},
|
|
172
|
+
{"id":171,"cat":"Security","q":"How are file uploads validated for security?","grep":"fileSize|maxSize|allowedType|mimeType|extension"},
|
|
173
|
+
{"id":172,"cat":"Security","q":"Where are permissions checked before actions?","grep":"permission|authorize|can\\(|allow|deny|guard"},
|
|
174
|
+
{"id":173,"cat":"Security","q":"How are sensitive fields excluded from API responses?","grep":"select|omit|exclude|hidden|private.*field|toJSON"},
|
|
175
|
+
{"id":174,"cat":"Security","q":"How is data encrypted at rest or in transit?","grep":"encrypt|decrypt|cipher|aes|crypto|hash"},
|
|
176
|
+
{"id":175,"cat":"Security","q":"Where are security audit logs written?","grep":"audit|security.*log|access.*log|track.*action"},
|
|
177
|
+
{"id":176,"cat":"Testing","q":"How are tests organized in the project?","grep":"test|spec|__tests__|describe|it\\(|vitest|jest"},
|
|
178
|
+
{"id":177,"cat":"Testing","q":"Where are test fixtures or factories defined?","grep":"fixture|factory|mock.*data|seed|fake|faker"},
|
|
179
|
+
{"id":178,"cat":"Testing","q":"How are API endpoints tested?","grep":"supertest|request.*app|fetch.*test|testClient"},
|
|
180
|
+
{"id":179,"cat":"Testing","q":"Where are mock implementations defined?","grep":"mock|Mock|stub|spy|vi\\.fn|jest\\.fn"},
|
|
181
|
+
{"id":180,"cat":"Testing","q":"What testing framework is configured?","grep":"vitest|jest|mocha|testing-library|playwright"},
|
|
182
|
+
{"id":181,"cat":"Testing","q":"How are database tests isolated?","grep":"test.*db|beforeEach.*clean|truncate|rollback.*test"},
|
|
183
|
+
{"id":182,"cat":"Testing","q":"How are async operations tested?","grep":"await|async.*test|waitFor|eventually|resolves"},
|
|
184
|
+
{"id":183,"cat":"Testing","q":"Where are test utilities and helpers?","grep":"testUtils|helpers|setup.*test|render.*test"},
|
|
185
|
+
{"id":184,"cat":"Testing","q":"How is test coverage configured?","grep":"coverage|istanbul|c8|nyc|coverageThreshold"},
|
|
186
|
+
{"id":185,"cat":"Testing","q":"How are environment variables set for tests?","grep":"test.*env|env.*test|dotenv.*test|setupFiles"},
|
|
187
|
+
{"id":186,"cat":"i18n & Localization","q":"How are translations organized?","grep":"locale|translation|i18n|messages|lang"},
|
|
188
|
+
{"id":187,"cat":"i18n & Localization","q":"Where are translation strings defined?","grep":"en\\.ts|it\\.ts|messages|locales|strings"},
|
|
189
|
+
{"id":188,"cat":"i18n & Localization","q":"How does the app detect user locale?","grep":"locale|language|navigator\\.language|Accept-Language|detectLocale"},
|
|
190
|
+
{"id":189,"cat":"i18n & Localization","q":"How are translated strings used in components?","grep":"useTranslation|t\\(|formatMessage|intl|translate"},
|
|
191
|
+
{"id":190,"cat":"i18n & Localization","q":"How are dates and numbers formatted per locale?","grep":"formatDate|formatNumber|Intl|toLocaleDateString|dateFormat"},
|
|
192
|
+
{"id":191,"cat":"i18n & Localization","q":"Where are locale-specific routes or paths?","grep":"\\[locale\\]|locale.*param|i18n.*routing|localePath"},
|
|
193
|
+
{"id":192,"cat":"i18n & Localization","q":"How are pluralization rules handled?","grep":"plural|count|one.*other|few|many"},
|
|
194
|
+
{"id":193,"cat":"i18n & Localization","q":"How are missing translation keys handled?","grep":"fallback|missing|default.*lang|onMissingKey"},
|
|
195
|
+
{"id":194,"cat":"Payments","q":"How are payments processed?","grep":"payment|charge|checkout|stripe|paypal"},
|
|
196
|
+
{"id":195,"cat":"Payments","q":"Where are subscription plans defined?","grep":"subscription|plan|tier|pricing|billing"},
|
|
197
|
+
{"id":196,"cat":"Payments","q":"How are payment webhooks handled?","grep":"webhook.*stripe|payment.*webhook|invoice|event.*type"},
|
|
198
|
+
{"id":197,"cat":"Payments","q":"How are refunds processed?","grep":"refund|cancel.*payment|credit|reversal"},
|
|
199
|
+
{"id":198,"cat":"Payments","q":"Where are pricing tiers configured?","grep":"price|tier|TIER|FREE|PRO|PREMIUM|plan"},
|
|
200
|
+
{"id":199,"cat":"Payments","q":"How are payment failures handled?","grep":"payment.*fail|decline|past_due|retry.*payment"},
|
|
201
|
+
{"id":200,"cat":"Payments","q":"How are invoices generated?","grep":"invoice|receipt|billing.*history|lineItem"}
|
|
202
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 1, "mcp_top": 0.045, "mcp_count": 2, "grep_files": 75},
|
|
3
|
+
{"id": 2, "mcp_top": 0.223, "mcp_count": 1, "grep_files": 144},
|
|
4
|
+
{"id": 3, "mcp_top": 0, "mcp_count": 0, "grep_files": 178},
|
|
5
|
+
{"id": 4, "mcp_top": 0, "mcp_count": 0, "grep_files": 201},
|
|
6
|
+
{"id": 5, "mcp_top": 0.022, "mcp_count": 5, "grep_files": 63},
|
|
7
|
+
{"id": 6, "mcp_top": 0.021, "mcp_count": 1, "grep_files": 24},
|
|
8
|
+
{"id": 7, "mcp_top": 0, "mcp_count": 0, "grep_files": 109},
|
|
9
|
+
{"id": 8, "mcp_top": 0, "mcp_count": 0, "grep_files": 142},
|
|
10
|
+
{"id": 9, "mcp_top": 0.244, "mcp_count": 1, "grep_files": 141},
|
|
11
|
+
{"id": 10, "mcp_top": 0.701, "mcp_count": 1, "grep_files": 77},
|
|
12
|
+
{"id": 11, "mcp_top": 0.725, "mcp_count": 5, "grep_files": 160},
|
|
13
|
+
{"id": 12, "mcp_top": 0.032, "mcp_count": 1, "grep_files": 121},
|
|
14
|
+
{"id": 13, "mcp_top": 0.01, "mcp_count": 1, "grep_files": 561},
|
|
15
|
+
{"id": 14, "mcp_top": 0.051, "mcp_count": 3, "grep_files": 55},
|
|
16
|
+
{"id": 15, "mcp_top": 0.032, "mcp_count": 2, "grep_files": 66},
|
|
17
|
+
{"id": 16, "mcp_top": 0.513, "mcp_count": 5, "grep_files": 180},
|
|
18
|
+
{"id": 17, "mcp_top": 0.084, "mcp_count": 2, "grep_files": 65},
|
|
19
|
+
{"id": 18, "mcp_top": 0, "mcp_count": 0, "grep_files": 50},
|
|
20
|
+
{"id": 19, "mcp_top": 0.249, "mcp_count": 3, "grep_files": 53},
|
|
21
|
+
{"id": 20, "mcp_top": 0, "mcp_count": 0, "grep_files": 20},
|
|
22
|
+
{"id": 21, "mcp_top": 0.025, "mcp_count": 1, "grep_files": 77},
|
|
23
|
+
{"id": 22, "mcp_top": 0.726, "mcp_count": 5, "grep_files": 6},
|
|
24
|
+
{"id": 23, "mcp_top": 0.01, "mcp_count": 1, "grep_files": 24},
|
|
25
|
+
{"id": 24, "mcp_top": 0.888, "mcp_count": 5, "grep_files": 25},
|
|
26
|
+
{"id": 25, "mcp_top": 0, "mcp_count": 0, "grep_files": 0}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 26, "mcp_top": 0.63, "mcp_count": 5, "grep_files": 41},
|
|
3
|
+
{"id": 27, "mcp_top": 0.728, "mcp_count": 5, "grep_files": 23},
|
|
4
|
+
{"id": 28, "mcp_top": 0.572, "mcp_count": 2, "grep_files": 78},
|
|
5
|
+
{"id": 29, "mcp_top": 0, "mcp_count": 0, "grep_files": 2},
|
|
6
|
+
{"id": 30, "mcp_top": 0.539, "mcp_count": 5, "grep_files": 241},
|
|
7
|
+
{"id": 31, "mcp_top": 0.948, "mcp_count": 1, "grep_files": 10},
|
|
8
|
+
{"id": 32, "mcp_top": 0.977, "mcp_count": 5, "grep_files": 1},
|
|
9
|
+
{"id": 33, "mcp_top": 0.369, "mcp_count": 5, "grep_files": 4},
|
|
10
|
+
{"id": 34, "mcp_top": 0.164, "mcp_count": 4, "grep_files": 48},
|
|
11
|
+
{"id": 35, "mcp_top": 0.991, "mcp_count": 5, "grep_files": 7},
|
|
12
|
+
{"id": 36, "mcp_top": 0.944, "mcp_count": 5, "grep_files": 5},
|
|
13
|
+
{"id": 37, "mcp_top": 0.049, "mcp_count": 5, "grep_files": 46},
|
|
14
|
+
{"id": 38, "mcp_top": 0.031, "mcp_count": 3, "grep_files": 75},
|
|
15
|
+
{"id": 39, "mcp_top": 0.989, "mcp_count": 5, "grep_files": 23},
|
|
16
|
+
{"id": 40, "mcp_top": 0.015, "mcp_count": 1, "grep_files": 130},
|
|
17
|
+
{"id": 41, "mcp_top": 0.359, "mcp_count": 5, "grep_files": 3},
|
|
18
|
+
{"id": 42, "mcp_top": 0.468, "mcp_count": 2, "grep_files": 85},
|
|
19
|
+
{"id": 43, "mcp_top": 0, "mcp_count": 0, "grep_files": 173},
|
|
20
|
+
{"id": 44, "mcp_top": 0.015, "mcp_count": 2, "grep_files": 38},
|
|
21
|
+
{"id": 45, "mcp_top": 0.017, "mcp_count": 2, "grep_files": 83},
|
|
22
|
+
{"id": 46, "mcp_top": 0, "mcp_count": 0, "grep_files": 65},
|
|
23
|
+
{"id": 47, "mcp_top": 0, "mcp_count": 0, "grep_files": 0},
|
|
24
|
+
{"id": 48, "mcp_top": 0.389, "mcp_count": 3, "grep_files": 28},
|
|
25
|
+
{"id": 49, "mcp_top": 0, "mcp_count": 0, "grep_files": 172},
|
|
26
|
+
{"id": 50, "mcp_top": 0.617, "mcp_count": 5, "grep_files": 7}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 51, "mcp_top": 0.963, "mcp_count": 5, "grep_files": 26},
|
|
3
|
+
{"id": 52, "mcp_top": 0, "mcp_count": 0, "grep_files": 130},
|
|
4
|
+
{"id": 53, "mcp_top": 0, "mcp_count": 0, "grep_files": 199},
|
|
5
|
+
{"id": 54, "mcp_top": 0, "mcp_count": 0, "grep_files": 53},
|
|
6
|
+
{"id": 55, "mcp_top": 0.165, "mcp_count": 3, "grep_files": 54},
|
|
7
|
+
{"id": 56, "mcp_top": 0.177, "mcp_count": 4, "grep_files": 267},
|
|
8
|
+
{"id": 57, "mcp_top": 0, "mcp_count": 0, "grep_files": 184},
|
|
9
|
+
{"id": 58, "mcp_top": 0.083, "mcp_count": 2, "grep_files": 12},
|
|
10
|
+
{"id": 59, "mcp_top": 0.015, "mcp_count": 2, "grep_files": 46},
|
|
11
|
+
{"id": 60, "mcp_top": 0.756, "mcp_count": 5, "grep_files": 210},
|
|
12
|
+
{"id": 61, "mcp_top": 0.04, "mcp_count": 3, "grep_files": 248},
|
|
13
|
+
{"id": 62, "mcp_top": 0.449, "mcp_count": 4, "grep_files": 70},
|
|
14
|
+
{"id": 63, "mcp_top": 0, "mcp_count": 0, "grep_files": 61},
|
|
15
|
+
{"id": 64, "mcp_top": 0.044, "mcp_count": 3, "grep_files": 82},
|
|
16
|
+
{"id": 65, "mcp_top": 0, "mcp_count": 0, "grep_files": 71},
|
|
17
|
+
{"id": 66, "mcp_top": 0.035, "mcp_count": 3, "grep_files": 27},
|
|
18
|
+
{"id": 67, "mcp_top": 0.938, "mcp_count": 5, "grep_files": 58},
|
|
19
|
+
{"id": 68, "mcp_top": 0.883, "mcp_count": 5, "grep_files": 290},
|
|
20
|
+
{"id": 69, "mcp_top": 0.071, "mcp_count": 5, "grep_files": 207},
|
|
21
|
+
{"id": 70, "mcp_top": 0, "mcp_count": 0, "grep_files": 65},
|
|
22
|
+
{"id": 71, "mcp_top": 0.036, "mcp_count": 3, "grep_files": 119},
|
|
23
|
+
{"id": 72, "mcp_top": 0, "mcp_count": 0, "grep_files": 96},
|
|
24
|
+
{"id": 73, "mcp_top": 0.015, "mcp_count": 1, "grep_files": 281},
|
|
25
|
+
{"id": 74, "mcp_top": 0, "mcp_count": 0, "grep_files": 253},
|
|
26
|
+
{"id": 75, "mcp_top": 0, "mcp_count": 0, "grep_files": 75}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 76, "mcp_top": 0.86, "mcp_count": 1, "grep_files": 19},
|
|
3
|
+
{"id": 77, "mcp_top": 0.972, "mcp_count": 5, "grep_files": 79},
|
|
4
|
+
{"id": 78, "mcp_top": 0.87, "mcp_count": 1, "grep_files": 63},
|
|
5
|
+
{"id": 79, "mcp_top": 0.886, "mcp_count": 5, "grep_files": 392},
|
|
6
|
+
{"id": 80, "mcp_top": 0, "mcp_count": 0, "grep_files": 127},
|
|
7
|
+
{"id": 81, "mcp_top": 0.014, "mcp_count": 1, "grep_files": 20},
|
|
8
|
+
{"id": 82, "mcp_top": 0.191, "mcp_count": 4, "grep_files": 109},
|
|
9
|
+
{"id": 83, "mcp_top": 0.042, "mcp_count": 3, "grep_files": 121},
|
|
10
|
+
{"id": 84, "mcp_top": 0.598, "mcp_count": 5, "grep_files": 564},
|
|
11
|
+
{"id": 85, "mcp_top": 0.13, "mcp_count": 2, "grep_files": 40},
|
|
12
|
+
{"id": 86, "mcp_top": 0, "mcp_count": 0, "grep_files": 3},
|
|
13
|
+
{"id": 87, "mcp_top": 0.015, "mcp_count": 1, "grep_files": 903},
|
|
14
|
+
{"id": 88, "mcp_top": 0, "mcp_count": 0, "grep_files": 53},
|
|
15
|
+
{"id": 89, "mcp_top": 0.569, "mcp_count": 5, "grep_files": 24},
|
|
16
|
+
{"id": 90, "mcp_top": 0.498, "mcp_count": 1, "grep_files": 804},
|
|
17
|
+
{"id": 91, "mcp_top": 0.756, "mcp_count": 5, "grep_files": 40},
|
|
18
|
+
{"id": 92, "mcp_top": 0.445, "mcp_count": 5, "grep_files": 5},
|
|
19
|
+
{"id": 93, "mcp_top": 0.174, "mcp_count": 3, "grep_files": 459},
|
|
20
|
+
{"id": 94, "mcp_top": 0, "mcp_count": 0, "grep_files": 552},
|
|
21
|
+
{"id": 95, "mcp_top": 0.118, "mcp_count": 2, "grep_files": 125},
|
|
22
|
+
{"id": 96, "mcp_top": 0.325, "mcp_count": 5, "grep_files": 4},
|
|
23
|
+
{"id": 97, "mcp_top": 0.057, "mcp_count": 2, "grep_files": 342},
|
|
24
|
+
{"id": 98, "mcp_top": 0.263, "mcp_count": 5, "grep_files": 226},
|
|
25
|
+
{"id": 99, "mcp_top": 0.971, "mcp_count": 1, "grep_files": 195},
|
|
26
|
+
{"id": 100, "mcp_top": 0.182, "mcp_count": 4, "grep_files": 7}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 101, "mcp_top": 0, "mcp_count": 0, "grep_files": 110},
|
|
3
|
+
{"id": 102, "mcp_top": 0.806, "mcp_count": 5, "grep_files": 700},
|
|
4
|
+
{"id": 103, "mcp_top": 0, "mcp_count": 0, "grep_files": 228},
|
|
5
|
+
{"id": 104, "mcp_top": 0.141, "mcp_count": 5, "grep_files": 77},
|
|
6
|
+
{"id": 105, "mcp_top": 0.996, "mcp_count": 5, "grep_files": 186},
|
|
7
|
+
{"id": 106, "mcp_top": 0.698, "mcp_count": 3, "grep_files": 940},
|
|
8
|
+
{"id": 107, "mcp_top": 0.317, "mcp_count": 5, "grep_files": 147},
|
|
9
|
+
{"id": 108, "mcp_top": 0.03, "mcp_count": 5, "grep_files": 137},
|
|
10
|
+
{"id": 109, "mcp_top": 0, "mcp_count": 0, "grep_files": 27},
|
|
11
|
+
{"id": 110, "mcp_top": 0.097, "mcp_count": 5, "grep_files": 95},
|
|
12
|
+
{"id": 111, "mcp_top": 0.397, "mcp_count": 5, "grep_files": 235},
|
|
13
|
+
{"id": 112, "mcp_top": 0.103, "mcp_count": 5, "grep_files": 158},
|
|
14
|
+
{"id": 113, "mcp_top": 0.382, "mcp_count": 5, "grep_files": 1010},
|
|
15
|
+
{"id": 114, "mcp_top": 0.613, "mcp_count": 5, "grep_files": 3},
|
|
16
|
+
{"id": 115, "mcp_top": 0.016, "mcp_count": 1, "grep_files": 327},
|
|
17
|
+
{"id": 116, "mcp_top": 0.989, "mcp_count": 5, "grep_files": 190},
|
|
18
|
+
{"id": 117, "mcp_top": 0.956, "mcp_count": 5, "grep_files": 233},
|
|
19
|
+
{"id": 118, "mcp_top": 0, "mcp_count": 0, "grep_files": 381},
|
|
20
|
+
{"id": 119, "mcp_top": 0, "mcp_count": 0, "grep_files": 0},
|
|
21
|
+
{"id": 120, "mcp_top": 0, "mcp_count": 0, "grep_files": 628},
|
|
22
|
+
{"id": 121, "mcp_top": 0, "mcp_count": 0, "grep_files": 33},
|
|
23
|
+
{"id": 122, "mcp_top": 0.859, "mcp_count": 5, "grep_files": 82},
|
|
24
|
+
{"id": 123, "mcp_top": 0.204, "mcp_count": 5, "grep_files": 141},
|
|
25
|
+
{"id": 124, "mcp_top": 0.869, "mcp_count": 2, "grep_files": 439},
|
|
26
|
+
{"id": 125, "mcp_top": 0.697, "mcp_count": 5, "grep_files": 485}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 126, "mcp_top": 0.461, "mcp_count": 5, "grep_files": 20},
|
|
3
|
+
{"id": 127, "mcp_top": 0, "mcp_count": 0, "grep_files": 56},
|
|
4
|
+
{"id": 128, "mcp_top": 0.034, "mcp_count": 1, "grep_files": 423},
|
|
5
|
+
{"id": 129, "mcp_top": 0, "mcp_count": 0, "grep_files": 12},
|
|
6
|
+
{"id": 130, "mcp_top": 0.015, "mcp_count": 2, "grep_files": 559},
|
|
7
|
+
{"id": 131, "mcp_top": 0.1, "mcp_count": 1, "grep_files": 33},
|
|
8
|
+
{"id": 132, "mcp_top": 0.689, "mcp_count": 5, "grep_files": 0},
|
|
9
|
+
{"id": 133, "mcp_top": 0, "mcp_count": 0, "grep_files": 37},
|
|
10
|
+
{"id": 134, "mcp_top": 0.984, "mcp_count": 5, "grep_files": 12},
|
|
11
|
+
{"id": 135, "mcp_top": 0.948, "mcp_count": 5, "grep_files": 23},
|
|
12
|
+
{"id": 136, "mcp_top": 0.976, "mcp_count": 5, "grep_files": 58},
|
|
13
|
+
{"id": 137, "mcp_top": 0.466, "mcp_count": 5, "grep_files": 348},
|
|
14
|
+
{"id": 138, "mcp_top": 0.19, "mcp_count": 5, "grep_files": 36},
|
|
15
|
+
{"id": 139, "mcp_top": 0.037, "mcp_count": 5, "grep_files": 1187},
|
|
16
|
+
{"id": 140, "mcp_top": 0.954, "mcp_count": 5, "grep_files": 157},
|
|
17
|
+
{"id": 141, "mcp_top": 0.524, "mcp_count": 5, "grep_files": 20},
|
|
18
|
+
{"id": 142, "mcp_top": 0.06, "mcp_count": 5, "grep_files": 267},
|
|
19
|
+
{"id": 143, "mcp_top": 0.16, "mcp_count": 5, "grep_files": 694},
|
|
20
|
+
{"id": 144, "mcp_top": 0.026, "mcp_count": 1, "grep_files": 1023},
|
|
21
|
+
{"id": 145, "mcp_top": 0, "mcp_count": 0, "grep_files": 49},
|
|
22
|
+
{"id": 146, "mcp_top": 0.074, "mcp_count": 4, "grep_files": 256},
|
|
23
|
+
{"id": 147, "mcp_top": 0.055, "mcp_count": 2, "grep_files": 233},
|
|
24
|
+
{"id": 148, "mcp_top": 0.049, "mcp_count": 2, "grep_files": 190},
|
|
25
|
+
{"id": 149, "mcp_top": 0.156, "mcp_count": 2, "grep_files": 24},
|
|
26
|
+
{"id": 150, "mcp_top": 0.183, "mcp_count": 5, "grep_files": 605}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 151, "mcp_top": 0, "mcp_count": 0, "grep_files": 56},
|
|
3
|
+
{"id": 152, "mcp_top": 0.032, "mcp_count": 2, "grep_files": 107},
|
|
4
|
+
{"id": 153, "mcp_top": 0.03, "mcp_count": 4, "grep_files": 41},
|
|
5
|
+
{"id": 154, "mcp_top": 0, "mcp_count": 0, "grep_files": 87},
|
|
6
|
+
{"id": 155, "mcp_top": 0, "mcp_count": 0, "grep_files": 152},
|
|
7
|
+
{"id": 156, "mcp_top": 0, "mcp_count": 0, "grep_files": 543},
|
|
8
|
+
{"id": 157, "mcp_top": 0.193, "mcp_count": 2, "grep_files": 96},
|
|
9
|
+
{"id": 158, "mcp_top": 0, "mcp_count": 0, "grep_files": 3},
|
|
10
|
+
{"id": 159, "mcp_top": 0.075, "mcp_count": 3, "grep_files": 123},
|
|
11
|
+
{"id": 160, "mcp_top": 0, "mcp_count": 0, "grep_files": 198},
|
|
12
|
+
{"id": 161, "mcp_top": 0.099, "mcp_count": 5, "grep_files": 338},
|
|
13
|
+
{"id": 162, "mcp_top": 0.453, "mcp_count": 5, "grep_files": 25},
|
|
14
|
+
{"id": 163, "mcp_top": 0.705, "mcp_count": 2, "grep_files": 103},
|
|
15
|
+
{"id": 164, "mcp_top": 0.767, "mcp_count": 5, "grep_files": 55},
|
|
16
|
+
{"id": 165, "mcp_top": 0.047, "mcp_count": 5, "grep_files": 524},
|
|
17
|
+
{"id": 166, "mcp_top": 0.021, "mcp_count": 1, "grep_files": 5},
|
|
18
|
+
{"id": 167, "mcp_top": 0, "mcp_count": 0, "grep_files": 113},
|
|
19
|
+
{"id": 168, "mcp_top": 0.954, "mcp_count": 2, "grep_files": 6},
|
|
20
|
+
{"id": 169, "mcp_top": 0.015, "mcp_count": 1, "grep_files": 1},
|
|
21
|
+
{"id": 170, "mcp_top": 0.432, "mcp_count": 5, "grep_files": 22},
|
|
22
|
+
{"id": 171, "mcp_top": 0.803, "mcp_count": 5, "grep_files": 31},
|
|
23
|
+
{"id": 172, "mcp_top": 0, "mcp_count": 0, "grep_files": 120},
|
|
24
|
+
{"id": 173, "mcp_top": 0.018, "mcp_count": 1, "grep_files": 345},
|
|
25
|
+
{"id": 174, "mcp_top": 0, "mcp_count": 0, "grep_files": 57},
|
|
26
|
+
{"id": 175, "mcp_top": 0, "mcp_count": 0, "grep_files": 5}
|
|
27
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"id": 176, "mcp_top": 0, "mcp_count": 0, "grep_files": 1174},
|
|
3
|
+
{"id": 177, "mcp_top": 0, "mcp_count": 0, "grep_files": 75},
|
|
4
|
+
{"id": 178, "mcp_top": 0.245, "mcp_count": 5, "grep_files": 20},
|
|
5
|
+
{"id": 179, "mcp_top": 0, "mcp_count": 0, "grep_files": 60},
|
|
6
|
+
{"id": 180, "mcp_top": 0.013, "mcp_count": 1, "grep_files": 41},
|
|
7
|
+
{"id": 181, "mcp_top": 0, "mcp_count": 0, "grep_files": 68},
|
|
8
|
+
{"id": 182, "mcp_top": 0.699, "mcp_count": 5, "grep_files": 365},
|
|
9
|
+
{"id": 183, "mcp_top": 0, "mcp_count": 0, "grep_files": 57},
|
|
10
|
+
{"id": 184, "mcp_top": 0, "mcp_count": 0, "grep_files": 143},
|
|
11
|
+
{"id": 185, "mcp_top": 0.669, "mcp_count": 1, "grep_files": 7},
|
|
12
|
+
{"id": 186, "mcp_top": 0, "mcp_count": 0, "grep_files": 957},
|
|
13
|
+
{"id": 187, "mcp_top": 0.556, "mcp_count": 5, "grep_files": 202},
|
|
14
|
+
{"id": 188, "mcp_top": 0.996, "mcp_count": 5, "grep_files": 740},
|
|
15
|
+
{"id": 189, "mcp_top": 0.998, "mcp_count": 5, "grep_files": 884},
|
|
16
|
+
{"id": 190, "mcp_top": 0.989, "mcp_count": 5, "grep_files": 60},
|
|
17
|
+
{"id": 191, "mcp_top": 0.122, "mcp_count": 2, "grep_files": 131},
|
|
18
|
+
{"id": 192, "mcp_top": 0, "mcp_count": 0, "grep_files": 617},
|
|
19
|
+
{"id": 193, "mcp_top": 0.955, "mcp_count": 5, "grep_files": 344},
|
|
20
|
+
{"id": 194, "mcp_top": 0.405, "mcp_count": 3, "grep_files": 160},
|
|
21
|
+
{"id": 195, "mcp_top": 0.135, "mcp_count": 5, "grep_files": 853},
|
|
22
|
+
{"id": 196, "mcp_top": 0.966, "mcp_count": 5, "grep_files": 62},
|
|
23
|
+
{"id": 197, "mcp_top": 0.579, "mcp_count": 2, "grep_files": 35},
|
|
24
|
+
{"id": 198, "mcp_top": 0.464, "mcp_count": 2, "grep_files": 1025},
|
|
25
|
+
{"id": 199, "mcp_top": 0.754, "mcp_count": 5, "grep_files": 30},
|
|
26
|
+
{"id": 200, "mcp_top": 0.821, "mcp_count": 5, "grep_files": 40}
|
|
27
|
+
]
|