create-claude-pipeline 0.4.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.
- package/package.json +1 -1
- package/template/.claude-pipeline/dashboard/src/components/checkpoint-banner.tsx +9 -2
- package/template/.claude-pipeline/runner/dist/pipeline-runner.js +70 -50
- package/template/.claude-pipeline/runner/dist/pipeline-runner.js.map +1 -1
- package/template/.claude-pipeline/runner/src/pipeline-runner.ts +81 -66
package/package.json
CHANGED
|
@@ -20,7 +20,7 @@ export function CheckpointBanner({ checkpoint, onRespond }: CheckpointBannerProp
|
|
|
20
20
|
value={feedback}
|
|
21
21
|
onChange={(e) => setFeedback(e.target.value)}
|
|
22
22
|
className="w-full bg-[#111827] border border-border rounded-lg p-2 text-text-primary text-sm resize-none h-20 focus:outline-none focus:border-accent-purple"
|
|
23
|
-
placeholder="
|
|
23
|
+
placeholder="추가 지시사항을 입력하세요..."
|
|
24
24
|
autoFocus
|
|
25
25
|
/>
|
|
26
26
|
<div className="flex justify-end gap-2 mt-2">
|
|
@@ -29,9 +29,16 @@ export function CheckpointBanner({ checkpoint, onRespond }: CheckpointBannerProp
|
|
|
29
29
|
</button>
|
|
30
30
|
<button
|
|
31
31
|
onClick={() => onRespond("reject", feedback)}
|
|
32
|
+
disabled={!feedback.trim()}
|
|
33
|
+
className="px-3 py-1 text-[11px] text-white bg-red-500/80 rounded-md disabled:opacity-50"
|
|
34
|
+
>
|
|
35
|
+
거절 + 재작업
|
|
36
|
+
</button>
|
|
37
|
+
<button
|
|
38
|
+
onClick={() => onRespond("approve", feedback)}
|
|
32
39
|
className="px-3 py-1 text-[11px] text-white bg-gradient-to-r from-accent-purple to-accent-purple-light rounded-md"
|
|
33
40
|
>
|
|
34
|
-
|
|
41
|
+
피드백과 함께 승인
|
|
35
42
|
</button>
|
|
36
43
|
</div>
|
|
37
44
|
</div>
|
|
@@ -268,65 +268,85 @@ async function main() {
|
|
|
268
268
|
contextWatcher.start();
|
|
269
269
|
stateManager.setStatus("running");
|
|
270
270
|
stateManager.addActivity("system", "info", "파이프라인 시작");
|
|
271
|
+
let lastFeedback = "";
|
|
271
272
|
// ── Run phases sequentially ─────────────────────────────────────
|
|
272
273
|
for (const phaseConfig of PHASES) {
|
|
273
274
|
const { phase, name, buildPrompt, expectedFiles, checkpoint } = phaseConfig;
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
stateManager.addActivity("system", "error", `Phase ${phase} 실패 (exit code: ${result.code})`);
|
|
283
|
-
break;
|
|
284
|
-
}
|
|
285
|
-
// Log Claude's output as activity (truncated)
|
|
286
|
-
const summary = result.stdout.trim().slice(0, 200);
|
|
287
|
-
if (summary) {
|
|
288
|
-
stateManager.addActivity("system", "progress", summary + (result.stdout.length > 200 ? "..." : ""));
|
|
289
|
-
}
|
|
290
|
-
// Register output files
|
|
291
|
-
for (const file of expectedFiles) {
|
|
292
|
-
if (fs.existsSync(path.join(contextDir, file))) {
|
|
293
|
-
stateManager.addOutput(`context/${file}`, phase);
|
|
294
|
-
stateManager.addActivity("system", "success", `산출물 생성: ${file}`);
|
|
275
|
+
const MAX_RETRIES = 3;
|
|
276
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
277
|
+
const isRetry = attempt > 0;
|
|
278
|
+
console.log(`\n[Runner] ── Phase ${phase}: ${name}${isRetry ? ` (재시도 #${attempt})` : ""} ──`);
|
|
279
|
+
stateManager.setPhase(phase);
|
|
280
|
+
stateManager.setStatus("running");
|
|
281
|
+
if (!isRetry) {
|
|
282
|
+
stateManager.addActivity("system", "info", `Phase ${phase} 시작: ${name}`);
|
|
295
283
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
if (existing && !existing.outputs.some((o) => o.filename === `context/${file}`)) {
|
|
301
|
-
const filePhase = phase;
|
|
302
|
-
stateManager.addOutput(`context/${file}`, filePhase);
|
|
284
|
+
// Build prompt (on retry, append feedback)
|
|
285
|
+
let prompt = buildPrompt();
|
|
286
|
+
if (isRetry && lastFeedback) {
|
|
287
|
+
prompt += `\n\n## 사용자 피드백 (수정 요청)\n${lastFeedback}\n\n위 피드백을 반영하여 이 Phase를 다시 수행해주세요.`;
|
|
303
288
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
const response = await waitForCheckpoint(PIPELINES_DIR, PIPELINE_ID);
|
|
311
|
-
if (response.action === "approve") {
|
|
312
|
-
stateManager.addActivity("system", "success", `Checkpoint Phase ${phase} approved`);
|
|
313
|
-
stateManager.setStatus("running");
|
|
314
|
-
console.log(`[Runner] Phase ${phase} approved`);
|
|
289
|
+
const result = await runClaude(prompt);
|
|
290
|
+
if (result.code !== 0) {
|
|
291
|
+
stateManager.setStatus("failed");
|
|
292
|
+
stateManager.addActivity("system", "error", `Phase ${phase} 실패 (exit code: ${result.code})`);
|
|
293
|
+
contextWatcher.stop();
|
|
294
|
+
return;
|
|
315
295
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
296
|
+
// Log Claude's output as activity (truncated)
|
|
297
|
+
const summary = result.stdout.trim().slice(0, 200);
|
|
298
|
+
if (summary) {
|
|
299
|
+
stateManager.addActivity("system", "progress", summary + (result.stdout.length > 200 ? "..." : ""));
|
|
300
|
+
}
|
|
301
|
+
// Register output files
|
|
302
|
+
for (const file of expectedFiles) {
|
|
303
|
+
if (fs.existsSync(path.join(contextDir, file))) {
|
|
304
|
+
stateManager.addOutput(`context/${file}`, phase);
|
|
305
|
+
stateManager.addActivity("system", "success", `산출물 생성: ${file}`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
for (const file of listContextFiles()) {
|
|
309
|
+
const existing = stateManager.read();
|
|
310
|
+
if (existing && !existing.outputs.some((o) => o.filename === `context/${file}`)) {
|
|
311
|
+
stateManager.addOutput(`context/${file}`, phase);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// ── Checkpoint: wait for user approval ──────────────────────
|
|
315
|
+
stateManager.addActivity("system", "info", `Checkpoint Phase ${phase}: ${checkpoint}`);
|
|
316
|
+
stateManager.setStatus("paused");
|
|
317
|
+
console.log(`[Runner] Checkpoint Phase ${phase}: waiting for approval...`);
|
|
318
|
+
try {
|
|
319
|
+
const response = await waitForCheckpoint(PIPELINES_DIR, PIPELINE_ID);
|
|
320
|
+
if (response.action === "approve") {
|
|
321
|
+
const msg = response.message
|
|
322
|
+
? `Checkpoint Phase ${phase} approved (피드백: ${response.message})`
|
|
323
|
+
: `Checkpoint Phase ${phase} approved`;
|
|
324
|
+
stateManager.addActivity("system", "success", msg);
|
|
325
|
+
console.log(`[Runner] Phase ${phase} approved`);
|
|
326
|
+
lastFeedback = "";
|
|
327
|
+
break; // Exit retry loop, proceed to next phase
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
// Reject → retry this phase with feedback
|
|
331
|
+
lastFeedback = response.message || "수정 요청";
|
|
332
|
+
stateManager.addActivity("system", "info", `Phase ${phase} 수정 요청: ${lastFeedback}`);
|
|
333
|
+
console.log(`[Runner] Phase ${phase} revision requested: ${lastFeedback}`);
|
|
334
|
+
if (attempt === MAX_RETRIES) {
|
|
335
|
+
stateManager.setStatus("failed");
|
|
336
|
+
stateManager.addActivity("system", "error", `Phase ${phase}: 최대 재시도 횟수(${MAX_RETRIES}) 초과`);
|
|
337
|
+
contextWatcher.stop();
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
// Continue retry loop
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
catch (err) {
|
|
344
|
+
console.error("[Runner] Checkpoint error:", err);
|
|
319
345
|
stateManager.setStatus("failed");
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
break;
|
|
346
|
+
contextWatcher.stop();
|
|
347
|
+
return;
|
|
323
348
|
}
|
|
324
349
|
}
|
|
325
|
-
catch (err) {
|
|
326
|
-
console.error("[Runner] Checkpoint error:", err);
|
|
327
|
-
stateManager.setStatus("failed");
|
|
328
|
-
break;
|
|
329
|
-
}
|
|
330
350
|
}
|
|
331
351
|
// ── Finalize ──────────────────────────────────────────────────
|
|
332
352
|
const finalState = stateManager.read();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-runner.js","sourceRoot":"","sources":["../src/pipeline-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline-runner.js","sourceRoot":"","sources":["../src/pipeline-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -305,84 +305,99 @@ async function main(): Promise<void> {
|
|
|
305
305
|
stateManager.setStatus("running");
|
|
306
306
|
stateManager.addActivity("system", "info", "파이프라인 시작");
|
|
307
307
|
|
|
308
|
+
let lastFeedback = "";
|
|
309
|
+
|
|
308
310
|
// ── Run phases sequentially ─────────────────────────────────────
|
|
309
311
|
for (const phaseConfig of PHASES) {
|
|
310
312
|
const { phase, name, buildPrompt, expectedFiles, checkpoint } = phaseConfig;
|
|
313
|
+
const MAX_RETRIES = 3;
|
|
311
314
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
stateManager.addActivity("system", "info", `Phase ${phase} 시작: ${name}`);
|
|
315
|
-
|
|
316
|
-
// Build and run prompt
|
|
317
|
-
const prompt = buildPrompt();
|
|
318
|
-
const result = await runClaude(prompt);
|
|
319
|
-
|
|
320
|
-
if (result.code !== 0) {
|
|
321
|
-
stateManager.setStatus("failed");
|
|
322
|
-
stateManager.addActivity(
|
|
323
|
-
"system",
|
|
324
|
-
"error",
|
|
325
|
-
`Phase ${phase} 실패 (exit code: ${result.code})`,
|
|
326
|
-
);
|
|
327
|
-
break;
|
|
328
|
-
}
|
|
315
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
316
|
+
const isRetry = attempt > 0;
|
|
329
317
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
stateManager.addActivity("system", "progress", summary + (result.stdout.length > 200 ? "..." : ""));
|
|
334
|
-
}
|
|
318
|
+
console.log(`\n[Runner] ── Phase ${phase}: ${name}${isRetry ? ` (재시도 #${attempt})` : ""} ──`);
|
|
319
|
+
stateManager.setPhase(phase);
|
|
320
|
+
stateManager.setStatus("running");
|
|
335
321
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
if (fs.existsSync(path.join(contextDir, file))) {
|
|
339
|
-
stateManager.addOutput(`context/${file}`, phase);
|
|
340
|
-
stateManager.addActivity("system", "success", `산출물 생성: ${file}`);
|
|
322
|
+
if (!isRetry) {
|
|
323
|
+
stateManager.addActivity("system", "info", `Phase ${phase} 시작: ${name}`);
|
|
341
324
|
}
|
|
342
|
-
}
|
|
343
325
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
const filePhase = phase;
|
|
349
|
-
stateManager.addOutput(`context/${file}`, filePhase);
|
|
326
|
+
// Build prompt (on retry, append feedback)
|
|
327
|
+
let prompt = buildPrompt();
|
|
328
|
+
if (isRetry && lastFeedback) {
|
|
329
|
+
prompt += `\n\n## 사용자 피드백 (수정 요청)\n${lastFeedback}\n\n위 피드백을 반영하여 이 Phase를 다시 수행해주세요.`;
|
|
350
330
|
}
|
|
351
|
-
}
|
|
352
331
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
);
|
|
332
|
+
const result = await runClaude(prompt);
|
|
333
|
+
|
|
334
|
+
if (result.code !== 0) {
|
|
335
|
+
stateManager.setStatus("failed");
|
|
336
|
+
stateManager.addActivity("system", "error", `Phase ${phase} 실패 (exit code: ${result.code})`);
|
|
337
|
+
contextWatcher.stop();
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// Log Claude's output as activity (truncated)
|
|
342
|
+
const summary = result.stdout.trim().slice(0, 200);
|
|
343
|
+
if (summary) {
|
|
344
|
+
stateManager.addActivity("system", "progress", summary + (result.stdout.length > 200 ? "..." : ""));
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Register output files
|
|
348
|
+
for (const file of expectedFiles) {
|
|
349
|
+
if (fs.existsSync(path.join(contextDir, file))) {
|
|
350
|
+
stateManager.addOutput(`context/${file}`, phase);
|
|
351
|
+
stateManager.addActivity("system", "success", `산출물 생성: ${file}`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
for (const file of listContextFiles()) {
|
|
355
|
+
const existing = stateManager.read();
|
|
356
|
+
if (existing && !existing.outputs.some((o) => o.filename === `context/${file}`)) {
|
|
357
|
+
stateManager.addOutput(`context/${file}`, phase);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// ── Checkpoint: wait for user approval ──────────────────────
|
|
362
|
+
stateManager.addActivity("system", "info", `Checkpoint Phase ${phase}: ${checkpoint}`);
|
|
363
|
+
stateManager.setStatus("paused");
|
|
364
|
+
console.log(`[Runner] Checkpoint Phase ${phase}: waiting for approval...`);
|
|
365
|
+
|
|
366
|
+
try {
|
|
367
|
+
const response = await waitForCheckpoint(PIPELINES_DIR!, PIPELINE_ID!);
|
|
368
|
+
|
|
369
|
+
if (response.action === "approve") {
|
|
370
|
+
const msg = response.message
|
|
371
|
+
? `Checkpoint Phase ${phase} approved (피드백: ${response.message})`
|
|
372
|
+
: `Checkpoint Phase ${phase} approved`;
|
|
373
|
+
stateManager.addActivity("system", "success", msg);
|
|
374
|
+
console.log(`[Runner] Phase ${phase} approved`);
|
|
375
|
+
lastFeedback = "";
|
|
376
|
+
break; // Exit retry loop, proceed to next phase
|
|
377
|
+
} else {
|
|
378
|
+
// Reject → retry this phase with feedback
|
|
379
|
+
lastFeedback = response.message || "수정 요청";
|
|
380
|
+
stateManager.addActivity(
|
|
381
|
+
"system",
|
|
382
|
+
"info",
|
|
383
|
+
`Phase ${phase} 수정 요청: ${lastFeedback}`,
|
|
384
|
+
);
|
|
385
|
+
console.log(`[Runner] Phase ${phase} revision requested: ${lastFeedback}`);
|
|
386
|
+
|
|
387
|
+
if (attempt === MAX_RETRIES) {
|
|
388
|
+
stateManager.setStatus("failed");
|
|
389
|
+
stateManager.addActivity("system", "error", `Phase ${phase}: 최대 재시도 횟수(${MAX_RETRIES}) 초과`);
|
|
390
|
+
contextWatcher.stop();
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
// Continue retry loop
|
|
394
|
+
}
|
|
395
|
+
} catch (err) {
|
|
396
|
+
console.error("[Runner] Checkpoint error:", err);
|
|
377
397
|
stateManager.setStatus("failed");
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
break;
|
|
398
|
+
contextWatcher.stop();
|
|
399
|
+
return;
|
|
381
400
|
}
|
|
382
|
-
} catch (err) {
|
|
383
|
-
console.error("[Runner] Checkpoint error:", err);
|
|
384
|
-
stateManager.setStatus("failed");
|
|
385
|
-
break;
|
|
386
401
|
}
|
|
387
402
|
}
|
|
388
403
|
|