aiag-cli 1.8.0 → 2.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 +125 -89
- package/dist/api/client.d.ts +171 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +518 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/endpoints.d.ts +112 -0
- package/dist/api/endpoints.d.ts.map +1 -0
- package/dist/api/endpoints.js +150 -0
- package/dist/api/endpoints.js.map +1 -0
- package/dist/api/types.d.ts +395 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +7 -0
- package/dist/api/types.js.map +1 -0
- package/dist/auth/credentials.d.ts +73 -0
- package/dist/auth/credentials.d.ts.map +1 -0
- package/dist/auth/credentials.js +150 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/device.d.ts +58 -0
- package/dist/auth/device.d.ts.map +1 -0
- package/dist/auth/device.js +235 -0
- package/dist/auth/device.js.map +1 -0
- package/dist/auth/token.d.ts +55 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +153 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/cli.js +51 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +321 -236
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/complete.d.ts +1 -0
- package/dist/commands/complete.d.ts.map +1 -1
- package/dist/commands/complete.js +30 -0
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/connect.d.ts +25 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +356 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/login.d.ts +19 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +119 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +15 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +50 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/next.d.ts +1 -0
- package/dist/commands/next.d.ts.map +1 -1
- package/dist/commands/next.js +41 -2
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/project.d.ts +13 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +92 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/session.d.ts +10 -2
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +80 -3
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +51 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +33 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +555 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/work.d.ts +1 -0
- package/dist/commands/work.d.ts.map +1 -1
- package/dist/commands/work.js +22 -1
- package/dist/commands/work.js.map +1 -1
- package/dist/config/global.d.ts +54 -0
- package/dist/config/global.d.ts.map +1 -0
- package/dist/config/global.js +110 -0
- package/dist/config/global.js.map +1 -0
- package/dist/prompts/coding.d.ts +31 -0
- package/dist/prompts/coding.d.ts.map +1 -0
- package/dist/prompts/coding.js +228 -0
- package/dist/prompts/coding.js.map +1 -0
- package/dist/prompts/index.d.ts +10 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +10 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/initializer.d.ts +20 -0
- package/dist/prompts/initializer.d.ts.map +1 -0
- package/dist/prompts/initializer.js +147 -0
- package/dist/prompts/initializer.js.map +1 -0
- package/dist/sdk/client.d.ts +67 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +196 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/index.d.ts +8 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +8 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/security.d.ts +43 -0
- package/dist/sdk/security.d.ts.map +1 -0
- package/dist/sdk/security.js +214 -0
- package/dist/sdk/security.js.map +1 -0
- package/dist/types.d.ts +64 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/connection.d.ts +126 -0
- package/dist/utils/connection.d.ts.map +1 -0
- package/dist/utils/connection.js +226 -0
- package/dist/utils/connection.js.map +1 -0
- package/dist/utils/messages.d.ts +76 -0
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +87 -1
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/output.d.ts +10 -0
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +31 -0
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/prompt.d.ts +10 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +22 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/sseClient.d.ts +183 -0
- package/dist/utils/sseClient.d.ts.map +1 -0
- package/dist/utils/sseClient.js +391 -0
- package/dist/utils/sseClient.js.map +1 -0
- package/package.json +3 -2
package/dist/commands/next.js
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { getNextFeature, getIncompleteFeatures, readFeatureList } from '../utils/featureList.js';
|
|
2
|
-
import { printHeader, printSection, colors, icons, printError, getPriorityColor, printWarning, } from '../utils/output.js';
|
|
2
|
+
import { printHeader, printSection, colors, icons, printError, getPriorityColor, printWarning, printInfo, } from '../utils/output.js';
|
|
3
3
|
import { getInterruptedWork } from '../utils/sessionContext.js';
|
|
4
|
+
import { loadConnection } from '../utils/connection.js';
|
|
5
|
+
import { getApiClient, withServerFallback } from '../api/client.js';
|
|
6
|
+
/**
|
|
7
|
+
* ServerFeature를 로컬 Feature로 변환
|
|
8
|
+
*/
|
|
9
|
+
function serverFeatureToLocal(sf) {
|
|
10
|
+
return {
|
|
11
|
+
id: sf.localId,
|
|
12
|
+
category: sf.category,
|
|
13
|
+
priority: sf.priority,
|
|
14
|
+
description: sf.description,
|
|
15
|
+
acceptanceCriteria: sf.acceptanceCriteria,
|
|
16
|
+
testCommand: sf.testCommand,
|
|
17
|
+
passes: sf.passes,
|
|
18
|
+
lastTestedAt: sf.lastTestedAt ?? null,
|
|
19
|
+
implementedBy: sf.implementedBy ?? null,
|
|
20
|
+
notes: sf.notes,
|
|
21
|
+
dependsOn: sf.dependsOn,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
4
24
|
export async function next(options = {}) {
|
|
5
25
|
const baseDir = process.cwd();
|
|
6
26
|
const category = options.category;
|
|
@@ -34,7 +54,26 @@ export async function next(options = {}) {
|
|
|
34
54
|
}
|
|
35
55
|
else {
|
|
36
56
|
// 중단된 작업이 없으면 다음 feature 추천
|
|
37
|
-
|
|
57
|
+
// 서버 연결 시 API 우선 조회
|
|
58
|
+
const connection = loadConnection(baseDir);
|
|
59
|
+
const client = getApiClient();
|
|
60
|
+
if (connection && client && !options.offline) {
|
|
61
|
+
const result = await withServerFallback(async () => {
|
|
62
|
+
const serverFeature = await client.getNextFeature(connection.projectId);
|
|
63
|
+
if (serverFeature) {
|
|
64
|
+
printInfo(colors.dim('(서버에서 조회)'));
|
|
65
|
+
return serverFeatureToLocal(serverFeature);
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}, () => {
|
|
69
|
+
printInfo(colors.dim('(로컬 모드)'));
|
|
70
|
+
return getNextFeature(category) ?? undefined;
|
|
71
|
+
}, { silent: true });
|
|
72
|
+
feature = result ?? undefined;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
feature = getNextFeature(category) ?? undefined;
|
|
76
|
+
}
|
|
38
77
|
}
|
|
39
78
|
if (!feature) {
|
|
40
79
|
if (category) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAiFnD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project 명령어
|
|
3
|
+
*
|
|
4
|
+
* aiag-adp 프로젝트 관리
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag project delete # 서버에서 프로젝트 삭제 (확인 프롬프트)
|
|
8
|
+
*/
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import { isLoggedIn } from '../auth/credentials.js';
|
|
12
|
+
import { loadConnection, clearConnection } from '../utils/connection.js';
|
|
13
|
+
import { getApiClient, ApiError, NetworkError } from '../api/client.js';
|
|
14
|
+
import { printError, printSuccess, printWarning, printInfo } from '../utils/output.js';
|
|
15
|
+
import { confirmPrompt } from '../utils/prompt.js';
|
|
16
|
+
/**
|
|
17
|
+
* project delete 명령어 실행
|
|
18
|
+
*/
|
|
19
|
+
export async function projectDelete() {
|
|
20
|
+
// 1. 로그인 확인
|
|
21
|
+
if (!isLoggedIn()) {
|
|
22
|
+
printError('로그인이 필요합니다.');
|
|
23
|
+
console.log(chalk.gray('먼저 로그인하세요: aiag login'));
|
|
24
|
+
process.exitCode = 1;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// 2. 연결 확인
|
|
28
|
+
const connection = loadConnection();
|
|
29
|
+
if (!connection) {
|
|
30
|
+
printInfo('연결된 프로젝트가 없습니다.');
|
|
31
|
+
console.log(chalk.gray('연결하려면: aiag connect'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// 3. API 클라이언트 확인
|
|
35
|
+
const client = getApiClient();
|
|
36
|
+
if (!client) {
|
|
37
|
+
printError('API 클라이언트를 초기화할 수 없습니다. 다시 로그인해주세요.');
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// 4. 확인 프롬프트
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log(chalk.bold.red('⚠️ 프로젝트 삭제 경고'));
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(` 프로젝트: ${chalk.cyan(connection.projectName)}`);
|
|
46
|
+
console.log(` ID: ${chalk.gray(connection.projectId)}`);
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log(chalk.yellow('이 작업은 되돌릴 수 없습니다!'));
|
|
49
|
+
console.log(chalk.yellow('서버의 모든 Feature, 세션, 로그가 삭제됩니다.'));
|
|
50
|
+
console.log('');
|
|
51
|
+
const confirmed = await confirmPrompt(chalk.red(`정말로 "${connection.projectName}" 프로젝트를 삭제하시겠습니까?`));
|
|
52
|
+
if (!confirmed) {
|
|
53
|
+
printInfo('삭제가 취소되었습니다.');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// 5. 프로젝트 삭제
|
|
57
|
+
const spinner = ora('프로젝트 삭제 중...').start();
|
|
58
|
+
try {
|
|
59
|
+
await client.deleteProject(connection.projectId);
|
|
60
|
+
// 6. 로컬 연결 정보 삭제
|
|
61
|
+
clearConnection();
|
|
62
|
+
spinner.succeed('프로젝트가 삭제되었습니다.');
|
|
63
|
+
console.log('');
|
|
64
|
+
printSuccess(`"${connection.projectName}" 프로젝트가 서버에서 삭제되었습니다.`);
|
|
65
|
+
console.log(chalk.gray('로컬 연결 정보도 함께 삭제되었습니다.'));
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
spinner.fail('프로젝트 삭제 실패');
|
|
69
|
+
if (error instanceof ApiError) {
|
|
70
|
+
if (error.code === 'NOT_FOUND' || error.status === 404) {
|
|
71
|
+
printWarning('서버에서 프로젝트를 찾을 수 없습니다. 이미 삭제되었을 수 있습니다.');
|
|
72
|
+
// 로컬 연결 정보도 정리
|
|
73
|
+
clearConnection();
|
|
74
|
+
console.log(chalk.gray('로컬 연결 정보를 정리했습니다.'));
|
|
75
|
+
}
|
|
76
|
+
else if (error.status === 403) {
|
|
77
|
+
printError('이 프로젝트를 삭제할 권한이 없습니다.');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
printError(`삭제 실패: ${error.message}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (error instanceof NetworkError) {
|
|
84
|
+
printError(`네트워크 오류: ${error.message}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
printError(`알 수 없는 오류: ${error instanceof Error ? error.message : String(error)}`);
|
|
88
|
+
}
|
|
89
|
+
process.exitCode = 1;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface SessionStartOptions {
|
|
2
|
+
offline?: boolean;
|
|
3
|
+
notes?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function sessionStart(featureId?: string, options?: SessionStartOptions): Promise<void>;
|
|
6
|
+
interface SessionEndOptions {
|
|
7
|
+
offline?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function sessionEnd(options?: SessionEndOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
3
11
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/session.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { updateLastUpdated } from '../utils/progress.js';
|
|
2
2
|
import { getProgress, getNextFeature } from '../utils/featureList.js';
|
|
3
|
-
import { printHeader, printSection, colors, icons, printInfo, printSuccess } from '../utils/output.js';
|
|
3
|
+
import { printHeader, printSection, colors, icons, printInfo, printSuccess, printWarning } from '../utils/output.js';
|
|
4
4
|
import { clearSessionContext, hasInterruptedWork } from '../utils/sessionContext.js';
|
|
5
|
-
|
|
5
|
+
import { loadConnection, saveCurrentSession, loadCurrentSession, clearCurrentSession, } from '../utils/connection.js';
|
|
6
|
+
import { getApiClient } from '../api/client.js';
|
|
7
|
+
export async function sessionStart(featureId, options = {}) {
|
|
8
|
+
const baseDir = process.cwd();
|
|
6
9
|
printHeader('Session Start');
|
|
7
10
|
const progress = getProgress();
|
|
8
11
|
const nextFeature = featureId ? null : getNextFeature();
|
|
@@ -17,6 +20,35 @@ export async function sessionStart(featureId) {
|
|
|
17
20
|
printSection('Recommended Feature');
|
|
18
21
|
console.log(` ${icons.arrow} ${nextFeature.id}: ${nextFeature.description}`);
|
|
19
22
|
}
|
|
23
|
+
// 서버에 세션 시작 알림 (연결된 경우)
|
|
24
|
+
const connection = loadConnection(baseDir);
|
|
25
|
+
const client = getApiClient();
|
|
26
|
+
if (connection && client && !options.offline) {
|
|
27
|
+
try {
|
|
28
|
+
const sessionInfo = await client.startSession(connection.projectId, {
|
|
29
|
+
agentType: 'cli',
|
|
30
|
+
notes: options.notes,
|
|
31
|
+
});
|
|
32
|
+
// 현재 세션 정보 저장
|
|
33
|
+
saveCurrentSession({
|
|
34
|
+
id: sessionInfo.id,
|
|
35
|
+
projectId: sessionInfo.projectId,
|
|
36
|
+
startedAt: sessionInfo.startedAt,
|
|
37
|
+
agentType: 'cli',
|
|
38
|
+
}, 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
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
printWarning('서버 세션 등록 실패 (로컬 세션으로 계속)');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
20
52
|
// Checklist
|
|
21
53
|
printSection('Session Start Checklist');
|
|
22
54
|
console.log(` ${icons.checkbox.checked} pwd - Confirm directory`);
|
|
@@ -27,12 +59,16 @@ export async function sessionStart(featureId) {
|
|
|
27
59
|
console.log(` ${icons.checkbox.unchecked} Identify next feature`);
|
|
28
60
|
console.log('');
|
|
29
61
|
printInfo('Session started. Remember: ONE feature at a time!');
|
|
62
|
+
if (connection) {
|
|
63
|
+
console.log(colors.dim(` 연결된 프로젝트: ${connection.projectName}`));
|
|
64
|
+
}
|
|
30
65
|
console.log('');
|
|
31
66
|
}
|
|
32
|
-
export async function sessionEnd() {
|
|
67
|
+
export async function sessionEnd(options = {}) {
|
|
33
68
|
const baseDir = process.cwd();
|
|
34
69
|
printHeader('Session End');
|
|
35
70
|
const progress = getProgress();
|
|
71
|
+
const startProgress = progress; // 세션 시작 시점의 진행률 (실제로는 저장해두어야 함)
|
|
36
72
|
// Check if there's interrupted work and clear it
|
|
37
73
|
const hadInterruptedWork = hasInterruptedWork(baseDir);
|
|
38
74
|
if (hadInterruptedWork) {
|
|
@@ -44,6 +80,30 @@ export async function sessionEnd() {
|
|
|
44
80
|
// Get session summary
|
|
45
81
|
printSection('Session Summary');
|
|
46
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
|
+
}
|
|
47
107
|
// Checklist
|
|
48
108
|
printSection('Session End Checklist');
|
|
49
109
|
console.log(` ${icons.checkbox.unchecked} Feature complete OR clean state`);
|
|
@@ -72,4 +132,21 @@ export async function sessionEnd() {
|
|
|
72
132
|
console.log(colors.dim('---'));
|
|
73
133
|
console.log('');
|
|
74
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* 시간 포맷팅
|
|
137
|
+
*/
|
|
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
|
+
}
|
|
151
|
+
}
|
|
75
152
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAmBA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoIvE"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { readFeatureList, getProgress, getRecentlyCompleted, getNextFeature, } from '../utils/featureList.js';
|
|
2
2
|
import { printHeader, printSection, progressBar, colors, icons, printError, getPriorityColor, } from '../utils/output.js';
|
|
3
|
+
import { getConnectionStatus, getPendingSyncCount } from '../utils/connection.js';
|
|
4
|
+
import { getApiClient, isServerReachable } from '../api/client.js';
|
|
3
5
|
export async function status(options = {}) {
|
|
4
6
|
const data = readFeatureList();
|
|
5
7
|
if (!data) {
|
|
@@ -51,6 +53,55 @@ export async function status(options = {}) {
|
|
|
51
53
|
console.log(` ${icons.checkbox.unchecked} ${feature.id} [${priorityColor(feature.priority)}] ${feature.description}`);
|
|
52
54
|
}
|
|
53
55
|
}
|
|
56
|
+
// 서버 연결 상태 표시
|
|
57
|
+
const baseDir = process.cwd();
|
|
58
|
+
const connectionStatus = getConnectionStatus(baseDir);
|
|
59
|
+
if (connectionStatus.connected && !options.offline) {
|
|
60
|
+
printSection('Server Connection:');
|
|
61
|
+
const isOnline = await isServerReachable(connectionStatus.serverUrl);
|
|
62
|
+
const statusIcon = isOnline ? colors.success('●') : colors.warning('○');
|
|
63
|
+
const statusText = isOnline
|
|
64
|
+
? colors.success('연결됨')
|
|
65
|
+
: colors.warning('오프라인');
|
|
66
|
+
console.log(` ${statusIcon} ${connectionStatus.projectName} - ${statusText}`);
|
|
67
|
+
console.log(` ${colors.dim('서버:')} ${connectionStatus.serverUrl}`);
|
|
68
|
+
if (connectionStatus.lastSyncAt) {
|
|
69
|
+
const lastSync = getRelativeTime(new Date(connectionStatus.lastSyncAt));
|
|
70
|
+
console.log(` ${colors.dim('마지막 동기화:')} ${lastSync}`);
|
|
71
|
+
}
|
|
72
|
+
// 미동기화 항목 표시
|
|
73
|
+
const pendingCount = getPendingSyncCount(baseDir);
|
|
74
|
+
if (pendingCount > 0) {
|
|
75
|
+
console.log(` ${colors.warning(`⚠ 미동기화 항목: ${pendingCount}개`)}`);
|
|
76
|
+
console.log(` ${colors.dim('동기화하려면: aiag sync')}`);
|
|
77
|
+
}
|
|
78
|
+
// 서버에서 추가 정보 조회 (온라인일 때만)
|
|
79
|
+
if (isOnline) {
|
|
80
|
+
const client = getApiClient();
|
|
81
|
+
if (client) {
|
|
82
|
+
try {
|
|
83
|
+
const context = await client.getProjectContext(connectionStatus.projectId);
|
|
84
|
+
if (context.activeAgents.length > 0) {
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log(` ${colors.bold('활성 에이전트:')}`);
|
|
87
|
+
for (const agent of context.activeAgents) {
|
|
88
|
+
const agentIcon = agent.type === 'cli' ? '🖥️' : '🌙';
|
|
89
|
+
const agentStatus = agent.status === 'active'
|
|
90
|
+
? colors.green('활성')
|
|
91
|
+
: colors.gray('유휴');
|
|
92
|
+
console.log(` ${agentIcon} ${agent.email ?? agent.id} - ${agentStatus}`);
|
|
93
|
+
if (agent.currentFeature) {
|
|
94
|
+
console.log(` 작업 중: ${colors.yellow(agent.currentFeature)}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// 상세 정보 조회 실패는 무시
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
54
105
|
console.log('');
|
|
55
106
|
}
|
|
56
107
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,MAAM,EACN,KAAK,EACL,UAAU,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sync 명령어
|
|
3
|
+
*
|
|
4
|
+
* aiag-adp 웹 플랫폼과 로컬 feature_list.json 양방향 동기화
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag sync 기본 동기화 (로컬 → 서버)
|
|
8
|
+
* aiag sync --pull 서버 → 로컬 동기화
|
|
9
|
+
* aiag sync --force 충돌 시 로컬 우선
|
|
10
|
+
* aiag sync --watch 실시간 이벤트 스트리밍
|
|
11
|
+
* aiag sync --status 동기화 상태 확인
|
|
12
|
+
*
|
|
13
|
+
* 동기화 방향:
|
|
14
|
+
* - 기본: 로컬 변경사항을 서버에 반영
|
|
15
|
+
* - --pull: 서버 상태를 로컬에 반영
|
|
16
|
+
* - 양방향: 충돌 감지 및 해결 옵션 제공
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* sync 명령어 옵션
|
|
20
|
+
*/
|
|
21
|
+
export interface SyncOptions {
|
|
22
|
+
pull?: boolean;
|
|
23
|
+
force?: boolean;
|
|
24
|
+
watch?: boolean;
|
|
25
|
+
status?: boolean;
|
|
26
|
+
dryRun?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* sync 명령어 실행
|
|
30
|
+
*/
|
|
31
|
+
export declare function sync(options: SyncOptions): Promise<void>;
|
|
32
|
+
export default sync;
|
|
33
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkCH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6BD;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9D;AAwkBD,eAAe,IAAI,CAAC"}
|