openlore 2.0.8 → 2.0.10

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 (91) hide show
  1. package/README.md +51 -6
  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 +85 -0
  19. package/dist/cli/commands/mcp.d.ts.map +1 -1
  20. package/dist/cli/commands/mcp.js +69 -53
  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 +31 -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 +2 -2
  42. package/dist/constants.d.ts +10 -3
  43. package/dist/constants.d.ts.map +1 -1
  44. package/dist/constants.js +10 -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/call-graph.d.ts.map +1 -1
  63. package/dist/core/analyzer/call-graph.js +3 -1
  64. package/dist/core/analyzer/call-graph.js.map +1 -1
  65. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -1
  66. package/dist/core/analyzer/spec-vector-index.js +6 -2
  67. package/dist/core/analyzer/spec-vector-index.js.map +1 -1
  68. package/dist/core/services/config-manager.d.ts +17 -0
  69. package/dist/core/services/config-manager.d.ts.map +1 -1
  70. package/dist/core/services/config-manager.js +35 -1
  71. package/dist/core/services/config-manager.js.map +1 -1
  72. package/dist/core/services/mcp-handlers/orient.d.ts +1 -1
  73. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -1
  74. package/dist/core/services/mcp-handlers/orient.js +146 -109
  75. package/dist/core/services/mcp-handlers/orient.js.map +1 -1
  76. package/dist/core/services/mcp-handlers/progressive.d.ts +46 -0
  77. package/dist/core/services/mcp-handlers/progressive.d.ts.map +1 -0
  78. package/dist/core/services/mcp-handlers/progressive.js +0 -0
  79. package/dist/core/services/mcp-handlers/progressive.js.map +1 -0
  80. package/dist/core/services/mcp-handlers/semantic.d.ts +1 -1
  81. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  82. package/dist/core/services/mcp-handlers/semantic.js +39 -26
  83. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  84. package/dist/core/services/mcp-watcher.d.ts +7 -0
  85. package/dist/core/services/mcp-watcher.d.ts.map +1 -1
  86. package/dist/core/services/mcp-watcher.js +38 -1
  87. package/dist/core/services/mcp-watcher.js.map +1 -1
  88. package/dist/core/services/project-detector.d.ts.map +1 -1
  89. package/dist/core/services/project-detector.js +45 -2
  90. package/dist/core/services/project-detector.js.map +1 -1
  91. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Agent measurement core (Spec 25 Phase D / Q2) — shipped so `openlore prove`
3
+ * can run a WITH/WITHOUT pass on the user's own repo and print a personal
4
+ * token-value scorecard. The live agent call is behind an injectable runner so
5
+ * the deterministic parts (JSON parsing, aggregation) are unit-tested without
6
+ * spending API budget; the default runner shells out to `claude -p`, mirroring
7
+ * the Spec 14 benchmark harness exactly.
8
+ */
9
+ import { execFileSync } from 'node:child_process';
10
+ import { writeFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ /** Parse a `claude -p --output-format json` result blob into raw metrics (no scoring). */
13
+ export function parseAgentJson(raw) {
14
+ const j = JSON.parse(raw);
15
+ const usage = (j.usage ?? {});
16
+ const fresh = (usage.input_tokens ?? 0) + (usage.cache_creation_input_tokens ?? 0);
17
+ return {
18
+ freshInputTokens: fresh,
19
+ cacheReadTokens: usage.cache_read_input_tokens ?? 0,
20
+ outputTokens: usage.output_tokens ?? 0,
21
+ costUsd: Number(j.total_cost_usd ?? 0),
22
+ numTurns: Number(j.num_turns ?? 0),
23
+ durationMs: Number(j.duration_ms ?? 0),
24
+ answer: String(j.result ?? ''),
25
+ };
26
+ }
27
+ const ORIENT_NUDGE = 'This project uses OpenLore for architectural memory. BEFORE reading source files, call the ' +
28
+ 'openlore `orient` tool (mcp__openlore__orient) with your task — it returns the relevant ' +
29
+ 'functions, their callers, matching specs, and insertion points in one call. If you are reading ' +
30
+ 'source files without having called orient first, you are probably wasting tokens.';
31
+ /** Default runner: shell out to the `claude` CLI (mirrors the Spec 14 harness). */
32
+ export const claudeRunner = (input) => {
33
+ const args = [
34
+ '-p', input.prompt,
35
+ '--output-format', 'json',
36
+ '--model', input.model,
37
+ '--max-budget-usd', String(input.maxBudgetUsd),
38
+ '--no-session-persistence',
39
+ '--permission-mode', 'bypassPermissions',
40
+ '--disallowedTools', 'WebSearch', 'WebFetch',
41
+ '--strict-mcp-config',
42
+ '--mcp-config', input.mcpConfigPath,
43
+ ];
44
+ if (input.systemPrompt)
45
+ args.push('--append-system-prompt', input.systemPrompt);
46
+ try {
47
+ return execFileSync('claude', args, { cwd: input.cwd, encoding: 'utf-8', maxBuffer: 64 * 1024 * 1024 });
48
+ }
49
+ catch (err) {
50
+ // Some non-zero exits still emit the result JSON on stdout.
51
+ const e = err;
52
+ const out = e.stdout ? e.stdout.toString() : '';
53
+ if (out.trim())
54
+ return out;
55
+ throw err;
56
+ }
57
+ };
58
+ /** Write the WITH (openlore navigation) + WITHOUT (empty) strict-mcp configs. */
59
+ export function writeProveMcpConfigs(workDir, cliEntry) {
60
+ const withPath = join(workDir, 'openlore-prove-with.json');
61
+ writeFileSync(withPath, JSON.stringify({ mcpServers: { openlore: { command: 'node', args: [cliEntry, 'mcp', '--no-watch-auto', '--preset', 'navigation'] } } }, null, 2), 'utf-8');
62
+ const withoutPath = join(workDir, 'openlore-prove-without.json');
63
+ writeFileSync(withoutPath, JSON.stringify({ mcpServers: {} }, null, 2), 'utf-8');
64
+ return { withPath, withoutPath, systemPrompt: ORIENT_NUDGE };
65
+ }
66
+ export const median = (xs) => {
67
+ if (xs.length === 0)
68
+ return 0;
69
+ const s = [...xs].sort((a, b) => a - b);
70
+ const mid = Math.floor(s.length / 2);
71
+ return s.length % 2 ? s[mid] : (s[mid - 1] + s[mid]) / 2;
72
+ };
73
+ /** Median-aggregate N runs of one arm into a comparable cell. */
74
+ export function summarize(runs) {
75
+ return {
76
+ costUsd: median(runs.map(r => r.costUsd)),
77
+ freshInputTokens: median(runs.map(r => r.freshInputTokens)),
78
+ cacheReadTokens: median(runs.map(r => r.cacheReadTokens)),
79
+ numTurns: median(runs.map(r => r.numTurns)),
80
+ durationMs: median(runs.map(r => r.durationMs)),
81
+ correctRate: runs.length ? runs.filter(r => r.correct).length / runs.length : 0,
82
+ runs: runs.length,
83
+ };
84
+ }
85
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../src/core/agent-eval/measure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Personal token-value scorecard (Spec 25 Q2). Turns paired WITH/WITHOUT cells
3
+ * into the honest "does it help on YOUR repo?" verdict — the same metrics the
4
+ * README Value Scorecard publishes (cost + round-trips at equal correctness),
5
+ * measured locally. Pure + deterministic.
6
+ */
7
+ import type { Cell } from './measure.js';
8
+ export type Verdict = 'helps' | 'break-even' | "doesn't help here";
9
+ export interface Scorecard {
10
+ costWithout: number;
11
+ costWith: number;
12
+ costDeltaPct: number;
13
+ turnsWithout: number;
14
+ turnsWith: number;
15
+ turnsDeltaPct: number;
16
+ correctWithout: number;
17
+ correctWith: number;
18
+ freshWithout: number;
19
+ freshWith: number;
20
+ runsPerArm: number;
21
+ verdict: Verdict;
22
+ }
23
+ /**
24
+ * Verdict rule, deliberately conservative and honest:
25
+ * - if WITH is less correct than WITHOUT → "doesn't help here" (never trade accuracy)
26
+ * - else if cost AND round-trips both improve by >5% → "helps"
27
+ * - else if either regresses by >5% → "doesn't help here"
28
+ * - otherwise → "break-even"
29
+ */
30
+ export declare function verdict(sc: Omit<Scorecard, 'verdict'>): Verdict;
31
+ export declare function computeScorecard(without: Cell, withCell: Cell): Scorecard;
32
+ /** Render the scorecard as a human-readable block for the terminal. */
33
+ export declare function renderScorecard(sc: Scorecard, opts: {
34
+ tasks: number;
35
+ mock?: boolean;
36
+ }): string;
37
+ //# sourceMappingURL=scorecard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard.d.ts","sourceRoot":"","sources":["../../../src/core/agent-eval/scorecard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,OAAO,CAO/D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,CAezE;AAKD,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAyB9F"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Personal token-value scorecard (Spec 25 Q2). Turns paired WITH/WITHOUT cells
3
+ * into the honest "does it help on YOUR repo?" verdict — the same metrics the
4
+ * README Value Scorecard publishes (cost + round-trips at equal correctness),
5
+ * measured locally. Pure + deterministic.
6
+ */
7
+ const pctDelta = (without, withv) => without === 0 ? 0 : Math.round(((withv - without) / without) * 100);
8
+ /**
9
+ * Verdict rule, deliberately conservative and honest:
10
+ * - if WITH is less correct than WITHOUT → "doesn't help here" (never trade accuracy)
11
+ * - else if cost AND round-trips both improve by >5% → "helps"
12
+ * - else if either regresses by >5% → "doesn't help here"
13
+ * - otherwise → "break-even"
14
+ */
15
+ export function verdict(sc) {
16
+ if (sc.correctWith + 1e-9 < sc.correctWithout)
17
+ return "doesn't help here";
18
+ const cost = sc.costDeltaPct;
19
+ const turns = sc.turnsDeltaPct;
20
+ if (cost <= -5 && turns <= -5)
21
+ return 'helps';
22
+ if (cost >= 5 || turns >= 5)
23
+ return "doesn't help here";
24
+ return 'break-even';
25
+ }
26
+ export function computeScorecard(without, withCell) {
27
+ const base = {
28
+ costWithout: without.costUsd,
29
+ costWith: withCell.costUsd,
30
+ costDeltaPct: pctDelta(without.costUsd, withCell.costUsd),
31
+ turnsWithout: without.numTurns,
32
+ turnsWith: withCell.numTurns,
33
+ turnsDeltaPct: pctDelta(without.numTurns, withCell.numTurns),
34
+ correctWithout: without.correctRate,
35
+ correctWith: withCell.correctRate,
36
+ freshWithout: without.freshInputTokens,
37
+ freshWith: withCell.freshInputTokens,
38
+ runsPerArm: Math.min(without.runs, withCell.runs),
39
+ };
40
+ return { ...base, verdict: verdict(base) };
41
+ }
42
+ const sign = (n) => (n > 0 ? `+${n}` : `${n}`);
43
+ const pct = (r) => `${Math.round(r * 100)}%`;
44
+ /** Render the scorecard as a human-readable block for the terminal. */
45
+ export function renderScorecard(sc, opts) {
46
+ const lines = [];
47
+ lines.push('');
48
+ lines.push(' OpenLore — personal token-value scorecard');
49
+ lines.push(' ' + '─'.repeat(48));
50
+ if (opts.mock) {
51
+ lines.push(' ⚠ DRY RUN — synthetic numbers, no agent was called. Run without --dry-run for real measurement.');
52
+ }
53
+ lines.push(` Tasks: ${opts.tasks} Runs/arm: ${sc.runsPerArm} (WITHOUT vs WITH openlore)`);
54
+ lines.push('');
55
+ lines.push(` Cost $${sc.costWithout.toFixed(3)} → $${sc.costWith.toFixed(3)} (${sign(sc.costDeltaPct)}%)`);
56
+ lines.push(` Round-trips ${sc.turnsWithout.toFixed(0)} → ${sc.turnsWith.toFixed(0)} (${sign(sc.turnsDeltaPct)}%)`);
57
+ lines.push(` Fresh tokens ${sc.freshWithout.toFixed(0)} → ${sc.freshWith.toFixed(0)}`);
58
+ lines.push(` Correctness ${pct(sc.correctWithout)} → ${pct(sc.correctWith)}`);
59
+ lines.push('');
60
+ const verdictLabel = sc.verdict === 'helps' ? '✅ OpenLore helps on this repo'
61
+ : sc.verdict === 'break-even' ? '➖ Break-even on this repo'
62
+ : "❌ OpenLore doesn't help here";
63
+ lines.push(` Verdict: ${verdictLabel}`);
64
+ if (sc.runsPerArm < 3) {
65
+ lines.push(' (sample is small — LLM runs are noisy; use --runs 4+ for a firmer number)');
66
+ }
67
+ lines.push('');
68
+ return lines.join('\n');
69
+ }
70
+ //# sourceMappingURL=scorecard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard.js","sourceRoot":"","sources":["../../../src/core/agent-eval/scorecard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAC1D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAA8B;IACpD,IAAI,EAAE,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC,cAAc;QAAE,OAAO,mBAAmB,CAAC;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC;IAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC;IAC/B,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9C,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACxD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAa,EAAE,QAAc;IAC5D,MAAM,IAAI,GAA+B;QACvC,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACzD,YAAY,EAAE,OAAO,CAAC,QAAQ;QAC9B,SAAS,EAAE,QAAQ,CAAC,QAAQ;QAC5B,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5D,cAAc,EAAE,OAAO,CAAC,WAAW;QACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,YAAY,EAAE,OAAO,CAAC,gBAAgB;QACtC,SAAS,EAAE,QAAQ,CAAC,gBAAgB;QACpC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;KAClD,CAAC;IACF,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AAE7D,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,EAAa,EAAE,IAAuC;IACpF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;IAClH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC,UAAU,+BAA+B,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1H,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,YAAY,GAChB,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,+BAA+B;QACtD,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,2BAA2B;YACzD,CAAC,CAAC,8BAA8B,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC5F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Task derivation for `openlore prove` (Spec 25 Q2).
3
+ *
4
+ * The benchmark's win shows up on orientation questions about an unfamiliar
5
+ * codebase. We auto-derive such questions from the user's own call graph, with
6
+ * an oracle taken from the graph itself (so correctness is verifiable without a
7
+ * human). Pure + deterministic so it unit-tests without a repo.
8
+ */
9
+ /** Minimal call-graph fact per function — adapted from the EdgeStore by the CLI. */
10
+ export interface GraphFact {
11
+ name: string;
12
+ filePath: string;
13
+ callerNames: string[];
14
+ calleeNames: string[];
15
+ isEntryPoint: boolean;
16
+ }
17
+ export interface ProveTask {
18
+ id: string;
19
+ prompt: string;
20
+ /** Answer is correct if it contains AT LEAST ONE of these (case-insensitive). */
21
+ mustIncludeAny: string[];
22
+ /** Short note on what structural fact this probes. */
23
+ probes: string;
24
+ }
25
+ /** True iff the agent's answer contains at least one oracle substring. */
26
+ export declare function scoreAnswer(task: ProveTask, answer: string): boolean;
27
+ /**
28
+ * Derive up to `max` orientation tasks from graph facts. Deterministic: facts
29
+ * are sorted by a stable key before selection so the same graph yields the same
30
+ * tasks. Tasks use forgiving, structurally-grounded oracles (a file path, or any
31
+ * one of many valid callers/callees) so a correct answer is reliably recognized —
32
+ * an earlier "which function has the most callers?" task was too ambiguous (the
33
+ * agent named a plausible-but-different function) and is gone. Returns [] when
34
+ * the graph is too sparse to form an oracle-able task.
35
+ */
36
+ export declare function deriveTasks(facts: GraphFact[], max?: number): ProveTask[];
37
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/core/agent-eval/tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oFAAoF;AACpF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGpE;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,SAAI,GAAG,SAAS,EAAE,CA+CpE"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Task derivation for `openlore prove` (Spec 25 Q2).
3
+ *
4
+ * The benchmark's win shows up on orientation questions about an unfamiliar
5
+ * codebase. We auto-derive such questions from the user's own call graph, with
6
+ * an oracle taken from the graph itself (so correctness is verifiable without a
7
+ * human). Pure + deterministic so it unit-tests without a repo.
8
+ */
9
+ /** True iff the agent's answer contains at least one oracle substring. */
10
+ export function scoreAnswer(task, answer) {
11
+ const a = answer.toLowerCase();
12
+ return task.mustIncludeAny.some(s => a.includes(s.toLowerCase()));
13
+ }
14
+ /** basename without extension, e.g. "src/core/edge-store.ts" → "edge-store". */
15
+ function fileStem(filePath) {
16
+ const base = filePath.split('/').pop() ?? filePath;
17
+ return base.replace(/\.[^.]+$/, '');
18
+ }
19
+ /**
20
+ * A name is a good oracle target if it's distinctive enough that the agent's
21
+ * answer will quote it verbatim rather than a synonym — long, and not a generic
22
+ * one-word English term. Avoids ambiguous targets like `run`/`get`/`handle`.
23
+ */
24
+ function isDistinctive(name) {
25
+ if (name.length < 6)
26
+ return false;
27
+ return /[A-Z_]/.test(name.slice(1)) || /[._]/.test(name); // camelCase / snake_case / qualified
28
+ }
29
+ /**
30
+ * Derive up to `max` orientation tasks from graph facts. Deterministic: facts
31
+ * are sorted by a stable key before selection so the same graph yields the same
32
+ * tasks. Tasks use forgiving, structurally-grounded oracles (a file path, or any
33
+ * one of many valid callers/callees) so a correct answer is reliably recognized —
34
+ * an earlier "which function has the most callers?" task was too ambiguous (the
35
+ * agent named a plausible-but-different function) and is gone. Returns [] when
36
+ * the graph is too sparse to form an oracle-able task.
37
+ */
38
+ export function deriveTasks(facts, max = 3) {
39
+ const tasks = [];
40
+ // Most-called first, then by name (stable tie-break) — no Date/random.
41
+ const byCallers = [...facts].sort((a, b) => b.callerNames.length - a.callerNames.length || a.name.localeCompare(b.name));
42
+ // Hub = a well-connected function with a distinctive name (so the oracle is
43
+ // unambiguous), falling back to the most-called function if none qualifies.
44
+ const hub = byCallers.find(f => f.callerNames.length >= 2 && isDistinctive(f.name)) ?? byCallers[0];
45
+ if (hub && hub.callerNames.length >= 2) {
46
+ // Task 1 — locate: "which file defines `hub`?" Oracle = the file path/stem,
47
+ // which a correct answer will quote verbatim. Very robust.
48
+ tasks.push({
49
+ id: 'locate',
50
+ prompt: `In this codebase, which file defines the function \`${hub.name}\`? Answer with the file path.`,
51
+ mustIncludeAny: [hub.filePath, fileStem(hub.filePath)],
52
+ probes: `definition site of ${hub.name} (${hub.filePath})`,
53
+ });
54
+ // Task 2 — a caller of the hub (any one of many valid callers counts).
55
+ tasks.push({
56
+ id: 'caller',
57
+ prompt: `Name one function that directly calls \`${hub.name}\` in this codebase.`,
58
+ mustIncludeAny: hub.callerNames.slice(0, 25),
59
+ probes: `a direct caller of ${hub.name}`,
60
+ });
61
+ }
62
+ // Task 3 — a callee of a distinctive, high-fan-out function.
63
+ const byCallees = [...facts].sort((a, b) => b.calleeNames.length - a.calleeNames.length || a.name.localeCompare(b.name));
64
+ const fanOutHub = byCallees.find(f => f.calleeNames.length >= 2 && isDistinctive(f.name) && f.name !== hub?.name)
65
+ ?? byCallees.find(f => f.calleeNames.length >= 2);
66
+ if (fanOutHub) {
67
+ tasks.push({
68
+ id: 'callee',
69
+ prompt: `Name one function that \`${fanOutHub.name}\` calls (directly invokes) in this codebase.`,
70
+ mustIncludeAny: fanOutHub.calleeNames.slice(0, 25),
71
+ probes: `a callee of ${fanOutHub.name}`,
72
+ });
73
+ }
74
+ return tasks.slice(0, max);
75
+ }
76
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/core/agent-eval/tasks.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Used by:
8
8
  * - MCP tool `get_architecture_overview` (mcp.ts)
9
- * - `openlore analyze` — writes ARCHITECTURE.md to the project root
9
+ * - `openlore analyze` — writes ARCHITECTURE.md into .openlore/analysis/
10
10
  */
11
11
  import type { DependencyGraphResult } from './dependency-graph.js';
12
12
  import type { LLMContext } from './artifact-generator.js';
@@ -60,8 +60,10 @@ export declare function buildArchitectureOverview(depGraph: DependencyGraphResul
60
60
  */
61
61
  export declare function renderArchitectureMarkdown(overview: ArchitectureOverview): string;
62
62
  /**
63
- * Write ARCHITECTURE.md to the project root.
63
+ * Write ARCHITECTURE.md into the given output directory (the analysis dir,
64
+ * `.openlore/analysis/`), alongside CODEBASE.md and the other generated
65
+ * artifacts, so nothing churns at the repo root (Spec 26 B3).
64
66
  * Returns the path written.
65
67
  */
66
- export declare function writeArchitectureMd(rootPath: string, overview: ArchitectureOverview): Promise<string>;
68
+ export declare function writeArchitectureMd(outputDir: string, overview: ArchitectureOverview): Promise<string>;
67
69
  //# sourceMappingURL=architecture-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-writer.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/architecture-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAMR;AAMD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,EACtC,GAAG,EAAE,UAAU,GAAG,IAAI,EACtB,MAAM,EAAE,MAAM,GACb,oBAAoB,CA4EtB;AAcD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAmFjF;AAMD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAIjB"}
1
+ {"version":3,"file":"architecture-writer.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/architecture-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAMR;AAMD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,EACtC,GAAG,EAAE,UAAU,GAAG,IAAI,EACtB,MAAM,EAAE,MAAM,GACb,oBAAoB,CA4EtB;AAcD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAmFjF;AAMD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAIjB"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Used by:
8
8
  * - MCP tool `get_architecture_overview` (mcp.ts)
9
- * - `openlore analyze` — writes ARCHITECTURE.md to the project root
9
+ * - `openlore analyze` — writes ARCHITECTURE.md into .openlore/analysis/
10
10
  */
11
11
  import { writeFile } from 'node:fs/promises';
12
12
  import { join } from 'node:path';
@@ -198,11 +198,13 @@ export function renderArchitectureMarkdown(overview) {
198
198
  // FILE WRITER
199
199
  // ============================================================================
200
200
  /**
201
- * Write ARCHITECTURE.md to the project root.
201
+ * Write ARCHITECTURE.md into the given output directory (the analysis dir,
202
+ * `.openlore/analysis/`), alongside CODEBASE.md and the other generated
203
+ * artifacts, so nothing churns at the repo root (Spec 26 B3).
202
204
  * Returns the path written.
203
205
  */
204
- export async function writeArchitectureMd(rootPath, overview) {
205
- const outPath = join(rootPath, 'ARCHITECTURE.md');
206
+ export async function writeArchitectureMd(outputDir, overview) {
207
+ const outPath = join(outputDir, 'ARCHITECTURE.md');
206
208
  await writeFile(outPath, renderArchitectureMarkdown(overview), 'utf-8');
207
209
  return outPath;
208
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-writer.js","sourceRoot":"","sources":["../../../src/core/analyzer/architecture-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiCjC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,UAAU,GAAG,SAAS,GAAG,GAAG;QAAE,OAAO,aAAa,CAAC,CAAG,8BAA8B;IACxF,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC,CAAC,wBAAwB;IACnF,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC,CAAiB,8BAA8B;IACzF,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC,CAAoB,4BAA4B;IACvF,OAAO,UAAU,CAAC,CAAyC,wBAAwB;AACrF,CAAC;AAED,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAsC,EACtC,GAAsB,EACtB,MAAc;IAEd,oEAAoE;IACpE,mDAAmD;IACnD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnF,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CACjE,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAChE,CAAC;IAEF,4DAA4D;IAC5D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,6BAA6B;IAC9E,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YAC9B,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAC/D,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAqB,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;SAC1D,GAAG,CAAC,EAAE,CAAC,EAAE;QACR,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,IAAI,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,eAAe,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEvD,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;YACtB,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;YAC1B,IAAI;YACJ,eAAe,EAAE,iBAAiB;YAClC,QAAQ,EAAE,eAAe;YACzB,SAAS;YACT,QAAQ,EAAE,QAAQ;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACjD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACf,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC;SAC1D,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC;SACtD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEpF,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE;YACP,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,IAAI,CAAC;YAC/C,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,IAAI,CAAC;YAC/C,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;YACpC,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;SAC9D;QACD,QAAQ;QACR,iBAAiB;QACjB,YAAY;KACb,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,UAAU,GAA2B;IACzC,WAAW,EAAI,aAAa;IAC5B,YAAY,EAAG,cAAc;IAC7B,cAAc,EAAC,gBAAgB;IAC/B,SAAS,EAAM,WAAW;IAC1B,QAAQ,EAAO,UAAU;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAA8B;IACvE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,0CAA0C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;IACnG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChF,CAAC,CAAC,GAAG,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,wDAAwD;IACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;YACrE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,QAA8B;IAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAClD,MAAM,SAAS,CAAC,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"architecture-writer.js","sourceRoot":"","sources":["../../../src/core/analyzer/architecture-writer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/call-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/call-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAW7D,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,WAAW,GACX,WAAW,GACX,WAAW,GACX,UAAU,CAAC;AAEf,8BAA8B;AAC9B,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,aAAa,GACb,eAAe,CAAC;AAEpB,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,aAAa,CAAC;AAalB,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yGAAyG;IACzG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,sDAAsD;AACtD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,CAAC;IAC3B,yFAAyF;IACzF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAQ9F;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS/C;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;CACzD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,4DAA4D;IAC5D,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,4CAA4C;IAC5C,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,uDAAuD;IACvD,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACjC;AA6+CD,8EAA8E;AAC9E,wBAAgB,2BAA2B,IAAI,IAAI,CAGlD;AAivBD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGlF;AAMD,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;OAWG;IACG,KAAK,CACT,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACjC,SAAS,CAAC,EAAE,SAAS,EACrB,eAAe,CAAC,EAAE,YAAY,EAAE,GAC/B,OAAO,CAAC,eAAe,CAAC;IA8c3B,OAAO,CAAC,qBAAqB;CAyB9B;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAW/E"}
@@ -26,7 +26,9 @@ import { logger } from '../../utils/logger.js';
26
26
  */
27
27
  export function layerOf(filePath, layers) {
28
28
  for (const [layerName, prefixes] of Object.entries(layers)) {
29
- if (prefixes.some(p => filePath.includes(p)))
29
+ // Path-prefix match, not substring: `src/cli` must not classify
30
+ // `src/clinic/x.ts` or `src/api-deprecated/y.ts` into a neighbouring layer.
31
+ if (prefixes.some(p => { const q = p.endsWith('/') ? p : p + '/'; return filePath === p || filePath.startsWith(q); }))
30
32
  return layerName;
31
33
  }
32
34
  return undefined;