@useago/sdk 1.0.11 → 1.1.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/widget.js CHANGED
@@ -1,190 +1,190 @@
1
- import { t as mt, u as ht } from "./AgoClient-QcTtrN7u.js";
2
- import { r as xt, t as bt } from "./createFormCollector-CFt1_QSL.js";
3
- import { t as vt } from "./createConversationSession-CR-71aLR.js";
4
- var yt = {
1
+ import { a as yt, i as wt, m as Et, o as St, s as Rt, t as _t } from "./AgoClient-Cwx_eYSu.js";
2
+ import { r as kt, t as At } from "./createFormCollector-CyWisAkI.js";
3
+ import { t as It } from "./createConversationSession-B3h567tt.js";
4
+ var Nt = {
5
5
  "&": "&",
6
6
  "<": "&lt;",
7
7
  ">": "&gt;",
8
8
  '"': "&quot;",
9
9
  "'": "&#39;"
10
10
  };
11
- function q(r) {
12
- return r.replace(/[&<>"']/g, (o) => yt[o]);
11
+ function Z(r) {
12
+ return r.replace(/[&<>"']/g, (o) => Nt[o]);
13
13
  }
14
- function Pe(r) {
14
+ function Ve(r) {
15
15
  const o = r.trim();
16
16
  return /^(https?:|mailto:|tel:|#|\/|\.\/|\.\.\/)/i.test(o) || !/^[a-z][a-z0-9+.-]*:/i.test(o) ? o : null;
17
17
  }
18
- var Ze = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace', le = "";
19
- function G(r) {
20
- const o = [], a = (u) => (o.push(u), `${le}${o.length - 1}${le}`);
18
+ var ot = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace', ue = "";
19
+ function j(r) {
20
+ const o = [], a = (m) => (o.push(m), `${ue}${o.length - 1}${ue}`);
21
21
  let n = r;
22
- return n = n.replace(/`([^`]+)`/g, (u, s) => a(`<code style="background:#f0f2f5;padding:2px 5px;border-radius:4px;font-size:13px;font-family:${Ze}">${q(s)}</code>`)), n = n.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g, (u, s, v) => {
23
- const p = Pe(v);
24
- return p ? a(`<img alt="${q(s)}" src="${q(p)}" style="max-width:100%;border-radius:8px;margin:4px 0" />`) : u;
25
- }), n = n.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (u, s, v) => {
26
- const p = Pe(v);
27
- return p ? a(`<a href="${q(p)}" target="_blank" rel="noopener noreferrer" style="color:#1b5fc4;text-decoration:underline">${G(s)}</a>`) : u;
28
- }), n = q(n), n = n.replace(/\*\*([^*]+?)\*\*/g, "<strong>$1</strong>").replace(/__([^_]+?)__/g, "<strong>$1</strong>").replace(/~~([^~]+?)~~/g, "<del>$1</del>").replace(/(^|[^*])\*(?!\s)([^*]+?)\*/g, "$1<em>$2</em>").replace(/(^|[^\w_])_(?!\s)([^_]+?)_/g, "$1<em>$2</em>"), n = n.replace(new RegExp(`${le}(\\d+)${le}`, "g"), (u, s) => o[Number(s)]), n;
22
+ return n = n.replace(/`([^`]+)`/g, (m, i) => a(`<code style="background:#f0f2f5;padding:2px 5px;border-radius:4px;font-size:13px;font-family:${ot}">${Z(i)}</code>`)), n = n.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g, (m, i, E) => {
23
+ const p = Ve(E);
24
+ return p ? a(`<img alt="${Z(i)}" src="${Z(p)}" style="max-width:100%;border-radius:8px;margin:4px 0" />`) : m;
25
+ }), n = n.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (m, i, E) => {
26
+ const p = Ve(E);
27
+ return p ? a(`<a href="${Z(p)}" target="_blank" rel="noopener noreferrer" style="color:#1b5fc4;text-decoration:underline">${j(i)}</a>`) : m;
28
+ }), n = Z(n), n = n.replace(/\*\*([^*]+?)\*\*/g, "<strong>$1</strong>").replace(/__([^_]+?)__/g, "<strong>$1</strong>").replace(/~~([^~]+?)~~/g, "<del>$1</del>").replace(/(^|[^*])\*(?!\s)([^*]+?)\*/g, "$1<em>$2</em>").replace(/(^|[^\w_])_(?!\s)([^_]+?)_/g, "$1<em>$2</em>"), n = n.replace(new RegExp(`${ue}(\\d+)${ue}`, "g"), (m, i) => o[Number(i)]), n;
29
29
  }
30
- function N(r, o, a) {
30
+ function L(r, o, a) {
31
31
  const n = document.createElement(r);
32
32
  return Object.assign(n.style, o), a !== void 0 && (n.innerHTML = a), n;
33
33
  }
34
- var Qe = /^ {0,3}([-*_])( *\1){2,} *$/, Je = /^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/, et = /^ {0,3}(```+|~~~+)/, ce = /^ {0,3}>\s?/, V = /^(\s*)([-*+]|\d+[.)])\s+(.*)$/, Ct = [
34
+ var rt = /^ {0,3}([-*_])( *\1){2,} *$/, at = /^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/, it = /^ {0,3}(```+|~~~+)/, ge = /^ {0,3}>\s?/, J = /^(\s*)([-*+]|\d+[.)])\s+(.*)$/, $t = [
35
35
  "20px",
36
36
  "18px",
37
37
  "16px",
38
38
  "15px",
39
39
  "14px",
40
40
  "13px"
41
- ], Se = (r) => r.match(/^\s*/)?.[0].length ?? 0;
42
- function wt(r) {
43
- return r.trim() === "" || Qe.test(r) || Je.test(r) || et.test(r) || ce.test(r) || V.test(r);
41
+ ], Ne = (r) => r.match(/^\s*/)?.[0].length ?? 0;
42
+ function Lt(r) {
43
+ return r.trim() === "" || rt.test(r) || at.test(r) || it.test(r) || ge.test(r) || J.test(r);
44
44
  }
45
- function tt(r) {
46
- const o = r[0].match(V), a = o[1].length, n = /\d/.test(o[2]), u = N(n ? "ol" : "ul", {
45
+ function st(r) {
46
+ const o = r[0].match(J), a = o[1].length, n = /\d/.test(o[2]), m = L(n ? "ol" : "ul", {
47
47
  margin: "0 0 8px 0",
48
48
  paddingLeft: "20px",
49
49
  listStyleType: n ? "decimal" : "disc",
50
50
  listStylePosition: "outside"
51
51
  });
52
- let s = 0;
53
- for (; s < r.length; ) {
54
- const v = r[s].match(V), p = [];
55
- for (s++; s < r.length && Se(r[s]) > a; )
56
- p.push(r[s]), s++;
57
- const b = N("li", {
52
+ let i = 0;
53
+ for (; i < r.length; ) {
54
+ const E = r[i].match(J), p = [];
55
+ for (i++; i < r.length && Ne(r[i]) > a; )
56
+ p.push(r[i]), i++;
57
+ const C = L("li", {
58
58
  display: "list-item",
59
59
  margin: "2px 0",
60
60
  lineHeight: "1.6"
61
- }), d = v[3].match(/^\[([ xX])\]\s+(.*)$/);
62
- d ? (b.style.listStyleType = "none", b.style.marginLeft = "-20px", b.innerHTML = `<span style="margin-right:6px">${d[1].toLowerCase() === "x" ? "☑" : "☐"}</span>${G(d[2])}`) : b.innerHTML = G(v[3]), p.filter((g) => V.test(g)).length > 0 && b.appendChild(tt(p.filter((g) => g.trim() !== ""))), u.appendChild(b);
61
+ }), d = E[3].match(/^\[([ xX])\]\s+(.*)$/);
62
+ d ? (C.style.listStyleType = "none", C.style.marginLeft = "-20px", C.innerHTML = `<span style="margin-right:6px">${d[1].toLowerCase() === "x" ? "☑" : "☐"}</span>${j(d[2])}`) : C.innerHTML = j(E[3]), p.filter((x) => J.test(x)).length > 0 && C.appendChild(st(p.filter((x) => x.trim() !== ""))), m.appendChild(C);
63
63
  }
64
- return u;
64
+ return m;
65
65
  }
66
- function Et(r) {
67
- const o = (p) => p.replace(/^\s*\|?/, "").replace(/\|?\s*$/, "").split("|").map((b) => b.trim()), a = N("div", {
66
+ function Tt(r) {
67
+ const o = (p) => p.replace(/^\s*\|?/, "").replace(/\|?\s*$/, "").split("|").map((C) => C.trim()), a = L("div", {
68
68
  overflowX: "auto",
69
69
  margin: "0 0 8px 0"
70
- }), n = N("table", {
70
+ }), n = L("table", {
71
71
  borderCollapse: "collapse",
72
72
  width: "100%",
73
73
  fontSize: "13px"
74
- }), u = document.createElement("thead"), s = document.createElement("tr");
75
- for (const p of o(r[0])) s.appendChild(N("th", {
74
+ }), m = document.createElement("thead"), i = document.createElement("tr");
75
+ for (const p of o(r[0])) i.appendChild(L("th", {
76
76
  border: "1px solid #dee3e8",
77
77
  padding: "6px 10px",
78
78
  textAlign: "left",
79
79
  backgroundColor: "#f5f7fa",
80
80
  fontWeight: "600"
81
- }, G(p)));
82
- u.appendChild(s), n.appendChild(u);
83
- const v = document.createElement("tbody");
81
+ }, j(p)));
82
+ m.appendChild(i), n.appendChild(m);
83
+ const E = document.createElement("tbody");
84
84
  for (const p of r.slice(2)) {
85
- const b = document.createElement("tr");
86
- for (const d of o(p)) b.appendChild(N("td", {
85
+ const C = document.createElement("tr");
86
+ for (const d of o(p)) C.appendChild(L("td", {
87
87
  border: "1px solid #dee3e8",
88
88
  padding: "6px 10px"
89
- }, G(d)));
90
- v.appendChild(b);
89
+ }, j(d)));
90
+ E.appendChild(C);
91
91
  }
92
- return n.appendChild(v), a.appendChild(n), a;
92
+ return n.appendChild(E), a.appendChild(n), a;
93
93
  }
94
- var St = (r) => !!r && /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/.test(r);
95
- function Re(r) {
94
+ var Ot = (r) => !!r && /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/.test(r);
95
+ function $e(r) {
96
96
  const o = document.createDocumentFragment(), a = r.replace(/\r\n?/g, `
97
97
  `).split(`
98
98
  `);
99
99
  let n = 0;
100
100
  for (; n < a.length; ) {
101
- const s = a[n];
102
- if (s.trim() === "") {
101
+ const i = a[n];
102
+ if (i.trim() === "") {
103
103
  n++;
104
104
  continue;
105
105
  }
106
- const v = s.match(et);
107
- if (v) {
108
- const d = v[1][0], g = [];
106
+ const E = i.match(it);
107
+ if (E) {
108
+ const d = E[1][0], x = [];
109
109
  for (n++; n < a.length && !new RegExp(`^ {0,3}${d === "`" ? "`{3,}" : "~{3,}"}\\s*$`).test(a[n]); )
110
- g.push(a[n]), n++;
110
+ x.push(a[n]), n++;
111
111
  n++;
112
- const B = N("pre", { margin: "0 0 8px 0" });
113
- B.appendChild(N("code", {
112
+ const B = L("pre", { margin: "0 0 8px 0" });
113
+ B.appendChild(L("code", {
114
114
  display: "block",
115
115
  background: "#f5f5f5",
116
116
  padding: "8px 12px",
117
117
  borderRadius: "6px",
118
118
  fontSize: "13px",
119
119
  overflowX: "auto",
120
- fontFamily: Ze,
120
+ fontFamily: ot,
121
121
  whiteSpace: "pre"
122
- }, q(g.join(`
122
+ }, Z(x.join(`
123
123
  `)))), o.appendChild(B);
124
124
  continue;
125
125
  }
126
- if (Qe.test(s)) {
127
- o.appendChild(N("hr", {
126
+ if (rt.test(i)) {
127
+ o.appendChild(L("hr", {
128
128
  border: "none",
129
129
  borderTop: "1px solid #dee3e8",
130
130
  margin: "12px 0"
131
131
  })), n++;
132
132
  continue;
133
133
  }
134
- const p = s.match(Je);
134
+ const p = i.match(at);
135
135
  if (p) {
136
136
  const d = p[1].length;
137
- o.appendChild(N(`h${d}`, {
137
+ o.appendChild(L(`h${d}`, {
138
138
  margin: "16px 0 8px 0",
139
- fontSize: Ct[d - 1],
139
+ fontSize: $t[d - 1],
140
140
  fontWeight: "600",
141
141
  lineHeight: "1.3"
142
- }, G(p[2]))), n++;
142
+ }, j(p[2]))), n++;
143
143
  continue;
144
144
  }
145
- if (ce.test(s)) {
145
+ if (ge.test(i)) {
146
146
  const d = [];
147
- for (; n < a.length && ce.test(a[n]); )
148
- d.push(a[n].replace(ce, "")), n++;
149
- const g = N("blockquote", {
147
+ for (; n < a.length && ge.test(a[n]); )
148
+ d.push(a[n].replace(ge, "")), n++;
149
+ const x = L("blockquote", {
150
150
  borderLeft: "4px solid #dee3e8",
151
151
  paddingLeft: "12px",
152
152
  margin: "0 0 8px 0",
153
153
  fontStyle: "italic",
154
154
  color: "#6b6d6f"
155
155
  });
156
- g.appendChild(Re(d.join(`
157
- `))), o.appendChild(g);
156
+ x.appendChild($e(d.join(`
157
+ `))), o.appendChild(x);
158
158
  continue;
159
159
  }
160
- if (s.includes("|") && St(a[n + 1])) {
161
- const d = [s, a[n + 1]];
160
+ if (i.includes("|") && Ot(a[n + 1])) {
161
+ const d = [i, a[n + 1]];
162
162
  for (n += 2; n < a.length && a[n].includes("|") && a[n].trim(); )
163
163
  d.push(a[n]), n++;
164
- o.appendChild(Et(d));
164
+ o.appendChild(Tt(d));
165
165
  continue;
166
166
  }
167
- if (V.test(s)) {
168
- const d = [], g = Se(s);
167
+ if (J.test(i)) {
168
+ const d = [], x = Ne(i);
169
169
  for (; n < a.length && a[n].trim() !== ""; )
170
- if (V.test(a[n]) || Se(a[n]) > g)
170
+ if (J.test(a[n]) || Ne(a[n]) > x)
171
171
  d.push(a[n]), n++;
172
172
  else break;
173
- o.appendChild(tt(d));
173
+ o.appendChild(st(d));
174
174
  continue;
175
175
  }
176
- const b = [s];
177
- for (n++; n < a.length && !wt(a[n]); )
178
- b.push(a[n]), n++;
179
- o.appendChild(N("p", {
176
+ const C = [i];
177
+ for (n++; n < a.length && !Lt(a[n]); )
178
+ C.push(a[n]), n++;
179
+ o.appendChild(L("p", {
180
180
  margin: "0 0 8px 0",
181
181
  lineHeight: "1.6"
182
- }, b.map((d) => G(d)).join("<br>")));
182
+ }, C.map((d) => j(d)).join("<br>")));
183
183
  }
184
- const u = o.lastElementChild;
185
- return u && (u.style.marginBottom = "0"), o;
184
+ const m = o.lastElementChild;
185
+ return m && (m.style.marginBottom = "0"), o;
186
186
  }
187
- var _e = 'var(--ago-font, "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif)', je = {
187
+ var Le = 'var(--ago-font, "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif)', Ye = {
188
188
  font: "--ago-font",
189
189
  radius: "--ago-radius",
190
190
  messageRadius: "--ago-message-radius",
@@ -199,23 +199,23 @@ var _e = 'var(--ago-font, "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "S
199
199
  border: "--ago-border-color",
200
200
  accent: "--ago-accent-color",
201
201
  agentBubbleBg: "--ago-agent-bubble-background"
202
- }, pe = "var(--ago-brand-color, #03182f)", ke = "var(--ago-brand-text-color, #fff)", Rt = "var(--ago-header-background, var(--ago-brand-color, #03182f))", Xe = "var(--ago-header-text-color, #e8f0fe)", ee = "var(--ago-panel-background, #fff)", Ke = "var(--ago-messages-background, #fbfbfb)", de = "var(--ago-text-color, #30373e)", _t = "var(--ago-muted-text-color, #6b6d6f)", O = "var(--ago-border-color, #dee3e8)", we = "var(--ago-accent-color, #1b5fc4)", qe = "var(--ago-agent-bubble-background, #f1f3f5)", kt = "var(--ago-radius, 16px)", Ee = "var(--ago-message-radius, 16px)", At = "var(--ago-message-radius, 20px)";
203
- function It(r, o) {
202
+ }, me = "var(--ago-brand-color, #03182f)", he = "var(--ago-brand-text-color, #fff)", Dt = "var(--ago-header-background, var(--ago-brand-color, #03182f))", Ze = "var(--ago-header-text-color, #e8f0fe)", Q = "var(--ago-panel-background, #fff)", Qe = "var(--ago-messages-background, #fbfbfb)", ae = "var(--ago-text-color, #30373e)", Je = "var(--ago-muted-text-color, #6b6d6f)", $ = "var(--ago-border-color, #dee3e8)", Ae = "var(--ago-accent-color, #1b5fc4)", et = "var(--ago-agent-bubble-background, #f1f3f5)", Bt = "var(--ago-radius, 16px)", Ie = "var(--ago-message-radius, 16px)", Mt = "var(--ago-message-radius, 20px)";
203
+ function zt(r, o) {
204
204
  if (o)
205
- for (const a of Object.keys(je)) {
205
+ for (const a of Object.keys(Ye)) {
206
206
  const n = o[a];
207
- n != null && r.style.setProperty(je[a], n);
207
+ n != null && r.style.setProperty(Ye[a], n);
208
208
  }
209
209
  }
210
- function E(r, o) {
210
+ function w(r, o) {
211
211
  Object.assign(r.style, o);
212
212
  }
213
- function x(r = {}) {
213
+ function f(r = {}) {
214
214
  const o = document.createElement("div");
215
- return E(o, r), o;
215
+ return w(o, r), o;
216
216
  }
217
- var Ve = "Form submitted.";
218
- function Nt(r) {
217
+ var tt = "Form submitted.";
218
+ function Ft(r) {
219
219
  if (typeof r == "string") return r || null;
220
220
  if (!r || typeof r != "object") return null;
221
221
  const o = r;
@@ -228,171 +228,171 @@ function Nt(r) {
228
228
  }
229
229
  return null;
230
230
  }
231
- var Ye = "ago-chat-widget-keyframes";
232
- function $t() {
233
- if (typeof document > "u" || document.getElementById(Ye)) return;
231
+ var nt = "ago-chat-widget-keyframes";
232
+ function Ht() {
233
+ if (typeof document > "u" || document.getElementById(nt)) return;
234
234
  const r = document.createElement("style");
235
- r.id = Ye, r.textContent = "@keyframes ago-pulse { 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }@keyframes ago-spin { to { transform: rotate(360deg); } }", document.head.appendChild(r);
235
+ r.id = nt, r.textContent = "@keyframes ago-pulse { 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }@keyframes ago-spin { to { transform: rotate(360deg); } }", document.head.appendChild(r);
236
236
  }
237
- function Lt(r) {
237
+ function Wt(r) {
238
238
  const o = typeof r == "string" ? document.querySelector(r) : r;
239
239
  if (!o) throw new Error(`mountChatWidget: target "${String(r)}" not found.`);
240
240
  return o;
241
241
  }
242
- function Mt(r, o) {
243
- const { title: a = "Chat", welcomeMessage: n = "Hello! How can I help you today?", placeholder: u = "Type a message...", allowFiles: s = !1, height: v = 500, placement: p = "inline", width: b = 400, defaultOpen: d = !1, logoUrl: g, showAgentName: B = !1, agentBubble: $ = !1, bubbleStyle: L = "default", showHeader: Y = !0, theme: te, loadThreads: Z = !1, forms: m, formSubmittedMessage: y = Ve, onFollowUpClick: P, onMessageSent: ne, onMessageReceived: D, onFormSubmitted: oe, onFormError: Q } = o, re = typeof n == "string" ? {
242
+ function Xt(r, o) {
243
+ const { title: a = "Chat", welcomeMessage: n = "Hello! How can I help you today?", placeholder: m = "Type a message...", allowFiles: i = !1, height: E = 500, placement: p = "inline", width: C = 400, defaultOpen: d = !1, logoUrl: x, showAgentName: B = !1, agentBubble: T = !1, bubbleStyle: O = "default", showHeader: ee = !0, theme: ie, loadThreads: te = !1, forms: b, formSubmittedMessage: S = tt, onFollowUpClick: X, onMessageSent: se, onMessageReceived: z, onFormSubmitted: le, onFormError: ne } = o, de = typeof n == "string" ? {
244
244
  message: n,
245
245
  mode: "static"
246
- } : n, Ae = re.message, Ie = re.mode ?? "static", nt = "speed" in re && re.speed || 45;
247
- if (!o.client && !o.config?.baseUrl) throw new ht("mountChatWidget requires either `client` or `config` (with a baseUrl).", "config_missing_base_url");
248
- const h = o.client ?? new mt(o.config), Ne = Lt(r), j = p === "left" || p === "right", ot = j && (o.launcher ?? !0);
249
- let X = j ? d : !0;
250
- const fe = o.persistConversation, ae = fe ? vt(fe === !0 ? {} : fe) : void 0;
251
- let T = o.conversationId ?? ae?.getLastActiveThread() ?? void 0, l = [], F = !1, J = null, M;
252
- const $e = [];
253
- function rt(e) {
254
- if (typeof y == "function") {
255
- const i = y(e);
256
- if (typeof i == "string" && i) return i;
246
+ } : n, Te = de.message, Oe = de.mode ?? "static", lt = "speed" in de && de.speed || 45;
247
+ if (!o.client && !o.config?.baseUrl) throw new Et("mountChatWidget requires either `client` or `config` (with a baseUrl).", "config_missing_base_url");
248
+ const v = o.client ?? new _t(o.config), De = Wt(r), K = p === "left" || p === "right", dt = K && (o.launcher ?? !0);
249
+ let q = K ? d : !0;
250
+ const xe = o.persistConversation, ce = xe ? It(xe === !0 ? {} : xe) : void 0;
251
+ let D = o.conversationId ?? ce?.getLastActiveThread() ?? void 0, l = [], H = !1, oe = null, F;
252
+ const Be = [];
253
+ function ct(e) {
254
+ if (typeof S == "function") {
255
+ const s = S(e);
256
+ if (typeof s == "string" && s) return s;
257
257
  }
258
- const t = Nt(e);
259
- return t || (typeof y == "string" ? y : Ve);
258
+ const t = Ft(e);
259
+ return t || (typeof S == "string" ? S : tt);
260
260
  }
261
- const se = [], K = x({
261
+ const pe = [], V = f({
262
262
  display: "flex",
263
263
  flexDirection: "column",
264
- height: j ? "100%" : typeof v == "number" ? `${v}px` : v,
265
- border: `1px solid ${O}`,
266
- borderRadius: kt,
264
+ height: K ? "100%" : typeof E == "number" ? `${E}px` : E,
265
+ border: `1px solid ${$}`,
266
+ borderRadius: Bt,
267
267
  overflow: "hidden",
268
- backgroundColor: ee,
269
- fontFamily: _e,
268
+ backgroundColor: Q,
269
+ fontFamily: Le,
270
270
  textAlign: "left",
271
271
  boxShadow: "rgba(15, 15, 15, 0.08) 0px 2px 16px 0px"
272
272
  });
273
- K.className = "ago-chat-widget", It(K, te);
274
- let z;
275
- if (Y) {
276
- if (z = x({
273
+ V.className = "ago-chat-widget", zt(V, ie);
274
+ let W;
275
+ if (ee) {
276
+ if (W = f({
277
277
  padding: "14px 16px",
278
- borderBottom: `1px solid ${O}`,
279
- backgroundColor: Rt,
280
- color: Xe,
278
+ borderBottom: `1px solid ${$}`,
279
+ backgroundColor: Dt,
280
+ color: Ze,
281
281
  display: "flex",
282
282
  alignItems: "center",
283
283
  gap: "10px"
284
- }), z.className = "ago-chat-widget__header", g) {
284
+ }), W.className = "ago-chat-widget__header", x) {
285
285
  const t = document.createElement("img");
286
- t.src = g, t.alt = "Logo", E(t, {
286
+ t.src = x, t.alt = "Logo", w(t, {
287
287
  height: "24px",
288
288
  width: "auto"
289
- }), z.appendChild(t);
289
+ }), W.appendChild(t);
290
290
  }
291
291
  const e = document.createElement("h3");
292
- if (e.textContent = a, E(e, {
292
+ if (e.textContent = a, w(e, {
293
293
  margin: "0",
294
294
  fontSize: "15px",
295
295
  fontWeight: "600"
296
- }), z.appendChild(e), j) {
296
+ }), W.appendChild(e), K) {
297
297
  const t = document.createElement("button");
298
- t.type = "button", t.className = "ago-chat-widget__close", t.setAttribute("aria-label", "Close"), t.textContent = "×", E(t, {
298
+ t.type = "button", t.className = "ago-chat-widget__close", t.setAttribute("aria-label", "Close"), t.textContent = "×", w(t, {
299
299
  marginLeft: "auto",
300
300
  background: "transparent",
301
301
  border: "none",
302
- color: Xe,
302
+ color: Ze,
303
303
  fontSize: "22px",
304
304
  lineHeight: "1",
305
305
  cursor: "pointer",
306
306
  padding: "0 2px"
307
- }), t.addEventListener("click", () => ye()), z.appendChild(t);
307
+ }), t.addEventListener("click", () => Re()), W.appendChild(t);
308
308
  }
309
309
  }
310
- const R = x({
310
+ const k = f({
311
311
  flex: "1",
312
312
  overflow: "auto",
313
313
  padding: "16px",
314
- backgroundColor: Ke
314
+ backgroundColor: Qe
315
315
  });
316
- R.className = "ago-chat-widget__messages", R.setAttribute("role", "log"), R.setAttribute("aria-live", "polite"), R.setAttribute("aria-relevant", "additions text"), R.setAttribute("aria-atomic", "false");
317
- const { inputRow: at, setDisabled: st, focus: ue } = Tt({
318
- placeholder: u,
319
- allowFiles: s,
316
+ k.className = "ago-chat-widget__messages", k.setAttribute("role", "log"), k.setAttribute("aria-live", "polite"), k.setAttribute("aria-relevant", "additions text"), k.setAttribute("aria-atomic", "false");
317
+ const { inputRow: pt, setDisabled: ft, focus: be } = Ut({
318
+ placeholder: m,
319
+ allowFiles: i,
320
320
  onSend: (e, t) => {
321
- he(e, t);
321
+ ye(e, t);
322
322
  }
323
323
  });
324
- $t(), K.append(...z ? [z] : [], R, at);
325
- let ie = K, U, _;
326
- const ge = p === "left" ? "left" : "right";
327
- if (j && (U = x({
324
+ Ht(), V.append(...W ? [W] : [], k, pt);
325
+ let fe = V, U, A;
326
+ const ve = p === "left" ? "left" : "right";
327
+ if (K && (U = f({
328
328
  position: "fixed",
329
329
  top: "0",
330
330
  bottom: "0",
331
- [ge]: "0",
332
- width: typeof b == "number" ? `${b}px` : b,
331
+ [ve]: "0",
332
+ width: typeof C == "number" ? `${C}px` : C,
333
333
  maxWidth: "100vw",
334
334
  display: "flex",
335
335
  zIndex: "2147483000",
336
336
  transition: "transform 0.3s ease",
337
337
  boxShadow: "rgba(15, 15, 15, 0.18) 0px 0px 24px 0px"
338
- }), U.className = "ago-chat-widget-panel", E(K, {
338
+ }), U.className = "ago-chat-widget-panel", w(V, {
339
339
  height: "100%",
340
340
  width: "100%",
341
341
  borderRadius: "0",
342
342
  border: "none",
343
343
  boxShadow: "none",
344
- [ge === "left" ? "borderRight" : "borderLeft"]: `1px solid ${O}`
345
- }), U.appendChild(K), ie = U), ot) {
346
- if (_ = document.createElement("button"), _.type = "button", _.className = "ago-chat-widget-launcher", _.setAttribute("aria-label", `Open ${a}`), E(_, {
344
+ [ve === "left" ? "borderRight" : "borderLeft"]: `1px solid ${$}`
345
+ }), U.appendChild(V), fe = U), dt) {
346
+ if (A = document.createElement("button"), A.type = "button", A.className = "ago-chat-widget-launcher", A.setAttribute("aria-label", `Open ${a}`), w(A, {
347
347
  position: "fixed",
348
348
  bottom: "20px",
349
- [ge]: "20px",
349
+ [ve]: "20px",
350
350
  width: "56px",
351
351
  height: "56px",
352
352
  borderRadius: "50%",
353
353
  border: "none",
354
- backgroundColor: pe,
355
- color: ke,
354
+ backgroundColor: me,
355
+ color: he,
356
356
  cursor: "pointer",
357
357
  display: "flex",
358
358
  alignItems: "center",
359
359
  justifyContent: "center",
360
360
  zIndex: "2147483000",
361
361
  boxShadow: "rgba(15, 15, 15, 0.2) 0px 4px 14px 0px",
362
- fontFamily: _e
363
- }), g) {
362
+ fontFamily: Le
363
+ }), x) {
364
364
  const e = document.createElement("img");
365
- e.src = g, e.alt = "", E(e, {
365
+ e.src = x, e.alt = "", w(e, {
366
366
  width: "26px",
367
367
  height: "26px",
368
368
  objectFit: "contain"
369
- }), _.appendChild(e);
370
- } else _.appendChild(ut());
371
- _.addEventListener("click", () => ve());
369
+ }), A.appendChild(e);
370
+ } else A.appendChild(vt());
371
+ A.addEventListener("click", () => Se());
372
372
  }
373
- Ne.appendChild(ie), _ && Ne.appendChild(_), be();
374
- const Le = P !== !1, Te = P === !1 ? void 0 : P ?? ((e) => {
375
- he(e);
373
+ De.appendChild(fe), A && De.appendChild(A), Ee();
374
+ const Me = X !== !1, ze = X === !1 ? void 0 : X ?? ((e) => {
375
+ ye(e);
376
376
  });
377
- function it(e, t, i = !0) {
378
- const c = e.role === "user", f = L === "imessage", w = x({
377
+ function ut(e, t, s = !0) {
378
+ const c = e.role === "user", u = O === "imessage", R = f({
379
379
  display: "flex",
380
380
  flexDirection: "column",
381
381
  alignItems: c ? "flex-end" : "flex-start",
382
- marginBottom: f && !i ? "2px" : "16px"
382
+ marginBottom: u && !s ? "2px" : "16px"
383
383
  });
384
- if (w.className = `ago-message ago-message--${e.role}`, !c && B && e.agent) {
385
- const C = x({
384
+ if (R.className = `ago-message ago-message--${e.role}`, !c && B && e.agent) {
385
+ const g = f({
386
386
  fontSize: "13px",
387
387
  fontWeight: "500",
388
- color: de,
388
+ color: ae,
389
389
  marginBottom: "6px",
390
390
  padding: "0 4px"
391
391
  });
392
- C.className = "ago-message__agent", C.textContent = e.agent.displayName || e.agent.name, w.appendChild(C);
392
+ g.className = "ago-message__agent", g.textContent = e.agent.displayName || e.agent.name, R.appendChild(g);
393
393
  }
394
394
  if (!c && e.sources && e.sources.length > 0) {
395
- const C = x({
395
+ const g = f({
396
396
  display: "grid",
397
397
  gridTemplateColumns: "1fr 1fr",
398
398
  gap: "6px",
@@ -400,28 +400,28 @@ function Mt(r, o) {
400
400
  width: "100%",
401
401
  maxWidth: "85%"
402
402
  });
403
- C.className = "ago-message__sources", e.sources.forEach((S, I) => {
404
- const W = S.url ? document.createElement("a") : document.createElement("div");
405
- S.url && W instanceof HTMLAnchorElement && (W.href = S.url, W.target = "_blank", W.rel = "noopener noreferrer"), E(W, {
403
+ g.className = "ago-message__sources", e.sources.forEach((h, y) => {
404
+ const _ = h.url ? document.createElement("a") : document.createElement("div");
405
+ h.url && _ instanceof HTMLAnchorElement && (_.href = h.url, _.target = "_blank", _.rel = "noopener noreferrer"), w(_, {
406
406
  display: "flex",
407
407
  alignItems: "center",
408
408
  gap: "8px",
409
409
  padding: "8px 10px",
410
- border: `1px solid ${O}`,
410
+ border: `1px solid ${$}`,
411
411
  borderRadius: "8px",
412
- backgroundColor: ee,
412
+ backgroundColor: Q,
413
413
  textDecoration: "none",
414
- color: de,
414
+ color: ae,
415
415
  fontSize: "12px",
416
416
  overflow: "hidden"
417
417
  });
418
- const Ge = x({
418
+ const G = f({
419
419
  flexShrink: "0",
420
420
  width: "18px",
421
421
  height: "18px",
422
422
  borderRadius: "3px",
423
- border: `1px solid ${we}`,
424
- color: we,
423
+ border: `1px solid ${Ae}`,
424
+ color: Ae,
425
425
  fontSize: "11px",
426
426
  fontWeight: "500",
427
427
  display: "flex",
@@ -429,114 +429,186 @@ function Mt(r, o) {
429
429
  justifyContent: "center",
430
430
  backgroundColor: "#f0f4ff"
431
431
  });
432
- Ge.textContent = String(I + 1);
433
- const Ce = x({
432
+ G.textContent = String(y + 1);
433
+ const P = f({
434
434
  overflow: "hidden",
435
435
  textOverflow: "ellipsis",
436
436
  whiteSpace: "nowrap"
437
437
  });
438
- Ce.textContent = S.title, Ce.title = S.title, W.append(Ge, Ce), C.appendChild(W);
439
- }), w.appendChild(C);
438
+ P.textContent = h.title, P.title = h.title, _.append(G, P), g.appendChild(_);
439
+ }), R.appendChild(g);
440
440
  }
441
- const A = c || $ || f, H = x({
442
- maxWidth: f || c ? "75%" : A ? "85%" : "100%",
443
- padding: A ? "10px 14px" : "2px 8px",
444
- borderRadius: f ? At : A ? Ee : "0",
445
- backgroundColor: c ? pe : A ? qe : "transparent",
446
- color: c ? ke : de,
441
+ if (e.attachments && e.attachments.length > 0) {
442
+ const g = f({
443
+ display: "flex",
444
+ flexWrap: "wrap",
445
+ gap: "6px",
446
+ marginBottom: "6px",
447
+ justifyContent: c ? "flex-end" : "flex-start",
448
+ maxWidth: "75%"
449
+ });
450
+ g.className = "ago-message__attachments";
451
+ for (const h of e.attachments) {
452
+ const y = Rt(h.url);
453
+ if (yt(h) && y) {
454
+ const M = document.createElement("a");
455
+ M.href = y, M.target = "_blank", M.rel = "noopener noreferrer", w(M, {
456
+ display: "inline-block",
457
+ textDecoration: "none"
458
+ });
459
+ const re = document.createElement("img");
460
+ re.src = y, re.alt = h.name, re.loading = "lazy", w(re, {
461
+ maxWidth: "180px",
462
+ maxHeight: "160px",
463
+ objectFit: "cover",
464
+ borderRadius: "10px",
465
+ border: `1px solid ${$}`,
466
+ display: "block"
467
+ }), M.appendChild(re), g.appendChild(M);
468
+ continue;
469
+ }
470
+ const _ = y ? document.createElement("a") : document.createElement("div");
471
+ y && _ instanceof HTMLAnchorElement && (_.href = y, _.target = "_blank", _.rel = "noopener noreferrer"), w(_, {
472
+ display: "inline-flex",
473
+ alignItems: "center",
474
+ gap: "8px",
475
+ padding: "8px 12px",
476
+ borderRadius: "10px",
477
+ border: `1px solid ${$}`,
478
+ backgroundColor: c ? "rgba(255,255,255,0.12)" : Q,
479
+ color: c ? he : ae,
480
+ fontSize: "13px",
481
+ textDecoration: "none",
482
+ maxWidth: "220px"
483
+ });
484
+ const G = document.createElement("span");
485
+ G.textContent = "📄", G.setAttribute("aria-hidden", "true"), w(G, {
486
+ fontSize: "16px",
487
+ lineHeight: "1",
488
+ flexShrink: "0"
489
+ });
490
+ const P = f({
491
+ display: "flex",
492
+ flexDirection: "column",
493
+ minWidth: "0"
494
+ }), ke = f({
495
+ overflow: "hidden",
496
+ textOverflow: "ellipsis",
497
+ whiteSpace: "nowrap",
498
+ maxWidth: "160px"
499
+ });
500
+ ke.textContent = h.name, ke.title = h.name, P.appendChild(ke);
501
+ const qe = St(h.fileSize);
502
+ if (qe) {
503
+ const M = f({
504
+ fontSize: "11px",
505
+ color: Je
506
+ });
507
+ M.textContent = qe, P.appendChild(M);
508
+ }
509
+ _.append(G, P), g.appendChild(_);
510
+ }
511
+ R.appendChild(g);
512
+ }
513
+ const N = c || T || u, _e = !!e.content || e.status === "IN_PROGRESS", Y = f({
514
+ maxWidth: u || c ? "75%" : N ? "85%" : "100%",
515
+ padding: N ? "10px 14px" : "2px 8px",
516
+ borderRadius: u ? Mt : N ? Ie : "0",
517
+ backgroundColor: c ? me : N ? et : "transparent",
518
+ color: c ? he : ae,
447
519
  wordBreak: "break-word",
448
520
  fontSize: "16px",
449
521
  lineHeight: "1.6"
450
522
  });
451
- if (H.className = "ago-message__content", f && i) {
452
- H.style.position = "relative";
453
- const C = x({
523
+ if (Y.className = "ago-message__content", u && s) {
524
+ Y.style.position = "relative";
525
+ const g = f({
454
526
  position: "absolute",
455
527
  zIndex: "0",
456
528
  bottom: "-2px",
457
529
  width: "20px",
458
530
  height: "20px",
459
- background: c ? pe : qe
531
+ background: c ? me : et
460
532
  });
461
- C.className = "ago-message__tail";
462
- const S = x({
533
+ g.className = "ago-message__tail";
534
+ const h = f({
463
535
  position: "absolute",
464
536
  zIndex: "1",
465
537
  bottom: "-2px",
466
538
  width: "10px",
467
539
  height: "20px",
468
- background: Ke
540
+ background: Qe
469
541
  });
470
- S.className = "ago-message__tail-mask", c ? (C.style.right = "-8px", C.style.borderBottomLeftRadius = "16px 14px", S.style.right = "-10px", S.style.borderBottomLeftRadius = "10px") : (C.style.left = "-7px", C.style.borderBottomRightRadius = "16px 14px", S.style.left = "-10px", S.style.borderBottomRightRadius = "10px"), H.append(C, S);
542
+ h.className = "ago-message__tail-mask", c ? (g.style.right = "-8px", g.style.borderBottomLeftRadius = "16px 14px", h.style.right = "-10px", h.style.borderBottomLeftRadius = "10px") : (g.style.left = "-7px", g.style.borderBottomRightRadius = "16px 14px", h.style.left = "-10px", h.style.borderBottomRightRadius = "10px"), Y.append(g, h);
471
543
  }
472
- if (e.content ? H.appendChild(Re(e.content)) : e.status === "IN_PROGRESS" && H.appendChild(gt()), w.appendChild(H), t && e.followUpReplies && e.followUpReplies.length > 0) {
473
- const C = x({
544
+ if (e.content ? Y.appendChild($e(e.content)) : e.status === "IN_PROGRESS" && Y.appendChild(Ct()), _e && R.appendChild(Y), t && e.followUpReplies && e.followUpReplies.length > 0) {
545
+ const g = f({
474
546
  display: "flex",
475
547
  flexWrap: "wrap",
476
548
  gap: "8px",
477
549
  marginTop: "10px"
478
550
  });
479
- C.className = "ago-message__followups";
480
- for (const S of e.followUpReplies) {
481
- const I = document.createElement("button");
482
- I.type = "button", I.className = "ago-message__followup-btn", I.textContent = S, I.disabled = !Le, E(I, {
551
+ g.className = "ago-message__followups";
552
+ for (const h of e.followUpReplies) {
553
+ const y = document.createElement("button");
554
+ y.type = "button", y.className = "ago-message__followup-btn", y.textContent = h, y.disabled = !Me, w(y, {
483
555
  minHeight: "36px",
484
556
  padding: "6px 14px",
485
557
  fontSize: "14px",
486
- borderRadius: Ee,
487
- border: `1px solid ${O}`,
488
- backgroundColor: ee,
489
- color: de,
490
- cursor: Le ? "pointer" : "default",
558
+ borderRadius: Ie,
559
+ border: `1px solid ${$}`,
560
+ backgroundColor: Q,
561
+ color: ae,
562
+ cursor: Me ? "pointer" : "default",
491
563
  transition: "border-color 0.15s"
492
- }), Te && I.addEventListener("click", () => Te(S)), I.addEventListener("mouseenter", () => {
493
- I.style.borderColor = we;
494
- }), I.addEventListener("mouseleave", () => {
495
- I.style.borderColor = O;
496
- }), C.appendChild(I);
564
+ }), ze && y.addEventListener("click", () => ze(h)), y.addEventListener("mouseenter", () => {
565
+ y.style.borderColor = Ae;
566
+ }), y.addEventListener("mouseleave", () => {
567
+ y.style.borderColor = $;
568
+ }), g.appendChild(y);
497
569
  }
498
- w.appendChild(C);
570
+ R.appendChild(g);
499
571
  }
500
- return w;
572
+ return R;
501
573
  }
502
- function lt(e) {
503
- const t = x({
574
+ function gt(e) {
575
+ const t = f({
504
576
  display: "flex",
505
577
  alignItems: "center",
506
578
  gap: "8px",
507
579
  padding: "10px 14px",
508
580
  backgroundColor: "#f0fdf4",
509
581
  color: "#15803d",
510
- borderRadius: Ee,
582
+ borderRadius: Ie,
511
583
  marginTop: "8px",
512
584
  fontSize: "13px",
513
585
  border: "1px solid #bbf7d0"
514
586
  });
515
587
  t.className = "ago-form-notice", t.setAttribute("role", "status");
516
- const i = document.createElement("span");
517
- i.textContent = "✓", i.setAttribute("aria-hidden", "true"), E(i, { fontWeight: "700" });
588
+ const s = document.createElement("span");
589
+ s.textContent = "✓", s.setAttribute("aria-hidden", "true"), w(s, { fontWeight: "700" });
518
590
  const c = document.createElement("span");
519
- return c.textContent = e, t.append(i, c), t;
591
+ return c.textContent = e, t.append(s, c), t;
520
592
  }
521
- function k() {
522
- if (R.replaceChildren(), l.length === 0) {
523
- if (Ie === "static") {
524
- const t = x({
593
+ function I() {
594
+ if (k.replaceChildren(), l.length === 0) {
595
+ if (Oe === "static") {
596
+ const t = f({
525
597
  textAlign: "center",
526
- color: _t,
598
+ color: Je,
527
599
  padding: "24px 16px",
528
600
  fontSize: "16px",
529
601
  lineHeight: "1.5"
530
602
  });
531
- t.appendChild(Re(Ae)), R.appendChild(t);
603
+ t.appendChild($e(Te)), k.appendChild(t);
532
604
  }
533
- } else l.forEach((t, i) => {
534
- const c = i === l.length - 1 || l[i + 1].role !== t.role;
535
- R.appendChild(it(t, i === l.length - 1, c));
605
+ } else l.forEach((t, s) => {
606
+ const c = s === l.length - 1 || l[s + 1].role !== t.role;
607
+ k.appendChild(ut(t, s === l.length - 1, c));
536
608
  });
537
- for (const t of $e) R.appendChild(lt(t));
538
- if (J) {
539
- const t = x({
609
+ for (const t of Be) k.appendChild(gt(t));
610
+ if (oe) {
611
+ const t = f({
540
612
  padding: "10px 14px",
541
613
  backgroundColor: "#fef2f2",
542
614
  color: "#dc2626",
@@ -545,36 +617,36 @@ function Mt(r, o) {
545
617
  fontSize: "13px",
546
618
  border: "1px solid #fecaca"
547
619
  });
548
- t.setAttribute("role", "alert"), t.textContent = J, R.appendChild(t);
620
+ t.setAttribute("role", "alert"), t.textContent = oe, k.appendChild(t);
549
621
  }
550
- R.scrollTop = R.scrollHeight;
622
+ k.scrollTop = k.scrollHeight;
551
623
  const e = l[l.length - 1];
552
- st(F && e?.role === "assistant" && e.status === "IN_PROGRESS");
624
+ ft(H && e?.role === "assistant" && e.status === "IN_PROGRESS");
553
625
  }
554
- function dt() {
626
+ function mt() {
555
627
  for (let e = l.length - 1; e >= 0; e--) {
556
628
  const t = l[e];
557
629
  if (t.role === "assistant" && t.status === "IN_PROGRESS") return t;
558
630
  }
559
631
  }
560
- const Oe = (e) => {
561
- T || (T = e.conversationId);
562
- }, Be = (e) => {
563
- const t = dt();
564
- t && (t.content += e.content, k());
565
- }, De = (e) => {
566
- const t = l.findIndex((i) => i.id === e.id || i.role === "assistant" && i.status === "IN_PROGRESS");
567
- t >= 0 ? l[t] = e : l.push(e), k(), ue();
568
- }, Me = (e) => {
569
- const t = l.findIndex((i) => i.id === e.id || i.role === "assistant" && i.status === "IN_PROGRESS");
570
- t >= 0 ? l[t] = e : l.push(e), F = !1, k(), e.status === "DONE" && D?.({
632
+ const Fe = (e) => {
633
+ D || (D = e.conversationId);
634
+ }, He = (e) => {
635
+ const t = mt();
636
+ t && (t.content += e.content, I());
637
+ }, We = (e) => {
638
+ const t = l.findIndex((s) => s.id === e.id || s.role === "assistant" && s.status === "IN_PROGRESS");
639
+ t >= 0 ? l[t] = e : l.push(e), I(), be();
640
+ }, Ue = (e) => {
641
+ const t = l.findIndex((s) => s.id === e.id || s.role === "assistant" && s.status === "IN_PROGRESS");
642
+ t >= 0 ? l[t] = e : l.push(e), H = !1, I(), e.status === "DONE" && z?.({
571
643
  id: e.id,
572
644
  content: e.content
573
645
  });
574
- }, He = (e) => {
575
- J = e.error, F = !1, l = l.filter((t) => !t.id.startsWith("temp-")), k();
646
+ }, Ge = (e) => {
647
+ oe = e.error, H = !1, l = l.filter((t) => !t.id.startsWith("temp-")), I();
576
648
  };
577
- function ct(e) {
649
+ function ht(e) {
578
650
  const t = {
579
651
  id: `ago-intro-${Date.now()}`,
580
652
  conversationId: "",
@@ -583,133 +655,134 @@ function Mt(r, o) {
583
655
  status: "IN_PROGRESS",
584
656
  createdAt: /* @__PURE__ */ new Date()
585
657
  };
586
- l.push(t), k();
587
- const i = e.match(/\S+\s*/g) ?? [e];
658
+ l.push(t), I();
659
+ const s = e.match(/\S+\s*/g) ?? [e];
588
660
  let c = 0;
589
- M = setInterval(() => {
590
- if (c >= i.length) {
591
- clearInterval(M), M = void 0, t.status = "DONE", k();
661
+ F = setInterval(() => {
662
+ if (c >= s.length) {
663
+ clearInterval(F), F = void 0, t.status = "DONE", I();
592
664
  return;
593
665
  }
594
- t.content += i[c], c++, k();
595
- }, nt);
666
+ t.content += s[c], c++, I();
667
+ }, lt);
596
668
  }
597
- h.on("message:start", Oe), h.on("message:chunk", Be), h.on("message:answer-complete", De), h.on("message:complete", Me), h.on("message:error", He);
598
- const Fe = (e) => oe?.(e), ze = (e) => Q?.(e);
599
- oe && h.on("form:submitted", Fe), Q && h.on("form:error", ze);
600
- const me = [];
601
- let Ue = !1;
602
- const We = (e) => {
603
- if (Ue) return;
604
- me.push(e.install(h));
669
+ v.on("message:start", Fe), v.on("message:chunk", He), v.on("message:answer-complete", We), v.on("message:complete", Ue), v.on("message:error", Ge);
670
+ const Pe = (e) => le?.(e), je = (e) => ne?.(e);
671
+ le && v.on("form:submitted", Pe), ne && v.on("form:error", je);
672
+ const Ce = [];
673
+ let Xe = !1;
674
+ const Ke = (e) => {
675
+ if (Xe) return;
676
+ Ce.push(e.install(v));
605
677
  let t = e.store.get().submitted;
606
- const i = e.store.subscribe((c) => {
607
- c.submitted && !t && ($e.push(rt(c.submitResult)), k()), t = c.submitted;
678
+ const s = e.store.subscribe((c) => {
679
+ c.submitted && !t && (Be.push(ct(c.submitResult)), I()), t = c.submitted;
608
680
  });
609
- me.push(i);
681
+ Ce.push(s);
610
682
  };
611
- for (const e of m ?? []) e.schema != null ? We(bt(e)) : xt(h, e).then((t) => We(t)).catch(() => {
683
+ for (const e of b ?? []) e.schema != null ? Ke(At(e)) : kt(v, e).then((t) => Ke(t)).catch(() => {
612
684
  });
613
- async function he(e, t) {
614
- const i = e.trim();
615
- if (!i && !t?.length || F) return;
616
- if (ne?.(i), F = !0, J = null, M) {
617
- clearInterval(M), M = void 0;
618
- const f = l.find((w) => w.id.startsWith("ago-intro-"));
619
- f && !f.content ? l = l.filter((w) => w !== f) : f && (f.status = "DONE");
685
+ async function ye(e, t) {
686
+ const s = e.trim();
687
+ if (!s && !t?.length || H) return;
688
+ if (se?.(s), H = !0, oe = null, F) {
689
+ clearInterval(F), F = void 0;
690
+ const u = l.find((R) => R.id.startsWith("ago-intro-"));
691
+ u && !u.content ? l = l.filter((R) => R !== u) : u && (u.status = "DONE");
620
692
  }
621
693
  const c = Date.now();
622
694
  l.push({
623
695
  id: `temp-user-${c}`,
624
- conversationId: T || "",
625
- content: i,
696
+ conversationId: D || "",
697
+ content: s,
626
698
  role: "user",
627
699
  status: "DONE",
700
+ attachments: t && t.length > 0 ? wt(t) : void 0,
628
701
  createdAt: /* @__PURE__ */ new Date()
629
702
  }), l.push({
630
703
  id: `temp-assistant-${c}`,
631
- conversationId: T || "",
704
+ conversationId: D || "",
632
705
  content: "",
633
706
  role: "assistant",
634
707
  status: "IN_PROGRESS",
635
708
  createdAt: /* @__PURE__ */ new Date()
636
- }), k();
709
+ }), I();
637
710
  try {
638
- const f = await h.sendMessage(i, {
639
- conversationId: T,
711
+ const u = await v.sendMessage(s, {
712
+ conversationId: D,
640
713
  files: t
641
714
  });
642
- f.conversationId && (T || (T = f.conversationId), ae?.setActiveThread(f.conversationId, f.createdAt));
643
- const w = l.find((A) => A.id === `temp-user-${c}`);
644
- if (w && (w.id = `user-${c}`, w.conversationId = f.conversationId), !l.some((A) => A.id === f.id)) {
645
- const A = l.findIndex((H) => H.id === `temp-assistant-${c}`);
646
- A >= 0 ? l[A] = f : l.push(f);
715
+ u.conversationId && (D || (D = u.conversationId), ce?.setActiveThread(u.conversationId, u.createdAt));
716
+ const R = l.find((N) => N.id === `temp-user-${c}`);
717
+ if (R && (R.id = `user-${c}`, R.conversationId = u.conversationId), !l.some((N) => N.id === u.id)) {
718
+ const N = l.findIndex((_e) => _e.id === `temp-assistant-${c}`);
719
+ N >= 0 ? l[N] = u : l.push(u);
647
720
  }
648
- l = l.filter((A) => !A.id.startsWith("temp-")), F = !1, k(), Z && xe();
649
- } catch (f) {
650
- J = f instanceof Error ? f.message : "Failed to send message", F = !1, l = l.filter((w) => !w.id.startsWith("temp-")), k();
721
+ l = l.filter((N) => !N.id.startsWith("temp-")), H = !1, I(), te && we();
722
+ } catch (u) {
723
+ oe = u instanceof Error ? u.message : "Failed to send message", H = !1, l = l.filter((R) => !R.id.startsWith("temp-")), I();
651
724
  }
652
725
  }
653
- async function xe() {
726
+ async function we() {
654
727
  try {
655
- const e = await h.getConversations();
656
- se.splice(0, se.length, ...e);
728
+ const e = await v.getConversations();
729
+ pe.splice(0, pe.length, ...e);
657
730
  } catch {
658
731
  }
659
- return se;
732
+ return pe;
660
733
  }
661
- async function pt(e) {
734
+ async function xt(e) {
662
735
  try {
663
- const t = (await h.getConversation(e))?.messages ?? [];
664
- t.length > 0 && l.length === 0 && (l = t, k());
736
+ const t = (await v.getConversation(e))?.messages ?? [];
737
+ t.length > 0 && l.length === 0 && (l = t, I());
665
738
  } catch {
666
- l.length === 0 && (ae?.clear(), T = void 0);
739
+ l.length === 0 && (ce?.clear(), D = void 0);
667
740
  }
668
741
  }
669
- return k(), ue(), T ? pt(T) : Ie === "streaming" && ct(Ae), Z && xe(), {
670
- client: h,
671
- element: ie,
672
- sendMessage: he,
673
- ...j ? {
674
- open: ve,
675
- close: ye,
676
- toggle: ft
742
+ return I(), be(), D ? xt(D) : Oe === "streaming" && ht(Te), te && we(), {
743
+ client: v,
744
+ element: fe,
745
+ sendMessage: ye,
746
+ ...K ? {
747
+ open: Se,
748
+ close: Re,
749
+ toggle: bt
677
750
  } : {},
678
- session: ae,
679
- threads: se,
680
- refreshThreads: xe,
751
+ session: ce,
752
+ threads: pe,
753
+ refreshThreads: we,
681
754
  destroy() {
682
- M && clearInterval(M), h.off("message:start", Oe), h.off("message:chunk", Be), h.off("message:answer-complete", De), h.off("message:complete", Me), h.off("message:error", He), oe && h.off("form:submitted", Fe), Q && h.off("form:error", ze), Ue = !0, me.forEach((e) => e()), ie.remove(), _?.remove(), o.client || h.destroy();
755
+ F && clearInterval(F), v.off("message:start", Fe), v.off("message:chunk", He), v.off("message:answer-complete", We), v.off("message:complete", Ue), v.off("message:error", Ge), le && v.off("form:submitted", Pe), ne && v.off("form:error", je), Xe = !0, Ce.forEach((e) => e()), fe.remove(), A?.remove(), o.client || v.destroy();
683
756
  }
684
757
  };
685
- function be() {
758
+ function Ee() {
686
759
  if (!U) return;
687
760
  const e = p === "left" ? "translateX(-100%)" : "translateX(100%)";
688
- U.style.transform = X ? "translateX(0)" : e, U.setAttribute("aria-hidden", X ? "false" : "true"), _ && (_.style.display = X ? "none" : "flex");
761
+ U.style.transform = q ? "translateX(0)" : e, U.setAttribute("aria-hidden", q ? "false" : "true"), A && (A.style.display = q ? "none" : "flex");
689
762
  }
690
- function ve() {
691
- X = !0, be(), ue();
763
+ function Se() {
764
+ q = !0, Ee(), be();
692
765
  }
693
- function ye() {
694
- X = !1, be();
766
+ function Re() {
767
+ q = !1, Ee();
695
768
  }
696
- function ft() {
697
- X ? ye() : ve();
769
+ function bt() {
770
+ q ? Re() : Se();
698
771
  }
699
- function ut() {
772
+ function vt() {
700
773
  const e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "svg");
701
774
  t.setAttribute("width", "26"), t.setAttribute("height", "26"), t.setAttribute("viewBox", "0 0 24 24"), t.setAttribute("fill", "none");
702
- const i = document.createElementNS(e, "path");
703
- return i.setAttribute("d", "M21 11.5a8.38 8.38 0 0 1-8.5 8.5 8.5 8.5 0 0 1-3.8-.9L3 21l1.9-5.7a8.5 8.5 0 0 1-.9-3.8 8.38 8.38 0 0 1 8.5-8.5 8.38 8.38 0 0 1 8.5 8.5z"), i.setAttribute("stroke", "currentColor"), i.setAttribute("stroke-width", "2"), i.setAttribute("stroke-linecap", "round"), i.setAttribute("stroke-linejoin", "round"), t.appendChild(i), t;
775
+ const s = document.createElementNS(e, "path");
776
+ return s.setAttribute("d", "M21 11.5a8.38 8.38 0 0 1-8.5 8.5 8.5 8.5 0 0 1-3.8-.9L3 21l1.9-5.7a8.5 8.5 0 0 1-.9-3.8 8.38 8.38 0 0 1 8.5-8.5 8.38 8.38 0 0 1 8.5 8.5z"), s.setAttribute("stroke", "currentColor"), s.setAttribute("stroke-width", "2"), s.setAttribute("stroke-linecap", "round"), s.setAttribute("stroke-linejoin", "round"), t.appendChild(s), t;
704
777
  }
705
- function gt() {
706
- const e = x({
778
+ function Ct() {
779
+ const e = f({
707
780
  display: "flex",
708
781
  gap: "4px",
709
782
  padding: "4px 0"
710
783
  });
711
784
  for (let t = 0; t < 3; t++) {
712
- const i = x({
785
+ const s = f({
713
786
  width: "6px",
714
787
  height: "6px",
715
788
  borderRadius: "50%",
@@ -717,132 +790,132 @@ function Mt(r, o) {
717
790
  animation: "ago-pulse 1.2s ease-in-out infinite",
718
791
  animationDelay: `${t * 0.2}s`
719
792
  });
720
- e.appendChild(i);
793
+ e.appendChild(s);
721
794
  }
722
795
  return e;
723
796
  }
724
797
  }
725
- function Tt(r) {
798
+ function Ut(r) {
726
799
  let o = [];
727
800
  const a = document.createElement("form");
728
- E(a, {
801
+ w(a, {
729
802
  display: "flex",
730
803
  flexDirection: "column",
731
804
  gap: "8px",
732
805
  padding: "12px",
733
- borderTop: `1px solid ${O}`,
734
- backgroundColor: ee
806
+ borderTop: `1px solid ${$}`,
807
+ backgroundColor: Q
735
808
  }), a.className = "ago-chat-input";
736
- const n = x({
809
+ const n = f({
737
810
  display: "flex",
738
811
  flexWrap: "wrap",
739
812
  gap: "6px"
740
- }), u = x({
813
+ }), m = f({
741
814
  display: "flex",
742
815
  gap: "8px",
743
816
  alignItems: "flex-end"
744
- }), s = document.createElement("textarea");
745
- s.placeholder = r.placeholder, s.setAttribute("aria-label", r.placeholder), s.rows = 1, E(s, {
817
+ }), i = document.createElement("textarea");
818
+ i.placeholder = r.placeholder, i.setAttribute("aria-label", r.placeholder), i.rows = 1, w(i, {
746
819
  flex: "1",
747
820
  resize: "none",
748
821
  boxSizing: "border-box",
749
822
  padding: "10px 12px",
750
- border: `1px solid ${O}`,
823
+ border: `1px solid ${$}`,
751
824
  borderRadius: "12px",
752
825
  fontSize: "16px",
753
- fontFamily: _e,
826
+ fontFamily: Le,
754
827
  lineHeight: "1.4",
755
828
  maxHeight: "110px",
756
829
  overflowY: "hidden"
757
830
  });
758
- const v = () => {
759
- s.style.height = "auto";
760
- const y = Math.min(s.scrollHeight + 2, 110);
761
- s.style.height = `${y}px`, s.style.overflowY = s.scrollHeight + 2 > 110 ? "auto" : "hidden";
831
+ const E = () => {
832
+ i.style.height = "auto";
833
+ const S = Math.min(i.scrollHeight + 2, 110);
834
+ i.style.height = `${S}px`, i.style.overflowY = i.scrollHeight + 2 > 110 ? "auto" : "hidden";
762
835
  };
763
- s.addEventListener("input", () => {
764
- v(), B();
836
+ i.addEventListener("input", () => {
837
+ E(), B();
765
838
  });
766
- const p = '<svg width="18" height="18" viewBox="0 -960 960 960" fill="currentColor" aria-hidden="true"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>', b = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true" style="animation: ago-spin 0.8s linear infinite"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>', d = document.createElement("button");
767
- d.type = "submit", d.setAttribute("aria-label", "Send"), d.innerHTML = p, E(d, {
839
+ const p = '<svg width="18" height="18" viewBox="0 -960 960 960" fill="currentColor" aria-hidden="true"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>', C = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true" style="animation: ago-spin 0.8s linear infinite"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>', d = document.createElement("button");
840
+ d.type = "submit", d.setAttribute("aria-label", "Send"), d.innerHTML = p, w(d, {
768
841
  flexShrink: "0",
769
842
  width: "40px",
770
843
  height: "40px",
771
844
  padding: "0",
772
845
  border: "none",
773
846
  borderRadius: "50%",
774
- backgroundColor: pe,
775
- color: ke,
847
+ backgroundColor: me,
848
+ color: he,
776
849
  display: "flex",
777
850
  alignItems: "center",
778
851
  justifyContent: "center",
779
852
  cursor: "pointer"
780
853
  });
781
- let g = !1;
854
+ let x = !1;
782
855
  const B = () => {
783
- const m = s.value.trim() !== "" || o.length > 0, y = g || !m;
784
- d.disabled = y, d.innerHTML = g ? b : p, d.style.opacity = y && !g ? "0.5" : "1", d.style.cursor = y ? "default" : "pointer";
856
+ const b = i.value.trim() !== "" || o.length > 0, S = x || !b;
857
+ d.disabled = S, d.innerHTML = x ? C : p, d.style.opacity = S && !x ? "0.5" : "1", d.style.cursor = S ? "default" : "pointer";
785
858
  };
786
- let $ = null, L = null;
787
- r.allowFiles && ($ = document.createElement("input"), $.type = "file", $.multiple = !0, E($, { display: "none" }), L = document.createElement("button"), L.type = "button", L.setAttribute("aria-label", "Attach file"), L.textContent = "📎", E(L, {
859
+ let T = null, O = null;
860
+ r.allowFiles && (T = document.createElement("input"), T.type = "file", T.multiple = !0, w(T, { display: "none" }), O = document.createElement("button"), O.type = "button", O.setAttribute("aria-label", "Attach file"), O.textContent = "📎", w(O, {
788
861
  padding: "10px 12px",
789
- border: `1px solid ${O}`,
862
+ border: `1px solid ${$}`,
790
863
  borderRadius: "12px",
791
- backgroundColor: ee,
864
+ backgroundColor: Q,
792
865
  cursor: "pointer",
793
866
  fontSize: "14px"
794
- }), L.addEventListener("click", () => $?.click()), $.addEventListener("change", () => {
795
- o = [...o, ...Array.from($?.files ?? [])], Y();
867
+ }), O.addEventListener("click", () => T?.click()), T.addEventListener("change", () => {
868
+ o = [...o, ...Array.from(T?.files ?? [])], ee();
796
869
  }));
797
- function Y() {
798
- n.replaceChildren(), o.forEach((m, y) => {
799
- const P = x({
870
+ function ee() {
871
+ n.replaceChildren(), o.forEach((b, S) => {
872
+ const X = f({
800
873
  display: "flex",
801
874
  alignItems: "center",
802
875
  gap: "4px",
803
876
  padding: "4px 8px",
804
877
  backgroundColor: "#f0f4ff",
805
- border: `1px solid ${O}`,
878
+ border: `1px solid ${$}`,
806
879
  borderRadius: "8px",
807
880
  fontSize: "12px"
808
- }), ne = document.createElement("span");
809
- ne.textContent = m.name;
810
- const D = document.createElement("button");
811
- D.type = "button", D.setAttribute("aria-label", `Remove ${m.name}`), D.textContent = "×", E(D, {
881
+ }), se = document.createElement("span");
882
+ se.textContent = b.name;
883
+ const z = document.createElement("button");
884
+ z.type = "button", z.setAttribute("aria-label", `Remove ${b.name}`), z.textContent = "×", w(z, {
812
885
  border: "none",
813
886
  background: "transparent",
814
887
  cursor: "pointer",
815
888
  fontSize: "14px",
816
889
  lineHeight: "1"
817
- }), D.addEventListener("click", () => {
818
- o = o.filter((oe, Q) => Q !== y), Y();
819
- }), P.append(ne, D), n.appendChild(P);
890
+ }), z.addEventListener("click", () => {
891
+ o = o.filter((le, ne) => ne !== S), ee();
892
+ }), X.append(se, z), n.appendChild(X);
820
893
  }), B();
821
894
  }
822
- const te = () => {
823
- const m = s.value, y = o;
824
- return s.value = "", v(), o = [], Y(), {
825
- content: m,
826
- files: y
895
+ const ie = () => {
896
+ const b = i.value, S = o;
897
+ return i.value = "", E(), o = [], ee(), {
898
+ content: b,
899
+ files: S
827
900
  };
828
- }, Z = () => {
829
- const { content: m, files: y } = te();
830
- (m.trim() || y.length > 0) && r.onSend(m.trim(), y.length > 0 ? y : void 0);
901
+ }, te = () => {
902
+ const { content: b, files: S } = ie();
903
+ (b.trim() || S.length > 0) && r.onSend(b.trim(), S.length > 0 ? S : void 0);
831
904
  };
832
- return a.addEventListener("submit", (m) => {
833
- m.preventDefault(), Z();
834
- }), s.addEventListener("keydown", (m) => {
835
- m.key === "Enter" && !m.shiftKey && (m.preventDefault(), Z());
836
- }), L && u.appendChild(L), u.append(s, d), $ && a.appendChild($), a.append(n, u), B(), {
905
+ return a.addEventListener("submit", (b) => {
906
+ b.preventDefault(), te();
907
+ }), i.addEventListener("keydown", (b) => {
908
+ b.key === "Enter" && !b.shiftKey && (b.preventDefault(), te());
909
+ }), O && m.appendChild(O), m.append(i, d), T && a.appendChild(T), a.append(n, m), B(), {
837
910
  inputRow: a,
838
- getValueAndClear: te,
839
- setDisabled: (m) => {
840
- s.disabled = m, g = m, B();
911
+ getValueAndClear: ie,
912
+ setDisabled: (b) => {
913
+ i.disabled = b, x = b, B();
841
914
  },
842
- focus: () => s.focus()
915
+ focus: () => i.focus()
843
916
  };
844
917
  }
845
918
  export {
846
- Mt as mountChatWidget,
847
- Re as renderMarkdown
919
+ Xt as mountChatWidget,
920
+ $e as renderMarkdown
848
921
  };