@taco_tsinghua/graphnode-sdk 0.1.19 → 0.1.23
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 +24 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +38 -12
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -3
- package/dist/config.js.map +1 -1
- package/dist/endpoints/agent.js +2 -2
- package/dist/endpoints/agent.js.map +1 -1
- package/dist/endpoints/graphAi.d.ts +26 -0
- package/dist/endpoints/graphAi.d.ts.map +1 -1
- package/dist/endpoints/graphAi.js +28 -0
- package/dist/endpoints/graphAi.js.map +1 -1
- package/dist/endpoints/notification.d.ts +1 -0
- package/dist/endpoints/notification.d.ts.map +1 -1
- package/dist/endpoints/notification.js +1 -0
- package/dist/endpoints/notification.js.map +1 -1
- package/dist/http-builder.d.ts +37 -0
- package/dist/http-builder.d.ts.map +1 -1
- package/dist/http-builder.js +6 -0
- package/dist/http-builder.js.map +1 -1
- package/dist/types/me.d.ts +1 -1
- package/dist/types/me.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +47 -12
- package/src/config.ts +11 -4
- package/src/endpoints/agent.ts +2 -2
- package/src/endpoints/graphAi.ts +31 -0
- package/src/endpoints/notification.ts +1 -0
- package/src/http-builder.ts +43 -0
- package/src/types/me.ts +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { NoteApi } from './endpoints/note.js';
|
|
|
9
9
|
import { AppleAuthApi } from './endpoints/auth.apple.js';
|
|
10
10
|
import { SyncApi } from './endpoints/sync.js';
|
|
11
11
|
import { AiApi } from './endpoints/ai.js';
|
|
12
|
+
import { NotificationApi } from './endpoints/notification.js';
|
|
12
13
|
/**
|
|
13
14
|
* GraphNode 클라이언트 옵션
|
|
14
15
|
* @public
|
|
@@ -45,12 +46,33 @@ export declare class GraphNodeClient {
|
|
|
45
46
|
readonly appleAuth: AppleAuthApi;
|
|
46
47
|
readonly sync: SyncApi;
|
|
47
48
|
readonly ai: AiApi;
|
|
49
|
+
readonly notification: NotificationApi;
|
|
50
|
+
/**
|
|
51
|
+
* HTTP 요청 빌더 인스턴스.
|
|
52
|
+
* 모든 API 엔드포인트가 이 빌더를 공유하여 HTTP 요청을 수행합니다.
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
48
55
|
private readonly rb;
|
|
56
|
+
/**
|
|
57
|
+
* 현재 설정된 Access Token (Bearer 토큰).
|
|
58
|
+
* 쿠키 인증 방식을 사용할 경우 null일 수 있습니다.
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
49
61
|
private _accessToken;
|
|
62
|
+
/**
|
|
63
|
+
* GraphNodeClient 생성자.
|
|
64
|
+
* - 실행 환경(브라우저/Node.js)에 맞는 fetch 함수를 자동으로 감지하여 설정합니다.
|
|
65
|
+
* - 기본 API URL 및 공통 헤더 등 통신 옵션을 초기화합니다.
|
|
66
|
+
*
|
|
67
|
+
* @param opts 클라이언트 설정 옵션
|
|
68
|
+
*/
|
|
50
69
|
constructor(opts?: GraphNodeClientOptions);
|
|
51
70
|
/**
|
|
52
|
-
* Access Token을 설정합니다.
|
|
53
|
-
*
|
|
71
|
+
* Access Token을 동적으로 설정합니다.
|
|
72
|
+
* - 로그인 후 발급받은 토큰을 수동으로 설정하거나, 로그아웃 시 null로 초기화할 때 사용합니다.
|
|
73
|
+
* - 쿠키 기반 인증을 사용하는 경우, 이 함수를 호출하지 않아도(null 상태여도) 정상 동작합니다.
|
|
74
|
+
*
|
|
75
|
+
* @param token JWT Access Token 문자열 또는 null (초기화)
|
|
54
76
|
*/
|
|
55
77
|
setAccessToken(token: string | null): void;
|
|
56
78
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +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;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
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;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAQ,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,aAAa,CAAC;IAC7F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,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,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IAEvC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IAEpC;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C;;;;;;OAMG;gBACS,IAAI,GAAE,sBAA2B;IA8C7C;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGpC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAEpF"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequestBuilder, RequestBuilder } from './http-builder.js';
|
|
2
|
-
import {
|
|
2
|
+
import { getGraphNodeBaseUrl } from './config.js';
|
|
3
3
|
import { HealthApi } from './endpoints/health.js';
|
|
4
4
|
import { MeApi } from './endpoints/me.js';
|
|
5
5
|
import { ConversationsApi } from './endpoints/conversations.js';
|
|
@@ -10,6 +10,7 @@ import { NoteApi } from './endpoints/note.js';
|
|
|
10
10
|
import { AppleAuthApi } from './endpoints/auth.apple.js';
|
|
11
11
|
import { SyncApi } from './endpoints/sync.js';
|
|
12
12
|
import { AiApi } from './endpoints/ai.js';
|
|
13
|
+
import { NotificationApi } from './endpoints/notification.js';
|
|
13
14
|
/**
|
|
14
15
|
* GraphNode API 클라이언트
|
|
15
16
|
* @public
|
|
@@ -25,42 +26,67 @@ import { AiApi } from './endpoints/ai.js';
|
|
|
25
26
|
* @property ai AI 채팅 API
|
|
26
27
|
*/
|
|
27
28
|
export class GraphNodeClient {
|
|
29
|
+
/**
|
|
30
|
+
* GraphNodeClient 생성자.
|
|
31
|
+
* - 실행 환경(브라우저/Node.js)에 맞는 fetch 함수를 자동으로 감지하여 설정합니다.
|
|
32
|
+
* - 기본 API URL 및 공통 헤더 등 통신 옵션을 초기화합니다.
|
|
33
|
+
*
|
|
34
|
+
* @param opts 클라이언트 설정 옵션
|
|
35
|
+
*/
|
|
28
36
|
constructor(opts = {}) {
|
|
37
|
+
/**
|
|
38
|
+
* 현재 설정된 Access Token (Bearer 토큰).
|
|
39
|
+
* 쿠키 인증 방식을 사용할 경우 null일 수 있습니다.
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
29
42
|
this._accessToken = null;
|
|
43
|
+
// 1. fetch 함수 결정 전략
|
|
44
|
+
// 사용자가 opts.fetch로 직접 주입하지 않은 경우, 환경에 따라 적절한 기본 fetch를 찾습니다.
|
|
30
45
|
let fetchFn = opts.fetch;
|
|
31
46
|
if (!fetchFn) {
|
|
32
47
|
if (typeof window !== 'undefined' && window.fetch) {
|
|
33
|
-
//
|
|
34
|
-
// window.fetch
|
|
48
|
+
// [Browser / Electron Renderer 환경]
|
|
49
|
+
// window.fetch는 호출 시 'this'가 window여야 하므로 bind(window)가 필수입니다.
|
|
50
|
+
// 그냥 할당하면 "Illegal invocation" 에러가 발생할 수 있습니다.
|
|
35
51
|
fetchFn = window.fetch.bind(window);
|
|
36
52
|
}
|
|
37
53
|
else if (typeof globalThis !== 'undefined' && globalThis.fetch) {
|
|
38
|
-
//
|
|
54
|
+
// [Node.js 18+ / Bun / Deno 등 환경]
|
|
55
|
+
// 전역 스코프(globalThis)에 있는 fetch를 사용합니다.
|
|
39
56
|
fetchFn = globalThis.fetch.bind(globalThis);
|
|
40
57
|
}
|
|
41
58
|
}
|
|
42
59
|
this._accessToken = opts.accessToken ?? null;
|
|
43
|
-
//
|
|
60
|
+
// 2. RequestBuilder 초기화
|
|
61
|
+
// createRequestBuilder를 통해 내부적으로 사용할 HTTP 요청 처리기를 만듭니다.
|
|
62
|
+
// 여기서 accessToken을 '함수' 형태로 넘기는 이유는,
|
|
63
|
+
// 나중에 setAccessToken()으로 값이 바뀌었을 때, RequestBuilder가 최신 값을 참조할 수 있게 하기 위함입니다.
|
|
44
64
|
this.rb = createRequestBuilder({
|
|
45
|
-
baseUrl:
|
|
65
|
+
baseUrl: getGraphNodeBaseUrl(),
|
|
46
66
|
...opts,
|
|
47
|
-
fetch: fetchFn, //
|
|
48
|
-
accessToken: () => this._accessToken, // 동적 토큰
|
|
67
|
+
fetch: fetchFn, // 결정된 fetch 함수 주입
|
|
68
|
+
accessToken: () => this._accessToken, // [중요] 동적 토큰 참조를 위한 Getter 함수 전달
|
|
49
69
|
});
|
|
70
|
+
// 3. 각 API 모듈 초기화
|
|
71
|
+
// 각 모듈은 공유된 RequestBuilder(this.rb)를 사용하여 통신합니다.
|
|
50
72
|
this.health = new HealthApi(this.rb);
|
|
51
73
|
this.me = new MeApi(this.rb);
|
|
52
74
|
this.conversations = new ConversationsApi(this.rb);
|
|
53
|
-
this.googleAuth = new GoogleAuthApi(
|
|
75
|
+
this.googleAuth = new GoogleAuthApi(getGraphNodeBaseUrl());
|
|
54
76
|
this.graph = new GraphApi(this.rb);
|
|
55
77
|
this.graphAi = new GraphAiApi(this.rb);
|
|
56
78
|
this.note = new NoteApi(this.rb);
|
|
57
|
-
this.appleAuth = new AppleAuthApi(
|
|
79
|
+
this.appleAuth = new AppleAuthApi(getGraphNodeBaseUrl());
|
|
58
80
|
this.sync = new SyncApi(this.rb);
|
|
59
81
|
this.ai = new AiApi(this.rb);
|
|
82
|
+
this.notification = new NotificationApi(this.rb);
|
|
60
83
|
}
|
|
61
84
|
/**
|
|
62
|
-
* Access Token을 설정합니다.
|
|
63
|
-
*
|
|
85
|
+
* Access Token을 동적으로 설정합니다.
|
|
86
|
+
* - 로그인 후 발급받은 토큰을 수동으로 설정하거나, 로그아웃 시 null로 초기화할 때 사용합니다.
|
|
87
|
+
* - 쿠키 기반 인증을 사용하는 경우, 이 함수를 호출하지 않아도(null 상태여도) 정상 동작합니다.
|
|
88
|
+
*
|
|
89
|
+
* @param token JWT Access Token 문자열 또는 null (초기화)
|
|
64
90
|
*/
|
|
65
91
|
setAccessToken(token) {
|
|
66
92
|
this._accessToken = token;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SDK 내부에서 사용하는 GraphNode API Base URL
|
|
3
|
-
* - FE 사용자는 직접 변경하거나 전달할 수 없다.
|
|
2
|
+
* SDK 내부에서 사용하는 GraphNode API Base URL을 반환하는 함수.
|
|
4
3
|
* - 런타임에서 globalThis.__GRAPHNODE_BASE_URL__ 가 존재하면 그것을 우선 사용.
|
|
5
4
|
* - 없으면 기본 프로덕션 값으로 폴백.
|
|
5
|
+
* - 함수로 만들어서 매번 동적으로 평가되도록 함
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
+
export declare function getGraphNodeBaseUrl(): string;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use getGraphNodeBaseUrl() instead for dynamic evaluation
|
|
11
|
+
*/
|
|
8
12
|
export declare const GRAPHNODE_BASE_URL: string;
|
|
9
13
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAA8B,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SDK 내부에서 사용하는 GraphNode API Base URL
|
|
3
|
-
* - FE 사용자는 직접 변경하거나 전달할 수 없다.
|
|
2
|
+
* SDK 내부에서 사용하는 GraphNode API Base URL을 반환하는 함수.
|
|
4
3
|
* - 런타임에서 globalThis.__GRAPHNODE_BASE_URL__ 가 존재하면 그것을 우선 사용.
|
|
5
4
|
* - 없으면 기본 프로덕션 값으로 폴백.
|
|
5
|
+
* - 함수로 만들어서 매번 동적으로 평가되도록 함
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
8
|
+
export function getGraphNodeBaseUrl() {
|
|
9
|
+
const url = globalThis.__GRAPHNODE_BASE_URL__ || 'https://taco4graphnode.online';
|
|
10
|
+
return url.replace(/\/$/, '');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use getGraphNodeBaseUrl() instead for dynamic evaluation
|
|
14
|
+
*/
|
|
15
|
+
export const GRAPHNODE_BASE_URL = getGraphNodeBaseUrl();
|
|
9
16
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAI,UAAkB,CAAC,sBAAsB,IAAI,+BAA+B,CAAC;IAC1F,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAW,mBAAmB,EAAE,CAAC"}
|
package/dist/endpoints/agent.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// endpoints/agent.ts
|
|
2
2
|
import {} from '../http-builder.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getGraphNodeBaseUrl } from '../config.js';
|
|
4
4
|
/**
|
|
5
5
|
* /v1/agent/chat/stream 스트리밍 API를 여는 헬퍼.
|
|
6
6
|
* - 서버는 text/event-stream(SSE) 형식으로 event/data 를 보낸다.
|
|
@@ -34,7 +34,7 @@ export async function openAgentChatStream(params, onEvent, options = {}) {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
const fetchImpl = fetchFn;
|
|
37
|
-
const url = `${
|
|
37
|
+
const url = `${getGraphNodeBaseUrl()}/v1/agent/chat/stream`;
|
|
38
38
|
const res = await fetchImpl(url, {
|
|
39
39
|
method: 'POST',
|
|
40
40
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/endpoints/agent.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/endpoints/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,5 +92,31 @@ export declare class GraphAiApi {
|
|
|
92
92
|
* @returns The graph summary DTO
|
|
93
93
|
*/
|
|
94
94
|
getSummary(): Promise<HttpResponse<GraphSummaryDto>>;
|
|
95
|
+
/**
|
|
96
|
+
* 단일 대화를 기존 지식 그래프에 추가합니다.
|
|
97
|
+
*
|
|
98
|
+
* 이 작업은 서버에서 비동기 백그라운드 작업으로 수행됩니다.
|
|
99
|
+
* 대화를 분석하여 Q-A 쌍을 추출하고, 클러스터링을 수행한 뒤,
|
|
100
|
+
* 기존 노드와의 유사도를 계산하여 새로운 노드와 엣지를 생성합니다.
|
|
101
|
+
*
|
|
102
|
+
* **API Endpoint**: `POST /v1/graph-ai/add-conversation/:conversationId`
|
|
103
|
+
*
|
|
104
|
+
* @param conversationId - 그래프에 추가할 대화 ID
|
|
105
|
+
* @returns 작업 ID와 상태를 포함한 응답 객체 (`GraphGenerationResponseDto`)
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const response = await client.graphAi.addConversation('conv-uuid-123');
|
|
110
|
+
*
|
|
111
|
+
* console.log(response.data);
|
|
112
|
+
* // Output:
|
|
113
|
+
* {
|
|
114
|
+
* message: 'Add conversation to graph queued',
|
|
115
|
+
* taskId: 'task_add_conv_user123_01HJKM...',
|
|
116
|
+
* status: 'queued'
|
|
117
|
+
* }
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
addConversation(conversationId: string): Promise<HttpResponse<GraphGenerationResponseDto>>;
|
|
95
121
|
}
|
|
96
122
|
//# sourceMappingURL=graphAi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphAi.d.ts","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IAEpC;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIxE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAI/F;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIzE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"graphAi.d.ts","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IAEpC;;;;OAIG;gBACS,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIxE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAI/F;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IAIzE;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAI1D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,eAAe,CACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;CAGrD"}
|
|
@@ -98,5 +98,33 @@ export class GraphAiApi {
|
|
|
98
98
|
async getSummary() {
|
|
99
99
|
return this.rb.path('/summary').get();
|
|
100
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* 단일 대화를 기존 지식 그래프에 추가합니다.
|
|
103
|
+
*
|
|
104
|
+
* 이 작업은 서버에서 비동기 백그라운드 작업으로 수행됩니다.
|
|
105
|
+
* 대화를 분석하여 Q-A 쌍을 추출하고, 클러스터링을 수행한 뒤,
|
|
106
|
+
* 기존 노드와의 유사도를 계산하여 새로운 노드와 엣지를 생성합니다.
|
|
107
|
+
*
|
|
108
|
+
* **API Endpoint**: `POST /v1/graph-ai/add-conversation/:conversationId`
|
|
109
|
+
*
|
|
110
|
+
* @param conversationId - 그래프에 추가할 대화 ID
|
|
111
|
+
* @returns 작업 ID와 상태를 포함한 응답 객체 (`GraphGenerationResponseDto`)
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const response = await client.graphAi.addConversation('conv-uuid-123');
|
|
116
|
+
*
|
|
117
|
+
* console.log(response.data);
|
|
118
|
+
* // Output:
|
|
119
|
+
* {
|
|
120
|
+
* message: 'Add conversation to graph queued',
|
|
121
|
+
* taskId: 'task_add_conv_user123_01HJKM...',
|
|
122
|
+
* status: 'queued'
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
async addConversation(conversationId) {
|
|
127
|
+
return this.rb.path(`/add-conversation/${conversationId}`).post();
|
|
128
|
+
}
|
|
101
129
|
}
|
|
102
130
|
//# sourceMappingURL=graphAi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphAi.js","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAKvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAGrB;;;;OAIG;IACH,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAmB;QACzC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"graphAi.js","sourceRoot":"","sources":["../../src/endpoints/graphAi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AAKvE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IAGrB;;;;OAIG;IACH,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAmB;QACzC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,eAAe,CACnB,cAAsB;QAEtB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAItD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAa;QACnC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;CAEF"}
|
package/dist/http-builder.d.ts
CHANGED
|
@@ -26,13 +26,50 @@ export type HttpResponseError = {
|
|
|
26
26
|
};
|
|
27
27
|
export type HttpResponse<T> = HttpResponseSuccess<T> | HttpResponseError;
|
|
28
28
|
export declare class RequestBuilder {
|
|
29
|
+
/**
|
|
30
|
+
* API 기본 URL (마지막 슬래시 제거됨)
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
29
33
|
private readonly baseUrl;
|
|
34
|
+
/**
|
|
35
|
+
* 실제 HTTP 요청을 수행할 fetch 함수 구현체
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
30
38
|
private readonly fetchImpl;
|
|
39
|
+
/**
|
|
40
|
+
* 모든 요청에 포함될 기본 HTTP 헤더 (예: Accept: application/json)
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
31
43
|
private readonly headers;
|
|
44
|
+
/**
|
|
45
|
+
* 자격 증명(쿠키) 전송 모드 ('include' | 'omit' | 'same-origin')
|
|
46
|
+
* - 'include'로 설정 시 브라우저가 자동으로 쿠키를 전송합니다.
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
32
49
|
private readonly credentials;
|
|
50
|
+
/**
|
|
51
|
+
* Access Token을 동적으로 반환하는 함수 또는 정적 문자열.
|
|
52
|
+
* - 함수로 설정된 경우 요청 시점의 최신 토큰을 조회하여 Authorization 헤더에 사용합니다.
|
|
53
|
+
* - 값이 없으면(undefined) Authorization 헤더를 추가하지 않습니다 (쿠키 인증 의존).
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
33
56
|
private readonly accessToken?;
|
|
57
|
+
/**
|
|
58
|
+
* 현재 빌더가 가지고 있는 URL 경로 조각들
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
34
61
|
private readonly segments;
|
|
62
|
+
/**
|
|
63
|
+
* 현재 빌더가 가지고 있는 쿼리 파라미터들
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
35
66
|
private readonly queryParams;
|
|
67
|
+
/**
|
|
68
|
+
* RequestBuilder 생성자
|
|
69
|
+
* @param opts 빌더 공통 옵션 (baseUrl, fetch, headers 등)
|
|
70
|
+
* @param segments 초기 URL 경로 조각 리스트
|
|
71
|
+
* @param query 초기 쿼리 파라미터
|
|
72
|
+
*/
|
|
36
73
|
constructor(opts: BuilderOptions, segments?: string[], query?: URLSearchParams);
|
|
37
74
|
/**
|
|
38
75
|
* 경로 조각을 추가한다. '/v1/me' 같은 절대 경로도 허용한다.
|
|
@@ -1 +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;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAaD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,KAAK,CAAC;IACjB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAEzE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;
|
|
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;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAaD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,KAAK,CAAC;IACjB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAEzE,qBAAa,cAAc;IACzB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAiC;IAE9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAE9C;;;;;OAKG;gBACS,IAAI,EAAE,cAAc,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,KAAK,CAAC,EAAE,eAAe;IAUlF;;;OAGG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc;IA6B/B;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IAmBjD,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIjD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlD,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlD,GAAG,IAAI,MAAM;IAMP,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,OAAO,CAAC,QAAQ,CAAC;YAiDN,IAAI;CA6CnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAEzE"}
|
package/dist/http-builder.js
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
* - 기본적으로 credentials: 'include' 로 세션 쿠키를 전송한다.
|
|
5
5
|
*/
|
|
6
6
|
export class RequestBuilder {
|
|
7
|
+
/**
|
|
8
|
+
* RequestBuilder 생성자
|
|
9
|
+
* @param opts 빌더 공통 옵션 (baseUrl, fetch, headers 등)
|
|
10
|
+
* @param segments 초기 URL 경로 조각 리스트
|
|
11
|
+
* @param query 초기 쿼리 파라미터
|
|
12
|
+
*/
|
|
7
13
|
constructor(opts, segments = [], query) {
|
|
8
14
|
this.baseUrl = opts.baseUrl.replace(/\/$/, '');
|
|
9
15
|
this.fetchImpl = opts.fetch ?? globalThis.fetch;
|
package/dist/http-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwCH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/types/me.d.ts
CHANGED
package/dist/types/me.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/types/me.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/types/me.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequestBuilder, type BuilderOptions, RequestBuilder } from './http-builder.js';
|
|
2
|
-
import {
|
|
2
|
+
import { getGraphNodeBaseUrl } from './config.js';
|
|
3
3
|
import { HealthApi } from './endpoints/health.js';
|
|
4
4
|
import { MeApi } from './endpoints/me.js';
|
|
5
5
|
import { ConversationsApi } from './endpoints/conversations.js';
|
|
@@ -10,6 +10,7 @@ import { NoteApi } from './endpoints/note.js';
|
|
|
10
10
|
import { AppleAuthApi } from './endpoints/auth.apple.js';
|
|
11
11
|
import { SyncApi } from './endpoints/sync.js';
|
|
12
12
|
import { AiApi } from './endpoints/ai.js';
|
|
13
|
+
import { NotificationApi } from './endpoints/notification.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* GraphNode 클라이언트 옵션
|
|
@@ -48,47 +49,81 @@ export class GraphNodeClient {
|
|
|
48
49
|
readonly appleAuth: AppleAuthApi;
|
|
49
50
|
readonly sync: SyncApi;
|
|
50
51
|
readonly ai: AiApi;
|
|
52
|
+
readonly notification: NotificationApi;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* HTTP 요청 빌더 인스턴스.
|
|
56
|
+
* 모든 API 엔드포인트가 이 빌더를 공유하여 HTTP 요청을 수행합니다.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
51
59
|
private readonly rb: RequestBuilder;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 현재 설정된 Access Token (Bearer 토큰).
|
|
63
|
+
* 쿠키 인증 방식을 사용할 경우 null일 수 있습니다.
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
52
66
|
private _accessToken: string | null = null;
|
|
53
67
|
|
|
68
|
+
/**
|
|
69
|
+
* GraphNodeClient 생성자.
|
|
70
|
+
* - 실행 환경(브라우저/Node.js)에 맞는 fetch 함수를 자동으로 감지하여 설정합니다.
|
|
71
|
+
* - 기본 API URL 및 공통 헤더 등 통신 옵션을 초기화합니다.
|
|
72
|
+
*
|
|
73
|
+
* @param opts 클라이언트 설정 옵션
|
|
74
|
+
*/
|
|
54
75
|
constructor(opts: GraphNodeClientOptions = {}) {
|
|
76
|
+
// 1. fetch 함수 결정 전략
|
|
77
|
+
// 사용자가 opts.fetch로 직접 주입하지 않은 경우, 환경에 따라 적절한 기본 fetch를 찾습니다.
|
|
55
78
|
let fetchFn = opts.fetch;
|
|
56
79
|
|
|
57
80
|
if (!fetchFn) {
|
|
58
81
|
if (typeof window !== 'undefined' && window.fetch) {
|
|
59
|
-
//
|
|
60
|
-
// window.fetch
|
|
82
|
+
// [Browser / Electron Renderer 환경]
|
|
83
|
+
// window.fetch는 호출 시 'this'가 window여야 하므로 bind(window)가 필수입니다.
|
|
84
|
+
// 그냥 할당하면 "Illegal invocation" 에러가 발생할 수 있습니다.
|
|
61
85
|
fetchFn = window.fetch.bind(window);
|
|
62
86
|
} else if (typeof globalThis !== 'undefined' && (globalThis as any).fetch) {
|
|
63
|
-
//
|
|
87
|
+
// [Node.js 18+ / Bun / Deno 등 환경]
|
|
88
|
+
// 전역 스코프(globalThis)에 있는 fetch를 사용합니다.
|
|
64
89
|
fetchFn = (globalThis as any).fetch.bind(globalThis);
|
|
65
90
|
}
|
|
66
91
|
}
|
|
67
92
|
|
|
68
93
|
this._accessToken = opts.accessToken ?? null;
|
|
69
94
|
|
|
70
|
-
//
|
|
95
|
+
// 2. RequestBuilder 초기화
|
|
96
|
+
// createRequestBuilder를 통해 내부적으로 사용할 HTTP 요청 처리기를 만듭니다.
|
|
97
|
+
// 여기서 accessToken을 '함수' 형태로 넘기는 이유는,
|
|
98
|
+
// 나중에 setAccessToken()으로 값이 바뀌었을 때, RequestBuilder가 최신 값을 참조할 수 있게 하기 위함입니다.
|
|
71
99
|
this.rb = createRequestBuilder({
|
|
72
|
-
baseUrl:
|
|
100
|
+
baseUrl: getGraphNodeBaseUrl(),
|
|
73
101
|
...opts,
|
|
74
|
-
fetch: fetchFn, //
|
|
75
|
-
accessToken: () => this._accessToken, // 동적 토큰
|
|
102
|
+
fetch: fetchFn, // 결정된 fetch 함수 주입
|
|
103
|
+
accessToken: () => this._accessToken, // [중요] 동적 토큰 참조를 위한 Getter 함수 전달
|
|
76
104
|
});
|
|
105
|
+
|
|
106
|
+
// 3. 각 API 모듈 초기화
|
|
107
|
+
// 각 모듈은 공유된 RequestBuilder(this.rb)를 사용하여 통신합니다.
|
|
77
108
|
this.health = new HealthApi(this.rb);
|
|
78
109
|
this.me = new MeApi(this.rb);
|
|
79
110
|
this.conversations = new ConversationsApi(this.rb);
|
|
80
|
-
this.googleAuth = new GoogleAuthApi(
|
|
111
|
+
this.googleAuth = new GoogleAuthApi(getGraphNodeBaseUrl());
|
|
81
112
|
this.graph = new GraphApi(this.rb);
|
|
82
113
|
this.graphAi = new GraphAiApi(this.rb);
|
|
83
114
|
this.note = new NoteApi(this.rb);
|
|
84
|
-
this.appleAuth = new AppleAuthApi(
|
|
115
|
+
this.appleAuth = new AppleAuthApi(getGraphNodeBaseUrl());
|
|
85
116
|
this.sync = new SyncApi(this.rb);
|
|
86
117
|
this.ai = new AiApi(this.rb);
|
|
118
|
+
this.notification = new NotificationApi(this.rb);
|
|
87
119
|
}
|
|
88
120
|
|
|
89
121
|
/**
|
|
90
|
-
* Access Token을 설정합니다.
|
|
91
|
-
*
|
|
122
|
+
* Access Token을 동적으로 설정합니다.
|
|
123
|
+
* - 로그인 후 발급받은 토큰을 수동으로 설정하거나, 로그아웃 시 null로 초기화할 때 사용합니다.
|
|
124
|
+
* - 쿠키 기반 인증을 사용하는 경우, 이 함수를 호출하지 않아도(null 상태여도) 정상 동작합니다.
|
|
125
|
+
*
|
|
126
|
+
* @param token JWT Access Token 문자열 또는 null (초기화)
|
|
92
127
|
*/
|
|
93
128
|
setAccessToken(token: string | null) {
|
|
94
129
|
this._accessToken = token;
|
package/src/config.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SDK 내부에서 사용하는 GraphNode API Base URL
|
|
3
|
-
* - FE 사용자는 직접 변경하거나 전달할 수 없다.
|
|
2
|
+
* SDK 내부에서 사용하는 GraphNode API Base URL을 반환하는 함수.
|
|
4
3
|
* - 런타임에서 globalThis.__GRAPHNODE_BASE_URL__ 가 존재하면 그것을 우선 사용.
|
|
5
4
|
* - 없으면 기본 프로덕션 값으로 폴백.
|
|
5
|
+
* - 함수로 만들어서 매번 동적으로 평가되도록 함
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
9
|
-
(globalThis as any).__GRAPHNODE_BASE_URL__
|
|
8
|
+
export function getGraphNodeBaseUrl(): string {
|
|
9
|
+
const url = (globalThis as any).__GRAPHNODE_BASE_URL__ || 'https://taco4graphnode.online';
|
|
10
|
+
return url.replace(/\/$/, '');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use getGraphNodeBaseUrl() instead for dynamic evaluation
|
|
15
|
+
*/
|
|
16
|
+
export const GRAPHNODE_BASE_URL: string = getGraphNodeBaseUrl();
|
package/src/endpoints/agent.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// endpoints/agent.ts
|
|
2
2
|
import { type FetchLike } from '../http-builder.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getGraphNodeBaseUrl } from '../config.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* 에이전트 채팅 모드 및 스트림 이벤트 타입들
|
|
@@ -85,7 +85,7 @@ export async function openAgentChatStream(
|
|
|
85
85
|
|
|
86
86
|
const fetchImpl = fetchFn as FetchLike;
|
|
87
87
|
|
|
88
|
-
const url = `${
|
|
88
|
+
const url = `${getGraphNodeBaseUrl()}/v1/agent/chat/stream`;
|
|
89
89
|
|
|
90
90
|
const res = await fetchImpl(url, {
|
|
91
91
|
method: 'POST',
|
package/src/endpoints/graphAi.ts
CHANGED
|
@@ -108,4 +108,35 @@ export class GraphAiApi {
|
|
|
108
108
|
async getSummary(): Promise<HttpResponse<GraphSummaryDto>> {
|
|
109
109
|
return this.rb.path('/summary').get();
|
|
110
110
|
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 단일 대화를 기존 지식 그래프에 추가합니다.
|
|
114
|
+
*
|
|
115
|
+
* 이 작업은 서버에서 비동기 백그라운드 작업으로 수행됩니다.
|
|
116
|
+
* 대화를 분석하여 Q-A 쌍을 추출하고, 클러스터링을 수행한 뒤,
|
|
117
|
+
* 기존 노드와의 유사도를 계산하여 새로운 노드와 엣지를 생성합니다.
|
|
118
|
+
*
|
|
119
|
+
* **API Endpoint**: `POST /v1/graph-ai/add-conversation/:conversationId`
|
|
120
|
+
*
|
|
121
|
+
* @param conversationId - 그래프에 추가할 대화 ID
|
|
122
|
+
* @returns 작업 ID와 상태를 포함한 응답 객체 (`GraphGenerationResponseDto`)
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const response = await client.graphAi.addConversation('conv-uuid-123');
|
|
127
|
+
*
|
|
128
|
+
* console.log(response.data);
|
|
129
|
+
* // Output:
|
|
130
|
+
* {
|
|
131
|
+
* message: 'Add conversation to graph queued',
|
|
132
|
+
* taskId: 'task_add_conv_user123_01HJKM...',
|
|
133
|
+
* status: 'queued'
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
async addConversation(
|
|
138
|
+
conversationId: string
|
|
139
|
+
): Promise<HttpResponse<GraphGenerationResponseDto>> {
|
|
140
|
+
return this.rb.path(`/add-conversation/${conversationId}`).post();
|
|
141
|
+
}
|
|
111
142
|
}
|
package/src/http-builder.ts
CHANGED
|
@@ -43,14 +43,57 @@ export type HttpResponseError = {
|
|
|
43
43
|
export type HttpResponse<T> = HttpResponseSuccess<T> | HttpResponseError;
|
|
44
44
|
|
|
45
45
|
export class RequestBuilder {
|
|
46
|
+
/**
|
|
47
|
+
* API 기본 URL (마지막 슬래시 제거됨)
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
46
50
|
private readonly baseUrl: string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 실제 HTTP 요청을 수행할 fetch 함수 구현체
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
47
56
|
private readonly fetchImpl: FetchLike;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 모든 요청에 포함될 기본 HTTP 헤더 (예: Accept: application/json)
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
48
62
|
private readonly headers: Record<string, string>;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 자격 증명(쿠키) 전송 모드 ('include' | 'omit' | 'same-origin')
|
|
66
|
+
* - 'include'로 설정 시 브라우저가 자동으로 쿠키를 전송합니다.
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
49
69
|
private readonly credentials: RequestCredentials;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Access Token을 동적으로 반환하는 함수 또는 정적 문자열.
|
|
73
|
+
* - 함수로 설정된 경우 요청 시점의 최신 토큰을 조회하여 Authorization 헤더에 사용합니다.
|
|
74
|
+
* - 값이 없으면(undefined) Authorization 헤더를 추가하지 않습니다 (쿠키 인증 의존).
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
50
77
|
private readonly accessToken?: string | (() => string | null);
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 현재 빌더가 가지고 있는 URL 경로 조각들
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
51
83
|
private readonly segments: string[];
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 현재 빌더가 가지고 있는 쿼리 파라미터들
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
52
89
|
private readonly queryParams: URLSearchParams;
|
|
53
90
|
|
|
91
|
+
/**
|
|
92
|
+
* RequestBuilder 생성자
|
|
93
|
+
* @param opts 빌더 공통 옵션 (baseUrl, fetch, headers 등)
|
|
94
|
+
* @param segments 초기 URL 경로 조각 리스트
|
|
95
|
+
* @param query 초기 쿼리 파라미터
|
|
96
|
+
*/
|
|
54
97
|
constructor(opts: BuilderOptions, segments: string[] = [], query?: URLSearchParams) {
|
|
55
98
|
this.baseUrl = opts.baseUrl.replace(/\/$/, '');
|
|
56
99
|
this.fetchImpl = opts.fetch ?? (globalThis.fetch as FetchLike);
|
package/src/types/me.ts
CHANGED