@taco_tsinghua/graphnode-sdk 0.1.17 → 0.1.21

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 (56) hide show
  1. package/README.md +91 -333
  2. package/dist/client.d.ts +24 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +34 -8
  5. package/dist/client.js.map +1 -1
  6. package/dist/endpoints/ai.d.ts +25 -30
  7. package/dist/endpoints/ai.d.ts.map +1 -1
  8. package/dist/endpoints/ai.js +220 -31
  9. package/dist/endpoints/ai.js.map +1 -1
  10. package/dist/endpoints/graph.d.ts +4 -1
  11. package/dist/endpoints/graph.d.ts.map +1 -1
  12. package/dist/endpoints/graph.js +10 -0
  13. package/dist/endpoints/graph.js.map +1 -1
  14. package/dist/endpoints/graphAi.d.ts +21 -0
  15. package/dist/endpoints/graphAi.d.ts.map +1 -1
  16. package/dist/endpoints/graphAi.js +24 -0
  17. package/dist/endpoints/graphAi.js.map +1 -1
  18. package/dist/endpoints/notification.d.ts +13 -0
  19. package/dist/endpoints/notification.d.ts.map +1 -1
  20. package/dist/endpoints/notification.js +17 -0
  21. package/dist/endpoints/notification.js.map +1 -1
  22. package/dist/endpoints/sync.d.ts +3 -1
  23. package/dist/endpoints/sync.d.ts.map +1 -1
  24. package/dist/endpoints/sync.js.map +1 -1
  25. package/dist/http-builder.d.ts +38 -0
  26. package/dist/http-builder.d.ts.map +1 -1
  27. package/dist/http-builder.js +43 -6
  28. package/dist/http-builder.js.map +1 -1
  29. package/dist/types/graph.d.ts +66 -0
  30. package/dist/types/graph.d.ts.map +1 -1
  31. package/package.json +2 -1
  32. package/src/client.ts +140 -0
  33. package/src/config.ts +9 -0
  34. package/src/endpoints/agent.ts +171 -0
  35. package/src/endpoints/ai.ts +296 -0
  36. package/src/endpoints/auth.apple.ts +39 -0
  37. package/src/endpoints/auth.google.ts +39 -0
  38. package/src/endpoints/conversations.ts +362 -0
  39. package/src/endpoints/graph.ts +398 -0
  40. package/src/endpoints/graphAi.ts +111 -0
  41. package/src/endpoints/health.ts +40 -0
  42. package/src/endpoints/me.ts +97 -0
  43. package/src/endpoints/note.ts +351 -0
  44. package/src/endpoints/notification.ts +69 -0
  45. package/src/endpoints/sync.ts +71 -0
  46. package/src/http-builder.ts +290 -0
  47. package/src/index.ts +60 -0
  48. package/src/types/aiInput.ts +111 -0
  49. package/src/types/conversation.ts +51 -0
  50. package/src/types/graph.ts +201 -0
  51. package/src/types/graphAi.ts +21 -0
  52. package/src/types/me.ts +49 -0
  53. package/src/types/message.ts +40 -0
  54. package/src/types/note.ts +89 -0
  55. package/src/types/problem.ts +22 -0
  56. package/src/types/sync.ts +35 -0
@@ -39,38 +39,33 @@ export declare class AiApi {
39
39
  constructor(rb: RequestBuilder);
40
40
  /**
41
41
  * 대화 내에서 AI와 채팅을 진행합니다.
42
+ * - 파일 첨부 가능 (files 인자)
43
+ * - 스트리밍 기본 지원 (Server-Sent Events)
44
+ * - onStream 콜백을 통해 청크 수신 가능
45
+ * - Promise는 최종 완료된 응답(AIChatResponseDto)으로 resolve됨 (기존 호환성 유지)
46
+ *
42
47
  * @param conversationId - 대화 ID
43
48
  * @param dto - 채팅 요청 데이터
44
- * - `model` ('openai' | 'deepseek'): 사용할 AI 모델
45
- * - `chatContent` (string): 사용자 입력 메시지 내용
46
- * @returns 업데이트된 메시지 목록
47
- * - `messages` (MessageDto[]): 생성된 메시지 목록 (사용자 메시지 + AI 응답 메시지)
48
- * @example
49
- * const response = await client.ai.chat('c_123', {
50
- * model: 'openai',
51
- * chatContent: 'Hello, how are you?'
52
- * });
53
- * console.log(response.data);
54
- * // Output:
55
- * {
56
- * messages: [
57
- * {
58
- * id: 'm_user_1',
59
- * role: 'user',
60
- * content: 'Hello, how are you?',
61
- * createdAt: '2024-02-20T10:00:00Z',
62
- * ...
63
- * },
64
- * {
65
- * id: 'm_ai_1',
66
- * role: 'assistant',
67
- * content: 'I am doing well, thank you!',
68
- * createdAt: '2024-02-20T10:00:01Z',
69
- * ...
70
- * }
71
- * ]
72
- * }
49
+ * @param files - (선택) 업로드할 파일 리스트
50
+ * @param onStream - (선택) 스트림 청크 수신 콜백
73
51
  */
74
- chat(conversationId: string, dto: AIChatRequestDto): Promise<HttpResponse<AIChatResponseDto>>;
52
+ chat(conversationId: string, dto: AIChatRequestDto, files?: File[], onStream?: (chunk: string) => void): Promise<HttpResponse<AIChatResponseDto>>;
53
+ /**
54
+ * AI 채팅 스트림을 엽니다.
55
+ * @param conversationId
56
+ * @param dto
57
+ * @param onEvent
58
+ * @param options
59
+ */
60
+ chatStream(conversationId: string, dto: AIChatRequestDto, files: File[] | undefined, onEvent: (event: any) => void, options?: {
61
+ signal?: AbortSignal;
62
+ fetchImpl?: any;
63
+ }): Promise<() => void>;
64
+ /**
65
+ * AI 관련 파일을 다운로드합니다.
66
+ * @param fileKey 파일 키 (S3 Key)
67
+ * @returns Blob 객체
68
+ */
69
+ downloadFile(fileKey: string): Promise<Blob>;
75
70
  }
76
71
  //# sourceMappingURL=ai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;IACJ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;CAG9F"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;IACJ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAGtC;;;;;;;;;;;OAWG;IACG,IAAI,CACR,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,gBAAgB,EACrB,KAAK,CAAC,EAAE,IAAI,EAAE,EACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IA6H3C;;;;;;OAMG;IACG,UAAU,CACd,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,IAAI,EAAE,YAAK,EAClB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC7B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,GAAG,CAAA;KAAO,GACtD,OAAO,CAAC,MAAM,IAAI,CAAC;IAkFtB;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUnD"}
@@ -16,40 +16,229 @@ export class AiApi {
16
16
  }
17
17
  /**
18
18
  * 대화 내에서 AI와 채팅을 진행합니다.
19
+ * - 파일 첨부 가능 (files 인자)
20
+ * - 스트리밍 기본 지원 (Server-Sent Events)
21
+ * - onStream 콜백을 통해 청크 수신 가능
22
+ * - Promise는 최종 완료된 응답(AIChatResponseDto)으로 resolve됨 (기존 호환성 유지)
23
+ *
19
24
  * @param conversationId - 대화 ID
20
25
  * @param dto - 채팅 요청 데이터
21
- * - `model` ('openai' | 'deepseek'): 사용할 AI 모델
22
- * - `chatContent` (string): 사용자 입력 메시지 내용
23
- * @returns 업데이트된 메시지 목록
24
- * - `messages` (MessageDto[]): 생성된 메시지 목록 (사용자 메시지 + AI 응답 메시지)
25
- * @example
26
- * const response = await client.ai.chat('c_123', {
27
- * model: 'openai',
28
- * chatContent: 'Hello, how are you?'
29
- * });
30
- * console.log(response.data);
31
- * // Output:
32
- * {
33
- * messages: [
34
- * {
35
- * id: 'm_user_1',
36
- * role: 'user',
37
- * content: 'Hello, how are you?',
38
- * createdAt: '2024-02-20T10:00:00Z',
39
- * ...
40
- * },
41
- * {
42
- * id: 'm_ai_1',
43
- * role: 'assistant',
44
- * content: 'I am doing well, thank you!',
45
- * createdAt: '2024-02-20T10:00:01Z',
46
- * ...
47
- * }
48
- * ]
49
- * }
26
+ * @param files - (선택) 업로드할 파일 리스트
27
+ * @param onStream - (선택) 스트림 청크 수신 콜백
50
28
  */
51
- chat(conversationId, dto) {
52
- return this.rb.path(`/v1/ai/conversations/${conversationId}/chat`).post(dto);
29
+ async chat(conversationId, dto, files, onStream) {
30
+ const rb = this.rb.path(`/v1/ai/conversations/${conversationId}/chat`);
31
+ // 1. Body 준비 (JSON or FormData)
32
+ let body;
33
+ if (files && files.length > 0) {
34
+ const formData = new FormData();
35
+ formData.append('id', dto.id);
36
+ formData.append('model', dto.model);
37
+ formData.append('chatContent', dto.chatContent);
38
+ files.forEach((file) => formData.append('files', file));
39
+ body = formData;
40
+ }
41
+ else {
42
+ body = dto;
43
+ }
44
+ try {
45
+ // 2. 요청 전송 (Accept: text/event-stream 강제)
46
+ // sendRaw에 extraHeaders를 전달하여 요청
47
+ const res = await rb.sendRaw('POST', body, { Accept: 'text/event-stream' });
48
+ if (!res.ok) {
49
+ let errBody;
50
+ try {
51
+ errBody = await res.json();
52
+ }
53
+ catch {
54
+ errBody = await res.text();
55
+ }
56
+ return {
57
+ isSuccess: false,
58
+ error: { statusCode: res.status, message: res.statusText, body: errBody },
59
+ };
60
+ }
61
+ // 3. 응답 처리 (SSE vs JSON)
62
+ const contentType = res.headers.get('content-type') || '';
63
+ if (!contentType.includes('text/event-stream')) {
64
+ // SSE가 아니면 일반 JSON으로 처리 (Fallback)
65
+ const json = await res.json();
66
+ return { isSuccess: true, statusCode: res.status, data: json };
67
+ }
68
+ // 4. SSE 스트림 파싱
69
+ if (!res.body) {
70
+ throw new Error('Response body is empty');
71
+ }
72
+ const reader = res.body.getReader();
73
+ const decoder = new TextDecoder();
74
+ let buffer = '';
75
+ let finalResult = null;
76
+ let finalError = null;
77
+ while (true) {
78
+ const { done, value } = await reader.read();
79
+ if (done)
80
+ break;
81
+ buffer += decoder.decode(value, { stream: true });
82
+ // SSE 이벤트 파싱 로직
83
+ // 예: "event: chunk\ndata: {...}\n\n"
84
+ const parts = buffer.split('\n\n');
85
+ buffer = parts.pop() || ''; // 마지막 불완전한 부분은 버퍼에 남김
86
+ for (const part of parts) {
87
+ const lines = part.split('\n');
88
+ let eventName = 'message';
89
+ let dataStr = '';
90
+ for (const line of lines) {
91
+ const trimmed = line.trim();
92
+ if (trimmed.startsWith('event:'))
93
+ eventName = trimmed.slice(6).trim();
94
+ else if (trimmed.startsWith('data:'))
95
+ dataStr = trimmed.slice(5).trim();
96
+ }
97
+ if (dataStr) {
98
+ try {
99
+ const parsed = JSON.parse(dataStr);
100
+ if (eventName === 'chunk') {
101
+ if (onStream)
102
+ onStream(parsed.text);
103
+ }
104
+ else if (eventName === 'result') {
105
+ finalResult = parsed;
106
+ }
107
+ else if (eventName === 'error') {
108
+ finalError = parsed.message;
109
+ }
110
+ }
111
+ catch {
112
+ // JSON 파싱 에러 무시
113
+ }
114
+ }
115
+ }
116
+ }
117
+ // 스트림 종료 후 처리
118
+ if (finalError) {
119
+ return {
120
+ isSuccess: false,
121
+ error: { statusCode: 500, message: finalError },
122
+ };
123
+ }
124
+ if (!finalResult) {
125
+ // result 이벤트 없이 끝난 경우 (예: 연결 끊김 등)
126
+ return {
127
+ isSuccess: false,
128
+ error: { statusCode: 500, message: 'Stream ended without result' },
129
+ };
130
+ }
131
+ return {
132
+ isSuccess: true,
133
+ statusCode: 201, // Created
134
+ data: finalResult,
135
+ };
136
+ }
137
+ catch (e) {
138
+ return {
139
+ isSuccess: false,
140
+ error: {
141
+ statusCode: 0,
142
+ message: e instanceof Error ? e.message : String(e),
143
+ },
144
+ };
145
+ }
146
+ }
147
+ /**
148
+ * AI 채팅 스트림을 엽니다.
149
+ * @param conversationId
150
+ * @param dto
151
+ * @param onEvent
152
+ * @param options
153
+ */
154
+ async chatStream(conversationId, dto, files = [], onEvent, options = {}) {
155
+ const url = this.rb.path(`/v1/ai/conversations/${conversationId}/chat`).url();
156
+ // Body 준비
157
+ let body;
158
+ const headers = {
159
+ Accept: 'text/event-stream',
160
+ };
161
+ if (files.length > 0) {
162
+ const formData = new FormData();
163
+ formData.append('id', dto.id);
164
+ formData.append('model', dto.model);
165
+ formData.append('chatContent', dto.chatContent);
166
+ files.forEach((f) => formData.append('files', f));
167
+ body = formData;
168
+ // Content-Type for FormData is handled by browser/fetch
169
+ }
170
+ else {
171
+ headers['Content-Type'] = 'application/json';
172
+ body = JSON.stringify(dto);
173
+ }
174
+ // Agent.ts의 openAgentChatStream 로직과 유사하게 구현 (여기서는 간소화된 fetch 호출)
175
+ // 실제로는 http-builder가 스트리밍을 직접 지원하지 않으므로, fetch를 직접 호출해야 함.
176
+ // this.rb의 credentials, headers 등을 재사용하고 싶지만 private임.
177
+ // 여기서는 간단히 global fetch 사용 가정.
178
+ const fetchImpl = options.fetchImpl || globalThis.fetch;
179
+ const controller = new AbortController();
180
+ const signal = options.signal || controller.signal;
181
+ try {
182
+ const res = await fetchImpl(url, {
183
+ method: 'POST',
184
+ headers,
185
+ body,
186
+ signal,
187
+ credentials: 'include', // SDK 기본값 따름
188
+ });
189
+ if (!res.body)
190
+ return () => controller.abort();
191
+ const reader = res.body.getReader();
192
+ const decoder = new TextDecoder();
193
+ let buffer = '';
194
+ (async () => {
195
+ while (true) {
196
+ const { done, value } = await reader.read();
197
+ if (done)
198
+ break;
199
+ buffer += decoder.decode(value, { stream: true });
200
+ const parts = buffer.split('\n\n');
201
+ buffer = parts.pop() || '';
202
+ for (const part of parts) {
203
+ const lines = part.split('\n');
204
+ let eventName = 'message';
205
+ let dataStr = '';
206
+ for (const line of lines) {
207
+ if (line.startsWith('event:'))
208
+ eventName = line.slice(6).trim();
209
+ else if (line.startsWith('data:'))
210
+ dataStr = line.slice(5).trim();
211
+ }
212
+ if (dataStr) {
213
+ try {
214
+ const parsed = JSON.parse(dataStr);
215
+ onEvent({ event: eventName, data: parsed });
216
+ }
217
+ catch {
218
+ // ignore
219
+ }
220
+ }
221
+ }
222
+ }
223
+ })();
224
+ }
225
+ catch (e) {
226
+ onEvent({ event: 'error', data: { message: String(e) } });
227
+ }
228
+ return () => controller.abort();
229
+ }
230
+ /**
231
+ * AI 관련 파일을 다운로드합니다.
232
+ * @param fileKey 파일 키 (S3 Key)
233
+ * @returns Blob 객체
234
+ */
235
+ async downloadFile(fileKey) {
236
+ const rb = this.rb.path(`/v1/ai/files/${fileKey}`);
237
+ const res = await rb.sendRaw('GET', undefined, {});
238
+ if (!res.ok) {
239
+ throw new Error(`Failed to download file: ${res.statusText}`);
240
+ }
241
+ return await res.blob();
53
242
  }
54
243
  }
55
244
  //# sourceMappingURL=ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AA4BvE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,KAAK;IAChB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,IAAI,CAAC,cAAsB,EAAE,GAAqB;QAChD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,OAAO,CAAC,CAAC,IAAI,CAAoB,GAAG,CAAC,CAAC;IAClG,CAAC;CACF"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { RequestBuilder, type HttpResponse } from '../http-builder.js';
2
- import type { GraphNodeDto, GraphEdgeDto, GraphClusterDto, GraphStatsDto, GraphSnapshotDto, CreateEdgeResponse, UpdateNodePayload } from '../types/graph.js';
2
+ import type { GraphNodeDto, GraphEdgeDto, GraphClusterDto, GraphStatsDto, GraphSnapshotDto, GraphSubclusterDto, CreateEdgeResponse, UpdateNodePayload } from '../types/graph.js';
3
3
  /**
4
4
  * Graph API
5
5
  *
@@ -259,6 +259,9 @@ export declare class GraphApi {
259
259
  * // Output: (No content)
260
260
  */
261
261
  deleteCluster(clusterId: string): Promise<HttpResponse<void>>;
262
+ listSubclusters(): Promise<HttpResponse<GraphSubclusterDto[]>>;
263
+ getSubcluster(subclusterId: string): Promise<HttpResponse<GraphSubclusterDto>>;
264
+ deleteSubcluster(subclusterId: string): Promise<HttpResponse<void>>;
262
265
  /**
263
266
  * 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
264
267
  * @param clusterId - 삭제할 클러스터의 ID
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAInE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAIlD;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAI5D;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAInF;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIvD;;;;;;OAMG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAI9D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAIzE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAIlD;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIvD;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAI/E;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;IAIxD;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAIrE;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAI7D;;;;;;OAMG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIpE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAIhD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAItD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CAGtE"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"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"}
@@ -285,6 +285,16 @@ export class GraphApi {
285
285
  deleteCluster(clusterId) {
286
286
  return this.rb.path(`/clusters/${clusterId}`).delete();
287
287
  }
288
+ // --- Subclusters ---
289
+ async listSubclusters() {
290
+ return this.rb.path('/subclusters').get();
291
+ }
292
+ async getSubcluster(subclusterId) {
293
+ return this.rb.path(`/subclusters/${subclusterId}`).get();
294
+ }
295
+ async deleteSubcluster(subclusterId) {
296
+ return this.rb.path(`/subclusters/${subclusterId}`).delete();
297
+ }
288
298
  /**
289
299
  * 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
290
300
  * @param clusterId - 삭제할 클러스터의 ID
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { RequestBuilder, type HttpResponse } from '../http-builder.js';
2
2
  import type { GraphGenerationResponseDto } from '../types/graphAi.js';
3
+ import type { GraphSummaryDto } from '../types/graph.js';
3
4
  import type { AiInputData } from '../types/aiInput.js';
4
5
  /**
5
6
  * Graph AI API
@@ -71,5 +72,25 @@ export declare class GraphAiApi {
71
72
  * ```
72
73
  */
73
74
  generateGraphTest(data: AiInputData[]): Promise<HttpResponse<GraphGenerationResponseDto>>;
75
+ /**
76
+ * Request graph summary generation (Async)
77
+ *
78
+ * Starts a background task to generate insights and summaries for the user's graph network.
79
+ *
80
+ * **API Endpoint**: `POST /v1/graph-ai/summary`
81
+ *
82
+ * @returns Verification of task acceptance
83
+ */
84
+ requestSummary(): Promise<HttpResponse<GraphGenerationResponseDto>>;
85
+ /**
86
+ * Get generated graph summary
87
+ *
88
+ * Retrieves the previously generated summary. Returns 404 if not found or not ready.
89
+ *
90
+ * **API Endpoint**: `GET /v1/graph-ai/summary`
91
+ *
92
+ * @returns The graph summary DTO
93
+ */
94
+ getSummary(): Promise<HttpResponse<GraphSummaryDto>>;
74
95
  }
75
96
  //# sourceMappingURL=graphAi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphAi.d.ts","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IAEpC;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIxE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;CAGhG"}
1
+ {"version":3,"file":"graphAi.d.ts","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IAEpC;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIxE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAI/F;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIzE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CAG3D"}
@@ -74,5 +74,29 @@ export class GraphAiApi {
74
74
  async generateGraphTest(data) {
75
75
  return this.rb.path('/test/generate-json').post(data);
76
76
  }
77
+ /**
78
+ * Request graph summary generation (Async)
79
+ *
80
+ * Starts a background task to generate insights and summaries for the user's graph network.
81
+ *
82
+ * **API Endpoint**: `POST /v1/graph-ai/summary`
83
+ *
84
+ * @returns Verification of task acceptance
85
+ */
86
+ async requestSummary() {
87
+ return this.rb.path('/summary').post();
88
+ }
89
+ /**
90
+ * Get generated graph summary
91
+ *
92
+ * Retrieves the previously generated summary. Returns 404 if not found or not ready.
93
+ *
94
+ * **API Endpoint**: `GET /v1/graph-ai/summary`
95
+ *
96
+ * @returns The graph summary DTO
97
+ */
98
+ async getSummary() {
99
+ return this.rb.path('/summary').get();
100
+ }
77
101
  }
78
102
  //# sourceMappingURL=graphAi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphAi.js","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAIvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAGrB;;;;OAIG;IACH,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAmB;QACzC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"graphAi.js","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAKvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAGrB;;;;OAIG;IACH,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAmB;QACzC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;CACF"}
@@ -14,6 +14,7 @@ export declare class NotificationApi {
14
14
  private readonly rb;
15
15
  constructor(rb: RequestBuilder);
16
16
  /**
17
+ * @deprecated
17
18
  * 실시간 알림 수신을 위한 SSE(Server-Sent Events) 스트림 URL을 반환합니다.
18
19
  *
19
20
  * 이 엔드포인트는 `text/event-stream` 형식으로 데이터를 스트리밍합니다.
@@ -39,5 +40,17 @@ export declare class NotificationApi {
39
40
  * };
40
41
  */
41
42
  getStreamUrl(): string;
43
+ /**
44
+ * FCM 디바이스 토큰을 등록합니다.
45
+ *
46
+ * @param token - FCM 디바이스 토큰
47
+ */
48
+ registerDeviceToken(token: string): Promise<void>;
49
+ /**
50
+ * FCM 디바이스 토큰을 삭제(등록 해제)합니다.
51
+ *
52
+ * @param token - 삭제할 FCM 디바이스 토큰
53
+ */
54
+ removeDeviceToken(token: string): Promise<void>;
42
55
  }
43
56
  //# sourceMappingURL=notification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAItD"}
@@ -15,6 +15,7 @@ export class NotificationApi {
15
15
  this.rb = rb.path('/v1/notifications');
16
16
  }
17
17
  /**
18
+ * @deprecated
18
19
  * 실시간 알림 수신을 위한 SSE(Server-Sent Events) 스트림 URL을 반환합니다.
19
20
  *
20
21
  * 이 엔드포인트는 `text/event-stream` 형식으로 데이터를 스트리밍합니다.
@@ -42,5 +43,21 @@ export class NotificationApi {
42
43
  getStreamUrl() {
43
44
  return this.rb.path('/stream').url();
44
45
  }
46
+ /**
47
+ * FCM 디바이스 토큰을 등록합니다.
48
+ *
49
+ * @param token - FCM 디바이스 토큰
50
+ */
51
+ async registerDeviceToken(token) {
52
+ await this.rb.path('/device-token').post({ token });
53
+ }
54
+ /**
55
+ * FCM 디바이스 토큰을 삭제(등록 해제)합니다.
56
+ *
57
+ * @param token - 삭제할 FCM 디바이스 토큰
58
+ */
59
+ async removeDeviceToken(token) {
60
+ await this.rb.path('/device-token').delete({ token });
61
+ }
45
62
  }
46
63
  //# sourceMappingURL=notification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAa;QACnC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;CAEF"}
@@ -60,6 +60,8 @@ export declare class SyncApi {
60
60
  * });
61
61
  * console.log('Sync push completed');
62
62
  */
63
- push(data: SyncPushRequest): Promise<HttpResponse<void>>;
63
+ push(data: SyncPushRequest): Promise<HttpResponse<{
64
+ success: boolean;
65
+ }>>;
64
66
  }
65
67
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/endpoints/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAKpE;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CAGzD"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/endpoints/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAKpE;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAGzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/endpoints/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,OAAO;IAClB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CAAC,KAAqB;QACxB,MAAM,QAAQ,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAoB,CAAC;IAC1F,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAqB;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAO,IAAI,CAAC,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/endpoints/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,OAAO;IAClB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CAAC,KAAqB;QACxB,MAAM,QAAQ,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAoB,CAAC;IAC1F,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAqB;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAuB,IAAI,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -26,13 +26,50 @@ export type HttpResponseError = {
26
26
  };
27
27
  export type HttpResponse<T> = HttpResponseSuccess<T> | HttpResponseError;
28
28
  export declare class RequestBuilder {
29
+ /**
30
+ * API 기본 URL (마지막 슬래시 제거됨)
31
+ * @private
32
+ */
29
33
  private readonly baseUrl;
34
+ /**
35
+ * 실제 HTTP 요청을 수행할 fetch 함수 구현체
36
+ * @private
37
+ */
30
38
  private readonly fetchImpl;
39
+ /**
40
+ * 모든 요청에 포함될 기본 HTTP 헤더 (예: Accept: application/json)
41
+ * @private
42
+ */
31
43
  private readonly headers;
44
+ /**
45
+ * 자격 증명(쿠키) 전송 모드 ('include' | 'omit' | 'same-origin')
46
+ * - 'include'로 설정 시 브라우저가 자동으로 쿠키를 전송합니다.
47
+ * @private
48
+ */
32
49
  private readonly credentials;
50
+ /**
51
+ * Access Token을 동적으로 반환하는 함수 또는 정적 문자열.
52
+ * - 함수로 설정된 경우 요청 시점의 최신 토큰을 조회하여 Authorization 헤더에 사용합니다.
53
+ * - 값이 없으면(undefined) Authorization 헤더를 추가하지 않습니다 (쿠키 인증 의존).
54
+ * @private
55
+ */
33
56
  private readonly accessToken?;
57
+ /**
58
+ * 현재 빌더가 가지고 있는 URL 경로 조각들
59
+ * @private
60
+ */
34
61
  private readonly segments;
62
+ /**
63
+ * 현재 빌더가 가지고 있는 쿼리 파라미터들
64
+ * @private
65
+ */
35
66
  private readonly queryParams;
67
+ /**
68
+ * RequestBuilder 생성자
69
+ * @param opts 빌더 공통 옵션 (baseUrl, fetch, headers 등)
70
+ * @param segments 초기 URL 경로 조각 리스트
71
+ * @param query 초기 쿼리 파라미터
72
+ */
36
73
  constructor(opts: BuilderOptions, segments?: string[], query?: URLSearchParams);
37
74
  /**
38
75
  * 경로 조각을 추가한다. '/v1/me' 같은 절대 경로도 허용한다.
@@ -49,6 +86,7 @@ export declare class RequestBuilder {
49
86
  patch<T>(body?: unknown): Promise<HttpResponse<T>>;
50
87
  delete<T>(body?: unknown): Promise<HttpResponse<T>>;
51
88
  url(): string;
89
+ sendRaw(method: string, body?: unknown, extraHeaders?: Record<string, string>): Promise<Response>;
52
90
  private send;
53
91
  }
54
92
  /**