@alevental/cccp 0.4.3 → 0.5.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.
- package/.claude/skills/cccp-run/SKILL.md +23 -2
- package/dist/autoresearch.d.ts +6 -1
- package/dist/autoresearch.js +2 -13
- package/dist/autoresearch.js.map +1 -1
- package/dist/cli.js +18 -4
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts +1 -0
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -1
- package/dist/db.js +10 -3
- package/dist/db.js.map +1 -1
- package/dist/gate/feedback-artifact.d.ts +9 -0
- package/dist/gate/feedback-artifact.js +52 -0
- package/dist/gate/feedback-artifact.js.map +1 -0
- package/dist/gate/gate-strategy.d.ts +2 -0
- package/dist/gate/gate-watcher.js +2 -0
- package/dist/gate/gate-watcher.js.map +1 -1
- package/dist/mcp/gate-notifier.d.ts +9 -2
- package/dist/mcp/gate-notifier.js +150 -62
- package/dist/mcp/gate-notifier.js.map +1 -1
- package/dist/mcp/mcp-server.js +134 -7
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/pge.d.ts +22 -1
- package/dist/pge.js +194 -102
- package/dist/pge.js.map +1 -1
- package/dist/pipeline.js +2 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/prompt.d.ts +2 -0
- package/dist/prompt.js +3 -0
- package/dist/prompt.js.map +1 -1
- package/dist/runner.js +265 -148
- package/dist/runner.js.map +1 -1
- package/dist/state.d.ts +1 -1
- package/dist/state.js +2 -1
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.js.map +1 -1
- package/examples/channel-demo.yaml +24 -0
- package/package.json +1 -1
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import { openDatabase } from "../db.js";
|
|
2
|
-
import {
|
|
2
|
+
import { writeFeedbackArtifact } from "../gate/feedback-artifact.js";
|
|
3
|
+
import { discoverRuns, loadState, saveState, setStageArtifact } from "../state.js";
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
|
-
// Gate notifier — polls for pending gates and
|
|
5
|
+
// Gate notifier — polls for pending gates and notifies via MCP
|
|
6
|
+
//
|
|
7
|
+
// Notification tiers (tried in order):
|
|
8
|
+
// 1. Channel notification (push-based, experimental)
|
|
9
|
+
// 2. Elicitation form (interactive, may not be supported)
|
|
10
|
+
// 3. Fallback: user discovers via cccp_status / cccp_gate_respond tools
|
|
5
11
|
// ---------------------------------------------------------------------------
|
|
6
12
|
const DEFAULT_POLL_MS = 2000;
|
|
7
13
|
/**
|
|
8
14
|
* Watches for pending human gates across all pipeline runs and sends
|
|
9
|
-
* MCP
|
|
15
|
+
* MCP notifications to the connected Claude Code session.
|
|
16
|
+
*
|
|
17
|
+
* Uses channels as primary notification (push), with elicitation as fallback.
|
|
10
18
|
*
|
|
11
19
|
* Lifecycle: call `start()` after the MCP server connects, `stop()` on shutdown.
|
|
12
20
|
*/
|
|
13
21
|
export class GateNotifier {
|
|
14
22
|
opts;
|
|
15
23
|
seenGates = new Set();
|
|
24
|
+
channelSupported = null; // null = not yet tested
|
|
16
25
|
elicitationSupported = true;
|
|
17
26
|
intervalId = null;
|
|
18
|
-
|
|
27
|
+
pendingNotification = null;
|
|
19
28
|
constructor(opts) {
|
|
20
29
|
this.opts = opts;
|
|
21
30
|
}
|
|
@@ -35,9 +44,10 @@ export class GateNotifier {
|
|
|
35
44
|
// Poll loop
|
|
36
45
|
// -------------------------------------------------------------------------
|
|
37
46
|
async poll() {
|
|
38
|
-
|
|
47
|
+
// If both notification mechanisms are disabled, stop polling.
|
|
48
|
+
if (this.channelSupported === false && !this.elicitationSupported)
|
|
39
49
|
return;
|
|
40
|
-
if (this.
|
|
50
|
+
if (this.pendingNotification)
|
|
41
51
|
return; // one at a time
|
|
42
52
|
try {
|
|
43
53
|
const db = await openDatabase(this.opts.projectDir);
|
|
@@ -51,17 +61,23 @@ export class GateNotifier {
|
|
|
51
61
|
this.seenGates.delete(key);
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
|
-
// Find new pending gates.
|
|
64
|
+
// Find new pending gates (filtered by session affinity).
|
|
55
65
|
for (const run of runs) {
|
|
56
66
|
const gate = run.state.gate;
|
|
57
67
|
if (!gate || gate.status !== "pending")
|
|
58
68
|
continue;
|
|
69
|
+
// Session affinity: skip gates belonging to other MCP sessions.
|
|
70
|
+
if (this.opts.sessionId &&
|
|
71
|
+
run.state.sessionId &&
|
|
72
|
+
run.state.sessionId !== this.opts.sessionId) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
59
75
|
const key = this.gateKey(run.state.runId, gate.stageName);
|
|
60
76
|
if (this.seenGates.has(key))
|
|
61
77
|
continue;
|
|
62
|
-
// Mark as seen immediately to avoid duplicate
|
|
78
|
+
// Mark as seen immediately to avoid duplicate notifications.
|
|
63
79
|
this.seenGates.add(key);
|
|
64
|
-
this.
|
|
80
|
+
this.pendingNotification = this.notifyGate(run);
|
|
65
81
|
// Only process one gate per poll cycle.
|
|
66
82
|
return;
|
|
67
83
|
}
|
|
@@ -71,75 +87,141 @@ export class GateNotifier {
|
|
|
71
87
|
}
|
|
72
88
|
}
|
|
73
89
|
// -------------------------------------------------------------------------
|
|
74
|
-
//
|
|
90
|
+
// Notification dispatch (channel → elicitation → silent fallback)
|
|
75
91
|
// -------------------------------------------------------------------------
|
|
76
|
-
async
|
|
92
|
+
async notifyGate(run) {
|
|
93
|
+
const gate = run.state.gate;
|
|
94
|
+
const gateKey = this.gateKey(run.state.runId, gate.stageName);
|
|
95
|
+
try {
|
|
96
|
+
// Tier 1: Try channel notification (non-blocking push).
|
|
97
|
+
if (this.channelSupported !== false) {
|
|
98
|
+
const sent = await this.sendChannelNotification(run);
|
|
99
|
+
if (sent)
|
|
100
|
+
return; // Channel delivered — no need for elicitation.
|
|
101
|
+
}
|
|
102
|
+
// Tier 2: Fall back to elicitation (blocking form).
|
|
103
|
+
if (this.elicitationSupported) {
|
|
104
|
+
await this.elicitGateApproval(run);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Tier 3: Both unavailable. User will discover via cccp_status / cccp_gate_respond.
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Transient error — remove from seen so it can retry.
|
|
111
|
+
this.seenGates.delete(gateKey);
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
this.pendingNotification = null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// -------------------------------------------------------------------------
|
|
118
|
+
// Tier 1: Channel notification
|
|
119
|
+
// -------------------------------------------------------------------------
|
|
120
|
+
async sendChannelNotification(run) {
|
|
77
121
|
const gate = run.state.gate;
|
|
78
122
|
const runShort = run.state.runId.slice(0, 8);
|
|
79
123
|
try {
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
124
|
+
// Channel notifications use an experimental protocol method.
|
|
125
|
+
// The SDK types don't include this notification type, so we cast through unknown.
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
+
const notificationFn = this.opts.server.server.notification;
|
|
128
|
+
if (!notificationFn) {
|
|
129
|
+
this.channelSupported = false;
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
await notificationFn.call(this.opts.server.server, {
|
|
133
|
+
method: "notifications/claude/channel",
|
|
134
|
+
params: {
|
|
135
|
+
content: [
|
|
136
|
+
`Pipeline gate "${gate.stageName}" requires your review (run ${runShort}).`,
|
|
88
137
|
gate.prompt ? `\n${gate.prompt}` : "",
|
|
138
|
+
`\nUse cccp_gate_review to see full context, discuss with the user, then respond via cccp_gate_respond.`,
|
|
89
139
|
]
|
|
90
140
|
.filter(Boolean)
|
|
91
141
|
.join("\n"),
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
title: "Decision",
|
|
98
|
-
description: "Approve or reject this gate",
|
|
99
|
-
enum: ["approve", "reject"],
|
|
100
|
-
default: "approve",
|
|
101
|
-
},
|
|
102
|
-
feedback: {
|
|
103
|
-
type: "string",
|
|
104
|
-
title: "Feedback",
|
|
105
|
-
description: "Optional feedback (passed to generator on rejection)",
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
required: ["decision"],
|
|
142
|
+
meta: {
|
|
143
|
+
severity: "high",
|
|
144
|
+
type: "gate_pending",
|
|
145
|
+
run_id: runShort,
|
|
146
|
+
stage: gate.stageName,
|
|
109
147
|
},
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.elicitationSupported = false;
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
// Handle the elicitation result.
|
|
118
|
-
if (result.action === "cancel") {
|
|
119
|
-
// User dismissed — remove from seen so it can be re-prompted.
|
|
120
|
-
this.seenGates.delete(this.gateKey(run.state.runId, gate.stageName));
|
|
121
|
-
return;
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
if (this.channelSupported === null) {
|
|
151
|
+
this.channelSupported = true;
|
|
122
152
|
}
|
|
123
|
-
|
|
124
|
-
// User explicitly declined — write rejection.
|
|
125
|
-
await this.writeGateResponse(run, false);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
// action === "accept" — check the form content.
|
|
129
|
-
const decision = result.content?.decision;
|
|
130
|
-
const feedback = result.content?.feedback;
|
|
131
|
-
const approved = decision !== "reject";
|
|
132
|
-
await this.writeGateResponse(run, approved, feedback);
|
|
153
|
+
return true;
|
|
133
154
|
}
|
|
134
155
|
catch {
|
|
135
|
-
//
|
|
136
|
-
|
|
156
|
+
// Channel not supported — disable and fall through to elicitation.
|
|
157
|
+
this.channelSupported = false;
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// -------------------------------------------------------------------------
|
|
162
|
+
// Tier 2: Elicitation form
|
|
163
|
+
// -------------------------------------------------------------------------
|
|
164
|
+
async elicitGateApproval(run) {
|
|
165
|
+
const gate = run.state.gate;
|
|
166
|
+
const runShort = run.state.runId.slice(0, 8);
|
|
167
|
+
let result;
|
|
168
|
+
try {
|
|
169
|
+
result = await this.opts.server.server.elicitInput({
|
|
170
|
+
message: [
|
|
171
|
+
`Pipeline gate requires approval (run ${runShort}).`,
|
|
172
|
+
"",
|
|
173
|
+
`Stage: ${gate.stageName}`,
|
|
174
|
+
gate.prompt ? `\n${gate.prompt}` : "",
|
|
175
|
+
"",
|
|
176
|
+
`Reject with feedback to retry the generation cycle with your guidance.`,
|
|
177
|
+
]
|
|
178
|
+
.filter(Boolean)
|
|
179
|
+
.join("\n"),
|
|
180
|
+
requestedSchema: {
|
|
181
|
+
type: "object",
|
|
182
|
+
properties: {
|
|
183
|
+
decision: {
|
|
184
|
+
type: "string",
|
|
185
|
+
title: "Decision",
|
|
186
|
+
description: "Approve or reject this gate",
|
|
187
|
+
enum: ["approve", "reject"],
|
|
188
|
+
default: "approve",
|
|
189
|
+
},
|
|
190
|
+
feedback: {
|
|
191
|
+
type: "string",
|
|
192
|
+
title: "Feedback",
|
|
193
|
+
description: "Optional feedback (on rejection, triggers retry with your feedback)",
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
required: ["decision"],
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// Elicitation not supported by this client — disable for the session.
|
|
202
|
+
this.elicitationSupported = false;
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// Handle the elicitation result.
|
|
206
|
+
if (result.action === "cancel") {
|
|
207
|
+
// User dismissed — remove from seen so it can be re-prompted.
|
|
137
208
|
this.seenGates.delete(this.gateKey(run.state.runId, gate.stageName));
|
|
209
|
+
return;
|
|
138
210
|
}
|
|
139
|
-
|
|
140
|
-
|
|
211
|
+
if (result.action === "decline") {
|
|
212
|
+
// User explicitly declined — write rejection.
|
|
213
|
+
await this.writeGateResponse(run, false);
|
|
214
|
+
return;
|
|
141
215
|
}
|
|
216
|
+
// action === "accept" — check the form content.
|
|
217
|
+
const decision = result.content?.decision;
|
|
218
|
+
const feedback = result.content?.feedback;
|
|
219
|
+
const approved = decision !== "reject";
|
|
220
|
+
await this.writeGateResponse(run, approved, feedback);
|
|
142
221
|
}
|
|
222
|
+
// -------------------------------------------------------------------------
|
|
223
|
+
// State writes
|
|
224
|
+
// -------------------------------------------------------------------------
|
|
143
225
|
async writeGateResponse(run, approved, feedback) {
|
|
144
226
|
// Reload state to ensure we have the latest (gate may have been resolved externally).
|
|
145
227
|
const freshState = await loadState(run.state.runId, this.opts.projectDir, true);
|
|
@@ -149,6 +231,12 @@ export class GateNotifier {
|
|
|
149
231
|
freshState.gate.status = approved ? "approved" : "rejected";
|
|
150
232
|
freshState.gate.feedback = feedback;
|
|
151
233
|
freshState.gate.respondedAt = new Date().toISOString();
|
|
234
|
+
// Write feedback as a numbered artifact file.
|
|
235
|
+
if (feedback) {
|
|
236
|
+
const feedbackPath = await writeFeedbackArtifact(run.artifactDir, freshState.gate.stageName, feedback, approved);
|
|
237
|
+
freshState.gate.feedbackPath = feedbackPath;
|
|
238
|
+
setStageArtifact(freshState, freshState.gate.stageName, "gate-feedback", feedbackPath);
|
|
239
|
+
}
|
|
152
240
|
await saveState(freshState);
|
|
153
241
|
}
|
|
154
242
|
// -------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-notifier.js","sourceRoot":"","sources":["../../src/mcp/gate-notifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gate-notifier.js","sourceRoot":"","sources":["../../src/mcp/gate-notifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGnF,8EAA8E;AAC9E,+DAA+D;AAC/D,EAAE;AACF,uCAAuC;AACvC,uDAAuD;AACvD,4DAA4D;AAC5D,0EAA0E;AAC1E,8EAA8E;AAE9E,MAAM,eAAe,GAAG,IAAI,CAAC;AAU7B;;;;;;;GAOG;AACH,MAAM,OAAO,YAAY;IAOH;IANZ,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,gBAAgB,GAAmB,IAAI,CAAC,CAAC,wBAAwB;IACjE,oBAAoB,GAAG,IAAI,CAAC;IAC5B,UAAU,GAA0C,IAAI,CAAC;IACzD,mBAAmB,GAAyB,IAAI,CAAC;IAEzD,YAAoB,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAAG,CAAC;IAEjD,KAAK;QACH,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,eAAe,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAEpE,KAAK,CAAC,IAAI;QAChB,8DAA8D;QAC9D,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAC1E,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO,CAAC,gBAAgB;QAEtD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtD,mEAAmE;YACnE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS;gBAEjD,gEAAgE;gBAChE,IACE,IAAI,CAAC,IAAI,CAAC,SAAS;oBACnB,GAAG,CAAC,KAAK,CAAC,SAAS;oBACnB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAC3C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAEtC,6DAA6D;gBAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChD,wCAAwC;gBACxC,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,kEAAkE;IAClE,4EAA4E;IAEpE,KAAK,CAAC,UAAU,CAAC,GAAkB;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,wDAAwD;YACxD,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,IAAI;oBAAE,OAAO,CAAC,+CAA+C;YACnE,CAAC;YAED,oDAAoD;YACpD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,oFAAoF;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;YACtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,+BAA+B;IAC/B,4EAA4E;IAEpE,KAAK,CAAC,uBAAuB,CAAC,GAAkB;QACtD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,6DAA6D;YAC7D,kFAAkF;YAClF,8DAA8D;YAC9D,MAAM,cAAc,GAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAc,CAAC,YAE3C,CAAC;YAEd,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACjD,MAAM,EAAE,8BAA8B;gBACtC,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP,kBAAkB,IAAI,CAAC,SAAS,+BAA+B,QAAQ,IAAI;wBAC3E,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;wBACrC,wGAAwG;qBACzG;yBACE,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE;wBACJ,QAAQ,EAAE,MAAM;wBAChB,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,IAAI,CAAC,SAAS;qBACtB;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAEpE,KAAK,CAAC,kBAAkB,CAAC,GAAkB;QACjD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACjD,OAAO,EAAE;oBACP,wCAAwC,QAAQ,IAAI;oBACpD,EAAE;oBACF,UAAU,IAAI,CAAC,SAAS,EAAE;oBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;oBACrC,EAAE;oBACF,wEAAwE;iBACzE;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,IAAI,CAAC;gBACb,eAAe,EAAE;oBACf,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAiB;4BACvB,KAAK,EAAE,UAAU;4BACjB,WAAW,EAAE,6BAA6B;4BAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;4BAC3B,OAAO,EAAE,SAAS;yBACnB;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAiB;4BACvB,KAAK,EAAE,UAAU;4BACjB,WAAW,EAAE,qEAAqE;yBACnF;qBACF;oBACD,QAAQ,EAAE,CAAC,UAAU,CAAC;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,8DAA8D;YAC9D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,8CAA8C;YAC9C,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAA8B,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAA8B,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;QACvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAEpE,KAAK,CAAC,iBAAiB,CAC7B,GAAkB,EAClB,QAAiB,EACjB,QAAiB;QAEjB,sFAAsF;QACtF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,CAAC,mCAAmC;QAC7C,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEvD,8CAA8C;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAC/D,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YAC5C,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAEpE,OAAO,CAAC,KAAa,EAAE,SAAiB;QAC9C,OAAO,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC;IACjC,CAAC;CACF"}
|
package/dist/mcp/mcp-server.js
CHANGED
|
@@ -3,9 +3,11 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { readFile, readdir } from "node:fs/promises";
|
|
5
5
|
import { resolve } from "node:path";
|
|
6
|
+
import { randomUUID } from "node:crypto";
|
|
6
7
|
import { openDatabase } from "../db.js";
|
|
8
|
+
import { writeFeedbackArtifact } from "../gate/feedback-artifact.js";
|
|
7
9
|
import { GateNotifier } from "./gate-notifier.js";
|
|
8
|
-
import { saveState, discoverRuns } from "../state.js";
|
|
10
|
+
import { saveState, setStageArtifact, discoverRuns } from "../state.js";
|
|
9
11
|
// ---------------------------------------------------------------------------
|
|
10
12
|
// Run resolution
|
|
11
13
|
// ---------------------------------------------------------------------------
|
|
@@ -105,10 +107,22 @@ function textResult(text) {
|
|
|
105
107
|
// MCP server
|
|
106
108
|
// ---------------------------------------------------------------------------
|
|
107
109
|
export async function startMcpServer() {
|
|
110
|
+
// Generate a unique session ID for this MCP server instance.
|
|
111
|
+
// Used for gate notification routing — only gates from runs started
|
|
112
|
+
// with this session ID (via --session-id on cccp run) will trigger
|
|
113
|
+
// notifications in this session.
|
|
114
|
+
const sessionId = randomUUID();
|
|
115
|
+
const projectDir = process.cwd();
|
|
108
116
|
const server = new McpServer({
|
|
109
117
|
name: "cccp",
|
|
110
118
|
version: "0.1.0",
|
|
119
|
+
}, {
|
|
120
|
+
capabilities: {
|
|
121
|
+
experimental: { "claude/channel": {} },
|
|
122
|
+
},
|
|
111
123
|
});
|
|
124
|
+
// --- cccp_session_id ---
|
|
125
|
+
server.tool("cccp_session_id", "Get this MCP server's session ID. Pass this as --session-id when running pipelines so gate notifications route to this session.", {}, async () => textResult(sessionId));
|
|
112
126
|
// --- cccp_runs ---
|
|
113
127
|
server.tool("cccp_runs", "List all pipeline runs (active and completed). Shows run ID, pipeline name, project, status, and any pending gates.", {}, async () => {
|
|
114
128
|
const runs = await discoverRuns(process.cwd());
|
|
@@ -130,7 +144,7 @@ export async function startMcpServer() {
|
|
|
130
144
|
return textResult(formatStatus(result.run.state));
|
|
131
145
|
});
|
|
132
146
|
// --- cccp_gate_respond ---
|
|
133
|
-
server.tool("cccp_gate_respond", "Approve or reject a pending human gate. Use cccp_runs or cccp_status first to see pending gates.", {
|
|
147
|
+
server.tool("cccp_gate_respond", "Approve or reject a pending human gate. Use cccp_runs or cccp_status first to see pending gates. On rejection with feedback, the feedback is written as a numbered markdown artifact and passed to the generator for retry.", {
|
|
134
148
|
run_id: z
|
|
135
149
|
.string()
|
|
136
150
|
.optional()
|
|
@@ -141,8 +155,12 @@ export async function startMcpServer() {
|
|
|
141
155
|
feedback: z
|
|
142
156
|
.string()
|
|
143
157
|
.optional()
|
|
144
|
-
.describe("Optional feedback.
|
|
145
|
-
|
|
158
|
+
.describe("Optional feedback (markdown). Written as an artifact and passed to the generator on retry."),
|
|
159
|
+
feedback_file: z
|
|
160
|
+
.string()
|
|
161
|
+
.optional()
|
|
162
|
+
.describe("Path to a markdown file with detailed feedback. Takes precedence over inline feedback."),
|
|
163
|
+
}, async ({ run_id, approved, feedback, feedback_file }) => {
|
|
146
164
|
const result = await resolveRun(run_id);
|
|
147
165
|
if ("error" in result)
|
|
148
166
|
return textResult(result.error);
|
|
@@ -150,12 +168,31 @@ export async function startMcpServer() {
|
|
|
150
168
|
if (!state.gate || state.gate.status !== "pending") {
|
|
151
169
|
return textResult("No pending gate on this run.");
|
|
152
170
|
}
|
|
171
|
+
// Resolve feedback content: feedback_file takes precedence.
|
|
172
|
+
let feedbackContent = feedback;
|
|
173
|
+
if (feedback_file) {
|
|
174
|
+
try {
|
|
175
|
+
feedbackContent = await readFile(resolve(feedback_file), "utf-8");
|
|
176
|
+
}
|
|
177
|
+
catch (err) {
|
|
178
|
+
return textResult(`Could not read feedback file: ${err instanceof Error ? err.message : String(err)}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
153
181
|
state.gate.status = approved ? "approved" : "rejected";
|
|
154
|
-
state.gate.feedback =
|
|
182
|
+
state.gate.feedback = feedbackContent;
|
|
155
183
|
state.gate.respondedAt = new Date().toISOString();
|
|
184
|
+
// Write feedback as a numbered artifact file.
|
|
185
|
+
if (feedbackContent) {
|
|
186
|
+
const feedbackPath = await writeFeedbackArtifact(artifactDir, state.gate.stageName, feedbackContent, approved);
|
|
187
|
+
state.gate.feedbackPath = feedbackPath;
|
|
188
|
+
setStageArtifact(state, state.gate.stageName, `gate-feedback`, feedbackPath);
|
|
189
|
+
}
|
|
156
190
|
await saveState(state);
|
|
157
191
|
const action = approved ? "approved" : "rejected";
|
|
158
|
-
|
|
192
|
+
const feedbackNote = state.gate.feedbackPath
|
|
193
|
+
? ` Feedback artifact: ${state.gate.feedbackPath}`
|
|
194
|
+
: feedbackContent ? ` Feedback: ${feedbackContent}` : "";
|
|
195
|
+
return textResult(`Gate "${state.gate.stageName}" ${action}.${feedbackNote}`);
|
|
159
196
|
});
|
|
160
197
|
// --- cccp_logs ---
|
|
161
198
|
server.tool("cccp_logs", "View recent agent activity logs for a pipeline run.", {
|
|
@@ -249,13 +286,103 @@ export async function startMcpServer() {
|
|
|
249
286
|
return textResult(`Could not read artifact at ${match.path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
250
287
|
}
|
|
251
288
|
});
|
|
289
|
+
// --- cccp_gate_review ---
|
|
290
|
+
server.tool("cccp_gate_review", "Get comprehensive gate review context: pending gate info, stage artifacts, evaluation history, and contract. Use this before responding to a gate to have an informed discussion with the user.", {
|
|
291
|
+
run_id: z
|
|
292
|
+
.string()
|
|
293
|
+
.optional()
|
|
294
|
+
.describe("Run ID prefix (8+ chars). Omit if only one run exists."),
|
|
295
|
+
}, async ({ run_id }) => {
|
|
296
|
+
const result = await resolveRun(run_id);
|
|
297
|
+
if ("error" in result)
|
|
298
|
+
return textResult(result.error);
|
|
299
|
+
const { state, artifactDir } = result.run;
|
|
300
|
+
if (!state.gate || state.gate.status !== "pending") {
|
|
301
|
+
return textResult("No pending gate on this run.");
|
|
302
|
+
}
|
|
303
|
+
const gate = state.gate;
|
|
304
|
+
const stageName = gate.stageName;
|
|
305
|
+
const stageState = state.stages[stageName];
|
|
306
|
+
const lines = [
|
|
307
|
+
`# Gate Review: ${stageName}`,
|
|
308
|
+
"",
|
|
309
|
+
`**Run**: ${state.runId.slice(0, 8)} (${state.pipeline})`,
|
|
310
|
+
`**Stage**: ${stageName} (type: ${stageState?.type ?? "unknown"})`,
|
|
311
|
+
`**Prompt**: ${gate.prompt ?? "(none)"}`,
|
|
312
|
+
"",
|
|
313
|
+
];
|
|
314
|
+
// Stage artifacts
|
|
315
|
+
if (stageState?.artifacts && Object.keys(stageState.artifacts).length > 0) {
|
|
316
|
+
lines.push("## Artifacts", "");
|
|
317
|
+
for (const [key, path] of Object.entries(stageState.artifacts)) {
|
|
318
|
+
lines.push(`- **${key}**: ${path}`);
|
|
319
|
+
}
|
|
320
|
+
lines.push("");
|
|
321
|
+
}
|
|
322
|
+
// Read key artifacts inline for context
|
|
323
|
+
const inlineArtifacts = ["contract", "deliverable", "task-plan"];
|
|
324
|
+
for (const key of inlineArtifacts) {
|
|
325
|
+
const path = stageState?.artifacts?.[key];
|
|
326
|
+
if (!path)
|
|
327
|
+
continue;
|
|
328
|
+
try {
|
|
329
|
+
const content = await readFile(path, "utf-8");
|
|
330
|
+
const truncated = content.length > 2000
|
|
331
|
+
? content.slice(0, 2000) + "\n\n... (truncated, use cccp_artifacts to read full content)"
|
|
332
|
+
: content;
|
|
333
|
+
lines.push(`## ${key}`, "", "```", truncated, "```", "");
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// File may not exist or be unreadable
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Latest evaluation
|
|
340
|
+
if (stageState?.artifacts) {
|
|
341
|
+
const evalKeys = Object.keys(stageState.artifacts)
|
|
342
|
+
.filter((k) => k.startsWith("evaluation-"))
|
|
343
|
+
.sort();
|
|
344
|
+
const latestEvalKey = evalKeys[evalKeys.length - 1];
|
|
345
|
+
if (latestEvalKey) {
|
|
346
|
+
const evalPath = stageState.artifacts[latestEvalKey];
|
|
347
|
+
try {
|
|
348
|
+
const evalContent = await readFile(evalPath, "utf-8");
|
|
349
|
+
const truncated = evalContent.length > 2000
|
|
350
|
+
? evalContent.slice(0, 2000) + "\n\n... (truncated)"
|
|
351
|
+
: evalContent;
|
|
352
|
+
lines.push(`## Latest Evaluation (${latestEvalKey})`, "", "```", truncated, "```", "");
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// ignore
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Iteration info
|
|
360
|
+
if (stageState?.iteration) {
|
|
361
|
+
lines.push(`## Iteration History`, "");
|
|
362
|
+
lines.push(`Current iteration: ${stageState.iteration}`);
|
|
363
|
+
lines.push(`Last step: ${stageState.pgeStep ?? "unknown"}`);
|
|
364
|
+
lines.push("");
|
|
365
|
+
}
|
|
366
|
+
// Pipeline stage overview
|
|
367
|
+
lines.push("## Pipeline Status", "");
|
|
368
|
+
for (const name of state.stageOrder) {
|
|
369
|
+
const s = state.stages[name];
|
|
370
|
+
const icon = s.status === "passed" ? "✓" :
|
|
371
|
+
s.status === "failed" || s.status === "error" ? "✗" :
|
|
372
|
+
s.status === "in_progress" ? "⚙" :
|
|
373
|
+
s.status === "skipped" ? "⏭" : "○";
|
|
374
|
+
lines.push(` ${icon} ${name}: ${s.status}`);
|
|
375
|
+
}
|
|
376
|
+
return textResult(lines.join("\n"));
|
|
377
|
+
});
|
|
252
378
|
// --- Start server ---
|
|
253
379
|
const transport = new StdioServerTransport();
|
|
254
380
|
await server.connect(transport);
|
|
255
381
|
// --- Start gate notifier ---
|
|
256
382
|
const notifier = new GateNotifier({
|
|
257
383
|
server,
|
|
258
|
-
projectDir
|
|
384
|
+
projectDir,
|
|
385
|
+
sessionId,
|
|
259
386
|
});
|
|
260
387
|
notifier.start();
|
|
261
388
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/pge.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { PgeStage, PgeResult, RunContext, PipelineState } from "./types.js";
|
|
2
|
+
/** Options for retrying a PGE cycle with existing artifacts and/or gate feedback. */
|
|
3
|
+
export interface PgeCycleOptions {
|
|
4
|
+
/** Path to gate feedback file from a human reviewer. Injected into generator prompt. */
|
|
5
|
+
gateFeedbackPath?: string;
|
|
6
|
+
/** Reuse an existing contract (skip planner + contract writer). */
|
|
7
|
+
existingContractPath?: string;
|
|
8
|
+
/** Reuse an existing task plan (skip planner). */
|
|
9
|
+
existingTaskPlanPath?: string;
|
|
10
|
+
}
|
|
2
11
|
/**
|
|
3
12
|
* Execute a full Plan-Generate-Evaluate cycle for a PGE stage.
|
|
4
13
|
*
|
|
@@ -8,5 +17,17 @@ import type { PgeStage, PgeResult, RunContext, PipelineState } from "./types.js"
|
|
|
8
17
|
* 3. Dispatch evaluator agent (evaluation mode) → evaluation-N.md
|
|
9
18
|
* 4. Parse evaluation (regex on ### Overall: PASS/FAIL)
|
|
10
19
|
* 5. Route: PASS → done, FAIL + iters left → retry, FAIL + max → escalate
|
|
20
|
+
*
|
|
21
|
+
* When `options.existingContractPath` and `options.existingTaskPlanPath` are set,
|
|
22
|
+
* steps 0 and 1 are skipped (used on gate feedback retry to avoid regenerating
|
|
23
|
+
* the plan and contract).
|
|
24
|
+
*/
|
|
25
|
+
export declare function runPgeCycle(stage: PgeStage, ctx: RunContext, state: PipelineState, onProgress?: (eventType?: string, eventData?: Record<string, unknown>) => Promise<void>, options?: PgeCycleOptions): Promise<PgeResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Dispatch the evaluator agent with a human reviewer's feedback file.
|
|
28
|
+
* The evaluator incorporates the feedback into a structured FAIL evaluation
|
|
29
|
+
* that the generator can consume on retry via `previousEvaluation`.
|
|
30
|
+
*
|
|
31
|
+
* Returns the path to the evaluation file.
|
|
11
32
|
*/
|
|
12
|
-
export declare function
|
|
33
|
+
export declare function dispatchEvaluatorWithFeedback(stage: PgeStage, ctx: RunContext, state: PipelineState, pgeResult: PgeResult, feedbackPath: string, onProgress?: (eventType?: string, eventData?: Record<string, unknown>) => Promise<void>): Promise<string>;
|