aiag-cli 1.7.1 → 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 -88
- 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/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -1
- package/dist/commands/init.js.map +1 -1
- 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/initializerAgent.d.ts +0 -5
- package/dist/utils/initializerAgent.d.ts.map +1 -1
- package/dist/utils/initializerAgent.js +112 -31
- package/dist/utils/initializerAgent.js.map +1 -1
- 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,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API 엔드포인트 정의
|
|
3
|
+
*
|
|
4
|
+
* aiag-adp 서버 API 엔드포인트 경로 상수
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* API 버전
|
|
8
|
+
*/
|
|
9
|
+
export const API_VERSION = 'v1';
|
|
10
|
+
/**
|
|
11
|
+
* API 기본 경로
|
|
12
|
+
*/
|
|
13
|
+
export const API_BASE = '/api';
|
|
14
|
+
/**
|
|
15
|
+
* 인증 관련 엔드포인트
|
|
16
|
+
*/
|
|
17
|
+
export const AUTH_ENDPOINTS = {
|
|
18
|
+
/** 디바이스 인증 코드 요청 */
|
|
19
|
+
DEVICE_REQUEST: `${API_BASE}/auth/device/request`,
|
|
20
|
+
/** 디바이스 인증 토큰 폴링 */
|
|
21
|
+
DEVICE_POLL: `${API_BASE}/auth/device/poll`,
|
|
22
|
+
/** 토큰 갱신 */
|
|
23
|
+
REFRESH_TOKEN: `${API_BASE}/auth/refresh`,
|
|
24
|
+
/** 로그아웃 (토큰 무효화) */
|
|
25
|
+
LOGOUT: `${API_BASE}/auth/logout`,
|
|
26
|
+
/** 현재 사용자 정보 */
|
|
27
|
+
ME: `${API_BASE}/auth/me`,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 프로젝트 관련 엔드포인트
|
|
31
|
+
*/
|
|
32
|
+
export const PROJECT_ENDPOINTS = {
|
|
33
|
+
/** 프로젝트 목록 */
|
|
34
|
+
LIST: `${API_BASE}/projects`,
|
|
35
|
+
/** 프로젝트 상세 (ID 필요) */
|
|
36
|
+
DETAIL: (projectId) => `${API_BASE}/projects/${projectId}`,
|
|
37
|
+
/** 프로젝트 생성 */
|
|
38
|
+
CREATE: `${API_BASE}/projects`,
|
|
39
|
+
/** 프로젝트 수정 (ID 필요) */
|
|
40
|
+
UPDATE: (projectId) => `${API_BASE}/projects/${projectId}`,
|
|
41
|
+
/** 프로젝트 삭제 (ID 필요) */
|
|
42
|
+
DELETE: (projectId) => `${API_BASE}/projects/${projectId}`,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 에이전트 관련 엔드포인트
|
|
46
|
+
*/
|
|
47
|
+
export const AGENT_ENDPOINTS = {
|
|
48
|
+
/** 프로젝트 컨텍스트 조회 */
|
|
49
|
+
CONTEXT: (projectId) => `${API_BASE}/agent/context/${projectId}`,
|
|
50
|
+
/** 다음 Feature 조회 */
|
|
51
|
+
NEXT_FEATURE: (projectId) => `${API_BASE}/agent/next-feature/${projectId}`,
|
|
52
|
+
/** Feature claim (작업 시작) */
|
|
53
|
+
CLAIM: (featureId) => `${API_BASE}/agent/claim/${featureId}`,
|
|
54
|
+
/** Feature unclaim (작업 취소) */
|
|
55
|
+
UNCLAIM: (featureId) => `${API_BASE}/agent/unclaim/${featureId}`,
|
|
56
|
+
/** Feature 완료 */
|
|
57
|
+
COMPLETE: (featureId) => `${API_BASE}/agent/complete/${featureId}`,
|
|
58
|
+
/** Feature 로그 전송 */
|
|
59
|
+
LOG: (featureId) => `${API_BASE}/agent/log/${featureId}`,
|
|
60
|
+
/** Feature 로그 조회 */
|
|
61
|
+
LOGS: (featureId) => `${API_BASE}/agent/logs/${featureId}`,
|
|
62
|
+
/** 세션 시작 */
|
|
63
|
+
SESSION_START: (projectId) => `${API_BASE}/agent/session/start/${projectId}`,
|
|
64
|
+
/** 세션 종료 */
|
|
65
|
+
SESSION_END: (sessionId) => `${API_BASE}/agent/session/end/${sessionId}`,
|
|
66
|
+
/** 세션 목록 조회 */
|
|
67
|
+
SESSIONS: (projectId) => `${API_BASE}/agent/sessions/${projectId}`,
|
|
68
|
+
/** 실시간 로그 스트리밍 (SSE) */
|
|
69
|
+
STREAM: (projectId) => `${API_BASE}/agent/stream/${projectId}`,
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* 동기화 관련 엔드포인트
|
|
73
|
+
*/
|
|
74
|
+
export const SYNC_ENDPOINTS = {
|
|
75
|
+
/** Feature 동기화 */
|
|
76
|
+
FEATURES: (projectId) => `${API_BASE}/sync/features/${projectId}`,
|
|
77
|
+
/** 전체 동기화 상태 */
|
|
78
|
+
STATUS: (projectId) => `${API_BASE}/sync/status/${projectId}`,
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* 헬스체크 엔드포인트
|
|
82
|
+
*/
|
|
83
|
+
export const HEALTH_ENDPOINTS = {
|
|
84
|
+
/** 서버 상태 확인 */
|
|
85
|
+
CHECK: `${API_BASE}/health`,
|
|
86
|
+
/** 상세 상태 (인증 필요) */
|
|
87
|
+
DETAIL: `${API_BASE}/health/detail`,
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* 전체 URL 생성 헬퍼
|
|
91
|
+
* @param serverUrl 서버 기본 URL
|
|
92
|
+
* @param endpoint 엔드포인트 경로
|
|
93
|
+
* @returns 전체 URL
|
|
94
|
+
*/
|
|
95
|
+
export function buildUrl(serverUrl, endpoint) {
|
|
96
|
+
// 서버 URL 끝의 슬래시 제거
|
|
97
|
+
const baseUrl = serverUrl.replace(/\/+$/, '');
|
|
98
|
+
// 엔드포인트 시작의 슬래시 확인
|
|
99
|
+
const path = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
|
|
100
|
+
return `${baseUrl}${path}`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 쿼리 파라미터 추가 헬퍼
|
|
104
|
+
* @param url 기본 URL
|
|
105
|
+
* @param params 쿼리 파라미터 객체
|
|
106
|
+
* @returns 쿼리 파라미터가 추가된 URL
|
|
107
|
+
*/
|
|
108
|
+
export function withQueryParams(url, params) {
|
|
109
|
+
const searchParams = new URLSearchParams();
|
|
110
|
+
for (const [key, value] of Object.entries(params)) {
|
|
111
|
+
if (value !== undefined) {
|
|
112
|
+
searchParams.append(key, String(value));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const queryString = searchParams.toString();
|
|
116
|
+
if (!queryString) {
|
|
117
|
+
return url;
|
|
118
|
+
}
|
|
119
|
+
const separator = url.includes('?') ? '&' : '?';
|
|
120
|
+
return `${url}${separator}${queryString}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 프로젝트 URL에서 서버 URL과 프로젝트 ID 추출
|
|
124
|
+
* @param projectUrl 프로젝트 URL (예: https://aiag-adp.example.com/projects/abc123)
|
|
125
|
+
* @returns { serverUrl, projectId } 또는 null (파싱 실패 시)
|
|
126
|
+
*/
|
|
127
|
+
export function parseProjectUrl(projectUrl) {
|
|
128
|
+
try {
|
|
129
|
+
const url = new URL(projectUrl);
|
|
130
|
+
// 프로젝트 경로 패턴: /projects/:id 또는 /p/:id
|
|
131
|
+
const projectPatterns = [
|
|
132
|
+
/^\/projects\/([^\/]+)\/?$/,
|
|
133
|
+
/^\/p\/([^\/]+)\/?$/,
|
|
134
|
+
];
|
|
135
|
+
for (const pattern of projectPatterns) {
|
|
136
|
+
const match = url.pathname.match(pattern);
|
|
137
|
+
if (match && match[1]) {
|
|
138
|
+
return {
|
|
139
|
+
serverUrl: `${url.protocol}//${url.host}`,
|
|
140
|
+
projectId: match[1],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/api/endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API 요청/응답 타입 정의
|
|
3
|
+
*
|
|
4
|
+
* aiag-adp 서버와 통신에 사용되는 타입들
|
|
5
|
+
*/
|
|
6
|
+
import type { FeaturePriority, FeatureCategory } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* API 응답 래퍼
|
|
9
|
+
*/
|
|
10
|
+
export interface ApiResponse<T> {
|
|
11
|
+
success: boolean;
|
|
12
|
+
data?: T;
|
|
13
|
+
error?: {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
details?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 페이지네이션 정보
|
|
21
|
+
*/
|
|
22
|
+
export interface Pagination {
|
|
23
|
+
page: number;
|
|
24
|
+
limit: number;
|
|
25
|
+
total: number;
|
|
26
|
+
hasMore: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 서버의 프로젝트 정보
|
|
30
|
+
*/
|
|
31
|
+
export interface ServerProject {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
repositoryUrl?: string;
|
|
36
|
+
createdAt: string;
|
|
37
|
+
updatedAt: string;
|
|
38
|
+
ownerId: string;
|
|
39
|
+
totalFeatures: number;
|
|
40
|
+
completedFeatures: number;
|
|
41
|
+
status: 'active' | 'archived' | 'paused';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 프로젝트 생성 요청
|
|
45
|
+
*/
|
|
46
|
+
export interface CreateProjectRequest {
|
|
47
|
+
name: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
repositoryUrl?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 프로젝트 생성 응답
|
|
53
|
+
*/
|
|
54
|
+
export interface CreateProjectResponse {
|
|
55
|
+
id: string;
|
|
56
|
+
name: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
repositoryUrl?: string;
|
|
59
|
+
createdAt: string;
|
|
60
|
+
status: 'active';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 서버의 Feature 정보
|
|
64
|
+
*/
|
|
65
|
+
export interface ServerFeature {
|
|
66
|
+
id: string;
|
|
67
|
+
projectId: string;
|
|
68
|
+
localId: string;
|
|
69
|
+
category: FeatureCategory;
|
|
70
|
+
priority: FeaturePriority;
|
|
71
|
+
description: string;
|
|
72
|
+
acceptanceCriteria: string[];
|
|
73
|
+
testCommand?: string;
|
|
74
|
+
passes: boolean;
|
|
75
|
+
lastTestedAt?: string;
|
|
76
|
+
implementedBy?: string;
|
|
77
|
+
notes?: string;
|
|
78
|
+
dependsOn?: string[];
|
|
79
|
+
status: 'pending' | 'in_progress' | 'completed' | 'blocked';
|
|
80
|
+
claimedAt?: string;
|
|
81
|
+
claimedBy?: string;
|
|
82
|
+
completedAt?: string;
|
|
83
|
+
createdAt: string;
|
|
84
|
+
updatedAt: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 프로젝트 컨텍스트 (전체 정보)
|
|
88
|
+
*/
|
|
89
|
+
export interface ProjectContext {
|
|
90
|
+
project: ServerProject;
|
|
91
|
+
features: ServerFeature[];
|
|
92
|
+
recentSessions: SessionSummaryResponse[];
|
|
93
|
+
activeAgents: AgentInfo[];
|
|
94
|
+
stats: ProjectStats;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 프로젝트 통계
|
|
98
|
+
*/
|
|
99
|
+
export interface ProjectStats {
|
|
100
|
+
totalFeatures: number;
|
|
101
|
+
completedFeatures: number;
|
|
102
|
+
inProgressFeatures: number;
|
|
103
|
+
pendingFeatures: number;
|
|
104
|
+
blockedFeatures: number;
|
|
105
|
+
completionRate: number;
|
|
106
|
+
lastActivity?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 에이전트 정보
|
|
110
|
+
*/
|
|
111
|
+
export interface AgentInfo {
|
|
112
|
+
id: string;
|
|
113
|
+
type: 'cli' | 'night-agent';
|
|
114
|
+
userId?: string;
|
|
115
|
+
email?: string;
|
|
116
|
+
currentFeature?: string;
|
|
117
|
+
lastActive: string;
|
|
118
|
+
status: 'active' | 'idle' | 'offline';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Feature claim 요청
|
|
122
|
+
*/
|
|
123
|
+
export interface ClaimRequest {
|
|
124
|
+
agentType: 'cli' | 'night-agent';
|
|
125
|
+
agentId?: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Feature claim 응답
|
|
129
|
+
*/
|
|
130
|
+
export interface ClaimResponse {
|
|
131
|
+
success: boolean;
|
|
132
|
+
claimedAt: string;
|
|
133
|
+
claimedBy: string;
|
|
134
|
+
feature: ServerFeature;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Feature 완료 요청
|
|
138
|
+
*/
|
|
139
|
+
export interface CompleteRequest {
|
|
140
|
+
passes: boolean;
|
|
141
|
+
completedAt: string;
|
|
142
|
+
testResults?: TestResultData;
|
|
143
|
+
notes?: string;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 테스트 결과 데이터
|
|
147
|
+
*/
|
|
148
|
+
export interface TestResultData {
|
|
149
|
+
status: 'passed' | 'failed' | 'skipped';
|
|
150
|
+
duration?: number;
|
|
151
|
+
output?: string;
|
|
152
|
+
error?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Feature 완료 응답
|
|
156
|
+
*/
|
|
157
|
+
export interface CompleteResponse {
|
|
158
|
+
success: boolean;
|
|
159
|
+
completedAt: string;
|
|
160
|
+
feature: ServerFeature;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Feature 로그 타입
|
|
164
|
+
*/
|
|
165
|
+
export type FeatureLogType = 'started' | 'progress' | 'completed' | 'failed' | 'note' | 'test_passed' | 'test_failed' | 'blocked';
|
|
166
|
+
/**
|
|
167
|
+
* Feature 로그 요청
|
|
168
|
+
*/
|
|
169
|
+
export interface FeatureLogRequest {
|
|
170
|
+
type: FeatureLogType;
|
|
171
|
+
message: string;
|
|
172
|
+
metadata?: Record<string, unknown>;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Feature 로그 응답
|
|
176
|
+
*/
|
|
177
|
+
export interface FeatureLogResponse {
|
|
178
|
+
id: string;
|
|
179
|
+
featureId: string;
|
|
180
|
+
type: FeatureLogType;
|
|
181
|
+
message: string;
|
|
182
|
+
metadata?: Record<string, unknown>;
|
|
183
|
+
createdAt: string;
|
|
184
|
+
agentType: 'cli' | 'night-agent';
|
|
185
|
+
agentId?: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* 세션 시작 요청
|
|
189
|
+
*/
|
|
190
|
+
export interface SessionStartRequest {
|
|
191
|
+
agentType: 'cli' | 'night-agent';
|
|
192
|
+
agentId?: string;
|
|
193
|
+
notes?: string;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 세션 시작 응답
|
|
197
|
+
*/
|
|
198
|
+
export interface SessionStartResponse {
|
|
199
|
+
id: string;
|
|
200
|
+
projectId: string;
|
|
201
|
+
startedAt: string;
|
|
202
|
+
agentType: 'cli' | 'night-agent';
|
|
203
|
+
userId: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 세션 종료 요청
|
|
207
|
+
*/
|
|
208
|
+
export interface SessionEndRequest {
|
|
209
|
+
workDone: string[];
|
|
210
|
+
commits: string[];
|
|
211
|
+
nextSteps: string[];
|
|
212
|
+
notes: string[];
|
|
213
|
+
duration: number;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* 세션 요약 응답
|
|
217
|
+
*/
|
|
218
|
+
export interface SessionSummaryResponse {
|
|
219
|
+
id: string;
|
|
220
|
+
projectId: string;
|
|
221
|
+
startedAt: string;
|
|
222
|
+
endedAt: string;
|
|
223
|
+
duration: number;
|
|
224
|
+
agentType: 'cli' | 'night-agent';
|
|
225
|
+
userId: string;
|
|
226
|
+
email?: string;
|
|
227
|
+
workDone: string[];
|
|
228
|
+
commits: string[];
|
|
229
|
+
nextSteps: string[];
|
|
230
|
+
notes: string[];
|
|
231
|
+
featuresCompleted: number;
|
|
232
|
+
featuresWorkedOn: string[];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* 동기화 상태
|
|
236
|
+
*/
|
|
237
|
+
export interface SyncStatus {
|
|
238
|
+
featureId: string;
|
|
239
|
+
action: 'create' | 'update' | 'complete' | 'delete';
|
|
240
|
+
synced: boolean;
|
|
241
|
+
lastAttempt?: string;
|
|
242
|
+
error?: string;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* 동기화 요청 (bulk)
|
|
246
|
+
*/
|
|
247
|
+
export interface SyncRequest {
|
|
248
|
+
features: SyncFeatureData[];
|
|
249
|
+
forceOverwrite?: boolean;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 동기화용 Feature 데이터
|
|
253
|
+
*/
|
|
254
|
+
export interface SyncFeatureData {
|
|
255
|
+
localId: string;
|
|
256
|
+
category: FeatureCategory;
|
|
257
|
+
priority: FeaturePriority;
|
|
258
|
+
description: string;
|
|
259
|
+
acceptanceCriteria: string[];
|
|
260
|
+
testCommand?: string;
|
|
261
|
+
passes: boolean;
|
|
262
|
+
lastTestedAt?: string;
|
|
263
|
+
implementedBy?: string;
|
|
264
|
+
notes?: string;
|
|
265
|
+
dependsOn?: string[];
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* 동기화 응답
|
|
269
|
+
*/
|
|
270
|
+
export interface SyncResponse {
|
|
271
|
+
success: boolean;
|
|
272
|
+
synced: number;
|
|
273
|
+
created: number;
|
|
274
|
+
updated: number;
|
|
275
|
+
conflicts: SyncConflict[];
|
|
276
|
+
serverFeatures: ServerFeature[];
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 동기화 충돌 정보
|
|
280
|
+
*/
|
|
281
|
+
export interface SyncConflict {
|
|
282
|
+
featureId: string;
|
|
283
|
+
localValue: unknown;
|
|
284
|
+
serverValue: unknown;
|
|
285
|
+
field: string;
|
|
286
|
+
resolution?: 'local' | 'server' | 'manual';
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* 토큰 갱신 요청
|
|
290
|
+
*/
|
|
291
|
+
export interface RefreshTokenRequest {
|
|
292
|
+
refreshToken: string;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* 토큰 갱신 응답
|
|
296
|
+
*/
|
|
297
|
+
export interface RefreshTokenResponse {
|
|
298
|
+
accessToken: string;
|
|
299
|
+
refreshToken?: string;
|
|
300
|
+
expiresIn: number;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* 사용자 정보 응답
|
|
304
|
+
*/
|
|
305
|
+
export interface UserInfoResponse {
|
|
306
|
+
id: string;
|
|
307
|
+
email: string;
|
|
308
|
+
name?: string;
|
|
309
|
+
avatarUrl?: string;
|
|
310
|
+
createdAt: string;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* SSE 이벤트 타입
|
|
314
|
+
*/
|
|
315
|
+
export type SSEEventType = 'connected' | 'feature_claimed' | 'feature_progress' | 'feature_completed' | 'feature_failed' | 'session_started' | 'session_ended' | 'agent_connected' | 'agent_disconnected' | 'log' | 'error' | 'heartbeat';
|
|
316
|
+
/**
|
|
317
|
+
* SSE 이벤트 데이터 (공통 기본 구조)
|
|
318
|
+
*/
|
|
319
|
+
export interface SSEEventBase {
|
|
320
|
+
type: SSEEventType;
|
|
321
|
+
timestamp: string;
|
|
322
|
+
projectId: string;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Feature 관련 이벤트 데이터
|
|
326
|
+
*/
|
|
327
|
+
export interface SSEFeatureEvent extends SSEEventBase {
|
|
328
|
+
type: 'feature_claimed' | 'feature_progress' | 'feature_completed' | 'feature_failed';
|
|
329
|
+
featureId: string;
|
|
330
|
+
featureLocalId: string;
|
|
331
|
+
agentType: 'cli' | 'night-agent';
|
|
332
|
+
agentId?: string;
|
|
333
|
+
message?: string;
|
|
334
|
+
metadata?: Record<string, unknown>;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* 세션 관련 이벤트 데이터
|
|
338
|
+
*/
|
|
339
|
+
export interface SSESessionEvent extends SSEEventBase {
|
|
340
|
+
type: 'session_started' | 'session_ended';
|
|
341
|
+
sessionId: string;
|
|
342
|
+
agentType: 'cli' | 'night-agent';
|
|
343
|
+
userId: string;
|
|
344
|
+
email?: string;
|
|
345
|
+
summary?: string;
|
|
346
|
+
featuresCompleted?: number;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* 에이전트 연결 이벤트 데이터
|
|
350
|
+
*/
|
|
351
|
+
export interface SSEAgentEvent extends SSEEventBase {
|
|
352
|
+
type: 'agent_connected' | 'agent_disconnected';
|
|
353
|
+
agentId: string;
|
|
354
|
+
agentType: 'cli' | 'night-agent';
|
|
355
|
+
email?: string;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* 로그 이벤트 데이터
|
|
359
|
+
*/
|
|
360
|
+
export interface SSELogEvent extends SSEEventBase {
|
|
361
|
+
type: 'log';
|
|
362
|
+
level: 'info' | 'warn' | 'error' | 'debug';
|
|
363
|
+
message: string;
|
|
364
|
+
source?: string;
|
|
365
|
+
metadata?: Record<string, unknown>;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* 에러 이벤트 데이터
|
|
369
|
+
*/
|
|
370
|
+
export interface SSEErrorEvent extends SSEEventBase {
|
|
371
|
+
type: 'error';
|
|
372
|
+
code: string;
|
|
373
|
+
message: string;
|
|
374
|
+
details?: Record<string, unknown>;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* 하트비트 이벤트 데이터
|
|
378
|
+
*/
|
|
379
|
+
export interface SSEHeartbeatEvent extends SSEEventBase {
|
|
380
|
+
type: 'heartbeat';
|
|
381
|
+
serverTime: string;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* 연결됨 이벤트 데이터
|
|
385
|
+
*/
|
|
386
|
+
export interface SSEConnectedEvent extends SSEEventBase {
|
|
387
|
+
type: 'connected';
|
|
388
|
+
connectionId: string;
|
|
389
|
+
serverVersion?: string;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* 모든 SSE 이벤트 유니온 타입
|
|
393
|
+
*/
|
|
394
|
+
export type SSEEvent = SSEFeatureEvent | SSESessionEvent | SSEAgentEvent | SSELogEvent | SSEErrorEvent | SSEHeartbeatEvent | SSEConnectedEvent;
|
|
395
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credentials 관리 모듈
|
|
3
|
+
*
|
|
4
|
+
* ~/.aiag/credentials 파일 관리
|
|
5
|
+
*
|
|
6
|
+
* 저장 형식 (JSON):
|
|
7
|
+
* {
|
|
8
|
+
* "serverUrl": "https://aiag-adp.example.com",
|
|
9
|
+
* "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
10
|
+
* "refreshToken": "...",
|
|
11
|
+
* "expiresAt": "2025-01-01T00:00:00Z",
|
|
12
|
+
* "userId": "user_123",
|
|
13
|
+
* "email": "user@example.com"
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
import type { Credentials } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Credentials 파일 경로 반환
|
|
19
|
+
* @returns ~/.aiag/credentials
|
|
20
|
+
*/
|
|
21
|
+
export declare function getCredentialsPath(): string;
|
|
22
|
+
/**
|
|
23
|
+
* 저장된 credentials 로드
|
|
24
|
+
* @returns Credentials 또는 null (없거나 유효하지 않은 경우)
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadCredentials(): Credentials | null;
|
|
27
|
+
/**
|
|
28
|
+
* Credentials 저장
|
|
29
|
+
* @param credentials 저장할 인증 정보
|
|
30
|
+
*/
|
|
31
|
+
export declare function saveCredentials(credentials: Credentials): void;
|
|
32
|
+
/**
|
|
33
|
+
* Credentials 삭제
|
|
34
|
+
*/
|
|
35
|
+
export declare function clearCredentials(): void;
|
|
36
|
+
/**
|
|
37
|
+
* 로그인 상태 확인
|
|
38
|
+
* @returns 로그인 되어 있으면 true
|
|
39
|
+
*/
|
|
40
|
+
export declare function isLoggedIn(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 토큰 만료 여부 확인
|
|
43
|
+
* @param credentials 인증 정보
|
|
44
|
+
* @returns 만료되었으면 true
|
|
45
|
+
*/
|
|
46
|
+
export declare function isTokenExpired(credentials: Credentials): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 토큰 만료까지 남은 시간 (초)
|
|
49
|
+
* @param credentials 인증 정보
|
|
50
|
+
* @returns 남은 시간 (초), 이미 만료되었으면 0
|
|
51
|
+
*/
|
|
52
|
+
export declare function getTokenTimeRemaining(credentials: Credentials): number;
|
|
53
|
+
/**
|
|
54
|
+
* 현재 로그인된 사용자 이메일 반환
|
|
55
|
+
* @returns 이메일 또는 null
|
|
56
|
+
*/
|
|
57
|
+
export declare function getCurrentUserEmail(): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* 현재 연결된 서버 URL 반환
|
|
60
|
+
* @returns 서버 URL 또는 null
|
|
61
|
+
*/
|
|
62
|
+
export declare function getCurrentServerUrl(): string | null;
|
|
63
|
+
/**
|
|
64
|
+
* Access Token 반환 (유효한 경우만)
|
|
65
|
+
* @returns 액세스 토큰 또는 null (만료 또는 없음)
|
|
66
|
+
*/
|
|
67
|
+
export declare function getAccessToken(): string | null;
|
|
68
|
+
/**
|
|
69
|
+
* Credentials 업데이트 (부분 업데이트)
|
|
70
|
+
* 기존 credentials가 있는 경우에만 동작
|
|
71
|
+
*/
|
|
72
|
+
export declare function updateCredentials(updates: Partial<Credentials>): boolean;
|
|
73
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CA0BpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAO9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAKtE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAGnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAGnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAM9C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAaxE"}
|