aiag-cli 1.8.0 → 2.1.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 +170 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +513 -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 +305 -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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aiag login 명령어
|
|
3
|
+
*
|
|
4
|
+
* 디바이스 인증 플로우를 통해 aiag-adp 서버에 로그인
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag login [--force]
|
|
8
|
+
*
|
|
9
|
+
* 옵션:
|
|
10
|
+
* --force, -f 이미 로그인된 경우 다시 로그인
|
|
11
|
+
*
|
|
12
|
+
* 참고:
|
|
13
|
+
* 공식 서버(https://aiag-adp.vercel.app)에 자동 연결됩니다.
|
|
14
|
+
*/
|
|
15
|
+
export interface LoginOptions {
|
|
16
|
+
force?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function login(options?: LoginOptions): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DrE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aiag login 명령어
|
|
3
|
+
*
|
|
4
|
+
* 디바이스 인증 플로우를 통해 aiag-adp 서버에 로그인
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag login [--force]
|
|
8
|
+
*
|
|
9
|
+
* 옵션:
|
|
10
|
+
* --force, -f 이미 로그인된 경우 다시 로그인
|
|
11
|
+
*
|
|
12
|
+
* 참고:
|
|
13
|
+
* 공식 서버(https://aiag-adp.vercel.app)에 자동 연결됩니다.
|
|
14
|
+
*/
|
|
15
|
+
import ora from 'ora';
|
|
16
|
+
import { printHeader, printSuccess, printError, printWarning, printInfo, colors, printKeyValue, } from '../utils/output.js';
|
|
17
|
+
import { messages, formatMessage } from '../utils/messages.js';
|
|
18
|
+
import { isLoggedIn, getCurrentUserEmail } from '../auth/credentials.js';
|
|
19
|
+
import { performDeviceAuth, openBrowser, validateServerUrl, testServerConnection, } from '../auth/device.js';
|
|
20
|
+
import { OFFICIAL_SERVER } from '../config/global.js';
|
|
21
|
+
export async function login(options = {}) {
|
|
22
|
+
printHeader(messages.login.header);
|
|
23
|
+
console.log('');
|
|
24
|
+
// 이미 로그인된 경우 체크
|
|
25
|
+
if (isLoggedIn() && !options.force) {
|
|
26
|
+
const email = getCurrentUserEmail();
|
|
27
|
+
if (email) {
|
|
28
|
+
printWarning(messages.login.alreadyLoggedIn);
|
|
29
|
+
printInfo(formatMessage(messages.login.loggedInAs, { email }));
|
|
30
|
+
printInfo(messages.login.useForce);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// 공식 서버 URL 사용
|
|
35
|
+
const serverUrl = OFFICIAL_SERVER;
|
|
36
|
+
// URL 유효성 검증
|
|
37
|
+
if (!validateServerUrl(serverUrl)) {
|
|
38
|
+
printError(formatMessage(messages.login.invalidServer, { url: serverUrl }));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// 서버 연결 테스트
|
|
42
|
+
const spinner = ora(messages.connection.checking).start();
|
|
43
|
+
const isReachable = await testServerConnection(serverUrl);
|
|
44
|
+
if (!isReachable) {
|
|
45
|
+
spinner.fail(formatMessage(messages.login.serverUnreachable, { url: serverUrl }));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
spinner.succeed(messages.connection.online);
|
|
49
|
+
console.log('');
|
|
50
|
+
// 디바이스 인증 시작
|
|
51
|
+
printInfo(messages.login.start);
|
|
52
|
+
console.log('');
|
|
53
|
+
const result = await performDeviceAuth(serverUrl, {
|
|
54
|
+
onCodeReceived: (code) => {
|
|
55
|
+
displayAuthCode(code);
|
|
56
|
+
},
|
|
57
|
+
onPolling: () => {
|
|
58
|
+
// 폴링 중 (스피너는 performDeviceAuth 내부에서 처리 안함)
|
|
59
|
+
},
|
|
60
|
+
onSuccess: (email) => {
|
|
61
|
+
console.log('');
|
|
62
|
+
printSuccess(messages.login.success);
|
|
63
|
+
printKeyValue(messages.login.email, email);
|
|
64
|
+
},
|
|
65
|
+
onError: (error) => {
|
|
66
|
+
console.log('');
|
|
67
|
+
printError(error);
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
if (!result) {
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
console.log('');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 인증 코드 표시 및 브라우저 열기
|
|
77
|
+
*/
|
|
78
|
+
async function displayAuthCode(code) {
|
|
79
|
+
// 박스 그리기
|
|
80
|
+
const boxWidth = 50;
|
|
81
|
+
const border = '─'.repeat(boxWidth);
|
|
82
|
+
console.log(`┌${border}┐`);
|
|
83
|
+
console.log(`│${' '.repeat(boxWidth)}│`);
|
|
84
|
+
// 인증 코드 (중앙 정렬)
|
|
85
|
+
const codeLabel = `${messages.login.userCode}: `;
|
|
86
|
+
const codeText = colors.bold(code.userCode);
|
|
87
|
+
const codeLine = `${codeLabel}${code.userCode}`;
|
|
88
|
+
const codePadding = Math.floor((boxWidth - codeLine.length) / 2);
|
|
89
|
+
console.log(`│${' '.repeat(codePadding)}${codeLabel}${codeText}${' '.repeat(boxWidth - codePadding - codeLine.length)}│`);
|
|
90
|
+
console.log(`│${' '.repeat(boxWidth)}│`);
|
|
91
|
+
// 안내 메시지
|
|
92
|
+
const infoLine = messages.login.openBrowser;
|
|
93
|
+
const infoPadding = Math.floor((boxWidth - infoLine.length) / 2);
|
|
94
|
+
if (infoLine.length <= boxWidth) {
|
|
95
|
+
console.log(`│${' '.repeat(infoPadding)}${infoLine}${' '.repeat(boxWidth - infoPadding - infoLine.length)}│`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log(`│ ${infoLine.substring(0, boxWidth - 2)} │`);
|
|
99
|
+
}
|
|
100
|
+
console.log(`│${' '.repeat(boxWidth)}│`);
|
|
101
|
+
// URL (작은 폰트로)
|
|
102
|
+
const urlLine = colors.cyan(code.verificationUri);
|
|
103
|
+
console.log(`│ ${code.verificationUri}${' '.repeat(Math.max(0, boxWidth - code.verificationUri.length - 1))}│`);
|
|
104
|
+
console.log(`│${' '.repeat(boxWidth)}│`);
|
|
105
|
+
console.log(`└${border}┘`);
|
|
106
|
+
console.log('');
|
|
107
|
+
// 브라우저 열기 시도
|
|
108
|
+
printInfo(messages.login.browserOpening);
|
|
109
|
+
// 인증 URL에 user_code 쿼리 파라미터 추가
|
|
110
|
+
const authUrl = new URL(code.verificationUri);
|
|
111
|
+
authUrl.searchParams.set('code', code.userCode);
|
|
112
|
+
const opened = await openBrowser(authUrl.toString());
|
|
113
|
+
if (!opened) {
|
|
114
|
+
printWarning(messages.login.browserFailed);
|
|
115
|
+
}
|
|
116
|
+
console.log('');
|
|
117
|
+
printInfo(messages.login.waiting);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aiag logout 명령어
|
|
3
|
+
*
|
|
4
|
+
* 로컬 인증 정보를 삭제하고 (선택적으로) 서버에 토큰 무효화 요청
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag logout
|
|
8
|
+
*
|
|
9
|
+
* 옵션:
|
|
10
|
+
* (현재 없음)
|
|
11
|
+
*/
|
|
12
|
+
export interface LogoutOptions {
|
|
13
|
+
}
|
|
14
|
+
export declare function logout(_options?: LogoutOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=logout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,MAAM,WAAW,aAAa;CAE7B;AAED,wBAAsB,MAAM,CAAC,QAAQ,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCxE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* aiag logout 명령어
|
|
3
|
+
*
|
|
4
|
+
* 로컬 인증 정보를 삭제하고 (선택적으로) 서버에 토큰 무효화 요청
|
|
5
|
+
*
|
|
6
|
+
* 사용법:
|
|
7
|
+
* aiag logout
|
|
8
|
+
*
|
|
9
|
+
* 옵션:
|
|
10
|
+
* (현재 없음)
|
|
11
|
+
*/
|
|
12
|
+
import { printHeader, printSuccess, printWarning, printInfo, } from '../utils/output.js';
|
|
13
|
+
import { messages } from '../utils/messages.js';
|
|
14
|
+
import { isLoggedIn, loadCredentials, clearCredentials, getCurrentUserEmail } from '../auth/credentials.js';
|
|
15
|
+
import { revokeToken } from '../auth/token.js';
|
|
16
|
+
export async function logout(_options = {}) {
|
|
17
|
+
printHeader(messages.logout.header);
|
|
18
|
+
console.log('');
|
|
19
|
+
// 로그인 상태 확인
|
|
20
|
+
if (!isLoggedIn()) {
|
|
21
|
+
const credentials = loadCredentials();
|
|
22
|
+
if (!credentials) {
|
|
23
|
+
printWarning(messages.logout.notLoggedIn);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const credentials = loadCredentials();
|
|
28
|
+
const email = getCurrentUserEmail();
|
|
29
|
+
// 서버에 토큰 무효화 요청 (선택)
|
|
30
|
+
if (credentials) {
|
|
31
|
+
try {
|
|
32
|
+
const revoked = await revokeToken(credentials);
|
|
33
|
+
if (revoked) {
|
|
34
|
+
printInfo(messages.logout.serverNotified);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// 서버 알림 실패는 무시 (로컬 삭제는 진행)
|
|
39
|
+
printWarning(messages.logout.serverNotifyFailed);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// 로컬 credentials 삭제
|
|
43
|
+
clearCredentials();
|
|
44
|
+
printSuccess(messages.logout.success);
|
|
45
|
+
if (email) {
|
|
46
|
+
printInfo(`${email}에서 로그아웃됨`);
|
|
47
|
+
}
|
|
48
|
+
console.log('');
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,WAA0B,EAAE;IACvD,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,YAAY;IACZ,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IAEpC,qBAAqB;IACrB,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;YAC3B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,gBAAgB,EAAE,CAAC;IAEnB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACV,SAAS,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/commands/next.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/commands/next.ts"],"names":[],"mappings":"AAiBA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqBD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmInE"}
|
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"}
|