aiag-cli 1.0.0 → 1.2.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 +32 -10
- package/dist/cli.js +33 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts +16 -0
- package/dist/commands/auto.d.ts.map +1 -0
- package/dist/commands/auto.js +391 -0
- package/dist/commands/auto.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +57 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +9 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +91 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/work.d.ts +10 -0
- package/dist/commands/work.d.ts.map +1 -0
- package/dist/commands/work.js +173 -0
- package/dist/commands/work.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/progress.d.ts +4 -0
- package/dist/utils/progress.d.ts.map +1 -1
- package/dist/utils/progress.js +17 -0
- package/dist/utils/progress.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -44,16 +44,38 @@ aiag commit
|
|
|
44
44
|
|
|
45
45
|
## 명령어
|
|
46
46
|
|
|
47
|
-
| 명령어 | 설명
|
|
48
|
-
| -------------------- |
|
|
49
|
-
| `aiag init` | 현재 디렉토리에 AIAG 초기화
|
|
50
|
-
| `aiag status` | 프로젝트 진행 상황 표시
|
|
51
|
-
| `aiag next` | 다음 기능 추천 받기
|
|
52
|
-
| `aiag
|
|
53
|
-
| `aiag
|
|
54
|
-
| `aiag
|
|
55
|
-
| `aiag
|
|
56
|
-
| `aiag
|
|
47
|
+
| 명령어 | 설명 |
|
|
48
|
+
| -------------------- | ----------------------------------- |
|
|
49
|
+
| `aiag init` | 현재 디렉토리에 AIAG 초기화 |
|
|
50
|
+
| `aiag status` | 프로젝트 진행 상황 표시 |
|
|
51
|
+
| `aiag next` | 다음 기능 추천 받기 |
|
|
52
|
+
| `aiag run <id>` | 특정 기능 구현 프롬프트 생성 |
|
|
53
|
+
| `aiag work [id]` | 단일 기능 작업 시작 (세션 + 프롬프트) |
|
|
54
|
+
| `aiag auto [count]` | 자동 연속 구현 모드 |
|
|
55
|
+
| `aiag test [id]` | 기능 테스트 실행 |
|
|
56
|
+
| `aiag complete <id>` | 기능을 완료로 표시 |
|
|
57
|
+
| `aiag commit` | 자동 메시지로 변경사항 커밋 |
|
|
58
|
+
| `aiag session start` | 코딩 세션 시작 |
|
|
59
|
+
| `aiag session end` | 현재 세션 종료 |
|
|
60
|
+
|
|
61
|
+
### 작업 지시 명령어
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# 특정 기능의 구현 프롬프트 생성 (Claude Code에 붙여넣기용)
|
|
65
|
+
aiag run AUTH-001
|
|
66
|
+
|
|
67
|
+
# 단일 기능 작업 시작 (세션 컨텍스트 업데이트 + 프롬프트)
|
|
68
|
+
aiag work
|
|
69
|
+
aiag work AUTH-001
|
|
70
|
+
|
|
71
|
+
# 자동 연속 구현 (비대화형)
|
|
72
|
+
aiag auto # 기본 5개
|
|
73
|
+
aiag auto 10 # 10개 기능
|
|
74
|
+
aiag auto --dry-run # 시뮬레이션
|
|
75
|
+
aiag auto --loop # 무한 루프 (Ctrl+C로 중단)
|
|
76
|
+
aiag auto --resume # 진행 중인 작업부터 이어서 시작
|
|
77
|
+
aiag auto --loop --resume # 이어서 + 무한 루프
|
|
78
|
+
```
|
|
57
79
|
|
|
58
80
|
## 디렉토리 구조
|
|
59
81
|
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,9 @@ import { test } from './commands/test.js';
|
|
|
7
7
|
import { complete } from './commands/complete.js';
|
|
8
8
|
import { commit } from './commands/commit.js';
|
|
9
9
|
import { sessionStart, sessionEnd } from './commands/session.js';
|
|
10
|
+
import { run } from './commands/run.js';
|
|
11
|
+
import { work } from './commands/work.js';
|
|
12
|
+
import { auto } from './commands/auto.js';
|
|
10
13
|
const program = new Command();
|
|
11
14
|
program.name('aiag').description('AIAG CLI - Long-Running Agent Harness Tool').version('1.0.0');
|
|
12
15
|
// aiag init
|
|
@@ -75,6 +78,36 @@ session
|
|
|
75
78
|
.action(async () => {
|
|
76
79
|
await sessionEnd();
|
|
77
80
|
});
|
|
81
|
+
// aiag run <id> - 특정 기능 구현 지시 프롬프트 생성
|
|
82
|
+
program
|
|
83
|
+
.command('run <featureId>')
|
|
84
|
+
.description('Generate implementation prompt for a specific feature')
|
|
85
|
+
.option('--copy', 'Copy prompt to clipboard')
|
|
86
|
+
.action(async (featureId, options) => {
|
|
87
|
+
await run(featureId, options);
|
|
88
|
+
});
|
|
89
|
+
// aiag work [id] - 단일 기능 작업 시작
|
|
90
|
+
program
|
|
91
|
+
.command('work [featureId]')
|
|
92
|
+
.description('Start working on a feature (updates session context)')
|
|
93
|
+
.option('-c, --category <category>', 'Filter by category')
|
|
94
|
+
.option('-p, --priority <priority>', 'Filter by priority')
|
|
95
|
+
.action(async (featureId, options) => {
|
|
96
|
+
await work(featureId, options);
|
|
97
|
+
});
|
|
98
|
+
// aiag auto [count] - 자동 연속 구현
|
|
99
|
+
program
|
|
100
|
+
.command('auto [count]')
|
|
101
|
+
.description('Automatically implement multiple features (use --loop for infinite mode)')
|
|
102
|
+
.option('--loop', 'Run indefinitely until stopped (Ctrl+C)')
|
|
103
|
+
.option('--resume', 'Resume from in-progress feature in session_context.md')
|
|
104
|
+
.option('--until <featureId>', 'Stop when reaching this feature')
|
|
105
|
+
.option('-c, --category <category>', 'Filter by category')
|
|
106
|
+
.option('--dry-run', 'Show what would be done without making changes')
|
|
107
|
+
.option('--cooldown <seconds>', 'Seconds to wait between features', '5')
|
|
108
|
+
.action(async (count, options) => {
|
|
109
|
+
await auto(count, options);
|
|
110
|
+
});
|
|
78
111
|
// Parse arguments
|
|
79
112
|
program.parse();
|
|
80
113
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface AutoOptions {
|
|
2
|
+
until?: string;
|
|
3
|
+
category?: string;
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
cooldown?: number;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
resume?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* aiag auto [count] - 자동 연속 구현 모드
|
|
11
|
+
* --loop: 무한 루프 모드 (Ctrl+C로 중단)
|
|
12
|
+
* --resume: 진행 중인 작업부터 이어서 시작
|
|
13
|
+
*/
|
|
14
|
+
export declare function auto(count?: string, options?: AutoOptions): Promise<void>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AASD;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,KAAK,GAAE,MAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2NxF"}
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { readFeatureList, writeFeatureList, getProgress } from '../utils/featureList.js';
|
|
5
|
+
import { appendToProgress } from '../utils/progress.js';
|
|
6
|
+
import { printHeader, printError, printSuccess, printWarning, printSection, colors, icons, } from '../utils/output.js';
|
|
7
|
+
import { PRIORITY_ORDER } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* aiag auto [count] - 자동 연속 구현 모드
|
|
10
|
+
* --loop: 무한 루프 모드 (Ctrl+C로 중단)
|
|
11
|
+
* --resume: 진행 중인 작업부터 이어서 시작
|
|
12
|
+
*/
|
|
13
|
+
export async function auto(count = '5', options = {}) {
|
|
14
|
+
const baseDir = process.cwd();
|
|
15
|
+
const isLoopMode = options.loop === true;
|
|
16
|
+
const maxFeatures = isLoopMode ? Infinity : (parseInt(count, 10) || 5);
|
|
17
|
+
const cooldownMs = (options.cooldown || 5) * 1000;
|
|
18
|
+
const featureList = readFeatureList(baseDir);
|
|
19
|
+
if (!featureList) {
|
|
20
|
+
printError('No feature_list.json found. Run "aiag init" first.');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// --resume 옵션: 진행 중인 작업 확인
|
|
24
|
+
let resumeFeature;
|
|
25
|
+
if (options.resume) {
|
|
26
|
+
resumeFeature = getInProgressFeature(baseDir, featureList);
|
|
27
|
+
if (resumeFeature) {
|
|
28
|
+
console.log(colors.info(`Resuming in-progress feature: ${resumeFeature.id}`));
|
|
29
|
+
console.log('');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const modeDescription = isLoopMode ? 'Loop Mode (Ctrl+C to stop)' : `Processing up to ${maxFeatures} features`;
|
|
33
|
+
printHeader(`AIAG Auto Mode - ${modeDescription}`);
|
|
34
|
+
if (options.dryRun) {
|
|
35
|
+
console.log(colors.warning('DRY RUN MODE - No changes will be made'));
|
|
36
|
+
console.log('');
|
|
37
|
+
}
|
|
38
|
+
const initialProgress = getProgress(baseDir);
|
|
39
|
+
const results = [];
|
|
40
|
+
const startTime = Date.now();
|
|
41
|
+
// Ctrl+C 핸들링 (loop 모드용)
|
|
42
|
+
let shouldStop = false;
|
|
43
|
+
const handleSignal = () => {
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(colors.warning('Stopping after current feature...'));
|
|
46
|
+
shouldStop = true;
|
|
47
|
+
};
|
|
48
|
+
if (isLoopMode) {
|
|
49
|
+
process.on('SIGINT', handleSignal);
|
|
50
|
+
process.on('SIGTERM', handleSignal);
|
|
51
|
+
}
|
|
52
|
+
// 자동화 시작 로그
|
|
53
|
+
const autoStartLog = `
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Auto Session: ${new Date().toISOString()}
|
|
57
|
+
|
|
58
|
+
### Configuration
|
|
59
|
+
- Mode: ${isLoopMode ? 'loop (infinite)' : `batch (${maxFeatures})`}
|
|
60
|
+
- Resume: ${options.resume || false}
|
|
61
|
+
- Category filter: ${options.category || 'all'}
|
|
62
|
+
- Until feature: ${options.until || 'none'}
|
|
63
|
+
- Dry run: ${options.dryRun || false}
|
|
64
|
+
|
|
65
|
+
### Processing Log
|
|
66
|
+
`;
|
|
67
|
+
appendToProgress(baseDir, autoStartLog);
|
|
68
|
+
let processedCount = 0;
|
|
69
|
+
let completedCount = 0;
|
|
70
|
+
let failedCount = 0;
|
|
71
|
+
let iterationCount = 0;
|
|
72
|
+
while (iterationCount < maxFeatures && !shouldStop) {
|
|
73
|
+
// 최신 feature list 다시 로드
|
|
74
|
+
const currentFeatureList = readFeatureList(baseDir);
|
|
75
|
+
if (!currentFeatureList)
|
|
76
|
+
break;
|
|
77
|
+
// 다음 기능 선택 (첫 번째 iteration에서 resume 체크)
|
|
78
|
+
let feature;
|
|
79
|
+
if (iterationCount === 0 && resumeFeature) {
|
|
80
|
+
feature = resumeFeature;
|
|
81
|
+
resumeFeature = undefined; // 한 번만 사용
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
feature = selectNextFeature(currentFeatureList, options);
|
|
85
|
+
}
|
|
86
|
+
if (!feature) {
|
|
87
|
+
console.log('');
|
|
88
|
+
console.log(colors.success('🎉 No more features to process!'));
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
// until 옵션 체크
|
|
92
|
+
if (options.until && feature.id === options.until) {
|
|
93
|
+
console.log('');
|
|
94
|
+
console.log(colors.info(`Reached target feature: ${options.until}`));
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
iterationCount++;
|
|
98
|
+
processedCount++;
|
|
99
|
+
const featureStartTime = Date.now();
|
|
100
|
+
console.log('');
|
|
101
|
+
const progressDisplay = isLoopMode ? `#${iterationCount}` : `${iterationCount}/${maxFeatures}`;
|
|
102
|
+
console.log(colors.bold(`[${progressDisplay}] ${feature.id}: ${feature.description}`));
|
|
103
|
+
if (options.dryRun) {
|
|
104
|
+
console.log(` ${icons.arrow} Would implement...`);
|
|
105
|
+
console.log(` ${icons.arrow} Would test...`);
|
|
106
|
+
console.log(` ${icons.arrow} Would complete...`);
|
|
107
|
+
results.push({
|
|
108
|
+
featureId: feature.id,
|
|
109
|
+
status: 'skipped',
|
|
110
|
+
duration: 0,
|
|
111
|
+
});
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
// 1. Claude Code로 구현 시도
|
|
116
|
+
console.log(` ${icons.arrow} Implementing...`);
|
|
117
|
+
const implementResult = await runClaudeCode(baseDir, feature);
|
|
118
|
+
if (!implementResult.success) {
|
|
119
|
+
throw new Error(implementResult.error || 'Implementation failed');
|
|
120
|
+
}
|
|
121
|
+
// 2. 테스트 실행
|
|
122
|
+
console.log(` ${icons.arrow} Testing...`);
|
|
123
|
+
const testResult = await runTest(baseDir, feature);
|
|
124
|
+
if (!testResult.success) {
|
|
125
|
+
throw new Error('Test failed');
|
|
126
|
+
}
|
|
127
|
+
console.log(` ${icons.success} Passed`);
|
|
128
|
+
// 3. 완료 처리
|
|
129
|
+
console.log(` ${icons.arrow} Completing...`);
|
|
130
|
+
await markComplete(baseDir, feature.id);
|
|
131
|
+
console.log(` ${icons.success} Done`);
|
|
132
|
+
// 4. 커밋
|
|
133
|
+
console.log(` ${icons.arrow} Committing...`);
|
|
134
|
+
const commitResult = await runCommit(baseDir, feature);
|
|
135
|
+
if (commitResult.success) {
|
|
136
|
+
console.log(` ${icons.success} ${commitResult.hash}`);
|
|
137
|
+
}
|
|
138
|
+
completedCount++;
|
|
139
|
+
results.push({
|
|
140
|
+
featureId: feature.id,
|
|
141
|
+
status: 'success',
|
|
142
|
+
duration: Date.now() - featureStartTime,
|
|
143
|
+
});
|
|
144
|
+
// progress.md에 기록
|
|
145
|
+
appendToProgress(baseDir, `- [x] ${feature.id}: Completed automatically\n`);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
failedCount++;
|
|
149
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
150
|
+
console.log(` ${icons.error} Failed: ${errorMessage}`);
|
|
151
|
+
results.push({
|
|
152
|
+
featureId: feature.id,
|
|
153
|
+
status: 'failed',
|
|
154
|
+
error: errorMessage,
|
|
155
|
+
duration: Date.now() - featureStartTime,
|
|
156
|
+
});
|
|
157
|
+
// 롤백
|
|
158
|
+
console.log(` ${icons.arrow} Rolling back...`);
|
|
159
|
+
await rollback(baseDir);
|
|
160
|
+
// progress.md에 기록
|
|
161
|
+
appendToProgress(baseDir, `- [ ] ${feature.id}: Failed - ${errorMessage}\n`);
|
|
162
|
+
}
|
|
163
|
+
// 쿨다운 (다음 iteration이 있고 중단 요청이 없을 때만)
|
|
164
|
+
if (!shouldStop) {
|
|
165
|
+
await sleep(cooldownMs);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// 시그널 핸들러 제거
|
|
169
|
+
if (isLoopMode) {
|
|
170
|
+
process.off('SIGINT', handleSignal);
|
|
171
|
+
process.off('SIGTERM', handleSignal);
|
|
172
|
+
}
|
|
173
|
+
// 최종 결과 출력
|
|
174
|
+
const totalDuration = Date.now() - startTime;
|
|
175
|
+
const finalProgress = getProgress(baseDir);
|
|
176
|
+
printSection('Summary');
|
|
177
|
+
console.log('');
|
|
178
|
+
console.log(` ${colors.success('Completed:')} ${completedCount}`);
|
|
179
|
+
console.log(` ${colors.error('Failed:')} ${failedCount}`);
|
|
180
|
+
console.log(` ${colors.dim('Skipped:')} ${results.filter((r) => r.status === 'skipped').length}`);
|
|
181
|
+
console.log('');
|
|
182
|
+
console.log(` ${colors.dim('Progress:')} ${initialProgress.percentage}% → ${finalProgress.percentage}%`);
|
|
183
|
+
console.log(` ${colors.dim('Duration:')} ${formatDuration(totalDuration)}`);
|
|
184
|
+
console.log('');
|
|
185
|
+
// 최종 로그
|
|
186
|
+
const autoEndLog = `
|
|
187
|
+
### Summary
|
|
188
|
+
- Processed: ${processedCount}
|
|
189
|
+
- Completed: ${completedCount}
|
|
190
|
+
- Failed: ${failedCount}
|
|
191
|
+
- Progress: ${initialProgress.percentage}% → ${finalProgress.percentage}%
|
|
192
|
+
- Duration: ${formatDuration(totalDuration)}
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
`;
|
|
196
|
+
appendToProgress(baseDir, autoEndLog);
|
|
197
|
+
if (completedCount > 0) {
|
|
198
|
+
printSuccess(`Auto mode completed: ${completedCount} features implemented`);
|
|
199
|
+
}
|
|
200
|
+
else if (failedCount > 0) {
|
|
201
|
+
printWarning('Auto mode finished with failures');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* session_context.md에서 진행 중인 작업을 찾아 반환
|
|
206
|
+
*/
|
|
207
|
+
function getInProgressFeature(baseDir, featureList) {
|
|
208
|
+
const sessionContextPath = path.join(baseDir, '.aiag', 'session_context.md');
|
|
209
|
+
if (!fs.existsSync(sessionContextPath)) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
const content = fs.readFileSync(sessionContextPath, 'utf-8');
|
|
214
|
+
// ID 추출: "- ID: FEATURE-001" 패턴
|
|
215
|
+
const idMatch = content.match(/- ID:\s*(\S+)/);
|
|
216
|
+
if (!idMatch)
|
|
217
|
+
return undefined;
|
|
218
|
+
const featureId = idMatch[1];
|
|
219
|
+
// 해당 feature가 아직 완료되지 않았는지 확인
|
|
220
|
+
const feature = featureList.features.find((f) => f.id === featureId);
|
|
221
|
+
if (feature && !feature.passes) {
|
|
222
|
+
return feature;
|
|
223
|
+
}
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function selectNextFeature(featureList, options) {
|
|
231
|
+
let candidates = featureList.features.filter((f) => !f.passes);
|
|
232
|
+
// 카테고리 필터
|
|
233
|
+
if (options.category) {
|
|
234
|
+
candidates = candidates.filter((f) => f.category === options.category);
|
|
235
|
+
}
|
|
236
|
+
// 의존성 확인
|
|
237
|
+
candidates = candidates.filter((f) => {
|
|
238
|
+
if (!f.dependsOn || f.dependsOn.length === 0)
|
|
239
|
+
return true;
|
|
240
|
+
return f.dependsOn.every((depId) => {
|
|
241
|
+
const dep = featureList.features.find((df) => df.id === depId);
|
|
242
|
+
return dep?.passes === true;
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
// 우선순위로 정렬
|
|
246
|
+
candidates.sort((a, b) => PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority]);
|
|
247
|
+
return candidates[0];
|
|
248
|
+
}
|
|
249
|
+
async function runClaudeCode(baseDir, feature) {
|
|
250
|
+
const prompt = generatePrompt(feature);
|
|
251
|
+
return new Promise((resolve) => {
|
|
252
|
+
const claude = spawn('claude', ['--print', prompt], {
|
|
253
|
+
cwd: baseDir,
|
|
254
|
+
shell: true,
|
|
255
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
256
|
+
});
|
|
257
|
+
let stdout = '';
|
|
258
|
+
let stderr = '';
|
|
259
|
+
claude.stdout?.on('data', (data) => {
|
|
260
|
+
stdout += data.toString();
|
|
261
|
+
});
|
|
262
|
+
claude.stderr?.on('data', (data) => {
|
|
263
|
+
stderr += data.toString();
|
|
264
|
+
});
|
|
265
|
+
claude.on('close', (code) => {
|
|
266
|
+
if (code === 0) {
|
|
267
|
+
resolve({ success: true });
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
resolve({ success: false, error: stderr || 'Claude Code failed' });
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
claude.on('error', (err) => {
|
|
274
|
+
resolve({ success: false, error: err.message });
|
|
275
|
+
});
|
|
276
|
+
// 타임아웃 (5분)
|
|
277
|
+
setTimeout(() => {
|
|
278
|
+
claude.kill();
|
|
279
|
+
resolve({ success: false, error: 'Timeout' });
|
|
280
|
+
}, 5 * 60 * 1000);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
async function runTest(baseDir, feature) {
|
|
284
|
+
const testCommand = feature.testCommand || 'bun test';
|
|
285
|
+
return new Promise((resolve) => {
|
|
286
|
+
const test = spawn(testCommand, [], {
|
|
287
|
+
cwd: baseDir,
|
|
288
|
+
shell: true,
|
|
289
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
290
|
+
});
|
|
291
|
+
test.on('close', (code) => {
|
|
292
|
+
resolve({ success: code === 0 });
|
|
293
|
+
});
|
|
294
|
+
test.on('error', () => {
|
|
295
|
+
resolve({ success: false });
|
|
296
|
+
});
|
|
297
|
+
// 타임아웃 (2분)
|
|
298
|
+
setTimeout(() => {
|
|
299
|
+
test.kill();
|
|
300
|
+
resolve({ success: false });
|
|
301
|
+
}, 2 * 60 * 1000);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
async function markComplete(baseDir, featureId) {
|
|
305
|
+
const featureList = readFeatureList(baseDir);
|
|
306
|
+
if (!featureList)
|
|
307
|
+
return;
|
|
308
|
+
const feature = featureList.features.find((f) => f.id === featureId);
|
|
309
|
+
if (feature) {
|
|
310
|
+
feature.passes = true;
|
|
311
|
+
feature.lastTestedAt = new Date().toISOString();
|
|
312
|
+
feature.implementedBy = 'auto';
|
|
313
|
+
writeFeatureList(featureList, baseDir);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
async function runCommit(baseDir, feature) {
|
|
317
|
+
return new Promise((resolve) => {
|
|
318
|
+
const message = `feat: ${feature.id} - ${feature.description} (auto)`;
|
|
319
|
+
const commit = spawn('git', ['add', '-A', '&&', 'git', 'commit', '-m', message], {
|
|
320
|
+
cwd: baseDir,
|
|
321
|
+
shell: true,
|
|
322
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
323
|
+
});
|
|
324
|
+
let stdout = '';
|
|
325
|
+
commit.stdout?.on('data', (data) => {
|
|
326
|
+
stdout += data.toString();
|
|
327
|
+
});
|
|
328
|
+
commit.on('close', (code) => {
|
|
329
|
+
if (code === 0) {
|
|
330
|
+
// 커밋 해시 추출
|
|
331
|
+
const hashMatch = stdout.match(/\[[\w-]+\s+([a-f0-9]+)\]/);
|
|
332
|
+
resolve({ success: true, hash: hashMatch?.[1] || 'committed' });
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
resolve({ success: false });
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
commit.on('error', () => {
|
|
339
|
+
resolve({ success: false });
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
async function rollback(baseDir) {
|
|
344
|
+
return new Promise((resolve) => {
|
|
345
|
+
const rollback = spawn('git', ['checkout', '--', '.'], {
|
|
346
|
+
cwd: baseDir,
|
|
347
|
+
shell: true,
|
|
348
|
+
stdio: 'pipe',
|
|
349
|
+
});
|
|
350
|
+
rollback.on('close', () => {
|
|
351
|
+
resolve();
|
|
352
|
+
});
|
|
353
|
+
rollback.on('error', () => {
|
|
354
|
+
resolve();
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
function generatePrompt(feature) {
|
|
359
|
+
const lines = [
|
|
360
|
+
`${feature.id} feature를 구현해주세요.`,
|
|
361
|
+
'',
|
|
362
|
+
'Acceptance Criteria:',
|
|
363
|
+
...feature.acceptanceCriteria.map((c) => `- ${c}`),
|
|
364
|
+
'',
|
|
365
|
+
];
|
|
366
|
+
if (feature.testCommand) {
|
|
367
|
+
lines.push(`테스트 명령어: ${feature.testCommand}`);
|
|
368
|
+
}
|
|
369
|
+
lines.push('');
|
|
370
|
+
lines.push('구현이 완료되면 테스트를 실행할 수 있도록 코드를 작성하세요.');
|
|
371
|
+
lines.push('테스트 실패 시 변경사항은 롤백됩니다.');
|
|
372
|
+
return lines.join('\n');
|
|
373
|
+
}
|
|
374
|
+
function sleep(ms) {
|
|
375
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
376
|
+
}
|
|
377
|
+
function formatDuration(ms) {
|
|
378
|
+
const seconds = Math.floor(ms / 1000);
|
|
379
|
+
const minutes = Math.floor(seconds / 60);
|
|
380
|
+
const hours = Math.floor(minutes / 60);
|
|
381
|
+
if (hours > 0) {
|
|
382
|
+
return `${hours}h ${minutes % 60}m`;
|
|
383
|
+
}
|
|
384
|
+
else if (minutes > 0) {
|
|
385
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
return `${seconds}s`;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=auto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,KAAK,GAEN,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkB7C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,QAAgB,GAAG,EAAE,UAAuB,EAAE;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAElD,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,UAAU,CAAC,oDAAoD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,IAAI,aAAkC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,GAAG,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,oBAAoB,WAAW,WAAW,CAAC;IAC/G,WAAW,CAAC,oBAAoB,eAAe,EAAE,CAAC,CAAC;IAEnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,wBAAwB;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACjE,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,YAAY;IACZ,MAAM,YAAY,GAAG;;;mBAGJ,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;UAGjC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,WAAW,GAAG;YACvD,OAAO,CAAC,MAAM,IAAI,KAAK;qBACd,OAAO,CAAC,QAAQ,IAAI,KAAK;mBAC3B,OAAO,CAAC,KAAK,IAAI,MAAM;aAC7B,OAAO,CAAC,MAAM,IAAI,KAAK;;;CAGnC,CAAC;IACA,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAExC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,OAAO,cAAc,GAAG,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;QACnD,wBAAwB;QACxB,MAAM,kBAAkB,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB;YAAE,MAAM;QAE/B,wCAAwC;QACxC,IAAI,OAA4B,CAAC;QACjC,IAAI,cAAc,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YAC1C,OAAO,GAAG,aAAa,CAAC;YACxB,aAAa,GAAG,SAAS,CAAC,CAAC,UAAU;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/D,MAAM;QACR,CAAC;QAED,cAAc;QACd,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM;QACR,CAAC;QAED,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,CAAC;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,WAAW,EAAE,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,KAAK,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEvF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,qBAAqB,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,oBAAoB,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,wBAAwB;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,kBAAkB,CAAC,CAAC;YAChD,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9D,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;YACpE,CAAC;YAED,YAAY;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;YAEzC,WAAW;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC;YAC9C,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;YAEvC,QAAQ;YACR,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB;aACxC,CAAC,CAAC;YAEH,kBAAkB;YAClB,gBAAgB,CAAC,OAAO,EAAE,SAAS,OAAO,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,YAAY,YAAY,EAAE,CAAC,CAAC;YAExD,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB;aACxC,CAAC,CAAC;YAEH,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,kBAAkB,CAAC,CAAC;YAChD,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAExB,kBAAkB;YAClB,gBAAgB,CAAC,OAAO,EAAE,SAAS,OAAO,CAAC,EAAE,cAAc,YAAY,IAAI,CAAC,CAAC;QAC/E,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,aAAa;IACb,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,WAAW;IACX,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3C,YAAY,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,UAAU,OAAO,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,QAAQ;IACR,MAAM,UAAU,GAAG;;eAEN,cAAc;eACd,cAAc;YACjB,WAAW;cACT,eAAe,CAAC,UAAU,OAAO,aAAa,CAAC,UAAU;cACzD,cAAc,CAAC,aAAa,CAAC;;;CAG1C,CAAC;IACA,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEtC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,YAAY,CAAC,wBAAwB,cAAc,uBAAuB,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QAC3B,YAAY,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAe,EAAE,WAAwB;IACrE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAE7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAE7D,gCAAgC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACrE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAwB,EAAE,OAAoB;IACvE,IAAI,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,UAAU;IACV,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,SAAS;IACT,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YAC/D,OAAO,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,WAAW;IACX,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnF,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,OAAgB;IAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;YAClD,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChD,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,OAAgB;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC;IAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE;YAClC,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,SAAiB;IAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;QAC/B,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,OAAgB;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,SAAS,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,SAAS,CAAC;QACtE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;YAC/E,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,WAAW;gBACX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC3D,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAe;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;YACrD,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,MAAM,KAAK,GAAG;QACZ,GAAG,OAAO,CAAC,EAAE,mBAAmB;QAChC,EAAE;QACF,sBAAsB;QACtB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,EAAE;KACH,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAEvC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgPnE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -147,6 +147,63 @@ echo "Run 'aiag next' to get next feature"
|
|
|
147
147
|
: '# Coding Agent Template\n\n(See documentation for details)';
|
|
148
148
|
fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'templates', 'coding.md'), codingTemplate);
|
|
149
149
|
console.log(` ${icons.success} .aiag/templates/`);
|
|
150
|
+
// Create .vscode/settings.json
|
|
151
|
+
const vscodeDir = path.join(baseDir, '.vscode');
|
|
152
|
+
const vscodeSettingsPath = path.join(vscodeDir, 'settings.json');
|
|
153
|
+
if (!fs.existsSync(vscodeDir)) {
|
|
154
|
+
fs.mkdirSync(vscodeDir, { recursive: true });
|
|
155
|
+
}
|
|
156
|
+
// 기존 settings.json이 있으면 병합, 없으면 새로 생성
|
|
157
|
+
let vscodeSettings = {};
|
|
158
|
+
if (fs.existsSync(vscodeSettingsPath)) {
|
|
159
|
+
try {
|
|
160
|
+
const existingContent = fs.readFileSync(vscodeSettingsPath, 'utf-8');
|
|
161
|
+
vscodeSettings = JSON.parse(existingContent);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// 파싱 실패 시 기존 파일 백업
|
|
165
|
+
fs.copyFileSync(vscodeSettingsPath, `${vscodeSettingsPath}.backup`);
|
|
166
|
+
console.log(` ${icons.warning} Backed up existing settings.json`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// AIAG 관련 설정 추가
|
|
170
|
+
const aiagVscodeSettings = {
|
|
171
|
+
// Claude Code 필수 설정
|
|
172
|
+
'claudeCode.allowDangerouslySkipPermissions': true,
|
|
173
|
+
'claudeCode.initialPermissionMode': 'bypassPermissions',
|
|
174
|
+
'claudeCode.useTerminal': false,
|
|
175
|
+
// 파일 설정
|
|
176
|
+
'files.associations': {
|
|
177
|
+
'*.aiag': 'json',
|
|
178
|
+
'feature_list.json': 'json',
|
|
179
|
+
},
|
|
180
|
+
'files.exclude': {
|
|
181
|
+
'**/.aiag/templates': false,
|
|
182
|
+
},
|
|
183
|
+
'search.exclude': {
|
|
184
|
+
'**/node_modules': true,
|
|
185
|
+
'**/dist': true,
|
|
186
|
+
},
|
|
187
|
+
'editor.formatOnSave': true,
|
|
188
|
+
'[json]': {
|
|
189
|
+
'editor.defaultFormatter': 'esbenp.prettier-vscode',
|
|
190
|
+
'editor.tabSize': 2,
|
|
191
|
+
},
|
|
192
|
+
'[markdown]': {
|
|
193
|
+
'editor.wordWrap': 'on',
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
// 기존 설정과 병합 (AIAG 설정 우선)
|
|
197
|
+
vscodeSettings = { ...vscodeSettings, ...aiagVscodeSettings };
|
|
198
|
+
// files.associations는 깊은 병합
|
|
199
|
+
if (typeof vscodeSettings['files.associations'] === 'object') {
|
|
200
|
+
vscodeSettings['files.associations'] = {
|
|
201
|
+
...vscodeSettings['files.associations'],
|
|
202
|
+
...aiagVscodeSettings['files.associations'],
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
fs.writeFileSync(vscodeSettingsPath, JSON.stringify(vscodeSettings, null, 2));
|
|
206
|
+
console.log(` ${icons.success} .vscode/settings.json`);
|
|
150
207
|
console.log('');
|
|
151
208
|
printSuccess('AIAG initialized successfully!');
|
|
152
209
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,MAAM,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,+BAA+B;IAC/B,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,YAAY,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,qBAAqB;QACrB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7E,oCAAoC;QACpC,MAAM,mBAAmB,GAAG;YAC1B,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,qBAAqB;gBAClC,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,CAAC;aACrB;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,UAAU;oBACd,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,8CAA8C;oBAC3D,kBAAkB,EAAE,CAAC,4BAA4B,EAAE,6BAA6B,CAAC;oBACjF,WAAW,EAAE,UAAU;oBACvB,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAE1D,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG;;cAEf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;eAIrB,KAAK;oBACA,KAAK;;;;cAIX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBrC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;QAEpD,iBAAiB;QACjB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;QAEhD,4BAA4B;QAC5B,MAAM,sBAAsB,GAAG;;;;;;;kBAOjB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;CAKzC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;QAE3D,gEAAgE;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE7D,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAClF,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC,iEAAiE,CAAC;QAEtE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC3D,mBAAmB,CACpB,CAAC;QAEF,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;YAChE,CAAC,CAAC,4DAA4D,CAAC;QAEjE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,MAAM,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,+BAA+B;IAC/B,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1C,YAAY,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,qBAAqB;QACrB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7E,oCAAoC;QACpC,MAAM,mBAAmB,GAAG;YAC1B,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,qBAAqB;gBAClC,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,CAAC;aACrB;YACD,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,UAAU;oBACd,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,8CAA8C;oBAC3D,kBAAkB,EAAE,CAAC,4BAA4B,EAAE,6BAA6B,CAAC;oBACjF,WAAW,EAAE,UAAU;oBACvB,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAE1D,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG;;cAEf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;;;;eAIrB,KAAK;oBACA,KAAK;;;;cAIX,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBrC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;QAEpD,iBAAiB;QACjB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1B,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1E,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;QAEhD,4BAA4B;QAC5B,MAAM,sBAAsB,GAAG;;;;;;;kBAOjB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;CAKzC,CAAC;QAEE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;QAE3D,gEAAgE;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE7D,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;YAClF,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC,iEAAiE,CAAC;QAEtE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC3D,mBAAmB,CACpB,CAAC;QAEF,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;YAChE,CAAC,CAAC,4DAA4D,CAAC;QAEjE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAEjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,sCAAsC;QACtC,IAAI,cAAc,GAA4B,EAAE,CAAC;QAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBACrE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB;gBACnB,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,kBAAkB,SAAS,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,kBAAkB,GAAG;YACzB,oBAAoB;YACpB,4CAA4C,EAAE,IAAI;YAClD,kCAAkC,EAAE,mBAAmB;YACvD,wBAAwB,EAAE,KAAK;YAC/B,QAAQ;YACR,oBAAoB,EAAE;gBACpB,QAAQ,EAAE,MAAM;gBAChB,mBAAmB,EAAE,MAAM;aAC5B;YACD,eAAe,EAAE;gBACf,oBAAoB,EAAE,KAAK;aAC5B;YACD,gBAAgB,EAAE;gBAChB,iBAAiB,EAAE,IAAI;gBACvB,SAAS,EAAE,IAAI;aAChB;YACD,qBAAqB,EAAE,IAAI;YAC3B,QAAQ,EAAE;gBACR,yBAAyB,EAAE,wBAAwB;gBACnD,gBAAgB,EAAE,CAAC;aACpB;YACD,YAAY,EAAE;gBACZ,iBAAiB,EAAE,IAAI;aACxB;SACF,CAAC;QAEF,yBAAyB;QACzB,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,kBAAkB,EAAE,CAAC;QAE9D,4BAA4B;QAC5B,IAAI,OAAO,cAAc,CAAC,oBAAoB,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7D,cAAc,CAAC,oBAAoB,CAAC,GAAG;gBACrC,GAAI,cAAc,CAAC,oBAAoB,CAA4B;gBACnE,GAAG,kBAAkB,CAAC,oBAAoB,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;QAExD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCpF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { readFeatureList } from '../utils/featureList.js';
|
|
2
|
+
import { printHeader, printError, printSection, colors, icons, } from '../utils/output.js';
|
|
3
|
+
/**
|
|
4
|
+
* aiag run <id> - 특정 기능 구현 지시 프롬프트 생성
|
|
5
|
+
*/
|
|
6
|
+
export async function run(featureId, options = {}) {
|
|
7
|
+
const baseDir = process.cwd();
|
|
8
|
+
try {
|
|
9
|
+
const featureList = readFeatureList(baseDir);
|
|
10
|
+
if (!featureList) {
|
|
11
|
+
printError('No feature_list.json found. Run "aiag init" first.');
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const feature = featureList.features.find((f) => f.id === featureId);
|
|
15
|
+
if (!feature) {
|
|
16
|
+
printError(`Feature not found: ${featureId}`);
|
|
17
|
+
console.log('');
|
|
18
|
+
console.log(colors.dim('Available features:'));
|
|
19
|
+
featureList.features
|
|
20
|
+
.filter((f) => !f.passes)
|
|
21
|
+
.slice(0, 5)
|
|
22
|
+
.forEach((f) => {
|
|
23
|
+
console.log(` ${icons.bullet} ${f.id}: ${f.description}`);
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (feature.passes) {
|
|
28
|
+
printError(`Feature ${featureId} is already completed.`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
printHeader(`Run Feature: ${featureId}`);
|
|
32
|
+
printFeatureDetails(feature);
|
|
33
|
+
printImplementationPrompt(feature);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
printError(`Failed to run: ${error}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function printFeatureDetails(feature) {
|
|
41
|
+
console.log('');
|
|
42
|
+
console.log(colors.bold(feature.description));
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(`${colors.dim('Category:')} ${feature.category} ${colors.dim('Priority:')} ${feature.priority}`);
|
|
45
|
+
console.log('');
|
|
46
|
+
if (feature.acceptanceCriteria.length > 0) {
|
|
47
|
+
console.log(colors.dim('Acceptance Criteria:'));
|
|
48
|
+
feature.acceptanceCriteria.forEach((criteria, index) => {
|
|
49
|
+
console.log(` ${index + 1}. ${criteria}`);
|
|
50
|
+
});
|
|
51
|
+
console.log('');
|
|
52
|
+
}
|
|
53
|
+
if (feature.testCommand) {
|
|
54
|
+
console.log(`${colors.dim('Test Command:')} ${colors.info(feature.testCommand)}`);
|
|
55
|
+
console.log('');
|
|
56
|
+
}
|
|
57
|
+
if (feature.dependsOn && feature.dependsOn.length > 0) {
|
|
58
|
+
console.log(`${colors.dim('Dependencies:')} ${feature.dependsOn.join(', ')}`);
|
|
59
|
+
console.log('');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function printImplementationPrompt(feature) {
|
|
63
|
+
printSection('Claude Code Prompt');
|
|
64
|
+
console.log(colors.dim('─'.repeat(50)));
|
|
65
|
+
console.log('');
|
|
66
|
+
const prompt = generatePrompt(feature);
|
|
67
|
+
console.log(prompt);
|
|
68
|
+
console.log('');
|
|
69
|
+
console.log(colors.dim('─'.repeat(50)));
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(colors.dim('위 프롬프트를 Claude Code에 붙여넣어 구현을 시작하세요.'));
|
|
72
|
+
}
|
|
73
|
+
function generatePrompt(feature) {
|
|
74
|
+
const lines = [
|
|
75
|
+
`${feature.id} feature를 구현해주세요.`,
|
|
76
|
+
'',
|
|
77
|
+
'Acceptance Criteria:',
|
|
78
|
+
...feature.acceptanceCriteria.map((c) => `- ${c}`),
|
|
79
|
+
'',
|
|
80
|
+
];
|
|
81
|
+
if (feature.testCommand) {
|
|
82
|
+
lines.push(`테스트 명령어: ${feature.testCommand}`);
|
|
83
|
+
lines.push('');
|
|
84
|
+
}
|
|
85
|
+
lines.push('완료 후:');
|
|
86
|
+
lines.push(`1. \`aiag test ${feature.id}\`로 테스트 실행`);
|
|
87
|
+
lines.push(`2. 통과하면 \`aiag complete ${feature.id}\` 실행`);
|
|
88
|
+
lines.push('3. `aiag commit`으로 커밋');
|
|
89
|
+
return lines.join('\n');
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface WorkOptions {
|
|
2
|
+
category?: string;
|
|
3
|
+
priority?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* aiag work [id] - 단일 기능 작업 시작 (세션 컨텍스트 업데이트 + 프롬프트 생성)
|
|
7
|
+
*/
|
|
8
|
+
export declare function work(featureId?: string, options?: WorkOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=work.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work.d.ts","sourceRoot":"","sources":["../../src/commands/work.ts"],"names":[],"mappings":"AAeA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDvF"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { readFeatureList } from '../utils/featureList.js';
|
|
4
|
+
import { appendToProgress } from '../utils/progress.js';
|
|
5
|
+
import { printHeader, printError, printSection, colors, icons, getPriorityColor, } from '../utils/output.js';
|
|
6
|
+
import { PRIORITY_ORDER } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* aiag work [id] - 단일 기능 작업 시작 (세션 컨텍스트 업데이트 + 프롬프트 생성)
|
|
9
|
+
*/
|
|
10
|
+
export async function work(featureId, options = {}) {
|
|
11
|
+
const baseDir = process.cwd();
|
|
12
|
+
try {
|
|
13
|
+
const featureList = readFeatureList(baseDir);
|
|
14
|
+
if (!featureList) {
|
|
15
|
+
printError('No feature_list.json found. Run "aiag init" first.');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let feature;
|
|
19
|
+
if (featureId) {
|
|
20
|
+
// 특정 ID 지정
|
|
21
|
+
feature = featureList.features.find((f) => f.id === featureId);
|
|
22
|
+
if (!feature) {
|
|
23
|
+
printError(`Feature not found: ${featureId}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (feature.passes) {
|
|
27
|
+
printError(`Feature ${featureId} is already completed.`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// 자동 선택 (next 로직)
|
|
33
|
+
feature = selectNextFeature(featureList, options);
|
|
34
|
+
if (!feature) {
|
|
35
|
+
printHeader('No Work Available');
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log(colors.success('🎉 All features are completed!'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// 세션 컨텍스트 업데이트
|
|
42
|
+
updateSessionContext(baseDir, feature.id, feature.description);
|
|
43
|
+
// progress.md에 작업 시작 기록
|
|
44
|
+
const workStartLog = `\n### Work Started: ${feature.id}\n- Time: ${new Date().toISOString()}\n- Feature: ${feature.description}\n`;
|
|
45
|
+
appendToProgress(baseDir, workStartLog);
|
|
46
|
+
// 출력
|
|
47
|
+
printWorkHeader(feature, featureList);
|
|
48
|
+
printAcceptanceCriteria(feature);
|
|
49
|
+
printDependencies(feature, featureList);
|
|
50
|
+
printImplementationPrompt(feature);
|
|
51
|
+
printNextSteps(feature);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
printError(`Failed to start work: ${error}`);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function selectNextFeature(featureList, options) {
|
|
59
|
+
let candidates = featureList.features.filter((f) => !f.passes);
|
|
60
|
+
// 카테고리 필터
|
|
61
|
+
if (options.category) {
|
|
62
|
+
candidates = candidates.filter((f) => f.category === options.category);
|
|
63
|
+
}
|
|
64
|
+
// 우선순위 필터
|
|
65
|
+
if (options.priority) {
|
|
66
|
+
candidates = candidates.filter((f) => f.priority === options.priority);
|
|
67
|
+
}
|
|
68
|
+
// 의존성 확인 및 정렬
|
|
69
|
+
candidates = candidates.filter((f) => {
|
|
70
|
+
if (!f.dependsOn || f.dependsOn.length === 0)
|
|
71
|
+
return true;
|
|
72
|
+
return f.dependsOn.every((depId) => {
|
|
73
|
+
const dep = featureList.features.find((df) => df.id === depId);
|
|
74
|
+
return dep?.passes === true;
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
// 우선순위로 정렬
|
|
78
|
+
candidates.sort((a, b) => PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority]);
|
|
79
|
+
return candidates[0];
|
|
80
|
+
}
|
|
81
|
+
function printWorkHeader(feature, featureList) {
|
|
82
|
+
const completed = featureList.features.filter((f) => f.passes).length;
|
|
83
|
+
const total = featureList.features.length;
|
|
84
|
+
const percentage = Math.round((completed / total) * 100);
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log(colors.bold('═'.repeat(50)));
|
|
87
|
+
console.log(colors.bold(` AIAG Work: ${feature.id}`));
|
|
88
|
+
console.log(colors.bold('═'.repeat(50)));
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(colors.bold(feature.description));
|
|
91
|
+
console.log('');
|
|
92
|
+
const priorityColor = getPriorityColor(feature.priority);
|
|
93
|
+
console.log(`${colors.dim('Category:')} ${feature.category} ${colors.dim('Priority:')} ${priorityColor(feature.priority)}`);
|
|
94
|
+
console.log(`${colors.dim('Progress:')} ${completed}/${total} (${percentage}%)`);
|
|
95
|
+
console.log('');
|
|
96
|
+
}
|
|
97
|
+
function printAcceptanceCriteria(feature) {
|
|
98
|
+
if (feature.acceptanceCriteria.length === 0)
|
|
99
|
+
return;
|
|
100
|
+
printSection('Acceptance Criteria');
|
|
101
|
+
feature.acceptanceCriteria.forEach((criteria, index) => {
|
|
102
|
+
console.log(` ${icons.checkbox.unchecked} ${index + 1}. ${criteria}`);
|
|
103
|
+
});
|
|
104
|
+
console.log('');
|
|
105
|
+
}
|
|
106
|
+
function printDependencies(feature, featureList) {
|
|
107
|
+
if (!feature.dependsOn || feature.dependsOn.length === 0)
|
|
108
|
+
return;
|
|
109
|
+
printSection('Dependencies');
|
|
110
|
+
feature.dependsOn.forEach((depId) => {
|
|
111
|
+
const dep = featureList.features.find((f) => f.id === depId);
|
|
112
|
+
if (dep) {
|
|
113
|
+
const icon = dep.passes ? icons.success : icons.error;
|
|
114
|
+
console.log(` ${icon} ${depId}: ${dep.description}`);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
console.log('');
|
|
118
|
+
}
|
|
119
|
+
function printImplementationPrompt(feature) {
|
|
120
|
+
printSection('Claude Code Prompt');
|
|
121
|
+
console.log(colors.dim('─'.repeat(50)));
|
|
122
|
+
console.log('');
|
|
123
|
+
const prompt = generatePrompt(feature);
|
|
124
|
+
console.log(prompt);
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(colors.dim('─'.repeat(50)));
|
|
127
|
+
}
|
|
128
|
+
function generatePrompt(feature) {
|
|
129
|
+
const lines = [
|
|
130
|
+
`${feature.id} feature를 구현해주세요.`,
|
|
131
|
+
'',
|
|
132
|
+
'Acceptance Criteria:',
|
|
133
|
+
...feature.acceptanceCriteria.map((c) => `- ${c}`),
|
|
134
|
+
'',
|
|
135
|
+
];
|
|
136
|
+
if (feature.testCommand) {
|
|
137
|
+
lines.push(`테스트 명령어: ${feature.testCommand}`);
|
|
138
|
+
lines.push('');
|
|
139
|
+
}
|
|
140
|
+
lines.push('완료 후:');
|
|
141
|
+
lines.push(`1. \`aiag test ${feature.id}\`로 테스트 실행`);
|
|
142
|
+
lines.push(`2. 통과하면 \`aiag complete ${feature.id}\` 실행`);
|
|
143
|
+
lines.push('3. `aiag commit`으로 커밋');
|
|
144
|
+
return lines.join('\n');
|
|
145
|
+
}
|
|
146
|
+
function printNextSteps(feature) {
|
|
147
|
+
console.log('');
|
|
148
|
+
printSection('Next Steps');
|
|
149
|
+
console.log(` 1. 위 프롬프트를 Claude Code에 붙여넣기`);
|
|
150
|
+
console.log(` 2. 구현 완료 후: ${colors.info(`aiag test ${feature.id}`)}`);
|
|
151
|
+
console.log(` 3. 테스트 통과 후: ${colors.info(`aiag complete ${feature.id}`)}`);
|
|
152
|
+
console.log(` 4. 커밋: ${colors.info('aiag commit')}`);
|
|
153
|
+
console.log('');
|
|
154
|
+
}
|
|
155
|
+
function updateSessionContext(baseDir, featureId, description) {
|
|
156
|
+
const sessionContextPath = path.join(baseDir, '.aiag', 'session_context.md');
|
|
157
|
+
const content = `# Current Session Context
|
|
158
|
+
|
|
159
|
+
## Active Feature
|
|
160
|
+
- ID: ${featureId}
|
|
161
|
+
- Description: ${description}
|
|
162
|
+
- Status: In Progress
|
|
163
|
+
|
|
164
|
+
## Environment Status
|
|
165
|
+
- Last checked: ${new Date().toISOString()}
|
|
166
|
+
- Status: Working
|
|
167
|
+
|
|
168
|
+
## Notes
|
|
169
|
+
- Started work on ${featureId}
|
|
170
|
+
`;
|
|
171
|
+
fs.writeFileSync(sessionContextPath, content, 'utf-8');
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work.js","sourceRoot":"","sources":["../../src/commands/work.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,7 @@ export { test } from './commands/test.js';
|
|
|
9
9
|
export { complete } from './commands/complete.js';
|
|
10
10
|
export { commit } from './commands/commit.js';
|
|
11
11
|
export { sessionStart, sessionEnd } from './commands/session.js';
|
|
12
|
+
export { run } from './commands/run.js';
|
|
13
|
+
export { work } from './commands/work.js';
|
|
14
|
+
export { auto } from './commands/auto.js';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,4 +10,7 @@ export { test } from './commands/test.js';
|
|
|
10
10
|
export { complete } from './commands/complete.js';
|
|
11
11
|
export { commit } from './commands/commit.js';
|
|
12
12
|
export { sessionStart, sessionEnd } from './commands/session.js';
|
|
13
|
+
export { run } from './commands/run.js';
|
|
14
|
+
export { work } from './commands/work.js';
|
|
15
|
+
export { auto } from './commands/auto.js';
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/utils/progress.d.ts
CHANGED
|
@@ -24,6 +24,10 @@ export declare function appendSession(session: {
|
|
|
24
24
|
* Update the "Last Updated" date in progress.md
|
|
25
25
|
*/
|
|
26
26
|
export declare function updateLastUpdated(baseDir?: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Append raw content to progress.md
|
|
29
|
+
*/
|
|
30
|
+
export declare function appendToProgress(baseDir: string, content: string): boolean;
|
|
27
31
|
/**
|
|
28
32
|
* Create initial progress.md
|
|
29
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAa3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAe7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,EACD,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAiDT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAoB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAsB,GAC9B,OAAO,CA+CT"}
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAa3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAe7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,EACD,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAiDT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAoB1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAc1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,MAAsB,GAC9B,OAAO,CA+CT"}
|
package/dist/utils/progress.js
CHANGED
|
@@ -112,6 +112,23 @@ export function updateLastUpdated(baseDir = process.cwd()) {
|
|
|
112
112
|
return false;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Append raw content to progress.md
|
|
117
|
+
*/
|
|
118
|
+
export function appendToProgress(baseDir, content) {
|
|
119
|
+
const filePath = getProgressPath(baseDir);
|
|
120
|
+
if (!fs.existsSync(filePath)) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
fs.appendFileSync(filePath, content, 'utf-8');
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error('Error appending to progress.md:', error);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
115
132
|
/**
|
|
116
133
|
* Create initial progress.md
|
|
117
134
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
|