ghagga-core 3.3.0 → 3.5.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 (116) hide show
  1. package/README.md +16 -14
  2. package/dist/acp/adapter.d.ts.map +1 -1
  3. package/dist/acp/adapter.js +8 -1
  4. package/dist/acp/adapter.js.map +1 -1
  5. package/dist/adversarial-qa.js.map +1 -1
  6. package/dist/agents/consensus.d.ts +2 -2
  7. package/dist/agents/consensus.d.ts.map +1 -1
  8. package/dist/agents/consensus.js +13 -5
  9. package/dist/agents/consensus.js.map +1 -1
  10. package/dist/agents/fan-out-lenses.d.ts +33 -2
  11. package/dist/agents/fan-out-lenses.d.ts.map +1 -1
  12. package/dist/agents/fan-out-lenses.js +245 -8
  13. package/dist/agents/fan-out-lenses.js.map +1 -1
  14. package/dist/agents/issue-code-discovery.d.ts +58 -0
  15. package/dist/agents/issue-code-discovery.d.ts.map +1 -0
  16. package/dist/agents/issue-code-discovery.js +144 -0
  17. package/dist/agents/issue-code-discovery.js.map +1 -0
  18. package/dist/agents/issue-triage.d.ts +11 -1
  19. package/dist/agents/issue-triage.d.ts.map +1 -1
  20. package/dist/agents/issue-triage.js +53 -4
  21. package/dist/agents/issue-triage.js.map +1 -1
  22. package/dist/agents/prompts.d.ts +12 -3
  23. package/dist/agents/prompts.d.ts.map +1 -1
  24. package/dist/agents/prompts.js +21 -2
  25. package/dist/agents/prompts.js.map +1 -1
  26. package/dist/agents/simple.d.ts.map +1 -1
  27. package/dist/agents/simple.js +1 -1
  28. package/dist/agents/simple.js.map +1 -1
  29. package/dist/agents/voice-validation.d.ts +34 -0
  30. package/dist/agents/voice-validation.d.ts.map +1 -0
  31. package/dist/agents/voice-validation.js +64 -0
  32. package/dist/agents/voice-validation.js.map +1 -0
  33. package/dist/agents/workflow.d.ts.map +1 -1
  34. package/dist/agents/workflow.js +8 -0
  35. package/dist/agents/workflow.js.map +1 -1
  36. package/dist/aisvs.js.map +1 -1
  37. package/dist/code-intel/client.d.ts.map +1 -1
  38. package/dist/critique/critique.js +1 -1
  39. package/dist/critique/critique.js.map +1 -1
  40. package/dist/critique/prompts.d.ts +1 -1
  41. package/dist/critique/prompts.d.ts.map +1 -1
  42. package/dist/critique/prompts.js +1 -1
  43. package/dist/embed.d.ts.map +1 -1
  44. package/dist/embed.js.map +1 -1
  45. package/dist/enhance/prompt.d.ts +1 -1
  46. package/dist/enhance/prompt.d.ts.map +1 -1
  47. package/dist/explanation.d.ts +69 -0
  48. package/dist/explanation.d.ts.map +1 -0
  49. package/dist/explanation.js +16 -0
  50. package/dist/explanation.js.map +1 -0
  51. package/dist/format.d.ts.map +1 -1
  52. package/dist/format.js +1 -0
  53. package/dist/format.js.map +1 -1
  54. package/dist/graph/loader.d.ts +1 -1
  55. package/dist/graph/loader.d.ts.map +1 -1
  56. package/dist/graph/loader.js.map +1 -1
  57. package/dist/index.d.ts +11 -4
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +14 -3
  60. package/dist/index.js.map +1 -1
  61. package/dist/memory/backfill.js.map +1 -1
  62. package/dist/memory/contradiction.js.map +1 -1
  63. package/dist/memory/decay.d.ts +40 -0
  64. package/dist/memory/decay.d.ts.map +1 -1
  65. package/dist/memory/decay.js +57 -0
  66. package/dist/memory/decay.js.map +1 -1
  67. package/dist/memory/engram-client.d.ts.map +1 -1
  68. package/dist/memory/engram.d.ts.map +1 -1
  69. package/dist/memory/engram.js +15 -3
  70. package/dist/memory/engram.js.map +1 -1
  71. package/dist/memory/pageindex/chunker.d.ts.map +1 -1
  72. package/dist/memory/pageindex/example.js.map +1 -1
  73. package/dist/memory/pageindex/service.d.ts.map +1 -1
  74. package/dist/memory/pageindex/service.js.map +1 -1
  75. package/dist/memory/search.d.ts +157 -0
  76. package/dist/memory/search.d.ts.map +1 -1
  77. package/dist/memory/search.js +420 -0
  78. package/dist/memory/search.js.map +1 -1
  79. package/dist/memory/sqlite.d.ts.map +1 -1
  80. package/dist/memory/sqlite.js +11 -3
  81. package/dist/memory/sqlite.js.map +1 -1
  82. package/dist/memory/versioning.d.ts.map +1 -1
  83. package/dist/memory/versioning.js.map +1 -1
  84. package/dist/pipeline/execute.d.ts.map +1 -1
  85. package/dist/pipeline/execute.js +14 -0
  86. package/dist/pipeline/execute.js.map +1 -1
  87. package/dist/providers/cli-bridge.d.ts +13 -11
  88. package/dist/providers/cli-bridge.d.ts.map +1 -1
  89. package/dist/providers/cli-bridge.js +155 -40
  90. package/dist/providers/cli-bridge.js.map +1 -1
  91. package/dist/providers/explanation-generate-fn.d.ts +28 -0
  92. package/dist/providers/explanation-generate-fn.d.ts.map +1 -0
  93. package/dist/providers/explanation-generate-fn.js +122 -0
  94. package/dist/providers/explanation-generate-fn.js.map +1 -0
  95. package/dist/providers/gateway.js.map +1 -1
  96. package/dist/sanitize.js.map +1 -1
  97. package/dist/scope/parser.js.map +1 -1
  98. package/dist/scope/types.d.ts +3 -3
  99. package/dist/scope/types.d.ts.map +1 -1
  100. package/dist/search/indexer.d.ts.map +1 -1
  101. package/dist/search/searcher.d.ts.map +1 -1
  102. package/dist/search/searcher.js.map +1 -1
  103. package/dist/tools/budget.js.map +1 -1
  104. package/dist/tools/cpd.js.map +1 -1
  105. package/dist/tools/orchestrator.js.map +1 -1
  106. package/dist/tools/plugins/gitleaks.js.map +1 -1
  107. package/dist/tools/plugins/semgrep.js.map +1 -1
  108. package/dist/tools/registry.d.ts.map +1 -1
  109. package/dist/tools/semgrep.js.map +1 -1
  110. package/dist/trajectory.d.ts.map +1 -1
  111. package/dist/types.d.ts +43 -2
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/types.js +8 -0
  114. package/dist/types.js.map +1 -1
  115. package/dist/utils/concurrency.js.map +1 -1
  116. package/package.json +16 -16
@@ -13,9 +13,11 @@
13
13
  * - typing — type safety, generics, strict mode
14
14
  * - accessibility — a11y attributes, ARIA, keyboard navigation
15
15
  */
16
+ import { FINDING_LEDGER_STATUS } from '../types.js';
16
17
  import { runWithConcurrency } from '../utils/concurrency.js';
17
18
  import { buildMemoryContext, buildReviewLevelInstruction, COMPACT_CALIBRATION, REVIEW_CALIBRATION, STATIC_ANALYSIS_UNTRUSTED_LABEL, UNTRUSTED_CONTENT_POLICY, wrapUntrusted, wrapUntrustedDiff, } from './prompts.js';
18
19
  import { parseFindingsBlock } from './simple.js';
20
+ import { getDeadVoiceReason } from './voice-validation.js';
19
21
  // ─── Default Lenses ────────────────────────────────────────────
20
22
  export const LENS_SECURITY = {
21
23
  name: 'security',
@@ -321,6 +323,51 @@ const SEVERITY_RANK = {
321
323
  low: 2,
322
324
  info: 1,
323
325
  };
326
+ /** Unlensed whole-diff voice. Not a specialty lens and not SIMPLE_REVIEW_SYSTEM. */
327
+ const CONTRARIAN_SYSTEM = `You are an unlensed whole-diff code reviewer. You have no specialty lens.
328
+
329
+ Report only real defects you are confident about. Do not invent issues.
330
+
331
+ Format your response EXACTLY as:
332
+
333
+ STATUS: [PASSED or FAILED]
334
+ SUMMARY: [1-2 sentence assessment]
335
+ FINDINGS:
336
+ - SEVERITY: [critical|high|medium|low|info]
337
+ CATEGORY: contrarian
338
+ FILE: [file path]
339
+ LINE: [line number or "N/A"]
340
+ MESSAGE: [clear description of the defect]
341
+ SUGGESTION: [specific fix]
342
+
343
+ FAILED if: Any critical or high issues. PASSED otherwise.`;
344
+ /** Batched closed-list refuter. Not a lens and not SIMPLE_REVIEW_SYSTEM. */
345
+ const REFUTER_SYSTEM = `You are a batched finding refuter. You are not a review lens.
346
+
347
+ You receive a closed candidate list. Do not add findings. Do not invent ids.
348
+ For each candidate id, emit exactly one verdict: stands or refute.
349
+ A missing or malformed verdict is treated as stands.
350
+
351
+ Format each verdict on its own line as:
352
+ <id>: stands
353
+ <id>: refute`;
354
+ /**
355
+ * Parse per-id refuter verdicts from model text.
356
+ * Only explicit `refute` or `stands` lines count. Unknown ids are kept in the
357
+ * map for the caller to ignore. Missing candidate ids have no map entry.
358
+ */
359
+ export function parseRefuterVerdicts(text) {
360
+ const verdicts = new Map();
361
+ const pattern = /^\s*([A-Za-z0-9][A-Za-z0-9_-]*)\s*:\s*(refute|stands)\b/gim;
362
+ for (const match of text.matchAll(pattern)) {
363
+ const id = match[1];
364
+ const verdict = match[2]?.toLowerCase();
365
+ if (!id || (verdict !== 'refute' && verdict !== 'stands'))
366
+ continue;
367
+ verdicts.set(id, verdict);
368
+ }
369
+ return verdicts;
370
+ }
324
371
  // ─── Merge Logic ───────────────────────────────────────────────
325
372
  /**
326
373
  * Deduplicate findings by file+line, taking the highest severity
@@ -357,6 +404,27 @@ export function mergeFindings(allFindings) {
357
404
  return a.file.localeCompare(b.file);
358
405
  });
359
406
  }
407
+ /**
408
+ * Stamp a first-class per-finding ledger onto fan-out results.
409
+ * Does not mutate inputs; returns new objects.
410
+ */
411
+ export function stampFindingLedger(findings) {
412
+ const counters = new Map();
413
+ return findings.map((finding) => {
414
+ const lens = finding.category || 'unknown';
415
+ const next = (counters.get(lens) ?? 0) + 1;
416
+ counters.set(lens, next);
417
+ const location = typeof finding.line === 'number' ? `${finding.file}:${finding.line}` : finding.file;
418
+ return {
419
+ ...finding,
420
+ id: `${lens}-${String(next).padStart(3, '0')}`,
421
+ lens,
422
+ location,
423
+ ledgerStatus: FINDING_LEDGER_STATUS.open,
424
+ evidence: finding.message,
425
+ };
426
+ });
427
+ }
360
428
  // ─── Main Function ─────────────────────────────────────────────
361
429
  /**
362
430
  * Run a fan-out (multi-lens) code review.
@@ -398,6 +466,38 @@ export async function runFanOutReview(input) {
398
466
  }
399
467
  // ── Resolve GenerateTextFn array ────────────────────────────
400
468
  const resolvedGenerateFns = input.generateFns ?? [];
469
+ if (input.pinLensesToFirst === true && resolvedGenerateFns.length === 0) {
470
+ throw new Error('pinLensesToFirst requires a non-empty generateFns array');
471
+ }
472
+ const contrarianCount = input.contrarianCount;
473
+ if (contrarianCount !== undefined) {
474
+ if (!Number.isInteger(contrarianCount) || contrarianCount < 1) {
475
+ throw new Error(`contrarianCount must be an integer >= 1, received: ${contrarianCount}`);
476
+ }
477
+ if (input.pinLensesToFirst !== true) {
478
+ throw new Error('contrarianCount requires pinLensesToFirst === true');
479
+ }
480
+ if (resolvedGenerateFns.length < 1 + contrarianCount) {
481
+ throw new Error(`contrarianCount ${contrarianCount} requires generateFns.length >= ${1 + contrarianCount}`);
482
+ }
483
+ }
484
+ const refuterCount = input.refuterCount;
485
+ if (refuterCount !== undefined) {
486
+ if (!Number.isInteger(refuterCount) || refuterCount < 2) {
487
+ throw new Error(`refuterCount must be an integer >= 2, received: ${refuterCount}`);
488
+ }
489
+ if (input.pinLensesToFirst !== true) {
490
+ throw new Error('refuterCount requires pinLensesToFirst === true');
491
+ }
492
+ const contrarianN = typeof contrarianCount === 'number' &&
493
+ Number.isInteger(contrarianCount) &&
494
+ contrarianCount >= 1
495
+ ? contrarianCount
496
+ : 0;
497
+ if (resolvedGenerateFns.length < 1 + contrarianN + refuterCount) {
498
+ throw new Error(`refuterCount ${refuterCount} requires generateFns.length >= ${1 + contrarianN + refuterCount}`);
499
+ }
500
+ }
401
501
  const concurrency = input.concurrency ?? 3;
402
502
  const delayMs = input.delayMs ?? 0;
403
503
  const startTime = Date.now();
@@ -411,9 +511,11 @@ export async function runFanOutReview(input) {
411
511
  // ── Step 1: Run lenses with bounded concurrency ─────────────
412
512
  const lensTasks = resolvedLenses.map((lens, index) => {
413
513
  return async () => {
414
- // Round-robin generateFn assignment (fall back to first if provided)
514
+ // Round-robin generateFn assignment unless pinLensesToFirst pins all to [0].
415
515
  const generateFn = resolvedGenerateFns.length > 0
416
- ? resolvedGenerateFns[index % resolvedGenerateFns.length]
516
+ ? input.pinLensesToFirst === true
517
+ ? resolvedGenerateFns[0]
518
+ : resolvedGenerateFns[index % resolvedGenerateFns.length]
417
519
  : null;
418
520
  if (!generateFn) {
419
521
  throw new Error(`No generateFn available for lens "${lens.name}" at index ${index}`);
@@ -432,6 +534,13 @@ export async function runFanOutReview(input) {
432
534
  .filter(Boolean)
433
535
  .join('\n');
434
536
  const result = await generateFn(system, userPrompt);
537
+ // A fulfilled call can still be a dead voice (e.g. gateway returned
538
+ // HTTP 200 whose text is a raw CLI error envelope). Route it into the
539
+ // existing rejected/failure path instead of counting it as a lens pass.
540
+ const deadReason = getDeadVoiceReason(result.text);
541
+ if (deadReason) {
542
+ throw new Error(`${lens.label} (${result.provider}/${result.model}): ${deadReason}`);
543
+ }
435
544
  return {
436
545
  name: lens.name,
437
546
  label: lens.label,
@@ -443,6 +552,35 @@ export async function runFanOutReview(input) {
443
552
  };
444
553
  });
445
554
  const results = await runWithConcurrency(lensTasks, { concurrency, delayMs });
555
+ let contrarianResults = [];
556
+ if (typeof contrarianCount === 'number' &&
557
+ Number.isInteger(contrarianCount) &&
558
+ contrarianCount >= 1) {
559
+ const contrarianTasks = Array.from({ length: contrarianCount }, (_, i) => {
560
+ return async () => {
561
+ const generateFn = resolvedGenerateFns[1 + i];
562
+ const system = [CONTRARIAN_SYSTEM, UNTRUSTED_CONTENT_POLICY].join('\n');
563
+ const result = await generateFn(system, userPrompt);
564
+ const deadReason = getDeadVoiceReason(result.text);
565
+ if (deadReason) {
566
+ throw new Error(`Contrarian ${i + 1} (${result.provider}/${result.model}): ${deadReason}`);
567
+ }
568
+ return {
569
+ name: 'contrarian',
570
+ label: `Contrarian ${i + 1}`,
571
+ text: result.text,
572
+ tokensUsed: result.tokensUsed,
573
+ providerUsed: result.provider,
574
+ modelUsed: result.model,
575
+ };
576
+ };
577
+ });
578
+ emit({
579
+ step: 'fan-out-contrarian',
580
+ message: `Launching ${contrarianCount} unlensed contrarian voice(s)`,
581
+ });
582
+ contrarianResults = await runWithConcurrency(contrarianTasks, { concurrency, delayMs });
583
+ }
446
584
  // ── Step 2: Collect findings from all lenses ────────────────
447
585
  let totalTokens = 0;
448
586
  const allFindings = [];
@@ -468,7 +606,7 @@ export async function runFanOutReview(input) {
468
606
  }
469
607
  allFindings.push(...findings);
470
608
  // Track individual lens status
471
- const statusMatch = /STATUS:\s*(PASSED|FAILED|NEEDS_HUMAN_REVIEW|SKIPPED)/i.exec(result.value.text);
609
+ const statusMatch = /STATUS:\s*(PASSED|FAILED|NEEDS_HUMAN_REVIEW|SKIPPED|INCONCLUSIVE)/i.exec(result.value.text);
472
610
  const lensStatus = (statusMatch?.[1]?.toUpperCase() ?? 'NEEDS_HUMAN_REVIEW');
473
611
  lensStatuses.push(lensStatus);
474
612
  emit({
@@ -486,15 +624,114 @@ export async function runFanOutReview(input) {
486
624
  });
487
625
  }
488
626
  }
627
+ for (let i = 0; i < contrarianResults.length; i++) {
628
+ const result = contrarianResults[i];
629
+ const voiceName = `contrarian-${i + 1}`;
630
+ if (!result)
631
+ continue;
632
+ if (result.status === 'fulfilled') {
633
+ totalTokens += result.value.tokensUsed;
634
+ modelsUsed.push(`${voiceName}:${result.value.providerUsed}/${result.value.modelUsed}`);
635
+ const findings = parseFindingsBlock(result.value.text);
636
+ for (const finding of findings) {
637
+ finding.source = 'ai';
638
+ if (!finding.category.includes('contrarian')) {
639
+ finding.category = 'contrarian';
640
+ }
641
+ }
642
+ allFindings.push(...findings);
643
+ const statusMatch = /STATUS:\s*(PASSED|FAILED|NEEDS_HUMAN_REVIEW|SKIPPED|INCONCLUSIVE)/i.exec(result.value.text);
644
+ const voiceStatus = (statusMatch?.[1]?.toUpperCase() ?? 'NEEDS_HUMAN_REVIEW');
645
+ lensStatuses.push(voiceStatus);
646
+ emit({
647
+ step: voiceName,
648
+ message: `✓ ${result.value.label} — ${findings.length} finding(s), ${result.value.tokensUsed} tokens`,
649
+ detail: result.value.text,
650
+ });
651
+ }
652
+ else {
653
+ const reason = result.reason instanceof Error ? result.reason.message : String(result.reason);
654
+ modelsUsed.push(`${voiceName}:FAILED`);
655
+ emit({
656
+ step: voiceName,
657
+ message: `✗ Contrarian ${i + 1} — FAILED: ${reason}`,
658
+ });
659
+ }
660
+ }
489
661
  emit({
490
662
  step: 'fan-out-merge',
491
663
  message: `Merging ${allFindings.length} findings from ${resolvedLenses.length} lenses...`,
492
664
  });
493
- // ── Step 3: Merge and deduplicate ───────────────────────────
494
- const mergedFindings = mergeFindings(allFindings);
665
+ // ── Step 3: Merge and deduplicate, then stamp the ledger ───
666
+ let mergedFindings = stampFindingLedger(mergeFindings(allFindings));
667
+ if (typeof refuterCount === 'number' && Number.isInteger(refuterCount) && refuterCount >= 2) {
668
+ const candidates = mergedFindings.filter((f) => f.severity === 'critical' && f.id);
669
+ if (candidates.length > 0) {
670
+ const contrarianN = typeof contrarianCount === 'number' &&
671
+ Number.isInteger(contrarianCount) &&
672
+ contrarianCount >= 1
673
+ ? contrarianCount
674
+ : 0;
675
+ const refuterStart = 1 + contrarianN;
676
+ const candidateBlock = candidates
677
+ .map((c) => [
678
+ `- ID: ${c.id}`,
679
+ ` LENS: ${c.lens ?? c.category}`,
680
+ ` LOCATION: ${c.location ?? c.file}`,
681
+ ` SEVERITY: ${c.severity}`,
682
+ ` EVIDENCE: ${c.evidence ?? c.message}`,
683
+ ].join('\n'))
684
+ .join('\n');
685
+ const refuterUser = `${userPrompt}\n\nCANDIDATES:\n${candidateBlock}`;
686
+ const refuterSystem = [REFUTER_SYSTEM, UNTRUSTED_CONTENT_POLICY].join('\n');
687
+ const refuteVotes = new Map();
688
+ for (const candidate of candidates) {
689
+ if (candidate.id)
690
+ refuteVotes.set(candidate.id, 0);
691
+ }
692
+ const refuterTasks = Array.from({ length: refuterCount }, (_, i) => {
693
+ return async () => {
694
+ const generateFn = resolvedGenerateFns[refuterStart + i];
695
+ const result = await generateFn(refuterSystem, refuterUser);
696
+ const deadReason = getDeadVoiceReason(result.text);
697
+ if (deadReason) {
698
+ throw new Error(`Refuter ${i + 1} (${result.provider}/${result.model}): ${deadReason}`);
699
+ }
700
+ return result;
701
+ };
702
+ });
703
+ emit({
704
+ step: 'fan-out-refuter',
705
+ message: `Launching ${refuterCount} batched refuter voice(s) on ${candidates.length} critical finding(s)`,
706
+ });
707
+ const refuterResults = await runWithConcurrency(refuterTasks, { concurrency, delayMs });
708
+ for (const result of refuterResults) {
709
+ if (result.status !== 'fulfilled')
710
+ continue;
711
+ totalTokens += result.value.tokensUsed;
712
+ const verdicts = parseRefuterVerdicts(result.value.text);
713
+ for (const candidate of candidates) {
714
+ if (!candidate.id)
715
+ continue;
716
+ if (verdicts.get(candidate.id) === 'refute') {
717
+ refuteVotes.set(candidate.id, (refuteVotes.get(candidate.id) ?? 0) + 1);
718
+ }
719
+ }
720
+ }
721
+ mergedFindings = mergedFindings.map((finding) => {
722
+ if (finding.severity !== 'critical' || !finding.id)
723
+ return finding;
724
+ const votes = refuteVotes.get(finding.id) ?? 0;
725
+ if (votes >= 2) {
726
+ return { ...finding, ledgerStatus: FINDING_LEDGER_STATUS.refuted };
727
+ }
728
+ return finding;
729
+ });
730
+ }
731
+ }
495
732
  // ── Step 4: Determine overall status ────────────────────────
496
- const hasCritical = mergedFindings.some((f) => f.severity === 'critical');
497
- const highCount = mergedFindings.filter((f) => f.severity === 'high').length;
733
+ const hasCritical = mergedFindings.some((f) => f.severity === 'critical' && f.ledgerStatus !== FINDING_LEDGER_STATUS.refuted);
734
+ const highCount = mergedFindings.filter((f) => f.severity === 'high' && f.ledgerStatus !== FINDING_LEDGER_STATUS.refuted).length;
498
735
  const anyFailed = lensStatuses.includes('FAILED');
499
736
  let status;
500
737
  if (hasCritical || highCount >= 3) {
@@ -517,7 +754,7 @@ export async function runFanOutReview(input) {
517
754
  });
518
755
  const summary = mergedFindings.length > 0
519
756
  ? `Fan-out review with ${resolvedLenses.length} lenses found ${mergedFindings.length} unique finding(s). Lenses: ${lensSummaryParts.join(', ')}.`
520
- : `Fan-out review with ${resolvedLenses.length} lenses found no issues. All lenses passed.`;
757
+ : `Fan-out review with ${resolvedLenses.length} lenses found no issues. Lenses: ${lensSummaryParts.join(', ')}.`;
521
758
  return {
522
759
  status,
523
760
  summary,
@@ -1 +1 @@
1
- {"version":3,"file":"fan-out-lenses.js","sourceRoot":"","sources":["../../src/agents/fan-out-lenses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fan-out-lenses.js","sourceRoot":"","sources":["../../src/agents/fan-out-lenses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Deterministic discovery of the repository paths an issue references.
3
+ *
4
+ * The complement to code-in-evidence: instead of a human naming files, extract
5
+ * candidate repo-relative paths from the issue's own text so that (server-side,
6
+ * checkout-less) triage can fetch the code the issue actually talks about.
7
+ *
8
+ * DETERMINISTIC — no model. It finds path-shaped tokens (a slash + a file
9
+ * extension), strips surrounding markdown/punctuation, and dedupes them in
10
+ * first-appearance order. It never fetches: the caller fetches each best-effort
11
+ * (a mentioned path may be missing or renamed) and skips the misses. Ported from
12
+ * the evidence-review-engine (ERE) `collectors/issue-code-discovery.ts`.
13
+ *
14
+ * ReDoS-hardened for attacker-authored input (an issue is openable by ANYONE):
15
+ * `PATH_TOKEN` is ANCHORED to a whole whitespace-delimited token and matched PER
16
+ * token (never a global scan over the full text), and over-long no-whitespace
17
+ * blobs are skipped — so no pathological run of `.`/`-`/`/` can drive quadratic
18
+ * backtracking, and a URL like `https://host/a/b.ts` fails the `://` reject.
19
+ */
20
+ /**
21
+ * Extract candidate repo-relative code paths from free issue text (title + body
22
+ * + comments, joined by the caller). Rejects absolute paths, `.`/`..` traversal,
23
+ * and URL fragments. Returns at most `limit` distinct paths in first-appearance
24
+ * order. Never throws.
25
+ *
26
+ * @param text the issue's combined title/body/comments text
27
+ * @param opts.limit max paths to return (default 10)
28
+ */
29
+ export declare function discoverCodePaths(text: string, opts?: {
30
+ readonly limit?: number;
31
+ }): string[];
32
+ /**
33
+ * Extract candidate CODE-SEARCH terms from free issue text — the complement to
34
+ * {@link discoverCodePaths}: instead of a path (`dir/file.ext`), this looks for
35
+ * an IDENTIFIER a reporter named inline, e.g. `` the bug is in `fetchGraph` ``.
36
+ * Used when path discovery finds too few candidates, so the caller can fall back
37
+ * to a GitHub code-search API call keyed on the term.
38
+ *
39
+ * BACKTICK-GATED ONLY: a bare-prose token (no surrounding backticks) is never
40
+ * extracted — markdown backticks are the reporter's own signal that "this is
41
+ * code", which keeps the false-positive rate low without an LLM. Terms are
42
+ * matched ANY-CASE (`fetchGraph`, `SEARCH_TERM`, `snake_case`, `foo.bar` all
43
+ * pass), deduped case-insensitively (first-appearance casing wins), length-
44
+ * bounded to `[3, 64]`, trailing `[._-]+` is trimmed, and `TERM_STOP` noise is
45
+ * dropped. Never throws.
46
+ *
47
+ * ReDoS-hardened for attacker-authored input the same way as
48
+ * {@link discoverCodePaths}: the text is capped at `MAX_TEXT`, and any backtick
49
+ * span longer than `MAX_TOKEN` is skipped WHOLESALE (never regex-scanned) so a
50
+ * pathological long span cannot drive quadratic backtracking.
51
+ *
52
+ * @param text the issue's combined title/body/comments text
53
+ * @param opts.limit max terms to return (default 5)
54
+ */
55
+ export declare function discoverSearchTerms(text: string, opts?: {
56
+ readonly limit?: number;
57
+ }): string[];
58
+ //# sourceMappingURL=issue-code-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-code-discovery.d.ts","sourceRoot":"","sources":["../../src/agents/issue-code-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAyB5F;AAmBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CA6B9F"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Deterministic discovery of the repository paths an issue references.
3
+ *
4
+ * The complement to code-in-evidence: instead of a human naming files, extract
5
+ * candidate repo-relative paths from the issue's own text so that (server-side,
6
+ * checkout-less) triage can fetch the code the issue actually talks about.
7
+ *
8
+ * DETERMINISTIC — no model. It finds path-shaped tokens (a slash + a file
9
+ * extension), strips surrounding markdown/punctuation, and dedupes them in
10
+ * first-appearance order. It never fetches: the caller fetches each best-effort
11
+ * (a mentioned path may be missing or renamed) and skips the misses. Ported from
12
+ * the evidence-review-engine (ERE) `collectors/issue-code-discovery.ts`.
13
+ *
14
+ * ReDoS-hardened for attacker-authored input (an issue is openable by ANYONE):
15
+ * `PATH_TOKEN` is ANCHORED to a whole whitespace-delimited token and matched PER
16
+ * token (never a global scan over the full text), and over-long no-whitespace
17
+ * blobs are skipped — so no pathological run of `.`/`-`/`/` can drive quadratic
18
+ * backtracking, and a URL like `https://host/a/b.ts` fails the `://` reject.
19
+ */
20
+ /** A path-shaped token: `dir/.../file.ext` — segments of `[\w.-]`, ending in `.ext`. */
21
+ const PATH_TOKEN = /^[\w.-]+(?:\/[\w.-]+)+\.[A-Za-z0-9]+$/;
22
+ const DEFAULT_LIMIT = 10;
23
+ /** Cap the scanned text (defensive belt) — the attacker controls issue/comment bodies. */
24
+ const MAX_TEXT = 262_144;
25
+ /** A real repo path is short; a longer no-whitespace token is skipped (kills ReDoS). */
26
+ const MAX_TOKEN = 400;
27
+ /**
28
+ * Extract candidate repo-relative code paths from free issue text (title + body
29
+ * + comments, joined by the caller). Rejects absolute paths, `.`/`..` traversal,
30
+ * and URL fragments. Returns at most `limit` distinct paths in first-appearance
31
+ * order. Never throws.
32
+ *
33
+ * @param text the issue's combined title/body/comments text
34
+ * @param opts.limit max paths to return (default 10)
35
+ */
36
+ export function discoverCodePaths(text, opts) {
37
+ const limit = opts?.limit ?? DEFAULT_LIMIT;
38
+ if (typeof text !== 'string' || text.length === 0 || limit <= 0)
39
+ return [];
40
+ const scanned = text.slice(0, MAX_TEXT);
41
+ const seen = new Set();
42
+ const out = [];
43
+ for (const rawToken of scanned.split(/\s+/)) {
44
+ // Skip empties and over-long no-whitespace blobs (the ReDoS belt).
45
+ if (rawToken.length === 0 || rawToken.length > MAX_TOKEN)
46
+ continue;
47
+ // A URL is not a repo-relative path — reject the whole token.
48
+ if (rawToken.includes('://'))
49
+ continue;
50
+ // Strip surrounding markdown/quote/punctuation the token may carry, e.g.
51
+ // `src/x.ts`, (src/x.ts), "src/x.ts", src/x.ts. — WITHOUT touching the interior.
52
+ const path = rawToken.replace(/^[([`'"]+/, '').replace(/[)\].,:;'"`]+$/, '');
53
+ // Absolute paths are not repo-relative; re-check the length after stripping.
54
+ if (path.length === 0 || path.length > MAX_TOKEN || path.startsWith('/'))
55
+ continue;
56
+ if (!PATH_TOKEN.test(path))
57
+ continue;
58
+ // Reject `.`/`..` segments (traversal) even though the fetch layer guards too.
59
+ if (path.split('/').some((seg) => seg === '.' || seg === '..'))
60
+ continue;
61
+ if (seen.has(path))
62
+ continue;
63
+ seen.add(path);
64
+ out.push(path);
65
+ if (out.length >= limit)
66
+ break;
67
+ }
68
+ return out;
69
+ }
70
+ // ─── discoverSearchTerms ──────────────────────────────────────────
71
+ /** A backtick-quoted span: `` `...` ``. Matched globally over the (capped) text. */
72
+ const BACKTICK = /`([^`]+)`/g;
73
+ /**
74
+ * An identifier-shaped token inside a backtick span: starts with a letter, then
75
+ * letters/digits/`_`/`.`/`-`. This is the SAME charset the emitted terms are
76
+ * validated against downstream (the server `GH_SEARCH_TERM` regex) — kept in
77
+ * sync BY CONSTRUCTION since both are `[A-Za-z0-9_.-]`.
78
+ */
79
+ const TERM_TOKEN = /[A-Za-z][A-Za-z0-9_.-]*/g;
80
+ const DEFAULT_TERM_LIMIT = 5;
81
+ const TERM_MIN = 3;
82
+ const TERM_MAX = 64;
83
+ /** Common template noise that is never a useful search term. */
84
+ const TERM_STOP = new Set(['const_cast', 'static_cast']);
85
+ /**
86
+ * Extract candidate CODE-SEARCH terms from free issue text — the complement to
87
+ * {@link discoverCodePaths}: instead of a path (`dir/file.ext`), this looks for
88
+ * an IDENTIFIER a reporter named inline, e.g. `` the bug is in `fetchGraph` ``.
89
+ * Used when path discovery finds too few candidates, so the caller can fall back
90
+ * to a GitHub code-search API call keyed on the term.
91
+ *
92
+ * BACKTICK-GATED ONLY: a bare-prose token (no surrounding backticks) is never
93
+ * extracted — markdown backticks are the reporter's own signal that "this is
94
+ * code", which keeps the false-positive rate low without an LLM. Terms are
95
+ * matched ANY-CASE (`fetchGraph`, `SEARCH_TERM`, `snake_case`, `foo.bar` all
96
+ * pass), deduped case-insensitively (first-appearance casing wins), length-
97
+ * bounded to `[3, 64]`, trailing `[._-]+` is trimmed, and `TERM_STOP` noise is
98
+ * dropped. Never throws.
99
+ *
100
+ * ReDoS-hardened for attacker-authored input the same way as
101
+ * {@link discoverCodePaths}: the text is capped at `MAX_TEXT`, and any backtick
102
+ * span longer than `MAX_TOKEN` is skipped WHOLESALE (never regex-scanned) so a
103
+ * pathological long span cannot drive quadratic backtracking.
104
+ *
105
+ * @param text the issue's combined title/body/comments text
106
+ * @param opts.limit max terms to return (default 5)
107
+ */
108
+ export function discoverSearchTerms(text, opts) {
109
+ const limit = opts?.limit ?? DEFAULT_TERM_LIMIT;
110
+ if (typeof text !== 'string' || text.length === 0 || limit <= 0)
111
+ return [];
112
+ const scanned = text.slice(0, MAX_TEXT);
113
+ const seenKeys = new Set();
114
+ const out = [];
115
+ const add = (raw) => {
116
+ if (out.length >= limit)
117
+ return;
118
+ const trimmed = raw.replace(/[._-]+$/, '');
119
+ if (trimmed.length < TERM_MIN || trimmed.length > TERM_MAX)
120
+ return;
121
+ const key = trimmed.toLowerCase();
122
+ if (TERM_STOP.has(key))
123
+ return;
124
+ if (seenKeys.has(key))
125
+ return;
126
+ seenKeys.add(key);
127
+ out.push(trimmed);
128
+ };
129
+ for (const spanMatch of scanned.matchAll(BACKTICK)) {
130
+ if (out.length >= limit)
131
+ break;
132
+ const span = spanMatch[1] ?? '';
133
+ // Skip an over-long span WHOLESALE (the ReDoS belt) — never regex-scan it.
134
+ if (span.length > MAX_TOKEN)
135
+ continue;
136
+ for (const tokenMatch of span.matchAll(TERM_TOKEN)) {
137
+ if (out.length >= limit)
138
+ break;
139
+ add(tokenMatch[0]);
140
+ }
141
+ }
142
+ return out;
143
+ }
144
+ //# sourceMappingURL=issue-code-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-code-discovery.js","sourceRoot":"","sources":["../../src/agents/issue-code-discovery.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ export interface IssueTriageSource {
47
47
  ref: string;
48
48
  }
49
49
  /** Issue classification taxonomy (locked scope — bug | feature | question). */
50
- export declare const ISSUE_CLASSIFICATIONS: readonly ["bug", "feature", "question"];
50
+ export declare const ISSUE_CLASSIFICATIONS: readonly ['bug', 'feature', 'question'];
51
51
  export type IssueClassification = (typeof ISSUE_CLASSIFICATIONS)[number];
52
52
  /** A single issue comment (author + body) — untrusted, fenced as DATA. */
53
53
  export interface IssueComment {
@@ -82,6 +82,16 @@ export interface IssueTriageInput {
82
82
  * succeeded, no error"), not omitted.
83
83
  */
84
84
  reproductionEvidence?: string | null;
85
+ /**
86
+ * Repository source the issue references, fetched for the model to VERIFY the
87
+ * claim against (the CLI locates it from a checkout; the server fetches it
88
+ * remotely). Its own OPTIONAL fenced input via `wrapUntrustedSourceCode`
89
+ * (<SOURCE_CODE>) — semantically distinct from `memoryContext` (dedup context,
90
+ * framed "do not flag from this") and `reproductionEvidence` (live-app output).
91
+ * Attacker-influenceable (a reporter may control the branch it was read from) —
92
+ * absent/null preserves existing behavior exactly (no fence emitted).
93
+ */
94
+ sourceCode?: string | null;
85
95
  /** Provider id — carried for progress/metadata (caller resolves the backend). */
86
96
  provider: LLMProvider;
87
97
  /** Model id — carried for progress/metadata. */