openlore 2.0.7 → 2.0.9

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.
Files changed (162) hide show
  1. package/README.md +160 -25
  2. package/dist/api/init.d.ts.map +1 -1
  3. package/dist/api/init.js +9 -2
  4. package/dist/api/init.js.map +1 -1
  5. package/dist/cli/commands/analyze.d.ts.map +1 -1
  6. package/dist/cli/commands/analyze.js +5 -3
  7. package/dist/cli/commands/analyze.js.map +1 -1
  8. package/dist/cli/commands/decisions.d.ts +0 -1
  9. package/dist/cli/commands/decisions.d.ts.map +1 -1
  10. package/dist/cli/commands/decisions.js +19 -31
  11. package/dist/cli/commands/decisions.js.map +1 -1
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/doctor.js +85 -23
  14. package/dist/cli/commands/doctor.js.map +1 -1
  15. package/dist/cli/commands/init.d.ts.map +1 -1
  16. package/dist/cli/commands/init.js +16 -3
  17. package/dist/cli/commands/init.js.map +1 -1
  18. package/dist/cli/commands/mcp.d.ts +766 -0
  19. package/dist/cli/commands/mcp.d.ts.map +1 -1
  20. package/dist/cli/commands/mcp.js +444 -244
  21. package/dist/cli/commands/mcp.js.map +1 -1
  22. package/dist/cli/commands/orient.d.ts.map +1 -1
  23. package/dist/cli/commands/orient.js +14 -2
  24. package/dist/cli/commands/orient.js.map +1 -1
  25. package/dist/cli/commands/prove.d.ts +29 -0
  26. package/dist/cli/commands/prove.d.ts.map +1 -0
  27. package/dist/cli/commands/prove.js +160 -0
  28. package/dist/cli/commands/prove.js.map +1 -0
  29. package/dist/cli/commands/setup.d.ts.map +1 -1
  30. package/dist/cli/commands/setup.js +5 -3
  31. package/dist/cli/commands/setup.js.map +1 -1
  32. package/dist/cli/index.js +2 -0
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/install/adapters/claude-code.d.ts +8 -2
  35. package/dist/cli/install/adapters/claude-code.d.ts.map +1 -1
  36. package/dist/cli/install/adapters/claude-code.js +99 -35
  37. package/dist/cli/install/adapters/claude-code.js.map +1 -1
  38. package/dist/cli/install/detect.d.ts.map +1 -1
  39. package/dist/cli/install/detect.js +14 -0
  40. package/dist/cli/install/detect.js.map +1 -1
  41. package/dist/cli/install/templates/agent-instructions.md +4 -2
  42. package/dist/constants.d.ts +16 -3
  43. package/dist/constants.d.ts.map +1 -1
  44. package/dist/constants.js +24 -3
  45. package/dist/constants.js.map +1 -1
  46. package/dist/core/agent-eval/measure.d.ts +57 -0
  47. package/dist/core/agent-eval/measure.d.ts.map +1 -0
  48. package/dist/core/agent-eval/measure.js +85 -0
  49. package/dist/core/agent-eval/measure.js.map +1 -0
  50. package/dist/core/agent-eval/scorecard.d.ts +37 -0
  51. package/dist/core/agent-eval/scorecard.d.ts.map +1 -0
  52. package/dist/core/agent-eval/scorecard.js +70 -0
  53. package/dist/core/agent-eval/scorecard.js.map +1 -0
  54. package/dist/core/agent-eval/tasks.d.ts +37 -0
  55. package/dist/core/agent-eval/tasks.d.ts.map +1 -0
  56. package/dist/core/agent-eval/tasks.js +76 -0
  57. package/dist/core/agent-eval/tasks.js.map +1 -0
  58. package/dist/core/analyzer/architecture-writer.d.ts +5 -3
  59. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -1
  60. package/dist/core/analyzer/architecture-writer.js +6 -4
  61. package/dist/core/analyzer/architecture-writer.js.map +1 -1
  62. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  63. package/dist/core/analyzer/artifact-generator.js +59 -4
  64. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  65. package/dist/core/analyzer/call-graph.d.ts +19 -1
  66. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  67. package/dist/core/analyzer/call-graph.js +130 -28
  68. package/dist/core/analyzer/call-graph.js.map +1 -1
  69. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
  70. package/dist/core/analyzer/spec-vector-index.js +6 -2
  71. package/dist/core/analyzer/spec-vector-index.js.map +1 -1
  72. package/dist/core/architecture/check.d.ts +63 -0
  73. package/dist/core/architecture/check.d.ts.map +1 -0
  74. package/dist/core/architecture/check.js +192 -0
  75. package/dist/core/architecture/check.js.map +1 -0
  76. package/dist/core/architecture/rules.d.ts +73 -0
  77. package/dist/core/architecture/rules.d.ts.map +1 -0
  78. package/dist/core/architecture/rules.js +201 -0
  79. package/dist/core/architecture/rules.js.map +1 -0
  80. package/dist/core/decisions/project.d.ts +59 -0
  81. package/dist/core/decisions/project.d.ts.map +1 -0
  82. package/dist/core/decisions/project.js +68 -0
  83. package/dist/core/decisions/project.js.map +1 -0
  84. package/dist/core/decisions/verifier.d.ts +10 -0
  85. package/dist/core/decisions/verifier.d.ts.map +1 -1
  86. package/dist/core/decisions/verifier.js +48 -5
  87. package/dist/core/decisions/verifier.js.map +1 -1
  88. package/dist/core/provenance/change-coupling.d.ts +68 -0
  89. package/dist/core/provenance/change-coupling.d.ts.map +1 -0
  90. package/dist/core/provenance/change-coupling.js +134 -0
  91. package/dist/core/provenance/change-coupling.js.map +1 -0
  92. package/dist/core/provenance/git-provenance.d.ts +67 -0
  93. package/dist/core/provenance/git-provenance.d.ts.map +1 -0
  94. package/dist/core/provenance/git-provenance.js +177 -0
  95. package/dist/core/provenance/git-provenance.js.map +1 -0
  96. package/dist/core/provenance/project.d.ts +37 -0
  97. package/dist/core/provenance/project.d.ts.map +1 -0
  98. package/dist/core/provenance/project.js +46 -0
  99. package/dist/core/provenance/project.js.map +1 -0
  100. package/dist/core/services/config-manager.d.ts +17 -0
  101. package/dist/core/services/config-manager.d.ts.map +1 -1
  102. package/dist/core/services/config-manager.js +35 -1
  103. package/dist/core/services/config-manager.js.map +1 -1
  104. package/dist/core/services/edge-store.d.ts +41 -0
  105. package/dist/core/services/edge-store.d.ts.map +1 -1
  106. package/dist/core/services/edge-store.js +251 -3
  107. package/dist/core/services/edge-store.js.map +1 -1
  108. package/dist/core/services/llm-service.d.ts +9 -0
  109. package/dist/core/services/llm-service.d.ts.map +1 -1
  110. package/dist/core/services/llm-service.js +15 -4
  111. package/dist/core/services/llm-service.js.map +1 -1
  112. package/dist/core/services/mcp-handlers/architecture.d.ts +19 -0
  113. package/dist/core/services/mcp-handlers/architecture.d.ts.map +1 -0
  114. package/dist/core/services/mcp-handlers/architecture.js +104 -0
  115. package/dist/core/services/mcp-handlers/architecture.js.map +1 -0
  116. package/dist/core/services/mcp-handlers/change-coupling.d.ts +16 -0
  117. package/dist/core/services/mcp-handlers/change-coupling.d.ts.map +1 -0
  118. package/dist/core/services/mcp-handlers/change-coupling.js +57 -0
  119. package/dist/core/services/mcp-handlers/change-coupling.js.map +1 -0
  120. package/dist/core/services/mcp-handlers/graph.d.ts +27 -0
  121. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  122. package/dist/core/services/mcp-handlers/graph.js +98 -16
  123. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  124. package/dist/core/services/mcp-handlers/orient.d.ts +1 -1
  125. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -1
  126. package/dist/core/services/mcp-handlers/orient.js +196 -39
  127. package/dist/core/services/mcp-handlers/orient.js.map +1 -1
  128. package/dist/core/services/mcp-handlers/progressive.d.ts +46 -0
  129. package/dist/core/services/mcp-handlers/progressive.d.ts.map +1 -0
  130. package/dist/core/services/mcp-handlers/progressive.js +0 -0
  131. package/dist/core/services/mcp-handlers/progressive.js.map +1 -0
  132. package/dist/core/services/mcp-handlers/reachability.d.ts +30 -0
  133. package/dist/core/services/mcp-handlers/reachability.d.ts.map +1 -0
  134. package/dist/core/services/mcp-handlers/reachability.js +222 -0
  135. package/dist/core/services/mcp-handlers/reachability.js.map +1 -0
  136. package/dist/core/services/mcp-handlers/semantic.d.ts +1 -1
  137. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  138. package/dist/core/services/mcp-handlers/semantic.js +39 -26
  139. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  140. package/dist/core/services/mcp-handlers/structural-diff.d.ts +31 -0
  141. package/dist/core/services/mcp-handlers/structural-diff.d.ts.map +1 -0
  142. package/dist/core/services/mcp-handlers/structural-diff.js +268 -0
  143. package/dist/core/services/mcp-handlers/structural-diff.js.map +1 -0
  144. package/dist/core/services/mcp-handlers/test-impact.d.ts +34 -0
  145. package/dist/core/services/mcp-handlers/test-impact.d.ts.map +1 -0
  146. package/dist/core/services/mcp-handlers/test-impact.js +221 -0
  147. package/dist/core/services/mcp-handlers/test-impact.js.map +1 -0
  148. package/dist/core/services/mcp-handlers/tool-guard.d.ts +45 -0
  149. package/dist/core/services/mcp-handlers/tool-guard.d.ts.map +1 -0
  150. package/dist/core/services/mcp-handlers/tool-guard.js +81 -0
  151. package/dist/core/services/mcp-handlers/tool-guard.js.map +1 -0
  152. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  153. package/dist/core/services/mcp-handlers/utils.js +15 -1
  154. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  155. package/dist/core/services/mcp-watcher.d.ts +7 -0
  156. package/dist/core/services/mcp-watcher.d.ts.map +1 -1
  157. package/dist/core/services/mcp-watcher.js +46 -0
  158. package/dist/core/services/mcp-watcher.js.map +1 -1
  159. package/dist/core/services/project-detector.d.ts.map +1 -1
  160. package/dist/core/services/project-detector.js +45 -2
  161. package/dist/core/services/project-detector.js.map +1 -1
  162. package/package.json +8 -8
@@ -16,8 +16,12 @@
16
16
  import { join } from 'node:path';
17
17
  import { readFile, stat } from 'node:fs/promises';
18
18
  import { validateDirectory, loadMappingIndex, specsForFile, functionsForDomain, readCachedContext } from './utils.js';
19
+ import { expandHandle, applyTokenBudget, collapseExactDuplicates, omissionNote } from './progressive.js';
19
20
  import { readOpenLoreConfig } from '../config-manager.js';
21
+ import { isIacLanguage } from '../../analyzer/iac/types.js';
20
22
  import { OPENSPEC_DIR, ARTIFACT_RAG_MANIFEST } from '../../../constants.js';
23
+ import { loadArchitectureRules } from '../../architecture/rules.js';
24
+ import { scanViolations } from '../../architecture/check.js';
21
25
  import { classifyRole, deriveStrategy, compositeScore, buildReason, } from './semantic.js';
22
26
  /** One cache entry per project directory (MCP server is long-lived). */
23
27
  const _manifestCache = new Map();
@@ -60,7 +64,7 @@ async function loadCondensedCached(cache, absSpecPath, specPath) {
60
64
  // ============================================================================
61
65
  // HANDLER
62
66
  // ============================================================================
63
- export async function handleOrient(directory, task, limit = 5) {
67
+ export async function handleOrient(directory, task, limit = 5, tokenBudget, lean = false) {
64
68
  const absDir = await validateDirectory(directory);
65
69
  const outputDir = join(absDir, '.openlore', 'analysis');
66
70
  const { VectorIndex } = await import('../../analyzer/vector-index.js');
@@ -102,10 +106,11 @@ export async function handleOrient(directory, task, limit = 5) {
102
106
  const topResults = rawResults
103
107
  .filter(r => r.record.filePath !== 'external' && !r.record.id?.startsWith('external::'))
104
108
  .slice(0, clampedLimit);
105
- const relevantFunctions = topResults.map(r => ({
109
+ const relevantFunctionsAll = topResults.map(r => ({
106
110
  name: r.record.name,
107
111
  filePath: r.record.filePath,
108
112
  score: parseFloat(r.score.toFixed(3)),
113
+ expand: expandHandle(r.record.name, r.record.filePath),
109
114
  signature: r.record.signature || undefined,
110
115
  docstring: r.record.docstring || undefined,
111
116
  language: r.record.language,
@@ -115,10 +120,18 @@ export async function handleOrient(directory, task, limit = 5) {
115
120
  isEntryPoint: r.record.isEntryPoint,
116
121
  linkedSpecs: mappingIdx ? specsForFile(mappingIdx, r.record.filePath) : [],
117
122
  }));
123
+ // Progressive disclosure (Spec 25 P2–P4): when a tokenBudget is set, collapse
124
+ // exact duplicates then greedily keep the highest-scored functions that fit.
125
+ // Default (no budget) is unchanged. The `expand` handle on every kept item
126
+ // means a dropped/collapsed body is one cheap get_function_body call away.
127
+ const budgeted = tokenBudget
128
+ ? applyTokenBudget(collapseExactDuplicates(relevantFunctionsAll), tokenBudget)
129
+ : { kept: relevantFunctionsAll, omitted: 0 };
130
+ const relevantFunctions = budgeted.kept;
118
131
  // ── Relevant files (deduplicated) ─────────────────────────────────────────
119
132
  const relevantFiles = [...new Set(relevantFunctions.map(f => f.filePath))];
120
133
  const specLinkedFunctions = [];
121
- if (mappingIdx && relevantFunctions.length > 0) {
134
+ if (!lean && mappingIdx && relevantFunctions.length > 0) {
122
135
  const seedDomains = new Set();
123
136
  for (const fn of relevantFunctions) {
124
137
  for (const spec of fn.linkedSpecs)
@@ -157,12 +170,16 @@ export async function handleOrient(directory, task, limit = 5) {
157
170
  return { function: r.record.name, filePath: r.record.filePath, callers: [], callees: [] };
158
171
  }
159
172
  const es = llmCtx.edgeStore;
173
+ // Tag IaC resources so an agent can tell infrastructure neighbors from code (spec-17).
174
+ const toNeighbour = (n) => n && !n.isExternal
175
+ ? { name: n.name, filePath: n.filePath, ...(isIacLanguage(n.language) ? { domain: 'infra' } : {}) }
176
+ : null;
160
177
  const callers = es.getCallers(r.record.id)
161
- .map(e => { const n = es.getNode(e.callerId); return n && !n.isExternal ? { name: n.name, filePath: n.filePath } : null; })
178
+ .map(e => toNeighbour(es.getNode(e.callerId)))
162
179
  .filter((x) => x !== null)
163
180
  .slice(0, 5);
164
181
  const callees = es.getCallees(r.record.id)
165
- .map(e => { const n = es.getNode(e.calleeId); return n && !n.isExternal ? { name: n.name, filePath: n.filePath } : null; })
182
+ .map(e => toNeighbour(es.getNode(e.calleeId)))
166
183
  .filter((x) => x !== null)
167
184
  .slice(0, 5);
168
185
  return { function: r.record.name, filePath: r.record.filePath, callers, callees };
@@ -186,9 +203,17 @@ export async function handleOrient(directory, task, limit = 5) {
186
203
  const insertionPoints = insertionCandidates
187
204
  .slice(0, 3)
188
205
  .map((c, i) => ({ rank: i + 1, ...c, score: parseFloat(c.score.toFixed(3)) }));
206
+ // ── Enrichment (Spec 27, deepened) ─────────────────────────────────────────
207
+ // Everything from here down is dropped by lean mode (it returns the navigation
208
+ // `core` only). Spec 27 P1 trimmed the lean *payload* but still computed this
209
+ // enrichment and threw it away — an extra embedding search (matchingSpecs),
210
+ // manifest + spec-file reads (inlineSpecs), a decision-store load, git-derived
211
+ // blocks, and a dependency-graph scan, all wasted on a shallow lookup. Each
212
+ // block is now guarded by `!lean`, so lean skips the *work*, not just the
213
+ // bytes: it makes the shallow-task path measurably faster, not only smaller.
189
214
  // ── Spec search (best-effort — skipped if spec index not available) ────────
190
215
  let matchingSpecs;
191
- if (hasSpecIndex && embedSvc) {
216
+ if (!lean && hasSpecIndex && embedSvc) {
192
217
  try {
193
218
  const specResults = await SpecVectorIndex.search(outputDir, task, embedSvc, { limit: 3 });
194
219
  matchingSpecs = specResults.map(r => ({
@@ -205,7 +230,7 @@ export async function handleOrient(directory, task, limit = 5) {
205
230
  }
206
231
  // ── Inline spec purpose from RAG manifest ─────────────────────────────────
207
232
  let inlineSpecs;
208
- if (specDomains.length > 0) {
233
+ if (!lean && specDomains.length > 0) {
209
234
  try {
210
235
  const cfg = await readOpenLoreConfig(absDir);
211
236
  const openspecRelPath = cfg?.openspecPath ?? OPENSPEC_DIR;
@@ -245,39 +270,146 @@ export async function handleOrient(directory, task, limit = 5) {
245
270
  }
246
271
  }
247
272
  let pendingDecisions;
248
- try {
249
- const { loadDecisionStore, INACTIVE_STATUSES } = await import('../../decisions/store.js');
250
- const store = await loadDecisionStore(absDir);
251
- const relevantDomainSet = new Set(specDomains.map((s) => s.domain));
252
- const relevantFileSet = new Set(relevantFiles);
253
- const active = store.decisions.filter((d) => {
254
- if (INACTIVE_STATUSES.has(d.status))
273
+ if (!lean)
274
+ try {
275
+ const { loadDecisionStore, INACTIVE_STATUSES } = await import('../../decisions/store.js');
276
+ const store = await loadDecisionStore(absDir);
277
+ const relevantDomainSet = new Set(specDomains.map((s) => s.domain));
278
+ const relevantFileSet = new Set(relevantFiles);
279
+ const active = store.decisions.filter((d) => {
280
+ if (INACTIVE_STATUSES.has(d.status))
281
+ return false;
282
+ // Surface if it touches a domain or file the orient task identified
283
+ if (d.affectedDomains.some((dom) => relevantDomainSet.has(dom)))
284
+ return true;
285
+ if (d.affectedFiles.some((f) => relevantFileSet.has(f)))
286
+ return true;
287
+ // Always surface approved decisions — agent must sync before committing
288
+ if (d.status === 'approved')
289
+ return true;
255
290
  return false;
256
- // Surface if it touches a domain or file the orient task identified
257
- if (d.affectedDomains.some((dom) => relevantDomainSet.has(dom)))
258
- return true;
259
- if (d.affectedFiles.some((f) => relevantFileSet.has(f)))
260
- return true;
261
- // Always surface approved decisions — agent must sync before committing
262
- if (d.status === 'approved')
263
- return true;
264
- return false;
265
- });
266
- if (active.length > 0) {
267
- pendingDecisions = active.map((d) => ({
268
- id: d.id,
269
- title: d.title,
270
- status: d.status,
271
- affectedDomains: d.affectedDomains,
272
- }));
291
+ });
292
+ if (active.length > 0) {
293
+ pendingDecisions = active.map((d) => ({
294
+ id: d.id,
295
+ title: d.title,
296
+ status: d.status,
297
+ affectedDomains: d.affectedDomains,
298
+ }));
299
+ }
300
+ }
301
+ catch {
302
+ // non-fatal decisions feature may not be initialised
303
+ }
304
+ // ── Governing decisions (graph-derived, spec-16) ───────────────────────────
305
+ // The `affects`-edge join: decisions that govern the files this task touches,
306
+ // resolved deterministically from the projected decision graph rather than a
307
+ // runtime set-membership scan. Additive alongside pendingDecisions — this field
308
+ // also reports *which* files each decision governs (file-level provenance).
309
+ let governingDecisions;
310
+ if (!lean)
311
+ try {
312
+ const es = llmCtx?.edgeStore;
313
+ if (es && relevantFiles.length > 0) {
314
+ const govs = es.getDecisionsForFiles(relevantFiles);
315
+ if (govs.length > 0) {
316
+ governingDecisions = govs.map((d) => ({
317
+ id: d.decisionId,
318
+ title: d.title,
319
+ status: d.status,
320
+ governs: d.affectedFiles,
321
+ }));
322
+ }
323
+ }
324
+ }
325
+ catch {
326
+ // non-fatal — decision projection is additive
327
+ }
328
+ // ── Provenance (local git/gh, spec-18) ─────────────────────────────────────
329
+ // "Last changed by X in PR #N" for the files this task touches — derived from
330
+ // local git history (and local gh if present). Additive, local-only, no upload.
331
+ let provenance;
332
+ if (!lean)
333
+ try {
334
+ const es = llmCtx?.edgeStore;
335
+ if (es && relevantFiles.length > 0) {
336
+ const records = es.getProvenanceForFiles(relevantFiles);
337
+ if (records.length > 0) {
338
+ provenance = records.slice(0, 10).map((r) => {
339
+ const topPr = r.prs[0];
340
+ return {
341
+ file: r.filePath,
342
+ lastAuthor: r.lastAuthor.name || r.lastAuthor.email,
343
+ ...(r.lastDate ? { lastDate: r.lastDate } : {}),
344
+ ...(topPr ? { lastPr: topPr.number } : {}),
345
+ ...(topPr?.title ? { lastPrTitle: topPr.title } : {}),
346
+ };
347
+ });
348
+ }
349
+ }
350
+ }
351
+ catch {
352
+ // non-fatal — provenance is additive and local-only
353
+ }
354
+ // ── Change coupling & volatility (local git, spec-22) ──────────────────────
355
+ // Caution signals mined from git history: "frequently changes with …" surfaces
356
+ // invisible coupling (no import/call edge), "volatility: high" flags risky churn.
357
+ // Additive, advisory — correlation, not a rule.
358
+ let changeCoupling;
359
+ if (!lean)
360
+ try {
361
+ const es = llmCtx?.edgeStore;
362
+ if (es && relevantFiles.length > 0) {
363
+ const { volatilityLevel } = await import('../../provenance/change-coupling.js');
364
+ const records = es.getChangeCouplingForFiles(relevantFiles)
365
+ .filter((r) => r.churn > 0 && (volatilityLevel(r.churn) !== 'low' || r.coupledWith.length > 0));
366
+ if (records.length > 0) {
367
+ changeCoupling = records.slice(0, 10).map((r) => ({
368
+ file: r.filePath,
369
+ volatility: volatilityLevel(r.churn),
370
+ changes: r.churn,
371
+ frequentlyChangesWith: r.coupledWith.slice(0, 5).map((c) => ({ file: c.file, confidence: c.confidence })),
372
+ }));
373
+ }
374
+ }
375
+ }
376
+ catch {
377
+ // non-fatal — change coupling is additive and local-only
378
+ }
379
+ // ── Architecture invariants (spec-23, additive) ─────────────────────────────
380
+ // Only when the repo declares rules AND a relevant file participates in a
381
+ // violation. Fully omitted otherwise — inert by default.
382
+ let architectureViolations;
383
+ if (!lean)
384
+ try {
385
+ const rules = await loadArchitectureRules(absDir);
386
+ if (rules.rules.length > 0 && relevantFiles.length > 0) {
387
+ const depRaw = await readFile(join(outputDir, 'dependency-graph.json'), 'utf-8').catch(() => null);
388
+ if (depRaw) {
389
+ const depGraph = JSON.parse(depRaw);
390
+ const norm = (p) => p.replace(/\\/g, '/').replace(/^\.\//, '');
391
+ const rels = relevantFiles.map(norm);
392
+ const involvesRelevant = (vf) => {
393
+ const b = norm(vf);
394
+ return rels.some(a => a === b || a.endsWith('/' + b) || b.endsWith('/' + a));
395
+ };
396
+ const scoped = scanViolations(depGraph, rules).violations.filter(v => involvesRelevant(v.from) || involvesRelevant(v.to));
397
+ if (scoped.length > 0) {
398
+ architectureViolations = scoped.slice(0, 10).map(v => ({
399
+ from: v.from, to: v.to, kind: v.kind, reason: v.reason,
400
+ }));
401
+ }
402
+ }
403
+ }
404
+ }
405
+ catch {
406
+ // non-fatal — architecture guardrail is additive and opt-in
273
407
  }
274
- }
275
- catch {
276
- // non-fatal — decisions feature may not be initialised
277
- }
278
408
  // ── Suggested tools (portable discovery for non-Claude Code clients) ─────
279
409
  // Derived from what orient already knows — no extra I/O.
280
410
  const _suggested = ['record_decision'];
411
+ if (architectureViolations !== undefined)
412
+ _suggested.push('check_architecture');
281
413
  if (relevantFunctions.some(f => f.isHub))
282
414
  _suggested.push('analyze_impact');
283
415
  if (insertionPoints.length > 0)
@@ -313,22 +445,47 @@ export async function handleOrient(directory, task, limit = 5) {
313
445
  nextSteps.push(hint);
314
446
  }
315
447
  nextSteps.push('After implementing, run check_spec_drift to verify the code matches the spec');
316
- return {
448
+ // Signal when the graph index is unavailable (e.g. wiped by a version upgrade and
449
+ // not yet re-analyzed): call paths, provenance, decisions, and change-coupling all
450
+ // depend on it, so flag it rather than silently returning a thinner result.
451
+ const graphIndexStale = relevantFunctions.length > 0 && !llmCtx?.edgeStore;
452
+ // Minimal-sufficient navigation core — always returned (Spec 27).
453
+ const core = {
317
454
  task,
318
455
  searchMode,
319
456
  ...(searchMode === 'bm25_fallback'
320
457
  ? { note: 'Embedding server unavailable — results use keyword matching. Run "openlore analyze --embed" for semantic search.' }
321
458
  : {}),
459
+ ...(graphIndexStale
460
+ ? { graphIndexNote: 'Graph index unavailable — call paths, provenance, decisions, and change-coupling are omitted. Run analyze_codebase to (re)build it (a version upgrade resets the graph index until the next analyze).' }
461
+ : {}),
322
462
  relevantFiles,
323
463
  relevantFunctions,
324
- ...(specLinkedFunctions.length > 0 ? { specLinkedFunctions } : {}),
464
+ ...(budgeted.omitted > 0
465
+ ? { relevantFunctionsOmitted: omissionNote(budgeted.omitted, 'raise tokenBudget, increase limit, or call search_code') }
466
+ : {}),
325
467
  specDomains,
326
- ...(inlineSpecs !== undefined ? { inlineSpecs } : {}),
327
468
  callPaths,
469
+ suggestedTools,
470
+ };
471
+ // Lean mode (Spec 27): return the navigation core only. The enrichment blocks
472
+ // below are pure overhead on a shallow "who calls X" lookup and each is one
473
+ // exact `expand` handle or one dedicated tool call away — so we trim bytes per
474
+ // turn without forcing a follow-up round-trip. The rich default is unchanged.
475
+ if (lean) {
476
+ return { ...core, lean: true };
477
+ }
478
+ return {
479
+ ...core,
480
+ ...(specLinkedFunctions.length > 0 ? { specLinkedFunctions } : {}),
481
+ ...(inlineSpecs !== undefined ? { inlineSpecs } : {}),
328
482
  insertionPoints,
329
483
  ...(matchingSpecs !== undefined ? { matchingSpecs } : {}),
330
484
  ...(pendingDecisions !== undefined ? { pendingDecisions } : {}),
331
- suggestedTools,
485
+ ...(governingDecisions !== undefined ? { governingDecisions } : {}),
486
+ ...(provenance !== undefined ? { provenance } : {}),
487
+ ...(changeCoupling !== undefined ? { changeCoupling } : {}),
488
+ ...(architectureViolations !== undefined ? { architectureViolations } : {}),
332
489
  nextSteps,
333
490
  };
334
491
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orient.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/orient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC;AAmBvB,wEAAwE;AACxE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;AAExD,2EAA2E;AAC3E,KAAK,UAAU,kBAAkB,CAAC,YAAoB,EAAE,QAAgB;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;QACjD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAkB;YAC3B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB;YACxC,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE;SAC1C,CAAC;QACF,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,mBAAmB,CAAC,KAAoB,EAAE,WAAmB,EAAE,QAAgB;IAC5F,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AA4DD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,IAAY,EACZ,KAAK,GAAG,CAAC;IAET,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAExD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;IACvE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;IACjF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;YACL,KAAK,EAAE,kDAAkD;YACzD,IAAI,EAAE,2HAA2H;SAClI,CAAC;IACJ,CAAC;IAED,kFAAkF;IAClF,IAAI,QAAQ,GAAiD,IAAI,CAAC;IAClE,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAAC;QACH,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,GAAG,aAAa,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,eAAe,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtD,8EAA8E;IAC9E,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzD,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1E,gBAAgB,CAAC,MAAM,CAAC;QACxB,iBAAiB,CAAC,MAAM,CAAC;KAC1B,CAAC,CAAC;IAGH,6EAA6E;IAC7E,8FAA8F;IAC9F,MAAM,UAAU,GAAG,UAAU;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;SACvF,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAE1B,MAAM,iBAAiB,GAAqB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;QAC3B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS;QAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;QACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;QACrB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;QACnC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;KAC3E,CAAC,CAAC,CAAC;IAEJ,6EAA6E;IAC7E,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAM3E,MAAM,mBAAmB,GAAyB,EAAE,CAAC;IACrD,IAAI,UAAU,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW;gBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,KAAK,MAAM,EAAE,IAAI,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;gBACxD,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACxD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoD,CAAC;IACjF,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;gBACnF,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;SAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;SACjD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAEnF,6EAA6E;IAC7E,MAAM,SAAS,GAAqB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACrD,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC5F,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1H,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1H,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,8FAA8F;IAC9F,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,IAAI,GAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,KAAK,GAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC3B,IAAI,EAAE,QAAQ,EAAE,KAAK;YACrB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;SACpF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,eAAe,GAA2B,mBAAmB;SAChE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,8EAA8E;IAC9E,IAAI,aAA4C,CAAC;IACjD,IAAI,YAAY,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1F,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gBACvB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gBACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;gBACrB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,WAAqC,CAAC;IAC1C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,eAAe,GAAG,GAAG,EAAE,YAAY,IAAI,YAAY,CAAC;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;YAC1E,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;oBACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC7F,IAAI,CAAC,KAAK;wBAAE,OAAO,IAAI,CAAC;oBACxB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACtF,IAAI,CAAC,OAAO;wBAAE,OAAO,IAAI,CAAC;oBAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;oBAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;oBACF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,gBAAgB;wBACpD,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,GAAG,gBAAgB,OAAO,CAAC;wBAC9F,CAAC,CAAC,QAAQ,CAAC;oBACb,OAAO;wBACL,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,WAAW;wBACX,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,OAAO;qBACa,CAAC;gBACzB,CAAC,CAAC,CACH,CAAC;gBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAClE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAAE,WAAW,GAAG,QAAQ,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;IACH,CAAC;IAWD,IAAI,gBAA+C,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC;YAClD,oEAAoE;YACpE,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7E,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACrE,wEAAwE;YACxE,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,eAAe,EAAE,CAAC,CAAC,eAAe;aACnC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IAED,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,UAAU,GAAa,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,+CAA+C,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC5G,IAAI,uDAAuD,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpH,IAAI,oDAAoD,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChH,IAAI,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC5F,IAAI,wCAAwC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrG,IAAI,uCAAuC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3F,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7F,6EAA6E;IAC7E,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,SAAS,CAAC,IAAI,CACZ,2HAA2H,CAC5H,CAAC;IACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CACZ,sBAAsB,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,oCAAoC,CAClF,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,WAAW;YACtB,CAAC,CAAC,4DAA4D,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,gDAAgD;YACnI,CAAC,CAAC,kBAAkB,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,8CAA8C,CAAC;QAC1F,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAE/F,OAAO;QACL,IAAI;QACJ,UAAU;QACV,GAAG,CAAC,UAAU,KAAK,eAAe;YAChC,CAAC,CAAC,EAAE,IAAI,EAAE,kHAAkH,EAAE;YAC9H,CAAC,CAAC,EAAE,CAAC;QACP,aAAa;QACb,iBAAiB;QACjB,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,WAAW;QACX,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,SAAS;QACT,eAAe;QACf,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,cAAc;QACd,SAAS;KACV,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,YAAY,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,CAAC,EAAE,CAAC;IACvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"orient.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/orient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Progressive-disclosure helpers (Spec 25 Phase C / P2–P5).
3
+ *
4
+ * OpenLore's answer to headroom's reversible compression: return the smallest
5
+ * sufficient structural fact plus an *exact* expansion handle, and let a caller
6
+ * fit the result to a token budget deterministically. Because our IDs are
7
+ * deterministic, expansion is exact (call `get_function_body(directory,
8
+ * filePath, name)`), never a fuzzy re-search.
9
+ */
10
+ /**
11
+ * Uniform expansion handle attached to every disclosable item: `name::filePath`.
12
+ * An agent expands exactly one body with `get_function_body` only if it needs
13
+ * the implementation — turning a would-be follow-up read into a cheap, optional,
14
+ * one-shot call instead of a blind re-search (the P2 contract).
15
+ */
16
+ export declare function expandHandle(name: string, filePath: string): string;
17
+ export interface BudgetOutcome<T> {
18
+ kept: T[];
19
+ /** How many items were dropped to fit the budget (0 when none / no budget). */
20
+ omitted: number;
21
+ }
22
+ /**
23
+ * Greedily keep score-ordered items until `budget` tokens are exhausted (P4).
24
+ * Items are assumed already importance-ranked by the caller; at least one item
25
+ * is always kept so a tiny budget still yields a usable answer. Deterministic:
26
+ * same items + budget → same output (uses the char-based `estimateTokens`).
27
+ */
28
+ export declare function applyTokenBudget<T>(items: T[], budget: number | undefined): BudgetOutcome<T>;
29
+ /**
30
+ * Collapse *exact* duplicates — same name AND signature AND docstring — to one
31
+ * exemplar that lists the other locations in `duplicateOf` (P3, conservative).
32
+ * Requiring an exact triple match means two genuinely different functions that
33
+ * merely share a name are never merged; only true copies (generated code,
34
+ * vendored duplicates, re-exports) collapse. Order is preserved.
35
+ */
36
+ export declare function collapseExactDuplicates<T extends {
37
+ name: string;
38
+ filePath: string;
39
+ signature?: string;
40
+ docstring?: string;
41
+ }>(items: T[]): Array<T & {
42
+ duplicateOf?: string[];
43
+ }>;
44
+ /** The omission note appended when a token budget drops items (P4). */
45
+ export declare function omissionNote(omitted: number, expandHint: string): string;
46
+ //# sourceMappingURL=progressive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive.d.ts","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/progressive.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAW5F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACpF,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAenD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressive.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/progressive.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAAgB;IACzD,OAAO,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;AAChC,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAI,KAAU,EAAE,MAA0B;IACxE,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACrF,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM;YAAE,MAAM,CAAC,iBAAiB;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,IAAI,IAAI,CAAC;IACf,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAErC,KAAU;IACV,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0C,CAAC;IAC/D,MAAM,GAAG,GAA0C,EAAE,CAAC;IACtD,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,CAAC,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,EAAoC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,UAAkB;IAC9D,OAAO,GAAG,OAAO,gDAAgD,UAAU,EAAE,CAAC;AAChF,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Reachability & Dead-Code Analysis (spec-20) — cross-language mark-and-sweep
3
+ * over the unified call graph.
4
+ *
5
+ * "Is this reachable from any entry point?", "what is dead?", and "what becomes
6
+ * dead if I delete X?" — graph reachability questions grep can't answer (it sees
7
+ * text, not reach) and the model burns tokens guessing at. Reachability is forward
8
+ * BFS from roots; candidate-dead is the unreached remainder; "dead if I delete X"
9
+ * is the set reachable only through X.
10
+ *
11
+ * Prior art: knip / ts-prune do mark-and-sweep, but TS/JS-only. This is the
12
+ * cross-language version over the tree-sitter graph (15+ languages).
13
+ *
14
+ * HONEST LIMITS — output is *candidates*, never deletion authority. Dynamic entry
15
+ * points, framework magic (routes, DI, plugin registries), reflection, and
16
+ * externally-consumed public exports all produce false "dead" positives. Roots
17
+ * therefore include tests, imported symbols, and detected framework entries; every
18
+ * candidate carries a confidence level and a reason; nothing is ever auto-deleted.
19
+ */
20
+ export interface FindDeadCodeInput {
21
+ directory: string;
22
+ /** "What becomes dead if I delete this symbol?" — switches to delete-impact mode. */
23
+ ifDeleted?: string;
24
+ /** Limit candidate-dead results (default 100). */
25
+ maxResults?: number;
26
+ /** Only report candidates whose file path contains this substring. */
27
+ filePattern?: string;
28
+ }
29
+ export declare function handleFindDeadCode(input: FindDeadCodeInput): Promise<unknown>;
30
+ //# sourceMappingURL=reachability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reachability.d.ts","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/reachability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmFD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAsHnF"}