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.
Files changed (121) hide show
  1. package/README.md +125 -89
  2. package/dist/api/client.d.ts +171 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +518 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/endpoints.d.ts +112 -0
  7. package/dist/api/endpoints.d.ts.map +1 -0
  8. package/dist/api/endpoints.js +150 -0
  9. package/dist/api/endpoints.js.map +1 -0
  10. package/dist/api/types.d.ts +395 -0
  11. package/dist/api/types.d.ts.map +1 -0
  12. package/dist/api/types.js +7 -0
  13. package/dist/api/types.js.map +1 -0
  14. package/dist/auth/credentials.d.ts +73 -0
  15. package/dist/auth/credentials.d.ts.map +1 -0
  16. package/dist/auth/credentials.js +150 -0
  17. package/dist/auth/credentials.js.map +1 -0
  18. package/dist/auth/device.d.ts +58 -0
  19. package/dist/auth/device.d.ts.map +1 -0
  20. package/dist/auth/device.js +235 -0
  21. package/dist/auth/device.js.map +1 -0
  22. package/dist/auth/token.d.ts +55 -0
  23. package/dist/auth/token.d.ts.map +1 -0
  24. package/dist/auth/token.js +153 -0
  25. package/dist/auth/token.js.map +1 -0
  26. package/dist/cli.js +51 -1
  27. package/dist/cli.js.map +1 -1
  28. package/dist/commands/auto.d.ts.map +1 -1
  29. package/dist/commands/auto.js +321 -236
  30. package/dist/commands/auto.js.map +1 -1
  31. package/dist/commands/complete.d.ts +1 -0
  32. package/dist/commands/complete.d.ts.map +1 -1
  33. package/dist/commands/complete.js +30 -0
  34. package/dist/commands/complete.js.map +1 -1
  35. package/dist/commands/connect.d.ts +25 -0
  36. package/dist/commands/connect.d.ts.map +1 -0
  37. package/dist/commands/connect.js +356 -0
  38. package/dist/commands/connect.js.map +1 -0
  39. package/dist/commands/login.d.ts +19 -0
  40. package/dist/commands/login.d.ts.map +1 -0
  41. package/dist/commands/login.js +119 -0
  42. package/dist/commands/login.js.map +1 -0
  43. package/dist/commands/logout.d.ts +15 -0
  44. package/dist/commands/logout.d.ts.map +1 -0
  45. package/dist/commands/logout.js +50 -0
  46. package/dist/commands/logout.js.map +1 -0
  47. package/dist/commands/next.d.ts +1 -0
  48. package/dist/commands/next.d.ts.map +1 -1
  49. package/dist/commands/next.js +41 -2
  50. package/dist/commands/next.js.map +1 -1
  51. package/dist/commands/project.d.ts +13 -0
  52. package/dist/commands/project.d.ts.map +1 -0
  53. package/dist/commands/project.js +92 -0
  54. package/dist/commands/project.js.map +1 -0
  55. package/dist/commands/session.d.ts +10 -2
  56. package/dist/commands/session.d.ts.map +1 -1
  57. package/dist/commands/session.js +80 -3
  58. package/dist/commands/session.js.map +1 -1
  59. package/dist/commands/status.d.ts +1 -0
  60. package/dist/commands/status.d.ts.map +1 -1
  61. package/dist/commands/status.js +51 -0
  62. package/dist/commands/status.js.map +1 -1
  63. package/dist/commands/sync.d.ts +33 -0
  64. package/dist/commands/sync.d.ts.map +1 -0
  65. package/dist/commands/sync.js +555 -0
  66. package/dist/commands/sync.js.map +1 -0
  67. package/dist/commands/work.d.ts +1 -0
  68. package/dist/commands/work.d.ts.map +1 -1
  69. package/dist/commands/work.js +22 -1
  70. package/dist/commands/work.js.map +1 -1
  71. package/dist/config/global.d.ts +54 -0
  72. package/dist/config/global.d.ts.map +1 -0
  73. package/dist/config/global.js +110 -0
  74. package/dist/config/global.js.map +1 -0
  75. package/dist/prompts/coding.d.ts +31 -0
  76. package/dist/prompts/coding.d.ts.map +1 -0
  77. package/dist/prompts/coding.js +228 -0
  78. package/dist/prompts/coding.js.map +1 -0
  79. package/dist/prompts/index.d.ts +10 -0
  80. package/dist/prompts/index.d.ts.map +1 -0
  81. package/dist/prompts/index.js +10 -0
  82. package/dist/prompts/index.js.map +1 -0
  83. package/dist/prompts/initializer.d.ts +20 -0
  84. package/dist/prompts/initializer.d.ts.map +1 -0
  85. package/dist/prompts/initializer.js +147 -0
  86. package/dist/prompts/initializer.js.map +1 -0
  87. package/dist/sdk/client.d.ts +67 -0
  88. package/dist/sdk/client.d.ts.map +1 -0
  89. package/dist/sdk/client.js +196 -0
  90. package/dist/sdk/client.js.map +1 -0
  91. package/dist/sdk/index.d.ts +8 -0
  92. package/dist/sdk/index.d.ts.map +1 -0
  93. package/dist/sdk/index.js +8 -0
  94. package/dist/sdk/index.js.map +1 -0
  95. package/dist/sdk/security.d.ts +43 -0
  96. package/dist/sdk/security.d.ts.map +1 -0
  97. package/dist/sdk/security.js +214 -0
  98. package/dist/sdk/security.js.map +1 -0
  99. package/dist/types.d.ts +64 -0
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/utils/connection.d.ts +126 -0
  102. package/dist/utils/connection.d.ts.map +1 -0
  103. package/dist/utils/connection.js +226 -0
  104. package/dist/utils/connection.js.map +1 -0
  105. package/dist/utils/messages.d.ts +76 -0
  106. package/dist/utils/messages.d.ts.map +1 -1
  107. package/dist/utils/messages.js +87 -1
  108. package/dist/utils/messages.js.map +1 -1
  109. package/dist/utils/output.d.ts +10 -0
  110. package/dist/utils/output.d.ts.map +1 -1
  111. package/dist/utils/output.js +31 -0
  112. package/dist/utils/output.js.map +1 -1
  113. package/dist/utils/prompt.d.ts +10 -0
  114. package/dist/utils/prompt.d.ts.map +1 -0
  115. package/dist/utils/prompt.js +22 -0
  116. package/dist/utils/prompt.js.map +1 -0
  117. package/dist/utils/sseClient.d.ts +183 -0
  118. package/dist/utils/sseClient.d.ts.map +1 -0
  119. package/dist/utils/sseClient.js +391 -0
  120. package/dist/utils/sseClient.js.map +1 -0
  121. 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":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oBAAoB;IACpB,cAAc,EAAE,GAAG,QAAQ,sBAAsB;IAEjD,oBAAoB;IACpB,WAAW,EAAE,GAAG,QAAQ,mBAAmB;IAE3C,YAAY;IACZ,aAAa,EAAE,GAAG,QAAQ,eAAe;IAEzC,oBAAoB;IACpB,MAAM,EAAE,GAAG,QAAQ,cAAc;IAEjC,gBAAgB;IAChB,EAAE,EAAE,GAAG,QAAQ,UAAU;CACjB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,IAAI,EAAE,GAAG,QAAQ,WAAW;IAE5B,sBAAsB;IACtB,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,aAAa,SAAS,EAAE;IAElE,cAAc;IACd,MAAM,EAAE,GAAG,QAAQ,WAAW;IAE9B,sBAAsB;IACtB,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,aAAa,SAAS,EAAE;IAElE,sBAAsB;IACtB,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,aAAa,SAAS,EAAE;CAC1D,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,mBAAmB;IACnB,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,kBAAkB,SAAS,EAAE;IAExE,oBAAoB;IACpB,YAAY,EAAE,CAAC,SAAiB,EAAE,EAAE,CAClC,GAAG,QAAQ,uBAAuB,SAAS,EAAE;IAE/C,4BAA4B;IAC5B,KAAK,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,gBAAgB,SAAS,EAAE;IAEpE,8BAA8B;IAC9B,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,kBAAkB,SAAS,EAAE;IAExE,iBAAiB;IACjB,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,mBAAmB,SAAS,EAAE;IAE1E,oBAAoB;IACpB,GAAG,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,cAAc,SAAS,EAAE;IAEhE,oBAAoB;IACpB,IAAI,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,eAAe,SAAS,EAAE;IAElE,YAAY;IACZ,aAAa,EAAE,CAAC,SAAiB,EAAE,EAAE,CACnC,GAAG,QAAQ,wBAAwB,SAAS,EAAE;IAEhD,YAAY;IACZ,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE,CACjC,GAAG,QAAQ,sBAAsB,SAAS,EAAE;IAE9C,eAAe;IACf,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,mBAAmB,SAAS,EAAE;IAE1E,wBAAwB;IACxB,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,iBAAiB,SAAS,EAAE;CAC9D,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB;IAClB,QAAQ,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,kBAAkB,SAAS,EAAE;IAEzE,gBAAgB;IAChB,MAAM,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,QAAQ,gBAAgB,SAAS,EAAE;CAC7D,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,eAAe;IACf,KAAK,EAAE,GAAG,QAAQ,SAAS;IAE3B,oBAAoB;IACpB,MAAM,EAAE,GAAG,QAAQ,gBAAgB;CAC3B,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,QAAgB;IAC1D,mBAAmB;IACnB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,mBAAmB;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IAClE,OAAO,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,MAA6D;IAE7D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAEhC,sCAAsC;QACtC,MAAM,eAAe,GAAG;YACtB,2BAA2B;YAC3B,oBAAoB;SACrB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,OAAO;oBACL,SAAS,EAAE,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE;oBACzC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -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,7 @@
1
+ /**
2
+ * API 요청/응답 타입 정의
3
+ *
4
+ * aiag-adp 서버와 통신에 사용되는 타입들
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -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"}