connectbase-client 3.18.0 → 3.20.0

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/index.mjs CHANGED
@@ -8007,6 +8007,15 @@ var KnowledgeAPI = class {
8007
8007
  * source_type: 'url',
8008
8008
  * source_url: 'https://example.com/help.html'
8009
8009
  * })
8010
+ *
8011
+ * // external_id 로 idempotent 동기화 (빌드 스크립트 등)
8012
+ * // 같은 external_id 로 다시 호출하면 기존 문서를 교체한다 (문서 id 유지).
8013
+ * await cb.knowledge.addDocument('kb-id', {
8014
+ * name: '블로그: 제목',
8015
+ * source_type: 'text',
8016
+ * content: '...',
8017
+ * external_id: 'blog/my-post-slug',
8018
+ * })
8010
8019
  * ```
8011
8020
  */
8012
8021
  async addDocument(kbID, data) {
@@ -8015,6 +8024,58 @@ var KnowledgeAPI = class {
8015
8024
  data
8016
8025
  );
8017
8026
  }
8027
+ /**
8028
+ * 문서 수정 (update/upsert)
8029
+ *
8030
+ * 기존 문서의 내용·이름·메타데이터를 교체합니다. **문서 id 는 그대로 유지**되므로
8031
+ * 검색 결과의 `document_id` 를 외부에서 참조(인용·캐시)해도 편집 후 깨지지 않습니다.
8032
+ * 보낸 필드만 교체되며, 내용/이름/메타데이터가 실제로 바뀌면 자동으로 재청킹·재색인됩니다.
8033
+ *
8034
+ * @param kbID - 지식 베이스 ID
8035
+ * @param docID - 문서 ID
8036
+ * @param data - 변경할 필드 (생략한 필드는 변경 없음)
8037
+ * @returns 수정된 문서 정보
8038
+ *
8039
+ * @example
8040
+ * ```typescript
8041
+ * // 내용만 교체 — document_id 는 그대로
8042
+ * const doc = await cb.knowledge.updateDocument('kb-id', 'doc-id', {
8043
+ * content: '갱신된 환불 정책...',
8044
+ * })
8045
+ *
8046
+ * // 이름 + 메타데이터 교체
8047
+ * await cb.knowledge.updateDocument('kb-id', 'doc-id', {
8048
+ * name: 'FAQ (2026)',
8049
+ * metadata: { tag: 'faq', updated: '2026-05' },
8050
+ * })
8051
+ * ```
8052
+ */
8053
+ async updateDocument(kbID, docID, data) {
8054
+ return this.http.put(
8055
+ `/v1/public/knowledge-bases/${kbID}/documents/${docID}`,
8056
+ data
8057
+ );
8058
+ }
8059
+ /**
8060
+ * 파일로 문서 수정 (PDF / DOCX / text 파일 재업로드).
8061
+ *
8062
+ * [`addDocumentFromFile`](#addDocumentFromFile) 의 update 버전. 문서 id 는 유지됩니다.
8063
+ *
8064
+ * @param kbID - Knowledge Base ID
8065
+ * @param docID - 문서 ID
8066
+ * @param file - 새 파일. `File` (DOM) / `Blob` / `{ data, mimeType, name }` (Node) 모두 가능
8067
+ * @param options - name / metadata 오버라이드
8068
+ * @returns 수정된 문서 정보
8069
+ */
8070
+ async updateDocumentFromFile(kbID, docID, file, options) {
8071
+ const { data, mimeType } = await readFileInput(file);
8072
+ return this.updateDocument(kbID, docID, {
8073
+ name: options?.name,
8074
+ file_content: data,
8075
+ mime_type: mimeType,
8076
+ metadata: options?.metadata
8077
+ });
8078
+ }
8018
8079
  /**
8019
8080
  * 파일을 KB 에 추가 (PDF / DOCX / text 파일).
8020
8081
  *
@@ -8066,36 +8127,6 @@ var KnowledgeAPI = class {
8066
8127
  metadata: options?.metadata
8067
8128
  });
8068
8129
  }
8069
- /**
8070
- * 문서 수정 (재색인)
8071
- *
8072
- * `content` / `file_content` / `metadata` 중 하나라도 포함하면 전체 재색인이 일어나며
8073
- * 색인 토큰이 다시 과금됩니다. `name` 만 보내면 재색인 없이 라벨만 변경됩니다.
8074
- * 재색인 시 서버는 status='pending' 으로 즉시 응답하고 색인은 백그라운드로 진행됩니다
8075
- * (addDocument 와 동일) — get/listDocuments 로 'ready' 전환을 확인하세요.
8076
- *
8077
- * @param kbID - 지식 베이스 ID
8078
- * @param docID - 문서 ID
8079
- * @param data - 수정 요청 (모든 필드 옵셔널)
8080
- * @returns 수정된 문서 정보
8081
- *
8082
- * @example
8083
- * ```typescript
8084
- * // 내용 갱신 (전체 재색인 발생)
8085
- * await cb.knowledge.updateDocument('kb-id', 'doc-id', {
8086
- * content: '환불은 구매 후 14일 이내에 가능합니다...'
8087
- * })
8088
- *
8089
- * // 이름만 변경 (재색인 없음)
8090
- * await cb.knowledge.updateDocument('kb-id', 'doc-id', { name: '환불 정책 v2' })
8091
- * ```
8092
- */
8093
- async updateDocument(kbID, docID, data) {
8094
- return this.http.put(
8095
- `/v1/public/knowledge-bases/${kbID}/documents/${docID}`,
8096
- data
8097
- );
8098
- }
8099
8130
  /**
8100
8131
  * 문서 목록 조회
8101
8132
  *
@@ -8189,6 +8220,7 @@ var AIAPI = class {
8189
8220
  * knowledgeBaseId: 'kb-id',
8190
8221
  * }, {
8191
8222
  * onSources: (sources) => console.log('참조:', sources),
8223
+ * onReasoning: (reasoning) => process.stdout.write(reasoning),
8192
8224
  * onToken: (content) => process.stdout.write(content),
8193
8225
  * onDone: () => console.log('\\n완료'),
8194
8226
  * onError: (error) => console.error('에러:', error)
@@ -8247,9 +8279,14 @@ var AIAPI = class {
8247
8279
  });
8248
8280
  continue;
8249
8281
  }
8250
- if (event.type === "heartbeat" || event.type === "searching") {
8282
+ if (event.type === "searching") {
8283
+ if (event.searching) callbacks.onSearching?.(event.searching);
8284
+ continue;
8285
+ }
8286
+ if (event.type === "heartbeat") {
8251
8287
  continue;
8252
8288
  }
8289
+ if (event.reasoning) callbacks.onReasoning?.(event.reasoning);
8253
8290
  if (event.content) callbacks.onToken?.(event.content);
8254
8291
  if (event.done) {
8255
8292
  callbacks.onDone?.();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "connectbase-client",
3
- "version": "3.18.0",
3
+ "version": "3.20.0",
4
4
  "description": "Connect Base JavaScript/TypeScript SDK for browser and Node.js",
5
5
  "repository": {
6
6
  "type": "git",