aiag-cli 1.6.3 → 1.7.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.
Files changed (45) hide show
  1. package/README.md +50 -2
  2. package/dist/cli.js +2 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auto.d.ts +1 -2
  5. package/dist/commands/auto.d.ts.map +1 -1
  6. package/dist/commands/auto.js +28 -173
  7. package/dist/commands/auto.js.map +1 -1
  8. package/dist/commands/init.d.ts +1 -0
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +246 -170
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/next.d.ts.map +1 -1
  13. package/dist/commands/next.js +36 -3
  14. package/dist/commands/next.js.map +1 -1
  15. package/dist/commands/session.d.ts.map +1 -1
  16. package/dist/commands/session.js +11 -1
  17. package/dist/commands/session.js.map +1 -1
  18. package/dist/commands/work.d.ts.map +1 -1
  19. package/dist/commands/work.js +46 -40
  20. package/dist/commands/work.js.map +1 -1
  21. package/dist/utils/claudeMd.d.ts +49 -0
  22. package/dist/utils/claudeMd.d.ts.map +1 -0
  23. package/dist/utils/claudeMd.js +413 -0
  24. package/dist/utils/claudeMd.js.map +1 -0
  25. package/dist/utils/initializerAgent.d.ts +24 -0
  26. package/dist/utils/initializerAgent.d.ts.map +1 -0
  27. package/dist/utils/initializerAgent.js +182 -0
  28. package/dist/utils/initializerAgent.js.map +1 -0
  29. package/dist/utils/messages.d.ts +184 -0
  30. package/dist/utils/messages.d.ts.map +1 -0
  31. package/dist/utils/messages.js +232 -0
  32. package/dist/utils/messages.js.map +1 -0
  33. package/dist/utils/output.d.ts +22 -0
  34. package/dist/utils/output.d.ts.map +1 -1
  35. package/dist/utils/output.js +38 -0
  36. package/dist/utils/output.js.map +1 -1
  37. package/dist/utils/prd.d.ts +39 -0
  38. package/dist/utils/prd.d.ts.map +1 -0
  39. package/dist/utils/prd.js +77 -0
  40. package/dist/utils/prd.js.map +1 -0
  41. package/dist/utils/sessionContext.d.ts +33 -0
  42. package/dist/utils/sessionContext.d.ts.map +1 -0
  43. package/dist/utils/sessionContext.js +132 -0
  44. package/dist/utils/sessionContext.js.map +1 -0
  45. package/package.json +1 -1
@@ -4,236 +4,312 @@ import { fileURLToPath } from 'url';
4
4
  import { dirname } from 'path';
5
5
  import { aiagExists, readFeatureList } from '../utils/featureList.js';
6
6
  import { validateFeatureList } from '../utils/validation.js';
7
- import { printHeader, colors, icons, printError, printSuccess, printWarning, } from '../utils/output.js';
7
+ import { printHeader, colors, icons, printError, printSuccess, printWarning, printInfo, printList, messages, } from '../utils/output.js';
8
+ import { findPrd, getPrdInfo } from '../utils/prd.js';
9
+ import { extractClaudeMdContext, generateClaudeMd } from '../utils/claudeMd.js';
10
+ import { runInitializerAgent, countFeaturesByCategory } from '../utils/initializerAgent.js';
8
11
  // ESM compatible __dirname
9
12
  const __filename = fileURLToPath(import.meta.url);
10
13
  const __dirname = dirname(__filename);
11
14
  const AIAG_DIR = '.aiag';
12
15
  export async function init(options = {}) {
13
16
  const baseDir = process.cwd();
14
- // Check if already initialized
17
+ // 1. 이미 초기화되어 있는지 확인
15
18
  if (aiagExists(baseDir) && !options.force) {
16
- printWarning('AIAG is already initialized in this directory.');
17
- console.log(colors.dim('Use --force to reinitialize.'));
19
+ printWarning(messages.init.alreadyInitialized);
20
+ console.log(colors.dim(messages.init.useForce));
18
21
  return;
19
22
  }
20
- printHeader('AIAG Project Initializer');
23
+ printHeader(messages.init.header);
21
24
  console.log('');
22
- console.log('Creating .aiag/ directory structure...');
25
+ // 2. PRD 찾기
26
+ const prdPath = findPrd(options.fromPrd, baseDir);
27
+ // 3. PRD 없고 최소 초기화도 아니면 가이드 출력
28
+ if (!prdPath && !options.minimal) {
29
+ printPrdGuidance();
30
+ return;
31
+ }
23
32
  try {
24
- // Create directories
25
- fs.mkdirSync(path.join(baseDir, AIAG_DIR, 'templates'), { recursive: true });
26
- // Create feature_list.json template
27
- const featureListTemplate = {
28
- project: {
29
- name: path.basename(baseDir),
30
- version: '1.0.0',
31
- description: 'Project description',
32
- totalFeatures: 0,
33
- completedFeatures: 0,
33
+ // 4. 기본 구조 생성
34
+ printInfo(messages.init.progress.creatingStructure);
35
+ createAiagStructure(baseDir);
36
+ console.log('');
37
+ // 5-A. PRD 기반 자동 초기화 (minimal 옵션이 없을 때만)
38
+ if (prdPath && !options.minimal) {
39
+ const prdInfo = getPrdInfo(prdPath);
40
+ printSuccess(`${messages.init.foundPrd}: ${prdInfo.relativePath} (${prdInfo.sizeKB} KB)`);
41
+ console.log('');
42
+ // Initializer Agent 실행 (프롬프트 생성)
43
+ const result = await runInitializerAgent(prdPath, baseDir);
44
+ if (result.success && result.featuresGenerated) {
45
+ console.log('');
46
+ printSuccess(`${result.featuresGenerated}개의 기능 생성됨 (${result.categories?.length || 0}개 카테고리)`);
47
+ // 카테고리별 분포 출력
48
+ if (result.categories && result.categories.length > 0) {
49
+ console.log('');
50
+ for (const category of result.categories) {
51
+ const count = countFeaturesByCategory(baseDir, category);
52
+ console.log(` ${icons.bullet} ${category}: ${count}개`);
53
+ }
54
+ }
55
+ }
56
+ // CLAUDE.md 생성
57
+ console.log('');
58
+ printInfo(messages.init.progress.generatingClaudeMd);
59
+ const prdContent = fs.readFileSync(prdPath, 'utf-8');
60
+ const claudeContext = extractClaudeMdContext(prdContent, baseDir);
61
+ const claudeResult = generateClaudeMd(claudeContext, baseDir, { force: options.force });
62
+ if (claudeResult.status === 'created') {
63
+ console.log(` ${icons.success} ${messages.init.files.claudeMd}`);
64
+ }
65
+ else if (claudeResult.status === 'skipped') {
66
+ console.log(` ${icons.warning} ${messages.init.files.claudeMd} (이미 존재 - 건너뜀)`);
67
+ }
68
+ else if (claudeResult.status === 'backed_up') {
69
+ console.log(` ${icons.success} ${messages.init.files.claudeMd} (백업됨: ${path.basename(claudeResult.backupPath || '')})`);
70
+ }
71
+ }
72
+ // 5-B. 최소 초기화
73
+ else {
74
+ console.log(` ${icons.success} 최소 템플릿으로 초기화되었습니다.`);
75
+ }
76
+ // 6. 유효성 검사
77
+ console.log('');
78
+ printInfo(messages.init.progress.validating);
79
+ const featureList = readFeatureList(baseDir);
80
+ if (featureList) {
81
+ const validationResult = validateFeatureList(featureList);
82
+ if (validationResult.valid) {
83
+ console.log(` ${icons.success} Feature list가 유효합니다.`);
84
+ }
85
+ else {
86
+ console.log(` ${icons.warning} Feature list에 ${validationResult.issues.length}개의 문제가 있습니다 (추후 수정 가능)`);
87
+ }
88
+ }
89
+ // 7. 완료 메시지
90
+ console.log('');
91
+ printSuccess(messages.init.complete.success);
92
+ console.log('');
93
+ console.log(colors.bold(messages.init.complete.filesCreated));
94
+ console.log(` ${icons.bullet} ${messages.init.files.featureList} - ${messages.init.complete.featureListDesc}`);
95
+ console.log(` ${icons.bullet} ${messages.init.files.progress} - ${messages.init.complete.progressDesc}`);
96
+ if (prdPath) {
97
+ console.log(` ${icons.bullet} ${messages.init.files.claudeMd} - ${colors.cyan(messages.init.complete.claudeMdDesc)}`);
98
+ }
99
+ console.log('');
100
+ console.log(colors.bold(messages.init.complete.nextSteps));
101
+ messages.init.complete.steps.forEach((step, index) => {
102
+ console.log(` ${index + 1}. ${step}`);
103
+ });
104
+ console.log('');
105
+ }
106
+ catch (error) {
107
+ printError(`초기화 실패: ${error}`);
108
+ process.exit(1);
109
+ }
110
+ }
111
+ /**
112
+ * PRD 가이던스 메시지 출력
113
+ */
114
+ function printPrdGuidance() {
115
+ const guidance = messages.init.prdGuidance;
116
+ console.log(icons.warning + ' ' + colors.warning(messages.init.noPrdFound));
117
+ console.log('');
118
+ console.log(guidance.title);
119
+ console.log('');
120
+ console.log(colors.bold(guidance.createFirst));
121
+ printList(guidance.files);
122
+ console.log('');
123
+ console.log(colors.bold(guidance.whatToInclude));
124
+ printList(guidance.includes);
125
+ console.log('');
126
+ console.log(colors.dim(guidance.orSkip));
127
+ console.log(` ${colors.cyan(guidance.skipCommand)}`);
128
+ console.log('');
129
+ }
130
+ /**
131
+ * .aiag 디렉토리 구조 생성
132
+ */
133
+ function createAiagStructure(baseDir) {
134
+ // 디렉토리 생성
135
+ fs.mkdirSync(path.join(baseDir, AIAG_DIR, 'templates'), { recursive: true });
136
+ // feature_list.json 템플릿 생성
137
+ const featureListTemplate = {
138
+ project: {
139
+ name: path.basename(baseDir),
140
+ version: '1.0.0',
141
+ description: '프로젝트 설명',
142
+ totalFeatures: 0,
143
+ completedFeatures: 0,
144
+ },
145
+ features: [
146
+ {
147
+ id: 'CORE-001',
148
+ category: 'core',
149
+ priority: 'critical',
150
+ description: '예시 기능 - 실제 기능으로 교체하세요',
151
+ acceptanceCriteria: ['첫 번째 완료 조건', '두 번째 완료 조건'],
152
+ testCommand: 'bun test',
153
+ passes: false,
154
+ lastTestedAt: null,
155
+ implementedBy: null,
156
+ notes: '',
34
157
  },
35
- features: [
36
- {
37
- id: 'CORE-001',
38
- category: 'core',
39
- priority: 'critical',
40
- description: 'Example feature - replace with your features',
41
- acceptanceCriteria: ['First acceptance criterion', 'Second acceptance criterion'],
42
- testCommand: 'bun test',
43
- passes: false,
44
- lastTestedAt: null,
45
- implementedBy: null,
46
- notes: '',
47
- },
48
- ],
49
- };
50
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'feature_list.json'), JSON.stringify(featureListTemplate, null, 2));
51
- console.log(` ${icons.success} .aiag/feature_list.json`);
52
- // Create progress.md
53
- const today = new Date().toISOString().split('T')[0];
54
- const progressTemplate = `# AIAG Progress Log
158
+ ],
159
+ };
160
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'feature_list.json'), JSON.stringify(featureListTemplate, null, 2));
161
+ console.log(` ${icons.success} ${messages.init.files.featureList}`);
162
+ // progress.md 생성
163
+ const today = new Date().toISOString().split('T')[0];
164
+ const progressTemplate = `# AIAG Progress Log
55
165
 
56
166
  ## Project: ${path.basename(baseDir)}
57
167
 
58
- **Description:** Project description
168
+ **설명:** 프로젝트 설명
59
169
 
60
- **Started:** ${today}
61
- **Last Updated:** ${today}
170
+ **시작일:** ${today}
171
+ **최종 업데이트:** ${today}
62
172
 
63
173
  ---
64
174
 
65
175
  ## Session: ${new Date().toISOString()}
66
176
 
67
177
  ### Context
68
- - Project initialized with AIAG harness
178
+ - AIAG harness로 프로젝트 초기화
69
179
 
70
180
  ### Work Done
71
- - [x] Created .aiag/ directory structure
72
- - [ ] Define features in feature_list.json
181
+ - [x] .aiag/ 디렉토리 구조 생성
182
+ - [ ] feature_list.json에 기능 정의
73
183
 
74
184
  ### Commits
75
- - (Initial setup)
185
+ - (초기 설정)
76
186
 
77
187
  ### Next Session
78
- - Edit feature_list.json with actual features
79
- - Start implementing first feature
188
+ - feature_list.json 실제 기능으로 수정
189
+ - 번째 기능 구현 시작
80
190
 
81
191
  ### Notes
82
- - Run 'aiag status' to see progress
83
- - Run 'aiag next' to get next feature recommendation
192
+ - 'aiag status' 진행 상황 확인
193
+ - 'aiag next' 다음 기능 추천 받기
84
194
 
85
195
  ---
86
196
  `;
87
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'progress.md'), progressTemplate);
88
- console.log(` ${icons.success} .aiag/progress.md`);
89
- // Create init.sh
90
- const initShTemplate = `#!/bin/bash
197
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'progress.md'), progressTemplate);
198
+ console.log(` ${icons.success} ${messages.init.files.progress}`);
199
+ // init.sh 생성
200
+ const initShTemplate = `#!/bin/bash
91
201
 
92
- # AIAG Project Initialization Script
202
+ # AIAG 프로젝트 초기화 스크립트
93
203
  set -e
94
204
 
95
- echo "Starting AIAG development environment..."
205
+ echo "AIAG 개발 환경 시작 중..."
96
206
 
97
- # Check Node.js
207
+ # Node.js 확인
98
208
  if ! command -v node &> /dev/null; then
99
- echo "Node.js is required but not installed."
209
+ echo "Node.js 필요하지만 설치되지 않았습니다."
100
210
  exit 1
101
211
  fi
102
212
  echo "✓ Node.js: $(node --version)"
103
213
 
104
- # Install dependencies
214
+ # 의존성 설치
105
215
  if [ ! -d "node_modules" ]; then
106
- echo "Installing dependencies..."
107
- bun install
216
+ echo "의존성 설치 중..."
217
+ bun install 2>/dev/null || npm install
108
218
  fi
109
- echo "✓ Dependencies installed"
219
+ echo "✓ 의존성 설치 완료"
110
220
 
111
- # Build (if applicable)
221
+ # 빌드 (필요한 경우)
112
222
  if grep -q '"build"' package.json 2>/dev/null; then
113
- bun run build --silent 2>/dev/null || true
223
+ bun run build --silent 2>/dev/null || npm run build --silent 2>/dev/null || true
114
224
  fi
115
225
 
116
226
  echo ""
117
- echo "Environment ready!"
118
- echo "Run 'aiag status' to see progress"
119
- echo "Run 'aiag next' to get next feature"
227
+ echo "환경 준비 완료!"
228
+ echo "'aiag status' 진행 상황 확인"
229
+ echo "'aiag next' 다음 기능 확인"
120
230
  `;
121
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'init.sh'), initShTemplate);
122
- fs.chmodSync(path.join(baseDir, AIAG_DIR, 'init.sh'), '755');
123
- console.log(` ${icons.success} .aiag/init.sh`);
124
- // Create session_context.md
125
- const sessionContextTemplate = `# Current Session Context
231
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'init.sh'), initShTemplate);
232
+ fs.chmodSync(path.join(baseDir, AIAG_DIR, 'init.sh'), '755');
233
+ console.log(` ${icons.success} ${messages.init.files.initSh}`);
234
+ // session_context.md 생성
235
+ const sessionContextTemplate = `# Current Session Context
126
236
 
127
237
  ## Active Feature
128
- - ID: (none)
129
- - Status: Not started
238
+ - ID: (없음)
239
+ - Status: 시작 안 함
130
240
 
131
241
  ## Environment Status
132
242
  - Last checked: ${new Date().toISOString()}
133
- - Status: Ready
243
+ - Status: 준비 완료
134
244
 
135
245
  ## Notes
136
- - (Add session-specific notes here)
246
+ - (세션별 노트를 여기에 추가하세요)
137
247
  `;
138
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'session_context.md'), sessionContextTemplate);
139
- console.log(` ${icons.success} .aiag/session_context.md`);
140
- // Create template files - look in package's templates directory
141
- const templatesDir = path.join(__dirname, '../../templates');
142
- const initializerTemplate = fs.existsSync(path.join(templatesDir, 'initializer.md'))
143
- ? fs.readFileSync(path.join(templatesDir, 'initializer.md'), 'utf-8')
144
- : '# Initializer Agent Template\n\n(See documentation for details)';
145
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'templates', 'initializer.md'), initializerTemplate);
146
- const codingTemplate = fs.existsSync(path.join(templatesDir, 'coding.md'))
147
- ? fs.readFileSync(path.join(templatesDir, 'coding.md'), 'utf-8')
148
- : '# Coding Agent Template\n\n(See documentation for details)';
149
- fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'templates', 'coding.md'), codingTemplate);
150
- console.log(` ${icons.success} .aiag/templates/`);
151
- // Create .vscode/settings.json
152
- const vscodeDir = path.join(baseDir, '.vscode');
153
- const vscodeSettingsPath = path.join(vscodeDir, 'settings.json');
154
- if (!fs.existsSync(vscodeDir)) {
155
- fs.mkdirSync(vscodeDir, { recursive: true });
156
- }
157
- // 기존 settings.json이 있으면 병합, 없으면 새로 생성
158
- let vscodeSettings = {};
159
- if (fs.existsSync(vscodeSettingsPath)) {
160
- try {
161
- const existingContent = fs.readFileSync(vscodeSettingsPath, 'utf-8');
162
- vscodeSettings = JSON.parse(existingContent);
163
- }
164
- catch {
165
- // 파싱 실패 시 기존 파일 백업
166
- fs.copyFileSync(vscodeSettingsPath, `${vscodeSettingsPath}.backup`);
167
- console.log(` ${icons.warning} Backed up existing settings.json`);
168
- }
169
- }
170
- // AIAG 관련 설정 추가
171
- const aiagVscodeSettings = {
172
- // Claude Code 필수 설정
173
- 'claudeCode.allowDangerouslySkipPermissions': true,
174
- 'claudeCode.initialPermissionMode': 'bypassPermissions',
175
- 'claudeCode.useTerminal': false,
176
- // 파일 설정
177
- 'files.associations': {
178
- '*.aiag': 'json',
179
- 'feature_list.json': 'json',
180
- },
181
- 'files.exclude': {
182
- '**/.aiag/templates': false,
183
- },
184
- 'search.exclude': {
185
- '**/node_modules': true,
186
- '**/dist': true,
187
- },
188
- 'editor.formatOnSave': true,
189
- '[json]': {
190
- 'editor.defaultFormatter': 'esbenp.prettier-vscode',
191
- 'editor.tabSize': 2,
192
- },
193
- '[markdown]': {
194
- 'editor.wordWrap': 'on',
195
- },
196
- };
197
- // 기존 설정과 병합 (AIAG 설정 우선)
198
- vscodeSettings = { ...vscodeSettings, ...aiagVscodeSettings };
199
- // files.associations는 깊은 병합
200
- if (typeof vscodeSettings['files.associations'] === 'object') {
201
- vscodeSettings['files.associations'] = {
202
- ...vscodeSettings['files.associations'],
203
- ...aiagVscodeSettings['files.associations'],
204
- };
248
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'session_context.md'), sessionContextTemplate);
249
+ console.log(` ${icons.success} ${messages.init.files.sessionContext}`);
250
+ // 템플릿 파일 복사
251
+ const templatesDir = path.join(__dirname, '../../templates');
252
+ const initializerTemplate = fs.existsSync(path.join(templatesDir, 'initializer.md'))
253
+ ? fs.readFileSync(path.join(templatesDir, 'initializer.md'), 'utf-8')
254
+ : '# Initializer Agent Template\n\n(문서 참조)';
255
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'templates', 'initializer.md'), initializerTemplate);
256
+ const codingTemplate = fs.existsSync(path.join(templatesDir, 'coding.md'))
257
+ ? fs.readFileSync(path.join(templatesDir, 'coding.md'), 'utf-8')
258
+ : '# Coding Agent Template\n\n(문서 참조)';
259
+ fs.writeFileSync(path.join(baseDir, AIAG_DIR, 'templates', 'coding.md'), codingTemplate);
260
+ console.log(` ${icons.success} ${messages.init.files.templates}`);
261
+ // .vscode/settings.json 생성
262
+ createVscodeSettings(baseDir);
263
+ }
264
+ /**
265
+ * VSCode 설정 파일 생성
266
+ */
267
+ function createVscodeSettings(baseDir) {
268
+ const vscodeDir = path.join(baseDir, '.vscode');
269
+ const vscodeSettingsPath = path.join(vscodeDir, 'settings.json');
270
+ if (!fs.existsSync(vscodeDir)) {
271
+ fs.mkdirSync(vscodeDir, { recursive: true });
272
+ }
273
+ // 기존 settings.json이 있으면 병합
274
+ let vscodeSettings = {};
275
+ if (fs.existsSync(vscodeSettingsPath)) {
276
+ try {
277
+ const existingContent = fs.readFileSync(vscodeSettingsPath, 'utf-8');
278
+ vscodeSettings = JSON.parse(existingContent);
205
279
  }
206
- fs.writeFileSync(vscodeSettingsPath, JSON.stringify(vscodeSettings, null, 2));
207
- console.log(` ${icons.success} .vscode/settings.json`);
208
- console.log('');
209
- // Validate feature list
210
- console.log('Validating feature list...');
211
- const featureList = readFeatureList(baseDir);
212
- if (featureList) {
213
- const validationResult = validateFeatureList(featureList);
214
- if (validationResult.valid) {
215
- console.log(` ${icons.success} Feature list is valid`);
216
- }
217
- else {
218
- console.log(` ${icons.warning} Feature list has validation issues (can be fixed later)`);
219
- if (validationResult.issues.length > 0) {
220
- console.log(colors.dim(` Found ${validationResult.issues.length} error(s)`));
221
- }
222
- }
280
+ catch {
281
+ // 파싱 실패 시 백업
282
+ fs.copyFileSync(vscodeSettingsPath, `${vscodeSettingsPath}.backup`);
283
+ console.log(` ${icons.warning} 기존 settings.json 백업됨`);
223
284
  }
224
- console.log('');
225
- printSuccess('AIAG initialized successfully!');
226
- console.log('');
227
- console.log(colors.bold('Next steps:'));
228
- console.log(' 1. Edit .aiag/feature_list.json with your features');
229
- console.log(" 2. Run 'aiag validate' to check feature definitions");
230
- console.log(" 3. Run 'aiag status' to verify setup");
231
- console.log(" 4. Run 'aiag next' to start working");
232
- console.log('');
233
- }
234
- catch (error) {
235
- printError(`Failed to initialize: ${error}`);
236
- process.exit(1);
237
285
  }
286
+ // AIAG 관련 설정 추가
287
+ const aiagVscodeSettings = {
288
+ 'claudeCode.allowDangerouslySkipPermissions': true,
289
+ 'claudeCode.initialPermissionMode': 'bypassPermissions',
290
+ 'claudeCode.useTerminal': false,
291
+ 'files.associations': {
292
+ '*.aiag': 'json',
293
+ 'feature_list.json': 'json',
294
+ },
295
+ 'files.exclude': {
296
+ '**/.aiag/templates': false,
297
+ },
298
+ 'search.exclude': {
299
+ '**/node_modules': true,
300
+ '**/dist': true,
301
+ },
302
+ 'editor.formatOnSave': true,
303
+ '[json]': {
304
+ 'editor.defaultFormatter': 'esbenp.prettier-vscode',
305
+ 'editor.tabSize': 2,
306
+ },
307
+ '[markdown]': {
308
+ 'editor.wordWrap': 'on',
309
+ },
310
+ };
311
+ vscodeSettings = { ...vscodeSettings, ...aiagVscodeSettings };
312
+ fs.writeFileSync(vscodeSettingsPath, JSON.stringify(vscodeSettings, null, 2));
313
+ console.log(` ${icons.success} ${messages.init.files.vscode}`);
238
314
  }
239
315
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EnE"}
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GnE"}
@@ -1,8 +1,41 @@
1
- import { getNextFeature, getIncompleteFeatures } from '../utils/featureList.js';
2
- import { printHeader, printSection, colors, icons, printError, getPriorityColor, } from '../utils/output.js';
1
+ import { getNextFeature, getIncompleteFeatures, readFeatureList } from '../utils/featureList.js';
2
+ import { printHeader, printSection, colors, icons, printError, getPriorityColor, printWarning, } from '../utils/output.js';
3
+ import { getInterruptedWork } from '../utils/sessionContext.js';
3
4
  export async function next(options = {}) {
5
+ const baseDir = process.cwd();
4
6
  const category = options.category;
5
- const feature = getNextFeature(category);
7
+ // 1. 먼저 중단된 작업이 있는지 확인
8
+ const featureList = readFeatureList(baseDir);
9
+ if (!featureList) {
10
+ printError('No feature_list.json found. Run "aiag init" first.');
11
+ return;
12
+ }
13
+ const interruptedWork = getInterruptedWork(baseDir, featureList);
14
+ let feature;
15
+ if (interruptedWork) {
16
+ // 중단된 작업이 있으면 그것을 우선적으로 표시
17
+ feature = interruptedWork.feature;
18
+ printWarning('⚠ Found interrupted work!');
19
+ console.log('');
20
+ console.log(`You have an in-progress feature: ${colors.bold(feature.id)}`);
21
+ console.log(`${colors.dim('Status:')} ${interruptedWork.status}`);
22
+ console.log(`${colors.dim('Attempts:')} ${interruptedWork.attemptNumber}`);
23
+ if (interruptedWork.previousError) {
24
+ console.log(`${colors.dim('Previous error:')} ${interruptedWork.previousError.substring(0, 100)}...`);
25
+ }
26
+ console.log('');
27
+ console.log(colors.dim('This work will be automatically resumed when you run:'));
28
+ console.log(colors.info(` aiag work`));
29
+ console.log(colors.info(` aiag auto`));
30
+ console.log('');
31
+ console.log(colors.dim('To abandon this work and start fresh, run:'));
32
+ console.log(colors.info(` aiag session end`));
33
+ console.log('');
34
+ }
35
+ else {
36
+ // 중단된 작업이 없으면 다음 feature 추천
37
+ feature = getNextFeature(category);
38
+ }
6
39
  if (!feature) {
7
40
  if (category) {
8
41
  printError(`No incomplete features in category "${category}".`);
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwChD"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAKA,wBAAsB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkDhD"}
@@ -1,6 +1,7 @@
1
1
  import { updateLastUpdated } from '../utils/progress.js';
2
2
  import { getProgress, getNextFeature } from '../utils/featureList.js';
3
- import { printHeader, printSection, colors, icons, printInfo } from '../utils/output.js';
3
+ import { printHeader, printSection, colors, icons, printInfo, printSuccess } from '../utils/output.js';
4
+ import { clearSessionContext, hasInterruptedWork } from '../utils/sessionContext.js';
4
5
  export async function sessionStart(featureId) {
5
6
  printHeader('Session Start');
6
7
  const progress = getProgress();
@@ -29,8 +30,17 @@ export async function sessionStart(featureId) {
29
30
  console.log('');
30
31
  }
31
32
  export async function sessionEnd() {
33
+ const baseDir = process.cwd();
32
34
  printHeader('Session End');
33
35
  const progress = getProgress();
36
+ // Check if there's interrupted work and clear it
37
+ const hadInterruptedWork = hasInterruptedWork(baseDir);
38
+ if (hadInterruptedWork) {
39
+ clearSessionContext(baseDir);
40
+ console.log('');
41
+ printSuccess('✓ Cleared interrupted work from session context');
42
+ console.log('');
43
+ }
34
44
  // Get session summary
35
45
  printSection('Session Summary');
36
46
  console.log(` Progress: ${progress.completed}/${progress.total} features (${progress.percentage}%)`);