sdl-mcp 0.6.3 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -38
- package/config/sdlmcp.config.example.json +16 -2
- package/config/sdlmcp.config.json +153 -0
- package/config/sdlmcp.config.json.sample +15 -2
- package/config/sdlmcp.config.schema.json +76 -2
- package/dist/benchmark/edgeAccuracy.d.ts +10 -0
- package/dist/benchmark/edgeAccuracy.d.ts.map +1 -0
- package/dist/benchmark/edgeAccuracy.js +106 -0
- package/dist/benchmark/edgeAccuracy.js.map +1 -0
- package/dist/benchmark/threshold.d.ts.map +1 -1
- package/dist/benchmark/threshold.js +14 -3
- package/dist/benchmark/threshold.js.map +1 -1
- package/dist/cli/argParsing.d.ts +3 -1
- package/dist/cli/argParsing.d.ts.map +1 -1
- package/dist/cli/argParsing.js +175 -0
- package/dist/cli/argParsing.js.map +1 -1
- package/dist/cli/commands/benchmark.d.ts +2 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -1
- package/dist/cli/commands/benchmark.js +147 -10
- package/dist/cli/commands/benchmark.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +52 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/health.d.ts +3 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +45 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +13 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +371 -67
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +14 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/summary.d.ts +3 -0
- package/dist/cli/commands/summary.d.ts.map +1 -0
- package/dist/cli/commands/summary.js +59 -0
- package/dist/cli/commands/summary.js.map +1 -0
- package/dist/cli/index.js +75 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/transport/http.d.ts.map +1 -1
- package/dist/cli/transport/http.js +369 -71
- package/dist/cli/transport/http.js.map +1 -1
- package/dist/cli/types.d.ts +18 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/config/constants.d.ts +20 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +20 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/types.d.ts +106 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +22 -2
- package/dist/config/types.js.map +1 -1
- package/dist/db/queries.d.ts +31 -1
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +93 -1
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.d.ts +27 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/graph/prefetch-model.d.ts +13 -0
- package/dist/graph/prefetch-model.d.ts.map +1 -0
- package/dist/graph/prefetch-model.js +30 -0
- package/dist/graph/prefetch-model.js.map +1 -0
- package/dist/graph/prefetch.d.ts +35 -0
- package/dist/graph/prefetch.d.ts.map +1 -0
- package/dist/graph/prefetch.js +208 -0
- package/dist/graph/prefetch.js.map +1 -0
- package/dist/graph/slice.d.ts +7 -3
- package/dist/graph/slice.d.ts.map +1 -1
- package/dist/graph/slice.js +175 -20
- package/dist/graph/slice.js.map +1 -1
- package/dist/indexer/adapter/LanguageAdapter.d.ts +20 -0
- package/dist/indexer/adapter/LanguageAdapter.d.ts.map +1 -1
- package/dist/indexer/adapter/go.d.ts +2 -0
- package/dist/indexer/adapter/go.d.ts.map +1 -1
- package/dist/indexer/adapter/go.js +54 -2
- package/dist/indexer/adapter/go.js.map +1 -1
- package/dist/indexer/adapter/java.d.ts +2 -0
- package/dist/indexer/adapter/java.d.ts.map +1 -1
- package/dist/indexer/adapter/java.js +47 -1
- package/dist/indexer/adapter/java.js.map +1 -1
- package/dist/indexer/adapter/python.d.ts +2 -0
- package/dist/indexer/adapter/python.d.ts.map +1 -1
- package/dist/indexer/adapter/python.js +44 -0
- package/dist/indexer/adapter/python.js.map +1 -1
- package/dist/indexer/edge-confidence.d.ts +14 -0
- package/dist/indexer/edge-confidence.d.ts.map +1 -0
- package/dist/indexer/edge-confidence.js +31 -0
- package/dist/indexer/edge-confidence.js.map +1 -0
- package/dist/indexer/embeddings-local.d.ts +6 -0
- package/dist/indexer/embeddings-local.d.ts.map +1 -0
- package/dist/indexer/embeddings-local.js +20 -0
- package/dist/indexer/embeddings-local.js.map +1 -0
- package/dist/indexer/embeddings.d.ts +31 -0
- package/dist/indexer/embeddings.d.ts.map +1 -0
- package/dist/indexer/embeddings.js +179 -0
- package/dist/indexer/embeddings.js.map +1 -0
- package/dist/indexer/indexer.d.ts +26 -1
- package/dist/indexer/indexer.d.ts.map +1 -1
- package/dist/indexer/indexer.js +819 -243
- package/dist/indexer/indexer.js.map +1 -1
- package/dist/indexer/summary-generator.d.ts +21 -0
- package/dist/indexer/summary-generator.d.ts.map +1 -0
- package/dist/indexer/summary-generator.js +48 -0
- package/dist/indexer/summary-generator.js.map +1 -0
- package/dist/indexer/ts/tsParser.d.ts +4 -1
- package/dist/indexer/ts/tsParser.d.ts.map +1 -1
- package/dist/indexer/ts/tsParser.js +32 -3
- package/dist/indexer/ts/tsParser.js.map +1 -1
- package/dist/mcp/health.d.ts +31 -0
- package/dist/mcp/health.d.ts.map +1 -0
- package/dist/mcp/health.js +106 -0
- package/dist/mcp/health.js.map +1 -0
- package/dist/mcp/summary.d.ts +21 -0
- package/dist/mcp/summary.d.ts.map +1 -0
- package/dist/mcp/summary.js +290 -0
- package/dist/mcp/summary.js.map +1 -0
- package/dist/mcp/telemetry.d.ts +64 -0
- package/dist/mcp/telemetry.d.ts.map +1 -1
- package/dist/mcp/telemetry.js +89 -0
- package/dist/mcp/telemetry.js.map +1 -1
- package/dist/mcp/tools/agent.d.ts +4 -4
- package/dist/mcp/tools/delta.d.ts.map +1 -1
- package/dist/mcp/tools/delta.js +2 -0
- package/dist/mcp/tools/delta.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +3 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/prRisk.d.ts +1 -1
- package/dist/mcp/tools/repo.d.ts.map +1 -1
- package/dist/mcp/tools/repo.js +32 -1
- package/dist/mcp/tools/repo.js.map +1 -1
- package/dist/mcp/tools/slice.d.ts.map +1 -1
- package/dist/mcp/tools/slice.js +12 -1
- package/dist/mcp/tools/slice.js.map +1 -1
- package/dist/mcp/tools/summary.d.ts +3 -0
- package/dist/mcp/tools/summary.d.ts.map +1 -0
- package/dist/mcp/tools/summary.js +19 -0
- package/dist/mcp/tools/summary.js.map +1 -0
- package/dist/mcp/tools/symbol.d.ts.map +1 -1
- package/dist/mcp/tools/symbol.js +75 -8
- package/dist/mcp/tools/symbol.js.map +1 -1
- package/dist/mcp/tools.d.ts +904 -141
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +123 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts +87 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/migrations/0014_add_edge_confidence.sql +19 -0
- package/migrations/0015_add_edge_resolution_strategy.sql +5 -0
- package/migrations/0016_symbol_embeddings.sql +14 -0
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -71,35 +71,45 @@ Or run without global install:
|
|
|
71
71
|
npx --yes sdl-mcp@latest version
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
###
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# Tip: If you are using npx, replace `sdl-mcp` with `npx --yes sdl-mcp@latest`.
|
|
78
|
-
# 1)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
# 2)
|
|
82
|
-
sdl-mcp
|
|
83
|
-
|
|
84
|
-
# 3)
|
|
85
|
-
sdl-mcp
|
|
86
|
-
|
|
87
|
-
#
|
|
88
|
-
sdl-mcp serve --
|
|
89
|
-
|
|
74
|
+
### Configure and Initialize
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Tip: If you are using npx, replace `sdl-mcp` with `npx --yes sdl-mcp@latest`.
|
|
78
|
+
# 1) Set config location variable then open a new terminal
|
|
79
|
+
setx SDL_CONFIG_HOME "C:\[your path]"
|
|
80
|
+
|
|
81
|
+
# 2) One-line non-interactive setup (includes inline index + doctor)
|
|
82
|
+
sdl-mcp init -y --auto-index --config "C:\[same path as SDL_CONFIG_HOME]"
|
|
83
|
+
|
|
84
|
+
# 3) Start MCP server (stdio for coding agents)
|
|
85
|
+
sdl-mcp serve --stdio
|
|
86
|
+
|
|
87
|
+
# Optional: start HTTP transport for graph explorer + REST endpoints
|
|
88
|
+
sdl-mcp serve --http --host localhost --port 3000
|
|
89
|
+
|
|
90
|
+
# Optional: disable watch mode if your environment has watcher instability
|
|
91
|
+
sdl-mcp serve --stdio --no-watch
|
|
92
|
+
|
|
93
|
+
# 4) Copy the agent instructions from agent-workflows.md and paste them in the AGENTS.md file for your project.
|
|
94
|
+
```
|
|
90
95
|
|
|
91
96
|
## Core Feature Set
|
|
92
97
|
|
|
93
98
|
- Multi-language repository indexing with tree-sitter adapters
|
|
94
99
|
- Symbol cards with signatures, deps, metrics, and versioning
|
|
95
|
-
- Graph slices with handles, leases, refresh, and spillover
|
|
96
|
-
- Delta analysis and blast radius support
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
100
|
+
- Graph slices with handles, leases, refresh, and spillover
|
|
101
|
+
- Delta analysis and blast radius support
|
|
102
|
+
- Semantic symbol search reranking (`sdl.symbol.search` with `semantic: true`)
|
|
103
|
+
- Optional generated symbol summaries (`semantic.generateSummaries`)
|
|
104
|
+
- Code access ladder: `getSkeleton` -> `getHotPath` -> `needWindow`
|
|
105
|
+
- Policy management (`sdl.policy.get` / `sdl.policy.set`)
|
|
106
|
+
- Repository overview and hotspot inspection (`sdl.repo.overview`)
|
|
107
|
+
- PR risk analysis (`sdl.pr.risk.analyze`)
|
|
108
|
+
- Agent orchestration tool (`sdl.agent.orchestrate`)
|
|
109
|
+
- Predictive prefetch heuristics with status metrics (`prefetchStats`)
|
|
110
|
+
- Graph HTTP surface and browser explorer (`/api/graph/*`, `/ui/graph`)
|
|
111
|
+
- VSCode extension MVP in `sdl-mcp-vscode/`
|
|
112
|
+
- Sync artifact export/import/pull workflows
|
|
103
113
|
|
|
104
114
|
## CLI Commands
|
|
105
115
|
|
|
@@ -109,15 +119,18 @@ sdl-mcp serve --stdio
|
|
|
109
119
|
- `serve` - run MCP server (`--stdio` or `--http`)
|
|
110
120
|
- `export` - export sync artifact
|
|
111
121
|
- `import` - import sync artifact
|
|
112
|
-
- `pull` - pull by version/commit with fallback behavior
|
|
113
|
-
- `benchmark:ci` - run CI benchmark
|
|
114
|
-
- `
|
|
122
|
+
- `pull` - pull by version/commit with fallback behavior
|
|
123
|
+
- `benchmark:ci` - run CI benchmark checks, including edge-accuracy regression gating
|
|
124
|
+
- `summary` - generate token-bounded copy/paste context summaries
|
|
125
|
+
- `health` - compute composite index health score and badge/json output
|
|
126
|
+
- `version` - show version and environment info
|
|
115
127
|
|
|
116
128
|
## MCP Tools
|
|
117
129
|
|
|
118
130
|
- Repository: `sdl.repo.register`, `sdl.repo.status`, `sdl.repo.overview`, `sdl.index.refresh`
|
|
119
|
-
- Symbols: `sdl.symbol.search`, `sdl.symbol.getCard`
|
|
120
|
-
-
|
|
131
|
+
- Symbols: `sdl.symbol.search`, `sdl.symbol.getCard`
|
|
132
|
+
- Context: `sdl.context.summary`
|
|
133
|
+
- Slice: `sdl.slice.build`, `sdl.slice.refresh`, `sdl.slice.spillover.get`
|
|
121
134
|
- Delta: `sdl.delta.get`
|
|
122
135
|
- Code: `sdl.code.needWindow`, `sdl.code.getSkeleton`, `sdl.code.getHotPath`
|
|
123
136
|
- Policy: `sdl.policy.get`, `sdl.policy.set`
|
|
@@ -131,10 +144,11 @@ See: [MCP Tools Reference](./docs/mcp-tools-reference.md)
|
|
|
131
144
|
- [Getting Started](./docs/getting-started.md)
|
|
132
145
|
- [CLI Reference](./docs/cli-reference.md)
|
|
133
146
|
- [MCP Tools Reference](./docs/mcp-tools-reference.md)
|
|
134
|
-
- [Configuration Reference](./docs/configuration-reference.md)
|
|
135
|
-
- [Agent Workflows](./docs/agent-workflows.md)
|
|
136
|
-
- [Troubleshooting](./docs/troubleshooting.md)
|
|
137
|
-
- [
|
|
147
|
+
- [Configuration Reference](./docs/configuration-reference.md)
|
|
148
|
+
- [Agent Workflows](./docs/agent-workflows.md)
|
|
149
|
+
- [Troubleshooting](./docs/troubleshooting.md)
|
|
150
|
+
- [VSCode Extension README](./sdl-mcp-vscode/README.md)
|
|
151
|
+
- [Legacy User Guide](./docs/USER_GUIDE.md)
|
|
138
152
|
|
|
139
153
|
## Development
|
|
140
154
|
|
|
@@ -145,11 +159,15 @@ npm run lint
|
|
|
145
159
|
npm test
|
|
146
160
|
```
|
|
147
161
|
|
|
148
|
-
Benchmark tooling (npm scripts):
|
|
149
|
-
|
|
150
|
-
- `npm run benchmark:real`
|
|
151
|
-
- `npm run benchmark:matrix`
|
|
152
|
-
- `npm run benchmark:sweep`
|
|
162
|
+
Benchmark tooling (npm scripts):
|
|
163
|
+
|
|
164
|
+
- `npm run benchmark:real`
|
|
165
|
+
- `npm run benchmark:matrix`
|
|
166
|
+
- `npm run benchmark:sweep`
|
|
167
|
+
|
|
168
|
+
Phase A benchmark lockfile:
|
|
169
|
+
|
|
170
|
+
- `scripts/benchmark/phase-a-benchmark-lock.json` pins TS/Python/Tier-3 repos for reproducible baseline runs.
|
|
153
171
|
|
|
154
172
|
## License
|
|
155
173
|
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"kt",
|
|
28
28
|
"sh"
|
|
29
29
|
],
|
|
30
|
-
"maxFileBytes": 2000000
|
|
30
|
+
"maxFileBytes": 2000000,
|
|
31
|
+
"includeNodeModulesTypes": true
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
34
|
"repoId": "zod-oss",
|
|
@@ -118,7 +119,8 @@
|
|
|
118
119
|
},
|
|
119
120
|
"indexing": {
|
|
120
121
|
"concurrency": 4,
|
|
121
|
-
"enableFileWatching":
|
|
122
|
+
"enableFileWatching": true,
|
|
123
|
+
"maxWatchedFiles": 25000
|
|
122
124
|
},
|
|
123
125
|
"slice": {
|
|
124
126
|
"defaultMaxCards": 60,
|
|
@@ -135,5 +137,17 @@
|
|
|
135
137
|
"symbolCardMaxSizeBytes": 104857600,
|
|
136
138
|
"graphSliceMaxEntries": 1000,
|
|
137
139
|
"graphSliceMaxSizeBytes": 52428800
|
|
140
|
+
},
|
|
141
|
+
"semantic": {
|
|
142
|
+
"enabled": false,
|
|
143
|
+
"alpha": 0.6,
|
|
144
|
+
"provider": "mock",
|
|
145
|
+
"model": "all-MiniLM-L6-v2",
|
|
146
|
+
"generateSummaries": false
|
|
147
|
+
},
|
|
148
|
+
"prefetch": {
|
|
149
|
+
"enabled": false,
|
|
150
|
+
"maxBudgetPercent": 20,
|
|
151
|
+
"warmTopN": 50
|
|
138
152
|
}
|
|
139
153
|
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"repos": [
|
|
3
|
+
{
|
|
4
|
+
"repoId": "my-repo",
|
|
5
|
+
"rootPath": ".",
|
|
6
|
+
"ignore": [
|
|
7
|
+
"**/node_modules/**",
|
|
8
|
+
"**/dist/**",
|
|
9
|
+
"**/.next/**",
|
|
10
|
+
"**/build/**",
|
|
11
|
+
"**/.git/**",
|
|
12
|
+
"**/coverage/**"
|
|
13
|
+
],
|
|
14
|
+
"languages": [
|
|
15
|
+
"ts",
|
|
16
|
+
"tsx",
|
|
17
|
+
"js",
|
|
18
|
+
"jsx",
|
|
19
|
+
"py",
|
|
20
|
+
"go",
|
|
21
|
+
"java",
|
|
22
|
+
"cs",
|
|
23
|
+
"c",
|
|
24
|
+
"cpp",
|
|
25
|
+
"php",
|
|
26
|
+
"rs",
|
|
27
|
+
"kt",
|
|
28
|
+
"sh"
|
|
29
|
+
],
|
|
30
|
+
"maxFileBytes": 2000000,
|
|
31
|
+
"includeNodeModulesTypes": true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"repoId": "zod-oss",
|
|
35
|
+
"rootPath": ".tmp/external-benchmarks/zod-oss",
|
|
36
|
+
"ignore": [
|
|
37
|
+
"**/node_modules/**",
|
|
38
|
+
"**/dist/**",
|
|
39
|
+
"**/lib/**",
|
|
40
|
+
"**/coverage/**",
|
|
41
|
+
"**/*.test.ts",
|
|
42
|
+
"**/*.spec.ts"
|
|
43
|
+
],
|
|
44
|
+
"languages": [
|
|
45
|
+
"ts",
|
|
46
|
+
"tsx",
|
|
47
|
+
"js"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"repoId": "preact-oss",
|
|
52
|
+
"rootPath": ".tmp/external-benchmarks/preact-oss",
|
|
53
|
+
"ignore": [
|
|
54
|
+
"**/node_modules/**",
|
|
55
|
+
"**/dist/**",
|
|
56
|
+
"**/build/**",
|
|
57
|
+
"**/coverage/**",
|
|
58
|
+
"**/*.test.ts",
|
|
59
|
+
"**/*.spec.ts",
|
|
60
|
+
"**/*.test.tsx",
|
|
61
|
+
"**/*.spec.tsx"
|
|
62
|
+
],
|
|
63
|
+
"languages": [
|
|
64
|
+
"ts",
|
|
65
|
+
"tsx",
|
|
66
|
+
"js",
|
|
67
|
+
"jsx"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"repoId": "flask-oss",
|
|
72
|
+
"rootPath": ".tmp/external-benchmarks/flask-oss",
|
|
73
|
+
"ignore": [
|
|
74
|
+
"**/.venv/**",
|
|
75
|
+
"**/venv/**",
|
|
76
|
+
"**/__pycache__/**",
|
|
77
|
+
"**/.pytest_cache/**",
|
|
78
|
+
"**/build/**",
|
|
79
|
+
"**/dist/**",
|
|
80
|
+
"**/*.pyc",
|
|
81
|
+
"**/tests/**"
|
|
82
|
+
],
|
|
83
|
+
"languages": [
|
|
84
|
+
"py"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"repoId": "ansible-lint-oss",
|
|
89
|
+
"rootPath": ".tmp/external-benchmarks/ansible-lint-oss",
|
|
90
|
+
"ignore": [
|
|
91
|
+
"**/.venv/**",
|
|
92
|
+
"**/venv/**",
|
|
93
|
+
"**/__pycache__/**",
|
|
94
|
+
"**/.pytest_cache/**",
|
|
95
|
+
"**/build/**",
|
|
96
|
+
"**/dist/**",
|
|
97
|
+
"**/*.pyc",
|
|
98
|
+
"**/test/**",
|
|
99
|
+
"**/tests/**",
|
|
100
|
+
"**/.tox/**"
|
|
101
|
+
],
|
|
102
|
+
"languages": [
|
|
103
|
+
"py",
|
|
104
|
+
"sh"
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"dbPath": "./data/sdlmcp.sqlite",
|
|
109
|
+
"policy": {
|
|
110
|
+
"maxWindowLines": 180,
|
|
111
|
+
"maxWindowTokens": 1400,
|
|
112
|
+
"requireIdentifiers": true,
|
|
113
|
+
"allowBreakGlass": true
|
|
114
|
+
},
|
|
115
|
+
"redaction": {
|
|
116
|
+
"enabled": true,
|
|
117
|
+
"includeDefaults": true,
|
|
118
|
+
"patterns": []
|
|
119
|
+
},
|
|
120
|
+
"indexing": {
|
|
121
|
+
"concurrency": 4,
|
|
122
|
+
"enableFileWatching": true,
|
|
123
|
+
"maxWatchedFiles": 25000
|
|
124
|
+
},
|
|
125
|
+
"slice": {
|
|
126
|
+
"defaultMaxCards": 60,
|
|
127
|
+
"defaultMaxTokens": 12000,
|
|
128
|
+
"edgeWeights": {
|
|
129
|
+
"call": 1.0,
|
|
130
|
+
"import": 0.6,
|
|
131
|
+
"config": 0.8
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"cache": {
|
|
135
|
+
"enabled": true,
|
|
136
|
+
"symbolCardMaxEntries": 2000,
|
|
137
|
+
"symbolCardMaxSizeBytes": 104857600,
|
|
138
|
+
"graphSliceMaxEntries": 1000,
|
|
139
|
+
"graphSliceMaxSizeBytes": 52428800
|
|
140
|
+
},
|
|
141
|
+
"semantic": {
|
|
142
|
+
"enabled": false,
|
|
143
|
+
"alpha": 0.6,
|
|
144
|
+
"provider": "mock",
|
|
145
|
+
"model": "all-MiniLM-L6-v2",
|
|
146
|
+
"generateSummaries": false
|
|
147
|
+
},
|
|
148
|
+
"prefetch": {
|
|
149
|
+
"enabled": false,
|
|
150
|
+
"maxBudgetPercent": 20,
|
|
151
|
+
"warmTopN": 50
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"indexing": {
|
|
46
46
|
"concurrency": 8,
|
|
47
|
-
"enableFileWatching":
|
|
47
|
+
"enableFileWatching": true,
|
|
48
|
+
"maxWatchedFiles": 25000
|
|
48
49
|
},
|
|
49
50
|
"slice": {
|
|
50
51
|
"defaultMaxCards": 60,
|
|
@@ -54,5 +55,17 @@
|
|
|
54
55
|
"import": 0.6,
|
|
55
56
|
"config": 0.8
|
|
56
57
|
}
|
|
58
|
+
},
|
|
59
|
+
"semantic": {
|
|
60
|
+
"enabled": false,
|
|
61
|
+
"alpha": 0.6,
|
|
62
|
+
"provider": "mock",
|
|
63
|
+
"model": "all-MiniLM-L6-v2",
|
|
64
|
+
"generateSummaries": false
|
|
65
|
+
},
|
|
66
|
+
"prefetch": {
|
|
67
|
+
"enabled": false,
|
|
68
|
+
"maxBudgetPercent": 20,
|
|
69
|
+
"warmTopN": 50
|
|
57
70
|
}
|
|
58
|
-
}
|
|
71
|
+
}
|
|
@@ -80,6 +80,11 @@
|
|
|
80
80
|
"minimum": 1,
|
|
81
81
|
"default": 2000000
|
|
82
82
|
},
|
|
83
|
+
"includeNodeModulesTypes": {
|
|
84
|
+
"type": "boolean",
|
|
85
|
+
"description": "Include node_modules/@types declarations in TypeScript call resolution (excluding @types/node)",
|
|
86
|
+
"default": true
|
|
87
|
+
},
|
|
83
88
|
"packageJsonPath": {
|
|
84
89
|
"type": "string",
|
|
85
90
|
"description": "Optional path to package.json (auto-detected if not provided)"
|
|
@@ -196,7 +201,13 @@
|
|
|
196
201
|
"enableFileWatching": {
|
|
197
202
|
"type": "boolean",
|
|
198
203
|
"description": "Enable automatic reindexing on file changes",
|
|
199
|
-
"default":
|
|
204
|
+
"default": true
|
|
205
|
+
},
|
|
206
|
+
"maxWatchedFiles": {
|
|
207
|
+
"type": "integer",
|
|
208
|
+
"description": "Maximum candidate source files allowed for watcher startup",
|
|
209
|
+
"minimum": 1,
|
|
210
|
+
"default": 25000
|
|
200
211
|
},
|
|
201
212
|
"workerPoolSize": {
|
|
202
213
|
"type": "integer",
|
|
@@ -207,7 +218,8 @@
|
|
|
207
218
|
},
|
|
208
219
|
"default": {
|
|
209
220
|
"concurrency": 8,
|
|
210
|
-
"enableFileWatching":
|
|
221
|
+
"enableFileWatching": true,
|
|
222
|
+
"maxWatchedFiles": 25000
|
|
211
223
|
}
|
|
212
224
|
},
|
|
213
225
|
"slice": {
|
|
@@ -376,6 +388,68 @@
|
|
|
376
388
|
"enabled": true,
|
|
377
389
|
"strictVersioning": true
|
|
378
390
|
}
|
|
391
|
+
},
|
|
392
|
+
"semantic": {
|
|
393
|
+
"type": "object",
|
|
394
|
+
"description": "Semantic retrieval and generated summary configuration",
|
|
395
|
+
"properties": {
|
|
396
|
+
"enabled": {
|
|
397
|
+
"type": "boolean",
|
|
398
|
+
"default": false
|
|
399
|
+
},
|
|
400
|
+
"alpha": {
|
|
401
|
+
"type": "number",
|
|
402
|
+
"minimum": 0,
|
|
403
|
+
"maximum": 1,
|
|
404
|
+
"default": 0.6
|
|
405
|
+
},
|
|
406
|
+
"provider": {
|
|
407
|
+
"type": "string",
|
|
408
|
+
"enum": ["api", "local", "mock"],
|
|
409
|
+
"default": "mock"
|
|
410
|
+
},
|
|
411
|
+
"model": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"default": "all-MiniLM-L6-v2"
|
|
414
|
+
},
|
|
415
|
+
"generateSummaries": {
|
|
416
|
+
"type": "boolean",
|
|
417
|
+
"default": false
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"default": {
|
|
421
|
+
"enabled": false,
|
|
422
|
+
"alpha": 0.6,
|
|
423
|
+
"provider": "mock",
|
|
424
|
+
"model": "all-MiniLM-L6-v2",
|
|
425
|
+
"generateSummaries": false
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
"prefetch": {
|
|
429
|
+
"type": "object",
|
|
430
|
+
"description": "Predictive prefetch configuration",
|
|
431
|
+
"properties": {
|
|
432
|
+
"enabled": {
|
|
433
|
+
"type": "boolean",
|
|
434
|
+
"default": false
|
|
435
|
+
},
|
|
436
|
+
"maxBudgetPercent": {
|
|
437
|
+
"type": "integer",
|
|
438
|
+
"minimum": 1,
|
|
439
|
+
"maximum": 100,
|
|
440
|
+
"default": 20
|
|
441
|
+
},
|
|
442
|
+
"warmTopN": {
|
|
443
|
+
"type": "integer",
|
|
444
|
+
"minimum": 1,
|
|
445
|
+
"default": 50
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
"default": {
|
|
449
|
+
"enabled": false,
|
|
450
|
+
"maxBudgetPercent": 20,
|
|
451
|
+
"warmTopN": 50
|
|
452
|
+
}
|
|
379
453
|
}
|
|
380
454
|
}
|
|
381
455
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface EdgeAccuracyScore {
|
|
2
|
+
language: string;
|
|
3
|
+
cases: number;
|
|
4
|
+
precision: number;
|
|
5
|
+
recall: number;
|
|
6
|
+
f1: number;
|
|
7
|
+
strategyAccuracy: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function evaluateEdgeAccuracySuite(): EdgeAccuracyScore[];
|
|
10
|
+
//# sourceMappingURL=edgeAccuracy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edgeAccuracy.d.ts","sourceRoot":"","sources":["../../src/benchmark/edgeAccuracy.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAmFD,wBAAgB,yBAAyB,IAAI,iBAAiB,EAAE,CAsD/D"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { PythonAdapter } from "../indexer/adapter/python.js";
|
|
4
|
+
import { GoAdapter } from "../indexer/adapter/go.js";
|
|
5
|
+
import { JavaAdapter } from "../indexer/adapter/java.js";
|
|
6
|
+
function buildCall(calleeIdentifier) {
|
|
7
|
+
return {
|
|
8
|
+
callerNodeId: "benchmark:caller",
|
|
9
|
+
calleeIdentifier,
|
|
10
|
+
isResolved: false,
|
|
11
|
+
callType: "function",
|
|
12
|
+
range: {
|
|
13
|
+
startLine: 1,
|
|
14
|
+
startCol: 0,
|
|
15
|
+
endLine: 1,
|
|
16
|
+
endCol: 1,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function toStringMap(source) {
|
|
21
|
+
return new Map(Object.entries(source));
|
|
22
|
+
}
|
|
23
|
+
function toNamespaceMap(source) {
|
|
24
|
+
const out = new Map();
|
|
25
|
+
for (const [key, value] of Object.entries(source)) {
|
|
26
|
+
out.set(key, new Map(Object.entries(value)));
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
function loadFixture() {
|
|
31
|
+
const path = join(process.cwd(), "tests/benchmark/edge-accuracy/cases.json");
|
|
32
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
33
|
+
}
|
|
34
|
+
function buildContext(input) {
|
|
35
|
+
return {
|
|
36
|
+
call: buildCall(input.call),
|
|
37
|
+
importedNameToSymbolIds: toStringMap(input.importedNameToSymbolIds),
|
|
38
|
+
namespaceImports: toNamespaceMap(input.namespaceImports),
|
|
39
|
+
nameToSymbolIds: toStringMap(input.nameToSymbolIds),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function getResolver(language) {
|
|
43
|
+
switch (language) {
|
|
44
|
+
case "python":
|
|
45
|
+
return new PythonAdapter();
|
|
46
|
+
case "go":
|
|
47
|
+
return new GoAdapter();
|
|
48
|
+
case "java":
|
|
49
|
+
return new JavaAdapter();
|
|
50
|
+
default:
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function computeF1(precision, recall) {
|
|
55
|
+
if (precision <= 0 || recall <= 0) {
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
return (2 * precision * recall) / (precision + recall);
|
|
59
|
+
}
|
|
60
|
+
export function evaluateEdgeAccuracySuite() {
|
|
61
|
+
const fixture = loadFixture();
|
|
62
|
+
const byLanguage = new Map();
|
|
63
|
+
for (const scenario of fixture.cases) {
|
|
64
|
+
const list = byLanguage.get(scenario.language) ?? [];
|
|
65
|
+
list.push(scenario);
|
|
66
|
+
byLanguage.set(scenario.language, list);
|
|
67
|
+
}
|
|
68
|
+
const scores = [];
|
|
69
|
+
for (const [language, scenarios] of byLanguage) {
|
|
70
|
+
const adapter = getResolver(language);
|
|
71
|
+
let truePositives = 0;
|
|
72
|
+
let predictedPositives = 0;
|
|
73
|
+
let expectedPositives = 0;
|
|
74
|
+
let strategyMatches = 0;
|
|
75
|
+
for (const scenario of scenarios) {
|
|
76
|
+
const result = adapter?.resolveCall?.(buildContext(scenario)) ?? null;
|
|
77
|
+
const predictedResolved = Boolean(result?.isResolved);
|
|
78
|
+
if (scenario.expectedResolved) {
|
|
79
|
+
expectedPositives += 1;
|
|
80
|
+
}
|
|
81
|
+
if (predictedResolved) {
|
|
82
|
+
predictedPositives += 1;
|
|
83
|
+
}
|
|
84
|
+
if (scenario.expectedResolved && predictedResolved) {
|
|
85
|
+
truePositives += 1;
|
|
86
|
+
}
|
|
87
|
+
const predictedStrategy = result?.strategy ?? "unresolved";
|
|
88
|
+
if (predictedStrategy === scenario.expectedStrategy) {
|
|
89
|
+
strategyMatches += 1;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const precision = predictedPositives > 0 ? truePositives / predictedPositives : 0;
|
|
93
|
+
const recall = expectedPositives > 0 ? truePositives / expectedPositives : 0;
|
|
94
|
+
const f1 = computeF1(precision, recall);
|
|
95
|
+
scores.push({
|
|
96
|
+
language,
|
|
97
|
+
cases: scenarios.length,
|
|
98
|
+
precision,
|
|
99
|
+
recall,
|
|
100
|
+
f1,
|
|
101
|
+
strategyAccuracy: scenarios.length > 0 ? strategyMatches / scenarios.length : 0,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return scores.sort((a, b) => a.language.localeCompare(b.language));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=edgeAccuracy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edgeAccuracy.js","sourceRoot":"","sources":["../../src/benchmark/edgeAccuracy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/benchmark/threshold.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,OAAO,EAAE,iBAAiB,CAAC;QAC3B,WAAW,EAAE,iBAAiB,CAAC;QAC/B,eAAe,EAAE,iBAAiB,CAAC;QACnC,QAAQ,EAAE,iBAAiB,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACzC,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAI3C,QAAQ,CACN,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,yBAAyB;IAuC5B,OAAO,CAAC,cAAc;CAyGvB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAG3E;
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/benchmark/threshold.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,OAAO,EAAE,iBAAiB,CAAC;QAC3B,WAAW,EAAE,iBAAiB,CAAC;QAC/B,eAAe,EAAE,iBAAiB,CAAC;QACnC,QAAQ,EAAE,iBAAiB,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACzC,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAI3C,QAAQ,CACN,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,yBAAyB;IAuC5B,OAAO,CAAC,cAAc;CAyGvB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAG3E;AAoBD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAmDpC;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,GACf,IAAI,CAON"}
|
|
@@ -119,6 +119,17 @@ export function loadThresholdConfig(configPath) {
|
|
|
119
119
|
const content = readFileSync(configPath, "utf-8");
|
|
120
120
|
return JSON.parse(content);
|
|
121
121
|
}
|
|
122
|
+
function normalizeBaselineDerivedMetrics(metrics) {
|
|
123
|
+
const normalized = { ...metrics };
|
|
124
|
+
const indexTimePerFile = normalized.indexTimePerFile;
|
|
125
|
+
const symbolsPerFile = normalized.symbolsPerFile;
|
|
126
|
+
if (typeof indexTimePerFile === "number" &&
|
|
127
|
+
typeof symbolsPerFile === "number" &&
|
|
128
|
+
symbolsPerFile > 0) {
|
|
129
|
+
normalized.indexTimePerSymbol = indexTimePerFile / symbolsPerFile;
|
|
130
|
+
}
|
|
131
|
+
return normalized;
|
|
132
|
+
}
|
|
122
133
|
export function loadBaselineMetrics(baselinePath) {
|
|
123
134
|
if (!existsSync(baselinePath)) {
|
|
124
135
|
return undefined;
|
|
@@ -127,7 +138,7 @@ export function loadBaselineMetrics(baselinePath) {
|
|
|
127
138
|
const baseline = JSON.parse(content);
|
|
128
139
|
if (baseline.metrics) {
|
|
129
140
|
const metrics = baseline.metrics;
|
|
130
|
-
return {
|
|
141
|
+
return normalizeBaselineDerivedMetrics({
|
|
131
142
|
indexTimePerFile: metrics.indexTimePerFile,
|
|
132
143
|
indexTimePerSymbol: metrics.indexTimePerSymbol,
|
|
133
144
|
sliceBuildTimeMs: metrics.sliceBuildTimeMs,
|
|
@@ -138,7 +149,7 @@ export function loadBaselineMetrics(baselinePath) {
|
|
|
138
149
|
exportedSymbolRatio: metrics.exportedSymbolRatio,
|
|
139
150
|
avgCardTokens: metrics.avgCardTokens,
|
|
140
151
|
avgSkeletonTokens: metrics.avgSkeletonTokens,
|
|
141
|
-
};
|
|
152
|
+
});
|
|
142
153
|
}
|
|
143
154
|
if (baseline.results && baseline.results[0]) {
|
|
144
155
|
const result = baseline.results[0];
|
|
@@ -159,7 +170,7 @@ export function loadBaselineMetrics(baselinePath) {
|
|
|
159
170
|
metrics.avgCardTokens = result.sdlMcp.avgCardTokens;
|
|
160
171
|
metrics.avgSkeletonTokens = result.sdlMcp.avgSkeletonTokens;
|
|
161
172
|
}
|
|
162
|
-
return metrics;
|
|
173
|
+
return normalizeBaselineDerivedMetrics(metrics);
|
|
163
174
|
}
|
|
164
175
|
return undefined;
|
|
165
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/benchmark/threshold.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"threshold.js","sourceRoot":"","sources":["../../src/benchmark/threshold.ts"],"names":[],"mappings":"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"}
|