@opencxh/domain 1.221.0 → 1.224.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 $r = 10, Lr = 10, Pr = 10, Ur = 5, Ve = /* @__PURE__ */ new Set([
1
+ const Ur = 10, Kr = 10, jr = 10, Br = 5, ze = /* @__PURE__ */ new Set([
2
2
  "header",
3
3
  "section",
4
4
  "context",
@@ -14,7 +14,7 @@ function R(e) {
14
14
  const t = e;
15
15
  return typeof t.key == "string" || typeof t.value == "string";
16
16
  }
17
- function Kr(e, t = () => {
17
+ function Hr(e, t = () => {
18
18
  }) {
19
19
  if (!Array.isArray(e)) return [];
20
20
  const n = [];
@@ -25,7 +25,7 @@ function Kr(e, t = () => {
25
25
  }
26
26
  if (!r || typeof r != "object") continue;
27
27
  const i = r;
28
- if (!Ve.has(i.type)) {
28
+ if (!ze.has(i.type)) {
29
29
  t(`unknown block type ${String(i.type)}`);
30
30
  continue;
31
31
  }
@@ -69,20 +69,20 @@ function Kr(e, t = () => {
69
69
  }
70
70
  return n;
71
71
  }
72
- const ze = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, Xe = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
73
- function Ye(e) {
72
+ const Xe = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, Ye = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
73
+ function qe(e) {
74
74
  if (typeof e != "string" || !e) return "";
75
75
  let t = e;
76
76
  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(`
77
77
  `).map(
78
78
  (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,}$/, "")
79
79
  ).join(`
80
- `), t = t.replace(ze, "$2"), t = t.replace(Xe, "$2"), t = t.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), t = t.replace(/`([^`\n]+)`/g, "$1"), t.replace(/\s+/g, " ").trim();
80
+ `), t = t.replace(Xe, "$2"), t = t.replace(Ye, "$2"), t = t.replace(/~~(?=\S)([\s\S]*?\S)~~/g, "$1"), t = t.replace(/`([^`\n]+)`/g, "$1"), t.replace(/\s+/g, " ").trim();
81
81
  }
82
- function qe(e) {
82
+ function Je(e) {
83
83
  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();
84
84
  }
85
- function w(e) {
85
+ function I(e) {
86
86
  if (!e || e < 0) return "";
87
87
  const t = Math.floor(e / 60), n = Math.floor(e % 60);
88
88
  return `${t}:${n.toString().padStart(2, "0")}`;
@@ -133,7 +133,7 @@ const A = {
133
133
  shape: "event",
134
134
  channelKind: "voice",
135
135
  icon: "phone",
136
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${w(e.payload.duration)})` : ""}`,
136
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${I(e.payload.duration)})` : ""}`,
137
137
  timeline: (e) => `Call ended${W(e.payload.duration)}`
138
138
  },
139
139
  VOICE_CALL_MISSED: {
@@ -188,7 +188,7 @@ const A = {
188
188
  shape: "event",
189
189
  channelKind: "video",
190
190
  icon: "video",
191
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${w(e.payload.duration)})` : ""}`,
191
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${I(e.payload.duration)})` : ""}`,
192
192
  timeline: () => "Video call ended"
193
193
  },
194
194
  VIDEO_CALL_MISSED: {
@@ -290,7 +290,7 @@ const A = {
290
290
  shape: "event",
291
291
  channelKind: "chat",
292
292
  icon: "message-circle",
293
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${w(e.payload.duration)})` : ""}`,
293
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${I(e.payload.duration)})` : ""}`,
294
294
  timeline: (e) => `${V(e.payload.callType)} ended${W(e.payload.duration)}`,
295
295
  joinUrl: (e) => e.payload.joinUrl
296
296
  },
@@ -380,7 +380,7 @@ const A = {
380
380
  MEETING_ENDED: {
381
381
  shape: "event",
382
382
  icon: "calendar",
383
- snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${w(e.payload.duration)})` : ""}`,
383
+ snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${I(e.payload.duration)})` : ""}`,
384
384
  timeline: () => "Meeting ended"
385
385
  },
386
386
  MEETING_PARTICIPANT_JOINED: {
@@ -449,56 +449,62 @@ const A = {
449
449
  }
450
450
  };
451
451
  function z(e) {
452
- const t = e.payload, n = Ye(t.bodyText).trim() || t.bodySnippet?.trim() || qe(t.body ?? "");
452
+ const t = e.payload, n = qe(t.bodyText).trim() || t.bodySnippet?.trim() || Je(t.body ?? "");
453
453
  return t.subject ? `${t.subject} — ${n}` : n;
454
454
  }
455
- function h(e) {
455
+ function m(e) {
456
456
  return A[e];
457
457
  }
458
- function Br(e) {
459
- return h(e)?.icon ?? "circle";
458
+ function Gr(e) {
459
+ return m(e)?.icon ?? "circle";
460
460
  }
461
- function Hr(e) {
462
- return h(e)?.channelKind;
461
+ function Fr(e) {
462
+ return m(e)?.channelKind;
463
463
  }
464
464
  function _e(e) {
465
465
  return e === "message" || e === "note";
466
466
  }
467
- function jr(e) {
468
- return _e(h(e)?.shape);
467
+ function Wr(e) {
468
+ return _e(m(e)?.shape);
469
469
  }
470
- function Gr(e) {
471
- return h(e)?.replyable === !0;
470
+ function Te(e) {
471
+ return e === "note";
472
472
  }
473
- function Fr(e) {
474
- return h(e)?.carriesText === !0;
473
+ function Vr(e) {
474
+ return Te(m(e)?.shape);
475
475
  }
476
- function Je(e) {
477
- return h(e)?.countsAs;
476
+ function zr(e) {
477
+ return m(e)?.replyable === !0;
478
478
  }
479
- function Wr(e) {
480
- return h(e)?.playbookAuthored === !0;
479
+ function Xr(e) {
480
+ return m(e)?.carriesText === !0;
481
481
  }
482
- function Vr(e) {
483
- return h(e)?.connected === !0;
482
+ function Ze(e) {
483
+ return m(e)?.countsAs;
484
484
  }
485
- function zr(e) {
486
- const t = h(e);
485
+ function Yr(e) {
486
+ return m(e)?.playbookAuthored === !0;
487
+ }
488
+ function qr(e) {
489
+ return m(e)?.connected === !0;
490
+ }
491
+ function Jr(e) {
492
+ const t = m(e);
487
493
  return t?.shape === "artifact" && t?.carriesText === !0;
488
494
  }
489
- function Ze(e) {
490
- const t = h(e.type)?.snippet;
495
+ function Qe(e) {
496
+ const t = m(e.type)?.snippet;
491
497
  return t ? t(e) : "";
492
498
  }
493
- function Xr(e, t) {
494
- const n = h(e.type)?.timeline;
499
+ function Zr(e, t) {
500
+ const n = m(e.type)?.timeline;
495
501
  return n ? n(e, t) : e.type.replace(/_/g, " ").toLowerCase();
496
502
  }
497
- function Yr(e) {
498
- const t = h(e.type)?.joinUrl;
503
+ function Qr(e) {
504
+ const t = m(e.type)?.joinUrl;
499
505
  return t ? t(e) : void 0;
500
506
  }
501
- function B(e, t) {
507
+ function j(e, t) {
502
508
  let n = e;
503
509
  for (const r of t.split(".")) {
504
510
  if (n == null || typeof n != "object") return "";
@@ -506,42 +512,42 @@ function B(e, t) {
506
512
  }
507
513
  return n == null ? "" : typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
508
514
  }
509
- function H(e, t, n) {
515
+ function B(e, t, n) {
510
516
  if (e === void 0) return null;
511
517
  if (typeof e == "string") return e || null;
512
518
  if ("value" in e)
513
- return B(t, e.value) || null;
519
+ return j(t, e.value) || null;
514
520
  const r = {};
515
521
  for (const [o, a] of Object.entries(e.params ?? {}))
516
- r[o] = B(t, a);
522
+ r[o] = j(t, a);
517
523
  const i = n(e.key, r);
518
524
  return i === e.key ? null : i;
519
525
  }
520
- function Qe(e, t) {
526
+ function et(e, t) {
521
527
  if (!e || typeof e == "string" || "value" in e) return null;
522
528
  const n = {};
523
529
  for (const [r, i] of Object.entries(e.params ?? {}))
524
- n[r] = B(t, i);
530
+ n[r] = j(t, i);
525
531
  return { key: e.key, params: n };
526
532
  }
527
533
  const X = 140;
528
- function et(e) {
534
+ function tt(e) {
529
535
  const t = e.trim();
530
536
  return t.length <= X ? t : `${t.slice(0, X - 1).trimEnd()}…`;
531
537
  }
532
- function qr(e, t) {
533
- const n = Qe(t?.text, e), r = t ? H(t.text, e, (i) => i) : null;
538
+ function ei(e, t) {
539
+ const n = et(t?.text, e), r = t ? B(t.text, e, (i) => i) : null;
534
540
  return {
535
541
  activityId: e.id,
536
542
  type: e.type,
537
- snippet: et(r ?? Ze(e)),
543
+ snippet: tt(r ?? Qe(e)),
538
544
  authorName: e.author?.name ?? "",
539
545
  direction: e.direction,
540
546
  createdAt: e.createdAt ?? Date.now(),
541
547
  ...n ? { snippetKey: n.key, snippetParams: n.params } : {}
542
548
  };
543
549
  }
544
- const tt = (e) => e;
550
+ const nt = (e) => e;
545
551
  function Y(e) {
546
552
  const t = A[e];
547
553
  return {
@@ -573,8 +579,8 @@ function q(e) {
573
579
  displayNameKey: e.displayNameKey
574
580
  };
575
581
  }
576
- class nt {
577
- constructor(t = [], n = tt) {
582
+ class rt {
583
+ constructor(t = [], n = nt) {
578
584
  this.translate = n;
579
585
  for (const r of t)
580
586
  r?.type && (r.type in A || this.declared.has(r.type) || this.declared.set(r.type, r));
@@ -599,14 +605,14 @@ class nt {
599
605
  const r = A[t.type];
600
606
  if (r?.timeline) return r.timeline(t, n);
601
607
  const i = this.declared.get(t.type);
602
- return H(i?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
608
+ return B(i?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
603
609
  }
604
610
  /** The line for the inbox list. Empty when the type has nothing to show. */
605
611
  snippet(t) {
606
612
  const n = A[t.type];
607
613
  if (n?.snippet) return n.snippet(t);
608
614
  const r = this.declared.get(t.type);
609
- return H(r?.text, t, this.translate) ?? "";
615
+ return B(r?.text, t, this.translate) ?? "";
610
616
  }
611
617
  /** The descriptor as it arrived; needed to store `text` as a key. */
612
618
  descriptor(t) {
@@ -633,6 +639,10 @@ class nt {
633
639
  isMessage(t) {
634
640
  return _e(this.get(t)?.shape);
635
641
  }
642
+ /** Folds into the list under the message it answers. See {@link isNoteShape}. */
643
+ nestsUnderParent(t) {
644
+ return Te(this.get(t)?.shape);
645
+ }
636
646
  /** Can a person reply to this? Notes cannot — those go nowhere. */
637
647
  isReplyable(t) {
638
648
  return this.get(t)?.replyable === !0;
@@ -659,23 +669,23 @@ class nt {
659
669
  return this.translate;
660
670
  }
661
671
  }
662
- const Jr = new nt();
663
- function Zr(e, t, n = []) {
672
+ const ti = new rt();
673
+ function ni(e, t, n = []) {
664
674
  const r = e.createdAt;
665
675
  if (!r) return [];
666
676
  const i = new Set(n);
667
677
  return e.author.type === "user" && e.author.id && i.add(e.author.id), Object.entries(t).filter(([o, a]) => a >= r && !i.has(o)).map(([o]) => o);
668
678
  }
669
- function rt(e) {
679
+ function it(e) {
670
680
  return e.createdAt ?? 0;
671
681
  }
672
- function Qr(e) {
682
+ function ri(e) {
673
683
  return e.type === "EMAIL_RECEIVED" || e.type === "EMAIL_SENT";
674
684
  }
675
- function ei(e) {
685
+ function ii(e) {
676
686
  return e.type === "CHAT_MESSAGE_SENT" || e.type === "CHAT_MESSAGE_RECEIVED";
677
687
  }
678
- const Te = [
688
+ const we = [
679
689
  {
680
690
  id: "openai",
681
691
  attachmentKinds: ["image", "pdf"],
@@ -765,26 +775,26 @@ const Te = [
765
775
  defaultModel: "default"
766
776
  }
767
777
  ];
768
- function N(e) {
769
- return Te.find((t) => t.id === e);
778
+ function x(e) {
779
+ return we.find((t) => t.id === e);
770
780
  }
771
- function ti(e) {
772
- return N(e)?.label ?? e;
781
+ function oi(e) {
782
+ return x(e)?.label ?? e;
773
783
  }
774
- function ni(e, t = "gpt-5-mini") {
775
- return N(e)?.defaultModel ?? t;
784
+ function ai(e, t = "gpt-5-mini") {
785
+ return x(e)?.defaultModel ?? t;
776
786
  }
777
- function ri(e) {
778
- return Te.filter((t) => t.capabilities.includes(e));
787
+ function si(e) {
788
+ return we.filter((t) => t.capabilities.includes(e));
779
789
  }
780
- function ii(e) {
781
- const t = N(e);
790
+ function ci(e) {
791
+ const t = x(e);
782
792
  return !!t && !t.baseUrl;
783
793
  }
784
- function oi(e, t) {
785
- return t === "text" ? !0 : N(e)?.attachmentKinds?.includes(t) === !0;
794
+ function li(e, t) {
795
+ return t === "text" ? !0 : x(e)?.attachmentKinds?.includes(t) === !0;
786
796
  }
787
- function ai(e, t) {
797
+ function ui(e, t) {
788
798
  if (!e.enabled) return "ok";
789
799
  const n = J(e.hardLimitNanos), r = J(e.softLimitNanos);
790
800
  return n !== void 0 && t >= n ? "hard" : r !== void 0 && t >= r ? "soft" : "ok";
@@ -792,18 +802,18 @@ function ai(e, t) {
792
802
  function J(e) {
793
803
  return typeof e == "number" ? e : void 0;
794
804
  }
795
- function it(e, t = "month") {
805
+ function ot(e, t = "month") {
796
806
  const n = new Date(e);
797
807
  return Date.UTC(n.getUTCFullYear(), n.getUTCMonth(), 1);
798
808
  }
799
- function si(e, t = "month") {
800
- const n = new Date(it(e, t));
809
+ function di(e, t = "month") {
810
+ const n = new Date(ot(e, t));
801
811
  return `${n.getUTCFullYear()}-${String(n.getUTCMonth() + 1).padStart(2, "0")}`;
802
812
  }
803
- function ci(e) {
813
+ function pi(e) {
804
814
  return e?.listeningEnabled !== !1;
805
815
  }
806
- const li = [
816
+ const fi = [
807
817
  { id: "agent", label: "Agent", labelSource: "user" },
808
818
  { id: "team", label: "Team", labelSource: "team" },
809
819
  { id: "inbox", label: "Inbox", labelSource: "inbox" },
@@ -816,44 +826,44 @@ const li = [
816
826
  function $(e) {
817
827
  return e < 10 ? `0${e}` : `${e}`;
818
828
  }
819
- function ot(e, t) {
829
+ function at(e, t) {
820
830
  const n = new Date(e), r = `${n.getUTCFullYear()}-${$(n.getUTCMonth() + 1)}-${$(n.getUTCDate())}`;
821
831
  return t === "day" ? r : `${r}T${$(n.getUTCHours())}`;
822
832
  }
823
- function at(e, t) {
833
+ function st(e, t) {
824
834
  const n = new Date(e);
825
835
  return n.setUTCMinutes(0, 0, 0), t === "day" && n.setUTCHours(0), n.getTime();
826
836
  }
827
- const st = 36e5, ct = 864e5;
828
- function ui(e, t, n) {
829
- const r = n === "hour" ? st : ct, i = [];
830
- for (let o = at(e, n); o <= t; o += r)
831
- i.push(ot(o, n));
837
+ const ct = 36e5, lt = 864e5;
838
+ function mi(e, t, n) {
839
+ const r = n === "hour" ? ct : lt, i = [];
840
+ for (let o = st(e, n); o <= t; o += r)
841
+ i.push(at(o, n));
832
842
  return i;
833
843
  }
834
- const lt = [
844
+ const ut = [
835
845
  { id: "resource", label: "Resource", labelSource: "raw" },
836
846
  { id: "origin", label: "Herkomst", labelSource: "raw" }
837
- ], ut = lt.map((e) => e.id);
838
- function dt(e, t) {
847
+ ], dt = ut.map((e) => e.id);
848
+ function pt(e, t) {
839
849
  return `${e}.usage.${t}`;
840
850
  }
841
- function di(e, t) {
851
+ function gi(e, t) {
842
852
  return t.map((n) => ({
843
- id: dt(e, n.unit),
853
+ id: pt(e, n.unit),
844
854
  label: n.label,
845
855
  category: "Verbruik",
846
856
  valueType: n.valueType ?? "count",
847
857
  aggregation: "sum",
848
858
  supportedDimensions: [
849
859
  "provider",
850
- ...ut,
860
+ ...dt,
851
861
  ...n.extraDimensions ?? [],
852
862
  "time"
853
863
  ]
854
864
  }));
855
865
  }
856
- const Ie = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), Z = 200, Q = 100, ee = 200, te = 12, ne = 4, we = 4e3, L = 500, pi = 256 * 1024, pt = /* @__PURE__ */ new Set([
866
+ const Ie = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), Z = 200, Q = 100, ee = 200, te = 12, ne = 4, Me = 4e3, L = 500, hi = 256 * 1024, ft = /* @__PURE__ */ new Set([
857
867
  "heading",
858
868
  "paragraph",
859
869
  "list",
@@ -863,15 +873,15 @@ const Ie = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]
863
873
  "table",
864
874
  "kpi",
865
875
  "callout"
866
- ]), ft = ["http:", "https:", "mailto:", "tel:"], mt = /^[a-z][a-z0-9+.-]*:/i;
867
- function Me(e) {
876
+ ]), mt = ["http:", "https:", "mailto:", "tel:"], gt = /^[a-z][a-z0-9+.-]*:/i;
877
+ function Ce(e) {
868
878
  const t = e.trim().replace(/^<|>$/g, "");
869
879
  if (!t) return !1;
870
- const n = mt.exec(t)?.[0];
871
- return n ? ft.includes(n.toLowerCase()) : !t.startsWith("//");
880
+ const n = gt.exec(t)?.[0];
881
+ return n ? mt.includes(n.toLowerCase()) : !t.startsWith("//");
872
882
  }
873
- const gt = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
874
- function ht(e) {
883
+ const ht = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
884
+ function yt(e) {
875
885
  let t = "", n = 0;
876
886
  for (; n < e.length; ) {
877
887
  const r = e[n] === "!" && e[n + 1] === "[";
@@ -890,7 +900,7 @@ function ht(e) {
890
900
  continue;
891
901
  }
892
902
  const s = e.slice(i, o), d = e.slice(o + 2, a).trim().split(/\s+/)[0] ?? "";
893
- t += r || !Me(d) ? s : e.slice(n, a + 1), n = a + 1;
903
+ t += r || !Ce(d) ? s : e.slice(n, a + 1), n = a + 1;
894
904
  }
895
905
  return t;
896
906
  }
@@ -907,22 +917,22 @@ function re(e, t, n, r) {
907
917
  }
908
918
  return -1;
909
919
  }
910
- function yt(e) {
911
- return ht(e).replace(
912
- gt,
913
- (t, n, r) => Me(r) ? t : ""
920
+ function bt(e) {
921
+ return yt(e).replace(
922
+ ht,
923
+ (t, n, r) => Ce(r) ? t : ""
914
924
  );
915
925
  }
916
- function g(e, t = we) {
917
- return typeof e == "string" ? yt(e).slice(0, t) : "";
926
+ function h(e, t = Me) {
927
+ return typeof e == "string" ? bt(e).slice(0, t) : "";
918
928
  }
919
- function bt(e, t = we) {
929
+ function At(e, t = Me) {
920
930
  return typeof e == "string" ? e.slice(0, t) : "";
921
931
  }
922
- function At(e, t = "info") {
932
+ function Et(e, t = "info") {
923
933
  return typeof e == "string" && Ie.has(e) ? e : t;
924
934
  }
925
- function fi(e, t = () => {
935
+ function yi(e, t = () => {
926
936
  }) {
927
937
  if (!Array.isArray(e)) return [];
928
938
  const n = [];
@@ -933,14 +943,14 @@ function fi(e, t = () => {
933
943
  }
934
944
  if (!r || typeof r != "object") continue;
935
945
  const i = r;
936
- if (!pt.has(i.type)) {
946
+ if (!ft.has(i.type)) {
937
947
  t(`unknown block type ${String(i.type)}`);
938
948
  continue;
939
949
  }
940
950
  const o = typeof i.block_id == "string" ? { block_id: i.block_id } : {};
941
951
  switch (i.type) {
942
952
  case "heading": {
943
- const a = g(i.text);
953
+ const a = h(i.text);
944
954
  if (!a) {
945
955
  t("a heading without text");
946
956
  continue;
@@ -950,7 +960,7 @@ function fi(e, t = () => {
950
960
  break;
951
961
  }
952
962
  case "paragraph": {
953
- const a = g(i.text);
963
+ const a = h(i.text);
954
964
  if (!a) {
955
965
  t("a paragraph without text");
956
966
  continue;
@@ -959,7 +969,7 @@ function fi(e, t = () => {
959
969
  break;
960
970
  }
961
971
  case "quote": {
962
- const a = g(i.text);
972
+ const a = h(i.text);
963
973
  if (!a) {
964
974
  t("a quote without text");
965
975
  continue;
@@ -968,7 +978,7 @@ function fi(e, t = () => {
968
978
  break;
969
979
  }
970
980
  case "code": {
971
- const a = bt(i.text);
981
+ const a = At(i.text);
972
982
  if (!a) {
973
983
  t("a code block without text");
974
984
  continue;
@@ -987,10 +997,10 @@ function fi(e, t = () => {
987
997
  t(`more than ${Q} list items`);
988
998
  break;
989
999
  }
990
- const b = g(f?.text);
1000
+ const b = h(f?.text);
991
1001
  if (!b) continue;
992
- const m = g(f?.lead, 200);
993
- s.push(m ? { lead: m, text: b } : { text: b });
1002
+ const g = h(f?.lead, 200);
1003
+ s.push(g ? { lead: g, text: b } : { text: b });
994
1004
  }
995
1005
  if (s.length === 0) {
996
1006
  t("a list without usable items");
@@ -1002,28 +1012,28 @@ function fi(e, t = () => {
1002
1012
  }
1003
1013
  case "table": {
1004
1014
  const a = Array.isArray(i.columns) ? i.columns : [], s = [];
1005
- for (const m of a) {
1015
+ for (const g of a) {
1006
1016
  if (s.length >= te) {
1007
1017
  t(`more than ${te} table columns`);
1008
1018
  break;
1009
1019
  }
1010
- const I = g(m?.label, L), x = m?.align === "right" ? "right" : void 0;
1011
- s.push(x ? { label: I, align: x } : { label: I });
1020
+ const w = h(g?.label, L), N = g?.align === "right" ? "right" : void 0;
1021
+ s.push(N ? { label: w, align: N } : { label: w });
1012
1022
  }
1013
1023
  if (s.length === 0) {
1014
1024
  t("a table without columns");
1015
1025
  continue;
1016
1026
  }
1017
1027
  const d = Array.isArray(i.rows) ? i.rows : [], f = [];
1018
- for (const m of d) {
1028
+ for (const g of d) {
1019
1029
  if (f.length >= ee) {
1020
1030
  t(`more than ${ee} table rows`);
1021
1031
  break;
1022
1032
  }
1023
- const I = Array.isArray(m) ? m : [];
1024
- f.push(s.map((x, We) => g(I[We], L)));
1033
+ const w = Array.isArray(g) ? g : [];
1034
+ f.push(s.map((N, Ve) => h(w[Ve], L)));
1025
1035
  }
1026
- const b = g(i.caption, L);
1036
+ const b = h(i.caption, L);
1027
1037
  n.push({
1028
1038
  ...o,
1029
1039
  type: "table",
@@ -1040,11 +1050,11 @@ function fi(e, t = () => {
1040
1050
  t(`more than ${ne} kpi items`);
1041
1051
  break;
1042
1052
  }
1043
- const f = g(d?.value, 40), b = g(d?.label, 80);
1053
+ const f = h(d?.value, 40), b = h(d?.label, 80);
1044
1054
  if (!f || !b) continue;
1045
- const m = d?.tone;
1055
+ const g = d?.tone;
1046
1056
  s.push(
1047
- typeof m == "string" && Ie.has(m) ? { value: f, label: b, tone: m } : { value: f, label: b }
1057
+ typeof g == "string" && Ie.has(g) ? { value: f, label: b, tone: g } : { value: f, label: b }
1048
1058
  );
1049
1059
  }
1050
1060
  if (s.length === 0) {
@@ -1055,16 +1065,16 @@ function fi(e, t = () => {
1055
1065
  break;
1056
1066
  }
1057
1067
  case "callout": {
1058
- const a = g(i.text);
1068
+ const a = h(i.text);
1059
1069
  if (!a) {
1060
1070
  t("a callout without text");
1061
1071
  continue;
1062
1072
  }
1063
- const s = g(i.title, 200);
1073
+ const s = h(i.title, 200);
1064
1074
  n.push({
1065
1075
  ...o,
1066
1076
  type: "callout",
1067
- tone: At(i.tone),
1077
+ tone: Et(i.tone),
1068
1078
  ...s ? { title: s } : {},
1069
1079
  text: a
1070
1080
  });
@@ -1074,10 +1084,10 @@ function fi(e, t = () => {
1074
1084
  }
1075
1085
  return n;
1076
1086
  }
1077
- function mi(e) {
1087
+ function bi(e) {
1078
1088
  return JSON.stringify(e).length;
1079
1089
  }
1080
- function gi(e) {
1090
+ function Ai(e) {
1081
1091
  return {
1082
1092
  blocks: e.length,
1083
1093
  types: e.map((t) => t.type),
@@ -1095,7 +1105,7 @@ function oe(e, t, n) {
1095
1105
  ...t.map((i) => `| ${i.map(ie).join(" | ")} |`)
1096
1106
  ];
1097
1107
  }
1098
- function Et(e) {
1108
+ function St(e) {
1099
1109
  switch (e.type) {
1100
1110
  case "heading":
1101
1111
  return [`${"#".repeat(e.level)} ${e.text}`];
@@ -1129,11 +1139,11 @@ function Et(e) {
1129
1139
  return (e.title ? `**${e.title}** ${e.text}` : e.text).split(/\r?\n/).map((n) => `> ${n}`);
1130
1140
  }
1131
1141
  }
1132
- function hi(e, t) {
1142
+ function Ei(e, t) {
1133
1143
  const n = [], r = e.some((i) => i.type === "heading" && i.level === 1);
1134
1144
  t && !r && n.push(`# ${t}`);
1135
1145
  for (const i of e) {
1136
- const o = Et(i);
1146
+ const o = St(i);
1137
1147
  o.length > 0 && n.push(o.join(`
1138
1148
  `));
1139
1149
  }
@@ -1142,41 +1152,45 @@ function hi(e, t) {
1142
1152
  `)}
1143
1153
  `;
1144
1154
  }
1145
- const ke = (e) => `user:${e}`, Ce = (e) => `team:${e}`;
1146
- function yi(e) {
1155
+ const ke = (e) => `user:${e}`, Oe = (e) => `team:${e}`;
1156
+ function Si(e) {
1147
1157
  const t = /* @__PURE__ */ new Set();
1148
1158
  for (const n of e ?? [])
1149
- n?.id && (n.kind === "user" && t.add(ke(n.id)), n.kind === "team" && t.add(Ce(n.id)));
1159
+ n?.id && (n.kind === "user" && t.add(ke(n.id)), n.kind === "team" && t.add(Oe(n.id)));
1150
1160
  return [...t].sort();
1151
1161
  }
1152
- function bi(e, t) {
1153
- return [ke(e), ...t.map(Ce)];
1162
+ function _i(e, t) {
1163
+ return [ke(e), ...t.map(Oe)];
1154
1164
  }
1155
- function Ai(e) {
1165
+ function Ti(e) {
1156
1166
  const t = /* @__PURE__ */ new Set();
1157
1167
  for (const n of e ?? [])
1158
1168
  n?.kind && t.add(n.kind);
1159
1169
  return [...t];
1160
1170
  }
1161
- const St = ["done", "escalated"], Ei = ["open", "waiting"];
1162
- function Si(e) {
1163
- return St.includes(e);
1171
+ const _t = ["done", "escalated"], wi = ["open", "waiting"];
1172
+ function Ii(e) {
1173
+ return _t.includes(e);
1164
1174
  }
1165
- const _t = "assignment";
1166
- function _i(e) {
1167
- return `${_t}:${e}`;
1175
+ const Tt = "assignment";
1176
+ function Mi(e) {
1177
+ return `${Tt}:${e}`;
1168
1178
  }
1169
- function Ti(e, t, n) {
1179
+ function Ci(e, t, n, r) {
1170
1180
  if (e.direction === "inbound") return !0;
1171
1181
  if (e.author?.type === "user" && e.author.id === t) return !1;
1172
- const r = e.payload?.mentions;
1173
- return Array.isArray(r) && r.includes(t) ? !0 : n === "reply";
1182
+ const i = e.payload?.mentions;
1183
+ return Array.isArray(i) && i.includes(t) || r && r === t ? !0 : n === "reply";
1174
1184
  }
1175
- function Ii(e) {
1185
+ function ki(e) {
1186
+ const { targetAuthorId: t, reactorId: n, agentId: r, on: i } = e;
1187
+ return !i || !t || t !== r ? !1 : n !== r;
1188
+ }
1189
+ function Oi(e) {
1176
1190
  return e.subjectKind && e.subjectId ? { type: e.subjectKind, id: e.subjectId } : void 0;
1177
1191
  }
1178
- const Tt = 12;
1179
- function wi(e, t, n = Tt) {
1192
+ const wt = 12;
1193
+ function vi(e, t, n = wt) {
1180
1194
  const r = t + 1;
1181
1195
  return e ? e.kind === "done" ? { status: "done", waitingOn: null, turns: r, reason: e.note } : e.kind === "escalate" ? { status: "escalated", waitingOn: null, turns: r, reason: e.reason } : r >= n ? {
1182
1196
  status: "escalated",
@@ -1190,37 +1204,37 @@ function wi(e, t, n = Tt) {
1190
1204
  reason: "de agent rondde zijn beurt af zonder te zeggen wat er moet gebeuren (wachten, afronden of overdragen)"
1191
1205
  };
1192
1206
  }
1193
- const Mi = /* @__PURE__ */ new Set(["mail", "message"]);
1207
+ const xi = /* @__PURE__ */ new Set(["mail", "message"]);
1194
1208
  function It(e, t) {
1195
1209
  const n = e.settings?.signatures?.[t];
1196
1210
  return !n?.enabled || !n.body || n.body.trim() === "" ? null : n;
1197
1211
  }
1198
- function ki(e, t, n, r = "html") {
1212
+ function Ni(e, t, n, r = "html") {
1199
1213
  if (!e) return n;
1200
1214
  const i = It(e, t);
1201
1215
  return i ? `${n}${r === "text" ? `
1202
1216
 
1203
1217
  ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${i.body}` : n;
1204
1218
  }
1205
- function Ci(e) {
1219
+ function Ri(e) {
1206
1220
  return e.endpoints ?? [];
1207
1221
  }
1208
- const wt = 36e5, Mt = 864e5, E = -1 / 0, Oi = (e) => e.score > E, O = {
1222
+ const Mt = 36e5, Ct = 864e5, E = -1 / 0, Di = (e) => e.score > E, O = {
1209
1223
  urgent: 40,
1210
1224
  high: 25,
1211
1225
  normal: 10,
1212
1226
  low: 0
1213
1227
  };
1214
- function vi(e) {
1228
+ function $i(e) {
1215
1229
  return Object.fromEntries(e.map((t) => [t.resourceId, t]));
1216
1230
  }
1217
- const kt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, Oe = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1218
- function Ct(e, t) {
1219
- return !!(e && kt.test(e) || t && Oe.test(t));
1231
+ const kt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, ve = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1232
+ function Ot(e, t) {
1233
+ return !!(e && kt.test(e) || t && ve.test(t));
1220
1234
  }
1221
- const Ot = 3, vt = 600;
1222
- function Ni(e, t) {
1223
- return e >= Ot || t >= vt;
1235
+ const vt = 3, xt = 600;
1236
+ function Li(e, t) {
1237
+ return e >= vt || t >= xt;
1224
1238
  }
1225
1239
  const Nt = [
1226
1240
  "list-unsubscribe",
@@ -1232,7 +1246,7 @@ const Nt = [
1232
1246
  "feedback-id",
1233
1247
  "x-mailer"
1234
1248
  ];
1235
- function xi(e) {
1249
+ function Pi(e) {
1236
1250
  const t = {};
1237
1251
  for (const n of e) {
1238
1252
  const r = n.name?.toLowerCase();
@@ -1240,26 +1254,26 @@ function xi(e) {
1240
1254
  }
1241
1255
  return t;
1242
1256
  }
1243
- const xt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i, Rt = /(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;
1244
- function Ri(e) {
1257
+ const Rt = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i, Dt = /(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;
1258
+ function Ui(e) {
1245
1259
  const t = e.headers ?? {}, n = e.from?.email, r = t["auto-submitted"]?.toLowerCase();
1246
- if (r && r !== "no" || t["x-auto-response-suppress"] || n && xt.test(n))
1260
+ if (r && r !== "no" || t["x-auto-response-suppress"] || n && Rt.test(n))
1247
1261
  return "automated";
1248
1262
  const i = t.precedence?.toLowerCase();
1249
- if (t["list-unsubscribe"] || t["list-unsubscribe-post"] || t["list-id"] || i === "bulk" || i === "list" || e.body && Oe.test(e.body) || n && Rt.test(n))
1263
+ if (t["list-unsubscribe"] || t["list-unsubscribe-post"] || t["list-id"] || i === "bulk" || i === "list" || e.body && ve.test(e.body) || n && Dt.test(n))
1250
1264
  return "marketing";
1251
1265
  }
1252
- function Dt(e, t) {
1266
+ function $t(e, t) {
1253
1267
  return e.lastActivityAt ? !(e.seenBy ?? []).includes(t) : !1;
1254
1268
  }
1255
- const $t = ["open"], Lt = 1e3, Pt = {
1269
+ const Lt = ["open"], Pt = 1e3, Ut = {
1256
1270
  urgent: 1,
1257
1271
  high: 4,
1258
1272
  normal: 8,
1259
1273
  low: 24
1260
- }, Ut = 72;
1261
- function Kt(e) {
1262
- return e.lastActivityAt ?? (e.createdAt ? new Date(rt(e)).getTime() : 0);
1274
+ }, Kt = 72;
1275
+ function jt(e) {
1276
+ return e.lastActivityAt ?? (e.createdAt ? new Date(it(e)).getTime() : 0);
1263
1277
  }
1264
1278
  function Bt(e, t) {
1265
1279
  return Ht(t.remindersById?.[e.id], e, t.now);
@@ -1267,54 +1281,54 @@ function Bt(e, t) {
1267
1281
  function Ht(e, t, n) {
1268
1282
  return !e || e.remindAt <= n ? !1 : !((t.lastActivityAt ?? 0) > e.parkedAt && t.lastActivityPreview?.direction === "inbound");
1269
1283
  }
1270
- const ve = (e) => Je(e) === "outbound_message", Ne = (e) => $t.includes(e);
1271
- function j(e, t) {
1272
- return Math.max(0, (t - Kt(e)) / wt);
1284
+ const xe = (e) => Ze(e) === "outbound_message", Ne = (e) => Lt.includes(e);
1285
+ function H(e, t) {
1286
+ return Math.max(0, (t - jt(e)) / Mt);
1273
1287
  }
1274
- function jt(e, t) {
1288
+ function Gt(e, t) {
1275
1289
  const n = e.assignedInboxId ? t?.[e.assignedInboxId] : void 0;
1276
- return typeof n == "number" && n > 0 ? n : Pt[e.priority ?? "normal"];
1290
+ return typeof n == "number" && n > 0 ? n : Ut[e.priority ?? "normal"];
1277
1291
  }
1278
- function Di(e) {
1292
+ function Ki(e) {
1279
1293
  const t = {};
1280
1294
  for (const n of e)
1281
1295
  typeof n.slaHours == "number" && n.slaHours > 0 && (t[n.id] = n.slaHours);
1282
1296
  return t;
1283
1297
  }
1284
- function $i(e, t, n) {
1285
- return !Ne(e.status) || e.firstResponseAt ? !1 : j(e, t) > jt(e, n);
1298
+ function ji(e, t, n) {
1299
+ return !Ne(e.status) || e.firstResponseAt ? !1 : H(e, t) > Gt(e, n);
1286
1300
  }
1287
- function Gt(e, t) {
1301
+ function Ft(e, t) {
1288
1302
  const n = e.lastActivityPreview;
1289
- return n?.direction !== "outbound" || !ve(n.type) ? !1 : j(e, t) < Ut;
1303
+ return n?.direction !== "outbound" || !xe(n.type) ? !1 : H(e, t) < Kt;
1290
1304
  }
1291
- function Li(e, t) {
1305
+ function Bi(e, t) {
1292
1306
  if (!Ne(e.status)) return { score: E, reasons: [] };
1293
1307
  if (e.snoozedTill && e.snoozedTill > t.now) return { score: E, reasons: [] };
1294
- if (Gt(e, t.now)) return { score: E, reasons: [] };
1308
+ if (Ft(e, t.now)) return { score: E, reasons: [] };
1295
1309
  if (Bt(e, t)) return { score: E, reasons: [] };
1296
1310
  let n = 0;
1297
1311
  const r = [], i = e.priority ?? "normal";
1298
- O[i] > 0 && (n += O[i], r.push(`priority:${i}`)), Dt(e, t.userId) && (n += 20, r.push("unseen")), e.assignedUserId && e.assignedUserId === t.userId && (n += 15, r.push("assigned-to-you"));
1299
- const o = j(e, t.now);
1312
+ O[i] > 0 && (n += O[i], r.push(`priority:${i}`)), $t(e, t.userId) && (n += 20, r.push("unseen")), e.assignedUserId && e.assignedUserId === t.userId && (n += 15, r.push("assigned-to-you"));
1313
+ const o = H(e, t.now);
1300
1314
  if (o > 0) {
1301
1315
  const d = Math.min(o * 2, 30);
1302
1316
  n += d, o >= 1 && r.push(`waiting:${Math.round(o)}h`);
1303
1317
  }
1304
1318
  const a = e.lastActivityPreview;
1305
- return a?.type === "AI_ACTION_PROPOSED" && (n += 30, r.push("awaiting-approval")), a?.direction === "outbound" && ve(a.type) && (n += 10, r.push("no-reply")), !e.firstResponseAt && e.lastActivityPreview?.direction === "inbound" && (n += 10, r.push("awaiting-reply")), (e.tags?.some((d) => d === "marketing" || d === "automated") || Ct(e.remoteParty?.resource, e.lastActivityPreview?.snippet)) && (n -= Lt, r.push("bulk")), { score: n, reasons: r };
1319
+ return a?.type === "AI_ACTION_PROPOSED" && (n += 30, r.push("awaiting-approval")), a?.direction === "outbound" && xe(a.type) && (n += 10, r.push("no-reply")), !e.firstResponseAt && e.lastActivityPreview?.direction === "inbound" && (n += 10, r.push("awaiting-reply")), (e.tags?.some((d) => d === "marketing" || d === "automated") || Ot(e.remoteParty?.resource, e.lastActivityPreview?.snippet)) && (n -= Pt, r.push("bulk")), { score: n, reasons: r };
1306
1320
  }
1307
- const Pi = (e) => !!e.assignedUserId || !!e.assignedInboxId, Ui = (e) => e.status === "closed", Ki = (e) => ({
1321
+ const Hi = (e) => !!e.assignedUserId || !!e.assignedInboxId, Gi = (e) => e.status === "closed", Fi = (e) => ({
1308
1322
  urgent: 10,
1309
1323
  high: 5,
1310
1324
  normal: 2,
1311
1325
  low: 1
1312
- })[e.priority] || 0, Bi = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1313
- function Hi(e, t) {
1326
+ })[e.priority] || 0, Wi = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1327
+ function Vi(e, t) {
1314
1328
  const n = e.labels ?? [];
1315
1329
  return n.find((r) => r.locale === t)?.label ?? n[0]?.label ?? e.url;
1316
1330
  }
1317
- function ji(e, t, n) {
1331
+ function zi(e, t, n) {
1318
1332
  const r = e.translations ?? [];
1319
1333
  return r.find((i) => i.locale === t) ?? (n ? r.find((i) => i.locale === n) : void 0) ?? { locale: t };
1320
1334
  }
@@ -1333,36 +1347,36 @@ const ae = [
1333
1347
  { code: "fi", label: "Suomi", english: "Finnish" },
1334
1348
  { code: "tr", label: "Türkçe", english: "Turkish" }
1335
1349
  ];
1336
- function xe(e) {
1350
+ function Re(e) {
1337
1351
  const t = (e ?? "").toLowerCase();
1338
1352
  return ae.find((n) => n.code === t) ?? ae.find((n) => n.code === t.split("-")[0]);
1339
1353
  }
1340
- function Gi(e) {
1341
- return xe(e)?.label ?? e;
1354
+ function Xi(e) {
1355
+ return Re(e)?.label ?? e;
1342
1356
  }
1343
- function Fi(e) {
1344
- const t = xe(e);
1357
+ function Yi(e) {
1358
+ const t = Re(e);
1345
1359
  return t ? t.english === t.label ? `${t.english} (${t.code})` : `${t.english} — ${t.label} (${t.code})` : e;
1346
1360
  }
1347
- const Re = 3;
1348
- function Ft(e, t) {
1361
+ const De = 3;
1362
+ function Wt(e, t) {
1349
1363
  const n = /* @__PURE__ */ new Set();
1350
1364
  let r = 1, i = t.get(e)?.parentId;
1351
1365
  for (; i; ) {
1352
- if (n.has(i) || (n.add(i), r++, r > Re + 1)) return 1 / 0;
1366
+ if (n.has(i) || (n.add(i), r++, r > De + 1)) return 1 / 0;
1353
1367
  i = t.get(i)?.parentId;
1354
1368
  }
1355
1369
  return r;
1356
1370
  }
1357
- function Wi(e, t, n) {
1371
+ function qi(e, t, n) {
1358
1372
  if (!e) return !0;
1359
1373
  if (e === t) return !1;
1360
1374
  const r = new Map(n.map((a) => [a.id, a]));
1361
- if (!r.has(e) || t && Wt(e, t, r)) return !1;
1362
- const i = Ft(e, r), o = t ? De(t, n) : 1;
1363
- return i + o <= Re;
1375
+ if (!r.has(e) || t && Vt(e, t, r)) return !1;
1376
+ const i = Wt(e, r), o = t ? $e(t, n) : 1;
1377
+ return i + o <= De;
1364
1378
  }
1365
- function Wt(e, t, n) {
1379
+ function Vt(e, t, n) {
1366
1380
  const r = /* @__PURE__ */ new Set();
1367
1381
  let i = n.get(e)?.parentId;
1368
1382
  for (; i; ) {
@@ -1372,23 +1386,23 @@ function Wt(e, t, n) {
1372
1386
  }
1373
1387
  return !1;
1374
1388
  }
1375
- function De(e, t, n = /* @__PURE__ */ new Set()) {
1389
+ function $e(e, t, n = /* @__PURE__ */ new Set()) {
1376
1390
  if (n.has(e)) return 1;
1377
1391
  n.add(e);
1378
1392
  const r = t.filter((i) => i.parentId === e);
1379
- return r.length ? 1 + Math.max(...r.map((i) => De(i.id, t, n))) : 1;
1393
+ return r.length ? 1 + Math.max(...r.map((i) => $e(i.id, t, n))) : 1;
1380
1394
  }
1381
- const Vt = "en";
1382
- function zt(e) {
1383
- return e.defaultLocale || e.locale || Vt;
1395
+ const zt = "en";
1396
+ function Xt(e) {
1397
+ return e.defaultLocale || e.locale || zt;
1384
1398
  }
1385
- function Vi(e) {
1399
+ function Ji(e) {
1386
1400
  const t = /* @__PURE__ */ new Set(), n = [];
1387
- for (const r of [zt(e), ...e.locales ?? []])
1401
+ for (const r of [Xt(e), ...e.locales ?? []])
1388
1402
  !r || t.has(r) || (t.add(r), n.push(r));
1389
1403
  return n;
1390
1404
  }
1391
- function zi(e, t, n) {
1405
+ function Zi(e, t, n) {
1392
1406
  const r = e.translations ?? [];
1393
1407
  return r.find((i) => i.locale === t)?.name ?? (n ? r.find((i) => i.locale === n)?.name : void 0) ?? e.name;
1394
1408
  }
@@ -1409,7 +1423,7 @@ function ce(e) {
1409
1423
  }
1410
1424
  return null;
1411
1425
  }
1412
- function Xt(e, t) {
1426
+ function Yt(e, t) {
1413
1427
  switch (e.kind) {
1414
1428
  case "org":
1415
1429
  return !0;
@@ -1419,23 +1433,23 @@ function Xt(e, t) {
1419
1433
  return e.userId === t.userId;
1420
1434
  }
1421
1435
  }
1422
- function Xi(e, t) {
1423
- return e.filter((n) => n.enabled && Xt(n.ownerScope, t));
1436
+ function Qi(e, t) {
1437
+ return e.filter((n) => n.enabled && Yt(n.ownerScope, t));
1424
1438
  }
1425
- function Yi(e) {
1439
+ function eo(e) {
1426
1440
  return e.credentialScope ? e.credentialScope : (e.authMode ?? "header") === "header" || e.oauth?.scope === "org" ? "shared" : "per-user";
1427
1441
  }
1428
- function qi(e) {
1442
+ function to(e) {
1429
1443
  return `mcp__${e}__`;
1430
1444
  }
1431
- const Ji = 1e3, Zi = 2e3, Qi = 500, eo = 12e3, to = 4e3, Yt = ["contact", "company", "work_item"];
1432
- function no(e) {
1445
+ const no = 1e3, ro = 2e3, io = 500, oo = 12e3, ao = 4e3, qt = ["contact", "company", "work_item"];
1446
+ function so(e) {
1433
1447
  if (!e) return !1;
1434
1448
  const t = e.slice(0, e.indexOf(":"));
1435
- return Yt.includes(t);
1449
+ return qt.includes(t);
1436
1450
  }
1437
- const ro = "onboarding-source", io = ["support", "billing", "availability", "sales", "onboarding"], oo = ["keep", "replace"];
1438
- function qt(e) {
1451
+ const co = "onboarding-source", lo = ["support", "billing", "availability", "sales", "onboarding"], uo = ["keep", "replace"];
1452
+ function Jt(e) {
1439
1453
  switch (e.kind) {
1440
1454
  case "user":
1441
1455
  return `user:${e.userId}`;
@@ -1445,7 +1459,7 @@ function qt(e) {
1445
1459
  return "org";
1446
1460
  }
1447
1461
  }
1448
- function ao(e) {
1462
+ function po(e) {
1449
1463
  if (typeof e != "string") return;
1450
1464
  const t = e.trim();
1451
1465
  if (t === "org") return { kind: "org" };
@@ -1457,10 +1471,10 @@ function ao(e) {
1457
1471
  if (r === "team") return { kind: "team", teamId: i };
1458
1472
  }
1459
1473
  }
1460
- function Jt(e) {
1461
- return qt(e);
1462
- }
1463
1474
  function Zt(e) {
1475
+ return Jt(e);
1476
+ }
1477
+ function Qt(e) {
1464
1478
  switch (e.kind) {
1465
1479
  case "personal":
1466
1480
  return { kind: "user", userId: e.userId };
@@ -1470,14 +1484,14 @@ function Zt(e) {
1470
1484
  return { kind: "org" };
1471
1485
  }
1472
1486
  }
1473
- const Qt = Zt;
1474
- function so(e) {
1475
- return e.agentId ? { kind: "user", userId: e.agentId } : Qt(e.ownerScope);
1487
+ const en = Qt;
1488
+ function fo(e) {
1489
+ return e.agentId ? { kind: "user", userId: e.agentId } : en(e.ownerScope);
1476
1490
  }
1477
- function co(e) {
1478
- return Jt(e);
1491
+ function mo(e) {
1492
+ return Zt(e);
1479
1493
  }
1480
- function lo(e, t) {
1494
+ function go(e, t) {
1481
1495
  if (!t) return;
1482
1496
  let n = e;
1483
1497
  for (const r of t.split(".")) {
@@ -1486,24 +1500,24 @@ function lo(e, t) {
1486
1500
  }
1487
1501
  return n;
1488
1502
  }
1489
- function uo(e, t) {
1503
+ function ho(e, t) {
1490
1504
  return e.targets.find((n) => n.activityTypes.includes(t));
1491
1505
  }
1492
- function po(e, t) {
1506
+ function yo(e, t) {
1493
1507
  if (t)
1494
1508
  return e.targets.find((n) => n.id === t);
1495
1509
  }
1496
- function en(e) {
1510
+ function tn(e) {
1497
1511
  return e?.kind === "assignment";
1498
1512
  }
1499
- function fo(e) {
1513
+ function bo(e) {
1500
1514
  const { trigger: t, agentId: n, target: r, activityType: i, assigneeUserId: o, authorUserId: a } = e;
1501
- return en(t) ? n ? r ? r.activityTypes.includes(i) ? o ? o !== n ? "assigned to someone else" : a && a === n ? "the agent assigned this to itself, which would restart its own run" : null : `no assignee found at ${r.assigneePath}` : `activity type ${i} does not announce an assignment for ${r.id}` : `assignment target kind "${t.targetKind}" is not declared by any installed app` : "this playbook has no agent, so an assignment can never be for it" : "trigger is not an assignment trigger";
1515
+ return tn(t) ? n ? r ? r.activityTypes.includes(i) ? o ? o !== n ? "assigned to someone else" : a && a === n ? "the agent assigned this to itself, which would restart its own run" : null : `no assignee found at ${r.assigneePath}` : `activity type ${i} does not announce an assignment for ${r.id}` : `assignment target kind "${t.targetKind}" is not declared by any installed app` : "this playbook has no agent, so an assignment can never be for it" : "trigger is not an assignment trigger";
1502
1516
  }
1503
- function mo(e) {
1517
+ function Ao(e) {
1504
1518
  return (e.startsWith("tool:") ? e.slice(5) : e).replace(/__/g, " · ").replace(/\./g, " · ").replace(/_/g, " ");
1505
1519
  }
1506
- const go = [
1520
+ const Eo = [
1507
1521
  { name: "text", type: "string" },
1508
1522
  { name: "subject", type: "string" },
1509
1523
  { name: "from", type: "string" },
@@ -1537,7 +1551,7 @@ const go = [
1537
1551
  // `buildTriggerVars` cannot fill it itself: the job does that with the catalog in hand, before
1538
1552
  // the trigger filter runs — like contactId/companyId above.
1539
1553
  { name: "assigneeUserId", type: "string" }
1540
- ], ho = {
1554
+ ], So = {
1541
1555
  topics: [
1542
1556
  { name: "topicId", type: "string" },
1543
1557
  { name: "topic", type: "string" },
@@ -1551,78 +1565,97 @@ const go = [
1551
1565
  // Deliberately empty: the fields come from `ClassifyStep.fields` and so differ per step.
1552
1566
  extract: []
1553
1567
  };
1554
- function tn(e) {
1568
+ function nn(e) {
1555
1569
  return `${e.type}:${e.id}`;
1556
1570
  }
1557
- const nn = "interaction";
1558
- function rn(e) {
1559
- return e?.type === nn ? e.id : void 0;
1571
+ const rn = "interaction";
1572
+ function on(e) {
1573
+ return e?.type === rn ? e.id : void 0;
1560
1574
  }
1561
- const on = 64, an = 8e3;
1562
- function yo(e) {
1575
+ const an = 64, sn = 8e3;
1576
+ function _o(e) {
1563
1577
  const t = typeof e == "number" ? e : Number(String(e ?? "").trim());
1564
1578
  if (!(!Number.isFinite(t) || t <= 0))
1565
- return Math.min(Math.max(Math.round(t), on), an);
1579
+ return Math.min(Math.max(Math.round(t), an), sn);
1566
1580
  }
1567
- const bo = { kind: "workflow", steps: [] };
1568
- function Ao(e) {
1581
+ const To = { kind: "workflow", steps: [] };
1582
+ function wo(e) {
1569
1583
  return e?.kind === "workflow" ? e.steps : [];
1570
1584
  }
1571
- function Eo(e) {
1585
+ function Io(e) {
1572
1586
  return e?.kind === "procedure" ? e.procedure : void 0;
1573
1587
  }
1574
- function sn(e) {
1588
+ function cn(e) {
1575
1589
  const t = e?.approved ?? 0, n = t + (e?.rejected ?? 0);
1576
1590
  return { total: n, rate: n ? t / n : 0 };
1577
1591
  }
1578
- const cn = 10, ln = 0.9;
1579
- function So(e) {
1580
- const { total: t, rate: n } = sn(e);
1581
- return t >= cn && n >= ln;
1592
+ const ln = 10, un = 0.9;
1593
+ function Mo(e) {
1594
+ const { total: t, rate: n } = cn(e);
1595
+ return t >= ln && n >= un;
1582
1596
  }
1583
- const un = ["done", "escalated", "failed", "stopped"];
1584
- function _o(e) {
1585
- return un.includes(e);
1597
+ const dn = ["done", "escalated", "failed", "stopped"];
1598
+ function Co(e) {
1599
+ return dn.includes(e);
1586
1600
  }
1587
- function dn(e) {
1601
+ function pn(e) {
1588
1602
  return e === "waiting";
1589
1603
  }
1590
- function To(e) {
1591
- return e === "running" || dn(e);
1604
+ function ko(e) {
1605
+ return e === "running" || pn(e);
1592
1606
  }
1593
- function $e(e) {
1607
+ function Le(e) {
1594
1608
  return e.subjectKind && e.subjectId ? { type: e.subjectKind, id: e.subjectId } : void 0;
1595
1609
  }
1596
- function Io(e) {
1597
- const t = $e(e);
1598
- return t ? tn(t) : void 0;
1610
+ function Oo(e) {
1611
+ const t = Le(e);
1612
+ return t ? nn(t) : void 0;
1599
1613
  }
1600
- function wo(e) {
1601
- return rn($e(e));
1614
+ function vo(e) {
1615
+ return on(Le(e));
1616
+ }
1617
+ function xo(e) {
1618
+ const t = [], n = /* @__PURE__ */ new Map();
1619
+ for (const r of [...e].sort(fn)) {
1620
+ const i = n.get(r.emoji);
1621
+ if (i) {
1622
+ i.push(r.actor);
1623
+ continue;
1624
+ }
1625
+ t.push(r.emoji), n.set(r.emoji, [r.actor]);
1626
+ }
1627
+ return t.map((r) => {
1628
+ const i = n.get(r);
1629
+ return { emoji: r, count: i.length, actors: i };
1630
+ }).sort((r, i) => i.count - r.count || t.indexOf(r.emoji) - t.indexOf(i.emoji));
1602
1631
  }
1603
- function Mo(e, t) {
1632
+ const fn = (e, t) => (e.createdAt ?? 0) - (t.createdAt ?? 0);
1633
+ function No(e, t) {
1634
+ return t ? e.actors.some((n) => n.type === "user" && n.id === t) : !1;
1635
+ }
1636
+ function Ro(e, t) {
1604
1637
  const n = e.accumulatedSeconds || 0;
1605
1638
  return e.runningSince ? n + Math.max(0, Math.floor((t - e.runningSince) / 1e3)) : n;
1606
1639
  }
1607
- function ko(e, t) {
1640
+ function Do(e, t) {
1608
1641
  const n = Math.max(1, Math.ceil(Math.max(0, e) / 60));
1609
1642
  if (!t || t === "exact") return n * 60;
1610
1643
  const r = Number(t);
1611
1644
  return !Number.isFinite(r) || r <= 0 ? n * 60 : Math.ceil(n / r) * r * 60;
1612
1645
  }
1613
- function Co(e) {
1646
+ function $o(e) {
1614
1647
  const t = Math.max(0, Math.round(e / 60));
1615
1648
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
1616
1649
  }
1617
- function Oo(e) {
1650
+ function Lo(e) {
1618
1651
  const t = Math.max(0, Math.floor(e)), n = (o) => String(o).padStart(2, "0"), r = Math.floor(t / 60) % 60, i = Math.floor(t / 3600);
1619
1652
  return i > 0 ? `${i}:${n(r)}:${n(t % 60)}` : `${n(r)}:${n(t % 60)}`;
1620
1653
  }
1621
- function pn(e) {
1654
+ function mn(e) {
1622
1655
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 48).replace(/^-+|-+$/g, "");
1623
1656
  }
1624
- function vo(e, t) {
1625
- const n = pn(e) || "werksoort", r = new Set(t);
1657
+ function Po(e, t) {
1658
+ const n = mn(e) || "werksoort", r = new Set(t);
1626
1659
  if (!r.has(n)) return n;
1627
1660
  for (let i = 2; i < 500; i++) {
1628
1661
  const o = `${n}-${i}`;
@@ -1630,29 +1663,29 @@ function vo(e, t) {
1630
1663
  }
1631
1664
  return `${n}-${r.size + 1}`;
1632
1665
  }
1633
- function No(e, t) {
1666
+ function Uo(e, t) {
1634
1667
  const n = e.ownerScope;
1635
1668
  return !n || n.kind === "org" ? !0 : t.includes(n.teamId);
1636
1669
  }
1637
- function xo(e) {
1638
- return e.filter((t) => !t.archived).sort(fn);
1670
+ function Ko(e) {
1671
+ return e.filter((t) => !t.archived).sort(gn);
1639
1672
  }
1640
- function fn(e, t) {
1673
+ function gn(e, t) {
1641
1674
  const n = (e.order ?? 0) - (t.order ?? 0);
1642
1675
  return n !== 0 ? n : (e.label || "").localeCompare(t.label || "");
1643
1676
  }
1644
- const mn = 20, gn = 20, P = 300;
1677
+ const hn = 20, yn = 20, P = 300;
1645
1678
  function S(e) {
1646
1679
  return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
1647
1680
  }
1648
- function hn(e) {
1681
+ function bn(e) {
1649
1682
  const t = e.replace(/\s+/g, " ").trim();
1650
1683
  if (t.length <= P) return t;
1651
1684
  const n = t.slice(0, P), r = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
1652
1685
  return r > P * 0.6 ? n.slice(0, r + 1) : `${n.trimEnd()}…`;
1653
1686
  }
1654
- function Ro(e, t) {
1655
- const n = hn(t.text), r = S(n);
1687
+ function jo(e, t) {
1688
+ const n = bn(t.text), r = S(n);
1656
1689
  if (!r || (e.examples ?? []).some((a) => S(a) === r)) return null;
1657
1690
  const i = e.exampleCandidates ?? [], o = i.findIndex((a) => S(a.text) === r);
1658
1691
  if (o >= 0) {
@@ -1660,63 +1693,66 @@ function Ro(e, t) {
1660
1693
  const a = [...i];
1661
1694
  return a[o] = { ...a[o], corrected: !0, addedAt: t.addedAt }, le(a);
1662
1695
  }
1663
- return le([{ ...t, text: n }, ...i]).slice(0, gn);
1696
+ return le([{ ...t, text: n }, ...i]).slice(0, yn);
1664
1697
  }
1665
1698
  function le(e) {
1666
1699
  return [...e].sort(
1667
1700
  (t, n) => Number(n.corrected) - Number(t.corrected) || n.addedAt - t.addedAt
1668
1701
  );
1669
1702
  }
1670
- function Do(e, t) {
1703
+ function Bo(e, t) {
1671
1704
  const n = S(t), r = (e.examples ?? []).filter((o) => o.trim());
1672
- return { examples: r.some((o) => S(o) === n) ? r : [...r, t].slice(-mn), exampleCandidates: yn(e, t) };
1705
+ return { examples: r.some((o) => S(o) === n) ? r : [...r, t].slice(-hn), exampleCandidates: An(e, t) };
1673
1706
  }
1674
- function yn(e, t) {
1707
+ function An(e, t) {
1675
1708
  const n = S(t);
1676
1709
  return (e.exampleCandidates ?? []).filter((r) => S(r.text) !== n);
1677
1710
  }
1678
- function bn(e, t) {
1711
+ function En(e, t) {
1679
1712
  const n = e.ownerScope;
1680
1713
  return n ? n.kind === "org" ? !0 : n.kind === "team" ? !!t && n.teamId === t : !1 : !1;
1681
1714
  }
1682
- function $o(e, t) {
1683
- return e.filter((n) => bn(n, t));
1715
+ function Ho(e, t) {
1716
+ return e.filter((n) => En(n, t));
1684
1717
  }
1685
- function Lo(e) {
1718
+ function Go(e) {
1686
1719
  return e.type === "agent";
1687
1720
  }
1688
- const Po = "WORK_COMMENT_ADDED", Uo = "WORK_ITEM_ASSIGNED", Ko = "WORK_ITEM_STATUS_CHANGED";
1689
- function An(e, t) {
1721
+ const Fo = "WORK_COMMENT_ADDED", Wo = "WORK_ITEM_ASSIGNED", Vo = "WORK_ITEM_STATUS_CHANGED";
1722
+ function Sn(e, t) {
1690
1723
  const n = (r) => {
1691
1724
  const i = new Date(r);
1692
1725
  return i.setHours(0, 0, 0, 0), i.getTime();
1693
1726
  };
1694
- return Math.round((n(e) - n(t)) / Mt);
1727
+ return Math.round((n(e) - n(t)) / Ct);
1695
1728
  }
1696
- function Bo(e, t) {
1729
+ function zo(e, t) {
1697
1730
  if (e.closedAt != null) return { score: E, reasons: [] };
1698
1731
  const n = t.remindersById?.[e.id];
1699
1732
  if (n && n.remindAt > t.now) return { score: E, reasons: [] };
1700
1733
  let r = 0;
1701
1734
  const i = [], o = e.priority ?? "normal";
1702
1735
  if (O[o] > 0 && (r += O[o], i.push(`priority:${o}`)), typeof e.dueDate == "number") {
1703
- const a = An(e.dueDate, t.now);
1736
+ const a = Sn(e.dueDate, t.now);
1704
1737
  a < 0 ? (r += 35, i.push("overdue")) : a === 0 && (r += 20, i.push("due-today"));
1705
1738
  }
1706
1739
  return e.source?.initiator === "system" && e.source.systemReason && (r += 15, i.push(`auto:${e.source.systemReason}`)), { score: r, reasons: i };
1707
1740
  }
1708
- const En = "work_item", Sn = "work_project";
1709
- function _n(e) {
1710
- return `${En}:${e}`;
1741
+ const _n = "work_item", Tn = "work_project", wn = "work_activity";
1742
+ function In(e) {
1743
+ return `${_n}:${e}`;
1711
1744
  }
1712
- function Le(e) {
1713
- return `${Sn}:${e}`;
1745
+ function Pe(e) {
1746
+ return `${Tn}:${e}`;
1747
+ }
1748
+ function Xo(e) {
1749
+ return `${wn}:${e}`;
1714
1750
  }
1715
- function Ho(e, t, n) {
1751
+ function Yo(e, t, n) {
1716
1752
  const r = `${e}-${t}`;
1717
1753
  return n ? `${r}-${n}` : r;
1718
1754
  }
1719
- function jo(e) {
1755
+ function qo(e) {
1720
1756
  const t = /^([A-Za-z0-9]{2,8})-(\d+)(?:-(\d+))?$/.exec((e || "").trim());
1721
1757
  return t ? {
1722
1758
  projectKey: t[1].toUpperCase(),
@@ -1724,52 +1760,52 @@ function jo(e) {
1724
1760
  ...t[3] ? { subSequence: Number(t[3]) } : {}
1725
1761
  } : null;
1726
1762
  }
1727
- function Go(e) {
1763
+ function Jo(e) {
1728
1764
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toUpperCase().replace(/[^A-Z0-9]/g, "").slice(0, 3) || "PRJ";
1729
1765
  }
1730
- function Fo(e, t = 25) {
1731
- const n = /* @__PURE__ */ new Set([_n(e.id)]);
1732
- e.projectId && n.add(Le(e.projectId));
1766
+ function Zo(e, t = 25) {
1767
+ const n = /* @__PURE__ */ new Set([In(e.id)]);
1768
+ e.projectId && n.add(Pe(e.projectId));
1733
1769
  for (const r of e.ancestorKeys ?? []) n.add(r);
1734
1770
  for (const r of e.partyKeys ?? []) n.add(r);
1735
1771
  return Array.from(n).slice(0, t);
1736
1772
  }
1737
- function Wo(e) {
1738
- return [Le(e.id)];
1773
+ function Qo(e) {
1774
+ return [Pe(e.id)];
1739
1775
  }
1740
1776
  const G = [
1741
1777
  { key: "open", label: "status_open", category: "todo", order: 0 },
1742
1778
  { key: "in_progress", label: "status_in_progress", category: "in_progress", order: 1 },
1743
1779
  { key: "done", label: "status_done", category: "done", order: 2 },
1744
1780
  { key: "cancelled", label: "status_cancelled", category: "done", order: 3 }
1745
- ], Pe = G.map((e) => e.key);
1746
- function Tn(e) {
1781
+ ], Ue = G.map((e) => e.key);
1782
+ function Mn(e) {
1747
1783
  return e?.statuses?.length ? e.statuses : G;
1748
1784
  }
1749
- function In(e, t) {
1785
+ function Cn(e, t) {
1750
1786
  return t.find((n) => n.key === e)?.category ?? "todo";
1751
1787
  }
1752
- function Vo(e, t) {
1788
+ function ea(e, t) {
1753
1789
  return t.find((n) => n.key === e);
1754
1790
  }
1755
- function zo(e) {
1756
- const t = Tn(e), n = e?.defaultStatusKey;
1757
- return n && t.some((r) => r.key === n) ? n : wn(t)[0]?.key ?? G[0].key;
1791
+ function ta(e) {
1792
+ const t = Mn(e), n = e?.defaultStatusKey;
1793
+ return n && t.some((r) => r.key === n) ? n : kn(t)[0]?.key ?? G[0].key;
1758
1794
  }
1759
- function wn(e) {
1795
+ function kn(e) {
1760
1796
  return [...e].sort((t, n) => {
1761
1797
  const r = (t.order ?? 0) - (n.order ?? 0);
1762
1798
  return r !== 0 ? r : (t.label || "").localeCompare(n.label || "");
1763
1799
  });
1764
1800
  }
1765
- function Xo(e, t) {
1766
- return In(e, t) === "done";
1801
+ function na(e, t) {
1802
+ return Cn(e, t) === "done";
1767
1803
  }
1768
- function Mn(e) {
1804
+ function On(e) {
1769
1805
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 48).replace(/^-+|-+$/g, "");
1770
1806
  }
1771
- function Yo(e, t) {
1772
- const n = Mn(e) || "status", r = /* @__PURE__ */ new Set([...t, ...Pe]);
1807
+ function ra(e, t) {
1808
+ const n = On(e) || "status", r = /* @__PURE__ */ new Set([...t, ...Ue]);
1773
1809
  if (!r.has(n)) return n;
1774
1810
  for (let i = 2; i < 500; i++) {
1775
1811
  const o = `${n}-${i}`;
@@ -1777,7 +1813,7 @@ function Yo(e, t) {
1777
1813
  }
1778
1814
  return `${n}-${r.size + 1}`;
1779
1815
  }
1780
- function qo(e) {
1816
+ function ia(e) {
1781
1817
  const t = [];
1782
1818
  if (!e.length) return [{ index: -1, reason: "empty" }];
1783
1819
  const n = /* @__PURE__ */ new Set();
@@ -1786,10 +1822,10 @@ function qo(e) {
1786
1822
  t.push({ index: i, reason: "missing_key" });
1787
1823
  return;
1788
1824
  }
1789
- Pe.includes(r.key) && t.push({ index: i, reason: "reserved_key", key: r.key }), n.has(r.key) && t.push({ index: i, reason: "duplicate_key", key: r.key }), n.add(r.key);
1825
+ Ue.includes(r.key) && t.push({ index: i, reason: "reserved_key", key: r.key }), n.has(r.key) && t.push({ index: i, reason: "duplicate_key", key: r.key }), n.add(r.key);
1790
1826
  }), e.some((r) => r.category === "todo" || r.category === "in_progress") || t.push({ index: -1, reason: "no_open" }), e.some((r) => r.category === "done") || t.push({ index: -1, reason: "no_done" }), t;
1791
1827
  }
1792
- const kn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), Cn = /* @__PURE__ */ new Set([
1828
+ const vn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), xn = /* @__PURE__ */ new Set([
1793
1829
  "text/plain",
1794
1830
  "text/markdown",
1795
1831
  "text/csv",
@@ -1798,67 +1834,67 @@ const kn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "ima
1798
1834
  "application/xml",
1799
1835
  "text/xml"
1800
1836
  ]);
1801
- function On(e) {
1837
+ function Nn(e) {
1802
1838
  const t = (e ?? "").trim().toLowerCase().split(";")[0];
1803
- return t ? kn.has(t) ? "image" : t === "application/pdf" ? "pdf" : Cn.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
1839
+ return t ? vn.has(t) ? "image" : t === "application/pdf" ? "pdf" : xn.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
1804
1840
  }
1805
- const _ = 1024 * 1024, vn = {
1841
+ const _ = 1024 * 1024, Rn = {
1806
1842
  image: 5 * _,
1807
1843
  pdf: 20 * _,
1808
1844
  text: 1 * _,
1809
1845
  audio: 20 * _
1810
- }, Jo = 25 * _, Zo = 5;
1811
- function Qo(e, t) {
1812
- const n = On(e);
1813
- return n === "unsupported" ? "unsupported" : t > vn[n] ? "too-large" : null;
1846
+ }, oa = 25 * _, aa = 5;
1847
+ function sa(e, t) {
1848
+ const n = Nn(e);
1849
+ return n === "unsupported" ? "unsupported" : t > Rn[n] ? "too-large" : null;
1814
1850
  }
1815
- function ea(e) {
1851
+ function ca(e) {
1816
1852
  return e.access !== "read" && e.effect !== "internal";
1817
1853
  }
1818
- function Nn(e) {
1854
+ function Dn(e) {
1819
1855
  return `${e.kind}:${e.id || e.url || e.title}`;
1820
1856
  }
1821
- function ta(e, t = []) {
1857
+ function la(e, t = []) {
1822
1858
  const n = new Set(t), r = [], i = [];
1823
1859
  for (const o of e) {
1824
- const a = Nn(o);
1860
+ const a = Dn(o);
1825
1861
  n.has(a) || (n.add(a), r.push(o), i.push(a));
1826
1862
  }
1827
1863
  return { sources: r, keys: i };
1828
1864
  }
1829
- const na = "assist-source", ra = ["blocking", "due", "open"];
1830
- function ia(e, t) {
1865
+ const ua = "assist-source", da = ["blocking", "due", "open"];
1866
+ function pa(e, t) {
1831
1867
  const [n, r] = (e.subjectKey ?? "").split(":");
1832
1868
  return n === t && r ? r : void 0;
1833
1869
  }
1834
1870
  const ue = { blocking: 0, due: 1, open: 2 };
1835
- function oa(e, t) {
1871
+ function fa(e, t) {
1836
1872
  return ue[e.band ?? "open"] - ue[t.band ?? "open"] || (t.priority ?? 0) - (e.priority ?? 0) || e.id.localeCompare(t.id);
1837
1873
  }
1838
- function aa(e) {
1874
+ function ma(e) {
1839
1875
  return e.sessions.filter(
1840
1876
  (t) => t.id !== e.exceptSessionId && t.state === "connected" && e.canHold(t.providerId)
1841
1877
  );
1842
1878
  }
1843
- function sa(e) {
1879
+ function ga(e) {
1844
1880
  return e.sessions.filter(
1845
1881
  (t) => t.id !== e.exceptSessionId && t.state === "connected" && !e.canHold(t.providerId)
1846
1882
  );
1847
1883
  }
1848
- function ca(e) {
1884
+ function ha(e) {
1849
1885
  return e.sessions.some(
1850
1886
  (n) => n.id !== e.exceptSessionId && (n.state === "connected" || n.state === "on_hold")
1851
1887
  ) ? { admit: !1, reason: "busy" } : { admit: !0 };
1852
1888
  }
1853
- function xn(e, t) {
1854
- const n = new Set(e.disabledIntents ?? []), r = e.intentOverrides ?? {}, i = t.intents.filter((a) => !n.has(a.intent)).map((a) => Dn(a, r[a.intent]));
1889
+ function $n(e, t) {
1890
+ const n = new Set(e.disabledIntents ?? []), r = e.intentOverrides ?? {}, i = t.intents.filter((a) => !n.has(a.intent)).map((a) => Pn(a, r[a.intent]));
1855
1891
  if (!e.extraIntents || e.extraIntents.length === 0) return i;
1856
1892
  const o = new Set(i.map((a) => a.intent));
1857
1893
  for (const a of e.extraIntents)
1858
1894
  o.has(a.intent) || (i.push(a), o.add(a.intent));
1859
1895
  return i;
1860
1896
  }
1861
- function Rn(e, t) {
1897
+ function Ln(e, t) {
1862
1898
  const n = {};
1863
1899
  for (const r of e.intents) {
1864
1900
  if (!r.togglable) continue;
@@ -1867,46 +1903,46 @@ function Rn(e, t) {
1867
1903
  }
1868
1904
  return n;
1869
1905
  }
1870
- function la(e, t) {
1871
- const n = Rn(e, t);
1906
+ function ya(e, t) {
1907
+ const n = Ln(e, t);
1872
1908
  return Object.entries(n).filter(([, r]) => !r).map(([r]) => r);
1873
1909
  }
1874
- function Dn(e, t) {
1910
+ function Pn(e, t) {
1875
1911
  return t ? {
1876
1912
  intent: t.intent ?? e.intent,
1877
1913
  targetSchemes: t.targetSchemes ?? e.targetSchemes,
1878
1914
  transport: t.transport ?? e.transport
1879
1915
  } : e;
1880
1916
  }
1881
- function ua(e, t) {
1917
+ function ba(e, t) {
1882
1918
  const n = [];
1883
1919
  for (const r of e) {
1884
1920
  if (!r.enabled) continue;
1885
1921
  const i = t[r.providerId];
1886
1922
  if (i)
1887
- for (const o of xn(r, i))
1923
+ for (const o of $n(r, i))
1888
1924
  n.push({ channel: r, description: i, capability: o });
1889
1925
  }
1890
1926
  return n;
1891
1927
  }
1892
- function da(e, t) {
1928
+ function Aa(e, t) {
1893
1929
  return t.filter((n) => n.capability.intent === e);
1894
1930
  }
1895
- function $n(e, t) {
1931
+ function Un(e, t) {
1896
1932
  return t.filter((n) => n.capability.targetSchemes.includes(e));
1897
1933
  }
1898
- function pa(e, t) {
1899
- return $n(e.scheme, t);
1934
+ function Ea(e, t) {
1935
+ return Un(e.scheme, t);
1900
1936
  }
1901
- function fa(e, t, n) {
1937
+ function Sa(e, t, n) {
1902
1938
  const r = [];
1903
1939
  for (const i of e)
1904
1940
  for (const o of n)
1905
1941
  o.capability.intent === t && o.capability.targetSchemes.includes(i.scheme) && r.push({ channelIntent: o, endpoint: i });
1906
1942
  return r;
1907
1943
  }
1908
- var Ln = /* @__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))(Ln || {});
1909
- const Pn = {
1944
+ var Kn = /* @__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))(Kn || {});
1945
+ const jn = {
1910
1946
  mailto: "mail",
1911
1947
  sip: "tel",
1912
1948
  tel: "tel",
@@ -1927,10 +1963,10 @@ const Pn = {
1927
1963
  id: "note",
1928
1964
  custom: "note"
1929
1965
  };
1930
- function ma(e) {
1931
- return e ? Pn[e] ?? "note" : "note";
1966
+ function _a(e) {
1967
+ return e ? jn[e] ?? "note" : "note";
1932
1968
  }
1933
- const ga = "message_window", ha = "message_templates", ya = {
1969
+ const Ta = "message_window", wa = "message_templates", Ia = {
1934
1970
  // E-mail
1935
1971
  FROM: "from",
1936
1972
  TO: "to",
@@ -1947,11 +1983,11 @@ const ga = "message_window", ha = "message_templates", ya = {
1947
1983
  // Voice/conference
1948
1984
  HOST: "host",
1949
1985
  PARTICIPANT: "participant"
1950
- }, ba = (e, t) => ({ intent: e, ...t }), Aa = "folder_management", Ea = "remote_search", Sa = {
1986
+ }, Ma = (e, t) => ({ intent: e, ...t }), Ca = "folder_management", ka = "remote_search", Oa = "message_reactions", va = {
1951
1987
  ok: !1,
1952
1988
  code: "UNSUPPORTED",
1953
1989
  message: "Provider does not support this op"
1954
- }, _a = "context.collect", u = (e) => ({ type: "string", description: e }), l = (e) => ({ type: "number", description: e }), k = (e) => ({ type: "boolean", description: e }), y = u("Sheet name. Omit for the sheet the user is looking at."), de = u("Slide id, as `inspect` reports it.");
1990
+ }, xa = "context.collect", u = (e) => ({ type: "string", description: e }), l = (e) => ({ type: "number", description: e }), C = (e) => ({ type: "boolean", description: e }), y = u("Sheet name. Omit for the sheet the user is looking at."), de = u("Slide id, as `inspect` reports it.");
1955
1991
  function c(e, t, n, r, i, o) {
1956
1992
  return {
1957
1993
  op: e,
@@ -1962,7 +1998,7 @@ function c(e, t, n, r, i, o) {
1962
1998
  visible: o.visible
1963
1999
  };
1964
2000
  }
1965
- const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe = { undoable: !1, visible: !0 }, v = { undoable: !1, visible: !1 }, Un = [
2001
+ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe = { undoable: !1, visible: !0 }, v = { undoable: !1, visible: !1 }, Bn = [
1966
2002
  c(
1967
2003
  "pdf.goToPage",
1968
2004
  ["pdf"],
@@ -1975,7 +2011,7 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
1975
2011
  "pdf.search",
1976
2012
  ["pdf"],
1977
2013
  "Search the document and highlight the matches, as the find bar does.",
1978
- { query: u("Text to find."), next: k("Jump to the next match instead of the first.") },
2014
+ { query: u("Text to find."), next: C("Jump to the next match instead of the first.") },
1979
2015
  ["query"],
1980
2016
  T
1981
2017
  ),
@@ -2057,7 +2093,7 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2057
2093
  ["page", "text"],
2058
2094
  v
2059
2095
  )
2060
- ], Kn = [
2096
+ ], Hn = [
2061
2097
  c(
2062
2098
  "sheet.setValues",
2063
2099
  ["sheet"],
@@ -2089,8 +2125,8 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2089
2125
  {
2090
2126
  sheet: y,
2091
2127
  range: u("A1 notation."),
2092
- bold: k("Bold on or off."),
2093
- italic: k("Italic on or off."),
2128
+ bold: C("Bold on or off."),
2129
+ italic: C("Italic on or off."),
2094
2130
  fontSize: l("Point size."),
2095
2131
  fontColor: u("CSS colour, e.g. `#b91c1c`."),
2096
2132
  background: u("CSS colour for the cell fill."),
@@ -2172,7 +2208,7 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2172
2208
  sheet: y,
2173
2209
  range: u("A1 notation covering the rows to sort, header excluded."),
2174
2210
  column: l("1-based column *within the range*, not within the sheet."),
2175
- ascending: k("Ascending. Omit for ascending.")
2211
+ ascending: C("Ascending. Omit for ascending.")
2176
2212
  },
2177
2213
  ["range", "column"],
2178
2214
  p
@@ -2209,19 +2245,34 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2209
2245
  [],
2210
2246
  T
2211
2247
  )
2212
- ], Bn = [
2248
+ ], Gn = [
2213
2249
  c(
2214
- "word.appendText",
2250
+ "word.replaceParagraph",
2215
2251
  ["word"],
2216
- "Add text at the end of the document.",
2217
- { text: u("The text to append.") },
2218
- ["text"],
2252
+ "Rewrite one whole paragraph, keeping its style. This is the verb for shortening or rephrasing something; call it once per paragraph.",
2253
+ {
2254
+ at: l("The offset the paragraph starts at, exactly as `inspect` prints it."),
2255
+ text: u("The new text for that paragraph. A newline starts a further paragraph.")
2256
+ },
2257
+ ["at", "text"],
2258
+ p
2259
+ ),
2260
+ c(
2261
+ "word.replaceRange",
2262
+ ["word"],
2263
+ "Replace a stretch of text inside a paragraph - a sentence, a phrase. To rewrite whole paragraphs use word.replaceParagraph: a range covering several paragraph styles is refused, because a replacement carries one style and would set the whole span in the first.",
2264
+ {
2265
+ start: l("Character offset where the replaced text starts, as `inspect` reports offsets."),
2266
+ end: l("Character offset just past the last character to replace."),
2267
+ text: u("The replacement text. A newline starts a new paragraph.")
2268
+ },
2269
+ ["start", "end", "text"],
2219
2270
  p
2220
2271
  ),
2221
2272
  c(
2222
2273
  "word.insertText",
2223
2274
  ["word"],
2224
- "Insert text at a character offset.",
2275
+ "Insert text at a character offset, without removing anything.",
2225
2276
  {
2226
2277
  index: l("Character offset, as `inspect` reports offsets."),
2227
2278
  text: u("The text to insert.")
@@ -2229,23 +2280,34 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2229
2280
  ["index", "text"],
2230
2281
  p
2231
2282
  ),
2283
+ c(
2284
+ "word.appendText",
2285
+ ["word"],
2286
+ "Add text at the end of the document.",
2287
+ { text: u("The text to append.") },
2288
+ ["text"],
2289
+ p
2290
+ ),
2232
2291
  c(
2233
2292
  "word.insertParagraph",
2234
2293
  ["word"],
2235
- "Start a new paragraph at a character offset.",
2236
- { index: l("Character offset. Omit for the end of the document.") },
2294
+ "Start a new paragraph, optionally with text in it.",
2295
+ {
2296
+ text: u("Paragraph text. Newlines start further paragraphs."),
2297
+ index: l("Character offset to insert at. Omit for the end of the document.")
2298
+ },
2237
2299
  [],
2238
2300
  p
2239
2301
  ),
2240
2302
  c(
2241
2303
  "word.setSelection",
2242
2304
  ["word"],
2243
- "Put the user's cursor on a stretch of text.",
2305
+ "Put the user's cursor on a stretch of text, and move the reading window there: the page context carries one window of a long document, and the text around this offset arrives in the next turn.",
2244
2306
  { start: l("Start character offset."), end: l("End character offset. Omit for a caret.") },
2245
2307
  ["start"],
2246
2308
  T
2247
2309
  )
2248
- ], Hn = [
2310
+ ], Fn = [
2249
2311
  c(
2250
2312
  "slides.setText",
2251
2313
  ["slides"],
@@ -2273,34 +2335,34 @@ const T = { undoable: !1, visible: !0 }, p = { undoable: !0, visible: !0 }, pe =
2273
2335
  ["slide", "element"],
2274
2336
  v
2275
2337
  )
2276
- ], Ue = [
2277
- ...Un,
2278
- ...Kn,
2338
+ ], Ke = [
2279
2339
  ...Bn,
2280
- ...Hn
2340
+ ...Hn,
2341
+ ...Gn,
2342
+ ...Fn
2281
2343
  ];
2282
- function Ta(e) {
2283
- return Ue.filter((t) => t.kinds.includes(e));
2344
+ function Na(e) {
2345
+ return Ke.filter((t) => t.kinds.includes(e));
2284
2346
  }
2285
- function Ia(e) {
2286
- return Ue.find((t) => t.op === e);
2347
+ function Ra(e) {
2348
+ return Ke.find((t) => t.op === e);
2287
2349
  }
2288
- const wa = "documents.describe", Ma = "documents.inspect", ka = "documents.apply";
2289
- function Ca(e) {
2350
+ const Da = "documents.describe", $a = "documents.inspect", La = "documents.apply";
2351
+ function Pa(e) {
2290
2352
  const t = e.indexOf(":");
2291
2353
  if (t !== -1) return e.slice(0, t);
2292
2354
  const n = e.indexOf(".");
2293
2355
  return n === -1 ? e : e.slice(0, n);
2294
2356
  }
2295
- const Oa = "installation-id";
2296
- function va(e) {
2357
+ const Ua = "installation-id";
2358
+ function Ka(e) {
2297
2359
  const t = [];
2298
2360
  for (const n of Object.keys(e))
2299
2361
  for (const r of Object.keys(e[n]))
2300
2362
  t.push({ lang: n, key: r, value: e[n][r] });
2301
2363
  return t;
2302
2364
  }
2303
- const Na = "notification-source", xa = (e, t) => `${e}.pref.${t}`, Ra = {
2365
+ const ja = "notification-source", Ba = (e, t) => `${e}.pref.${t}`, Ha = {
2304
2366
  ai: [
2305
2367
  "account.read",
2306
2368
  "account.write",
@@ -2357,6 +2419,8 @@ const Na = "notification-source", xa = (e, t) => `${e}.pref.${t}`, Ra = {
2357
2419
  "inbox.write",
2358
2420
  "interaction.read",
2359
2421
  "interaction.write",
2422
+ "reaction.read",
2423
+ "reaction.write",
2360
2424
  "reminder.read",
2361
2425
  "template.read",
2362
2426
  "template.write",
@@ -2433,48 +2497,48 @@ const Na = "notification-source", xa = (e, t) => `${e}.pref.${t}`, Ra = {
2433
2497
  time: ["entry.read", "entry.write", "work-type.read", "work-type.write"],
2434
2498
  user: ["user.read", "user.write"],
2435
2499
  work: ["item.read", "item.write", "project.read", "project.write"]
2436
- }, Ke = 9e4, jn = ["out_of_office"], Be = (e) => jn.includes(e);
2437
- function Da(e, t, n) {
2438
- const r = n - e < Ke, i = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
2500
+ }, je = 9e4, Wn = ["out_of_office"], Be = (e) => Wn.includes(e);
2501
+ function Ga(e, t, n) {
2502
+ const r = n - e < je, i = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
2439
2503
  if (!i?.status) return { online: r, status: r ? "available" : "offline" };
2440
2504
  const o = i.status;
2441
2505
  return !r && !Be(o) ? { online: !1, status: "offline" } : { online: r, status: o, message: i.message };
2442
2506
  }
2443
- function $a(e, t) {
2444
- const n = t - e.lastSeenAt < Ke, r = n || Be(e.status) ? e.status : "offline";
2507
+ function Fa(e, t) {
2508
+ const n = t - e.lastSeenAt < je, r = n || Be(e.status) ? e.status : "offline";
2445
2509
  return n === e.online && r === e.status ? e : { ...e, online: n, status: r };
2446
2510
  }
2447
- function La(e, t) {
2511
+ function Wa(e, t) {
2448
2512
  return e?.teamId && t.includes(e.teamId) ? { teamId: e.teamId, mustChoose: !1 } : t.length === 1 ? { teamId: t[0], mustChoose: !1 } : { teamId: void 0, mustChoose: t.length > 1 };
2449
2513
  }
2450
- function Pa(e) {
2514
+ function Va(e) {
2451
2515
  return e.providerAvailable && e.allowed;
2452
2516
  }
2453
- const Ua = "resources.describe", Ka = "resources.search", Ba = "resources.resolve", Ha = "resources.attached";
2454
- function ja(e) {
2517
+ const za = "resources.describe", Xa = "resources.search", Ya = "resources.resolve", qa = "resources.attached";
2518
+ function Ja(e) {
2455
2519
  const t = e.indexOf(":");
2456
2520
  return t === -1 ? e : e.slice(0, t);
2457
2521
  }
2458
- const Ga = "/provider/scope/related", Fa = "/provider/scope/read", He = "auth";
2459
- function je(e) {
2522
+ const Za = "/provider/scope/related", Qa = "/provider/scope/read", He = "auth";
2523
+ function Ge(e) {
2460
2524
  const t = typeof e == "string" ? e.match(/apps\/([^/?#]+)/) : null;
2461
2525
  return t ? t[1] : null;
2462
2526
  }
2463
- function Wa(e) {
2464
- const t = je(e);
2527
+ function es(e) {
2528
+ const t = Ge(e);
2465
2529
  return t ? t !== He : typeof e == "string" && e.startsWith("/wake");
2466
2530
  }
2467
- function Va(e) {
2468
- return typeof e != "string" || e === "" || e === "/" ? !0 : je(e) === He;
2531
+ function ts(e) {
2532
+ return typeof e != "string" || e === "" || e === "/" ? !0 : Ge(e) === He;
2469
2533
  }
2470
- function Gn(e) {
2534
+ function Vn(e) {
2471
2535
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
2472
2536
  }
2473
- function Fn(e) {
2474
- const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : `/${Gn(r)}`).join("");
2537
+ function zn(e) {
2538
+ const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : `/${Vn(r)}`).join("");
2475
2539
  return new RegExp(`^${n}\\/?$`);
2476
2540
  }
2477
- function Wn(e, t) {
2541
+ function Xn(e, t) {
2478
2542
  const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean), i = {};
2479
2543
  return n.forEach((o, a) => {
2480
2544
  if (o.startsWith(":")) {
@@ -2483,14 +2547,14 @@ function Wn(e, t) {
2483
2547
  }
2484
2548
  }), i;
2485
2549
  }
2486
- function Vn(e) {
2550
+ function Yn(e) {
2487
2551
  return e.publicBasePath ?? `/apps/${e.name}`;
2488
2552
  }
2489
- function za(e) {
2553
+ function ns(e) {
2490
2554
  const t = [];
2491
2555
  for (const n of e) {
2492
2556
  if (!n?.name) continue;
2493
- const r = Vn(n);
2557
+ const r = Yn(n);
2494
2558
  for (const i of n.routes ?? []) {
2495
2559
  if (!i.public) continue;
2496
2560
  const o = i.path === "/" ? "" : i.path;
@@ -2504,7 +2568,7 @@ function za(e) {
2504
2568
  }
2505
2569
  return t;
2506
2570
  }
2507
- function zn(e, t) {
2571
+ function qn(e, t) {
2508
2572
  const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
2509
2573
  for (let i = 0; i < Math.min(n.length, r.length); i++) {
2510
2574
  const o = n[i].startsWith(":"), a = r[i].startsWith(":");
@@ -2512,17 +2576,17 @@ function zn(e, t) {
2512
2576
  }
2513
2577
  return n.length > r.length;
2514
2578
  }
2515
- function Xn(e, t) {
2579
+ function Jn(e, t) {
2516
2580
  if (typeof e != "string") return null;
2517
2581
  let n = null;
2518
2582
  for (const r of t)
2519
- Fn(r.pattern).test(e) && (!n || zn(r.pattern, n.pattern)) && (n = r);
2520
- return n ? { ...n, params: { ...n.props, ...Wn(n.pattern, e) } } : null;
2583
+ zn(r.pattern).test(e) && (!n || qn(r.pattern, n.pattern)) && (n = r);
2584
+ return n ? { ...n, params: { ...n.props, ...Xn(n.pattern, e) } } : null;
2521
2585
  }
2522
- function Xa(e, t) {
2523
- return Xn(e, t) !== null;
2586
+ function rs(e, t) {
2587
+ return Jn(e, t) !== null;
2524
2588
  }
2525
- const Ya = 10 * 1024 * 1024, qa = 25 * 1024 * 1024, Ja = "sync-source", Za = "sync-target", Qa = 20, Yn = {
2589
+ const is = 10 * 1024 * 1024, os = 25 * 1024 * 1024, as = "sync-source", ss = "sync-target", cs = 20, Zn = {
2526
2590
  afrikaans: [
2527
2591
  "[Muziek]",
2528
2592
  "(C) TV GELDERLAND 2021",
@@ -2672,14 +2736,14 @@ const Ya = 10 * 1024 * 1024, qa = 25 * 1024 * 1024, Ja = "sync-source", Za = "sy
2672
2736
  "[MÚSICA]",
2673
2737
  "[Music cuts in British]"
2674
2738
  ]
2675
- }, qn = (e) => {
2739
+ }, Qn = (e) => {
2676
2740
  let t = e;
2677
- return Object.values(Yn).forEach((n) => {
2741
+ return Object.values(Zn).forEach((n) => {
2678
2742
  n.forEach((r) => {
2679
2743
  t = t.replaceAll(r, "");
2680
2744
  });
2681
2745
  }), t = t.replace(/\(.*?\)/g, ""), t = t.replace(/\[.*?\]/g, ""), t;
2682
- }, Jn = 6e4, Zn = 8e3, Qn = 2, er = 0.4, tr = 3, nr = /* @__PURE__ */ new Set([
2746
+ }, er = 6e4, tr = 8e3, nr = 2, rr = 0.4, ir = 3, or = /* @__PURE__ */ new Set([
2683
2747
  "aan",
2684
2748
  "als",
2685
2749
  "ben",
@@ -2792,13 +2856,13 @@ const Ya = 10 * 1024 * 1024, qa = 25 * 1024 * 1024, Ja = "sync-source", Za = "sy
2792
2856
  "you",
2793
2857
  "your"
2794
2858
  ]);
2795
- function rr(e) {
2859
+ function ar(e) {
2796
2860
  const t = /* @__PURE__ */ new Set();
2797
2861
  for (const n of e.toLowerCase().split(/[^a-z0-9À-ɏ]+/))
2798
- n.length < tr || nr.has(n) || t.add(n);
2862
+ n.length < ir || or.has(n) || t.add(n);
2799
2863
  return [...t];
2800
2864
  }
2801
- function ir(e, t) {
2865
+ function sr(e, t) {
2802
2866
  if (!e.length) return 0;
2803
2867
  if (!t.length) return 1;
2804
2868
  const n = new Set(t), r = new Set(e);
@@ -2806,38 +2870,38 @@ function ir(e, t) {
2806
2870
  for (const o of r) n.has(o) || (i += 1);
2807
2871
  return i / r.size;
2808
2872
  }
2809
- function or(e, t = Jn) {
2873
+ function cr(e, t = er) {
2810
2874
  const n = e.filter((a) => !a.partial && typeof a.text == "string");
2811
2875
  if (!n.length) return { text: "", segmentCount: 0 };
2812
2876
  const i = n.reduce((a, s) => Math.max(a, s.endedAt ?? 0), 0) - t;
2813
- return { text: n.filter((a) => (a.endedAt ?? 0) >= i).map((a) => qn(a.text).trim()).filter(Boolean).join(" ").replace(/\s+/g, " ").trim(), segmentCount: n.length };
2877
+ return { text: n.filter((a) => (a.endedAt ?? 0) >= i).map((a) => Qn(a.text).trim()).filter(Boolean).join(" ").replace(/\s+/g, " ").trim(), segmentCount: n.length };
2814
2878
  }
2815
- const ar = 60;
2816
- function es(e, t, n = ar) {
2879
+ const lr = 60;
2880
+ function ls(e, t, n = lr) {
2817
2881
  const r = new Set(e), i = [...e];
2818
2882
  for (const o of t)
2819
2883
  !o || r.has(o) || (r.add(o), i.push(o));
2820
2884
  return i.slice(-n);
2821
2885
  }
2822
- function ts(e) {
2886
+ function us(e) {
2823
2887
  const { segments: t, now: n, state: r } = e;
2824
- if (r.lastTriggerAt && n - r.lastTriggerAt < Zn)
2888
+ if (r.lastTriggerAt && n - r.lastTriggerAt < tr)
2825
2889
  return { trigger: !1, reason: "too_soon" };
2826
- const i = or(t, e.windowMs);
2890
+ const i = cr(t, e.windowMs);
2827
2891
  if (!i.text) return { trigger: !1, reason: "no_speech" };
2828
2892
  const o = i.segmentCount - (r.lastSegmentCount ?? 0);
2829
- if (r.lastQueryTerms && o < Qn)
2893
+ if (r.lastQueryTerms && o < nr)
2830
2894
  return { trigger: !1, reason: "too_few_new" };
2831
- const a = rr(i.text);
2832
- return a.length ? r.lastQueryTerms?.length && ir(a, r.lastQueryTerms) < er ? { trigger: !1, reason: "same_topic" } : { trigger: !0, text: i.text, terms: a, segmentCount: i.segmentCount } : { trigger: !1, reason: "no_speech" };
2895
+ const a = ar(i.text);
2896
+ return a.length ? r.lastQueryTerms?.length && sr(a, r.lastQueryTerms) < rr ? { trigger: !1, reason: "same_topic" } : { trigger: !0, text: i.text, terms: a, segmentCount: i.segmentCount } : { trigger: !1, reason: "no_speech" };
2833
2897
  }
2834
- const ns = [
2898
+ const ds = [
2835
2899
  "personal",
2836
2900
  "workspace",
2837
2901
  "connections",
2838
2902
  "work",
2839
2903
  "ai"
2840
- ], rs = "navNotice", F = {
2904
+ ], ps = "navNotice", F = {
2841
2905
  // The lower bounds are deliberately generous: service ranges (0800/0900) are
2842
2906
  // shorter than geographic numbers, and a too-strict minimum silently drops them.
2843
2907
  // An over-permissive key is harmless — it simply matches nothing.
@@ -2860,38 +2924,38 @@ const ns = [
2860
2924
  PL: { callingCode: "48", nsnMin: 9, nsnMax: 9 },
2861
2925
  US: { callingCode: "1", nsnMin: 10, nsnMax: 10 },
2862
2926
  CA: { callingCode: "1", nsnMin: 10, nsnMax: 10 }
2863
- }, sr = "NL", cr = 15, lr = 8, ur = Array.from(
2927
+ }, ur = "NL", dr = 15, pr = 8, fr = Array.from(
2864
2928
  new Set(Object.values(F).map((e) => e.callingCode))
2865
2929
  ).sort((e, t) => t.length - e.length);
2866
2930
  function fe(e) {
2867
2931
  if (e)
2868
2932
  return F[e.trim().toUpperCase()];
2869
2933
  }
2870
- function C(e, t) {
2934
+ function k(e, t) {
2871
2935
  return e.length >= t.nsnMin && e.length <= t.nsnMax;
2872
2936
  }
2873
2937
  function me(e) {
2874
- if (e.length > cr) return null;
2875
- for (const t of ur) {
2938
+ if (e.length > dr) return null;
2939
+ for (const t of fr) {
2876
2940
  if (!e.startsWith(t)) continue;
2877
2941
  const n = e.slice(t.length);
2878
2942
  for (const r of Object.values(F)) {
2879
2943
  if (r.callingCode !== t) continue;
2880
2944
  const i = r.trunkPrefix, o = i && n.startsWith(i) ? n.slice(i.length) : n;
2881
- if (C(o, r)) return `+${t}${o}`;
2945
+ if (k(o, r)) return `+${t}${o}`;
2882
2946
  }
2883
2947
  return null;
2884
2948
  }
2885
- return e.length < lr ? null : `+${e}`;
2949
+ return e.length < pr ? null : `+${e}`;
2886
2950
  }
2887
- function dr(e) {
2951
+ function mr(e) {
2888
2952
  let t = e.trim();
2889
2953
  const n = t.match(/^(sips?|tel|whatsapp):/i);
2890
2954
  n && (t = t.slice(n[0].length));
2891
2955
  const r = t.indexOf("@");
2892
2956
  return r >= 0 && (t = t.slice(0, r)), t.trim();
2893
2957
  }
2894
- function is(e) {
2958
+ function fs(e) {
2895
2959
  if (!e) return !1;
2896
2960
  const t = e.indexOf("@");
2897
2961
  if (t <= 0) return !1;
@@ -2900,41 +2964,41 @@ function is(e) {
2900
2964
  }
2901
2965
  function ge(e, t) {
2902
2966
  if (!e) return null;
2903
- const n = dr(e);
2967
+ const n = mr(e);
2904
2968
  if (!n) return null;
2905
2969
  const r = n.startsWith("+"), i = n.replace(/\D/g, "");
2906
2970
  if (!i) return null;
2907
2971
  if (r) return me(i);
2908
2972
  if (i.startsWith("00")) return me(i.slice(2));
2909
- const o = fe(t) ?? fe(sr);
2973
+ const o = fe(t) ?? fe(ur);
2910
2974
  if (!o) return null;
2911
2975
  const a = o.trunkPrefix;
2912
2976
  if (a && i.startsWith(a)) {
2913
2977
  const s = i.slice(a.length);
2914
- return C(s, o) ? `+${o.callingCode}${s}` : null;
2978
+ return k(s, o) ? `+${o.callingCode}${s}` : null;
2915
2979
  }
2916
2980
  if (i.startsWith(o.callingCode)) {
2917
2981
  const s = i.slice(o.callingCode.length);
2918
- if (C(s, o)) return `+${o.callingCode}${s}`;
2982
+ if (k(s, o)) return `+${o.callingCode}${s}`;
2919
2983
  }
2920
- return !a && C(i, o) ? `+${o.callingCode}${i}` : null;
2984
+ return !a && k(i, o) ? `+${o.callingCode}${i}` : null;
2921
2985
  }
2922
- function os(e, t = 9) {
2986
+ function ms(e, t = 9) {
2923
2987
  const n = (e ?? "").replace(/\D/g, "");
2924
2988
  return n.length < t ? null : n.slice(-t);
2925
2989
  }
2926
- function Ge(e) {
2990
+ function Fe(e) {
2927
2991
  if (!e) return null;
2928
2992
  const t = e.trim().toLowerCase(), n = t.lastIndexOf("@");
2929
2993
  if (n <= 0 || n === t.length - 1) return null;
2930
2994
  const r = t.slice(0, n).split("+")[0], i = t.slice(n + 1);
2931
2995
  return !r || !i.includes(".") ? null : `${r}@${i}`;
2932
2996
  }
2933
- function as(e) {
2934
- const t = Ge(e);
2997
+ function gs(e) {
2998
+ const t = Fe(e);
2935
2999
  return t ? t.slice(t.lastIndexOf("@") + 1) : null;
2936
3000
  }
2937
- const pr = /* @__PURE__ */ new Set([
3001
+ const gr = /* @__PURE__ */ new Set([
2938
3002
  "co.uk",
2939
3003
  "org.uk",
2940
3004
  "gov.uk",
@@ -2944,14 +3008,14 @@ const pr = /* @__PURE__ */ new Set([
2944
3008
  "com.br",
2945
3009
  "co.za"
2946
3010
  ]);
2947
- function fr(e) {
3011
+ function hr(e) {
2948
3012
  if (!e) return null;
2949
3013
  const t = e.trim().toLowerCase().replace(/\.$/, "").split(".").filter(Boolean);
2950
3014
  if (t.length < 2) return null;
2951
3015
  const n = t.slice(-2).join(".");
2952
- return pr.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
3016
+ return gr.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
2953
3017
  }
2954
- const mr = /* @__PURE__ */ new Set([
3018
+ const yr = /* @__PURE__ */ new Set([
2955
3019
  "gmail.com",
2956
3020
  "googlemail.com",
2957
3021
  "outlook.com",
@@ -2996,16 +3060,16 @@ const mr = /* @__PURE__ */ new Set([
2996
3060
  "proximus.be",
2997
3061
  "scarlet.be"
2998
3062
  ]);
2999
- function ss(e) {
3000
- const t = fr(e);
3001
- return t ? mr.has(t) : !1;
3063
+ function hs(e) {
3064
+ const t = hr(e);
3065
+ return t ? yr.has(t) : !1;
3002
3066
  }
3003
- function cs(e) {
3067
+ function ys(e) {
3004
3068
  if (!e) return !1;
3005
3069
  const t = e.trim().toLowerCase();
3006
3070
  return t === "tel" || t === "sms" || t === "whatsapp" || t === "fax";
3007
3071
  }
3008
- function ls(e, t, n) {
3072
+ function bs(e, t, n) {
3009
3073
  if (!e || !t) return null;
3010
3074
  const r = e.trim().toLowerCase();
3011
3075
  if (r === "tel" || r === "sms" || r === "whatsapp") {
@@ -3017,13 +3081,13 @@ function ls(e, t, n) {
3017
3081
  return o ? `fax:${o}` : null;
3018
3082
  }
3019
3083
  if (r === "mailto" || r === "email") {
3020
- const o = Ge(t);
3084
+ const o = Fe(t);
3021
3085
  return o ? `mailto:${o}` : null;
3022
3086
  }
3023
3087
  const i = t.trim().toLowerCase();
3024
3088
  return i ? `${r}:${i}` : null;
3025
3089
  }
3026
- const gr = [
3090
+ const br = [
3027
3091
  /<blockquote/i,
3028
3092
  /class="?gmail_quote/i,
3029
3093
  // Gmail quote container
@@ -3036,24 +3100,24 @@ const gr = [
3036
3100
  // Outlook underscore separator before "From:"
3037
3101
  /\bOn\b[\s\S]{0,200}?\bwrote:/i
3038
3102
  // Gmail "On <date> <name> wrote:"
3039
- ], he = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, hr = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
3040
- function yr(e) {
3103
+ ], he = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, Ar = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
3104
+ function Er(e) {
3041
3105
  const t = e.split(`
3042
3106
  `);
3043
3107
  for (let n = 0; n < t.length; n++)
3044
- if (hr.test(t[n]) || he.test(t[n]) && t.slice(n + 1, n + 4).some((r) => he.test(r)))
3108
+ if (Ar.test(t[n]) || he.test(t[n]) && t.slice(n + 1, n + 4).some((r) => he.test(r)))
3045
3109
  return t.slice(0, n).join(`
3046
3110
  `).trim();
3047
3111
  return e;
3048
3112
  }
3049
- const br = /^(?:https?:|mailto:|tel:)/i, Ar = /^(?:https?:|cid:|data:image\/)/i;
3113
+ const Sr = /^(?:https?:|mailto:|tel:)/i, _r = /^(?:https?:|cid:|data:image\/)/i;
3050
3114
  function U(e, t) {
3051
3115
  const n = e.match(new RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s">]+))`, "i"));
3052
3116
  return (n?.[1] ?? n?.[2] ?? n?.[3] ?? "").trim();
3053
3117
  }
3054
- const Er = /(!\[[^\]]*\]\([^)]*\))/;
3118
+ const Tr = /(!\[[^\]]*\]\([^)]*\))/;
3055
3119
  function ye(e) {
3056
- return e.replace(/\s+/g, " ").trim().split(Er).map((t, n) => n % 2 === 1 ? t : t.replace(/[[\]]/g, "\\$&")).join("");
3120
+ return e.replace(/\s+/g, " ").trim().split(Tr).map((t, n) => n % 2 === 1 ? t : t.replace(/[[\]]/g, "\\$&")).join("");
3057
3121
  }
3058
3122
  function K(e) {
3059
3123
  return e.replace(
@@ -3061,47 +3125,47 @@ function K(e) {
3061
3125
  (t) => `%${t.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0")}`
3062
3126
  );
3063
3127
  }
3064
- function Sr(e) {
3128
+ function wr(e) {
3065
3129
  return e.replace(/<img\b([^>]*?)\/?>/gi, (n, r) => {
3066
3130
  const i = U(r, "src");
3067
- return Ar.test(i) ? `![${ye(U(r, "alt"))}](${K(i)})` : "";
3131
+ return _r.test(i) ? `![${ye(U(r, "alt"))}](${K(i)})` : "";
3068
3132
  }).replace(
3069
3133
  /<a\b([^>]*)>([\s\S]*?)<\/a\s*>/gi,
3070
3134
  (n, r, i) => {
3071
3135
  const o = ye(i.replace(/<[^>]*>/g, "")), a = U(r, "href");
3072
- return br.test(a) ? `[${o || K(a)}](${K(a)})` : o;
3136
+ return Sr.test(a) ? `[${o || K(a)}](${K(a)})` : o;
3073
3137
  }
3074
3138
  );
3075
3139
  }
3076
- const _r = /<table\b[^>]*>((?:(?!<table\b)[\s\S])*?)<\/table\s*>/i, Tr = /<tr\b[^>]*>([\s\S]*?)<\/tr\s*>/gi, Ir = /<(t[dh])\b([^>]*)>([\s\S]*?)<\/\1\s*>/gi;
3077
- function wr(e, t) {
3140
+ const Ir = /<table\b[^>]*>((?:(?!<table\b)[\s\S])*?)<\/table\s*>/i, Mr = /<tr\b[^>]*>([\s\S]*?)<\/tr\s*>/gi, Cr = /<(t[dh])\b([^>]*)>([\s\S]*?)<\/\1\s*>/gi;
3141
+ function kr(e, t) {
3078
3142
  return /<table\b/i.test(e) || e.includes(`
3079
3143
 
3080
3144
  |`) || t.includes("![") || t.length > 200;
3081
3145
  }
3082
- const Mr = 40, kr = { left: "---", center: ":---:", right: "---:" };
3083
- function Cr(e) {
3146
+ const Or = 40, vr = { left: "---", center: ":---:", right: "---:" };
3147
+ function xr(e) {
3084
3148
  const t = e.match(/align\s*[=:]\s*["']?\s*(right|center)/i);
3085
3149
  return t ? t[1].toLowerCase() : "left";
3086
3150
  }
3087
- function Or(e) {
3151
+ function Nr(e) {
3088
3152
  return e.replace(/<[^>]*>/g, "").replace(/\s+/g, " ").trim().replace(/\|/g, "\\|");
3089
3153
  }
3090
- function vr(e) {
3154
+ function Rr(e) {
3091
3155
  const t = [];
3092
- for (const a of e.matchAll(Tr)) {
3156
+ for (const a of e.matchAll(Mr)) {
3093
3157
  const s = [];
3094
- for (const d of a[1].matchAll(Ir)) {
3095
- const f = Or(d[3]);
3096
- if (wr(d[3], f)) return null;
3097
- s.push({ text: f, align: Cr(d[2]) });
3158
+ for (const d of a[1].matchAll(Cr)) {
3159
+ const f = Nr(d[3]);
3160
+ if (kr(d[3], f)) return null;
3161
+ s.push({ text: f, align: xr(d[2]) });
3098
3162
  }
3099
3163
  if (s.length === 0) return null;
3100
3164
  s.some((d) => d.text !== "") && t.push(s);
3101
3165
  }
3102
3166
  const n = t[0]?.length ?? 0;
3103
3167
  if (t.length < 2 || n < 2 || t.some((a) => a.length !== n)) return null;
3104
- const r = (a) => `| ${a.map((s) => s.text).join(" | ")} |`, i = t[1].map((a) => kr[a.align]).join(" | "), o = t.slice(1).map(r).join(`
3168
+ const r = (a) => `| ${a.map((s) => s.text).join(" | ")} |`, i = t[1].map((a) => vr[a.align]).join(" | "), o = t.slice(1).map(r).join(`
3105
3169
  `);
3106
3170
  return `
3107
3171
 
@@ -3111,18 +3175,18 @@ ${o}
3111
3175
 
3112
3176
  `;
3113
3177
  }
3114
- function Nr(e) {
3178
+ function Dr(e) {
3115
3179
  return e.replace(/<\/(t[dh])\s*>/gi, " ").replace(/<\/tr\s*>/gi, `
3116
3180
  `).replace(/<(?:tbody|thead|tfoot|caption|colgroup|col|tr|t[dh])\b[^>]*>/gi, "").replace(/<\/(?:tbody|thead|tfoot|caption|colgroup)\s*>/gi, "");
3117
3181
  }
3118
- function xr(e) {
3182
+ function $r(e) {
3119
3183
  let t = e;
3120
- for (let n = 0; n < Mr; n++) {
3121
- const r = _r.exec(t);
3184
+ for (let n = 0; n < Or; n++) {
3185
+ const r = Ir.exec(t);
3122
3186
  if (!r || r.index === void 0) break;
3123
- const o = vr(r[1]) ?? `
3187
+ const o = Rr(r[1]) ?? `
3124
3188
 
3125
- ${Nr(r[1])}
3189
+ ${Dr(r[1])}
3126
3190
 
3127
3191
  `;
3128
3192
  t = t.slice(0, r.index) + o + t.slice(r.index + r[0].length);
@@ -3132,7 +3196,7 @@ ${Nr(r[1])}
3132
3196
  function be(e, t) {
3133
3197
  let n = e;
3134
3198
  return n = n.replace(/<(script|style)[\s\S]*?<\/\1>/gi, ""), n = n.replace(/<!--[\s\S]*?-->/g, ""), n = n.replace(/<br\s*\/?>/gi, `
3135
- `), t && (n = xr(Sr(n))), n = n.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi, `
3199
+ `), t && (n = $r(wr(n))), n = n.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi, `
3136
3200
 
3137
3201
  `), n = n.replace(/<\/(div|li|tr)>/gi, `
3138
3202
  `), n = n.replace(/<\/(td|th)>/gi, " "), n = n.replace(/<[^>]+>/g, ""), n = n.replace(/<[^>]*$/, ""), n;
@@ -3140,7 +3204,7 @@ function be(e, t) {
3140
3204
  function Ae(e) {
3141
3205
  return !Number.isInteger(e) || e < 0 || e > 1114111 ? null : String.fromCodePoint(e);
3142
3206
  }
3143
- const Rr = {
3207
+ const Lr = {
3144
3208
  euro: "€",
3145
3209
  pound: "£",
3146
3210
  yen: "¥",
@@ -3163,7 +3227,7 @@ const Rr = {
3163
3227
  apos: "'"
3164
3228
  };
3165
3229
  function Ee(e) {
3166
- return e.replace(/&nbsp;/gi, " ").replace(/&([a-z]+);/gi, (t, n) => Rr[n.toLowerCase()] ?? t).replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#(\d+);/g, (t, n) => Ae(Number(n)) ?? t).replace(/&#x([0-9a-f]+);/gi, (t, n) => Ae(parseInt(n, 16)) ?? t).replace(/&amp;/gi, "&");
3230
+ return e.replace(/&nbsp;/gi, " ").replace(/&([a-z]+);/gi, (t, n) => Lr[n.toLowerCase()] ?? t).replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#(\d+);/g, (t, n) => Ae(Number(n)) ?? t).replace(/&#x([0-9a-f]+);/gi, (t, n) => Ae(parseInt(n, 16)) ?? t).replace(/&amp;/gi, "&");
3167
3231
  }
3168
3232
  function Se(e) {
3169
3233
  return e.replace(/\r/g, "").replace(/[ \t]+/g, " ").replace(/ *\n */g, `
@@ -3171,352 +3235,360 @@ function Se(e) {
3171
3235
 
3172
3236
  `).trim();
3173
3237
  }
3174
- const Dr = /<\s*(html|body|div|p|table|br|span)\b/i;
3175
- function us(e) {
3176
- return Dr.test(e);
3238
+ const Pr = /<\s*(html|body|div|p|table|br|span)\b/i;
3239
+ function As(e) {
3240
+ return Pr.test(e);
3177
3241
  }
3178
- function ds(e) {
3179
- return Fe(e, !1);
3242
+ function Es(e) {
3243
+ return We(e, !1);
3180
3244
  }
3181
- function ps(e) {
3182
- return Fe(e, !0);
3245
+ function Ss(e) {
3246
+ return We(e, !0);
3183
3247
  }
3184
- function Fe(e, t) {
3248
+ function We(e, t) {
3185
3249
  if (typeof e != "string" || !e) return "";
3186
3250
  let n = e.length;
3187
- for (const a of gr) {
3251
+ for (const a of br) {
3188
3252
  const s = e.search(a);
3189
3253
  s >= 0 && s < n && (n = s);
3190
3254
  }
3191
3255
  const r = e.slice(0, n);
3192
3256
  let i = Se(Ee(be(r, t)));
3193
- return i || (i = Se(Ee(be(e, t)))), yr(i) || i;
3257
+ return i || (i = Se(Ee(be(e, t)))), Er(i) || i;
3194
3258
  }
3195
3259
  export {
3196
- Ei as ACTIVE_ASSIGNMENT_STATUSES,
3260
+ wi as ACTIVE_ASSIGNMENT_STATUSES,
3197
3261
  A as ACTIVITY_CATALOG,
3198
- vn as AI_ATTACHMENT_LIMITS,
3199
- Zo as AI_ATTACHMENT_MAX_PER_TURN,
3200
- Jo as AI_ATTACHMENT_TURN_BUDGET,
3201
- Te as AI_VENDORS,
3202
- ft as ALLOWED_LINK_SCHEMES,
3203
- Ra as APP_PERMISSIONS,
3262
+ Rn as AI_ATTACHMENT_LIMITS,
3263
+ aa as AI_ATTACHMENT_MAX_PER_TURN,
3264
+ oa as AI_ATTACHMENT_TURN_BUDGET,
3265
+ we as AI_VENDORS,
3266
+ mt as ALLOWED_LINK_SCHEMES,
3267
+ Ha as APP_PERMISSIONS,
3204
3268
  Z as ARTIFACT_MAX_BLOCKS,
3205
- pi as ARTIFACT_MAX_BODY_BYTES,
3269
+ hi as ARTIFACT_MAX_BODY_BYTES,
3206
3270
  L as ARTIFACT_MAX_CELL_LEN,
3207
3271
  ne as ARTIFACT_MAX_KPI_ITEMS,
3208
3272
  Q as ARTIFACT_MAX_LIST_ITEMS,
3209
3273
  te as ARTIFACT_MAX_TABLE_COLUMNS,
3210
3274
  ee as ARTIFACT_MAX_TABLE_ROWS,
3211
- we as ARTIFACT_MAX_TEXT_LEN,
3212
- _t as ASSIGNMENT_SCOPE_KIND,
3213
- ra as ASSIST_BANDS,
3214
- na as ASSIST_SOURCE_PROVIDER_GROUP,
3215
- $t as ATTENTION_STATUSES,
3275
+ Me as ARTIFACT_MAX_TEXT_LEN,
3276
+ Tt as ASSIGNMENT_SCOPE_KIND,
3277
+ da as ASSIST_BANDS,
3278
+ ua as ASSIST_SOURCE_PROVIDER_GROUP,
3279
+ Lt as ATTENTION_STATUSES,
3216
3280
  He as AUTH_APP_NAME,
3217
- cn as AUTO_READY_MIN_PROPOSALS,
3218
- ln as AUTO_READY_RATE,
3219
- nt as ActivityTypeRegistry,
3220
- Jr as BUILT_IN_ONLY,
3221
- Lt as BULK_PENALTY,
3222
- Zn as CADENCE_FLOOR_MS,
3223
- Qn as CADENCE_MIN_NEW_SEGMENTS,
3224
- er as CADENCE_MIN_NOVELTY,
3225
- Jn as CADENCE_WINDOW_MS,
3226
- ho as CLASSIFY_VARS,
3227
- _a as CONTEXT_COLLECT_SERVICE,
3228
- li as CORE_DIMENSIONS,
3229
- Ln as CommunicationScheme,
3230
- Mt as DAY_MS,
3231
- to as DEFAULT_MEMORY_BUDGET,
3232
- sr as DEFAULT_PHONE_REGION,
3233
- ka as DOCUMENT_APPLY_SERVICE,
3234
- wa as DOCUMENT_DESCRIBE_SERVICE,
3235
- Ma as DOCUMENT_INSPECT_SERVICE,
3236
- Ue as DOCUMENT_OPERATIONS,
3237
- bo as EMPTY_WORKFLOW,
3238
- Aa as FEATURE_FOLDER_MANAGEMENT,
3239
- Ea as FEATURE_REMOTE_SEARCH,
3240
- Ut as FOLLOW_UP_HOURS,
3241
- wt as HOUR_MS,
3242
- Dr as HTML_BODY_RE,
3281
+ ln as AUTO_READY_MIN_PROPOSALS,
3282
+ un as AUTO_READY_RATE,
3283
+ rt as ActivityTypeRegistry,
3284
+ ti as BUILT_IN_ONLY,
3285
+ Pt as BULK_PENALTY,
3286
+ tr as CADENCE_FLOOR_MS,
3287
+ nr as CADENCE_MIN_NEW_SEGMENTS,
3288
+ rr as CADENCE_MIN_NOVELTY,
3289
+ er as CADENCE_WINDOW_MS,
3290
+ So as CLASSIFY_VARS,
3291
+ xa as CONTEXT_COLLECT_SERVICE,
3292
+ fi as CORE_DIMENSIONS,
3293
+ Kn as CommunicationScheme,
3294
+ Ct as DAY_MS,
3295
+ ao as DEFAULT_MEMORY_BUDGET,
3296
+ ur as DEFAULT_PHONE_REGION,
3297
+ La as DOCUMENT_APPLY_SERVICE,
3298
+ Da as DOCUMENT_DESCRIBE_SERVICE,
3299
+ $a as DOCUMENT_INSPECT_SERVICE,
3300
+ Ke as DOCUMENT_OPERATIONS,
3301
+ To as EMPTY_WORKFLOW,
3302
+ Ca as FEATURE_FOLDER_MANAGEMENT,
3303
+ Oa as FEATURE_MESSAGE_REACTIONS,
3304
+ ka as FEATURE_REMOTE_SEARCH,
3305
+ Kt as FOLLOW_UP_HOURS,
3306
+ Mt as HOUR_MS,
3307
+ Pr as HTML_BODY_RE,
3243
3308
  E as INELIGIBLE,
3244
- Oa as INSTALLATION_HEADER,
3245
- nn as INTERACTION_KIND,
3246
- ya as InteractionParticipantRole,
3247
- Vt as KB_FALLBACK_LOCALE,
3309
+ Ua as INSTALLATION_HEADER,
3310
+ rn as INTERACTION_KIND,
3311
+ Ia as InteractionParticipantRole,
3312
+ zt as KB_FALLBACK_LOCALE,
3248
3313
  ae as KB_LOCALES,
3249
3314
  G as LOOSE_STATUSES,
3250
3315
  Nt as MAIL_HINT_HEADERS,
3251
- Ur as MAX_ACTIONS,
3252
- Tt as MAX_ASSIGNMENT_TURNS,
3253
- $r as MAX_BLOCKS,
3254
- Re as MAX_COLLECTION_DEPTH,
3255
- Ya as MAX_EDITABLE_FILE_BYTES,
3256
- Lr as MAX_FIELDS,
3257
- Pr as MAX_LIST_ITEMS,
3258
- Ji as MAX_MEMORY_BROWSE,
3259
- eo as MAX_MEMORY_BUDGET,
3260
- Zi as MAX_MEMORY_CHARS,
3261
- ar as MAX_SHOWN_KEYS,
3262
- gn as MAX_TOPIC_CANDIDATES,
3263
- mn as MAX_TOPIC_EXAMPLES,
3316
+ Br as MAX_ACTIONS,
3317
+ wt as MAX_ASSIGNMENT_TURNS,
3318
+ Ur as MAX_BLOCKS,
3319
+ De as MAX_COLLECTION_DEPTH,
3320
+ is as MAX_EDITABLE_FILE_BYTES,
3321
+ Kr as MAX_FIELDS,
3322
+ jr as MAX_LIST_ITEMS,
3323
+ no as MAX_MEMORY_BROWSE,
3324
+ oo as MAX_MEMORY_BUDGET,
3325
+ ro as MAX_MEMORY_CHARS,
3326
+ lr as MAX_SHOWN_KEYS,
3327
+ yn as MAX_TOPIC_CANDIDATES,
3328
+ hn as MAX_TOPIC_EXAMPLES,
3264
3329
  P as MAX_TOPIC_EXAMPLE_CHARS,
3265
- qa as MAX_VIEWABLE_FILE_BYTES,
3266
- Qi as MIN_MEMORY_BUDGET,
3267
- rs as NAV_NOTICE_SLOT,
3268
- Na as NOTIFICATION_SOURCE_PROVIDER_GROUP,
3269
- ro as ONBOARDING_SOURCE_PROVIDER_GROUP,
3330
+ os as MAX_VIEWABLE_FILE_BYTES,
3331
+ io as MIN_MEMORY_BUDGET,
3332
+ ps as NAV_NOTICE_SLOT,
3333
+ ja as NOTIFICATION_SOURCE_PROVIDER_GROUP,
3334
+ co as ONBOARDING_SOURCE_PROVIDER_GROUP,
3270
3335
  F as PHONE_REGIONS,
3271
- Ke as PRESENCE_ONLINE_WINDOW_MS,
3272
- jn as PRESENCE_SURVIVES_OFFLINE,
3273
- oo as PROFILE_TOOL_DISPOSITIONS,
3274
- ha as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
3275
- ga as PROVIDER_FEATURE_MESSAGE_WINDOW,
3276
- mr as PUBLIC_EMAIL_DOMAINS,
3336
+ je as PRESENCE_ONLINE_WINDOW_MS,
3337
+ Wn as PRESENCE_SURVIVES_OFFLINE,
3338
+ uo as PROFILE_TOOL_DISPOSITIONS,
3339
+ wa as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
3340
+ Ta as PROVIDER_FEATURE_MESSAGE_WINDOW,
3341
+ yr as PUBLIC_EMAIL_DOMAINS,
3277
3342
  se as READ_STEP_TYPES,
3278
- Yt as RELATED_SUBJECT_KINDS,
3279
- Pe as RESERVED_STATUS_KEYS,
3280
- Ha as RESOURCE_ATTACHED_SERVICE,
3281
- Ua as RESOURCE_DESCRIBE_SERVICE,
3282
- Ba as RESOURCE_RESOLVE_SERVICE,
3283
- Ka as RESOURCE_SEARCH_SERVICE,
3284
- Fa as SCOPE_READ_ROUTE,
3285
- Ga as SCOPE_RELATED_ROUTE,
3286
- ns as SETTINGS_CATEGORIES,
3287
- Mi as SIGNATURE_INTENTS,
3288
- Pt as SLA_HOURS_BY_PRIORITY,
3289
- an as STEP_MAX_TOKENS_MAX,
3290
- on as STEP_MAX_TOKENS_MIN,
3291
- vt as SUMMARY_MIN_LAST_CHARS,
3292
- Ot as SUMMARY_MIN_MESSAGES,
3293
- Qa as SYNC_RUN_MAX_ERRORS,
3294
- Ja as SYNC_SOURCE_PROVIDER_GROUP,
3295
- Za as SYNC_TARGET_PROVIDER_GROUP,
3296
- St as TERMINAL_ASSIGNMENT_STATUSES,
3297
- un as TERMINAL_RUN_STATUSES,
3298
- go as TRIGGER_VARS,
3299
- Sa as UNSUPPORTED,
3300
- lt as USAGE_DIMENSIONS,
3301
- ut as USAGE_DIMENSION_IDS,
3302
- io as WORK_AREAS,
3303
- Po as WORK_COMMENT_ADDED,
3304
- Uo as WORK_ITEM_ASSIGNED,
3305
- En as WORK_ITEM_SCOPE_KIND,
3306
- Ko as WORK_ITEM_STATUS_CHANGED,
3307
- Sn as WORK_PROJECT_SCOPE_KIND,
3343
+ qt as RELATED_SUBJECT_KINDS,
3344
+ Ue as RESERVED_STATUS_KEYS,
3345
+ qa as RESOURCE_ATTACHED_SERVICE,
3346
+ za as RESOURCE_DESCRIBE_SERVICE,
3347
+ Ya as RESOURCE_RESOLVE_SERVICE,
3348
+ Xa as RESOURCE_SEARCH_SERVICE,
3349
+ Qa as SCOPE_READ_ROUTE,
3350
+ Za as SCOPE_RELATED_ROUTE,
3351
+ ds as SETTINGS_CATEGORIES,
3352
+ xi as SIGNATURE_INTENTS,
3353
+ Ut as SLA_HOURS_BY_PRIORITY,
3354
+ sn as STEP_MAX_TOKENS_MAX,
3355
+ an as STEP_MAX_TOKENS_MIN,
3356
+ xt as SUMMARY_MIN_LAST_CHARS,
3357
+ vt as SUMMARY_MIN_MESSAGES,
3358
+ cs as SYNC_RUN_MAX_ERRORS,
3359
+ as as SYNC_SOURCE_PROVIDER_GROUP,
3360
+ ss as SYNC_TARGET_PROVIDER_GROUP,
3361
+ _t as TERMINAL_ASSIGNMENT_STATUSES,
3362
+ dn as TERMINAL_RUN_STATUSES,
3363
+ Eo as TRIGGER_VARS,
3364
+ va as UNSUPPORTED,
3365
+ ut as USAGE_DIMENSIONS,
3366
+ dt as USAGE_DIMENSION_IDS,
3367
+ wn as WORK_ACTIVITY_SCOPE_KIND,
3368
+ lo as WORK_AREAS,
3369
+ Fo as WORK_COMMENT_ADDED,
3370
+ Wo as WORK_ITEM_ASSIGNED,
3371
+ _n as WORK_ITEM_SCOPE_KIND,
3372
+ Vo as WORK_ITEM_STATUS_CHANGED,
3373
+ Tn as WORK_PROJECT_SCOPE_KIND,
3308
3374
  O as W_PRIORITY,
3309
- Do as acceptExampleCandidate,
3310
- Jt as actingIdentityKey,
3311
- xo as activeWorkTypes,
3312
- Br as activityIconOf,
3313
- Yr as activityJoinUrl,
3314
- Ze as activitySnippet,
3315
- Qe as activityTextParams,
3316
- Xr as activityTimelineText,
3317
- rt as activityTimestamp,
3318
- h as activityTypeInfo,
3319
- co as actorKey,
3320
- Ro as addExampleCandidate,
3321
- $a as agePresenceEntry,
3322
- On as aiAttachmentKind,
3323
- Qo as aiAttachmentRejection,
3375
+ Bo as acceptExampleCandidate,
3376
+ Zt as actingIdentityKey,
3377
+ Ko as activeWorkTypes,
3378
+ Gr as activityIconOf,
3379
+ Qr as activityJoinUrl,
3380
+ Qe as activitySnippet,
3381
+ et as activityTextParams,
3382
+ Zr as activityTimelineText,
3383
+ it as activityTimestamp,
3384
+ m as activityTypeInfo,
3385
+ mo as actorKey,
3386
+ jo as addExampleCandidate,
3387
+ Fa as agePresenceEntry,
3388
+ Nn as aiAttachmentKind,
3389
+ sa as aiAttachmentRejection,
3324
3390
  J as aiBudgetLimit,
3325
- si as aiBudgetPeriodKey,
3326
- it as aiBudgetPeriodStart,
3327
- ai as aiBudgetState,
3328
- oi as aiVendorAcceptsAttachment,
3329
- ni as aiVendorDefaultModel,
3330
- ti as aiVendorLabel,
3331
- ii as aiVendorNeedsBaseUrl,
3332
- ri as aiVendorsWith,
3333
- je as appNameFromPath,
3334
- ko as applyRounding,
3335
- ki as applySignature,
3336
- sn as approvalRate,
3337
- mi as artifactBodyBytes,
3338
- gi as artifactOutline,
3339
- hi as artifactToMarkdown,
3340
- fo as assignmentMismatch,
3341
- _i as assignmentScopeKey,
3342
- Ii as assignmentSubject,
3343
- qr as buildActivityPreview,
3344
- ua as buildChannelIntents,
3345
- yi as buildShareKeys,
3346
- or as buildWindow,
3347
- Wi as canNestUnder,
3348
- Fr as carriesText,
3349
- zi as categoryLabel,
3350
- In as categoryOf,
3351
- ma as channelKindForScheme,
3352
- Hr as channelKindOf,
3353
- yo as clampStepMaxTokens,
3354
- Ri as classifyMail,
3355
- ps as cleanMessageMarkdown,
3356
- ds as cleanMessageText,
3357
- oa as compareAssistRank,
3358
- fn as compareWorkTypes,
3359
- wi as decideAssignmentState,
3360
- ts as decideCadence,
3361
- ca as decideIncomingCall,
3362
- zt as defaultLocaleOf,
3363
- zo as defaultStatusKey,
3364
- ba as defineIntent,
3365
- Ft as depthOf,
3366
- Da as derivePresence,
3367
- la as disabledIntentsFromCapabilities,
3368
- Ca as documentKindOf,
3369
- Mo as elapsedSeconds,
3370
- as as emailDomain,
3371
- ls as endpointKey,
3372
- Wn as extractParams,
3373
- rr as extractTerms,
3374
- pa as filterByEndpoint,
3375
- da as filterByIntent,
3376
- $n as filterByTargetScheme,
3377
- N as findAiVendor,
3378
- va as flattenLocales,
3379
- at as floorToPeriod,
3380
- qt as formatActingIdentity,
3381
- Oo as formatClock,
3382
- Co as formatHm,
3383
- Ho as formatItemKey,
3384
- ot as formatPeriod,
3385
- ta as freshSources,
3386
- Zr as getActivitySeenUserIds,
3387
- Ci as getContactEndpoints,
3388
- Bi as getShortTitle,
3389
- Ki as getUrgencyScore,
3390
- De as heightOf,
3391
- ji as helpCenterText,
3392
- mo as humanizeAction,
3393
- rn as interactionIdOf,
3394
- Lo as isAgentUser,
3395
- Pi as isAssigned,
3396
- Si as isAssignmentTerminal,
3397
- en as isAssignmentTrigger,
3398
- So as isAutoReady,
3399
- Gt as isAwaitingThem,
3400
- ei as isChatMessageActivity,
3401
- Ui as isClosed,
3402
- Vr as isConnectedType,
3403
- Wa as isDeepLink,
3404
- Wt as isDescendant,
3405
- Oi as isEligible,
3406
- Qr as isEmailActivity,
3407
- us as isHtmlBody,
3408
- To as isInFlight,
3409
- Dt as isInteractionUnseen,
3410
- Va as isLandingPath,
3411
- Ct as isLikelyBulk,
3391
+ di as aiBudgetPeriodKey,
3392
+ ot as aiBudgetPeriodStart,
3393
+ ui as aiBudgetState,
3394
+ li as aiVendorAcceptsAttachment,
3395
+ ai as aiVendorDefaultModel,
3396
+ oi as aiVendorLabel,
3397
+ ci as aiVendorNeedsBaseUrl,
3398
+ si as aiVendorsWith,
3399
+ Ge as appNameFromPath,
3400
+ Do as applyRounding,
3401
+ Ni as applySignature,
3402
+ cn as approvalRate,
3403
+ bi as artifactBodyBytes,
3404
+ Ai as artifactOutline,
3405
+ Ei as artifactToMarkdown,
3406
+ bo as assignmentMismatch,
3407
+ Mi as assignmentScopeKey,
3408
+ Oi as assignmentSubject,
3409
+ ei as buildActivityPreview,
3410
+ ba as buildChannelIntents,
3411
+ Si as buildShareKeys,
3412
+ cr as buildWindow,
3413
+ qi as canNestUnder,
3414
+ Xr as carriesText,
3415
+ Zi as categoryLabel,
3416
+ Cn as categoryOf,
3417
+ _a as channelKindForScheme,
3418
+ Fr as channelKindOf,
3419
+ _o as clampStepMaxTokens,
3420
+ Ui as classifyMail,
3421
+ Ss as cleanMessageMarkdown,
3422
+ Es as cleanMessageText,
3423
+ fa as compareAssistRank,
3424
+ gn as compareWorkTypes,
3425
+ vi as decideAssignmentState,
3426
+ us as decideCadence,
3427
+ ha as decideIncomingCall,
3428
+ Xt as defaultLocaleOf,
3429
+ ta as defaultStatusKey,
3430
+ Ma as defineIntent,
3431
+ Wt as depthOf,
3432
+ Ga as derivePresence,
3433
+ ya as disabledIntentsFromCapabilities,
3434
+ Pa as documentKindOf,
3435
+ Ro as elapsedSeconds,
3436
+ gs as emailDomain,
3437
+ bs as endpointKey,
3438
+ Xn as extractParams,
3439
+ ar as extractTerms,
3440
+ Ea as filterByEndpoint,
3441
+ Aa as filterByIntent,
3442
+ Un as filterByTargetScheme,
3443
+ x as findAiVendor,
3444
+ Ka as flattenLocales,
3445
+ st as floorToPeriod,
3446
+ Jt as formatActingIdentity,
3447
+ Lo as formatClock,
3448
+ $o as formatHm,
3449
+ Yo as formatItemKey,
3450
+ at as formatPeriod,
3451
+ la as freshSources,
3452
+ ni as getActivitySeenUserIds,
3453
+ Ri as getContactEndpoints,
3454
+ Wi as getShortTitle,
3455
+ Fi as getUrgencyScore,
3456
+ No as hasReacted,
3457
+ $e as heightOf,
3458
+ zi as helpCenterText,
3459
+ Ao as humanizeAction,
3460
+ on as interactionIdOf,
3461
+ Go as isAgentUser,
3462
+ Hi as isAssigned,
3463
+ Ii as isAssignmentTerminal,
3464
+ tn as isAssignmentTrigger,
3465
+ Mo as isAutoReady,
3466
+ Ft as isAwaitingThem,
3467
+ ii as isChatMessageActivity,
3468
+ Gi as isClosed,
3469
+ qr as isConnectedType,
3470
+ es as isDeepLink,
3471
+ Vt as isDescendant,
3472
+ Di as isEligible,
3473
+ ri as isEmailActivity,
3474
+ As as isHtmlBody,
3475
+ ko as isInFlight,
3476
+ $t as isInteractionUnseen,
3477
+ ts as isLandingPath,
3478
+ Ot as isLikelyBulk,
3412
3479
  _e as isMessageShape,
3413
- jr as isMessageType,
3414
- zn as isMoreSpecificPattern,
3415
- ea as isOutwardTool,
3480
+ Wr as isMessageType,
3481
+ qn as isMoreSpecificPattern,
3482
+ Te as isNoteShape,
3483
+ ca as isOutwardTool,
3416
3484
  Bt as isParked,
3417
- dn as isPaused,
3418
- Wr as isPlaybookAuthoredType,
3419
- ss as isPublicEmailDomain,
3420
- Xa as isPublicPath,
3485
+ pn as isPaused,
3486
+ Yr as isPlaybookAuthoredType,
3487
+ hs as isPublicEmailDomain,
3488
+ rs as isPublicPath,
3421
3489
  Ht as isReminderActive,
3422
- Gr as isReplyableType,
3423
- $i as isSlaAtRisk,
3424
- _o as isTerminal,
3425
- Ni as isThreadLongEnough,
3426
- zr as isTranscriptType,
3427
- Xo as isWorkClosed,
3428
- No as isWorkTypeVisible,
3429
- Fo as itemDossierKeys,
3430
- Tn as ladderFor,
3431
- Hi as linkLabel,
3432
- ci as listeningAllowed,
3433
- Fi as localeInstruction,
3434
- Gi as localeName,
3435
- Vi as localesOf,
3436
- is as looksLikeEmail,
3437
- fa as matchContactToIntents,
3438
- Xn as matchPublicRoute,
3439
- Yi as mcpCredentialScope,
3440
- qi as mcpToolPrefix,
3441
- es as mergeShownKeys,
3442
- Je as messageCountsAs,
3443
- cs as needsPhoneRegion,
3444
- fi as normalizeArtifactBlocks,
3445
- Kr as normalizeBlocks,
3446
- Ge as normalizeEmail,
3490
+ zr as isReplyableType,
3491
+ ji as isSlaAtRisk,
3492
+ Co as isTerminal,
3493
+ Li as isThreadLongEnough,
3494
+ Jr as isTranscriptType,
3495
+ na as isWorkClosed,
3496
+ Uo as isWorkTypeVisible,
3497
+ Zo as itemDossierKeys,
3498
+ Mn as ladderFor,
3499
+ Vi as linkLabel,
3500
+ pi as listeningAllowed,
3501
+ Yi as localeInstruction,
3502
+ Xi as localeName,
3503
+ Ji as localesOf,
3504
+ fs as looksLikeEmail,
3505
+ Sa as matchContactToIntents,
3506
+ Jn as matchPublicRoute,
3507
+ eo as mcpCredentialScope,
3508
+ to as mcpToolPrefix,
3509
+ ls as mergeShownKeys,
3510
+ Ze as messageCountsAs,
3511
+ ys as needsPhoneRegion,
3512
+ Vr as nestsUnderParent,
3513
+ yi as normalizeArtifactBlocks,
3514
+ Hr as normalizeBlocks,
3515
+ Fe as normalizeEmail,
3447
3516
  S as normalizeExample,
3448
- xa as notificationPrefKey,
3449
- ir as novelty,
3450
- Ia as operationDescriptor,
3451
- Ta as operationsForKind,
3452
- vi as parkMarksById,
3453
- ao as parseActingIdentity,
3454
- jo as parseItemKey,
3455
- Fn as pathToRegex,
3456
- ui as periodsInRange,
3457
- os as phoneSuffix,
3458
- xi as pickMailHeaders,
3459
- Ye as plainTextFromMarkdown,
3460
- Qt as playbookActor,
3461
- Eo as procedureOf,
3462
- Wo as projectDossierKeys,
3463
- Vn as publicBasePathFor,
3464
- za as publicRoutePatterns,
3465
- B as readPath,
3517
+ Ba as notificationPrefKey,
3518
+ sr as novelty,
3519
+ Ra as operationDescriptor,
3520
+ Na as operationsForKind,
3521
+ $i as parkMarksById,
3522
+ po as parseActingIdentity,
3523
+ qo as parseItemKey,
3524
+ zn as pathToRegex,
3525
+ mi as periodsInRange,
3526
+ ms as phoneSuffix,
3527
+ Pi as pickMailHeaders,
3528
+ qe as plainTextFromMarkdown,
3529
+ en as playbookActor,
3530
+ Io as procedureOf,
3531
+ Qo as projectDossierKeys,
3532
+ Yn as publicBasePathFor,
3533
+ ns as publicRoutePatterns,
3534
+ ki as reactionWakesAssignment,
3535
+ j as readPath,
3466
3536
  ce as readStepError,
3467
- Kt as recencyOf,
3468
- tn as refKey,
3469
- fr as registrableDomain,
3470
- yn as rejectExampleCandidate,
3471
- no as relatedByDefault,
3472
- Rn as resolveAccountCapabilities,
3473
- H as resolveActivityText,
3474
- xn as resolveChannelIntents,
3537
+ jt as recencyOf,
3538
+ nn as refKey,
3539
+ hr as registrableDomain,
3540
+ An as rejectExampleCandidate,
3541
+ so as relatedByDefault,
3542
+ Ln as resolveAccountCapabilities,
3543
+ B as resolveActivityText,
3544
+ $n as resolveChannelIntents,
3475
3545
  It as resolveSignature,
3476
- La as resolveWorkMode,
3477
- ja as resourceKindOf,
3478
- so as runActor,
3479
- wo as runInteractionId,
3480
- yt as sanitizeInline,
3481
- qn as sanitizeTranscript,
3482
- Li as scoreInteraction,
3483
- Bo as scoreWorkItem,
3484
- Xi as selectLenses,
3485
- sa as sessionsHoldCannotReach,
3486
- aa as sessionsToHold,
3487
- Ce as shareKeyForTeam,
3546
+ Wa as resolveWorkMode,
3547
+ Ja as resourceKindOf,
3548
+ fo as runActor,
3549
+ vo as runInteractionId,
3550
+ bt as sanitizeInline,
3551
+ Qn as sanitizeTranscript,
3552
+ Bi as scoreInteraction,
3553
+ zo as scoreWorkItem,
3554
+ Qi as selectLenses,
3555
+ ga as sessionsHoldCannotReach,
3556
+ ma as sessionsToHold,
3557
+ Oe as shareKeyForTeam,
3488
3558
  ke as shareKeyForUser,
3489
- bi as shareKeysForViewer,
3490
- Pa as shouldRunAudioPipeline,
3491
- Di as slaHoursByInbox,
3492
- jt as slaHoursFor,
3493
- wn as sortStatuses,
3494
- Nn as sourceKey,
3495
- Vo as statusIn,
3496
- Ao as stepsOf,
3497
- qe as stripHtml,
3498
- Io as subjectKeyOf,
3499
- $e as subjectOf,
3500
- ia as subjectRef,
3501
- Go as suggestProjectKey,
3502
- po as targetById,
3503
- uo as targetForActivityType,
3504
- Zt as toActingIdentity,
3559
+ _i as shareKeysForViewer,
3560
+ Va as shouldRunAudioPipeline,
3561
+ Ki as slaHoursByInbox,
3562
+ Gt as slaHoursFor,
3563
+ kn as sortStatuses,
3564
+ Dn as sourceKey,
3565
+ ea as statusIn,
3566
+ wo as stepsOf,
3567
+ Je as stripHtml,
3568
+ Oo as subjectKeyOf,
3569
+ Le as subjectOf,
3570
+ pa as subjectRef,
3571
+ Jo as suggestProjectKey,
3572
+ xo as summarizeReactions,
3573
+ yo as targetById,
3574
+ ho as targetForActivityType,
3575
+ Qt as toActingIdentity,
3505
3576
  ge as toE164,
3506
- Ai as toolSourceKinds,
3507
- bn as topicOfferedForTeam,
3508
- $o as topicsForTeam,
3509
- hn as truncateExample,
3510
- Yo as uniqueWorkStatusKey,
3511
- vo as uniqueWorkTypeKey,
3512
- dt as usageMetricId,
3513
- di as usageMetrics,
3514
- qo as validateStatuses,
3515
- lo as valueAtPath,
3516
- j as waitHoursOf,
3517
- Ti as wakesAssignment,
3518
- _n as workItemScopeKey,
3519
- Le as workProjectScopeKey,
3520
- Mn as workStatusKey,
3521
- pn as workTypeKey
3577
+ Ti as toolSourceKinds,
3578
+ En as topicOfferedForTeam,
3579
+ Ho as topicsForTeam,
3580
+ bn as truncateExample,
3581
+ ra as uniqueWorkStatusKey,
3582
+ Po as uniqueWorkTypeKey,
3583
+ pt as usageMetricId,
3584
+ gi as usageMetrics,
3585
+ ia as validateStatuses,
3586
+ go as valueAtPath,
3587
+ H as waitHoursOf,
3588
+ Ci as wakesAssignment,
3589
+ Xo as workActivityScopeKey,
3590
+ In as workItemScopeKey,
3591
+ Pe as workProjectScopeKey,
3592
+ On as workStatusKey,
3593
+ mn as workTypeKey
3522
3594
  };