planpong 0.5.7 → 0.6.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.
- package/README.md +47 -10
- package/dist/bin/planpong.js +3 -0
- package/dist/bin/planpong.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts +53 -0
- package/dist/src/cli/commands/init.js +221 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/ui.js +11 -19
- package/dist/src/cli/ui.js.map +1 -1
- package/dist/src/config/loader.d.ts +5 -0
- package/dist/src/config/loader.js +21 -1
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/mutate.d.ts +26 -0
- package/dist/src/config/mutate.js +45 -32
- package/dist/src/config/mutate.js.map +1 -1
- package/dist/src/core/convergence.js +1 -1
- package/dist/src/core/convergence.js.map +1 -1
- package/dist/src/core/operations.d.ts +44 -1
- package/dist/src/core/operations.js +110 -37
- package/dist/src/core/operations.js.map +1 -1
- package/dist/src/core/presentation.d.ts +39 -0
- package/dist/src/core/presentation.js +132 -0
- package/dist/src/core/presentation.js.map +1 -0
- package/dist/src/core/round-state.d.ts +15 -0
- package/dist/src/core/round-state.js +49 -0
- package/dist/src/core/round-state.js.map +1 -0
- package/dist/src/core/session.d.ts +1 -0
- package/dist/src/core/session.js +60 -1
- package/dist/src/core/session.js.map +1 -1
- package/dist/src/mcp/server.js +6 -6
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/get-feedback.d.ts +1 -2
- package/dist/src/mcp/tools/get-feedback.js +154 -56
- package/dist/src/mcp/tools/get-feedback.js.map +1 -1
- package/dist/src/mcp/tools/record-revision.d.ts +0 -6
- package/dist/src/mcp/tools/record-revision.js +170 -95
- package/dist/src/mcp/tools/record-revision.js.map +1 -1
- package/dist/src/mcp/tools/revise.d.ts +1 -7
- package/dist/src/mcp/tools/revise.js +126 -90
- package/dist/src/mcp/tools/revise.js.map +1 -1
- package/dist/src/mcp/tools/status.js +18 -1
- package/dist/src/mcp/tools/status.js.map +1 -1
- package/dist/src/providers/claude.d.ts +22 -1
- package/dist/src/providers/claude.js +10 -10
- package/dist/src/providers/claude.js.map +1 -1
- package/dist/src/providers/codex.d.ts +12 -1
- package/dist/src/providers/codex.js +6 -3
- package/dist/src/providers/codex.js.map +1 -1
- package/dist/src/providers/gemini.d.ts +58 -0
- package/dist/src/providers/gemini.js +169 -0
- package/dist/src/providers/gemini.js.map +1 -0
- package/dist/src/providers/registry.js +7 -1
- package/dist/src/providers/registry.js.map +1 -1
- package/dist/src/providers/shared.d.ts +16 -0
- package/dist/src/providers/shared.js +22 -0
- package/dist/src/providers/shared.js.map +1 -0
- package/dist/src/providers/types.d.ts +1 -1
- package/dist/src/schemas/metrics.d.ts +14 -14
- package/dist/src/schemas/metrics.js +13 -2
- package/dist/src/schemas/metrics.js.map +1 -1
- package/dist/src/schemas/session.d.ts +2 -2
- package/package.json +3 -2
|
@@ -57,48 +57,56 @@ function getNestedValue(obj, key) {
|
|
|
57
57
|
}
|
|
58
58
|
return current;
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Apply many key/value picks to the project's planpong.yaml in one atomic
|
|
62
|
+
* write. Validates every pick (key allowlist, type coercion, merged-config
|
|
63
|
+
* schema) before any disk mutation, so a failing pick aborts the entire
|
|
64
|
+
* batch with the on-disk file byte-identical to its prior state.
|
|
65
|
+
*
|
|
66
|
+
* The single-key `setConfigValue` is a thin wrapper over this; the wizard
|
|
67
|
+
* flow calls this directly with all picks accumulated in memory.
|
|
68
|
+
*/
|
|
69
|
+
export function setConfigValuesBatch(cwd, picks, opts) {
|
|
70
|
+
for (const p of picks) {
|
|
71
|
+
if (!isValidKey(p.key)) {
|
|
72
|
+
throw new Error(`Unknown config key: "${p.key}". Valid keys: ${VALID_KEYS.join(", ")}`);
|
|
73
|
+
}
|
|
63
74
|
}
|
|
64
|
-
const value = coerceValue(key, rawValue);
|
|
65
75
|
const existingPath = findConfigPath(cwd);
|
|
66
76
|
const configPath = existingPath ?? join(cwd, "planpong.yaml");
|
|
67
77
|
const created = !existingPath;
|
|
78
|
+
if (picks.length === 0) {
|
|
79
|
+
return { configPath, created: false, results: [] };
|
|
80
|
+
}
|
|
68
81
|
const raw = existingPath ? readFileSync(existingPath, "utf-8") : "";
|
|
69
82
|
const doc = parseDocument(raw);
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
const beforeJson = doc.toJSON() ?? {};
|
|
84
|
+
const testConfig = { ...loadConfig({ cwd }).valueOf() };
|
|
85
|
+
const results = [];
|
|
86
|
+
for (const p of picks) {
|
|
87
|
+
const value = coerceValue(p.key, p.rawValue);
|
|
88
|
+
const before = getNestedValue(beforeJson, p.key);
|
|
89
|
+
results.push({ key: p.key, before, after: value });
|
|
90
|
+
const parts = p.key.split(".");
|
|
91
|
+
doc.setIn(parts, value);
|
|
92
|
+
if (parts.length === 1) {
|
|
93
|
+
testConfig[parts[0]] = value;
|
|
79
94
|
}
|
|
80
95
|
else {
|
|
81
|
-
|
|
96
|
+
const section = testConfig[parts[0]] ?? {};
|
|
97
|
+
section[parts[1]] = value;
|
|
98
|
+
testConfig[parts[0]] = section;
|
|
82
99
|
}
|
|
83
100
|
}
|
|
84
|
-
// Validate the full merged config would be valid
|
|
85
|
-
const merged = doc.toJSON();
|
|
86
|
-
const testConfig = { ...loadConfig({ cwd }).valueOf() };
|
|
87
|
-
if (parts.length === 1) {
|
|
88
|
-
testConfig[parts[0]] = value;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const section = testConfig[parts[0]] ?? {};
|
|
92
|
-
section[parts[1]] = value;
|
|
93
|
-
testConfig[parts[0]] = section;
|
|
94
|
-
}
|
|
95
101
|
try {
|
|
96
102
|
PlanpongConfigSchema.parse(testConfig);
|
|
97
103
|
}
|
|
98
104
|
catch (err) {
|
|
99
105
|
if (err instanceof ZodError) {
|
|
100
|
-
const msg = err.issues
|
|
101
|
-
|
|
106
|
+
const msg = err.issues
|
|
107
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
108
|
+
.join("; ");
|
|
109
|
+
throw new Error(`Invalid value for batch: ${msg}`);
|
|
102
110
|
}
|
|
103
111
|
throw err;
|
|
104
112
|
}
|
|
@@ -108,12 +116,17 @@ export function setConfigValue(cwd, key, rawValue, opts) {
|
|
|
108
116
|
writeFileSync(tmpPath, output, "utf-8");
|
|
109
117
|
renameSync(tmpPath, configPath);
|
|
110
118
|
}
|
|
119
|
+
return { configPath, created, results };
|
|
120
|
+
}
|
|
121
|
+
export function setConfigValue(cwd, key, rawValue, opts) {
|
|
122
|
+
const batch = setConfigValuesBatch(cwd, [{ key, rawValue }], opts);
|
|
123
|
+
const r = batch.results[0];
|
|
111
124
|
return {
|
|
112
|
-
configPath,
|
|
113
|
-
key,
|
|
114
|
-
before,
|
|
115
|
-
after:
|
|
116
|
-
created,
|
|
125
|
+
configPath: batch.configPath,
|
|
126
|
+
key: r.key,
|
|
127
|
+
before: r.before,
|
|
128
|
+
after: r.after,
|
|
129
|
+
created: batch.created,
|
|
117
130
|
};
|
|
118
131
|
}
|
|
119
132
|
//# sourceMappingURL=mutate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/config/mutate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,YAAY,GAAc;IAC9B,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,gCAAgC,EAAE,MAAM,EAAE,6BAA6B,EAAE,OAAO,EAAE,QAAQ,EAAE;IACpI,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACpH,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,sCAAsC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IAC/H,EAAE,GAAG,EAAE,mBAAmB,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,EAAE,6BAA6B,EAAE,OAAO,EAAE,OAAO,EAAE;IACjI,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACtH,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACjI,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;IACpG,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1G,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,4CAA4C,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5H,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE;IAC3G,EAAE,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE;CAC7G,CAAC;AAEF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/config/mutate.ts"],"names":[],"mappings":"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"}
|
|
@@ -195,7 +195,7 @@ export function parseStructuredFeedbackForPhase(content, phase, planText = "") {
|
|
|
195
195
|
if (!result.success) {
|
|
196
196
|
throw new ZodValidationError(`Structured output failed Zod validation for ${phase} phase: ${result.error.message}`, result.error);
|
|
197
197
|
}
|
|
198
|
-
// Apply blocked rationale validation (same rules as
|
|
198
|
+
// Apply blocked rationale validation (same rules as prompted path)
|
|
199
199
|
let feedback = result.data;
|
|
200
200
|
if (phase === "direction" && feedback.verdict === "blocked") {
|
|
201
201
|
const direction = feedback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../../src/core/convergence.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,GAKnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1E;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3B,QAAQ,CAAW;IACnC,YAAY,OAAe,EAAE,QAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,GAAW;IACtD,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,0BAA0B,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,uCAAuC;IACvC,MAAM,YAAY,GAAG,8BAA8B,CAAC;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,2CAA2C;IAC3C,MAAM,WAAW,GAAG,aAAa,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,+HAA+H,CAChI,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,uBAAuB,CAA0B,QAAW;IACnE,IAAI,QAAQ,CAAC,OAAO,KAAK,qBAAqB;QAAE,OAAO,QAAQ,CAAC;IAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/B,OAAO,CAAC,IAAI,CACV,gFAAgF,CACjF,CAAC;IACF,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,gBAAyB,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa;IACzD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvF,OAAO,MAAM,CAAC,KAAK,CAAW,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa;IACzD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,MAAM,CAAC,KAAK,CAAc,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,KAAK,IAAI;gBAAE,SAAS;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAe,EACf,KAAkB,EAClB,WAAmB,EAAE;IAErB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,0BAA0B,CAClC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAErC,MAAM,MAAM,GACV,KAAK,KAAK,WAAW;QACnB,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,KAAK,KAAK,MAAM;YAChB,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,oBAAoB,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAC1B,+CAA+C,KAAK,WAAW,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EACrF,MAAM,CAAC,KAAK,CACb,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAqB,CAAC;IAC5C,IAAI,KAAK,KAAK,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,QAA6B,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CACV,+FAA+F,CAChG,CAAC;YACF,QAAQ,GAAG,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,gBAAyB,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,QAAwB,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CACV,iFAAiF,CAClF,CAAC;YACF,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAyB,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,iCAAiC;IACjC,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAE7C,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,8BAA8B;IAC9B,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AASD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,QAAuB,MAAM;IAE7B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,0BAA0B,CAClC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,MAAM,GACV,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAC1B,+CAA+C,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EACxF,MAAM,CAAC,KAAK,CACb,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,KAAkB,EAClB,WAAmB,EAAE;IAErB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED,yEAAyE;IACzE,MAAM,eAAe,GAAG,CAAC,EAAiB,EAAiB,EAAE;QAC3D,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC;IAC/C,CAAC,CAAC;IAEF,kCAAkC;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACjD,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC5E,OAAO,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;gBAC9G,OAAO,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,gBAAyB,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC5C,6BAA6B;YAC7B,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvF,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;gBAChG,OAAO,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,gBAAyB,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IAED,mCAAmC;IACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAExC,oDAAoD;IACpD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;YACzF,IAAI,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAK,QAAoC,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAK,QAAoC,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,8CAA8C,KAAK,2CAA2C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEvI,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,sDAAsD;YACtD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YACvE,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;gBACvB,+CAA+C;gBAC/C,MAAM,MAAM,GAAkB;oBAC5B,GAAG,QAAQ;oBACX,OAAO,EAAE,SAAkB;oBAC3B,aAAa,EAAE,IAAI;oBACnB,oBAAoB,EAAE,aAAa;iBACpC,CAAC;gBACD,MAAkC,CAAC,mBAAmB,GAAG,UAAU,CAAC;gBACrE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAkB;oBAC5B,GAAG,QAAQ;oBACX,OAAO,EAAE,SAAkB;oBAC3B,aAAa,EAAE,IAAI;oBACnB,oBAAoB,EAAE,aAAa;iBACpC,CAAC;gBACD,MAAkC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAClD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IAED,kFAAkF;IAClF,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAyB,CAAC,CAAC,CAAC,gBAAyB,CAAC;IAC9G,OAAO,eAAe,CAAC;QACrB,GAAG,QAAQ;QACX,OAAO,EAAE,cAAc;QACvB,aAAa,EAAE,IAAI;QACnB,oBAAoB,EAAE,aAAa;KACpC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,QAAuB,MAAM;IAE7B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,8HAA8H,CAC/H,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GACV,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IACpE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAuB;IACjD,OAAO,QAAQ,CAAC,OAAO,KAAK,gBAAgB,CAAC;AAC/C,CAAC"}
|
|
1
|
+
{"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../../src/core/convergence.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,12 +64,13 @@ export interface SessionStats {
|
|
|
64
64
|
}
|
|
65
65
|
export declare function computeSessionStats(cwd: string, sessionId: string, currentRound: number): SessionStats;
|
|
66
66
|
export declare function formatPhaseExtras(phase: ReturnType<typeof getReviewPhase>, extras: PhaseExtras): string;
|
|
67
|
+
export declare function phaseExtrasFromFeedback(phase: ReturnType<typeof getReviewPhase>, feedback: PhaseFeedback): PhaseExtras;
|
|
67
68
|
export declare function buildStatusLine(session: Session, config: PlanpongConfig, issueTrajectory: RoundSeverity[], accepted: number, rejected: number, deferred: number, linesAdded: number, linesRemoved: number, elapsed: number, phaseExtras?: PhaseExtras): string;
|
|
68
69
|
/**
|
|
69
70
|
* Build and write the status line to the plan file.
|
|
70
71
|
* Used by both CLI and MCP paths after each round.
|
|
71
72
|
*/
|
|
72
|
-
export declare function writeStatusLineToPlan(session: Session, cwd: string, config: PlanpongConfig, suffix?: string): string;
|
|
73
|
+
export declare function writeStatusLineToPlan(session: Session, cwd: string, config: PlanpongConfig, suffix?: string, phaseExtras?: PhaseExtras): string;
|
|
73
74
|
export declare function updatePlanStatusLine(planContent: string, statusLine: string): string;
|
|
74
75
|
/**
|
|
75
76
|
* Initialize a review session for an existing plan file.
|
|
@@ -81,6 +82,48 @@ export declare function initReviewSession(planPath: string, cwd: string, config:
|
|
|
81
82
|
* Run a single review round: send current plan to the reviewer for critique.
|
|
82
83
|
*/
|
|
83
84
|
export declare function runReviewRound(session: Session, cwd: string, config: PlanpongConfig, reviewerProvider: Provider): Promise<ReviewRoundResult>;
|
|
85
|
+
export interface FinalizeFeedbackInput {
|
|
86
|
+
session: Session;
|
|
87
|
+
cwd: string;
|
|
88
|
+
round: number;
|
|
89
|
+
feedback: PhaseFeedback;
|
|
90
|
+
/** True when the reviewer session was already established before this round. */
|
|
91
|
+
reviewerSessionInited: boolean;
|
|
92
|
+
/** Captured reviewer session/thread ID from this round's invocation. */
|
|
93
|
+
capturedSessionId?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface FinalizeFeedbackResult {
|
|
96
|
+
feedback: PhaseFeedback;
|
|
97
|
+
/**
|
|
98
|
+
* `true` when this call wrote artifacts; `false` when an existing
|
|
99
|
+
* `round-N-feedback.json` was detected and finalization was a no-op.
|
|
100
|
+
* The first writer wins; subsequent calls return the existing feedback
|
|
101
|
+
* without re-writing.
|
|
102
|
+
*/
|
|
103
|
+
fresh: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Persist review-round artifacts: feedback file, reviewer session ID
|
|
107
|
+
* promotion, blocked-status update, and session.json commit. Mirrors
|
|
108
|
+
* `finalizeRevision` so review and revision rounds share idempotency
|
|
109
|
+
* semantics.
|
|
110
|
+
*
|
|
111
|
+
* Write ordering:
|
|
112
|
+
* 1. `round-N-feedback.json` — the reviewer payload
|
|
113
|
+
* 2. `session.reviewerSessionId` / `reviewerSessionInitialized` (if first round)
|
|
114
|
+
* 3. `session.status = "blocked"` (when verdict === "blocked")
|
|
115
|
+
* 4. `session.json` — single write covering 2+3 (commit point)
|
|
116
|
+
*
|
|
117
|
+
* Idempotency: if `round-N-feedback.json` already exists, returns the
|
|
118
|
+
* existing feedback with `fresh: false`. Tool-level checks in
|
|
119
|
+
* `planpong_get_feedback` are the primary replay path; this helper is the
|
|
120
|
+
* operation-level safety net.
|
|
121
|
+
*
|
|
122
|
+
* **Round advancement is NOT performed here.** `currentRound` is owned by
|
|
123
|
+
* the callers driving the loop (MCP get-feedback, CLI loop). Moving it
|
|
124
|
+
* here would double-advance in MCP mode.
|
|
125
|
+
*/
|
|
126
|
+
export declare function finalizeFeedback({ session, cwd, round, feedback, reviewerSessionInited, capturedSessionId, }: FinalizeFeedbackInput): FinalizeFeedbackResult;
|
|
84
127
|
/**
|
|
85
128
|
* Run a single revision round: send plan + feedback to the planner for revision.
|
|
86
129
|
*/
|
|
@@ -123,6 +123,22 @@ export function formatPhaseExtras(phase, extras) {
|
|
|
123
123
|
}
|
|
124
124
|
return parts.join(" | ");
|
|
125
125
|
}
|
|
126
|
+
export function phaseExtrasFromFeedback(phase, feedback) {
|
|
127
|
+
const phaseExtras = {};
|
|
128
|
+
if (feedback.verdict === "blocked") {
|
|
129
|
+
phaseExtras.is_blocked = true;
|
|
130
|
+
}
|
|
131
|
+
if (phase === "direction" && "confidence" in feedback) {
|
|
132
|
+
phaseExtras.confidence = feedback.confidence;
|
|
133
|
+
}
|
|
134
|
+
if (phase === "risk" && "risk_level" in feedback) {
|
|
135
|
+
const riskFb = feedback;
|
|
136
|
+
phaseExtras.risk_level = riskFb.risk_level;
|
|
137
|
+
phaseExtras.risk_count = riskFb.risks?.length ?? 0;
|
|
138
|
+
phaseExtras.risks_promoted = feedback.issues.length;
|
|
139
|
+
}
|
|
140
|
+
return phaseExtras;
|
|
141
|
+
}
|
|
126
142
|
export function buildStatusLine(session, config, issueTrajectory, accepted, rejected, deferred, linesAdded, linesRemoved, elapsed, phaseExtras) {
|
|
127
143
|
const plannerLabel = formatProviderLabel(config.planner);
|
|
128
144
|
const reviewerLabel = formatProviderLabel(config.reviewer);
|
|
@@ -149,7 +165,7 @@ export function buildStatusLine(session, config, issueTrajectory, accepted, reje
|
|
|
149
165
|
* Build and write the status line to the plan file.
|
|
150
166
|
* Used by both CLI and MCP paths after each round.
|
|
151
167
|
*/
|
|
152
|
-
export function writeStatusLineToPlan(session, cwd, config, suffix) {
|
|
168
|
+
export function writeStatusLineToPlan(session, cwd, config, suffix, phaseExtras) {
|
|
153
169
|
const planPath = resolve(cwd, session.planPath);
|
|
154
170
|
let planContent = readFileSync(planPath, "utf-8");
|
|
155
171
|
const stats = computeSessionStats(cwd, session.id, session.currentRound);
|
|
@@ -158,7 +174,7 @@ export function writeStatusLineToPlan(session, cwd, config, suffix) {
|
|
|
158
174
|
const initialLines = session.initialLineCount ?? currentLines;
|
|
159
175
|
const linesAdded = Math.max(0, currentLines - initialLines);
|
|
160
176
|
const linesRemoved = Math.max(0, initialLines - currentLines);
|
|
161
|
-
const statusLine = buildStatusLine(session, config, stats.issueTrajectory, stats.totalAccepted, stats.totalRejected, stats.totalDeferred, linesAdded, linesRemoved, elapsed) + (suffix ? ` | ${suffix}` : "");
|
|
177
|
+
const statusLine = buildStatusLine(session, config, stats.issueTrajectory, stats.totalAccepted, stats.totalRejected, stats.totalDeferred, linesAdded, linesRemoved, elapsed, phaseExtras) + (suffix ? ` | ${suffix}` : "");
|
|
162
178
|
planContent = updatePlanStatusLine(planContent, statusLine);
|
|
163
179
|
writeFileSync(planPath, planContent);
|
|
164
180
|
session.planHash = hashFile(planPath);
|
|
@@ -234,16 +250,17 @@ function buildPriorDecisions(cwd, sessionId, currentRound) {
|
|
|
234
250
|
/**
|
|
235
251
|
* Invocation state machine — single owner of all retry/downgrade logic for
|
|
236
252
|
* provider invocations. Providers are single-shot; this function decides
|
|
237
|
-
* when to downgrade from structured output to
|
|
253
|
+
* when to downgrade from structured output (schema-enforced) to prompted
|
|
254
|
+
* output (tag-wrapped, prompt-enforced).
|
|
238
255
|
*
|
|
239
|
-
* Strict 2-attempt cap: structured (1) ->
|
|
256
|
+
* Strict 2-attempt cap: structured (1) -> prompted fallback (1) -> terminal.
|
|
240
257
|
*
|
|
241
258
|
* Failure handling:
|
|
242
259
|
* - Provider `capability` error in structured mode → downgrade
|
|
243
260
|
* - Provider `fatal` error → terminal (no downgrade)
|
|
244
261
|
* - JSON.parse failure on structured output → downgrade
|
|
245
262
|
* - Zod validation failure on structured output → terminal (NOT retried)
|
|
246
|
-
* - Any failure in
|
|
263
|
+
* - Any failure in prompted mode → terminal
|
|
247
264
|
*
|
|
248
265
|
* Observability: when `metricsContext` is provided, each attempt emits a
|
|
249
266
|
* start/end line to stderr, collects `InvocationAttempt` records, and
|
|
@@ -254,9 +271,9 @@ function buildPriorDecisions(cwd, sessionId, currentRound) {
|
|
|
254
271
|
* filesystem round-trip.
|
|
255
272
|
*/
|
|
256
273
|
async function invokeWithStateMachine(args) {
|
|
257
|
-
const { provider, invokeOptions, jsonSchema, buildPrompt, parseStructured,
|
|
274
|
+
const { provider, invokeOptions, jsonSchema, buildPrompt, parseStructured, parsePrompted, roundLabel, metricsContext, } = args;
|
|
258
275
|
const supported = await provider.checkStructuredOutputSupport();
|
|
259
|
-
let mode = supported ? "structured" : "
|
|
276
|
+
let mode = supported ? "structured" : "prompted";
|
|
260
277
|
let attempt = 0;
|
|
261
278
|
const maxAttempts = 2;
|
|
262
279
|
let lastError = null;
|
|
@@ -343,10 +360,10 @@ async function invokeWithStateMachine(args) {
|
|
|
343
360
|
response.error.kind === "capability" &&
|
|
344
361
|
attempt < maxAttempts) {
|
|
345
362
|
provider.markNonCapable();
|
|
346
|
-
mode = "
|
|
363
|
+
mode = "prompted";
|
|
347
364
|
continue;
|
|
348
365
|
}
|
|
349
|
-
// Fatal, or already in
|
|
366
|
+
// Fatal, or already in prompted mode — terminal
|
|
350
367
|
throw new Error(`${roundLabel} failed (exit ${response.error.exitCode}, ${response.error.kind}):\n${response.error.message}`);
|
|
351
368
|
}
|
|
352
369
|
// Provider returned output — record output size, try to parse.
|
|
@@ -357,7 +374,7 @@ async function invokeWithStateMachine(args) {
|
|
|
357
374
|
try {
|
|
358
375
|
const parsed = mode === "structured"
|
|
359
376
|
? parseStructured(response.output)
|
|
360
|
-
:
|
|
377
|
+
: parsePrompted(response.output);
|
|
361
378
|
attemptRecord.ok = true;
|
|
362
379
|
attempts.push(attemptRecord);
|
|
363
380
|
logEnd(roundLabel, providerLabel, mode, promptChars, outputChars, response.duration ?? 0, true, null, metricsContext);
|
|
@@ -387,10 +404,10 @@ async function invokeWithStateMachine(args) {
|
|
|
387
404
|
attempts.push(attemptRecord);
|
|
388
405
|
logEnd(roundLabel, providerLabel, mode, promptChars, outputChars, response.duration ?? 0, false, `parse: ${truncate(lastError.message, 200)}`, metricsContext);
|
|
389
406
|
provider.markNonCapable();
|
|
390
|
-
mode = "
|
|
407
|
+
mode = "prompted";
|
|
391
408
|
continue;
|
|
392
409
|
}
|
|
393
|
-
//
|
|
410
|
+
// Prompted parse failure — terminal
|
|
394
411
|
attemptRecord.ok = false;
|
|
395
412
|
attemptRecord.error_kind = "parse";
|
|
396
413
|
attempts.push(attemptRecord);
|
|
@@ -449,6 +466,19 @@ export async function runReviewRound(session, cwd, config, reviewerProvider) {
|
|
|
449
466
|
const planPath = resolve(cwd, session.planPath);
|
|
450
467
|
const planContent = readFileSync(planPath, "utf-8");
|
|
451
468
|
const phase = getReviewPhase(round);
|
|
469
|
+
const existingFeedback = readRoundFeedback(cwd, session.id, round);
|
|
470
|
+
if (existingFeedback) {
|
|
471
|
+
const severity = severityFromFeedback(existingFeedback);
|
|
472
|
+
const converged = isConverged(existingFeedback);
|
|
473
|
+
const phaseExtras = phaseExtrasFromFeedback(phase, existingFeedback);
|
|
474
|
+
return {
|
|
475
|
+
round,
|
|
476
|
+
feedback: existingFeedback,
|
|
477
|
+
severity,
|
|
478
|
+
converged,
|
|
479
|
+
phaseExtras,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
452
482
|
const priorDecisions = buildPriorDecisions(cwd, session.id, round);
|
|
453
483
|
// Persist a snapshot of the plan as the reviewer is about to see it. On
|
|
454
484
|
// round N+1 we'll diff against this snapshot to produce the incremental
|
|
@@ -491,7 +521,7 @@ export async function runReviewRound(session, cwd, config, reviewerProvider) {
|
|
|
491
521
|
? buildIncrementalReviewPrompt(planDiff ?? planContent, planContent, priorDecisions, phase, structuredOutput)
|
|
492
522
|
: buildReviewPrompt(planContent, priorDecisions, phase, structuredOutput),
|
|
493
523
|
parseStructured: (output) => parseStructuredFeedbackForPhase(output, phase, planContent),
|
|
494
|
-
|
|
524
|
+
parsePrompted: (output) => parseFeedbackForPhase(output, phase, planContent),
|
|
495
525
|
roundLabel: `Round ${round} review`,
|
|
496
526
|
metricsContext: {
|
|
497
527
|
sessionId: session.id,
|
|
@@ -500,37 +530,68 @@ export async function runReviewRound(session, cwd, config, reviewerProvider) {
|
|
|
500
530
|
role: "review",
|
|
501
531
|
},
|
|
502
532
|
});
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
533
|
+
const finalized = finalizeFeedback({
|
|
534
|
+
session,
|
|
535
|
+
cwd,
|
|
536
|
+
round,
|
|
537
|
+
feedback,
|
|
538
|
+
reviewerSessionInited,
|
|
539
|
+
capturedSessionId,
|
|
540
|
+
});
|
|
541
|
+
const severity = severityFromFeedback(finalized.feedback);
|
|
542
|
+
const converged = isConverged(finalized.feedback);
|
|
543
|
+
const phaseExtras = phaseExtrasFromFeedback(phase, finalized.feedback);
|
|
506
544
|
const timing = metrics ? summarizeTiming(metrics) : undefined;
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
545
|
+
return {
|
|
546
|
+
round,
|
|
547
|
+
feedback: finalized.feedback,
|
|
548
|
+
severity,
|
|
549
|
+
converged,
|
|
550
|
+
phaseExtras,
|
|
551
|
+
timing,
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Persist review-round artifacts: feedback file, reviewer session ID
|
|
556
|
+
* promotion, blocked-status update, and session.json commit. Mirrors
|
|
557
|
+
* `finalizeRevision` so review and revision rounds share idempotency
|
|
558
|
+
* semantics.
|
|
559
|
+
*
|
|
560
|
+
* Write ordering:
|
|
561
|
+
* 1. `round-N-feedback.json` — the reviewer payload
|
|
562
|
+
* 2. `session.reviewerSessionId` / `reviewerSessionInitialized` (if first round)
|
|
563
|
+
* 3. `session.status = "blocked"` (when verdict === "blocked")
|
|
564
|
+
* 4. `session.json` — single write covering 2+3 (commit point)
|
|
565
|
+
*
|
|
566
|
+
* Idempotency: if `round-N-feedback.json` already exists, returns the
|
|
567
|
+
* existing feedback with `fresh: false`. Tool-level checks in
|
|
568
|
+
* `planpong_get_feedback` are the primary replay path; this helper is the
|
|
569
|
+
* operation-level safety net.
|
|
570
|
+
*
|
|
571
|
+
* **Round advancement is NOT performed here.** `currentRound` is owned by
|
|
572
|
+
* the callers driving the loop (MCP get-feedback, CLI loop). Moving it
|
|
573
|
+
* here would double-advance in MCP mode.
|
|
574
|
+
*/
|
|
575
|
+
export function finalizeFeedback({ session, cwd, round, feedback, reviewerSessionInited, capturedSessionId, }) {
|
|
576
|
+
const existing = readRoundFeedback(cwd, session.id, round);
|
|
577
|
+
if (existing) {
|
|
578
|
+
return { feedback: existing, fresh: false };
|
|
579
|
+
}
|
|
580
|
+
writeRoundFeedback(cwd, session.id, round, feedback);
|
|
581
|
+
let sessionDirty = false;
|
|
510
582
|
if (!reviewerSessionInited && capturedSessionId) {
|
|
511
583
|
session.reviewerSessionId = capturedSessionId;
|
|
512
584
|
session.reviewerSessionInitialized = true;
|
|
513
|
-
|
|
585
|
+
sessionDirty = true;
|
|
514
586
|
}
|
|
515
|
-
// Extract phase-specific extras for status line
|
|
516
|
-
const phaseExtras = {};
|
|
517
587
|
if (feedback.verdict === "blocked") {
|
|
518
|
-
phaseExtras.is_blocked = true;
|
|
519
588
|
session.status = "blocked";
|
|
520
|
-
|
|
521
|
-
}
|
|
522
|
-
if (phase === "direction" && "confidence" in feedback) {
|
|
523
|
-
phaseExtras.confidence = feedback.confidence;
|
|
589
|
+
sessionDirty = true;
|
|
524
590
|
}
|
|
525
|
-
if (
|
|
526
|
-
|
|
527
|
-
const riskFb = feedback;
|
|
528
|
-
phaseExtras.risk_level = riskFb.risk_level;
|
|
529
|
-
phaseExtras.risk_count = riskFb.risks?.length ?? 0;
|
|
530
|
-
phaseExtras.risks_promoted = feedback.issues.length;
|
|
531
|
-
}
|
|
591
|
+
if (sessionDirty) {
|
|
592
|
+
writeSessionState(cwd, session);
|
|
532
593
|
}
|
|
533
|
-
return {
|
|
594
|
+
return { feedback, fresh: true };
|
|
534
595
|
}
|
|
535
596
|
/**
|
|
536
597
|
* Run a single revision round: send plan + feedback to the planner for revision.
|
|
@@ -539,6 +600,18 @@ export async function runRevisionRound(session, cwd, config, plannerProvider) {
|
|
|
539
600
|
const round = session.currentRound;
|
|
540
601
|
const planPath = resolve(cwd, session.planPath);
|
|
541
602
|
const planContent = readFileSync(planPath, "utf-8");
|
|
603
|
+
const existingResponse = readRoundResponse(cwd, session.id, round);
|
|
604
|
+
if (existingResponse) {
|
|
605
|
+
const tally = tallyResponses(existingResponse.responses);
|
|
606
|
+
return {
|
|
607
|
+
round,
|
|
608
|
+
revision: existingResponse,
|
|
609
|
+
accepted: tally.accepted,
|
|
610
|
+
rejected: tally.rejected,
|
|
611
|
+
deferred: tally.deferred,
|
|
612
|
+
planUpdated: false,
|
|
613
|
+
};
|
|
614
|
+
}
|
|
542
615
|
const feedback = readRoundFeedback(cwd, session.id, round);
|
|
543
616
|
if (!feedback) {
|
|
544
617
|
throw new Error(`No feedback found for session ${session.id} round ${round}`);
|
|
@@ -565,7 +638,7 @@ export async function runRevisionRound(session, cwd, config, plannerProvider) {
|
|
|
565
638
|
jsonSchema,
|
|
566
639
|
buildPrompt: (structuredOutput) => buildRevisionPrompt(planContent, feedback, keyDecisions, null, phase, structuredOutput, config.revision_mode),
|
|
567
640
|
parseStructured: (output) => parseStructuredRevision(output, revisionShape),
|
|
568
|
-
|
|
641
|
+
parsePrompted: (output) => parseRevision(output, revisionShape),
|
|
569
642
|
roundLabel: `Round ${round} revision`,
|
|
570
643
|
metricsContext: {
|
|
571
644
|
sessionId: session.id,
|
|
@@ -832,7 +905,7 @@ async function runEditsRetry(args) {
|
|
|
832
905
|
};
|
|
833
906
|
const response = await plannerProvider.invoke(prompt, options);
|
|
834
907
|
const attemptRecord = {
|
|
835
|
-
mode: useStructured ? "structured" : "
|
|
908
|
+
mode: useStructured ? "structured" : "prompted",
|
|
836
909
|
provider: plannerProvider.name,
|
|
837
910
|
model: config.planner.model ?? null,
|
|
838
911
|
effort: config.planner.effort ?? null,
|