@taco_tsinghua/graphnode-sdk 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -0
- package/dist/client.d.ts +19 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +38 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -0
- package/dist/endpoints/auth.google.d.ts +18 -0
- package/dist/endpoints/auth.google.d.ts.map +1 -0
- package/dist/endpoints/auth.google.js +23 -0
- package/dist/endpoints/auth.google.js.map +1 -0
- package/dist/endpoints/conversations.d.ts +23 -0
- package/dist/endpoints/conversations.d.ts.map +1 -0
- package/dist/endpoints/conversations.js +37 -0
- package/dist/endpoints/conversations.js.map +1 -0
- package/dist/endpoints/graph.d.ts +102 -0
- package/dist/endpoints/graph.d.ts.map +1 -0
- package/dist/endpoints/graph.js +136 -0
- package/dist/endpoints/graph.js.map +1 -0
- package/dist/endpoints/health.d.ts +10 -0
- package/dist/endpoints/health.d.ts.map +1 -0
- package/dist/endpoints/health.js +10 -0
- package/dist/endpoints/health.js.map +1 -0
- package/dist/endpoints/me.d.ts +9 -0
- package/dist/endpoints/me.d.ts.map +1 -0
- package/dist/endpoints/me.js +14 -0
- package/dist/endpoints/me.js.map +1 -0
- package/dist/http-builder.d.ts +47 -0
- package/dist/http-builder.d.ts.map +1 -0
- package/dist/http-builder.js +92 -0
- package/dist/http-builder.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/types/conversation.d.ts +19 -0
- package/dist/types/conversation.d.ts.map +1 -0
- package/dist/types/conversation.js +2 -0
- package/dist/types/conversation.js.map +1 -0
- package/dist/types/graph.d.ts +55 -0
- package/dist/types/graph.d.ts.map +1 -0
- package/dist/types/graph.js +5 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/me.d.ts +11 -0
- package/dist/types/me.d.ts.map +1 -0
- package/dist/types/me.js +2 -0
- package/dist/types/me.js.map +1 -0
- package/dist/types/message.d.ts +16 -0
- package/dist/types/message.d.ts.map +1 -0
- package/dist/types/message.js +2 -0
- package/dist/types/message.js.map +1 -0
- package/dist/types/problem.d.ts +12 -0
- package/dist/types/problem.d.ts.map +1 -0
- package/dist/types/problem.js +2 -0
- package/dist/types/problem.js.map +1 -0
- package/package.json +31 -0
package/README.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# GraphNode BE SDK
|
|
2
|
+
|
|
3
|
+
This SDK provides a convenient way to interact with the GraphNode Backend API from a TypeScript/JavaScript client.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @taco/graphnode-sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Getting Started
|
|
12
|
+
|
|
13
|
+
### Initialization
|
|
14
|
+
|
|
15
|
+
First, create a client instance. You need to provide the base URL of the API server.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { createGraphNodeClient } from '@taco/graphnode-sdk';
|
|
19
|
+
|
|
20
|
+
const client = createGraphNodeClient({
|
|
21
|
+
baseUrl: 'http://localhost:3000',
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If your API requires authentication, you can set the session token after initialization.
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
client.setSessionToken('your-session-token-here');
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### API Usage Examples
|
|
32
|
+
|
|
33
|
+
The client is organized by API resources.
|
|
34
|
+
|
|
35
|
+
#### Health
|
|
36
|
+
|
|
37
|
+
Check the health of the API server.
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
const health = await client.health.check();
|
|
41
|
+
console.log(health); // { ok: true }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Me (User Profile)
|
|
45
|
+
|
|
46
|
+
Get the profile of the currently authenticated user.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
try {
|
|
50
|
+
const me = await client.me.getProfile();
|
|
51
|
+
console.log(me); // { id: '...', displayName: '...' }
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('Not authenticated');
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Conversations
|
|
58
|
+
|
|
59
|
+
**Create a single conversation:**
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
const newConversation = await client.conversations.create({
|
|
63
|
+
id: 'client-generated-uuid-1',
|
|
64
|
+
title: 'My First Conversation',
|
|
65
|
+
});
|
|
66
|
+
console.log(newConversation);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Bulk create multiple conversations:**
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
const response = await client.conversations.bulkCreate({
|
|
73
|
+
conversations: [
|
|
74
|
+
{ id: 'bulk-uuid-1', title: 'Bulk Conversation 1' },
|
|
75
|
+
{
|
|
76
|
+
id: 'bulk-uuid-2',
|
|
77
|
+
title: 'Bulk Conversation 2 with messages',
|
|
78
|
+
messages: [{ id: 'msg-uuid-1', role: 'user', content: 'Hello!' }]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
console.log(response.conversations); // Array of created conversations
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**List all conversations:**
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
const conversations = await client.conversations.list();
|
|
89
|
+
console.log(conversations);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Get a specific conversation:**
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
const conversation = await client.conversations.get('conversation-id-123');
|
|
96
|
+
console.log(conversation);
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### Messages
|
|
100
|
+
|
|
101
|
+
Create a message within a conversation:
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
const newMessage = await client.conversations.createMessage('conversation-id-123', {
|
|
105
|
+
id: 'message-uuid-456',
|
|
106
|
+
role: 'user',
|
|
107
|
+
content: 'Hello, this is a new message.',
|
|
108
|
+
});
|
|
109
|
+
console.log(newMessage);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Error Handling
|
|
113
|
+
|
|
114
|
+
The SDK uses a custom `HttpError` for API-related errors. You can check the `problem` property for RFC 9457 Problem Details.
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { HttpError } from '@taco/graphnode-sdk';
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
await client.conversations.get('non-existent-id');
|
|
121
|
+
} catch (error) {
|
|
122
|
+
if (error instanceof HttpError) {
|
|
123
|
+
console.error('API Error:', error.problem.title);
|
|
124
|
+
console.error('Status:', error.problem.status);
|
|
125
|
+
console.error('Detail:', error.problem.detail);
|
|
126
|
+
} else {
|
|
127
|
+
console.error('Unknown error:', error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type BuilderOptions } from './http-builder.js';
|
|
2
|
+
import { HealthApi } from './endpoints/health.js';
|
|
3
|
+
import { MeApi } from './endpoints/me.js';
|
|
4
|
+
import { ConversationsApi } from './endpoints/conversations.js';
|
|
5
|
+
import { GoogleAuthApi } from './endpoints/auth.google.js';
|
|
6
|
+
import { GraphApi } from './endpoints/graph.js';
|
|
7
|
+
export interface GraphNodeClientOptions extends Omit<BuilderOptions, 'baseUrl'> {
|
|
8
|
+
}
|
|
9
|
+
export declare class GraphNodeClient {
|
|
10
|
+
readonly health: HealthApi;
|
|
11
|
+
readonly me: MeApi;
|
|
12
|
+
readonly conversations: ConversationsApi;
|
|
13
|
+
readonly googleAuth: GoogleAuthApi;
|
|
14
|
+
readonly graph: GraphApi;
|
|
15
|
+
private readonly rb;
|
|
16
|
+
constructor(opts?: GraphNodeClientOptions);
|
|
17
|
+
}
|
|
18
|
+
export declare function createGraphNodeClient(opts?: GraphNodeClientOptions): GraphNodeClient;
|
|
19
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;CAAG;AAElF,qBAAa,eAAe;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,IAAI,GAAE,sBAA2B;CA0B9C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAEpF"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createRequestBuilder, RequestBuilder } from './http-builder.js';
|
|
2
|
+
import { GRAPHNODE_BASE_URL } from './config.js';
|
|
3
|
+
import { HealthApi } from './endpoints/health.js';
|
|
4
|
+
import { MeApi } from './endpoints/me.js';
|
|
5
|
+
import { ConversationsApi } from './endpoints/conversations.js';
|
|
6
|
+
import { GoogleAuthApi } from './endpoints/auth.google.js';
|
|
7
|
+
import { GraphApi } from './endpoints/graph.js';
|
|
8
|
+
export class GraphNodeClient {
|
|
9
|
+
constructor(opts = {}) {
|
|
10
|
+
let fetchFn = opts.fetch;
|
|
11
|
+
if (!fetchFn) {
|
|
12
|
+
if (typeof window !== 'undefined' && window.fetch) {
|
|
13
|
+
// 1. 브라우저 / Electron Renderer 환경
|
|
14
|
+
// window.fetch를 그냥 넘기면 'Illegal invocation' 발생하므로 bind 처리
|
|
15
|
+
fetchFn = window.fetch.bind(window);
|
|
16
|
+
}
|
|
17
|
+
else if (typeof globalThis !== 'undefined' && globalThis.fetch) {
|
|
18
|
+
// 2. Node.js (v18+) / 기타 환경
|
|
19
|
+
fetchFn = globalThis.fetch.bind(globalThis);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// 내부 고정 baseUrl 사용, FE는 fetch/headers/credentials 정도만 선택 주입 가능
|
|
23
|
+
this.rb = createRequestBuilder({
|
|
24
|
+
baseUrl: GRAPHNODE_BASE_URL,
|
|
25
|
+
...opts,
|
|
26
|
+
fetch: fetchFn // 바인딩된 fetch 주입
|
|
27
|
+
});
|
|
28
|
+
this.health = new HealthApi(this.rb);
|
|
29
|
+
this.me = new MeApi(this.rb);
|
|
30
|
+
this.conversations = new ConversationsApi(this.rb);
|
|
31
|
+
this.googleAuth = new GoogleAuthApi(GRAPHNODE_BASE_URL);
|
|
32
|
+
this.graph = new GraphApi(this.rb);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function createGraphNodeClient(opts) {
|
|
36
|
+
return new GraphNodeClient(opts);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,MAAM,OAAO,eAAe;IAQ1B,YAAY,OAA+B,EAAE;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClD,iCAAiC;gBACjC,0DAA0D;gBAC1D,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,KAAK,EAAE,CAAC;gBAC1E,4BAA4B;gBAC5B,OAAO,GAAI,UAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;YAC7B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,IAAI;YACP,KAAK,EAAE,OAAO,CAAC,gBAAgB;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK 내부에서 사용하는 GraphNode API Base URL.
|
|
3
|
+
* - FE 사용자는 직접 변경하거나 전달할 수 없다.
|
|
4
|
+
* - 런타임에서 globalThis.__GRAPHNODE_BASE_URL__ 가 존재하면 그것을 우선 사용.
|
|
5
|
+
* - 없으면 기본 프로덕션 값으로 폴백.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare const GRAPHNODE_BASE_URL: string;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MACkE,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK 내부에서 사용하는 GraphNode API Base URL.
|
|
3
|
+
* - FE 사용자는 직접 변경하거나 전달할 수 없다.
|
|
4
|
+
* - 런타임에서 globalThis.__GRAPHNODE_BASE_URL__ 가 존재하면 그것을 우선 사용.
|
|
5
|
+
* - 없으면 기본 프로덕션 값으로 폴백.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export const GRAPHNODE_BASE_URL = globalThis.__GRAPHNODE_BASE_URL__?.replace(/\/$/, '') || 'https://taco4graphnode.online';
|
|
9
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC5B,UAAkB,CAAC,sBAAsB,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GoogleAuthApi: 브라우저 리다이렉트 기반 OAuth 시작 URL 헬퍼.
|
|
3
|
+
* 실제 콜백 처리는 서버가 수행하므로 SDK는 start URL 생성만 제공.
|
|
4
|
+
*/
|
|
5
|
+
export declare class GoogleAuthApi {
|
|
6
|
+
private baseUrl;
|
|
7
|
+
constructor(baseUrl: string);
|
|
8
|
+
/** 로그인 시작 URL 생성 */
|
|
9
|
+
startUrl(): string;
|
|
10
|
+
/**
|
|
11
|
+
* 브라우저를 Google 로그인 페이지로 리다이렉트한다.
|
|
12
|
+
* @param windowObj window 객체(테스트/SSR 대응, 기본값 window)
|
|
13
|
+
* @example
|
|
14
|
+
* sdk.googleAuth.login(); // 자동으로 리다이렉트
|
|
15
|
+
*/
|
|
16
|
+
login(windowObj?: Window): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=auth.google.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.google.d.ts","sourceRoot":"","sources":["../../src/endpoints/auth.google.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEnC,oBAAoB;IACpB,QAAQ,IAAI,MAAM;IAMhB;;;;;KAKC;IACH,KAAK,CAAC,SAAS,GAAE,MAAe,GAAG,IAAI;CAGxC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GoogleAuthApi: 브라우저 리다이렉트 기반 OAuth 시작 URL 헬퍼.
|
|
3
|
+
* 실제 콜백 처리는 서버가 수행하므로 SDK는 start URL 생성만 제공.
|
|
4
|
+
*/
|
|
5
|
+
export class GoogleAuthApi {
|
|
6
|
+
constructor(baseUrl) {
|
|
7
|
+
this.baseUrl = baseUrl;
|
|
8
|
+
}
|
|
9
|
+
/** 로그인 시작 URL 생성 */
|
|
10
|
+
startUrl() {
|
|
11
|
+
return this.baseUrl.replace(/\/$/, '') + '/auth/google/start';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 브라우저를 Google 로그인 페이지로 리다이렉트한다.
|
|
15
|
+
* @param windowObj window 객체(테스트/SSR 대응, 기본값 window)
|
|
16
|
+
* @example
|
|
17
|
+
* sdk.googleAuth.login(); // 자동으로 리다이렉트
|
|
18
|
+
*/
|
|
19
|
+
login(windowObj = window) {
|
|
20
|
+
windowObj.location.href = this.startUrl();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=auth.google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.google.js","sourceRoot":"","sources":["../../src/endpoints/auth.google.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,aAAa;IACxB,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEvC,oBAAoB;IACpB,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,oBAAoB,CAAC;IAChE,CAAC;IAIC;;;;;KAKC;IACH,KAAK,CAAC,YAAoB,MAAM;QAC9B,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
import type { ConversationDto, ConversationCreateDto, ConversationUpdateDto, ConversationBulkCreateDto } from '../types/conversation.js';
|
|
3
|
+
import type { MessageCreateDto, MessageUpdateDto, MessageDto } from '../types/message.js';
|
|
4
|
+
export declare class ConversationsApi {
|
|
5
|
+
private rb;
|
|
6
|
+
constructor(rb: RequestBuilder);
|
|
7
|
+
create(dto: ConversationCreateDto): Promise<ConversationDto>;
|
|
8
|
+
bulkCreate(dto: ConversationBulkCreateDto): Promise<{
|
|
9
|
+
conversations: ConversationDto[];
|
|
10
|
+
}>;
|
|
11
|
+
list(): Promise<ConversationDto[]>;
|
|
12
|
+
get(conversationId: string): Promise<ConversationDto>;
|
|
13
|
+
update(conversationId: string, patch: ConversationUpdateDto): Promise<ConversationDto>;
|
|
14
|
+
delete(conversationId: string): Promise<{
|
|
15
|
+
ok: true;
|
|
16
|
+
}>;
|
|
17
|
+
createMessage(conversationId: string, dto: MessageCreateDto): Promise<MessageDto>;
|
|
18
|
+
updateMessage(conversationId: string, messageId: string, patch: MessageUpdateDto): Promise<MessageDto>;
|
|
19
|
+
deleteMessage(conversationId: string, messageId: string): Promise<{
|
|
20
|
+
ok: true;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=conversations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/endpoints/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACzI,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1F,qBAAa,gBAAgB;IACf,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC,MAAM,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI5D,UAAU,CACR,GAAG,EAAE,yBAAyB,GAC7B,OAAO,CAAC;QAAE,aAAa,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;IAMhD,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIlC,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrD,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItF,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAKrD,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjF,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAItG,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;CAGhF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
export class ConversationsApi {
|
|
3
|
+
constructor(rb) {
|
|
4
|
+
this.rb = rb;
|
|
5
|
+
}
|
|
6
|
+
create(dto) {
|
|
7
|
+
return this.rb.path('/v1/ai/conversations').post(dto);
|
|
8
|
+
}
|
|
9
|
+
bulkCreate(dto) {
|
|
10
|
+
return this.rb
|
|
11
|
+
.path('/v1/ai/conversations/bulk')
|
|
12
|
+
.post(dto);
|
|
13
|
+
}
|
|
14
|
+
list() {
|
|
15
|
+
return this.rb.path('/v1/ai/conversations').get();
|
|
16
|
+
}
|
|
17
|
+
get(conversationId) {
|
|
18
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}`).get();
|
|
19
|
+
}
|
|
20
|
+
update(conversationId, patch) {
|
|
21
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}`).patch(patch);
|
|
22
|
+
}
|
|
23
|
+
delete(conversationId) {
|
|
24
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}`).delete();
|
|
25
|
+
}
|
|
26
|
+
// Messages nested under conversation
|
|
27
|
+
createMessage(conversationId, dto) {
|
|
28
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}/messages`).post(dto);
|
|
29
|
+
}
|
|
30
|
+
updateMessage(conversationId, messageId, patch) {
|
|
31
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}/messages/${messageId}`).patch(patch);
|
|
32
|
+
}
|
|
33
|
+
deleteMessage(conversationId, messageId) {
|
|
34
|
+
return this.rb.path(`/v1/ai/conversations/${conversationId}/messages/${messageId}`).delete();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=conversations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/endpoints/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,MAAM,OAAO,gBAAgB;IAC3B,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,MAAM,CAAC,GAA0B;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAkB,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,UAAU,CACR,GAA8B;QAE9B,OAAO,IAAI,CAAC,EAAE;aACX,IAAI,CAAC,2BAA2B,CAAC;aACjC,IAAI,CAAuC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAqB,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,cAAsB;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC,GAAG,EAAmB,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,cAAsB,EAAE,KAA4B;QACzD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAkB,KAAK,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,CAAC,cAAsB;QAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAgB,CAAC;IACvF,CAAC;IAED,qCAAqC;IACrC,aAAa,CAAC,cAAsB,EAAE,GAAqB;QACzD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,WAAW,CAAC,CAAC,IAAI,CAAa,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,aAAa,CAAC,cAAsB,EAAE,SAAiB,EAAE,KAAuB;QAC9E,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,aAAa,SAAS,EAAE,CAAC,CAAC,KAAK,CAAa,KAAK,CAAC,CAAC;IAC/G,CAAC;IAED,aAAa,CAAC,cAAsB,EAAE,SAAiB;QACrD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,cAAc,aAAa,SAAS,EAAE,CAAC,CAAC,MAAM,EAAgB,CAAC;IAC7G,CAAC;CACF"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
import type { GraphNodeDto, GraphEdgeDto, GraphClusterDto, GraphStatsDto, GraphSnapshotDto, CreateEdgeResponse, UpdateNodePayload } from '../types/graph.js';
|
|
3
|
+
/**
|
|
4
|
+
* Graph API
|
|
5
|
+
* - 서버의 /v1/graph 경로의 API들을 호출합니다.
|
|
6
|
+
*/
|
|
7
|
+
export declare class GraphApi {
|
|
8
|
+
private readonly rb;
|
|
9
|
+
constructor(rb: RequestBuilder);
|
|
10
|
+
/**
|
|
11
|
+
* 새 노드를 생성하거나 기존 노드를 업데이트합니다.
|
|
12
|
+
* @param node - 생성 또는 업데이트할 노드 데이터
|
|
13
|
+
* @returns 생성 또는 업데이트된 노드
|
|
14
|
+
*/
|
|
15
|
+
createNode(node: GraphNodeDto): Promise<GraphNodeDto>;
|
|
16
|
+
/**
|
|
17
|
+
* 사용자의 모든 노드를 가져옵니다.
|
|
18
|
+
* @returns 노드 목록
|
|
19
|
+
*/
|
|
20
|
+
listNodes(): Promise<GraphNodeDto[]>;
|
|
21
|
+
/**
|
|
22
|
+
* 특정 ID의 노드를 가져옵니다.
|
|
23
|
+
* @param nodeId - 가져올 노드의 ID
|
|
24
|
+
* @returns 요청한 노드
|
|
25
|
+
*/
|
|
26
|
+
getNode(nodeId: number): Promise<GraphNodeDto>;
|
|
27
|
+
/**
|
|
28
|
+
* 특정 노드를 부분적으로 업데이트합니다.
|
|
29
|
+
* @param nodeId - 업데이트할 노드의 ID
|
|
30
|
+
* @param payload - 업데이트할 데이터
|
|
31
|
+
*/
|
|
32
|
+
updateNode(nodeId: number, payload: UpdateNodePayload): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* 특정 노드를 삭제합니다.
|
|
35
|
+
* @param nodeId - 삭제할 노드의 ID
|
|
36
|
+
*/
|
|
37
|
+
deleteNode(nodeId: number): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 특정 노드와 연결된 모든 엣지를 함께 삭제합니다.
|
|
40
|
+
* @param nodeId - 삭제할 노드의 ID
|
|
41
|
+
*/
|
|
42
|
+
deleteNodeCascade(nodeId: number): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* 새 엣지를 생성합니다.
|
|
45
|
+
* @param edge - 생성할 엣지 데이터
|
|
46
|
+
* @returns 생성된 엣지의 ID
|
|
47
|
+
*/
|
|
48
|
+
createEdge(edge: GraphEdgeDto): Promise<CreateEdgeResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* 사용자의 모든 엣지를 가져옵니다.
|
|
51
|
+
* @returns 엣지 목록
|
|
52
|
+
*/
|
|
53
|
+
listEdges(): Promise<GraphEdgeDto[]>;
|
|
54
|
+
/**
|
|
55
|
+
* 특정 엣지를 삭제합니다.
|
|
56
|
+
* @param edgeId - 삭제할 엣지의 ID
|
|
57
|
+
*/
|
|
58
|
+
deleteEdge(edgeId: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* 새 클러스터를 생성하거나 기존 클러스터를 업데이트합니다.
|
|
61
|
+
* @param cluster - 생성 또는 업데이트할 클러스터 데이터
|
|
62
|
+
* @returns 생성 또는 업데이트된 클러스터
|
|
63
|
+
*/
|
|
64
|
+
createCluster(cluster: GraphClusterDto): Promise<GraphClusterDto>;
|
|
65
|
+
/**
|
|
66
|
+
* 사용자의 모든 클러스터를 가져옵니다.
|
|
67
|
+
* @returns 클러스터 목록
|
|
68
|
+
*/
|
|
69
|
+
listClusters(): Promise<GraphClusterDto[]>;
|
|
70
|
+
/**
|
|
71
|
+
* 특정 ID의 클러스터를 가져옵니다.
|
|
72
|
+
* @param clusterId - 가져올 클러스터의 ID
|
|
73
|
+
* @returns 요청한 클러스터
|
|
74
|
+
*/
|
|
75
|
+
getCluster(clusterId: string): Promise<GraphClusterDto>;
|
|
76
|
+
/**
|
|
77
|
+
* 특정 클러스터를 삭제합니다.
|
|
78
|
+
* @param clusterId - 삭제할 클러스터의 ID
|
|
79
|
+
*/
|
|
80
|
+
deleteCluster(clusterId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
|
|
83
|
+
* @param clusterId - 삭제할 클러스터의 ID
|
|
84
|
+
*/
|
|
85
|
+
deleteClusterCascade(clusterId: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* 그래프 통계를 가져옵니다.
|
|
88
|
+
* @returns 그래프 통계
|
|
89
|
+
*/
|
|
90
|
+
getStats(): Promise<GraphStatsDto>;
|
|
91
|
+
/**
|
|
92
|
+
* 전체 그래프 스냅샷을 가져옵니다.
|
|
93
|
+
* @returns 그래프 스냅샷
|
|
94
|
+
*/
|
|
95
|
+
getSnapshot(): Promise<GraphSnapshotDto>;
|
|
96
|
+
/**
|
|
97
|
+
* 전체 그래프 스냅샷을 서버에 저장합니다.
|
|
98
|
+
* @param snapshot - 저장할 스냅샷 데이터
|
|
99
|
+
*/
|
|
100
|
+
saveSnapshot(snapshot: GraphSnapshotDto): Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,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;IAIrD;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9C;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI3D;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIjE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI1C;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAIvD;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIxC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
/**
|
|
3
|
+
* Graph API
|
|
4
|
+
* - 서버의 /v1/graph 경로의 API들을 호출합니다.
|
|
5
|
+
*/
|
|
6
|
+
export class GraphApi {
|
|
7
|
+
constructor(rb) {
|
|
8
|
+
this.rb = rb.path('/v1/graph');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 새 노드를 생성하거나 기존 노드를 업데이트합니다.
|
|
12
|
+
* @param node - 생성 또는 업데이트할 노드 데이터
|
|
13
|
+
* @returns 생성 또는 업데이트된 노드
|
|
14
|
+
*/
|
|
15
|
+
createNode(node) {
|
|
16
|
+
return this.rb.path('/nodes').post(node);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 사용자의 모든 노드를 가져옵니다.
|
|
20
|
+
* @returns 노드 목록
|
|
21
|
+
*/
|
|
22
|
+
listNodes() {
|
|
23
|
+
return this.rb.path('/nodes').get();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 특정 ID의 노드를 가져옵니다.
|
|
27
|
+
* @param nodeId - 가져올 노드의 ID
|
|
28
|
+
* @returns 요청한 노드
|
|
29
|
+
*/
|
|
30
|
+
getNode(nodeId) {
|
|
31
|
+
return this.rb.path(`/nodes/${nodeId}`).get();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 특정 노드를 부분적으로 업데이트합니다.
|
|
35
|
+
* @param nodeId - 업데이트할 노드의 ID
|
|
36
|
+
* @param payload - 업데이트할 데이터
|
|
37
|
+
*/
|
|
38
|
+
updateNode(nodeId, payload) {
|
|
39
|
+
return this.rb.path(`/nodes/${nodeId}`).patch(payload);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 특정 노드를 삭제합니다.
|
|
43
|
+
* @param nodeId - 삭제할 노드의 ID
|
|
44
|
+
*/
|
|
45
|
+
deleteNode(nodeId) {
|
|
46
|
+
return this.rb.path(`/nodes/${nodeId}`).delete();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 특정 노드와 연결된 모든 엣지를 함께 삭제합니다.
|
|
50
|
+
* @param nodeId - 삭제할 노드의 ID
|
|
51
|
+
*/
|
|
52
|
+
deleteNodeCascade(nodeId) {
|
|
53
|
+
return this.rb.path(`/nodes/${nodeId}/cascade`).delete();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 새 엣지를 생성합니다.
|
|
57
|
+
* @param edge - 생성할 엣지 데이터
|
|
58
|
+
* @returns 생성된 엣지의 ID
|
|
59
|
+
*/
|
|
60
|
+
createEdge(edge) {
|
|
61
|
+
return this.rb.path('/edges').post(edge);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 사용자의 모든 엣지를 가져옵니다.
|
|
65
|
+
* @returns 엣지 목록
|
|
66
|
+
*/
|
|
67
|
+
listEdges() {
|
|
68
|
+
return this.rb.path('/edges').get();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 특정 엣지를 삭제합니다.
|
|
72
|
+
* @param edgeId - 삭제할 엣지의 ID
|
|
73
|
+
*/
|
|
74
|
+
deleteEdge(edgeId) {
|
|
75
|
+
return this.rb.path(`/edges/${edgeId}`).delete();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 새 클러스터를 생성하거나 기존 클러스터를 업데이트합니다.
|
|
79
|
+
* @param cluster - 생성 또는 업데이트할 클러스터 데이터
|
|
80
|
+
* @returns 생성 또는 업데이트된 클러스터
|
|
81
|
+
*/
|
|
82
|
+
createCluster(cluster) {
|
|
83
|
+
return this.rb.path('/clusters').post(cluster);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 사용자의 모든 클러스터를 가져옵니다.
|
|
87
|
+
* @returns 클러스터 목록
|
|
88
|
+
*/
|
|
89
|
+
listClusters() {
|
|
90
|
+
return this.rb.path('/clusters').get();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 특정 ID의 클러스터를 가져옵니다.
|
|
94
|
+
* @param clusterId - 가져올 클러스터의 ID
|
|
95
|
+
* @returns 요청한 클러스터
|
|
96
|
+
*/
|
|
97
|
+
getCluster(clusterId) {
|
|
98
|
+
return this.rb.path(`/clusters/${clusterId}`).get();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 특정 클러스터를 삭제합니다.
|
|
102
|
+
* @param clusterId - 삭제할 클러스터의 ID
|
|
103
|
+
*/
|
|
104
|
+
deleteCluster(clusterId) {
|
|
105
|
+
return this.rb.path(`/clusters/${clusterId}`).delete();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 특정 클러스터와 그 안의 모든 노드 및 엣지를 삭제합니다.
|
|
109
|
+
* @param clusterId - 삭제할 클러스터의 ID
|
|
110
|
+
*/
|
|
111
|
+
deleteClusterCascade(clusterId) {
|
|
112
|
+
return this.rb.path(`/clusters/${clusterId}/cascade`).delete();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 그래프 통계를 가져옵니다.
|
|
116
|
+
* @returns 그래프 통계
|
|
117
|
+
*/
|
|
118
|
+
getStats() {
|
|
119
|
+
return this.rb.path('/stats').get();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 전체 그래프 스냅샷을 가져옵니다.
|
|
123
|
+
* @returns 그래프 스냅샷
|
|
124
|
+
*/
|
|
125
|
+
getSnapshot() {
|
|
126
|
+
return this.rb.path('/snapshot').get();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 전체 그래프 스냅샷을 서버에 저장합니다.
|
|
130
|
+
* @param snapshot - 저장할 스냅샷 데이터
|
|
131
|
+
*/
|
|
132
|
+
saveSnapshot(snapshot) {
|
|
133
|
+
return this.rb.path('/snapshot').post({ snapshot });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/endpoints/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
export interface HealthResponse {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class HealthApi {
|
|
6
|
+
private rb;
|
|
7
|
+
constructor(rb: RequestBuilder);
|
|
8
|
+
get(): Promise<HealthResponse>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/endpoints/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,OAAO,CAAA;CAAE;AAE/C,qBAAa,SAAS;IACR,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IACtC,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;CAG/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/endpoints/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,MAAM,OAAO,SAAS;IACpB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAC1C,GAAG;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAkB,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
import type { MeResponseDto } from '../types/me.js';
|
|
3
|
+
export declare class MeApi {
|
|
4
|
+
private rb;
|
|
5
|
+
constructor(rb: RequestBuilder);
|
|
6
|
+
get(): Promise<MeResponseDto>;
|
|
7
|
+
logout(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=me.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qBAAa,KAAK;IACJ,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAEtC,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAIvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAI9B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RequestBuilder } from '../http-builder.js';
|
|
2
|
+
export class MeApi {
|
|
3
|
+
constructor(rb) {
|
|
4
|
+
this.rb = rb;
|
|
5
|
+
}
|
|
6
|
+
get() {
|
|
7
|
+
return this.rb.path('/v1/me').get();
|
|
8
|
+
}
|
|
9
|
+
async logout() {
|
|
10
|
+
// 204 No Content 예상
|
|
11
|
+
await this.rb.path('/auth/logout').post();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=me.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,OAAO,KAAK;IAChB,YAAoB,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IAE1C,GAAG;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAiB,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM;QACV,oBAAoB;QACpB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAQ,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Request Builder (fluent)
|
|
3
|
+
* - baseUrl을 내부에 보관하고, 외부에서는 경로(path)만 넘겨 호출할 수 있게 한다.
|
|
4
|
+
* - 기본적으로 credentials: 'include' 로 세션 쿠키를 전송한다.
|
|
5
|
+
*/
|
|
6
|
+
export type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
7
|
+
export interface BuilderOptions {
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
fetch?: FetchLike;
|
|
10
|
+
defaultHeaders?: Record<string, string>;
|
|
11
|
+
credentials?: RequestCredentials;
|
|
12
|
+
}
|
|
13
|
+
export declare class HttpError<TBody = unknown> extends Error {
|
|
14
|
+
status: number;
|
|
15
|
+
body?: TBody;
|
|
16
|
+
constructor(message: string, status: number, body?: TBody);
|
|
17
|
+
}
|
|
18
|
+
export declare class RequestBuilder {
|
|
19
|
+
private readonly baseUrl;
|
|
20
|
+
private readonly fetchImpl;
|
|
21
|
+
private readonly headers;
|
|
22
|
+
private readonly credentials;
|
|
23
|
+
private readonly segments;
|
|
24
|
+
private readonly queryParams;
|
|
25
|
+
constructor(opts: BuilderOptions, segments?: string[], query?: URLSearchParams);
|
|
26
|
+
/**
|
|
27
|
+
* 경로 조각을 추가한다. '/v1/me' 같은 절대 경로도 허용한다.
|
|
28
|
+
* @internal SDK 내부에서만 사용된다. FE에서는 직접 호출하지 말 것.
|
|
29
|
+
*/
|
|
30
|
+
path(p: string): RequestBuilder;
|
|
31
|
+
/**
|
|
32
|
+
* 쿼리 파라미터를 추가한다.
|
|
33
|
+
* @internal SDK 내부에서만 사용된다. FE에서는 직접 호출하지 말 것.
|
|
34
|
+
*/
|
|
35
|
+
query(params?: Record<string, unknown>): RequestBuilder;
|
|
36
|
+
get<T>(): Promise<T>;
|
|
37
|
+
post<T>(body?: unknown): Promise<T>;
|
|
38
|
+
patch<T>(body?: unknown): Promise<T>;
|
|
39
|
+
delete<T>(body?: unknown): Promise<T>;
|
|
40
|
+
private url;
|
|
41
|
+
private send;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 외부에서 사용: createRequestBuilder({ baseUrl }).path('/v1/me').get()
|
|
45
|
+
*/
|
|
46
|
+
export declare function createRequestBuilder(opts: BuilderOptions): RequestBuilder;
|
|
47
|
+
//# sourceMappingURL=http-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-builder.d.ts","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5F,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,qBAAa,SAAS,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,KAAK;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK;CAM1D;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;gBAElC,IAAI,EAAE,cAAc,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,KAAK,CAAC,EAAE,eAAe;IASlF;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc;IAU/B;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IAUjD,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAIpB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAInC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3C,OAAO,CAAC,GAAG;YAMG,IAAI;CAgBnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAEzE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Request Builder (fluent)
|
|
3
|
+
* - baseUrl을 내부에 보관하고, 외부에서는 경로(path)만 넘겨 호출할 수 있게 한다.
|
|
4
|
+
* - 기본적으로 credentials: 'include' 로 세션 쿠키를 전송한다.
|
|
5
|
+
*/
|
|
6
|
+
export class HttpError extends Error {
|
|
7
|
+
constructor(message, status, body) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'HttpError';
|
|
10
|
+
this.status = status;
|
|
11
|
+
this.body = body;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class RequestBuilder {
|
|
15
|
+
constructor(opts, segments = [], query) {
|
|
16
|
+
this.baseUrl = opts.baseUrl.replace(/\/$/, '');
|
|
17
|
+
this.fetchImpl = opts.fetch ?? globalThis.fetch;
|
|
18
|
+
this.headers = { Accept: 'application/json', ...(opts.defaultHeaders ?? {}) };
|
|
19
|
+
this.credentials = opts.credentials ?? 'include';
|
|
20
|
+
this.segments = segments;
|
|
21
|
+
this.queryParams = query ?? new URLSearchParams();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 경로 조각을 추가한다. '/v1/me' 같은 절대 경로도 허용한다.
|
|
25
|
+
* @internal SDK 내부에서만 사용된다. FE에서는 직접 호출하지 말 것.
|
|
26
|
+
*/
|
|
27
|
+
path(p) {
|
|
28
|
+
if (!p)
|
|
29
|
+
return this;
|
|
30
|
+
if (p.startsWith('http://') || p.startsWith('https://')) {
|
|
31
|
+
// 절대 URL을 넣으면 baseUrl을 무시하고 해당 URL 전체를 하나의 세그먼트로 취급
|
|
32
|
+
return new RequestBuilder({ baseUrl: p, fetch: this.fetchImpl, defaultHeaders: this.headers, credentials: this.credentials }, [], new URLSearchParams(this.queryParams));
|
|
33
|
+
}
|
|
34
|
+
const segs = p.split('/').filter(Boolean);
|
|
35
|
+
return new RequestBuilder({ baseUrl: this.baseUrl, fetch: this.fetchImpl, defaultHeaders: this.headers, credentials: this.credentials }, [...this.segments, ...segs], new URLSearchParams(this.queryParams));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 쿼리 파라미터를 추가한다.
|
|
39
|
+
* @internal SDK 내부에서만 사용된다. FE에서는 직접 호출하지 말 것.
|
|
40
|
+
*/
|
|
41
|
+
query(params) {
|
|
42
|
+
if (!params)
|
|
43
|
+
return this;
|
|
44
|
+
const q = new URLSearchParams(this.queryParams);
|
|
45
|
+
for (const [k, v] of Object.entries(params)) {
|
|
46
|
+
if (v === undefined || v === null)
|
|
47
|
+
continue;
|
|
48
|
+
q.set(k, String(v));
|
|
49
|
+
}
|
|
50
|
+
return new RequestBuilder({ baseUrl: this.baseUrl, fetch: this.fetchImpl, defaultHeaders: this.headers, credentials: this.credentials }, [...this.segments], q);
|
|
51
|
+
}
|
|
52
|
+
async get() {
|
|
53
|
+
return this.send('GET');
|
|
54
|
+
}
|
|
55
|
+
async post(body) {
|
|
56
|
+
return this.send('POST', body);
|
|
57
|
+
}
|
|
58
|
+
async patch(body) {
|
|
59
|
+
return this.send('PATCH', body);
|
|
60
|
+
}
|
|
61
|
+
async delete(body) {
|
|
62
|
+
return this.send('DELETE', body);
|
|
63
|
+
}
|
|
64
|
+
url() {
|
|
65
|
+
const path = this.segments.length ? '/' + this.segments.map(encodeURIComponent).join('/') : '';
|
|
66
|
+
const qs = this.queryParams.toString();
|
|
67
|
+
return this.baseUrl + path + (qs ? `?${qs}` : '');
|
|
68
|
+
}
|
|
69
|
+
async send(method, body) {
|
|
70
|
+
const headers = { ...this.headers };
|
|
71
|
+
const init = { method, headers, credentials: this.credentials };
|
|
72
|
+
if (body !== undefined) {
|
|
73
|
+
headers['Content-Type'] = 'application/json';
|
|
74
|
+
init.body = JSON.stringify(body);
|
|
75
|
+
}
|
|
76
|
+
const res = await this.fetchImpl(this.url(), init);
|
|
77
|
+
const ct = res.headers.get('content-type') || '';
|
|
78
|
+
const isJson = ct.includes('application/json') || ct.includes('application/problem+json');
|
|
79
|
+
const payload = isJson ? await res.json() : await res.text();
|
|
80
|
+
if (!res.ok) {
|
|
81
|
+
throw new HttpError('HTTP_ERROR', res.status, payload);
|
|
82
|
+
}
|
|
83
|
+
return payload;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 외부에서 사용: createRequestBuilder({ baseUrl }).path('/v1/me').get()
|
|
88
|
+
*/
|
|
89
|
+
export function createRequestBuilder(opts) {
|
|
90
|
+
return new RequestBuilder(opts);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=http-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { createGraphNodeClient, GraphNodeClient } from './client.js';
|
|
2
|
+
export { HttpError } from './http-builder.js';
|
|
3
|
+
export { HealthApi } from './endpoints/health.js';
|
|
4
|
+
export { MeApi } from './endpoints/me.js';
|
|
5
|
+
export { ConversationsApi } from './endpoints/conversations.js';
|
|
6
|
+
export { GoogleAuthApi } from './endpoints/auth.google.js';
|
|
7
|
+
export { GraphApi } from './endpoints/graph.js';
|
|
8
|
+
export type { ProblemDetails } from './types/problem.js';
|
|
9
|
+
export type { MeResponseDto, MeProfileDto } from './types/me.js';
|
|
10
|
+
export type { ConversationDto, ConversationCreateDto, ConversationUpdateDto, ConversationBulkCreateDto } from './types/conversation.js';
|
|
11
|
+
export type { MessageDto, MessageCreateDto, MessageUpdateDto } from './types/message.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACxI,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Barrel exports: 공개 API만 노출
|
|
2
|
+
export { createGraphNodeClient, GraphNodeClient } from './client.js';
|
|
3
|
+
// 내부 전송 레이어는 노출 최소화: HttpError만 공개 (RequestBuilder는 @internal)
|
|
4
|
+
export { HttpError } from './http-builder.js';
|
|
5
|
+
// Endpoint classes (선택적으로 직접 사용 가능)
|
|
6
|
+
export { HealthApi } from './endpoints/health.js';
|
|
7
|
+
export { MeApi } from './endpoints/me.js';
|
|
8
|
+
export { ConversationsApi } from './endpoints/conversations.js';
|
|
9
|
+
export { GoogleAuthApi } from './endpoints/auth.google.js';
|
|
10
|
+
export { GraphApi } from './endpoints/graph.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,oCAAoC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MessageDto } from './message.js';
|
|
2
|
+
export interface ConversationDto {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
messages: MessageDto[];
|
|
7
|
+
}
|
|
8
|
+
export interface ConversationCreateDto {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
messages?: MessageDto[];
|
|
12
|
+
}
|
|
13
|
+
export interface ConversationUpdateDto {
|
|
14
|
+
title?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ConversationBulkCreateDto {
|
|
17
|
+
conversations: ConversationCreateDto[];
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/types/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/types/conversation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph API에 사용되는 타입 정의
|
|
3
|
+
*/
|
|
4
|
+
export interface GraphNodeDto {
|
|
5
|
+
id: number;
|
|
6
|
+
userId: string;
|
|
7
|
+
origId: string;
|
|
8
|
+
clusterId: string;
|
|
9
|
+
clusterName: string;
|
|
10
|
+
timestamp: string | null;
|
|
11
|
+
numMessages: number;
|
|
12
|
+
createdAt?: string;
|
|
13
|
+
updatedAt?: string;
|
|
14
|
+
}
|
|
15
|
+
export type GraphEdgeType = 'hard' | 'insight';
|
|
16
|
+
export interface GraphEdgeDto {
|
|
17
|
+
userId: string;
|
|
18
|
+
id?: string;
|
|
19
|
+
source: number;
|
|
20
|
+
target: number;
|
|
21
|
+
weight: number;
|
|
22
|
+
type: GraphEdgeType;
|
|
23
|
+
intraCluster: boolean;
|
|
24
|
+
createdAt?: string;
|
|
25
|
+
updatedAt?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface GraphClusterDto {
|
|
28
|
+
id: string;
|
|
29
|
+
userId: string;
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
size: number;
|
|
33
|
+
themes: string[];
|
|
34
|
+
createdAt?: string;
|
|
35
|
+
updatedAt?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface GraphStatsDto {
|
|
38
|
+
userId: string;
|
|
39
|
+
nodes: number;
|
|
40
|
+
edges: number;
|
|
41
|
+
clusters: number;
|
|
42
|
+
generatedAt?: string;
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface GraphSnapshotDto {
|
|
46
|
+
nodes: GraphNodeDto[];
|
|
47
|
+
edges: GraphEdgeDto[];
|
|
48
|
+
clusters: GraphClusterDto[];
|
|
49
|
+
stats: Omit<GraphStatsDto, 'userId'>;
|
|
50
|
+
}
|
|
51
|
+
export interface CreateEdgeResponse {
|
|
52
|
+
id: string;
|
|
53
|
+
}
|
|
54
|
+
export type UpdateNodePayload = Partial<Pick<GraphNodeDto, 'clusterId' | 'clusterName'>>;
|
|
55
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/types/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/types/graph.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface MeProfileDto {
|
|
2
|
+
id?: string | number;
|
|
3
|
+
displayName?: string | null;
|
|
4
|
+
avatarUrl?: string | null;
|
|
5
|
+
email?: string | null;
|
|
6
|
+
}
|
|
7
|
+
export interface MeResponseDto {
|
|
8
|
+
userId: string | number;
|
|
9
|
+
profile?: MeProfileDto;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=me.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/types/me.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB"}
|
package/dist/types/me.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/types/me.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface MessageDto {
|
|
2
|
+
id: string;
|
|
3
|
+
role: 'user' | 'assistant' | 'system';
|
|
4
|
+
content: string;
|
|
5
|
+
ts: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MessageCreateDto {
|
|
8
|
+
id: string;
|
|
9
|
+
role: 'user' | 'assistant' | 'system';
|
|
10
|
+
content: string;
|
|
11
|
+
ts: string;
|
|
12
|
+
}
|
|
13
|
+
export interface MessageUpdateDto {
|
|
14
|
+
content?: string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** RFC 9457 Problem Details (요약형) */
|
|
2
|
+
export interface ProblemDetails {
|
|
3
|
+
type: string;
|
|
4
|
+
title: string;
|
|
5
|
+
status: number;
|
|
6
|
+
detail: string;
|
|
7
|
+
instance: string;
|
|
8
|
+
correlationId?: string;
|
|
9
|
+
errors?: Array<Record<string, unknown>>;
|
|
10
|
+
retryable?: boolean;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=problem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.d.ts","sourceRoot":"","sources":["../../src/types/problem.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.js","sourceRoot":"","sources":["../../src/types/problem.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@taco_tsinghua/graphnode-sdk",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "GraphNode frontend SDK (cookie-based session)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"],
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"prepublishOnly": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=18"
|
|
25
|
+
},
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/node": "^24.10.0",
|
|
29
|
+
"typescript": "^5.9.3"
|
|
30
|
+
}
|
|
31
|
+
}
|