aiag-cli 2.3.0 → 2.5.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.
Files changed (41) hide show
  1. package/README.md +6 -3
  2. package/dist/api/client.d.ts +9 -1
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +20 -0
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/endpoints.d.ts +2 -0
  7. package/dist/api/endpoints.d.ts.map +1 -1
  8. package/dist/api/endpoints.js +2 -0
  9. package/dist/api/endpoints.js.map +1 -1
  10. package/dist/api/types.d.ts +34 -0
  11. package/dist/api/types.d.ts.map +1 -1
  12. package/dist/cli.js +30 -7
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/commit.d.ts.map +1 -1
  15. package/dist/commands/commit.js +37 -1
  16. package/dist/commands/commit.js.map +1 -1
  17. package/dist/commands/complete.d.ts.map +1 -1
  18. package/dist/commands/complete.js +11 -1
  19. package/dist/commands/complete.js.map +1 -1
  20. package/dist/commands/prd.d.ts.map +1 -1
  21. package/dist/commands/prd.js +73 -12
  22. package/dist/commands/prd.js.map +1 -1
  23. package/dist/commands/session.d.ts +29 -0
  24. package/dist/commands/session.d.ts.map +1 -1
  25. package/dist/commands/session.js +270 -120
  26. package/dist/commands/session.js.map +1 -1
  27. package/dist/commands/sync.d.ts +10 -0
  28. package/dist/commands/sync.d.ts.map +1 -1
  29. package/dist/commands/sync.js +95 -2
  30. package/dist/commands/sync.js.map +1 -1
  31. package/dist/commands/work.d.ts.map +1 -1
  32. package/dist/commands/work.js +13 -1
  33. package/dist/commands/work.js.map +1 -1
  34. package/dist/types.d.ts +33 -0
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/utils/sessionManager.d.ts +63 -0
  37. package/dist/utils/sessionManager.d.ts.map +1 -0
  38. package/dist/utils/sessionManager.js +372 -0
  39. package/dist/utils/sessionManager.js.map +1 -0
  40. package/package.json +1 -1
  41. package/templates/skills/prd-taskmaster/README.md +2 -2
@@ -37,6 +37,50 @@ async function checkTaskMasterInstalled() {
37
37
  }, 5000);
38
38
  });
39
39
  }
40
+ /**
41
+ * TaskMaster 자동 설치 (bun 사용)
42
+ */
43
+ async function installTaskMaster() {
44
+ return new Promise((resolve) => {
45
+ const child = spawn('bun', ['add', '-g', 'task-master-ai'], {
46
+ stdio: 'pipe',
47
+ shell: true,
48
+ });
49
+ let stdout = '';
50
+ let stderr = '';
51
+ child.stdout?.on('data', (data) => {
52
+ stdout += data.toString();
53
+ });
54
+ child.stderr?.on('data', (data) => {
55
+ stderr += data.toString();
56
+ });
57
+ child.on('close', (code) => {
58
+ if (code === 0) {
59
+ resolve({ success: true });
60
+ }
61
+ else {
62
+ resolve({
63
+ success: false,
64
+ error: stderr || stdout || `설치 실패 (exit code: ${code})`,
65
+ });
66
+ }
67
+ });
68
+ child.on('error', (err) => {
69
+ resolve({
70
+ success: false,
71
+ error: `bun 실행 실패: ${err.message}`,
72
+ });
73
+ });
74
+ // 타임아웃 (2분)
75
+ setTimeout(() => {
76
+ child.kill();
77
+ resolve({
78
+ success: false,
79
+ error: '설치 타임아웃 (2분 초과)',
80
+ });
81
+ }, 120000);
82
+ });
83
+ }
40
84
  /**
41
85
  * PRD 생성 명령어
42
86
  */
@@ -67,21 +111,38 @@ export async function prd(options = {}) {
67
111
  }
68
112
  console.log();
69
113
  }
70
- // 2. TaskMaster 확인 (필수)
114
+ // 2. TaskMaster 확인 및 자동 설치
71
115
  const spinner = ora('TaskMaster 확인 중...').start();
72
- const taskMasterInstalled = await checkTaskMasterInstalled();
116
+ let taskMasterInstalled = await checkTaskMasterInstalled();
73
117
  if (!taskMasterInstalled) {
74
- spinner.fail('TaskMaster 설치되어 있지 않습니다.');
75
- console.log();
76
- printError('TaskMaster는 필수 의존성입니다.');
77
- console.log();
78
- printInfo('설치 방법:');
79
- console.log(chalk.gray(' npm install -g task-master-ai'));
80
- console.log(chalk.gray(' 또는 Claude Code MCP 설정에 TaskMaster 추가'));
81
- console.log();
82
- process.exit(1);
118
+ spinner.text = 'TaskMaster 설치 중... (bun add -g task-master-ai)';
119
+ const installResult = await installTaskMaster();
120
+ if (!installResult.success) {
121
+ spinner.fail('TaskMaster 자동 설치 실패');
122
+ console.log();
123
+ printError(installResult.error || ' 없는 오류');
124
+ console.log();
125
+ printInfo('수동 설치 방법:');
126
+ console.log(chalk.gray(' bun add -g task-master-ai'));
127
+ console.log(chalk.gray(' 또는 Claude Code MCP 설정에 TaskMaster 추가'));
128
+ console.log();
129
+ process.exit(1);
130
+ }
131
+ // 설치 후 재확인
132
+ taskMasterInstalled = await checkTaskMasterInstalled();
133
+ if (!taskMasterInstalled) {
134
+ spinner.fail('TaskMaster 설치 후 확인 실패');
135
+ console.log();
136
+ printError('TaskMaster가 설치되었지만 실행할 수 없습니다.');
137
+ printInfo('PATH 환경 변수를 확인하거나 터미널을 재시작하세요.');
138
+ console.log();
139
+ process.exit(1);
140
+ }
141
+ spinner.succeed('TaskMaster 자동 설치 완료');
142
+ }
143
+ else {
144
+ spinner.succeed('TaskMaster 설치 확인됨');
83
145
  }
84
- spinner.succeed('TaskMaster 설치 확인됨');
85
146
  // 3. prd-taskmaster 스킬 확인 및 설치
86
147
  spinner.start('prd-taskmaster 스킬 확인 중...');
87
148
  if (!skillExists('prd-taskmaster')) {
@@ -1 +1 @@
1
- {"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prd.js","sourceRoot":"","sources":["../../src/commands/prd.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,40 @@
1
+ /**
2
+ * 세션 명령어 (재정의)
3
+ *
4
+ * 암시적 세션 관리 도입으로 session start/end는 deprecated.
5
+ * 새로운 역할: 세션 상태 조회 및 유틸리티
6
+ *
7
+ * 사용법:
8
+ * aiag session # 현재 세션 상태 표시
9
+ * aiag session list # 최근 세션 목록 (progress.md에서)
10
+ * aiag session close # 현재 세션 강제 종료
11
+ *
12
+ * Deprecated (하위 호환성):
13
+ * aiag session start # → work 명령 사용 권장
14
+ * aiag session end # → session close 또는 자동 종료
15
+ */
16
+ interface SessionOptions {
17
+ count?: number;
18
+ force?: boolean;
19
+ }
20
+ /**
21
+ * 세션 상태 표시 (기본 명령)
22
+ */
23
+ export declare function session(subcommand?: string, options?: SessionOptions): Promise<void>;
1
24
  interface SessionStartOptions {
2
25
  offline?: boolean;
3
26
  notes?: string;
4
27
  }
28
+ /**
29
+ * @deprecated Use `aiag work` instead. Sessions start automatically.
30
+ */
5
31
  export declare function sessionStart(featureId?: string, options?: SessionStartOptions): Promise<void>;
6
32
  interface SessionEndOptions {
7
33
  offline?: boolean;
8
34
  }
35
+ /**
36
+ * @deprecated Use `aiag session close` instead. Sessions end automatically after 24h inactivity.
37
+ */
9
38
  export declare function sessionEnd(options?: SessionEndOptions): Promise<void>;
10
39
  export {};
11
40
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAcA,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEvG;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF/E"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C9F;AA2ND,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvG;AAED,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E"}
@@ -1,26 +1,259 @@
1
- import { updateLastUpdated } from '../utils/progress.js';
1
+ /**
2
+ * 세션 명령어 (재정의)
3
+ *
4
+ * 암시적 세션 관리 도입으로 session start/end는 deprecated.
5
+ * 새로운 역할: 세션 상태 조회 및 유틸리티
6
+ *
7
+ * 사용법:
8
+ * aiag session # 현재 세션 상태 표시
9
+ * aiag session list # 최근 세션 목록 (progress.md에서)
10
+ * aiag session close # 현재 세션 강제 종료
11
+ *
12
+ * Deprecated (하위 호환성):
13
+ * aiag session start # → work 명령 사용 권장
14
+ * aiag session end # → session close 또는 자동 종료
15
+ */
16
+ import { updateLastUpdated, readProgress } from '../utils/progress.js';
2
17
  import { getProgress, getNextFeature } from '../utils/featureList.js';
3
- import { printHeader, printSection, colors, icons, printInfo, printSuccess, printWarning } from '../utils/output.js';
18
+ import { printHeader, printSection, colors, icons, printInfo, printSuccess, printWarning, printError, } from '../utils/output.js';
4
19
  import { clearSessionContext, hasInterruptedWork } from '../utils/sessionContext.js';
5
- import { loadConnection, saveCurrentSession, loadCurrentSession, clearCurrentSession, } from '../utils/connection.js';
20
+ import { loadConnection, saveCurrentSession } from '../utils/connection.js';
6
21
  import { getApiClient } from '../api/client.js';
7
- export async function sessionStart(featureId, options = {}) {
22
+ import { syncProgressToServer } from './sync.js';
23
+ import { loadSessionState, closeSession, getSessionStats, } from '../utils/sessionManager.js';
24
+ /**
25
+ * 세션 상태 표시 (기본 명령)
26
+ */
27
+ export async function session(subcommand, options = {}) {
8
28
  const baseDir = process.cwd();
9
- printHeader('Session Start');
10
- const progress = getProgress();
11
- const nextFeature = featureId ? null : getNextFeature();
12
- // Display current state
13
- printSection('Current Progress');
14
- console.log(` ${progress.completed}/${progress.total} features complete (${progress.percentage}%)`);
15
- if (featureId) {
16
- printSection('Target Feature');
17
- console.log(` ${icons.arrow} ${featureId}`);
29
+ switch (subcommand) {
30
+ case undefined:
31
+ case 'status':
32
+ await showSessionStatus(baseDir);
33
+ break;
34
+ case 'list':
35
+ await listRecentSessions(baseDir, options.count || 5);
36
+ break;
37
+ case 'close':
38
+ await closeCurrentSession(baseDir, options.force);
39
+ break;
40
+ // Deprecated 명령어 (하위 호환성)
41
+ case 'start':
42
+ printWarning('⚠ "session start" is deprecated.');
43
+ console.log(colors.dim(' 세션은 work/auto 명령 실행 시 자동으로 시작됩니다.'));
44
+ console.log(colors.dim(' 작업을 시작하려면: aiag work'));
45
+ console.log('');
46
+ break;
47
+ case 'end':
48
+ printWarning('⚠ "session end" is deprecated.');
49
+ console.log(colors.dim(' 세션은 24시간 비활성 후 자동으로 종료됩니다.'));
50
+ console.log(colors.dim(' 강제 종료가 필요하면: aiag session close'));
51
+ console.log('');
52
+ // 하위 호환성을 위해 close 실행
53
+ await closeCurrentSession(baseDir, options.force);
54
+ break;
55
+ default:
56
+ printError(`Unknown subcommand: ${subcommand}`);
57
+ console.log('');
58
+ console.log('Usage:');
59
+ console.log(' aiag session 현재 세션 상태 표시');
60
+ console.log(' aiag session list 최근 세션 목록');
61
+ console.log(' aiag session close 현재 세션 강제 종료');
62
+ console.log('');
18
63
  }
19
- else if (nextFeature) {
20
- printSection('Recommended Feature');
21
- console.log(` ${icons.arrow} ${nextFeature.id}: ${nextFeature.description}`);
64
+ }
65
+ /**
66
+ * 현재 세션 상태 표시
67
+ */
68
+ async function showSessionStatus(baseDir) {
69
+ const stats = getSessionStats(baseDir);
70
+ const progress = getProgress(baseDir);
71
+ printHeader('Session Status');
72
+ console.log('');
73
+ if (!stats.session) {
74
+ console.log(colors.dim('No active session.'));
75
+ console.log('');
76
+ console.log(colors.dim('세션은 다음 명령 실행 시 자동으로 시작됩니다:'));
77
+ console.log(colors.info(' aiag work'));
78
+ console.log(colors.info(' aiag auto'));
79
+ console.log('');
80
+ return;
81
+ }
82
+ const session = stats.session;
83
+ const statusIcon = stats.active ? colors.success('●') : colors.warning('○');
84
+ const statusText = stats.active ? 'Active' : 'Stale (will close on next command)';
85
+ // 세션 정보
86
+ printSection('Current Session');
87
+ console.log(` ${colors.bold('ID:')} ${session.id}`);
88
+ console.log(` ${colors.bold('Status:')} ${statusIcon} ${statusText}`);
89
+ console.log(` ${colors.bold('Mode:')} ${session.mode}`);
90
+ console.log(` ${colors.bold('Started:')} ${formatRelativeTime(session.startedAt)}`);
91
+ console.log(` ${colors.bold('Duration:')} ${stats.duration}`);
92
+ console.log('');
93
+ // 작업 통계
94
+ printSection('Activity');
95
+ console.log(` ${colors.bold('Features worked:')} ${session.featuresWorked.length}`);
96
+ console.log(` ${colors.bold('Features completed:')} ${session.featuresCompleted.length}`);
97
+ console.log(` ${colors.bold('Commits:')} ${session.commits.length}`);
98
+ console.log('');
99
+ // 진행률 변화
100
+ const progressDelta = stats.progressDelta || 0;
101
+ const deltaText = progressDelta > 0
102
+ ? colors.success(`+${progressDelta}%`)
103
+ : progressDelta < 0
104
+ ? colors.error(`${progressDelta}%`)
105
+ : colors.dim('0%');
106
+ printSection('Progress');
107
+ console.log(` ${session.initialProgress}% → ${progress.percentage}% (${deltaText})`);
108
+ console.log('');
109
+ // 작업한 features
110
+ if (session.featuresWorked.length > 0) {
111
+ printSection('Features Worked');
112
+ session.featuresWorked.forEach((id) => {
113
+ const completed = session.featuresCompleted.includes(id);
114
+ const icon = completed ? icons.success : icons.arrow;
115
+ console.log(` ${icon} ${id}`);
116
+ });
117
+ console.log('');
118
+ }
119
+ // 커밋
120
+ if (session.commits.length > 0) {
121
+ printSection('Commits');
122
+ session.commits.slice(-5).forEach((commit) => {
123
+ console.log(` ${colors.dim(commit.hash)} ${commit.message.substring(0, 50)}`);
124
+ });
125
+ if (session.commits.length > 5) {
126
+ console.log(colors.dim(` ... and ${session.commits.length - 5} more`));
127
+ }
128
+ console.log('');
129
+ }
130
+ // 중단된 작업 확인
131
+ if (hasInterruptedWork(baseDir)) {
132
+ printWarning('⚠ There is interrupted work in session_context.md');
133
+ console.log(colors.dim(' Resume with: aiag work'));
134
+ console.log(colors.dim(' Or clear with: aiag session close --force'));
135
+ console.log('');
136
+ }
137
+ }
138
+ /**
139
+ * 최근 세션 목록 표시
140
+ */
141
+ async function listRecentSessions(baseDir, count) {
142
+ const progressContent = readProgress(baseDir);
143
+ if (!progressContent) {
144
+ printError('No progress.md found.');
145
+ return;
146
+ }
147
+ printHeader('Recent Sessions');
148
+ console.log('');
149
+ // progress.md에서 세션 파싱
150
+ const sessionPattern = /## Session: (\S+)\s*\n([\s\S]*?)(?=\n## Session:|\n---\s*$|$)/g;
151
+ const sessions = [];
152
+ let match;
153
+ while ((match = sessionPattern.exec(progressContent)) !== null) {
154
+ sessions.push({
155
+ id: match[1],
156
+ content: match[2],
157
+ });
158
+ }
159
+ if (sessions.length === 0) {
160
+ console.log(colors.dim('No session history found.'));
161
+ console.log('');
162
+ return;
163
+ }
164
+ // 최근 N개 세션 표시
165
+ const recentSessions = sessions.slice(0, count);
166
+ recentSessions.forEach((session, index) => {
167
+ // 메트릭 파싱
168
+ const durationMatch = session.content.match(/\*\*Duration\*\*:\s*(.+)/);
169
+ const progressMatch = session.content.match(/\*\*Progress\*\*:\s*(.+)/);
170
+ const modeMatch = session.content.match(/\*\*Mode\*\*:\s*(.+)/);
171
+ const completedMatch = session.content.match(/Features Completed \((\d+)\)/);
172
+ const duration = durationMatch ? durationMatch[1] : 'unknown';
173
+ const progressChange = progressMatch ? progressMatch[1] : '-';
174
+ const mode = modeMatch ? modeMatch[1] : '-';
175
+ const completedCount = completedMatch ? completedMatch[1] : '0';
176
+ console.log(`${colors.bold(`${index + 1}. ${session.id}`)}`);
177
+ console.log(` Duration: ${duration} | Mode: ${mode} | Completed: ${completedCount}`);
178
+ console.log(` Progress: ${progressChange}`);
179
+ console.log('');
180
+ });
181
+ if (sessions.length > count) {
182
+ console.log(colors.dim(`... and ${sessions.length - count} more sessions in progress.md`));
183
+ console.log('');
184
+ }
185
+ }
186
+ /**
187
+ * 현재 세션 강제 종료
188
+ *
189
+ * 참고: 서버 세션 종료는 sessionManager.ts의 finalizeSession()에서 자동 처리
190
+ */
191
+ async function closeCurrentSession(baseDir, force) {
192
+ const session = loadSessionState(baseDir);
193
+ if (!session) {
194
+ printInfo('No active session to close.');
195
+ return;
196
+ }
197
+ printHeader('Closing Session');
198
+ console.log('');
199
+ // 세션 종료 (서버 알림 포함)
200
+ closeSession(baseDir, 'manual');
201
+ const serverSynced = session.serverId ? ' (server synced)' : '';
202
+ printSuccess(`Session ${session.id} closed.${serverSynced}`);
203
+ console.log(colors.dim(' Session summary recorded in progress.md'));
204
+ console.log('');
205
+ // Progress 자동 동기화 (연결된 경우)
206
+ const connection = loadConnection(baseDir);
207
+ const client = getApiClient();
208
+ if (connection && client) {
209
+ await syncProgressToServer(client, connection.projectId, undefined, true).catch(() => {
210
+ // 동기화 실패 시 무시 - 다음 sync 명령에서 재시도
211
+ });
212
+ }
213
+ // 중단된 작업 클리어 (force 옵션)
214
+ if (force && hasInterruptedWork(baseDir)) {
215
+ clearSessionContext(baseDir);
216
+ printSuccess('Cleared interrupted work from session_context.md');
217
+ console.log('');
218
+ }
219
+ updateLastUpdated(baseDir);
220
+ }
221
+ // ============================================================================
222
+ // 유틸리티 함수
223
+ // ============================================================================
224
+ /**
225
+ * 상대 시간 포맷팅
226
+ */
227
+ function formatRelativeTime(isoString) {
228
+ const date = new Date(isoString);
229
+ const now = new Date();
230
+ const diffMs = now.getTime() - date.getTime();
231
+ const diffSeconds = Math.floor(diffMs / 1000);
232
+ const diffMinutes = Math.floor(diffSeconds / 60);
233
+ const diffHours = Math.floor(diffMinutes / 60);
234
+ const diffDays = Math.floor(diffHours / 24);
235
+ if (diffDays > 0) {
236
+ return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
237
+ }
238
+ else if (diffHours > 0) {
239
+ return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
240
+ }
241
+ else if (diffMinutes > 0) {
242
+ return `${diffMinutes} minute${diffMinutes > 1 ? 's' : ''} ago`;
243
+ }
244
+ else {
245
+ return 'just now';
22
246
  }
23
- // 서버에 세션 시작 알림 (연결된 경우)
247
+ }
248
+ /**
249
+ * @deprecated Use `aiag work` instead. Sessions start automatically.
250
+ */
251
+ export async function sessionStart(featureId, options = {}) {
252
+ printWarning('⚠ sessionStart() is deprecated.');
253
+ console.log(colors.dim(' 세션은 work/auto 명령 실행 시 자동으로 시작됩니다.'));
254
+ console.log('');
255
+ const baseDir = process.cwd();
256
+ // 하위 호환성: 서버 세션은 여전히 시작
24
257
  const connection = loadConnection(baseDir);
25
258
  const client = getApiClient();
26
259
  if (connection && client && !options.offline) {
@@ -29,124 +262,41 @@ export async function sessionStart(featureId, options = {}) {
29
262
  agentType: 'cli',
30
263
  notes: options.notes,
31
264
  });
32
- // 현재 세션 정보 저장
33
265
  saveCurrentSession({
34
266
  id: sessionInfo.id,
35
267
  projectId: sessionInfo.projectId,
36
268
  startedAt: sessionInfo.startedAt,
37
269
  agentType: 'cli',
38
270
  }, baseDir);
39
- printInfo(colors.dim(`세션 시작됨 (ID: ${sessionInfo.id.slice(0, 8)}...)`));
40
- // 세션 시작 로그 전송
41
- if (featureId) {
42
- await client.sendLog(featureId, {
43
- type: 'started',
44
- message: `Session started for feature ${featureId}`,
45
- });
46
- }
271
+ printInfo(colors.dim(`서버 세션 시작됨 (ID: ${sessionInfo.id.slice(0, 8)}...)`));
47
272
  }
48
- catch (error) {
49
- printWarning('서버 세션 등록 실패 (로컬 세션으로 계속)');
273
+ catch {
274
+ printWarning('서버 세션 등록 실패');
50
275
  }
51
276
  }
52
- // Checklist
53
- printSection('Session Start Checklist');
54
- console.log(` ${icons.checkbox.checked} pwd - Confirm directory`);
55
- console.log(` ${icons.checkbox.checked} Read progress.md`);
56
- console.log(` ${icons.checkbox.checked} Read feature_list.json`);
57
- console.log(` ${icons.checkbox.unchecked} git log --oneline -10`);
58
- console.log(` ${icons.checkbox.unchecked} .aiag/init.sh`);
59
- console.log(` ${icons.checkbox.unchecked} Identify next feature`);
60
- console.log('');
61
- printInfo('Session started. Remember: ONE feature at a time!');
62
- if (connection) {
63
- console.log(colors.dim(` 연결된 프로젝트: ${connection.projectName}`));
64
- }
65
- console.log('');
66
- }
67
- export async function sessionEnd(options = {}) {
68
- const baseDir = process.cwd();
69
- printHeader('Session End');
70
- const progress = getProgress();
71
- const startProgress = progress; // 세션 시작 시점의 진행률 (실제로는 저장해두어야 함)
72
- // Check if there's interrupted work and clear it
73
- const hadInterruptedWork = hasInterruptedWork(baseDir);
74
- if (hadInterruptedWork) {
75
- clearSessionContext(baseDir);
76
- console.log('');
77
- printSuccess('✓ Cleared interrupted work from session context');
277
+ const progress = getProgress(baseDir);
278
+ const nextFeature = featureId ? null : getNextFeature();
279
+ printSection('Current Progress');
280
+ console.log(` ${progress.completed}/${progress.total} features (${progress.percentage}%)`);
281
+ if (nextFeature) {
78
282
  console.log('');
283
+ console.log(colors.dim('Next recommended feature:'));
284
+ console.log(` ${icons.arrow} ${nextFeature.id}: ${nextFeature.description}`);
79
285
  }
80
- // Get session summary
81
- printSection('Session Summary');
82
- console.log(` Progress: ${progress.completed}/${progress.total} features (${progress.percentage}%)`);
83
- // 서버에 세션 종료 알림 (연결된 경우)
84
- const connection = loadConnection(baseDir);
85
- const client = getApiClient();
86
- const currentSession = loadCurrentSession(baseDir);
87
- if (connection && client && currentSession && !options.offline) {
88
- try {
89
- const sessionDuration = Math.floor((Date.now() - new Date(currentSession.startedAt).getTime()) / 1000);
90
- // 세션 요약 생성
91
- const summary = {
92
- workDone: [], // 실제로는 progress.md에서 파싱해야 함
93
- commits: [], // git log에서 가져올 수 있음
94
- nextSteps: [],
95
- notes: [],
96
- duration: sessionDuration,
97
- };
98
- await client.endSession(currentSession.id, summary);
99
- printInfo(colors.dim(`세션 종료됨 (${formatDuration(sessionDuration)})`));
100
- // 현재 세션 정보 삭제
101
- clearCurrentSession(baseDir);
102
- }
103
- catch (error) {
104
- printWarning('서버 세션 종료 알림 실패');
105
- }
106
- }
107
- // Checklist
108
- printSection('Session End Checklist');
109
- console.log(` ${icons.checkbox.unchecked} Feature complete OR clean state`);
110
- console.log(` ${icons.checkbox.unchecked} All tests passing`);
111
- console.log(` ${icons.checkbox.unchecked} progress.md updated`);
112
- console.log(` ${icons.checkbox.unchecked} feature_list.json updated`);
113
- console.log(` ${icons.checkbox.unchecked} All changes committed`);
114
- console.log(` ${icons.checkbox.unchecked} git status clean`);
115
- // Update last updated
116
- updateLastUpdated();
117
- console.log('');
118
- printInfo('Remember to update progress.md with your session summary!');
119
286
  console.log('');
120
- console.log(colors.dim('Template for progress.md:'));
121
- console.log(colors.dim('---'));
122
- console.log(colors.dim(`## Session: ${new Date().toISOString()}`));
123
- console.log(colors.dim(''));
124
- console.log(colors.dim('### Work Done'));
125
- console.log(colors.dim('- [x] Completed task'));
126
- console.log(colors.dim(''));
127
- console.log(colors.dim('### Commits'));
128
- console.log(colors.dim('- `hash` commit message'));
129
- console.log(colors.dim(''));
130
- console.log(colors.dim('### Next Session'));
131
- console.log(colors.dim('- Continue with FEATURE-ID'));
132
- console.log(colors.dim('---'));
287
+ console.log(colors.dim('To start working:'));
288
+ console.log(colors.info(' aiag work'));
133
289
  console.log('');
134
290
  }
135
291
  /**
136
- * 시간 포맷팅
292
+ * @deprecated Use `aiag session close` instead. Sessions end automatically after 24h inactivity.
137
293
  */
138
- function formatDuration(seconds) {
139
- const hours = Math.floor(seconds / 3600);
140
- const minutes = Math.floor((seconds % 3600) / 60);
141
- const secs = seconds % 60;
142
- if (hours > 0) {
143
- return `${hours}시간 ${minutes}분`;
144
- }
145
- else if (minutes > 0) {
146
- return `${minutes}분 ${secs}초`;
147
- }
148
- else {
149
- return `${secs}초`;
150
- }
294
+ export async function sessionEnd(options = {}) {
295
+ printWarning('⚠ sessionEnd() is deprecated.');
296
+ console.log(colors.dim(' 세션은 24시간 비활성 자동으로 종료됩니다.'));
297
+ console.log(colors.dim(' 강제 종료: aiag session close'));
298
+ console.log('');
299
+ const baseDir = process.cwd();
300
+ await closeCurrentSession(baseDir, true);
151
301
  }
152
302
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}