@opencxh/domain 1.234.0 → 1.235.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 wi = 10, Mi = 10, ki = 10, vi = 5, Wt = /* @__PURE__ */ new Set([
1
+ const Oi = 10, Ci = 10, Ni = 10, xi = 5, Yt = /* @__PURE__ */ new Set([
2
2
  "header",
3
3
  "section",
4
4
  "context",
@@ -8,13 +8,13 @@ const wi = 10, Mi = 10, ki = 10, vi = 5, Wt = /* @__PURE__ */ new Set([
8
8
  "actions",
9
9
  "attachments"
10
10
  ]);
11
- function Q(e) {
11
+ function te(e) {
12
12
  if (typeof e == "string") return e.length > 0;
13
13
  if (!e || typeof e != "object") return !1;
14
14
  const t = e;
15
15
  return typeof t.key == "string" || typeof t.value == "string";
16
16
  }
17
- function Oi(e, t = () => {
17
+ function Ri(e, t = () => {
18
18
  }) {
19
19
  if (!Array.isArray(e)) return [];
20
20
  const n = [];
@@ -25,19 +25,19 @@ function Oi(e, t = () => {
25
25
  }
26
26
  if (!r || typeof r != "object") continue;
27
27
  const o = r;
28
- if (!Wt.has(o.type)) {
28
+ if (!Yt.has(o.type)) {
29
29
  t(`unknown block type ${String(o.type)}`);
30
30
  continue;
31
31
  }
32
32
  switch (o.type) {
33
33
  case "header":
34
- if (!Q(o.text)) {
34
+ if (!te(o.text)) {
35
35
  t("a header without text");
36
36
  continue;
37
37
  }
38
38
  break;
39
39
  case "context":
40
- if (!Q(o.text)) {
40
+ if (!te(o.text)) {
41
41
  t("a context block without text");
42
42
  continue;
43
43
  }
@@ -59,7 +59,7 @@ function Oi(e, t = () => {
59
59
  o.items.length > 10 && (t("more than 10 list items"), o.items = o.items.slice(0, 10));
60
60
  break;
61
61
  case "actions": {
62
- const i = Array.isArray(o.elements) ? o.elements : [], s = i.filter((a) => a?.action_id && a.invoke && Q(a.text));
62
+ const i = Array.isArray(o.elements) ? o.elements : [], s = i.filter((a) => a?.action_id && a.invoke && te(a.text));
63
63
  if (s.length !== i.length && t("an action without action_id, invoke or text"), s.length === 0) continue;
64
64
  s.length > 5 && t("more than 5 actions"), o.elements = s.slice(0, 5);
65
65
  break;
@@ -69,44 +69,44 @@ function Oi(e, t = () => {
69
69
  }
70
70
  return n;
71
71
  }
72
- const Vt = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, zt = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
73
- function Yt(e) {
72
+ const qt = /(\*\*|__)(?=\S)([\s\S]*?\S)\1/g, Jt = /(\*|_)(?=\S)([^*_\n]*?\S)\1/g;
73
+ function Zt(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(Vt, "$2"), t = t.replace(zt, "$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(qt, "$2"), t = t.replace(Jt, "$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 Xt(e) {
82
+ function Qt(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 j(e) {
85
+ function G(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")}`;
89
89
  }
90
- function ve(e) {
90
+ function xe(e) {
91
91
  return e ? ` — ${Math.floor(e / 60)}m ${e % 60}s` : "";
92
92
  }
93
- function ee(e) {
93
+ function ne(e) {
94
94
  return e?.split("@")?.[0] || e || "";
95
95
  }
96
- function G(e) {
96
+ function V(e) {
97
97
  return e.map((t) => t.name).join(", ");
98
98
  }
99
- function Oe(e) {
99
+ function Re(e) {
100
100
  return e === "meeting" ? "Meeting" : e === "video" ? "Video call" : "Audio call";
101
101
  }
102
- const x = {
102
+ const R = {
103
103
  /* ---- voice ---- */
104
104
  VOICE_CALL_STARTED: {
105
105
  shape: "event",
106
106
  channelKind: "voice",
107
107
  icon: "phone",
108
108
  snippet: () => "Gesprek gestart",
109
- timeline: (e) => e.direction === "inbound" ? `Inbound call started — ${ee(e.payload.from)}` : `Outbound call started — ${ee(e.payload.to)}`
109
+ timeline: (e) => e.direction === "inbound" ? `Inbound call started — ${ne(e.payload.from)}` : `Outbound call started — ${ne(e.payload.to)}`
110
110
  },
111
111
  VOICE_CALL_ANSWERED: {
112
112
  shape: "event",
@@ -133,15 +133,15 @@ const x = {
133
133
  shape: "event",
134
134
  channelKind: "voice",
135
135
  icon: "phone",
136
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${j(e.payload.duration)})` : ""}`,
137
- timeline: (e) => `Call ended${ve(e.payload.duration)}`
136
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${G(e.payload.duration)})` : ""}`,
137
+ timeline: (e) => `Call ended${xe(e.payload.duration)}`
138
138
  },
139
139
  VOICE_CALL_MISSED: {
140
140
  shape: "event",
141
141
  channelKind: "voice",
142
142
  icon: "phone",
143
143
  snippet: () => "Gemiste oproep",
144
- timeline: (e) => `Missed call — ${ee(e.payload.from)}`
144
+ timeline: (e) => `Missed call — ${ne(e.payload.from)}`
145
145
  },
146
146
  VOICE_CALL_FAILED: {
147
147
  shape: "event",
@@ -188,7 +188,7 @@ const x = {
188
188
  shape: "event",
189
189
  channelKind: "video",
190
190
  icon: "video",
191
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${j(e.payload.duration)})` : ""}`,
191
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${G(e.payload.duration)})` : ""}`,
192
192
  timeline: () => "Video call ended"
193
193
  },
194
194
  VIDEO_CALL_MISSED: {
@@ -216,7 +216,7 @@ const x = {
216
216
  replyable: !0,
217
217
  carriesText: !0,
218
218
  countsAs: "inbound_message",
219
- snippet: Ce
219
+ snippet: De
220
220
  },
221
221
  EMAIL_SENT: {
222
222
  shape: "message",
@@ -226,7 +226,7 @@ const x = {
226
226
  replyable: !0,
227
227
  carriesText: !0,
228
228
  countsAs: "outbound_message",
229
- snippet: Ce
229
+ snippet: De
230
230
  },
231
231
  /* ---- chat ---- */
232
232
  CHAT_MESSAGE_SENT: {
@@ -255,9 +255,9 @@ const x = {
255
255
  shape: "event",
256
256
  channelKind: "chat",
257
257
  icon: "message-circle",
258
- snippet: (e) => `${G(e.payload.members)} toegevoegd`,
258
+ snippet: (e) => `${V(e.payload.members)} toegevoegd`,
259
259
  timeline: (e) => {
260
- const t = G(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · added by ${e.payload.initiator.name}` : "";
260
+ const t = V(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · added by ${e.payload.initiator.name}` : "";
261
261
  return `${t} joined the chat${n}`;
262
262
  }
263
263
  },
@@ -265,9 +265,9 @@ const x = {
265
265
  shape: "event",
266
266
  channelKind: "chat",
267
267
  icon: "message-circle",
268
- snippet: (e) => `${G(e.payload.members)} verlaten`,
268
+ snippet: (e) => `${V(e.payload.members)} verlaten`,
269
269
  timeline: (e) => {
270
- const t = G(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · removed by ${e.payload.initiator.name}` : "";
270
+ const t = V(e.payload.members) || "Someone", n = e.payload.initiator?.name ? ` · removed by ${e.payload.initiator.name}` : "";
271
271
  return `${t} left the chat${n}`;
272
272
  }
273
273
  },
@@ -283,15 +283,15 @@ const x = {
283
283
  channelKind: "chat",
284
284
  icon: "message-circle",
285
285
  snippet: () => "Gesprek gestart",
286
- timeline: (e) => `${Oe(e.payload.callType)} started${e.payload.initiator ? ` by ${e.payload.initiator.name}` : ""}`,
286
+ timeline: (e) => `${Re(e.payload.callType)} started${e.payload.initiator ? ` by ${e.payload.initiator.name}` : ""}`,
287
287
  joinUrl: (e) => e.payload.joinUrl
288
288
  },
289
289
  CHAT_CALL_ENDED: {
290
290
  shape: "event",
291
291
  channelKind: "chat",
292
292
  icon: "message-circle",
293
- snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${j(e.payload.duration)})` : ""}`,
294
- timeline: (e) => `${Oe(e.payload.callType)} ended${ve(e.payload.duration)}`,
293
+ snippet: (e) => `Gesprek beëindigd${e.payload.duration ? ` (${G(e.payload.duration)})` : ""}`,
294
+ timeline: (e) => `${Re(e.payload.callType)} ended${xe(e.payload.duration)}`,
295
295
  joinUrl: (e) => e.payload.joinUrl
296
296
  },
297
297
  CHAT_EVENT: {
@@ -380,7 +380,7 @@ const x = {
380
380
  MEETING_ENDED: {
381
381
  shape: "event",
382
382
  icon: "calendar",
383
- snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${j(e.payload.duration)})` : ""}`,
383
+ snippet: (e) => `Vergadering beëindigd${e.payload.duration ? ` (${G(e.payload.duration)})` : ""}`,
384
384
  timeline: () => "Meeting ended"
385
385
  },
386
386
  MEETING_PARTICIPANT_JOINED: {
@@ -460,63 +460,63 @@ const x = {
460
460
  timeline: (e, t) => `Status changed by ${t}`
461
461
  }
462
462
  };
463
- function Ce(e) {
464
- const t = e.payload, n = Yt(t.bodyText).trim() || t.bodySnippet?.trim() || Xt(t.body ?? "");
463
+ function De(e) {
464
+ const t = e.payload, n = Zt(t.bodyText).trim() || t.bodySnippet?.trim() || Qt(t.body ?? "");
465
465
  return t.subject ? `${t.subject} — ${n}` : n;
466
466
  }
467
- function T(e) {
468
- return x[e];
467
+ function w(e) {
468
+ return R[e];
469
469
  }
470
- function Ci(e) {
471
- return T(e)?.icon ?? "circle";
470
+ function Di(e) {
471
+ return w(e)?.icon ?? "circle";
472
472
  }
473
- function Ni(e) {
474
- return T(e)?.channelKind;
473
+ function $i(e) {
474
+ return w(e)?.channelKind;
475
475
  }
476
- function dt(e) {
476
+ function ht(e) {
477
477
  return e === "message" || e === "note";
478
478
  }
479
- function xi(e) {
480
- return dt(T(e)?.shape);
479
+ function Li(e) {
480
+ return ht(w(e)?.shape);
481
481
  }
482
- function ft(e) {
482
+ function gt(e) {
483
483
  return e === "note";
484
484
  }
485
- function Ri(e) {
486
- return ft(T(e)?.shape);
485
+ function Pi(e) {
486
+ return gt(w(e)?.shape);
487
487
  }
488
- function Di(e) {
489
- return T(e)?.replyable === !0;
488
+ function Ui(e) {
489
+ return w(e)?.replyable === !0;
490
490
  }
491
- function $i(e) {
492
- return T(e)?.carriesText === !0;
491
+ function Ki(e) {
492
+ return w(e)?.carriesText === !0;
493
493
  }
494
- function qt(e) {
495
- return T(e)?.countsAs;
494
+ function en(e) {
495
+ return w(e)?.countsAs;
496
496
  }
497
- function Li(e) {
498
- return T(e)?.playbookAuthored === !0;
497
+ function Fi(e) {
498
+ return w(e)?.playbookAuthored === !0;
499
499
  }
500
- function Pi(e) {
501
- return T(e)?.connected === !0;
500
+ function Bi(e) {
501
+ return w(e)?.connected === !0;
502
502
  }
503
- function Ui(e) {
504
- const t = T(e);
503
+ function Hi(e) {
504
+ const t = w(e);
505
505
  return t?.shape === "artifact" && t?.carriesText === !0;
506
506
  }
507
- function Jt(e) {
508
- const t = T(e.type)?.snippet;
507
+ function tn(e) {
508
+ const t = w(e.type)?.snippet;
509
509
  return t ? t(e) : "";
510
510
  }
511
- function Ki(e, t) {
512
- const n = T(e.type)?.timeline;
511
+ function ji(e, t) {
512
+ const n = w(e.type)?.timeline;
513
513
  return n ? n(e, t) : e.type.replace(/_/g, " ").toLowerCase();
514
514
  }
515
- function Fi(e) {
516
- const t = T(e.type)?.joinUrl;
515
+ function Wi(e) {
516
+ const t = w(e.type)?.joinUrl;
517
517
  return t ? t(e) : void 0;
518
518
  }
519
- function ce(e, t) {
519
+ function ue(e, t) {
520
520
  let n = e;
521
521
  for (const r of t.split(".")) {
522
522
  if (n == null || typeof n != "object") return "";
@@ -524,44 +524,44 @@ function ce(e, t) {
524
524
  }
525
525
  return n == null ? "" : typeof n == "string" ? n : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
526
526
  }
527
- function le(e, t, n) {
527
+ function de(e, t, n) {
528
528
  if (e === void 0) return null;
529
529
  if (typeof e == "string") return e || null;
530
530
  if ("value" in e)
531
- return ce(t, e.value) || null;
531
+ return ue(t, e.value) || null;
532
532
  const r = {};
533
533
  for (const [i, s] of Object.entries(e.params ?? {}))
534
- r[i] = ce(t, s);
534
+ r[i] = ue(t, s);
535
535
  const o = n(e.key, r);
536
536
  return o === e.key ? null : o;
537
537
  }
538
- function Zt(e, t) {
538
+ function nn(e, t) {
539
539
  if (!e || typeof e == "string" || "value" in e) return null;
540
540
  const n = {};
541
541
  for (const [r, o] of Object.entries(e.params ?? {}))
542
- n[r] = ce(t, o);
542
+ n[r] = ue(t, o);
543
543
  return { key: e.key, params: n };
544
544
  }
545
- const Ne = 140;
546
- function Qt(e) {
545
+ const $e = 140;
546
+ function rn(e) {
547
547
  const t = e.trim();
548
- return t.length <= Ne ? t : `${t.slice(0, Ne - 1).trimEnd()}…`;
548
+ return t.length <= $e ? t : `${t.slice(0, $e - 1).trimEnd()}…`;
549
549
  }
550
- function Bi(e, t) {
551
- const n = Zt(t?.text, e), r = t ? le(t.text, e, (o) => o) : null;
550
+ function Gi(e, t) {
551
+ const n = nn(t?.text, e), r = t ? de(t.text, e, (o) => o) : null;
552
552
  return {
553
553
  activityId: e.id,
554
554
  type: e.type,
555
- snippet: Qt(r ?? Jt(e)),
555
+ snippet: rn(r ?? tn(e)),
556
556
  authorName: e.author?.name ?? "",
557
557
  direction: e.direction,
558
558
  createdAt: e.createdAt ?? Date.now(),
559
559
  ...n ? { snippetKey: n.key, snippetParams: n.params } : {}
560
560
  };
561
561
  }
562
- const en = (e) => e;
563
- function xe(e) {
564
- const t = x[e];
562
+ const on = (e) => e;
563
+ function Le(e) {
564
+ const t = R[e];
565
565
  return {
566
566
  type: e,
567
567
  shape: t.shape,
@@ -576,7 +576,7 @@ function xe(e) {
576
576
  displayNameKey: t.displayNameKey
577
577
  };
578
578
  }
579
- function Re(e) {
579
+ function Pe(e) {
580
580
  return {
581
581
  type: e.type,
582
582
  shape: e.shape,
@@ -591,21 +591,21 @@ function Re(e) {
591
591
  displayNameKey: e.displayNameKey
592
592
  };
593
593
  }
594
- class tn {
595
- constructor(t = [], n = en) {
594
+ class sn {
595
+ constructor(t = [], n = on) {
596
596
  this.translate = n;
597
597
  for (const r of t)
598
- r?.type && (r.type in x || this.declared.has(r.type) || this.declared.set(r.type, r));
598
+ r?.type && (r.type in R || this.declared.has(r.type) || this.declared.set(r.type, r));
599
599
  }
600
600
  declared = /* @__PURE__ */ new Map();
601
601
  get(t) {
602
- if (t in x) return xe(t);
602
+ if (t in R) return Le(t);
603
603
  const n = this.declared.get(t);
604
- return n ? Re(n) : void 0;
604
+ return n ? Pe(n) : void 0;
605
605
  }
606
606
  /** Everything that may be offered as a trigger, built-in and declared. */
607
607
  triggerable() {
608
- const t = Object.keys(x).filter((r) => x[r].triggerable).map(xe), n = [...this.declared.values()].map(Re).filter((r) => r.triggerable);
608
+ const t = Object.keys(R).filter((r) => R[r].triggerable).map(Le), n = [...this.declared.values()].map(Pe).filter((r) => r.triggerable);
609
609
  return [...t, ...n];
610
610
  }
611
611
  /**
@@ -614,17 +614,17 @@ class tn {
614
614
  * the feed always showed for unknown types.
615
615
  */
616
616
  timelineText(t, n) {
617
- const r = x[t.type];
617
+ const r = R[t.type];
618
618
  if (r?.timeline) return r.timeline(t, n);
619
619
  const o = this.declared.get(t.type);
620
- return le(o?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
620
+ return de(o?.text, t, this.translate) ?? t.type.replace(/_/g, " ").toLowerCase();
621
621
  }
622
622
  /** The line for the inbox list. Empty when the type has nothing to show. */
623
623
  snippet(t) {
624
- const n = x[t.type];
624
+ const n = R[t.type];
625
625
  if (n?.snippet) return n.snippet(t);
626
626
  const r = this.declared.get(t.type);
627
- return le(r?.text, t, this.translate) ?? "";
627
+ return de(r?.text, t, this.translate) ?? "";
628
628
  }
629
629
  /** The descriptor as it arrived; needed to store `text` as a key. */
630
630
  descriptor(t) {
@@ -649,11 +649,11 @@ class tn {
649
649
  * {@link ResolvedActivityType}.
650
650
  */
651
651
  isMessage(t) {
652
- return dt(this.get(t)?.shape);
652
+ return ht(this.get(t)?.shape);
653
653
  }
654
654
  /** Folds into the list under the message it answers. See {@link isNoteShape}. */
655
655
  nestsUnderParent(t) {
656
- return ft(this.get(t)?.shape);
656
+ return gt(this.get(t)?.shape);
657
657
  }
658
658
  /** Can a person reply to this? Notes cannot — those go nowhere. */
659
659
  isReplyable(t) {
@@ -681,23 +681,23 @@ class tn {
681
681
  return this.translate;
682
682
  }
683
683
  }
684
- const Hi = new tn();
685
- function ji(e, t, n = []) {
684
+ const Vi = new sn();
685
+ function Xi(e, t, n = []) {
686
686
  const r = e.createdAt;
687
687
  if (!r) return [];
688
688
  const o = new Set(n);
689
689
  return e.author.type === "user" && e.author.id && o.add(e.author.id), Object.entries(t).filter(([i, s]) => s >= r && !o.has(i)).map(([i]) => i);
690
690
  }
691
- function nn(e) {
691
+ function an(e) {
692
692
  return e.createdAt ?? 0;
693
693
  }
694
- function Gi(e) {
694
+ function zi(e) {
695
695
  return e.type === "EMAIL_RECEIVED" || e.type === "EMAIL_SENT";
696
696
  }
697
- function Wi(e) {
697
+ function Yi(e) {
698
698
  return e.type === "CHAT_MESSAGE_SENT" || e.type === "CHAT_MESSAGE_RECEIVED";
699
699
  }
700
- const pt = [
700
+ const yt = [
701
701
  {
702
702
  id: "openai",
703
703
  attachmentKinds: ["image", "pdf"],
@@ -787,45 +787,45 @@ const pt = [
787
787
  defaultModel: "default"
788
788
  }
789
789
  ];
790
- function q(e) {
791
- return pt.find((t) => t.id === e);
790
+ function Z(e) {
791
+ return yt.find((t) => t.id === e);
792
792
  }
793
- function Vi(e) {
794
- return q(e)?.label ?? e;
793
+ function qi(e) {
794
+ return Z(e)?.label ?? e;
795
795
  }
796
- function zi(e, t = "gpt-5-mini") {
797
- return q(e)?.defaultModel ?? t;
796
+ function Ji(e, t = "gpt-5-mini") {
797
+ return Z(e)?.defaultModel ?? t;
798
798
  }
799
- function Yi(e) {
800
- return pt.filter((t) => t.capabilities.includes(e));
799
+ function Zi(e) {
800
+ return yt.filter((t) => t.capabilities.includes(e));
801
801
  }
802
- function Xi(e) {
803
- const t = q(e);
802
+ function Qi(e) {
803
+ const t = Z(e);
804
804
  return !!t && !t.baseUrl;
805
805
  }
806
- function qi(e, t) {
807
- return t === "text" ? !0 : q(e)?.attachmentKinds?.includes(t) === !0;
806
+ function es(e, t) {
807
+ return t === "text" ? !0 : Z(e)?.attachmentKinds?.includes(t) === !0;
808
808
  }
809
- function Ji(e, t) {
809
+ function ts(e, t) {
810
810
  if (!e.enabled) return "ok";
811
- const n = De(e.hardLimitNanos), r = De(e.softLimitNanos);
811
+ const n = Ue(e.hardLimitNanos), r = Ue(e.softLimitNanos);
812
812
  return n !== void 0 && t >= n ? "hard" : r !== void 0 && t >= r ? "soft" : "ok";
813
813
  }
814
- function De(e) {
814
+ function Ue(e) {
815
815
  return typeof e == "number" ? e : void 0;
816
816
  }
817
- function rn(e, t = "month") {
817
+ function cn(e, t = "month") {
818
818
  const n = new Date(e);
819
819
  return Date.UTC(n.getUTCFullYear(), n.getUTCMonth(), 1);
820
820
  }
821
- function Zi(e, t = "month") {
822
- const n = new Date(rn(e, t));
821
+ function ns(e, t = "month") {
822
+ const n = new Date(cn(e, t));
823
823
  return `${n.getUTCFullYear()}-${String(n.getUTCMonth() + 1).padStart(2, "0")}`;
824
824
  }
825
- function Qi(e) {
825
+ function rs(e) {
826
826
  return e?.listeningEnabled !== !1;
827
827
  }
828
- const es = [
828
+ const os = [
829
829
  { id: "agent", label: "Agent", labelSource: "user" },
830
830
  { id: "team", label: "Team", labelSource: "team" },
831
831
  { id: "inbox", label: "Inbox", labelSource: "inbox" },
@@ -835,64 +835,64 @@ const es = [
835
835
  { id: "handledBy", label: "Afhandelaar", labelSource: "raw" },
836
836
  { id: "time", label: "Tijd", labelSource: "raw" }
837
837
  ];
838
- function te(e) {
838
+ function re(e) {
839
839
  return e < 10 ? `0${e}` : `${e}`;
840
840
  }
841
- function K(e, t) {
842
- const n = new Date(e), r = `${n.getUTCFullYear()}-${te(n.getUTCMonth() + 1)}-${te(n.getUTCDate())}`;
843
- return t === "day" ? r : `${r}T${te(n.getUTCHours())}`;
844
- }
845
841
  function F(e, t) {
842
+ const n = new Date(e), r = `${n.getUTCFullYear()}-${re(n.getUTCMonth() + 1)}-${re(n.getUTCDate())}`;
843
+ return t === "day" ? r : `${r}T${re(n.getUTCHours())}`;
844
+ }
845
+ function B(e, t) {
846
846
  const n = new Date(e);
847
847
  return n.setUTCMinutes(0, 0, 0), t === "day" && n.setUTCHours(0), n.getTime();
848
848
  }
849
- const on = 36e5, sn = 864e5;
850
- function ts(e, t, n) {
851
- const r = n === "hour" ? on : sn, o = [];
852
- for (let i = F(e, n); i <= t; i += r)
853
- o.push(K(i, n));
849
+ const ln = 36e5, un = 864e5;
850
+ function is(e, t, n) {
851
+ const r = n === "hour" ? ln : un, o = [];
852
+ for (let i = B(e, n); i <= t; i += r)
853
+ o.push(F(i, n));
854
854
  return o;
855
855
  }
856
- const an = /* @__PURE__ */ new Set(["time"]);
857
- function ns(e, t, n) {
856
+ const dn = /* @__PURE__ */ new Set(["time"]);
857
+ function ss(e, t, n) {
858
858
  if (!e) return [];
859
859
  const r = new Set(e.supportedDimensions ?? []);
860
- return t.filter((o) => r.has(o.id) && !an.has(o.id)).map((o) => ({
860
+ return t.filter((o) => r.has(o.id) && !dn.has(o.id)).map((o) => ({
861
861
  id: o.id,
862
862
  label: o.label,
863
863
  options: o.options?.length ? o.options : n[o.id] ?? []
864
864
  })).filter((o) => o.options.length > 0);
865
865
  }
866
- function rs(e, t) {
866
+ function as(e, t) {
867
867
  const n = t.find((o) => o.id === e.dimensionId), r = n?.options.find((o) => o.value === e.value);
868
868
  return `${n?.label ?? e.dimensionId} · ${r?.label ?? e.value}`;
869
869
  }
870
- function os(e) {
870
+ function cs(e) {
871
871
  return { value: e.id, label: `${e.category} · ${e.label}` };
872
872
  }
873
- const cn = [
873
+ const fn = [
874
874
  { id: "resource", label: "Resource", labelSource: "raw" },
875
875
  { id: "origin", label: "Herkomst", labelSource: "raw" }
876
- ], ln = cn.map((e) => e.id);
877
- function un(e, t) {
876
+ ], pn = fn.map((e) => e.id);
877
+ function mn(e, t) {
878
878
  return `${e}.usage.${t}`;
879
879
  }
880
- function is(e, t) {
880
+ function ls(e, t) {
881
881
  return t.map((n) => ({
882
- id: un(e, n.unit),
882
+ id: mn(e, n.unit),
883
883
  label: n.label,
884
884
  category: "Verbruik",
885
885
  valueType: n.valueType ?? "count",
886
886
  aggregation: "sum",
887
887
  supportedDimensions: [
888
888
  "provider",
889
- ...ln,
889
+ ...pn,
890
890
  ...n.extraDimensions ?? [],
891
891
  "time"
892
892
  ]
893
893
  }));
894
894
  }
895
- const mt = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), $e = 200, Le = 100, Pe = 200, Ue = 12, Ke = 4, ht = 4e3, ne = 500, ss = 256 * 1024, dn = /* @__PURE__ */ new Set([
895
+ const bt = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]), Ke = 200, Fe = 100, Be = 200, He = 12, je = 4, We = 10, hn = 8, Ge = 12, At = 4e3, X = 500, us = 1024 * 1024, gn = /* @__PURE__ */ new Set([
896
896
  "heading",
897
897
  "paragraph",
898
898
  "list",
@@ -901,16 +901,20 @@ const mt = /* @__PURE__ */ new Set(["info", "success", "warning", "destructive"]
901
901
  "divider",
902
902
  "table",
903
903
  "kpi",
904
- "callout"
905
- ]), fn = ["http:", "https:", "mailto:", "tel:"], pn = /^[a-z][a-z0-9+.-]*:/i;
906
- function gt(e) {
904
+ "callout",
905
+ "image",
906
+ "letterhead",
907
+ "totals",
908
+ "pagebreak"
909
+ ]), yn = ["http:", "https:", "mailto:", "tel:"], bn = /^[a-z][a-z0-9+.-]*:/i;
910
+ function Te(e) {
907
911
  const t = e.trim().replace(/^<|>$/g, "");
908
912
  if (!t) return !1;
909
- const n = pn.exec(t)?.[0];
910
- return n ? fn.includes(n.toLowerCase()) : !t.startsWith("//");
913
+ const n = bn.exec(t)?.[0];
914
+ return n ? yn.includes(n.toLowerCase()) : !t.startsWith("//");
911
915
  }
912
- const mn = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
913
- function hn(e) {
916
+ const An = /^[ \t]{0,3}\[([^\]]+)\]:[ \t]*(\S+).*$/gm;
917
+ function En(e) {
914
918
  let t = "", n = 0;
915
919
  for (; n < e.length; ) {
916
920
  const r = e[n] === "!" && e[n + 1] === "[";
@@ -918,22 +922,22 @@ function hn(e) {
918
922
  t += e[n], n += 1;
919
923
  continue;
920
924
  }
921
- const o = n + (r ? 2 : 1), i = Fe(e, o, "[", "]");
925
+ const o = n + (r ? 2 : 1), i = Ve(e, o, "[", "]");
922
926
  if (i < 0 || e[i + 1] !== "(") {
923
927
  t += e[n], n += 1;
924
928
  continue;
925
929
  }
926
- const s = Fe(e, i + 2, "(", ")");
930
+ const s = Ve(e, i + 2, "(", ")");
927
931
  if (s < 0) {
928
932
  t += e[n], n += 1;
929
933
  continue;
930
934
  }
931
935
  const a = e.slice(o, i), l = e.slice(i + 2, s).trim().split(/\s+/)[0] ?? "";
932
- t += r || !gt(l) ? a : e.slice(n, s + 1), n = s + 1;
936
+ t += r || !Te(l) ? a : e.slice(n, s + 1), n = s + 1;
933
937
  }
934
938
  return t;
935
939
  }
936
- function Fe(e, t, n, r) {
940
+ function Ve(e, t, n, r) {
937
941
  let o = 1;
938
942
  for (let i = t; i < e.length; i += 1) {
939
943
  if (e[i] === "\\") {
@@ -946,40 +950,43 @@ function Fe(e, t, n, r) {
946
950
  }
947
951
  return -1;
948
952
  }
949
- function gn(e) {
950
- return hn(e).replace(
951
- mn,
952
- (t, n, r) => gt(r) ? t : ""
953
+ function Sn(e) {
954
+ return En(e).replace(
955
+ An,
956
+ (t, n, r) => Te(r) ? t : ""
953
957
  );
954
958
  }
955
- function M(e, t = ht) {
956
- return typeof e == "string" ? gn(e).slice(0, t) : "";
959
+ function I(e, t = At) {
960
+ return typeof e == "string" ? Sn(e).slice(0, t) : "";
957
961
  }
958
- function yn(e, t = ht) {
962
+ function _n(e, t = At) {
959
963
  return typeof e == "string" ? e.slice(0, t) : "";
960
964
  }
961
- function bn(e, t = "info") {
962
- return typeof e == "string" && mt.has(e) ? e : t;
965
+ function P(e, t = 200) {
966
+ return I(e, t);
963
967
  }
964
- function as(e, t = () => {
968
+ function Tn(e, t = "info") {
969
+ return typeof e == "string" && bt.has(e) ? e : t;
970
+ }
971
+ function ds(e, t = () => {
965
972
  }) {
966
973
  if (!Array.isArray(e)) return [];
967
974
  const n = [];
968
975
  for (const r of e) {
969
- if (n.length >= $e) {
970
- t(`more than ${$e} blocks; the rest was dropped`);
976
+ if (n.length >= Ke) {
977
+ t(`more than ${Ke} blocks; the rest was dropped`);
971
978
  break;
972
979
  }
973
980
  if (!r || typeof r != "object") continue;
974
981
  const o = r;
975
- if (!dn.has(o.type)) {
982
+ if (!gn.has(o.type)) {
976
983
  t(`unknown block type ${String(o.type)}`);
977
984
  continue;
978
985
  }
979
986
  const i = typeof o.block_id == "string" ? { block_id: o.block_id } : {};
980
987
  switch (o.type) {
981
988
  case "heading": {
982
- const s = M(o.text);
989
+ const s = I(o.text);
983
990
  if (!s) {
984
991
  t("a heading without text");
985
992
  continue;
@@ -989,7 +996,7 @@ function as(e, t = () => {
989
996
  break;
990
997
  }
991
998
  case "paragraph": {
992
- const s = M(o.text);
999
+ const s = I(o.text);
993
1000
  if (!s) {
994
1001
  t("a paragraph without text");
995
1002
  continue;
@@ -998,7 +1005,7 @@ function as(e, t = () => {
998
1005
  break;
999
1006
  }
1000
1007
  case "quote": {
1001
- const s = M(o.text);
1008
+ const s = I(o.text);
1002
1009
  if (!s) {
1003
1010
  t("a quote without text");
1004
1011
  continue;
@@ -1007,7 +1014,7 @@ function as(e, t = () => {
1007
1014
  break;
1008
1015
  }
1009
1016
  case "code": {
1010
- const s = yn(o.text);
1017
+ const s = _n(o.text);
1011
1018
  if (!s) {
1012
1019
  t("a code block without text");
1013
1020
  continue;
@@ -1021,15 +1028,15 @@ function as(e, t = () => {
1021
1028
  break;
1022
1029
  case "list": {
1023
1030
  const s = Array.isArray(o.items) ? o.items : [], a = [];
1024
- for (const d of s) {
1025
- if (a.length >= Le) {
1026
- t(`more than ${Le} list items`);
1031
+ for (const u of s) {
1032
+ if (a.length >= Fe) {
1033
+ t(`more than ${Fe} list items`);
1027
1034
  break;
1028
1035
  }
1029
- const p = M(d?.text);
1030
- if (!p) continue;
1031
- const c = M(d?.lead, 200);
1032
- a.push(c ? { lead: c, text: p } : { text: p });
1036
+ const d = I(u?.text);
1037
+ if (!d) continue;
1038
+ const c = I(u?.lead, 200);
1039
+ a.push(c ? { lead: c, text: d } : { text: d });
1033
1040
  }
1034
1041
  if (a.length === 0) {
1035
1042
  t("a list without usable items");
@@ -1042,48 +1049,48 @@ function as(e, t = () => {
1042
1049
  case "table": {
1043
1050
  const s = Array.isArray(o.columns) ? o.columns : [], a = [];
1044
1051
  for (const c of s) {
1045
- if (a.length >= Ue) {
1046
- t(`more than ${Ue} table columns`);
1052
+ if (a.length >= He) {
1053
+ t(`more than ${He} table columns`);
1047
1054
  break;
1048
1055
  }
1049
- const g = M(c?.label, ne), y = c?.align === "right" ? "right" : void 0;
1050
- a.push(y ? { label: g, align: y } : { label: g });
1056
+ const h = I(c?.label, X), m = c?.align === "right" ? "right" : void 0;
1057
+ a.push(m ? { label: h, align: m } : { label: h });
1051
1058
  }
1052
1059
  if (a.length === 0) {
1053
1060
  t("a table without columns");
1054
1061
  continue;
1055
1062
  }
1056
- const l = Array.isArray(o.rows) ? o.rows : [], d = [];
1063
+ const l = Array.isArray(o.rows) ? o.rows : [], u = [];
1057
1064
  for (const c of l) {
1058
- if (d.length >= Pe) {
1059
- t(`more than ${Pe} table rows`);
1065
+ if (u.length >= Be) {
1066
+ t(`more than ${Be} table rows`);
1060
1067
  break;
1061
1068
  }
1062
- const g = Array.isArray(c) ? c : [];
1063
- d.push(a.map((y, _) => M(g[_], ne)));
1069
+ const h = Array.isArray(c) ? c : [];
1070
+ u.push(a.map((m, E) => I(h[E], X)));
1064
1071
  }
1065
- const p = M(o.caption, ne);
1072
+ const d = I(o.caption, X);
1066
1073
  n.push({
1067
1074
  ...i,
1068
1075
  type: "table",
1069
1076
  columns: a,
1070
- rows: d,
1071
- ...p ? { caption: p } : {}
1077
+ rows: u,
1078
+ ...d ? { caption: d } : {}
1072
1079
  });
1073
1080
  break;
1074
1081
  }
1075
1082
  case "kpi": {
1076
1083
  const s = Array.isArray(o.items) ? o.items : [], a = [];
1077
1084
  for (const l of s) {
1078
- if (a.length >= Ke) {
1079
- t(`more than ${Ke} kpi items`);
1085
+ if (a.length >= je) {
1086
+ t(`more than ${je} kpi items`);
1080
1087
  break;
1081
1088
  }
1082
- const d = M(l?.value, 40), p = M(l?.label, 80);
1083
- if (!d || !p) continue;
1089
+ const u = I(l?.value, 40), d = I(l?.label, 80);
1090
+ if (!u || !d) continue;
1084
1091
  const c = l?.tone;
1085
1092
  a.push(
1086
- typeof c == "string" && mt.has(c) ? { value: d, label: p, tone: c } : { value: d, label: p }
1093
+ typeof c == "string" && bt.has(c) ? { value: u, label: d, tone: c } : { value: u, label: d }
1087
1094
  );
1088
1095
  }
1089
1096
  if (a.length === 0) {
@@ -1093,17 +1100,84 @@ function as(e, t = () => {
1093
1100
  n.push({ ...i, type: "kpi", items: a });
1094
1101
  break;
1095
1102
  }
1103
+ case "image": {
1104
+ const s = typeof o.url == "string" ? o.url.trim() : "";
1105
+ if (!s || !Te(s)) {
1106
+ t("an image without a usable url");
1107
+ continue;
1108
+ }
1109
+ const a = I(o.alt, 200), l = I(o.caption, X);
1110
+ n.push({
1111
+ ...i,
1112
+ type: "image",
1113
+ url: s,
1114
+ ...a ? { alt: a } : {},
1115
+ ...l ? { caption: l } : {}
1116
+ });
1117
+ break;
1118
+ }
1119
+ case "letterhead": {
1120
+ const s = Array.isArray(o.fields) ? o.fields : [], a = [];
1121
+ for (const d of s) {
1122
+ if (a.length >= We) {
1123
+ t(`more than ${We} letterhead fields`);
1124
+ break;
1125
+ }
1126
+ const c = d, h = typeof c?.key == "string" ? c.key.slice(0, 48) : "", m = P(c?.value);
1127
+ if (!h || !m) continue;
1128
+ const E = P(c?.label, 80);
1129
+ a.push(E ? { key: h, label: E, value: m } : { key: h, value: m });
1130
+ }
1131
+ const u = (Array.isArray(o.recipient) ? o.recipient : []).slice(0, hn).map((d) => P(d)).filter(Boolean);
1132
+ if (a.length === 0 && u.length === 0) {
1133
+ t("a letterhead without fields or recipient");
1134
+ continue;
1135
+ }
1136
+ n.push({
1137
+ ...i,
1138
+ type: "letterhead",
1139
+ fields: a,
1140
+ ...u.length > 0 ? { recipient: u } : {}
1141
+ });
1142
+ break;
1143
+ }
1144
+ case "totals": {
1145
+ const s = (u) => {
1146
+ const d = Array.isArray(u) ? u : [], c = [];
1147
+ for (const h of d) {
1148
+ if (c.length >= Ge) {
1149
+ t(`more than ${Ge} totals rows`);
1150
+ break;
1151
+ }
1152
+ const m = h, E = P(m?.label), g = P(m?.amount, 40);
1153
+ !E || !g || c.push(
1154
+ m?.emphasis === !0 ? { label: E, amount: g, emphasis: !0 } : { label: E, amount: g }
1155
+ );
1156
+ }
1157
+ return c;
1158
+ }, a = s(o.rows);
1159
+ if (a.length === 0) {
1160
+ t("a totals block without usable rows");
1161
+ continue;
1162
+ }
1163
+ const l = s(o.taxRows);
1164
+ n.push({ ...i, type: "totals", rows: a, ...l.length > 0 ? { taxRows: l } : {} });
1165
+ break;
1166
+ }
1167
+ case "pagebreak":
1168
+ n.push({ ...i, type: "pagebreak" });
1169
+ break;
1096
1170
  case "callout": {
1097
- const s = M(o.text);
1171
+ const s = I(o.text);
1098
1172
  if (!s) {
1099
1173
  t("a callout without text");
1100
1174
  continue;
1101
1175
  }
1102
- const a = M(o.title, 200);
1176
+ const a = I(o.title, 200);
1103
1177
  n.push({
1104
1178
  ...i,
1105
1179
  type: "callout",
1106
- tone: bn(o.tone),
1180
+ tone: Tn(o.tone),
1107
1181
  ...a ? { title: a } : {},
1108
1182
  text: s
1109
1183
  });
@@ -1113,28 +1187,28 @@ function as(e, t = () => {
1113
1187
  }
1114
1188
  return n;
1115
1189
  }
1116
- function cs(e) {
1190
+ function fs(e) {
1117
1191
  return JSON.stringify(e).length;
1118
1192
  }
1119
- function ls(e) {
1193
+ function ps(e) {
1120
1194
  return {
1121
1195
  blocks: e.length,
1122
1196
  types: e.map((t) => t.type),
1123
1197
  headings: e.flatMap((t) => t.type === "heading" ? [t.text] : [])
1124
1198
  };
1125
1199
  }
1126
- function Be(e) {
1200
+ function Xe(e) {
1127
1201
  return e.replace(/\|/g, "\\|").replace(/\r?\n/g, " ").trim();
1128
1202
  }
1129
- function He(e, t, n) {
1203
+ function oe(e, t, n) {
1130
1204
  const r = e.map((o, i) => n?.[i] === "right" ? "---:" : "---");
1131
1205
  return [
1132
- `| ${e.map(Be).join(" | ")} |`,
1206
+ `| ${e.map(Xe).join(" | ")} |`,
1133
1207
  `| ${r.join(" | ")} |`,
1134
- ...t.map((o) => `| ${o.map(Be).join(" | ")} |`)
1208
+ ...t.map((o) => `| ${o.map(Xe).join(" | ")} |`)
1135
1209
  ];
1136
1210
  }
1137
- function An(e) {
1211
+ function In(e) {
1138
1212
  switch (e.type) {
1139
1213
  case "heading":
1140
1214
  return [`${"#".repeat(e.level)} ${e.text}`];
@@ -1152,7 +1226,7 @@ function An(e) {
1152
1226
  return t.lead ? `${r} **${t.lead}** ${t.text}` : `${r} ${t.text}`;
1153
1227
  });
1154
1228
  case "table": {
1155
- const t = He(
1229
+ const t = oe(
1156
1230
  e.columns.map((n) => n.label),
1157
1231
  e.rows,
1158
1232
  e.columns.map((n) => n.align ?? "left")
@@ -1160,19 +1234,41 @@ function An(e) {
1160
1234
  return e.caption ? [...t, "", `*${e.caption}*`] : t;
1161
1235
  }
1162
1236
  case "kpi":
1163
- return He(
1237
+ return oe(
1164
1238
  e.items.map((t) => t.value),
1165
1239
  [e.items.map((t) => t.label)]
1166
1240
  );
1167
1241
  case "callout":
1168
1242
  return (e.title ? `**${e.title}** ${e.text}` : e.text).split(/\r?\n/).map((n) => `> ${n}`);
1243
+ case "image": {
1244
+ const t = `![${e.alt ?? ""}](${e.url})`;
1245
+ return e.caption ? [t, "", `*${e.caption}*`] : [t];
1246
+ }
1247
+ case "letterhead": {
1248
+ const t = [...e.recipient ?? []];
1249
+ t.length > 0 && e.fields.length > 0 && t.push("");
1250
+ for (const n of e.fields)
1251
+ t.push(n.label ? `**${n.label}:** ${n.value}` : n.value);
1252
+ return t.map((n, r) => r < t.length - 1 ? `${n} ` : n);
1253
+ }
1254
+ case "totals":
1255
+ return oe(
1256
+ ["", ""],
1257
+ [...e.rows, ...e.taxRows ?? []].map((t) => [
1258
+ t.emphasis ? `**${t.label}**` : t.label,
1259
+ t.emphasis ? `**${t.amount}**` : t.amount
1260
+ ]),
1261
+ ["left", "right"]
1262
+ );
1263
+ case "pagebreak":
1264
+ return ["---"];
1169
1265
  }
1170
1266
  }
1171
- function us(e, t) {
1267
+ function ms(e, t) {
1172
1268
  const n = [], r = e.some((o) => o.type === "heading" && o.level === 1);
1173
1269
  t && !r && n.push(`# ${t}`);
1174
1270
  for (const o of e) {
1175
- const i = An(o);
1271
+ const i = In(o);
1176
1272
  i.length > 0 && n.push(i.join(`
1177
1273
  `));
1178
1274
  }
@@ -1181,45 +1277,45 @@ function us(e, t) {
1181
1277
  `)}
1182
1278
  `;
1183
1279
  }
1184
- const yt = (e) => `user:${e}`, bt = (e) => `team:${e}`;
1185
- function ds(e) {
1280
+ const Et = (e) => `user:${e}`, St = (e) => `team:${e}`;
1281
+ function hs(e) {
1186
1282
  const t = /* @__PURE__ */ new Set();
1187
1283
  for (const n of e ?? [])
1188
- n?.id && (n.kind === "user" && t.add(yt(n.id)), n.kind === "team" && t.add(bt(n.id)));
1284
+ n?.id && (n.kind === "user" && t.add(Et(n.id)), n.kind === "team" && t.add(St(n.id)));
1189
1285
  return [...t].sort();
1190
1286
  }
1191
- function fs(e, t) {
1192
- return [yt(e), ...t.map(bt)];
1287
+ function gs(e, t) {
1288
+ return [Et(e), ...t.map(St)];
1193
1289
  }
1194
- function ps(e) {
1290
+ function ys(e) {
1195
1291
  const t = /* @__PURE__ */ new Set();
1196
1292
  for (const n of e ?? [])
1197
1293
  n?.kind && t.add(n.kind);
1198
1294
  return [...t];
1199
1295
  }
1200
- const En = ["done", "escalated"], ms = ["open", "waiting"];
1201
- function hs(e) {
1202
- return En.includes(e);
1296
+ const wn = ["done", "escalated"], bs = ["open", "waiting"];
1297
+ function As(e) {
1298
+ return wn.includes(e);
1203
1299
  }
1204
- const Sn = "assignment";
1205
- function gs(e) {
1206
- return `${Sn}:${e}`;
1300
+ const Mn = "assignment";
1301
+ function Es(e) {
1302
+ return `${Mn}:${e}`;
1207
1303
  }
1208
- function ys(e, t, n, r) {
1304
+ function Ss(e, t, n, r) {
1209
1305
  if (e.direction === "inbound") return !0;
1210
1306
  if (e.author?.type === "user" && e.author.id === t) return !1;
1211
1307
  const o = e.payload?.mentions;
1212
1308
  return Array.isArray(o) && o.includes(t) || r && r === t ? !0 : n === "reply";
1213
1309
  }
1214
- function bs(e) {
1310
+ function _s(e) {
1215
1311
  const { targetAuthorId: t, reactorId: n, agentId: r, on: o } = e;
1216
1312
  return !o || !t || t !== r ? !1 : n !== r;
1217
1313
  }
1218
- function As(e) {
1314
+ function Ts(e) {
1219
1315
  return e.subjectKind && e.subjectId ? { type: e.subjectKind, id: e.subjectId } : void 0;
1220
1316
  }
1221
- const _n = 12;
1222
- function Es(e, t, n = _n) {
1317
+ const kn = 12;
1318
+ function Is(e, t, n = kn) {
1223
1319
  const r = t + 1;
1224
1320
  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 ? {
1225
1321
  status: "escalated",
@@ -1233,39 +1329,39 @@ function Es(e, t, n = _n) {
1233
1329
  reason: "de agent rondde zijn beurt af zonder te zeggen wat er moet gebeuren (wachten, afronden of overdragen)"
1234
1330
  };
1235
1331
  }
1236
- const Ss = /* @__PURE__ */ new Set(["mail", "message"]);
1237
- function In(e, t) {
1332
+ const ws = /* @__PURE__ */ new Set(["mail", "message"]);
1333
+ function vn(e, t) {
1238
1334
  const n = e.settings?.signatures?.[t];
1239
1335
  return !n?.enabled || !n.body || n.body.trim() === "" ? null : n;
1240
1336
  }
1241
- function _s(e, t, n, r = "html") {
1337
+ function Ms(e, t, n, r = "html") {
1242
1338
  if (!e) return n;
1243
- const o = In(e, t);
1339
+ const o = vn(e, t);
1244
1340
  return o ? `${n}${r === "text" ? `
1245
1341
 
1246
1342
  ` : t === "mail" ? "<br><br>-- <br>" : "<br><br>"}${o.body}` : n;
1247
1343
  }
1248
- function Is(e) {
1344
+ function ks(e) {
1249
1345
  return e.endpoints ?? [];
1250
1346
  }
1251
- const Tn = 36e5, wn = 864e5, R = -1 / 0, Ts = (e) => e.score > R, z = {
1347
+ const On = 36e5, Cn = 864e5, D = -1 / 0, vs = (e) => e.score > D, q = {
1252
1348
  urgent: 40,
1253
1349
  high: 25,
1254
1350
  normal: 10,
1255
1351
  low: 0
1256
1352
  };
1257
- function ws(e) {
1353
+ function Os(e) {
1258
1354
  return Object.fromEntries(e.map((t) => [t.resourceId, t]));
1259
1355
  }
1260
- const Mn = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, At = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1261
- function kn(e, t) {
1262
- return !!(e && Mn.test(e) || t && At.test(t));
1356
+ const Nn = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|newsletter|nieuwsbrief|mailer|mailing|notifications?|bounce|postmaster|marketing)@/i, _t = /\b(unsubscribe|afmelden|uitschrijven|opt[\s-]?out|manage (your )?preferences|geen (e-?mails?|nieuwsbrief|berichten) meer)\b/i;
1357
+ function xn(e, t) {
1358
+ return !!(e && Nn.test(e) || t && _t.test(t));
1263
1359
  }
1264
- const vn = 3, On = 600;
1265
- function Ms(e, t) {
1266
- return e >= vn || t >= On;
1360
+ const Rn = 3, Dn = 600;
1361
+ function Cs(e, t) {
1362
+ return e >= Rn || t >= Dn;
1267
1363
  }
1268
- const Cn = [
1364
+ const $n = [
1269
1365
  "list-unsubscribe",
1270
1366
  "list-unsubscribe-post",
1271
1367
  "list-id",
@@ -1275,93 +1371,93 @@ const Cn = [
1275
1371
  "feedback-id",
1276
1372
  "x-mailer"
1277
1373
  ];
1278
- function ks(e) {
1374
+ function Ns(e) {
1279
1375
  const t = {};
1280
1376
  for (const n of e) {
1281
1377
  const r = n.name?.toLowerCase();
1282
- r && n.value !== void 0 && Cn.includes(r) && (t[r] = n.value);
1378
+ r && n.value !== void 0 && $n.includes(r) && (t[r] = n.value);
1283
1379
  }
1284
1380
  return t;
1285
1381
  }
1286
- const Nn = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i, xn = /(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;
1287
- function vs(e) {
1382
+ const Ln = /(^|[._+-])(no-?reply|noreply|donotreply|do-not-reply|notifications?|bounce|postmaster|mailer)@/i, Pn = /(^|[._+-])(newsletter|nieuwsbrief|marketing|mailing)@/i;
1383
+ function xs(e) {
1288
1384
  const t = e.headers ?? {}, n = e.from?.email, r = t["auto-submitted"]?.toLowerCase();
1289
- if (r && r !== "no" || t["x-auto-response-suppress"] || n && Nn.test(n))
1385
+ if (r && r !== "no" || t["x-auto-response-suppress"] || n && Ln.test(n))
1290
1386
  return "automated";
1291
1387
  const o = t.precedence?.toLowerCase();
1292
- if (t["list-unsubscribe"] || t["list-unsubscribe-post"] || t["list-id"] || o === "bulk" || o === "list" || e.body && At.test(e.body) || n && xn.test(n))
1388
+ if (t["list-unsubscribe"] || t["list-unsubscribe-post"] || t["list-id"] || o === "bulk" || o === "list" || e.body && _t.test(e.body) || n && Pn.test(n))
1293
1389
  return "marketing";
1294
1390
  }
1295
- function Rn(e, t) {
1391
+ function Un(e, t) {
1296
1392
  return e.lastActivityAt ? !(e.seenBy ?? []).includes(t) : !1;
1297
1393
  }
1298
- const Dn = ["open"], $n = 1e3, Ln = {
1394
+ const Kn = ["open"], Fn = 1e3, Bn = {
1299
1395
  urgent: 1,
1300
1396
  high: 4,
1301
1397
  normal: 8,
1302
1398
  low: 24
1303
- }, Pn = 72;
1304
- function Un(e) {
1305
- return e.lastActivityAt ?? (e.createdAt ? new Date(nn(e)).getTime() : 0);
1399
+ }, Hn = 72;
1400
+ function jn(e) {
1401
+ return e.lastActivityAt ?? (e.createdAt ? new Date(an(e)).getTime() : 0);
1306
1402
  }
1307
- function Kn(e, t) {
1308
- return Fn(t.remindersById?.[e.id], e, t.now);
1403
+ function Wn(e, t) {
1404
+ return Gn(t.remindersById?.[e.id], e, t.now);
1309
1405
  }
1310
- function Fn(e, t, n) {
1406
+ function Gn(e, t, n) {
1311
1407
  return !e || e.remindAt <= n ? !1 : !((t.lastActivityAt ?? 0) > e.parkedAt && t.lastActivityPreview?.direction === "inbound");
1312
1408
  }
1313
- const Et = (e) => qt(e) === "outbound_message", St = (e) => Dn.includes(e);
1314
- function Ee(e, t) {
1315
- return Math.max(0, (t - Un(e)) / Tn);
1409
+ const Tt = (e) => en(e) === "outbound_message", It = (e) => Kn.includes(e);
1410
+ function Ie(e, t) {
1411
+ return Math.max(0, (t - jn(e)) / On);
1316
1412
  }
1317
- function Bn(e, t) {
1413
+ function Vn(e, t) {
1318
1414
  const n = e.assignedInboxId ? t?.[e.assignedInboxId] : void 0;
1319
- return typeof n == "number" && n > 0 ? n : Ln[e.priority ?? "normal"];
1415
+ return typeof n == "number" && n > 0 ? n : Bn[e.priority ?? "normal"];
1320
1416
  }
1321
- function Os(e) {
1417
+ function Rs(e) {
1322
1418
  const t = {};
1323
1419
  for (const n of e)
1324
1420
  typeof n.slaHours == "number" && n.slaHours > 0 && (t[n.id] = n.slaHours);
1325
1421
  return t;
1326
1422
  }
1327
- function Cs(e, t, n) {
1328
- return !St(e.status) || e.firstResponseAt ? !1 : Ee(e, t) > Bn(e, n);
1423
+ function Ds(e, t, n) {
1424
+ return !It(e.status) || e.firstResponseAt ? !1 : Ie(e, t) > Vn(e, n);
1329
1425
  }
1330
- function Hn(e, t) {
1426
+ function Xn(e, t) {
1331
1427
  const n = e.lastActivityPreview;
1332
- return n?.direction !== "outbound" || !Et(n.type) ? !1 : Ee(e, t) < Pn;
1428
+ return n?.direction !== "outbound" || !Tt(n.type) ? !1 : Ie(e, t) < Hn;
1333
1429
  }
1334
- function Ns(e, t) {
1335
- if (!St(e.status)) return { score: R, reasons: [] };
1336
- if (e.snoozedTill && e.snoozedTill > t.now) return { score: R, reasons: [] };
1337
- if (Hn(e, t.now)) return { score: R, reasons: [] };
1338
- if (Kn(e, t)) return { score: R, reasons: [] };
1430
+ function $s(e, t) {
1431
+ if (!It(e.status)) return { score: D, reasons: [] };
1432
+ if (e.snoozedTill && e.snoozedTill > t.now) return { score: D, reasons: [] };
1433
+ if (Xn(e, t.now)) return { score: D, reasons: [] };
1434
+ if (Wn(e, t)) return { score: D, reasons: [] };
1339
1435
  let n = 0;
1340
1436
  const r = [], o = e.priority ?? "normal";
1341
- z[o] > 0 && (n += z[o], r.push(`priority:${o}`)), Rn(e, t.userId) && (n += 20, r.push("unseen")), e.assignedUserId && e.assignedUserId === t.userId && (n += 15, r.push("assigned-to-you"));
1342
- const i = Ee(e, t.now);
1437
+ q[o] > 0 && (n += q[o], r.push(`priority:${o}`)), Un(e, t.userId) && (n += 20, r.push("unseen")), e.assignedUserId && e.assignedUserId === t.userId && (n += 15, r.push("assigned-to-you"));
1438
+ const i = Ie(e, t.now);
1343
1439
  if (i > 0) {
1344
1440
  const l = Math.min(i * 2, 30);
1345
1441
  n += l, i >= 1 && r.push(`waiting:${Math.round(i)}h`);
1346
1442
  }
1347
1443
  const s = e.lastActivityPreview;
1348
- return s?.type === "AI_ACTION_PROPOSED" && (n += 30, r.push("awaiting-approval")), s?.direction === "outbound" && Et(s.type) && (n += 10, r.push("no-reply")), !e.firstResponseAt && e.lastActivityPreview?.direction === "inbound" && (n += 10, r.push("awaiting-reply")), (e.tags?.some((l) => l === "marketing" || l === "automated") || kn(e.remoteParty?.resource, e.lastActivityPreview?.snippet)) && (n -= $n, r.push("bulk")), { score: n, reasons: r };
1444
+ return s?.type === "AI_ACTION_PROPOSED" && (n += 30, r.push("awaiting-approval")), s?.direction === "outbound" && Tt(s.type) && (n += 10, r.push("no-reply")), !e.firstResponseAt && e.lastActivityPreview?.direction === "inbound" && (n += 10, r.push("awaiting-reply")), (e.tags?.some((l) => l === "marketing" || l === "automated") || xn(e.remoteParty?.resource, e.lastActivityPreview?.snippet)) && (n -= Fn, r.push("bulk")), { score: n, reasons: r };
1349
1445
  }
1350
- const xs = (e) => !!e.assignedUserId || !!e.assignedInboxId, Rs = (e) => e.status === "closed", Ds = (e) => ({
1446
+ const Ls = (e) => !!e.assignedUserId || !!e.assignedInboxId, Ps = (e) => e.status === "closed", Us = (e) => ({
1351
1447
  urgent: 10,
1352
1448
  high: 5,
1353
1449
  normal: 2,
1354
1450
  low: 1
1355
- })[e.priority] || 0, $s = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1356
- function Ls(e, t) {
1451
+ })[e.priority] || 0, Ks = (e, t = 30) => e.title?.length <= t ? e.title : `${e.title.substring(0, t)}...`;
1452
+ function Fs(e, t) {
1357
1453
  const n = e.labels ?? [];
1358
1454
  return n.find((r) => r.locale === t)?.label ?? n[0]?.label ?? e.url;
1359
1455
  }
1360
- function Ps(e, t, n) {
1456
+ function Bs(e, t, n) {
1361
1457
  const r = e.translations ?? [];
1362
1458
  return r.find((o) => o.locale === t) ?? (n ? r.find((o) => o.locale === n) : void 0) ?? { locale: t };
1363
1459
  }
1364
- const je = [
1460
+ const ze = [
1365
1461
  { code: "nl", label: "Nederlands", english: "Dutch" },
1366
1462
  { code: "en", label: "English", english: "English" },
1367
1463
  { code: "de", label: "Deutsch", english: "German" },
@@ -1376,36 +1472,36 @@ const je = [
1376
1472
  { code: "fi", label: "Suomi", english: "Finnish" },
1377
1473
  { code: "tr", label: "Türkçe", english: "Turkish" }
1378
1474
  ];
1379
- function _t(e) {
1475
+ function wt(e) {
1380
1476
  const t = (e ?? "").toLowerCase();
1381
- return je.find((n) => n.code === t) ?? je.find((n) => n.code === t.split("-")[0]);
1477
+ return ze.find((n) => n.code === t) ?? ze.find((n) => n.code === t.split("-")[0]);
1382
1478
  }
1383
- function Us(e) {
1384
- return _t(e)?.label ?? e;
1479
+ function Hs(e) {
1480
+ return wt(e)?.label ?? e;
1385
1481
  }
1386
- function Ks(e) {
1387
- const t = _t(e);
1482
+ function js(e) {
1483
+ const t = wt(e);
1388
1484
  return t ? t.english === t.label ? `${t.english} (${t.code})` : `${t.english} — ${t.label} (${t.code})` : e;
1389
1485
  }
1390
- const It = 3;
1391
- function jn(e, t) {
1486
+ const Mt = 3;
1487
+ function zn(e, t) {
1392
1488
  const n = /* @__PURE__ */ new Set();
1393
1489
  let r = 1, o = t.get(e)?.parentId;
1394
1490
  for (; o; ) {
1395
- if (n.has(o) || (n.add(o), r++, r > It + 1)) return 1 / 0;
1491
+ if (n.has(o) || (n.add(o), r++, r > Mt + 1)) return 1 / 0;
1396
1492
  o = t.get(o)?.parentId;
1397
1493
  }
1398
1494
  return r;
1399
1495
  }
1400
- function Fs(e, t, n) {
1496
+ function Ws(e, t, n) {
1401
1497
  if (!e) return !0;
1402
1498
  if (e === t) return !1;
1403
1499
  const r = new Map(n.map((s) => [s.id, s]));
1404
- if (!r.has(e) || t && Gn(e, t, r)) return !1;
1405
- const o = jn(e, r), i = t ? Tt(t, n) : 1;
1406
- return o + i <= It;
1500
+ if (!r.has(e) || t && Yn(e, t, r)) return !1;
1501
+ const o = zn(e, r), i = t ? kt(t, n) : 1;
1502
+ return o + i <= Mt;
1407
1503
  }
1408
- function Gn(e, t, n) {
1504
+ function Yn(e, t, n) {
1409
1505
  const r = /* @__PURE__ */ new Set();
1410
1506
  let o = n.get(e)?.parentId;
1411
1507
  for (; o; ) {
@@ -1415,44 +1511,44 @@ function Gn(e, t, n) {
1415
1511
  }
1416
1512
  return !1;
1417
1513
  }
1418
- function Tt(e, t, n = /* @__PURE__ */ new Set()) {
1514
+ function kt(e, t, n = /* @__PURE__ */ new Set()) {
1419
1515
  if (n.has(e)) return 1;
1420
1516
  n.add(e);
1421
1517
  const r = t.filter((o) => o.parentId === e);
1422
- return r.length ? 1 + Math.max(...r.map((o) => Tt(o.id, t, n))) : 1;
1518
+ return r.length ? 1 + Math.max(...r.map((o) => kt(o.id, t, n))) : 1;
1423
1519
  }
1424
- const Wn = "en";
1425
- function Vn(e) {
1426
- return e.defaultLocale || e.locale || Wn;
1520
+ const qn = "en";
1521
+ function Jn(e) {
1522
+ return e.defaultLocale || e.locale || qn;
1427
1523
  }
1428
- function Bs(e) {
1524
+ function Gs(e) {
1429
1525
  const t = /* @__PURE__ */ new Set(), n = [];
1430
- for (const r of [Vn(e), ...e.locales ?? []])
1526
+ for (const r of [Jn(e), ...e.locales ?? []])
1431
1527
  !r || t.has(r) || (t.add(r), n.push(r));
1432
1528
  return n;
1433
1529
  }
1434
- function Hs(e, t, n) {
1530
+ function Vs(e, t, n) {
1435
1531
  const r = e.translations ?? [];
1436
1532
  return r.find((o) => o.locale === t)?.name ?? (n ? r.find((o) => o.locale === n)?.name : void 0) ?? e.name;
1437
1533
  }
1438
- const Ge = ["lookup", "condition", "parallel", "for-each"];
1439
- function We(e) {
1534
+ const Ye = ["lookup", "condition", "parallel", "for-each"];
1535
+ function qe(e) {
1440
1536
  for (const t of e) {
1441
- if (!Ge.includes(t.type))
1442
- return `staptype "${t.type}" mag niet meelezen (alleen ${Ge.join(", ")})`;
1537
+ if (!Ye.includes(t.type))
1538
+ return `staptype "${t.type}" mag niet meelezen (alleen ${Ye.join(", ")})`;
1443
1539
  if (t.type === "parallel")
1444
1540
  for (const n of t.branches ?? []) {
1445
- const r = We(n);
1541
+ const r = qe(n);
1446
1542
  if (r) return r;
1447
1543
  }
1448
1544
  if (t.type === "for-each") {
1449
- const n = We(t.body ?? []);
1545
+ const n = qe(t.body ?? []);
1450
1546
  if (n) return n;
1451
1547
  }
1452
1548
  }
1453
1549
  return null;
1454
1550
  }
1455
- function zn(e, t) {
1551
+ function Zn(e, t) {
1456
1552
  switch (e.kind) {
1457
1553
  case "org":
1458
1554
  return !0;
@@ -1462,22 +1558,22 @@ function zn(e, t) {
1462
1558
  return e.userId === t.userId;
1463
1559
  }
1464
1560
  }
1465
- function js(e, t) {
1466
- return e.filter((n) => n.enabled && zn(n.ownerScope, t));
1561
+ function Xs(e, t) {
1562
+ return e.filter((n) => n.enabled && Zn(n.ownerScope, t));
1467
1563
  }
1468
- function Gs(e) {
1564
+ function zs(e) {
1469
1565
  return e.credentialScope ? e.credentialScope : (e.authMode ?? "header") === "header" || e.oauth?.scope === "org" ? "shared" : "per-user";
1470
1566
  }
1471
- function Ws(e) {
1567
+ function Ys(e) {
1472
1568
  return `mcp__${e}__`;
1473
1569
  }
1474
- const Vs = 1e3, zs = 2e3, Ys = 500, Xs = 12e3, qs = 4e3, Yn = ["contact", "company", "work_item"];
1475
- function Js(e) {
1570
+ const qs = 1e3, Js = 2e3, Zs = 500, Qs = 12e3, ea = 4e3, Qn = ["contact", "company", "work_item"];
1571
+ function ta(e) {
1476
1572
  if (!e) return !1;
1477
1573
  const t = e.slice(0, e.indexOf(":"));
1478
- return Yn.includes(t);
1574
+ return Qn.includes(t);
1479
1575
  }
1480
- const Zs = "onboarding-source", Qs = ["support", "billing", "availability", "sales", "onboarding"], ea = ["keep", "replace"], Se = [
1576
+ const na = "onboarding-source", ra = ["support", "billing", "availability", "sales", "onboarding"], oa = ["keep", "replace"], we = [
1481
1577
  {
1482
1578
  key: "shift",
1483
1579
  label: "kind_shift",
@@ -1551,71 +1647,71 @@ const Zs = "onboarding-source", Qs = ["support", "billing", "availability", "sal
1551
1647
  absent: !0,
1552
1648
  icon: "party-popper"
1553
1649
  }
1554
- ], Xn = {
1650
+ ], er = {
1555
1651
  key: "unknown",
1556
1652
  label: "kind_unknown",
1557
1653
  capacity: !1,
1558
1654
  productive: !1,
1559
1655
  absent: !1
1560
1656
  };
1561
- function $(e, t = Se) {
1562
- return t.find((n) => n.key === e) ?? { ...Xn, key: e };
1657
+ function x(e, t = we) {
1658
+ return t.find((n) => n.key === e) ?? { ...er, key: e };
1563
1659
  }
1564
- function Y(e) {
1660
+ function H(e) {
1565
1661
  return e === "published" || e === "approved";
1566
1662
  }
1567
- function qn(e, t, n = Se) {
1663
+ function vt(e, t, n = we) {
1568
1664
  if (e.workstreamId !== t) return !1;
1569
- const r = $(e.kindKey, n);
1665
+ const r = x(e.kindKey, n);
1570
1666
  return r.absent ? !1 : r.productive || r.capacity;
1571
1667
  }
1572
- function ta(e, t = Se) {
1573
- if (!e.userId || !Y(e.status)) return !1;
1574
- const n = $(e.kindKey, t);
1668
+ function ia(e, t = we) {
1669
+ if (!e.userId || !H(e.status)) return !1;
1670
+ const n = x(e.kindKey, t);
1575
1671
  return n.capacity || n.productive || n.absent;
1576
1672
  }
1577
- const Jn = 864e5;
1578
- function Zn(e, t) {
1579
- return Math.round((t - e) / Jn);
1673
+ const tr = 864e5;
1674
+ function nr(e, t) {
1675
+ return Math.round((t - e) / tr);
1580
1676
  }
1581
- function wt(e, t) {
1677
+ function Ot(e, t) {
1582
1678
  const n = e.cycleMinutes.length;
1583
- return n === 0 ? 0 : (Zn(e.anchor, t) % n + n) % n;
1679
+ return n === 0 ? 0 : (nr(e.anchor, t) % n + n) % n;
1584
1680
  }
1585
- function Mt(e, t) {
1586
- return e.effectiveFrom !== void 0 && t < e.effectiveFrom ? 0 : e.cycleMinutes[wt(e, t)] ?? 0;
1681
+ function Ct(e, t) {
1682
+ return e.effectiveFrom !== void 0 && t < e.effectiveFrom ? 0 : e.cycleMinutes[Ot(e, t)] ?? 0;
1587
1683
  }
1588
- function kt(e, t) {
1589
- return e.startTimes?.[wt(e, t)];
1684
+ function Nt(e, t) {
1685
+ return e.startTimes?.[Ot(e, t)];
1590
1686
  }
1591
- function vt(e, t, n, r) {
1687
+ function xt(e, t, n, r) {
1592
1688
  const o = e.filter(
1593
1689
  (a) => a.effectiveFrom === void 0 || a.effectiveFrom <= r
1594
- ), i = (a) => a.sort((l, d) => (d.effectiveFrom ?? 0) - (l.effectiveFrom ?? 0))[0], s = i(o.filter((a) => a.userId === t));
1690
+ ), i = (a) => a.sort((l, u) => (u.effectiveFrom ?? 0) - (l.effectiveFrom ?? 0))[0], s = i(o.filter((a) => a.userId === t));
1595
1691
  return s || i(
1596
1692
  o.filter((a) => !a.userId && a.teamId && n.includes(a.teamId))
1597
1693
  );
1598
1694
  }
1599
- function Qn(e, t, n) {
1695
+ function rr(e, t, n) {
1600
1696
  return e.filter(
1601
1697
  (r) => r.userId === t && (r.effectiveFrom === void 0 || r.effectiveFrom <= n)
1602
1698
  ).sort((r, o) => (o.effectiveFrom ?? 0) - (r.effectiveFrom ?? 0))[0];
1603
1699
  }
1604
- const ue = 864e5;
1605
- function er(e) {
1606
- const t = Math.max(1, Math.round((e.to - e.from) / ue));
1607
- return Array.from({ length: t }, (n, r) => e.from + r * ue);
1700
+ const fe = 864e5;
1701
+ function or(e) {
1702
+ const t = Math.max(1, Math.round((e.to - e.from) / fe));
1703
+ return Array.from({ length: t }, (n, r) => e.from + r * fe);
1608
1704
  }
1609
- function Ve(e, t, n, r) {
1705
+ function pe(e, t, n, r) {
1610
1706
  const o = Math.min(t, r) - Math.max(e, n);
1611
1707
  return o > 0 ? o / 1e3 : 0;
1612
1708
  }
1613
- const ze = { interval: 0, day: 1, week: 2 };
1614
- function na(e, t) {
1709
+ const Je = { interval: 0, day: 1, week: 2 };
1710
+ function sa(e, t) {
1615
1711
  const { entries: n, patterns: r = [], terms: o = [] } = t, i = n.filter(
1616
- (c) => c.userId && Y(c.status) && $(c.kindKey).capacity
1712
+ (c) => c.userId && H(c.status) && x(c.kindKey).capacity
1617
1713
  ), s = n.filter(
1618
- (c) => c.userId && Y(c.status) && $(c.kindKey).absent
1714
+ (c) => c.userId && H(c.status) && x(c.kindKey).absent
1619
1715
  ), a = t.userIds ?? [
1620
1716
  .../* @__PURE__ */ new Set([
1621
1717
  ...i.map((c) => c.userId),
@@ -1623,263 +1719,286 @@ function na(e, t) {
1623
1719
  ...o.map((c) => c.userId)
1624
1720
  ])
1625
1721
  ].filter((c) => !!c), l = {};
1626
- let d = "interval";
1627
- const p = (c) => {
1628
- ze[c] > ze[d] && (d = c);
1722
+ let u = "interval";
1723
+ const d = (c) => {
1724
+ Je[c] > Je[u] && (u = c);
1629
1725
  };
1630
1726
  for (const c of a) {
1631
- const g = t.teamIdsOf?.(c) ?? [];
1632
- let y = 0, _ = 0, A = 0;
1633
- for (const u of er(e)) {
1634
- const E = Math.max(u, e.from), N = Math.min(u + ue, e.to);
1635
- A++;
1636
- const O = i.filter((w) => w.userId === c).reduce((w, ke) => w + Ve(ke.start, ke.end, E, N), 0);
1727
+ const h = t.teamIdsOf?.(c) ?? [];
1728
+ let m = 0, E = 0, g = 0;
1729
+ for (const f of or(e)) {
1730
+ const S = Math.max(f, e.from), N = Math.min(f + fe, e.to);
1731
+ g++;
1732
+ const O = i.filter((M) => M.userId === c).reduce((M, Ne) => M + pe(Ne.start, Ne.end, S, N), 0);
1637
1733
  if (O > 0) {
1638
- y += O;
1734
+ m += O;
1639
1735
  continue;
1640
1736
  }
1641
- const k = vt(r, c, g, u), C = k ? Mt(k, u) : 0;
1737
+ const k = xt(r, c, h, f), C = k ? Ct(k, f) : 0;
1642
1738
  if (k && C > 0) {
1643
- y += C * 60, p(kt(k, u) ? "interval" : "day");
1739
+ m += C * 60, d(Nt(k, f) ? "interval" : "day");
1644
1740
  continue;
1645
1741
  }
1646
- k || _++;
1742
+ k || E++;
1647
1743
  }
1648
- if (_ > 0) {
1649
- const u = Qn(o, c, e.from);
1650
- u && (y += u.weeklyMinutes * 60 * (_ / 7), p("week"));
1744
+ if (E > 0) {
1745
+ const f = rr(o, c, e.from);
1746
+ f && (m += f.weeklyMinutes * 60 * (E / 7), d("week"));
1651
1747
  }
1652
- const I = s.filter((u) => u.userId === c).reduce(
1653
- (u, E) => u + Ve(E.start, E.end, e.from, e.to),
1748
+ const T = s.filter((f) => f.userId === c).reduce(
1749
+ (f, S) => f + pe(S.start, S.end, e.from, e.to),
1654
1750
  0
1655
- ), f = Math.max(0, y - I);
1656
- (f > 0 || A > 0) && (l[c] = f);
1751
+ ), p = Math.max(0, m - T);
1752
+ (p > 0 || g > 0) && (l[c] = p);
1657
1753
  }
1658
1754
  return {
1659
- seconds: Object.values(l).reduce((c, g) => c + g, 0),
1660
- precision: d,
1755
+ seconds: Object.values(l).reduce((c, h) => c + h, 0),
1756
+ precision: u,
1661
1757
  byUser: l
1662
1758
  };
1663
1759
  }
1664
- function ra(e, t) {
1665
- const n = /* @__PURE__ */ new Map();
1666
- for (const s of e) {
1667
- const a = s.userId ?? null;
1668
- n.set(a, (n.get(a) ?? 0) + s.seconds);
1760
+ function aa(e, t) {
1761
+ if (!e.some((a) => a.userId)) return [];
1762
+ const n = "", r = /* @__PURE__ */ new Map();
1763
+ for (const a of e) {
1764
+ const l = a.userId ?? n;
1765
+ r.set(l, (r.get(l) ?? 0) + a.seconds);
1669
1766
  }
1670
- const o = [.../* @__PURE__ */ new Set([
1767
+ const i = [.../* @__PURE__ */ new Set([
1671
1768
  ...Object.keys(t.byUser),
1672
- ...[...n.keys()].filter((s) => s !== null)
1673
- ])].map((s) => {
1674
- const a = n.get(s) ?? 0, l = t.byUser[s] ?? 0;
1769
+ ...[...r.keys()].filter((a) => a !== n)
1770
+ ])].map((a) => {
1771
+ const l = r.get(a) ?? 0, u = t.byUser[a] ?? 0;
1675
1772
  return {
1676
- userId: s,
1677
- requiredSeconds: a,
1678
- capacitySeconds: l,
1679
- netSeconds: l - a
1773
+ userId: a,
1774
+ requiredSeconds: l,
1775
+ capacitySeconds: u,
1776
+ netSeconds: u - l
1680
1777
  };
1681
1778
  });
1682
- o.sort((s, a) => s.netSeconds - a.netSeconds);
1683
- const i = n.get(null) ?? 0;
1684
- return i > 0 && o.push({ userId: null, requiredSeconds: i, capacitySeconds: 0, netSeconds: -i }), o;
1779
+ i.sort((a, l) => a.netSeconds - l.netSeconds);
1780
+ const s = r.get(n) ?? 0;
1781
+ return s > 0 && i.push({ requiredSeconds: s, capacitySeconds: 0, netSeconds: -s }), i;
1685
1782
  }
1686
- const oa = "demand-source", Ye = 1e3;
1687
- function tr(e, t) {
1783
+ function ca(e, t, n, r) {
1784
+ const o = e.filter(
1785
+ (s) => s.userId && H(s.status) && !x(s.kindKey).absent
1786
+ ), i = Object.entries(r.byUser).map(
1787
+ ([s, a]) => {
1788
+ let l = 0, u = 0;
1789
+ for (const d of o) {
1790
+ if (d.userId !== s || x(d.kindKey).capacity && !d.workstreamId) continue;
1791
+ const c = pe(d.start, d.end, n.from, n.to);
1792
+ c <= 0 || (vt(d, t) ? l += c : u += c);
1793
+ }
1794
+ return {
1795
+ userId: s,
1796
+ capacitySeconds: a,
1797
+ onThisSeconds: l,
1798
+ elsewhereSeconds: u,
1799
+ freeSeconds: Math.max(0, a - l - u)
1800
+ };
1801
+ }
1802
+ );
1803
+ return i.sort((s, a) => a.freeSeconds - s.freeSeconds), i;
1804
+ }
1805
+ const la = "demand-source", Ze = 1e3;
1806
+ function ir(e, t) {
1688
1807
  let n = 1;
1689
1808
  for (let r = 1; r <= e; r++)
1690
1809
  n = t * n / (r + t * n);
1691
1810
  return n;
1692
1811
  }
1693
- function nr(e, t) {
1812
+ function sr(e, t) {
1694
1813
  if (e <= 0) return 1;
1695
1814
  if (t <= 0) return 0;
1696
1815
  if (e <= t) return 1;
1697
- const n = tr(e, t), r = t / e;
1816
+ const n = ir(e, t), r = t / e;
1698
1817
  return n / (1 - r * (1 - n));
1699
1818
  }
1700
- function rr(e, t, n, r) {
1701
- return r <= 0 ? 1 : e <= t ? 0 : 1 - nr(e, t) * Math.exp(-(e - t) * n / r);
1819
+ function ar(e, t, n, r) {
1820
+ return r <= 0 ? 1 : e <= t ? 0 : 1 - sr(e, t) * Math.exp(-(e - t) * n / r);
1702
1821
  }
1703
- function or(e, t, n) {
1822
+ function cr(e, t, n) {
1704
1823
  return n <= 0 ? 0 : e * t / n;
1705
1824
  }
1706
- function ir(e, t, n, r) {
1825
+ function lr(e, t, n, r) {
1707
1826
  if (e <= 0 || t <= 0) return 0;
1708
- const o = or(e, t, n);
1827
+ const o = cr(e, t, n);
1709
1828
  if (o <= 0) return 0;
1710
1829
  const i = r.serviceLevelPercent / 100, s = r.maxOccupancyPercent ? r.maxOccupancyPercent / 100 : void 0;
1711
- for (let a = Math.max(1, Math.ceil(o)); a <= Ye; a++)
1712
- if (!(a <= o) && !(rr(a, o, r.targetSeconds, t) < i) && !(s && o / a > s))
1830
+ for (let a = Math.max(1, Math.ceil(o)); a <= Ze; a++)
1831
+ if (!(a <= o) && !(ar(a, o, r.targetSeconds, t) < i) && !(s && o / a > s))
1713
1832
  return a;
1714
- return Ye;
1833
+ return Ze;
1715
1834
  }
1716
- const sr = 36e5, ar = 864e5;
1717
- function cr(e) {
1718
- return e === "day" ? ar : sr;
1835
+ const ur = 36e5, dr = 864e5;
1836
+ function fr(e) {
1837
+ return e === "day" ? dr : ur;
1719
1838
  }
1720
- function ia(e, t) {
1839
+ function ua(e, t) {
1721
1840
  return e.start < t.end && t.start < e.end;
1722
1841
  }
1723
- function re(e, t, n) {
1842
+ function ie(e, t, n) {
1724
1843
  const r = Math.min(e.end, n) - Math.max(e.start, t);
1725
1844
  return r > 0 ? r / 1e3 : 0;
1726
1845
  }
1727
- function lr(e, t, n) {
1846
+ function pr(e, t, n) {
1728
1847
  const r = e.handleSeconds ?? 0, o = e.seconds ?? (e.volume !== void 0 ? e.volume * r : 0);
1729
1848
  if (o <= 0 && !e.volume) return { seconds: 0, headcount: 0 };
1730
1849
  const i = (t.unplannedLossPercent ?? 0) / 100, s = i > 0 && i < 1 ? 1 / (1 - i) : 1;
1731
1850
  if (t.model === "queue" && e.volume !== void 0 && r > 0) {
1732
- const a = ir(e.volume, r, n, t);
1851
+ const a = lr(e.volume, r, n, t);
1733
1852
  return { seconds: o, headcount: a * s };
1734
1853
  }
1735
1854
  return { seconds: o, headcount: o / n * s };
1736
1855
  }
1737
- function sa(e) {
1738
- const { entries: t, workstreamId: n, staffing: r, demand: o, range: i } = e, s = e.grain ?? "hour", a = cr(s), l = a / 1e3, d = e.kinds, p = t.filter((A) => Y(A.status)), c = p.filter((A) => qn(A, n, d)), g = p.filter((A) => $(A.kindKey, d).capacity), y = p.filter((A) => $(A.kindKey, d).absent), _ = [];
1739
- for (let A = F(i.from, s); A < i.to; A += a) {
1740
- const I = A + a, f = K(A, s);
1741
- let u = 0;
1742
- for (const w of c) u += re(w, A, I);
1743
- let E = 0;
1744
- for (const w of g) E += re(w, A, I);
1856
+ function da(e) {
1857
+ const { entries: t, workstreamId: n, staffing: r, demand: o, range: i } = e, s = e.grain ?? "hour", a = fr(s), l = a / 1e3, u = e.kinds, d = t.filter((g) => H(g.status)), c = d.filter((g) => vt(g, n, u)), h = d.filter((g) => x(g.kindKey, u).capacity), m = d.filter((g) => x(g.kindKey, u).absent), E = [];
1858
+ for (let g = B(i.from, s); g < i.to; g += a) {
1859
+ const T = g + a, p = F(g, s);
1860
+ let f = 0;
1861
+ for (const M of c) f += ie(M, g, T);
1862
+ let S = 0;
1863
+ for (const M of h) S += ie(M, g, T);
1745
1864
  let N = 0;
1746
- for (const w of y) N += re(w, A, I);
1747
- const O = o?.[f] ?? {}, k = lr(O, r, l), C = u / l;
1748
- _.push({
1749
- period: f,
1865
+ for (const M of m) N += ie(M, g, T);
1866
+ const O = o?.[p] ?? {}, k = pr(O, r, l), C = f / l;
1867
+ E.push({
1868
+ period: p,
1750
1869
  forecastVolume: O.volume,
1751
1870
  requiredSeconds: k.seconds,
1752
1871
  requiredHeadcount: k.headcount,
1753
- scheduledSeconds: u,
1872
+ scheduledSeconds: f,
1754
1873
  scheduledHeadcount: C,
1755
1874
  netHeadcount: C - k.headcount,
1756
- capacitySeconds: E,
1875
+ capacitySeconds: S,
1757
1876
  absentSeconds: N
1758
1877
  });
1759
1878
  }
1760
- return _;
1879
+ return E;
1761
1880
  }
1762
- function ur(e, t) {
1881
+ function mr(e, t) {
1763
1882
  return e.workTypeKey ?? t?.defaultWorkTypeKey;
1764
1883
  }
1765
- function aa(e, t, n) {
1766
- const r = ur(e, t);
1884
+ function fa(e, t, n) {
1885
+ const r = mr(e, t);
1767
1886
  return r ? n.find((o) => o.key === r)?.defaultBillable ?? !1 : !1;
1768
1887
  }
1769
- function ca(e) {
1888
+ function pa(e) {
1770
1889
  return e.filter(
1771
1890
  (t) => t.netHeadcount < 0 && t.requiredHeadcount > 0
1772
1891
  );
1773
1892
  }
1774
- const dr = 36e5, de = 6048e5, fr = 8, pr = 0.5, mr = 2;
1775
- function hr(e) {
1893
+ const hr = 36e5, me = 6048e5, gr = 8, yr = 0.5, br = 2;
1894
+ function Ar(e) {
1776
1895
  const t = Number(e.slice(0, 4)), n = Number(e.slice(5, 7)), r = Number(e.slice(8, 10)), o = e.length > 10 ? Number(e.slice(11, 13)) : 0;
1777
1896
  return Date.UTC(t, n - 1, r, o);
1778
1897
  }
1779
- function gr(e, t, n) {
1898
+ function Er(e, t, n) {
1780
1899
  const r = [];
1781
1900
  for (let i = 0; i < n; i++) {
1782
- const s = t - i * de, a = s - de;
1783
- let l = 0, d = !1;
1784
- for (const [p, c] of e)
1785
- p >= a && p < s && (l += c, d = !0);
1786
- d && r.push(l);
1901
+ const s = t - i * me, a = s - me;
1902
+ let l = 0, u = !1;
1903
+ for (const [d, c] of e)
1904
+ d >= a && d < s && (l += c, u = !0);
1905
+ u && r.push(l);
1787
1906
  }
1788
1907
  if (r.length < 2) return 1;
1789
1908
  const o = r.reduce((i, s) => i + s, 0) / r.length;
1790
- return o <= 0 ? 1 : Math.min(mr, Math.max(pr, r[0] / o));
1909
+ return o <= 0 ? 1 : Math.min(br, Math.max(yr, r[0] / o));
1791
1910
  }
1792
- function yr(e, t) {
1911
+ function Sr(e, t) {
1793
1912
  if (!e?.length) return;
1794
1913
  let n;
1795
1914
  for (const r of e)
1796
1915
  t >= r.from && t < r.to && (n = r);
1797
1916
  return n;
1798
1917
  }
1799
- function la(e, t, n) {
1800
- const r = Math.max(1, n?.weeks ?? fr), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
1918
+ function ma(e, t, n) {
1919
+ const r = Math.max(1, n?.weeks ?? gr), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
1801
1920
  for (const l of e)
1802
- o.set(hr(l.period), l.value), i.add(l.period.slice(0, 10));
1803
- const s = gr(o, F(t.from, "hour"), r), a = [];
1804
- for (let l = F(t.from, "hour"); l < t.to; l += dr) {
1805
- let d = 0, p = 0;
1806
- for (let y = 1; y <= r; y++) {
1807
- const _ = l - y * de, I = o.get(_) ?? (i.has(K(_, "day")) ? 0 : void 0);
1808
- if (I === void 0) continue;
1809
- const f = r - y + 1;
1810
- d += I * f, p += f;
1921
+ o.set(Ar(l.period), l.value), i.add(l.period.slice(0, 10));
1922
+ const s = Er(o, B(t.from, "hour"), r), a = [];
1923
+ for (let l = B(t.from, "hour"); l < t.to; l += hr) {
1924
+ let u = 0, d = 0;
1925
+ for (let m = 1; m <= r; m++) {
1926
+ const E = l - m * me, T = o.get(E) ?? (i.has(F(E, "day")) ? 0 : void 0);
1927
+ if (T === void 0) continue;
1928
+ const p = r - m + 1;
1929
+ u += T * p, d += p;
1811
1930
  }
1812
- let c = p > 0 ? d / p * s : 0;
1813
- const g = yr(n?.adjustments, l);
1814
- g?.absoluteVolume !== void 0 ? c = g.absoluteVolume : g?.factor !== void 0 && (c *= g.factor), a.push({ period: K(l, "hour"), volume: c });
1931
+ let c = d > 0 ? u / d * s : 0;
1932
+ const h = Sr(n?.adjustments, l);
1933
+ h?.absoluteVolume !== void 0 ? c = h.absoluteVolume : h?.factor !== void 0 && (c *= h.factor), a.push({ period: F(l, "hour"), volume: c });
1815
1934
  }
1816
1935
  return a;
1817
1936
  }
1818
- const br = "schedule_entry", Ar = "workstream";
1819
- function ua(e) {
1820
- return `${br}:${e}`;
1937
+ const _r = "schedule_entry", Tr = "workstream";
1938
+ function ha(e) {
1939
+ return `${_r}:${e}`;
1821
1940
  }
1822
- function da(e) {
1823
- return `${Ar}:${e}`;
1941
+ function ga(e) {
1942
+ return `${Tr}:${e}`;
1824
1943
  }
1825
- const fe = 36e5, L = 864e5;
1826
- function Er(e, t) {
1827
- const n = t === "day" ? L : fe, r = [];
1828
- for (let o = F(e.from, t); o < e.to; o += n) r.push(o);
1944
+ const he = 36e5, L = 864e5;
1945
+ function Ir(e, t) {
1946
+ const n = t === "day" ? L : he, r = [];
1947
+ for (let o = B(e.from, t); o < e.to; o += n) r.push(o);
1829
1948
  return r;
1830
1949
  }
1831
- function Xe(e) {
1950
+ function Qe(e) {
1832
1951
  const t = Math.max(1, Math.round((e.to - e.from) / L));
1833
1952
  return Array.from({ length: t }, (n, r) => e.from + r * L);
1834
1953
  }
1835
- function oe(e, t, n, r) {
1954
+ function se(e, t, n, r) {
1836
1955
  const o = Math.min(t, r) - Math.max(e, n);
1837
1956
  return o > 0 ? o / 1e3 : 0;
1838
1957
  }
1839
- function fa(e, t, n = {}) {
1840
- const r = n.grain ?? "hour", o = Er(t, r), i = r === "day" ? L : fe, s = new Map(o.map((c) => [c, 0])), a = e.filter((c) => c.userId && $(c.kindKey).capacity), l = n.userIds?.length ? new Set(n.userIds) : null, d = /* @__PURE__ */ new Set();
1958
+ function ya(e, t, n = {}) {
1959
+ const r = n.grain ?? "hour", o = Ir(t, r), i = r === "day" ? L : he, s = new Map(o.map((c) => [c, 0])), a = e.filter((c) => c.userId && x(c.kindKey).capacity), l = n.userIds?.length ? new Set(n.userIds) : null, u = /* @__PURE__ */ new Set();
1841
1960
  for (const c of a)
1842
1961
  if (!(l && c.userId && !l.has(c.userId))) {
1843
- for (const g of o) {
1844
- const y = oe(c.start, c.end, g, g + i);
1845
- y > 0 && s.set(g, (s.get(g) ?? 0) + y);
1962
+ for (const h of o) {
1963
+ const m = se(c.start, c.end, h, h + i);
1964
+ m > 0 && s.set(h, (s.get(h) ?? 0) + m);
1846
1965
  }
1847
- for (const g of Xe(t))
1848
- oe(c.start, c.end, g, g + L) > 0 && d.add(`${c.userId}:${g}`);
1966
+ for (const h of Qe(t))
1967
+ se(c.start, c.end, h, h + L) > 0 && u.add(`${c.userId}:${h}`);
1849
1968
  }
1850
- const p = n.userIds ?? [
1969
+ const d = n.userIds ?? [
1851
1970
  .../* @__PURE__ */ new Set([
1852
1971
  ...a.map((c) => c.userId),
1853
1972
  ...(n.patterns ?? []).map((c) => c.userId)
1854
1973
  ])
1855
1974
  ].filter((c) => !!c);
1856
1975
  if (n.patterns?.length)
1857
- for (const c of p) {
1858
- const g = n.teamIdsOf?.(c) ?? [];
1859
- for (const y of Xe(t)) {
1860
- if (d.has(`${c}:${y}`)) continue;
1861
- const _ = vt(n.patterns, c, g, y);
1862
- if (!_) continue;
1863
- const A = Mt(_, y);
1864
- if (A <= 0) continue;
1865
- const I = kt(_, y);
1866
- if (I) {
1867
- const [E, N] = I.split(":").map(Number), O = y + E * fe + (N ?? 0) * 6e4, k = O + A * 6e4;
1976
+ for (const c of d) {
1977
+ const h = n.teamIdsOf?.(c) ?? [];
1978
+ for (const m of Qe(t)) {
1979
+ if (u.has(`${c}:${m}`)) continue;
1980
+ const E = xt(n.patterns, c, h, m);
1981
+ if (!E) continue;
1982
+ const g = Ct(E, m);
1983
+ if (g <= 0) continue;
1984
+ const T = Nt(E, m);
1985
+ if (T) {
1986
+ const [S, N] = T.split(":").map(Number), O = m + S * he + (N ?? 0) * 6e4, k = O + g * 6e4;
1868
1987
  for (const C of o) {
1869
- const w = oe(O, k, C, C + i);
1870
- w > 0 && s.set(C, (s.get(C) ?? 0) + w);
1988
+ const M = se(O, k, C, C + i);
1989
+ M > 0 && s.set(C, (s.get(C) ?? 0) + M);
1871
1990
  }
1872
1991
  continue;
1873
1992
  }
1874
- const f = o.filter((E) => E >= y && E < y + L);
1875
- if (!f.length) continue;
1876
- const u = A * 60 / f.length;
1877
- for (const E of f) s.set(E, (s.get(E) ?? 0) + u);
1993
+ const p = o.filter((S) => S >= m && S < m + L);
1994
+ if (!p.length) continue;
1995
+ const f = g * 60 / p.length;
1996
+ for (const S of p) s.set(S, (s.get(S) ?? 0) + f);
1878
1997
  }
1879
1998
  }
1880
- return o.map((c) => ({ period: K(c, r), weight: s.get(c) ?? 0 }));
1999
+ return o.map((c) => ({ period: F(c, r), weight: s.get(c) ?? 0 }));
1881
2000
  }
1882
- function Sr(e, t) {
2001
+ function wr(e, t) {
1883
2002
  if (e <= 0 || !t.length) return [];
1884
2003
  const n = t.reduce((r, o) => r + Math.max(0, o.weight), 0);
1885
2004
  if (n <= 0) {
@@ -1888,20 +2007,20 @@ function Sr(e, t) {
1888
2007
  }
1889
2008
  return t.filter((r) => r.weight > 0).map((r) => ({ period: r.period, seconds: e * r.weight / n }));
1890
2009
  }
1891
- function pa(e, t, n) {
2010
+ function ba(e, t, n) {
1892
2011
  const r = /* @__PURE__ */ new Map();
1893
2012
  for (const o of e) {
1894
2013
  const i = o.by ? t.filter((a) => n(a.period) < o.by) : t, s = i.length ? i : t;
1895
- for (const a of Sr(o.seconds, s)) {
1896
- const l = `${a.period}|${o.userId ?? ""}`, d = r.get(l);
1897
- d ? d.seconds += a.seconds : r.set(l, { ...a, userId: o.userId });
2014
+ for (const a of wr(o.seconds, s)) {
2015
+ const l = `${a.period}|${o.userId ?? ""}`, u = r.get(l);
2016
+ u ? u.seconds += a.seconds : r.set(l, { ...a, userId: o.userId });
1898
2017
  }
1899
2018
  }
1900
2019
  return [...r.values()].sort(
1901
2020
  (o, i) => o.period.localeCompare(i.period) || (o.userId ?? "").localeCompare(i.userId ?? "")
1902
2021
  );
1903
2022
  }
1904
- function _r(e) {
2023
+ function Mr(e) {
1905
2024
  switch (e.kind) {
1906
2025
  case "user":
1907
2026
  return `user:${e.userId}`;
@@ -1911,7 +2030,7 @@ function _r(e) {
1911
2030
  return "org";
1912
2031
  }
1913
2032
  }
1914
- function ma(e) {
2033
+ function Aa(e) {
1915
2034
  if (typeof e != "string") return;
1916
2035
  const t = e.trim();
1917
2036
  if (t === "org") return { kind: "org" };
@@ -1923,10 +2042,10 @@ function ma(e) {
1923
2042
  if (r === "team") return { kind: "team", teamId: o };
1924
2043
  }
1925
2044
  }
1926
- function Ir(e) {
1927
- return _r(e);
2045
+ function kr(e) {
2046
+ return Mr(e);
1928
2047
  }
1929
- function Tr(e) {
2048
+ function vr(e) {
1930
2049
  switch (e.kind) {
1931
2050
  case "personal":
1932
2051
  return { kind: "user", userId: e.userId };
@@ -1936,14 +2055,14 @@ function Tr(e) {
1936
2055
  return { kind: "org" };
1937
2056
  }
1938
2057
  }
1939
- const wr = Tr;
1940
- function ha(e) {
1941
- return e.agentId ? { kind: "user", userId: e.agentId } : wr(e.ownerScope);
2058
+ const Or = vr;
2059
+ function Ea(e) {
2060
+ return e.agentId ? { kind: "user", userId: e.agentId } : Or(e.ownerScope);
1942
2061
  }
1943
- function ga(e) {
1944
- return Ir(e);
2062
+ function Sa(e) {
2063
+ return kr(e);
1945
2064
  }
1946
- function ya(e, t) {
2065
+ function _a(e, t) {
1947
2066
  if (!t) return;
1948
2067
  let n = e;
1949
2068
  for (const r of t.split(".")) {
@@ -1952,24 +2071,24 @@ function ya(e, t) {
1952
2071
  }
1953
2072
  return n;
1954
2073
  }
1955
- function ba(e, t) {
2074
+ function Ta(e, t) {
1956
2075
  return e.targets.find((n) => n.activityTypes.includes(t));
1957
2076
  }
1958
- function Aa(e, t) {
2077
+ function Ia(e, t) {
1959
2078
  if (t)
1960
2079
  return e.targets.find((n) => n.id === t);
1961
2080
  }
1962
- function Mr(e) {
2081
+ function Cr(e) {
1963
2082
  return e?.kind === "assignment";
1964
2083
  }
1965
- function Ea(e) {
2084
+ function wa(e) {
1966
2085
  const { trigger: t, agentId: n, target: r, activityType: o, assigneeUserId: i, authorUserId: s } = e;
1967
- return Mr(t) ? n ? r ? r.activityTypes.includes(o) ? i ? i !== n ? "assigned to someone else" : s && s === n ? "the agent assigned this to itself, which would restart its own run" : null : `no assignee found at ${r.assigneePath}` : `activity type ${o} 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";
2086
+ return Cr(t) ? n ? r ? r.activityTypes.includes(o) ? i ? i !== n ? "assigned to someone else" : s && s === n ? "the agent assigned this to itself, which would restart its own run" : null : `no assignee found at ${r.assigneePath}` : `activity type ${o} 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";
1968
2087
  }
1969
- function Sa(e) {
2088
+ function Ma(e) {
1970
2089
  return (e.startsWith("tool:") ? e.slice(5) : e).replace(/__/g, " · ").replace(/\./g, " · ").replace(/_/g, " ");
1971
2090
  }
1972
- const _a = [
2091
+ const ka = [
1973
2092
  { name: "text", type: "string" },
1974
2093
  { name: "subject", type: "string" },
1975
2094
  { name: "from", type: "string" },
@@ -2009,7 +2128,7 @@ const _a = [
2009
2128
  // `buildTriggerVars` cannot fill it itself: the job does that with the catalog in hand, before
2010
2129
  // the trigger filter runs — like contactId/companyId above.
2011
2130
  { name: "assigneeUserId", type: "string" }
2012
- ], Ia = {
2131
+ ], va = {
2013
2132
  topics: [
2014
2133
  { name: "topicId", type: "string" },
2015
2134
  { name: "topic", type: "string" },
@@ -2023,58 +2142,58 @@ const _a = [
2023
2142
  // Deliberately empty: the fields come from `ClassifyStep.fields` and so differ per step.
2024
2143
  extract: []
2025
2144
  };
2026
- function kr(e) {
2145
+ function Nr(e) {
2027
2146
  return `${e.type}:${e.id}`;
2028
2147
  }
2029
- const vr = "interaction";
2030
- function Or(e) {
2031
- return e?.type === vr ? e.id : void 0;
2148
+ const xr = "interaction";
2149
+ function Rr(e) {
2150
+ return e?.type === xr ? e.id : void 0;
2032
2151
  }
2033
- const Cr = 64, Nr = 8e3;
2034
- function Ta(e) {
2152
+ const Dr = 64, $r = 8e3;
2153
+ function Oa(e) {
2035
2154
  const t = typeof e == "number" ? e : Number(String(e ?? "").trim());
2036
2155
  if (!(!Number.isFinite(t) || t <= 0))
2037
- return Math.min(Math.max(Math.round(t), Cr), Nr);
2156
+ return Math.min(Math.max(Math.round(t), Dr), $r);
2038
2157
  }
2039
- const wa = { kind: "workflow", steps: [] };
2040
- function Ma(e) {
2158
+ const Ca = { kind: "workflow", steps: [] };
2159
+ function Na(e) {
2041
2160
  return e?.kind === "workflow" ? e.steps : [];
2042
2161
  }
2043
- function ka(e) {
2162
+ function xa(e) {
2044
2163
  return e?.kind === "procedure" ? e.procedure : void 0;
2045
2164
  }
2046
- function xr(e) {
2165
+ function Lr(e) {
2047
2166
  const t = e?.approved ?? 0, n = t + (e?.rejected ?? 0);
2048
2167
  return { total: n, rate: n ? t / n : 0 };
2049
2168
  }
2050
- const Rr = 10, Dr = 0.9;
2051
- function va(e) {
2052
- const { total: t, rate: n } = xr(e);
2053
- return t >= Rr && n >= Dr;
2169
+ const Pr = 10, Ur = 0.9;
2170
+ function Ra(e) {
2171
+ const { total: t, rate: n } = Lr(e);
2172
+ return t >= Pr && n >= Ur;
2054
2173
  }
2055
- const $r = ["done", "escalated", "failed", "stopped"];
2056
- function Oa(e) {
2057
- return $r.includes(e);
2174
+ const Kr = ["done", "escalated", "failed", "stopped"];
2175
+ function Da(e) {
2176
+ return Kr.includes(e);
2058
2177
  }
2059
- function Lr(e) {
2178
+ function Fr(e) {
2060
2179
  return e === "waiting";
2061
2180
  }
2062
- function Ca(e) {
2063
- return e === "running" || Lr(e);
2181
+ function $a(e) {
2182
+ return e === "running" || Fr(e);
2064
2183
  }
2065
- function Ot(e) {
2184
+ function Rt(e) {
2066
2185
  return e.subjectKind && e.subjectId ? { type: e.subjectKind, id: e.subjectId } : void 0;
2067
2186
  }
2068
- function Na(e) {
2069
- const t = Ot(e);
2070
- return t ? kr(t) : void 0;
2187
+ function La(e) {
2188
+ const t = Rt(e);
2189
+ return t ? Nr(t) : void 0;
2071
2190
  }
2072
- function xa(e) {
2073
- return Or(Ot(e));
2191
+ function Pa(e) {
2192
+ return Rr(Rt(e));
2074
2193
  }
2075
- function Ra(e) {
2194
+ function Ua(e) {
2076
2195
  const t = [], n = /* @__PURE__ */ new Map();
2077
- for (const r of [...e].sort(Pr)) {
2196
+ for (const r of [...e].sort(Br)) {
2078
2197
  const o = n.get(r.emoji);
2079
2198
  if (o) {
2080
2199
  o.push(r.actor);
@@ -2087,58 +2206,58 @@ function Ra(e) {
2087
2206
  return { emoji: r, count: o.length, actors: o };
2088
2207
  }).sort((r, o) => o.count - r.count || t.indexOf(r.emoji) - t.indexOf(o.emoji));
2089
2208
  }
2090
- const Pr = (e, t) => (e.createdAt ?? 0) - (t.createdAt ?? 0);
2091
- function Da(e, t) {
2209
+ const Br = (e, t) => (e.createdAt ?? 0) - (t.createdAt ?? 0);
2210
+ function Ka(e, t) {
2092
2211
  return t ? e.actors.some((n) => n.type === "user" && n.id === t) : !1;
2093
2212
  }
2094
- const pe = 6e4, Ur = 36e5, B = 864e5, Ct = 800;
2095
- function qe(e, t) {
2213
+ const ge = 6e4, Hr = 36e5, j = 864e5, Dt = 800;
2214
+ function et(e, t) {
2096
2215
  const n = Date.UTC(e, t + 1, 0);
2097
- return n - new Date(n).getUTCDay() * B + Ur;
2216
+ return n - new Date(n).getUTCDay() * j + Hr;
2098
2217
  }
2099
- function Kr(e) {
2218
+ function jr(e) {
2100
2219
  const t = new Date(e).getUTCFullYear();
2101
- return e >= qe(t, 2) && e < qe(t, 9);
2220
+ return e >= et(t, 2) && e < et(t, 9);
2102
2221
  }
2103
- function Nt(e, t) {
2104
- const n = t.dst === "eu" && Kr(e) ? 60 : 0;
2105
- return (t.utcOffsetMinutes + n) * pe;
2222
+ function $t(e, t) {
2223
+ const n = t.dst === "eu" && jr(e) ? 60 : 0;
2224
+ return (t.utcOffsetMinutes + n) * ge;
2106
2225
  }
2107
- function Fr(e) {
2226
+ function Wr(e) {
2108
2227
  return (e + 3) % 7 + 1;
2109
2228
  }
2110
- function xt(e, t) {
2111
- const n = Nt(e, t), r = e + n, o = Math.floor(r / B);
2112
- if (!t.days.includes(Fr(o))) return null;
2113
- const i = o * B;
2229
+ function Lt(e, t) {
2230
+ const n = $t(e, t), r = e + n, o = Math.floor(r / j);
2231
+ if (!t.days.includes(Wr(o))) return null;
2232
+ const i = o * j;
2114
2233
  return {
2115
- open: i + t.fromMinutes * pe - n,
2116
- close: i + t.toMinutes * pe - n
2234
+ open: i + t.fromMinutes * ge - n,
2235
+ close: i + t.toMinutes * ge - n
2117
2236
  };
2118
2237
  }
2119
- function Rt(e, t) {
2120
- const n = Nt(e, t), r = e + n;
2121
- return (Math.floor(r / B) + 1) * B - n;
2238
+ function Pt(e, t) {
2239
+ const n = $t(e, t), r = e + n;
2240
+ return (Math.floor(r / j) + 1) * j - n;
2122
2241
  }
2123
- function me(e, t, n) {
2242
+ function ye(e, t, n) {
2124
2243
  if (t <= e) return 0;
2125
2244
  if (!n) return t - e;
2126
2245
  let r = 0, o = e;
2127
- for (let i = 0; i < Ct && o < t; i++) {
2128
- const s = xt(o, n);
2246
+ for (let i = 0; i < Dt && o < t; i++) {
2247
+ const s = Lt(o, n);
2129
2248
  if (s) {
2130
2249
  const a = Math.max(o, s.open), l = Math.min(t, s.close);
2131
2250
  l > a && (r += l - a);
2132
2251
  }
2133
- o = Rt(o, n);
2252
+ o = Pt(o, n);
2134
2253
  }
2135
2254
  return r;
2136
2255
  }
2137
- function _e(e, t, n) {
2256
+ function Me(e, t, n) {
2138
2257
  if (!n) return e + t;
2139
2258
  let r = t, o = e;
2140
- for (let i = 0; i < Ct; i++) {
2141
- const s = xt(o, n);
2259
+ for (let i = 0; i < Dt; i++) {
2260
+ const s = Lt(o, n);
2142
2261
  if (s) {
2143
2262
  const a = Math.max(o, s.open);
2144
2263
  if (s.close > a) {
@@ -2147,183 +2266,183 @@ function _e(e, t, n) {
2147
2266
  r -= l;
2148
2267
  }
2149
2268
  }
2150
- o = Rt(o, n);
2269
+ o = Pt(o, n);
2151
2270
  }
2152
2271
  return e + t;
2153
2272
  }
2154
- function $a(e) {
2273
+ function Fa(e) {
2155
2274
  const t = /^([01]\d|2[0-3]):([0-5]\d)$/.exec(e);
2156
2275
  return t ? Number(t[1]) * 60 + Number(t[2]) : null;
2157
2276
  }
2158
- const he = 1, ge = 2;
2159
- function La(e) {
2160
- return e === "snoozed" ? he : ge;
2277
+ const be = 1, Ae = 2;
2278
+ function Ba(e) {
2279
+ return e === "snoozed" ? be : Ae;
2161
2280
  }
2162
- function Ie(e) {
2281
+ function ke(e) {
2163
2282
  const t = e.calendar;
2164
2283
  return t && Array.isArray(t.days) ? t : null;
2165
2284
  }
2166
- const Pa = [
2285
+ const Ha = [
2167
2286
  "speed_of_answer",
2168
2287
  "first_response",
2169
2288
  "next_response",
2170
2289
  "resolution",
2171
2290
  "close"
2172
- ], Ua = ["snoozed", "waiting_for_customer"], Br = 6e4, Dt = ["speed_of_answer", "first_response", "next_response"], Hr = [...Dt, "resolution", "close"];
2173
- function H(e) {
2291
+ ], ja = ["snoozed", "waiting_for_customer"], Gr = 6e4, Ut = ["speed_of_answer", "first_response", "next_response"], Vr = [...Ut, "resolution", "close"];
2292
+ function W(e) {
2174
2293
  return e.state === "running" || e.state === "paused";
2175
2294
  }
2176
- function jr(e, t) {
2177
- return H(e) ? { state: (e.state === "paused" ? e.remainingMs > 0 : t <= e.dueAt) ? "hit" : "missed", settledAt: Math.max(t, e.startedAt) } : null;
2295
+ function Xr(e, t) {
2296
+ return W(e) ? { state: (e.state === "paused" ? e.remainingMs > 0 : t <= e.dueAt) ? "hit" : "missed", settledAt: Math.max(t, e.startedAt) } : null;
2178
2297
  }
2179
- function Je(e) {
2180
- return H(e) ? { state: "void" } : null;
2298
+ function tt(e) {
2299
+ return W(e) ? { state: "void" } : null;
2181
2300
  }
2182
- function Gr(e, t, n, r) {
2183
- if (!H(e) || (e.pauseBits & t) !== 0) return null;
2301
+ function zr(e, t, n, r) {
2302
+ if (!W(e) || (e.pauseBits & t) !== 0) return null;
2184
2303
  const o = e.pauseBits | t;
2185
- return e.state === "paused" ? { pauseBits: o } : { pauseBits: o, state: "paused", remainingMs: me(n, e.dueAt, r) };
2304
+ return e.state === "paused" ? { pauseBits: o } : { pauseBits: o, state: "paused", remainingMs: ye(n, e.dueAt, r) };
2186
2305
  }
2187
- function Wr(e, t, n, r) {
2188
- if (!H(e) || (e.pauseBits & t) === 0) return null;
2306
+ function Yr(e, t, n, r) {
2307
+ if (!W(e) || (e.pauseBits & t) === 0) return null;
2189
2308
  const o = e.pauseBits & ~t;
2190
- return o !== 0 ? { pauseBits: o } : { pauseBits: o, state: "running", dueAt: _e(n, e.remainingMs, r) };
2191
- }
2192
- function Ka({ event: e, at: t, now: n, clocks: r, profile: o }) {
2193
- const i = Ie(o), s = Math.min(t, n), a = r.map((f) => ({ ...f })), l = [], d = (f, u) => {
2194
- u && (l.push({ op: "patch", clockId: f.id, patch: u }), Object.assign(f, u));
2195
- }, p = (f) => {
2196
- for (const u of a)
2197
- u.metric === f && d(u, jr(u, s));
2198
- }, c = (f) => {
2199
- for (const u of a)
2200
- f.includes(u.metric) && d(u, Je(u));
2201
- }, g = (f) => {
2202
- for (const u of a) d(u, Gr(u, f, s, i));
2203
- }, y = (f) => {
2204
- for (const u of a) d(u, Wr(u, f, s, i));
2205
- }, _ = (f) => a.reduce((u, E) => E.metric === f ? Math.max(u, E.attempt) : u, 0) + 1, A = (f) => a.some((u) => u.metric === f && H(u)), I = (f, u) => {
2206
- const E = o.targets.find((O) => O.metric === f);
2207
- if (!E) return;
2208
- const N = E.minutes * Br;
2309
+ return o !== 0 ? { pauseBits: o } : { pauseBits: o, state: "running", dueAt: Me(n, e.remainingMs, r) };
2310
+ }
2311
+ function Wa({ event: e, at: t, now: n, clocks: r, profile: o }) {
2312
+ const i = ke(o), s = Math.min(t, n), a = r.map((p) => ({ ...p })), l = [], u = (p, f) => {
2313
+ f && (l.push({ op: "patch", clockId: p.id, patch: f }), Object.assign(p, f));
2314
+ }, d = (p) => {
2315
+ for (const f of a)
2316
+ f.metric === p && u(f, Xr(f, s));
2317
+ }, c = (p) => {
2318
+ for (const f of a)
2319
+ p.includes(f.metric) && u(f, tt(f));
2320
+ }, h = (p) => {
2321
+ for (const f of a) u(f, zr(f, p, s, i));
2322
+ }, m = (p) => {
2323
+ for (const f of a) u(f, Yr(f, p, s, i));
2324
+ }, E = (p) => a.reduce((f, S) => S.metric === p ? Math.max(f, S.attempt) : f, 0) + 1, g = (p) => a.some((f) => f.metric === p && W(f)), T = (p, f) => {
2325
+ const S = o.targets.find((O) => O.metric === p);
2326
+ if (!S) return;
2327
+ const N = S.minutes * Gr;
2209
2328
  l.push({
2210
2329
  op: "start",
2211
- metric: f,
2212
- attempt: _(f),
2213
- startedAt: u,
2330
+ metric: p,
2331
+ attempt: E(p),
2332
+ startedAt: f,
2214
2333
  targetMs: N,
2215
- dueAt: _e(u, N, i)
2334
+ dueAt: Me(f, N, i)
2216
2335
  });
2217
2336
  };
2218
2337
  switch (e) {
2219
2338
  case "apply": {
2220
- for (const f of a)
2221
- f.profileId !== o.id && d(f, Je(f));
2222
- for (const f of o.targets) {
2223
- if (f.metric === "next_response") continue;
2339
+ for (const p of a)
2340
+ p.profileId !== o.id && u(p, tt(p));
2341
+ for (const p of o.targets) {
2342
+ if (p.metric === "next_response") continue;
2224
2343
  a.some(
2225
- (E) => E.metric === f.metric && E.profileId === o.id
2226
- ) || I(f.metric, s);
2344
+ (S) => S.metric === p.metric && S.profileId === o.id
2345
+ ) || T(p.metric, s);
2227
2346
  }
2228
2347
  break;
2229
2348
  }
2230
2349
  case "answered":
2231
- p("speed_of_answer");
2350
+ d("speed_of_answer");
2232
2351
  break;
2233
2352
  case "outbound": {
2234
- p("first_response"), p("next_response"), o.pauseOn.includes("waiting_for_customer") && g(ge);
2353
+ d("first_response"), d("next_response"), o.pauseOn.includes("waiting_for_customer") && h(Ae);
2235
2354
  break;
2236
2355
  }
2237
2356
  case "inbound": {
2238
- y(ge), !A("first_response") && !A("next_response") && I("next_response", s);
2357
+ m(Ae), !g("first_response") && !g("next_response") && T("next_response", s);
2239
2358
  break;
2240
2359
  }
2241
2360
  case "resolved":
2242
- p("resolution");
2361
+ d("resolution");
2243
2362
  break;
2244
2363
  case "closed":
2245
- p("close"), p("resolution"), c(Dt);
2364
+ d("close"), d("resolution"), c(Ut);
2246
2365
  break;
2247
2366
  case "reopened":
2248
- A("resolution") || I("resolution", s), A("close") || I("close", s);
2367
+ g("resolution") || T("resolution", s), g("close") || T("close", s);
2249
2368
  break;
2250
2369
  case "snoozed":
2251
- o.pauseOn.includes("snoozed") && g(he);
2370
+ o.pauseOn.includes("snoozed") && h(be);
2252
2371
  break;
2253
2372
  case "unsnoozed":
2254
- y(he);
2373
+ m(be);
2255
2374
  break;
2256
2375
  case "discarded":
2257
- c(Hr);
2376
+ c(Vr);
2258
2377
  break;
2259
2378
  }
2260
2379
  return l;
2261
2380
  }
2262
- function Vr(e) {
2381
+ function qr(e) {
2263
2382
  return e.state === "running" || e.state === "paused";
2264
2383
  }
2265
- function ye(e, t) {
2266
- const n = Ie(e);
2267
- return e.state === "paused" ? e.remainingMs : t >= e.dueAt ? -me(e.dueAt, t, n) : me(t, e.dueAt, n);
2384
+ function Ee(e, t) {
2385
+ const n = ke(e);
2386
+ return e.state === "paused" ? e.remainingMs : t >= e.dueAt ? -ye(e.dueAt, t, n) : ye(t, e.dueAt, n);
2268
2387
  }
2269
- function Fa(e, t) {
2270
- return e.state === "paused" ? _e(t, e.remainingMs, Ie(e)) : e.dueAt;
2388
+ function Ga(e, t) {
2389
+ return e.state === "paused" ? Me(t, e.remainingMs, ke(e)) : e.dueAt;
2271
2390
  }
2272
- function Ba(e, t) {
2273
- const n = e.filter(Vr);
2391
+ function Va(e, t) {
2392
+ const n = e.filter(qr);
2274
2393
  if (!n.length) return;
2275
2394
  const r = n.filter((i) => i.state === "running");
2276
2395
  return (r.length ? r : n).reduce(
2277
- (i, s) => ye(s, t) < ye(i, t) ? s : i
2396
+ (i, s) => Ee(s, t) < Ee(i, t) ? s : i
2278
2397
  );
2279
2398
  }
2280
- function Ha(e, t) {
2399
+ function Xa(e, t) {
2281
2400
  if (e.state === "missed") return "breached";
2282
2401
  if (e.state === "hit") return "met";
2283
2402
  if (e.state === "paused") return "paused";
2284
2403
  if (e.state === "void") return "met";
2285
- const n = ye(e, t);
2404
+ const n = Ee(e, t);
2286
2405
  return n <= 0 ? "breached" : n <= e.targetMs / 5 ? "urgent" : "running";
2287
2406
  }
2288
- function ja(e) {
2407
+ function za(e) {
2289
2408
  const t = Math.floor(Math.abs(e) / 1e3), n = Math.floor(t / 86400), r = Math.floor(t % 86400 / 3600), o = Math.floor(t % 3600 / 60);
2290
2409
  return n ? r ? `${n}d ${r}u` : `${n}d` : r ? o ? `${r}u ${o}m` : `${r}u` : o ? `${o}m` : `${t % 60}s`;
2291
2410
  }
2292
- const zr = "strategy_item";
2293
- function $t(e) {
2294
- return `${zr}:${e}`;
2411
+ const Jr = "strategy_item";
2412
+ function Kt(e) {
2413
+ return `${Jr}:${e}`;
2295
2414
  }
2296
- function Ga(e, t = 25) {
2297
- const n = /* @__PURE__ */ new Set([$t(e.id)]);
2415
+ function Ya(e, t = 25) {
2416
+ const n = /* @__PURE__ */ new Set([Kt(e.id)]);
2298
2417
  for (const r of e.ancestorKeys ?? []) n.add(r);
2299
2418
  return Array.from(n).slice(0, t);
2300
2419
  }
2301
- function Wa(e) {
2302
- return e ? [...e.ancestorKeys ?? [], $t(e.id)] : [];
2420
+ function qa(e) {
2421
+ return e ? [...e.ancestorKeys ?? [], Kt(e.id)] : [];
2303
2422
  }
2304
- const J = [
2423
+ const Q = [
2305
2424
  { key: "area", label: "level_area", order: 10, measurable: !1, icon: "compass" },
2306
2425
  { key: "objective", label: "level_objective", order: 20, measurable: !0, icon: "target" },
2307
2426
  { key: "key_result", label: "level_key_result", order: 30, measurable: !0, icon: "gauge" }
2308
- ], Yr = 999, Xr = 7;
2309
- function qr(e, t = J) {
2427
+ ], Zr = 999, Qr = 7;
2428
+ function eo(e, t = Q) {
2310
2429
  return t.find((n) => n.key === e);
2311
2430
  }
2312
- function be(e, t = J) {
2313
- return qr(e, t)?.order ?? Yr;
2431
+ function Se(e, t = Q) {
2432
+ return eo(e, t)?.order ?? Zr;
2314
2433
  }
2315
- function Va(e, t, n = J) {
2316
- return be(t, n) <= be(e, n);
2434
+ function Ja(e, t, n = Q) {
2435
+ return Se(t, n) <= Se(e, n);
2317
2436
  }
2318
- function za(e, t = J) {
2319
- const n = be(e, t);
2437
+ function Za(e, t = Q) {
2438
+ const n = Se(e, t);
2320
2439
  return t.filter((o) => o.order > n).sort((o, i) => o.order - i.order)[0]?.key ?? e;
2321
2440
  }
2322
- function Ya(e) {
2441
+ function Qa(e) {
2323
2442
  const t = e.trim().toLowerCase();
2324
2443
  return t ? t.includes("key result") || t.includes("keyresult") || t === "kr" ? "key_result" : t.includes("objective") || t.includes("goal") || t.includes("doel") ? "objective" : t.includes("focus") || t.includes("area") || t.includes("theme") ? "area" : null : null;
2325
2444
  }
2326
- const Ae = {
2445
+ const _e = {
2327
2446
  pending: "open",
2328
2447
  on_track: "open",
2329
2448
  at_risk: "open",
@@ -2332,74 +2451,74 @@ const Ae = {
2332
2451
  achieved: "closed",
2333
2452
  missed: "closed"
2334
2453
  };
2335
- function Xa(e) {
2336
- return Ae[e] ?? "open";
2454
+ function ec(e) {
2455
+ return _e[e] ?? "open";
2337
2456
  }
2338
- function qa(e) {
2339
- return Object.keys(Ae).filter(
2340
- (t) => e.includes(Ae[t])
2457
+ function tc(e) {
2458
+ return Object.keys(_e).filter(
2459
+ (t) => e.includes(_e[t])
2341
2460
  );
2342
2461
  }
2343
- const Jr = 864e5, Z = (e) => e <= 0 ? 0 : e > 1 ? 1 : e;
2344
- function Ja(e, t) {
2462
+ const to = 864e5, ee = (e) => e <= 0 ? 0 : e > 1 ? 1 : e;
2463
+ function nc(e, t) {
2345
2464
  const { direction: n } = e, r = e.startValue ?? 0, o = e.targetValue ?? 0;
2346
2465
  if (!Number.isFinite(t)) return 0;
2347
2466
  const i = n === "down" ? t <= o : t >= o, s = o - r;
2348
- return (n === "down" ? s < 0 : s > 0) ? Z((t - r) / s) : i ? 1 : 0;
2467
+ return (n === "down" ? s < 0 : s > 0) ? ee((t - r) / s) : i ? 1 : 0;
2349
2468
  }
2350
- function Za(e, t) {
2469
+ function rc(e, t) {
2351
2470
  const { startDate: n, targetDate: r } = e;
2352
2471
  if (!(typeof n != "number" || typeof r != "number") && !(r <= n))
2353
- return Z((t - n) / (r - n));
2472
+ return ee((t - n) / (r - n));
2354
2473
  }
2355
- const Zr = 0.1, Qr = 0.25;
2356
- function Qa(e, t) {
2474
+ const no = 0.1, ro = 0.25;
2475
+ function oc(e, t) {
2357
2476
  if (typeof e != "number" || typeof t != "number") return;
2358
2477
  if (e >= 1) return "achieved";
2359
2478
  const n = t - e;
2360
- return n >= Qr ? "off_track" : n >= Zr ? "at_risk" : "on_track";
2479
+ return n >= ro ? "off_track" : n >= no ? "at_risk" : "on_track";
2361
2480
  }
2362
- function ec(e, t) {
2481
+ function ic(e, t) {
2363
2482
  if (t)
2364
- return Z(e / t);
2483
+ return ee(e / t);
2365
2484
  }
2366
- function tc(e) {
2485
+ function sc(e) {
2367
2486
  const t = e.map((n) => n.progress?.ratio).filter((n) => typeof n == "number" && Number.isFinite(n));
2368
2487
  if (t.length)
2369
- return Z(t.reduce((n, r) => n + r, 0) / t.length);
2488
+ return ee(t.reduce((n, r) => n + r, 0) / t.length);
2370
2489
  }
2371
- function nc(e, t) {
2490
+ function ac(e, t) {
2372
2491
  const n = e.lastCheckInAt ?? e.createdAt;
2373
2492
  if (typeof n != "number") return 0;
2374
- const r = (e.checkInEveryDays ?? Xr) * Jr, o = t - n - r;
2493
+ const r = (e.checkInEveryDays ?? Qr) * to, o = t - n - r;
2375
2494
  return o > 0 ? o : 0;
2376
2495
  }
2377
- function rc(e) {
2496
+ function cc(e) {
2378
2497
  return e.targetDate ?? Number.MAX_SAFE_INTEGER;
2379
2498
  }
2380
- function oc(e, t) {
2499
+ function lc(e, t) {
2381
2500
  const n = e.accumulatedSeconds || 0;
2382
2501
  return e.runningSince ? n + Math.max(0, Math.floor((t - e.runningSince) / 1e3)) : n;
2383
2502
  }
2384
- function ic(e, t) {
2503
+ function uc(e, t) {
2385
2504
  const n = Math.max(1, Math.ceil(Math.max(0, e) / 60));
2386
2505
  if (!t || t === "exact") return n * 60;
2387
2506
  const r = Number(t);
2388
2507
  return !Number.isFinite(r) || r <= 0 ? n * 60 : Math.ceil(n / r) * r * 60;
2389
2508
  }
2390
- function sc(e) {
2509
+ function dc(e) {
2391
2510
  const t = Math.max(0, Math.round(e / 60));
2392
2511
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
2393
2512
  }
2394
- function ac(e) {
2513
+ function fc(e) {
2395
2514
  const t = Math.max(0, Math.floor(e)), n = (i) => String(i).padStart(2, "0"), r = Math.floor(t / 60) % 60, o = Math.floor(t / 3600);
2396
2515
  return o > 0 ? `${o}:${n(r)}:${n(t % 60)}` : `${n(r)}:${n(t % 60)}`;
2397
2516
  }
2398
- function eo(e) {
2517
+ function oo(e) {
2399
2518
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 48).replace(/^-+|-+$/g, "");
2400
2519
  }
2401
- function cc(e, t) {
2402
- const n = eo(e) || "werksoort", r = new Set(t);
2520
+ function pc(e, t) {
2521
+ const n = oo(e) || "werksoort", r = new Set(t);
2403
2522
  if (!r.has(n)) return n;
2404
2523
  for (let o = 2; o < 500; o++) {
2405
2524
  const i = `${n}-${o}`;
@@ -2407,82 +2526,82 @@ function cc(e, t) {
2407
2526
  }
2408
2527
  return `${n}-${r.size + 1}`;
2409
2528
  }
2410
- function lc(e, t) {
2529
+ function mc(e, t) {
2411
2530
  const n = e.ownerScope;
2412
2531
  return !n || n.kind === "org" ? !0 : t.includes(n.teamId);
2413
2532
  }
2414
- function uc(e) {
2415
- return e.filter((t) => !t.archived).sort(to);
2533
+ function hc(e) {
2534
+ return e.filter((t) => !t.archived).sort(io);
2416
2535
  }
2417
- function to(e, t) {
2536
+ function io(e, t) {
2418
2537
  const n = (e.order ?? 0) - (t.order ?? 0);
2419
2538
  return n !== 0 ? n : (e.label || "").localeCompare(t.label || "");
2420
2539
  }
2421
- const no = 20, ro = 20, ie = 300;
2422
- function D(e) {
2540
+ const so = 20, ao = 20, ae = 300;
2541
+ function $(e) {
2423
2542
  return e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, " ").replace(/\s+/g, " ").trim();
2424
2543
  }
2425
- function oo(e) {
2544
+ function co(e) {
2426
2545
  const t = e.replace(/\s+/g, " ").trim();
2427
- if (t.length <= ie) return t;
2428
- const n = t.slice(0, ie), r = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
2429
- return r > ie * 0.6 ? n.slice(0, r + 1) : `${n.trimEnd()}…`;
2430
- }
2431
- function dc(e, t) {
2432
- const n = oo(t.text), r = D(n);
2433
- if (!r || (e.examples ?? []).some((s) => D(s) === r)) return null;
2434
- const o = e.exampleCandidates ?? [], i = o.findIndex((s) => D(s.text) === r);
2546
+ if (t.length <= ae) return t;
2547
+ const n = t.slice(0, ae), r = Math.max(n.lastIndexOf(". "), n.lastIndexOf("! "), n.lastIndexOf("? "));
2548
+ return r > ae * 0.6 ? n.slice(0, r + 1) : `${n.trimEnd()}…`;
2549
+ }
2550
+ function gc(e, t) {
2551
+ const n = co(t.text), r = $(n);
2552
+ if (!r || (e.examples ?? []).some((s) => $(s) === r)) return null;
2553
+ const o = e.exampleCandidates ?? [], i = o.findIndex((s) => $(s.text) === r);
2435
2554
  if (i >= 0) {
2436
2555
  if (o[i].corrected || !t.corrected) return null;
2437
2556
  const s = [...o];
2438
- return s[i] = { ...s[i], corrected: !0, addedAt: t.addedAt }, Ze(s);
2557
+ return s[i] = { ...s[i], corrected: !0, addedAt: t.addedAt }, nt(s);
2439
2558
  }
2440
- return Ze([{ ...t, text: n }, ...o]).slice(0, ro);
2559
+ return nt([{ ...t, text: n }, ...o]).slice(0, ao);
2441
2560
  }
2442
- function Ze(e) {
2561
+ function nt(e) {
2443
2562
  return [...e].sort(
2444
2563
  (t, n) => Number(n.corrected) - Number(t.corrected) || n.addedAt - t.addedAt
2445
2564
  );
2446
2565
  }
2447
- function fc(e, t) {
2448
- const n = D(t), r = (e.examples ?? []).filter((i) => i.trim());
2449
- return { examples: r.some((i) => D(i) === n) ? r : [...r, t].slice(-no), exampleCandidates: io(e, t) };
2566
+ function yc(e, t) {
2567
+ const n = $(t), r = (e.examples ?? []).filter((i) => i.trim());
2568
+ return { examples: r.some((i) => $(i) === n) ? r : [...r, t].slice(-so), exampleCandidates: lo(e, t) };
2450
2569
  }
2451
- function io(e, t) {
2452
- const n = D(t);
2453
- return (e.exampleCandidates ?? []).filter((r) => D(r.text) !== n);
2570
+ function lo(e, t) {
2571
+ const n = $(t);
2572
+ return (e.exampleCandidates ?? []).filter((r) => $(r.text) !== n);
2454
2573
  }
2455
- function so(e, t) {
2574
+ function uo(e, t) {
2456
2575
  const n = e.ownerScope;
2457
2576
  return n ? n.kind === "org" ? !0 : n.kind === "team" ? !!t && n.teamId === t : !1 : !1;
2458
2577
  }
2459
- function pc(e, t) {
2460
- return e.filter((n) => so(n, t));
2578
+ function bc(e, t) {
2579
+ return e.filter((n) => uo(n, t));
2461
2580
  }
2462
- function mc(e) {
2581
+ function Ac(e) {
2463
2582
  return e.type === "agent";
2464
2583
  }
2465
- const hc = "WORK_COMMENT_ADDED", gc = "WORK_ITEM_ASSIGNED", yc = "WORK_ITEM_STATUS_CHANGED";
2466
- function ao(e, t) {
2584
+ const Ec = "WORK_COMMENT_ADDED", Sc = "WORK_ITEM_ASSIGNED", _c = "WORK_ITEM_STATUS_CHANGED";
2585
+ function fo(e, t) {
2467
2586
  const n = (r) => {
2468
2587
  const o = new Date(r);
2469
2588
  return o.setHours(0, 0, 0, 0), o.getTime();
2470
2589
  };
2471
- return Math.round((n(e) - n(t)) / wn);
2590
+ return Math.round((n(e) - n(t)) / Cn);
2472
2591
  }
2473
- function bc(e, t) {
2474
- if (e.closedAt != null) return { score: R, reasons: [] };
2592
+ function Tc(e, t) {
2593
+ if (e.closedAt != null) return { score: D, reasons: [] };
2475
2594
  const n = t.remindersById?.[e.id];
2476
- if (n && n.remindAt > t.now) return { score: R, reasons: [] };
2595
+ if (n && n.remindAt > t.now) return { score: D, reasons: [] };
2477
2596
  let r = 0;
2478
2597
  const o = [], i = e.priority ?? "normal";
2479
- if (z[i] > 0 && (r += z[i], o.push(`priority:${i}`)), typeof e.dueDate == "number") {
2480
- const s = ao(e.dueDate, t.now);
2598
+ if (q[i] > 0 && (r += q[i], o.push(`priority:${i}`)), typeof e.dueDate == "number") {
2599
+ const s = fo(e.dueDate, t.now);
2481
2600
  s < 0 ? (r += 35, o.push("overdue")) : s === 0 && (r += 20, o.push("due-today"));
2482
2601
  }
2483
2602
  return e.source?.initiator === "system" && e.source.systemReason && (r += 15, o.push(`auto:${e.source.systemReason}`)), { score: r, reasons: o };
2484
2603
  }
2485
- const Te = [
2604
+ const ve = [
2486
2605
  { key: "task", label: "type_task" },
2487
2606
  { key: "bug", label: "type_bug" },
2488
2607
  { key: "story", label: "type_story" },
@@ -2490,35 +2609,35 @@ const Te = [
2490
2609
  { key: "subtask", label: "type_subtask" },
2491
2610
  { key: "case", label: "type_case" },
2492
2611
  { key: "deal", label: "type_deal" }
2493
- ], Ac = Te.map((e) => e.key);
2494
- function Ec(e) {
2495
- return e?.types?.length ? e.types : Te;
2612
+ ], Ic = ve.map((e) => e.key);
2613
+ function wc(e) {
2614
+ return e?.types?.length ? e.types : ve;
2496
2615
  }
2497
- function Sc(e, t) {
2616
+ function Mc(e, t) {
2498
2617
  return t.find((n) => n.key === e);
2499
2618
  }
2500
- function _c(e) {
2619
+ function kc(e) {
2501
2620
  const t = e.trim().toLowerCase();
2502
2621
  return t ? t.includes("sub-task") || t.includes("subtask") || t.includes("sub task") ? "subtask" : t.includes("bug") || t.includes("defect") ? "bug" : t.includes("epic") ? "epic" : t.includes("story") ? "story" : t.includes("incident") || t.includes("problem") || t.includes("service request") || t.includes("change") ? "case" : t.includes("task") ? "task" : null : null;
2503
2622
  }
2504
- function Ic(...e) {
2505
- return e.map((t) => Te.find((n) => n.key === t)).filter((t) => !!t);
2623
+ function vc(...e) {
2624
+ return e.map((t) => ve.find((n) => n.key === t)).filter((t) => !!t);
2506
2625
  }
2507
- const co = "work_item", lo = "work_project", uo = "work_activity", Tc = "work_cycle";
2508
- function fo(e) {
2509
- return `${co}:${e}`;
2626
+ const po = "work_item", mo = "work_project", ho = "work_activity", Oc = "work_cycle";
2627
+ function go(e) {
2628
+ return `${po}:${e}`;
2510
2629
  }
2511
- function Lt(e) {
2512
- return `${lo}:${e}`;
2630
+ function Ft(e) {
2631
+ return `${mo}:${e}`;
2513
2632
  }
2514
- function wc(e) {
2515
- return `${uo}:${e}`;
2633
+ function Cc(e) {
2634
+ return `${ho}:${e}`;
2516
2635
  }
2517
- function Mc(e, t, n) {
2636
+ function Nc(e, t, n) {
2518
2637
  const r = `${e}-${t}`;
2519
2638
  return n ? `${r}-${n}` : r;
2520
2639
  }
2521
- function kc(e) {
2640
+ function xc(e) {
2522
2641
  const t = /^([A-Za-z0-9]{2,8})-(\d+)(?:-(\d+))?$/.exec((e || "").trim());
2523
2642
  return t ? {
2524
2643
  projectKey: t[1].toUpperCase(),
@@ -2526,52 +2645,52 @@ function kc(e) {
2526
2645
  ...t[3] ? { subSequence: Number(t[3]) } : {}
2527
2646
  } : null;
2528
2647
  }
2529
- function vc(e) {
2648
+ function Rc(e) {
2530
2649
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toUpperCase().replace(/[^A-Z0-9]/g, "").slice(0, 3) || "PRJ";
2531
2650
  }
2532
- function Oc(e, t = 25) {
2533
- const n = /* @__PURE__ */ new Set([fo(e.id)]);
2534
- e.projectId && n.add(Lt(e.projectId));
2651
+ function Dc(e, t = 25) {
2652
+ const n = /* @__PURE__ */ new Set([go(e.id)]);
2653
+ e.projectId && n.add(Ft(e.projectId));
2535
2654
  for (const r of e.ancestorKeys ?? []) n.add(r);
2536
2655
  for (const r of e.partyKeys ?? []) n.add(r);
2537
2656
  return Array.from(n).slice(0, t);
2538
2657
  }
2539
- function Cc(e) {
2540
- return [Lt(e.id)];
2658
+ function $c(e) {
2659
+ return [Ft(e.id)];
2541
2660
  }
2542
- const we = [
2661
+ const Oe = [
2543
2662
  { key: "open", label: "status_open", category: "todo", order: 0 },
2544
2663
  { key: "in_progress", label: "status_in_progress", category: "in_progress", order: 1 },
2545
2664
  { key: "done", label: "status_done", category: "done", order: 2 },
2546
2665
  { key: "cancelled", label: "status_cancelled", category: "done", order: 3 }
2547
- ], Pt = we.map((e) => e.key);
2548
- function po(e) {
2549
- return e?.statuses?.length ? e.statuses : we;
2666
+ ], Bt = Oe.map((e) => e.key);
2667
+ function yo(e) {
2668
+ return e?.statuses?.length ? e.statuses : Oe;
2550
2669
  }
2551
- function mo(e, t) {
2670
+ function bo(e, t) {
2552
2671
  return t.find((n) => n.key === e)?.category ?? "todo";
2553
2672
  }
2554
- function Nc(e, t) {
2673
+ function Lc(e, t) {
2555
2674
  return t.find((n) => n.key === e);
2556
2675
  }
2557
- function xc(e) {
2558
- const t = po(e), n = e?.defaultStatusKey;
2559
- return n && t.some((r) => r.key === n) ? n : ho(t)[0]?.key ?? we[0].key;
2676
+ function Pc(e) {
2677
+ const t = yo(e), n = e?.defaultStatusKey;
2678
+ return n && t.some((r) => r.key === n) ? n : Ao(t)[0]?.key ?? Oe[0].key;
2560
2679
  }
2561
- function ho(e) {
2680
+ function Ao(e) {
2562
2681
  return [...e].sort((t, n) => {
2563
2682
  const r = (t.order ?? 0) - (n.order ?? 0);
2564
2683
  return r !== 0 ? r : (t.label || "").localeCompare(n.label || "");
2565
2684
  });
2566
2685
  }
2567
- function Rc(e, t) {
2568
- return mo(e, t) === "done";
2686
+ function Uc(e, t) {
2687
+ return bo(e, t) === "done";
2569
2688
  }
2570
- function go(e) {
2689
+ function Eo(e) {
2571
2690
  return (e || "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").slice(0, 48).replace(/^-+|-+$/g, "");
2572
2691
  }
2573
- function Dc(e, t) {
2574
- const n = go(e) || "status", r = /* @__PURE__ */ new Set([...t, ...Pt]);
2692
+ function Kc(e, t) {
2693
+ const n = Eo(e) || "status", r = /* @__PURE__ */ new Set([...t, ...Bt]);
2575
2694
  if (!r.has(n)) return n;
2576
2695
  for (let o = 2; o < 500; o++) {
2577
2696
  const i = `${n}-${o}`;
@@ -2579,7 +2698,7 @@ function Dc(e, t) {
2579
2698
  }
2580
2699
  return `${n}-${r.size + 1}`;
2581
2700
  }
2582
- function $c(e) {
2701
+ function Fc(e) {
2583
2702
  const t = [];
2584
2703
  if (!e.length) return [{ index: -1, reason: "empty" }];
2585
2704
  const n = /* @__PURE__ */ new Set();
@@ -2588,16 +2707,16 @@ function $c(e) {
2588
2707
  t.push({ index: o, reason: "missing_key" });
2589
2708
  return;
2590
2709
  }
2591
- Pt.includes(r.key) && t.push({ index: o, reason: "reserved_key", key: r.key }), n.has(r.key) && t.push({ index: o, reason: "duplicate_key", key: r.key }), n.add(r.key);
2710
+ Bt.includes(r.key) && t.push({ index: o, reason: "reserved_key", key: r.key }), n.has(r.key) && t.push({ index: o, reason: "duplicate_key", key: r.key }), n.add(r.key);
2592
2711
  }), 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;
2593
2712
  }
2594
- function Lc(e) {
2713
+ function Bc(e) {
2595
2714
  return e.startDate ?? Number.MAX_SAFE_INTEGER;
2596
2715
  }
2597
- function Pc(e) {
2716
+ function Hc(e) {
2598
2717
  return e.completedAt ? "completed" : e.startedAt ? "active" : "planned";
2599
2718
  }
2600
- const yo = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), bo = /* @__PURE__ */ new Set([
2719
+ const So = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "image/gif", "image/webp"]), _o = /* @__PURE__ */ new Set([
2601
2720
  "text/plain",
2602
2721
  "text/markdown",
2603
2722
  "text/csv",
@@ -2606,67 +2725,67 @@ const yo = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/jpg", "ima
2606
2725
  "application/xml",
2607
2726
  "text/xml"
2608
2727
  ]);
2609
- function Ao(e) {
2728
+ function To(e) {
2610
2729
  const t = (e ?? "").trim().toLowerCase().split(";")[0];
2611
- return t ? yo.has(t) ? "image" : t === "application/pdf" ? "pdf" : bo.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
2612
- }
2613
- const P = 1024 * 1024, Eo = {
2614
- image: 5 * P,
2615
- pdf: 20 * P,
2616
- text: 1 * P,
2617
- audio: 20 * P
2618
- }, Uc = 25 * P, Kc = 5;
2619
- function Fc(e, t) {
2620
- const n = Ao(e);
2621
- return n === "unsupported" ? "unsupported" : t > Eo[n] ? "too-large" : null;
2622
- }
2623
- function Bc(e) {
2730
+ return t ? So.has(t) ? "image" : t === "application/pdf" ? "pdf" : _o.has(t) ? "text" : t.startsWith("audio/") ? "audio" : "unsupported" : "unsupported";
2731
+ }
2732
+ const U = 1024 * 1024, Io = {
2733
+ image: 5 * U,
2734
+ pdf: 20 * U,
2735
+ text: 1 * U,
2736
+ audio: 20 * U
2737
+ }, jc = 25 * U, Wc = 5;
2738
+ function Gc(e, t) {
2739
+ const n = To(e);
2740
+ return n === "unsupported" ? "unsupported" : t > Io[n] ? "too-large" : null;
2741
+ }
2742
+ function Vc(e) {
2624
2743
  return e.access !== "read" && e.effect !== "internal";
2625
2744
  }
2626
- function So(e) {
2745
+ function wo(e) {
2627
2746
  return `${e.kind}:${e.id || e.url || e.title}`;
2628
2747
  }
2629
- function Hc(e, t = []) {
2748
+ function Xc(e, t = []) {
2630
2749
  const n = new Set(t), r = [], o = [];
2631
2750
  for (const i of e) {
2632
- const s = So(i);
2751
+ const s = wo(i);
2633
2752
  n.has(s) || (n.add(s), r.push(i), o.push(s));
2634
2753
  }
2635
2754
  return { sources: r, keys: o };
2636
2755
  }
2637
- const jc = "assist-source", Gc = ["blocking", "due", "open"];
2638
- function Wc(e, t) {
2756
+ const zc = "assist-source", Yc = ["blocking", "due", "open"];
2757
+ function qc(e, t) {
2639
2758
  const [n, r] = (e.subjectKey ?? "").split(":");
2640
2759
  return n === t && r ? r : void 0;
2641
2760
  }
2642
- const Qe = { blocking: 0, due: 1, open: 2 };
2643
- function Vc(e, t) {
2644
- return Qe[e.band ?? "open"] - Qe[t.band ?? "open"] || (t.priority ?? 0) - (e.priority ?? 0) || e.id.localeCompare(t.id);
2761
+ const rt = { blocking: 0, due: 1, open: 2 };
2762
+ function Jc(e, t) {
2763
+ return rt[e.band ?? "open"] - rt[t.band ?? "open"] || (t.priority ?? 0) - (e.priority ?? 0) || e.id.localeCompare(t.id);
2645
2764
  }
2646
- function zc(e) {
2765
+ function Zc(e) {
2647
2766
  return e.sessions.filter(
2648
2767
  (t) => t.id !== e.exceptSessionId && t.state === "connected" && e.canHold(t.providerId)
2649
2768
  );
2650
2769
  }
2651
- function Yc(e) {
2770
+ function Qc(e) {
2652
2771
  return e.sessions.filter(
2653
2772
  (t) => t.id !== e.exceptSessionId && t.state === "connected" && !e.canHold(t.providerId)
2654
2773
  );
2655
2774
  }
2656
- function Xc(e) {
2775
+ function el(e) {
2657
2776
  return e.sessions.some(
2658
2777
  (n) => n.id !== e.exceptSessionId && (n.state === "connected" || n.state === "on_hold")
2659
2778
  ) ? { admit: !1, reason: "busy" } : { admit: !0 };
2660
2779
  }
2661
- function _o(e, t) {
2662
- const n = new Set(e.disabledIntents ?? []), r = e.intentOverrides ?? {}, o = t.intents.filter((s) => !n.has(s.intent)).map((s) => To(s, r[s.intent]));
2780
+ function Mo(e, t) {
2781
+ const n = new Set(e.disabledIntents ?? []), r = e.intentOverrides ?? {}, o = t.intents.filter((s) => !n.has(s.intent)).map((s) => vo(s, r[s.intent]));
2663
2782
  if (!e.extraIntents || e.extraIntents.length === 0) return o;
2664
2783
  const i = new Set(o.map((s) => s.intent));
2665
2784
  for (const s of e.extraIntents)
2666
2785
  i.has(s.intent) || (o.push(s), i.add(s.intent));
2667
2786
  return o;
2668
2787
  }
2669
- function Io(e, t) {
2788
+ function ko(e, t) {
2670
2789
  const n = {};
2671
2790
  for (const r of e.intents) {
2672
2791
  if (!r.togglable) continue;
@@ -2675,46 +2794,46 @@ function Io(e, t) {
2675
2794
  }
2676
2795
  return n;
2677
2796
  }
2678
- function qc(e, t) {
2679
- const n = Io(e, t);
2797
+ function tl(e, t) {
2798
+ const n = ko(e, t);
2680
2799
  return Object.entries(n).filter(([, r]) => !r).map(([r]) => r);
2681
2800
  }
2682
- function To(e, t) {
2801
+ function vo(e, t) {
2683
2802
  return t ? {
2684
2803
  intent: t.intent ?? e.intent,
2685
2804
  targetSchemes: t.targetSchemes ?? e.targetSchemes,
2686
2805
  transport: t.transport ?? e.transport
2687
2806
  } : e;
2688
2807
  }
2689
- function Jc(e, t) {
2808
+ function nl(e, t) {
2690
2809
  const n = [];
2691
2810
  for (const r of e) {
2692
2811
  if (!r.enabled) continue;
2693
2812
  const o = t[r.providerId];
2694
2813
  if (o)
2695
- for (const i of _o(r, o))
2814
+ for (const i of Mo(r, o))
2696
2815
  n.push({ channel: r, description: o, capability: i });
2697
2816
  }
2698
2817
  return n;
2699
2818
  }
2700
- function Zc(e, t) {
2819
+ function rl(e, t) {
2701
2820
  return t.filter((n) => n.capability.intent === e);
2702
2821
  }
2703
- function wo(e, t) {
2822
+ function Oo(e, t) {
2704
2823
  return t.filter((n) => n.capability.targetSchemes.includes(e));
2705
2824
  }
2706
- function Qc(e, t) {
2707
- return wo(e.scheme, t);
2825
+ function ol(e, t) {
2826
+ return Oo(e.scheme, t);
2708
2827
  }
2709
- function el(e, t, n) {
2828
+ function il(e, t, n) {
2710
2829
  const r = [];
2711
2830
  for (const o of e)
2712
2831
  for (const i of n)
2713
2832
  i.capability.intent === t && i.capability.targetSchemes.includes(o.scheme) && r.push({ channelIntent: i, endpoint: o });
2714
2833
  return r;
2715
2834
  }
2716
- var Mo = /* @__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))(Mo || {});
2717
- const ko = {
2835
+ var Co = /* @__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))(Co || {});
2836
+ const No = {
2718
2837
  mailto: "mail",
2719
2838
  sip: "tel",
2720
2839
  tel: "tel",
@@ -2735,10 +2854,10 @@ const ko = {
2735
2854
  id: "note",
2736
2855
  custom: "note"
2737
2856
  };
2738
- function tl(e) {
2739
- return e ? ko[e] ?? "note" : "note";
2857
+ function sl(e) {
2858
+ return e ? No[e] ?? "note" : "note";
2740
2859
  }
2741
- const nl = "message_window", rl = "message_templates", ol = {
2860
+ const al = "message_window", cl = "message_templates", ll = {
2742
2861
  // E-mail
2743
2862
  FROM: "from",
2744
2863
  TO: "to",
@@ -2755,12 +2874,12 @@ const nl = "message_window", rl = "message_templates", ol = {
2755
2874
  // Voice/conference
2756
2875
  HOST: "host",
2757
2876
  PARTICIPANT: "participant"
2758
- }, il = (e, t) => ({ intent: e, ...t }), sl = "folder_management", al = "remote_search", cl = "message_reactions", ll = {
2877
+ }, ul = (e, t) => ({ intent: e, ...t }), dl = "folder_management", fl = "remote_search", pl = "message_reactions", ml = {
2759
2878
  ok: !1,
2760
2879
  code: "UNSUPPORTED",
2761
2880
  message: "Provider does not support this op"
2762
- }, ul = "connector", dl = "context.collect", b = (e) => ({ type: "string", description: e }), h = (e) => ({ type: "number", description: e }), W = (e) => ({ type: "boolean", description: e }), v = b("Sheet name. Omit for the sheet the user is looking at."), et = b("Slide id, as `inspect` reports it.");
2763
- function m(e, t, n, r, o, i) {
2881
+ }, hl = "connector", gl = "context.collect", A = (e) => ({ type: "string", description: e }), b = (e) => ({ type: "number", description: e }), z = (e) => ({ type: "boolean", description: e }), v = A("Sheet name. Omit for the sheet the user is looking at."), ot = A("Slide id, as `inspect` reports it.");
2882
+ function y(e, t, n, r, o, i) {
2764
2883
  return {
2765
2884
  op: e,
2766
2885
  kinds: t,
@@ -2770,24 +2889,24 @@ function m(e, t, n, r, o, i) {
2770
2889
  visible: i.visible
2771
2890
  };
2772
2891
  }
2773
- const U = { undoable: !1, visible: !0 }, S = { undoable: !0, visible: !0 }, tt = { undoable: !1, visible: !0 }, X = { undoable: !1, visible: !1 }, vo = [
2774
- m(
2892
+ const K = { undoable: !1, visible: !0 }, _ = { undoable: !0, visible: !0 }, it = { undoable: !1, visible: !0 }, J = { undoable: !1, visible: !1 }, xo = [
2893
+ y(
2775
2894
  "pdf.goToPage",
2776
2895
  ["pdf"],
2777
2896
  "Scroll the viewer to a page.",
2778
- { page: h("1-based page number.") },
2897
+ { page: b("1-based page number.") },
2779
2898
  ["page"],
2780
- U
2899
+ K
2781
2900
  ),
2782
- m(
2901
+ y(
2783
2902
  "pdf.search",
2784
2903
  ["pdf"],
2785
2904
  "Search the document and highlight the matches, as the find bar does.",
2786
- { query: b("Text to find."), next: W("Jump to the next match instead of the first.") },
2905
+ { query: A("Text to find."), next: z("Jump to the next match instead of the first.") },
2787
2906
  ["query"],
2788
- U
2907
+ K
2789
2908
  ),
2790
- m(
2909
+ y(
2791
2910
  "pdf.setTool",
2792
2911
  ["pdf"],
2793
2912
  "Select a markup tool for the user, so their next click draws it.",
@@ -2799,23 +2918,23 @@ const U = { undoable: !1, visible: !0 }, S = { undoable: !0, visible: !0 }, tt =
2799
2918
  }
2800
2919
  },
2801
2920
  ["tool"],
2802
- U
2921
+ K
2803
2922
  ),
2804
- m(
2923
+ y(
2805
2924
  "pdf.fillField",
2806
2925
  ["pdf"],
2807
2926
  "Fill one form field of a fillable PDF.",
2808
2927
  {
2809
- field: b("Field name, exactly as `inspect` reports it under `fields`."),
2928
+ field: A("Field name, exactly as `inspect` reports it under `fields`."),
2810
2929
  value: {
2811
2930
  type: ["string", "boolean"],
2812
2931
  description: "Text for a text field, true/false for a checkbox or radio."
2813
2932
  }
2814
2933
  },
2815
2934
  ["field", "value"],
2816
- S
2935
+ _
2817
2936
  ),
2818
- m(
2937
+ y(
2819
2938
  "pdf.reorderPages",
2820
2939
  ["pdf"],
2821
2940
  "Put the pages in a different order. Pages left out are deleted.",
@@ -2827,52 +2946,52 @@ const U = { undoable: !1, visible: !0 }, S = { undoable: !0, visible: !0 }, tt =
2827
2946
  }
2828
2947
  },
2829
2948
  ["order"],
2830
- tt
2949
+ it
2831
2950
  ),
2832
- m(
2951
+ y(
2833
2952
  "pdf.deletePages",
2834
2953
  ["pdf"],
2835
2954
  "Remove pages, keeping the rest in order.",
2836
2955
  { pages: { type: "array", items: { type: "number" }, description: "1-based page numbers." } },
2837
2956
  ["pages"],
2838
- tt
2957
+ it
2839
2958
  ),
2840
- m(
2959
+ y(
2841
2960
  "pdf.addNote",
2842
2961
  ["pdf"],
2843
2962
  "Place a text note on a page. Written on save; not visible before that.",
2844
2963
  {
2845
- page: h("1-based page number."),
2846
- text: b("The note's text."),
2847
- left: h("Distance from the left edge, in PDF points (72 per inch)."),
2848
- top: h("Distance from the top edge, in PDF points."),
2849
- width: h("Box width in points. Omit for a sensible default."),
2850
- height: h("Box height in points. Omit for a sensible default."),
2851
- fontSize: h("Font size in points. Omit for 12.")
2964
+ page: b("1-based page number."),
2965
+ text: A("The note's text."),
2966
+ left: b("Distance from the left edge, in PDF points (72 per inch)."),
2967
+ top: b("Distance from the top edge, in PDF points."),
2968
+ width: b("Box width in points. Omit for a sensible default."),
2969
+ height: b("Box height in points. Omit for a sensible default."),
2970
+ fontSize: b("Font size in points. Omit for 12.")
2852
2971
  },
2853
2972
  ["page", "text", "left", "top"],
2854
- X
2973
+ J
2855
2974
  ),
2856
- m(
2975
+ y(
2857
2976
  "pdf.highlightText",
2858
2977
  ["pdf"],
2859
2978
  "Highlight a phrase on a page. Written on save; not visible before that.",
2860
2979
  {
2861
- page: h("1-based page number."),
2862
- text: b("The exact phrase to highlight, as it appears in the page's text."),
2863
- occurrence: h("Which occurrence on that page, 1-based. Omit for the first.")
2980
+ page: b("1-based page number."),
2981
+ text: A("The exact phrase to highlight, as it appears in the page's text."),
2982
+ occurrence: b("Which occurrence on that page, 1-based. Omit for the first.")
2864
2983
  },
2865
2984
  ["page", "text"],
2866
- X
2985
+ J
2867
2986
  )
2868
- ], Oo = [
2869
- m(
2987
+ ], Ro = [
2988
+ y(
2870
2989
  "sheet.setValues",
2871
2990
  ["sheet"],
2872
2991
  "Write a block of values. The block's shape must match the range.",
2873
2992
  {
2874
2993
  sheet: v,
2875
- range: b("A1 notation, e.g. `B2:D5` or a single `A1`."),
2994
+ range: A("A1 notation, e.g. `B2:D5` or a single `A1`."),
2876
2995
  values: {
2877
2996
  type: "array",
2878
2997
  items: { type: "array", items: { type: ["string", "number", "boolean", "null"] } },
@@ -2880,261 +2999,261 @@ const U = { undoable: !1, visible: !0 }, S = { undoable: !0, visible: !0 }, tt =
2880
2999
  }
2881
3000
  },
2882
3001
  ["range", "values"],
2883
- S
3002
+ _
2884
3003
  ),
2885
- m(
3004
+ y(
2886
3005
  "sheet.setFormula",
2887
3006
  ["sheet"],
2888
3007
  "Put a formula in every cell of a range.",
2889
- { sheet: v, range: b("A1 notation."), formula: b("Including the leading `=`.") },
3008
+ { sheet: v, range: A("A1 notation."), formula: A("Including the leading `=`.") },
2890
3009
  ["range", "formula"],
2891
- S
3010
+ _
2892
3011
  ),
2893
- m(
3012
+ y(
2894
3013
  "sheet.setStyle",
2895
3014
  ["sheet"],
2896
3015
  "Change the look of a range. Only the properties you pass are touched.",
2897
3016
  {
2898
3017
  sheet: v,
2899
- range: b("A1 notation."),
2900
- bold: W("Bold on or off."),
2901
- italic: W("Italic on or off."),
2902
- fontSize: h("Point size."),
2903
- fontColor: b("CSS colour, e.g. `#b91c1c`."),
2904
- background: b("CSS colour for the cell fill."),
3018
+ range: A("A1 notation."),
3019
+ bold: z("Bold on or off."),
3020
+ italic: z("Italic on or off."),
3021
+ fontSize: b("Point size."),
3022
+ fontColor: A("CSS colour, e.g. `#b91c1c`."),
3023
+ background: A("CSS colour for the cell fill."),
2905
3024
  horizontalAlignment: {
2906
3025
  type: "string",
2907
3026
  enum: ["left", "center", "right"],
2908
3027
  description: "Horizontal alignment."
2909
3028
  },
2910
- numberFormat: b("Number format pattern, e.g. `#,##0.00` or `0%`.")
3029
+ numberFormat: A("Number format pattern, e.g. `#,##0.00` or `0%`.")
2911
3030
  },
2912
3031
  ["range"],
2913
- S
3032
+ _
2914
3033
  ),
2915
- m(
3034
+ y(
2916
3035
  "sheet.insertRows",
2917
3036
  ["sheet"],
2918
3037
  "Insert empty rows, pushing the rest down.",
2919
3038
  {
2920
3039
  sheet: v,
2921
- at: h("1-based row number to insert before."),
2922
- count: h("How many. Omit for 1.")
3040
+ at: b("1-based row number to insert before."),
3041
+ count: b("How many. Omit for 1.")
2923
3042
  },
2924
3043
  ["at"],
2925
- S
3044
+ _
2926
3045
  ),
2927
- m(
3046
+ y(
2928
3047
  "sheet.deleteRows",
2929
3048
  ["sheet"],
2930
3049
  "Delete rows, pulling the rest up.",
2931
- { sheet: v, at: h("1-based first row to delete."), count: h("How many. Omit for 1.") },
3050
+ { sheet: v, at: b("1-based first row to delete."), count: b("How many. Omit for 1.") },
2932
3051
  ["at"],
2933
- S
3052
+ _
2934
3053
  ),
2935
- m(
3054
+ y(
2936
3055
  "sheet.insertColumns",
2937
3056
  ["sheet"],
2938
3057
  "Insert empty columns, pushing the rest right.",
2939
3058
  {
2940
3059
  sheet: v,
2941
- at: h("1-based column number to insert before."),
2942
- count: h("How many. Omit for 1.")
3060
+ at: b("1-based column number to insert before."),
3061
+ count: b("How many. Omit for 1.")
2943
3062
  },
2944
3063
  ["at"],
2945
- S
3064
+ _
2946
3065
  ),
2947
- m(
3066
+ y(
2948
3067
  "sheet.deleteColumns",
2949
3068
  ["sheet"],
2950
3069
  "Delete columns, pulling the rest left.",
2951
3070
  {
2952
3071
  sheet: v,
2953
- at: h("1-based first column to delete."),
2954
- count: h("How many. Omit for 1.")
3072
+ at: b("1-based first column to delete."),
3073
+ count: b("How many. Omit for 1.")
2955
3074
  },
2956
3075
  ["at"],
2957
- S
3076
+ _
2958
3077
  ),
2959
- m(
3078
+ y(
2960
3079
  "sheet.merge",
2961
3080
  ["sheet"],
2962
3081
  "Merge a range into one cell.",
2963
- { sheet: v, range: b("A1 notation.") },
3082
+ { sheet: v, range: A("A1 notation.") },
2964
3083
  ["range"],
2965
- S
3084
+ _
2966
3085
  ),
2967
- m(
3086
+ y(
2968
3087
  "sheet.unmerge",
2969
3088
  ["sheet"],
2970
3089
  "Break merged cells in a range apart.",
2971
- { sheet: v, range: b("A1 notation.") },
3090
+ { sheet: v, range: A("A1 notation.") },
2972
3091
  ["range"],
2973
- S
3092
+ _
2974
3093
  ),
2975
- m(
3094
+ y(
2976
3095
  "sheet.sort",
2977
3096
  ["sheet"],
2978
3097
  "Sort a range on one of its columns.",
2979
3098
  {
2980
3099
  sheet: v,
2981
- range: b("A1 notation covering the rows to sort, header excluded."),
2982
- column: h("1-based column *within the range*, not within the sheet."),
2983
- ascending: W("Ascending. Omit for ascending.")
3100
+ range: A("A1 notation covering the rows to sort, header excluded."),
3101
+ column: b("1-based column *within the range*, not within the sheet."),
3102
+ ascending: z("Ascending. Omit for ascending.")
2984
3103
  },
2985
3104
  ["range", "column"],
2986
- S
3105
+ _
2987
3106
  ),
2988
- m(
3107
+ y(
2989
3108
  "sheet.insertSheet",
2990
3109
  ["sheet"],
2991
3110
  "Add a new sheet.",
2992
- { name: b("Name for the new sheet.") },
3111
+ { name: A("Name for the new sheet.") },
2993
3112
  ["name"],
2994
- S
3113
+ _
2995
3114
  ),
2996
- m(
3115
+ y(
2997
3116
  "sheet.renameSheet",
2998
3117
  ["sheet"],
2999
3118
  "Rename a sheet.",
3000
- { sheet: b("Current name."), name: b("New name.") },
3119
+ { sheet: A("Current name."), name: A("New name.") },
3001
3120
  ["sheet", "name"],
3002
- S
3121
+ _
3003
3122
  ),
3004
- m(
3123
+ y(
3005
3124
  "sheet.deleteSheet",
3006
3125
  ["sheet"],
3007
3126
  "Remove a sheet and everything on it.",
3008
- { sheet: b("Name of the sheet to delete.") },
3127
+ { sheet: A("Name of the sheet to delete.") },
3009
3128
  ["sheet"],
3010
- S
3129
+ _
3011
3130
  ),
3012
- m(
3131
+ y(
3013
3132
  "sheet.activate",
3014
3133
  ["sheet"],
3015
3134
  "Show the user a sheet and select a range on it.",
3016
- { sheet: v, range: b("A1 notation to select. Omit to only switch sheets.") },
3135
+ { sheet: v, range: A("A1 notation to select. Omit to only switch sheets.") },
3017
3136
  [],
3018
- U
3137
+ K
3019
3138
  )
3020
- ], Co = [
3021
- m(
3139
+ ], Do = [
3140
+ y(
3022
3141
  "word.replaceParagraph",
3023
3142
  ["word"],
3024
3143
  "Rewrite one whole paragraph, keeping its style. This is the verb for shortening or rephrasing something; call it once per paragraph.",
3025
3144
  {
3026
- at: h("The offset the paragraph starts at, exactly as `inspect` prints it."),
3027
- text: b("The new text for that paragraph. A newline starts a further paragraph.")
3145
+ at: b("The offset the paragraph starts at, exactly as `inspect` prints it."),
3146
+ text: A("The new text for that paragraph. A newline starts a further paragraph.")
3028
3147
  },
3029
3148
  ["at", "text"],
3030
- S
3149
+ _
3031
3150
  ),
3032
- m(
3151
+ y(
3033
3152
  "word.replaceRange",
3034
3153
  ["word"],
3035
3154
  "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.",
3036
3155
  {
3037
- start: h("Character offset where the replaced text starts, as `inspect` reports offsets."),
3038
- end: h("Character offset just past the last character to replace."),
3039
- text: b("The replacement text. A newline starts a new paragraph.")
3156
+ start: b("Character offset where the replaced text starts, as `inspect` reports offsets."),
3157
+ end: b("Character offset just past the last character to replace."),
3158
+ text: A("The replacement text. A newline starts a new paragraph.")
3040
3159
  },
3041
3160
  ["start", "end", "text"],
3042
- S
3161
+ _
3043
3162
  ),
3044
- m(
3163
+ y(
3045
3164
  "word.insertText",
3046
3165
  ["word"],
3047
3166
  "Insert text at a character offset, without removing anything.",
3048
3167
  {
3049
- index: h("Character offset, as `inspect` reports offsets."),
3050
- text: b("The text to insert.")
3168
+ index: b("Character offset, as `inspect` reports offsets."),
3169
+ text: A("The text to insert.")
3051
3170
  },
3052
3171
  ["index", "text"],
3053
- S
3172
+ _
3054
3173
  ),
3055
- m(
3174
+ y(
3056
3175
  "word.appendText",
3057
3176
  ["word"],
3058
3177
  "Add text at the end of the document.",
3059
- { text: b("The text to append.") },
3178
+ { text: A("The text to append.") },
3060
3179
  ["text"],
3061
- S
3180
+ _
3062
3181
  ),
3063
- m(
3182
+ y(
3064
3183
  "word.insertParagraph",
3065
3184
  ["word"],
3066
3185
  "Start a new paragraph, optionally with text in it.",
3067
3186
  {
3068
- text: b("Paragraph text. Newlines start further paragraphs."),
3069
- index: h("Character offset to insert at. Omit for the end of the document.")
3187
+ text: A("Paragraph text. Newlines start further paragraphs."),
3188
+ index: b("Character offset to insert at. Omit for the end of the document.")
3070
3189
  },
3071
3190
  [],
3072
- S
3191
+ _
3073
3192
  ),
3074
- m(
3193
+ y(
3075
3194
  "word.setSelection",
3076
3195
  ["word"],
3077
3196
  "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.",
3078
- { start: h("Start character offset."), end: h("End character offset. Omit for a caret.") },
3197
+ { start: b("Start character offset."), end: b("End character offset. Omit for a caret.") },
3079
3198
  ["start"],
3080
- U
3199
+ K
3081
3200
  )
3082
- ], No = [
3083
- m(
3201
+ ], $o = [
3202
+ y(
3084
3203
  "slides.setText",
3085
3204
  ["slides"],
3086
3205
  "Replace the text of one shape. Written on save; not visible before that, and not undoable.",
3087
3206
  {
3088
- slide: et,
3089
- element: b("Element id, as `inspect` reports it."),
3090
- text: b("The new text.")
3207
+ slide: ot,
3208
+ element: A("Element id, as `inspect` reports it."),
3209
+ text: A("The new text.")
3091
3210
  },
3092
3211
  ["slide", "element", "text"],
3093
- X
3212
+ J
3094
3213
  ),
3095
- m(
3214
+ y(
3096
3215
  "slides.setTransform",
3097
3216
  ["slides"],
3098
3217
  "Move or resize one shape. Only the values you pass change. Written on save; not visible before that, and not undoable.",
3099
3218
  {
3100
- slide: et,
3101
- element: b("Element id."),
3102
- left: h("Distance from the left edge, in pixels."),
3103
- top: h("Distance from the top edge, in pixels."),
3104
- width: h("Width in pixels."),
3105
- height: h("Height in pixels.")
3219
+ slide: ot,
3220
+ element: A("Element id."),
3221
+ left: b("Distance from the left edge, in pixels."),
3222
+ top: b("Distance from the top edge, in pixels."),
3223
+ width: b("Width in pixels."),
3224
+ height: b("Height in pixels.")
3106
3225
  },
3107
3226
  ["slide", "element"],
3108
- X
3227
+ J
3109
3228
  )
3110
- ], Ut = [
3111
- ...vo,
3112
- ...Oo,
3113
- ...Co,
3114
- ...No
3229
+ ], Ht = [
3230
+ ...xo,
3231
+ ...Ro,
3232
+ ...Do,
3233
+ ...$o
3115
3234
  ];
3116
- function fl(e) {
3117
- return Ut.filter((t) => t.kinds.includes(e));
3235
+ function yl(e) {
3236
+ return Ht.filter((t) => t.kinds.includes(e));
3118
3237
  }
3119
- function pl(e) {
3120
- return Ut.find((t) => t.op === e);
3238
+ function bl(e) {
3239
+ return Ht.find((t) => t.op === e);
3121
3240
  }
3122
- const ml = "documents.describe", hl = "documents.inspect", gl = "documents.apply";
3123
- function yl(e) {
3241
+ const Al = "documents.describe", El = "documents.inspect", Sl = "documents.apply";
3242
+ function _l(e) {
3124
3243
  const t = e.indexOf(":");
3125
3244
  if (t !== -1) return e.slice(0, t);
3126
3245
  const n = e.indexOf(".");
3127
3246
  return n === -1 ? e : e.slice(0, n);
3128
3247
  }
3129
- const bl = "installation-id";
3130
- function Al(e) {
3248
+ const Tl = "installation-id";
3249
+ function Il(e) {
3131
3250
  const t = [];
3132
3251
  for (const n of Object.keys(e))
3133
3252
  for (const r of Object.keys(e[n]))
3134
3253
  t.push({ lang: n, key: r, value: e[n][r] });
3135
3254
  return t;
3136
3255
  }
3137
- const El = "notification-source", Sl = (e, t) => `${e}.pref.${t}`, _l = {
3256
+ const wl = "notification-source", Ml = (e, t) => `${e}.pref.${t}`, kl = {
3138
3257
  ai: [
3139
3258
  "account.read",
3140
3259
  "account.write",
@@ -3269,48 +3388,48 @@ const El = "notification-source", Sl = (e, t) => `${e}.pref.${t}`, _l = {
3269
3388
  time: ["entry.read", "entry.write", "work-type.read", "work-type.write"],
3270
3389
  user: ["user.read", "user.write"],
3271
3390
  work: ["item.read", "item.write", "project.read", "project.write"]
3272
- }, Kt = 9e4, xo = ["out_of_office"], Ft = (e) => xo.includes(e);
3273
- function Il(e, t, n) {
3274
- const r = n - e < Kt, o = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
3391
+ }, jt = 9e4, Lo = ["out_of_office"], Wt = (e) => Lo.includes(e);
3392
+ function vl(e, t, n) {
3393
+ const r = n - e < jt, o = t?.status && (!t.expiresAt || t.expiresAt > n) ? t : void 0;
3275
3394
  if (!o?.status) return { online: r, status: r ? "available" : "offline" };
3276
3395
  const i = o.status;
3277
- return !r && !Ft(i) ? { online: !1, status: "offline" } : { online: r, status: i, message: o.message };
3396
+ return !r && !Wt(i) ? { online: !1, status: "offline" } : { online: r, status: i, message: o.message };
3278
3397
  }
3279
- function Tl(e, t) {
3280
- const n = t - e.lastSeenAt < Kt, r = n || Ft(e.status) ? e.status : "offline";
3398
+ function Ol(e, t) {
3399
+ const n = t - e.lastSeenAt < jt, r = n || Wt(e.status) ? e.status : "offline";
3281
3400
  return n === e.online && r === e.status ? e : { ...e, online: n, status: r };
3282
3401
  }
3283
- function wl(e, t) {
3402
+ function Cl(e, t) {
3284
3403
  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 };
3285
3404
  }
3286
- function Ml(e) {
3405
+ function Nl(e) {
3287
3406
  return e.providerAvailable && e.allowed;
3288
3407
  }
3289
- const kl = "resources.describe", vl = "resources.search", Ol = "resources.resolve", Cl = "resources.attached";
3290
- function Nl(e) {
3408
+ const xl = "resources.describe", Rl = "resources.search", Dl = "resources.resolve", $l = "resources.attached";
3409
+ function Ll(e) {
3291
3410
  const t = e.indexOf(":");
3292
3411
  return t === -1 ? e : e.slice(0, t);
3293
3412
  }
3294
- const xl = "/provider/scope/related", Rl = "/provider/scope/read", Bt = "auth";
3295
- function Ht(e) {
3413
+ const Pl = "/provider/scope/related", Ul = "/provider/scope/read", Gt = "auth";
3414
+ function Vt(e) {
3296
3415
  const t = typeof e == "string" ? e.match(/apps\/([^/?#]+)/) : null;
3297
3416
  return t ? t[1] : null;
3298
3417
  }
3299
- function Dl(e) {
3300
- const t = Ht(e);
3301
- return t ? t !== Bt : typeof e == "string" && e.startsWith("/wake");
3418
+ function Kl(e) {
3419
+ const t = Vt(e);
3420
+ return t ? t !== Gt : typeof e == "string" && e.startsWith("/wake");
3302
3421
  }
3303
- function $l(e) {
3304
- return typeof e != "string" || e === "" || e === "/" ? !0 : Ht(e) === Bt;
3422
+ function Fl(e) {
3423
+ return typeof e != "string" || e === "" || e === "/" ? !0 : Vt(e) === Gt;
3305
3424
  }
3306
- function Ro(e) {
3425
+ function Po(e) {
3307
3426
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3308
3427
  }
3309
- function Do(e) {
3310
- const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : `/${Ro(r)}`).join("");
3428
+ function Uo(e) {
3429
+ const n = e.split("/").filter(Boolean).map((r) => r.startsWith(":") ? r.endsWith("?") ? "(?:/[^/]+)?" : "/[^/]+" : `/${Po(r)}`).join("");
3311
3430
  return new RegExp(`^${n}\\/?$`);
3312
3431
  }
3313
- function $o(e, t) {
3432
+ function Ko(e, t) {
3314
3433
  const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean), o = {};
3315
3434
  return n.forEach((i, s) => {
3316
3435
  if (i.startsWith(":")) {
@@ -3319,14 +3438,14 @@ function $o(e, t) {
3319
3438
  }
3320
3439
  }), o;
3321
3440
  }
3322
- function Lo(e) {
3441
+ function Fo(e) {
3323
3442
  return e.publicBasePath ?? `/apps/${e.name}`;
3324
3443
  }
3325
- function Ll(e) {
3444
+ function Bl(e) {
3326
3445
  const t = [];
3327
3446
  for (const n of e) {
3328
3447
  if (!n?.name) continue;
3329
- const r = Lo(n);
3448
+ const r = Fo(n);
3330
3449
  for (const o of n.routes ?? []) {
3331
3450
  if (!o.public) continue;
3332
3451
  const i = o.path === "/" ? "" : o.path;
@@ -3340,7 +3459,7 @@ function Ll(e) {
3340
3459
  }
3341
3460
  return t;
3342
3461
  }
3343
- function Po(e, t) {
3462
+ function Bo(e, t) {
3344
3463
  const n = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
3345
3464
  for (let o = 0; o < Math.min(n.length, r.length); o++) {
3346
3465
  const i = n[o].startsWith(":"), s = r[o].startsWith(":");
@@ -3348,17 +3467,17 @@ function Po(e, t) {
3348
3467
  }
3349
3468
  return n.length > r.length;
3350
3469
  }
3351
- function Uo(e, t) {
3470
+ function Ho(e, t) {
3352
3471
  if (typeof e != "string") return null;
3353
3472
  let n = null;
3354
3473
  for (const r of t)
3355
- Do(r.pattern).test(e) && (!n || Po(r.pattern, n.pattern)) && (n = r);
3356
- return n ? { ...n, params: { ...n.props, ...$o(n.pattern, e) } } : null;
3474
+ Uo(r.pattern).test(e) && (!n || Bo(r.pattern, n.pattern)) && (n = r);
3475
+ return n ? { ...n, params: { ...n.props, ...Ko(n.pattern, e) } } : null;
3357
3476
  }
3358
- function Pl(e, t) {
3359
- return Uo(e, t) !== null;
3477
+ function Hl(e, t) {
3478
+ return Ho(e, t) !== null;
3360
3479
  }
3361
- const Ul = 10 * 1024 * 1024, Kl = 25 * 1024 * 1024, Fl = "sync-target", Bl = 20, Ko = {
3480
+ const jl = 10 * 1024 * 1024, Wl = 25 * 1024 * 1024, Gl = "sync-target", Vl = 20, jo = {
3362
3481
  afrikaans: [
3363
3482
  "[Muziek]",
3364
3483
  "(C) TV GELDERLAND 2021",
@@ -3508,14 +3627,14 @@ const Ul = 10 * 1024 * 1024, Kl = 25 * 1024 * 1024, Fl = "sync-target", Bl = 20,
3508
3627
  "[MÚSICA]",
3509
3628
  "[Music cuts in British]"
3510
3629
  ]
3511
- }, Fo = (e) => {
3630
+ }, Wo = (e) => {
3512
3631
  let t = e;
3513
- return Object.values(Ko).forEach((n) => {
3632
+ return Object.values(jo).forEach((n) => {
3514
3633
  n.forEach((r) => {
3515
3634
  t = t.replaceAll(r, "");
3516
3635
  });
3517
3636
  }), t = t.replace(/\(.*?\)/g, ""), t = t.replace(/\[.*?\]/g, ""), t;
3518
- }, Bo = 6e4, Ho = 8e3, jo = 2, Go = 0.4, Wo = 3, Vo = /* @__PURE__ */ new Set([
3637
+ }, Go = 6e4, Vo = 8e3, Xo = 2, zo = 0.4, Yo = 3, qo = /* @__PURE__ */ new Set([
3519
3638
  "aan",
3520
3639
  "als",
3521
3640
  "ben",
@@ -3628,13 +3747,13 @@ const Ul = 10 * 1024 * 1024, Kl = 25 * 1024 * 1024, Fl = "sync-target", Bl = 20,
3628
3747
  "you",
3629
3748
  "your"
3630
3749
  ]);
3631
- function zo(e) {
3750
+ function Jo(e) {
3632
3751
  const t = /* @__PURE__ */ new Set();
3633
3752
  for (const n of e.toLowerCase().split(/[^a-z0-9À-ɏ]+/))
3634
- n.length < Wo || Vo.has(n) || t.add(n);
3753
+ n.length < Yo || qo.has(n) || t.add(n);
3635
3754
  return [...t];
3636
3755
  }
3637
- function Yo(e, t) {
3756
+ function Zo(e, t) {
3638
3757
  if (!e.length) return 0;
3639
3758
  if (!t.length) return 1;
3640
3759
  const n = new Set(t), r = new Set(e);
@@ -3642,38 +3761,38 @@ function Yo(e, t) {
3642
3761
  for (const i of r) n.has(i) || (o += 1);
3643
3762
  return o / r.size;
3644
3763
  }
3645
- function Xo(e, t = Bo) {
3764
+ function Qo(e, t = Go) {
3646
3765
  const n = e.filter((s) => !s.partial && typeof s.text == "string");
3647
3766
  if (!n.length) return { text: "", segmentCount: 0 };
3648
3767
  const o = n.reduce((s, a) => Math.max(s, a.endedAt ?? 0), 0) - t;
3649
- return { text: n.filter((s) => (s.endedAt ?? 0) >= o).map((s) => Fo(s.text).trim()).filter(Boolean).join(" ").replace(/\s+/g, " ").trim(), segmentCount: n.length };
3768
+ return { text: n.filter((s) => (s.endedAt ?? 0) >= o).map((s) => Wo(s.text).trim()).filter(Boolean).join(" ").replace(/\s+/g, " ").trim(), segmentCount: n.length };
3650
3769
  }
3651
- const qo = 60;
3652
- function Hl(e, t, n = qo) {
3770
+ const ei = 60;
3771
+ function Xl(e, t, n = ei) {
3653
3772
  const r = new Set(e), o = [...e];
3654
3773
  for (const i of t)
3655
3774
  !i || r.has(i) || (r.add(i), o.push(i));
3656
3775
  return o.slice(-n);
3657
3776
  }
3658
- function jl(e) {
3777
+ function zl(e) {
3659
3778
  const { segments: t, now: n, state: r } = e;
3660
- if (r.lastTriggerAt && n - r.lastTriggerAt < Ho)
3779
+ if (r.lastTriggerAt && n - r.lastTriggerAt < Vo)
3661
3780
  return { trigger: !1, reason: "too_soon" };
3662
- const o = Xo(t, e.windowMs);
3781
+ const o = Qo(t, e.windowMs);
3663
3782
  if (!o.text) return { trigger: !1, reason: "no_speech" };
3664
3783
  const i = o.segmentCount - (r.lastSegmentCount ?? 0);
3665
- if (r.lastQueryTerms && i < jo)
3784
+ if (r.lastQueryTerms && i < Xo)
3666
3785
  return { trigger: !1, reason: "too_few_new" };
3667
- const s = zo(o.text);
3668
- return s.length ? r.lastQueryTerms?.length && Yo(s, r.lastQueryTerms) < Go ? { trigger: !1, reason: "same_topic" } : { trigger: !0, text: o.text, terms: s, segmentCount: o.segmentCount } : { trigger: !1, reason: "no_speech" };
3786
+ const s = Jo(o.text);
3787
+ return s.length ? r.lastQueryTerms?.length && Zo(s, r.lastQueryTerms) < zo ? { trigger: !1, reason: "same_topic" } : { trigger: !0, text: o.text, terms: s, segmentCount: o.segmentCount } : { trigger: !1, reason: "no_speech" };
3669
3788
  }
3670
- const Gl = [
3789
+ const Yl = [
3671
3790
  "personal",
3672
3791
  "workspace",
3673
3792
  "connections",
3674
3793
  "work",
3675
3794
  "ai"
3676
- ], Wl = "navNotice", Me = {
3795
+ ], ql = "navNotice", Ce = {
3677
3796
  // The lower bounds are deliberately generous: service ranges (0800/0900) are
3678
3797
  // shorter than geographic numbers, and a too-strict minimum silently drops them.
3679
3798
  // An over-permissive key is harmless — it simply matches nothing.
@@ -3696,81 +3815,81 @@ const Gl = [
3696
3815
  PL: { callingCode: "48", nsnMin: 9, nsnMax: 9 },
3697
3816
  US: { callingCode: "1", nsnMin: 10, nsnMax: 10 },
3698
3817
  CA: { callingCode: "1", nsnMin: 10, nsnMax: 10 }
3699
- }, Jo = "NL", Zo = 15, Qo = 8, ei = Array.from(
3700
- new Set(Object.values(Me).map((e) => e.callingCode))
3818
+ }, ti = "NL", ni = 15, ri = 8, oi = Array.from(
3819
+ new Set(Object.values(Ce).map((e) => e.callingCode))
3701
3820
  ).sort((e, t) => t.length - e.length);
3702
- function nt(e) {
3821
+ function st(e) {
3703
3822
  if (e)
3704
- return Me[e.trim().toUpperCase()];
3823
+ return Ce[e.trim().toUpperCase()];
3705
3824
  }
3706
- function V(e, t) {
3825
+ function Y(e, t) {
3707
3826
  return e.length >= t.nsnMin && e.length <= t.nsnMax;
3708
3827
  }
3709
- function rt(e) {
3710
- if (e.length > Zo) return null;
3711
- for (const t of ei) {
3828
+ function at(e) {
3829
+ if (e.length > ni) return null;
3830
+ for (const t of oi) {
3712
3831
  if (!e.startsWith(t)) continue;
3713
3832
  const n = e.slice(t.length);
3714
- for (const r of Object.values(Me)) {
3833
+ for (const r of Object.values(Ce)) {
3715
3834
  if (r.callingCode !== t) continue;
3716
3835
  const o = r.trunkPrefix, i = o && n.startsWith(o) ? n.slice(o.length) : n;
3717
- if (V(i, r)) return `+${t}${i}`;
3836
+ if (Y(i, r)) return `+${t}${i}`;
3718
3837
  }
3719
3838
  return null;
3720
3839
  }
3721
- return e.length < Qo ? null : `+${e}`;
3840
+ return e.length < ri ? null : `+${e}`;
3722
3841
  }
3723
- function ti(e) {
3842
+ function ii(e) {
3724
3843
  let t = e.trim();
3725
3844
  const n = t.match(/^(sips?|tel|whatsapp):/i);
3726
3845
  n && (t = t.slice(n[0].length));
3727
3846
  const r = t.indexOf("@");
3728
3847
  return r >= 0 && (t = t.slice(0, r)), t.trim();
3729
3848
  }
3730
- function Vl(e) {
3849
+ function Jl(e) {
3731
3850
  if (!e) return !1;
3732
3851
  const t = e.indexOf("@");
3733
3852
  if (t <= 0) return !1;
3734
3853
  const n = e.slice(0, t).trim();
3735
3854
  return !/^[+\d\s().-]+$/.test(n);
3736
3855
  }
3737
- function ot(e, t) {
3856
+ function ct(e, t) {
3738
3857
  if (!e) return null;
3739
- const n = ti(e);
3858
+ const n = ii(e);
3740
3859
  if (!n) return null;
3741
3860
  const r = n.startsWith("+"), o = n.replace(/\D/g, "");
3742
3861
  if (!o) return null;
3743
- if (r) return rt(o);
3744
- if (o.startsWith("00")) return rt(o.slice(2));
3745
- const i = nt(t) ?? nt(Jo);
3862
+ if (r) return at(o);
3863
+ if (o.startsWith("00")) return at(o.slice(2));
3864
+ const i = st(t) ?? st(ti);
3746
3865
  if (!i) return null;
3747
3866
  const s = i.trunkPrefix;
3748
3867
  if (s && o.startsWith(s)) {
3749
3868
  const a = o.slice(s.length);
3750
- return V(a, i) ? `+${i.callingCode}${a}` : null;
3869
+ return Y(a, i) ? `+${i.callingCode}${a}` : null;
3751
3870
  }
3752
3871
  if (o.startsWith(i.callingCode)) {
3753
3872
  const a = o.slice(i.callingCode.length);
3754
- if (V(a, i)) return `+${i.callingCode}${a}`;
3873
+ if (Y(a, i)) return `+${i.callingCode}${a}`;
3755
3874
  }
3756
- return !s && V(o, i) ? `+${i.callingCode}${o}` : null;
3875
+ return !s && Y(o, i) ? `+${i.callingCode}${o}` : null;
3757
3876
  }
3758
- function zl(e, t = 9) {
3877
+ function Zl(e, t = 9) {
3759
3878
  const n = (e ?? "").replace(/\D/g, "");
3760
3879
  return n.length < t ? null : n.slice(-t);
3761
3880
  }
3762
- function jt(e) {
3881
+ function Xt(e) {
3763
3882
  if (!e) return null;
3764
3883
  const t = e.trim().toLowerCase(), n = t.lastIndexOf("@");
3765
3884
  if (n <= 0 || n === t.length - 1) return null;
3766
3885
  const r = t.slice(0, n).split("+")[0], o = t.slice(n + 1);
3767
3886
  return !r || !o.includes(".") ? null : `${r}@${o}`;
3768
3887
  }
3769
- function Yl(e) {
3770
- const t = jt(e);
3888
+ function Ql(e) {
3889
+ const t = Xt(e);
3771
3890
  return t ? t.slice(t.lastIndexOf("@") + 1) : null;
3772
3891
  }
3773
- const ni = /* @__PURE__ */ new Set([
3892
+ const si = /* @__PURE__ */ new Set([
3774
3893
  "co.uk",
3775
3894
  "org.uk",
3776
3895
  "gov.uk",
@@ -3780,14 +3899,14 @@ const ni = /* @__PURE__ */ new Set([
3780
3899
  "com.br",
3781
3900
  "co.za"
3782
3901
  ]);
3783
- function ri(e) {
3902
+ function ai(e) {
3784
3903
  if (!e) return null;
3785
3904
  const t = e.trim().toLowerCase().replace(/\.$/, "").split(".").filter(Boolean);
3786
3905
  if (t.length < 2) return null;
3787
3906
  const n = t.slice(-2).join(".");
3788
- return ni.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
3907
+ return si.has(n) && t.length >= 3 ? t.slice(-3).join(".") : n;
3789
3908
  }
3790
- const oi = /* @__PURE__ */ new Set([
3909
+ const ci = /* @__PURE__ */ new Set([
3791
3910
  "gmail.com",
3792
3911
  "googlemail.com",
3793
3912
  "outlook.com",
@@ -3832,34 +3951,34 @@ const oi = /* @__PURE__ */ new Set([
3832
3951
  "proximus.be",
3833
3952
  "scarlet.be"
3834
3953
  ]);
3835
- function Xl(e) {
3836
- const t = ri(e);
3837
- return t ? oi.has(t) : !1;
3954
+ function eu(e) {
3955
+ const t = ai(e);
3956
+ return t ? ci.has(t) : !1;
3838
3957
  }
3839
- function ql(e) {
3958
+ function tu(e) {
3840
3959
  if (!e) return !1;
3841
3960
  const t = e.trim().toLowerCase();
3842
3961
  return t === "tel" || t === "sms" || t === "whatsapp" || t === "fax";
3843
3962
  }
3844
- function Jl(e, t, n) {
3963
+ function nu(e, t, n) {
3845
3964
  if (!e || !t) return null;
3846
3965
  const r = e.trim().toLowerCase();
3847
3966
  if (r === "tel" || r === "sms" || r === "whatsapp") {
3848
- const i = ot(t, n);
3967
+ const i = ct(t, n);
3849
3968
  return i ? `tel:${i}` : null;
3850
3969
  }
3851
3970
  if (r === "fax") {
3852
- const i = ot(t, n);
3971
+ const i = ct(t, n);
3853
3972
  return i ? `fax:${i}` : null;
3854
3973
  }
3855
3974
  if (r === "mailto" || r === "email") {
3856
- const i = jt(t);
3975
+ const i = Xt(t);
3857
3976
  return i ? `mailto:${i}` : null;
3858
3977
  }
3859
3978
  const o = t.trim().toLowerCase();
3860
3979
  return o ? `${r}:${o}` : null;
3861
3980
  }
3862
- const ii = [
3981
+ const li = [
3863
3982
  /<blockquote/i,
3864
3983
  /class="?gmail_quote/i,
3865
3984
  // Gmail quote container
@@ -3872,72 +3991,72 @@ const ii = [
3872
3991
  // Outlook underscore separator before "From:"
3873
3992
  /\bOn\b[\s\S]{0,200}?\bwrote:/i
3874
3993
  // Gmail "On <date> <name> wrote:"
3875
- ], it = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, si = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
3876
- function ai(e) {
3994
+ ], lt = /^\s*(?:>+\s*)?(?:from|van|sent|verzonden|to|aan|cc|subject|onderwerp|date|datum)\s*:/i, ui = /^\s*(?:on|op)\b.{0,200}?\b(?:wrote|schreef|geschreven)\s*:?\s*$/i;
3995
+ function di(e) {
3877
3996
  const t = e.split(`
3878
3997
  `);
3879
3998
  for (let n = 0; n < t.length; n++)
3880
- if (si.test(t[n]) || it.test(t[n]) && t.slice(n + 1, n + 4).some((r) => it.test(r)))
3999
+ if (ui.test(t[n]) || lt.test(t[n]) && t.slice(n + 1, n + 4).some((r) => lt.test(r)))
3881
4000
  return t.slice(0, n).join(`
3882
4001
  `).trim();
3883
4002
  return e;
3884
4003
  }
3885
- const ci = /^(?:https?:|mailto:|tel:)/i, li = /^(?:https?:|cid:|data:image\/)/i;
3886
- function se(e, t) {
4004
+ const fi = /^(?:https?:|mailto:|tel:)/i, pi = /^(?:https?:|cid:|data:image\/)/i;
4005
+ function ce(e, t) {
3887
4006
  const n = e.match(new RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s">]+))`, "i"));
3888
4007
  return (n?.[1] ?? n?.[2] ?? n?.[3] ?? "").trim();
3889
4008
  }
3890
- const ui = /(!\[[^\]]*\]\([^)]*\))/;
3891
- function st(e) {
3892
- return e.replace(/\s+/g, " ").trim().split(ui).map((t, n) => n % 2 === 1 ? t : t.replace(/[[\]]/g, "\\$&")).join("");
4009
+ const mi = /(!\[[^\]]*\]\([^)]*\))/;
4010
+ function ut(e) {
4011
+ return e.replace(/\s+/g, " ").trim().split(mi).map((t, n) => n % 2 === 1 ? t : t.replace(/[[\]]/g, "\\$&")).join("");
3893
4012
  }
3894
- function ae(e) {
4013
+ function le(e) {
3895
4014
  return e.replace(
3896
4015
  /[()\s<>"]/g,
3897
4016
  (t) => `%${t.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0")}`
3898
4017
  );
3899
4018
  }
3900
- function di(e) {
4019
+ function hi(e) {
3901
4020
  return e.replace(/<img\b([^>]*?)\/?>/gi, (n, r) => {
3902
- const o = se(r, "src");
3903
- return li.test(o) ? `![${st(se(r, "alt"))}](${ae(o)})` : "";
4021
+ const o = ce(r, "src");
4022
+ return pi.test(o) ? `![${ut(ce(r, "alt"))}](${le(o)})` : "";
3904
4023
  }).replace(
3905
4024
  /<a\b([^>]*)>([\s\S]*?)<\/a\s*>/gi,
3906
4025
  (n, r, o) => {
3907
- const i = st(o.replace(/<[^>]*>/g, "")), s = se(r, "href");
3908
- return ci.test(s) ? `[${i || ae(s)}](${ae(s)})` : i;
4026
+ const i = ut(o.replace(/<[^>]*>/g, "")), s = ce(r, "href");
4027
+ return fi.test(s) ? `[${i || le(s)}](${le(s)})` : i;
3909
4028
  }
3910
4029
  );
3911
4030
  }
3912
- const fi = /<table\b[^>]*>((?:(?!<table\b)[\s\S])*?)<\/table\s*>/i, pi = /<tr\b[^>]*>([\s\S]*?)<\/tr\s*>/gi, mi = /<(t[dh])\b([^>]*)>([\s\S]*?)<\/\1\s*>/gi;
3913
- function hi(e, t) {
4031
+ const gi = /<table\b[^>]*>((?:(?!<table\b)[\s\S])*?)<\/table\s*>/i, yi = /<tr\b[^>]*>([\s\S]*?)<\/tr\s*>/gi, bi = /<(t[dh])\b([^>]*)>([\s\S]*?)<\/\1\s*>/gi;
4032
+ function Ai(e, t) {
3914
4033
  return /<table\b/i.test(e) || e.includes(`
3915
4034
 
3916
4035
  |`) || t.includes("![") || t.length > 200;
3917
4036
  }
3918
- const gi = 40, yi = { left: "---", center: ":---:", right: "---:" };
3919
- function bi(e) {
4037
+ const Ei = 40, Si = { left: "---", center: ":---:", right: "---:" };
4038
+ function _i(e) {
3920
4039
  const t = e.match(/align\s*[=:]\s*["']?\s*(right|center)/i);
3921
4040
  return t ? t[1].toLowerCase() : "left";
3922
4041
  }
3923
- function Ai(e) {
4042
+ function Ti(e) {
3924
4043
  return e.replace(/<[^>]*>/g, "").replace(/\s+/g, " ").trim().replace(/\|/g, "\\|");
3925
4044
  }
3926
- function Ei(e) {
4045
+ function Ii(e) {
3927
4046
  const t = [];
3928
- for (const s of e.matchAll(pi)) {
4047
+ for (const s of e.matchAll(yi)) {
3929
4048
  const a = [];
3930
- for (const l of s[1].matchAll(mi)) {
3931
- const d = Ai(l[3]);
3932
- if (hi(l[3], d)) return null;
3933
- a.push({ text: d, align: bi(l[2]) });
4049
+ for (const l of s[1].matchAll(bi)) {
4050
+ const u = Ti(l[3]);
4051
+ if (Ai(l[3], u)) return null;
4052
+ a.push({ text: u, align: _i(l[2]) });
3934
4053
  }
3935
4054
  if (a.length === 0) return null;
3936
4055
  a.some((l) => l.text !== "") && t.push(a);
3937
4056
  }
3938
4057
  const n = t[0]?.length ?? 0;
3939
4058
  if (t.length < 2 || n < 2 || t.some((s) => s.length !== n)) return null;
3940
- const r = (s) => `| ${s.map((a) => a.text).join(" | ")} |`, o = t[1].map((s) => yi[s.align]).join(" | "), i = t.slice(1).map(r).join(`
4059
+ const r = (s) => `| ${s.map((a) => a.text).join(" | ")} |`, o = t[1].map((s) => Si[s.align]).join(" | "), i = t.slice(1).map(r).join(`
3941
4060
  `);
3942
4061
  return `
3943
4062
 
@@ -3947,36 +4066,36 @@ ${i}
3947
4066
 
3948
4067
  `;
3949
4068
  }
3950
- function Si(e) {
4069
+ function wi(e) {
3951
4070
  return e.replace(/<\/(t[dh])\s*>/gi, " ").replace(/<\/tr\s*>/gi, `
3952
4071
  `).replace(/<(?:tbody|thead|tfoot|caption|colgroup|col|tr|t[dh])\b[^>]*>/gi, "").replace(/<\/(?:tbody|thead|tfoot|caption|colgroup)\s*>/gi, "");
3953
4072
  }
3954
- function _i(e) {
4073
+ function Mi(e) {
3955
4074
  let t = e;
3956
- for (let n = 0; n < gi; n++) {
3957
- const r = fi.exec(t);
4075
+ for (let n = 0; n < Ei; n++) {
4076
+ const r = gi.exec(t);
3958
4077
  if (!r || r.index === void 0) break;
3959
- const i = Ei(r[1]) ?? `
4078
+ const i = Ii(r[1]) ?? `
3960
4079
 
3961
- ${Si(r[1])}
4080
+ ${wi(r[1])}
3962
4081
 
3963
4082
  `;
3964
4083
  t = t.slice(0, r.index) + i + t.slice(r.index + r[0].length);
3965
4084
  }
3966
4085
  return t;
3967
4086
  }
3968
- function at(e, t) {
4087
+ function dt(e, t) {
3969
4088
  let n = e;
3970
4089
  return n = n.replace(/<(script|style)[\s\S]*?<\/\1>/gi, ""), n = n.replace(/<!--[\s\S]*?-->/g, ""), n = n.replace(/<br\s*\/?>/gi, `
3971
- `), t && (n = _i(di(n))), n = n.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi, `
4090
+ `), t && (n = Mi(hi(n))), n = n.replace(/<\/(p|h[1-6]|ul|ol|table|blockquote)>/gi, `
3972
4091
 
3973
4092
  `), n = n.replace(/<\/(div|li|tr)>/gi, `
3974
4093
  `), n = n.replace(/<\/(td|th)>/gi, " "), n = n.replace(/<[^>]+>/g, ""), n = n.replace(/<[^>]*$/, ""), n;
3975
4094
  }
3976
- function ct(e) {
4095
+ function ft(e) {
3977
4096
  return !Number.isInteger(e) || e < 0 || e > 1114111 ? null : String.fromCodePoint(e);
3978
4097
  }
3979
- const Ii = {
4098
+ const ki = {
3980
4099
  euro: "€",
3981
4100
  pound: "£",
3982
4101
  yen: "¥",
@@ -3998,455 +4117,471 @@ const Ii = {
3998
4117
  rdquo: "”",
3999
4118
  apos: "'"
4000
4119
  };
4001
- function lt(e) {
4002
- return e.replace(/&nbsp;/gi, " ").replace(/&([a-z]+);/gi, (t, n) => Ii[n.toLowerCase()] ?? t).replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#(\d+);/g, (t, n) => ct(Number(n)) ?? t).replace(/&#x([0-9a-f]+);/gi, (t, n) => ct(parseInt(n, 16)) ?? t).replace(/&amp;/gi, "&");
4120
+ function pt(e) {
4121
+ return e.replace(/&nbsp;/gi, " ").replace(/&([a-z]+);/gi, (t, n) => ki[n.toLowerCase()] ?? t).replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&quot;/gi, '"').replace(/&#(\d+);/g, (t, n) => ft(Number(n)) ?? t).replace(/&#x([0-9a-f]+);/gi, (t, n) => ft(parseInt(n, 16)) ?? t).replace(/&amp;/gi, "&");
4003
4122
  }
4004
- function ut(e) {
4123
+ function mt(e) {
4005
4124
  return e.replace(/\r/g, "").replace(/[ \t]+/g, " ").replace(/ *\n */g, `
4006
4125
  `).replace(/\n{3,}/g, `
4007
4126
 
4008
4127
  `).trim();
4009
4128
  }
4010
- const Ti = /<\s*(html|body|div|p|table|br|span)\b/i;
4011
- function Zl(e) {
4012
- return Ti.test(e);
4129
+ const vi = /<\s*(html|body|div|p|table|br|span)\b/i;
4130
+ function ru(e) {
4131
+ return vi.test(e);
4013
4132
  }
4014
- function Ql(e) {
4015
- return Gt(e, !1);
4133
+ function ou(e) {
4134
+ return zt(e, !1);
4016
4135
  }
4017
- function eu(e) {
4018
- return Gt(e, !0);
4136
+ function iu(e) {
4137
+ return zt(e, !0);
4019
4138
  }
4020
- function Gt(e, t) {
4139
+ function zt(e, t) {
4021
4140
  if (typeof e != "string" || !e) return "";
4022
4141
  let n = e.length;
4023
- for (const s of ii) {
4142
+ for (const s of li) {
4024
4143
  const a = e.search(s);
4025
4144
  a >= 0 && a < n && (n = a);
4026
4145
  }
4027
4146
  const r = e.slice(0, n);
4028
- let o = ut(lt(at(r, t)));
4029
- return o || (o = ut(lt(at(e, t)))), ai(o) || o;
4147
+ let o = mt(pt(dt(r, t)));
4148
+ return o || (o = mt(pt(dt(e, t)))), di(o) || o;
4030
4149
  }
4031
4150
  export {
4032
- ms as ACTIVE_ASSIGNMENT_STATUSES,
4033
- x as ACTIVITY_CATALOG,
4034
- Eo as AI_ATTACHMENT_LIMITS,
4035
- Kc as AI_ATTACHMENT_MAX_PER_TURN,
4036
- Uc as AI_ATTACHMENT_TURN_BUDGET,
4037
- pt as AI_VENDORS,
4038
- fn as ALLOWED_LINK_SCHEMES,
4039
- _l as APP_PERMISSIONS,
4040
- $e as ARTIFACT_MAX_BLOCKS,
4041
- ss as ARTIFACT_MAX_BODY_BYTES,
4042
- ne as ARTIFACT_MAX_CELL_LEN,
4043
- Ke as ARTIFACT_MAX_KPI_ITEMS,
4044
- Le as ARTIFACT_MAX_LIST_ITEMS,
4045
- Ue as ARTIFACT_MAX_TABLE_COLUMNS,
4046
- Pe as ARTIFACT_MAX_TABLE_ROWS,
4047
- ht as ARTIFACT_MAX_TEXT_LEN,
4048
- Sn as ASSIGNMENT_SCOPE_KIND,
4049
- Gc as ASSIST_BANDS,
4050
- jc as ASSIST_SOURCE_PROVIDER_GROUP,
4051
- Dn as ATTENTION_STATUSES,
4052
- Zr as AT_RISK_GAP,
4053
- Bt as AUTH_APP_NAME,
4054
- Rr as AUTO_READY_MIN_PROPOSALS,
4055
- Dr as AUTO_READY_RATE,
4056
- tn as ActivityTypeRegistry,
4057
- Hi as BUILT_IN_ONLY,
4058
- $n as BULK_PENALTY,
4059
- Ho as CADENCE_FLOOR_MS,
4060
- jo as CADENCE_MIN_NEW_SEGMENTS,
4061
- Go as CADENCE_MIN_NOVELTY,
4062
- Bo as CADENCE_WINDOW_MS,
4063
- Ia as CLASSIFY_VARS,
4064
- ul as CONNECTOR_PROVIDER_GROUP,
4065
- dl as CONTEXT_COLLECT_SERVICE,
4066
- es as CORE_DIMENSIONS,
4067
- Mo as CommunicationScheme,
4068
- wn as DAY_MS,
4069
- Xr as DEFAULT_CHECK_IN_DAYS,
4070
- fr as DEFAULT_FORECAST_WEEKS,
4071
- qs as DEFAULT_MEMORY_BUDGET,
4072
- Jo as DEFAULT_PHONE_REGION,
4073
- oa as DEMAND_SOURCE_PROVIDER_GROUP,
4074
- gl as DOCUMENT_APPLY_SERVICE,
4075
- ml as DOCUMENT_DESCRIBE_SERVICE,
4076
- hl as DOCUMENT_INSPECT_SERVICE,
4077
- Ut as DOCUMENT_OPERATIONS,
4078
- wa as EMPTY_WORKFLOW,
4079
- sl as FEATURE_FOLDER_MANAGEMENT,
4080
- cl as FEATURE_MESSAGE_REACTIONS,
4081
- al as FEATURE_REMOTE_SEARCH,
4082
- Se as FIXED_KINDS,
4083
- J as FIXED_LEVELS,
4084
- Te as FIXED_TYPES,
4085
- Pn as FOLLOW_UP_HOURS,
4086
- Tn as HOUR_MS,
4087
- Ti as HTML_BODY_RE,
4088
- R as INELIGIBLE,
4089
- bl as INSTALLATION_HEADER,
4090
- vr as INTERACTION_KIND,
4091
- ol as InteractionParticipantRole,
4092
- Wn as KB_FALLBACK_LOCALE,
4093
- je as KB_LOCALES,
4094
- we as LOOSE_STATUSES,
4095
- Cn as MAIL_HINT_HEADERS,
4096
- vi as MAX_ACTIONS,
4097
- _n as MAX_ASSIGNMENT_TURNS,
4098
- wi as MAX_BLOCKS,
4099
- It as MAX_COLLECTION_DEPTH,
4100
- Ul as MAX_EDITABLE_FILE_BYTES,
4101
- Mi as MAX_FIELDS,
4102
- ki as MAX_LIST_ITEMS,
4103
- Vs as MAX_MEMORY_BROWSE,
4104
- Xs as MAX_MEMORY_BUDGET,
4105
- zs as MAX_MEMORY_CHARS,
4106
- qo as MAX_SHOWN_KEYS,
4107
- ro as MAX_TOPIC_CANDIDATES,
4108
- no as MAX_TOPIC_EXAMPLES,
4109
- ie as MAX_TOPIC_EXAMPLE_CHARS,
4110
- Kl as MAX_VIEWABLE_FILE_BYTES,
4111
- Ys as MIN_MEMORY_BUDGET,
4112
- Wl as NAV_NOTICE_SLOT,
4113
- El as NOTIFICATION_SOURCE_PROVIDER_GROUP,
4114
- Qr as OFF_TRACK_GAP,
4115
- Zs as ONBOARDING_SOURCE_PROVIDER_GROUP,
4116
- he as PAUSE_SNOOZED,
4117
- ge as PAUSE_WAITING_FOR_CUSTOMER,
4118
- Me as PHONE_REGIONS,
4119
- Kt as PRESENCE_ONLINE_WINDOW_MS,
4120
- xo as PRESENCE_SURVIVES_OFFLINE,
4121
- ea as PROFILE_TOOL_DISPOSITIONS,
4122
- rl as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
4123
- nl as PROVIDER_FEATURE_MESSAGE_WINDOW,
4124
- oi as PUBLIC_EMAIL_DOMAINS,
4125
- Ge as READ_STEP_TYPES,
4126
- Yn as RELATED_SUBJECT_KINDS,
4127
- Pt as RESERVED_STATUS_KEYS,
4128
- Ac as RESERVED_TYPE_KEYS,
4129
- Cl as RESOURCE_ATTACHED_SERVICE,
4130
- kl as RESOURCE_DESCRIBE_SERVICE,
4131
- Ol as RESOURCE_RESOLVE_SERVICE,
4132
- vl as RESOURCE_SEARCH_SERVICE,
4133
- br as SCHEDULE_ENTRY_SCOPE_KIND,
4134
- Rl as SCOPE_READ_ROUTE,
4135
- xl as SCOPE_RELATED_ROUTE,
4136
- Gl as SETTINGS_CATEGORIES,
4137
- Ss as SIGNATURE_INTENTS,
4138
- Ln as SLA_HOURS_BY_PRIORITY,
4139
- Pa as SLA_METRICS,
4140
- Ua as SLA_PAUSE_REASONS,
4141
- Nr as STEP_MAX_TOKENS_MAX,
4142
- Cr as STEP_MAX_TOKENS_MIN,
4143
- zr as STRATEGY_ITEM_SCOPE_KIND,
4144
- On as SUMMARY_MIN_LAST_CHARS,
4145
- vn as SUMMARY_MIN_MESSAGES,
4146
- Bl as SYNC_RUN_MAX_ERRORS,
4147
- Fl as SYNC_TARGET_PROVIDER_GROUP,
4148
- En as TERMINAL_ASSIGNMENT_STATUSES,
4149
- $r as TERMINAL_RUN_STATUSES,
4150
- _a as TRIGGER_VARS,
4151
- Xn as UNKNOWN_KIND,
4152
- Yr as UNKNOWN_LEVEL_ORDER,
4153
- ll as UNSUPPORTED,
4154
- cn as USAGE_DIMENSIONS,
4155
- ln as USAGE_DIMENSION_IDS,
4156
- Ar as WORKSTREAM_SCOPE_KIND,
4157
- uo as WORK_ACTIVITY_SCOPE_KIND,
4158
- Qs as WORK_AREAS,
4159
- hc as WORK_COMMENT_ADDED,
4160
- Tc as WORK_CYCLE_SYNC_KIND,
4161
- gc as WORK_ITEM_ASSIGNED,
4162
- co as WORK_ITEM_SCOPE_KIND,
4163
- yc as WORK_ITEM_STATUS_CHANGED,
4164
- lo as WORK_PROJECT_SCOPE_KIND,
4165
- z as W_PRIORITY,
4166
- fc as acceptExampleCandidate,
4167
- Ir as actingIdentityKey,
4168
- uc as activeWorkTypes,
4169
- Ci as activityIconOf,
4170
- Fi as activityJoinUrl,
4171
- Jt as activitySnippet,
4172
- Zt as activityTextParams,
4173
- Ki as activityTimelineText,
4174
- nn as activityTimestamp,
4175
- T as activityTypeInfo,
4176
- ga as actorKey,
4177
- dc as addExampleCandidate,
4178
- _e as addWorkingMs,
4179
- Tl as agePresenceEntry,
4180
- Ao as aiAttachmentKind,
4181
- Fc as aiAttachmentRejection,
4182
- De as aiBudgetLimit,
4183
- Zi as aiBudgetPeriodKey,
4184
- rn as aiBudgetPeriodStart,
4185
- Ji as aiBudgetState,
4186
- qi as aiVendorAcceptsAttachment,
4187
- zi as aiVendorDefaultModel,
4188
- Vi as aiVendorLabel,
4189
- Xi as aiVendorNeedsBaseUrl,
4190
- Yi as aiVendorsWith,
4191
- Ht as appNameFromPath,
4192
- ic as applyRounding,
4193
- _s as applySignature,
4194
- xr as approvalRate,
4195
- cs as artifactBodyBytes,
4196
- ls as artifactOutline,
4197
- us as artifactToMarkdown,
4198
- Ea as assignmentMismatch,
4199
- gs as assignmentScopeKey,
4200
- As as assignmentSubject,
4201
- ta as belongsOnCalendar,
4202
- Bi as buildActivityPreview,
4203
- Jc as buildChannelIntents,
4204
- ds as buildShareKeys,
4205
- Xo as buildWindow,
4206
- Zn as calendarDaysBetween,
4207
- Ie as calendarOf,
4208
- Fs as canNestUnder,
4209
- Va as canParent,
4210
- na as capacityTotal,
4211
- fa as capacityWeights,
4212
- $i as carriesText,
4213
- Hs as categoryLabel,
4214
- mo as categoryOf,
4215
- tl as channelKindForScheme,
4216
- Ni as channelKindOf,
4217
- nc as checkInOverdueMs,
4218
- Ta as clampStepMaxTokens,
4219
- vs as classifyMail,
4220
- eu as cleanMessageMarkdown,
4221
- Ql as cleanMessageText,
4222
- Vc as compareAssistRank,
4223
- to as compareWorkTypes,
4224
- Y as countsAsPlanned,
4225
- ra as coverageByPerson,
4226
- sa as coverageFor,
4227
- qn as coversWorkstream,
4228
- wt as cycleDayIndex,
4229
- Lc as cycleOrder,
4230
- Pc as cycleState,
4231
- Es as decideAssignmentState,
4232
- jl as decideCadence,
4233
- Xc as decideIncomingCall,
4234
- Vn as defaultLocaleOf,
4235
- xc as defaultStatusKey,
4236
- il as defineIntent,
4237
- jn as depthOf,
4238
- Il as derivePresence,
4239
- rs as describeClause,
4240
- qc as disabledIntentsFromCapabilities,
4241
- yl as documentKindOf,
4242
- Fa as dueAtOf,
4243
- oc as elapsedSeconds,
4244
- Yl as emailDomain,
4245
- Jl as endpointKey,
4246
- nr as erlangC,
4247
- $o as extractParams,
4248
- zo as extractTerms,
4249
- Qc as filterByEndpoint,
4250
- Zc as filterByIntent,
4251
- wo as filterByTargetScheme,
4252
- ns as filterableDimensions,
4253
- q as findAiVendor,
4254
- Ya as fixedLevelForName,
4255
- _c as fixedTypeForName,
4256
- Ic as fixedTypes,
4257
- Al as flattenLocales,
4258
- F as floorToPeriod,
4259
- la as forecastIntervals,
4260
- _r as formatActingIdentity,
4261
- ac as formatClock,
4262
- sc as formatHm,
4263
- Mc as formatItemKey,
4264
- K as formatPeriod,
4265
- ja as formatSlaDuration,
4266
- Hc as freshSources,
4267
- ji as getActivitySeenUserIds,
4268
- Is as getContactEndpoints,
4269
- $s as getShortTitle,
4270
- Ds as getUrgencyScore,
4271
- Da as hasReacted,
4272
- Xa as healthCategory,
4273
- qa as healthsInCategory,
4274
- Tt as heightOf,
4275
- Ps as helpCenterText,
4276
- Sa as humanizeAction,
4277
- Or as interactionIdOf,
4278
- mc as isAgentUser,
4279
- xs as isAssigned,
4280
- hs as isAssignmentTerminal,
4281
- Mr as isAssignmentTrigger,
4282
- va as isAutoReady,
4283
- Hn as isAwaitingThem,
4284
- Wi as isChatMessageActivity,
4285
- Rs as isClosed,
4286
- Pi as isConnectedType,
4287
- Dl as isDeepLink,
4288
- Gn as isDescendant,
4289
- Ts as isEligible,
4290
- Gi as isEmailActivity,
4291
- Zl as isHtmlBody,
4292
- Ca as isInFlight,
4293
- Rn as isInteractionUnseen,
4294
- $l as isLandingPath,
4295
- kn as isLikelyBulk,
4296
- dt as isMessageShape,
4297
- xi as isMessageType,
4298
- Po as isMoreSpecificPattern,
4299
- ft as isNoteShape,
4300
- Vr as isOpenClock,
4301
- Bc as isOutwardTool,
4302
- Kn as isParked,
4303
- Lr as isPaused,
4304
- Li as isPlaybookAuthoredType,
4305
- Xl as isPublicEmailDomain,
4306
- Pl as isPublicPath,
4307
- Fn as isReminderActive,
4308
- Di as isReplyableType,
4309
- Cs as isSlaAtRisk,
4310
- Oa as isTerminal,
4311
- Ms as isThreadLongEnough,
4312
- Ui as isTranscriptType,
4313
- Rc as isWorkClosed,
4314
- lc as isWorkTypeVisible,
4315
- Oc as itemDossierKeys,
4316
- $ as kindFor,
4317
- po as ladderFor,
4318
- qr as levelIn,
4319
- be as levelOrder,
4320
- Ls as linkLabel,
4321
- Qi as listeningAllowed,
4322
- Ks as localeInstruction,
4323
- Us as localeName,
4324
- Bs as localesOf,
4325
- Vl as looksLikeEmail,
4326
- el as matchContactToIntents,
4327
- Uo as matchPublicRoute,
4328
- Gs as mcpCredentialScope,
4329
- Ws as mcpToolPrefix,
4330
- Ja as measureRatio,
4331
- Hl as mergeShownKeys,
4332
- qt as messageCountsAs,
4333
- os as metricOption,
4334
- Mt as minutesOn,
4335
- ql as needsPhoneRegion,
4336
- Ri as nestsUnderParent,
4337
- za as nextLevelBelow,
4338
- Ba as nextSlaClock,
4339
- as as normalizeArtifactBlocks,
4340
- Oi as normalizeBlocks,
4341
- jt as normalizeEmail,
4342
- D as normalizeExample,
4343
- Sl as notificationPrefKey,
4344
- Yo as novelty,
4345
- pl as operationDescriptor,
4346
- fl as operationsForKind,
4347
- re as overlapSeconds,
4348
- ia as overlaps,
4349
- Za as paceRatio,
4350
- ws as parkMarksById,
4351
- ma as parseActingIdentity,
4352
- $a as parseClockMinutes,
4353
- kc as parseItemKey,
4354
- Do as pathToRegex,
4355
- vt as patternFor,
4356
- kt as patternStartTime,
4357
- La as pauseBitFor,
4358
- ts as periodsInRange,
4359
- zl as phoneSuffix,
4360
- ks as pickMailHeaders,
4361
- pa as placeLumps,
4362
- Yt as plainTextFromMarkdown,
4363
- Ka as planSlaEvent,
4364
- aa as plannedBillable,
4365
- ur as plannedWorkTypeKey,
4366
- wr as playbookActor,
4367
- ka as procedureOf,
4368
- Cc as projectDossierKeys,
4369
- Lo as publicBasePathFor,
4370
- Ll as publicRoutePatterns,
4371
- bs as reactionWakesAssignment,
4372
- ce as readPath,
4373
- We as readStepError,
4374
- Un as recencyOf,
4375
- kr as refKey,
4376
- ri as registrableDomain,
4377
- io as rejectExampleCandidate,
4378
- Js as relatedByDefault,
4379
- ye as remainingMsOf,
4380
- ir as requiredAgents,
4381
- lr as requirementFor,
4382
- Io as resolveAccountCapabilities,
4383
- le as resolveActivityText,
4384
- _o as resolveChannelIntents,
4385
- In as resolveSignature,
4386
- wl as resolveWorkMode,
4387
- Nl as resourceKindOf,
4388
- tc as rollupChildren,
4389
- ha as runActor,
4390
- xa as runInteractionId,
4391
- gn as sanitizeInline,
4392
- Fo as sanitizeTranscript,
4393
- ua as scheduleEntryScopeKey,
4394
- Ns as scoreInteraction,
4395
- bc as scoreWorkItem,
4396
- js as selectLenses,
4397
- rr as serviceLevel,
4398
- Yc as sessionsHoldCannotReach,
4399
- zc as sessionsToHold,
4400
- bt as shareKeyForTeam,
4401
- yt as shareKeyForUser,
4402
- fs as shareKeysForViewer,
4403
- ca as shortfalls,
4404
- Ml as shouldRunAudioPipeline,
4405
- Ha as slaBadgeTone,
4406
- Os as slaHoursByInbox,
4407
- Bn as slaHoursFor,
4408
- ho as sortStatuses,
4409
- So as sourceKey,
4410
- Sr as spreadOverWeights,
4411
- Nc as statusIn,
4412
- Ma as stepsOf,
4413
- Wa as strategyAncestorKeysFor,
4414
- Ga as strategyDossierKeys,
4415
- $t as strategyItemScopeKey,
4416
- Xt as stripHtml,
4417
- Na as subjectKeyOf,
4418
- Ot as subjectOf,
4419
- Wc as subjectRef,
4420
- vc as suggestProjectKey,
4421
- Qa as suggestedHealth,
4422
- Ra as summarizeReactions,
4423
- Aa as targetById,
4424
- ba as targetForActivityType,
4425
- rc as targetOrder,
4426
- Qn as termsFor,
4427
- Tr as toActingIdentity,
4428
- ot as toE164,
4429
- ps as toolSourceKinds,
4430
- so as topicOfferedForTeam,
4431
- pc as topicsForTeam,
4432
- or as trafficIntensity,
4433
- oo as truncateExample,
4434
- Sc as typeIn,
4435
- Ec as typesFor,
4436
- Dc as uniqueWorkStatusKey,
4437
- cc as uniqueWorkTypeKey,
4438
- un as usageMetricId,
4439
- is as usageMetrics,
4440
- $c as validateStatuses,
4441
- ya as valueAtPath,
4442
- Ee as waitHoursOf,
4443
- ys as wakesAssignment,
4444
- wc as workActivityScopeKey,
4445
- fo as workItemScopeKey,
4446
- Lt as workProjectScopeKey,
4447
- ec as workRatio,
4448
- go as workStatusKey,
4449
- eo as workTypeKey,
4450
- me as workingMsBetween,
4451
- da as workstreamScopeKey
4151
+ bs as ACTIVE_ASSIGNMENT_STATUSES,
4152
+ R as ACTIVITY_CATALOG,
4153
+ Io as AI_ATTACHMENT_LIMITS,
4154
+ Wc as AI_ATTACHMENT_MAX_PER_TURN,
4155
+ jc as AI_ATTACHMENT_TURN_BUDGET,
4156
+ yt as AI_VENDORS,
4157
+ yn as ALLOWED_LINK_SCHEMES,
4158
+ kl as APP_PERMISSIONS,
4159
+ Ke as ARTIFACT_MAX_BLOCKS,
4160
+ us as ARTIFACT_MAX_BODY_BYTES,
4161
+ X as ARTIFACT_MAX_CELL_LEN,
4162
+ je as ARTIFACT_MAX_KPI_ITEMS,
4163
+ Fe as ARTIFACT_MAX_LIST_ITEMS,
4164
+ He as ARTIFACT_MAX_TABLE_COLUMNS,
4165
+ Be as ARTIFACT_MAX_TABLE_ROWS,
4166
+ At as ARTIFACT_MAX_TEXT_LEN,
4167
+ Mn as ASSIGNMENT_SCOPE_KIND,
4168
+ Yc as ASSIST_BANDS,
4169
+ zc as ASSIST_SOURCE_PROVIDER_GROUP,
4170
+ Kn as ATTENTION_STATUSES,
4171
+ no as AT_RISK_GAP,
4172
+ Gt as AUTH_APP_NAME,
4173
+ Pr as AUTO_READY_MIN_PROPOSALS,
4174
+ Ur as AUTO_READY_RATE,
4175
+ sn as ActivityTypeRegistry,
4176
+ Vi as BUILT_IN_ONLY,
4177
+ Fn as BULK_PENALTY,
4178
+ Vo as CADENCE_FLOOR_MS,
4179
+ Xo as CADENCE_MIN_NEW_SEGMENTS,
4180
+ zo as CADENCE_MIN_NOVELTY,
4181
+ Go as CADENCE_WINDOW_MS,
4182
+ va as CLASSIFY_VARS,
4183
+ hl as CONNECTOR_PROVIDER_GROUP,
4184
+ gl as CONTEXT_COLLECT_SERVICE,
4185
+ os as CORE_DIMENSIONS,
4186
+ Co as CommunicationScheme,
4187
+ Cn as DAY_MS,
4188
+ Qr as DEFAULT_CHECK_IN_DAYS,
4189
+ gr as DEFAULT_FORECAST_WEEKS,
4190
+ ea as DEFAULT_MEMORY_BUDGET,
4191
+ ti as DEFAULT_PHONE_REGION,
4192
+ la as DEMAND_SOURCE_PROVIDER_GROUP,
4193
+ Sl as DOCUMENT_APPLY_SERVICE,
4194
+ Al as DOCUMENT_DESCRIBE_SERVICE,
4195
+ El as DOCUMENT_INSPECT_SERVICE,
4196
+ Ke as DOCUMENT_MAX_BLOCKS,
4197
+ us as DOCUMENT_MAX_BODY_BYTES,
4198
+ X as DOCUMENT_MAX_CELL_LEN,
4199
+ je as DOCUMENT_MAX_KPI_ITEMS,
4200
+ We as DOCUMENT_MAX_LETTERHEAD_FIELDS,
4201
+ Fe as DOCUMENT_MAX_LIST_ITEMS,
4202
+ hn as DOCUMENT_MAX_RECIPIENT_LINES,
4203
+ He as DOCUMENT_MAX_TABLE_COLUMNS,
4204
+ Be as DOCUMENT_MAX_TABLE_ROWS,
4205
+ At as DOCUMENT_MAX_TEXT_LEN,
4206
+ Ge as DOCUMENT_MAX_TOTALS_ROWS,
4207
+ Ht as DOCUMENT_OPERATIONS,
4208
+ Ca as EMPTY_WORKFLOW,
4209
+ dl as FEATURE_FOLDER_MANAGEMENT,
4210
+ pl as FEATURE_MESSAGE_REACTIONS,
4211
+ fl as FEATURE_REMOTE_SEARCH,
4212
+ we as FIXED_KINDS,
4213
+ Q as FIXED_LEVELS,
4214
+ ve as FIXED_TYPES,
4215
+ Hn as FOLLOW_UP_HOURS,
4216
+ On as HOUR_MS,
4217
+ vi as HTML_BODY_RE,
4218
+ D as INELIGIBLE,
4219
+ Tl as INSTALLATION_HEADER,
4220
+ xr as INTERACTION_KIND,
4221
+ ll as InteractionParticipantRole,
4222
+ qn as KB_FALLBACK_LOCALE,
4223
+ ze as KB_LOCALES,
4224
+ Oe as LOOSE_STATUSES,
4225
+ $n as MAIL_HINT_HEADERS,
4226
+ xi as MAX_ACTIONS,
4227
+ kn as MAX_ASSIGNMENT_TURNS,
4228
+ Oi as MAX_BLOCKS,
4229
+ Mt as MAX_COLLECTION_DEPTH,
4230
+ jl as MAX_EDITABLE_FILE_BYTES,
4231
+ Ci as MAX_FIELDS,
4232
+ Ni as MAX_LIST_ITEMS,
4233
+ qs as MAX_MEMORY_BROWSE,
4234
+ Qs as MAX_MEMORY_BUDGET,
4235
+ Js as MAX_MEMORY_CHARS,
4236
+ ei as MAX_SHOWN_KEYS,
4237
+ ao as MAX_TOPIC_CANDIDATES,
4238
+ so as MAX_TOPIC_EXAMPLES,
4239
+ ae as MAX_TOPIC_EXAMPLE_CHARS,
4240
+ Wl as MAX_VIEWABLE_FILE_BYTES,
4241
+ Zs as MIN_MEMORY_BUDGET,
4242
+ ql as NAV_NOTICE_SLOT,
4243
+ wl as NOTIFICATION_SOURCE_PROVIDER_GROUP,
4244
+ ro as OFF_TRACK_GAP,
4245
+ na as ONBOARDING_SOURCE_PROVIDER_GROUP,
4246
+ be as PAUSE_SNOOZED,
4247
+ Ae as PAUSE_WAITING_FOR_CUSTOMER,
4248
+ Ce as PHONE_REGIONS,
4249
+ jt as PRESENCE_ONLINE_WINDOW_MS,
4250
+ Lo as PRESENCE_SURVIVES_OFFLINE,
4251
+ oa as PROFILE_TOOL_DISPOSITIONS,
4252
+ cl as PROVIDER_FEATURE_MESSAGE_TEMPLATES,
4253
+ al as PROVIDER_FEATURE_MESSAGE_WINDOW,
4254
+ ci as PUBLIC_EMAIL_DOMAINS,
4255
+ Ye as READ_STEP_TYPES,
4256
+ Qn as RELATED_SUBJECT_KINDS,
4257
+ Bt as RESERVED_STATUS_KEYS,
4258
+ Ic as RESERVED_TYPE_KEYS,
4259
+ $l as RESOURCE_ATTACHED_SERVICE,
4260
+ xl as RESOURCE_DESCRIBE_SERVICE,
4261
+ Dl as RESOURCE_RESOLVE_SERVICE,
4262
+ Rl as RESOURCE_SEARCH_SERVICE,
4263
+ _r as SCHEDULE_ENTRY_SCOPE_KIND,
4264
+ Ul as SCOPE_READ_ROUTE,
4265
+ Pl as SCOPE_RELATED_ROUTE,
4266
+ Yl as SETTINGS_CATEGORIES,
4267
+ ws as SIGNATURE_INTENTS,
4268
+ Bn as SLA_HOURS_BY_PRIORITY,
4269
+ Ha as SLA_METRICS,
4270
+ ja as SLA_PAUSE_REASONS,
4271
+ $r as STEP_MAX_TOKENS_MAX,
4272
+ Dr as STEP_MAX_TOKENS_MIN,
4273
+ Jr as STRATEGY_ITEM_SCOPE_KIND,
4274
+ Dn as SUMMARY_MIN_LAST_CHARS,
4275
+ Rn as SUMMARY_MIN_MESSAGES,
4276
+ Vl as SYNC_RUN_MAX_ERRORS,
4277
+ Gl as SYNC_TARGET_PROVIDER_GROUP,
4278
+ wn as TERMINAL_ASSIGNMENT_STATUSES,
4279
+ Kr as TERMINAL_RUN_STATUSES,
4280
+ ka as TRIGGER_VARS,
4281
+ er as UNKNOWN_KIND,
4282
+ Zr as UNKNOWN_LEVEL_ORDER,
4283
+ ml as UNSUPPORTED,
4284
+ fn as USAGE_DIMENSIONS,
4285
+ pn as USAGE_DIMENSION_IDS,
4286
+ Tr as WORKSTREAM_SCOPE_KIND,
4287
+ ho as WORK_ACTIVITY_SCOPE_KIND,
4288
+ ra as WORK_AREAS,
4289
+ Ec as WORK_COMMENT_ADDED,
4290
+ Oc as WORK_CYCLE_SYNC_KIND,
4291
+ Sc as WORK_ITEM_ASSIGNED,
4292
+ po as WORK_ITEM_SCOPE_KIND,
4293
+ _c as WORK_ITEM_STATUS_CHANGED,
4294
+ mo as WORK_PROJECT_SCOPE_KIND,
4295
+ q as W_PRIORITY,
4296
+ yc as acceptExampleCandidate,
4297
+ kr as actingIdentityKey,
4298
+ hc as activeWorkTypes,
4299
+ Di as activityIconOf,
4300
+ Wi as activityJoinUrl,
4301
+ tn as activitySnippet,
4302
+ nn as activityTextParams,
4303
+ ji as activityTimelineText,
4304
+ an as activityTimestamp,
4305
+ w as activityTypeInfo,
4306
+ Sa as actorKey,
4307
+ gc as addExampleCandidate,
4308
+ Me as addWorkingMs,
4309
+ Ol as agePresenceEntry,
4310
+ To as aiAttachmentKind,
4311
+ Gc as aiAttachmentRejection,
4312
+ Ue as aiBudgetLimit,
4313
+ ns as aiBudgetPeriodKey,
4314
+ cn as aiBudgetPeriodStart,
4315
+ ts as aiBudgetState,
4316
+ es as aiVendorAcceptsAttachment,
4317
+ Ji as aiVendorDefaultModel,
4318
+ qi as aiVendorLabel,
4319
+ Qi as aiVendorNeedsBaseUrl,
4320
+ Zi as aiVendorsWith,
4321
+ Vt as appNameFromPath,
4322
+ uc as applyRounding,
4323
+ Ms as applySignature,
4324
+ Lr as approvalRate,
4325
+ fs as artifactBodyBytes,
4326
+ ps as artifactOutline,
4327
+ ms as artifactToMarkdown,
4328
+ wa as assignmentMismatch,
4329
+ Es as assignmentScopeKey,
4330
+ Ts as assignmentSubject,
4331
+ ca as availabilityByPerson,
4332
+ ia as belongsOnCalendar,
4333
+ Gi as buildActivityPreview,
4334
+ nl as buildChannelIntents,
4335
+ hs as buildShareKeys,
4336
+ Qo as buildWindow,
4337
+ nr as calendarDaysBetween,
4338
+ ke as calendarOf,
4339
+ Ws as canNestUnder,
4340
+ Ja as canParent,
4341
+ sa as capacityTotal,
4342
+ ya as capacityWeights,
4343
+ Ki as carriesText,
4344
+ Vs as categoryLabel,
4345
+ bo as categoryOf,
4346
+ sl as channelKindForScheme,
4347
+ $i as channelKindOf,
4348
+ ac as checkInOverdueMs,
4349
+ Oa as clampStepMaxTokens,
4350
+ xs as classifyMail,
4351
+ iu as cleanMessageMarkdown,
4352
+ ou as cleanMessageText,
4353
+ Jc as compareAssistRank,
4354
+ io as compareWorkTypes,
4355
+ H as countsAsPlanned,
4356
+ aa as coverageByPerson,
4357
+ da as coverageFor,
4358
+ vt as coversWorkstream,
4359
+ Ot as cycleDayIndex,
4360
+ Bc as cycleOrder,
4361
+ Hc as cycleState,
4362
+ Is as decideAssignmentState,
4363
+ zl as decideCadence,
4364
+ el as decideIncomingCall,
4365
+ Jn as defaultLocaleOf,
4366
+ Pc as defaultStatusKey,
4367
+ ul as defineIntent,
4368
+ zn as depthOf,
4369
+ vl as derivePresence,
4370
+ as as describeClause,
4371
+ tl as disabledIntentsFromCapabilities,
4372
+ fs as documentBodyBytes,
4373
+ _l as documentKindOf,
4374
+ ps as documentOutline,
4375
+ ms as documentToMarkdown,
4376
+ Ga as dueAtOf,
4377
+ lc as elapsedSeconds,
4378
+ Ql as emailDomain,
4379
+ nu as endpointKey,
4380
+ sr as erlangC,
4381
+ Ko as extractParams,
4382
+ Jo as extractTerms,
4383
+ ol as filterByEndpoint,
4384
+ rl as filterByIntent,
4385
+ Oo as filterByTargetScheme,
4386
+ ss as filterableDimensions,
4387
+ Z as findAiVendor,
4388
+ Qa as fixedLevelForName,
4389
+ kc as fixedTypeForName,
4390
+ vc as fixedTypes,
4391
+ Il as flattenLocales,
4392
+ B as floorToPeriod,
4393
+ ma as forecastIntervals,
4394
+ Mr as formatActingIdentity,
4395
+ fc as formatClock,
4396
+ dc as formatHm,
4397
+ Nc as formatItemKey,
4398
+ F as formatPeriod,
4399
+ za as formatSlaDuration,
4400
+ Xc as freshSources,
4401
+ Xi as getActivitySeenUserIds,
4402
+ ks as getContactEndpoints,
4403
+ Ks as getShortTitle,
4404
+ Us as getUrgencyScore,
4405
+ Ka as hasReacted,
4406
+ ec as healthCategory,
4407
+ tc as healthsInCategory,
4408
+ kt as heightOf,
4409
+ Bs as helpCenterText,
4410
+ Ma as humanizeAction,
4411
+ Rr as interactionIdOf,
4412
+ Ac as isAgentUser,
4413
+ Ls as isAssigned,
4414
+ As as isAssignmentTerminal,
4415
+ Cr as isAssignmentTrigger,
4416
+ Ra as isAutoReady,
4417
+ Xn as isAwaitingThem,
4418
+ Yi as isChatMessageActivity,
4419
+ Ps as isClosed,
4420
+ Bi as isConnectedType,
4421
+ Kl as isDeepLink,
4422
+ Yn as isDescendant,
4423
+ vs as isEligible,
4424
+ zi as isEmailActivity,
4425
+ ru as isHtmlBody,
4426
+ $a as isInFlight,
4427
+ Un as isInteractionUnseen,
4428
+ Fl as isLandingPath,
4429
+ xn as isLikelyBulk,
4430
+ ht as isMessageShape,
4431
+ Li as isMessageType,
4432
+ Bo as isMoreSpecificPattern,
4433
+ gt as isNoteShape,
4434
+ qr as isOpenClock,
4435
+ Vc as isOutwardTool,
4436
+ Wn as isParked,
4437
+ Fr as isPaused,
4438
+ Fi as isPlaybookAuthoredType,
4439
+ eu as isPublicEmailDomain,
4440
+ Hl as isPublicPath,
4441
+ Gn as isReminderActive,
4442
+ Ui as isReplyableType,
4443
+ Ds as isSlaAtRisk,
4444
+ Da as isTerminal,
4445
+ Cs as isThreadLongEnough,
4446
+ Hi as isTranscriptType,
4447
+ Uc as isWorkClosed,
4448
+ mc as isWorkTypeVisible,
4449
+ Dc as itemDossierKeys,
4450
+ x as kindFor,
4451
+ yo as ladderFor,
4452
+ eo as levelIn,
4453
+ Se as levelOrder,
4454
+ Fs as linkLabel,
4455
+ rs as listeningAllowed,
4456
+ js as localeInstruction,
4457
+ Hs as localeName,
4458
+ Gs as localesOf,
4459
+ Jl as looksLikeEmail,
4460
+ il as matchContactToIntents,
4461
+ Ho as matchPublicRoute,
4462
+ zs as mcpCredentialScope,
4463
+ Ys as mcpToolPrefix,
4464
+ nc as measureRatio,
4465
+ Xl as mergeShownKeys,
4466
+ en as messageCountsAs,
4467
+ cs as metricOption,
4468
+ Ct as minutesOn,
4469
+ tu as needsPhoneRegion,
4470
+ Pi as nestsUnderParent,
4471
+ Za as nextLevelBelow,
4472
+ Va as nextSlaClock,
4473
+ ds as normalizeArtifactBlocks,
4474
+ Ri as normalizeBlocks,
4475
+ ds as normalizeDocumentBlocks,
4476
+ Xt as normalizeEmail,
4477
+ $ as normalizeExample,
4478
+ Ml as notificationPrefKey,
4479
+ Zo as novelty,
4480
+ bl as operationDescriptor,
4481
+ yl as operationsForKind,
4482
+ ie as overlapSeconds,
4483
+ ua as overlaps,
4484
+ rc as paceRatio,
4485
+ Os as parkMarksById,
4486
+ Aa as parseActingIdentity,
4487
+ Fa as parseClockMinutes,
4488
+ xc as parseItemKey,
4489
+ Uo as pathToRegex,
4490
+ xt as patternFor,
4491
+ Nt as patternStartTime,
4492
+ Ba as pauseBitFor,
4493
+ is as periodsInRange,
4494
+ Zl as phoneSuffix,
4495
+ Ns as pickMailHeaders,
4496
+ ba as placeLumps,
4497
+ Zt as plainTextFromMarkdown,
4498
+ Wa as planSlaEvent,
4499
+ fa as plannedBillable,
4500
+ mr as plannedWorkTypeKey,
4501
+ Or as playbookActor,
4502
+ xa as procedureOf,
4503
+ $c as projectDossierKeys,
4504
+ Fo as publicBasePathFor,
4505
+ Bl as publicRoutePatterns,
4506
+ _s as reactionWakesAssignment,
4507
+ ue as readPath,
4508
+ qe as readStepError,
4509
+ jn as recencyOf,
4510
+ Nr as refKey,
4511
+ ai as registrableDomain,
4512
+ lo as rejectExampleCandidate,
4513
+ ta as relatedByDefault,
4514
+ Ee as remainingMsOf,
4515
+ lr as requiredAgents,
4516
+ pr as requirementFor,
4517
+ ko as resolveAccountCapabilities,
4518
+ de as resolveActivityText,
4519
+ Mo as resolveChannelIntents,
4520
+ vn as resolveSignature,
4521
+ Cl as resolveWorkMode,
4522
+ Ll as resourceKindOf,
4523
+ sc as rollupChildren,
4524
+ Ea as runActor,
4525
+ Pa as runInteractionId,
4526
+ Sn as sanitizeInline,
4527
+ Wo as sanitizeTranscript,
4528
+ ha as scheduleEntryScopeKey,
4529
+ $s as scoreInteraction,
4530
+ Tc as scoreWorkItem,
4531
+ Xs as selectLenses,
4532
+ ar as serviceLevel,
4533
+ Qc as sessionsHoldCannotReach,
4534
+ Zc as sessionsToHold,
4535
+ St as shareKeyForTeam,
4536
+ Et as shareKeyForUser,
4537
+ gs as shareKeysForViewer,
4538
+ pa as shortfalls,
4539
+ Nl as shouldRunAudioPipeline,
4540
+ Xa as slaBadgeTone,
4541
+ Rs as slaHoursByInbox,
4542
+ Vn as slaHoursFor,
4543
+ Ao as sortStatuses,
4544
+ wo as sourceKey,
4545
+ wr as spreadOverWeights,
4546
+ Lc as statusIn,
4547
+ Na as stepsOf,
4548
+ qa as strategyAncestorKeysFor,
4549
+ Ya as strategyDossierKeys,
4550
+ Kt as strategyItemScopeKey,
4551
+ Qt as stripHtml,
4552
+ La as subjectKeyOf,
4553
+ Rt as subjectOf,
4554
+ qc as subjectRef,
4555
+ Rc as suggestProjectKey,
4556
+ oc as suggestedHealth,
4557
+ Ua as summarizeReactions,
4558
+ Ia as targetById,
4559
+ Ta as targetForActivityType,
4560
+ cc as targetOrder,
4561
+ rr as termsFor,
4562
+ vr as toActingIdentity,
4563
+ ct as toE164,
4564
+ ys as toolSourceKinds,
4565
+ uo as topicOfferedForTeam,
4566
+ bc as topicsForTeam,
4567
+ cr as trafficIntensity,
4568
+ co as truncateExample,
4569
+ Mc as typeIn,
4570
+ wc as typesFor,
4571
+ Kc as uniqueWorkStatusKey,
4572
+ pc as uniqueWorkTypeKey,
4573
+ mn as usageMetricId,
4574
+ ls as usageMetrics,
4575
+ Fc as validateStatuses,
4576
+ _a as valueAtPath,
4577
+ Ie as waitHoursOf,
4578
+ Ss as wakesAssignment,
4579
+ Cc as workActivityScopeKey,
4580
+ go as workItemScopeKey,
4581
+ Ft as workProjectScopeKey,
4582
+ ic as workRatio,
4583
+ Eo as workStatusKey,
4584
+ oo as workTypeKey,
4585
+ ye as workingMsBetween,
4586
+ ga as workstreamScopeKey
4452
4587
  };