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