@teamlearners/clawops 0.37.0 → 0.39.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 +36 -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-VYGIWHRU.js → chunk-54GBFYZT.js} +2 -2
  7. package/dist/chunk-54GBFYZT.js.map +1 -0
  8. package/dist/chunk-FI2WH67N.cjs +8 -0
  9. package/dist/{chunk-EYI3ULDU.cjs.map → chunk-FI2WH67N.cjs.map} +1 -1
  10. package/dist/chunk-NDFDYCFM.js +6 -0
  11. package/dist/{chunk-CKPVV6SZ.js.map → chunk-NDFDYCFM.js.map} +1 -1
  12. package/dist/{chunk-IYSPOOKH.cjs → chunk-OBGKLTIN.cjs} +2 -2
  13. package/dist/chunk-OBGKLTIN.cjs.map +1 -0
  14. package/dist/{chunk-7TEOYLZI.cjs → chunk-UOUNMCXE.cjs} +4 -4
  15. package/dist/{chunk-7TEOYLZI.cjs.map → chunk-UOUNMCXE.cjs.map} +1 -1
  16. package/dist/{chunk-2OGQSWTW.js → chunk-W4XFMJFU.js} +3 -3
  17. package/dist/{chunk-2OGQSWTW.js.map → chunk-W4XFMJFU.js.map} +1 -1
  18. package/dist/{client-DKsEma11.d.cts → client-B_GblPxW.d.cts} +281 -34
  19. package/dist/{client-DKsEma11.d.ts → client-B_GblPxW.d.ts} +281 -34
  20. package/dist/index.cjs +121 -46
  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 +93 -19
  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-CKPVV6SZ.js +0 -6
  32. package/dist/chunk-EYI3ULDU.cjs +0 -8
  33. package/dist/chunk-IYSPOOKH.cjs.map +0 -1
  34. package/dist/chunk-VYGIWHRU.js.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 chunkIYSPOOKH_cjs = require('./chunk-IYSPOOKH.cjs');
7
- var chunkEYI3ULDU_cjs = require('./chunk-EYI3ULDU.cjs');
6
+ var chunkOBGKLTIN_cjs = require('./chunk-OBGKLTIN.cjs');
7
+ var chunkFI2WH67N_cjs = require('./chunk-FI2WH67N.cjs');
8
8
  var zod = require('zod');
9
9
  var crypto = require('crypto');
10
10
 
@@ -15,11 +15,11 @@ function validateBaseUrl(url) {
15
15
  try {
16
16
  parsed = new URL(url);
17
17
  } catch {
18
- throw new chunkIYSPOOKH_cjs.ClawOpsError(`Invalid base_url: ${url}`);
18
+ throw new chunkOBGKLTIN_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 chunkIYSPOOKH_cjs.ClawOpsError(
22
+ throw new chunkOBGKLTIN_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
  }
@@ -43,7 +43,7 @@ var APIClient = class {
43
43
  Authorization: `Bearer ${this._apiKey}`,
44
44
  "Content-Type": "application/json",
45
45
  Accept: "application/json",
46
- "User-Agent": `claw-ops-node/${chunkEYI3ULDU_cjs.VERSION}`,
46
+ "User-Agent": `claw-ops-node/${chunkFI2WH67N_cjs.VERSION}`,
47
47
  ...this._defaultHeaders
48
48
  };
49
49
  if (extra) Object.assign(headers, extra);
@@ -79,14 +79,14 @@ var APIClient = class {
79
79
  await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
80
80
  continue;
81
81
  }
82
- throw new chunkIYSPOOKH_cjs.APITimeoutError({ method: method2, url });
82
+ throw new chunkOBGKLTIN_cjs.APITimeoutError({ method: method2, url });
83
83
  }
84
84
  if (retriesLeft > 0) {
85
85
  retriesLeft--;
86
86
  await this._sleep(this._retryDelay(this._maxRetries - retriesLeft));
87
87
  continue;
88
88
  }
89
- throw new chunkIYSPOOKH_cjs.APIConnectionError({ method: method2, url });
89
+ throw new chunkOBGKLTIN_cjs.APIConnectionError({ method: method2, url });
90
90
  } finally {
91
91
  clearTimeout(timeoutId);
92
92
  }
@@ -102,7 +102,7 @@ var APIClient = class {
102
102
  } catch {
103
103
  body = null;
104
104
  }
105
- throw chunkIYSPOOKH_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
105
+ throw chunkOBGKLTIN_cjs.makeStatusError(response.status, body, response.headers, { method: method2, url });
106
106
  }
107
107
  }
108
108
  async _request(method2, path, options = {}) {
@@ -113,11 +113,11 @@ var APIClient = class {
113
113
  try {
114
114
  json = await response.json();
115
115
  } catch {
116
- throw new chunkIYSPOOKH_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
116
+ throw new chunkOBGKLTIN_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
117
117
  }
118
118
  const parsed = options.castTo.safeParse(json);
119
119
  if (!parsed.success) {
120
- throw new chunkIYSPOOKH_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
120
+ throw new chunkOBGKLTIN_cjs.APIResponseValidationError({ status: response.status }, { method: method2, url });
121
121
  }
122
122
  return parsed.data;
123
123
  }
@@ -490,7 +490,11 @@ var CallControlResponseSchema = zod.z.object({
490
490
  status: zod.z.string()
491
491
  }).passthrough();
492
492
  var TranscriptSegmentSchema = zod.z.object({
493
- speaker: zod.z.enum(["CUSTOMER", "AGENT"]),
493
+ /**
494
+ * ⛔ **닫힌 enum 으로 두지 않는다.** 서버는 이미 `speaker_0` 을 보내고 있고, 세그먼트
495
+ * 하나가 어긋나면 `segments` 배열 때문에 **전사 응답 전체**가 실패한다.
496
+ */
497
+ speaker: zod.z.string(),
494
498
  start: zod.z.number(),
495
499
  end: zod.z.number(),
496
500
  text: zod.z.string()
@@ -501,7 +505,15 @@ var TranscriptStatusSchema = zod.z.object({
501
505
  segmentCount: zod.z.number().optional(),
502
506
  segments: zod.z.array(TranscriptSegmentSchema).optional(),
503
507
  startedAt: zod.z.string().optional(),
504
- stage: zod.z.enum(["download", "runtime", "trigger"]).nullable().optional(),
508
+ /**
509
+ * ⛔ **실패 단계는 서버 코드가 만든다** — 전사 파이프라인이 `download`·`runtime`·
510
+ * `transcription`·`recover` 를 내보내고, 영구 실패는 예외 객체의 속성을 그대로 싣는다.
511
+ * 어휘가 열려 있어 스펙의 enum 조차 스냅샷일 뿐이다.
512
+ *
513
+ * ⚠️ 여기가 닫혀 있으면 **전사가 실패했을 때 그 이유를 물으면 던진다** — 고객이 가장
514
+ * 답을 필요로 하는 순간이다.
515
+ */
516
+ stage: zod.z.string().nullable().optional(),
505
517
  error: zod.z.string().nullable().optional()
506
518
  }).passthrough();
507
519
  var TranscriptRequestAcceptedSchema = zod.z.object({
@@ -679,6 +691,27 @@ var KakaoTemplateSchema = zod.z.object({
679
691
  createdAt: zod.z.string(),
680
692
  updatedAt: zod.z.string()
681
693
  }).passthrough();
694
+ var KakaoBrandTemplateSchema = zod.z.object({
695
+ /** ClawOps 템플릿 리소스 ID. 발송의 `brand.templateId` 에 이 값을 쓴다. */
696
+ id: zod.z.string(),
697
+ /** ClawOps 채널 리소스 ID. 발송의 `brand.channelId` 와 같은 값이다. */
698
+ channelId: zod.z.string(),
699
+ name: zod.z.string(),
700
+ chatBubbleType: zod.z.string(),
701
+ /**
702
+ * 말풍선 본문.
703
+ *
704
+ * ⚠️ **유형에 따라 `null` 이다.** 본문이 담기는 자리가 유형마다 달라 `TEXT`·`IMAGE`·
705
+ * `WIDE` 에만 채워진다 — 나머지는 헤더·카드·상품명이 그 자리를 대신한다.
706
+ */
707
+ content: zod.z.string().nullable(),
708
+ /** 와이드리스트형의 머리말. 다른 유형에서는 `null`. */
709
+ header: zod.z.string().nullable(),
710
+ /** 발송 시 `brand.variables` 에 모두 채워야 하는 변수 이름. */
711
+ variables: zod.z.array(zod.z.string()),
712
+ createdAt: zod.z.string(),
713
+ updatedAt: zod.z.string()
714
+ }).passthrough();
682
715
  var KakaoChannelCategorySchema = zod.z.object({
683
716
  /** 채널 연결의 `categoryCode` 에 그대로 보내는 값. */
684
717
  code: zod.z.string(),
@@ -824,6 +857,32 @@ var KakaoTemplates = class extends APIResource {
824
857
  return page;
825
858
  }
826
859
  };
860
+ var KakaoBrandTemplates = class extends APIResource {
861
+ /**
862
+ * 한 채널의 브랜드 메시지 템플릿 목록.
863
+ *
864
+ * 응답의 `data[].id` 를 발송의 `brand.templateId` 로, `data[].channelId` 를
865
+ * `brand.channelId` 로 쓴다. `variables` 의 모든 항목을 `brand.variables` 에 채워야 한다.
866
+ *
867
+ * ⭐ **알림톡과 달리 검수가 없어** `sendable` 같은 칸이 없다 — 목록에 있으면 곧 보낼 수 있다.
868
+ */
869
+ async list(params, options = {}) {
870
+ const query = stripNotGiven({
871
+ channelId: params.channelId,
872
+ page: params.page,
873
+ pageSize: params.pageSize
874
+ });
875
+ const path = `${this._basePath}/kakao/brand-templates`;
876
+ const raw = await this._client._get(path, {
877
+ castTo: PageSchema(KakaoBrandTemplateSchema),
878
+ query: Object.keys(query).length ? query : void 0,
879
+ ...options
880
+ });
881
+ const page = new Page(raw.data, raw.meta);
882
+ page._setClient(this._client, path, KakaoBrandTemplateSchema, query);
883
+ return page;
884
+ }
885
+ };
827
886
  var Kakao = class extends APIResource {
828
887
  get channels() {
829
888
  return new KakaoChannels(this._client, this._accountId);
@@ -831,6 +890,10 @@ var Kakao = class extends APIResource {
831
890
  get templates() {
832
891
  return new KakaoTemplates(this._client, this._accountId);
833
892
  }
893
+ /** 브랜드 메시지 템플릿. 알림톡 템플릿(`templates`)과 **다른 표**다. */
894
+ get brandTemplates() {
895
+ return new KakaoBrandTemplates(this._client, this._accountId);
896
+ }
834
897
  /**
835
898
  * 채널 연결 시 지정할 업종 카테고리 목록.
836
899
  *
@@ -849,12 +912,17 @@ var Kakao = class extends APIResource {
849
912
  };
850
913
  var MessageSchema = zod.z.object({
851
914
  messageId: zod.z.string(),
852
- status: zod.z.enum(["queued", "sending", "sent", "failed", "received"]),
915
+ status: zod.z.string(),
853
916
  /**
854
- * `'ata'` 는 카카오 알림톡이다. `body` 에는 템플릿에 변수를 치환한 결과가 담기고,
855
- * 버튼·아이템 리스트·강조 문구는 템플릿에 검수된 대로 발송되어 이 값에는 담기지 않는다.
917
+ * `'ata'`(알림톡)·`'bms'`(브랜드 메시지)카카오로 나간다. `body` 에는 템플릿에 변수를
918
+ * 치환한 결과가 담기고, 버튼·아이템 리스트·강조 문구는 템플릿에 담긴 대로 발송되어
919
+ * 이 값에는 담기지 않는다.
920
+ *
921
+ * ⛔ **닫힌 enum 으로 두지 않는다.** 어휘는 서버가 소유하므로, 유형이 하나 늘면 닫힌
922
+ * enum 은 **목록을 통째로** 실패시킨다(`list()` 는 페이지를 한 번에 파싱한다). 실제로
923
+ * 두 번 그렇게 터졌다 — `'ata'` 가 나왔을 때, 그리고 `'bms'` 가 나왔을 때.
856
924
  */
857
- type: zod.z.enum(["sms", "lms", "mms", "rcs", "ata"]),
925
+ type: zod.z.string(),
858
926
  to: zod.z.string(),
859
927
  from: zod.z.string(),
860
928
  body: zod.z.string().nullable().optional(),
@@ -868,12 +936,13 @@ var MessageSchema = zod.z.object({
868
936
  }).passthrough();
869
937
 
870
938
  // src/resources/messages.ts
939
+ var templateBlock = (p) => p && stripNotGiven({ ChannelId: p.channelId, TemplateId: p.templateId, Variables: p.variables });
871
940
  var Messages = class extends APIResource {
872
941
  /**
873
- * 문자(SMS/LMS/MMS) 또는 카카오 알림톡을 발송합니다.
942
+ * 문자(SMS/LMS/MMS) 또는 카카오 알림톡·브랜드 메시지를 발송합니다.
874
943
  *
875
- * 둘은 배타적입니다 — `kakao` 를 실으면 알림톡이고, 이때 `body`·`subject`·`mediaUrl`
876
- * 실을 수 없습니다(본문은 검수된 템플릿이 정합니다).
944
+ * 셋은 배타적입니다 — `kakao` 를 실으면 알림톡, `brand` 를 실으면 브랜드 메시지이고,
945
+ * 이때 `body`·`subject`·`mediaUrl` 은 실을 수 없습니다(본문은 템플릿이 정합니다).
877
946
  *
878
947
  * ```ts
879
948
  * // 문자
@@ -886,6 +955,14 @@ var Messages = class extends APIResource {
886
955
  * kakao: { channelId, templateId, variables: { 고객명: '홍길동' } },
887
956
  * fallback: { body: '주문이 접수되었습니다.' },
888
957
  * });
958
+ *
959
+ * // 브랜드 메시지 — 채널을 추가한 친구에게 나가는 광고성 메시지
960
+ * // ⚠️ 야간 제한과 대체발송 없음 — 제약은 `BrandMessageCreateParams` 참고.
961
+ * await client.messages.create({
962
+ * to: '010…',
963
+ * from: '070…',
964
+ * brand: { channelId, templateId, variables: { 고객명: '홍길동' } },
965
+ * });
889
966
  * ```
890
967
  */
891
968
  async create(params, options = {}) {
@@ -898,11 +975,8 @@ var Messages = class extends APIResource {
898
975
  MediaUrl: params.mediaUrl,
899
976
  IdempotencyKey: params.idempotencyKey,
900
977
  // 중첩 객체는 손으로 조립한다 — stripNotGiven 은 한 겹만 훑는다.
901
- Kakao: params.kakao && stripNotGiven({
902
- ChannelId: params.kakao.channelId,
903
- TemplateId: params.kakao.templateId,
904
- Variables: params.kakao.variables
905
- }),
978
+ Kakao: templateBlock(params.kakao),
979
+ Brand: templateBlock(params.brand),
906
980
  Fallback: params.fallback && stripNotGiven({
907
981
  Type: params.fallback.type,
908
982
  Subject: params.fallback.subject,
@@ -1221,7 +1295,7 @@ var AccountContext = class {
1221
1295
  return new Kakao(this._client, this._accountId);
1222
1296
  }
1223
1297
  };
1224
- var WebhookVerificationError = class extends chunkIYSPOOKH_cjs.ClawOpsError {
1298
+ var WebhookVerificationError = class extends chunkOBGKLTIN_cjs.ClawOpsError {
1225
1299
  constructor(message = "Webhook \uC11C\uBA85\uC774 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.") {
1226
1300
  super(message);
1227
1301
  this.name = "WebhookVerificationError";
@@ -1251,11 +1325,11 @@ var ClawOps = class extends APIClient {
1251
1325
  constructor(options = {}) {
1252
1326
  let apiKey = options.apiKey ?? process.env.CLAWOPS_API_KEY;
1253
1327
  if (!apiKey) {
1254
- throw new chunkIYSPOOKH_cjs.ClawOpsError("apiKey\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_API_KEY \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
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.");
1255
1329
  }
1256
1330
  let accountId = options.accountId ?? process.env.CLAWOPS_ACCOUNT_ID;
1257
1331
  if (!accountId) {
1258
- throw new chunkIYSPOOKH_cjs.ClawOpsError("accountId\uB97C \uC9C0\uC815\uD558\uAC70\uB098 CLAWOPS_ACCOUNT_ID \uD658\uACBD\uBCC0\uC218\uB97C \uC124\uC815\uD558\uC138\uC694.");
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.");
1259
1333
  }
1260
1334
  const baseURL = options.baseURL ?? process.env.CLAWOPS_BASE_URL ?? chunkLLPMUDNE_cjs.DEFAULT_BASE_URL;
1261
1335
  super({
@@ -1312,79 +1386,79 @@ var client_default_default = ClawOps;
1312
1386
 
1313
1387
  Object.defineProperty(exports, "APIConnectionError", {
1314
1388
  enumerable: true,
1315
- get: function () { return chunkIYSPOOKH_cjs.APIConnectionError; }
1389
+ get: function () { return chunkOBGKLTIN_cjs.APIConnectionError; }
1316
1390
  });
1317
1391
  Object.defineProperty(exports, "APIError", {
1318
1392
  enumerable: true,
1319
- get: function () { return chunkIYSPOOKH_cjs.APIError; }
1393
+ get: function () { return chunkOBGKLTIN_cjs.APIError; }
1320
1394
  });
1321
1395
  Object.defineProperty(exports, "APIResponseValidationError", {
1322
1396
  enumerable: true,
1323
- get: function () { return chunkIYSPOOKH_cjs.APIResponseValidationError; }
1397
+ get: function () { return chunkOBGKLTIN_cjs.APIResponseValidationError; }
1324
1398
  });
1325
1399
  Object.defineProperty(exports, "APIStatusError", {
1326
1400
  enumerable: true,
1327
- get: function () { return chunkIYSPOOKH_cjs.APIStatusError; }
1401
+ get: function () { return chunkOBGKLTIN_cjs.APIStatusError; }
1328
1402
  });
1329
1403
  Object.defineProperty(exports, "APITimeoutError", {
1330
1404
  enumerable: true,
1331
- get: function () { return chunkIYSPOOKH_cjs.APITimeoutError; }
1405
+ get: function () { return chunkOBGKLTIN_cjs.APITimeoutError; }
1332
1406
  });
1333
1407
  Object.defineProperty(exports, "AgentConnectionError", {
1334
1408
  enumerable: true,
1335
- get: function () { return chunkIYSPOOKH_cjs.AgentConnectionError; }
1409
+ get: function () { return chunkOBGKLTIN_cjs.AgentConnectionError; }
1336
1410
  });
1337
1411
  Object.defineProperty(exports, "AgentError", {
1338
1412
  enumerable: true,
1339
- get: function () { return chunkIYSPOOKH_cjs.AgentError; }
1413
+ get: function () { return chunkOBGKLTIN_cjs.AgentError; }
1340
1414
  });
1341
1415
  Object.defineProperty(exports, "AuthenticationError", {
1342
1416
  enumerable: true,
1343
- get: function () { return chunkIYSPOOKH_cjs.AuthenticationError; }
1417
+ get: function () { return chunkOBGKLTIN_cjs.AuthenticationError; }
1344
1418
  });
1345
1419
  Object.defineProperty(exports, "BadRequestError", {
1346
1420
  enumerable: true,
1347
- get: function () { return chunkIYSPOOKH_cjs.BadRequestError; }
1421
+ get: function () { return chunkOBGKLTIN_cjs.BadRequestError; }
1348
1422
  });
1349
1423
  Object.defineProperty(exports, "ClawOpsError", {
1350
1424
  enumerable: true,
1351
- get: function () { return chunkIYSPOOKH_cjs.ClawOpsError; }
1425
+ get: function () { return chunkOBGKLTIN_cjs.ClawOpsError; }
1352
1426
  });
1353
1427
  Object.defineProperty(exports, "ConflictError", {
1354
1428
  enumerable: true,
1355
- get: function () { return chunkIYSPOOKH_cjs.ConflictError; }
1429
+ get: function () { return chunkOBGKLTIN_cjs.ConflictError; }
1356
1430
  });
1357
1431
  Object.defineProperty(exports, "InternalServerError", {
1358
1432
  enumerable: true,
1359
- get: function () { return chunkIYSPOOKH_cjs.InternalServerError; }
1433
+ get: function () { return chunkOBGKLTIN_cjs.InternalServerError; }
1360
1434
  });
1361
1435
  Object.defineProperty(exports, "NotFoundError", {
1362
1436
  enumerable: true,
1363
- get: function () { return chunkIYSPOOKH_cjs.NotFoundError; }
1437
+ get: function () { return chunkOBGKLTIN_cjs.NotFoundError; }
1364
1438
  });
1365
1439
  Object.defineProperty(exports, "PermissionDeniedError", {
1366
1440
  enumerable: true,
1367
- get: function () { return chunkIYSPOOKH_cjs.PermissionDeniedError; }
1441
+ get: function () { return chunkOBGKLTIN_cjs.PermissionDeniedError; }
1368
1442
  });
1369
1443
  Object.defineProperty(exports, "RateLimitError", {
1370
1444
  enumerable: true,
1371
- get: function () { return chunkIYSPOOKH_cjs.RateLimitError; }
1445
+ get: function () { return chunkOBGKLTIN_cjs.RateLimitError; }
1372
1446
  });
1373
1447
  Object.defineProperty(exports, "ServiceUnavailableError", {
1374
1448
  enumerable: true,
1375
- get: function () { return chunkIYSPOOKH_cjs.ServiceUnavailableError; }
1449
+ get: function () { return chunkOBGKLTIN_cjs.ServiceUnavailableError; }
1376
1450
  });
1377
1451
  Object.defineProperty(exports, "SolapiBridgeError", {
1378
1452
  enumerable: true,
1379
- get: function () { return chunkIYSPOOKH_cjs.SolapiBridgeError; }
1453
+ get: function () { return chunkOBGKLTIN_cjs.SolapiBridgeError; }
1380
1454
  });
1381
1455
  Object.defineProperty(exports, "UnprocessableEntityError", {
1382
1456
  enumerable: true,
1383
- get: function () { return chunkIYSPOOKH_cjs.UnprocessableEntityError; }
1457
+ get: function () { return chunkOBGKLTIN_cjs.UnprocessableEntityError; }
1384
1458
  });
1385
1459
  Object.defineProperty(exports, "VERSION", {
1386
1460
  enumerable: true,
1387
- get: function () { return chunkEYI3ULDU_cjs.VERSION; }
1461
+ get: function () { return chunkFI2WH67N_cjs.VERSION; }
1388
1462
  });
1389
1463
  exports.APIClient = APIClient;
1390
1464
  exports.AccountContext = AccountContext;
@@ -1393,6 +1467,7 @@ exports.BlockedRecipients = BlockedRecipients;
1393
1467
  exports.Calls = Calls;
1394
1468
  exports.ClawOps = ClawOps;
1395
1469
  exports.Kakao = Kakao;
1470
+ exports.KakaoBrandTemplates = KakaoBrandTemplates;
1396
1471
  exports.KakaoChannels = KakaoChannels;
1397
1472
  exports.KakaoTemplates = KakaoTemplates;
1398
1473
  exports.Messages = Messages;