planpong 0.2.0 → 0.3.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.
@@ -22,7 +22,7 @@ export declare const FeedbackIssueSchema: z.ZodObject<{
22
22
  suggestion: string;
23
23
  }>;
24
24
  export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
25
- verdict: z.ZodEnum<["needs_revision", "approved", "approved_with_notes"]>;
25
+ verdict: z.ZodEnum<["needs_revision", "approved", "approved_with_notes", "blocked"]>;
26
26
  summary: z.ZodString;
27
27
  issues: z.ZodArray<z.ZodObject<{
28
28
  id: z.ZodString;
@@ -46,6 +46,8 @@ export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
46
46
  description: string;
47
47
  suggestion: string;
48
48
  }>, "many">;
49
+ fallback_used: z.ZodOptional<z.ZodBoolean>;
50
+ missing_phase_fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
49
51
  }, "strip", z.ZodTypeAny, {
50
52
  issues: {
51
53
  id: string;
@@ -55,8 +57,10 @@ export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
55
57
  description: string;
56
58
  suggestion: string;
57
59
  }[];
58
- verdict: "needs_revision" | "approved" | "approved_with_notes";
60
+ verdict: "needs_revision" | "approved" | "approved_with_notes" | "blocked";
59
61
  summary: string;
62
+ fallback_used?: boolean | undefined;
63
+ missing_phase_fields?: string[] | undefined;
60
64
  }, {
61
65
  issues: {
62
66
  id: string;
@@ -66,8 +70,10 @@ export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
66
70
  description: string;
67
71
  suggestion: string;
68
72
  }[];
69
- verdict: "needs_revision" | "approved" | "approved_with_notes";
73
+ verdict: "needs_revision" | "approved" | "approved_with_notes" | "blocked";
70
74
  summary: string;
75
+ fallback_used?: boolean | undefined;
76
+ missing_phase_fields?: string[] | undefined;
71
77
  }>, {
72
78
  issues: {
73
79
  id: string;
@@ -77,8 +83,10 @@ export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
77
83
  description: string;
78
84
  suggestion: string;
79
85
  }[];
80
- verdict: "needs_revision" | "approved" | "approved_with_notes";
86
+ verdict: "needs_revision" | "approved" | "approved_with_notes" | "blocked";
81
87
  summary: string;
88
+ fallback_used?: boolean | undefined;
89
+ missing_phase_fields?: string[] | undefined;
82
90
  }, {
83
91
  issues: {
84
92
  id: string;
@@ -88,8 +96,231 @@ export declare const ReviewFeedbackSchema: z.ZodEffects<z.ZodObject<{
88
96
  description: string;
89
97
  suggestion: string;
90
98
  }[];
91
- verdict: "needs_revision" | "approved" | "approved_with_notes";
99
+ verdict: "needs_revision" | "approved" | "approved_with_notes" | "blocked";
92
100
  summary: string;
101
+ fallback_used?: boolean | undefined;
102
+ missing_phase_fields?: string[] | undefined;
103
+ }>;
104
+ export declare const AlternativeSchema: z.ZodObject<{
105
+ approach: z.ZodString;
106
+ tradeoff: z.ZodString;
107
+ }, "strip", z.ZodTypeAny, {
108
+ approach: string;
109
+ tradeoff: string;
110
+ }, {
111
+ approach: string;
112
+ tradeoff: string;
113
+ }>;
114
+ export declare const DirectionFeedbackSchema: z.ZodObject<{
115
+ verdict: z.ZodEnum<["needs_revision", "blocked"]>;
116
+ summary: z.ZodString;
117
+ issues: z.ZodArray<z.ZodObject<{
118
+ id: z.ZodString;
119
+ severity: z.ZodEnum<["P1", "P2", "P3"]>;
120
+ section: z.ZodString;
121
+ title: z.ZodString;
122
+ description: z.ZodString;
123
+ suggestion: z.ZodString;
124
+ }, "strip", z.ZodTypeAny, {
125
+ id: string;
126
+ severity: "P1" | "P2" | "P3";
127
+ section: string;
128
+ title: string;
129
+ description: string;
130
+ suggestion: string;
131
+ }, {
132
+ id: string;
133
+ severity: "P1" | "P2" | "P3";
134
+ section: string;
135
+ title: string;
136
+ description: string;
137
+ suggestion: string;
138
+ }>, "many">;
139
+ confidence: z.ZodEnum<["high", "medium", "low"]>;
140
+ approach_assessment: z.ZodString;
141
+ alternatives: z.ZodArray<z.ZodObject<{
142
+ approach: z.ZodString;
143
+ tradeoff: z.ZodString;
144
+ }, "strip", z.ZodTypeAny, {
145
+ approach: string;
146
+ tradeoff: string;
147
+ }, {
148
+ approach: string;
149
+ tradeoff: string;
150
+ }>, "many">;
151
+ assumptions: z.ZodArray<z.ZodString, "many">;
152
+ fallback_used: z.ZodOptional<z.ZodBoolean>;
153
+ missing_phase_fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
154
+ }, "strip", z.ZodTypeAny, {
155
+ issues: {
156
+ id: string;
157
+ severity: "P1" | "P2" | "P3";
158
+ section: string;
159
+ title: string;
160
+ description: string;
161
+ suggestion: string;
162
+ }[];
163
+ verdict: "needs_revision" | "blocked";
164
+ summary: string;
165
+ confidence: "high" | "medium" | "low";
166
+ approach_assessment: string;
167
+ alternatives: {
168
+ approach: string;
169
+ tradeoff: string;
170
+ }[];
171
+ assumptions: string[];
172
+ fallback_used?: boolean | undefined;
173
+ missing_phase_fields?: string[] | undefined;
174
+ }, {
175
+ issues: {
176
+ id: string;
177
+ severity: "P1" | "P2" | "P3";
178
+ section: string;
179
+ title: string;
180
+ description: string;
181
+ suggestion: string;
182
+ }[];
183
+ verdict: "needs_revision" | "blocked";
184
+ summary: string;
185
+ confidence: "high" | "medium" | "low";
186
+ approach_assessment: string;
187
+ alternatives: {
188
+ approach: string;
189
+ tradeoff: string;
190
+ }[];
191
+ assumptions: string[];
192
+ fallback_used?: boolean | undefined;
193
+ missing_phase_fields?: string[] | undefined;
194
+ }>;
195
+ export declare const RiskEntrySchema: z.ZodObject<{
196
+ id: z.ZodString;
197
+ category: z.ZodEnum<["dependency", "integration", "operational", "assumption", "external"]>;
198
+ likelihood: z.ZodEnum<["high", "medium", "low"]>;
199
+ impact: z.ZodEnum<["high", "medium", "low"]>;
200
+ title: z.ZodString;
201
+ description: z.ZodString;
202
+ mitigation: z.ZodString;
203
+ }, "strip", z.ZodTypeAny, {
204
+ id: string;
205
+ title: string;
206
+ description: string;
207
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
208
+ likelihood: "high" | "medium" | "low";
209
+ impact: "high" | "medium" | "low";
210
+ mitigation: string;
211
+ }, {
212
+ id: string;
213
+ title: string;
214
+ description: string;
215
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
216
+ likelihood: "high" | "medium" | "low";
217
+ impact: "high" | "medium" | "low";
218
+ mitigation: string;
219
+ }>;
220
+ export declare const RiskFeedbackSchema: z.ZodObject<{
221
+ verdict: z.ZodEnum<["needs_revision", "blocked"]>;
222
+ summary: z.ZodString;
223
+ issues: z.ZodArray<z.ZodObject<{
224
+ id: z.ZodString;
225
+ severity: z.ZodEnum<["P1", "P2", "P3"]>;
226
+ section: z.ZodString;
227
+ title: z.ZodString;
228
+ description: z.ZodString;
229
+ suggestion: z.ZodString;
230
+ }, "strip", z.ZodTypeAny, {
231
+ id: string;
232
+ severity: "P1" | "P2" | "P3";
233
+ section: string;
234
+ title: string;
235
+ description: string;
236
+ suggestion: string;
237
+ }, {
238
+ id: string;
239
+ severity: "P1" | "P2" | "P3";
240
+ section: string;
241
+ title: string;
242
+ description: string;
243
+ suggestion: string;
244
+ }>, "many">;
245
+ risk_level: z.ZodEnum<["high", "medium", "low"]>;
246
+ risks: z.ZodArray<z.ZodObject<{
247
+ id: z.ZodString;
248
+ category: z.ZodEnum<["dependency", "integration", "operational", "assumption", "external"]>;
249
+ likelihood: z.ZodEnum<["high", "medium", "low"]>;
250
+ impact: z.ZodEnum<["high", "medium", "low"]>;
251
+ title: z.ZodString;
252
+ description: z.ZodString;
253
+ mitigation: z.ZodString;
254
+ }, "strip", z.ZodTypeAny, {
255
+ id: string;
256
+ title: string;
257
+ description: string;
258
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
259
+ likelihood: "high" | "medium" | "low";
260
+ impact: "high" | "medium" | "low";
261
+ mitigation: string;
262
+ }, {
263
+ id: string;
264
+ title: string;
265
+ description: string;
266
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
267
+ likelihood: "high" | "medium" | "low";
268
+ impact: "high" | "medium" | "low";
269
+ mitigation: string;
270
+ }>, "many">;
271
+ fallback_used: z.ZodOptional<z.ZodBoolean>;
272
+ missing_phase_fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
273
+ }, "strip", z.ZodTypeAny, {
274
+ issues: {
275
+ id: string;
276
+ severity: "P1" | "P2" | "P3";
277
+ section: string;
278
+ title: string;
279
+ description: string;
280
+ suggestion: string;
281
+ }[];
282
+ verdict: "needs_revision" | "blocked";
283
+ summary: string;
284
+ risk_level: "high" | "medium" | "low";
285
+ risks: {
286
+ id: string;
287
+ title: string;
288
+ description: string;
289
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
290
+ likelihood: "high" | "medium" | "low";
291
+ impact: "high" | "medium" | "low";
292
+ mitigation: string;
293
+ }[];
294
+ fallback_used?: boolean | undefined;
295
+ missing_phase_fields?: string[] | undefined;
296
+ }, {
297
+ issues: {
298
+ id: string;
299
+ severity: "P1" | "P2" | "P3";
300
+ section: string;
301
+ title: string;
302
+ description: string;
303
+ suggestion: string;
304
+ }[];
305
+ verdict: "needs_revision" | "blocked";
306
+ summary: string;
307
+ risk_level: "high" | "medium" | "low";
308
+ risks: {
309
+ id: string;
310
+ title: string;
311
+ description: string;
312
+ category: "dependency" | "integration" | "operational" | "assumption" | "external";
313
+ likelihood: "high" | "medium" | "low";
314
+ impact: "high" | "medium" | "low";
315
+ mitigation: string;
316
+ }[];
317
+ fallback_used?: boolean | undefined;
318
+ missing_phase_fields?: string[] | undefined;
93
319
  }>;
94
320
  export type FeedbackIssue = z.infer<typeof FeedbackIssueSchema>;
95
321
  export type ReviewFeedback = z.infer<typeof ReviewFeedbackSchema>;
322
+ export type DirectionFeedback = z.infer<typeof DirectionFeedbackSchema>;
323
+ export type RiskFeedback = z.infer<typeof RiskFeedbackSchema>;
324
+ export type RiskEntry = z.infer<typeof RiskEntrySchema>;
325
+ export type Alternative = z.infer<typeof AlternativeSchema>;
326
+ export type PhaseFeedback = DirectionFeedback | RiskFeedback | ReviewFeedback;
@@ -7,11 +7,21 @@ export const FeedbackIssueSchema = z.object({
7
7
  description: z.string(),
8
8
  suggestion: z.string(),
9
9
  });
10
+ // Base verdict enum includes `blocked` so fallback parsing can accept it
11
+ // from direction/risk phases when phase-specific parsing fails.
10
12
  export const ReviewFeedbackSchema = z
11
13
  .object({
12
- verdict: z.enum(["needs_revision", "approved", "approved_with_notes"]),
14
+ verdict: z.enum([
15
+ "needs_revision",
16
+ "approved",
17
+ "approved_with_notes",
18
+ "blocked",
19
+ ]),
13
20
  summary: z.string(),
14
21
  issues: z.array(FeedbackIssueSchema),
22
+ // Fallback observability — set by parseFeedbackForPhase when fallback is used
23
+ fallback_used: z.boolean().optional(),
24
+ missing_phase_fields: z.array(z.string()).optional(),
15
25
  })
16
26
  .refine((data) => {
17
27
  if (data.verdict === "approved_with_notes") {
@@ -21,4 +31,45 @@ export const ReviewFeedbackSchema = z
21
31
  }, {
22
32
  message: "approved_with_notes is only valid when all issues are P3. Either downgrade issues to P3 or change verdict to needs_revision.",
23
33
  });
34
+ // --- Direction phase schema ---
35
+ export const AlternativeSchema = z.object({
36
+ approach: z.string(),
37
+ tradeoff: z.string(),
38
+ });
39
+ export const DirectionFeedbackSchema = z.object({
40
+ verdict: z.enum(["needs_revision", "blocked"]),
41
+ summary: z.string(),
42
+ issues: z.array(FeedbackIssueSchema),
43
+ confidence: z.enum(["high", "medium", "low"]),
44
+ approach_assessment: z.string(),
45
+ alternatives: z.array(AlternativeSchema),
46
+ assumptions: z.array(z.string()),
47
+ fallback_used: z.boolean().optional(),
48
+ missing_phase_fields: z.array(z.string()).optional(),
49
+ });
50
+ // --- Risk phase schema ---
51
+ export const RiskEntrySchema = z.object({
52
+ id: z.string(),
53
+ category: z.enum([
54
+ "dependency",
55
+ "integration",
56
+ "operational",
57
+ "assumption",
58
+ "external",
59
+ ]),
60
+ likelihood: z.enum(["high", "medium", "low"]),
61
+ impact: z.enum(["high", "medium", "low"]),
62
+ title: z.string(),
63
+ description: z.string(),
64
+ mitigation: z.string(),
65
+ });
66
+ export const RiskFeedbackSchema = z.object({
67
+ verdict: z.enum(["needs_revision", "blocked"]),
68
+ summary: z.string(),
69
+ issues: z.array(FeedbackIssueSchema),
70
+ risk_level: z.enum(["high", "medium", "low"]),
71
+ risks: z.array(RiskEntrySchema),
72
+ fallback_used: z.boolean().optional(),
73
+ missing_phase_fields: z.array(z.string()).optional(),
74
+ });
24
75
  //# sourceMappingURL=feedback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/schemas/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACrC,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EACL,8HAA8H;CACjI,CACF,CAAC"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/schemas/feedback.ts"],"names":[],"mappings":"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"}
@@ -30,14 +30,14 @@ export declare const SessionSchema: z.ZodObject<{
30
30
  model?: string | undefined;
31
31
  effort?: string | undefined;
32
32
  }>;
33
- status: z.ZodEnum<["planning", "in_review", "approved", "aborted"]>;
33
+ status: z.ZodEnum<["planning", "in_review", "approved", "blocked", "aborted"]>;
34
34
  currentRound: z.ZodNumber;
35
35
  startedAt: z.ZodString;
36
36
  planHash: z.ZodString;
37
37
  initialLineCount: z.ZodOptional<z.ZodNumber>;
38
38
  }, "strip", z.ZodTypeAny, {
39
39
  id: string;
40
- status: "aborted" | "approved" | "planning" | "in_review";
40
+ status: "aborted" | "approved" | "blocked" | "planning" | "in_review";
41
41
  planner: {
42
42
  provider: string;
43
43
  model?: string | undefined;
@@ -57,7 +57,7 @@ export declare const SessionSchema: z.ZodObject<{
57
57
  initialLineCount?: number | undefined;
58
58
  }, {
59
59
  id: string;
60
- status: "aborted" | "approved" | "planning" | "in_review";
60
+ status: "aborted" | "approved" | "blocked" | "planning" | "in_review";
61
61
  planner: {
62
62
  provider: string;
63
63
  model?: string | undefined;
@@ -7,7 +7,7 @@ export const SessionSchema = z.object({
7
7
  planPathAbsolute: z.string(),
8
8
  planner: ProviderConfigSchema,
9
9
  reviewer: ProviderConfigSchema,
10
- status: z.enum(["planning", "in_review", "approved", "aborted"]),
10
+ status: z.enum(["planning", "in_review", "approved", "blocked", "aborted"]),
11
11
  currentRound: z.number().int().min(0),
12
12
  startedAt: z.string(),
13
13
  planHash: z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/schemas/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,oBAAoB;IAC9B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/schemas/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,oBAAoB;IAC9B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "planpong",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Multi-model adversarial plan review — orchestrates AI agents to critique and refine implementation plans",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,6 +15,7 @@
15
15
  "build": "tsc",
16
16
  "typecheck": "tsc --noEmit",
17
17
  "prepare": "git config core.hooksPath .githooks 2>/dev/null || true",
18
+ "test": "vitest run",
18
19
  "prepublishOnly": "npm run build"
19
20
  },
20
21
  "engines": {
@@ -47,6 +48,7 @@
47
48
  "devDependencies": {
48
49
  "@types/node": "^22.13.10",
49
50
  "tsx": "^4.19.3",
50
- "typescript": "^5.8.2"
51
+ "typescript": "^5.8.2",
52
+ "vitest": "^4.0.18"
51
53
  }
52
54
  }