aiag-cli 3.1.0 → 3.1.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/dist/commands/prd.d.ts.map +1 -1
- package/dist/commands/prd.js +66 -63
- package/dist/commands/prd.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd.d.ts","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"prd.d.ts","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAuHpE;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsJrE"}
|
package/dist/commands/prd.js
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
* - aiag prd --validate : PRD 검증 (Validate 모드)
|
|
7
7
|
* - aiag prd --edit : PRD 편집 (Edit 모드)
|
|
8
8
|
*/
|
|
9
|
-
import { spawn } from 'child_process';
|
|
10
9
|
import fs from 'fs';
|
|
11
10
|
import path from 'path';
|
|
12
11
|
import chalk from 'chalk';
|
|
13
12
|
import ora from 'ora';
|
|
14
13
|
import { printHeader, printSuccess, printError, printWarning, printInfo, icons, colors, } from '../utils/output.js';
|
|
15
14
|
import { isBmadInstalled, loadBmadConfig, loadWorkflowStatus, scanProjectState, initBmadOutputDirs, loadWorkflowInitInstructions, loadPrdWorkflowInstructions, loadPmAgent, getPrdOutputPath, hasExistingPrd, loadExistingPrd, buildWorkflowPrompt, } from '../utils/bmadRunner.js';
|
|
15
|
+
import { runAgent, SECURITY_PRESET_DEVELOPMENT } from '../sdk/index.js';
|
|
16
16
|
/**
|
|
17
17
|
* BMAD 워크플로우 모드 결정
|
|
18
18
|
*/
|
|
@@ -23,74 +23,77 @@ function determineWorkflowMode(options) {
|
|
|
23
23
|
return 'create';
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Claude
|
|
27
|
-
* BMAD 워크플로우를 실행하기 위해 claude 명령어를 호출합니다.
|
|
26
|
+
* Claude Agent SDK를 사용하여 BMAD 워크플로우 실행
|
|
28
27
|
*/
|
|
29
28
|
async function runClaudeWithBmadWorkflow(workflowType, mode, baseDir) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
// BMAD 설정 로드
|
|
30
|
+
const config = loadBmadConfig(baseDir);
|
|
31
|
+
if (!config) {
|
|
32
|
+
return { success: false, error: 'BMAD config.yaml을 로드할 수 없습니다.' };
|
|
33
|
+
}
|
|
34
|
+
// 워크플로우 지시사항 로드
|
|
35
|
+
let instructions;
|
|
36
|
+
if (workflowType === 'init') {
|
|
37
|
+
instructions = loadWorkflowInitInstructions(baseDir);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
instructions = loadPrdWorkflowInstructions(mode, baseDir);
|
|
41
|
+
}
|
|
42
|
+
if (!instructions) {
|
|
43
|
+
return { success: false, error: 'BMAD 워크플로우 지시사항을 로드할 수 없습니다.' };
|
|
44
|
+
}
|
|
45
|
+
// PM 에이전트 정보 로드 (향후 사용)
|
|
46
|
+
loadPmAgent(baseDir);
|
|
47
|
+
// 기존 PRD 로드 (validate/edit 모드용)
|
|
48
|
+
let existingPrd;
|
|
49
|
+
if (mode !== 'create') {
|
|
50
|
+
existingPrd = loadExistingPrd(baseDir) ?? undefined;
|
|
51
|
+
if (!existingPrd) {
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
error: `기존 PRD를 찾을 수 없습니다: ${getPrdOutputPath(baseDir)}`,
|
|
55
|
+
};
|
|
36
56
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
}
|
|
58
|
+
// 프롬프트 구성
|
|
59
|
+
const prompt = buildWorkflowPrompt(workflowType, mode, config, {
|
|
60
|
+
existingPrd,
|
|
61
|
+
projectName: path.basename(baseDir),
|
|
62
|
+
});
|
|
63
|
+
// Claude Agent SDK를 사용하여 실행
|
|
64
|
+
try {
|
|
65
|
+
const result = await runAgent({
|
|
66
|
+
workingDirectory: baseDir,
|
|
67
|
+
prompt,
|
|
68
|
+
maxTurns: 100,
|
|
69
|
+
timeout: 30 * 60 * 1000, // 30분
|
|
70
|
+
securityConfig: SECURITY_PRESET_DEVELOPMENT,
|
|
71
|
+
onProgress: (message) => {
|
|
72
|
+
// 어시스턴트 메시지 실시간 출력
|
|
73
|
+
if (message.type === 'assistant') {
|
|
74
|
+
const content = message.message?.content;
|
|
75
|
+
if (Array.isArray(content)) {
|
|
76
|
+
for (const block of content) {
|
|
77
|
+
if (block && typeof block === 'object' && 'type' in block && block.type === 'text' && 'text' in block) {
|
|
78
|
+
process.stdout.write(block.text);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
if (result.success) {
|
|
86
|
+
console.log(); // 줄바꿈
|
|
87
|
+
return { success: true };
|
|
41
88
|
}
|
|
42
89
|
else {
|
|
43
|
-
|
|
90
|
+
return { success: false, error: result.error || 'BMAD 워크플로우 실행 실패' };
|
|
44
91
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
loadPmAgent(baseDir);
|
|
51
|
-
// 기존 PRD 로드 (validate/edit 모드용)
|
|
52
|
-
let existingPrd;
|
|
53
|
-
if (mode !== 'create') {
|
|
54
|
-
existingPrd = loadExistingPrd(baseDir) ?? undefined;
|
|
55
|
-
if (!existingPrd) {
|
|
56
|
-
resolve({
|
|
57
|
-
success: false,
|
|
58
|
-
error: `기존 PRD를 찾을 수 없습니다: ${getPrdOutputPath(baseDir)}`,
|
|
59
|
-
});
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// 프롬프트 구성
|
|
64
|
-
const prompt = buildWorkflowPrompt(workflowType, mode, config, {
|
|
65
|
-
existingPrd,
|
|
66
|
-
projectName: path.basename(baseDir),
|
|
67
|
-
});
|
|
68
|
-
// Claude Code 실행 (대화형 모드)
|
|
69
|
-
// -p 옵션으로 초기 프롬프트 전달
|
|
70
|
-
const claudeArgs = ['-p', prompt, '--allowedTools', 'Read,Write,Edit,Bash,Glob,Grep'];
|
|
71
|
-
const claude = spawn('claude', claudeArgs, {
|
|
72
|
-
cwd: baseDir,
|
|
73
|
-
stdio: 'inherit', // 대화형 모드 - stdin/stdout/stderr 연결
|
|
74
|
-
shell: true,
|
|
75
|
-
});
|
|
76
|
-
claude.on('close', (code) => {
|
|
77
|
-
if (code === 0) {
|
|
78
|
-
resolve({ success: true });
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
resolve({
|
|
82
|
-
success: false,
|
|
83
|
-
error: `Claude 프로세스가 비정상 종료됨 (exit code: ${code})`,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
claude.on('error', (err) => {
|
|
88
|
-
resolve({
|
|
89
|
-
success: false,
|
|
90
|
-
error: `Claude 실행 실패: ${err.message}`,
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
});
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
95
|
+
return { success: false, error: errorMessage };
|
|
96
|
+
}
|
|
94
97
|
}
|
|
95
98
|
/**
|
|
96
99
|
* PRD 명령어 메인 함수
|
package/dist/commands/prd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"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"}
|