ghagga-core 2.9.1 → 3.0.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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agents/consensus.d.ts.map +1 -1
  3. package/dist/agents/consensus.js +7 -2
  4. package/dist/agents/consensus.js.map +1 -1
  5. package/dist/agents/diagnostic.d.ts.map +1 -1
  6. package/dist/agents/diagnostic.js +7 -2
  7. package/dist/agents/diagnostic.js.map +1 -1
  8. package/dist/agents/fan-out-lenses.d.ts.map +1 -1
  9. package/dist/agents/fan-out-lenses.js +7 -2
  10. package/dist/agents/fan-out-lenses.js.map +1 -1
  11. package/dist/agents/prompts.d.ts +49 -1
  12. package/dist/agents/prompts.d.ts.map +1 -1
  13. package/dist/agents/prompts.js +133 -5
  14. package/dist/agents/prompts.js.map +1 -1
  15. package/dist/agents/simple.d.ts +1 -1
  16. package/dist/agents/simple.d.ts.map +1 -1
  17. package/dist/agents/simple.js +6 -4
  18. package/dist/agents/simple.js.map +1 -1
  19. package/dist/agents/workflow.d.ts.map +1 -1
  20. package/dist/agents/workflow.js +13 -4
  21. package/dist/agents/workflow.js.map +1 -1
  22. package/dist/critique/critique.d.ts.map +1 -1
  23. package/dist/critique/critique.js +14 -6
  24. package/dist/critique/critique.js.map +1 -1
  25. package/dist/diff/index.d.ts +12 -0
  26. package/dist/diff/index.d.ts.map +1 -0
  27. package/dist/diff/index.js +11 -0
  28. package/dist/diff/index.js.map +1 -0
  29. package/dist/diff/parse.d.ts +41 -0
  30. package/dist/diff/parse.d.ts.map +1 -0
  31. package/dist/diff/parse.js +303 -0
  32. package/dist/diff/parse.js.map +1 -0
  33. package/dist/diff/types.d.ts +106 -0
  34. package/dist/diff/types.d.ts.map +1 -0
  35. package/dist/diff/types.js +23 -0
  36. package/dist/diff/types.js.map +1 -0
  37. package/dist/embed.d.ts +5 -2
  38. package/dist/embed.d.ts.map +1 -1
  39. package/dist/embed.js +7 -3
  40. package/dist/embed.js.map +1 -1
  41. package/dist/enhance/prompt.d.ts +5 -1
  42. package/dist/enhance/prompt.d.ts.map +1 -1
  43. package/dist/enhance/prompt.js +9 -2
  44. package/dist/enhance/prompt.js.map +1 -1
  45. package/dist/format.d.ts +31 -0
  46. package/dist/format.d.ts.map +1 -1
  47. package/dist/format.js +256 -15
  48. package/dist/format.js.map +1 -1
  49. package/dist/index.d.ts +2 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +1 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/memory/pageindex/index.d.ts +2 -2
  54. package/dist/memory/pageindex/index.d.ts.map +1 -1
  55. package/dist/memory/pageindex/index.js.map +1 -1
  56. package/dist/memory/pageindex/service.d.ts +10 -1
  57. package/dist/memory/pageindex/service.d.ts.map +1 -1
  58. package/dist/memory/pageindex/service.js +2 -2
  59. package/dist/memory/pageindex/service.js.map +1 -1
  60. package/dist/memory/persist.d.ts.map +1 -1
  61. package/dist/memory/persist.js +10 -3
  62. package/dist/memory/persist.js.map +1 -1
  63. package/dist/memory/privacy.d.ts.map +1 -1
  64. package/dist/memory/privacy.js +45 -6
  65. package/dist/memory/privacy.js.map +1 -1
  66. package/dist/memory/sqlite.d.ts +1 -13
  67. package/dist/memory/sqlite.d.ts.map +1 -1
  68. package/dist/memory/sqlite.js +45 -27
  69. package/dist/memory/sqlite.js.map +1 -1
  70. package/dist/memory/taxonomy.d.ts.map +1 -1
  71. package/dist/memory/taxonomy.js +6 -1
  72. package/dist/memory/taxonomy.js.map +1 -1
  73. package/dist/pipeline/degrade.d.ts +61 -0
  74. package/dist/pipeline/degrade.d.ts.map +1 -0
  75. package/dist/pipeline/degrade.js +58 -0
  76. package/dist/pipeline/degrade.js.map +1 -0
  77. package/dist/pipeline/enrich.d.ts +29 -0
  78. package/dist/pipeline/enrich.d.ts.map +1 -0
  79. package/dist/pipeline/enrich.js +271 -0
  80. package/dist/pipeline/enrich.js.map +1 -0
  81. package/dist/pipeline/execute.d.ts +22 -0
  82. package/dist/pipeline/execute.d.ts.map +1 -0
  83. package/dist/pipeline/execute.js +250 -0
  84. package/dist/pipeline/execute.js.map +1 -0
  85. package/dist/pipeline/finalize.d.ts +26 -0
  86. package/dist/pipeline/finalize.d.ts.map +1 -0
  87. package/dist/pipeline/finalize.js +52 -0
  88. package/dist/pipeline/finalize.js.map +1 -0
  89. package/dist/pipeline/gather-context.d.ts +25 -0
  90. package/dist/pipeline/gather-context.d.ts.map +1 -0
  91. package/dist/pipeline/gather-context.js +169 -0
  92. package/dist/pipeline/gather-context.js.map +1 -0
  93. package/dist/pipeline/gather-safe.d.ts +39 -0
  94. package/dist/pipeline/gather-safe.d.ts.map +1 -0
  95. package/dist/pipeline/gather-safe.js +127 -0
  96. package/dist/pipeline/gather-safe.js.map +1 -0
  97. package/dist/pipeline/prepare-graph.d.ts +54 -0
  98. package/dist/pipeline/prepare-graph.d.ts.map +1 -0
  99. package/dist/pipeline/prepare-graph.js +174 -0
  100. package/dist/pipeline/prepare-graph.js.map +1 -0
  101. package/dist/pipeline/prepare.d.ts +40 -0
  102. package/dist/pipeline/prepare.d.ts.map +1 -0
  103. package/dist/pipeline/prepare.js +233 -0
  104. package/dist/pipeline/prepare.js.map +1 -0
  105. package/dist/pipeline/providers.d.ts +54 -0
  106. package/dist/pipeline/providers.d.ts.map +1 -0
  107. package/dist/pipeline/providers.js +163 -0
  108. package/dist/pipeline/providers.js.map +1 -0
  109. package/dist/pipeline/results.d.ts +35 -0
  110. package/dist/pipeline/results.d.ts.map +1 -0
  111. package/dist/pipeline/results.js +122 -0
  112. package/dist/pipeline/results.js.map +1 -0
  113. package/dist/pipeline/state.d.ts +92 -0
  114. package/dist/pipeline/state.d.ts.map +1 -0
  115. package/dist/pipeline/state.js +13 -0
  116. package/dist/pipeline/state.js.map +1 -0
  117. package/dist/pipeline.d.ts +10 -9
  118. package/dist/pipeline.d.ts.map +1 -1
  119. package/dist/pipeline.js +36 -1213
  120. package/dist/pipeline.js.map +1 -1
  121. package/dist/providers/gateway.d.ts.map +1 -1
  122. package/dist/providers/gateway.js +8 -0
  123. package/dist/providers/gateway.js.map +1 -1
  124. package/dist/recursive/index.d.ts +1 -0
  125. package/dist/recursive/index.d.ts.map +1 -1
  126. package/dist/recursive/index.js +7 -3
  127. package/dist/recursive/index.js.map +1 -1
  128. package/dist/recursive/patch-extractor.d.ts +58 -6
  129. package/dist/recursive/patch-extractor.d.ts.map +1 -1
  130. package/dist/recursive/patch-extractor.js +207 -26
  131. package/dist/recursive/patch-extractor.js.map +1 -1
  132. package/dist/sanitize.d.ts +51 -0
  133. package/dist/sanitize.d.ts.map +1 -0
  134. package/dist/sanitize.js +90 -0
  135. package/dist/sanitize.js.map +1 -0
  136. package/dist/scope/diff-mapper.d.ts +12 -0
  137. package/dist/scope/diff-mapper.d.ts.map +1 -1
  138. package/dist/scope/diff-mapper.js +25 -18
  139. package/dist/scope/diff-mapper.js.map +1 -1
  140. package/dist/scope/entity-diff.d.ts +21 -4
  141. package/dist/scope/entity-diff.d.ts.map +1 -1
  142. package/dist/scope/entity-diff.js +132 -34
  143. package/dist/scope/entity-diff.js.map +1 -1
  144. package/dist/scope/types.d.ts +10 -0
  145. package/dist/scope/types.d.ts.map +1 -1
  146. package/dist/semantic-diff/index.d.ts +25 -2
  147. package/dist/semantic-diff/index.d.ts.map +1 -1
  148. package/dist/semantic-diff/index.js +147 -53
  149. package/dist/semantic-diff/index.js.map +1 -1
  150. package/dist/tools/gitleaks-config.toml +35 -0
  151. package/dist/tools/plugins/gitleaks.d.ts +10 -0
  152. package/dist/tools/plugins/gitleaks.d.ts.map +1 -1
  153. package/dist/tools/plugins/gitleaks.js +29 -2
  154. package/dist/tools/plugins/gitleaks.js.map +1 -1
  155. package/dist/tools/plugins/semgrep.d.ts +11 -0
  156. package/dist/tools/plugins/semgrep.d.ts.map +1 -1
  157. package/dist/tools/plugins/semgrep.js +30 -1
  158. package/dist/tools/plugins/semgrep.js.map +1 -1
  159. package/dist/tools/semgrep-rules.yml +305 -0
  160. package/dist/types.d.ts +51 -1
  161. package/dist/types.d.ts.map +1 -1
  162. package/dist/types.js.map +1 -1
  163. package/dist/utils/diff.d.ts +22 -2
  164. package/dist/utils/diff.d.ts.map +1 -1
  165. package/dist/utils/diff.js +36 -40
  166. package/dist/utils/diff.js.map +1 -1
  167. package/package.json +21 -22
  168. package/dist/providers/fallback.d.ts +0 -54
  169. package/dist/providers/fallback.d.ts.map +0 -1
  170. package/dist/providers/fallback.js +0 -102
  171. package/dist/providers/fallback.js.map +0 -1
  172. package/dist/providers/index.d.ts +0 -49
  173. package/dist/providers/index.d.ts.map +0 -1
  174. package/dist/providers/index.js +0 -146
  175. package/dist/providers/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,YAAY,EAEb,MAAM,aAAa,CAAC;AAqBrB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAErC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAE/B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyCD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiNzF"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,YAAY,EAEb,MAAM,aAAa,CAAC;AAwBrB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAErC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAE/B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyCD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6NzF"}
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import { runWithConcurrency } from '../utils/concurrency.js';
19
19
  import { calculateRateSchedule } from '../utils/token-budget.js';
20
- import { buildMemoryContext, buildReviewLevelInstruction, COMPACT_CALIBRATION, REVIEW_CALIBRATION, UNTRUSTED_CONTENT_POLICY, WORKFLOW_ERRORS_SYSTEM, WORKFLOW_PERFORMANCE_SYSTEM, WORKFLOW_SCOPE_SYSTEM, WORKFLOW_SECURITY_SYSTEM, WORKFLOW_STANDARDS_SYSTEM, WORKFLOW_SYNTHESIS_SYSTEM, wrapUntrustedDiff, } from './prompts.js';
20
+ import { buildMemoryContext, buildReviewLevelInstruction, COMPACT_CALIBRATION, REVIEW_CALIBRATION, SPECIALIST_OUTPUT_UNTRUSTED_LABEL, STATIC_ANALYSIS_UNTRUSTED_LABEL, UNTRUSTED_CONTENT_POLICY, WORKFLOW_ERRORS_SYSTEM, WORKFLOW_PERFORMANCE_SYSTEM, WORKFLOW_SCOPE_SYSTEM, WORKFLOW_SECURITY_SYSTEM, WORKFLOW_STANDARDS_SYSTEM, WORKFLOW_SYNTHESIS_SYSTEM, wrapUntrusted, wrapUntrustedDiff, } from './prompts.js';
21
21
  import { parseReviewResponse } from './simple.js';
22
22
  const SPECIALIST_CONTEXT_MAP = {
23
23
  'security-audit': ['staticContext'],
@@ -75,9 +75,13 @@ export async function runWorkflowReview(input) {
75
75
  });
76
76
  // Build the user prompt (same for all specialists, wrapped in untrusted-content delimiters)
77
77
  const userPrompt = `Review the following code changes:\n\n${wrapUntrustedDiff(diff)}`;
78
- // Context sources keyed for lookup by the specialist context map
78
+ // Context sources keyed for lookup by the specialist context map.
79
+ // staticContext is attacker-influenceable tool/data → fence as untrusted.
80
+ // memoryContext is fenced inside buildMemoryContext(). stackHints is trusted (static).
79
81
  const contextSources = {
80
- staticContext,
82
+ staticContext: staticContext
83
+ ? wrapUntrusted(STATIC_ANALYSIS_UNTRUSTED_LABEL, staticContext)
84
+ : '',
81
85
  memoryContext: buildMemoryContext(memoryContext),
82
86
  stackHints,
83
87
  };
@@ -167,13 +171,18 @@ export async function runWorkflowReview(input) {
167
171
  const primaryEntry = chain
168
172
  ? chain[0]
169
173
  : { provider: provider, model, apiKey };
174
+ // Each specialist output is model-generated text derived from the (untrusted)
175
+ // diff — a malicious diff can induce a specialist to emit injected instructions.
176
+ // Fence every block as untrusted DATA before feeding it into the synthesis call.
177
+ const wrappedSpecialistOutputs = specialistOutputs.map((output) => wrapUntrusted(SPECIALIST_OUTPUT_UNTRUSTED_LABEL, output));
170
178
  const synthesisPrompt = [
171
179
  'Below are the findings from 5 specialist reviewers. Synthesize them into a final review.\n',
172
- ...specialistOutputs,
180
+ ...wrappedSpecialistOutputs,
173
181
  '\n\n---\n\nNow provide the unified review in the required format.',
174
182
  ].join('\n\n');
175
183
  const synthesisSystem = [
176
184
  WORKFLOW_SYNTHESIS_SYSTEM,
185
+ UNTRUSTED_CONTENT_POLICY,
177
186
  buildReviewLevelInstruction(reviewLevel),
178
187
  REVIEW_CALIBRATION,
179
188
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agents/workflow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"critique.d.ts","sourceRoot":"","sources":["../../src/critique/critique.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,KAAK,EACV,cAAc,EAGd,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAiBpB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAwClE;AAoBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,EAAE,cAAc,GACvB;IACD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CA6CA;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,cAAc,EAC1B,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAqF7B"}
1
+ {"version":3,"file":"critique.d.ts","sourceRoot":"","sources":["../../src/critique/critique.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,KAAK,EACV,cAAc,EAGd,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAiBpB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAwClE;AAoBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,EAAE,cAAc,GACvB;IACD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CA4CA;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,cAAc,EAC1B,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA6F7B"}
@@ -5,6 +5,7 @@
5
5
  * The self-critique step catches overreactions, false positives, and
6
6
  * vague findings, producing a higher-quality final review.
7
7
  */
8
+ import { SPECIALIST_OUTPUT_UNTRUSTED_LABEL, UNTRUSTED_CONTENT_POLICY, wrapUntrusted, wrapUntrustedDiff, } from '../agents/prompts.js';
8
9
  import { REFINED_REVIEW_SYSTEM, SELF_CRITIQUE_SYSTEM } from './prompts.js';
9
10
  import { DEFAULT_DUAL_CRITIQUE_CONFIG } from './types.js';
10
11
  // ─── Constants ─────────────────────────────────────────────────
@@ -102,8 +103,7 @@ export function applyCritique(findings, critique) {
102
103
  refined.push(finding);
103
104
  }
104
105
  break;
105
- case 'vague':
106
- case 'valid':
106
+ // 'vague' and 'valid' fall through here: the finding is kept as-is.
107
107
  default:
108
108
  refined.push(finding);
109
109
  break;
@@ -148,8 +148,12 @@ export async function runDualCritique(initialReview, input, generateFn, onProgre
148
148
  step: 'dual-critique',
149
149
  message: `Running self-critique on ${initialFindings.length} AI finding(s)...`,
150
150
  });
151
- const critiquePrompt = `Here is the code diff:\n\n${input.diff}\n\nHere is the initial review with ${initialFindings.length} findings:\n\n${serializeFindingsForCritique(initialFindings)}\n\nPlease critique each finding.`;
152
- const critiqueResponse = await generateFn(SELF_CRITIQUE_SYSTEM, critiquePrompt);
151
+ // The diff is untrusted user input; the serialized findings are model-generated
152
+ // text derived from that diff. Fence both as untrusted DATA so an injected
153
+ // "finding message" or diff line cannot redirect the critique agent.
154
+ const critiquePrompt = `Here is the code diff:\n\n${wrapUntrustedDiff(input.diff)}\n\nHere is the initial review with ${initialFindings.length} findings:\n\n${wrapUntrusted(SPECIALIST_OUTPUT_UNTRUSTED_LABEL, serializeFindingsForCritique(initialFindings))}\n\nPlease critique each finding.`;
155
+ const critiqueSystem = `${SELF_CRITIQUE_SYSTEM}\n${UNTRUSTED_CONTENT_POLICY}`;
156
+ const critiqueResponse = await generateFn(critiqueSystem, critiquePrompt);
153
157
  const critiqueResult = parseCritiqueResponse(critiqueResponse.text);
154
158
  emit({
155
159
  step: 'dual-critique',
@@ -167,8 +171,12 @@ export async function runDualCritique(initialReview, input, generateFn, onProgre
167
171
  });
168
172
  // ── Step 3: Refined Summary ──────────────────────────────────
169
173
  // Ask the LLM to produce a refined summary based on the surviving findings
170
- const refinedPrompt = `Here is the code diff:\n\n${input.diff}\n\nInitial review summary: ${initialReview.summary}\n\nSelf-critique assessment: ${critiqueResult.overallAssessment}\n\nRemaining findings after critique (${refined.length}):\n${serializeFindingsForCritique(refined)}\n\nPlease produce the refined review.`;
171
- const refinedResponse = await generateFn(REFINED_REVIEW_SYSTEM, refinedPrompt);
174
+ // initialReview.summary and critiqueResult.overallAssessment are model-generated
175
+ // text derived from the untrusted diff → fence them as untrusted DATA too, so an
176
+ // injected summary/assessment cannot redirect the refined-review agent.
177
+ const refinedPrompt = `Here is the code diff:\n\n${wrapUntrustedDiff(input.diff)}\n\nInitial review summary:\n${wrapUntrusted(SPECIALIST_OUTPUT_UNTRUSTED_LABEL, initialReview.summary)}\n\nSelf-critique assessment:\n${wrapUntrusted(SPECIALIST_OUTPUT_UNTRUSTED_LABEL, critiqueResult.overallAssessment)}\n\nRemaining findings after critique (${refined.length}):\n${wrapUntrusted(SPECIALIST_OUTPUT_UNTRUSTED_LABEL, serializeFindingsForCritique(refined))}\n\nPlease produce the refined review.`;
178
+ const refinedSystem = `${REFINED_REVIEW_SYSTEM}\n${UNTRUSTED_CONTENT_POLICY}`;
179
+ const refinedResponse = await generateFn(refinedSystem, refinedPrompt);
172
180
  // Extract refined status and summary from response
173
181
  const statusMatch = /STATUS:\s*(PASSED|FAILED|NEEDS_HUMAN_REVIEW|SKIPPED)/i.exec(refinedResponse.text);
174
182
  const refinedStatus = statusMatch?.[1]?.toUpperCase() ?? initialReview.status;
@@ -1 +1 @@
1
- {"version":3,"file":"critique.js","sourceRoot":"","sources":["../../src/critique/critique.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"critique.js","sourceRoot":"","sources":["../../src/critique/critique.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Unified diff parser — barrel.
3
+ *
4
+ * Wired consumers (adapters, migrated phase by phase under golden-corpus
5
+ * parity gates): utils/diff.ts (Phase 3), recursive/patch-extractor.ts
6
+ * (Phase 4), scope/diff-mapper.ts, scope/entity-diff.ts and
7
+ * semantic-diff/index.ts (Phases 5–7). Not re-exported from core's
8
+ * top-level index: consumers keep their historical public signatures.
9
+ */
10
+ export { matchHunkHeader, parseUnifiedDiff } from './parse.js';
11
+ export type { DiffHunk, HunkLine, ParsedDiff, ParsedFileDiff } from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Unified diff parser — barrel.
3
+ *
4
+ * Wired consumers (adapters, migrated phase by phase under golden-corpus
5
+ * parity gates): utils/diff.ts (Phase 3), recursive/patch-extractor.ts
6
+ * (Phase 4), scope/diff-mapper.ts, scope/entity-diff.ts and
7
+ * semantic-diff/index.ts (Phases 5–7). Not re-exported from core's
8
+ * top-level index: consumers keep their historical public signatures.
9
+ */
10
+ export { matchHunkHeader, parseUnifiedDiff } from './parse.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Unified diff parser — the single line-based parser for packages/core.
3
+ *
4
+ * Replaces (via thin adapters, see migration plan sdd/unify-diff-parsers) the
5
+ * five historical parsers: utils/diff.ts, recursive/patch-extractor.ts,
6
+ * scope/diff-mapper.ts, scope/entity-diff.ts and the local parseHunks of
7
+ * semantic-diff/index.ts.
8
+ *
9
+ * Invariants:
10
+ * - NEVER throws, for any input string (spec R1).
11
+ * - Byte-exact reconstruction (spec R2): every input line lands in exactly
12
+ * one bucket — `preamble` or one file's `rawLines` — so
13
+ * `[...preamble, ...files.flatMap((f) => f.rawLines)].join('\n') === raw`.
14
+ * - Quoted paths (`core.quotepath` octal/C-style escapes) are parsed and
15
+ * unescaped (CORE-M6 fix) instead of being dropped.
16
+ *
17
+ * Known retained limitation (documented, out of scope): in the unquoted
18
+ * `diff --git a/x b/y` header, a path containing a literal ` b/` is ambiguous;
19
+ * like the historical regex, the LAST ` b/` occurrence wins.
20
+ */
21
+ import type { ParsedDiff } from './types.js';
22
+ /**
23
+ * Match a hunk header line with THE single strict hunk-header regex (spec
24
+ * R8). Returns the 4 captures (omitted counts default to 1) or `null`.
25
+ *
26
+ * Exported for adapters that must scan raw lines themselves — e.g. bare hunk
27
+ * fragments without any `diff --git` header, which `parseUnifiedDiff` keeps
28
+ * in `preamble` and therefore never turn into model hunks.
29
+ */
30
+ export declare function matchHunkHeader(line: string): {
31
+ oldStart: number;
32
+ oldCount: number;
33
+ newStart: number;
34
+ newCount: number;
35
+ } | null;
36
+ /**
37
+ * Parse a unified diff. Defensive: never throws — non-diff input yields
38
+ * `{ preamble: [...lines], files: [] }` (spec R1, C13/C14).
39
+ */
40
+ export declare function parseUnifiedDiff(raw: string): ParsedDiff;
41
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/diff/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAsB,UAAU,EAAkB,MAAM,YAAY,CAAC;AA0BjF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASnF;AAuJD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA8HxD"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Unified diff parser — the single line-based parser for packages/core.
3
+ *
4
+ * Replaces (via thin adapters, see migration plan sdd/unify-diff-parsers) the
5
+ * five historical parsers: utils/diff.ts, recursive/patch-extractor.ts,
6
+ * scope/diff-mapper.ts, scope/entity-diff.ts and the local parseHunks of
7
+ * semantic-diff/index.ts.
8
+ *
9
+ * Invariants:
10
+ * - NEVER throws, for any input string (spec R1).
11
+ * - Byte-exact reconstruction (spec R2): every input line lands in exactly
12
+ * one bucket — `preamble` or one file's `rawLines` — so
13
+ * `[...preamble, ...files.flatMap((f) => f.rawLines)].join('\n') === raw`.
14
+ * - Quoted paths (`core.quotepath` octal/C-style escapes) are parsed and
15
+ * unescaped (CORE-M6 fix) instead of being dropped.
16
+ *
17
+ * Known retained limitation (documented, out of scope): in the unquoted
18
+ * `diff --git a/x b/y` header, a path containing a literal ` b/` is ambiguous;
19
+ * like the historical regex, the LAST ` b/` occurrence wins.
20
+ */
21
+ // ─── Header regexes ─────────────────────────────────────────────
22
+ /**
23
+ * Unquoted form. Greedy `.+` + backtracking makes the b-side capture start at
24
+ * the LAST ` b/` — identical boundary to the historical
25
+ * `/^diff --git a\/.+ b\/(.+)$/` (utils/diff.ts), so unquoted paths with
26
+ * spaces keep parsing exactly as before (C2 parity).
27
+ */
28
+ const HEADER_PLAIN_RE = /^diff --git a\/(.+) b\/(.+)$/;
29
+ /** Both sides quoted (core.quotepath): `diff --git "a/x" "b/y"`. */
30
+ const HEADER_QUOTED_RE = /^diff --git "a\/((?:[^"\\]|\\.)*)" "b\/((?:[^"\\]|\\.)*)"$/;
31
+ /** Mixed quoting (one side needs quoting, e.g. rename ascii → non-ascii). */
32
+ const HEADER_QUOTED_OLD_RE = /^diff --git "a\/((?:[^"\\]|\\.)*)" b\/(.+)$/;
33
+ const HEADER_QUOTED_NEW_RE = /^diff --git a\/(.+) "b\/((?:[^"\\]|\\.)*)"$/;
34
+ /**
35
+ * Strict hunk header with the 4 captures (design decision: based on
36
+ * scope/diff-mapper.ts, single-space form as emitted by git; omitted counts
37
+ * default to 1). THE single hunk-header regex of packages/core (spec R8).
38
+ */
39
+ const HUNK_HEADER_RE = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;
40
+ /**
41
+ * Match a hunk header line with THE single strict hunk-header regex (spec
42
+ * R8). Returns the 4 captures (omitted counts default to 1) or `null`.
43
+ *
44
+ * Exported for adapters that must scan raw lines themselves — e.g. bare hunk
45
+ * fragments without any `diff --git` header, which `parseUnifiedDiff` keeps
46
+ * in `preamble` and therefore never turn into model hunks.
47
+ */
48
+ export function matchHunkHeader(line) {
49
+ const m = HUNK_HEADER_RE.exec(line);
50
+ if (!m)
51
+ return null;
52
+ return {
53
+ oldStart: Number.parseInt(m[1] ?? '0', 10),
54
+ oldCount: m[2] !== undefined ? Number.parseInt(m[2], 10) : 1,
55
+ newStart: Number.parseInt(m[3] ?? '0', 10),
56
+ newCount: m[4] !== undefined ? Number.parseInt(m[4], 10) : 1,
57
+ };
58
+ }
59
+ /**
60
+ * `---`/`+++` lines: quoted, unquoted or /dev/null. Git appends a trailing
61
+ * TAB after unquoted paths containing spaces (GNU patch disambiguation) — it
62
+ * is not part of the path, so it is matched outside the capture.
63
+ */
64
+ const OLD_FILE_RE = /^--- (?:"a\/((?:[^"\\]|\\.)*)"|a\/(.*?)|(\/dev\/null))\t?$/;
65
+ const NEW_FILE_RE = /^\+\+\+ (?:"b\/((?:[^"\\]|\\.)*)"|b\/(.*?)|(\/dev\/null))\t?$/;
66
+ // ─── Quoted-path unescaping (CORE-M6) ───────────────────────────
67
+ const ESCAPE_MAP = {
68
+ a: 0x07,
69
+ b: 0x08,
70
+ f: 0x0c,
71
+ n: 0x0a,
72
+ r: 0x0d,
73
+ t: 0x09,
74
+ v: 0x0b,
75
+ '"': 0x22,
76
+ '\\': 0x5c,
77
+ };
78
+ const encoder = new TextEncoder();
79
+ const decoder = new TextDecoder();
80
+ /**
81
+ * Unescape the inner content of a git-quoted path: C-style escapes plus
82
+ * octal byte sequences (`caf\303\251` → `café`). Octal escapes are raw UTF-8
83
+ * bytes, so the whole result is assembled as bytes and decoded once.
84
+ */
85
+ function unescapeQuotedPath(inner) {
86
+ const bytes = [];
87
+ for (let i = 0; i < inner.length; i++) {
88
+ const ch = inner[i];
89
+ if (ch === '\\' && i + 1 < inner.length) {
90
+ const next = inner[i + 1];
91
+ if (next >= '0' && next <= '7') {
92
+ let oct = '';
93
+ let j = i + 1;
94
+ while (j < inner.length && oct.length < 3) {
95
+ const d = inner[j];
96
+ if (d < '0' || d > '7')
97
+ break;
98
+ oct += d;
99
+ j++;
100
+ }
101
+ bytes.push(Number.parseInt(oct, 8));
102
+ i = j - 1;
103
+ continue;
104
+ }
105
+ const mapped = ESCAPE_MAP[next];
106
+ if (mapped !== undefined) {
107
+ bytes.push(mapped);
108
+ i++;
109
+ continue;
110
+ }
111
+ // Unknown escape — keep the backslash literally (defensive).
112
+ bytes.push(0x5c);
113
+ continue;
114
+ }
115
+ for (const b of encoder.encode(ch))
116
+ bytes.push(b);
117
+ }
118
+ return decoder.decode(Uint8Array.from(bytes));
119
+ }
120
+ /** Try the 4 header forms; returns unescaped a/b paths (+ quoting) on match. */
121
+ function matchFileHeader(line) {
122
+ let m = HEADER_QUOTED_RE.exec(line);
123
+ if (m)
124
+ return {
125
+ oldPath: unescapeQuotedPath(m[1] ?? ''),
126
+ newPath: unescapeQuotedPath(m[2] ?? ''),
127
+ quoted: true,
128
+ };
129
+ m = HEADER_QUOTED_OLD_RE.exec(line);
130
+ if (m)
131
+ return { oldPath: unescapeQuotedPath(m[1] ?? ''), newPath: m[2] ?? '', quoted: true };
132
+ m = HEADER_QUOTED_NEW_RE.exec(line);
133
+ if (m)
134
+ return { oldPath: m[1] ?? '', newPath: unescapeQuotedPath(m[2] ?? ''), quoted: true };
135
+ m = HEADER_PLAIN_RE.exec(line);
136
+ if (m)
137
+ return { oldPath: m[1] ?? '', newPath: m[2] ?? '', quoted: false };
138
+ return null;
139
+ }
140
+ /** Parse a `--- `/`+++ ` line. Returns the path, or null for /dev/null. */
141
+ function matchFileLine(re, line) {
142
+ const m = re.exec(line);
143
+ if (!m)
144
+ return undefined;
145
+ if (m[3] !== undefined)
146
+ return { path: null }; // /dev/null
147
+ if (m[1] !== undefined)
148
+ return { path: unescapeQuotedPath(m[1]) };
149
+ return { path: m[2] ?? '' };
150
+ }
151
+ function finalizeFile(state) {
152
+ // Resolved oldPath: explicit `--- ` line wins (including /dev/null → null),
153
+ // then `rename from`, then the header a-side.
154
+ const oldPath = state.oldPathSeen ? state.oldPath : (state.renameFrom ?? state.headerOldPath);
155
+ const newPath = state.newPathSeen ? state.newPath : (state.renameTo ?? state.headerNewPath);
156
+ // Display-path authority (design): `+++ b/` → `rename to` → header b-side → old.
157
+ const path = (state.newPathSeen ? state.newPath : null) ??
158
+ state.renameTo ??
159
+ state.headerNewPath ??
160
+ oldPath ??
161
+ '';
162
+ const file = {
163
+ oldPath,
164
+ newPath,
165
+ path,
166
+ headerNewPath: state.headerNewPath ?? '',
167
+ headerQuoted: state.headerQuoted,
168
+ isNew: state.isNew,
169
+ isDeleted: state.isDeleted,
170
+ isRename: state.isRename,
171
+ isBinary: state.isBinary,
172
+ hunks: state.hunks,
173
+ rawLines: state.rawLines,
174
+ };
175
+ if (state.oldMode !== undefined)
176
+ file.oldMode = state.oldMode;
177
+ if (state.newMode !== undefined)
178
+ file.newMode = state.newMode;
179
+ return file;
180
+ }
181
+ // ─── Parser ─────────────────────────────────────────────────────
182
+ /**
183
+ * Parse a unified diff. Defensive: never throws — non-diff input yields
184
+ * `{ preamble: [...lines], files: [] }` (spec R1, C13/C14).
185
+ */
186
+ export function parseUnifiedDiff(raw) {
187
+ const lines = raw.split('\n');
188
+ const preamble = [];
189
+ const files = [];
190
+ let state = null;
191
+ let currentHunk = null;
192
+ const flush = () => {
193
+ if (state)
194
+ files.push(finalizeFile(state));
195
+ state = null;
196
+ currentHunk = null;
197
+ };
198
+ for (const line of lines) {
199
+ // 1) Hunk body lines bind tighter than anything else while a hunk is open
200
+ // (a deleted line `--- x` inside a hunk is content, not metadata).
201
+ if (currentHunk && line.length > 0) {
202
+ const prefix = line[0];
203
+ if (prefix === '+' || prefix === '-' || prefix === ' ' || prefix === '\\') {
204
+ const hunkLine = {
205
+ prefix: prefix,
206
+ content: line.slice(1),
207
+ raw: line,
208
+ };
209
+ currentHunk.lines.push(hunkLine);
210
+ state?.rawLines.push(line);
211
+ continue;
212
+ }
213
+ }
214
+ // 2) File boundary?
215
+ const header = matchFileHeader(line);
216
+ if (header) {
217
+ flush();
218
+ state = {
219
+ headerOldPath: header.oldPath,
220
+ headerNewPath: header.newPath,
221
+ headerQuoted: header.quoted,
222
+ oldPath: null,
223
+ oldPathSeen: false,
224
+ newPath: null,
225
+ newPathSeen: false,
226
+ renameFrom: null,
227
+ renameTo: null,
228
+ isNew: false,
229
+ isDeleted: false,
230
+ isRename: false,
231
+ isBinary: false,
232
+ hunks: [],
233
+ rawLines: [line],
234
+ };
235
+ continue;
236
+ }
237
+ // 3) Before the first header everything is preamble.
238
+ if (!state) {
239
+ preamble.push(line);
240
+ continue;
241
+ }
242
+ state.rawLines.push(line);
243
+ // 4) New hunk?
244
+ const hm = matchHunkHeader(line);
245
+ if (hm) {
246
+ currentHunk = { ...hm, header: line, lines: [] };
247
+ state.hunks.push(currentHunk);
248
+ continue;
249
+ }
250
+ // 5) Any other line closes an open hunk and is inspected as metadata.
251
+ currentHunk = null;
252
+ if (line.startsWith('new file mode ')) {
253
+ state.isNew = true;
254
+ state.newMode = line.slice('new file mode '.length);
255
+ continue;
256
+ }
257
+ if (line.startsWith('deleted file mode ')) {
258
+ state.isDeleted = true;
259
+ state.oldMode = line.slice('deleted file mode '.length);
260
+ continue;
261
+ }
262
+ if (line.startsWith('old mode ')) {
263
+ state.oldMode = line.slice('old mode '.length);
264
+ continue;
265
+ }
266
+ if (line.startsWith('new mode ')) {
267
+ state.newMode = line.slice('new mode '.length);
268
+ continue;
269
+ }
270
+ if (line.startsWith('rename from ')) {
271
+ state.isRename = true;
272
+ const value = line.slice('rename from '.length);
273
+ state.renameFrom = value.startsWith('"') ? unescapeQuotedPath(value.slice(1, -1)) : value;
274
+ continue;
275
+ }
276
+ if (line.startsWith('rename to ')) {
277
+ state.isRename = true;
278
+ const value = line.slice('rename to '.length);
279
+ state.renameTo = value.startsWith('"') ? unescapeQuotedPath(value.slice(1, -1)) : value;
280
+ continue;
281
+ }
282
+ if (line.startsWith('Binary files ') || line === 'GIT binary patch') {
283
+ state.isBinary = true;
284
+ continue;
285
+ }
286
+ const oldLine = matchFileLine(OLD_FILE_RE, line);
287
+ if (oldLine !== undefined && !state.oldPathSeen) {
288
+ state.oldPath = oldLine.path;
289
+ state.oldPathSeen = true;
290
+ continue;
291
+ }
292
+ const newLine = matchFileLine(NEW_FILE_RE, line);
293
+ if (newLine !== undefined && !state.newPathSeen) {
294
+ state.newPath = newLine.path;
295
+ state.newPathSeen = true;
296
+ }
297
+ // Anything else (index lines, similarity, binary payload, truncation
298
+ // markers, garbage) stays in rawLines only.
299
+ }
300
+ flush();
301
+ return { preamble, files };
302
+ }
303
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/diff/parse.ts"],"names":[],"mappings":"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"}