@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.
- package/dist/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +20 -0
- package/dist/client.js.map +1 -1
- package/dist/endpoints/ai.d.ts +65 -0
- package/dist/endpoints/ai.d.ts.map +1 -0
- package/dist/endpoints/ai.js +48 -0
- package/dist/endpoints/ai.js.map +1 -0
- package/dist/endpoints/auth.apple.d.ts +17 -7
- package/dist/endpoints/auth.apple.d.ts.map +1 -1
- package/dist/endpoints/auth.apple.js +17 -7
- package/dist/endpoints/auth.apple.js.map +1 -1
- package/dist/endpoints/auth.google.d.ts +16 -6
- package/dist/endpoints/auth.google.d.ts.map +1 -1
- package/dist/endpoints/auth.google.js +16 -6
- package/dist/endpoints/auth.google.js.map +1 -1
- package/dist/endpoints/conversations.d.ts +259 -1
- package/dist/endpoints/conversations.d.ts.map +1 -1
- package/dist/endpoints/conversations.js +258 -0
- package/dist/endpoints/conversations.js.map +1 -1
- package/dist/endpoints/graph.d.ts +216 -7
- package/dist/endpoints/graph.d.ts.map +1 -1
- package/dist/endpoints/graph.js +216 -7
- package/dist/endpoints/graph.js.map +1 -1
- package/dist/endpoints/health.d.ts +20 -0
- package/dist/endpoints/health.d.ts.map +1 -1
- package/dist/endpoints/health.js +15 -0
- package/dist/endpoints/health.js.map +1 -1
- package/dist/endpoints/me.d.ts +61 -0
- package/dist/endpoints/me.d.ts.map +1 -1
- package/dist/endpoints/me.js +61 -0
- package/dist/endpoints/me.js.map +1 -1
- package/dist/endpoints/note.d.ts +201 -13
- package/dist/endpoints/note.d.ts.map +1 -1
- package/dist/endpoints/note.js +201 -13
- package/dist/endpoints/note.js.map +1 -1
- package/dist/endpoints/sync.d.ts +44 -3
- package/dist/endpoints/sync.d.ts.map +1 -1
- package/dist/endpoints/sync.js +44 -3
- package/dist/endpoints/sync.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/types/conversation.d.ts +27 -0
- package/dist/types/conversation.d.ts.map +1 -1
- package/dist/types/graph.d.ts +71 -0
- package/dist/types/graph.d.ts.map +1 -1
- package/dist/types/me.d.ts +24 -5
- package/dist/types/me.d.ts.map +1 -1
- package/dist/types/message.d.ts +22 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/note.d.ts +31 -0
- package/dist/types/note.d.ts.map +1 -1
- package/dist/types/problem.d.ts +12 -1
- package/dist/types/problem.d.ts.map +1 -1
- package/dist/types/sync.d.ts +17 -0
- package/dist/types/sync.d.ts.map +1 -1
- 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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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"}
|
package/dist/endpoints/graph.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAWvE;;;GAGG;AACH,MAAM,OAAO,QAAQ;IAGnB,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"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"}
|