@teamlearners/clawops 0.39.0 → 0.41.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.
Files changed (34) hide show
  1. package/README.md +60 -0
  2. package/dist/agent/index.cjs +77 -77
  3. package/dist/agent/index.js +4 -4
  4. package/dist/agent/livekit/index.cjs +9 -9
  5. package/dist/agent/livekit/index.js +2 -2
  6. package/dist/{chunk-UOUNMCXE.cjs → chunk-7ZFSDBM6.cjs} +4 -4
  7. package/dist/{chunk-UOUNMCXE.cjs.map → chunk-7ZFSDBM6.cjs.map} +1 -1
  8. package/dist/chunk-H2KILE5I.js +6 -0
  9. package/dist/{chunk-NDFDYCFM.js.map → chunk-H2KILE5I.js.map} +1 -1
  10. package/dist/{chunk-OBGKLTIN.cjs → chunk-MXEZQRIL.cjs} +2 -2
  11. package/dist/chunk-MXEZQRIL.cjs.map +1 -0
  12. package/dist/{chunk-W4XFMJFU.js → chunk-OS5WZMBK.js} +3 -3
  13. package/dist/{chunk-W4XFMJFU.js.map → chunk-OS5WZMBK.js.map} +1 -1
  14. package/dist/{chunk-54GBFYZT.js → chunk-SXXOAPMG.js} +2 -2
  15. package/dist/chunk-SXXOAPMG.js.map +1 -0
  16. package/dist/chunk-WTG2QGQU.cjs +8 -0
  17. package/dist/{chunk-FI2WH67N.cjs.map → chunk-WTG2QGQU.cjs.map} +1 -1
  18. package/dist/{client-B_GblPxW.d.cts → client-DfN4wQXU.d.cts} +228 -27
  19. package/dist/{client-B_GblPxW.d.ts → client-DfN4wQXU.d.ts} +228 -27
  20. package/dist/index.cjs +148 -52
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.js +120 -25
  25. package/dist/index.js.map +1 -1
  26. package/dist/solapi/index.cjs +7 -7
  27. package/dist/solapi/index.d.cts +2 -2
  28. package/dist/solapi/index.d.ts +2 -2
  29. package/dist/solapi/index.js +2 -2
  30. package/package.json +1 -1
  31. package/dist/chunk-54GBFYZT.js.map +0 -1
  32. package/dist/chunk-FI2WH67N.cjs +0 -8
  33. package/dist/chunk-NDFDYCFM.js +0 -6
  34. package/dist/chunk-OBGKLTIN.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var chunkLLPMUDNE_cjs = require('./chunk-LLPMUDNE.cjs');
6
- var chunkOBGKLTIN_cjs = require('./chunk-OBGKLTIN.cjs');
7
- var chunkFI2WH67N_cjs = require('./chunk-FI2WH67N.cjs');
6
+ var chunkMXEZQRIL_cjs = require('./chunk-MXEZQRIL.cjs');
7
+ var chunkWTG2QGQU_cjs = require('./chunk-WTG2QGQU.cjs');
8
8
  var zod = require('zod');
9
9
  var crypto = require('crypto');
10
10
 
@@ -15,14 +15,19 @@ function validateBaseUrl(url) {
15
15
  try {
16
16
  parsed = new URL(url);
17
17
  } catch {
18
- throw new chunkOBGKLTIN_cjs.ClawOpsError(`Invalid base_url: ${url}`);
18
+ throw new chunkMXEZQRIL_cjs.ClawOpsError(`Invalid base_url: ${url}`);
19
19
  }
20
20
  if (parsed.protocol === "https:") return url;
21
21
  if (parsed.protocol === "http:" && LOCALHOST_HOSTS.has(parsed.hostname)) return url;
22
- throw new chunkOBGKLTIN_cjs.ClawOpsError(
22
+ throw new chunkMXEZQRIL_cjs.ClawOpsError(
23
23
  `base_url\uC740 HTTPS\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4 (\uBC1B\uC740 \uAC12: '${url}'). \uB85C\uCEEC \uAC1C\uBC1C \uC2DC\uC5D0\uB294 http://localhost\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`
24
24
  );
25
25
  }
26
+ function serializeBody(body) {
27
+ if (body instanceof FormData) return { payload: body, contentType: null };
28
+ if (!body) return { payload: void 0, contentType: "application/json" };
29
+ return { payload: JSON.stringify(body), contentType: "application/json" };
30
+ }
26
31
  var APIClient = class {
27
32
  _apiKey;
28
33
  _baseURL;
@@ -43,7 +48,7 @@ var APIClient = class {
43
48
  Authorization: `Bearer ${this._apiKey}`,
44
49
  "Content-Type": "application/json",
45
50
  Accept: "application/json",
46
- "User-Agent": `claw-ops-node/${chunkFI2WH67N_cjs.VERSION}`,
51
+ "User-Agent": `claw-ops-node/${chunkWTG2QGQU_cjs.VERSION}`,
47
52
  ...this._defaultHeaders
48
53
  };
49
54
  if (extra) Object.assign(headers, extra);
@@ -51,6 +56,9 @@ var APIClient = class {
51
56
  }
52
57
  async _send(method2, path, options = {}) {
53
58
  const headers = this._buildHeaders(options.extraHeaders);
59
+ const { payload, contentType } = serializeBody(options.body);
60
+ if (contentType === null) delete headers["Content-Type"];
61
+ else headers["Content-Type"] = contentType;
54
62
  const params = new URLSearchParams();
55
63
  const queryObj = { ...options.query, ...options.extraQuery };
56
64
  for (const [k, v] of Object.entries(queryObj)) {
@@ -68,7 +76,7 @@ var APIClient = class {
68
76
  response = await this._fetch(url, {
69
77
  method: method2,
70
78
  headers,
71
- body: options.body ? JSON.stringify(options.body) : void 0,
79
+ body: payload,
72
80
  signal: controller.signal
73
81
  });
74
82
  } catch (err) {
@@ -79,14 +87,14 @@ var APIClient = class {
79
87
  await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
80
88
  continue;
81
89
  }
82
- throw new chunkOBGKLTIN_cjs.APITimeoutError({ method: method2, url });
90
+ throw new chunkMXEZQRIL_cjs.APITimeoutError({ method: method2, url });
83
91
  }
84
92
  if (retriesLeft > 0) {
85
93
  retriesLeft--;
86
94
  await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
87
95
  continue;
88
96
  }
89
- throw new chunkOBGKLTIN_cjs.APIConnectionError({ method: method2, url });
97
+ throw new chunkMXEZQRIL_cjs.APIConnectionError({ method: method2, url });
90
98
  } finally {
91
99
  clearTimeout(timeoutId);
92
100
  }
@@ -102,7 +110,7 @@ var APIClient = class {
102
110
  } catch {
103
111
  body = null;
104
112
  }
105
- throw chunkOBGKLTIN_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
113
+ throw chunkMXEZQRIL_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
106
114
  }
107
115
  }
108
116
  async _request(method2, path, options = {}) {
@@ -113,11 +121,11 @@ var APIClient = class {
113
121
  try {
114
122
  json = await response.json();
115
123
  } catch {
116
- throw new chunkOBGKLTIN_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
124
+ throw new chunkMXEZQRIL_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
117
125
  }
118
126
  const parsed = options.castTo.safeParse(json);
119
127
  if (!parsed.success) {
120
- throw new chunkOBGKLTIN_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
128
+ throw new chunkMXEZQRIL_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
121
129
  }
122
130
  return parsed.data;
123
131
  }
@@ -324,9 +332,22 @@ var AssignmentLinks = class extends APIResource {
324
332
  };
325
333
  var BlockedRecipientSchema = zod.z.object({
326
334
  id: zod.z.string(),
327
- /** 국내 표기로 정규화된 번호 (예 '01012345678'). */
328
- number: zod.z.string(),
329
- channel: zod.z.enum(["call", "message"]),
335
+ /**
336
+ * 수신거부한 상대. **채널과 무관하게 항상 이 칸에 들어갑니다** —
337
+ * `call`·`message` 면 국내 표기로 정규화된 전화번호(예 `'01012345678'`),
338
+ * `email` 이면 소문자로 정규화된 이메일 주소(예 `'kim@example.com'`).
339
+ *
340
+ * 채널이 늘어도 이 칸 하나만 읽으면 됩니다.
341
+ */
342
+ recipient: zod.z.string(),
343
+ /**
344
+ * ⚠️ `email` 이 2026-09-07 에 추가됐습니다. 이 값을 **enum 으로 좁히지 마세요** —
345
+ * 서버가 채널을 늘리면 옛 SDK 가 파싱 단계에서 통째로 실패합니다. 실제로 그 일이
346
+ * 있었습니다: `['call','message']` 로 굳혀 둔 탓에, 이메일 항목이 하나라도 섞이면
347
+ * 목록 조회 전체가 깨졌습니다. 알려진 값은 `BlockedChannel` 로 노출하되 파싱은
348
+ * 열어 둡니다.
349
+ */
350
+ channel: zod.z.string(),
330
351
  /** 지금 차단 중인지. 해제분도 이력으로 조회되므로 이 값으로 구분한다. */
331
352
  active: zod.z.boolean(),
332
353
  source: zod.z.string(),
@@ -344,16 +365,17 @@ var BlockedRecipientSchema = zod.z.object({
344
365
  // src/resources/blocked-recipients.ts
345
366
  var BlockedRecipients = class extends APIResource {
346
367
  /**
347
- * 번호를 수신거부 명단에 등록합니다.
368
+ * 수신거부 명단에 등록합니다.
348
369
  *
349
- * 하이픈·`+82` 표기 모두 허용되며 국내 표기로 정규화되어 저장됩니다.
370
+ * `recipient` 형식은 `channel` 정합니다 `call`·`message` 는 **전화번호**(하이픈·`+82`
371
+ * 표기 모두 허용, 국내 표기로 정규화되어 저장), `email` 은 **이메일 주소**(소문자로 정규화).
350
372
  *
351
- * **멱등입니다** — 이미 차단 중인 (번호, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
373
+ * **멱등입니다** — 이미 차단 중인 (대상, 채널)을 다시 등록해도 에러가 아니라 기존 항목을
352
374
  * 돌려줍니다. 같은 사람이 수신거부를 두 번 요청하는 것은 정상 상황이기 때문입니다.
353
375
  */
354
376
  async create(params, options = {}) {
355
377
  const body = stripNotGiven({
356
- number: params.number,
378
+ recipient: params.recipient,
357
379
  channel: params.channel,
358
380
  source: params.source,
359
381
  sourceRef: params.sourceRef,
@@ -372,7 +394,7 @@ var BlockedRecipients = class extends APIResource {
372
394
  async list(params = {}, options = {}) {
373
395
  const query = stripNotGiven({
374
396
  channel: params.channel,
375
- number: params.number,
397
+ recipient: params.recipient,
376
398
  status: params.status,
377
399
  page: params.page,
378
400
  pageSize: params.pageSize
@@ -418,14 +440,11 @@ var BlockedRecipients = class extends APIResource {
418
440
  */
419
441
  async release(blockId, params = {}, options = {}) {
420
442
  const body = stripNotGiven({ note: params.note });
421
- return this._client._deleteWithResponse(
422
- `${this._basePath}/blocked-recipients/${blockId}`,
423
- {
424
- body: Object.keys(body).length ? body : void 0,
425
- castTo: BlockedRecipientSchema,
426
- ...options
427
- }
428
- );
443
+ return this._client._deleteWithResponse(`${this._basePath}/blocked-recipients/${blockId}`, {
444
+ body: Object.keys(body).length ? body : void 0,
445
+ castTo: BlockedRecipientSchema,
446
+ ...options
447
+ });
429
448
  }
430
449
  };
431
450
  var CallSchema = zod.z.object({
@@ -712,6 +731,16 @@ var KakaoBrandTemplateSchema = zod.z.object({
712
731
  createdAt: zod.z.string(),
713
732
  updatedAt: zod.z.string()
714
733
  }).passthrough();
734
+ var KakaoBrandImageSchema = zod.z.object({
735
+ id: zod.z.string(),
736
+ /** 업로드할 때 지정한 말풍선 유형. 규격이 유형마다 달라 다른 유형엔 재사용할 수 없다. */
737
+ bubbleType: zod.z.string(),
738
+ /** `'main'` | `'sub'`. 서브는 와이드리스트형에만 있다(메인 2:1, 서브 1:1). */
739
+ slot: zod.z.string(),
740
+ /** 업로드한 원본 파일 이름. */
741
+ name: zod.z.string().nullable(),
742
+ createdAt: zod.z.string()
743
+ }).passthrough();
715
744
  var KakaoChannelCategorySchema = zod.z.object({
716
745
  /** 채널 연결의 `categoryCode` 에 그대로 보내는 값. */
717
746
  code: zod.z.string(),
@@ -883,6 +912,63 @@ var KakaoBrandTemplates = class extends APIResource {
883
912
  return page;
884
913
  }
885
914
  };
915
+ var KakaoBrandImages = class extends APIResource {
916
+ get _path() {
917
+ return `${this._basePath}/kakao/brand-images`;
918
+ }
919
+ /**
920
+ * 이미지를 올리고 발송에 쓸 `id` 를 받는다.
921
+ *
922
+ * ```ts
923
+ * const image = await client.kakao.brandImages.upload({
924
+ * file: readFileSync('banner.png'),
925
+ * filename: 'banner.png',
926
+ * bubbleType: 'WIDE',
927
+ * });
928
+ * await client.messages.create({
929
+ * to: '01012345678',
930
+ * from: '07012345678',
931
+ * brand: {
932
+ * channelId,
933
+ * free: { chatBubbleType: 'WIDE', content: '신메뉴가 나왔어요.', imageId: image.id },
934
+ * },
935
+ * });
936
+ * ```
937
+ *
938
+ * ⚠️ `TEXT` 는 이미지 자리가 없어 `400` 이다. 자동완성에 뜨지만 쓸 수 없다.
939
+ *
940
+ * ⚠️ **상한은 5MB 다.** 넘으면 `400`, 10MB 를 넘으면 업로드 검증기가 먼저 끊어 `413` 이고
941
+ * **`code` 가 없다** — 즉 "너무 크다" 가 두 모양으로 온다.
942
+ *
943
+ * @param params.filename 원본 파일 이름. 목록에서 사람이 알아볼 유일한 단서다.
944
+ * @param params.slot 와이드리스트형에서 작은 항목에 쓸 이미지면 `'sub'`. 기본은 `'main'`.
945
+ */
946
+ async upload(params, options = {}) {
947
+ const form = new FormData();
948
+ const blob = params.file instanceof Blob ? params.file : new Blob([params.file]);
949
+ form.append("image", blob, params.filename);
950
+ form.append("bubbleType", params.bubbleType);
951
+ if (params.slot) form.append("slot", params.slot);
952
+ return this._client._post(this._path, {
953
+ body: form,
954
+ castTo: zod.z.object({ id: zod.z.string() }).passthrough(),
955
+ ...options
956
+ });
957
+ }
958
+ /** 올려 둔 이미지 목록. **`id` 를 잃었을 때 되찾는 경로다.** */
959
+ async list(params = {}, options = {}) {
960
+ const query = stripNotGiven({ page: params.page, pageSize: params.pageSize });
961
+ const path = this._path;
962
+ const raw = await this._client._get(path, {
963
+ castTo: PageSchema(KakaoBrandImageSchema),
964
+ query: Object.keys(query).length ? query : void 0,
965
+ ...options
966
+ });
967
+ const page = new Page(raw.data, raw.meta);
968
+ page._setClient(this._client, path, KakaoBrandImageSchema, query);
969
+ return page;
970
+ }
971
+ };
886
972
  var Kakao = class extends APIResource {
887
973
  get channels() {
888
974
  return new KakaoChannels(this._client, this._accountId);
@@ -894,6 +980,10 @@ var Kakao = class extends APIResource {
894
980
  get brandTemplates() {
895
981
  return new KakaoBrandTemplates(this._client, this._accountId);
896
982
  }
983
+ /** 자유형 말풍선에 실을 이미지. 템플릿형은 이미지가 템플릿에 들어 있어 필요 없다. */
984
+ get brandImages() {
985
+ return new KakaoBrandImages(this._client, this._accountId);
986
+ }
897
987
  /**
898
988
  * 채널 연결 시 지정할 업종 카테고리 목록.
899
989
  *
@@ -936,7 +1026,12 @@ var MessageSchema = zod.z.object({
936
1026
  }).passthrough();
937
1027
 
938
1028
  // src/resources/messages.ts
939
- var templateBlock = (p) => p && stripNotGiven({ ChannelId: p.channelId, TemplateId: p.templateId, Variables: p.variables });
1029
+ var sendBlock = (p) => p && stripNotGiven({
1030
+ ChannelId: p.channelId,
1031
+ TemplateId: p.templateId,
1032
+ Variables: p.variables,
1033
+ Free: p.free
1034
+ });
940
1035
  var Messages = class extends APIResource {
941
1036
  /**
942
1037
  * 문자(SMS/LMS/MMS) 또는 카카오 알림톡·브랜드 메시지를 발송합니다.
@@ -975,8 +1070,8 @@ var Messages = class extends APIResource {
975
1070
  MediaUrl: params.mediaUrl,
976
1071
  IdempotencyKey: params.idempotencyKey,
977
1072
  // 중첩 객체는 손으로 조립한다 — stripNotGiven 은 한 겹만 훑는다.
978
- Kakao: templateBlock(params.kakao),
979
- Brand: templateBlock(params.brand),
1073
+ Kakao: sendBlock(params.kakao),
1074
+ Brand: sendBlock(params.brand),
980
1075
  Fallback: params.fallback && stripNotGiven({
981
1076
  Type: params.fallback.type,
982
1077
  Subject: params.fallback.subject,
@@ -1295,7 +1390,7 @@ var AccountContext = class {
1295
1390
  return new Kakao(this._client, this._accountId);
1296
1391
  }
1297
1392
  };
1298
- var WebhookVerificationError = class extends chunkOBGKLTIN_cjs.ClawOpsError {
1393
+ var WebhookVerificationError = class extends chunkMXEZQRIL_cjs.ClawOpsError {
1299
1394
  constructor(message = "Webhook \uC11C\uBA85\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.") {
1300
1395
  super(message);
1301
1396
  this.name = "WebhookVerificationError";
@@ -1325,11 +1420,11 @@ var ClawOps = class extends APIClient {
1325
1420
  constructor(options = {}) {
1326
1421
  let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;
1327
1422
  if (!apiKey) {
1328
- throw new chunkOBGKLTIN_cjs.ClawOpsError("apiKey\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_API_KEY \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
1423
+ throw new chunkMXEZQRIL_cjs.ClawOpsError("apiKey\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_API_KEY \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
1329
1424
  }
1330
1425
  let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;
1331
1426
  if (!accountId) {
1332
- throw new chunkOBGKLTIN_cjs.ClawOpsError("accountId\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_ACCOUNT_ID \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
1427
+ throw new chunkMXEZQRIL_cjs.ClawOpsError("accountId\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_ACCOUNT_ID \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
1333
1428
  }
1334
1429
  const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? chunkLLPMUDNE_cjs.DEFAULT_BASE_URL;
1335
1430
  super({
@@ -1386,79 +1481,79 @@ var client_default_default = ClawOps;
1386
1481
 
1387
1482
  Object.defineProperty(exports, "APIConnectionError", {
1388
1483
  enumerable: true,
1389
- get: function () { return chunkOBGKLTIN_cjs.APIConnectionError; }
1484
+ get: function () { return chunkMXEZQRIL_cjs.APIConnectionError; }
1390
1485
  });
1391
1486
  Object.defineProperty(exports, "APIError", {
1392
1487
  enumerable: true,
1393
- get: function () { return chunkOBGKLTIN_cjs.APIError; }
1488
+ get: function () { return chunkMXEZQRIL_cjs.APIError; }
1394
1489
  });
1395
1490
  Object.defineProperty(exports, "APIResponseValidationError", {
1396
1491
  enumerable: true,
1397
- get: function () { return chunkOBGKLTIN_cjs.APIResponseValidationError; }
1492
+ get: function () { return chunkMXEZQRIL_cjs.APIResponseValidationError; }
1398
1493
  });
1399
1494
  Object.defineProperty(exports, "APIStatusError", {
1400
1495
  enumerable: true,
1401
- get: function () { return chunkOBGKLTIN_cjs.APIStatusError; }
1496
+ get: function () { return chunkMXEZQRIL_cjs.APIStatusError; }
1402
1497
  });
1403
1498
  Object.defineProperty(exports, "APITimeoutError", {
1404
1499
  enumerable: true,
1405
- get: function () { return chunkOBGKLTIN_cjs.APITimeoutError; }
1500
+ get: function () { return chunkMXEZQRIL_cjs.APITimeoutError; }
1406
1501
  });
1407
1502
  Object.defineProperty(exports, "AgentConnectionError", {
1408
1503
  enumerable: true,
1409
- get: function () { return chunkOBGKLTIN_cjs.AgentConnectionError; }
1504
+ get: function () { return chunkMXEZQRIL_cjs.AgentConnectionError; }
1410
1505
  });
1411
1506
  Object.defineProperty(exports, "AgentError", {
1412
1507
  enumerable: true,
1413
- get: function () { return chunkOBGKLTIN_cjs.AgentError; }
1508
+ get: function () { return chunkMXEZQRIL_cjs.AgentError; }
1414
1509
  });
1415
1510
  Object.defineProperty(exports, "AuthenticationError", {
1416
1511
  enumerable: true,
1417
- get: function () { return chunkOBGKLTIN_cjs.AuthenticationError; }
1512
+ get: function () { return chunkMXEZQRIL_cjs.AuthenticationError; }
1418
1513
  });
1419
1514
  Object.defineProperty(exports, "BadRequestError", {
1420
1515
  enumerable: true,
1421
- get: function () { return chunkOBGKLTIN_cjs.BadRequestError; }
1516
+ get: function () { return chunkMXEZQRIL_cjs.BadRequestError; }
1422
1517
  });
1423
1518
  Object.defineProperty(exports, "ClawOpsError", {
1424
1519
  enumerable: true,
1425
- get: function () { return chunkOBGKLTIN_cjs.ClawOpsError; }
1520
+ get: function () { return chunkMXEZQRIL_cjs.ClawOpsError; }
1426
1521
  });
1427
1522
  Object.defineProperty(exports, "ConflictError", {
1428
1523
  enumerable: true,
1429
- get: function () { return chunkOBGKLTIN_cjs.ConflictError; }
1524
+ get: function () { return chunkMXEZQRIL_cjs.ConflictError; }
1430
1525
  });
1431
1526
  Object.defineProperty(exports, "InternalServerError", {
1432
1527
  enumerable: true,
1433
- get: function () { return chunkOBGKLTIN_cjs.InternalServerError; }
1528
+ get: function () { return chunkMXEZQRIL_cjs.InternalServerError; }
1434
1529
  });
1435
1530
  Object.defineProperty(exports, "NotFoundError", {
1436
1531
  enumerable: true,
1437
- get: function () { return chunkOBGKLTIN_cjs.NotFoundError; }
1532
+ get: function () { return chunkMXEZQRIL_cjs.NotFoundError; }
1438
1533
  });
1439
1534
  Object.defineProperty(exports, "PermissionDeniedError", {
1440
1535
  enumerable: true,
1441
- get: function () { return chunkOBGKLTIN_cjs.PermissionDeniedError; }
1536
+ get: function () { return chunkMXEZQRIL_cjs.PermissionDeniedError; }
1442
1537
  });
1443
1538
  Object.defineProperty(exports, "RateLimitError", {
1444
1539
  enumerable: true,
1445
- get: function () { return chunkOBGKLTIN_cjs.RateLimitError; }
1540
+ get: function () { return chunkMXEZQRIL_cjs.RateLimitError; }
1446
1541
  });
1447
1542
  Object.defineProperty(exports, "ServiceUnavailableError", {
1448
1543
  enumerable: true,
1449
- get: function () { return chunkOBGKLTIN_cjs.ServiceUnavailableError; }
1544
+ get: function () { return chunkMXEZQRIL_cjs.ServiceUnavailableError; }
1450
1545
  });
1451
1546
  Object.defineProperty(exports, "SolapiBridgeError", {
1452
1547
  enumerable: true,
1453
- get: function () { return chunkOBGKLTIN_cjs.SolapiBridgeError; }
1548
+ get: function () { return chunkMXEZQRIL_cjs.SolapiBridgeError; }
1454
1549
  });
1455
1550
  Object.defineProperty(exports, "UnprocessableEntityError", {
1456
1551
  enumerable: true,
1457
- get: function () { return chunkOBGKLTIN_cjs.UnprocessableEntityError; }
1552
+ get: function () { return chunkMXEZQRIL_cjs.UnprocessableEntityError; }
1458
1553
  });
1459
1554
  Object.defineProperty(exports, "VERSION", {
1460
1555
  enumerable: true,
1461
- get: function () { return chunkFI2WH67N_cjs.VERSION; }
1556
+ get: function () { return chunkWTG2QGQU_cjs.VERSION; }
1462
1557
  });
1463
1558
  exports.APIClient = APIClient;
1464
1559
  exports.AccountContext = AccountContext;
@@ -1467,6 +1562,7 @@ exports.BlockedRecipients = BlockedRecipients;
1467
1562
  exports.Calls = Calls;
1468
1563
  exports.ClawOps = ClawOps;
1469
1564
  exports.Kakao = Kakao;
1565
+ exports.KakaoBrandImages = KakaoBrandImages;
1470
1566
  exports.KakaoBrandTemplates = KakaoBrandTemplates;
1471
1567
  exports.KakaoChannels = KakaoChannels;
1472
1568
  exports.KakaoTemplates = KakaoTemplates;