@opencxh/domain 1.152.0 → 1.153.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 Pt = 10, Ut = 10, Kt = 10, Bt = 5, ye = /* @__PURE__ */ new Set([
2
2
  "header",
3
3
  "section",
4
4
  "context",
@@ -14,62 +14,62 @@ function I(e) {
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 Gt(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 a = i;
28
+ if (!ye.has(a.type)) {
29
+ t("unknown block type " + String(a.type));
30
30
  continue;
31
31
  }
32
- switch (i.type) {
32
+ switch (a.type) {
33
33
  case "header":
34
- if (!I(i.text)) {
34
+ if (!I(a.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 (!I(a.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 (!a.url || !a.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(a.fields) && a.fields.length > 10 && (t("more than 10 fields in a section"), a.fields = a.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(a.items) || a.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
+ a.items.length > 10 && (t("more than 10 list items"), a.items = a.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));
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);
62
+ const r = Array.isArray(a.elements) ? a.elements : [], o = r.filter((s) => s && s.action_id && s.invoke && I(s.text));
63
+ if (o.length !== r.length && t("an action without action_id, invoke or text"), o.length === 0) continue;
64
+ o.length > 5 && t("more than 5 actions"), a.elements = o.slice(0, 5);
65
65
  break;
66
66
  }
67
67
  }
68
- n.push(i);
68
+ n.push(a);
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) {
@@ -83,7 +83,7 @@ function L(e) {
83
83
  function S(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
89
  function O(e) {
@@ -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
  },
@@ -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 Ft(e) {
415
415
  return f(e)?.icon ?? "circle";
416
416
  }
417
- function Bt(e) {
417
+ function Ht(e) {
418
418
  return f(e)?.channelKind;
419
419
  }
420
- function Gt(e) {
420
+ function Vt(e) {
421
421
  const t = f(e)?.shape;
422
422
  return t === "message" || t === "note";
423
423
  }
424
- function Ft(e) {
424
+ function jt(e) {
425
425
  return f(e)?.replyable === !0;
426
426
  }
427
- function Ht(e) {
427
+ function Xt(e) {
428
428
  return f(e)?.carriesText === !0;
429
429
  }
430
- function jt(e) {
430
+ function Wt(e) {
431
431
  return f(e)?.countsAs;
432
432
  }
433
- function Vt(e) {
433
+ function Yt(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 zt(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 = {};
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;
461
+ const i = {};
462
+ for (const [r, o] of Object.entries(e.params ?? {}))
463
+ i[r] = N(t, o);
464
+ const a = n(e.key, i);
465
+ return a === e.key ? null : a;
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, a] of Object.entries(e.params ?? {}))
471
+ n[i] = N(t, a);
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 a = this.declared.get(t.type);
532
+ return v(a?.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 Jt = new Te(), D = 140;
556
+ function Ie(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 Qt(e, t) {
561
+ const n = Ae(t?.text, e), i = t ? v(t.text, e, (a) => a) : null;
562
562
  return {
563
563
  activityId: e.id,
564
564
  type: e.type,
565
- snippet: _e(r ?? ye(e)),
565
+ snippet: Ie(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 Zt(e, t, n = []) {
573
+ const i = e.createdAt;
574
+ if (!i) return [];
575
+ const a = new Set(n);
576
+ return e.author.type === "user" && e.author.id && a.add(e.author.id), Object.entries(t).filter(([r, o]) => o >= i && !a.has(r)).map(([r]) => r);
577
577
  }
578
- function Jt(e) {
578
+ function en(e) {
579
579
  return e.createdAt ?? 0;
580
580
  }
581
- const Qt = [
581
+ const tn = [
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 nn(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())}`;
601
+ function Se(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
604
  }
605
- function Ie(e, t) {
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 an(e, t, n) {
611
+ const i = n === "hour" ? Ce : xe, a = [];
612
+ for (let r = Me(e, n); r <= t; r += i)
613
+ a.push(Se(r, n));
614
+ return a;
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 rn(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, on = 256 * 1024, Le = /* @__PURE__ */ new Set([
639
639
  "heading",
640
640
  "paragraph",
641
641
  "list",
@@ -645,125 +645,125 @@ 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;
649
- function re(e) {
648
+ ]), Oe = ["http:", "https:", "mailto:", "tel:"], $e = /^[a-z][a-z0-9+.-]*:/i;
649
+ function ae(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 ? Oe.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, "[", "]");
665
- if (a < 0 || e[a + 1] !== "(") {
664
+ const a = n + (i ? 2 : 1), r = F(e, a, "[", "]");
665
+ if (r < 0 || e[r + 1] !== "(") {
666
666
  t += e[n], n += 1;
667
667
  continue;
668
668
  }
669
- const o = F(e, a + 2, "(", ")");
669
+ const o = F(e, r + 2, "(", ")");
670
670
  if (o < 0) {
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(a, r), l = e.slice(r + 2, o).trim().split(/\s+/)[0] ?? "";
675
+ t += i || !ae(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;
681
- for (let a = t; a < e.length; a += 1) {
682
- if (e[a] === "\\") {
683
- a += 1;
679
+ function F(e, t, n, i) {
680
+ let a = 1;
681
+ for (let r = t; r < e.length; r += 1) {
682
+ if (e[r] === "\\") {
683
+ r += 1;
684
684
  continue;
685
685
  }
686
- if (e[a] === n) i += 1;
687
- else if (e[a] === r && (i -= 1, i === 0))
688
- return a;
686
+ if (e[r] === n) a += 1;
687
+ else if (e[r] === i && (a -= 1, a === 0))
688
+ return r;
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) => ae(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 sn(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 a = i;
718
+ if (!Le.has(a.type)) {
719
+ t("unknown block type " + String(a.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 r = typeof a.block_id == "string" ? { block_id: a.block_id } : {};
723
+ switch (a.type) {
724
724
  case "heading": {
725
- const o = u(i.text);
725
+ const o = u(a.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;
731
- n.push({ ...a, type: "heading", level: s, text: o });
730
+ const s = a.level === 2 || a.level === 3 ? a.level : 1;
731
+ n.push({ ...r, 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(a.text);
736
736
  if (!o) {
737
737
  t("a paragraph without text");
738
738
  continue;
739
739
  }
740
- n.push({ ...a, type: "paragraph", text: o });
740
+ n.push({ ...r, type: "paragraph", text: o });
741
741
  break;
742
742
  }
743
743
  case "quote": {
744
- const o = u(i.text);
744
+ const o = u(a.text);
745
745
  if (!o) {
746
746
  t("a quote without text");
747
747
  continue;
748
748
  }
749
- n.push({ ...a, type: "quote", text: o });
749
+ n.push({ ...r, type: "quote", text: o });
750
750
  break;
751
751
  }
752
752
  case "code": {
753
- const o = Re(i.text);
753
+ const o = Pe(a.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) } : {};
759
- n.push({ ...a, type: "code", ...s, text: o });
758
+ const s = typeof a.lang == "string" ? { lang: a.lang.slice(0, 32) } : {};
759
+ n.push({ ...r, type: "code", ...s, text: o });
760
760
  break;
761
761
  }
762
762
  case "divider":
763
- n.push({ ...a, type: "divider" });
763
+ n.push({ ...r, type: "divider" });
764
764
  break;
765
765
  case "list": {
766
- const o = Array.isArray(i.items) ? i.items : [], s = [];
766
+ const o = Array.isArray(a.items) ? a.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";
782
- n.push({ ...a, type: "list", style: l, items: s });
781
+ const l = a.style === "numbered" ? "numbered" : "bulleted";
782
+ n.push({ ...r, 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(a.columns) ? a.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(a.rows) ? a.rows : [], p = [];
800
800
  for (const c of l) {
801
801
  if (p.length >= K) {
802
802
  t("more than " + K + " table rows");
@@ -804,12 +804,12 @@ 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(a.caption, C);
811
811
  n.push({
812
- ...a,
812
+ ...r,
813
813
  type: "table",
814
814
  columns: s,
815
815
  rows: p,
@@ -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(a.items) ? a.items : [], s = [];
822
822
  for (const l of o) {
823
823
  if (s.length >= G) {
824
824
  t("more than " + G + " kpi items");
@@ -835,20 +835,20 @@ function rn(e, t = () => {
835
835
  t("a kpi block without usable items");
836
836
  continue;
837
837
  }
838
- n.push({ ...a, type: "kpi", items: s });
838
+ n.push({ ...r, type: "kpi", items: s });
839
839
  break;
840
840
  }
841
841
  case "callout": {
842
- const o = u(i.text);
842
+ const o = u(a.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(a.title, 200);
848
848
  n.push({
849
- ...a,
849
+ ...r,
850
850
  type: "callout",
851
- tone: De(i.tone),
851
+ tone: Ue(a.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 ln(e) {
862
862
  return JSON.stringify(e).length;
863
863
  }
864
- function on(e) {
864
+ function cn(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((a, r) => n?.[r] === "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((a) => `| ${a.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,12 +913,12 @@ 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);
921
- a.length > 0 && n.push(a.join(`
916
+ function un(e, t) {
917
+ const n = [], i = e.some((a) => a.type === "heading" && a.level === 1);
918
+ t && !i && n.push(`# ${t}`);
919
+ for (const a of e) {
920
+ const r = Ke(a);
921
+ r.length > 0 && n.push(r.join(`
922
922
  `));
923
923
  }
924
924
  return `${n.join(`
@@ -926,26 +926,26 @@ function sn(e, t) {
926
926
  `)}
927
927
  `;
928
928
  }
929
- const ae = (e) => `user:${e}`, oe = (e) => `team:${e}`;
930
- function ln(e) {
929
+ const re = (e) => `user:${e}`, oe = (e) => `team:${e}`;
930
+ function pn(e) {
931
931
  const t = /* @__PURE__ */ new Set();
932
932
  for (const n of e ?? [])
933
- n?.id && (n.kind === "user" && t.add(ae(n.id)), n.kind === "team" && t.add(oe(n.id)));
933
+ n?.id && (n.kind === "user" && t.add(re(n.id)), n.kind === "team" && t.add(oe(n.id)));
934
934
  return [...t].sort();
935
935
  }
936
- function cn(e, t) {
937
- return [ae(e), ...t.map(oe)];
936
+ function dn(e, t) {
937
+ return [re(e), ...t.map(oe)];
938
938
  }
939
- function un(e) {
939
+ function fn(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 mn(e) {
946
946
  return (e.startsWith("tool:") ? e.slice(5) : e).replace(/__/g, " · ").replace(/\./g, " · ").replace(/_/g, " ");
947
947
  }
948
- const dn = [
948
+ const gn = [
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
+ ], hn = {
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 yn(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), a = t.slice(n + 1).trim();
999
+ if (a) {
1000
+ if (i === "user") return { kind: "user", userId: a };
1001
+ if (i === "team") return { kind: "team", teamId: a };
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 bn(e) {
1008
1008
  switch (e.kind) {
1009
1009
  case "personal":
1010
1010
  return { kind: "user", userId: e.userId };
@@ -1014,28 +1014,28 @@ function gn(e) {
1014
1014
  return { kind: "org" };
1015
1015
  }
1016
1016
  }
1017
- function hn(e) {
1018
- return Ke(e);
1017
+ function En(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 = ["done", "escalated", "failed", "timed_out", "stopped"], He = ["awaiting_approval", "awaiting_reply"];
1021
+ function Ve(e) {
1022
+ return Fe.includes(e);
1023
1023
  }
1024
- function yn(e) {
1025
- return Fe(e);
1024
+ function An(e) {
1025
+ return Ve(e);
1026
1026
  }
1027
- function bn(e) {
1028
- return Ge.includes(e);
1027
+ function _n(e) {
1028
+ return He.includes(e);
1029
1029
  }
1030
- function An(e, t) {
1030
+ function Tn(e, t) {
1031
1031
  const n = e.labels ?? [];
1032
- return n.find((r) => r.locale === t)?.label ?? n[0]?.label ?? e.url;
1032
+ return n.find((i) => i.locale === t)?.label ?? n[0]?.label ?? e.url;
1033
1033
  }
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 };
1034
+ function In(e, t, n) {
1035
+ const i = e.translations ?? [];
1036
+ return i.find((a) => a.locale === t) ?? (n ? i.find((a) => a.locale === n) : void 0) ?? { locale: t };
1037
1037
  }
1038
- const V = [
1038
+ const j = [
1039
1039
  { code: "nl", label: "Nederlands", english: "Dutch" },
1040
1040
  { code: "en", label: "English", english: "English" },
1041
1041
  { code: "de", label: "Deutsch", english: "German" },
@@ -1052,101 +1052,101 @@ const V = [
1052
1052
  ];
1053
1053
  function se(e) {
1054
1054
  const t = (e ?? "").toLowerCase();
1055
- return V.find((n) => n.code === t) ?? V.find((n) => n.code === t.split("-")[0]);
1055
+ return j.find((n) => n.code === t) ?? j.find((n) => n.code === t.split("-")[0]);
1056
1056
  }
1057
- function _n(e) {
1057
+ function Sn(e) {
1058
1058
  return se(e)?.label ?? e;
1059
1059
  }
1060
- function Tn(e) {
1060
+ function Mn(e) {
1061
1061
  const t = se(e);
1062
1062
  return t ? t.english === t.label ? `${t.english} (${t.code})` : `${t.english} — ${t.label} (${t.code})` : e;
1063
1063
  }
1064
1064
  const le = 3;
1065
- function He(e, t) {
1065
+ function je(e, t) {
1066
1066
  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;
1067
+ let i = 1, a = t.get(e)?.parentId;
1068
+ for (; a; ) {
1069
+ if (n.has(a) || (n.add(a), i++, i > le + 1)) return 1 / 0;
1070
+ a = t.get(a)?.parentId;
1071
1071
  }
1072
- return r;
1072
+ return i;
1073
1073
  }
1074
- function In(e, t, n) {
1074
+ function Cn(e, t, n) {
1075
1075
  if (!e) return !0;
1076
1076
  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;
1077
+ const i = new Map(n.map((o) => [o.id, o]));
1078
+ if (!i.has(e) || t && Xe(e, t, i)) return !1;
1079
+ const a = je(e, i), r = t ? ce(t, n) : 1;
1080
+ return a + r <= le;
1081
+ }
1082
+ function Xe(e, t, n) {
1083
+ const i = /* @__PURE__ */ new Set();
1084
+ let a = n.get(e)?.parentId;
1085
+ for (; a; ) {
1086
+ if (a === t) return !0;
1087
+ if (i.has(a)) return !1;
1088
+ i.add(a), a = n.get(a)?.parentId;
1089
1089
  }
1090
1090
  return !1;
1091
1091
  }
1092
1092
  function ce(e, t, n = /* @__PURE__ */ new Set()) {
1093
1093
  if (n.has(e)) return 1;
1094
1094
  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;
1095
+ const i = t.filter((a) => a.parentId === e);
1096
+ return i.length ? 1 + Math.max(...i.map((a) => ce(a.id, t, n))) : 1;
1097
1097
  }
1098
- const Ve = "en";
1099
- function Xe(e) {
1100
- return e.defaultLocale || e.locale || Ve;
1098
+ const We = "en";
1099
+ function Ye(e) {
1100
+ return e.defaultLocale || e.locale || We;
1101
1101
  }
1102
- function Sn(e) {
1102
+ function xn(e) {
1103
1103
  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));
1104
+ for (const i of [Ye(e), ...e.locales ?? []])
1105
+ !i || t.has(i) || (t.add(i), n.push(i));
1106
1106
  return n;
1107
1107
  }
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;
1108
+ function Nn(e, t, n) {
1109
+ const i = e.translations ?? [];
1110
+ return i.find((a) => a.locale === t)?.name ?? (n ? i.find((a) => a.locale === n)?.name : void 0) ?? e.name;
1111
1111
  }
1112
- const We = 20, Ye = 20, x = 300;
1112
+ const ze = 20, qe = 20, x = 300;
1113
1113
  function g(e) {
1114
1114
  return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
1115
1115
  }
1116
- function ze(e) {
1116
+ function Je(e) {
1117
1117
  const t = e.replace(/\s+/g, " ").trim();
1118
1118
  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()}…`;
1121
- }
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);
1126
- if (a >= 0) {
1127
- if (i[a].corrected || !t.corrected) return null;
1128
- const o = [...i];
1129
- return o[a] = { ...o[a], corrected: !0, addedAt: t.addedAt }, X(o);
1119
+ const n = t.slice(0, x), i = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
1120
+ return i > x * 0.6 ? n.slice(0, i + 1) : `${n.trimEnd()}…`;
1121
+ }
1122
+ function vn(e, t) {
1123
+ const n = Je(t.text), i = g(n);
1124
+ if (!i || (e.examples ?? []).some((o) => g(o) === i)) return null;
1125
+ const a = e.exampleCandidates ?? [], r = a.findIndex((o) => g(o.text) === i);
1126
+ if (r >= 0) {
1127
+ if (a[r].corrected || !t.corrected) return null;
1128
+ const o = [...a];
1129
+ return o[r] = { ...o[r], corrected: !0, addedAt: t.addedAt }, X(o);
1130
1130
  }
1131
- return X([{ ...t, text: n }, ...i]).slice(0, Ye);
1131
+ return X([{ ...t, text: n }, ...a]).slice(0, qe);
1132
1132
  }
1133
1133
  function X(e) {
1134
1134
  return [...e].sort((t, n) => Number(n.corrected) - Number(t.corrected) || n.addedAt - t.addedAt);
1135
1135
  }
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) };
1136
+ function kn(e, t) {
1137
+ const n = g(t), i = (e.examples ?? []).filter((r) => r.trim());
1138
+ return { examples: i.some((r) => g(r) === n) ? i : [...i, t].slice(-ze), exampleCandidates: Qe(e, t) };
1139
1139
  }
1140
- function qe(e, t) {
1140
+ function Qe(e, t) {
1141
1141
  const n = g(t);
1142
- return (e.exampleCandidates ?? []).filter((r) => g(r.text) !== n);
1142
+ return (e.exampleCandidates ?? []).filter((i) => g(i.text) !== n);
1143
1143
  }
1144
- function Je(e, t) {
1144
+ function Ze(e, t) {
1145
1145
  const n = e.ownerScope;
1146
1146
  return n ? n.kind === "org" ? !0 : n.kind === "team" ? !!t && n.teamId === t : !1 : !1;
1147
1147
  }
1148
- function Nn(e, t) {
1149
- return e.filter((n) => Je(n, t));
1148
+ function Ln(e, t) {
1149
+ return e.filter((n) => Ze(n, t));
1150
1150
  }
1151
1151
  const ue = [
1152
1152
  {
@@ -1242,69 +1242,69 @@ const ue = [
1242
1242
  function _(e) {
1243
1243
  return ue.find((t) => t.id === e);
1244
1244
  }
1245
- function kn(e) {
1245
+ function On(e) {
1246
1246
  return _(e)?.label ?? e;
1247
1247
  }
1248
- function vn(e, t = "gpt-5-mini") {
1248
+ function $n(e, t = "gpt-5-mini") {
1249
1249
  return _(e)?.defaultModel ?? t;
1250
1250
  }
1251
- function Ln(e) {
1251
+ function Rn(e) {
1252
1252
  return ue.filter((t) => t.capabilities.includes(e));
1253
1253
  }
1254
- function On(e) {
1254
+ function wn(e) {
1255
1255
  const t = _(e);
1256
1256
  return !!t && !t.baseUrl;
1257
1257
  }
1258
- function $n(e, t) {
1258
+ function Dn(e, t) {
1259
1259
  return t === "text" ? !0 : _(e)?.attachmentKinds?.includes(t) === !0;
1260
1260
  }
1261
- function wn(e, t) {
1261
+ function Pn(e, t) {
1262
1262
  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";
1263
+ const n = W(e.hardLimitNanos), i = W(e.softLimitNanos);
1264
+ return n !== void 0 && t >= n ? "hard" : i !== void 0 && t >= i ? "soft" : "ok";
1265
1265
  }
1266
1266
  function W(e) {
1267
1267
  return typeof e == "number" ? e : void 0;
1268
1268
  }
1269
- function Qe(e, t = "month") {
1269
+ function et(e, t = "month") {
1270
1270
  const n = new Date(e);
1271
1271
  return Date.UTC(n.getUTCFullYear(), n.getUTCMonth(), 1);
1272
1272
  }
1273
- function Rn(e, t = "month") {
1274
- const n = new Date(Qe(e, t));
1273
+ function Un(e, t = "month") {
1274
+ const n = new Date(et(e, t));
1275
1275
  return `${n.getUTCFullYear()}-${String(n.getUTCMonth() + 1).padStart(2, "0")}`;
1276
1276
  }
1277
- const Dn = /* @__PURE__ */ new Set(["mail", "message"]);
1278
- function Ze(e, t) {
1277
+ const Kn = /* @__PURE__ */ new Set(["mail", "message"]);
1278
+ function tt(e, t) {
1279
1279
  const n = e.settings?.signatures?.[t];
1280
1280
  return !n || !n.enabled || !n.body || n.body.trim() === "" ? null : n;
1281
1281
  }
1282
- function Pn(e, t, n, r = "html") {
1282
+ function Bn(e, t, n, i = "html") {
1283
1283
  if (!e) return n;
1284
- const i = Ze(e, t);
1285
- return i ? `${n}${r === "text" ? `
1284
+ const a = tt(e, t);
1285
+ return a ? `${n}${i === "text" ? `
1286
1286
 
1287
- ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${i.body}` : n;
1287
+ ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${a.body}` : n;
1288
1288
  }
1289
- function Un(e) {
1289
+ function Gn(e) {
1290
1290
  return e.endpoints ?? [];
1291
1291
  }
1292
- const Kn = (e) => !!e.assignedUserId || !!e.assignedInboxId, Bn = (e) => e.status === "closed", Gn = (e) => ({
1292
+ const Fn = (e) => !!e.assignedUserId || !!e.assignedInboxId, Hn = (e) => e.status === "closed", Vn = (e) => ({
1293
1293
  urgent: 10,
1294
1294
  high: 5,
1295
1295
  normal: 2,
1296
1296
  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) {
1297
+ })[e.priority] || 0, jn = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1298
+ function Xn(e, t) {
1299
1299
  return e.lastActivityAt ? !(e.seenBy ?? []).includes(t) : !1;
1300
1300
  }
1301
- const jn = 1e3, Vn = 2e3, Xn = 500, Wn = 12e3, Yn = 4e3, et = ["contact", "company"];
1302
- function zn(e) {
1301
+ const Wn = 1e3, Yn = 2e3, zn = 500, qn = 12e3, Jn = 4e3, nt = ["contact", "company"];
1302
+ function Qn(e) {
1303
1303
  if (!e) return !1;
1304
1304
  const t = e.slice(0, e.indexOf(":"));
1305
- return et.includes(t);
1305
+ return nt.includes(t);
1306
1306
  }
1307
- const v = {
1307
+ const k = {
1308
1308
  // The lower bounds are deliberately generous: service ranges (0800/0900) are
1309
1309
  // shorter than geographic numbers, and a too-strict minimum silently drops them.
1310
1310
  // An over-permissive key is harmless — it simply matches nothing.
@@ -1327,38 +1327,38 @@ const v = {
1327
1327
  PL: { callingCode: "48", nsnMin: 9, nsnMax: 9 },
1328
1328
  US: { callingCode: "1", nsnMin: 10, nsnMax: 10 },
1329
1329
  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))
1330
+ }, it = "NL", at = 15, rt = 8, ot = Array.from(
1331
+ new Set(Object.values(k).map((e) => e.callingCode))
1332
1332
  ).sort((e, t) => t.length - e.length);
1333
1333
  function Y(e) {
1334
1334
  if (e)
1335
- return v[e.trim().toUpperCase()];
1335
+ return k[e.trim().toUpperCase()];
1336
1336
  }
1337
- function E(e, t) {
1337
+ function A(e, t) {
1338
1338
  return e.length >= t.nsnMin && e.length <= t.nsnMax;
1339
1339
  }
1340
1340
  function z(e) {
1341
- if (e.length > nt) return null;
1342
- for (const t of rt) {
1341
+ if (e.length > at) return null;
1342
+ for (const t of ot) {
1343
1343
  if (!e.startsWith(t)) continue;
1344
1344
  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}`;
1345
+ for (const i of Object.values(k)) {
1346
+ if (i.callingCode !== t) continue;
1347
+ const a = i.trunkPrefix, r = a && n.startsWith(a) ? n.slice(a.length) : n;
1348
+ if (A(r, i)) return `+${t}${r}`;
1349
1349
  }
1350
1350
  return null;
1351
1351
  }
1352
- return e.length < it ? null : `+${e}`;
1352
+ return e.length < rt ? null : `+${e}`;
1353
1353
  }
1354
- function at(e) {
1354
+ function st(e) {
1355
1355
  let t = e.trim();
1356
1356
  const n = t.match(/^(sips?|tel|whatsapp):/i);
1357
1357
  n && (t = t.slice(n[0].length));
1358
- const r = t.indexOf("@");
1359
- return r >= 0 && (t = t.slice(0, r)), t.trim();
1358
+ const i = t.indexOf("@");
1359
+ return i >= 0 && (t = t.slice(0, i)), t.trim();
1360
1360
  }
1361
- function qn(e) {
1361
+ function Zn(e) {
1362
1362
  if (!e) return !1;
1363
1363
  const t = e.indexOf("@");
1364
1364
  if (t <= 0) return !1;
@@ -1367,26 +1367,26 @@ function qn(e) {
1367
1367
  }
1368
1368
  function q(e, t) {
1369
1369
  if (!e) return null;
1370
- const n = at(e);
1370
+ const n = st(e);
1371
1371
  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);
1372
+ const i = n.startsWith("+"), a = n.replace(/\D/g, "");
1377
1373
  if (!a) return null;
1378
- 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;
1374
+ if (i) return z(a);
1375
+ if (a.startsWith("00")) return z(a.slice(2));
1376
+ const r = Y(t) ?? Y(it);
1377
+ if (!r) return null;
1378
+ const o = r.trunkPrefix;
1379
+ if (o && a.startsWith(o)) {
1380
+ const s = a.slice(o.length);
1381
+ return A(s, r) ? `+${r.callingCode}${s}` : null;
1382
1382
  }
1383
- if (i.startsWith(a.callingCode)) {
1384
- const s = i.slice(a.callingCode.length);
1385
- if (E(s, a)) return `+${a.callingCode}${s}`;
1383
+ if (a.startsWith(r.callingCode)) {
1384
+ const s = a.slice(r.callingCode.length);
1385
+ if (A(s, r)) return `+${r.callingCode}${s}`;
1386
1386
  }
1387
- return !o && E(i, a) ? `+${a.callingCode}${i}` : null;
1387
+ return !o && A(a, r) ? `+${r.callingCode}${a}` : null;
1388
1388
  }
1389
- function Jn(e, t = 9) {
1389
+ function ei(e, t = 9) {
1390
1390
  const n = (e ?? "").replace(/\D/g, "");
1391
1391
  return n.length < t ? null : n.slice(-t);
1392
1392
  }
@@ -1394,14 +1394,14 @@ function pe(e) {
1394
1394
  if (!e) return null;
1395
1395
  const t = e.trim().toLowerCase(), n = t.lastIndexOf("@");
1396
1396
  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}`;
1397
+ const i = t.slice(0, n).split("+")[0], a = t.slice(n + 1);
1398
+ return !i || !a.includes(".") ? null : `${i}@${a}`;
1399
1399
  }
1400
- function Qn(e) {
1400
+ function ti(e) {
1401
1401
  const t = pe(e);
1402
1402
  return t ? t.slice(t.lastIndexOf("@") + 1) : null;
1403
1403
  }
1404
- const ot = /* @__PURE__ */ new Set([
1404
+ const lt = /* @__PURE__ */ new Set([
1405
1405
  "co.uk",
1406
1406
  "org.uk",
1407
1407
  "gov.uk",
@@ -1411,14 +1411,14 @@ const ot = /* @__PURE__ */ new Set([
1411
1411
  "com.br",
1412
1412
  "co.za"
1413
1413
  ]);
1414
- function st(e) {
1414
+ function ct(e) {
1415
1415
  if (!e) return null;
1416
1416
  const t = e.trim().toLowerCase().replace(/\.$/, "").split(".").filter(Boolean);
1417
1417
  if (t.length < 2) return null;
1418
1418
  const n = t.slice(-2).join(".");
1419
- return ot.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
1419
+ return lt.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
1420
1420
  }
1421
- const lt = /* @__PURE__ */ new Set([
1421
+ const ut = /* @__PURE__ */ new Set([
1422
1422
  "gmail.com",
1423
1423
  "googlemail.com",
1424
1424
  "outlook.com",
@@ -1463,44 +1463,44 @@ const lt = /* @__PURE__ */ new Set([
1463
1463
  "proximus.be",
1464
1464
  "scarlet.be"
1465
1465
  ]);
1466
- function Zn(e) {
1467
- const t = st(e);
1468
- return t ? lt.has(t) : !1;
1466
+ function ni(e) {
1467
+ const t = ct(e);
1468
+ return t ? ut.has(t) : !1;
1469
1469
  }
1470
- function ei(e) {
1470
+ function ii(e) {
1471
1471
  if (!e) return !1;
1472
1472
  const t = e.trim().toLowerCase();
1473
1473
  return t === "tel" || t === "sms" || t === "whatsapp" || t === "fax";
1474
1474
  }
1475
- function ti(e, t, n) {
1475
+ function ai(e, t, n) {
1476
1476
  if (!e || !t) return null;
1477
- const r = e.trim().toLowerCase();
1478
- if (r === "tel" || r === "sms" || r === "whatsapp") {
1479
- const a = q(t, n);
1480
- return a ? `tel:${a}` : null;
1477
+ const i = e.trim().toLowerCase();
1478
+ if (i === "tel" || i === "sms" || i === "whatsapp") {
1479
+ const r = q(t, n);
1480
+ return r ? `tel:${r}` : null;
1481
1481
  }
1482
- if (r === "fax") {
1483
- const a = q(t, n);
1484
- return a ? `fax:${a}` : null;
1482
+ if (i === "fax") {
1483
+ const r = q(t, n);
1484
+ return r ? `fax:${r}` : null;
1485
1485
  }
1486
- if (r === "mailto" || r === "email") {
1487
- const a = pe(t);
1488
- return a ? `mailto:${a}` : null;
1486
+ if (i === "mailto" || i === "email") {
1487
+ const r = pe(t);
1488
+ return r ? `mailto:${r}` : null;
1489
1489
  }
1490
- const i = t.trim().toLowerCase();
1491
- return i ? `${r}:${i}` : null;
1490
+ const a = t.trim().toLowerCase();
1491
+ return a ? `${i}:${a}` : null;
1492
1492
  }
1493
- const ct = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, ut = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
1494
- function ni(e) {
1493
+ const pt = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, dt = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
1494
+ function ri(e) {
1495
1495
  if (typeof e != "string" || !e) return "";
1496
1496
  let t = e;
1497
1497
  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
1498
  `).map(
1499
1499
  (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
1500
  ).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();
1501
+ `), t = t.replace(pt, "$2"), t = t.replace(dt, "$2"), t = t.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), t = t.replace(/`([^`\n]+)`/g, "$1"), t.replace(/\s+/g, " ").trim();
1502
1502
  }
1503
- const pt = [
1503
+ const ft = [
1504
1504
  /<blockquote/i,
1505
1505
  /class="?gmail_quote/i,
1506
1506
  // Gmail quote container
@@ -1513,12 +1513,12 @@ const pt = [
1513
1513
  // Outlook underscore separator before "From:"
1514
1514
  /\bOn\b[\s\S]{0,200}?\bwrote:/i
1515
1515
  // 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) {
1516
+ ], J = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, mt = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
1517
+ function gt(e) {
1518
1518
  const t = e.split(`
1519
1519
  `);
1520
1520
  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)))
1521
+ if (mt.test(t[n]) || J.test(t[n]) && t.slice(n + 1, n + 4).some((i) => J.test(i)))
1522
1522
  return t.slice(0, n).join(`
1523
1523
  `).trim();
1524
1524
  return e;
@@ -1543,26 +1543,26 @@ function te(e) {
1543
1543
 
1544
1544
  `).trim();
1545
1545
  }
1546
- function ii(e) {
1546
+ function oi(e) {
1547
1547
  if (typeof e != "string" || !e) return "";
1548
1548
  let t = e.length;
1549
- for (const a of pt) {
1550
- const o = e.search(a);
1549
+ for (const r of ft) {
1550
+ const o = e.search(r);
1551
1551
  o >= 0 && o < t && (t = o);
1552
1552
  }
1553
1553
  const n = e.slice(0, t);
1554
- let r = te(ee(Q(n)));
1555
- return r || (r = te(ee(Q(e)))), ft(r) || r;
1554
+ let i = te(ee(Q(n)));
1555
+ return i || (i = te(ee(Q(e)))), gt(i) || i;
1556
1556
  }
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));
1557
+ const ht = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, yt = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1558
+ function si(e, t) {
1559
+ return !!(e && ht.test(e) || t && yt.test(t));
1560
1560
  }
1561
- const ht = 3, yt = 600;
1562
- function ai(e, t) {
1563
- return e >= ht || t >= yt;
1561
+ const bt = 3, Et = 600;
1562
+ function li(e, t) {
1563
+ return e >= bt || t >= Et;
1564
1564
  }
1565
- const bt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), At = /* @__PURE__ */ new Set([
1565
+ const At = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), _t = /* @__PURE__ */ new Set([
1566
1566
  "text/plain",
1567
1567
  "text/markdown",
1568
1568
  "text/csv",
@@ -1571,77 +1571,77 @@ const bt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "ima
1571
1571
  "application/xml",
1572
1572
  "text/xml"
1573
1573
  ]);
1574
- function Et(e) {
1574
+ function Tt(e) {
1575
1575
  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";
1576
+ return t ? At.has(t) ? "image" : t === "application/pdf" ? "pdf" : _t.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
1577
1577
  }
1578
- const h = 1024 * 1024, _t = {
1578
+ const h = 1024 * 1024, It = {
1579
1579
  image: 5 * h,
1580
1580
  pdf: 20 * h,
1581
1581
  text: 1 * h,
1582
1582
  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;
1583
+ }, ci = 25 * h, ui = 5;
1584
+ function pi(e, t) {
1585
+ const n = Tt(e);
1586
+ return n === "unsupported" ? "unsupported" : t > It[n] ? "too-large" : null;
1587
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));
1588
+ function St(e, t) {
1589
+ const n = new Set(e.disabledIntents ?? []), i = e.intentOverrides ?? {}, a = t.intents.filter((o) => !n.has(o.intent)).map((o) => Ct(o, i[o.intent]));
1590
+ if (!e.extraIntents || e.extraIntents.length === 0) return a;
1591
+ const r = new Set(a.map((o) => o.intent));
1592
1592
  for (const o of e.extraIntents)
1593
- a.has(o.intent) || (i.push(o), a.add(o.intent));
1594
- return i;
1593
+ r.has(o.intent) || (a.push(o), r.add(o.intent));
1594
+ return a;
1595
1595
  }
1596
- function It(e, t) {
1596
+ function Mt(e, t) {
1597
1597
  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;
1598
+ for (const i of e.intents) {
1599
+ if (!i.togglable) continue;
1600
+ const a = t?.[i.intent];
1601
+ n[i.intent] = a ?? i.defaultEnabled ?? !0;
1602
1602
  }
1603
1603
  return n;
1604
1604
  }
1605
- function ci(e, t) {
1606
- const n = It(e, t);
1607
- return Object.entries(n).filter(([, r]) => !r).map(([r]) => r);
1605
+ function di(e, t) {
1606
+ const n = Mt(e, t);
1607
+ return Object.entries(n).filter(([, i]) => !i).map(([i]) => i);
1608
1608
  }
1609
- function St(e, t) {
1609
+ function Ct(e, t) {
1610
1610
  return t ? {
1611
1611
  intent: t.intent ?? e.intent,
1612
1612
  targetSchemes: t.targetSchemes ?? e.targetSchemes,
1613
1613
  transport: t.transport ?? e.transport
1614
1614
  } : e;
1615
1615
  }
1616
- function ui(e, t) {
1616
+ function fi(e, t) {
1617
1617
  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 });
1618
+ for (const i of e) {
1619
+ if (!i.enabled) continue;
1620
+ const a = t[i.providerId];
1621
+ if (a)
1622
+ for (const r of St(i, a))
1623
+ n.push({ channel: i, description: a, capability: r });
1624
1624
  }
1625
1625
  return n;
1626
1626
  }
1627
- function pi(e, t) {
1627
+ function mi(e, t) {
1628
1628
  return t.filter((n) => n.capability.intent === e);
1629
1629
  }
1630
- function Mt(e, t) {
1630
+ function xt(e, t) {
1631
1631
  return t.filter((n) => n.capability.targetSchemes.includes(e));
1632
1632
  }
1633
- function di(e, t) {
1634
- return Mt(e.scheme, t);
1633
+ function gi(e, t) {
1634
+ return xt(e.scheme, t);
1635
1635
  }
1636
- function fi(e, t, n) {
1637
- const r = [];
1638
- for (const i of e)
1639
- 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;
1636
+ function hi(e, t, n) {
1637
+ const i = [];
1638
+ for (const a of e)
1639
+ for (const r of n)
1640
+ r.capability.intent === t && r.capability.targetSchemes.includes(a.scheme) && i.push({ channelIntent: r, endpoint: a });
1641
+ return i;
1642
1642
  }
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 = {
1643
+ var Nt = /* @__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))(Nt || {});
1644
+ const vt = {
1645
1645
  mailto: "mail",
1646
1646
  sip: "tel",
1647
1647
  tel: "tel",
@@ -1663,10 +1663,10 @@ const xt = {
1663
1663
  id: "note",
1664
1664
  custom: "note"
1665
1665
  };
1666
- function mi(e) {
1667
- return e ? xt[e] ?? "note" : "note";
1666
+ function yi(e) {
1667
+ return e ? vt[e] ?? "note" : "note";
1668
1668
  }
1669
- const gi = "message_window", hi = "message_templates", yi = {
1669
+ const bi = "message_window", Ei = "message_templates", Ai = {
1670
1670
  // E-mail
1671
1671
  FROM: "from",
1672
1672
  TO: "to",
@@ -1683,83 +1683,94 @@ const gi = "message_window", hi = "message_templates", yi = {
1683
1683
  // Voice/conference
1684
1684
  HOST: "host",
1685
1685
  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";
1686
+ }, _i = (e, t) => ({ intent: e, ...t }), Ti = "folder_management", Ii = "remote_search", Si = { ok: !1, code: "UNSUPPORTED", message: "Provider does not support this op" }, de = "auth";
1687
1687
  function fe(e) {
1688
1688
  const t = typeof e == "string" ? e.match(/apps\/([^/?#]+)/) : null;
1689
1689
  return t ? t[1] : null;
1690
1690
  }
1691
- function Ti(e) {
1691
+ function Mi(e) {
1692
1692
  const t = fe(e);
1693
1693
  return t ? t !== de : typeof e == "string" && e.startsWith("/wake");
1694
1694
  }
1695
- function Ii(e) {
1695
+ function Ci(e) {
1696
1696
  return typeof e != "string" || e === "" || e === "/" ? !0 : fe(e) === de;
1697
1697
  }
1698
- function Nt(e) {
1698
+ function kt(e) {
1699
1699
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1700
1700
  }
1701
- function kt(e) {
1702
- const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : "/" + Nt(r)).join("");
1701
+ function Lt(e) {
1702
+ const n = e.split("/").filter(Boolean).map((i) => i.startsWith(":") ? i.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : "/" + kt(i)).join("");
1703
1703
  return new RegExp(`^${n}\\/?$`);
1704
1704
  }
1705
- function vt(e, t) {
1706
- const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean), i = {};
1707
- return n.forEach((a, o) => {
1708
- if (a.startsWith(":")) {
1709
- const s = a.endsWith("?") ? a.slice(1, -1) : a.slice(1), l = r[o];
1710
- l && (i[s] = l);
1705
+ function Ot(e, t) {
1706
+ const n = e.split("/").filter(Boolean), i = t.split("/").filter(Boolean), a = {};
1707
+ return n.forEach((r, o) => {
1708
+ if (r.startsWith(":")) {
1709
+ const s = r.endsWith("?") ? r.slice(1, -1) : r.slice(1), l = i[o];
1710
+ l && (a[s] = l);
1711
1711
  }
1712
- }), i;
1712
+ }), a;
1713
1713
  }
1714
- function Lt(e) {
1714
+ function $t(e) {
1715
1715
  return e.publicBasePath ?? `/apps/${e.name}`;
1716
1716
  }
1717
- function Si(e) {
1717
+ function xi(e) {
1718
1718
  const t = [];
1719
1719
  for (const n of e) {
1720
1720
  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;
1721
+ const i = $t(n);
1722
+ for (const a of n.routes ?? []) {
1723
+ if (!a.public) continue;
1724
+ const r = a.path === "/" ? "" : a.path;
1725
1725
  t.push({
1726
1726
  appName: n.name,
1727
- resource: i.resource,
1728
- pattern: `${r}${a}`,
1729
- props: i.props
1727
+ resource: a.resource,
1728
+ pattern: `${i}${r}`,
1729
+ props: a.props
1730
1730
  });
1731
1731
  }
1732
1732
  }
1733
1733
  return t;
1734
1734
  }
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(":");
1739
- if (a !== o) return o;
1735
+ function Rt(e, t) {
1736
+ const n = e.split("/").filter(Boolean), i = t.split("/").filter(Boolean);
1737
+ for (let a = 0; a < Math.min(n.length, i.length); a++) {
1738
+ const r = n[a].startsWith(":"), o = i[a].startsWith(":");
1739
+ if (r !== o) return o;
1740
1740
  }
1741
- return n.length > r.length;
1741
+ return n.length > i.length;
1742
1742
  }
1743
- function $t(e, t) {
1743
+ function wt(e, t) {
1744
1744
  if (typeof e != "string") return null;
1745
1745
  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;
1746
+ for (const i of t)
1747
+ Lt(i.pattern).test(e) && (!n || Rt(i.pattern, n.pattern)) && (n = i);
1748
+ return n ? { ...n, params: { ...n.props, ...Ot(n.pattern, e) } } : null;
1749
+ }
1750
+ function Ni(e, t) {
1751
+ return wt(e, t) !== null;
1752
+ }
1753
+ const me = 9e4, Dt = ["out_of_office"], ge = (e) => Dt.includes(e);
1754
+ function vi(e, t, n) {
1755
+ const i = n - e < me, a = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
1756
+ if (!a?.status) return { online: i, status: i ? "available" : "offline" };
1757
+ const r = a.status;
1758
+ return !i && !ge(r) ? { online: !1, status: "offline" } : { online: i, status: r, message: a.message };
1749
1759
  }
1750
- function Mi(e, t) {
1751
- return $t(e, t) !== null;
1760
+ function ki(e, t) {
1761
+ const n = t - e.lastSeenAt < me, i = n || ge(e.status) ? e.status : "offline";
1762
+ return n === e.online && i === e.status ? e : { ...e, online: n, status: i };
1752
1763
  }
1753
- const Ci = 9e4, xi = "installation-id";
1764
+ const Li = "installation-id";
1754
1765
  export {
1755
1766
  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,
1767
+ It as AI_ATTACHMENT_LIMITS,
1768
+ ui as AI_ATTACHMENT_MAX_PER_TURN,
1769
+ ci as AI_ATTACHMENT_TURN_BUDGET,
1759
1770
  ue as AI_VENDORS,
1760
- ve as ALLOWED_LINK_SCHEMES,
1771
+ Oe as ALLOWED_LINK_SCHEMES,
1761
1772
  P as ARTIFACT_MAX_BLOCKS,
1762
- nn as ARTIFACT_MAX_BODY_BYTES,
1773
+ on as ARTIFACT_MAX_BODY_BYTES,
1763
1774
  C as ARTIFACT_MAX_CELL_LEN,
1764
1775
  G as ARTIFACT_MAX_KPI_ITEMS,
1765
1776
  U as ARTIFACT_MAX_LIST_ITEMS,
@@ -1767,160 +1778,163 @@ export {
1767
1778
  K as ARTIFACT_MAX_TABLE_ROWS,
1768
1779
  ie as ARTIFACT_MAX_TEXT_LEN,
1769
1780
  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,
1781
+ Te as ActivityTypeRegistry,
1782
+ Jt as BUILT_IN_ONLY,
1783
+ hn as CLASSIFY_VARS,
1784
+ tn as CORE_DIMENSIONS,
1785
+ Nt as CommunicationScheme,
1786
+ Jn as DEFAULT_MEMORY_BUDGET,
1787
+ it as DEFAULT_PHONE_REGION,
1788
+ Ti as FEATURE_FOLDER_MANAGEMENT,
1789
+ Ii as FEATURE_REMOTE_SEARCH,
1790
+ Li as INSTALLATION_HEADER,
1791
+ Ai as InteractionParticipantRole,
1792
+ We as KB_FALLBACK_LOCALE,
1793
+ j as KB_LOCALES,
1794
+ Bt as MAX_ACTIONS,
1795
+ Pt as MAX_BLOCKS,
1785
1796
  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,
1797
+ Ut as MAX_FIELDS,
1798
+ Kt as MAX_LIST_ITEMS,
1799
+ Wn as MAX_MEMORY_BROWSE,
1800
+ qn as MAX_MEMORY_BUDGET,
1801
+ Yn as MAX_MEMORY_CHARS,
1802
+ qe as MAX_TOPIC_CANDIDATES,
1803
+ ze as MAX_TOPIC_EXAMPLES,
1793
1804
  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,
1805
+ zn as MIN_MEMORY_BUDGET,
1806
+ He as PAUSED_RUN_STATUSES,
1807
+ k as PHONE_REGIONS,
1808
+ me as PRESENCE_ONLINE_WINDOW_MS,
1809
+ Dt as PRESENCE_SURVIVES_OFFLINE,
1810
+ Ei as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
1811
+ bi as PROVIDER_FEATURE_MESSAGE_WINDOW,
1812
+ ut as PUBLIC_EMAIL_DOMAINS,
1813
+ nt as RELATED_SUBJECT_KINDS,
1814
+ Kn as SIGNATURE_INTENTS,
1815
+ Et as SUMMARY_MIN_LAST_CHARS,
1816
+ bt as SUMMARY_MIN_MESSAGES,
1817
+ Fe as TERMINAL_RUN_STATUSES,
1818
+ gn as TRIGGER_VARS,
1819
+ Si as UNSUPPORTED,
1820
+ Ne as USAGE_DIMENSIONS,
1821
+ ve as USAGE_DIMENSION_IDS,
1822
+ kn as acceptExampleCandidate,
1823
+ Ge as actingIdentityKey,
1824
+ Ft as activityIconOf,
1825
+ qt as activityJoinUrl,
1826
+ Ee as activitySnippet,
1827
+ Ae as activityTextParams,
1828
+ zt as activityTimelineText,
1829
+ en as activityTimestamp,
1818
1830
  f as activityTypeInfo,
1819
- hn as actorKey,
1820
- Cn as addExampleCandidate,
1821
- Et as aiAttachmentKind,
1822
- li as aiAttachmentRejection,
1831
+ En as actorKey,
1832
+ vn as addExampleCandidate,
1833
+ ki as agePresenceEntry,
1834
+ Tt as aiAttachmentKind,
1835
+ pi as aiAttachmentRejection,
1823
1836
  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,
1837
+ Un as aiBudgetPeriodKey,
1838
+ et as aiBudgetPeriodStart,
1839
+ Pn as aiBudgetState,
1840
+ Dn as aiVendorAcceptsAttachment,
1841
+ $n as aiVendorDefaultModel,
1842
+ On as aiVendorLabel,
1843
+ wn as aiVendorNeedsBaseUrl,
1844
+ Rn as aiVendorsWith,
1832
1845
  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,
1846
+ Bn as applySignature,
1847
+ ln as artifactBodyBytes,
1848
+ cn as artifactOutline,
1849
+ un as artifactToMarkdown,
1850
+ Qt as buildActivityPreview,
1851
+ fi as buildChannelIntents,
1852
+ pn as buildShareKeys,
1853
+ Cn as canNestUnder,
1854
+ Xt as carriesText,
1855
+ Nn as categoryLabel,
1856
+ yi as channelKindForScheme,
1857
+ Ht as channelKindOf,
1858
+ oi as cleanMessageText,
1859
+ Ye as defaultLocaleOf,
1860
+ _i as defineIntent,
1861
+ je as depthOf,
1862
+ vi as derivePresence,
1863
+ di as disabledIntentsFromCapabilities,
1864
+ ti as emailDomain,
1865
+ ai as endpointKey,
1866
+ Ot as extractParams,
1867
+ gi as filterByEndpoint,
1868
+ mi as filterByIntent,
1869
+ xt as filterByTargetScheme,
1856
1870
  _ 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,
1871
+ nn as flattenLocales,
1872
+ Me as floorToPeriod,
1873
+ Be as formatActingIdentity,
1874
+ Se as formatPeriod,
1875
+ Zt as getActivitySeenUserIds,
1876
+ Gn as getContactEndpoints,
1877
+ jn as getShortTitle,
1878
+ Vn as getUrgencyScore,
1865
1879
  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,
1880
+ In as helpCenterText,
1881
+ mn as humanizeAction,
1882
+ Fn as isAssigned,
1883
+ Hn as isClosed,
1884
+ Mi as isDeepLink,
1885
+ Xe as isDescendant,
1886
+ Xn as isInteractionUnseen,
1887
+ Ci as isLandingPath,
1888
+ si as isLikelyBulk,
1889
+ Vt as isMessageType,
1890
+ Rt as isMoreSpecificPattern,
1891
+ _n as isPaused,
1892
+ Yt as isPlaybookAuthoredType,
1893
+ ni as isPublicEmailDomain,
1894
+ Ni as isPublicPath,
1895
+ jt as isReplyableType,
1896
+ An as isRetryable,
1897
+ Ve as isTerminal,
1898
+ li as isThreadLongEnough,
1899
+ Tn as linkLabel,
1900
+ Mn as localeInstruction,
1901
+ Sn as localeName,
1902
+ xn as localesOf,
1903
+ Zn as looksLikeEmail,
1904
+ hi as matchContactToIntents,
1905
+ wt as matchPublicRoute,
1906
+ Wt as messageCountsAs,
1907
+ ii as needsPhoneRegion,
1908
+ sn as normalizeArtifactBlocks,
1909
+ Gt as normalizeBlocks,
1896
1910
  pe as normalizeEmail,
1897
1911
  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,
1912
+ yn as parseActingIdentity,
1913
+ Lt as pathToRegex,
1914
+ an as periodsInRange,
1915
+ ei as phoneSuffix,
1916
+ ri as plainTextFromMarkdown,
1917
+ bn as playbookActor,
1918
+ $t as publicBasePathFor,
1919
+ xi as publicRoutePatterns,
1906
1920
  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,
1921
+ ct as registrableDomain,
1922
+ Qe as rejectExampleCandidate,
1923
+ Qn as relatedByDefault,
1924
+ Mt as resolveAccountCapabilities,
1925
+ v as resolveActivityText,
1926
+ St as resolveChannelIntents,
1927
+ tt as resolveSignature,
1928
+ De as sanitizeInline,
1915
1929
  oe as shareKeyForTeam,
1916
- ae as shareKeyForUser,
1917
- cn as shareKeysForViewer,
1918
- he as stripHtml,
1930
+ re as shareKeyForUser,
1931
+ dn as shareKeysForViewer,
1932
+ be as stripHtml,
1919
1933
  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
1934
+ fn as toolSourceKinds,
1935
+ Ze as topicOfferedForTeam,
1936
+ Ln as topicsForTeam,
1937
+ Je as truncateExample,
1938
+ ke as usageMetricId,
1939
+ rn as usageMetrics
1926
1940
  };