@contextrail/code-review-agent 0.1.1-alpha.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 (84) hide show
  1. package/LICENSE +26 -0
  2. package/MODEL_RECOMMENDATIONS.md +178 -0
  3. package/README.md +177 -0
  4. package/dist/config/defaults.d.ts +72 -0
  5. package/dist/config/defaults.js +113 -0
  6. package/dist/config/index.d.ts +34 -0
  7. package/dist/config/index.js +89 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +603 -0
  10. package/dist/llm/factory.d.ts +21 -0
  11. package/dist/llm/factory.js +50 -0
  12. package/dist/llm/index.d.ts +3 -0
  13. package/dist/llm/index.js +2 -0
  14. package/dist/llm/service.d.ts +38 -0
  15. package/dist/llm/service.js +191 -0
  16. package/dist/llm/types.d.ts +119 -0
  17. package/dist/llm/types.js +1 -0
  18. package/dist/logging/logger.d.ts +9 -0
  19. package/dist/logging/logger.js +52 -0
  20. package/dist/mcp/client.d.ts +429 -0
  21. package/dist/mcp/client.js +173 -0
  22. package/dist/mcp/mcp-tools.d.ts +292 -0
  23. package/dist/mcp/mcp-tools.js +40 -0
  24. package/dist/mcp/token-validation.d.ts +31 -0
  25. package/dist/mcp/token-validation.js +57 -0
  26. package/dist/mcp/tools-provider.d.ts +18 -0
  27. package/dist/mcp/tools-provider.js +24 -0
  28. package/dist/observability/index.d.ts +2 -0
  29. package/dist/observability/index.js +1 -0
  30. package/dist/observability/metrics.d.ts +48 -0
  31. package/dist/observability/metrics.js +86 -0
  32. package/dist/orchestrator/agentic-orchestrator.d.ts +29 -0
  33. package/dist/orchestrator/agentic-orchestrator.js +136 -0
  34. package/dist/orchestrator/prompts.d.ts +25 -0
  35. package/dist/orchestrator/prompts.js +98 -0
  36. package/dist/orchestrator/validation.d.ts +2 -0
  37. package/dist/orchestrator/validation.js +7 -0
  38. package/dist/orchestrator/writer.d.ts +4 -0
  39. package/dist/orchestrator/writer.js +17 -0
  40. package/dist/output/aggregator.d.ts +30 -0
  41. package/dist/output/aggregator.js +132 -0
  42. package/dist/output/prompts.d.ts +32 -0
  43. package/dist/output/prompts.js +153 -0
  44. package/dist/output/schema.d.ts +1515 -0
  45. package/dist/output/schema.js +224 -0
  46. package/dist/output/writer.d.ts +31 -0
  47. package/dist/output/writer.js +120 -0
  48. package/dist/review-inputs/chunking.d.ts +29 -0
  49. package/dist/review-inputs/chunking.js +113 -0
  50. package/dist/review-inputs/diff-summary.d.ts +52 -0
  51. package/dist/review-inputs/diff-summary.js +83 -0
  52. package/dist/review-inputs/file-patterns.d.ts +40 -0
  53. package/dist/review-inputs/file-patterns.js +182 -0
  54. package/dist/review-inputs/filtering.d.ts +31 -0
  55. package/dist/review-inputs/filtering.js +53 -0
  56. package/dist/review-inputs/git-diff-provider.d.ts +2 -0
  57. package/dist/review-inputs/git-diff-provider.js +42 -0
  58. package/dist/review-inputs/index.d.ts +46 -0
  59. package/dist/review-inputs/index.js +122 -0
  60. package/dist/review-inputs/path-validation.d.ts +10 -0
  61. package/dist/review-inputs/path-validation.js +37 -0
  62. package/dist/review-inputs/surrounding-context.d.ts +35 -0
  63. package/dist/review-inputs/surrounding-context.js +180 -0
  64. package/dist/review-inputs/triage.d.ts +57 -0
  65. package/dist/review-inputs/triage.js +81 -0
  66. package/dist/reviewers/executor.d.ts +41 -0
  67. package/dist/reviewers/executor.js +357 -0
  68. package/dist/reviewers/findings-merge.d.ts +9 -0
  69. package/dist/reviewers/findings-merge.js +131 -0
  70. package/dist/reviewers/iteration.d.ts +17 -0
  71. package/dist/reviewers/iteration.js +95 -0
  72. package/dist/reviewers/persistence.d.ts +17 -0
  73. package/dist/reviewers/persistence.js +55 -0
  74. package/dist/reviewers/progress-tracker.d.ts +115 -0
  75. package/dist/reviewers/progress-tracker.js +194 -0
  76. package/dist/reviewers/prompt.d.ts +42 -0
  77. package/dist/reviewers/prompt.js +246 -0
  78. package/dist/reviewers/tool-call-tracker.d.ts +18 -0
  79. package/dist/reviewers/tool-call-tracker.js +40 -0
  80. package/dist/reviewers/types.d.ts +12 -0
  81. package/dist/reviewers/types.js +1 -0
  82. package/dist/reviewers/validation-rules.d.ts +27 -0
  83. package/dist/reviewers/validation-rules.js +189 -0
  84. package/package.json +79 -0
@@ -0,0 +1,1515 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Individual finding schema.
4
+ * Matches the finding structure from reviewerFindingsSchema.
5
+ */
6
+ /**
7
+ * Azure JSON Schema validator workaround:
8
+ * Azure incorrectly requires ALL properties to be in the 'required' array, even optional ones.
9
+ * To work around this, we make optional fields nullable and required, then filter nulls in post-processing.
10
+ * This satisfies Azure's broken validator while maintaining optional semantics.
11
+ */
12
+ export declare const findingSchema: z.ZodObject<{
13
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
14
+ title: z.ZodString;
15
+ description: z.ZodString;
16
+ rationale: z.ZodString;
17
+ suggestedFix: z.ZodNullable<z.ZodString>;
18
+ file: z.ZodNullable<z.ZodString>;
19
+ line: z.ZodNullable<z.ZodNumber>;
20
+ endLine: z.ZodNullable<z.ZodNumber>;
21
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
22
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
23
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ title: string;
26
+ description: string;
27
+ severity: "info" | "critical" | "major" | "minor" | "pass";
28
+ rationale: string;
29
+ suggestedFix: string | null;
30
+ file: string | null;
31
+ line: number | null;
32
+ endLine: number | null;
33
+ contextIdsUsed: string[] | null;
34
+ contextIdsViolated: string[] | null;
35
+ contextTitles: string[] | null;
36
+ }, {
37
+ title: string;
38
+ description: string;
39
+ severity: "info" | "critical" | "major" | "minor" | "pass";
40
+ rationale: string;
41
+ suggestedFix: string | null;
42
+ file: string | null;
43
+ line: number | null;
44
+ endLine: number | null;
45
+ contextIdsUsed: string[] | null;
46
+ contextIdsViolated: string[] | null;
47
+ contextTitles: string[] | null;
48
+ }>;
49
+ export type Finding = z.infer<typeof findingSchema>;
50
+ /**
51
+ * Normalize LLM finding shape for provider/schema compatibility.
52
+ * Azure requires all properties to be present in JSON schema outputs, so
53
+ * nullable fields must remain present (as null) rather than being removed.
54
+ * Empty attribution arrays are normalized to null for consistency.
55
+ */
56
+ export declare const cleanFinding: (finding: Finding) => Finding;
57
+ /**
58
+ * Reviewer findings schema.
59
+ * Used by agentic executor output.
60
+ */
61
+ export declare const reviewerFindingsSchema: z.ZodObject<{
62
+ findings: z.ZodArray<z.ZodObject<{
63
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
64
+ title: z.ZodString;
65
+ description: z.ZodString;
66
+ rationale: z.ZodString;
67
+ suggestedFix: z.ZodNullable<z.ZodString>;
68
+ file: z.ZodNullable<z.ZodString>;
69
+ line: z.ZodNullable<z.ZodNumber>;
70
+ endLine: z.ZodNullable<z.ZodNumber>;
71
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
72
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
73
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ title: string;
76
+ description: string;
77
+ severity: "info" | "critical" | "major" | "minor" | "pass";
78
+ rationale: string;
79
+ suggestedFix: string | null;
80
+ file: string | null;
81
+ line: number | null;
82
+ endLine: number | null;
83
+ contextIdsUsed: string[] | null;
84
+ contextIdsViolated: string[] | null;
85
+ contextTitles: string[] | null;
86
+ }, {
87
+ title: string;
88
+ description: string;
89
+ severity: "info" | "critical" | "major" | "minor" | "pass";
90
+ rationale: string;
91
+ suggestedFix: string | null;
92
+ file: string | null;
93
+ line: number | null;
94
+ endLine: number | null;
95
+ contextIdsUsed: string[] | null;
96
+ contextIdsViolated: string[] | null;
97
+ contextTitles: string[] | null;
98
+ }>, "many">;
99
+ validated: z.ZodBoolean;
100
+ notes: z.ZodNullable<z.ZodString>;
101
+ }, "strip", z.ZodTypeAny, {
102
+ findings: {
103
+ title: string;
104
+ description: string;
105
+ severity: "info" | "critical" | "major" | "minor" | "pass";
106
+ rationale: string;
107
+ suggestedFix: string | null;
108
+ file: string | null;
109
+ line: number | null;
110
+ endLine: number | null;
111
+ contextIdsUsed: string[] | null;
112
+ contextIdsViolated: string[] | null;
113
+ contextTitles: string[] | null;
114
+ }[];
115
+ validated: boolean;
116
+ notes: string | null;
117
+ }, {
118
+ findings: {
119
+ title: string;
120
+ description: string;
121
+ severity: "info" | "critical" | "major" | "minor" | "pass";
122
+ rationale: string;
123
+ suggestedFix: string | null;
124
+ file: string | null;
125
+ line: number | null;
126
+ endLine: number | null;
127
+ contextIdsUsed: string[] | null;
128
+ contextIdsViolated: string[] | null;
129
+ contextTitles: string[] | null;
130
+ }[];
131
+ validated: boolean;
132
+ notes: string | null;
133
+ }>;
134
+ export type ReviewerFindings = z.infer<typeof reviewerFindingsSchema>;
135
+ /**
136
+ * Per-reviewer result schema.
137
+ * Includes reviewer name and their findings.
138
+ */
139
+ export declare const reviewerResultSchema: z.ZodObject<{
140
+ reviewer: z.ZodString;
141
+ findings: z.ZodArray<z.ZodObject<{
142
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
143
+ title: z.ZodString;
144
+ description: z.ZodString;
145
+ rationale: z.ZodString;
146
+ suggestedFix: z.ZodNullable<z.ZodString>;
147
+ file: z.ZodNullable<z.ZodString>;
148
+ line: z.ZodNullable<z.ZodNumber>;
149
+ endLine: z.ZodNullable<z.ZodNumber>;
150
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
151
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
152
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ title: string;
155
+ description: string;
156
+ severity: "info" | "critical" | "major" | "minor" | "pass";
157
+ rationale: string;
158
+ suggestedFix: string | null;
159
+ file: string | null;
160
+ line: number | null;
161
+ endLine: number | null;
162
+ contextIdsUsed: string[] | null;
163
+ contextIdsViolated: string[] | null;
164
+ contextTitles: string[] | null;
165
+ }, {
166
+ title: string;
167
+ description: string;
168
+ severity: "info" | "critical" | "major" | "minor" | "pass";
169
+ rationale: string;
170
+ suggestedFix: string | null;
171
+ file: string | null;
172
+ line: number | null;
173
+ endLine: number | null;
174
+ contextIdsUsed: string[] | null;
175
+ contextIdsViolated: string[] | null;
176
+ contextTitles: string[] | null;
177
+ }>, "many">;
178
+ validated: z.ZodBoolean;
179
+ notes: z.ZodOptional<z.ZodString>;
180
+ }, "strip", z.ZodTypeAny, {
181
+ findings: {
182
+ title: string;
183
+ description: string;
184
+ severity: "info" | "critical" | "major" | "minor" | "pass";
185
+ rationale: string;
186
+ suggestedFix: string | null;
187
+ file: string | null;
188
+ line: number | null;
189
+ endLine: number | null;
190
+ contextIdsUsed: string[] | null;
191
+ contextIdsViolated: string[] | null;
192
+ contextTitles: string[] | null;
193
+ }[];
194
+ validated: boolean;
195
+ reviewer: string;
196
+ notes?: string | undefined;
197
+ }, {
198
+ findings: {
199
+ title: string;
200
+ description: string;
201
+ severity: "info" | "critical" | "major" | "minor" | "pass";
202
+ rationale: string;
203
+ suggestedFix: string | null;
204
+ file: string | null;
205
+ line: number | null;
206
+ endLine: number | null;
207
+ contextIdsUsed: string[] | null;
208
+ contextIdsViolated: string[] | null;
209
+ contextTitles: string[] | null;
210
+ }[];
211
+ validated: boolean;
212
+ reviewer: string;
213
+ notes?: string | undefined;
214
+ }>;
215
+ export type ReviewerResult = z.infer<typeof reviewerResultSchema>;
216
+ /**
217
+ * Overall review decision schema.
218
+ */
219
+ export declare const reviewDecisionSchema: z.ZodObject<{
220
+ decision: z.ZodEnum<["approve", "request-changes"]>;
221
+ summary: z.ZodString;
222
+ rationale: z.ZodString;
223
+ }, "strip", z.ZodTypeAny, {
224
+ rationale: string;
225
+ decision: "approve" | "request-changes";
226
+ summary: string;
227
+ }, {
228
+ rationale: string;
229
+ decision: "approve" | "request-changes";
230
+ summary: string;
231
+ }>;
232
+ export type ReviewDecision = z.infer<typeof reviewDecisionSchema>;
233
+ /**
234
+ * Summary statistics schema.
235
+ */
236
+ export declare const summarySchema: z.ZodObject<{
237
+ totalFindings: z.ZodNumber;
238
+ bySeverity: z.ZodObject<{
239
+ critical: z.ZodNumber;
240
+ major: z.ZodNumber;
241
+ minor: z.ZodNumber;
242
+ info: z.ZodNumber;
243
+ pass: z.ZodNumber;
244
+ }, "strip", z.ZodTypeAny, {
245
+ info: number;
246
+ critical: number;
247
+ major: number;
248
+ minor: number;
249
+ pass: number;
250
+ }, {
251
+ info: number;
252
+ critical: number;
253
+ major: number;
254
+ minor: number;
255
+ pass: number;
256
+ }>;
257
+ byReviewer: z.ZodRecord<z.ZodString, z.ZodNumber>;
258
+ }, "strip", z.ZodTypeAny, {
259
+ totalFindings: number;
260
+ bySeverity: {
261
+ info: number;
262
+ critical: number;
263
+ major: number;
264
+ minor: number;
265
+ pass: number;
266
+ };
267
+ byReviewer: Record<string, number>;
268
+ }, {
269
+ totalFindings: number;
270
+ bySeverity: {
271
+ info: number;
272
+ critical: number;
273
+ major: number;
274
+ minor: number;
275
+ pass: number;
276
+ };
277
+ byReviewer: Record<string, number>;
278
+ }>;
279
+ export type Summary = z.infer<typeof summarySchema>;
280
+ /**
281
+ * Review metadata schema.
282
+ */
283
+ export declare const metadataSchema: z.ZodObject<{
284
+ timestamp: z.ZodString;
285
+ mode: z.ZodEnum<["diff", "file-list"]>;
286
+ fileCount: z.ZodNumber;
287
+ }, "strip", z.ZodTypeAny, {
288
+ timestamp: string;
289
+ mode: "diff" | "file-list";
290
+ fileCount: number;
291
+ }, {
292
+ timestamp: string;
293
+ mode: "diff" | "file-list";
294
+ fileCount: number;
295
+ }>;
296
+ export type Metadata = z.infer<typeof metadataSchema>;
297
+ /**
298
+ * Complete aggregated review result schema.
299
+ */
300
+ export declare const reviewResultSchema: z.ZodObject<{
301
+ metadata: z.ZodObject<{
302
+ timestamp: z.ZodString;
303
+ mode: z.ZodEnum<["diff", "file-list"]>;
304
+ fileCount: z.ZodNumber;
305
+ }, "strip", z.ZodTypeAny, {
306
+ timestamp: string;
307
+ mode: "diff" | "file-list";
308
+ fileCount: number;
309
+ }, {
310
+ timestamp: string;
311
+ mode: "diff" | "file-list";
312
+ fileCount: number;
313
+ }>;
314
+ understanding: z.ZodString;
315
+ decision: z.ZodObject<{
316
+ decision: z.ZodEnum<["approve", "request-changes"]>;
317
+ summary: z.ZodString;
318
+ rationale: z.ZodString;
319
+ }, "strip", z.ZodTypeAny, {
320
+ rationale: string;
321
+ decision: "approve" | "request-changes";
322
+ summary: string;
323
+ }, {
324
+ rationale: string;
325
+ decision: "approve" | "request-changes";
326
+ summary: string;
327
+ }>;
328
+ failures: z.ZodOptional<z.ZodArray<z.ZodObject<{
329
+ reviewer: z.ZodString;
330
+ message: z.ZodString;
331
+ }, "strip", z.ZodTypeAny, {
332
+ message: string;
333
+ reviewer: string;
334
+ }, {
335
+ message: string;
336
+ reviewer: string;
337
+ }>, "many">>;
338
+ synthesis: z.ZodOptional<z.ZodLazy<z.ZodObject<{
339
+ findings: z.ZodArray<z.ZodObject<{
340
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
341
+ title: z.ZodString;
342
+ description: z.ZodString;
343
+ rationale: z.ZodString;
344
+ suggestedFix: z.ZodNullable<z.ZodString>;
345
+ file: z.ZodNullable<z.ZodString>;
346
+ line: z.ZodNullable<z.ZodNumber>;
347
+ endLine: z.ZodNullable<z.ZodNumber>;
348
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
349
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
350
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
351
+ } & {
352
+ sourceReviewers: z.ZodArray<z.ZodString, "many">;
353
+ }, "strip", z.ZodTypeAny, {
354
+ title: string;
355
+ description: string;
356
+ severity: "info" | "critical" | "major" | "minor" | "pass";
357
+ rationale: string;
358
+ suggestedFix: string | null;
359
+ file: string | null;
360
+ line: number | null;
361
+ endLine: number | null;
362
+ contextIdsUsed: string[] | null;
363
+ contextIdsViolated: string[] | null;
364
+ contextTitles: string[] | null;
365
+ sourceReviewers: string[];
366
+ }, {
367
+ title: string;
368
+ description: string;
369
+ severity: "info" | "critical" | "major" | "minor" | "pass";
370
+ rationale: string;
371
+ suggestedFix: string | null;
372
+ file: string | null;
373
+ line: number | null;
374
+ endLine: number | null;
375
+ contextIdsUsed: string[] | null;
376
+ contextIdsViolated: string[] | null;
377
+ contextTitles: string[] | null;
378
+ sourceReviewers: string[];
379
+ }>, "many">;
380
+ contradictions: z.ZodArray<z.ZodObject<{
381
+ findingA: z.ZodString;
382
+ findingB: z.ZodString;
383
+ reviewerA: z.ZodString;
384
+ reviewerB: z.ZodString;
385
+ context: z.ZodString;
386
+ }, "strip", z.ZodTypeAny, {
387
+ context: string;
388
+ findingA: string;
389
+ findingB: string;
390
+ reviewerA: string;
391
+ reviewerB: string;
392
+ }, {
393
+ context: string;
394
+ findingA: string;
395
+ findingB: string;
396
+ reviewerA: string;
397
+ reviewerB: string;
398
+ }>, "many">;
399
+ compoundRisks: z.ZodArray<z.ZodObject<{
400
+ description: z.ZodString;
401
+ affectedFindings: z.ZodArray<z.ZodString, "many">;
402
+ severity: z.ZodEnum<["critical", "major", "minor", "info"]>;
403
+ }, "strip", z.ZodTypeAny, {
404
+ description: string;
405
+ severity: "info" | "critical" | "major" | "minor";
406
+ affectedFindings: string[];
407
+ }, {
408
+ description: string;
409
+ severity: "info" | "critical" | "major" | "minor";
410
+ affectedFindings: string[];
411
+ }>, "many">;
412
+ notes: z.ZodNullable<z.ZodString>;
413
+ }, "strip", z.ZodTypeAny, {
414
+ findings: {
415
+ title: string;
416
+ description: string;
417
+ severity: "info" | "critical" | "major" | "minor" | "pass";
418
+ rationale: string;
419
+ suggestedFix: string | null;
420
+ file: string | null;
421
+ line: number | null;
422
+ endLine: number | null;
423
+ contextIdsUsed: string[] | null;
424
+ contextIdsViolated: string[] | null;
425
+ contextTitles: string[] | null;
426
+ sourceReviewers: string[];
427
+ }[];
428
+ notes: string | null;
429
+ contradictions: {
430
+ context: string;
431
+ findingA: string;
432
+ findingB: string;
433
+ reviewerA: string;
434
+ reviewerB: string;
435
+ }[];
436
+ compoundRisks: {
437
+ description: string;
438
+ severity: "info" | "critical" | "major" | "minor";
439
+ affectedFindings: string[];
440
+ }[];
441
+ }, {
442
+ findings: {
443
+ title: string;
444
+ description: string;
445
+ severity: "info" | "critical" | "major" | "minor" | "pass";
446
+ rationale: string;
447
+ suggestedFix: string | null;
448
+ file: string | null;
449
+ line: number | null;
450
+ endLine: number | null;
451
+ contextIdsUsed: string[] | null;
452
+ contextIdsViolated: string[] | null;
453
+ contextTitles: string[] | null;
454
+ sourceReviewers: string[];
455
+ }[];
456
+ notes: string | null;
457
+ contradictions: {
458
+ context: string;
459
+ findingA: string;
460
+ findingB: string;
461
+ reviewerA: string;
462
+ reviewerB: string;
463
+ }[];
464
+ compoundRisks: {
465
+ description: string;
466
+ severity: "info" | "critical" | "major" | "minor";
467
+ affectedFindings: string[];
468
+ }[];
469
+ }>>>;
470
+ reviewers: z.ZodArray<z.ZodObject<{
471
+ reviewer: z.ZodString;
472
+ findings: z.ZodArray<z.ZodObject<{
473
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
474
+ title: z.ZodString;
475
+ description: z.ZodString;
476
+ rationale: z.ZodString;
477
+ suggestedFix: z.ZodNullable<z.ZodString>;
478
+ file: z.ZodNullable<z.ZodString>;
479
+ line: z.ZodNullable<z.ZodNumber>;
480
+ endLine: z.ZodNullable<z.ZodNumber>;
481
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
482
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
483
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
484
+ }, "strip", z.ZodTypeAny, {
485
+ title: string;
486
+ description: string;
487
+ severity: "info" | "critical" | "major" | "minor" | "pass";
488
+ rationale: string;
489
+ suggestedFix: string | null;
490
+ file: string | null;
491
+ line: number | null;
492
+ endLine: number | null;
493
+ contextIdsUsed: string[] | null;
494
+ contextIdsViolated: string[] | null;
495
+ contextTitles: string[] | null;
496
+ }, {
497
+ title: string;
498
+ description: string;
499
+ severity: "info" | "critical" | "major" | "minor" | "pass";
500
+ rationale: string;
501
+ suggestedFix: string | null;
502
+ file: string | null;
503
+ line: number | null;
504
+ endLine: number | null;
505
+ contextIdsUsed: string[] | null;
506
+ contextIdsViolated: string[] | null;
507
+ contextTitles: string[] | null;
508
+ }>, "many">;
509
+ validated: z.ZodBoolean;
510
+ notes: z.ZodOptional<z.ZodString>;
511
+ }, "strip", z.ZodTypeAny, {
512
+ findings: {
513
+ title: string;
514
+ description: string;
515
+ severity: "info" | "critical" | "major" | "minor" | "pass";
516
+ rationale: string;
517
+ suggestedFix: string | null;
518
+ file: string | null;
519
+ line: number | null;
520
+ endLine: number | null;
521
+ contextIdsUsed: string[] | null;
522
+ contextIdsViolated: string[] | null;
523
+ contextTitles: string[] | null;
524
+ }[];
525
+ validated: boolean;
526
+ reviewer: string;
527
+ notes?: string | undefined;
528
+ }, {
529
+ findings: {
530
+ title: string;
531
+ description: string;
532
+ severity: "info" | "critical" | "major" | "minor" | "pass";
533
+ rationale: string;
534
+ suggestedFix: string | null;
535
+ file: string | null;
536
+ line: number | null;
537
+ endLine: number | null;
538
+ contextIdsUsed: string[] | null;
539
+ contextIdsViolated: string[] | null;
540
+ contextTitles: string[] | null;
541
+ }[];
542
+ validated: boolean;
543
+ reviewer: string;
544
+ notes?: string | undefined;
545
+ }>, "many">;
546
+ summary: z.ZodObject<{
547
+ totalFindings: z.ZodNumber;
548
+ bySeverity: z.ZodObject<{
549
+ critical: z.ZodNumber;
550
+ major: z.ZodNumber;
551
+ minor: z.ZodNumber;
552
+ info: z.ZodNumber;
553
+ pass: z.ZodNumber;
554
+ }, "strip", z.ZodTypeAny, {
555
+ info: number;
556
+ critical: number;
557
+ major: number;
558
+ minor: number;
559
+ pass: number;
560
+ }, {
561
+ info: number;
562
+ critical: number;
563
+ major: number;
564
+ minor: number;
565
+ pass: number;
566
+ }>;
567
+ byReviewer: z.ZodRecord<z.ZodString, z.ZodNumber>;
568
+ }, "strip", z.ZodTypeAny, {
569
+ totalFindings: number;
570
+ bySeverity: {
571
+ info: number;
572
+ critical: number;
573
+ major: number;
574
+ minor: number;
575
+ pass: number;
576
+ };
577
+ byReviewer: Record<string, number>;
578
+ }, {
579
+ totalFindings: number;
580
+ bySeverity: {
581
+ info: number;
582
+ critical: number;
583
+ major: number;
584
+ minor: number;
585
+ pass: number;
586
+ };
587
+ byReviewer: Record<string, number>;
588
+ }>;
589
+ }, "strip", z.ZodTypeAny, {
590
+ decision: {
591
+ rationale: string;
592
+ decision: "approve" | "request-changes";
593
+ summary: string;
594
+ };
595
+ summary: {
596
+ totalFindings: number;
597
+ bySeverity: {
598
+ info: number;
599
+ critical: number;
600
+ major: number;
601
+ minor: number;
602
+ pass: number;
603
+ };
604
+ byReviewer: Record<string, number>;
605
+ };
606
+ metadata: {
607
+ timestamp: string;
608
+ mode: "diff" | "file-list";
609
+ fileCount: number;
610
+ };
611
+ understanding: string;
612
+ reviewers: {
613
+ findings: {
614
+ title: string;
615
+ description: string;
616
+ severity: "info" | "critical" | "major" | "minor" | "pass";
617
+ rationale: string;
618
+ suggestedFix: string | null;
619
+ file: string | null;
620
+ line: number | null;
621
+ endLine: number | null;
622
+ contextIdsUsed: string[] | null;
623
+ contextIdsViolated: string[] | null;
624
+ contextTitles: string[] | null;
625
+ }[];
626
+ validated: boolean;
627
+ reviewer: string;
628
+ notes?: string | undefined;
629
+ }[];
630
+ failures?: {
631
+ message: string;
632
+ reviewer: string;
633
+ }[] | undefined;
634
+ synthesis?: {
635
+ findings: {
636
+ title: string;
637
+ description: string;
638
+ severity: "info" | "critical" | "major" | "minor" | "pass";
639
+ rationale: string;
640
+ suggestedFix: string | null;
641
+ file: string | null;
642
+ line: number | null;
643
+ endLine: number | null;
644
+ contextIdsUsed: string[] | null;
645
+ contextIdsViolated: string[] | null;
646
+ contextTitles: string[] | null;
647
+ sourceReviewers: string[];
648
+ }[];
649
+ notes: string | null;
650
+ contradictions: {
651
+ context: string;
652
+ findingA: string;
653
+ findingB: string;
654
+ reviewerA: string;
655
+ reviewerB: string;
656
+ }[];
657
+ compoundRisks: {
658
+ description: string;
659
+ severity: "info" | "critical" | "major" | "minor";
660
+ affectedFindings: string[];
661
+ }[];
662
+ } | undefined;
663
+ }, {
664
+ decision: {
665
+ rationale: string;
666
+ decision: "approve" | "request-changes";
667
+ summary: string;
668
+ };
669
+ summary: {
670
+ totalFindings: number;
671
+ bySeverity: {
672
+ info: number;
673
+ critical: number;
674
+ major: number;
675
+ minor: number;
676
+ pass: number;
677
+ };
678
+ byReviewer: Record<string, number>;
679
+ };
680
+ metadata: {
681
+ timestamp: string;
682
+ mode: "diff" | "file-list";
683
+ fileCount: number;
684
+ };
685
+ understanding: string;
686
+ reviewers: {
687
+ findings: {
688
+ title: string;
689
+ description: string;
690
+ severity: "info" | "critical" | "major" | "minor" | "pass";
691
+ rationale: string;
692
+ suggestedFix: string | null;
693
+ file: string | null;
694
+ line: number | null;
695
+ endLine: number | null;
696
+ contextIdsUsed: string[] | null;
697
+ contextIdsViolated: string[] | null;
698
+ contextTitles: string[] | null;
699
+ }[];
700
+ validated: boolean;
701
+ reviewer: string;
702
+ notes?: string | undefined;
703
+ }[];
704
+ failures?: {
705
+ message: string;
706
+ reviewer: string;
707
+ }[] | undefined;
708
+ synthesis?: {
709
+ findings: {
710
+ title: string;
711
+ description: string;
712
+ severity: "info" | "critical" | "major" | "minor" | "pass";
713
+ rationale: string;
714
+ suggestedFix: string | null;
715
+ file: string | null;
716
+ line: number | null;
717
+ endLine: number | null;
718
+ contextIdsUsed: string[] | null;
719
+ contextIdsViolated: string[] | null;
720
+ contextTitles: string[] | null;
721
+ sourceReviewers: string[];
722
+ }[];
723
+ notes: string | null;
724
+ contradictions: {
725
+ context: string;
726
+ findingA: string;
727
+ findingB: string;
728
+ reviewerA: string;
729
+ reviewerB: string;
730
+ }[];
731
+ compoundRisks: {
732
+ description: string;
733
+ severity: "info" | "critical" | "major" | "minor";
734
+ affectedFindings: string[];
735
+ }[];
736
+ } | undefined;
737
+ }>;
738
+ export type ReviewResult = z.infer<typeof reviewResultSchema>;
739
+ /**
740
+ * Token usage schema for a single operation (iteration, chunk, etc.)
741
+ */
742
+ export declare const tokenUsageSchema: z.ZodObject<{
743
+ promptTokens: z.ZodNumber;
744
+ completionTokens: z.ZodNumber;
745
+ totalTokens: z.ZodNumber;
746
+ }, "strip", z.ZodTypeAny, {
747
+ promptTokens: number;
748
+ completionTokens: number;
749
+ totalTokens: number;
750
+ }, {
751
+ promptTokens: number;
752
+ completionTokens: number;
753
+ totalTokens: number;
754
+ }>;
755
+ export type TokenUsage = z.infer<typeof tokenUsageSchema>;
756
+ /**
757
+ * Per-chunk token usage schema.
758
+ */
759
+ export declare const chunkTokenUsageSchema: z.ZodObject<{
760
+ chunkIndex: z.ZodNumber;
761
+ usage: z.ZodObject<{
762
+ promptTokens: z.ZodNumber;
763
+ completionTokens: z.ZodNumber;
764
+ totalTokens: z.ZodNumber;
765
+ }, "strip", z.ZodTypeAny, {
766
+ promptTokens: number;
767
+ completionTokens: number;
768
+ totalTokens: number;
769
+ }, {
770
+ promptTokens: number;
771
+ completionTokens: number;
772
+ totalTokens: number;
773
+ }>;
774
+ }, "strip", z.ZodTypeAny, {
775
+ chunkIndex: number;
776
+ usage: {
777
+ promptTokens: number;
778
+ completionTokens: number;
779
+ totalTokens: number;
780
+ };
781
+ }, {
782
+ chunkIndex: number;
783
+ usage: {
784
+ promptTokens: number;
785
+ completionTokens: number;
786
+ totalTokens: number;
787
+ };
788
+ }>;
789
+ export type ChunkTokenUsage = z.infer<typeof chunkTokenUsageSchema>;
790
+ /**
791
+ * Per-iteration token usage schema.
792
+ */
793
+ export declare const iterationTokenUsageSchema: z.ZodObject<{
794
+ iteration: z.ZodNumber;
795
+ usage: z.ZodObject<{
796
+ promptTokens: z.ZodNumber;
797
+ completionTokens: z.ZodNumber;
798
+ totalTokens: z.ZodNumber;
799
+ }, "strip", z.ZodTypeAny, {
800
+ promptTokens: number;
801
+ completionTokens: number;
802
+ totalTokens: number;
803
+ }, {
804
+ promptTokens: number;
805
+ completionTokens: number;
806
+ totalTokens: number;
807
+ }>;
808
+ chunks: z.ZodOptional<z.ZodArray<z.ZodObject<{
809
+ chunkIndex: z.ZodNumber;
810
+ usage: z.ZodObject<{
811
+ promptTokens: z.ZodNumber;
812
+ completionTokens: z.ZodNumber;
813
+ totalTokens: z.ZodNumber;
814
+ }, "strip", z.ZodTypeAny, {
815
+ promptTokens: number;
816
+ completionTokens: number;
817
+ totalTokens: number;
818
+ }, {
819
+ promptTokens: number;
820
+ completionTokens: number;
821
+ totalTokens: number;
822
+ }>;
823
+ }, "strip", z.ZodTypeAny, {
824
+ chunkIndex: number;
825
+ usage: {
826
+ promptTokens: number;
827
+ completionTokens: number;
828
+ totalTokens: number;
829
+ };
830
+ }, {
831
+ chunkIndex: number;
832
+ usage: {
833
+ promptTokens: number;
834
+ completionTokens: number;
835
+ totalTokens: number;
836
+ };
837
+ }>, "many">>;
838
+ }, "strip", z.ZodTypeAny, {
839
+ usage: {
840
+ promptTokens: number;
841
+ completionTokens: number;
842
+ totalTokens: number;
843
+ };
844
+ iteration: number;
845
+ chunks?: {
846
+ chunkIndex: number;
847
+ usage: {
848
+ promptTokens: number;
849
+ completionTokens: number;
850
+ totalTokens: number;
851
+ };
852
+ }[] | undefined;
853
+ }, {
854
+ usage: {
855
+ promptTokens: number;
856
+ completionTokens: number;
857
+ totalTokens: number;
858
+ };
859
+ iteration: number;
860
+ chunks?: {
861
+ chunkIndex: number;
862
+ usage: {
863
+ promptTokens: number;
864
+ completionTokens: number;
865
+ totalTokens: number;
866
+ };
867
+ }[] | undefined;
868
+ }>;
869
+ export type IterationTokenUsage = z.infer<typeof iterationTokenUsageSchema>;
870
+ /**
871
+ * Per-reviewer token budget metrics schema.
872
+ */
873
+ export declare const reviewerTokenMetricsSchema: z.ZodObject<{
874
+ reviewer: z.ZodString;
875
+ totalUsage: z.ZodObject<{
876
+ promptTokens: z.ZodNumber;
877
+ completionTokens: z.ZodNumber;
878
+ totalTokens: z.ZodNumber;
879
+ }, "strip", z.ZodTypeAny, {
880
+ promptTokens: number;
881
+ completionTokens: number;
882
+ totalTokens: number;
883
+ }, {
884
+ promptTokens: number;
885
+ completionTokens: number;
886
+ totalTokens: number;
887
+ }>;
888
+ iterations: z.ZodArray<z.ZodObject<{
889
+ iteration: z.ZodNumber;
890
+ usage: z.ZodObject<{
891
+ promptTokens: z.ZodNumber;
892
+ completionTokens: z.ZodNumber;
893
+ totalTokens: z.ZodNumber;
894
+ }, "strip", z.ZodTypeAny, {
895
+ promptTokens: number;
896
+ completionTokens: number;
897
+ totalTokens: number;
898
+ }, {
899
+ promptTokens: number;
900
+ completionTokens: number;
901
+ totalTokens: number;
902
+ }>;
903
+ chunks: z.ZodOptional<z.ZodArray<z.ZodObject<{
904
+ chunkIndex: z.ZodNumber;
905
+ usage: z.ZodObject<{
906
+ promptTokens: z.ZodNumber;
907
+ completionTokens: z.ZodNumber;
908
+ totalTokens: z.ZodNumber;
909
+ }, "strip", z.ZodTypeAny, {
910
+ promptTokens: number;
911
+ completionTokens: number;
912
+ totalTokens: number;
913
+ }, {
914
+ promptTokens: number;
915
+ completionTokens: number;
916
+ totalTokens: number;
917
+ }>;
918
+ }, "strip", z.ZodTypeAny, {
919
+ chunkIndex: number;
920
+ usage: {
921
+ promptTokens: number;
922
+ completionTokens: number;
923
+ totalTokens: number;
924
+ };
925
+ }, {
926
+ chunkIndex: number;
927
+ usage: {
928
+ promptTokens: number;
929
+ completionTokens: number;
930
+ totalTokens: number;
931
+ };
932
+ }>, "many">>;
933
+ }, "strip", z.ZodTypeAny, {
934
+ usage: {
935
+ promptTokens: number;
936
+ completionTokens: number;
937
+ totalTokens: number;
938
+ };
939
+ iteration: number;
940
+ chunks?: {
941
+ chunkIndex: number;
942
+ usage: {
943
+ promptTokens: number;
944
+ completionTokens: number;
945
+ totalTokens: number;
946
+ };
947
+ }[] | undefined;
948
+ }, {
949
+ usage: {
950
+ promptTokens: number;
951
+ completionTokens: number;
952
+ totalTokens: number;
953
+ };
954
+ iteration: number;
955
+ chunks?: {
956
+ chunkIndex: number;
957
+ usage: {
958
+ promptTokens: number;
959
+ completionTokens: number;
960
+ totalTokens: number;
961
+ };
962
+ }[] | undefined;
963
+ }>, "many">;
964
+ }, "strip", z.ZodTypeAny, {
965
+ reviewer: string;
966
+ totalUsage: {
967
+ promptTokens: number;
968
+ completionTokens: number;
969
+ totalTokens: number;
970
+ };
971
+ iterations: {
972
+ usage: {
973
+ promptTokens: number;
974
+ completionTokens: number;
975
+ totalTokens: number;
976
+ };
977
+ iteration: number;
978
+ chunks?: {
979
+ chunkIndex: number;
980
+ usage: {
981
+ promptTokens: number;
982
+ completionTokens: number;
983
+ totalTokens: number;
984
+ };
985
+ }[] | undefined;
986
+ }[];
987
+ }, {
988
+ reviewer: string;
989
+ totalUsage: {
990
+ promptTokens: number;
991
+ completionTokens: number;
992
+ totalTokens: number;
993
+ };
994
+ iterations: {
995
+ usage: {
996
+ promptTokens: number;
997
+ completionTokens: number;
998
+ totalTokens: number;
999
+ };
1000
+ iteration: number;
1001
+ chunks?: {
1002
+ chunkIndex: number;
1003
+ usage: {
1004
+ promptTokens: number;
1005
+ completionTokens: number;
1006
+ totalTokens: number;
1007
+ };
1008
+ }[] | undefined;
1009
+ }[];
1010
+ }>;
1011
+ export type ReviewerTokenMetrics = z.infer<typeof reviewerTokenMetricsSchema>;
1012
+ /**
1013
+ * Aggregation token usage schema.
1014
+ */
1015
+ export declare const aggregationTokenUsageSchema: z.ZodObject<{
1016
+ operation: z.ZodString;
1017
+ usage: z.ZodObject<{
1018
+ promptTokens: z.ZodNumber;
1019
+ completionTokens: z.ZodNumber;
1020
+ totalTokens: z.ZodNumber;
1021
+ }, "strip", z.ZodTypeAny, {
1022
+ promptTokens: number;
1023
+ completionTokens: number;
1024
+ totalTokens: number;
1025
+ }, {
1026
+ promptTokens: number;
1027
+ completionTokens: number;
1028
+ totalTokens: number;
1029
+ }>;
1030
+ }, "strip", z.ZodTypeAny, {
1031
+ usage: {
1032
+ promptTokens: number;
1033
+ completionTokens: number;
1034
+ totalTokens: number;
1035
+ };
1036
+ operation: string;
1037
+ }, {
1038
+ usage: {
1039
+ promptTokens: number;
1040
+ completionTokens: number;
1041
+ totalTokens: number;
1042
+ };
1043
+ operation: string;
1044
+ }>;
1045
+ export type AggregationTokenUsage = z.infer<typeof aggregationTokenUsageSchema>;
1046
+ /**
1047
+ * Complete token budget metrics schema.
1048
+ */
1049
+ export declare const tokenBudgetMetricsSchema: z.ZodObject<{
1050
+ reviewers: z.ZodArray<z.ZodObject<{
1051
+ reviewer: z.ZodString;
1052
+ totalUsage: z.ZodObject<{
1053
+ promptTokens: z.ZodNumber;
1054
+ completionTokens: z.ZodNumber;
1055
+ totalTokens: z.ZodNumber;
1056
+ }, "strip", z.ZodTypeAny, {
1057
+ promptTokens: number;
1058
+ completionTokens: number;
1059
+ totalTokens: number;
1060
+ }, {
1061
+ promptTokens: number;
1062
+ completionTokens: number;
1063
+ totalTokens: number;
1064
+ }>;
1065
+ iterations: z.ZodArray<z.ZodObject<{
1066
+ iteration: z.ZodNumber;
1067
+ usage: z.ZodObject<{
1068
+ promptTokens: z.ZodNumber;
1069
+ completionTokens: z.ZodNumber;
1070
+ totalTokens: z.ZodNumber;
1071
+ }, "strip", z.ZodTypeAny, {
1072
+ promptTokens: number;
1073
+ completionTokens: number;
1074
+ totalTokens: number;
1075
+ }, {
1076
+ promptTokens: number;
1077
+ completionTokens: number;
1078
+ totalTokens: number;
1079
+ }>;
1080
+ chunks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1081
+ chunkIndex: z.ZodNumber;
1082
+ usage: z.ZodObject<{
1083
+ promptTokens: z.ZodNumber;
1084
+ completionTokens: z.ZodNumber;
1085
+ totalTokens: z.ZodNumber;
1086
+ }, "strip", z.ZodTypeAny, {
1087
+ promptTokens: number;
1088
+ completionTokens: number;
1089
+ totalTokens: number;
1090
+ }, {
1091
+ promptTokens: number;
1092
+ completionTokens: number;
1093
+ totalTokens: number;
1094
+ }>;
1095
+ }, "strip", z.ZodTypeAny, {
1096
+ chunkIndex: number;
1097
+ usage: {
1098
+ promptTokens: number;
1099
+ completionTokens: number;
1100
+ totalTokens: number;
1101
+ };
1102
+ }, {
1103
+ chunkIndex: number;
1104
+ usage: {
1105
+ promptTokens: number;
1106
+ completionTokens: number;
1107
+ totalTokens: number;
1108
+ };
1109
+ }>, "many">>;
1110
+ }, "strip", z.ZodTypeAny, {
1111
+ usage: {
1112
+ promptTokens: number;
1113
+ completionTokens: number;
1114
+ totalTokens: number;
1115
+ };
1116
+ iteration: number;
1117
+ chunks?: {
1118
+ chunkIndex: number;
1119
+ usage: {
1120
+ promptTokens: number;
1121
+ completionTokens: number;
1122
+ totalTokens: number;
1123
+ };
1124
+ }[] | undefined;
1125
+ }, {
1126
+ usage: {
1127
+ promptTokens: number;
1128
+ completionTokens: number;
1129
+ totalTokens: number;
1130
+ };
1131
+ iteration: number;
1132
+ chunks?: {
1133
+ chunkIndex: number;
1134
+ usage: {
1135
+ promptTokens: number;
1136
+ completionTokens: number;
1137
+ totalTokens: number;
1138
+ };
1139
+ }[] | undefined;
1140
+ }>, "many">;
1141
+ }, "strip", z.ZodTypeAny, {
1142
+ reviewer: string;
1143
+ totalUsage: {
1144
+ promptTokens: number;
1145
+ completionTokens: number;
1146
+ totalTokens: number;
1147
+ };
1148
+ iterations: {
1149
+ usage: {
1150
+ promptTokens: number;
1151
+ completionTokens: number;
1152
+ totalTokens: number;
1153
+ };
1154
+ iteration: number;
1155
+ chunks?: {
1156
+ chunkIndex: number;
1157
+ usage: {
1158
+ promptTokens: number;
1159
+ completionTokens: number;
1160
+ totalTokens: number;
1161
+ };
1162
+ }[] | undefined;
1163
+ }[];
1164
+ }, {
1165
+ reviewer: string;
1166
+ totalUsage: {
1167
+ promptTokens: number;
1168
+ completionTokens: number;
1169
+ totalTokens: number;
1170
+ };
1171
+ iterations: {
1172
+ usage: {
1173
+ promptTokens: number;
1174
+ completionTokens: number;
1175
+ totalTokens: number;
1176
+ };
1177
+ iteration: number;
1178
+ chunks?: {
1179
+ chunkIndex: number;
1180
+ usage: {
1181
+ promptTokens: number;
1182
+ completionTokens: number;
1183
+ totalTokens: number;
1184
+ };
1185
+ }[] | undefined;
1186
+ }[];
1187
+ }>, "many">;
1188
+ aggregation: z.ZodOptional<z.ZodArray<z.ZodObject<{
1189
+ operation: z.ZodString;
1190
+ usage: z.ZodObject<{
1191
+ promptTokens: z.ZodNumber;
1192
+ completionTokens: z.ZodNumber;
1193
+ totalTokens: z.ZodNumber;
1194
+ }, "strip", z.ZodTypeAny, {
1195
+ promptTokens: number;
1196
+ completionTokens: number;
1197
+ totalTokens: number;
1198
+ }, {
1199
+ promptTokens: number;
1200
+ completionTokens: number;
1201
+ totalTokens: number;
1202
+ }>;
1203
+ }, "strip", z.ZodTypeAny, {
1204
+ usage: {
1205
+ promptTokens: number;
1206
+ completionTokens: number;
1207
+ totalTokens: number;
1208
+ };
1209
+ operation: string;
1210
+ }, {
1211
+ usage: {
1212
+ promptTokens: number;
1213
+ completionTokens: number;
1214
+ totalTokens: number;
1215
+ };
1216
+ operation: string;
1217
+ }>, "many">>;
1218
+ totalUsage: z.ZodObject<{
1219
+ promptTokens: z.ZodNumber;
1220
+ completionTokens: z.ZodNumber;
1221
+ totalTokens: z.ZodNumber;
1222
+ }, "strip", z.ZodTypeAny, {
1223
+ promptTokens: number;
1224
+ completionTokens: number;
1225
+ totalTokens: number;
1226
+ }, {
1227
+ promptTokens: number;
1228
+ completionTokens: number;
1229
+ totalTokens: number;
1230
+ }>;
1231
+ }, "strip", z.ZodTypeAny, {
1232
+ reviewers: {
1233
+ reviewer: string;
1234
+ totalUsage: {
1235
+ promptTokens: number;
1236
+ completionTokens: number;
1237
+ totalTokens: number;
1238
+ };
1239
+ iterations: {
1240
+ usage: {
1241
+ promptTokens: number;
1242
+ completionTokens: number;
1243
+ totalTokens: number;
1244
+ };
1245
+ iteration: number;
1246
+ chunks?: {
1247
+ chunkIndex: number;
1248
+ usage: {
1249
+ promptTokens: number;
1250
+ completionTokens: number;
1251
+ totalTokens: number;
1252
+ };
1253
+ }[] | undefined;
1254
+ }[];
1255
+ }[];
1256
+ totalUsage: {
1257
+ promptTokens: number;
1258
+ completionTokens: number;
1259
+ totalTokens: number;
1260
+ };
1261
+ aggregation?: {
1262
+ usage: {
1263
+ promptTokens: number;
1264
+ completionTokens: number;
1265
+ totalTokens: number;
1266
+ };
1267
+ operation: string;
1268
+ }[] | undefined;
1269
+ }, {
1270
+ reviewers: {
1271
+ reviewer: string;
1272
+ totalUsage: {
1273
+ promptTokens: number;
1274
+ completionTokens: number;
1275
+ totalTokens: number;
1276
+ };
1277
+ iterations: {
1278
+ usage: {
1279
+ promptTokens: number;
1280
+ completionTokens: number;
1281
+ totalTokens: number;
1282
+ };
1283
+ iteration: number;
1284
+ chunks?: {
1285
+ chunkIndex: number;
1286
+ usage: {
1287
+ promptTokens: number;
1288
+ completionTokens: number;
1289
+ totalTokens: number;
1290
+ };
1291
+ }[] | undefined;
1292
+ }[];
1293
+ }[];
1294
+ totalUsage: {
1295
+ promptTokens: number;
1296
+ completionTokens: number;
1297
+ totalTokens: number;
1298
+ };
1299
+ aggregation?: {
1300
+ usage: {
1301
+ promptTokens: number;
1302
+ completionTokens: number;
1303
+ totalTokens: number;
1304
+ };
1305
+ operation: string;
1306
+ }[] | undefined;
1307
+ }>;
1308
+ export type TokenBudgetMetrics = z.infer<typeof tokenBudgetMetricsSchema>;
1309
+ /**
1310
+ * Synthesized finding schema.
1311
+ * Includes source reviewer attribution for deduplicated findings.
1312
+ */
1313
+ export declare const synthesizedFindingSchema: z.ZodObject<{
1314
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
1315
+ title: z.ZodString;
1316
+ description: z.ZodString;
1317
+ rationale: z.ZodString;
1318
+ suggestedFix: z.ZodNullable<z.ZodString>;
1319
+ file: z.ZodNullable<z.ZodString>;
1320
+ line: z.ZodNullable<z.ZodNumber>;
1321
+ endLine: z.ZodNullable<z.ZodNumber>;
1322
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1323
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1324
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1325
+ } & {
1326
+ sourceReviewers: z.ZodArray<z.ZodString, "many">;
1327
+ }, "strip", z.ZodTypeAny, {
1328
+ title: string;
1329
+ description: string;
1330
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1331
+ rationale: string;
1332
+ suggestedFix: string | null;
1333
+ file: string | null;
1334
+ line: number | null;
1335
+ endLine: number | null;
1336
+ contextIdsUsed: string[] | null;
1337
+ contextIdsViolated: string[] | null;
1338
+ contextTitles: string[] | null;
1339
+ sourceReviewers: string[];
1340
+ }, {
1341
+ title: string;
1342
+ description: string;
1343
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1344
+ rationale: string;
1345
+ suggestedFix: string | null;
1346
+ file: string | null;
1347
+ line: number | null;
1348
+ endLine: number | null;
1349
+ contextIdsUsed: string[] | null;
1350
+ contextIdsViolated: string[] | null;
1351
+ contextTitles: string[] | null;
1352
+ sourceReviewers: string[];
1353
+ }>;
1354
+ export type SynthesizedFinding = z.infer<typeof synthesizedFindingSchema>;
1355
+ /**
1356
+ * Contradiction schema.
1357
+ * Flags when reviewers disagree about the same issue.
1358
+ */
1359
+ export declare const contradictionSchema: z.ZodObject<{
1360
+ findingA: z.ZodString;
1361
+ findingB: z.ZodString;
1362
+ reviewerA: z.ZodString;
1363
+ reviewerB: z.ZodString;
1364
+ context: z.ZodString;
1365
+ }, "strip", z.ZodTypeAny, {
1366
+ context: string;
1367
+ findingA: string;
1368
+ findingB: string;
1369
+ reviewerA: string;
1370
+ reviewerB: string;
1371
+ }, {
1372
+ context: string;
1373
+ findingA: string;
1374
+ findingB: string;
1375
+ reviewerA: string;
1376
+ reviewerB: string;
1377
+ }>;
1378
+ export type Contradiction = z.infer<typeof contradictionSchema>;
1379
+ /**
1380
+ * Synthesis result schema.
1381
+ * Output from cross-reviewer synthesis step.
1382
+ */
1383
+ export declare const synthesisResultSchema: z.ZodObject<{
1384
+ findings: z.ZodArray<z.ZodObject<{
1385
+ severity: z.ZodEnum<["critical", "major", "minor", "info", "pass"]>;
1386
+ title: z.ZodString;
1387
+ description: z.ZodString;
1388
+ rationale: z.ZodString;
1389
+ suggestedFix: z.ZodNullable<z.ZodString>;
1390
+ file: z.ZodNullable<z.ZodString>;
1391
+ line: z.ZodNullable<z.ZodNumber>;
1392
+ endLine: z.ZodNullable<z.ZodNumber>;
1393
+ contextIdsUsed: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1394
+ contextIdsViolated: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1395
+ contextTitles: z.ZodNullable<z.ZodArray<z.ZodString, "many">>;
1396
+ } & {
1397
+ sourceReviewers: z.ZodArray<z.ZodString, "many">;
1398
+ }, "strip", z.ZodTypeAny, {
1399
+ title: string;
1400
+ description: string;
1401
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1402
+ rationale: string;
1403
+ suggestedFix: string | null;
1404
+ file: string | null;
1405
+ line: number | null;
1406
+ endLine: number | null;
1407
+ contextIdsUsed: string[] | null;
1408
+ contextIdsViolated: string[] | null;
1409
+ contextTitles: string[] | null;
1410
+ sourceReviewers: string[];
1411
+ }, {
1412
+ title: string;
1413
+ description: string;
1414
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1415
+ rationale: string;
1416
+ suggestedFix: string | null;
1417
+ file: string | null;
1418
+ line: number | null;
1419
+ endLine: number | null;
1420
+ contextIdsUsed: string[] | null;
1421
+ contextIdsViolated: string[] | null;
1422
+ contextTitles: string[] | null;
1423
+ sourceReviewers: string[];
1424
+ }>, "many">;
1425
+ contradictions: z.ZodArray<z.ZodObject<{
1426
+ findingA: z.ZodString;
1427
+ findingB: z.ZodString;
1428
+ reviewerA: z.ZodString;
1429
+ reviewerB: z.ZodString;
1430
+ context: z.ZodString;
1431
+ }, "strip", z.ZodTypeAny, {
1432
+ context: string;
1433
+ findingA: string;
1434
+ findingB: string;
1435
+ reviewerA: string;
1436
+ reviewerB: string;
1437
+ }, {
1438
+ context: string;
1439
+ findingA: string;
1440
+ findingB: string;
1441
+ reviewerA: string;
1442
+ reviewerB: string;
1443
+ }>, "many">;
1444
+ compoundRisks: z.ZodArray<z.ZodObject<{
1445
+ description: z.ZodString;
1446
+ affectedFindings: z.ZodArray<z.ZodString, "many">;
1447
+ severity: z.ZodEnum<["critical", "major", "minor", "info"]>;
1448
+ }, "strip", z.ZodTypeAny, {
1449
+ description: string;
1450
+ severity: "info" | "critical" | "major" | "minor";
1451
+ affectedFindings: string[];
1452
+ }, {
1453
+ description: string;
1454
+ severity: "info" | "critical" | "major" | "minor";
1455
+ affectedFindings: string[];
1456
+ }>, "many">;
1457
+ notes: z.ZodNullable<z.ZodString>;
1458
+ }, "strip", z.ZodTypeAny, {
1459
+ findings: {
1460
+ title: string;
1461
+ description: string;
1462
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1463
+ rationale: string;
1464
+ suggestedFix: string | null;
1465
+ file: string | null;
1466
+ line: number | null;
1467
+ endLine: number | null;
1468
+ contextIdsUsed: string[] | null;
1469
+ contextIdsViolated: string[] | null;
1470
+ contextTitles: string[] | null;
1471
+ sourceReviewers: string[];
1472
+ }[];
1473
+ notes: string | null;
1474
+ contradictions: {
1475
+ context: string;
1476
+ findingA: string;
1477
+ findingB: string;
1478
+ reviewerA: string;
1479
+ reviewerB: string;
1480
+ }[];
1481
+ compoundRisks: {
1482
+ description: string;
1483
+ severity: "info" | "critical" | "major" | "minor";
1484
+ affectedFindings: string[];
1485
+ }[];
1486
+ }, {
1487
+ findings: {
1488
+ title: string;
1489
+ description: string;
1490
+ severity: "info" | "critical" | "major" | "minor" | "pass";
1491
+ rationale: string;
1492
+ suggestedFix: string | null;
1493
+ file: string | null;
1494
+ line: number | null;
1495
+ endLine: number | null;
1496
+ contextIdsUsed: string[] | null;
1497
+ contextIdsViolated: string[] | null;
1498
+ contextTitles: string[] | null;
1499
+ sourceReviewers: string[];
1500
+ }[];
1501
+ notes: string | null;
1502
+ contradictions: {
1503
+ context: string;
1504
+ findingA: string;
1505
+ findingB: string;
1506
+ reviewerA: string;
1507
+ reviewerB: string;
1508
+ }[];
1509
+ compoundRisks: {
1510
+ description: string;
1511
+ severity: "info" | "critical" | "major" | "minor";
1512
+ affectedFindings: string[];
1513
+ }[];
1514
+ }>;
1515
+ export type SynthesisResult = z.infer<typeof synthesisResultSchema>;