sigmap 8.9.1 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +589 -182
- package/CHANGELOG.md +38 -0
- package/README.md +7 -3
- package/gen-context.js +759 -212
- package/llms-full.txt +4 -2
- package/llms.txt +2 -2
- package/package.json +10 -3
- package/packages/cli/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/config/defaults.js +3 -0
- package/src/conventions/extract.js +13 -3
- package/src/conventions/fix.js +4 -1
- package/src/extractors/javascript.js +4 -4
- package/src/extractors/typescript.js +5 -5
- package/src/format/terse.js +86 -0
- package/src/graph/builder.js +124 -16
- package/src/graph/impact.js +2 -2
- package/src/health/scorer.js +172 -97
- package/src/judge/judge-engine.js +62 -2
- package/src/mcp/server.js +1 -1
- package/src/plan/planner.js +44 -15
- package/src/review/pr-evidence.js +2 -1
- package/src/review/review-pr.js +24 -2
- package/src/util/truncate.js +42 -0
package/AGENTS.md
CHANGED
|
@@ -33,23 +33,21 @@ Always run `sigmap ask` (or `sigmap --query`) before searching for files relevan
|
|
|
33
33
|
src/extractors/python_ast.py ← ast
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
## changes (last 5 commits —
|
|
37
|
-
```
|
|
38
|
-
src/
|
|
39
|
-
src/
|
|
40
|
-
src/
|
|
41
|
-
src/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
src/
|
|
50
|
-
src/
|
|
51
|
-
src/verify/hallucination-guard.js +is +isTestPath +loadScripts ~is
|
|
52
|
-
src/verify/parsers.js +extractNpmScripts ~extractImports
|
|
36
|
+
## changes (last 5 commits — 2 days ago)
|
|
37
|
+
```
|
|
38
|
+
src/conventions/extract.js ~classifyNaming ~scoreConvention
|
|
39
|
+
src/conventions/fix.js ~buildFixList
|
|
40
|
+
src/daemon/daemon.js +daemonDir +pidFile +logFile +isAlive
|
|
41
|
+
src/extractors/javascript.js ~extract ~extractClassMembers ~extractBlock ~buildReturnHints
|
|
42
|
+
src/extractors/typescript.js ~extract ~extractInterfaceMembers ~extractClassMembers ~extractBlock
|
|
43
|
+
src/graph/builder.js +probeJs +resolveJsPath +stripJsonc +loadAliasMap
|
|
44
|
+
src/graph/impact.js ~formatImpact
|
|
45
|
+
src/health/scorer.js +gradeFor +composeHealth +score ~score
|
|
46
|
+
src/judge/judge-engine.js +extracts +claimGrounding ~groundedness ~judge
|
|
47
|
+
src/plan/planner.js +createPlan ~createPlan
|
|
48
|
+
src/review/pr-evidence.js ~formatPrEvidenceMarkdown
|
|
49
|
+
src/review/review-pr.js ~reviewPr
|
|
50
|
+
src/util/truncate.js +members +capWithNotice +block +capMembersWithNotice
|
|
53
51
|
```
|
|
54
52
|
|
|
55
53
|
## packages
|
|
@@ -97,22 +95,6 @@ function write(context, cwd, opts = {}) :70-93
|
|
|
97
95
|
function _confidenceMeta(opts) :95-102
|
|
98
96
|
```
|
|
99
97
|
|
|
100
|
-
### packages/adapters/openai.js
|
|
101
|
-
```
|
|
102
|
-
module.exports = { name, format, outputPath } :70-70
|
|
103
|
-
function format(context, opts = {}) → string :29-49
|
|
104
|
-
function outputPath(cwd) → string :57-59
|
|
105
|
-
function _confidenceMeta(opts) :61-68
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### packages/adapters/windsurf.js
|
|
109
|
-
```
|
|
110
|
-
module.exports = { name, format, outputPath } :56-56
|
|
111
|
-
function format(context, opts = {}) → string :23-36
|
|
112
|
-
function _confidenceMeta(opts) :38-45
|
|
113
|
-
function outputPath(cwd) → string :52-54
|
|
114
|
-
```
|
|
115
|
-
|
|
116
98
|
### packages/adapters/index.js
|
|
117
99
|
```
|
|
118
100
|
module.exports = { getAdapter, listAdapters, adapt, outputsToAdapters } :81-81
|
|
@@ -130,6 +112,14 @@ function format(context, opts) :8-20
|
|
|
130
112
|
function write(context, cwd, opts) :22-25
|
|
131
113
|
```
|
|
132
114
|
|
|
115
|
+
### packages/adapters/openai.js
|
|
116
|
+
```
|
|
117
|
+
module.exports = { name, format, outputPath } :70-70
|
|
118
|
+
function format(context, opts = {}) → string :29-49
|
|
119
|
+
function outputPath(cwd) → string :57-59
|
|
120
|
+
function _confidenceMeta(opts) :61-68
|
|
121
|
+
```
|
|
122
|
+
|
|
133
123
|
### packages/adapters/willow.js
|
|
134
124
|
```
|
|
135
125
|
module.exports = { name, format, outputPath, write } :200-200
|
|
@@ -141,12 +131,32 @@ async function postAtomWithRetry(atom, mcpUrl, timeoutMs, maxRetries) → Promis
|
|
|
141
131
|
async function write(context, cwd, opts = {}) → Promise<void> :155-198
|
|
142
132
|
```
|
|
143
133
|
|
|
134
|
+
### packages/adapters/windsurf.js
|
|
135
|
+
```
|
|
136
|
+
module.exports = { name, format, outputPath } :56-56
|
|
137
|
+
function format(context, opts = {}) → string :23-36
|
|
138
|
+
function _confidenceMeta(opts) :38-45
|
|
139
|
+
function outputPath(cwd) → string :52-54
|
|
140
|
+
```
|
|
141
|
+
|
|
144
142
|
### packages/cli/index.js
|
|
145
143
|
```
|
|
146
144
|
module.exports = { CLI_ENTRY, run } :58-63
|
|
147
145
|
function run(argv, cwd) → void :36-56
|
|
148
146
|
```
|
|
149
147
|
|
|
148
|
+
### packages/core/index.js
|
|
149
|
+
```
|
|
150
|
+
module.exports = { extract, rank, buildSigIndex, scan, score, adapt } :254-267
|
|
151
|
+
function _resolveExtractor(language) :64-71
|
|
152
|
+
function extract(src, language) → string[] :91-120
|
|
153
|
+
function rank(query, sigIndex, opts) → { file: string, score: nu :143-150
|
|
154
|
+
function buildSigIndex(cwd) → Map<string, string[]> :162-169
|
|
155
|
+
function scan(sigs, filePath) → { safe: string[], redacte :185-192
|
|
156
|
+
function score(cwd) → { * score: number, * grad :215-222
|
|
157
|
+
function adapt(context, adapterName, opts = {}) → string :241-249
|
|
158
|
+
```
|
|
159
|
+
|
|
150
160
|
### packages/core/README.md
|
|
151
161
|
```
|
|
152
162
|
h1 sigmap-core
|
|
@@ -167,66 +177,15 @@ code-fence js
|
|
|
167
177
|
code-fence ---
|
|
168
178
|
```
|
|
169
179
|
|
|
170
|
-
### packages/core/index.js
|
|
171
|
-
```
|
|
172
|
-
module.exports = { extract, rank, buildSigIndex, scan, score, adapt } :254-267
|
|
173
|
-
function _resolveExtractor(language) :64-71
|
|
174
|
-
function extract(src, language) → string[] :91-120
|
|
175
|
-
function rank(query, sigIndex, opts) → { file: string, score: nu :143-150
|
|
176
|
-
function buildSigIndex(cwd) → Map<string, string[]> :162-169
|
|
177
|
-
function scan(sigs, filePath) → { safe: string[], redacte :185-192
|
|
178
|
-
function score(cwd) → { * score: number, * grad :215-222
|
|
179
|
-
function adapt(context, adapterName, opts = {}) → string :241-249
|
|
180
|
-
```
|
|
181
|
-
|
|
182
180
|
## src
|
|
183
181
|
|
|
184
|
-
### src/format/usage-guidance.js
|
|
185
|
-
```
|
|
186
|
-
module.exports = { usageBlock } :28-28
|
|
187
|
-
function usageBlock() :12-26
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### src/mcp/handlers.js
|
|
191
|
-
```
|
|
192
|
-
module.exports = { readContext, searchSignatures, getMap, createCheckpoint, getRouting, explainFile, listModules, queryContext, getImpact, getLines, readMemory } :551-551
|
|
193
|
-
function _readContextFiles(cwd) :10-17
|
|
194
|
-
function readContext(args, cwd) :32-62
|
|
195
|
-
function searchSignatures(args, cwd) :70-95
|
|
196
|
-
function getMap(args, cwd) :103-126
|
|
197
|
-
function createCheckpoint(args, cwd) :138-215
|
|
198
|
-
function getRouting(args, cwd) :224-261
|
|
199
|
-
function explainFile(args, cwd) :269-356
|
|
200
|
-
function listModules(args, cwd) :364-403
|
|
201
|
-
function queryContext(args, cwd) :411-429
|
|
202
|
-
function getImpact(args, cwd) :437-449
|
|
203
|
-
function getLines(args, cwd) :458-506
|
|
204
|
-
function readMemory(args, cwd) :514-549
|
|
205
|
-
```
|
|
206
|
-
|
|
207
182
|
### src/mcp/server.js
|
|
208
183
|
```
|
|
209
|
-
module.exports = { start } :
|
|
184
|
+
module.exports = { start } :140-140
|
|
210
185
|
function respond(id, result) :28-30
|
|
211
186
|
function respondError(id, code, message) :32-36
|
|
212
|
-
function dispatch(msg, cwd) :41-
|
|
213
|
-
function start(cwd) :
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### src/mcp/tools.js
|
|
217
|
-
```
|
|
218
|
-
module.exports = { TOOLS } :220-220
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### src/session/notes.js
|
|
222
|
-
```
|
|
223
|
-
module.exports = { notesPath, addNote, readNotes, formatNotes, clearNotes } :99-99
|
|
224
|
-
function notesPath(cwd) :23-25
|
|
225
|
-
function _currentBranch(cwd) :27-35
|
|
226
|
-
function addNote(cwd, text, opts = {}) :45-58
|
|
227
|
-
function readNotes(cwd, limit = 0) → object[] :66-78
|
|
228
|
-
function formatNotes(notes) :81-91
|
|
229
|
-
function clearNotes(cwd) :94-97
|
|
187
|
+
function dispatch(msg, cwd) :41-107
|
|
188
|
+
function start(cwd) :112-138
|
|
230
189
|
```
|
|
231
190
|
|
|
232
191
|
### src/analysis/coverage-score.js
|
|
@@ -246,6 +205,16 @@ function explainInclusion(fileEntries, budgetLimit) :43-74
|
|
|
246
205
|
function explainExclusion(dropped, reason) :76-78
|
|
247
206
|
```
|
|
248
207
|
|
|
208
|
+
### src/cache/freshen.js
|
|
209
|
+
```
|
|
210
|
+
module.exports = { freshen } :123-123
|
|
211
|
+
function _readConfig(cwd) :35-40
|
|
212
|
+
function _pkgVersion(cwd) :42-45
|
|
213
|
+
function _contextMtime(cwd) :48-54
|
|
214
|
+
function _walk(dir, exclude, out, depth, maxDepth) :56-66
|
|
215
|
+
function freshen(cwd, opts = {}) → number :74-121
|
|
216
|
+
```
|
|
217
|
+
|
|
249
218
|
### src/cache/sig-cache.js
|
|
250
219
|
```
|
|
251
220
|
module.exports = { loadCache, saveCache, getChangedFiles, updateCacheEntries } :105-105
|
|
@@ -258,7 +227,7 @@ function updateCacheEntries(cache, extracted) :96-103
|
|
|
258
227
|
|
|
259
228
|
### src/config/defaults.js
|
|
260
229
|
```
|
|
261
|
-
module.exports = { DEFAULTS } :
|
|
230
|
+
module.exports = { DEFAULTS } :161-161
|
|
262
231
|
```
|
|
263
232
|
|
|
264
233
|
### src/config/loader.js
|
|
@@ -271,6 +240,82 @@ function loadConfig(cwd) → object :236-307
|
|
|
271
240
|
function deepClone(obj) :309-311
|
|
272
241
|
```
|
|
273
242
|
|
|
243
|
+
### src/conventions/ci.js
|
|
244
|
+
```
|
|
245
|
+
module.exports = { ciGate, DEFAULT_MIN } :48-48
|
|
246
|
+
function ciGate(result, opts = {}, prior = null) → { score:number, min:numbe :25-46
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### src/conventions/conflicts.js
|
|
250
|
+
```
|
|
251
|
+
module.exports = { analyzeConflicts, toNamingStyle, renameSuggestion } :111-111
|
|
252
|
+
function _splitName(filename) :13-18
|
|
253
|
+
function _words(stem) :21-29
|
|
254
|
+
function toNamingStyle(stem, style) → string :39-49
|
|
255
|
+
function renameSuggestion(filename, dominantStyle) :52-56
|
|
256
|
+
function analyzeConflicts(result) → { hasConflicts: boolean, :72-109
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### src/conventions/extract.js
|
|
260
|
+
```
|
|
261
|
+
module.exports = { classifyNaming, scoreConvention, extractConventions } :188-188
|
|
262
|
+
function classifyNaming(basename) → 'PascalCase'|'camelCase'| :40-51
|
|
263
|
+
function scoreConvention(labels, refs) → { dominant: string|null, :65-103
|
|
264
|
+
function _jsExportStyle(src) :106-188
|
|
265
|
+
function _detectTestFramework(cwd, files) :122-150
|
|
266
|
+
function extractConventions(cwd, files) → { fileNaming: object, exp :159-186
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### src/conventions/fix.js
|
|
270
|
+
```
|
|
271
|
+
module.exports = { buildFixList } :61-61
|
|
272
|
+
function _renamePath(relPath, style) :24-31
|
|
273
|
+
function buildFixList(cwd, files, conventions) → { dominant: string|null, :40-59
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### src/conventions/inject.js
|
|
277
|
+
```
|
|
278
|
+
module.exports = { renderConventionsBlock, injectConventions, START, END } :98-98
|
|
279
|
+
function _conventionLine(label, conv) :29-38
|
|
280
|
+
function renderConventionsBlock(result, version) → string :46-72
|
|
281
|
+
function injectConventions(existing, block) → string :82-96
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### src/conventions/report.js
|
|
285
|
+
```
|
|
286
|
+
module.exports = { scoreReport, snapshot, overallScore } :75-75
|
|
287
|
+
function overallScore(result) :14-22
|
|
288
|
+
function scoreReport(result, prior) → { conventions: object[], :31-55
|
|
289
|
+
function snapshot(result, ts) :62-73
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### src/conventions/update.js
|
|
293
|
+
```
|
|
294
|
+
module.exports = { changedSince, planUpdate } :46-46
|
|
295
|
+
function changedSince(files, sinceMs) → string[] :20-26
|
|
296
|
+
function planUpdate(cwd, files, snapshotPath) → { snapshotExists: boolean :35-44
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### src/create/orchestrate.js
|
|
300
|
+
```
|
|
301
|
+
module.exports = { orchestrate, TOTAL } :86-86
|
|
302
|
+
function orchestrate(ctx = {}, cwd) → { task: string|null, step :34-84
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### src/daemon/daemon.js
|
|
306
|
+
```
|
|
307
|
+
module.exports = { start, stop, status, pidFile, logFile, isAlive, readPid } :20-20
|
|
308
|
+
function daemonDir(cwd) :22-24
|
|
309
|
+
function pidFile(cwd) :26-28
|
|
310
|
+
function logFile(cwd) :30-32
|
|
311
|
+
function isAlive(pid) :35-44
|
|
312
|
+
function readPid(cwd) :47-55
|
|
313
|
+
function removePidFile(cwd) :57-61
|
|
314
|
+
function status(cwd) → { running: boolean, pid: :66-72
|
|
315
|
+
function start(cwd, opts = {}) → { status: 'started'|'alre :82-105
|
|
316
|
+
function stop(cwd) → { status: 'stopped'|'not- :112-124
|
|
317
|
+
```
|
|
318
|
+
|
|
274
319
|
### src/discovery/framework-detector.js
|
|
275
320
|
```
|
|
276
321
|
module.exports = { detectFrameworks } :7-7
|
|
@@ -314,12 +359,12 @@ module.exports = { REGISTRY } :175-175
|
|
|
314
359
|
### src/discovery/source-root-resolver.js
|
|
315
360
|
```
|
|
316
361
|
module.exports = { resolveSourceRoots } :11-11
|
|
317
|
-
function resolveSourceRoots(cwd, opts = {}) :16-
|
|
318
|
-
function _detectMonorepo(cwd) :
|
|
319
|
-
function _enumerateCandidates(cwd, isMonorepo, ignorePatterns, excludeList) :
|
|
320
|
-
function _applySpecialRules(scored, cwd, primaryFw, fwEntry, frameworks) :
|
|
321
|
-
function _dedupeNested(scored) :
|
|
322
|
-
function _computeConfidence(frameworks, languages, scoredCount) :
|
|
362
|
+
function resolveSourceRoots(cwd, opts = {}) :16-76
|
|
363
|
+
function _detectMonorepo(cwd) :78-87
|
|
364
|
+
function _enumerateCandidates(cwd, isMonorepo, ignorePatterns, excludeList) :89-149
|
|
365
|
+
function _applySpecialRules(scored, cwd, primaryFw, fwEntry, frameworks) :151-186
|
|
366
|
+
function _dedupeNested(scored) :188-199
|
|
367
|
+
function _computeConfidence(frameworks, languages, scoredCount) :201-205
|
|
323
368
|
```
|
|
324
369
|
|
|
325
370
|
### src/discovery/source-root-scorer.js
|
|
@@ -330,6 +375,18 @@ function scoreCandidate(dirName, fullPath, context) :43-89
|
|
|
330
375
|
function _countSourceFiles(dir, depth) :91-101
|
|
331
376
|
```
|
|
332
377
|
|
|
378
|
+
### src/doctor/diagnose.js
|
|
379
|
+
```
|
|
380
|
+
module.exports = { diagnose, formatDoctor, formatDoctorJSON } :236-236
|
|
381
|
+
function _short(p, cwd) :37-40
|
|
382
|
+
function _contextFiles(cwd) :42-49
|
|
383
|
+
function _mcpTargets(cwd) :51-65
|
|
384
|
+
function _countChangedSince(cwd, srcDirs, config, ctxMtime) :68-94
|
|
385
|
+
function diagnose(cwd, opts = {}) → { checks: Array<{id,label :101-180
|
|
386
|
+
function formatDoctor(result) :216-229
|
|
387
|
+
function formatDoctorJSON(result) :232-234
|
|
388
|
+
```
|
|
389
|
+
|
|
333
390
|
### src/eval/analyzer.js
|
|
334
391
|
```
|
|
335
392
|
module.exports = { analyzeFiles, formatAnalysisTable, formatAnalysisJSON } :235-235
|
|
@@ -343,18 +400,28 @@ function formatAnalysisTable(stats, showSlow) → string :179-213
|
|
|
343
400
|
function formatAnalysisJSON(stats) → object :221-233
|
|
344
401
|
```
|
|
345
402
|
|
|
403
|
+
### src/eval/llm-ablation.js
|
|
404
|
+
```
|
|
405
|
+
module.exports = { buildGrounding, scoreAnswer, scoreAnswerDetail, runAblation, aggregateRuns } :168-168
|
|
406
|
+
function _cleanSig(sig) :19-21
|
|
407
|
+
function buildGrounding(cwd, opts = {}) → string :34-70
|
|
408
|
+
function scoreAnswerDetail(answerText, cwd) → { total: number, issues: :78-85
|
|
409
|
+
function scoreAnswer(answerText, cwd) :88-90
|
|
410
|
+
function runAblation(tasks, cwd, complete, opts = {}) → { tasks: object[], aggreg :102-137
|
|
411
|
+
function _stats(nums) :140-144
|
|
412
|
+
function aggregateRuns(aggregates) → { runs:number, n:number, :154-166
|
|
413
|
+
```
|
|
414
|
+
|
|
346
415
|
### src/eval/runner.js
|
|
347
416
|
```
|
|
348
|
-
module.exports = { run, rank, loadTasks, buildSigIndex, formatTable, formatMetrics, tokenize } :
|
|
349
|
-
function buildSigIndex(cwd) → Map<string, string[]> :
|
|
350
|
-
function
|
|
351
|
-
function
|
|
352
|
-
function
|
|
353
|
-
function
|
|
354
|
-
function
|
|
355
|
-
function
|
|
356
|
-
function formatTable(taskResults) → string :282-290
|
|
357
|
-
function formatMetrics(metrics) → string :297-306
|
|
417
|
+
module.exports = { run, rank, loadTasks, buildSigIndex, formatTable, formatMetrics, tokenize } :256-256
|
|
418
|
+
function buildSigIndex(cwd) → Map<string, string[]> :40-82
|
|
419
|
+
function rank(query, index, topK = 10) → { file: string, score: nu :99-105
|
|
420
|
+
function estimateTokens(sigs) → number :116-119
|
|
421
|
+
function loadTasks(tasksFile) → Array<{id:string, query:s :132-154
|
|
422
|
+
function run(tasksFile, cwd, opts = {}) → { * tasks: Array<{id, que :172-219
|
|
423
|
+
function formatTable(taskResults) → string :230-238
|
|
424
|
+
function formatMetrics(metrics) → string :245-254
|
|
358
425
|
```
|
|
359
426
|
|
|
360
427
|
### src/eval/scorer.js
|
|
@@ -376,6 +443,24 @@ function scoreUsefulness(taskResult, rankingScore) :11-38
|
|
|
376
443
|
function computeUsefulnessStats(taskResults) :40-66
|
|
377
444
|
```
|
|
378
445
|
|
|
446
|
+
### src/evidence/pack.js
|
|
447
|
+
```
|
|
448
|
+
module.exports = { buildEvidencePack, formatJSON, formatMarkdown, parseAnchor, riskLabelFor, findRelatedTests, SCHEMA_VERSION } :293-301
|
|
449
|
+
function parseAnchor(sig) → { symbol: string, start: :50-58
|
|
450
|
+
function riskLabelFor(relPath) → 'generated'|'test'|'migra :70-81
|
|
451
|
+
function stemOf(relPath) :84-87
|
|
452
|
+
function testTargetStem(relPath) → string :99-105
|
|
453
|
+
function findRelatedTests(relPath, allFiles) → string[] :116-127
|
|
454
|
+
function reasonFor(signals) :130-141
|
|
455
|
+
function sigTokens(sigs) :144-146
|
|
456
|
+
function canonicalize(value) → string :153-155
|
|
457
|
+
function sortKeys(value) :157-165
|
|
458
|
+
function buildEvidencePack(query, cwd, opts = {}) → object :178-249
|
|
459
|
+
function ranked0Empty(query) :252-254
|
|
460
|
+
function formatJSON(pack) :257-259
|
|
461
|
+
function formatMarkdown(pack) :262-291
|
|
462
|
+
```
|
|
463
|
+
|
|
379
464
|
### src/extractors/coverage.js
|
|
380
465
|
```
|
|
381
466
|
module.exports = { buildTestIndex, isTested } :79-79
|
|
@@ -428,6 +513,13 @@ function extractRDeps(src) → string[] :76-90
|
|
|
428
513
|
function buildReverseDepMap(forwardMap) → Map<string, string[]> :97-108
|
|
429
514
|
```
|
|
430
515
|
|
|
516
|
+
### src/extractors/dispatch.js
|
|
517
|
+
```
|
|
518
|
+
module.exports = { extractFile, langFor } :112-112
|
|
519
|
+
function langFor(filePathOrName) :86-91
|
|
520
|
+
function extractFile(filePathOrName, src) → string[] :99-110
|
|
521
|
+
```
|
|
522
|
+
|
|
431
523
|
### src/extractors/dockerfile.js
|
|
432
524
|
```
|
|
433
525
|
module.exports = { extract } :49-49
|
|
@@ -482,7 +574,7 @@ function normalizeType(type) :55-58
|
|
|
482
574
|
### src/extractors/javascript.js
|
|
483
575
|
```
|
|
484
576
|
module.exports = { extract } :147-147
|
|
485
|
-
function extract(src) → string[] :
|
|
577
|
+
function extract(src) → string[] :13-112
|
|
486
578
|
function extractBlock(src, startIndex) :88-98
|
|
487
579
|
function extractClassMembers(block, returnHints) :103-124
|
|
488
580
|
function buildReturnHints(src) :119-121
|
|
@@ -532,9 +624,9 @@ function normalizeType(type) :66-69
|
|
|
532
624
|
|
|
533
625
|
### src/extractors/prdiff.js
|
|
534
626
|
```
|
|
535
|
-
module.exports = { diffSignatures, extractName } :
|
|
627
|
+
module.exports = { diffSignatures, extractName } :70-70
|
|
536
628
|
function diffSignatures(baseSigs, currentSigs) → {added:string[], removed: :9-36
|
|
537
|
-
function extractName(sig) :
|
|
629
|
+
function extractName(sig) :47-70
|
|
538
630
|
```
|
|
539
631
|
|
|
540
632
|
### src/extractors/properties.js
|
|
@@ -549,21 +641,6 @@ module.exports = { extract } :63-63
|
|
|
549
641
|
function extract(src) → string[] :10-63
|
|
550
642
|
```
|
|
551
643
|
|
|
552
|
-
### src/extractors/python.js
|
|
553
|
-
```
|
|
554
|
-
module.exports = { extract, tryNativeExtract } :262-262
|
|
555
|
-
function pyBlockEnd(srcLines, startLine) → number :14-24
|
|
556
|
-
function tryNativeExtract(filePath) → string[]|null :32-44
|
|
557
|
-
function extract(src, filePath) → string[] :55-140
|
|
558
|
-
function extractClassMethods(stripped, startIndex) :142-161
|
|
559
|
-
function tryExtractDataclassFields(stripped, classIndex) :163-177
|
|
560
|
-
function tryExtractBaseModelFields(stripped, bodyStart) :179-194
|
|
561
|
-
function extractClassConstants(stripped, startIndex) :196-210
|
|
562
|
-
function extractReturnType(sigLine) :212-218
|
|
563
|
-
function normalizeParams(params) :220-238
|
|
564
|
-
function extractDocHint(src, fnName, fnSigLine) :240-260
|
|
565
|
-
```
|
|
566
|
-
|
|
567
644
|
### src/extractors/python_ast.py
|
|
568
645
|
```
|
|
569
646
|
def annotation_to_str(node) :25-48 # Convert an AST annotation node to a string representation
|
|
@@ -589,6 +666,21 @@ module.exports = { extract } :77-77
|
|
|
589
666
|
function extract(src) → string[] :10-75
|
|
590
667
|
```
|
|
591
668
|
|
|
669
|
+
### src/extractors/python.js
|
|
670
|
+
```
|
|
671
|
+
module.exports = { extract, tryNativeExtract } :262-262
|
|
672
|
+
function pyBlockEnd(srcLines, startLine) → number :14-24
|
|
673
|
+
function tryNativeExtract(filePath) → string[]|null :32-44
|
|
674
|
+
function extract(src, filePath) → string[] :55-140
|
|
675
|
+
function extractClassMethods(stripped, startIndex) :142-161
|
|
676
|
+
function tryExtractDataclassFields(stripped, classIndex) :163-177
|
|
677
|
+
function tryExtractBaseModelFields(stripped, bodyStart) :179-194
|
|
678
|
+
function extractClassConstants(stripped, startIndex) :196-210
|
|
679
|
+
function extractReturnType(sigLine) :212-218
|
|
680
|
+
function normalizeParams(params) :220-238
|
|
681
|
+
function extractDocHint(src, fnName, fnSigLine) :240-260
|
|
682
|
+
```
|
|
683
|
+
|
|
592
684
|
### src/extractors/r.js
|
|
593
685
|
```
|
|
594
686
|
module.exports = { extract } :273-273
|
|
@@ -681,20 +773,26 @@ module.exports = { extract } :42-42
|
|
|
681
773
|
function extract(src) → string[] :10-40
|
|
682
774
|
```
|
|
683
775
|
|
|
776
|
+
### src/extractors/typescript_react.js
|
|
777
|
+
```
|
|
778
|
+
module.exports = { extract } :60-60
|
|
779
|
+
function extract(src) → string[] :10-20
|
|
780
|
+
```
|
|
781
|
+
|
|
684
782
|
### src/extractors/typescript.js
|
|
685
783
|
```
|
|
686
784
|
module.exports = { extract } :221-221
|
|
687
|
-
function extract(src) → string[] :
|
|
785
|
+
function extract(src) → string[] :13-118
|
|
688
786
|
function extractBlock(src, startIndex) :160-170
|
|
689
787
|
function extractInterfaceMembers(block) :174-188
|
|
690
788
|
function extractClassMembers(block) :195-221
|
|
691
789
|
function normalizeParams(params) :216-219
|
|
692
790
|
```
|
|
693
791
|
|
|
694
|
-
### src/extractors/
|
|
792
|
+
### src/extractors/vue_sfc.js
|
|
695
793
|
```
|
|
696
|
-
module.exports = { extract } :
|
|
697
|
-
function extract(src) → string[] :10-
|
|
794
|
+
module.exports = { extract } :99-99
|
|
795
|
+
function extract(src) → string[] :10-68
|
|
698
796
|
```
|
|
699
797
|
|
|
700
798
|
### src/extractors/vue.js
|
|
@@ -705,12 +803,6 @@ function normalizeParams(params) :70-73
|
|
|
705
803
|
function normalizeType(type) :75-78
|
|
706
804
|
```
|
|
707
805
|
|
|
708
|
-
### src/extractors/vue_sfc.js
|
|
709
|
-
```
|
|
710
|
-
module.exports = { extract } :99-99
|
|
711
|
-
function extract(src) → string[] :10-68
|
|
712
|
-
```
|
|
713
|
-
|
|
714
806
|
### src/extractors/xml.js
|
|
715
807
|
```
|
|
716
808
|
module.exports = { extract } :46-46
|
|
@@ -780,6 +872,22 @@ function generateDashboardHtml(cwd, health) :446-496
|
|
|
780
872
|
function renderHistoryCharts(cwd, health) :498-523
|
|
781
873
|
```
|
|
782
874
|
|
|
875
|
+
### src/format/gain-terminal.js
|
|
876
|
+
```
|
|
877
|
+
module.exports = { renderSummary, renderBreakdown, humanTokens, fmtUSD, fmtDuration, fmtPct } :201-206
|
|
878
|
+
function humanTokens(n) :27-33
|
|
879
|
+
function fmtInt(n) :35-37
|
|
880
|
+
function fmtUSD(n) :39-43
|
|
881
|
+
function fmtDuration(ms) :45-51
|
|
882
|
+
function fmtPct(p) :53-55
|
|
883
|
+
function colorPct(p, text) :57-61
|
|
884
|
+
function pad(s, w, align) :63-68
|
|
885
|
+
function bar(pct, width) :71-76
|
|
886
|
+
function impactBar(sharePct, width) :79-82
|
|
887
|
+
function renderSummary(agg, opts = {}) → string :94-153
|
|
888
|
+
function renderBreakdown(agg) → string :160-199
|
|
889
|
+
```
|
|
890
|
+
|
|
783
891
|
### src/format/llm-txt.js
|
|
784
892
|
```
|
|
785
893
|
module.exports = { format, outputPath } :3-3
|
|
@@ -791,9 +899,25 @@ function format(context, cwd, version) :7-28
|
|
|
791
899
|
```
|
|
792
900
|
module.exports = { format, outputPath } :5-5
|
|
793
901
|
function outputPath(cwd) :7-7
|
|
794
|
-
function getShortCommit(cwd) :9-
|
|
795
|
-
function detectVersion(cwd) :
|
|
796
|
-
function format(context, cwd, writtenFiles, sigmapVersion) :
|
|
902
|
+
function getShortCommit(cwd) :9-11
|
|
903
|
+
function detectVersion(cwd) :13-19
|
|
904
|
+
function format(context, cwd, writtenFiles, sigmapVersion) :21-69
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
### src/format/terse.js
|
|
908
|
+
```
|
|
909
|
+
module.exports = { encodeTerseSig, encodeTerseSigs, measureTerse, splitAnchor } :86-86
|
|
910
|
+
function splitAnchor(sig) → { text: string, suffix: s :25-30
|
|
911
|
+
function encodeTerseSig(sig) → string :37-50
|
|
912
|
+
function encodeTerseSigs(sigs) → string[] :57-59
|
|
913
|
+
function _tokens(sigs) :62-64
|
|
914
|
+
function measureTerse(sigsList) → { beforeTokens: number, a :72-84
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
### src/format/usage-guidance.js
|
|
918
|
+
```
|
|
919
|
+
module.exports = { usageBlock } :28-28
|
|
920
|
+
function usageBlock() :12-26
|
|
797
921
|
```
|
|
798
922
|
|
|
799
923
|
### src/format/verify-report.js
|
|
@@ -808,14 +932,42 @@ function renderReportMarkdown(result) :144-162
|
|
|
808
932
|
|
|
809
933
|
### src/graph/builder.js
|
|
810
934
|
```
|
|
811
|
-
module.exports = { build, buildFromCwd, extractFileDeps, normalizePath } :
|
|
935
|
+
module.exports = { build, buildFromCwd, extractFileDeps, normalizePath, loadAliasMap, resolveAlias } :494-494
|
|
812
936
|
function normalizePath(p) :17-19
|
|
813
|
-
function
|
|
814
|
-
function
|
|
815
|
-
function
|
|
816
|
-
function
|
|
817
|
-
function
|
|
818
|
-
function
|
|
937
|
+
function probeJs(base, fileSet) → string|null :40-53
|
|
938
|
+
function resolveJsPath(dir, importStr, fileSet) → string|null :62-64
|
|
939
|
+
function stripJsonc(src) :70-84
|
|
940
|
+
function loadAliasMap(cwd) → { baseUrl: string|null, e :96-117
|
|
941
|
+
function resolveAlias(spec, aliasMap, fileSet) → string|null :126-150
|
|
942
|
+
function escapeRegex(s) :157-159
|
|
943
|
+
function resolveRPath(dir, importStr, fileSet, cwd) :161-176
|
|
944
|
+
function extractFileDeps(filePath, content, fileSet, cwd, ctx) → string[] :190-330
|
|
945
|
+
function build(files, cwd, ctx) → { forward: Map<string,str :387-426
|
|
946
|
+
function buildFromCwd(cwd, opts) → { forward: Map<string,str :438-492
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
### src/graph/call-graph.js
|
|
950
|
+
```
|
|
951
|
+
module.exports = { buildCallGraph, methodImpact, methodCallees, formatCallGraph, formatCallGraphJSON, extractDefs, maskJs, maskPy } :397-401
|
|
952
|
+
function normalizePath(p) :35-35
|
|
953
|
+
function toRel(cwd, f) :36-36
|
|
954
|
+
function symId(cwd, absFile, name) :37-37
|
|
955
|
+
function maskJs(src) :43-59
|
|
956
|
+
function maskPy(src) :61-78
|
|
957
|
+
function matchDelim(masked, openIdx, open, close) :81-88
|
|
958
|
+
function lineAt(src, idx) :90-95
|
|
959
|
+
function jsDefs(masked) :100-206
|
|
960
|
+
function pyDefs(masked) :168-188
|
|
961
|
+
function extractDefs(filePath, src) :190-195
|
|
962
|
+
function callsInRange(masked, start, end) :198-210
|
|
963
|
+
function _walk(dir, excludeSet, out, depth) :214-227
|
|
964
|
+
function buildCallGraph(cwd, opts = {}) → { * forward: Map<string,s :243-316
|
|
965
|
+
function _resolveSymbol(symbol, defs) :319-324
|
|
966
|
+
function _bfs(seedIds, graph, maxDepth) :327-340
|
|
967
|
+
function methodImpact(symbol, cwd, opts = {}) → { symbol:string, resolved :350-356
|
|
968
|
+
function methodCallees(symbol, cwd, opts = {}) → { symbol:string, resolved :362-368
|
|
969
|
+
function formatCallGraph(result, kind) :371-383
|
|
970
|
+
function formatCallGraphJSON(result, kind) :385-395
|
|
819
971
|
```
|
|
820
972
|
|
|
821
973
|
### src/graph/impact.js
|
|
@@ -833,17 +985,27 @@ function formatImpactJSON(result) → object :229-238
|
|
|
833
985
|
|
|
834
986
|
### src/health/scorer.js
|
|
835
987
|
```
|
|
836
|
-
module.exports = { score } :
|
|
837
|
-
function
|
|
988
|
+
module.exports = { score, composeHealth } :227-227
|
|
989
|
+
function gradeFor(points) :52-57
|
|
990
|
+
function composeHealth(s) → object :66-117
|
|
991
|
+
function score(cwd) :123-225
|
|
992
|
+
```
|
|
993
|
+
|
|
994
|
+
### src/init/creation-workflow.js
|
|
995
|
+
```
|
|
996
|
+
module.exports = { renderCreationWorkflowBlock, injectCreationWorkflow, START, END } :59-59
|
|
997
|
+
function renderCreationWorkflowBlock() :18-35
|
|
998
|
+
function injectCreationWorkflow(existing, block) → string :45-57
|
|
838
999
|
```
|
|
839
1000
|
|
|
840
1001
|
### src/judge/judge-engine.js
|
|
841
1002
|
```
|
|
842
|
-
module.exports = { groundedness, judge } :
|
|
843
|
-
function tokenize(text) :
|
|
844
|
-
function groundedness(response, context) :
|
|
845
|
-
function
|
|
846
|
-
function
|
|
1003
|
+
module.exports = { groundedness, claimGrounding, judge } :182-182
|
|
1004
|
+
function tokenize(text) :15-17
|
|
1005
|
+
function groundedness(response, context) :19-27
|
|
1006
|
+
function claimGrounding(response, context) → { total: number, grounded :48-78
|
|
1007
|
+
function extractContextFiles(context, cwd) :89-111
|
|
1008
|
+
function judge(response, context, opts = {}) :113-180
|
|
847
1009
|
```
|
|
848
1010
|
|
|
849
1011
|
### src/learning/weights.js
|
|
@@ -863,12 +1025,41 @@ function exportWeights(cwd, outputPath) :124-134
|
|
|
863
1025
|
function importWeights(cwd, importPath, replace) :136-152
|
|
864
1026
|
```
|
|
865
1027
|
|
|
1028
|
+
### src/map/build-ci.js
|
|
1029
|
+
```
|
|
1030
|
+
module.exports = { analyze } :91-91
|
|
1031
|
+
function readJson(p) :20-22
|
|
1032
|
+
function npmScripts(cwd, rows) :24-30
|
|
1033
|
+
function ciWorkflows(cwd, rows) :32-56
|
|
1034
|
+
function makeTargets(cwd, rows) :58-69
|
|
1035
|
+
function analyze(files, cwd) :71-89
|
|
1036
|
+
```
|
|
1037
|
+
|
|
866
1038
|
### src/map/class-hierarchy.js
|
|
867
1039
|
```
|
|
868
1040
|
module.exports = { analyze } :117-117
|
|
869
1041
|
function analyze(files, cwd) :16-117
|
|
870
1042
|
```
|
|
871
1043
|
|
|
1044
|
+
### src/map/config-manifest.js
|
|
1045
|
+
```
|
|
1046
|
+
module.exports = { analyze } :101-101
|
|
1047
|
+
function readText(p) :25-25
|
|
1048
|
+
function readJson(p) :26-26
|
|
1049
|
+
function count(obj) :27-27
|
|
1050
|
+
function manifests(cwd, rows) :29-73
|
|
1051
|
+
function configFiles(cwd) :75-81
|
|
1052
|
+
function analyze(files, cwd) :83-99
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
### src/map/env-schema.js
|
|
1056
|
+
```
|
|
1057
|
+
module.exports = { analyze } :90-90
|
|
1058
|
+
function collectMatches(re, content, into) :30-37
|
|
1059
|
+
function readExampleKeys(cwd) :39-52
|
|
1060
|
+
function analyze(files, cwd) :54-88
|
|
1061
|
+
```
|
|
1062
|
+
|
|
872
1063
|
### src/map/import-graph.js
|
|
873
1064
|
```
|
|
874
1065
|
module.exports = { analyze, extractImports, buildReverseGraph, resolveJsPath, detectCycles } :185-185
|
|
@@ -879,6 +1070,13 @@ function buildReverseGraph(graph) :131-140
|
|
|
879
1070
|
function analyze(files, cwd) :145-183
|
|
880
1071
|
```
|
|
881
1072
|
|
|
1073
|
+
### src/map/migrations.js
|
|
1074
|
+
```
|
|
1075
|
+
module.exports = { analyze } :84-84
|
|
1076
|
+
function walk(dir, cwd, depth, out) :31-62
|
|
1077
|
+
function analyze(files, cwd) :64-82
|
|
1078
|
+
```
|
|
1079
|
+
|
|
882
1080
|
### src/map/route-table.js
|
|
883
1081
|
```
|
|
884
1082
|
module.exports = { analyze } :127-127
|
|
@@ -886,28 +1084,99 @@ function shouldSkipFile(rel) :18-21
|
|
|
886
1084
|
function analyze(files, cwd) :23-125
|
|
887
1085
|
```
|
|
888
1086
|
|
|
1087
|
+
### src/mcp/handlers.js
|
|
1088
|
+
```
|
|
1089
|
+
module.exports = { readContext, searchSignatures, getMap, createCheckpoint, getRouting, explainFile, listModules, queryContext, getImpact, getLines, readMemory, getCalleeSignatures, notifyFileCreated, notifySymbolAdded, notifyFileDeleted, getDiffContext, getArchitectureOverview, verifySuggestion, squeezeOutput } :944-944
|
|
1090
|
+
function _readContextFiles(cwd) :10-17
|
|
1091
|
+
function readContext(args, cwd) :36-66
|
|
1092
|
+
function searchSignatures(args, cwd) :74-100
|
|
1093
|
+
function getMap(args, cwd) :108-131
|
|
1094
|
+
function createCheckpoint(args, cwd) :143-215
|
|
1095
|
+
function getRouting(args, cwd) :224-261
|
|
1096
|
+
function explainFile(args, cwd) :269-356
|
|
1097
|
+
function listModules(args, cwd) :364-403
|
|
1098
|
+
function queryContext(args, cwd) :411-429
|
|
1099
|
+
function getImpact(args, cwd) :437-449
|
|
1100
|
+
function getLines(args, cwd) :458-506
|
|
1101
|
+
function readMemory(args, cwd) :514-549
|
|
1102
|
+
function getCalleeSignatures(args, cwd) :558-603
|
|
1103
|
+
function _pkgVersion(cwd) :610-613
|
|
1104
|
+
function notifyFileCreated(args, cwd) :617-639
|
|
1105
|
+
function notifySymbolAdded(args, cwd) :642-662
|
|
1106
|
+
function notifyFileDeleted(args, cwd) :665-679
|
|
1107
|
+
function _changedFiles(cwd, args) :685-697
|
|
1108
|
+
function getDiffContext(args, cwd) :706-777
|
|
1109
|
+
function getArchitectureOverview(args, cwd) :786-854
|
|
1110
|
+
function verifySuggestion(args, cwd) :864-899
|
|
1111
|
+
function squeezeOutput(args, cwd) :909-942
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
### src/mcp/install.js
|
|
1115
|
+
```
|
|
1116
|
+
module.exports = { CLIENTS, listClients, installClient, resolveTarget } :142-142
|
|
1117
|
+
function resolveTarget(spec, cwd, home, useGlobal) :39-45
|
|
1118
|
+
function listClients(opts = {}) :48-62
|
|
1119
|
+
function serverArgs(scriptPath) :64-66
|
|
1120
|
+
function _installJson(filePath, scriptPath) :69-81
|
|
1121
|
+
function _installZed(filePath, scriptPath) :84-96
|
|
1122
|
+
function _installYaml(filePath, scriptPath) :99-117
|
|
1123
|
+
function installClient(client, opts = {}) → client, label, path, stat :124-140
|
|
1124
|
+
```
|
|
1125
|
+
|
|
1126
|
+
### src/mcp/tools.js
|
|
1127
|
+
```
|
|
1128
|
+
module.exports = { TOOLS } :363-363
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
### src/nudge.js
|
|
1132
|
+
```
|
|
1133
|
+
module.exports = { checkStarNudge, readUsage, usagePath, showStarNudge, RUN_THRESHOLD, SUCCESS_THRESHOLD } :92-92
|
|
1134
|
+
function usagePath(cwd) :18-18
|
|
1135
|
+
function defaultUsage() :20-25
|
|
1136
|
+
function readUsage(cwd) :27-30
|
|
1137
|
+
function writeUsageAtomic(cwd, usage) :32-38
|
|
1138
|
+
function showStarNudge(write) :52-54
|
|
1139
|
+
function checkStarNudge(cwd, runSuccess, opts = {}) → { usage, nudged :67-90
|
|
1140
|
+
```
|
|
1141
|
+
|
|
889
1142
|
### src/plan/planner.js
|
|
890
1143
|
```
|
|
891
1144
|
module.exports = { createPlan } :10-10
|
|
892
|
-
function createPlan(goal, cwd, config) :12-
|
|
1145
|
+
function createPlan(goal, cwd, config = {}) :12-94
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
### src/plan/verify-plan.js
|
|
1149
|
+
```
|
|
1150
|
+
module.exports = { verifyPlan, DEFAULT_BLAST_THRESHOLD, DEFAULT_SCOPE_THRESHOLD } :108-108
|
|
1151
|
+
function _fileExists(cwd, ref) :24-30
|
|
1152
|
+
function verifyPlan(planText, cwd, opts = {}) → { issues: object[], blast :42-106
|
|
1153
|
+
```
|
|
1154
|
+
|
|
1155
|
+
### src/retrieval/bm25.js
|
|
1156
|
+
```
|
|
1157
|
+
module.exports = { tokenize, stem, bm25rank, PATH_BOOST, STOP, expandQuery, EXPANSIONS, EXPANSION_WEIGHT } :195-195
|
|
1158
|
+
function stem(w) → string :36-45
|
|
1159
|
+
function tokenize(text) → string[] :54-65
|
|
1160
|
+
function expandQuery(qToks) → Map<string, number> :132-141
|
|
1161
|
+
function bm25rank(query, candidates) → Array<object & { score: n :154-193
|
|
893
1162
|
```
|
|
894
1163
|
|
|
895
1164
|
### src/retrieval/ranker.js
|
|
896
1165
|
```
|
|
897
|
-
module.exports = { rank, buildSigIndex, scoreFile, formatRankTable, formatRankJSON, DEFAULT_WEIGHTS, GRAPH_BOOST_AMOUNTS, detectIntent } :
|
|
898
|
-
function _computePenalty(filePath) :
|
|
899
|
-
function _computeHubs(graph) :
|
|
900
|
-
function _isHub(filePath) :
|
|
901
|
-
function scoreFile(filePath, sigs, queryTokens, weights) → { score: number, signals: :
|
|
902
|
-
function rank(query, sigIndex, opts) → { file: string, score: nu :
|
|
903
|
-
function _parseContextFile(contextPath) → Map<string, string[]> :
|
|
904
|
-
function _mergeSigIndex(target, source) :
|
|
905
|
-
function _buildSigIndexFromCache(cwd) → Map<string, string[]> :
|
|
906
|
-
function _enrichSigIndexFromStrategy(cwd, index) → Map<string, string[]> :
|
|
907
|
-
function buildSigIndex(cwd, opts) → Map<string, string[]> :
|
|
908
|
-
function formatRankTable(results, query) → string :
|
|
909
|
-
function formatRankJSON(results, query) → object :
|
|
910
|
-
function detectIntent(query) :
|
|
1166
|
+
module.exports = { rank, buildSigIndex, scoreFile, formatRankTable, formatRankJSON, DEFAULT_WEIGHTS, GRAPH_BOOST_AMOUNTS, detectIntent } :570-570
|
|
1167
|
+
function _computePenalty(filePath) :62-69
|
|
1168
|
+
function _computeHubs(graph) :72-83
|
|
1169
|
+
function _isHub(filePath) :86-90
|
|
1170
|
+
function scoreFile(filePath, sigs, queryTokens, weights) → { score: number, signals: :101-158
|
|
1171
|
+
function rank(query, sigIndex, opts) → { file: string, score: nu :174-298
|
|
1172
|
+
function _parseContextFile(contextPath) → Map<string, string[]> :344-376
|
|
1173
|
+
function _mergeSigIndex(target, source) :379-387
|
|
1174
|
+
function _buildSigIndexFromCache(cwd) → Map<string, string[]> :394-414
|
|
1175
|
+
function _enrichSigIndexFromStrategy(cwd, index) → Map<string, string[]> :422-428
|
|
1176
|
+
function buildSigIndex(cwd, opts) → Map<string, string[]> :445-478
|
|
1177
|
+
function formatRankTable(results, query) → string :487-523
|
|
1178
|
+
function formatRankJSON(results, query) → object :532-547
|
|
1179
|
+
function detectIntent(query) :562-568
|
|
911
1180
|
```
|
|
912
1181
|
|
|
913
1182
|
### src/retrieval/tokenizer.js
|
|
@@ -916,6 +1185,21 @@ module.exports = { tokenize, STOP_WORDS } :54-54
|
|
|
916
1185
|
function tokenize(text, opts) → string[] :31-52
|
|
917
1186
|
```
|
|
918
1187
|
|
|
1188
|
+
### src/review/pr-evidence.js
|
|
1189
|
+
```
|
|
1190
|
+
module.exports = { buildPrEvidence, formatPrEvidenceMarkdown } :140-140
|
|
1191
|
+
function buildPrEvidence(changedFiles, cwd, opts = {}) → { scope:string, files:obj :31-77
|
|
1192
|
+
function formatPrEvidenceMarkdown(evidence, opts = {}) :82-138
|
|
1193
|
+
```
|
|
1194
|
+
|
|
1195
|
+
### src/review/review-pr.js
|
|
1196
|
+
```
|
|
1197
|
+
module.exports = { reviewPr, SECURITY_PATTERNS, GOD_NODE_THRESHOLD, SCOPE_DIR_THRESHOLD } :128-128
|
|
1198
|
+
function isTestFile(p) :32-34
|
|
1199
|
+
function isSource(p) :35-37
|
|
1200
|
+
function reviewPr(changedFiles, cwd, opts = {}) → { findings: object[], bla :48-126
|
|
1201
|
+
```
|
|
1202
|
+
|
|
919
1203
|
### src/routing/classifier.js
|
|
920
1204
|
```
|
|
921
1205
|
module.exports = { classify, classifyAll } :102-102
|
|
@@ -929,6 +1213,22 @@ module.exports = { TIERS, formatRoutingSection } :103-103
|
|
|
929
1213
|
function formatRoutingSection(groups) → string :66-101
|
|
930
1214
|
```
|
|
931
1215
|
|
|
1216
|
+
### src/scaffold/persist.js
|
|
1217
|
+
```
|
|
1218
|
+
module.exports = { scaffoldPath, renderScaffoldMarkdown } :45-45
|
|
1219
|
+
function scaffoldPath(cwd) :15-17
|
|
1220
|
+
function renderScaffoldMarkdown(decision, opts = {}) → string :26-43
|
|
1221
|
+
```
|
|
1222
|
+
|
|
1223
|
+
### src/scaffold/propose.js
|
|
1224
|
+
```
|
|
1225
|
+
module.exports = { proposeScaffold, DEFAULT_THRESHOLD, HARD_FLOOR } :112-112
|
|
1226
|
+
function _tier(pct) :21-25
|
|
1227
|
+
function _stem(name) :28-34
|
|
1228
|
+
function _testFile(styledStem, framework, ext) :37-42
|
|
1229
|
+
function proposeScaffold(name, conventions, opts = {}) → { ok:boolean, refused:boo :57-110
|
|
1230
|
+
```
|
|
1231
|
+
|
|
932
1232
|
### src/security/patterns.js
|
|
933
1233
|
```
|
|
934
1234
|
module.exports = { PATTERNS } :51-51
|
|
@@ -950,12 +1250,102 @@ function mergeSessionContext(scores, session, currentIntent) :40-51
|
|
|
950
1250
|
function clearSession(cwd) :53-56
|
|
951
1251
|
```
|
|
952
1252
|
|
|
1253
|
+
### src/session/notes.js
|
|
1254
|
+
```
|
|
1255
|
+
module.exports = { notesPath, addNote, readNotes, formatNotes, clearNotes } :93-93
|
|
1256
|
+
function notesPath(cwd) :23-25
|
|
1257
|
+
function _currentBranch(cwd) :27-29
|
|
1258
|
+
function addNote(cwd, text, opts = {}) :39-52
|
|
1259
|
+
function readNotes(cwd, limit = 0) → object[] :60-72
|
|
1260
|
+
function formatNotes(notes) :75-85
|
|
1261
|
+
function clearNotes(cwd) :88-91
|
|
1262
|
+
```
|
|
1263
|
+
|
|
1264
|
+
### src/squeeze/cilog.js
|
|
1265
|
+
```
|
|
1266
|
+
module.exports = { squeezeCiLog, stripTimestamp, ERROR_RE } :71-71
|
|
1267
|
+
function stripTimestamp(line) :17-19
|
|
1268
|
+
function squeezeCiLog(input, opts = {}) → { squeezed: string, kept: :27-69
|
|
1269
|
+
```
|
|
1270
|
+
|
|
1271
|
+
### src/squeeze/classify.js
|
|
1272
|
+
```
|
|
1273
|
+
module.exports = { classify, countFrames } :115-115
|
|
1274
|
+
function countFrames(lines) :32-38
|
|
1275
|
+
function matchesStackTrace(input, lines) :40-50
|
|
1276
|
+
function matchesCiLog(input, lines) :55-74
|
|
1277
|
+
function matchesJsonPayload(input) :76-93
|
|
1278
|
+
function classify(input) → { category: 'stacktrace'| :99-113
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
### src/squeeze/index.js
|
|
1282
|
+
```
|
|
1283
|
+
module.exports = { squeeze, shouldPrompt, formatSummary, estimateTokens } :69-69
|
|
1284
|
+
function estimateTokens(s) :17-17
|
|
1285
|
+
function squeeze(input, opts = {}) → { category, confidence, o :24-49
|
|
1286
|
+
function shouldPrompt(reduction, threshold) :52-55
|
|
1287
|
+
function formatSummary(result) :58-67
|
|
1288
|
+
```
|
|
1289
|
+
|
|
1290
|
+
### src/squeeze/jsonpayload.js
|
|
1291
|
+
```
|
|
1292
|
+
module.exports = { squeezeJsonPayload, squeezeValue } :54-54
|
|
1293
|
+
function squeezeValue(v, opts) :14-32
|
|
1294
|
+
function squeezeJsonPayload(input, opts = {}) → { squeezed, kept, strippe :41-52
|
|
1295
|
+
```
|
|
1296
|
+
|
|
1297
|
+
### src/squeeze/stacktrace.js
|
|
1298
|
+
```
|
|
1299
|
+
module.exports = { squeezeStackTrace, parseFrame, isVendor, inSrcDirs, enrichFrame } :135-135
|
|
1300
|
+
function parseFrame(line) :20-28
|
|
1301
|
+
function isVendor(file) :30-30
|
|
1302
|
+
function inSrcDirs(file, srcDirs) :32-38
|
|
1303
|
+
function enrichFrame(frame, symbolIndex) :41-66
|
|
1304
|
+
function squeezeStackTrace(input, opts = {}) → { squeezed, kept, strippe :76-133
|
|
1305
|
+
```
|
|
1306
|
+
|
|
1307
|
+
### src/tracking/aggregate.js
|
|
1308
|
+
```
|
|
1309
|
+
module.exports = { aggregate, bucketBy, parseSince, normalize } :195-195
|
|
1310
|
+
function normalize(rec) :25-44
|
|
1311
|
+
function normalizeOp(op) :46-49
|
|
1312
|
+
function num(v) :51-54
|
|
1313
|
+
function parseSince(since, nowMs) → Date|null :63-75
|
|
1314
|
+
function bucketBy(records, granularity) → Array<{key,count,baseline :83-100
|
|
1315
|
+
function bucketKey(ts, granularity) :102-117
|
|
1316
|
+
function aggregate(rawRecords, opts = {}) → object :129-193
|
|
1317
|
+
```
|
|
1318
|
+
|
|
953
1319
|
### src/tracking/logger.js
|
|
954
1320
|
```
|
|
955
|
-
module.exports = { logRun, readLog, summarize } :
|
|
956
|
-
function logRun(entry, cwd) :
|
|
957
|
-
function readLog(cwd) → object[] :
|
|
958
|
-
function
|
|
1321
|
+
module.exports = { logRun, recordUsage, readLog, readGainLog, summarize, isTrackingEnabled, GAIN_FILE } :197-197
|
|
1322
|
+
function logRun(entry, cwd) :30-55
|
|
1323
|
+
function readLog(cwd) → object[] :62-77
|
|
1324
|
+
function readGainLog(cwd) → object[] :84-96
|
|
1325
|
+
function summarize(entries) → object :103-135
|
|
1326
|
+
function isTrackingEnabled(config, argv) → boolean :147-153
|
|
1327
|
+
function recordUsage(entry, cwd) :169-195
|
|
1328
|
+
```
|
|
1329
|
+
|
|
1330
|
+
### src/tracking/pricing.js
|
|
1331
|
+
```
|
|
1332
|
+
module.exports = { PRICES, DEFAULT_MODEL, resolvePrice, listModels } :44-44
|
|
1333
|
+
function resolvePrice(model) → { model: string, perMtok: :32-37
|
|
1334
|
+
function listModels() → string[] :40-42
|
|
1335
|
+
```
|
|
1336
|
+
|
|
1337
|
+
### src/util/git.js
|
|
1338
|
+
```
|
|
1339
|
+
module.exports = { git, tryGit } :31-31
|
|
1340
|
+
function git(args, opts = {}) :17-23
|
|
1341
|
+
function tryGit(args, opts = {}) :26-29
|
|
1342
|
+
```
|
|
1343
|
+
|
|
1344
|
+
### src/util/truncate.js
|
|
1345
|
+
```
|
|
1346
|
+
module.exports = { capWithNotice, capMembersWithNotice } :42-42
|
|
1347
|
+
function capWithNotice(items, limit, label) → string[] :22-26
|
|
1348
|
+
function capMembersWithNotice(members, limit, label = 'methods') → Array<{text:string :36-40
|
|
959
1349
|
```
|
|
960
1350
|
|
|
961
1351
|
### src/verify/closest-match.js
|
|
@@ -970,24 +1360,41 @@ function formatSuggestion(match, asCall) :129-137
|
|
|
970
1360
|
|
|
971
1361
|
### src/verify/hallucination-guard.js
|
|
972
1362
|
```
|
|
973
|
-
module.exports = { verify, buildSymbolSet, loadDeps, loadScripts, isTestPath } :
|
|
974
|
-
function isTestPath(p) :
|
|
975
|
-
function buildSymbolSet(cwd) :
|
|
976
|
-
function loadDeps(cwd) :
|
|
977
|
-
function loadScripts(cwd) :
|
|
978
|
-
function defaultFileExists(cwd, ref) :
|
|
979
|
-
function defaultRelativeResolvable(cwd, mod, fileBasenames) :
|
|
980
|
-
function verify(answerText, cwd, opts = {}) → { issues: object[], summa :
|
|
1363
|
+
module.exports = { verify, buildSymbolSet, loadDeps, loadScripts, isTestPath } :345-345
|
|
1364
|
+
function isTestPath(p) :29-29
|
|
1365
|
+
function buildSymbolSet(cwd) :76-94
|
|
1366
|
+
function loadDeps(cwd) :97-110
|
|
1367
|
+
function loadScripts(cwd) :113-122
|
|
1368
|
+
function defaultFileExists(cwd, ref) :125-133
|
|
1369
|
+
function defaultRelativeResolvable(cwd, mod, fileBasenames) :136-153
|
|
1370
|
+
function verify(answerText, cwd, opts = {}) → { issues: object[], summa :177-301
|
|
1371
|
+
```
|
|
1372
|
+
|
|
1373
|
+
### src/verify/lib-index.js
|
|
1374
|
+
```
|
|
1375
|
+
module.exports = { buildLibraryIndex, extractDtsExports, directDeps, resolveEntry, formatVersionPins, collectVersionPins, extractPyExports, pythonDirectDeps, findSitePackages, resolvePyEntry } :329-333
|
|
1376
|
+
function extractDtsExports(src) → string[] :40-50
|
|
1377
|
+
function directDeps(cwd) :68-79
|
|
1378
|
+
function resolveEntry(cwd, dep) → { version: string|null, d :85-105
|
|
1379
|
+
function extractPyExports(src) → string[] :118-146
|
|
1380
|
+
function pythonDirectDeps(cwd) :149-172
|
|
1381
|
+
function findSitePackages(cwd) :175-190
|
|
1382
|
+
function normalizePy(name) :193-195
|
|
1383
|
+
function findPyVersion(sitePkgsDir, dep) :198-207
|
|
1384
|
+
function resolvePyEntry(sitePkgsDirs, dep) → { version: string|null, s :213-229
|
|
1385
|
+
function buildLibraryIndex(cwd, opts = {}) → { symbols: Set<string>, l :240-292
|
|
1386
|
+
function formatVersionPins(libraries) :295-299
|
|
1387
|
+
function collectVersionPins(cwd, opts = {}) → { pins: string[], total: :311-327
|
|
981
1388
|
```
|
|
982
1389
|
|
|
983
1390
|
### src/verify/parsers.js
|
|
984
1391
|
```
|
|
985
|
-
module.exports = { extractCodeBlocks, extractFilePaths, extractImports, extractSymbols, extractNpmScripts } :
|
|
986
|
-
function extractCodeBlocks(text) → { lang: string, content: :
|
|
987
|
-
function extractFilePaths(text) → { path: string, line: num :
|
|
988
|
-
function extractImports(text) → { module: string, kind: ' :
|
|
989
|
-
function extractNpmScripts(text) → { name: string, line: num :
|
|
990
|
-
function extractSymbols(text) → { name: string, line: num :
|
|
1392
|
+
module.exports = { extractCodeBlocks, extractFilePaths, extractImports, extractSymbols, extractNpmScripts } :211-217
|
|
1393
|
+
function extractCodeBlocks(text) → { lang: string, content: :43-67
|
|
1394
|
+
function extractFilePaths(text) → { path: string, line: num :76-97
|
|
1395
|
+
function extractImports(text) → { module: string, kind: ' :104-159
|
|
1396
|
+
function extractNpmScripts(text) → { name: string, line: num :168-184
|
|
1397
|
+
function extractSymbols(text) → { name: string, line: num :192-209
|
|
991
1398
|
```
|
|
992
1399
|
|
|
993
1400
|
### src/workspace/detector.js
|