planpong 0.2.1 → 0.4.2

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 (41) hide show
  1. package/dist/src/core/convergence.d.ts +46 -2
  2. package/dist/src/core/convergence.js +278 -6
  3. package/dist/src/core/convergence.js.map +1 -1
  4. package/dist/src/core/loop.d.ts +3 -3
  5. package/dist/src/core/loop.js +20 -8
  6. package/dist/src/core/loop.js.map +1 -1
  7. package/dist/src/core/operations.d.ts +14 -4
  8. package/dist/src/core/operations.js +140 -48
  9. package/dist/src/core/operations.js.map +1 -1
  10. package/dist/src/core/session.d.ts +3 -3
  11. package/dist/src/core/session.js.map +1 -1
  12. package/dist/src/mcp/server.js +25 -1
  13. package/dist/src/mcp/server.js.map +1 -1
  14. package/dist/src/mcp/tools/get-feedback.js +32 -6
  15. package/dist/src/mcp/tools/get-feedback.js.map +1 -1
  16. package/dist/src/mcp/tools/get-report.d.ts +2 -0
  17. package/dist/src/mcp/tools/get-report.js +152 -0
  18. package/dist/src/mcp/tools/get-report.js.map +1 -0
  19. package/dist/src/prompts/planner.d.ts +1 -1
  20. package/dist/src/prompts/planner.js +39 -19
  21. package/dist/src/prompts/planner.js.map +1 -1
  22. package/dist/src/prompts/reviewer.d.ts +1 -1
  23. package/dist/src/prompts/reviewer.js +120 -15
  24. package/dist/src/prompts/reviewer.js.map +1 -1
  25. package/dist/src/providers/claude.d.ts +3 -0
  26. package/dist/src/providers/claude.js +134 -12
  27. package/dist/src/providers/claude.js.map +1 -1
  28. package/dist/src/providers/codex.d.ts +3 -0
  29. package/dist/src/providers/codex.js +101 -12
  30. package/dist/src/providers/codex.js.map +1 -1
  31. package/dist/src/providers/types.d.ts +49 -3
  32. package/dist/src/schemas/feedback.d.ts +236 -5
  33. package/dist/src/schemas/feedback.js +52 -1
  34. package/dist/src/schemas/feedback.js.map +1 -1
  35. package/dist/src/schemas/json-schema.d.ts +9 -0
  36. package/dist/src/schemas/json-schema.js +153 -0
  37. package/dist/src/schemas/json-schema.js.map +1 -0
  38. package/dist/src/schemas/session.d.ts +3 -3
  39. package/dist/src/schemas/session.js +1 -1
  40. package/dist/src/schemas/session.js.map +1 -1
  41. package/package.json +4 -2
@@ -3,7 +3,8 @@ import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
3
  import { relative, resolve } from "node:path";
4
4
  import { buildRevisionPrompt } from "../prompts/planner.js";
5
5
  import { buildReviewPrompt, formatPriorDecisions, getReviewPhase, } from "../prompts/reviewer.js";
6
- import { parseFeedback, parseRevision, isConverged } from "./convergence.js";
6
+ import { parseFeedbackForPhase, parseRevision, parseStructuredFeedbackForPhase, parseStructuredRevision, isConverged, StructuredOutputParseError, ZodValidationError, } from "./convergence.js";
7
+ import { getFeedbackJsonSchemaForPhase, PlannerRevisionJsonSchema } from "../schemas/json-schema.js";
7
8
  import { createSession, writeSessionState, writeRoundFeedback, writeRoundResponse, readRoundFeedback, readRoundResponse, writeInitialPlan, } from "./session.js";
8
9
  // --- Utility functions ---
9
10
  export function hashFile(path) {
@@ -97,15 +98,42 @@ export function computeSessionStats(cwd, sessionId, currentRound) {
97
98
  totalDeferred,
98
99
  };
99
100
  }
100
- export function buildStatusLine(session, config, issueTrajectory, accepted, rejected, deferred, linesAdded, linesRemoved, elapsed) {
101
+ export function formatPhaseExtras(phase, extras) {
102
+ if (extras.is_blocked) {
103
+ if (phase === "risk" && extras.risk_count) {
104
+ return `BLOCKED | ${extras.risk_count} unmitigable risks`;
105
+ }
106
+ return "BLOCKED";
107
+ }
108
+ const parts = [];
109
+ if (phase === "direction" && extras.confidence) {
110
+ parts.push(`confidence: ${extras.confidence}`);
111
+ }
112
+ if (phase === "risk") {
113
+ if (extras.risk_level) {
114
+ parts.push(`risk: ${extras.risk_level}`);
115
+ }
116
+ if (extras.risk_count !== undefined && extras.risks_promoted !== undefined) {
117
+ parts.push(`${extras.risk_count} risks (${extras.risks_promoted} promoted)`);
118
+ }
119
+ }
120
+ return parts.join(" | ");
121
+ }
122
+ export function buildStatusLine(session, config, issueTrajectory, accepted, rejected, deferred, linesAdded, linesRemoved, elapsed, phaseExtras) {
101
123
  const plannerLabel = formatProviderLabel(config.planner);
102
124
  const reviewerLabel = formatProviderLabel(config.reviewer);
103
125
  const trajectory = formatTrajectory(issueTrajectory);
104
126
  const tallies = formatTallies(accepted, rejected, deferred);
105
127
  const elapsedStr = formatDuration(elapsed);
128
+ const phase = getReviewPhase(session.currentRound);
129
+ const phaseSignal = phaseExtras
130
+ ? formatPhaseExtras(phase, phaseExtras)
131
+ : "";
106
132
  const parts = [
107
133
  `**planpong:** R${session.currentRound}/${config.max_rounds}`,
108
134
  `${plannerLabel} → ${reviewerLabel}`,
135
+ phase,
136
+ phaseSignal,
109
137
  trajectory,
110
138
  tallies,
111
139
  `+${linesAdded}/-${linesRemoved} lines`,
@@ -199,6 +227,76 @@ function buildPriorDecisions(cwd, sessionId, currentRound) {
199
227
  return null;
200
228
  return formatPriorDecisions(priorRounds);
201
229
  }
230
+ /**
231
+ * Invocation state machine — single owner of all retry/downgrade logic for
232
+ * provider invocations. Providers are single-shot; this function decides
233
+ * when to downgrade from structured output to legacy mode.
234
+ *
235
+ * Strict 2-attempt cap: structured (1) -> legacy fallback (1) -> terminal.
236
+ *
237
+ * Failure handling:
238
+ * - Provider `capability` error in structured mode → downgrade
239
+ * - Provider `fatal` error → terminal (no downgrade)
240
+ * - JSON.parse failure on structured output → downgrade
241
+ * - Zod validation failure on structured output → terminal (NOT retried)
242
+ * - Any failure in legacy mode → terminal
243
+ */
244
+ async function invokeWithStateMachine(args) {
245
+ const { provider, invokeOptions, jsonSchema, buildPrompt, parseStructured, parseLegacy, roundLabel, } = args;
246
+ const supported = await provider.checkStructuredOutputSupport();
247
+ let mode = supported ? "structured" : "legacy";
248
+ let attempt = 0;
249
+ const maxAttempts = 2;
250
+ let lastError = null;
251
+ while (attempt < maxAttempts) {
252
+ attempt++;
253
+ const prompt = buildPrompt(mode === "structured");
254
+ const options = mode === "structured"
255
+ ? { ...invokeOptions, jsonSchema }
256
+ : { ...invokeOptions };
257
+ const response = await provider.invoke(prompt, options);
258
+ if (!response.ok) {
259
+ if (mode === "structured" &&
260
+ response.error.kind === "capability" &&
261
+ attempt < maxAttempts) {
262
+ process.stderr.write(`[planpong] ${roundLabel}: structured → legacy (reason: capability error: ${response.error.message.slice(0, 200)})\n`);
263
+ provider.markNonCapable();
264
+ mode = "legacy";
265
+ continue;
266
+ }
267
+ // Fatal, or already in legacy mode — terminal
268
+ throw new Error(`${roundLabel} failed (exit ${response.error.exitCode}, ${response.error.kind}):\n${response.error.message}`);
269
+ }
270
+ // Provider returned output — try to parse
271
+ try {
272
+ if (mode === "structured") {
273
+ return parseStructured(response.output);
274
+ }
275
+ return parseLegacy(response.output);
276
+ }
277
+ catch (parseError) {
278
+ lastError = parseError instanceof Error ? parseError : new Error(String(parseError));
279
+ // Zod validation failure on structured output is terminal — the model
280
+ // produced semantically invalid content, retrying won't help.
281
+ if (parseError instanceof ZodValidationError) {
282
+ throw parseError;
283
+ }
284
+ // JSON.parse failure on structured output triggers downgrade
285
+ if (mode === "structured" &&
286
+ parseError instanceof StructuredOutputParseError &&
287
+ attempt < maxAttempts) {
288
+ process.stderr.write(`[planpong] ${roundLabel}: structured → legacy (reason: JSON.parse failure: ${lastError.message.slice(0, 200)})\n`);
289
+ provider.markNonCapable();
290
+ mode = "legacy";
291
+ continue;
292
+ }
293
+ // Legacy parse failure — terminal
294
+ throw new Error(`${roundLabel} parse failed in ${mode} mode: ${lastError.message}`);
295
+ }
296
+ }
297
+ // Unreachable in normal flow — defensive
298
+ throw lastError ?? new Error(`${roundLabel} exhausted all attempts`);
299
+ }
202
300
  /**
203
301
  * Run a single review round: send current plan to the reviewer for critique.
204
302
  */
@@ -208,35 +306,41 @@ export async function runReviewRound(session, cwd, config, reviewerProvider) {
208
306
  const planContent = readFileSync(planPath, "utf-8");
209
307
  const phase = getReviewPhase(round);
210
308
  const priorDecisions = buildPriorDecisions(cwd, session.id, round);
211
- const reviewPrompt = buildReviewPrompt(planContent, priorDecisions, phase);
212
- const reviewResponse = await reviewerProvider.invoke(reviewPrompt, {
213
- cwd,
214
- model: config.reviewer.model,
215
- effort: config.reviewer.effort,
216
- });
217
- // Try to parse even on non-zero exit — CLIs can exit 1 with valid output
218
- let feedback;
219
- try {
220
- feedback = parseFeedback(reviewResponse.content);
221
- }
222
- catch (parseError) {
223
- // If exit code was also non-zero, the provider genuinely failed
224
- if (reviewResponse.exitCode !== 0) {
225
- throw new Error(`Reviewer failed (exit ${reviewResponse.exitCode}):\n${reviewResponse.content.slice(0, 500)}`);
226
- }
227
- // Exit was 0 but parse failed — retry
228
- const retryPrompt = `Your previous response could not be parsed. Please output ONLY a valid JSON object wrapped in <planpong-feedback> tags. The error was: ${parseError instanceof Error ? parseError.message : "parse error"}\n\nOriginal prompt:\n${reviewPrompt}`;
229
- const retryResponse = await reviewerProvider.invoke(retryPrompt, {
309
+ const feedback = await invokeWithStateMachine({
310
+ provider: reviewerProvider,
311
+ invokeOptions: {
230
312
  cwd,
231
313
  model: config.reviewer.model,
232
314
  effort: config.reviewer.effort,
233
- });
234
- feedback = parseFeedback(retryResponse.content);
235
- }
315
+ },
316
+ jsonSchema: getFeedbackJsonSchemaForPhase(phase),
317
+ buildPrompt: (structuredOutput) => buildReviewPrompt(planContent, priorDecisions, phase, structuredOutput),
318
+ parseStructured: (output) => parseStructuredFeedbackForPhase(output, phase),
319
+ parseLegacy: (output) => parseFeedbackForPhase(output, phase),
320
+ roundLabel: `Round ${round} review`,
321
+ });
236
322
  writeRoundFeedback(cwd, session.id, round, feedback);
237
323
  const severity = severityFromFeedback(feedback);
238
- const converged = isConverged(feedback, round);
239
- return { round, feedback, severity, converged };
324
+ const converged = isConverged(feedback);
325
+ // Extract phase-specific extras for status line
326
+ const phaseExtras = {};
327
+ if (feedback.verdict === "blocked") {
328
+ phaseExtras.is_blocked = true;
329
+ session.status = "blocked";
330
+ writeSessionState(cwd, session);
331
+ }
332
+ if (phase === "direction" && "confidence" in feedback) {
333
+ phaseExtras.confidence = feedback.confidence;
334
+ }
335
+ if (phase === "risk") {
336
+ if ("risk_level" in feedback) {
337
+ const riskFb = feedback;
338
+ phaseExtras.risk_level = riskFb.risk_level;
339
+ phaseExtras.risk_count = riskFb.risks?.length ?? 0;
340
+ phaseExtras.risks_promoted = feedback.issues.length;
341
+ }
342
+ }
343
+ return { round, feedback, severity, converged, phaseExtras };
240
344
  }
241
345
  /**
242
346
  * Run a single revision round: send plan + feedback to the planner for revision.
@@ -251,31 +355,19 @@ export async function runRevisionRound(session, cwd, config, plannerProvider) {
251
355
  }
252
356
  const phase = getReviewPhase(round);
253
357
  const keyDecisions = extractKeyDecisions(planContent);
254
- const revisionPrompt = buildRevisionPrompt(planContent, feedback, keyDecisions, null, phase);
255
- const revisionResponse = await plannerProvider.invoke(revisionPrompt, {
256
- cwd,
257
- model: config.planner.model,
258
- effort: config.planner.effort,
259
- });
260
- // Try to parse even on non-zero exit — CLIs can exit 1 with valid output
261
- let revision;
262
- try {
263
- revision = parseRevision(revisionResponse.content);
264
- }
265
- catch (parseError) {
266
- // If exit code was also non-zero, the provider genuinely failed
267
- if (revisionResponse.exitCode !== 0) {
268
- throw new Error(`Planner revision failed (exit ${revisionResponse.exitCode}):\n${revisionResponse.content.slice(0, 500)}`);
269
- }
270
- // Exit was 0 but parse failed — retry
271
- const retryPrompt = `Your previous response could not be parsed. Please output ONLY a valid JSON object wrapped in <planpong-revision> tags. The error was: ${parseError instanceof Error ? parseError.message : "parse error"}\n\nOriginal prompt:\n${revisionPrompt}`;
272
- const retryResponse = await plannerProvider.invoke(retryPrompt, {
358
+ const revision = await invokeWithStateMachine({
359
+ provider: plannerProvider,
360
+ invokeOptions: {
273
361
  cwd,
274
362
  model: config.planner.model,
275
363
  effort: config.planner.effort,
276
- });
277
- revision = parseRevision(retryResponse.content);
278
- }
364
+ },
365
+ jsonSchema: PlannerRevisionJsonSchema,
366
+ buildPrompt: (structuredOutput) => buildRevisionPrompt(planContent, feedback, keyDecisions, null, phase, structuredOutput),
367
+ parseStructured: (output) => parseStructuredRevision(output),
368
+ parseLegacy: (output) => parseRevision(output),
369
+ roundLabel: `Round ${round} revision`,
370
+ });
279
371
  writeRoundResponse(cwd, session.id, round, revision);
280
372
  // Tally responses
281
373
  let accepted = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/operations.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import type { Session } from "../schemas/session.js";
2
- import type { ReviewFeedback } from "../schemas/feedback.js";
2
+ import type { PhaseFeedback } from "../schemas/feedback.js";
3
3
  import type { PlannerRevision } from "../schemas/revision.js";
4
4
  import type { ProviderConfig } from "../schemas/config.js";
5
5
  export declare function createSession(repoRoot: string, planPath: string, planner: ProviderConfig, reviewer: ProviderConfig, planHash: string): Session;
6
6
  export declare function writeSessionState(repoRoot: string, session: Session): void;
7
7
  export declare function readSessionState(repoRoot: string, sessionId: string): Session | null;
8
- export declare function writeRoundFeedback(repoRoot: string, sessionId: string, round: number, feedback: ReviewFeedback): void;
8
+ export declare function writeRoundFeedback(repoRoot: string, sessionId: string, round: number, feedback: PhaseFeedback): void;
9
9
  export declare function writeRoundResponse(repoRoot: string, sessionId: string, round: number, response: PlannerRevision): void;
10
- export declare function readRoundFeedback(repoRoot: string, sessionId: string, round: number): ReviewFeedback | null;
10
+ export declare function readRoundFeedback(repoRoot: string, sessionId: string, round: number): PhaseFeedback | null;
11
11
  export declare function readRoundResponse(repoRoot: string, sessionId: string, round: number): PlannerRevision | null;
12
12
  export declare function writeInitialPlan(repoRoot: string, sessionId: string, content: string): void;
13
13
  export declare function readInitialPlan(repoRoot: string, sessionId: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/session.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { registerGetFeedback } from "./tools/get-feedback.js";
5
5
  import { registerRevise } from "./tools/revise.js";
6
6
  import { registerStatus } from "./tools/status.js";
7
7
  import { registerListSessions } from "./tools/list-sessions.js";
8
+ import { registerGetReport } from "./tools/get-report.js";
8
9
  export function createPlanpongServer() {
9
10
  const server = new McpServer({
10
11
  name: "planpong",
@@ -34,13 +35,19 @@ Execution mode (check the "interactive" field in planpong_start_review response)
34
35
  When the review completes (converged OR max rounds reached):
35
36
  1. Display the status_line from the final tool response — this is the canonical summary.
36
37
  2. Generate a "Summary of what changed" table comparing the initial plan to the final plan. The final get_feedback response includes initial_plan and final_plan when converged. For max rounds, read the plan file yourself. The table should have columns: Area | Original | Final — showing the key decisions and approaches that changed during the review. Keep it to the most meaningful changes (5-10 rows max). Use a markdown table.
37
- 3. If the review hit max rounds without converging, note which reviewer concerns remain unresolved and whether they are substantive or deployment-level details.`,
38
+ 3. If the review hit max rounds without converging, note which reviewer concerns remain unresolved and whether they are substantive or deployment-level details.
39
+
40
+ Phase-specific feedback:
41
+ - Direction phase (R1) returns a confidence level. Risk phase (R2) returns a risk level and risk register summary.
42
+ - If is_blocked is true, the review has been terminated early because the plan is fundamentally non-viable. Do NOT call planpong_revise — instead show the blocking rationale and suggest the user fix the underlying issue.
43
+ - Use planpong_get_report after the review completes to get detailed phase-specific data (alternatives, assumptions, full risk register) on demand.`,
38
44
  });
39
45
  registerStartReview(server);
40
46
  registerGetFeedback(server);
41
47
  registerRevise(server);
42
48
  registerStatus(server);
43
49
  registerListSessions(server);
50
+ registerGetReport(server);
44
51
  // MCP prompts — become slash commands in Claude Code
45
52
  server.registerPrompt("review", {
46
53
  title: "Review a plan",
@@ -111,6 +118,23 @@ When the review completes (converged OR max rounds reached):
111
118
  },
112
119
  ],
113
120
  }));
121
+ server.registerPrompt("report", {
122
+ title: "Get review report",
123
+ description: "Get a detailed phase-specific report for a completed or in-progress review session",
124
+ argsSchema: {
125
+ session_id: z.string().describe("Session ID to generate report for"),
126
+ },
127
+ }, (args) => ({
128
+ messages: [
129
+ {
130
+ role: "user",
131
+ content: {
132
+ type: "text",
133
+ text: `Get the detailed report for planpong session ${args.session_id}. Show the direction assessment (confidence, alternatives, assumptions), risk register (risks with likelihood/impact), and detail round history. Present the information in a readable format.`,
134
+ },
135
+ },
136
+ ],
137
+ }));
114
138
  return server;
115
139
  }
116
140
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,9 @@ export function registerGetFeedback(server) {
71
71
  const result = await runReviewRound(session, cwd, sessionConfig, reviewerProvider);
72
72
  // Update status line with review results
73
73
  const suffix = result.converged
74
- ? `Approved after ${result.round} rounds`
74
+ ? result.feedback.verdict === "blocked"
75
+ ? `BLOCKED in ${getReviewPhase(result.round)} phase`
76
+ : `Approved after ${result.round} rounds`
75
77
  : `Reviewed — ${result.feedback.issues.length} issues`;
76
78
  const statusLine = writeStatusLineToPlan(session, cwd, sessionConfig, suffix);
77
79
  const phase = getReviewPhase(result.round);
@@ -85,17 +87,41 @@ export function registerGetFeedback(server) {
85
87
  is_converged: result.converged,
86
88
  status_line: statusLine,
87
89
  };
90
+ // Phase-specific lean fields for status line consumption
91
+ if (result.phaseExtras.is_blocked) {
92
+ response.is_blocked = true;
93
+ }
94
+ if (phase === "direction" && result.phaseExtras.confidence) {
95
+ response.confidence = result.phaseExtras.confidence;
96
+ }
97
+ if (phase === "risk") {
98
+ if (result.phaseExtras.risk_level) {
99
+ response.risk_level = result.phaseExtras.risk_level;
100
+ }
101
+ if (result.phaseExtras.risk_count !== undefined) {
102
+ response.risk_count = result.phaseExtras.risk_count;
103
+ }
104
+ if (result.phaseExtras.risks_promoted !== undefined) {
105
+ response.risks_promoted = result.phaseExtras.risks_promoted;
106
+ }
107
+ }
88
108
  if (result.converged) {
89
- session.status = "approved";
90
- const planPath = resolve(cwd, session.planPath);
91
- let planContent = readFileSync(planPath, "utf-8");
92
- planContent = planContent.replace(/\*\*Status:\*\* .*/, "**Status:** Approved");
93
- writeFileSync(planPath, planContent);
109
+ if (result.feedback.verdict === "blocked") {
110
+ session.status = "blocked";
111
+ }
112
+ else {
113
+ session.status = "approved";
114
+ const planPath = resolve(cwd, session.planPath);
115
+ let planContent = readFileSync(planPath, "utf-8");
116
+ planContent = planContent.replace(/\*\*Status:\*\* .*/, "**Status:** Approved");
117
+ writeFileSync(planPath, planContent);
118
+ }
94
119
  writeSessionState(cwd, session);
95
120
  // Include initial plan for change summary
96
121
  const initialPlan = readInitialPlan(cwd, session.id);
97
122
  if (initialPlan) {
98
123
  response.initial_plan = initialPlan;
124
+ const planPath = resolve(cwd, session.planPath);
99
125
  response.final_plan = readFileSync(planPath, "utf-8");
100
126
  }
101
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-feedback.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-feedback.js","sourceRoot":"","sources":["../../../../src/mcp/tools/get-feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerGetReport(server: McpServer): void;
@@ -0,0 +1,152 @@
1
+ import { z } from "zod";
2
+ import { readSessionState, readRoundFeedback, readRoundResponse, } from "../../core/session.js";
3
+ import { severityFromFeedback, formatTrajectory, } from "../../core/operations.js";
4
+ import { getReviewPhase } from "../../prompts/reviewer.js";
5
+ const inputSchema = {
6
+ session_id: z.string().describe("Session ID to generate report for"),
7
+ cwd: z
8
+ .string()
9
+ .optional()
10
+ .describe("Working directory (defaults to process.cwd())"),
11
+ };
12
+ export function registerGetReport(server) {
13
+ server.tool("planpong_get_report", "Get a detailed phase-specific report for a completed or in-progress review session. Shows direction assessment, risk register, and detail round history.", inputSchema, async (input) => {
14
+ const cwd = input.cwd ?? process.cwd();
15
+ const session = readSessionState(cwd, input.session_id);
16
+ if (!session) {
17
+ return {
18
+ content: [
19
+ {
20
+ type: "text",
21
+ text: JSON.stringify({
22
+ error: `Session not found: ${input.session_id}`,
23
+ }),
24
+ },
25
+ ],
26
+ isError: true,
27
+ };
28
+ }
29
+ const isComplete = session.status === "approved" || session.status === "blocked";
30
+ let fallbackCount = 0;
31
+ // Build direction section (round 1)
32
+ let direction = "not_reached";
33
+ const r1Feedback = readRoundFeedback(cwd, session.id, 1);
34
+ const r1Response = readRoundResponse(cwd, session.id, 1);
35
+ if (r1Feedback) {
36
+ const fb = r1Feedback;
37
+ const fallbackUsed = !!fb.fallback_used;
38
+ if (fallbackUsed)
39
+ fallbackCount++;
40
+ const dirReport = {
41
+ issues: fb.issues,
42
+ fallback_used: fallbackUsed,
43
+ };
44
+ // Extract direction-specific fields if present
45
+ if ("confidence" in fb) {
46
+ dirReport.confidence = fb.confidence;
47
+ }
48
+ if ("approach_assessment" in fb) {
49
+ dirReport.approach_assessment = fb.approach_assessment;
50
+ }
51
+ if ("alternatives" in fb) {
52
+ dirReport.alternatives = fb.alternatives;
53
+ }
54
+ if ("assumptions" in fb) {
55
+ dirReport.assumptions = fb.assumptions;
56
+ }
57
+ if (r1Response) {
58
+ dirReport.revision_responses = r1Response.responses;
59
+ }
60
+ direction = dirReport;
61
+ }
62
+ // Build risk section (round 2)
63
+ let risk = "not_reached";
64
+ const r2Feedback = readRoundFeedback(cwd, session.id, 2);
65
+ const r2Response = readRoundResponse(cwd, session.id, 2);
66
+ if (r2Feedback) {
67
+ const fb = r2Feedback;
68
+ const fallbackUsed = !!fb.fallback_used;
69
+ if (fallbackUsed)
70
+ fallbackCount++;
71
+ const riskReport = {
72
+ issues: fb.issues,
73
+ fallback_used: fallbackUsed,
74
+ };
75
+ if ("risk_level" in fb) {
76
+ riskReport.risk_level = fb.risk_level;
77
+ }
78
+ if ("risks" in fb) {
79
+ riskReport.risks = fb.risks;
80
+ }
81
+ if (r2Response) {
82
+ riskReport.revision_responses = r2Response.responses;
83
+ }
84
+ risk = riskReport;
85
+ }
86
+ // Build detail rounds (round 3+)
87
+ const detailRounds = [];
88
+ for (let r = 3; r <= session.currentRound; r++) {
89
+ const fb = readRoundFeedback(cwd, session.id, r);
90
+ if (!fb)
91
+ continue;
92
+ const fallbackUsed = !!fb.fallback_used;
93
+ if (fallbackUsed)
94
+ fallbackCount++;
95
+ const roundReport = {
96
+ round: r,
97
+ verdict: fb.verdict,
98
+ summary: fb.summary,
99
+ issues: fb.issues,
100
+ fallback_used: fallbackUsed,
101
+ };
102
+ const resp = readRoundResponse(cwd, session.id, r);
103
+ if (resp) {
104
+ roundReport.revision_responses = resp.responses;
105
+ }
106
+ detailRounds.push(roundReport);
107
+ }
108
+ // Build trajectory
109
+ const severities = [];
110
+ for (let r = 1; r <= session.currentRound; r++) {
111
+ const fb = readRoundFeedback(cwd, session.id, r);
112
+ if (fb)
113
+ severities.push(severityFromFeedback(fb));
114
+ }
115
+ const trajectory = severities.length > 0 ? formatTrajectory(severities) : "";
116
+ // Determine blocked info
117
+ let blockedInfo;
118
+ if (session.status === "blocked") {
119
+ // Find which round blocked
120
+ for (let r = 1; r <= session.currentRound; r++) {
121
+ const fb = readRoundFeedback(cwd, session.id, r);
122
+ if (fb && fb.verdict === "blocked") {
123
+ blockedInfo = { phase: getReviewPhase(r), round: r };
124
+ break;
125
+ }
126
+ }
127
+ }
128
+ const report = {
129
+ session: {
130
+ id: session.id,
131
+ status: session.status,
132
+ rounds_completed: session.currentRound,
133
+ complete: isComplete,
134
+ fallback_count: fallbackCount,
135
+ ...(blockedInfo && { blocked_in: blockedInfo }),
136
+ },
137
+ direction,
138
+ risk,
139
+ detail_rounds: detailRounds,
140
+ trajectory,
141
+ };
142
+ return {
143
+ content: [
144
+ {
145
+ type: "text",
146
+ text: JSON.stringify(report),
147
+ },
148
+ ],
149
+ };
150
+ });
151
+ }
152
+ //# sourceMappingURL=get-report.js.map