ghagga-core 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/consensus.d.ts +16 -0
  3. package/dist/agents/consensus.d.ts.map +1 -1
  4. package/dist/agents/consensus.js +57 -33
  5. package/dist/agents/consensus.js.map +1 -1
  6. package/dist/agents/diagnostic.d.ts +55 -0
  7. package/dist/agents/diagnostic.d.ts.map +1 -0
  8. package/dist/agents/diagnostic.js +143 -0
  9. package/dist/agents/diagnostic.js.map +1 -0
  10. package/dist/agents/prompts.d.ts +6 -4
  11. package/dist/agents/prompts.d.ts.map +1 -1
  12. package/dist/agents/prompts.js +110 -24
  13. package/dist/agents/prompts.js.map +1 -1
  14. package/dist/agents/simple.d.ts +7 -0
  15. package/dist/agents/simple.d.ts.map +1 -1
  16. package/dist/agents/simple.js +32 -18
  17. package/dist/agents/simple.js.map +1 -1
  18. package/dist/agents/workflow.d.ts +28 -1
  19. package/dist/agents/workflow.d.ts.map +1 -1
  20. package/dist/agents/workflow.js +112 -45
  21. package/dist/agents/workflow.js.map +1 -1
  22. package/dist/enhance/enhance.d.ts.map +1 -1
  23. package/dist/enhance/enhance.js +16 -4
  24. package/dist/enhance/enhance.js.map +1 -1
  25. package/dist/format.d.ts +47 -1
  26. package/dist/format.d.ts.map +1 -1
  27. package/dist/format.js +175 -3
  28. package/dist/format.js.map +1 -1
  29. package/dist/graph/blast-radius.d.ts +57 -0
  30. package/dist/graph/blast-radius.d.ts.map +1 -0
  31. package/dist/graph/blast-radius.js +145 -0
  32. package/dist/graph/blast-radius.js.map +1 -0
  33. package/dist/graph/builder.d.ts +50 -0
  34. package/dist/graph/builder.d.ts.map +1 -0
  35. package/dist/graph/builder.js +210 -0
  36. package/dist/graph/builder.js.map +1 -0
  37. package/dist/graph/extractors/go.d.ts +9 -0
  38. package/dist/graph/extractors/go.d.ts.map +1 -0
  39. package/dist/graph/extractors/go.js +78 -0
  40. package/dist/graph/extractors/go.js.map +1 -0
  41. package/dist/graph/extractors/index.d.ts +22 -0
  42. package/dist/graph/extractors/index.d.ts.map +1 -0
  43. package/dist/graph/extractors/index.js +37 -0
  44. package/dist/graph/extractors/index.js.map +1 -0
  45. package/dist/graph/extractors/java.d.ts +9 -0
  46. package/dist/graph/extractors/java.d.ts.map +1 -0
  47. package/dist/graph/extractors/java.js +80 -0
  48. package/dist/graph/extractors/java.js.map +1 -0
  49. package/dist/graph/extractors/javascript.d.ts +9 -0
  50. package/dist/graph/extractors/javascript.d.ts.map +1 -0
  51. package/dist/graph/extractors/javascript.js +204 -0
  52. package/dist/graph/extractors/javascript.js.map +1 -0
  53. package/dist/graph/extractors/python.d.ts +9 -0
  54. package/dist/graph/extractors/python.d.ts.map +1 -0
  55. package/dist/graph/extractors/python.js +103 -0
  56. package/dist/graph/extractors/python.js.map +1 -0
  57. package/dist/graph/extractors/rust.d.ts +9 -0
  58. package/dist/graph/extractors/rust.d.ts.map +1 -0
  59. package/dist/graph/extractors/rust.js +115 -0
  60. package/dist/graph/extractors/rust.js.map +1 -0
  61. package/dist/graph/extractors/types.d.ts +31 -0
  62. package/dist/graph/extractors/types.d.ts.map +1 -0
  63. package/dist/graph/extractors/types.js +9 -0
  64. package/dist/graph/extractors/types.js.map +1 -0
  65. package/dist/graph/extractors/typescript.d.ts +9 -0
  66. package/dist/graph/extractors/typescript.d.ts.map +1 -0
  67. package/dist/graph/extractors/typescript.js +151 -0
  68. package/dist/graph/extractors/typescript.js.map +1 -0
  69. package/dist/graph/index.d.ts +15 -0
  70. package/dist/graph/index.d.ts.map +1 -0
  71. package/dist/graph/index.js +14 -0
  72. package/dist/graph/index.js.map +1 -0
  73. package/dist/graph/loader.d.ts +43 -0
  74. package/dist/graph/loader.d.ts.map +1 -0
  75. package/dist/graph/loader.js +104 -0
  76. package/dist/graph/loader.js.map +1 -0
  77. package/dist/graph/schema.d.ts +113 -0
  78. package/dist/graph/schema.d.ts.map +1 -0
  79. package/dist/graph/schema.js +144 -0
  80. package/dist/graph/schema.js.map +1 -0
  81. package/dist/health/trends.js +1 -1
  82. package/dist/health/trends.js.map +1 -1
  83. package/dist/index.d.ts +20 -5
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -4
  86. package/dist/index.js.map +1 -1
  87. package/dist/memory/sqlite.js +4 -4
  88. package/dist/memory/sqlite.js.map +1 -1
  89. package/dist/pipeline.d.ts.map +1 -1
  90. package/dist/pipeline.js +291 -42
  91. package/dist/pipeline.js.map +1 -1
  92. package/dist/providers/cli-bridge.d.ts +136 -0
  93. package/dist/providers/cli-bridge.d.ts.map +1 -0
  94. package/dist/providers/cli-bridge.js +457 -0
  95. package/dist/providers/cli-bridge.js.map +1 -0
  96. package/dist/providers/fallback.d.ts +8 -0
  97. package/dist/providers/fallback.d.ts.map +1 -1
  98. package/dist/providers/fallback.js +24 -8
  99. package/dist/providers/fallback.js.map +1 -1
  100. package/dist/providers/gateway.d.ts +40 -0
  101. package/dist/providers/gateway.d.ts.map +1 -0
  102. package/dist/providers/gateway.js +52 -0
  103. package/dist/providers/gateway.js.map +1 -0
  104. package/dist/providers/generate-fn.d.ts +62 -0
  105. package/dist/providers/generate-fn.d.ts.map +1 -0
  106. package/dist/providers/generate-fn.js +84 -0
  107. package/dist/providers/generate-fn.js.map +1 -0
  108. package/dist/providers/index.d.ts +5 -0
  109. package/dist/providers/index.d.ts.map +1 -1
  110. package/dist/providers/index.js +53 -0
  111. package/dist/providers/index.js.map +1 -1
  112. package/dist/tools/plugins/index.d.ts +2 -0
  113. package/dist/tools/plugins/index.d.ts.map +1 -1
  114. package/dist/tools/plugins/index.js +7 -0
  115. package/dist/tools/plugins/index.js.map +1 -1
  116. package/dist/tools/plugins/zizmor.d.ts +22 -0
  117. package/dist/tools/plugins/zizmor.d.ts.map +1 -0
  118. package/dist/tools/plugins/zizmor.js +112 -0
  119. package/dist/tools/plugins/zizmor.js.map +1 -0
  120. package/dist/tools/resolve.js +1 -1
  121. package/dist/tools/resolve.js.map +1 -1
  122. package/dist/tools/types.d.ts +1 -1
  123. package/dist/tools/types.d.ts.map +1 -1
  124. package/dist/types.d.ts +54 -3
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js +21 -1
  127. package/dist/types.js.map +1 -1
  128. package/dist/utils/concurrency.d.ts +29 -0
  129. package/dist/utils/concurrency.d.ts.map +1 -0
  130. package/dist/utils/concurrency.js +40 -0
  131. package/dist/utils/concurrency.js.map +1 -0
  132. package/dist/utils/context-levels.d.ts +113 -0
  133. package/dist/utils/context-levels.d.ts.map +1 -0
  134. package/dist/utils/context-levels.js +255 -0
  135. package/dist/utils/context-levels.js.map +1 -0
  136. package/dist/utils/diff.d.ts +25 -0
  137. package/dist/utils/diff.d.ts.map +1 -1
  138. package/dist/utils/diff.js +28 -0
  139. package/dist/utils/diff.js.map +1 -1
  140. package/dist/utils/llm-timeout.d.ts +38 -0
  141. package/dist/utils/llm-timeout.d.ts.map +1 -0
  142. package/dist/utils/llm-timeout.js +76 -0
  143. package/dist/utils/llm-timeout.js.map +1 -0
  144. package/dist/utils/path-protection.d.ts +59 -0
  145. package/dist/utils/path-protection.d.ts.map +1 -0
  146. package/dist/utils/path-protection.js +136 -0
  147. package/dist/utils/path-protection.js.map +1 -0
  148. package/dist/utils/token-budget.d.ts +34 -1
  149. package/dist/utils/token-budget.d.ts.map +1 -1
  150. package/dist/utils/token-budget.js +108 -3
  151. package/dist/utils/token-budget.js.map +1 -1
  152. package/package.json +21 -19
  153. package/LICENSE +0 -21
package/dist/pipeline.js CHANGED
@@ -15,17 +15,23 @@
15
15
  * memory is unavailable, the pipeline continues with what it has.
16
16
  */
17
17
  import { runConsensusReview } from './agents/consensus.js';
18
+ import { runDiagnosticReview } from './agents/diagnostic.js';
18
19
  import { buildStackHints } from './agents/prompts.js';
19
20
  import { runSimpleReview } from './agents/simple.js';
20
21
  import { runWorkflowReview } from './agents/workflow.js';
21
22
  import { enhanceFindings, mergeEnhanceResult } from './enhance/index.js';
22
23
  import { serializeFindings } from './enhance/prompt.js';
24
+ import { computeBlastRadius } from './graph/blast-radius.js';
25
+ import { isGraphStale } from './graph/schema.js';
23
26
  import { persistReviewObservations } from './memory/persist.js';
24
27
  import { searchMemoryForContext } from './memory/search.js';
28
+ import { resolveCredentialEnvVar } from './providers/cli-bridge.js';
29
+ import { createAISDKGenerateFn, createCLIBridgeGenerateFn, createGatewayGenerateFn, } from './providers/generate-fn.js';
25
30
  import { initializeDefaultTools } from './tools/plugins/index.js';
26
31
  import { toolRegistry } from './tools/registry.js';
27
32
  import { formatStaticAnalysisContext, isToolRegistryEnabled, runStaticAnalysis, } from './tools/runner.js';
28
- import { filterIgnoredFiles, parseDiffFiles, truncateDiff } from './utils/diff.js';
33
+ import { buildProgressiveContext } from './utils/context-levels.js';
34
+ import { filterDiffFiles, parseDiffFiles, truncateDiff } from './utils/diff.js';
29
35
  import { detectStacks } from './utils/stack-detect.js';
30
36
  import { calculateTokenBudget } from './utils/token-budget.js';
31
37
  // ─── Validation ─────────────────────────────────────────────────
@@ -45,6 +51,14 @@ function validateInput(input) {
45
51
  if (input.providerChain && input.providerChain.length > 0) {
46
52
  return;
47
53
  }
54
+ // CLI Bridge mode: no API key required (uses CLI auth)
55
+ if (input.provider === 'cli-bridge') {
56
+ return;
57
+ }
58
+ // Gateway mode: uses dashboard-configured token (stored as apiKey in chain entry)
59
+ if (input.provider === 'gateway') {
60
+ return;
61
+ }
48
62
  // Single provider mode (CLI/Action backward compat)
49
63
  if (!input.apiKey) {
50
64
  throw new Error('Review input must include an API key');
@@ -78,10 +92,24 @@ export async function reviewPipeline(input) {
78
92
  emit({ step: 'validate', message: 'Input validated' });
79
93
  // ── Step 2: Parse and filter the diff ──────────────────────
80
94
  const allFiles = parseDiffFiles(input.diff);
81
- const filteredFiles = filterIgnoredFiles(allFiles, input.settings.ignorePatterns);
95
+ let { filtered: filteredFiles, blocked, redacted, } = filterDiffFiles(allFiles, input.settings.ignorePatterns);
96
+ if (blocked.length > 0) {
97
+ emit({
98
+ step: 'path-protection',
99
+ message: `Blocked ${blocked.length} sensitive file(s) from review`,
100
+ detail: blocked.map((p) => ` [BLOCKED] ${p}`).join('\n'),
101
+ });
102
+ }
103
+ if (redacted.length > 0) {
104
+ emit({
105
+ step: 'path-protection',
106
+ message: `Redacted ${redacted.length} file(s) — paths visible, content hidden`,
107
+ detail: redacted.map((p) => ` [REDACTED] ${p}`).join('\n'),
108
+ });
109
+ }
82
110
  emit({
83
111
  step: 'parse-diff',
84
- message: `Parsed ${allFiles.length} files from diff, ${filteredFiles.length} after filtering`,
112
+ message: `Parsed ${allFiles.length} files from diff, ${filteredFiles.length} after filtering (${blocked.length} blocked, ${redacted.length} redacted)`,
85
113
  detail: filteredFiles.map((f) => ` ${f.path}`).join('\n'),
86
114
  });
87
115
  // If all files were filtered out, skip the review
@@ -89,8 +117,85 @@ export async function reviewPipeline(input) {
89
117
  return createSkippedResult(input, startTime);
90
118
  }
91
119
  // Reconstruct filtered diff and get file list
92
- const filteredDiff = filteredFiles.map((f) => f.content).join('\n');
120
+ let filteredDiff = filteredFiles.map((f) => f.content).join('\n');
93
121
  const fileList = filteredFiles.map((f) => f.path);
122
+ // ── Step 2.5: Blast-radius filter (optional) ──────────────
123
+ let blastRadiusMetadata;
124
+ if (input.settings.enableBlastRadius && input.graphLoader) {
125
+ try {
126
+ const graph = await input.graphLoader.load();
127
+ if (graph) {
128
+ const metadata = await input.graphLoader.loadMetadata();
129
+ const stale = metadata ? isGraphStale(metadata) : false;
130
+ if (stale) {
131
+ emit({
132
+ step: 'blast-radius',
133
+ message: `Dependency graph is stale (last indexed: ${metadata?.lastIndexedAt})`,
134
+ });
135
+ }
136
+ const blastResult = computeBlastRadius(graph, fileList, {
137
+ maxDepth: input.settings.traversalDepth,
138
+ maxFiles: input.settings.maxBlastRadiusFiles,
139
+ });
140
+ if (blastResult.exceededCap) {
141
+ emit({
142
+ step: 'blast-radius',
143
+ message: `Blast radius exceeds ${input.settings.maxBlastRadiusFiles ?? 50} files — using full diff`,
144
+ });
145
+ blastRadiusMetadata = {
146
+ enabled: true,
147
+ graphAvailable: true,
148
+ totalFiles: filteredFiles.length,
149
+ blastRadiusFiles: filteredFiles.length,
150
+ fallbackReason: `blast radius exceeds ${input.settings.maxBlastRadiusFiles ?? 50} files`,
151
+ graphStale: stale,
152
+ };
153
+ }
154
+ else {
155
+ // Filter to blast-radius files
156
+ filteredFiles = filteredFiles.filter((f) => blastResult.files.has(f.path));
157
+ filteredDiff = filteredFiles.map((f) => f.content).join('\n');
158
+ emit({
159
+ step: 'blast-radius',
160
+ message: `Blast radius: ${blastResult.files.size} files (from ${fileList.length} in diff)`,
161
+ detail: [
162
+ ` changed: ${blastResult.changedFiles.length}`,
163
+ ` dependents: ${blastResult.dependents.length}`,
164
+ ` tests: ${blastResult.testFiles.length}`,
165
+ ].join('\n'),
166
+ });
167
+ blastRadiusMetadata = {
168
+ enabled: true,
169
+ graphAvailable: true,
170
+ totalFiles: fileList.length,
171
+ blastRadiusFiles: blastResult.files.size,
172
+ graphStale: stale,
173
+ };
174
+ }
175
+ }
176
+ else {
177
+ emit({ step: 'blast-radius', message: 'Blast radius: skipped (no graph available)' });
178
+ blastRadiusMetadata = {
179
+ enabled: true,
180
+ graphAvailable: false,
181
+ totalFiles: filteredFiles.length,
182
+ blastRadiusFiles: filteredFiles.length,
183
+ fallbackReason: 'no graph available',
184
+ };
185
+ }
186
+ }
187
+ catch (error) {
188
+ console.warn('[ghagga] Blast-radius failed (degrading gracefully):', error);
189
+ emit({ step: 'blast-radius', message: 'Blast radius: skipped (error loading graph)' });
190
+ blastRadiusMetadata = {
191
+ enabled: true,
192
+ graphAvailable: false,
193
+ totalFiles: filteredFiles.length,
194
+ blastRadiusFiles: filteredFiles.length,
195
+ fallbackReason: `error: ${error instanceof Error ? error.message : String(error)}`,
196
+ };
197
+ }
198
+ }
94
199
  // ── Step 3: Detect tech stacks ─────────────────────────────
95
200
  const stacks = detectStacks(fileList);
96
201
  const stackHints = buildStackHints(stacks);
@@ -101,11 +206,11 @@ export async function reviewPipeline(input) {
101
206
  });
102
207
  // ── Step 4: Truncate diff to fit token budget ──────────────
103
208
  const primaryModel = resolvePrimaryModel(input);
104
- const { diffBudget } = calculateTokenBudget(primaryModel);
209
+ const { diffBudget, contextBudget } = calculateTokenBudget(primaryModel);
105
210
  const { truncated: truncatedDiff } = truncateDiff(filteredDiff, diffBudget);
106
211
  emit({
107
212
  step: 'token-budget',
108
- message: `Token budget: ${diffBudget.toLocaleString()} tokens for diff`,
213
+ message: `Token budget: ${diffBudget.toLocaleString()} tokens for diff, ${contextBudget.toLocaleString()} tokens for context`,
109
214
  });
110
215
  // ── Step 5: Run static analysis (in parallel with memory) ──
111
216
  // If precomputed results are available (from GitHub Actions runner), use those directly.
@@ -116,21 +221,35 @@ export async function reviewPipeline(input) {
116
221
  ? 'Using precomputed static analysis from runner...'
117
222
  : 'Running static analysis & memory search...',
118
223
  });
119
- const [staticResult, memoryContext] = await Promise.all([
224
+ const [staticResult, rawMemoryContext] = await Promise.all([
120
225
  input.precomputedStaticAnalysis
121
226
  ? Promise.resolve(input.precomputedStaticAnalysis)
122
227
  : runStaticAnalysisSafe(fileList, input),
123
228
  aiEnabled ? searchMemorySafe(input, fileList) : Promise.resolve(null),
124
229
  ]);
125
- const staticContext = formatStaticAnalysisContext(staticResult);
230
+ // Build full (L2) context first, then choose fidelity level based on budget
231
+ const fullStaticContext = formatStaticAnalysisContext(staticResult);
232
+ const progressiveContext = buildProgressiveContext({
233
+ staticResult,
234
+ memoryContext: rawMemoryContext,
235
+ stackHints,
236
+ contextBudget,
237
+ fullStaticContext,
238
+ });
239
+ const staticContext = progressiveContext.staticContext;
240
+ const memoryContext = progressiveContext.memoryContext;
126
241
  {
127
242
  const toolsSummary = Object.entries(staticResult)
128
243
  .map(([name, result]) => ` ${name}: ${result.status} (${result.findings.length} findings)`)
129
244
  .join('\n');
245
+ const levelDetail = ` context levels: static=${progressiveContext.staticLevel}, memory=${progressiveContext.memoryLevel}`;
130
246
  emit({
131
247
  step: 'static-results',
132
- message: 'Static analysis complete',
133
- detail: toolsSummary + (memoryContext ? '\n memory: loaded' : '\n memory: disabled'),
248
+ message: `Static analysis complete (context: static=${progressiveContext.staticLevel}, memory=${progressiveContext.memoryLevel})`,
249
+ detail: toolsSummary +
250
+ (rawMemoryContext ? '\n memory: loaded' : '\n memory: disabled') +
251
+ '\n' +
252
+ levelDetail,
134
253
  });
135
254
  }
136
255
  // ── Step 5.5: AI Enhance (optional) ─────────────────────────
@@ -166,69 +285,87 @@ export async function reviewPipeline(input) {
166
285
  }
167
286
  // ── Step 6: Execute agent mode (or skip if AI disabled) ────
168
287
  let result;
288
+ // Check if CLI bridge should be used (intercept before normal provider flow)
289
+ const isCliBridge = input.provider === 'cli-bridge' ||
290
+ input.providerChain?.[0]?.provider === 'cli-bridge';
291
+ // Check if LLM Gateway should be used (intercept before normal provider flow)
292
+ const isGateway = input.provider === 'gateway' ||
293
+ input.providerChain?.[0]?.provider === 'gateway';
169
294
  if (!aiEnabled) {
170
295
  // Static-only mode: no LLM calls
171
296
  emit({ step: 'agent-start', message: 'AI review disabled — returning static analysis only' });
172
297
  result = createStaticOnlyResult(staticResult, input.mode, startTime);
173
298
  }
174
299
  else {
175
- // Resolve the primary provider for agent calls
300
+ // ── Unified dispatch: all backends, all modes ──────────────
301
+ // Step 1: Build GenerateTextFn(s) for the detected backend
302
+ const generateFns = resolveGenerateTextFns(input, isCliBridge, isGateway);
303
+ // Step 2: Resolve effective mode (diagnostic → simple for non-SDK backends)
304
+ const effectiveMode = resolveEffectiveMode(input.mode, isCliBridge, isGateway);
305
+ if (effectiveMode !== input.mode) {
306
+ emit({
307
+ step: 'mode-fallback',
308
+ message: `Diagnostic mode not supported with ${isCliBridge ? 'CLI bridge' : 'gateway'} — falling back to simple mode`,
309
+ });
310
+ }
311
+ // Resolve primary provider for progress messages and metadata
176
312
  const primary = resolvePrimaryProvider(input);
177
313
  emit({
178
314
  step: 'agent-start',
179
- message: `Running ${input.mode} agent with ${primary.provider}/${primary.model}...`,
315
+ message: `Running ${effectiveMode} agent with ${primary.provider}/${primary.model}...`,
180
316
  });
181
317
  try {
182
- switch (input.mode) {
318
+ switch (effectiveMode) {
183
319
  case 'simple':
184
320
  result = await runSimpleReview({
185
321
  diff: truncatedDiff,
186
- provider: primary.provider,
187
- model: primary.model,
188
- apiKey: primary.apiKey,
189
322
  staticContext,
190
323
  memoryContext,
191
324
  stackHints,
192
325
  reviewLevel: input.settings.reviewLevel,
193
326
  onProgress: input.onProgress,
327
+ generateFn: generateFns[0],
328
+ // Backward compat fields (not used when generateFn is provided)
329
+ provider: primary.provider ?? 'cli-bridge',
330
+ model: primary.model ?? 'auto',
331
+ apiKey: primary.apiKey ?? '',
194
332
  });
195
333
  break;
196
334
  case 'workflow':
197
335
  result = await runWorkflowReview({
198
336
  diff: truncatedDiff,
199
- provider: primary.provider,
200
- model: primary.model,
201
- apiKey: primary.apiKey,
202
337
  staticContext,
203
338
  memoryContext,
204
339
  stackHints,
205
340
  reviewLevel: input.settings.reviewLevel,
206
341
  onProgress: input.onProgress,
342
+ generateFns,
343
+ // Backward compat fields (not used when generateFns is provided)
344
+ provider: primary.provider ?? 'cli-bridge',
345
+ model: primary.model ?? 'auto',
346
+ apiKey: primary.apiKey ?? '',
347
+ providerChain: input.providerChain,
207
348
  });
208
349
  break;
209
350
  case 'consensus':
210
351
  result = await runConsensusReview({
211
352
  diff: truncatedDiff,
212
- models: [
213
- {
214
- provider: primary.provider,
215
- model: primary.model,
216
- apiKey: primary.apiKey,
217
- stance: 'for',
218
- },
219
- {
220
- provider: primary.provider,
221
- model: primary.model,
222
- apiKey: primary.apiKey,
223
- stance: 'against',
224
- },
225
- {
226
- provider: primary.provider,
227
- model: primary.model,
228
- apiKey: primary.apiKey,
229
- stance: 'neutral',
230
- },
231
- ],
353
+ models: buildConsensusModels(input.providerChain, primary),
354
+ staticContext,
355
+ memoryContext,
356
+ stackHints,
357
+ reviewLevel: input.settings.reviewLevel,
358
+ onProgress: input.onProgress,
359
+ generateFns,
360
+ });
361
+ break;
362
+ case 'diagnostic':
363
+ // Diagnostic mode is AI SDK-only (resolveEffectiveMode ensures this)
364
+ result = await runDiagnosticReview({
365
+ diff: truncatedDiff,
366
+ provider: primary.provider,
367
+ model: primary.model,
368
+ apiKey: primary.apiKey,
232
369
  staticContext,
233
370
  memoryContext,
234
371
  stackHints,
@@ -237,14 +374,14 @@ export async function reviewPipeline(input) {
237
374
  });
238
375
  break;
239
376
  default: {
240
- const _exhaustive = input.mode;
377
+ const _exhaustive = effectiveMode;
241
378
  throw new Error(`Unknown review mode: ${_exhaustive}`);
242
379
  }
243
380
  }
244
381
  }
245
382
  catch (error) {
246
- // All providers failed — return static results with NEEDS_HUMAN_REVIEW
247
- console.warn('[ghagga] All AI providers failed, returning static analysis only:', error instanceof Error ? error.message : String(error));
383
+ // Agent failed — return static results with NEEDS_HUMAN_REVIEW
384
+ console.warn('[ghagga] AI review failed, returning static analysis only:', error instanceof Error ? error.message : String(error));
248
385
  emit({ step: 'agent-failed', message: 'AI review failed — returning static analysis only' });
249
386
  result = createStaticOnlyResult(staticResult, input.mode, startTime);
250
387
  result.status = 'NEEDS_HUMAN_REVIEW';
@@ -280,6 +417,14 @@ export async function reviewPipeline(input) {
280
417
  }
281
418
  // Update execution time to cover the full pipeline
282
419
  result.metadata.executionTimeMs = Date.now() - startTime;
420
+ // Add file stats metadata (for emoji stats bar in comment)
421
+ result.metadata.totalAdditions = allFiles.reduce((sum, f) => sum + f.additions, 0);
422
+ result.metadata.totalDeletions = allFiles.reduce((sum, f) => sum + f.deletions, 0);
423
+ result.metadata.fileList = allFiles.map((f) => f.path);
424
+ // Add blast-radius metadata (if applicable)
425
+ if (blastRadiusMetadata) {
426
+ result.metadata.blastRadius = blastRadiusMetadata;
427
+ }
283
428
  // ── Step 8: Persist to memory (awaited for SQLite correctness) ──
284
429
  if (input.settings.enableMemory && input.memoryStorage && input.context) {
285
430
  await persistReviewObservations(input.memoryStorage, input.context.repoFullName, input.context.prNumber, result).catch((error) => {
@@ -323,6 +468,30 @@ function resolvePrimaryProvider(input) {
323
468
  apiKey: input.apiKey,
324
469
  };
325
470
  }
471
+ /**
472
+ * Build the 3-entry ConsensusModelConfig array for the for/against/neutral votes.
473
+ *
474
+ * Distribution rules (given a chain of length N):
475
+ * N >= 3 : chain[0]→for, chain[1]→against, chain[2]→neutral
476
+ * N == 2 : chain[0]→for, chain[1]→against, chain[0]→neutral
477
+ * N == 1 : all 3 votes use chain[0] (same as primary-only)
478
+ * N == 0 : all 3 votes use `primary` (backward compat)
479
+ *
480
+ * This spreads consensus votes across providers so each vote hits a
481
+ * different TPM budget instead of all three hammering the same limit.
482
+ */
483
+ function buildConsensusModels(chain, primary) {
484
+ const stances = ['for', 'against', 'neutral'];
485
+ return stances.map((stance, i) => {
486
+ const entry = chain && chain.length > 0 ? chain[i % chain.length] : primary;
487
+ return {
488
+ provider: entry.provider,
489
+ model: entry.model,
490
+ apiKey: entry.apiKey,
491
+ stance,
492
+ };
493
+ });
494
+ }
326
495
  /**
327
496
  * Resolve the model name for token budget calculation.
328
497
  */
@@ -332,6 +501,86 @@ function resolvePrimaryModel(input) {
332
501
  }
333
502
  return input.model ?? 'gpt-4o-mini';
334
503
  }
504
+ // ─── GenerateTextFn Resolution ──────────────────────────────────
505
+ /**
506
+ * Create the appropriate GenerateTextFn(s) based on the provider type.
507
+ *
508
+ * - CLI Bridge: single fn wrapping generateViaCLI
509
+ * - Gateway: single fn wrapping generateViaGateway
510
+ * - AI SDK: one fn per provider chain entry (for round-robin distribution)
511
+ */
512
+ function resolveGenerateTextFns(input, isCliBridge, isGateway) {
513
+ if (isCliBridge) {
514
+ // Resolve CLI bridge options from provider chain or flat input fields
515
+ const cliBridgeEntry = input.providerChain?.[0];
516
+ const preferredCLI = (cliBridgeEntry?.model ?? input.model) !== 'auto'
517
+ ? (cliBridgeEntry?.model ?? input.model)
518
+ : undefined;
519
+ const cliModel = cliBridgeEntry?.cliModel;
520
+ // Build credentials from the decrypted API key
521
+ const decryptedKey = cliBridgeEntry?.apiKey || input.apiKey;
522
+ const credentialEnvName = resolveCredentialEnvVar(preferredCLI, cliModel);
523
+ const credentials = {};
524
+ if (preferredCLI && credentialEnvName && decryptedKey) {
525
+ credentials[credentialEnvName] = decryptedKey;
526
+ }
527
+ return [
528
+ createCLIBridgeGenerateFn({
529
+ preferredCLI,
530
+ cliModel,
531
+ credentials: Object.keys(credentials).length > 0 ? credentials : undefined,
532
+ }),
533
+ ];
534
+ }
535
+ if (isGateway) {
536
+ // Map ALL gateway entries in the chain — one GenerateTextFn per model
537
+ // for round-robin distribution in workflow/consensus modes
538
+ const chain = input.providerChain?.filter((e) => e.provider === 'gateway') ?? [];
539
+ if (chain.length > 0) {
540
+ // Use gatewayUrl and token from the first entry (shared across all)
541
+ const gatewayUrl = chain[0]?.gatewayUrl ?? '';
542
+ const gatewayToken = chain[0]?.apiKey || input.apiKey || '';
543
+ return chain.map((entry) => {
544
+ const model = entry.model !== 'auto' ? entry.model : undefined;
545
+ return createGatewayGenerateFn({
546
+ gatewayUrl,
547
+ gatewayToken,
548
+ model,
549
+ project: 'ghagga',
550
+ });
551
+ });
552
+ }
553
+ // Fallback: single entry from flat input fields
554
+ return [
555
+ createGatewayGenerateFn({
556
+ gatewayUrl: '',
557
+ gatewayToken: input.apiKey || '',
558
+ model: input.model !== 'auto' ? input.model : undefined,
559
+ project: 'ghagga',
560
+ }),
561
+ ];
562
+ }
563
+ // AI SDK: one function per chain entry (for round-robin distribution)
564
+ const chain = input.providerChain && input.providerChain.length > 0 ? input.providerChain : null;
565
+ if (chain) {
566
+ return chain.map((entry) => createAISDKGenerateFn(entry.provider, entry.model, entry.apiKey));
567
+ }
568
+ // Single provider from flat fields (backward compat)
569
+ const primary = resolvePrimaryProvider(input);
570
+ return [createAISDKGenerateFn(primary.provider, primary.model, primary.apiKey)];
571
+ }
572
+ /**
573
+ * Resolve the effective review mode.
574
+ *
575
+ * Diagnostic mode only works with AI SDK (it needs direct model access).
576
+ * For CLI bridge and gateway, fall back to simple mode.
577
+ */
578
+ function resolveEffectiveMode(mode, isCliBridge, isGateway) {
579
+ if (mode === 'diagnostic' && (isCliBridge || isGateway)) {
580
+ return 'simple';
581
+ }
582
+ return mode;
583
+ }
335
584
  // ─── Helpers ────────────────────────────────────────────────────
336
585
  /**
337
586
  * Run static analysis with graceful degradation.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}