@tienne/gestalt 0.82.2 → 0.83.1

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 (49) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.ko.md +2 -2
  3. package/README.md +2 -2
  4. package/dist/package.json +1 -1
  5. package/dist/plugin/role-agents/_shared/references/README.md +3 -1
  6. package/dist/plugin/role-agents/_shared/references/rule-path-walk.md +163 -0
  7. package/dist/plugin/role-agents/code-review-writer/AGENT.md +12 -0
  8. package/dist/plugin/role-agents/suggestion-verifier/AGENT.md +222 -0
  9. package/dist/plugin/skills/_shared/agent-delegation.md +1 -1
  10. package/dist/plugin/skills/_shared/agent-model.md +1 -1
  11. package/dist/plugin/skills/_shared/untrusted-input.md +1 -1
  12. package/dist/plugin/skills/review/SKILL.md +428 -20
  13. package/dist/plugin/skills/review-loop/CONTRACT.md +1 -1
  14. package/dist/plugin/skills/slack-send/SKILL.md +13 -4
  15. package/dist/src/core/types.d.ts +21 -0
  16. package/dist/src/core/types.d.ts.map +1 -1
  17. package/dist/src/mcp/schemas.d.ts +336 -6
  18. package/dist/src/mcp/schemas.d.ts.map +1 -1
  19. package/dist/src/mcp/schemas.js +42 -13
  20. package/dist/src/mcp/schemas.js.map +1 -1
  21. package/dist/src/mcp/tools/review-passthrough.d.ts.map +1 -1
  22. package/dist/src/mcp/tools/review-passthrough.js +19 -3
  23. package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
  24. package/dist/src/review/passthrough-engine.d.ts +5 -1
  25. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  26. package/dist/src/review/passthrough-engine.js +33 -3
  27. package/dist/src/review/passthrough-engine.js.map +1 -1
  28. package/dist/src/review/report-generator.d.ts +3 -0
  29. package/dist/src/review/report-generator.d.ts.map +1 -1
  30. package/dist/src/review/report-generator.js +59 -0
  31. package/dist/src/review/report-generator.js.map +1 -1
  32. package/dist/src/review/verification.d.ts +30 -0
  33. package/dist/src/review/verification.d.ts.map +1 -0
  34. package/dist/src/review/verification.js +110 -0
  35. package/dist/src/review/verification.js.map +1 -0
  36. package/package.json +1 -1
  37. package/plugin/.codex-plugin/plugin.json +1 -1
  38. package/plugin/.mcp.json +1 -1
  39. package/plugin/mcp.json +1 -1
  40. package/plugin/role-agents/_shared/references/README.md +3 -1
  41. package/plugin/role-agents/_shared/references/rule-path-walk.md +163 -0
  42. package/plugin/role-agents/code-review-writer/AGENT.md +12 -0
  43. package/plugin/role-agents/suggestion-verifier/AGENT.md +222 -0
  44. package/plugin/skills/_shared/agent-delegation.md +1 -1
  45. package/plugin/skills/_shared/agent-model.md +1 -1
  46. package/plugin/skills/_shared/untrusted-input.md +1 -1
  47. package/plugin/skills/review/SKILL.md +428 -20
  48. package/plugin/skills/review-loop/CONTRACT.md +1 -1
  49. package/plugin/skills/slack-send/SKILL.md +13 -4
@@ -1044,6 +1044,22 @@ export declare const executeInputSchema: z.ZodObject<{
1044
1044
  message: z.ZodString;
1045
1045
  suggestion: z.ZodString;
1046
1046
  reportedBy: z.ZodString;
1047
+ verification: z.ZodOptional<z.ZodObject<{
1048
+ verdict: z.ZodEnum<["keep", "revise"]>;
1049
+ reason: z.ZodString;
1050
+ originalSuggestion: z.ZodOptional<z.ZodString>;
1051
+ alsoCheck: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1052
+ }, "strip", z.ZodTypeAny, {
1053
+ verdict: "keep" | "revise";
1054
+ reason: string;
1055
+ originalSuggestion?: string | undefined;
1056
+ alsoCheck?: string[] | undefined;
1057
+ }, {
1058
+ verdict: "keep" | "revise";
1059
+ reason: string;
1060
+ originalSuggestion?: string | undefined;
1061
+ alsoCheck?: string[] | undefined;
1062
+ }>>;
1047
1063
  }, "strip", z.ZodTypeAny, {
1048
1064
  message: string;
1049
1065
  id: string;
@@ -1053,6 +1069,12 @@ export declare const executeInputSchema: z.ZodObject<{
1053
1069
  suggestion: string;
1054
1070
  reportedBy: string;
1055
1071
  line?: number | undefined;
1072
+ verification?: {
1073
+ verdict: "keep" | "revise";
1074
+ reason: string;
1075
+ originalSuggestion?: string | undefined;
1076
+ alsoCheck?: string[] | undefined;
1077
+ } | undefined;
1056
1078
  }, {
1057
1079
  message: string;
1058
1080
  id: string;
@@ -1062,11 +1084,80 @@ export declare const executeInputSchema: z.ZodObject<{
1062
1084
  suggestion: string;
1063
1085
  reportedBy: string;
1064
1086
  line?: number | undefined;
1087
+ verification?: {
1088
+ verdict: "keep" | "revise";
1089
+ reason: string;
1090
+ originalSuggestion?: string | undefined;
1091
+ alsoCheck?: string[] | undefined;
1092
+ } | undefined;
1065
1093
  }>, "many">;
1066
1094
  approvedBy: z.ZodArray<z.ZodString, "many">;
1067
1095
  blockedBy: z.ZodArray<z.ZodString, "many">;
1068
1096
  summary: z.ZodString;
1069
1097
  overallApproved: z.ZodBoolean;
1098
+ droppedIssues: z.ZodOptional<z.ZodArray<z.ZodObject<{
1099
+ id: z.ZodString;
1100
+ severity: z.ZodEnum<["critical", "high", "warning"]>;
1101
+ category: z.ZodString;
1102
+ file: z.ZodString;
1103
+ line: z.ZodOptional<z.ZodNumber>;
1104
+ message: z.ZodString;
1105
+ suggestion: z.ZodString;
1106
+ reportedBy: z.ZodString;
1107
+ verification: z.ZodOptional<z.ZodObject<{
1108
+ verdict: z.ZodEnum<["keep", "revise"]>;
1109
+ reason: z.ZodString;
1110
+ originalSuggestion: z.ZodOptional<z.ZodString>;
1111
+ alsoCheck: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1112
+ }, "strip", z.ZodTypeAny, {
1113
+ verdict: "keep" | "revise";
1114
+ reason: string;
1115
+ originalSuggestion?: string | undefined;
1116
+ alsoCheck?: string[] | undefined;
1117
+ }, {
1118
+ verdict: "keep" | "revise";
1119
+ reason: string;
1120
+ originalSuggestion?: string | undefined;
1121
+ alsoCheck?: string[] | undefined;
1122
+ }>>;
1123
+ } & {
1124
+ dropReason: z.ZodString;
1125
+ dropEvidence: z.ZodString;
1126
+ }, "strip", z.ZodTypeAny, {
1127
+ message: string;
1128
+ id: string;
1129
+ file: string;
1130
+ severity: "critical" | "high" | "warning";
1131
+ category: string;
1132
+ suggestion: string;
1133
+ reportedBy: string;
1134
+ dropReason: string;
1135
+ dropEvidence: string;
1136
+ line?: number | undefined;
1137
+ verification?: {
1138
+ verdict: "keep" | "revise";
1139
+ reason: string;
1140
+ originalSuggestion?: string | undefined;
1141
+ alsoCheck?: string[] | undefined;
1142
+ } | undefined;
1143
+ }, {
1144
+ message: string;
1145
+ id: string;
1146
+ file: string;
1147
+ severity: "critical" | "high" | "warning";
1148
+ category: string;
1149
+ suggestion: string;
1150
+ reportedBy: string;
1151
+ dropReason: string;
1152
+ dropEvidence: string;
1153
+ line?: number | undefined;
1154
+ verification?: {
1155
+ verdict: "keep" | "revise";
1156
+ reason: string;
1157
+ originalSuggestion?: string | undefined;
1158
+ alsoCheck?: string[] | undefined;
1159
+ } | undefined;
1160
+ }>, "many">>;
1070
1161
  }, "strip", z.ZodTypeAny, {
1071
1162
  summary: string;
1072
1163
  mergedIssues: {
@@ -1078,10 +1169,34 @@ export declare const executeInputSchema: z.ZodObject<{
1078
1169
  suggestion: string;
1079
1170
  reportedBy: string;
1080
1171
  line?: number | undefined;
1172
+ verification?: {
1173
+ verdict: "keep" | "revise";
1174
+ reason: string;
1175
+ originalSuggestion?: string | undefined;
1176
+ alsoCheck?: string[] | undefined;
1177
+ } | undefined;
1081
1178
  }[];
1082
1179
  approvedBy: string[];
1083
1180
  blockedBy: string[];
1084
1181
  overallApproved: boolean;
1182
+ droppedIssues?: {
1183
+ message: string;
1184
+ id: string;
1185
+ file: string;
1186
+ severity: "critical" | "high" | "warning";
1187
+ category: string;
1188
+ suggestion: string;
1189
+ reportedBy: string;
1190
+ dropReason: string;
1191
+ dropEvidence: string;
1192
+ line?: number | undefined;
1193
+ verification?: {
1194
+ verdict: "keep" | "revise";
1195
+ reason: string;
1196
+ originalSuggestion?: string | undefined;
1197
+ alsoCheck?: string[] | undefined;
1198
+ } | undefined;
1199
+ }[] | undefined;
1085
1200
  }, {
1086
1201
  summary: string;
1087
1202
  mergedIssues: {
@@ -1093,10 +1208,34 @@ export declare const executeInputSchema: z.ZodObject<{
1093
1208
  suggestion: string;
1094
1209
  reportedBy: string;
1095
1210
  line?: number | undefined;
1211
+ verification?: {
1212
+ verdict: "keep" | "revise";
1213
+ reason: string;
1214
+ originalSuggestion?: string | undefined;
1215
+ alsoCheck?: string[] | undefined;
1216
+ } | undefined;
1096
1217
  }[];
1097
1218
  approvedBy: string[];
1098
1219
  blockedBy: string[];
1099
1220
  overallApproved: boolean;
1221
+ droppedIssues?: {
1222
+ message: string;
1223
+ id: string;
1224
+ file: string;
1225
+ severity: "critical" | "high" | "warning";
1226
+ category: string;
1227
+ suggestion: string;
1228
+ reportedBy: string;
1229
+ dropReason: string;
1230
+ dropEvidence: string;
1231
+ line?: number | undefined;
1232
+ verification?: {
1233
+ verdict: "keep" | "revise";
1234
+ reason: string;
1235
+ originalSuggestion?: string | undefined;
1236
+ alsoCheck?: string[] | undefined;
1237
+ } | undefined;
1238
+ }[] | undefined;
1100
1239
  }>>;
1101
1240
  continuityVerdict: z.ZodOptional<z.ZodObject<{
1102
1241
  coherent: z.ZodBoolean;
@@ -1136,6 +1275,7 @@ export declare const executeInputSchema: z.ZodObject<{
1136
1275
  }>>;
1137
1276
  reviewSessionId: z.ZodOptional<z.ZodString>;
1138
1277
  prId: z.ZodOptional<z.ZodString>;
1278
+ sinceSha: z.ZodOptional<z.ZodString>;
1139
1279
  prReviewer: z.ZodOptional<z.ZodString>;
1140
1280
  }, "strip", z.ZodTypeAny, {
1141
1281
  action: "plan_complete" | "evaluate" | "status" | "start" | "plan_step" | "execute_start" | "execute_task" | "resume" | "audit" | "spawn" | "evolve_fix" | "evolve" | "evolve_patch" | "evolve_re_execute" | "evolve_lateral" | "evolve_lateral_result" | "role_match" | "role_consensus" | "review_start" | "review_submit" | "review_consensus" | "review_fix" | "review_publish" | "evolution_viz";
@@ -1345,10 +1485,34 @@ export declare const executeInputSchema: z.ZodObject<{
1345
1485
  suggestion: string;
1346
1486
  reportedBy: string;
1347
1487
  line?: number | undefined;
1488
+ verification?: {
1489
+ verdict: "keep" | "revise";
1490
+ reason: string;
1491
+ originalSuggestion?: string | undefined;
1492
+ alsoCheck?: string[] | undefined;
1493
+ } | undefined;
1348
1494
  }[];
1349
1495
  approvedBy: string[];
1350
1496
  blockedBy: string[];
1351
1497
  overallApproved: boolean;
1498
+ droppedIssues?: {
1499
+ message: string;
1500
+ id: string;
1501
+ file: string;
1502
+ severity: "critical" | "high" | "warning";
1503
+ category: string;
1504
+ suggestion: string;
1505
+ reportedBy: string;
1506
+ dropReason: string;
1507
+ dropEvidence: string;
1508
+ line?: number | undefined;
1509
+ verification?: {
1510
+ verdict: "keep" | "revise";
1511
+ reason: string;
1512
+ originalSuggestion?: string | undefined;
1513
+ alsoCheck?: string[] | undefined;
1514
+ } | undefined;
1515
+ }[] | undefined;
1352
1516
  } | undefined;
1353
1517
  continuityVerdict?: {
1354
1518
  summary: string;
@@ -1362,6 +1526,7 @@ export declare const executeInputSchema: z.ZodObject<{
1362
1526
  } | undefined;
1363
1527
  reviewSessionId?: string | undefined;
1364
1528
  prId?: string | undefined;
1529
+ sinceSha?: string | undefined;
1365
1530
  prReviewer?: string | undefined;
1366
1531
  }, {
1367
1532
  action: "plan_complete" | "evaluate" | "status" | "start" | "plan_step" | "execute_start" | "execute_task" | "resume" | "audit" | "spawn" | "evolve_fix" | "evolve" | "evolve_patch" | "evolve_re_execute" | "evolve_lateral" | "evolve_lateral_result" | "role_match" | "role_consensus" | "review_start" | "review_submit" | "review_consensus" | "review_fix" | "review_publish" | "evolution_viz";
@@ -1571,10 +1736,34 @@ export declare const executeInputSchema: z.ZodObject<{
1571
1736
  suggestion: string;
1572
1737
  reportedBy: string;
1573
1738
  line?: number | undefined;
1739
+ verification?: {
1740
+ verdict: "keep" | "revise";
1741
+ reason: string;
1742
+ originalSuggestion?: string | undefined;
1743
+ alsoCheck?: string[] | undefined;
1744
+ } | undefined;
1574
1745
  }[];
1575
1746
  approvedBy: string[];
1576
1747
  blockedBy: string[];
1577
1748
  overallApproved: boolean;
1749
+ droppedIssues?: {
1750
+ message: string;
1751
+ id: string;
1752
+ file: string;
1753
+ severity: "critical" | "high" | "warning";
1754
+ category: string;
1755
+ suggestion: string;
1756
+ reportedBy: string;
1757
+ dropReason: string;
1758
+ dropEvidence: string;
1759
+ line?: number | undefined;
1760
+ verification?: {
1761
+ verdict: "keep" | "revise";
1762
+ reason: string;
1763
+ originalSuggestion?: string | undefined;
1764
+ alsoCheck?: string[] | undefined;
1765
+ } | undefined;
1766
+ }[] | undefined;
1578
1767
  } | undefined;
1579
1768
  continuityVerdict?: {
1580
1769
  summary: string;
@@ -1588,6 +1777,7 @@ export declare const executeInputSchema: z.ZodObject<{
1588
1777
  } | undefined;
1589
1778
  reviewSessionId?: string | undefined;
1590
1779
  prId?: string | undefined;
1780
+ sinceSha?: string | undefined;
1591
1781
  prReviewer?: string | undefined;
1592
1782
  }>;
1593
1783
  export type ExecuteInput = z.infer<typeof executeInputSchema>;
@@ -2398,6 +2588,22 @@ export declare const executeToolSchema: {
2398
2588
  message: z.ZodString;
2399
2589
  suggestion: z.ZodString;
2400
2590
  reportedBy: z.ZodString;
2591
+ verification: z.ZodOptional<z.ZodObject<{
2592
+ verdict: z.ZodEnum<["keep", "revise"]>;
2593
+ reason: z.ZodString;
2594
+ originalSuggestion: z.ZodOptional<z.ZodString>;
2595
+ alsoCheck: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2596
+ }, "strip", z.ZodTypeAny, {
2597
+ verdict: "keep" | "revise";
2598
+ reason: string;
2599
+ originalSuggestion?: string | undefined;
2600
+ alsoCheck?: string[] | undefined;
2601
+ }, {
2602
+ verdict: "keep" | "revise";
2603
+ reason: string;
2604
+ originalSuggestion?: string | undefined;
2605
+ alsoCheck?: string[] | undefined;
2606
+ }>>;
2401
2607
  }, "strip", z.ZodTypeAny, {
2402
2608
  message: string;
2403
2609
  id: string;
@@ -2407,6 +2613,12 @@ export declare const executeToolSchema: {
2407
2613
  suggestion: string;
2408
2614
  reportedBy: string;
2409
2615
  line?: number | undefined;
2616
+ verification?: {
2617
+ verdict: "keep" | "revise";
2618
+ reason: string;
2619
+ originalSuggestion?: string | undefined;
2620
+ alsoCheck?: string[] | undefined;
2621
+ } | undefined;
2410
2622
  }, {
2411
2623
  message: string;
2412
2624
  id: string;
@@ -2416,11 +2628,80 @@ export declare const executeToolSchema: {
2416
2628
  suggestion: string;
2417
2629
  reportedBy: string;
2418
2630
  line?: number | undefined;
2631
+ verification?: {
2632
+ verdict: "keep" | "revise";
2633
+ reason: string;
2634
+ originalSuggestion?: string | undefined;
2635
+ alsoCheck?: string[] | undefined;
2636
+ } | undefined;
2419
2637
  }>, "many">;
2420
2638
  approvedBy: z.ZodArray<z.ZodString, "many">;
2421
2639
  blockedBy: z.ZodArray<z.ZodString, "many">;
2422
2640
  summary: z.ZodString;
2423
2641
  overallApproved: z.ZodBoolean;
2642
+ droppedIssues: z.ZodOptional<z.ZodArray<z.ZodObject<{
2643
+ id: z.ZodString;
2644
+ severity: z.ZodEnum<["critical", "high", "warning"]>;
2645
+ category: z.ZodString;
2646
+ file: z.ZodString;
2647
+ line: z.ZodOptional<z.ZodNumber>;
2648
+ message: z.ZodString;
2649
+ suggestion: z.ZodString;
2650
+ reportedBy: z.ZodString;
2651
+ verification: z.ZodOptional<z.ZodObject<{
2652
+ verdict: z.ZodEnum<["keep", "revise"]>;
2653
+ reason: z.ZodString;
2654
+ originalSuggestion: z.ZodOptional<z.ZodString>;
2655
+ alsoCheck: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2656
+ }, "strip", z.ZodTypeAny, {
2657
+ verdict: "keep" | "revise";
2658
+ reason: string;
2659
+ originalSuggestion?: string | undefined;
2660
+ alsoCheck?: string[] | undefined;
2661
+ }, {
2662
+ verdict: "keep" | "revise";
2663
+ reason: string;
2664
+ originalSuggestion?: string | undefined;
2665
+ alsoCheck?: string[] | undefined;
2666
+ }>>;
2667
+ } & {
2668
+ dropReason: z.ZodString;
2669
+ dropEvidence: z.ZodString;
2670
+ }, "strip", z.ZodTypeAny, {
2671
+ message: string;
2672
+ id: string;
2673
+ file: string;
2674
+ severity: "critical" | "high" | "warning";
2675
+ category: string;
2676
+ suggestion: string;
2677
+ reportedBy: string;
2678
+ dropReason: string;
2679
+ dropEvidence: string;
2680
+ line?: number | undefined;
2681
+ verification?: {
2682
+ verdict: "keep" | "revise";
2683
+ reason: string;
2684
+ originalSuggestion?: string | undefined;
2685
+ alsoCheck?: string[] | undefined;
2686
+ } | undefined;
2687
+ }, {
2688
+ message: string;
2689
+ id: string;
2690
+ file: string;
2691
+ severity: "critical" | "high" | "warning";
2692
+ category: string;
2693
+ suggestion: string;
2694
+ reportedBy: string;
2695
+ dropReason: string;
2696
+ dropEvidence: string;
2697
+ line?: number | undefined;
2698
+ verification?: {
2699
+ verdict: "keep" | "revise";
2700
+ reason: string;
2701
+ originalSuggestion?: string | undefined;
2702
+ alsoCheck?: string[] | undefined;
2703
+ } | undefined;
2704
+ }>, "many">>;
2424
2705
  }, "strip", z.ZodTypeAny, {
2425
2706
  summary: string;
2426
2707
  mergedIssues: {
@@ -2432,10 +2713,34 @@ export declare const executeToolSchema: {
2432
2713
  suggestion: string;
2433
2714
  reportedBy: string;
2434
2715
  line?: number | undefined;
2716
+ verification?: {
2717
+ verdict: "keep" | "revise";
2718
+ reason: string;
2719
+ originalSuggestion?: string | undefined;
2720
+ alsoCheck?: string[] | undefined;
2721
+ } | undefined;
2435
2722
  }[];
2436
2723
  approvedBy: string[];
2437
2724
  blockedBy: string[];
2438
2725
  overallApproved: boolean;
2726
+ droppedIssues?: {
2727
+ message: string;
2728
+ id: string;
2729
+ file: string;
2730
+ severity: "critical" | "high" | "warning";
2731
+ category: string;
2732
+ suggestion: string;
2733
+ reportedBy: string;
2734
+ dropReason: string;
2735
+ dropEvidence: string;
2736
+ line?: number | undefined;
2737
+ verification?: {
2738
+ verdict: "keep" | "revise";
2739
+ reason: string;
2740
+ originalSuggestion?: string | undefined;
2741
+ alsoCheck?: string[] | undefined;
2742
+ } | undefined;
2743
+ }[] | undefined;
2439
2744
  }, {
2440
2745
  summary: string;
2441
2746
  mergedIssues: {
@@ -2447,10 +2752,34 @@ export declare const executeToolSchema: {
2447
2752
  suggestion: string;
2448
2753
  reportedBy: string;
2449
2754
  line?: number | undefined;
2755
+ verification?: {
2756
+ verdict: "keep" | "revise";
2757
+ reason: string;
2758
+ originalSuggestion?: string | undefined;
2759
+ alsoCheck?: string[] | undefined;
2760
+ } | undefined;
2450
2761
  }[];
2451
2762
  approvedBy: string[];
2452
2763
  blockedBy: string[];
2453
2764
  overallApproved: boolean;
2765
+ droppedIssues?: {
2766
+ message: string;
2767
+ id: string;
2768
+ file: string;
2769
+ severity: "critical" | "high" | "warning";
2770
+ category: string;
2771
+ suggestion: string;
2772
+ reportedBy: string;
2773
+ dropReason: string;
2774
+ dropEvidence: string;
2775
+ line?: number | undefined;
2776
+ verification?: {
2777
+ verdict: "keep" | "revise";
2778
+ reason: string;
2779
+ originalSuggestion?: string | undefined;
2780
+ alsoCheck?: string[] | undefined;
2781
+ } | undefined;
2782
+ }[] | undefined;
2454
2783
  }>>;
2455
2784
  continuityVerdict: z.ZodOptional<z.ZodObject<{
2456
2785
  coherent: z.ZodBoolean;
@@ -2490,6 +2819,7 @@ export declare const executeToolSchema: {
2490
2819
  }>>;
2491
2820
  reviewSessionId: z.ZodOptional<z.ZodString>;
2492
2821
  prId: z.ZodOptional<z.ZodString>;
2822
+ sinceSha: z.ZodOptional<z.ZodString>;
2493
2823
  prReviewer: z.ZodOptional<z.ZodString>;
2494
2824
  };
2495
2825
  export declare const agentCreateInputSchema: z.ZodObject<{
@@ -2646,8 +2976,10 @@ export declare const prInputSchema: z.ZodObject<{
2646
2976
  path?: string | undefined;
2647
2977
  id?: string | undefined;
2648
2978
  force?: boolean | undefined;
2649
- title?: string | undefined;
2979
+ verdict?: "approve" | "request_changes" | "comment" | undefined;
2980
+ reason?: string | undefined;
2650
2981
  line?: number | undefined;
2982
+ title?: string | undefined;
2651
2983
  summary?: string | undefined;
2652
2984
  repoRoot?: string | undefined;
2653
2985
  base?: string | undefined;
@@ -2656,17 +2988,17 @@ export declare const prInputSchema: z.ZodObject<{
2656
2988
  body?: string | undefined;
2657
2989
  replyTo?: string | undefined;
2658
2990
  commentId?: string | undefined;
2659
- verdict?: "approve" | "request_changes" | "comment" | undefined;
2660
2991
  deleteBranch?: boolean | undefined;
2661
- reason?: string | undefined;
2662
2992
  }, {
2663
2993
  action: "review" | "merge" | "create" | "list" | "get" | "diff" | "comment" | "resolve" | "update" | "edit" | "close" | "checkout" | "checkout_remove";
2664
2994
  status?: "open" | "changes_requested" | "merged" | "closed" | undefined;
2665
2995
  path?: string | undefined;
2666
2996
  id?: string | undefined;
2667
2997
  force?: boolean | undefined;
2668
- title?: string | undefined;
2998
+ verdict?: "approve" | "request_changes" | "comment" | undefined;
2999
+ reason?: string | undefined;
2669
3000
  line?: number | undefined;
3001
+ title?: string | undefined;
2670
3002
  summary?: string | undefined;
2671
3003
  repoRoot?: string | undefined;
2672
3004
  base?: string | undefined;
@@ -2675,9 +3007,7 @@ export declare const prInputSchema: z.ZodObject<{
2675
3007
  body?: string | undefined;
2676
3008
  replyTo?: string | undefined;
2677
3009
  commentId?: string | undefined;
2678
- verdict?: "approve" | "request_changes" | "comment" | undefined;
2679
3010
  deleteBranch?: boolean | undefined;
2680
- reason?: string | undefined;
2681
3011
  }>;
2682
3012
  export type PrInput = z.infer<typeof prInputSchema>;
2683
3013
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAyCxD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoa9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA2B,CAAC;AAG1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAelC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,iBAAiB;;;;;;;;;EAU7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,yBAAyB;;;;;;;;;EAQrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG5E;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,+IAcb,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDzB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -82,6 +82,38 @@ export const specInputSchema = guardObject(z.object({
82
82
  .optional()
83
83
  .describe('Externally generated spec (passthrough mode)'),
84
84
  }));
85
+ // ─── Review Consensus Sub-schemas ───────────────────────────────
86
+ // review 스킬 3.7단계(제안 검증)의 판정을 싣는다. src/core/types.ts의 ReviewIssue와 정합.
87
+ const reviewIssueVerificationSchema = z.object({
88
+ verdict: z
89
+ .enum(['keep', 'revise'])
90
+ .describe('drop은 여기 쓰지 않는다. 뺀 이슈는 droppedIssues로 옮긴다.'),
91
+ reason: z.string(),
92
+ originalSuggestion: z
93
+ .string()
94
+ .optional()
95
+ .describe('revise일 때 리뷰어가 처음 낸 제안. suggestion에는 고친 제안을 넣는다.'),
96
+ alsoCheck: z.array(z.string()).optional().describe('제안을 반영할 때 같이 바꿔야 하는 자리'),
97
+ });
98
+ const mergedIssueSchema = z.object({
99
+ id: z.string(),
100
+ severity: z.enum(['critical', 'high', 'warning']),
101
+ category: z.string(),
102
+ file: z.string(),
103
+ line: z.number().optional(),
104
+ message: z.string(),
105
+ suggestion: z.string(),
106
+ reportedBy: z
107
+ .string()
108
+ .describe('이 의견을 낸 에이전트 이름 하나. 배열이 아니다 — 여러 에이전트가 같은 걸 짚었으면 대표 하나만 적는다.'),
109
+ verification: reviewIssueVerificationSchema
110
+ .optional()
111
+ .describe('제안 검증 결과. 검증을 안 거쳤으면 생략한다.'),
112
+ });
113
+ const droppedIssueSchema = mergedIssueSchema.extend({
114
+ dropReason: z.string().min(1).describe('전제가 사실과 다른 이유'),
115
+ dropEvidence: z.string().min(1).describe('그 판단의 증거. 파일:줄이나 명령 출력'),
116
+ });
85
117
  // ─── Execute Tool ───────────────────────────────────────────────
86
118
  export const executeInputSchema = guardObject(z.object({
87
119
  action: z.enum([
@@ -394,25 +426,18 @@ export const executeInputSchema = guardObject(z.object({
394
426
  .describe('Individual agent review result (required for review_submit)'),
395
427
  reviewConsensus: z
396
428
  .object({
397
- mergedIssues: z.array(z.object({
398
- id: z.string(),
399
- severity: z.enum(['critical', 'high', 'warning']),
400
- category: z.string(),
401
- file: z.string(),
402
- line: z.number().optional(),
403
- message: z.string(),
404
- suggestion: z.string(),
405
- reportedBy: z
406
- .string()
407
- .describe('이 의견을 낸 에이전트 이름 하나. 배열이 아니다 — 여러 에이전트가 같은 걸 짚었으면 대표 하나만 적는다.'),
408
- })),
429
+ mergedIssues: z.array(mergedIssueSchema),
409
430
  approvedBy: z.array(z.string()),
410
431
  blockedBy: z.array(z.string()),
411
432
  summary: z.string(),
412
433
  overallApproved: z.boolean(),
434
+ droppedIssues: z
435
+ .array(droppedIssueSchema)
436
+ .optional()
437
+ .describe('제안 검증이 전제가 틀렸다는 증거를 찾아 판정에서 뺀 이슈. 판정과 게시에는 안 들어가고 리포트에 이유와 증거가 남는다. security category나 critical 이슈를 넣으면 거부된다.'),
413
438
  })
414
439
  .optional()
415
- .describe('Merged review consensus (required for review_consensus). mergedIssues[]의 각 항목은 id, severity, category, file, message, suggestion, reportedBy가 모두 필요하다 (line만 선택). reportedBy는 에이전트 이름 문자열 하나다.'),
440
+ .describe('Merged review consensus (required for review_consensus). mergedIssues[]의 각 항목은 id, severity, category, file, message, suggestion, reportedBy가 모두 필요하다 (line과 verification만 선택). reportedBy는 에이전트 이름 문자열 하나다. droppedIssues는 선택이고 생략하면 기존 동작 그대로다.'),
416
441
  continuityVerdict: z
417
442
  .object({
418
443
  coherent: z.boolean(),
@@ -434,6 +459,10 @@ export const executeInputSchema = guardObject(z.object({
434
459
  .string()
435
460
  .optional()
436
461
  .describe('로컬 PR id. review_start에 주면 그 PR의 변경 파일과 저장소 경로로 리뷰를 연다 (sessionId·changedFiles보다 우선). review_publish에 필요하며, review_start에서 이미 준 세션이면 생략할 수 있다.'),
462
+ sinceSha: z
463
+ .string()
464
+ .optional()
465
+ .describe('review_start 전용. 재리뷰일 때 직전 리뷰가 본 head 커밋 sha(7~64자리 16진수). 세션과 REVIEW_STARTED 이벤트에 남고 reviewPrompt에 이번 라운드 비교 범위 한 줄이 붙는다. 빈 문자열이나 공백은 생략과 같다. 16진수가 아니면 거부한다. 생략하면 첫 리뷰와 같다.'),
437
466
  prReviewer: z
438
467
  .string()
439
468
  .optional()