@opencxh/domain 1.152.0 → 1.154.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.js CHANGED
@@ -1,4 +1,4 @@
1
- const wt = 10, Rt = 10, Dt = 10, Pt = 5, ge = /* @__PURE__ */ new Set([
1
+ const Kt = 10, Bt = 10, Gt = 10, Ft = 5, ye = /* @__PURE__ */ new Set([
2
2
  "header",
3
3
  "section",
4
4
  "context",
@@ -8,68 +8,68 @@ const wt = 10, Rt = 10, Dt = 10, Pt = 5, ge = /* @__PURE__ */ new Set([
8
8
  "actions",
9
9
  "attachments"
10
10
  ]);
11
- function I(e) {
11
+ function S(e) {
12
12
  if (typeof e == "string") return e.length > 0;
13
13
  if (!e || typeof e != "object") return !1;
14
14
  const t = e;
15
15
  return typeof t.key == "string" || typeof t.value == "string";
16
16
  }
17
- function Ut(e, t = () => {
17
+ function Ht(e, t = () => {
18
18
  }) {
19
19
  if (!Array.isArray(e)) return [];
20
20
  const n = [];
21
- for (const r of e) {
21
+ for (const i of e) {
22
22
  if (n.length >= 10) {
23
23
  t("more than 10 blocks; the rest was dropped");
24
24
  break;
25
25
  }
26
- if (!r || typeof r != "object") continue;
27
- const i = r;
28
- if (!ge.has(i.type)) {
29
- t("unknown block type " + String(i.type));
26
+ if (!i || typeof i != "object") continue;
27
+ const r = i;
28
+ if (!ye.has(r.type)) {
29
+ t("unknown block type " + String(r.type));
30
30
  continue;
31
31
  }
32
- switch (i.type) {
32
+ switch (r.type) {
33
33
  case "header":
34
- if (!I(i.text)) {
34
+ if (!S(r.text)) {
35
35
  t("a header without text");
36
36
  continue;
37
37
  }
38
38
  break;
39
39
  case "context":
40
- if (!I(i.text)) {
40
+ if (!S(r.text)) {
41
41
  t("a context block without text");
42
42
  continue;
43
43
  }
44
44
  break;
45
45
  case "image":
46
- if (!i.url || !i.alt) {
46
+ if (!r.url || !r.alt) {
47
47
  t("an image without url or alt");
48
48
  continue;
49
49
  }
50
50
  break;
51
51
  case "section":
52
- Array.isArray(i.fields) && i.fields.length > 10 && (t("more than 10 fields in a section"), i.fields = i.fields.slice(0, 10));
52
+ Array.isArray(r.fields) && r.fields.length > 10 && (t("more than 10 fields in a section"), r.fields = r.fields.slice(0, 10));
53
53
  break;
54
54
  case "list":
55
- if (!Array.isArray(i.items) || i.items.length === 0) {
55
+ if (!Array.isArray(r.items) || r.items.length === 0) {
56
56
  t("a list without items");
57
57
  continue;
58
58
  }
59
- i.items.length > 10 && (t("more than 10 list items"), i.items = i.items.slice(0, 10));
59
+ r.items.length > 10 && (t("more than 10 list items"), r.items = r.items.slice(0, 10));
60
60
  break;
61
61
  case "actions": {
62
- const a = Array.isArray(i.elements) ? i.elements : [], o = a.filter((s) => s && s.action_id && s.invoke && I(s.text));
62
+ const a = Array.isArray(r.elements) ? r.elements : [], o = a.filter((s) => s && s.action_id && s.invoke && S(s.text));
63
63
  if (o.length !== a.length && t("an action without action_id, invoke or text"), o.length === 0) continue;
64
- o.length > 5 && t("more than 5 actions"), i.elements = o.slice(0, 5);
64
+ o.length > 5 && t("more than 5 actions"), r.elements = o.slice(0, 5);
65
65
  break;
66
66
  }
67
67
  }
68
- n.push(i);
68
+ n.push(r);
69
69
  }
70
70
  return n;
71
71
  }
72
- function he(e) {
72
+ function be(e) {
73
73
  return e.replace(/<style[\s\S]*?<\/style>/gi, " ").replace(/<script[\s\S]*?<\/script>/gi, " ").replace(/<[^>]+>/g, " ").replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/\s+/g, " ").trim();
74
74
  }
75
75
  function b(e) {
@@ -77,16 +77,16 @@ function b(e) {
77
77
  const t = Math.floor(e / 60), n = Math.floor(e % 60);
78
78
  return `${t}:${n.toString().padStart(2, "0")}`;
79
79
  }
80
- function L(e) {
80
+ function O(e) {
81
81
  return e ? ` — ${Math.floor(e / 60)}m ${e % 60}s` : "";
82
82
  }
83
- function S(e) {
83
+ function I(e) {
84
84
  return e?.split("@")?.[0] || e || "";
85
85
  }
86
- function A(e) {
86
+ function E(e) {
87
87
  return e.map((t) => t.name).join(", ");
88
88
  }
89
- function O(e) {
89
+ function L(e) {
90
90
  return e === "meeting" ? "Meeting" : e === "video" ? "Video call" : "Audio call";
91
91
  }
92
92
  const m = {
@@ -96,7 +96,7 @@ const m = {
96
96
  channelKind: "voice",
97
97
  icon: "phone",
98
98
  snippet: () => "Gesprek gestart",
99
- timeline: (e) => e.direction === "inbound" ? `Inbound call started — ${S(e.payload.from)}` : `Outbound call started — ${S(e.payload.to)}`
99
+ timeline: (e) => e.direction === "inbound" ? `Inbound call started — ${I(e.payload.from)}` : `Outbound call started — ${I(e.payload.to)}`
100
100
  },
101
101
  VOICE_CALL_ANSWERED: {
102
102
  shape: "event",
@@ -123,14 +123,14 @@ const m = {
123
123
  channelKind: "voice",
124
124
  icon: "phone",
125
125
  snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${b(e.payload.duration)})` : ""}`,
126
- timeline: (e) => `Call ended${L(e.payload.duration)}`
126
+ timeline: (e) => `Call ended${O(e.payload.duration)}`
127
127
  },
128
128
  VOICE_CALL_MISSED: {
129
129
  shape: "event",
130
130
  channelKind: "voice",
131
131
  icon: "phone",
132
132
  snippet: () => "Gemiste oproep",
133
- timeline: (e) => `Missed call — ${S(e.payload.from)}`
133
+ timeline: (e) => `Missed call — ${I(e.payload.from)}`
134
134
  },
135
135
  VOICE_CALL_FAILED: {
136
136
  shape: "event",
@@ -243,9 +243,9 @@ const m = {
243
243
  shape: "event",
244
244
  channelKind: "chat",
245
245
  icon: "message-circle",
246
- snippet: (e) => `${A(e.payload.members)} toegevoegd`,
246
+ snippet: (e) => `${E(e.payload.members)} toegevoegd`,
247
247
  timeline: (e) => {
248
- const t = A(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · added by ${e.payload.initiator.name}` : "";
248
+ const t = E(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · added by ${e.payload.initiator.name}` : "";
249
249
  return `${t} joined the chat${n}`;
250
250
  }
251
251
  },
@@ -253,9 +253,9 @@ const m = {
253
253
  shape: "event",
254
254
  channelKind: "chat",
255
255
  icon: "message-circle",
256
- snippet: (e) => `${A(e.payload.members)} verlaten`,
256
+ snippet: (e) => `${E(e.payload.members)} verlaten`,
257
257
  timeline: (e) => {
258
- const t = A(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · removed by ${e.payload.initiator.name}` : "";
258
+ const t = E(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · removed by ${e.payload.initiator.name}` : "";
259
259
  return `${t} left the chat${n}`;
260
260
  }
261
261
  },
@@ -271,7 +271,7 @@ const m = {
271
271
  channelKind: "chat",
272
272
  icon: "message-circle",
273
273
  snippet: () => "Gesprek gestart",
274
- timeline: (e) => `${O(e.payload.callType)} started${e.payload.initiator ? ` by ${e.payload.initiator.name}` : ""}`,
274
+ timeline: (e) => `${L(e.payload.callType)} started${e.payload.initiator ? ` by ${e.payload.initiator.name}` : ""}`,
275
275
  joinUrl: (e) => e.payload.joinUrl
276
276
  },
277
277
  CHAT_CALL_ENDED: {
@@ -279,7 +279,7 @@ const m = {
279
279
  channelKind: "chat",
280
280
  icon: "message-circle",
281
281
  snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${b(e.payload.duration)})` : ""}`,
282
- timeline: (e) => `${O(e.payload.callType)} ended${L(e.payload.duration)}`,
282
+ timeline: (e) => `${L(e.payload.callType)} ended${O(e.payload.duration)}`,
283
283
  joinUrl: (e) => e.payload.joinUrl
284
284
  },
285
285
  CHAT_EVENT: {
@@ -405,74 +405,74 @@ const m = {
405
405
  }
406
406
  };
407
407
  function $(e) {
408
- const t = e.payload, n = t.bodySnippet?.trim() || he(t.body ?? "");
408
+ const t = e.payload, n = t.bodySnippet?.trim() || be(t.body ?? "");
409
409
  return t.subject ? `${t.subject} — ${n}` : n;
410
410
  }
411
411
  function f(e) {
412
412
  return m[e];
413
413
  }
414
- function Kt(e) {
414
+ function Vt(e) {
415
415
  return f(e)?.icon ?? "circle";
416
416
  }
417
- function Bt(e) {
417
+ function jt(e) {
418
418
  return f(e)?.channelKind;
419
419
  }
420
- function Gt(e) {
420
+ function Xt(e) {
421
421
  const t = f(e)?.shape;
422
422
  return t === "message" || t === "note";
423
423
  }
424
- function Ft(e) {
424
+ function Wt(e) {
425
425
  return f(e)?.replyable === !0;
426
426
  }
427
- function Ht(e) {
427
+ function Yt(e) {
428
428
  return f(e)?.carriesText === !0;
429
429
  }
430
- function jt(e) {
430
+ function zt(e) {
431
431
  return f(e)?.countsAs;
432
432
  }
433
- function Vt(e) {
433
+ function qt(e) {
434
434
  return f(e)?.playbookAuthored === !0;
435
435
  }
436
- function ye(e) {
436
+ function Ee(e) {
437
437
  const t = f(e.type)?.snippet;
438
438
  return t ? t(e) : "";
439
439
  }
440
- function Xt(e, t) {
440
+ function Jt(e, t) {
441
441
  const n = f(e.type)?.timeline;
442
442
  return n ? n(e, t) : e.type.replace(/_/g, " ").toLowerCase();
443
443
  }
444
- function Wt(e) {
444
+ function Qt(e) {
445
445
  const t = f(e.type)?.joinUrl;
446
446
  return t ? t(e) : void 0;
447
447
  }
448
448
  function N(e, t) {
449
449
  let n = e;
450
- for (const r of t.split(".")) {
450
+ for (const i of t.split(".")) {
451
451
  if (n == null || typeof n != "object") return "";
452
- n = n[r];
452
+ n = n[i];
453
453
  }
454
454
  return n == null ? "" : typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
455
455
  }
456
- function k(e, t, n) {
456
+ function v(e, t, n) {
457
457
  if (e === void 0) return null;
458
458
  if (typeof e == "string") return e || null;
459
459
  if ("value" in e)
460
460
  return N(t, e.value) || null;
461
- const r = {};
461
+ const i = {};
462
462
  for (const [a, o] of Object.entries(e.params ?? {}))
463
- r[a] = N(t, o);
464
- const i = n(e.key, r);
465
- return i === e.key ? null : i;
463
+ i[a] = N(t, o);
464
+ const r = n(e.key, i);
465
+ return r === e.key ? null : r;
466
466
  }
467
- function be(e, t) {
467
+ function Ae(e, t) {
468
468
  if (!e || typeof e == "string" || "value" in e) return null;
469
469
  const n = {};
470
- for (const [r, i] of Object.entries(e.params ?? {}))
471
- n[r] = N(t, i);
470
+ for (const [i, r] of Object.entries(e.params ?? {}))
471
+ n[i] = N(t, r);
472
472
  return { key: e.key, params: n };
473
473
  }
474
- const Ae = (e) => e;
475
- function w(e) {
474
+ const _e = (e) => e;
475
+ function R(e) {
476
476
  const t = m[e];
477
477
  return {
478
478
  type: e,
@@ -488,7 +488,7 @@ function w(e) {
488
488
  displayNameKey: t.displayNameKey
489
489
  };
490
490
  }
491
- function R(e) {
491
+ function w(e) {
492
492
  return {
493
493
  type: e.type,
494
494
  shape: e.shape,
@@ -503,21 +503,21 @@ function R(e) {
503
503
  displayNameKey: e.displayNameKey
504
504
  };
505
505
  }
506
- class Ee {
507
- constructor(t = [], n = Ae) {
506
+ class Te {
507
+ constructor(t = [], n = _e) {
508
508
  this.translate = n;
509
- for (const r of t)
510
- r?.type && (r.type in m || this.declared.has(r.type) || this.declared.set(r.type, r));
509
+ for (const i of t)
510
+ i?.type && (i.type in m || this.declared.has(i.type) || this.declared.set(i.type, i));
511
511
  }
512
512
  declared = /* @__PURE__ */ new Map();
513
513
  get(t) {
514
- if (t in m) return w(t);
514
+ if (t in m) return R(t);
515
515
  const n = this.declared.get(t);
516
- return n ? R(n) : void 0;
516
+ return n ? w(n) : void 0;
517
517
  }
518
518
  /** Alles wat als trigger aangeboden mag worden, ingebouwd en gedeclareerd. */
519
519
  triggerable() {
520
- const t = Object.keys(m).filter((r) => m[r].triggerable).map(w), n = [...this.declared.values()].map(R).filter((r) => r.triggerable);
520
+ const t = Object.keys(m).filter((i) => m[i].triggerable).map(R), n = [...this.declared.values()].map(w).filter((i) => i.triggerable);
521
521
  return [...t, ...n];
522
522
  }
523
523
  /**
@@ -526,17 +526,17 @@ class Ee {
526
526
  * typenaam — dezelfde regel die de feed altijd al toonde voor onbekende types.
527
527
  */
528
528
  timelineText(t, n) {
529
- const r = m[t.type];
530
- if (r?.timeline) return r.timeline(t, n);
531
- const i = this.declared.get(t.type);
532
- return k(i?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
529
+ const i = m[t.type];
530
+ if (i?.timeline) return i.timeline(t, n);
531
+ const r = this.declared.get(t.type);
532
+ return v(r?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
533
533
  }
534
534
  /** De regel voor de inboxlijst. Leeg wanneer het type niets te tonen heeft. */
535
535
  snippet(t) {
536
536
  const n = m[t.type];
537
537
  if (n?.snippet) return n.snippet(t);
538
- const r = this.declared.get(t.type);
539
- return k(r?.text, t, this.translate) ?? "";
538
+ const i = this.declared.get(t.type);
539
+ return v(i?.text, t, this.translate) ?? "";
540
540
  }
541
541
  /** De descriptor zoals hij binnenkwam; nodig om `text` als sleutel op te slaan. */
542
542
  descriptor(t) {
@@ -552,33 +552,33 @@ class Ee {
552
552
  return this.translate;
553
553
  }
554
554
  }
555
- const Yt = new Ee(), D = 140;
556
- function _e(e) {
555
+ const Zt = new Te(), D = 140;
556
+ function Se(e) {
557
557
  const t = e.trim();
558
558
  return t.length <= D ? t : t.slice(0, D - 1).trimEnd() + "…";
559
559
  }
560
- function zt(e, t) {
561
- const n = be(t?.text, e), r = t ? k(t.text, e, (i) => i) : null;
560
+ function en(e, t) {
561
+ const n = Ae(t?.text, e), i = t ? v(t.text, e, (r) => r) : null;
562
562
  return {
563
563
  activityId: e.id,
564
564
  type: e.type,
565
- snippet: _e(r ?? ye(e)),
565
+ snippet: Se(i ?? Ee(e)),
566
566
  authorName: e.author?.name ?? "",
567
567
  direction: e.direction,
568
568
  createdAt: e.createdAt ?? Date.now(),
569
569
  ...n ? { snippetKey: n.key, snippetParams: n.params } : {}
570
570
  };
571
571
  }
572
- function qt(e, t, n = []) {
573
- const r = e.createdAt;
574
- if (!r) return [];
575
- const i = new Set(n);
576
- return e.author.type === "user" && e.author.id && i.add(e.author.id), Object.entries(t).filter(([a, o]) => o >= r && !i.has(a)).map(([a]) => a);
572
+ function tn(e, t, n = []) {
573
+ const i = e.createdAt;
574
+ if (!i) return [];
575
+ const r = new Set(n);
576
+ return e.author.type === "user" && e.author.id && r.add(e.author.id), Object.entries(t).filter(([a, o]) => o >= i && !r.has(a)).map(([a]) => a);
577
577
  }
578
- function Jt(e) {
578
+ function nn(e) {
579
579
  return e.createdAt ?? 0;
580
580
  }
581
- const Qt = [
581
+ const rn = [
582
582
  { id: "agent", label: "Agent", labelSource: "user" },
583
583
  { id: "team", label: "Team", labelSource: "team" },
584
584
  { id: "inbox", label: "Inbox", labelSource: "inbox" },
@@ -588,54 +588,54 @@ const Qt = [
588
588
  { id: "handledBy", label: "Afhandelaar", labelSource: "raw" },
589
589
  { id: "time", label: "Tijd", labelSource: "raw" }
590
590
  ];
591
- function Zt(e) {
591
+ function an(e) {
592
592
  const t = [];
593
593
  for (const n of Object.keys(e))
594
- for (const r of Object.keys(e[n]))
595
- t.push({ lang: n, key: r, value: e[n][r] });
594
+ for (const i of Object.keys(e[n]))
595
+ t.push({ lang: n, key: i, value: e[n][i] });
596
596
  return t;
597
597
  }
598
598
  function M(e) {
599
599
  return e < 10 ? `0${e}` : `${e}`;
600
600
  }
601
- function Te(e, t) {
602
- const n = new Date(e), r = `${n.getUTCFullYear()}-${M(n.getUTCMonth() + 1)}-${M(n.getUTCDate())}`;
603
- return t === "day" ? r : `${r}T${M(n.getUTCHours())}`;
604
- }
605
601
  function Ie(e, t) {
602
+ const n = new Date(e), i = `${n.getUTCFullYear()}-${M(n.getUTCMonth() + 1)}-${M(n.getUTCDate())}`;
603
+ return t === "day" ? i : `${i}T${M(n.getUTCHours())}`;
604
+ }
605
+ function Me(e, t) {
606
606
  const n = new Date(e);
607
607
  return n.setUTCMinutes(0, 0, 0), t === "day" && n.setUTCHours(0), n.getTime();
608
608
  }
609
- const Se = 36e5, Me = 864e5;
610
- function en(e, t, n) {
611
- const r = n === "hour" ? Se : Me, i = [];
612
- for (let a = Ie(e, n); a <= t; a += r)
613
- i.push(Te(a, n));
614
- return i;
609
+ const Ce = 36e5, xe = 864e5;
610
+ function on(e, t, n) {
611
+ const i = n === "hour" ? Ce : xe, r = [];
612
+ for (let a = Me(e, n); a <= t; a += i)
613
+ r.push(Ie(a, n));
614
+ return r;
615
615
  }
616
- const Ce = [
616
+ const Ne = [
617
617
  { id: "resource", label: "Resource", labelSource: "raw" },
618
618
  { id: "origin", label: "Herkomst", labelSource: "raw" }
619
- ], xe = Ce.map((e) => e.id);
620
- function Ne(e, t) {
619
+ ], ve = Ne.map((e) => e.id);
620
+ function ke(e, t) {
621
621
  return `${e}.usage.${t}`;
622
622
  }
623
- function tn(e, t) {
623
+ function sn(e, t) {
624
624
  return t.map((n) => ({
625
- id: Ne(e, n.unit),
625
+ id: ke(e, n.unit),
626
626
  label: n.label,
627
627
  category: "Verbruik",
628
628
  valueType: n.valueType ?? "count",
629
629
  aggregation: "sum",
630
630
  supportedDimensions: [
631
631
  "provider",
632
- ...xe,
632
+ ...ve,
633
633
  ...n.extraDimensions ?? [],
634
634
  "time"
635
635
  ]
636
636
  }));
637
637
  }
638
- const ne = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), P = 200, U = 100, K = 200, B = 12, G = 4, ie = 4e3, C = 500, nn = 256 * 1024, ke = /* @__PURE__ */ new Set([
638
+ const ne = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), P = 200, U = 100, K = 200, B = 12, G = 4, ie = 4e3, C = 500, ln = 256 * 1024, Oe = /* @__PURE__ */ new Set([
639
639
  "heading",
640
640
  "paragraph",
641
641
  "list",
@@ -645,23 +645,23 @@ const ne = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]
645
645
  "table",
646
646
  "kpi",
647
647
  "callout"
648
- ]), ve = ["http:", "https:", "mailto:", "tel:"], Le = /^[a-z][a-z0-9+.-]*:/i;
648
+ ]), Le = ["http:", "https:", "mailto:", "tel:"], $e = /^[a-z][a-z0-9+.-]*:/i;
649
649
  function re(e) {
650
650
  const t = e.trim().replace(/^<|>$/g, "");
651
651
  if (!t) return !1;
652
- const n = Le.exec(t)?.[0];
653
- return n ? ve.includes(n.toLowerCase()) : !t.startsWith("//");
652
+ const n = $e.exec(t)?.[0];
653
+ return n ? Le.includes(n.toLowerCase()) : !t.startsWith("//");
654
654
  }
655
- const Oe = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
656
- function $e(e) {
655
+ const Re = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
656
+ function we(e) {
657
657
  let t = "", n = 0;
658
658
  for (; n < e.length; ) {
659
- const r = e[n] === "!" && e[n + 1] === "[";
660
- if (e[n] !== "[" && !r) {
659
+ const i = e[n] === "!" && e[n + 1] === "[";
660
+ if (e[n] !== "[" && !i) {
661
661
  t += e[n], n += 1;
662
662
  continue;
663
663
  }
664
- const i = n + (r ? 2 : 1), a = F(e, i, "[", "]");
664
+ const r = n + (i ? 2 : 1), a = F(e, r, "[", "]");
665
665
  if (a < 0 || e[a + 1] !== "(") {
666
666
  t += e[n], n += 1;
667
667
  continue;
@@ -671,68 +671,68 @@ function $e(e) {
671
671
  t += e[n], n += 1;
672
672
  continue;
673
673
  }
674
- const s = e.slice(i, a), l = e.slice(a + 2, o).trim().split(/\s+/)[0] ?? "";
675
- t += r || !re(l) ? s : e.slice(n, o + 1), n = o + 1;
674
+ const s = e.slice(r, a), l = e.slice(a + 2, o).trim().split(/\s+/)[0] ?? "";
675
+ t += i || !re(l) ? s : e.slice(n, o + 1), n = o + 1;
676
676
  }
677
677
  return t;
678
678
  }
679
- function F(e, t, n, r) {
680
- let i = 1;
679
+ function F(e, t, n, i) {
680
+ let r = 1;
681
681
  for (let a = t; a < e.length; a += 1) {
682
682
  if (e[a] === "\\") {
683
683
  a += 1;
684
684
  continue;
685
685
  }
686
- if (e[a] === n) i += 1;
687
- else if (e[a] === r && (i -= 1, i === 0))
686
+ if (e[a] === n) r += 1;
687
+ else if (e[a] === i && (r -= 1, r === 0))
688
688
  return a;
689
689
  }
690
690
  return -1;
691
691
  }
692
- function we(e) {
693
- return $e(e).replace(
694
- Oe,
695
- (t, n, r) => re(r) ? t : ""
692
+ function De(e) {
693
+ return we(e).replace(
694
+ Re,
695
+ (t, n, i) => re(i) ? t : ""
696
696
  );
697
697
  }
698
698
  function u(e, t = ie) {
699
- return typeof e == "string" ? we(e).slice(0, t) : "";
699
+ return typeof e == "string" ? De(e).slice(0, t) : "";
700
700
  }
701
- function Re(e, t = ie) {
701
+ function Pe(e, t = ie) {
702
702
  return typeof e == "string" ? e.slice(0, t) : "";
703
703
  }
704
- function De(e, t = "info") {
704
+ function Ue(e, t = "info") {
705
705
  return typeof e == "string" && ne.has(e) ? e : t;
706
706
  }
707
- function rn(e, t = () => {
707
+ function cn(e, t = () => {
708
708
  }) {
709
709
  if (!Array.isArray(e)) return [];
710
710
  const n = [];
711
- for (const r of e) {
711
+ for (const i of e) {
712
712
  if (n.length >= P) {
713
713
  t("more than " + P + " blocks; the rest was dropped");
714
714
  break;
715
715
  }
716
- if (!r || typeof r != "object") continue;
717
- const i = r;
718
- if (!ke.has(i.type)) {
719
- t("unknown block type " + String(i.type));
716
+ if (!i || typeof i != "object") continue;
717
+ const r = i;
718
+ if (!Oe.has(r.type)) {
719
+ t("unknown block type " + String(r.type));
720
720
  continue;
721
721
  }
722
- const a = typeof i.block_id == "string" ? { block_id: i.block_id } : {};
723
- switch (i.type) {
722
+ const a = typeof r.block_id == "string" ? { block_id: r.block_id } : {};
723
+ switch (r.type) {
724
724
  case "heading": {
725
- const o = u(i.text);
725
+ const o = u(r.text);
726
726
  if (!o) {
727
727
  t("a heading without text");
728
728
  continue;
729
729
  }
730
- const s = i.level === 2 || i.level === 3 ? i.level : 1;
730
+ const s = r.level === 2 || r.level === 3 ? r.level : 1;
731
731
  n.push({ ...a, type: "heading", level: s, text: o });
732
732
  break;
733
733
  }
734
734
  case "paragraph": {
735
- const o = u(i.text);
735
+ const o = u(r.text);
736
736
  if (!o) {
737
737
  t("a paragraph without text");
738
738
  continue;
@@ -741,7 +741,7 @@ function rn(e, t = () => {
741
741
  break;
742
742
  }
743
743
  case "quote": {
744
- const o = u(i.text);
744
+ const o = u(r.text);
745
745
  if (!o) {
746
746
  t("a quote without text");
747
747
  continue;
@@ -750,12 +750,12 @@ function rn(e, t = () => {
750
750
  break;
751
751
  }
752
752
  case "code": {
753
- const o = Re(i.text);
753
+ const o = Pe(r.text);
754
754
  if (!o) {
755
755
  t("a code block without text");
756
756
  continue;
757
757
  }
758
- const s = typeof i.lang == "string" ? { lang: i.lang.slice(0, 32) } : {};
758
+ const s = typeof r.lang == "string" ? { lang: r.lang.slice(0, 32) } : {};
759
759
  n.push({ ...a, type: "code", ...s, text: o });
760
760
  break;
761
761
  }
@@ -763,7 +763,7 @@ function rn(e, t = () => {
763
763
  n.push({ ...a, type: "divider" });
764
764
  break;
765
765
  case "list": {
766
- const o = Array.isArray(i.items) ? i.items : [], s = [];
766
+ const o = Array.isArray(r.items) ? r.items : [], s = [];
767
767
  for (const p of o) {
768
768
  if (s.length >= U) {
769
769
  t("more than " + U + " list items");
@@ -778,12 +778,12 @@ function rn(e, t = () => {
778
778
  t("a list without usable items");
779
779
  continue;
780
780
  }
781
- const l = i.style === "numbered" ? "numbered" : "bulleted";
781
+ const l = r.style === "numbered" ? "numbered" : "bulleted";
782
782
  n.push({ ...a, type: "list", style: l, items: s });
783
783
  break;
784
784
  }
785
785
  case "table": {
786
- const o = Array.isArray(i.columns) ? i.columns : [], s = [];
786
+ const o = Array.isArray(r.columns) ? r.columns : [], s = [];
787
787
  for (const c of o) {
788
788
  if (s.length >= B) {
789
789
  t("more than " + B + " table columns");
@@ -796,7 +796,7 @@ function rn(e, t = () => {
796
796
  t("a table without columns");
797
797
  continue;
798
798
  }
799
- const l = Array.isArray(i.rows) ? i.rows : [], p = [];
799
+ const l = Array.isArray(r.rows) ? r.rows : [], p = [];
800
800
  for (const c of l) {
801
801
  if (p.length >= K) {
802
802
  t("more than " + K + " table rows");
@@ -804,10 +804,10 @@ function rn(e, t = () => {
804
804
  }
805
805
  const y = Array.isArray(c) ? c : [];
806
806
  p.push(
807
- s.map((T, me) => u(y[me], C))
807
+ s.map((T, he) => u(y[he], C))
808
808
  );
809
809
  }
810
- const d = u(i.caption, C);
810
+ const d = u(r.caption, C);
811
811
  n.push({
812
812
  ...a,
813
813
  type: "table",
@@ -818,7 +818,7 @@ function rn(e, t = () => {
818
818
  break;
819
819
  }
820
820
  case "kpi": {
821
- const o = Array.isArray(i.items) ? i.items : [], s = [];
821
+ const o = Array.isArray(r.items) ? r.items : [], s = [];
822
822
  for (const l of o) {
823
823
  if (s.length >= G) {
824
824
  t("more than " + G + " kpi items");
@@ -839,16 +839,16 @@ function rn(e, t = () => {
839
839
  break;
840
840
  }
841
841
  case "callout": {
842
- const o = u(i.text);
842
+ const o = u(r.text);
843
843
  if (!o) {
844
844
  t("a callout without text");
845
845
  continue;
846
846
  }
847
- const s = u(i.title, 200);
847
+ const s = u(r.title, 200);
848
848
  n.push({
849
849
  ...a,
850
850
  type: "callout",
851
- tone: De(i.tone),
851
+ tone: Ue(r.tone),
852
852
  ...s ? { title: s } : {},
853
853
  text: o
854
854
  });
@@ -858,10 +858,10 @@ function rn(e, t = () => {
858
858
  }
859
859
  return n;
860
860
  }
861
- function an(e) {
861
+ function un(e) {
862
862
  return JSON.stringify(e).length;
863
863
  }
864
- function on(e) {
864
+ function pn(e) {
865
865
  return {
866
866
  blocks: e.length,
867
867
  types: e.map((t) => t.type),
@@ -871,15 +871,15 @@ function on(e) {
871
871
  function H(e) {
872
872
  return e.replace(/\|/g, "\\|").replace(/\r?\n/g, " ").trim();
873
873
  }
874
- function j(e, t, n) {
875
- const r = e.map((i, a) => n?.[a] === "right" ? "---:" : "---");
874
+ function V(e, t, n) {
875
+ const i = e.map((r, a) => n?.[a] === "right" ? "---:" : "---");
876
876
  return [
877
877
  `| ${e.map(H).join(" | ")} |`,
878
- `| ${r.join(" | ")} |`,
879
- ...t.map((i) => `| ${i.map(H).join(" | ")} |`)
878
+ `| ${i.join(" | ")} |`,
879
+ ...t.map((r) => `| ${r.map(H).join(" | ")} |`)
880
880
  ];
881
881
  }
882
- function Pe(e) {
882
+ function Ke(e) {
883
883
  switch (e.type) {
884
884
  case "heading":
885
885
  return [`${"#".repeat(e.level)} ${e.text}`];
@@ -893,11 +893,11 @@ function Pe(e) {
893
893
  return ["---"];
894
894
  case "list":
895
895
  return e.items.map((t, n) => {
896
- const r = e.style === "numbered" ? `${n + 1}.` : "-";
897
- return t.lead ? `${r} **${t.lead}** ${t.text}` : `${r} ${t.text}`;
896
+ const i = e.style === "numbered" ? `${n + 1}.` : "-";
897
+ return t.lead ? `${i} **${t.lead}** ${t.text}` : `${i} ${t.text}`;
898
898
  });
899
899
  case "table": {
900
- const t = j(
900
+ const t = V(
901
901
  e.columns.map((n) => n.label),
902
902
  e.rows,
903
903
  e.columns.map((n) => n.align ?? "left")
@@ -905,7 +905,7 @@ function Pe(e) {
905
905
  return e.caption ? [...t, "", `*${e.caption}*`] : t;
906
906
  }
907
907
  case "kpi":
908
- return j(
908
+ return V(
909
909
  e.items.map((t) => t.value),
910
910
  [e.items.map((t) => t.label)]
911
911
  );
@@ -913,11 +913,11 @@ function Pe(e) {
913
913
  return (e.title ? `**${e.title}** ${e.text}` : e.text).split(/\r?\n/).map((n) => `> ${n}`);
914
914
  }
915
915
  }
916
- function sn(e, t) {
917
- const n = [], r = e.some((i) => i.type === "heading" && i.level === 1);
918
- t && !r && n.push(`# ${t}`);
919
- for (const i of e) {
920
- const a = Pe(i);
916
+ function dn(e, t) {
917
+ const n = [], i = e.some((r) => r.type === "heading" && r.level === 1);
918
+ t && !i && n.push(`# ${t}`);
919
+ for (const r of e) {
920
+ const a = Ke(r);
921
921
  a.length > 0 && n.push(a.join(`
922
922
  `));
923
923
  }
@@ -927,25 +927,25 @@ function sn(e, t) {
927
927
  `;
928
928
  }
929
929
  const ae = (e) => `user:${e}`, oe = (e) => `team:${e}`;
930
- function ln(e) {
930
+ function fn(e) {
931
931
  const t = /* @__PURE__ */ new Set();
932
932
  for (const n of e ?? [])
933
933
  n?.id && (n.kind === "user" && t.add(ae(n.id)), n.kind === "team" && t.add(oe(n.id)));
934
934
  return [...t].sort();
935
935
  }
936
- function cn(e, t) {
936
+ function mn(e, t) {
937
937
  return [ae(e), ...t.map(oe)];
938
938
  }
939
- function un(e) {
939
+ function gn(e) {
940
940
  const t = /* @__PURE__ */ new Set();
941
941
  for (const n of e ?? [])
942
942
  n?.kind && t.add(n.kind);
943
943
  return [...t];
944
944
  }
945
- function pn(e) {
945
+ function hn(e) {
946
946
  return (e.startsWith("tool:") ? e.slice(5) : e).replace(/__/g, " · ").replace(/\./g, " · ").replace(/_/g, " ");
947
947
  }
948
- const dn = [
948
+ const yn = [
949
949
  { name: "text", type: "string" },
950
950
  { name: "subject", type: "string" },
951
951
  { name: "from", type: "string" },
@@ -968,7 +968,7 @@ const dn = [
968
968
  // een nieuw adres) — een stap die hierop leunt hoort dus een `condition` te hebben.
969
969
  { name: "contactId", type: "string" },
970
970
  { name: "companyId", type: "string" }
971
- ], fn = {
971
+ ], bn = {
972
972
  topics: [
973
973
  { name: "topic", type: "string" },
974
974
  { name: "confidence", type: "number" }
@@ -979,7 +979,7 @@ const dn = [
979
979
  ],
980
980
  extract: []
981
981
  };
982
- function Ue(e) {
982
+ function Be(e) {
983
983
  switch (e.kind) {
984
984
  case "user":
985
985
  return `user:${e.userId}`;
@@ -989,22 +989,22 @@ function Ue(e) {
989
989
  return "org";
990
990
  }
991
991
  }
992
- function mn(e) {
992
+ function En(e) {
993
993
  if (typeof e != "string") return;
994
994
  const t = e.trim();
995
995
  if (t === "org") return { kind: "org" };
996
996
  const n = t.indexOf(":");
997
997
  if (n <= 0) return;
998
- const r = t.slice(0, n), i = t.slice(n + 1).trim();
999
- if (i) {
1000
- if (r === "user") return { kind: "user", userId: i };
1001
- if (r === "team") return { kind: "team", teamId: i };
998
+ const i = t.slice(0, n), r = t.slice(n + 1).trim();
999
+ if (r) {
1000
+ if (i === "user") return { kind: "user", userId: r };
1001
+ if (i === "team") return { kind: "team", teamId: r };
1002
1002
  }
1003
1003
  }
1004
- function Ke(e) {
1005
- return Ue(e);
1004
+ function Ge(e) {
1005
+ return Be(e);
1006
1006
  }
1007
- function gn(e) {
1007
+ function An(e) {
1008
1008
  switch (e.kind) {
1009
1009
  case "personal":
1010
1010
  return { kind: "user", userId: e.userId };
@@ -1014,28 +1014,34 @@ function gn(e) {
1014
1014
  return { kind: "org" };
1015
1015
  }
1016
1016
  }
1017
- function hn(e) {
1018
- return Ke(e);
1017
+ function _n(e) {
1018
+ return Ge(e);
1019
1019
  }
1020
- const Be = ["done", "escalated", "failed", "timed_out", "stopped"], Ge = ["awaiting_approval", "awaiting_reply"];
1021
- function Fe(e) {
1022
- return Be.includes(e);
1020
+ const Fe = 64, He = 8e3;
1021
+ function Tn(e) {
1022
+ const t = typeof e == "number" ? e : Number(String(e ?? "").trim());
1023
+ if (!(!Number.isFinite(t) || t <= 0))
1024
+ return Math.min(Math.max(Math.round(t), Fe), He);
1023
1025
  }
1024
- function yn(e) {
1025
- return Fe(e);
1026
+ const Ve = ["done", "escalated", "failed", "timed_out", "stopped"], je = ["awaiting_approval", "awaiting_reply"];
1027
+ function Xe(e) {
1028
+ return Ve.includes(e);
1029
+ }
1030
+ function Sn(e) {
1031
+ return Xe(e);
1026
1032
  }
1027
- function bn(e) {
1028
- return Ge.includes(e);
1033
+ function In(e) {
1034
+ return je.includes(e);
1029
1035
  }
1030
- function An(e, t) {
1036
+ function Mn(e, t) {
1031
1037
  const n = e.labels ?? [];
1032
- return n.find((r) => r.locale === t)?.label ?? n[0]?.label ?? e.url;
1038
+ return n.find((i) => i.locale === t)?.label ?? n[0]?.label ?? e.url;
1033
1039
  }
1034
- function En(e, t, n) {
1035
- const r = e.translations ?? [];
1036
- return r.find((i) => i.locale === t) ?? (n ? r.find((i) => i.locale === n) : void 0) ?? { locale: t };
1040
+ function Cn(e, t, n) {
1041
+ const i = e.translations ?? [];
1042
+ return i.find((r) => r.locale === t) ?? (n ? i.find((r) => r.locale === n) : void 0) ?? { locale: t };
1037
1043
  }
1038
- const V = [
1044
+ const j = [
1039
1045
  { code: "nl", label: "Nederlands", english: "Dutch" },
1040
1046
  { code: "en", label: "English", english: "English" },
1041
1047
  { code: "de", label: "Deutsch", english: "German" },
@@ -1052,101 +1058,101 @@ const V = [
1052
1058
  ];
1053
1059
  function se(e) {
1054
1060
  const t = (e ?? "").toLowerCase();
1055
- return V.find((n) => n.code === t) ?? V.find((n) => n.code === t.split("-")[0]);
1061
+ return j.find((n) => n.code === t) ?? j.find((n) => n.code === t.split("-")[0]);
1056
1062
  }
1057
- function _n(e) {
1063
+ function xn(e) {
1058
1064
  return se(e)?.label ?? e;
1059
1065
  }
1060
- function Tn(e) {
1066
+ function Nn(e) {
1061
1067
  const t = se(e);
1062
1068
  return t ? t.english === t.label ? `${t.english} (${t.code})` : `${t.english} — ${t.label} (${t.code})` : e;
1063
1069
  }
1064
1070
  const le = 3;
1065
- function He(e, t) {
1071
+ function We(e, t) {
1066
1072
  const n = /* @__PURE__ */ new Set();
1067
- let r = 1, i = t.get(e)?.parentId;
1068
- for (; i; ) {
1069
- if (n.has(i) || (n.add(i), r++, r > le + 1)) return 1 / 0;
1070
- i = t.get(i)?.parentId;
1073
+ let i = 1, r = t.get(e)?.parentId;
1074
+ for (; r; ) {
1075
+ if (n.has(r) || (n.add(r), i++, i > le + 1)) return 1 / 0;
1076
+ r = t.get(r)?.parentId;
1071
1077
  }
1072
- return r;
1078
+ return i;
1073
1079
  }
1074
- function In(e, t, n) {
1080
+ function vn(e, t, n) {
1075
1081
  if (!e) return !0;
1076
1082
  if (e === t) return !1;
1077
- const r = new Map(n.map((o) => [o.id, o]));
1078
- if (!r.has(e) || t && je(e, t, r)) return !1;
1079
- const i = He(e, r), a = t ? ce(t, n) : 1;
1080
- return i + a <= le;
1081
- }
1082
- function je(e, t, n) {
1083
- const r = /* @__PURE__ */ new Set();
1084
- let i = n.get(e)?.parentId;
1085
- for (; i; ) {
1086
- if (i === t) return !0;
1087
- if (r.has(i)) return !1;
1088
- r.add(i), i = n.get(i)?.parentId;
1083
+ const i = new Map(n.map((o) => [o.id, o]));
1084
+ if (!i.has(e) || t && Ye(e, t, i)) return !1;
1085
+ const r = We(e, i), a = t ? ce(t, n) : 1;
1086
+ return r + a <= le;
1087
+ }
1088
+ function Ye(e, t, n) {
1089
+ const i = /* @__PURE__ */ new Set();
1090
+ let r = n.get(e)?.parentId;
1091
+ for (; r; ) {
1092
+ if (r === t) return !0;
1093
+ if (i.has(r)) return !1;
1094
+ i.add(r), r = n.get(r)?.parentId;
1089
1095
  }
1090
1096
  return !1;
1091
1097
  }
1092
1098
  function ce(e, t, n = /* @__PURE__ */ new Set()) {
1093
1099
  if (n.has(e)) return 1;
1094
1100
  n.add(e);
1095
- const r = t.filter((i) => i.parentId === e);
1096
- return r.length ? 1 + Math.max(...r.map((i) => ce(i.id, t, n))) : 1;
1101
+ const i = t.filter((r) => r.parentId === e);
1102
+ return i.length ? 1 + Math.max(...i.map((r) => ce(r.id, t, n))) : 1;
1097
1103
  }
1098
- const Ve = "en";
1099
- function Xe(e) {
1100
- return e.defaultLocale || e.locale || Ve;
1104
+ const ze = "en";
1105
+ function qe(e) {
1106
+ return e.defaultLocale || e.locale || ze;
1101
1107
  }
1102
- function Sn(e) {
1108
+ function kn(e) {
1103
1109
  const t = /* @__PURE__ */ new Set(), n = [];
1104
- for (const r of [Xe(e), ...e.locales ?? []])
1105
- !r || t.has(r) || (t.add(r), n.push(r));
1110
+ for (const i of [qe(e), ...e.locales ?? []])
1111
+ !i || t.has(i) || (t.add(i), n.push(i));
1106
1112
  return n;
1107
1113
  }
1108
- function Mn(e, t, n) {
1109
- const r = e.translations ?? [];
1110
- return r.find((i) => i.locale === t)?.name ?? (n ? r.find((i) => i.locale === n)?.name : void 0) ?? e.name;
1114
+ function On(e, t, n) {
1115
+ const i = e.translations ?? [];
1116
+ return i.find((r) => r.locale === t)?.name ?? (n ? i.find((r) => r.locale === n)?.name : void 0) ?? e.name;
1111
1117
  }
1112
- const We = 20, Ye = 20, x = 300;
1118
+ const Je = 20, Qe = 20, x = 300;
1113
1119
  function g(e) {
1114
1120
  return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
1115
1121
  }
1116
- function ze(e) {
1122
+ function Ze(e) {
1117
1123
  const t = e.replace(/\s+/g, " ").trim();
1118
1124
  if (t.length <= x) return t;
1119
- const n = t.slice(0, x), r = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
1120
- return r > x * 0.6 ? n.slice(0, r + 1) : `${n.trimEnd()}…`;
1125
+ const n = t.slice(0, x), i = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
1126
+ return i > x * 0.6 ? n.slice(0, i + 1) : `${n.trimEnd()}…`;
1121
1127
  }
1122
- function Cn(e, t) {
1123
- const n = ze(t.text), r = g(n);
1124
- if (!r || (e.examples ?? []).some((o) => g(o) === r)) return null;
1125
- const i = e.exampleCandidates ?? [], a = i.findIndex((o) => g(o.text) === r);
1128
+ function Ln(e, t) {
1129
+ const n = Ze(t.text), i = g(n);
1130
+ if (!i || (e.examples ?? []).some((o) => g(o) === i)) return null;
1131
+ const r = e.exampleCandidates ?? [], a = r.findIndex((o) => g(o.text) === i);
1126
1132
  if (a >= 0) {
1127
- if (i[a].corrected || !t.corrected) return null;
1128
- const o = [...i];
1133
+ if (r[a].corrected || !t.corrected) return null;
1134
+ const o = [...r];
1129
1135
  return o[a] = { ...o[a], corrected: !0, addedAt: t.addedAt }, X(o);
1130
1136
  }
1131
- return X([{ ...t, text: n }, ...i]).slice(0, Ye);
1137
+ return X([{ ...t, text: n }, ...r]).slice(0, Qe);
1132
1138
  }
1133
1139
  function X(e) {
1134
1140
  return [...e].sort((t, n) => Number(n.corrected) - Number(t.corrected) || n.addedAt - t.addedAt);
1135
1141
  }
1136
- function xn(e, t) {
1137
- const n = g(t), r = (e.examples ?? []).filter((a) => a.trim());
1138
- return { examples: r.some((a) => g(a) === n) ? r : [...r, t].slice(-We), exampleCandidates: qe(e, t) };
1142
+ function $n(e, t) {
1143
+ const n = g(t), i = (e.examples ?? []).filter((a) => a.trim());
1144
+ return { examples: i.some((a) => g(a) === n) ? i : [...i, t].slice(-Je), exampleCandidates: et(e, t) };
1139
1145
  }
1140
- function qe(e, t) {
1146
+ function et(e, t) {
1141
1147
  const n = g(t);
1142
- return (e.exampleCandidates ?? []).filter((r) => g(r.text) !== n);
1148
+ return (e.exampleCandidates ?? []).filter((i) => g(i.text) !== n);
1143
1149
  }
1144
- function Je(e, t) {
1150
+ function tt(e, t) {
1145
1151
  const n = e.ownerScope;
1146
1152
  return n ? n.kind === "org" ? !0 : n.kind === "team" ? !!t && n.teamId === t : !1 : !1;
1147
1153
  }
1148
- function Nn(e, t) {
1149
- return e.filter((n) => Je(n, t));
1154
+ function Rn(e, t) {
1155
+ return e.filter((n) => tt(n, t));
1150
1156
  }
1151
1157
  const ue = [
1152
1158
  {
@@ -1242,69 +1248,69 @@ const ue = [
1242
1248
  function _(e) {
1243
1249
  return ue.find((t) => t.id === e);
1244
1250
  }
1245
- function kn(e) {
1251
+ function wn(e) {
1246
1252
  return _(e)?.label ?? e;
1247
1253
  }
1248
- function vn(e, t = "gpt-5-mini") {
1254
+ function Dn(e, t = "gpt-5-mini") {
1249
1255
  return _(e)?.defaultModel ?? t;
1250
1256
  }
1251
- function Ln(e) {
1257
+ function Pn(e) {
1252
1258
  return ue.filter((t) => t.capabilities.includes(e));
1253
1259
  }
1254
- function On(e) {
1260
+ function Un(e) {
1255
1261
  const t = _(e);
1256
1262
  return !!t && !t.baseUrl;
1257
1263
  }
1258
- function $n(e, t) {
1264
+ function Kn(e, t) {
1259
1265
  return t === "text" ? !0 : _(e)?.attachmentKinds?.includes(t) === !0;
1260
1266
  }
1261
- function wn(e, t) {
1267
+ function Bn(e, t) {
1262
1268
  if (!e.enabled) return "ok";
1263
- const n = W(e.hardLimitNanos), r = W(e.softLimitNanos);
1264
- return n !== void 0 && t >= n ? "hard" : r !== void 0 && t >= r ? "soft" : "ok";
1269
+ const n = W(e.hardLimitNanos), i = W(e.softLimitNanos);
1270
+ return n !== void 0 && t >= n ? "hard" : i !== void 0 && t >= i ? "soft" : "ok";
1265
1271
  }
1266
1272
  function W(e) {
1267
1273
  return typeof e == "number" ? e : void 0;
1268
1274
  }
1269
- function Qe(e, t = "month") {
1275
+ function nt(e, t = "month") {
1270
1276
  const n = new Date(e);
1271
1277
  return Date.UTC(n.getUTCFullYear(), n.getUTCMonth(), 1);
1272
1278
  }
1273
- function Rn(e, t = "month") {
1274
- const n = new Date(Qe(e, t));
1279
+ function Gn(e, t = "month") {
1280
+ const n = new Date(nt(e, t));
1275
1281
  return `${n.getUTCFullYear()}-${String(n.getUTCMonth() + 1).padStart(2, "0")}`;
1276
1282
  }
1277
- const Dn = /* @__PURE__ */ new Set(["mail", "message"]);
1278
- function Ze(e, t) {
1283
+ const Fn = /* @__PURE__ */ new Set(["mail", "message"]);
1284
+ function it(e, t) {
1279
1285
  const n = e.settings?.signatures?.[t];
1280
1286
  return !n || !n.enabled || !n.body || n.body.trim() === "" ? null : n;
1281
1287
  }
1282
- function Pn(e, t, n, r = "html") {
1288
+ function Hn(e, t, n, i = "html") {
1283
1289
  if (!e) return n;
1284
- const i = Ze(e, t);
1285
- return i ? `${n}${r === "text" ? `
1290
+ const r = it(e, t);
1291
+ return r ? `${n}${i === "text" ? `
1286
1292
 
1287
- ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${i.body}` : n;
1293
+ ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${r.body}` : n;
1288
1294
  }
1289
- function Un(e) {
1295
+ function Vn(e) {
1290
1296
  return e.endpoints ?? [];
1291
1297
  }
1292
- const Kn = (e) => !!e.assignedUserId || !!e.assignedInboxId, Bn = (e) => e.status === "closed", Gn = (e) => ({
1298
+ const jn = (e) => !!e.assignedUserId || !!e.assignedInboxId, Xn = (e) => e.status === "closed", Wn = (e) => ({
1293
1299
  urgent: 10,
1294
1300
  high: 5,
1295
1301
  normal: 2,
1296
1302
  low: 1
1297
- })[e.priority] || 0, Fn = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1298
- function Hn(e, t) {
1303
+ })[e.priority] || 0, Yn = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1304
+ function zn(e, t) {
1299
1305
  return e.lastActivityAt ? !(e.seenBy ?? []).includes(t) : !1;
1300
1306
  }
1301
- const jn = 1e3, Vn = 2e3, Xn = 500, Wn = 12e3, Yn = 4e3, et = ["contact", "company"];
1302
- function zn(e) {
1307
+ const qn = 1e3, Jn = 2e3, Qn = 500, Zn = 12e3, ei = 4e3, rt = ["contact", "company"];
1308
+ function ti(e) {
1303
1309
  if (!e) return !1;
1304
1310
  const t = e.slice(0, e.indexOf(":"));
1305
- return et.includes(t);
1311
+ return rt.includes(t);
1306
1312
  }
1307
- const v = {
1313
+ const k = {
1308
1314
  // The lower bounds are deliberately generous: service ranges (0800/0900) are
1309
1315
  // shorter than geographic numbers, and a too-strict minimum silently drops them.
1310
1316
  // An over-permissive key is harmless — it simply matches nothing.
@@ -1327,38 +1333,38 @@ const v = {
1327
1333
  PL: { callingCode: "48", nsnMin: 9, nsnMax: 9 },
1328
1334
  US: { callingCode: "1", nsnMin: 10, nsnMax: 10 },
1329
1335
  CA: { callingCode: "1", nsnMin: 10, nsnMax: 10 }
1330
- }, tt = "NL", nt = 15, it = 8, rt = Array.from(
1331
- new Set(Object.values(v).map((e) => e.callingCode))
1336
+ }, at = "NL", ot = 15, st = 8, lt = Array.from(
1337
+ new Set(Object.values(k).map((e) => e.callingCode))
1332
1338
  ).sort((e, t) => t.length - e.length);
1333
1339
  function Y(e) {
1334
1340
  if (e)
1335
- return v[e.trim().toUpperCase()];
1341
+ return k[e.trim().toUpperCase()];
1336
1342
  }
1337
- function E(e, t) {
1343
+ function A(e, t) {
1338
1344
  return e.length >= t.nsnMin && e.length <= t.nsnMax;
1339
1345
  }
1340
1346
  function z(e) {
1341
- if (e.length > nt) return null;
1342
- for (const t of rt) {
1347
+ if (e.length > ot) return null;
1348
+ for (const t of lt) {
1343
1349
  if (!e.startsWith(t)) continue;
1344
1350
  const n = e.slice(t.length);
1345
- for (const r of Object.values(v)) {
1346
- if (r.callingCode !== t) continue;
1347
- const i = r.trunkPrefix, a = i && n.startsWith(i) ? n.slice(i.length) : n;
1348
- if (E(a, r)) return `+${t}${a}`;
1351
+ for (const i of Object.values(k)) {
1352
+ if (i.callingCode !== t) continue;
1353
+ const r = i.trunkPrefix, a = r && n.startsWith(r) ? n.slice(r.length) : n;
1354
+ if (A(a, i)) return `+${t}${a}`;
1349
1355
  }
1350
1356
  return null;
1351
1357
  }
1352
- return e.length < it ? null : `+${e}`;
1358
+ return e.length < st ? null : `+${e}`;
1353
1359
  }
1354
- function at(e) {
1360
+ function ct(e) {
1355
1361
  let t = e.trim();
1356
1362
  const n = t.match(/^(sips?|tel|whatsapp):/i);
1357
1363
  n && (t = t.slice(n[0].length));
1358
- const r = t.indexOf("@");
1359
- return r >= 0 && (t = t.slice(0, r)), t.trim();
1364
+ const i = t.indexOf("@");
1365
+ return i >= 0 && (t = t.slice(0, i)), t.trim();
1360
1366
  }
1361
- function qn(e) {
1367
+ function ni(e) {
1362
1368
  if (!e) return !1;
1363
1369
  const t = e.indexOf("@");
1364
1370
  if (t <= 0) return !1;
@@ -1367,26 +1373,26 @@ function qn(e) {
1367
1373
  }
1368
1374
  function q(e, t) {
1369
1375
  if (!e) return null;
1370
- const n = at(e);
1376
+ const n = ct(e);
1371
1377
  if (!n) return null;
1372
- const r = n.startsWith("+"), i = n.replace(/\D/g, "");
1373
- if (!i) return null;
1374
- if (r) return z(i);
1375
- if (i.startsWith("00")) return z(i.slice(2));
1376
- const a = Y(t) ?? Y(tt);
1378
+ const i = n.startsWith("+"), r = n.replace(/\D/g, "");
1379
+ if (!r) return null;
1380
+ if (i) return z(r);
1381
+ if (r.startsWith("00")) return z(r.slice(2));
1382
+ const a = Y(t) ?? Y(at);
1377
1383
  if (!a) return null;
1378
1384
  const o = a.trunkPrefix;
1379
- if (o && i.startsWith(o)) {
1380
- const s = i.slice(o.length);
1381
- return E(s, a) ? `+${a.callingCode}${s}` : null;
1385
+ if (o && r.startsWith(o)) {
1386
+ const s = r.slice(o.length);
1387
+ return A(s, a) ? `+${a.callingCode}${s}` : null;
1382
1388
  }
1383
- if (i.startsWith(a.callingCode)) {
1384
- const s = i.slice(a.callingCode.length);
1385
- if (E(s, a)) return `+${a.callingCode}${s}`;
1389
+ if (r.startsWith(a.callingCode)) {
1390
+ const s = r.slice(a.callingCode.length);
1391
+ if (A(s, a)) return `+${a.callingCode}${s}`;
1386
1392
  }
1387
- return !o && E(i, a) ? `+${a.callingCode}${i}` : null;
1393
+ return !o && A(r, a) ? `+${a.callingCode}${r}` : null;
1388
1394
  }
1389
- function Jn(e, t = 9) {
1395
+ function ii(e, t = 9) {
1390
1396
  const n = (e ?? "").replace(/\D/g, "");
1391
1397
  return n.length < t ? null : n.slice(-t);
1392
1398
  }
@@ -1394,14 +1400,14 @@ function pe(e) {
1394
1400
  if (!e) return null;
1395
1401
  const t = e.trim().toLowerCase(), n = t.lastIndexOf("@");
1396
1402
  if (n <= 0 || n === t.length - 1) return null;
1397
- const r = t.slice(0, n).split("+")[0], i = t.slice(n + 1);
1398
- return !r || !i.includes(".") ? null : `${r}@${i}`;
1403
+ const i = t.slice(0, n).split("+")[0], r = t.slice(n + 1);
1404
+ return !i || !r.includes(".") ? null : `${i}@${r}`;
1399
1405
  }
1400
- function Qn(e) {
1406
+ function ri(e) {
1401
1407
  const t = pe(e);
1402
1408
  return t ? t.slice(t.lastIndexOf("@") + 1) : null;
1403
1409
  }
1404
- const ot = /* @__PURE__ */ new Set([
1410
+ const ut = /* @__PURE__ */ new Set([
1405
1411
  "co.uk",
1406
1412
  "org.uk",
1407
1413
  "gov.uk",
@@ -1411,14 +1417,14 @@ const ot = /* @__PURE__ */ new Set([
1411
1417
  "com.br",
1412
1418
  "co.za"
1413
1419
  ]);
1414
- function st(e) {
1420
+ function pt(e) {
1415
1421
  if (!e) return null;
1416
1422
  const t = e.trim().toLowerCase().replace(/\.$/, "").split(".").filter(Boolean);
1417
1423
  if (t.length < 2) return null;
1418
1424
  const n = t.slice(-2).join(".");
1419
- return ot.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
1425
+ return ut.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
1420
1426
  }
1421
- const lt = /* @__PURE__ */ new Set([
1427
+ const dt = /* @__PURE__ */ new Set([
1422
1428
  "gmail.com",
1423
1429
  "googlemail.com",
1424
1430
  "outlook.com",
@@ -1463,44 +1469,44 @@ const lt = /* @__PURE__ */ new Set([
1463
1469
  "proximus.be",
1464
1470
  "scarlet.be"
1465
1471
  ]);
1466
- function Zn(e) {
1467
- const t = st(e);
1468
- return t ? lt.has(t) : !1;
1472
+ function ai(e) {
1473
+ const t = pt(e);
1474
+ return t ? dt.has(t) : !1;
1469
1475
  }
1470
- function ei(e) {
1476
+ function oi(e) {
1471
1477
  if (!e) return !1;
1472
1478
  const t = e.trim().toLowerCase();
1473
1479
  return t === "tel" || t === "sms" || t === "whatsapp" || t === "fax";
1474
1480
  }
1475
- function ti(e, t, n) {
1481
+ function si(e, t, n) {
1476
1482
  if (!e || !t) return null;
1477
- const r = e.trim().toLowerCase();
1478
- if (r === "tel" || r === "sms" || r === "whatsapp") {
1483
+ const i = e.trim().toLowerCase();
1484
+ if (i === "tel" || i === "sms" || i === "whatsapp") {
1479
1485
  const a = q(t, n);
1480
1486
  return a ? `tel:${a}` : null;
1481
1487
  }
1482
- if (r === "fax") {
1488
+ if (i === "fax") {
1483
1489
  const a = q(t, n);
1484
1490
  return a ? `fax:${a}` : null;
1485
1491
  }
1486
- if (r === "mailto" || r === "email") {
1492
+ if (i === "mailto" || i === "email") {
1487
1493
  const a = pe(t);
1488
1494
  return a ? `mailto:${a}` : null;
1489
1495
  }
1490
- const i = t.trim().toLowerCase();
1491
- return i ? `${r}:${i}` : null;
1496
+ const r = t.trim().toLowerCase();
1497
+ return r ? `${i}:${r}` : null;
1492
1498
  }
1493
- const ct = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, ut = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
1494
- function ni(e) {
1499
+ const ft = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, mt = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
1500
+ function li(e) {
1495
1501
  if (typeof e != "string" || !e) return "";
1496
1502
  let t = e;
1497
1503
  return t = t.replace(/```[a-z]*\n?/gi, "").replace(/~~~[a-z]*\n?/gi, ""), t = t.replace(/!\[([^\]]*)\]\([^)]*\)/g, "$1"), t = t.replace(/\[([^\]]*)\]\([^)]*\)/g, "$1"), t = t.replace(/\[([^\]]*)\]\[[^\]]*\]/g, "$1"), t = t.replace(/<((?:https?|mailto):[^>\s]+)>/gi, "$1"), t = t.split(`
1498
1504
  `).map(
1499
1505
  (n) => n.replace(/^\s{0,3}#{1,6}\s+/, "").replace(/^\s{0,3}>\s?/, "").replace(/^\s*[-*+]\s+/, "").replace(/^\s*\d+[.)]\s+/, "").replace(/^\s*(?:[-*_]\s*){3,}$/, "")
1500
1506
  ).join(`
1501
- `), t = t.replace(ct, "$2"), t = t.replace(ut, "$2"), t = t.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), t = t.replace(/`([^`\n]+)`/g, "$1"), t.replace(/\s+/g, " ").trim();
1507
+ `), t = t.replace(ft, "$2"), t = t.replace(mt, "$2"), t = t.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), t = t.replace(/`([^`\n]+)`/g, "$1"), t.replace(/\s+/g, " ").trim();
1502
1508
  }
1503
- const pt = [
1509
+ const gt = [
1504
1510
  /<blockquote/i,
1505
1511
  /class="?gmail_quote/i,
1506
1512
  // Gmail quote container
@@ -1513,12 +1519,12 @@ const pt = [
1513
1519
  // Outlook underscore separator before "From:"
1514
1520
  /\bOn\b[\s\S]{0,200}?\bwrote:/i
1515
1521
  // Gmail "On <date> <name> wrote:"
1516
- ], J = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, dt = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
1517
- function ft(e) {
1522
+ ], J = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, ht = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
1523
+ function yt(e) {
1518
1524
  const t = e.split(`
1519
1525
  `);
1520
1526
  for (let n = 0; n < t.length; n++)
1521
- if (dt.test(t[n]) || J.test(t[n]) && t.slice(n + 1, n + 4).some((r) => J.test(r)))
1527
+ if (ht.test(t[n]) || J.test(t[n]) && t.slice(n + 1, n + 4).some((i) => J.test(i)))
1522
1528
  return t.slice(0, n).join(`
1523
1529
  `).trim();
1524
1530
  return e;
@@ -1543,26 +1549,26 @@ function te(e) {
1543
1549
 
1544
1550
  `).trim();
1545
1551
  }
1546
- function ii(e) {
1552
+ function ci(e) {
1547
1553
  if (typeof e != "string" || !e) return "";
1548
1554
  let t = e.length;
1549
- for (const a of pt) {
1555
+ for (const a of gt) {
1550
1556
  const o = e.search(a);
1551
1557
  o >= 0 && o < t && (t = o);
1552
1558
  }
1553
1559
  const n = e.slice(0, t);
1554
- let r = te(ee(Q(n)));
1555
- return r || (r = te(ee(Q(e)))), ft(r) || r;
1560
+ let i = te(ee(Q(n)));
1561
+ return i || (i = te(ee(Q(e)))), yt(i) || i;
1556
1562
  }
1557
- const mt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, gt = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1558
- function ri(e, t) {
1559
- return !!(e && mt.test(e) || t && gt.test(t));
1563
+ const bt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, Et = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1564
+ function ui(e, t) {
1565
+ return !!(e && bt.test(e) || t && Et.test(t));
1560
1566
  }
1561
- const ht = 3, yt = 600;
1562
- function ai(e, t) {
1563
- return e >= ht || t >= yt;
1567
+ const At = 3, _t = 600;
1568
+ function pi(e, t) {
1569
+ return e >= At || t >= _t;
1564
1570
  }
1565
- const bt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), At = /* @__PURE__ */ new Set([
1571
+ const Tt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), St = /* @__PURE__ */ new Set([
1566
1572
  "text/plain",
1567
1573
  "text/markdown",
1568
1574
  "text/csv",
@@ -1571,77 +1577,77 @@ const bt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "ima
1571
1577
  "application/xml",
1572
1578
  "text/xml"
1573
1579
  ]);
1574
- function Et(e) {
1580
+ function It(e) {
1575
1581
  const t = (e ?? "").trim().toLowerCase().split(";")[0];
1576
- return t ? bt.has(t) ? "image" : t === "application/pdf" ? "pdf" : At.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
1582
+ return t ? Tt.has(t) ? "image" : t === "application/pdf" ? "pdf" : St.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
1577
1583
  }
1578
- const h = 1024 * 1024, _t = {
1584
+ const h = 1024 * 1024, Mt = {
1579
1585
  image: 5 * h,
1580
1586
  pdf: 20 * h,
1581
1587
  text: 1 * h,
1582
1588
  audio: 20 * h
1583
- }, oi = 25 * h, si = 5;
1584
- function li(e, t) {
1585
- const n = Et(e);
1586
- return n === "unsupported" ? "unsupported" : t > _t[n] ? "too-large" : null;
1587
- }
1588
- function Tt(e, t) {
1589
- const n = new Set(e.disabledIntents ?? []), r = e.intentOverrides ?? {}, i = t.intents.filter((o) => !n.has(o.intent)).map((o) => St(o, r[o.intent]));
1590
- if (!e.extraIntents || e.extraIntents.length === 0) return i;
1591
- const a = new Set(i.map((o) => o.intent));
1589
+ }, di = 25 * h, fi = 5;
1590
+ function mi(e, t) {
1591
+ const n = It(e);
1592
+ return n === "unsupported" ? "unsupported" : t > Mt[n] ? "too-large" : null;
1593
+ }
1594
+ function Ct(e, t) {
1595
+ const n = new Set(e.disabledIntents ?? []), i = e.intentOverrides ?? {}, r = t.intents.filter((o) => !n.has(o.intent)).map((o) => Nt(o, i[o.intent]));
1596
+ if (!e.extraIntents || e.extraIntents.length === 0) return r;
1597
+ const a = new Set(r.map((o) => o.intent));
1592
1598
  for (const o of e.extraIntents)
1593
- a.has(o.intent) || (i.push(o), a.add(o.intent));
1594
- return i;
1599
+ a.has(o.intent) || (r.push(o), a.add(o.intent));
1600
+ return r;
1595
1601
  }
1596
- function It(e, t) {
1602
+ function xt(e, t) {
1597
1603
  const n = {};
1598
- for (const r of e.intents) {
1599
- if (!r.togglable) continue;
1600
- const i = t?.[r.intent];
1601
- n[r.intent] = i ?? r.defaultEnabled ?? !0;
1604
+ for (const i of e.intents) {
1605
+ if (!i.togglable) continue;
1606
+ const r = t?.[i.intent];
1607
+ n[i.intent] = r ?? i.defaultEnabled ?? !0;
1602
1608
  }
1603
1609
  return n;
1604
1610
  }
1605
- function ci(e, t) {
1606
- const n = It(e, t);
1607
- return Object.entries(n).filter(([, r]) => !r).map(([r]) => r);
1611
+ function gi(e, t) {
1612
+ const n = xt(e, t);
1613
+ return Object.entries(n).filter(([, i]) => !i).map(([i]) => i);
1608
1614
  }
1609
- function St(e, t) {
1615
+ function Nt(e, t) {
1610
1616
  return t ? {
1611
1617
  intent: t.intent ?? e.intent,
1612
1618
  targetSchemes: t.targetSchemes ?? e.targetSchemes,
1613
1619
  transport: t.transport ?? e.transport
1614
1620
  } : e;
1615
1621
  }
1616
- function ui(e, t) {
1622
+ function hi(e, t) {
1617
1623
  const n = [];
1618
- for (const r of e) {
1619
- if (!r.enabled) continue;
1620
- const i = t[r.providerId];
1621
- if (i)
1622
- for (const a of Tt(r, i))
1623
- n.push({ channel: r, description: i, capability: a });
1624
+ for (const i of e) {
1625
+ if (!i.enabled) continue;
1626
+ const r = t[i.providerId];
1627
+ if (r)
1628
+ for (const a of Ct(i, r))
1629
+ n.push({ channel: i, description: r, capability: a });
1624
1630
  }
1625
1631
  return n;
1626
1632
  }
1627
- function pi(e, t) {
1633
+ function yi(e, t) {
1628
1634
  return t.filter((n) => n.capability.intent === e);
1629
1635
  }
1630
- function Mt(e, t) {
1636
+ function vt(e, t) {
1631
1637
  return t.filter((n) => n.capability.targetSchemes.includes(e));
1632
1638
  }
1633
- function di(e, t) {
1634
- return Mt(e.scheme, t);
1639
+ function bi(e, t) {
1640
+ return vt(e.scheme, t);
1635
1641
  }
1636
- function fi(e, t, n) {
1637
- const r = [];
1638
- for (const i of e)
1642
+ function Ei(e, t, n) {
1643
+ const i = [];
1644
+ for (const r of e)
1639
1645
  for (const a of n)
1640
- a.capability.intent === t && a.capability.targetSchemes.includes(i.scheme) && r.push({ channelIntent: a, endpoint: i });
1641
- return r;
1646
+ a.capability.intent === t && a.capability.targetSchemes.includes(r.scheme) && i.push({ channelIntent: a, endpoint: r });
1647
+ return i;
1642
1648
  }
1643
- var Ct = /* @__PURE__ */ ((e) => (e.MAILTO = "mailto", e.SIP = "sip", e.TEL = "tel", e.WEBHOOK = "webhook", e.USERNAME = "username", e.ID = "id", e.CUSTOM = "custom", e.URL = "url", e.TELEGRAM = "telegram", e.WHATSAPP = "whatsapp", e.MESSENGER = "messenger", e.INSTAGRAM = "instagram", e.VIBER = "viber", e.SMS = "sms", e.FAX = "fax", e.TEAMS = "teams", e.CALENDAR = "calendar", e))(Ct || {});
1644
- const xt = {
1649
+ var kt = /* @__PURE__ */ ((e) => (e.MAILTO = "mailto", e.SIP = "sip", e.TEL = "tel", e.WEBHOOK = "webhook", e.USERNAME = "username", e.ID = "id", e.CUSTOM = "custom", e.URL = "url", e.TELEGRAM = "telegram", e.WHATSAPP = "whatsapp", e.MESSENGER = "messenger", e.INSTAGRAM = "instagram", e.VIBER = "viber", e.SMS = "sms", e.FAX = "fax", e.TEAMS = "teams", e.CALENDAR = "calendar", e))(kt || {});
1650
+ const Ot = {
1645
1651
  mailto: "mail",
1646
1652
  sip: "tel",
1647
1653
  tel: "tel",
@@ -1663,10 +1669,10 @@ const xt = {
1663
1669
  id: "note",
1664
1670
  custom: "note"
1665
1671
  };
1666
- function mi(e) {
1667
- return e ? xt[e] ?? "note" : "note";
1672
+ function Ai(e) {
1673
+ return e ? Ot[e] ?? "note" : "note";
1668
1674
  }
1669
- const gi = "message_window", hi = "message_templates", yi = {
1675
+ const _i = "message_window", Ti = "message_templates", Si = {
1670
1676
  // E-mail
1671
1677
  FROM: "from",
1672
1678
  TO: "to",
@@ -1683,83 +1689,94 @@ const gi = "message_window", hi = "message_templates", yi = {
1683
1689
  // Voice/conference
1684
1690
  HOST: "host",
1685
1691
  PARTICIPANT: "participant"
1686
- }, bi = (e, t) => ({ intent: e, ...t }), Ai = "folder_management", Ei = "remote_search", _i = { ok: !1, code: "UNSUPPORTED", message: "Provider does not support this op" }, de = "auth";
1692
+ }, Ii = (e, t) => ({ intent: e, ...t }), Mi = "folder_management", Ci = "remote_search", xi = { ok: !1, code: "UNSUPPORTED", message: "Provider does not support this op" }, de = "auth";
1687
1693
  function fe(e) {
1688
1694
  const t = typeof e == "string" ? e.match(/apps\/([^/?#]+)/) : null;
1689
1695
  return t ? t[1] : null;
1690
1696
  }
1691
- function Ti(e) {
1697
+ function Ni(e) {
1692
1698
  const t = fe(e);
1693
1699
  return t ? t !== de : typeof e == "string" && e.startsWith("/wake");
1694
1700
  }
1695
- function Ii(e) {
1701
+ function vi(e) {
1696
1702
  return typeof e != "string" || e === "" || e === "/" ? !0 : fe(e) === de;
1697
1703
  }
1698
- function Nt(e) {
1704
+ function Lt(e) {
1699
1705
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1700
1706
  }
1701
- function kt(e) {
1702
- const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : "/" + Nt(r)).join("");
1707
+ function $t(e) {
1708
+ const n = e.split("/").filter(Boolean).map((i) => i.startsWith(":") ? i.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : "/" + Lt(i)).join("");
1703
1709
  return new RegExp(`^${n}\\/?$`);
1704
1710
  }
1705
- function vt(e, t) {
1706
- const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean), i = {};
1711
+ function Rt(e, t) {
1712
+ const n = e.split("/").filter(Boolean), i = t.split("/").filter(Boolean), r = {};
1707
1713
  return n.forEach((a, o) => {
1708
1714
  if (a.startsWith(":")) {
1709
- const s = a.endsWith("?") ? a.slice(1, -1) : a.slice(1), l = r[o];
1710
- l && (i[s] = l);
1715
+ const s = a.endsWith("?") ? a.slice(1, -1) : a.slice(1), l = i[o];
1716
+ l && (r[s] = l);
1711
1717
  }
1712
- }), i;
1718
+ }), r;
1713
1719
  }
1714
- function Lt(e) {
1720
+ function wt(e) {
1715
1721
  return e.publicBasePath ?? `/apps/${e.name}`;
1716
1722
  }
1717
- function Si(e) {
1723
+ function ki(e) {
1718
1724
  const t = [];
1719
1725
  for (const n of e) {
1720
1726
  if (!n?.name) continue;
1721
- const r = Lt(n);
1722
- for (const i of n.routes ?? []) {
1723
- if (!i.public) continue;
1724
- const a = i.path === "/" ? "" : i.path;
1727
+ const i = wt(n);
1728
+ for (const r of n.routes ?? []) {
1729
+ if (!r.public) continue;
1730
+ const a = r.path === "/" ? "" : r.path;
1725
1731
  t.push({
1726
1732
  appName: n.name,
1727
- resource: i.resource,
1728
- pattern: `${r}${a}`,
1729
- props: i.props
1733
+ resource: r.resource,
1734
+ pattern: `${i}${a}`,
1735
+ props: r.props
1730
1736
  });
1731
1737
  }
1732
1738
  }
1733
1739
  return t;
1734
1740
  }
1735
- function Ot(e, t) {
1736
- const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
1737
- for (let i = 0; i < Math.min(n.length, r.length); i++) {
1738
- const a = n[i].startsWith(":"), o = r[i].startsWith(":");
1741
+ function Dt(e, t) {
1742
+ const n = e.split("/").filter(Boolean), i = t.split("/").filter(Boolean);
1743
+ for (let r = 0; r < Math.min(n.length, i.length); r++) {
1744
+ const a = n[r].startsWith(":"), o = i[r].startsWith(":");
1739
1745
  if (a !== o) return o;
1740
1746
  }
1741
- return n.length > r.length;
1747
+ return n.length > i.length;
1742
1748
  }
1743
- function $t(e, t) {
1749
+ function Pt(e, t) {
1744
1750
  if (typeof e != "string") return null;
1745
1751
  let n = null;
1746
- for (const r of t)
1747
- kt(r.pattern).test(e) && (!n || Ot(r.pattern, n.pattern)) && (n = r);
1748
- return n ? { ...n, params: { ...n.props, ...vt(n.pattern, e) } } : null;
1752
+ for (const i of t)
1753
+ $t(i.pattern).test(e) && (!n || Dt(i.pattern, n.pattern)) && (n = i);
1754
+ return n ? { ...n, params: { ...n.props, ...Rt(n.pattern, e) } } : null;
1755
+ }
1756
+ function Oi(e, t) {
1757
+ return Pt(e, t) !== null;
1758
+ }
1759
+ const me = 9e4, Ut = ["out_of_office"], ge = (e) => Ut.includes(e);
1760
+ function Li(e, t, n) {
1761
+ const i = n - e < me, r = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
1762
+ if (!r?.status) return { online: i, status: i ? "available" : "offline" };
1763
+ const a = r.status;
1764
+ return !i && !ge(a) ? { online: !1, status: "offline" } : { online: i, status: a, message: r.message };
1749
1765
  }
1750
- function Mi(e, t) {
1751
- return $t(e, t) !== null;
1766
+ function $i(e, t) {
1767
+ const n = t - e.lastSeenAt < me, i = n || ge(e.status) ? e.status : "offline";
1768
+ return n === e.online && i === e.status ? e : { ...e, online: n, status: i };
1752
1769
  }
1753
- const Ci = 9e4, xi = "installation-id";
1770
+ const Ri = "installation-id";
1754
1771
  export {
1755
1772
  m as ACTIVITY_CATALOG,
1756
- _t as AI_ATTACHMENT_LIMITS,
1757
- si as AI_ATTACHMENT_MAX_PER_TURN,
1758
- oi as AI_ATTACHMENT_TURN_BUDGET,
1773
+ Mt as AI_ATTACHMENT_LIMITS,
1774
+ fi as AI_ATTACHMENT_MAX_PER_TURN,
1775
+ di as AI_ATTACHMENT_TURN_BUDGET,
1759
1776
  ue as AI_VENDORS,
1760
- ve as ALLOWED_LINK_SCHEMES,
1777
+ Le as ALLOWED_LINK_SCHEMES,
1761
1778
  P as ARTIFACT_MAX_BLOCKS,
1762
- nn as ARTIFACT_MAX_BODY_BYTES,
1779
+ ln as ARTIFACT_MAX_BODY_BYTES,
1763
1780
  C as ARTIFACT_MAX_CELL_LEN,
1764
1781
  G as ARTIFACT_MAX_KPI_ITEMS,
1765
1782
  U as ARTIFACT_MAX_LIST_ITEMS,
@@ -1767,160 +1784,166 @@ export {
1767
1784
  K as ARTIFACT_MAX_TABLE_ROWS,
1768
1785
  ie as ARTIFACT_MAX_TEXT_LEN,
1769
1786
  de as AUTH_APP_NAME,
1770
- Ee as ActivityTypeRegistry,
1771
- Yt as BUILT_IN_ONLY,
1772
- fn as CLASSIFY_VARS,
1773
- Qt as CORE_DIMENSIONS,
1774
- Ct as CommunicationScheme,
1775
- Yn as DEFAULT_MEMORY_BUDGET,
1776
- tt as DEFAULT_PHONE_REGION,
1777
- Ai as FEATURE_FOLDER_MANAGEMENT,
1778
- Ei as FEATURE_REMOTE_SEARCH,
1779
- xi as INSTALLATION_HEADER,
1780
- yi as InteractionParticipantRole,
1781
- Ve as KB_FALLBACK_LOCALE,
1782
- V as KB_LOCALES,
1783
- Pt as MAX_ACTIONS,
1784
- wt as MAX_BLOCKS,
1787
+ Te as ActivityTypeRegistry,
1788
+ Zt as BUILT_IN_ONLY,
1789
+ bn as CLASSIFY_VARS,
1790
+ rn as CORE_DIMENSIONS,
1791
+ kt as CommunicationScheme,
1792
+ ei as DEFAULT_MEMORY_BUDGET,
1793
+ at as DEFAULT_PHONE_REGION,
1794
+ Mi as FEATURE_FOLDER_MANAGEMENT,
1795
+ Ci as FEATURE_REMOTE_SEARCH,
1796
+ Ri as INSTALLATION_HEADER,
1797
+ Si as InteractionParticipantRole,
1798
+ ze as KB_FALLBACK_LOCALE,
1799
+ j as KB_LOCALES,
1800
+ Ft as MAX_ACTIONS,
1801
+ Kt as MAX_BLOCKS,
1785
1802
  le as MAX_COLLECTION_DEPTH,
1786
- Rt as MAX_FIELDS,
1787
- Dt as MAX_LIST_ITEMS,
1788
- jn as MAX_MEMORY_BROWSE,
1789
- Wn as MAX_MEMORY_BUDGET,
1790
- Vn as MAX_MEMORY_CHARS,
1791
- Ye as MAX_TOPIC_CANDIDATES,
1792
- We as MAX_TOPIC_EXAMPLES,
1803
+ Bt as MAX_FIELDS,
1804
+ Gt as MAX_LIST_ITEMS,
1805
+ qn as MAX_MEMORY_BROWSE,
1806
+ Zn as MAX_MEMORY_BUDGET,
1807
+ Jn as MAX_MEMORY_CHARS,
1808
+ Qe as MAX_TOPIC_CANDIDATES,
1809
+ Je as MAX_TOPIC_EXAMPLES,
1793
1810
  x as MAX_TOPIC_EXAMPLE_CHARS,
1794
- Xn as MIN_MEMORY_BUDGET,
1795
- Ge as PAUSED_RUN_STATUSES,
1796
- v as PHONE_REGIONS,
1797
- Ci as PRESENCE_ONLINE_WINDOW_MS,
1798
- hi as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
1799
- gi as PROVIDER_FEATURE_MESSAGE_WINDOW,
1800
- lt as PUBLIC_EMAIL_DOMAINS,
1801
- et as RELATED_SUBJECT_KINDS,
1802
- Dn as SIGNATURE_INTENTS,
1803
- yt as SUMMARY_MIN_LAST_CHARS,
1804
- ht as SUMMARY_MIN_MESSAGES,
1805
- Be as TERMINAL_RUN_STATUSES,
1806
- dn as TRIGGER_VARS,
1807
- _i as UNSUPPORTED,
1808
- Ce as USAGE_DIMENSIONS,
1809
- xe as USAGE_DIMENSION_IDS,
1810
- xn as acceptExampleCandidate,
1811
- Ke as actingIdentityKey,
1812
- Kt as activityIconOf,
1813
- Wt as activityJoinUrl,
1814
- ye as activitySnippet,
1815
- be as activityTextParams,
1816
- Xt as activityTimelineText,
1817
- Jt as activityTimestamp,
1811
+ Qn as MIN_MEMORY_BUDGET,
1812
+ je as PAUSED_RUN_STATUSES,
1813
+ k as PHONE_REGIONS,
1814
+ me as PRESENCE_ONLINE_WINDOW_MS,
1815
+ Ut as PRESENCE_SURVIVES_OFFLINE,
1816
+ Ti as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
1817
+ _i as PROVIDER_FEATURE_MESSAGE_WINDOW,
1818
+ dt as PUBLIC_EMAIL_DOMAINS,
1819
+ rt as RELATED_SUBJECT_KINDS,
1820
+ Fn as SIGNATURE_INTENTS,
1821
+ He as STEP_MAX_TOKENS_MAX,
1822
+ Fe as STEP_MAX_TOKENS_MIN,
1823
+ _t as SUMMARY_MIN_LAST_CHARS,
1824
+ At as SUMMARY_MIN_MESSAGES,
1825
+ Ve as TERMINAL_RUN_STATUSES,
1826
+ yn as TRIGGER_VARS,
1827
+ xi as UNSUPPORTED,
1828
+ Ne as USAGE_DIMENSIONS,
1829
+ ve as USAGE_DIMENSION_IDS,
1830
+ $n as acceptExampleCandidate,
1831
+ Ge as actingIdentityKey,
1832
+ Vt as activityIconOf,
1833
+ Qt as activityJoinUrl,
1834
+ Ee as activitySnippet,
1835
+ Ae as activityTextParams,
1836
+ Jt as activityTimelineText,
1837
+ nn as activityTimestamp,
1818
1838
  f as activityTypeInfo,
1819
- hn as actorKey,
1820
- Cn as addExampleCandidate,
1821
- Et as aiAttachmentKind,
1822
- li as aiAttachmentRejection,
1839
+ _n as actorKey,
1840
+ Ln as addExampleCandidate,
1841
+ $i as agePresenceEntry,
1842
+ It as aiAttachmentKind,
1843
+ mi as aiAttachmentRejection,
1823
1844
  W as aiBudgetLimit,
1824
- Rn as aiBudgetPeriodKey,
1825
- Qe as aiBudgetPeriodStart,
1826
- wn as aiBudgetState,
1827
- $n as aiVendorAcceptsAttachment,
1828
- vn as aiVendorDefaultModel,
1829
- kn as aiVendorLabel,
1830
- On as aiVendorNeedsBaseUrl,
1831
- Ln as aiVendorsWith,
1845
+ Gn as aiBudgetPeriodKey,
1846
+ nt as aiBudgetPeriodStart,
1847
+ Bn as aiBudgetState,
1848
+ Kn as aiVendorAcceptsAttachment,
1849
+ Dn as aiVendorDefaultModel,
1850
+ wn as aiVendorLabel,
1851
+ Un as aiVendorNeedsBaseUrl,
1852
+ Pn as aiVendorsWith,
1832
1853
  fe as appNameFromPath,
1833
- Pn as applySignature,
1834
- an as artifactBodyBytes,
1835
- on as artifactOutline,
1836
- sn as artifactToMarkdown,
1837
- zt as buildActivityPreview,
1838
- ui as buildChannelIntents,
1839
- ln as buildShareKeys,
1840
- In as canNestUnder,
1841
- Ht as carriesText,
1842
- Mn as categoryLabel,
1843
- mi as channelKindForScheme,
1844
- Bt as channelKindOf,
1845
- ii as cleanMessageText,
1846
- Xe as defaultLocaleOf,
1847
- bi as defineIntent,
1848
- He as depthOf,
1849
- ci as disabledIntentsFromCapabilities,
1850
- Qn as emailDomain,
1851
- ti as endpointKey,
1852
- vt as extractParams,
1853
- di as filterByEndpoint,
1854
- pi as filterByIntent,
1855
- Mt as filterByTargetScheme,
1854
+ Hn as applySignature,
1855
+ un as artifactBodyBytes,
1856
+ pn as artifactOutline,
1857
+ dn as artifactToMarkdown,
1858
+ en as buildActivityPreview,
1859
+ hi as buildChannelIntents,
1860
+ fn as buildShareKeys,
1861
+ vn as canNestUnder,
1862
+ Yt as carriesText,
1863
+ On as categoryLabel,
1864
+ Ai as channelKindForScheme,
1865
+ jt as channelKindOf,
1866
+ Tn as clampStepMaxTokens,
1867
+ ci as cleanMessageText,
1868
+ qe as defaultLocaleOf,
1869
+ Ii as defineIntent,
1870
+ We as depthOf,
1871
+ Li as derivePresence,
1872
+ gi as disabledIntentsFromCapabilities,
1873
+ ri as emailDomain,
1874
+ si as endpointKey,
1875
+ Rt as extractParams,
1876
+ bi as filterByEndpoint,
1877
+ yi as filterByIntent,
1878
+ vt as filterByTargetScheme,
1856
1879
  _ as findAiVendor,
1857
- Zt as flattenLocales,
1858
- Ie as floorToPeriod,
1859
- Ue as formatActingIdentity,
1860
- Te as formatPeriod,
1861
- qt as getActivitySeenUserIds,
1862
- Un as getContactEndpoints,
1863
- Fn as getShortTitle,
1864
- Gn as getUrgencyScore,
1880
+ an as flattenLocales,
1881
+ Me as floorToPeriod,
1882
+ Be as formatActingIdentity,
1883
+ Ie as formatPeriod,
1884
+ tn as getActivitySeenUserIds,
1885
+ Vn as getContactEndpoints,
1886
+ Yn as getShortTitle,
1887
+ Wn as getUrgencyScore,
1865
1888
  ce as heightOf,
1866
- En as helpCenterText,
1867
- pn as humanizeAction,
1868
- Kn as isAssigned,
1869
- Bn as isClosed,
1870
- Ti as isDeepLink,
1871
- je as isDescendant,
1872
- Hn as isInteractionUnseen,
1873
- Ii as isLandingPath,
1874
- ri as isLikelyBulk,
1875
- Gt as isMessageType,
1876
- Ot as isMoreSpecificPattern,
1877
- bn as isPaused,
1878
- Vt as isPlaybookAuthoredType,
1879
- Zn as isPublicEmailDomain,
1880
- Mi as isPublicPath,
1881
- Ft as isReplyableType,
1882
- yn as isRetryable,
1883
- Fe as isTerminal,
1884
- ai as isThreadLongEnough,
1885
- An as linkLabel,
1886
- Tn as localeInstruction,
1887
- _n as localeName,
1888
- Sn as localesOf,
1889
- qn as looksLikeEmail,
1890
- fi as matchContactToIntents,
1891
- $t as matchPublicRoute,
1892
- jt as messageCountsAs,
1893
- ei as needsPhoneRegion,
1894
- rn as normalizeArtifactBlocks,
1895
- Ut as normalizeBlocks,
1889
+ Cn as helpCenterText,
1890
+ hn as humanizeAction,
1891
+ jn as isAssigned,
1892
+ Xn as isClosed,
1893
+ Ni as isDeepLink,
1894
+ Ye as isDescendant,
1895
+ zn as isInteractionUnseen,
1896
+ vi as isLandingPath,
1897
+ ui as isLikelyBulk,
1898
+ Xt as isMessageType,
1899
+ Dt as isMoreSpecificPattern,
1900
+ In as isPaused,
1901
+ qt as isPlaybookAuthoredType,
1902
+ ai as isPublicEmailDomain,
1903
+ Oi as isPublicPath,
1904
+ Wt as isReplyableType,
1905
+ Sn as isRetryable,
1906
+ Xe as isTerminal,
1907
+ pi as isThreadLongEnough,
1908
+ Mn as linkLabel,
1909
+ Nn as localeInstruction,
1910
+ xn as localeName,
1911
+ kn as localesOf,
1912
+ ni as looksLikeEmail,
1913
+ Ei as matchContactToIntents,
1914
+ Pt as matchPublicRoute,
1915
+ zt as messageCountsAs,
1916
+ oi as needsPhoneRegion,
1917
+ cn as normalizeArtifactBlocks,
1918
+ Ht as normalizeBlocks,
1896
1919
  pe as normalizeEmail,
1897
1920
  g as normalizeExample,
1898
- mn as parseActingIdentity,
1899
- kt as pathToRegex,
1900
- en as periodsInRange,
1901
- Jn as phoneSuffix,
1902
- ni as plainTextFromMarkdown,
1903
- gn as playbookActor,
1904
- Lt as publicBasePathFor,
1905
- Si as publicRoutePatterns,
1921
+ En as parseActingIdentity,
1922
+ $t as pathToRegex,
1923
+ on as periodsInRange,
1924
+ ii as phoneSuffix,
1925
+ li as plainTextFromMarkdown,
1926
+ An as playbookActor,
1927
+ wt as publicBasePathFor,
1928
+ ki as publicRoutePatterns,
1906
1929
  N as readPath,
1907
- st as registrableDomain,
1908
- qe as rejectExampleCandidate,
1909
- zn as relatedByDefault,
1910
- It as resolveAccountCapabilities,
1911
- k as resolveActivityText,
1912
- Tt as resolveChannelIntents,
1913
- Ze as resolveSignature,
1914
- we as sanitizeInline,
1930
+ pt as registrableDomain,
1931
+ et as rejectExampleCandidate,
1932
+ ti as relatedByDefault,
1933
+ xt as resolveAccountCapabilities,
1934
+ v as resolveActivityText,
1935
+ Ct as resolveChannelIntents,
1936
+ it as resolveSignature,
1937
+ De as sanitizeInline,
1915
1938
  oe as shareKeyForTeam,
1916
1939
  ae as shareKeyForUser,
1917
- cn as shareKeysForViewer,
1918
- he as stripHtml,
1940
+ mn as shareKeysForViewer,
1941
+ be as stripHtml,
1919
1942
  q as toE164,
1920
- un as toolSourceKinds,
1921
- Je as topicOfferedForTeam,
1922
- Nn as topicsForTeam,
1923
- ze as truncateExample,
1924
- Ne as usageMetricId,
1925
- tn as usageMetrics
1943
+ gn as toolSourceKinds,
1944
+ tt as topicOfferedForTeam,
1945
+ Rn as topicsForTeam,
1946
+ Ze as truncateExample,
1947
+ ke as usageMetricId,
1948
+ sn as usageMetrics
1926
1949
  };