@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 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
- * @param token JWT Access Token 또는 null (로그아웃 시)
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
  }
@@ -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;AAE1C;;;;;;;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,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAuB;gBAE/B,IAAI,GAAE,sBAA2B;IAmC7C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGpC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAEpF"}
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 { GRAPHNODE_BASE_URL } from './config.js';
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
- // 1. 브라우저 / Electron Renderer 환경
34
- // window.fetch 그냥 넘기면 'Illegal invocation' 발생하므로 bind 처리
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
- // 2. Node.js (v18+) / 기타 환경
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
- // 내부 고정 baseUrl 사용, FE는 fetch/headers/credentials 정도만 선택 주입 가능
60
+ // 2. RequestBuilder 초기화
61
+ // createRequestBuilder를 통해 내부적으로 사용할 HTTP 요청 처리기를 만듭니다.
62
+ // 여기서 accessToken을 '함수' 형태로 넘기는 이유는,
63
+ // 나중에 setAccessToken()으로 값이 바뀌었을 때, RequestBuilder가 최신 값을 참조할 수 있게 하기 위함입니다.
44
64
  this.rb = createRequestBuilder({
45
- baseUrl: GRAPHNODE_BASE_URL,
65
+ baseUrl: getGraphNodeBaseUrl(),
46
66
  ...opts,
47
- fetch: fetchFn, // 바인딩된 fetch 주입
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(GRAPHNODE_BASE_URL);
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(GRAPHNODE_BASE_URL);
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
- * @param token JWT Access Token 또는 null (로그아웃 시)
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;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MACkE,CAAC"}
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 const GRAPHNODE_BASE_URL = globalThis.__GRAPHNODE_BASE_URL__?.replace(/\/$/, '') || 'https://taco4graphnode.online';
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
@@ -1 +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"}
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"}
@@ -1,6 +1,6 @@
1
1
  // endpoints/agent.ts
2
2
  import {} from '../http-builder.js';
3
- import { GRAPHNODE_BASE_URL } from '../config.js';
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 = `${GRAPHNODE_BASE_URL.replace(/\/$/, '')}/v1/agent/chat/stream`;
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":"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"}
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;CAG3D"}
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"}
@@ -14,6 +14,7 @@ export declare class NotificationApi {
14
14
  private readonly rb;
15
15
  constructor(rb: RequestBuilder);
16
16
  /**
17
+ * @deprecated
17
18
  * 실시간 알림 수신을 위한 SSE(Server-Sent Events) 스트림 URL을 반환합니다.
18
19
  *
19
20
  * 이 엔드포인트는 `text/event-stream` 형식으로 데이터를 스트리밍합니다.
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY,IAAI,MAAM;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
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAI9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAItD"}
@@ -15,6 +15,7 @@ export class NotificationApi {
15
15
  this.rb = rb.path('/v1/notifications');
16
16
  }
17
17
  /**
18
+ * @deprecated
18
19
  * 실시간 알림 수신을 위한 SSE(Server-Sent Events) 스트림 URL을 반환합니다.
19
20
  *
20
21
  * 이 엔드포인트는 `text/event-stream` 형식으로 데이터를 스트리밍합니다.
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/endpoints/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IACvC,CAAC;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"}
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"}
@@ -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;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,WAAW,CAAC,CAAiC;IAC9D,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;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"}
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"}
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-builder.js","sourceRoot":"","sources":["../src/http-builder.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export interface MeResponseDto {
26
26
  * API Key 모델 타입
27
27
  * @public
28
28
  */
29
- export type ApiKeyModel = 'openai' | 'deepseek';
29
+ export type ApiKeyModel = 'openai' | 'deepseek' | 'claude' | 'gemini';
30
30
  /**
31
31
  * GET /v1/me/api-keys 응답 DTO
32
32
  * @public
@@ -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;AAEhD;;;;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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taco_tsinghua/graphnode-sdk",
3
- "version": "0.1.19",
3
+ "version": "0.1.23",
4
4
  "description": "GraphNode frontend SDK (cookie-based session)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/client.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createRequestBuilder, type BuilderOptions, RequestBuilder } from './http-builder.js';
2
- import { GRAPHNODE_BASE_URL } from './config.js';
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
- // 1. 브라우저 / Electron Renderer 환경
60
- // window.fetch 그냥 넘기면 'Illegal invocation' 발생하므로 bind 처리
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
- // 2. Node.js (v18+) / 기타 환경
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
- // 내부 고정 baseUrl 사용, FE는 fetch/headers/credentials 정도만 선택 주입 가능
95
+ // 2. RequestBuilder 초기화
96
+ // createRequestBuilder를 통해 내부적으로 사용할 HTTP 요청 처리기를 만듭니다.
97
+ // 여기서 accessToken을 '함수' 형태로 넘기는 이유는,
98
+ // 나중에 setAccessToken()으로 값이 바뀌었을 때, RequestBuilder가 최신 값을 참조할 수 있게 하기 위함입니다.
71
99
  this.rb = createRequestBuilder({
72
- baseUrl: GRAPHNODE_BASE_URL,
100
+ baseUrl: getGraphNodeBaseUrl(),
73
101
  ...opts,
74
- fetch: fetchFn, // 바인딩된 fetch 주입
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(GRAPHNODE_BASE_URL);
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(GRAPHNODE_BASE_URL);
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
- * @param token JWT Access Token 또는 null (로그아웃 시)
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 const GRAPHNODE_BASE_URL: string =
9
- (globalThis as any).__GRAPHNODE_BASE_URL__?.replace(/\/$/, '') || 'https://taco4graphnode.online';
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();
@@ -1,6 +1,6 @@
1
1
  // endpoints/agent.ts
2
2
  import { type FetchLike } from '../http-builder.js';
3
- import { GRAPHNODE_BASE_URL } from '../config.js';
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 = `${GRAPHNODE_BASE_URL.replace(/\/$/, '')}/v1/agent/chat/stream`;
88
+ const url = `${getGraphNodeBaseUrl()}/v1/agent/chat/stream`;
89
89
 
90
90
  const res = await fetchImpl(url, {
91
91
  method: 'POST',
@@ -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
  }
@@ -19,6 +19,7 @@ export class NotificationApi {
19
19
  }
20
20
 
21
21
  /**
22
+ * @deprecated
22
23
  * 실시간 알림 수신을 위한 SSE(Server-Sent Events) 스트림 URL을 반환합니다.
23
24
  *
24
25
  * 이 엔드포인트는 `text/event-stream` 형식으로 데이터를 스트리밍합니다.
@@ -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
@@ -28,7 +28,7 @@ export interface MeResponseDto {
28
28
  * API Key 모델 타입
29
29
  * @public
30
30
  */
31
- export type ApiKeyModel = 'openai' | 'deepseek';
31
+ export type ApiKeyModel = 'openai' | 'deepseek' | 'claude' | 'gemini';
32
32
 
33
33
  /**
34
34
  * GET /v1/me/api-keys 응답 DTO