@taco_tsinghua/graphnode-sdk 0.1.7 → 0.1.9

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 (59) hide show
  1. package/dist/client.d.ts +27 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +20 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/endpoints/ai.d.ts +65 -0
  6. package/dist/endpoints/ai.d.ts.map +1 -0
  7. package/dist/endpoints/ai.js +48 -0
  8. package/dist/endpoints/ai.js.map +1 -0
  9. package/dist/endpoints/auth.apple.d.ts +17 -7
  10. package/dist/endpoints/auth.apple.d.ts.map +1 -1
  11. package/dist/endpoints/auth.apple.js +17 -7
  12. package/dist/endpoints/auth.apple.js.map +1 -1
  13. package/dist/endpoints/auth.google.d.ts +16 -6
  14. package/dist/endpoints/auth.google.d.ts.map +1 -1
  15. package/dist/endpoints/auth.google.js +16 -6
  16. package/dist/endpoints/auth.google.js.map +1 -1
  17. package/dist/endpoints/conversations.d.ts +259 -1
  18. package/dist/endpoints/conversations.d.ts.map +1 -1
  19. package/dist/endpoints/conversations.js +258 -0
  20. package/dist/endpoints/conversations.js.map +1 -1
  21. package/dist/endpoints/graph.d.ts +216 -7
  22. package/dist/endpoints/graph.d.ts.map +1 -1
  23. package/dist/endpoints/graph.js +216 -7
  24. package/dist/endpoints/graph.js.map +1 -1
  25. package/dist/endpoints/health.d.ts +20 -0
  26. package/dist/endpoints/health.d.ts.map +1 -1
  27. package/dist/endpoints/health.js +15 -0
  28. package/dist/endpoints/health.js.map +1 -1
  29. package/dist/endpoints/me.d.ts +61 -0
  30. package/dist/endpoints/me.d.ts.map +1 -1
  31. package/dist/endpoints/me.js +61 -0
  32. package/dist/endpoints/me.js.map +1 -1
  33. package/dist/endpoints/note.d.ts +201 -13
  34. package/dist/endpoints/note.d.ts.map +1 -1
  35. package/dist/endpoints/note.js +201 -13
  36. package/dist/endpoints/note.js.map +1 -1
  37. package/dist/endpoints/sync.d.ts +44 -3
  38. package/dist/endpoints/sync.d.ts.map +1 -1
  39. package/dist/endpoints/sync.js +44 -3
  40. package/dist/endpoints/sync.js.map +1 -1
  41. package/dist/index.d.ts +7 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +5 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/types/conversation.d.ts +27 -0
  46. package/dist/types/conversation.d.ts.map +1 -1
  47. package/dist/types/graph.d.ts +71 -0
  48. package/dist/types/graph.d.ts.map +1 -1
  49. package/dist/types/me.d.ts +24 -5
  50. package/dist/types/me.d.ts.map +1 -1
  51. package/dist/types/message.d.ts +22 -0
  52. package/dist/types/message.d.ts.map +1 -1
  53. package/dist/types/note.d.ts +31 -0
  54. package/dist/types/note.d.ts.map +1 -1
  55. package/dist/types/problem.d.ts +12 -1
  56. package/dist/types/problem.d.ts.map +1 -1
  57. package/dist/types/sync.d.ts +17 -0
  58. package/dist/types/sync.d.ts.map +1 -1
  59. package/package.json +1 -1
@@ -8,94 +8,303 @@ export declare class GraphApi {
8
8
  private readonly rb;
9
9
  constructor(rb: RequestBuilder);
10
10
  /**
11
- * 새 노드를 생성하거나 기존 노드를 업데이트합니다.
11
+ * 새 노트를 생성하거나 기존 노드를 업데이트합니다.
12
12
  * @param node - 생성 또는 업데이트할 노드 데이터
13
- * @returns 생성 또는 업데이트된 노드
13
+ * - `id` (number): 노드 ID (정수)
14
+ * - `userId` (string): 사용자 ID
15
+ * - `origId` (string): 원본 데이터 ID (예: conversationId)
16
+ * - `clusterId` (string): 클러스터 ID
17
+ * - `clusterName` (string): 클러스터 이름
18
+ * - `timestamp` (string | null): 타임스탬프
19
+ * - `numMessages` (number): 메시지 수
20
+ * @returns 생성 또는 업데이트된 노드 정보
21
+ * @example
22
+ * const response = await client.graph.createNode({
23
+ * id: 101,
24
+ * userId: 'user-123',
25
+ * origId: 'conv-uuid-1',
26
+ * clusterId: 'cluster-a',
27
+ * clusterName: 'Project Alpha',
28
+ * timestamp: new Date().toISOString(),
29
+ * numMessages: 5
30
+ * });
31
+ *
32
+ * console.log(response.data);
33
+ * // Output:
34
+ * {
35
+ * id: 101,
36
+ * userId: 'user-123',
37
+ * origId: 'conv-uuid-1',
38
+ * clusterId: 'cluster-a',
39
+ * clusterName: 'Project Alpha',
40
+ * timestamp: '...',
41
+ * numMessages: 5
42
+ * }
14
43
  */
15
44
  createNode(node: GraphNodeDto): Promise<HttpResponse<GraphNodeDto>>;
16
45
  /**
17
46
  * 사용자의 모든 노드를 가져옵니다.
18
- * @returns 노드 목록
47
+ * @returns 노드 목록 (GraphNodeDto 배열)
48
+ * @example
49
+ * const response = await client.graph.listNodes();
50
+ *
51
+ * console.log(response.data);
52
+ * // Output:
53
+ * [
54
+ * {
55
+ * id: 101,
56
+ * userId: 'user-123',
57
+ * origId: 'conv-uuid-1',
58
+ * clusterId: 'cluster-a',
59
+ * clusterName: 'Project Alpha',
60
+ * timestamp: '...',
61
+ * numMessages: 5
62
+ * },
63
+ * {
64
+ * id: 102,
65
+ * userId: 'user-123',
66
+ * origId: 'conv-uuid-2',
67
+ * clusterId: 'cluster-b',
68
+ * clusterName: 'Project Beta',
69
+ * timestamp: '...',
70
+ * numMessages: 3
71
+ * }
72
+ * ]
19
73
  */
20
74
  listNodes(): Promise<HttpResponse<GraphNodeDto[]>>;
21
75
  /**
22
76
  * 특정 ID의 노드를 가져옵니다.
23
- * @param nodeId - 가져올 노드의 ID
24
- * @returns 요청한 노드
77
+ * @param nodeId - 가져올 노드의 ID (정수)
78
+ * @returns 요청한 노드 상세 정보
79
+ * @example
80
+ * const response = await client.graph.getNode(101);
81
+ *
82
+ * console.log(response.data);
83
+ * // Output:
84
+ * {
85
+ * id: 101,
86
+ * userId: 'user-123',
87
+ * origId: 'conv-uuid-1',
88
+ * clusterId: 'cluster-a',
89
+ * clusterName: 'Project Alpha',
90
+ * timestamp: '...',
91
+ * numMessages: 5
92
+ * }
25
93
  */
26
94
  getNode(nodeId: number): Promise<HttpResponse<GraphNodeDto>>;
27
95
  /**
28
96
  * 특정 노드를 부분적으로 업데이트합니다.
29
97
  * @param nodeId - 업데이트할 노드의 ID
30
98
  * @param payload - 업데이트할 데이터
99
+ * - `clusterId` (string, optional): 변경할 클러스터 ID
100
+ * - `clusterName` (string, optional): 변경할 클러스터 이름
101
+ * @example
102
+ * await client.graph.updateNode(101, {
103
+ * clusterName: 'Project Beta'
104
+ * });
105
+ * // Output: (No content)
31
106
  */
32
107
  updateNode(nodeId: number, payload: UpdateNodePayload): Promise<HttpResponse<void>>;
33
108
  /**
34
109
  * 특정 노드를 삭제합니다.
35
110
  * @param nodeId - 삭제할 노드의 ID
111
+ * @example
112
+ * await client.graph.deleteNode(101);
113
+ * // Output: (No content)
36
114
  */
37
115
  deleteNode(nodeId: number): Promise<HttpResponse<void>>;
38
116
  /**
39
117
  * 특정 노드와 연결된 모든 엣지를 함께 삭제합니다.
40
118
  * @param nodeId - 삭제할 노드의 ID
119
+ * @example
120
+ * await client.graph.deleteNodeCascade(101);
121
+ * // Output: (No content)
41
122
  */
42
123
  deleteNodeCascade(nodeId: number): Promise<HttpResponse<void>>;
43
124
  /**
44
125
  * 새 엣지를 생성합니다.
45
126
  * @param edge - 생성할 엣지 데이터
46
- * @returns 생성된 엣지의 ID
127
+ * - `source` (number): 출발 노드 ID
128
+ * - `target` (number): 도착 노드 ID
129
+ * - `weight` (number): 가중치
130
+ * - `type` ('hard' | 'insight'): 엣지 타입
131
+ * - `intraCluster` (boolean): 클러스터 내부 연결 여부
132
+ * @returns 생성된 엣지 ID
133
+ * - `id` (string): 엣지 ID
134
+ * @example
135
+ * const response = await client.graph.createEdge({
136
+ * source: 101,
137
+ * target: 102,
138
+ * weight: 0.85,
139
+ * type: 'insight',
140
+ * intraCluster: true
141
+ * });
142
+ *
143
+ * console.log(response.data);
144
+ * // Output:
145
+ * {
146
+ * id: 'edge-uuid-...'
147
+ * }
47
148
  */
48
149
  createEdge(edge: GraphEdgeDto): Promise<HttpResponse<CreateEdgeResponse>>;
49
150
  /**
50
151
  * 사용자의 모든 엣지를 가져옵니다.
51
- * @returns 엣지 목록
152
+ * @returns 엣지 목록 (GraphEdgeDto 배열)
153
+ * @example
154
+ * const response = await client.graph.listEdges();
155
+ *
156
+ * console.log(response.data);
157
+ * // Output:
158
+ * [
159
+ * {
160
+ * id: 'edge-1',
161
+ * source: 101,
162
+ * target: 102,
163
+ * weight: 0.85,
164
+ * type: 'insight',
165
+ * intraCluster: true
166
+ * },
167
+ * {
168
+ * id: 'edge-2',
169
+ * source: 102,
170
+ * target: 103,
171
+ * weight: 0.5,
172
+ * type: 'hard',
173
+ * intraCluster: false
174
+ * }
175
+ * ]
52
176
  */
53
177
  listEdges(): Promise<HttpResponse<GraphEdgeDto[]>>;
54
178
  /**
55
179
  * 특정 엣지를 삭제합니다.
56
180
  * @param edgeId - 삭제할 엣지의 ID
181
+ * @example
182
+ * await client.graph.deleteEdge('edge-uuid-...');
183
+ * // Output: (No content)
57
184
  */
58
185
  deleteEdge(edgeId: string): Promise<HttpResponse<void>>;
59
186
  /**
60
187
  * 새 클러스터를 생성하거나 기존 클러스터를 업데이트합니다.
61
188
  * @param cluster - 생성 또는 업데이트할 클러스터 데이터
62
189
  * @returns 생성 또는 업데이트된 클러스터
190
+ * @example
191
+ * const response = await client.graph.createCluster({
192
+ * id: 'cluster-a',
193
+ * name: 'Project Alpha',
194
+ * summary: 'Main project discussion'
195
+ * });
196
+ *
197
+ * console.log(response.data);
198
+ * // Output:
199
+ * {
200
+ * id: 'cluster-a',
201
+ * name: 'Project Alpha',
202
+ * summary: 'Main project discussion'
203
+ * }
63
204
  */
64
205
  createCluster(cluster: GraphClusterDto): Promise<HttpResponse<GraphClusterDto>>;
65
206
  /**
66
207
  * 사용자의 모든 클러스터를 가져옵니다.
67
208
  * @returns 클러스터 목록
209
+ * @example
210
+ * const response = await client.graph.listClusters();
211
+ *
212
+ * console.log(response.data);
213
+ * // Output:
214
+ * [
215
+ * {
216
+ * id: 'cluster-a',
217
+ * name: 'Project Alpha',
218
+ * summary: 'Main project discussion'
219
+ * },
220
+ * {
221
+ * id: 'cluster-b',
222
+ * name: 'Project Beta',
223
+ * summary: 'Secondary project'
224
+ * }
225
+ * ]
68
226
  */
69
227
  listClusters(): Promise<HttpResponse<GraphClusterDto[]>>;
70
228
  /**
71
229
  * 특정 ID의 클러스터를 가져옵니다.
72
230
  * @param clusterId - 가져올 클러스터의 ID
73
231
  * @returns 요청한 클러스터
232
+ * @example
233
+ * const response = await client.graph.getCluster('cluster-a');
234
+ *
235
+ * console.log(response.data);
236
+ * // Output:
237
+ * {
238
+ * id: 'cluster-a',
239
+ * name: 'Project Alpha',
240
+ * summary: 'Main project discussion'
241
+ * }
74
242
  */
75
243
  getCluster(clusterId: string): Promise<HttpResponse<GraphClusterDto>>;
76
244
  /**
77
245
  * 특정 클러스터를 삭제합니다.
78
246
  * @param clusterId - 삭제할 클러스터의 ID
247
+ * @example
248
+ * await client.graph.deleteCluster('cluster-a');
249
+ * // Output: (No content)
79
250
  */
80
251
  deleteCluster(clusterId: string): Promise<HttpResponse<void>>;
81
252
  /**
82
253
  * 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
83
254
  * @param clusterId - 삭제할 클러스터의 ID
255
+ * @example
256
+ * await client.graph.deleteClusterCascade('cluster-a');
257
+ * // Output: (No content)
84
258
  */
85
259
  deleteClusterCascade(clusterId: string): Promise<HttpResponse<void>>;
86
260
  /**
87
261
  * 그래프 통계를 가져옵니다.
88
262
  * @returns 그래프 통계
263
+ * @example
264
+ * const response = await client.graph.getStats();
265
+ *
266
+ * console.log(response.data);
267
+ * // Output:
268
+ * {
269
+ * nodeCount: 100,
270
+ * edgeCount: 150,
271
+ * clusterCount: 5,
272
+ * density: 0.03
273
+ * }
89
274
  */
90
275
  getStats(): Promise<HttpResponse<GraphStatsDto>>;
91
276
  /**
92
277
  * 전체 그래프 스냅샷을 가져옵니다.
93
278
  * @returns 그래프 스냅샷
279
+ * @example
280
+ * const response = await client.graph.getSnapshot();
281
+ *
282
+ * console.log(response.data);
283
+ * // Output:
284
+ * {
285
+ * nodes: [
286
+ * { id: 101, ... },
287
+ * { id: 102, ... }
288
+ * ],
289
+ * edges: [
290
+ * { id: 'edge-1', ... }
291
+ * ],
292
+ * clusters: [
293
+ * { id: 'cluster-a', ... }
294
+ * ]
295
+ * }
94
296
  */
95
297
  getSnapshot(): Promise<HttpResponse<GraphSnapshotDto>>;
96
298
  /**
97
299
  * 전체 그래프 스냅샷을 서버에 저장합니다.
98
300
  * @param snapshot - 저장할 스냅샷 데이터
301
+ * @example
302
+ * await client.graph.saveSnapshot({
303
+ * nodes: [...],
304
+ * edges: [...],
305
+ * clusters: [...]
306
+ * });
307
+ * // Output: (No content)
99
308
  */
100
309
  saveSnapshot(snapshot: GraphSnapshotDto): Promise<HttpResponse<void>>;
101
310
  }
@@ -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;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAInE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAIlD;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAI5D;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAInF;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIvD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAI9D;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAIzE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAIlD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIvD;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAI/E;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;IAIxD;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAIrE;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAI7D;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAIpE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAIhD;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAItD;;;OAGG;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":"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;;;GAGG;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"}
@@ -8,24 +8,92 @@ export class GraphApi {
8
8
  this.rb = rb.path('/v1/graph');
9
9
  }
10
10
  /**
11
- * 새 노드를 생성하거나 기존 노드를 업데이트합니다.
11
+ * 새 노트를 생성하거나 기존 노드를 업데이트합니다.
12
12
  * @param node - 생성 또는 업데이트할 노드 데이터
13
- * @returns 생성 또는 업데이트된 노드
13
+ * - `id` (number): 노드 ID (정수)
14
+ * - `userId` (string): 사용자 ID
15
+ * - `origId` (string): 원본 데이터 ID (예: conversationId)
16
+ * - `clusterId` (string): 클러스터 ID
17
+ * - `clusterName` (string): 클러스터 이름
18
+ * - `timestamp` (string | null): 타임스탬프
19
+ * - `numMessages` (number): 메시지 수
20
+ * @returns 생성 또는 업데이트된 노드 정보
21
+ * @example
22
+ * const response = await client.graph.createNode({
23
+ * id: 101,
24
+ * userId: 'user-123',
25
+ * origId: 'conv-uuid-1',
26
+ * clusterId: 'cluster-a',
27
+ * clusterName: 'Project Alpha',
28
+ * timestamp: new Date().toISOString(),
29
+ * numMessages: 5
30
+ * });
31
+ *
32
+ * console.log(response.data);
33
+ * // Output:
34
+ * {
35
+ * id: 101,
36
+ * userId: 'user-123',
37
+ * origId: 'conv-uuid-1',
38
+ * clusterId: 'cluster-a',
39
+ * clusterName: 'Project Alpha',
40
+ * timestamp: '...',
41
+ * numMessages: 5
42
+ * }
14
43
  */
15
44
  createNode(node) {
16
45
  return this.rb.path('/nodes').post(node);
17
46
  }
18
47
  /**
19
48
  * 사용자의 모든 노드를 가져옵니다.
20
- * @returns 노드 목록
49
+ * @returns 노드 목록 (GraphNodeDto 배열)
50
+ * @example
51
+ * const response = await client.graph.listNodes();
52
+ *
53
+ * console.log(response.data);
54
+ * // Output:
55
+ * [
56
+ * {
57
+ * id: 101,
58
+ * userId: 'user-123',
59
+ * origId: 'conv-uuid-1',
60
+ * clusterId: 'cluster-a',
61
+ * clusterName: 'Project Alpha',
62
+ * timestamp: '...',
63
+ * numMessages: 5
64
+ * },
65
+ * {
66
+ * id: 102,
67
+ * userId: 'user-123',
68
+ * origId: 'conv-uuid-2',
69
+ * clusterId: 'cluster-b',
70
+ * clusterName: 'Project Beta',
71
+ * timestamp: '...',
72
+ * numMessages: 3
73
+ * }
74
+ * ]
21
75
  */
22
76
  listNodes() {
23
77
  return this.rb.path('/nodes').get();
24
78
  }
25
79
  /**
26
80
  * 특정 ID의 노드를 가져옵니다.
27
- * @param nodeId - 가져올 노드의 ID
28
- * @returns 요청한 노드
81
+ * @param nodeId - 가져올 노드의 ID (정수)
82
+ * @returns 요청한 노드 상세 정보
83
+ * @example
84
+ * const response = await client.graph.getNode(101);
85
+ *
86
+ * console.log(response.data);
87
+ * // Output:
88
+ * {
89
+ * id: 101,
90
+ * userId: 'user-123',
91
+ * origId: 'conv-uuid-1',
92
+ * clusterId: 'cluster-a',
93
+ * clusterName: 'Project Alpha',
94
+ * timestamp: '...',
95
+ * numMessages: 5
96
+ * }
29
97
  */
30
98
  getNode(nodeId) {
31
99
  return this.rb.path(`/nodes/${nodeId}`).get();
@@ -34,6 +102,13 @@ export class GraphApi {
34
102
  * 특정 노드를 부분적으로 업데이트합니다.
35
103
  * @param nodeId - 업데이트할 노드의 ID
36
104
  * @param payload - 업데이트할 데이터
105
+ * - `clusterId` (string, optional): 변경할 클러스터 ID
106
+ * - `clusterName` (string, optional): 변경할 클러스터 이름
107
+ * @example
108
+ * await client.graph.updateNode(101, {
109
+ * clusterName: 'Project Beta'
110
+ * });
111
+ * // Output: (No content)
37
112
  */
38
113
  updateNode(nodeId, payload) {
39
114
  return this.rb.path(`/nodes/${nodeId}`).patch(payload);
@@ -41,6 +116,9 @@ export class GraphApi {
41
116
  /**
42
117
  * 특정 노드를 삭제합니다.
43
118
  * @param nodeId - 삭제할 노드의 ID
119
+ * @example
120
+ * await client.graph.deleteNode(101);
121
+ * // Output: (No content)
44
122
  */
45
123
  deleteNode(nodeId) {
46
124
  return this.rb.path(`/nodes/${nodeId}`).delete();
@@ -48,6 +126,9 @@ export class GraphApi {
48
126
  /**
49
127
  * 특정 노드와 연결된 모든 엣지를 함께 삭제합니다.
50
128
  * @param nodeId - 삭제할 노드의 ID
129
+ * @example
130
+ * await client.graph.deleteNodeCascade(101);
131
+ * // Output: (No content)
51
132
  */
52
133
  deleteNodeCascade(nodeId) {
53
134
  return this.rb.path(`/nodes/${nodeId}/cascade`).delete();
@@ -55,14 +136,57 @@ export class GraphApi {
55
136
  /**
56
137
  * 새 엣지를 생성합니다.
57
138
  * @param edge - 생성할 엣지 데이터
58
- * @returns 생성된 엣지의 ID
139
+ * - `source` (number): 출발 노드 ID
140
+ * - `target` (number): 도착 노드 ID
141
+ * - `weight` (number): 가중치
142
+ * - `type` ('hard' | 'insight'): 엣지 타입
143
+ * - `intraCluster` (boolean): 클러스터 내부 연결 여부
144
+ * @returns 생성된 엣지 ID
145
+ * - `id` (string): 엣지 ID
146
+ * @example
147
+ * const response = await client.graph.createEdge({
148
+ * source: 101,
149
+ * target: 102,
150
+ * weight: 0.85,
151
+ * type: 'insight',
152
+ * intraCluster: true
153
+ * });
154
+ *
155
+ * console.log(response.data);
156
+ * // Output:
157
+ * {
158
+ * id: 'edge-uuid-...'
159
+ * }
59
160
  */
60
161
  createEdge(edge) {
61
162
  return this.rb.path('/edges').post(edge);
62
163
  }
63
164
  /**
64
165
  * 사용자의 모든 엣지를 가져옵니다.
65
- * @returns 엣지 목록
166
+ * @returns 엣지 목록 (GraphEdgeDto 배열)
167
+ * @example
168
+ * const response = await client.graph.listEdges();
169
+ *
170
+ * console.log(response.data);
171
+ * // Output:
172
+ * [
173
+ * {
174
+ * id: 'edge-1',
175
+ * source: 101,
176
+ * target: 102,
177
+ * weight: 0.85,
178
+ * type: 'insight',
179
+ * intraCluster: true
180
+ * },
181
+ * {
182
+ * id: 'edge-2',
183
+ * source: 102,
184
+ * target: 103,
185
+ * weight: 0.5,
186
+ * type: 'hard',
187
+ * intraCluster: false
188
+ * }
189
+ * ]
66
190
  */
67
191
  listEdges() {
68
192
  return this.rb.path('/edges').get();
@@ -70,6 +194,9 @@ export class GraphApi {
70
194
  /**
71
195
  * 특정 엣지를 삭제합니다.
72
196
  * @param edgeId - 삭제할 엣지의 ID
197
+ * @example
198
+ * await client.graph.deleteEdge('edge-uuid-...');
199
+ * // Output: (No content)
73
200
  */
74
201
  deleteEdge(edgeId) {
75
202
  return this.rb.path(`/edges/${edgeId}`).delete();
@@ -78,6 +205,20 @@ export class GraphApi {
78
205
  * 새 클러스터를 생성하거나 기존 클러스터를 업데이트합니다.
79
206
  * @param cluster - 생성 또는 업데이트할 클러스터 데이터
80
207
  * @returns 생성 또는 업데이트된 클러스터
208
+ * @example
209
+ * const response = await client.graph.createCluster({
210
+ * id: 'cluster-a',
211
+ * name: 'Project Alpha',
212
+ * summary: 'Main project discussion'
213
+ * });
214
+ *
215
+ * console.log(response.data);
216
+ * // Output:
217
+ * {
218
+ * id: 'cluster-a',
219
+ * name: 'Project Alpha',
220
+ * summary: 'Main project discussion'
221
+ * }
81
222
  */
82
223
  createCluster(cluster) {
83
224
  return this.rb.path('/clusters').post(cluster);
@@ -85,6 +226,23 @@ export class GraphApi {
85
226
  /**
86
227
  * 사용자의 모든 클러스터를 가져옵니다.
87
228
  * @returns 클러스터 목록
229
+ * @example
230
+ * const response = await client.graph.listClusters();
231
+ *
232
+ * console.log(response.data);
233
+ * // Output:
234
+ * [
235
+ * {
236
+ * id: 'cluster-a',
237
+ * name: 'Project Alpha',
238
+ * summary: 'Main project discussion'
239
+ * },
240
+ * {
241
+ * id: 'cluster-b',
242
+ * name: 'Project Beta',
243
+ * summary: 'Secondary project'
244
+ * }
245
+ * ]
88
246
  */
89
247
  listClusters() {
90
248
  return this.rb.path('/clusters').get();
@@ -93,6 +251,16 @@ export class GraphApi {
93
251
  * 특정 ID의 클러스터를 가져옵니다.
94
252
  * @param clusterId - 가져올 클러스터의 ID
95
253
  * @returns 요청한 클러스터
254
+ * @example
255
+ * const response = await client.graph.getCluster('cluster-a');
256
+ *
257
+ * console.log(response.data);
258
+ * // Output:
259
+ * {
260
+ * id: 'cluster-a',
261
+ * name: 'Project Alpha',
262
+ * summary: 'Main project discussion'
263
+ * }
96
264
  */
97
265
  getCluster(clusterId) {
98
266
  return this.rb.path(`/clusters/${clusterId}`).get();
@@ -100,6 +268,9 @@ export class GraphApi {
100
268
  /**
101
269
  * 특정 클러스터를 삭제합니다.
102
270
  * @param clusterId - 삭제할 클러스터의 ID
271
+ * @example
272
+ * await client.graph.deleteCluster('cluster-a');
273
+ * // Output: (No content)
103
274
  */
104
275
  deleteCluster(clusterId) {
105
276
  return this.rb.path(`/clusters/${clusterId}`).delete();
@@ -107,6 +278,9 @@ export class GraphApi {
107
278
  /**
108
279
  * 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
109
280
  * @param clusterId - 삭제할 클러스터의 ID
281
+ * @example
282
+ * await client.graph.deleteClusterCascade('cluster-a');
283
+ * // Output: (No content)
110
284
  */
111
285
  deleteClusterCascade(clusterId) {
112
286
  return this.rb.path(`/clusters/${clusterId}/cascade`).delete();
@@ -114,6 +288,17 @@ export class GraphApi {
114
288
  /**
115
289
  * 그래프 통계를 가져옵니다.
116
290
  * @returns 그래프 통계
291
+ * @example
292
+ * const response = await client.graph.getStats();
293
+ *
294
+ * console.log(response.data);
295
+ * // Output:
296
+ * {
297
+ * nodeCount: 100,
298
+ * edgeCount: 150,
299
+ * clusterCount: 5,
300
+ * density: 0.03
301
+ * }
117
302
  */
118
303
  getStats() {
119
304
  return this.rb.path('/stats').get();
@@ -121,6 +306,23 @@ export class GraphApi {
121
306
  /**
122
307
  * 전체 그래프 스냅샷을 가져옵니다.
123
308
  * @returns 그래프 스냅샷
309
+ * @example
310
+ * const response = await client.graph.getSnapshot();
311
+ *
312
+ * console.log(response.data);
313
+ * // Output:
314
+ * {
315
+ * nodes: [
316
+ * { id: 101, ... },
317
+ * { id: 102, ... }
318
+ * ],
319
+ * edges: [
320
+ * { id: 'edge-1', ... }
321
+ * ],
322
+ * clusters: [
323
+ * { id: 'cluster-a', ... }
324
+ * ]
325
+ * }
124
326
  */
125
327
  getSnapshot() {
126
328
  return this.rb.path('/snapshot').get();
@@ -128,6 +330,13 @@ export class GraphApi {
128
330
  /**
129
331
  * 전체 그래프 스냅샷을 서버에 저장합니다.
130
332
  * @param snapshot - 저장할 스냅샷 데이터
333
+ * @example
334
+ * await client.graph.saveSnapshot({
335
+ * nodes: [...],
336
+ * edges: [...],
337
+ * clusters: [...]
338
+ * });
339
+ * // Output: (No content)
131
340
  */
132
341
  saveSnapshot(snapshot) {
133
342
  return this.rb.path('/snapshot').post({ snapshot });
@@ -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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"}